Unified · Split
| @@ -16,8 +16,6 @@ · 15 unmodified lines | |||
| 16 | "@effect/platform": "catalog:", | 16 | "@effect/platform": "catalog:", |
| 17 | "@effect/platform-node": "catalog:", | 17 | "@effect/platform-node": "catalog:", |
| 18 | "@executor-v3/codemode-core": "workspace:*", | 18 | "@executor-v3/codemode-core": "workspace:*", |
| 19 | "@executor-v3/codemode-mcp": "workspace:*", | ||
| 20 | "@executor-v3/codemode-openapi": "workspace:*", | ||
| 21 | "@executor-v3/control-plane": "workspace:*", | 19 | "@executor-v3/control-plane": "workspace:*", |
| 22 | "@executor-v3/runtime-local-inproc": "workspace:*", | 20 | "@executor-v3/runtime-local-inproc": "workspace:*", |
| 23 | "effect": "catalog:" | 21 | "effect": "catalog:" |
| @@ -4,7 +4,7 @@ import { · 3 unmodified lines | |||
| 4 | } from "@executor-v3/control-plane"; | 4 | } from "@executor-v3/control-plane"; |
| 5 | import * as Effect from "effect/Effect"; | 5 | import * as Effect from "effect/Effect"; |
| 6 | 6 | ||
| 7 | export type SeedDemoMcpSourceInput = { | 7 | type SeedDemoMcpSourceInput = { |
| 8 | client: ControlPlaneClient; | 8 | client: ControlPlaneClient; |
| 9 | workspaceId: string; | 9 | workspaceId: string; |
| 10 | endpoint: string; | 10 | endpoint: string; |
| @@ -12,7 +12,7 @@ export type SeedDemoMcpSourceInput = { · 1 unmodified line | |||
| 12 | namespace: string; | 12 | namespace: string; |
| 13 | }; | 13 | }; |
| 14 | 14 | ||
| 15 | export type SeedDemoMcpSourceResult = | 15 | type SeedDemoMcpSourceResult = |
| 16 | | { | 16 | | { |
| 17 | action: "noop"; | 17 | action: "noop"; |
| 18 | sourceId: string; | 18 | sourceId: string; |
| @@ -26,7 +26,7 @@ export type SeedDemoMcpSourceResult = · 7 unmodified lines | |||
| 26 | endpoint: string; | 26 | endpoint: string; |
| 27 | }; | 27 | }; |
| 28 | 28 | ||
| 29 | export type SeedGithubOpenApiSourceInput = { | 29 | type SeedGithubOpenApiSourceInput = { |
| 30 | client: ControlPlaneClient; | 30 | client: ControlPlaneClient; |
| 31 | workspaceId: string; | 31 | workspaceId: string; |
| 32 | endpoint: string; | 32 | endpoint: string; |
| @@ -6,7 +6,6 @@ import { HttpApiBuilder, HttpServer } from "@effect/platform"; · 5 unmodified lines | |||
| 6 | import { NodeHttpServer } from "@effect/platform-node"; | 6 | import { NodeHttpServer } from "@effect/platform-node"; |
| 7 | import { | 7 | import { |
| 8 | ControlPlaneActorResolver, | 8 | ControlPlaneActorResolver, |
| 9 | ControlPlaneService, | ||
| 10 | createControlPlaneApiLayer, | 9 | createControlPlaneApiLayer, |
| 11 | createSqlControlPlaneRuntime, | 10 | createSqlControlPlaneRuntime, |
| 12 | type ResolveExecutionEnvironment, | 11 | type ResolveExecutionEnvironment, |
| @@ -24,14 +23,14 @@ import { · 11 unmodified lines | |||
| 24 | DEFAULT_SERVER_PORT, | 23 | DEFAULT_SERVER_PORT, |
| 25 | } from "./config"; | 24 | } from "./config"; |
| 26 | 25 | ||
| 27 | export type LocalExecutorServer = { | 26 | type LocalExecutorServer = { |
| 28 | readonly runtime: SqlControlPlaneRuntime; | 27 | readonly runtime: SqlControlPlaneRuntime; |
| 29 | readonly port: number; | 28 | readonly port: number; |
| 30 | readonly host: string; | 29 | readonly host: string; |
| 31 | readonly baseUrl: string; | 30 | readonly baseUrl: string; |
| 32 | }; | 31 | }; |
| 33 | 32 | ||
| 34 | export type StartLocalExecutorServerOptions = { | 33 | type StartLocalExecutorServerOptions = { |
| 35 | readonly port?: number; | 34 | readonly port?: number; |
| 36 | readonly host?: string; | 35 | readonly host?: string; |
| 37 | readonly localDataDir?: string; | 36 | readonly localDataDir?: string; |
| @@ -47,12 +46,11 @@ const createControlPlaneServerLayer = (input: { · 9 unmodified lines | |||
| 47 | host: string; | 46 | host: string; |
| 48 | port: number; | 47 | port: number; |
| 49 | }) => { | 48 | }) => { |
| 50 | const serviceLayer = Layer.succeed(ControlPlaneService, input.runtime.service); | ||
| 51 | const actorResolverLayer = Layer.succeed( | 49 | const actorResolverLayer = Layer.succeed( |
| 52 | ControlPlaneActorResolver, | 50 | ControlPlaneActorResolver, |
| 53 | input.runtime.actorResolver, | 51 | input.runtime.actorResolver, |
| 54 | ); | 52 | ); |
| 55 | const apiLayer = createControlPlaneApiLayer(serviceLayer, actorResolverLayer); | 53 | const apiLayer = createControlPlaneApiLayer(input.runtime.serviceLayer, actorResolverLayer); |
| 56 | 54 | ||
| 57 | return HttpApiBuilder.serve().pipe( | 55 | return HttpApiBuilder.serve().pipe( |
| 58 | Layer.provide(apiLayer), | 56 | Layer.provide(apiLayer), |
| @@ -5,6 +5,7 @@ · 4 unmodified lines | |||
| 5 | "": { | 5 | "": { |
| 6 | "name": "executor-v3", | 6 | "name": "executor-v3", |
| 7 | "devDependencies": { | 7 | "devDependencies": { |
| 8 | "knip": "^5.85.0", | ||
| 8 | "typescript": "^5.9.3", | 9 | "typescript": "^5.9.3", |
| 9 | }, | 10 | }, |
| 10 | }, | 11 | }, |
| @@ -18,8 +19,6 @@ · 7 unmodified lines | |||
| 18 | "@effect/platform": "catalog:", | 19 | "@effect/platform": "catalog:", |
| 19 | "@effect/platform-node": "catalog:", | 20 | "@effect/platform-node": "catalog:", |
| 20 | "@executor-v3/codemode-core": "workspace:*", | 21 | "@executor-v3/codemode-core": "workspace:*", |
| 21 | "@executor-v3/codemode-mcp": "workspace:*", | ||
| 22 | "@executor-v3/codemode-openapi": "workspace:*", | ||
| 23 | "@executor-v3/control-plane": "workspace:*", | 22 | "@executor-v3/control-plane": "workspace:*", |
| 24 | "@executor-v3/runtime-local-inproc": "workspace:*", | 23 | "@executor-v3/runtime-local-inproc": "workspace:*", |
| 25 | "effect": "catalog:", | 24 | "effect": "catalog:", |
| @@ -136,7 +135,6 @@ · 110 unmodified lines | |||
| 136 | "@executor-v3/ai-sdk-adapter": "workspace:*", | 135 | "@executor-v3/ai-sdk-adapter": "workspace:*", |
| 137 | "@executor-v3/codemode-core": "workspace:*", | 136 | "@executor-v3/codemode-core": "workspace:*", |
| 138 | "@executor-v3/codemode-openapi": "workspace:*", | 137 | "@executor-v3/codemode-openapi": "workspace:*", |
| 139 | "@executor-v3/control-plane": "workspace:*", | ||
| 140 | "@executor-v3/runtime-local-inproc": "workspace:*", | 138 | "@executor-v3/runtime-local-inproc": "workspace:*", |
| 141 | "effect": "catalog:", | 139 | "effect": "catalog:", |
| 142 | }, | 140 | }, |
| @@ -241,6 +239,12 @@ · 98 unmodified lines | |||
| 241 | 239 | ||
| 242 | "@electric-sql/pglite": ["@electric-sql/pglite@0.3.15", "", {}, "sha512-Cj++n1Mekf9ETfdc16TlDi+cDDQF0W7EcbyRHYOAeZdsAe8M/FJg18itDTSwyHfar2WIezawM9o0EKaRGVKygQ=="], | 240 | "@electric-sql/pglite": ["@electric-sql/pglite@0.3.15", "", {}, "sha512-Cj++n1Mekf9ETfdc16TlDi+cDDQF0W7EcbyRHYOAeZdsAe8M/FJg18itDTSwyHfar2WIezawM9o0EKaRGVKygQ=="], |
| 243 | 241 | ||
| 242 | "@emnapi/core": ["@emnapi/core@1.8.1", "", { "dependencies": { "@emnapi/wasi-threads": "1.1.0", "tslib": "^2.4.0" } }, "sha512-AvT9QFpxK0Zd8J0jopedNm+w/2fIzvtPKPjqyw9jwvBaReTTqPBk9Hixaz7KbjimP+QNz605/XnjFcDAL2pqBg=="], | ||
| 243 | |||
| 244 | "@emnapi/runtime": ["@emnapi/runtime@1.8.1", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-mehfKSMWjjNol8659Z8KxEMrdSJDDot5SXMq00dM8BN4o+CLNXQ0xH2V7EchNHV4RmbZLmmPdEaXZc5H2FXmDg=="], | ||
| 245 | |||
| 246 | "@emnapi/wasi-threads": ["@emnapi/wasi-threads@1.1.0", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ=="], | ||
| 247 | |||
| 244 | "@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.25.12", "", { "os": "aix", "cpu": "ppc64" }, "sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA=="], | 248 | "@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.25.12", "", { "os": "aix", "cpu": "ppc64" }, "sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA=="], |
| 245 | 249 | ||
| 246 | "@esbuild/android-arm": ["@esbuild/android-arm@0.25.12", "", { "os": "android", "cpu": "arm" }, "sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg=="], | 250 | "@esbuild/android-arm": ["@esbuild/android-arm@0.25.12", "", { "os": "android", "cpu": "arm" }, "sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg=="], |
| @@ -331,8 +335,56 @@ · 84 unmodified lines | |||
| 331 | 335 | ||
| 332 | "@msgpackr-extract/msgpackr-extract-win32-x64": ["@msgpackr-extract/msgpackr-extract-win32-x64@3.0.3", "", { "os": "win32", "cpu": "x64" }, "sha512-x0fWaQtYp4E6sktbsdAqnehxDgEc/VwM7uLsRCYWaiGu0ykYdZPiS8zCWdnjHwyiumousxfBm4SO31eXqwEZhQ=="], | 336 | "@msgpackr-extract/msgpackr-extract-win32-x64": ["@msgpackr-extract/msgpackr-extract-win32-x64@3.0.3", "", { "os": "win32", "cpu": "x64" }, "sha512-x0fWaQtYp4E6sktbsdAqnehxDgEc/VwM7uLsRCYWaiGu0ykYdZPiS8zCWdnjHwyiumousxfBm4SO31eXqwEZhQ=="], |
| 333 | 337 | ||
| 338 | "@napi-rs/wasm-runtime": ["@napi-rs/wasm-runtime@1.1.1", "", { "dependencies": { "@emnapi/core": "^1.7.1", "@emnapi/runtime": "^1.7.1", "@tybys/wasm-util": "^0.10.1" } }, "sha512-p64ah1M1ld8xjWv3qbvFwHiFVWrq1yFvV4f7w+mzaqiR4IlSgkqhcRdHwsGgomwzBH51sRY4NEowLxnaBjcW/A=="], | ||
| 339 | |||
| 340 | "@nodelib/fs.scandir": ["@nodelib/fs.scandir@2.1.5", "", { "dependencies": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" } }, "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g=="], | ||
| 341 | |||
| 342 | "@nodelib/fs.stat": ["@nodelib/fs.stat@2.0.5", "", {}, "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A=="], | ||
| 343 | |||
| 344 | "@nodelib/fs.walk": ["@nodelib/fs.walk@1.2.8", "", { "dependencies": { "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" } }, "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg=="], | ||
| 345 | |||
| 334 | "@opentelemetry/api": ["@opentelemetry/api@1.9.0", "", {}, "sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg=="], | 346 | "@opentelemetry/api": ["@opentelemetry/api@1.9.0", "", {}, "sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg=="], |
| 335 | 347 | ||
| 348 | "@oxc-resolver/binding-android-arm-eabi": ["@oxc-resolver/binding-android-arm-eabi@11.19.1", "", { "os": "android", "cpu": "arm" }, "sha512-aUs47y+xyXHUKlbhqHUjBABjvycq6YSD7bpxSW7vplUmdzAlJ93yXY6ZR0c1o1x5A/QKbENCvs3+NlY8IpIVzg=="], | ||
| 349 | |||
| 350 | "@oxc-resolver/binding-android-arm64": ["@oxc-resolver/binding-android-arm64@11.19.1", "", { "os": "android", "cpu": "arm64" }, "sha512-oolbkRX+m7Pq2LNjr/kKgYeC7bRDMVTWPgxBGMjSpZi/+UskVo4jsMU3MLheZV55jL6c3rNelPl4oD60ggYmqA=="], | ||
| 351 | |||
| 352 | "@oxc-resolver/binding-darwin-arm64": ["@oxc-resolver/binding-darwin-arm64@11.19.1", "", { "os": "darwin", "cpu": "arm64" }, "sha512-nUC6d2i3R5B12sUW4O646qD5cnMXf2oBGPLIIeaRfU9doJRORAbE2SGv4eW6rMqhD+G7nf2Y8TTJTLiiO3Q/dQ=="], | ||
| 353 | |||
| 354 | "@oxc-resolver/binding-darwin-x64": ["@oxc-resolver/binding-darwin-x64@11.19.1", "", { "os": "darwin", "cpu": "x64" }, "sha512-cV50vE5+uAgNcFa3QY1JOeKDSkM/9ReIcc/9wn4TavhW/itkDGrXhw9jaKnkQnGbjJ198Yh5nbX/Gr2mr4Z5jQ=="], | ||
| 355 | |||
| 356 | "@oxc-resolver/binding-freebsd-x64": ["@oxc-resolver/binding-freebsd-x64@11.19.1", "", { "os": "freebsd", "cpu": "x64" }, "sha512-xZOQiYGFxtk48PBKff+Zwoym7ScPAIVp4c14lfLxizO2LTTTJe5sx9vQNGrBymrf/vatSPNMD4FgsaaRigPkqw=="], | ||
| 357 | |||
| 358 | "@oxc-resolver/binding-linux-arm-gnueabihf": ["@oxc-resolver/binding-linux-arm-gnueabihf@11.19.1", "", { "os": "linux", "cpu": "arm" }, "sha512-lXZYWAC6kaGe/ky2su94e9jN9t6M0/6c+GrSlCqL//XO1cxi5lpAhnJYdyrKfm0ZEr/c7RNyAx3P7FSBcBd5+A=="], | ||
| 359 | |||
| 360 | "@oxc-resolver/binding-linux-arm-musleabihf": ["@oxc-resolver/binding-linux-arm-musleabihf@11.19.1", "", { "os": "linux", "cpu": "arm" }, "sha512-veG1kKsuK5+t2IsO9q0DErYVSw2azvCVvWHnfTOS73WE0STdLLB7Q1bB9WR+yHPQM76ASkFyRbogWo1GR1+WbQ=="], | ||
| 361 | |||
| 362 | "@oxc-resolver/binding-linux-arm64-gnu": ["@oxc-resolver/binding-linux-arm64-gnu@11.19.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-heV2+jmXyYnUrpUXSPugqWDRpnsQcDm2AX4wzTuvgdlZfoNYO0O3W2AVpJYaDn9AG4JdM6Kxom8+foE7/BcSig=="], | ||
| 363 | |||
| 364 | "@oxc-resolver/binding-linux-arm64-musl": ["@oxc-resolver/binding-linux-arm64-musl@11.19.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-jvo2Pjs1c9KPxMuMPIeQsgu0mOJF9rEb3y3TdpsrqwxRM+AN6/nDDwv45n5ZrUnQMsdBy5gIabioMKnQfWo9ew=="], | ||
| 365 | |||
| 366 | "@oxc-resolver/binding-linux-ppc64-gnu": ["@oxc-resolver/binding-linux-ppc64-gnu@11.19.1", "", { "os": "linux", "cpu": "ppc64" }, "sha512-vLmdNxWCdN7Uo5suays6A/+ywBby2PWBBPXctWPg5V0+eVuzsJxgAn6MMB4mPlshskYbppjpN2Zg83ArHze9gQ=="], | ||
| 367 | |||
| 368 | "@oxc-resolver/binding-linux-riscv64-gnu": ["@oxc-resolver/binding-linux-riscv64-gnu@11.19.1", "", { "os": "linux", "cpu": "none" }, "sha512-/b+WgR+VTSBxzgOhDO7TlMXC1ufPIMR6Vj1zN+/x+MnyXGW7prTLzU9eW85Aj7Th7CCEG9ArCbTeqxCzFWdg2w=="], | ||
| 369 | |||
| 370 | "@oxc-resolver/binding-linux-riscv64-musl": ["@oxc-resolver/binding-linux-riscv64-musl@11.19.1", "", { "os": "linux", "cpu": "none" }, "sha512-YlRdeWb9j42p29ROh+h4eg/OQ3dTJlpHSa+84pUM9+p6i3djtPz1q55yLJhgW9XfDch7FN1pQ/Vd6YP+xfRIuw=="], | ||
| 371 | |||
| 372 | "@oxc-resolver/binding-linux-s390x-gnu": ["@oxc-resolver/binding-linux-s390x-gnu@11.19.1", "", { "os": "linux", "cpu": "s390x" }, "sha512-EDpafVOQWF8/MJynsjOGFThcqhRHy417sRyLfQmeiamJ8qVhSKAn2Dn2VVKUGCjVB9C46VGjhNo7nOPUi1x6uA=="], | ||
| 373 | |||
| 374 | "@oxc-resolver/binding-linux-x64-gnu": ["@oxc-resolver/binding-linux-x64-gnu@11.19.1", "", { "os": "linux", "cpu": "x64" }, "sha512-NxjZe+rqWhr+RT8/Ik+5ptA3oz7tUw361Wa5RWQXKnfqwSSHdHyrw6IdcTfYuml9dM856AlKWZIUXDmA9kkiBQ=="], | ||
| 375 | |||
| 376 | "@oxc-resolver/binding-linux-x64-musl": ["@oxc-resolver/binding-linux-x64-musl@11.19.1", "", { "os": "linux", "cpu": "x64" }, "sha512-cM/hQwsO3ReJg5kR+SpI69DMfvNCp+A/eVR4b4YClE5bVZwz8rh2Nh05InhwI5HR/9cArbEkzMjcKgTHS6UaNw=="], | ||
| 377 | |||
| 378 | "@oxc-resolver/binding-openharmony-arm64": ["@oxc-resolver/binding-openharmony-arm64@11.19.1", "", { "os": "none", "cpu": "arm64" }, "sha512-QF080IowFB0+9Rh6RcD19bdgh49BpQHUW5TajG1qvWHvmrQznTZZjYlgE2ltLXyKY+qs4F/v5xuX1XS7Is+3qA=="], | ||
| 379 | |||
| 380 | "@oxc-resolver/binding-wasm32-wasi": ["@oxc-resolver/binding-wasm32-wasi@11.19.1", "", { "dependencies": { "@napi-rs/wasm-runtime": "^1.1.1" }, "cpu": "none" }, "sha512-w8UCKhX826cP/ZLokXDS6+milN8y4X7zidsAttEdWlVoamTNf6lhBJldaWr3ukTDiye7s4HRcuPEPOXNC432Vg=="], | ||
| 381 | |||
| 382 | "@oxc-resolver/binding-win32-arm64-msvc": ["@oxc-resolver/binding-win32-arm64-msvc@11.19.1", "", { "os": "win32", "cpu": "arm64" }, "sha512-nJ4AsUVZrVKwnU/QRdzPCCrO0TrabBqgJ8pJhXITdZGYOV28TIYystV1VFLbQ7DtAcaBHpocT5/ZJnF78YJPtQ=="], | ||
| 383 | |||
| 384 | "@oxc-resolver/binding-win32-ia32-msvc": ["@oxc-resolver/binding-win32-ia32-msvc@11.19.1", "", { "os": "win32", "cpu": "ia32" }, "sha512-EW+ND5q2Tl+a3pH81l1QbfgbF3HmqgwLfDfVithRFheac8OTcnbXt/JxqD2GbDkb7xYEqy1zNaVFRr3oeG8npA=="], | ||
| 385 | |||
| 386 | "@oxc-resolver/binding-win32-x64-msvc": ["@oxc-resolver/binding-win32-x64-msvc@11.19.1", "", { "os": "win32", "cpu": "x64" }, "sha512-6hIU3RQu45B+VNTY4Ru8ppFwjVS/S5qwYyGhBotmjxfEKk41I2DlGtRfGJndZ5+6lneE2pwloqunlOyZuX/XAw=="], | ||
| 387 | |||
| 336 | "@parcel/watcher": ["@parcel/watcher@2.5.6", "", { "dependencies": { "detect-libc": "^2.0.3", "is-glob": "^4.0.3", "node-addon-api": "^7.0.0", "picomatch": "^4.0.3" }, "optionalDependencies": { "@parcel/watcher-android-arm64": "2.5.6", "@parcel/watcher-darwin-arm64": "2.5.6", "@parcel/watcher-darwin-x64": "2.5.6", "@parcel/watcher-freebsd-x64": "2.5.6", "@parcel/watcher-linux-arm-glibc": "2.5.6", "@parcel/watcher-linux-arm-musl": "2.5.6", "@parcel/watcher-linux-arm64-glibc": "2.5.6", "@parcel/watcher-linux-arm64-musl": "2.5.6", "@parcel/watcher-linux-x64-glibc": "2.5.6", "@parcel/watcher-linux-x64-musl": "2.5.6", "@parcel/watcher-win32-arm64": "2.5.6", "@parcel/watcher-win32-ia32": "2.5.6", "@parcel/watcher-win32-x64": "2.5.6" } }, "sha512-tmmZ3lQxAe/k/+rNnXQRawJ4NjxO2hqiOLTHvWchtGZULp4RyFeh6aU4XdOYBFe2KE1oShQTv4AblOs2iOrNnQ=="], | 388 | "@parcel/watcher": ["@parcel/watcher@2.5.6", "", { "dependencies": { "detect-libc": "^2.0.3", "is-glob": "^4.0.3", "node-addon-api": "^7.0.0", "picomatch": "^4.0.3" }, "optionalDependencies": { "@parcel/watcher-android-arm64": "2.5.6", "@parcel/watcher-darwin-arm64": "2.5.6", "@parcel/watcher-darwin-x64": "2.5.6", "@parcel/watcher-freebsd-x64": "2.5.6", "@parcel/watcher-linux-arm-glibc": "2.5.6", "@parcel/watcher-linux-arm-musl": "2.5.6", "@parcel/watcher-linux-arm64-glibc": "2.5.6", "@parcel/watcher-linux-arm64-musl": "2.5.6", "@parcel/watcher-linux-x64-glibc": "2.5.6", "@parcel/watcher-linux-x64-musl": "2.5.6", "@parcel/watcher-win32-arm64": "2.5.6", "@parcel/watcher-win32-ia32": "2.5.6", "@parcel/watcher-win32-x64": "2.5.6" } }, "sha512-tmmZ3lQxAe/k/+rNnXQRawJ4NjxO2hqiOLTHvWchtGZULp4RyFeh6aU4XdOYBFe2KE1oShQTv4AblOs2iOrNnQ=="], |
| 337 | 389 | ||
| 338 | "@parcel/watcher-android-arm64": ["@parcel/watcher-android-arm64@2.5.6", "", { "os": "android", "cpu": "arm64" }, "sha512-YQxSS34tPF/6ZG7r/Ih9xy+kP/WwediEUsqmtf0cuCV5TPPKw/PQHRhueUo6JdeFJaqV3pyjm0GdYjZotbRt/A=="], | 390 | "@parcel/watcher-android-arm64": ["@parcel/watcher-android-arm64@2.5.6", "", { "os": "android", "cpu": "arm64" }, "sha512-YQxSS34tPF/6ZG7r/Ih9xy+kP/WwediEUsqmtf0cuCV5TPPKw/PQHRhueUo6JdeFJaqV3pyjm0GdYjZotbRt/A=="], |
| @@ -415,6 +467,8 @@ · 76 unmodified lines | |||
| 415 | 467 | ||
| 416 | "@tediousjs/connection-string": ["@tediousjs/connection-string@0.5.0", "", {}, "sha512-7qSgZbincDDDFyRweCIEvZULFAw5iz/DeunhvuxpL31nfntX3P4Yd4HkHBRg9H8CdqY1e5WFN1PZIz/REL9MVQ=="], | 468 | "@tediousjs/connection-string": ["@tediousjs/connection-string@0.5.0", "", {}, "sha512-7qSgZbincDDDFyRweCIEvZULFAw5iz/DeunhvuxpL31nfntX3P4Yd4HkHBRg9H8CdqY1e5WFN1PZIz/REL9MVQ=="], |
| 417 | 469 | ||
| 470 | "@tybys/wasm-util": ["@tybys/wasm-util@0.10.1", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg=="], | ||
| 471 | |||
| 418 | "@types/chai": ["@types/chai@5.2.3", "", { "dependencies": { "@types/deep-eql": "*", "assertion-error": "^2.0.1" } }, "sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA=="], | 472 | "@types/chai": ["@types/chai@5.2.3", "", { "dependencies": { "@types/deep-eql": "*", "assertion-error": "^2.0.1" } }, "sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA=="], |
| 419 | 473 | ||
| 420 | "@types/deep-eql": ["@types/deep-eql@4.0.2", "", {}, "sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw=="], | 474 | "@types/deep-eql": ["@types/deep-eql@4.0.2", "", {}, "sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw=="], |
| @@ -457,6 +511,8 @@ · 36 unmodified lines | |||
| 457 | 511 | ||
| 458 | "ajv-formats": ["ajv-formats@3.0.1", "", { "dependencies": { "ajv": "^8.0.0" } }, "sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ=="], | 512 | "ajv-formats": ["ajv-formats@3.0.1", "", { "dependencies": { "ajv": "^8.0.0" } }, "sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ=="], |
| 459 | 513 | ||
| 514 | "argparse": ["argparse@2.0.1", "", {}, "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="], | ||
| 515 | |||
| 460 | "assertion-error": ["assertion-error@2.0.1", "", {}, "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA=="], | 516 | "assertion-error": ["assertion-error@2.0.1", "", {}, "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA=="], |
| 461 | 517 | ||
| 462 | "base64-js": ["base64-js@1.5.1", "", {}, "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA=="], | 518 | "base64-js": ["base64-js@1.5.1", "", {}, "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA=="], |
| @@ -465,6 +521,8 @@ · 2 unmodified lines | |||
| 465 | 521 | ||
| 466 | "body-parser": ["body-parser@2.2.2", "", { "dependencies": { "bytes": "^3.1.2", "content-type": "^1.0.5", "debug": "^4.4.3", "http-errors": "^2.0.0", "iconv-lite": "^0.7.0", "on-finished": "^2.4.1", "qs": "^6.14.1", "raw-body": "^3.0.1", "type-is": "^2.0.1" } }, "sha512-oP5VkATKlNwcgvxi0vM0p/D3n2C3EReYVX+DNYs5TjZFn/oQt2j+4sVJtSMr18pdRr8wjTcBl6LoV+FUwzPmNA=="], | 522 | "body-parser": ["body-parser@2.2.2", "", { "dependencies": { "bytes": "^3.1.2", "content-type": "^1.0.5", "debug": "^4.4.3", "http-errors": "^2.0.0", "iconv-lite": "^0.7.0", "on-finished": "^2.4.1", "qs": "^6.14.1", "raw-body": "^3.0.1", "type-is": "^2.0.1" } }, "sha512-oP5VkATKlNwcgvxi0vM0p/D3n2C3EReYVX+DNYs5TjZFn/oQt2j+4sVJtSMr18pdRr8wjTcBl6LoV+FUwzPmNA=="], |
| 467 | 523 | ||
| 524 | "braces": ["braces@3.0.3", "", { "dependencies": { "fill-range": "^7.1.1" } }, "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA=="], | ||
| 525 | |||
| 468 | "buffer": ["buffer@6.0.3", "", { "dependencies": { "base64-js": "^1.3.1", "ieee754": "^1.2.1" } }, "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA=="], | 526 | "buffer": ["buffer@6.0.3", "", { "dependencies": { "base64-js": "^1.3.1", "ieee754": "^1.2.1" } }, "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA=="], |
| 469 | 527 | ||
| 470 | "buffer-equal-constant-time": ["buffer-equal-constant-time@1.0.1", "", {}, "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA=="], | 528 | "buffer-equal-constant-time": ["buffer-equal-constant-time@1.0.1", "", {}, "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA=="], |
| @@ -563,14 +621,24 @@ · 92 unmodified lines | |||
| 563 | 621 | ||
| 564 | "fast-deep-equal": ["fast-deep-equal@3.1.3", "", {}, "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="], | 622 | "fast-deep-equal": ["fast-deep-equal@3.1.3", "", {}, "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="], |
| 565 | 623 | ||
| 624 | "fast-glob": ["fast-glob@3.3.3", "", { "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", "glob-parent": "^5.1.2", "merge2": "^1.3.0", "micromatch": "^4.0.8" } }, "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg=="], | ||
| 625 | |||
| 566 | "fast-uri": ["fast-uri@3.1.0", "", {}, "sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA=="], | 626 | "fast-uri": ["fast-uri@3.1.0", "", {}, "sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA=="], |
| 567 | 627 | ||
| 628 | "fastq": ["fastq@1.20.1", "", { "dependencies": { "reusify": "^1.0.4" } }, "sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw=="], | ||
| 629 | |||
| 630 | "fd-package-json": ["fd-package-json@2.0.0", "", { "dependencies": { "walk-up-path": "^4.0.0" } }, "sha512-jKmm9YtsNXN789RS/0mSzOC1NUq9mkVd65vbSSVsKdjGvYXBuE4oWe2QOEoFeRmJg+lPuZxpmrfFclNhoRMneQ=="], | ||
| 631 | |||
| 568 | "fdir": ["fdir@6.5.0", "", { "peerDependencies": { "picomatch": "^3 || ^4" }, "optionalPeers": ["picomatch"] }, "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg=="], | 632 | "fdir": ["fdir@6.5.0", "", { "peerDependencies": { "picomatch": "^3 || ^4" }, "optionalPeers": ["picomatch"] }, "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg=="], |
| 569 | 633 | ||
| 634 | "fill-range": ["fill-range@7.1.1", "", { "dependencies": { "to-regex-range": "^5.0.1" } }, "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg=="], | ||
| 635 | |||
| 570 | "finalhandler": ["finalhandler@2.1.1", "", { "dependencies": { "debug": "^4.4.0", "encodeurl": "^2.0.0", "escape-html": "^1.0.3", "on-finished": "^2.4.1", "parseurl": "^1.3.3", "statuses": "^2.0.1" } }, "sha512-S8KoZgRZN+a5rNwqTxlZZePjT/4cnm0ROV70LedRHZ0p8u9fRID0hJUZQpkKLzro8LfmC8sx23bY6tVNxv8pQA=="], | 636 | "finalhandler": ["finalhandler@2.1.1", "", { "dependencies": { "debug": "^4.4.0", "encodeurl": "^2.0.0", "escape-html": "^1.0.3", "on-finished": "^2.4.1", "parseurl": "^1.3.3", "statuses": "^2.0.1" } }, "sha512-S8KoZgRZN+a5rNwqTxlZZePjT/4cnm0ROV70LedRHZ0p8u9fRID0hJUZQpkKLzro8LfmC8sx23bY6tVNxv8pQA=="], |
| 571 | 637 | ||
| 572 | "find-my-way-ts": ["find-my-way-ts@0.1.6", "", {}, "sha512-a85L9ZoXtNAey3Y6Z+eBWW658kO/MwR7zIafkIUPUMf3isZG0NCs2pjW2wtjxAKuJPxMAsHUIP4ZPGv0o5gyTA=="], | 638 | "find-my-way-ts": ["find-my-way-ts@0.1.6", "", {}, "sha512-a85L9ZoXtNAey3Y6Z+eBWW658kO/MwR7zIafkIUPUMf3isZG0NCs2pjW2wtjxAKuJPxMAsHUIP4ZPGv0o5gyTA=="], |
| 573 | 639 | ||
| 640 | "formatly": ["formatly@0.3.0", "", { "dependencies": { "fd-package-json": "^2.0.0" }, "bin": { "formatly": "bin/index.mjs" } }, "sha512-9XNj/o4wrRFyhSMJOvsuyMwy8aUfBaZ1VrqHVfohyXf0Sw0e+yfKG+xZaY3arGCOMdwFsqObtzVOc1gU9KiT9w=="], | ||
| 641 | |||
| 574 | "forwarded": ["forwarded@0.2.0", "", {}, "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow=="], | 642 | "forwarded": ["forwarded@0.2.0", "", {}, "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow=="], |
| 575 | 643 | ||
| 576 | "fresh": ["fresh@2.0.0", "", {}, "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A=="], | 644 | "fresh": ["fresh@2.0.0", "", {}, "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A=="], |
| @@ -583,6 +651,8 @@ · 6 unmodified lines | |||
| 583 | 651 | ||
| 584 | "get-proto": ["get-proto@1.0.1", "", { "dependencies": { "dunder-proto": "^1.0.1", "es-object-atoms": "^1.0.0" } }, "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g=="], | 652 | "get-proto": ["get-proto@1.0.1", "", { "dependencies": { "dunder-proto": "^1.0.1", "es-object-atoms": "^1.0.0" } }, "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g=="], |
| 585 | 653 | ||
| 654 | "glob-parent": ["glob-parent@5.1.2", "", { "dependencies": { "is-glob": "^4.0.1" } }, "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow=="], | ||
| 655 | |||
| 586 | "gopd": ["gopd@1.2.0", "", {}, "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg=="], | 656 | "gopd": ["gopd@1.2.0", "", {}, "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg=="], |
| 587 | 657 | ||
| 588 | "has-symbols": ["has-symbols@1.1.0", "", {}, "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ=="], | 658 | "has-symbols": ["has-symbols@1.1.0", "", {}, "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ=="], |
| @@ -617,6 +687,8 @@ · 28 unmodified lines | |||
| 617 | 687 | ||
| 618 | "is-inside-container": ["is-inside-container@1.0.0", "", { "dependencies": { "is-docker": "^3.0.0" }, "bin": { "is-inside-container": "cli.js" } }, "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA=="], | 688 | "is-inside-container": ["is-inside-container@1.0.0", "", { "dependencies": { "is-docker": "^3.0.0" }, "bin": { "is-inside-container": "cli.js" } }, "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA=="], |
| 619 | 689 | ||
| 690 | "is-number": ["is-number@7.0.0", "", {}, "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng=="], | ||
| 691 | |||
| 620 | "is-promise": ["is-promise@4.0.0", "", {}, "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ=="], | 692 | "is-promise": ["is-promise@4.0.0", "", {}, "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ=="], |
| 621 | 693 | ||
| 622 | "is-wsl": ["is-wsl@3.1.1", "", { "dependencies": { "is-inside-container": "^1.0.0" } }, "sha512-e6rvdUCiQCAuumZslxRJWR/Doq4VpPR82kqclvcS0efgt430SlGIk05vdCN58+VrzgtIcfNODjozVielycD4Sw=="], | 694 | "is-wsl": ["is-wsl@3.1.1", "", { "dependencies": { "is-inside-container": "^1.0.0" } }, "sha512-e6rvdUCiQCAuumZslxRJWR/Doq4VpPR82kqclvcS0efgt430SlGIk05vdCN58+VrzgtIcfNODjozVielycD4Sw=="], |
| @@ -631,6 +703,8 @@ · 8 unmodified lines | |||
| 631 | 703 | ||
| 632 | "js-tokens": ["js-tokens@9.0.1", "", {}, "sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ=="], | 704 | "js-tokens": ["js-tokens@9.0.1", "", {}, "sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ=="], |
| 633 | 705 | ||
| 706 | "js-yaml": ["js-yaml@4.1.1", "", { "dependencies": { "argparse": "^2.0.1" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA=="], | ||
| 707 | |||
| 634 | "jsbi": ["jsbi@4.3.2", "", {}, "sha512-9fqMSQbhJykSeii05nxKl4m6Eqn2P6rOlYiS+C5Dr/HPIU/7yZxu5qzbs40tgaFORiw2Amd0mirjxatXYMkIew=="], | 708 | "jsbi": ["jsbi@4.3.2", "", {}, "sha512-9fqMSQbhJykSeii05nxKl4m6Eqn2P6rOlYiS+C5Dr/HPIU/7yZxu5qzbs40tgaFORiw2Amd0mirjxatXYMkIew=="], |
| 635 | 709 | ||
| 636 | "json-schema": ["json-schema@0.4.0", "", {}, "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA=="], | 710 | "json-schema": ["json-schema@0.4.0", "", {}, "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA=="], |
| @@ -645,6 +719,8 @@ · 8 unmodified lines | |||
| 645 | 719 | ||
| 646 | "jws": ["jws@4.0.1", "", { "dependencies": { "jwa": "^2.0.1", "safe-buffer": "^5.0.1" } }, "sha512-EKI/M/yqPncGUUh44xz0PxSidXFr/+r0pA70+gIYhjv+et7yxM+s29Y+VGDkovRofQem0fs7Uvf4+YmAdyRduA=="], | 720 | "jws": ["jws@4.0.1", "", { "dependencies": { "jwa": "^2.0.1", "safe-buffer": "^5.0.1" } }, "sha512-EKI/M/yqPncGUUh44xz0PxSidXFr/+r0pA70+gIYhjv+et7yxM+s29Y+VGDkovRofQem0fs7Uvf4+YmAdyRduA=="], |
| 647 | 721 | ||
| 722 | "knip": ["knip@5.85.0", "", { "dependencies": { "@nodelib/fs.walk": "^1.2.3", "fast-glob": "^3.3.3", "formatly": "^0.3.0", "jiti": "^2.6.0", "js-yaml": "^4.1.1", "minimist": "^1.2.8", "oxc-resolver": "^11.15.0", "picocolors": "^1.1.1", "picomatch": "^4.0.1", "smol-toml": "^1.5.2", "strip-json-comments": "5.0.3", "zod": "^4.1.11" }, "peerDependencies": { "@types/node": ">=18", "typescript": ">=5.0.4 <7" }, "bin": { "knip": "bin/knip.js", "knip-bun": "bin/knip-bun.js" } }, "sha512-V2kyON+DZiYdNNdY6GALseiNCwX7dYdpz9Pv85AUn69Gk0UKCts+glOKWfe5KmaMByRjM9q17Mzj/KinTVOyxg=="], | ||
| 723 | |||
| 648 | "kubernetes-types": ["kubernetes-types@1.30.0", "", {}, "sha512-Dew1okvhM/SQcIa2rcgujNndZwU8VnSapDgdxlYoB84ZlpAD43U6KLAFqYo17ykSFGHNPrg0qry0bP+GJd9v7Q=="], | 724 | "kubernetes-types": ["kubernetes-types@1.30.0", "", {}, "sha512-Dew1okvhM/SQcIa2rcgujNndZwU8VnSapDgdxlYoB84ZlpAD43U6KLAFqYo17ykSFGHNPrg0qry0bP+GJd9v7Q=="], |
| 649 | 725 | ||
| 650 | "lodash.includes": ["lodash.includes@4.3.0", "", {}, "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w=="], | 726 | "lodash.includes": ["lodash.includes@4.3.0", "", {}, "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w=="], |
| @@ -671,12 +747,18 @@ · 20 unmodified lines | |||
| 671 | 747 | ||
| 672 | "merge-descriptors": ["merge-descriptors@2.0.0", "", {}, "sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g=="], | 748 | "merge-descriptors": ["merge-descriptors@2.0.0", "", {}, "sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g=="], |
| 673 | 749 | ||
| 750 | "merge2": ["merge2@1.4.1", "", {}, "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg=="], | ||
| 751 | |||
| 752 | "micromatch": ["micromatch@4.0.8", "", { "dependencies": { "braces": "^3.0.3", "picomatch": "^2.3.1" } }, "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA=="], | ||
| 753 | |||
| 674 | "mime": ["mime@3.0.0", "", { "bin": { "mime": "cli.js" } }, "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A=="], | 754 | "mime": ["mime@3.0.0", "", { "bin": { "mime": "cli.js" } }, "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A=="], |
| 675 | 755 | ||
| 676 | "mime-db": ["mime-db@1.54.0", "", {}, "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ=="], | 756 | "mime-db": ["mime-db@1.54.0", "", {}, "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ=="], |
| 677 | 757 | ||
| 678 | "mime-types": ["mime-types@3.0.2", "", { "dependencies": { "mime-db": "^1.54.0" } }, "sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A=="], | 758 | "mime-types": ["mime-types@3.0.2", "", { "dependencies": { "mime-db": "^1.54.0" } }, "sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A=="], |
| 679 | 759 | ||
| 760 | "minimist": ["minimist@1.2.8", "", {}, "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA=="], | ||
| 761 | |||
| 680 | "ms": ["ms@2.1.3", "", {}, "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="], | 762 | "ms": ["ms@2.1.3", "", {}, "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="], |
| 681 | 763 | ||
| 682 | "msgpackr": ["msgpackr@1.11.8", "", { "optionalDependencies": { "msgpackr-extract": "^3.0.2" } }, "sha512-bC4UGzHhVvgDNS7kn9tV8fAucIYUBuGojcaLiz7v+P63Lmtm0Xeji8B/8tYKddALXxJLpwIeBmUN3u64C4YkRA=="], | 764 | "msgpackr": ["msgpackr@1.11.8", "", { "optionalDependencies": { "msgpackr-extract": "^3.0.2" } }, "sha512-bC4UGzHhVvgDNS7kn9tV8fAucIYUBuGojcaLiz7v+P63Lmtm0Xeji8B/8tYKddALXxJLpwIeBmUN3u64C4YkRA=="], |
| @@ -707,6 +789,8 @@ · 24 unmodified lines | |||
| 707 | 789 | ||
| 708 | "open": ["open@10.2.0", "", { "dependencies": { "default-browser": "^5.2.1", "define-lazy-prop": "^3.0.0", "is-inside-container": "^1.0.0", "wsl-utils": "^0.1.0" } }, "sha512-YgBpdJHPyQ2UE5x+hlSXcnejzAvD0b22U2OuAP+8OnlJT+PjWPxtgmGqKKc+RgTM63U9gN0YzrYc71R2WT/hTA=="], | 790 | "open": ["open@10.2.0", "", { "dependencies": { "default-browser": "^5.2.1", "define-lazy-prop": "^3.0.0", "is-inside-container": "^1.0.0", "wsl-utils": "^0.1.0" } }, "sha512-YgBpdJHPyQ2UE5x+hlSXcnejzAvD0b22U2OuAP+8OnlJT+PjWPxtgmGqKKc+RgTM63U9gN0YzrYc71R2WT/hTA=="], |
| 709 | 791 | ||
| 792 | "oxc-resolver": ["oxc-resolver@11.19.1", "", { "optionalDependencies": { "@oxc-resolver/binding-android-arm-eabi": "11.19.1", "@oxc-resolver/binding-android-arm64": "11.19.1", "@oxc-resolver/binding-darwin-arm64": "11.19.1", "@oxc-resolver/binding-darwin-x64": "11.19.1", "@oxc-resolver/binding-freebsd-x64": "11.19.1", "@oxc-resolver/binding-linux-arm-gnueabihf": "11.19.1", "@oxc-resolver/binding-linux-arm-musleabihf": "11.19.1", "@oxc-resolver/binding-linux-arm64-gnu": "11.19.1", "@oxc-resolver/binding-linux-arm64-musl": "11.19.1", "@oxc-resolver/binding-linux-ppc64-gnu": "11.19.1", "@oxc-resolver/binding-linux-riscv64-gnu": "11.19.1", "@oxc-resolver/binding-linux-riscv64-musl": "11.19.1", "@oxc-resolver/binding-linux-s390x-gnu": "11.19.1", "@oxc-resolver/binding-linux-x64-gnu": "11.19.1", "@oxc-resolver/binding-linux-x64-musl": "11.19.1", "@oxc-resolver/binding-openharmony-arm64": "11.19.1", "@oxc-resolver/binding-wasm32-wasi": "11.19.1", "@oxc-resolver/binding-win32-arm64-msvc": "11.19.1", "@oxc-resolver/binding-win32-ia32-msvc": "11.19.1", "@oxc-resolver/binding-win32-x64-msvc": "11.19.1" } }, "sha512-qE/CIg/spwrTBFt5aKmwe3ifeDdLfA2NESN30E42X/lII5ClF8V7Wt6WIJhcGZjp0/Q+nQ+9vgxGk//xZNX2hg=="], | ||
| 793 | |||
| 710 | "parseurl": ["parseurl@1.3.3", "", {}, "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ=="], | 794 | "parseurl": ["parseurl@1.3.3", "", {}, "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ=="], |
| 711 | 795 | ||
| 712 | "path-key": ["path-key@3.1.1", "", {}, "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q=="], | 796 | "path-key": ["path-key@3.1.1", "", {}, "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q=="], |
| @@ -735,6 +819,8 @@ · 22 unmodified lines | |||
| 735 | 819 | ||
| 736 | "qs": ["qs@6.15.0", "", { "dependencies": { "side-channel": "^1.1.0" } }, "sha512-mAZTtNCeetKMH+pSjrb76NAM8V9a05I9aBZOHztWy/UqcJdQYNsf59vrRKWnojAT9Y+GbIvoTBC++CPHqpDBhQ=="], | 820 | "qs": ["qs@6.15.0", "", { "dependencies": { "side-channel": "^1.1.0" } }, "sha512-mAZTtNCeetKMH+pSjrb76NAM8V9a05I9aBZOHztWy/UqcJdQYNsf59vrRKWnojAT9Y+GbIvoTBC++CPHqpDBhQ=="], |
| 737 | 821 | ||
| 822 | "queue-microtask": ["queue-microtask@1.2.3", "", {}, "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A=="], | ||
| 823 | |||
| 738 | "range-parser": ["range-parser@1.2.1", "", {}, "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg=="], | 824 | "range-parser": ["range-parser@1.2.1", "", {}, "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg=="], |
| 739 | 825 | ||
| 740 | "raw-body": ["raw-body@3.0.2", "", { "dependencies": { "bytes": "~3.1.2", "http-errors": "~2.0.1", "iconv-lite": "~0.7.0", "unpipe": "~1.0.0" } }, "sha512-K5zQjDllxWkf7Z5xJdV0/B0WTNqx6vxG70zJE4N0kBs4LovmEYWJzQGxC9bS9RAKu3bgM40lrd5zoLJ12MQ5BA=="], | 826 | "raw-body": ["raw-body@3.0.2", "", { "dependencies": { "bytes": "~3.1.2", "http-errors": "~2.0.1", "iconv-lite": "~0.7.0", "unpipe": "~1.0.0" } }, "sha512-K5zQjDllxWkf7Z5xJdV0/B0WTNqx6vxG70zJE4N0kBs4LovmEYWJzQGxC9bS9RAKu3bgM40lrd5zoLJ12MQ5BA=="], |
| @@ -743,6 +829,8 @@ · 2 unmodified lines | |||
| 743 | 829 | ||
| 744 | "require-from-string": ["require-from-string@2.0.2", "", {}, "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw=="], | 830 | "require-from-string": ["require-from-string@2.0.2", "", {}, "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw=="], |
| 745 | 831 | ||
| 832 | "reusify": ["reusify@1.1.0", "", {}, "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw=="], | ||
| 833 | |||
| 746 | "rfdc": ["rfdc@1.4.1", "", {}, "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA=="], | 834 | "rfdc": ["rfdc@1.4.1", "", {}, "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA=="], |
| 747 | 835 | ||
| 748 | "rollup": ["rollup@4.59.0", "", { "dependencies": { "@types/estree": "1.0.8" }, "optionalDependencies": { "@rollup/rollup-android-arm-eabi": "4.59.0", "@rollup/rollup-android-arm64": "4.59.0", "@rollup/rollup-darwin-arm64": "4.59.0", "@rollup/rollup-darwin-x64": "4.59.0", "@rollup/rollup-freebsd-arm64": "4.59.0", "@rollup/rollup-freebsd-x64": "4.59.0", "@rollup/rollup-linux-arm-gnueabihf": "4.59.0", "@rollup/rollup-linux-arm-musleabihf": "4.59.0", "@rollup/rollup-linux-arm64-gnu": "4.59.0", "@rollup/rollup-linux-arm64-musl": "4.59.0", "@rollup/rollup-linux-loong64-gnu": "4.59.0", "@rollup/rollup-linux-loong64-musl": "4.59.0", "@rollup/rollup-linux-ppc64-gnu": "4.59.0", "@rollup/rollup-linux-ppc64-musl": "4.59.0", "@rollup/rollup-linux-riscv64-gnu": "4.59.0", "@rollup/rollup-linux-riscv64-musl": "4.59.0", "@rollup/rollup-linux-s390x-gnu": "4.59.0", "@rollup/rollup-linux-x64-gnu": "4.59.0", "@rollup/rollup-linux-x64-musl": "4.59.0", "@rollup/rollup-openbsd-x64": "4.59.0", "@rollup/rollup-openharmony-arm64": "4.59.0", "@rollup/rollup-win32-arm64-msvc": "4.59.0", "@rollup/rollup-win32-ia32-msvc": "4.59.0", "@rollup/rollup-win32-x64-gnu": "4.59.0", "@rollup/rollup-win32-x64-msvc": "4.59.0", "fsevents": "~2.3.2" }, "bin": { "rollup": "dist/bin/rollup" } }, "sha512-2oMpl67a3zCH9H79LeMcbDhXW/UmWG/y2zuqnF2jQq5uq9TbM9TVyXvA4+t+ne2IIkBdrLpAaRQAvo7YI/Yyeg=="], | 836 | "rollup": ["rollup@4.59.0", "", { "dependencies": { "@types/estree": "1.0.8" }, "optionalDependencies": { "@rollup/rollup-android-arm-eabi": "4.59.0", "@rollup/rollup-android-arm64": "4.59.0", "@rollup/rollup-darwin-arm64": "4.59.0", "@rollup/rollup-darwin-x64": "4.59.0", "@rollup/rollup-freebsd-arm64": "4.59.0", "@rollup/rollup-freebsd-x64": "4.59.0", "@rollup/rollup-linux-arm-gnueabihf": "4.59.0", "@rollup/rollup-linux-arm-musleabihf": "4.59.0", "@rollup/rollup-linux-arm64-gnu": "4.59.0", "@rollup/rollup-linux-arm64-musl": "4.59.0", "@rollup/rollup-linux-loong64-gnu": "4.59.0", "@rollup/rollup-linux-loong64-musl": "4.59.0", "@rollup/rollup-linux-ppc64-gnu": "4.59.0", "@rollup/rollup-linux-ppc64-musl": "4.59.0", "@rollup/rollup-linux-riscv64-gnu": "4.59.0", "@rollup/rollup-linux-riscv64-musl": "4.59.0", "@rollup/rollup-linux-s390x-gnu": "4.59.0", "@rollup/rollup-linux-x64-gnu": "4.59.0", "@rollup/rollup-linux-x64-musl": "4.59.0", "@rollup/rollup-openbsd-x64": "4.59.0", "@rollup/rollup-openharmony-arm64": "4.59.0", "@rollup/rollup-win32-arm64-msvc": "4.59.0", "@rollup/rollup-win32-ia32-msvc": "4.59.0", "@rollup/rollup-win32-x64-gnu": "4.59.0", "@rollup/rollup-win32-x64-msvc": "4.59.0", "fsevents": "~2.3.2" }, "bin": { "rollup": "dist/bin/rollup" } }, "sha512-2oMpl67a3zCH9H79LeMcbDhXW/UmWG/y2zuqnF2jQq5uq9TbM9TVyXvA4+t+ne2IIkBdrLpAaRQAvo7YI/Yyeg=="], |
| @@ -751,6 +839,8 @@ · 2 unmodified lines | |||
| 751 | 839 | ||
| 752 | "run-applescript": ["run-applescript@7.1.0", "", {}, "sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q=="], | 840 | "run-applescript": ["run-applescript@7.1.0", "", {}, "sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q=="], |
| 753 | 841 | ||
| 842 | "run-parallel": ["run-parallel@1.2.0", "", { "dependencies": { "queue-microtask": "^1.2.2" } }, "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA=="], | ||
| 843 | |||
| 754 | "safe-buffer": ["safe-buffer@5.2.1", "", {}, "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="], | 844 | "safe-buffer": ["safe-buffer@5.2.1", "", {}, "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="], |
| 755 | 845 | ||
| 756 | "safer-buffer": ["safer-buffer@2.1.2", "", {}, "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="], | 846 | "safer-buffer": ["safer-buffer@2.1.2", "", {}, "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="], |
| @@ -777,6 +867,8 @@ · 20 unmodified lines | |||
| 777 | 867 | ||
| 778 | "siginfo": ["siginfo@2.0.0", "", {}, "sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g=="], | 868 | "siginfo": ["siginfo@2.0.0", "", {}, "sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g=="], |
| 779 | 869 | ||
| 870 | "smol-toml": ["smol-toml@1.6.0", "", {}, "sha512-4zemZi0HvTnYwLfrpk/CF9LOd9Lt87kAt50GnqhMpyF9U3poDAP2+iukq2bZsO/ufegbYehBkqINbsWxj4l4cw=="], | ||
| 871 | |||
| 780 | "source-map-js": ["source-map-js@1.2.1", "", {}, "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA=="], | 872 | "source-map-js": ["source-map-js@1.2.1", "", {}, "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA=="], |
| 781 | 873 | ||
| 782 | "sprintf-js": ["sprintf-js@1.1.3", "", {}, "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA=="], | 874 | "sprintf-js": ["sprintf-js@1.1.3", "", {}, "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA=="], |
| @@ -789,6 +881,8 @@ · 6 unmodified lines | |||
| 789 | 881 | ||
| 790 | "string_decoder": ["string_decoder@1.3.0", "", { "dependencies": { "safe-buffer": "~5.2.0" } }, "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA=="], | 882 | "string_decoder": ["string_decoder@1.3.0", "", { "dependencies": { "safe-buffer": "~5.2.0" } }, "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA=="], |
| 791 | 883 | ||
| 884 | "strip-json-comments": ["strip-json-comments@5.0.3", "", {}, "sha512-1tB5mhVo7U+ETBKNf92xT4hrQa3pm0MZ0PQvuDnWgAAGHDsfp4lPSpiS6psrSiet87wyGPh9ft6wmhOMQ0hDiw=="], | ||
| 885 | |||
| 792 | "strip-literal": ["strip-literal@3.1.0", "", { "dependencies": { "js-tokens": "^9.0.1" } }, "sha512-8r3mkIM/2+PpjHoOtiAW8Rg3jJLHaV7xPwG+YRGrv6FP0wwk/toTpATxWYOW0BKdWwl82VT2tFYi5DlROa0Mxg=="], | 886 | "strip-literal": ["strip-literal@3.1.0", "", { "dependencies": { "js-tokens": "^9.0.1" } }, "sha512-8r3mkIM/2+PpjHoOtiAW8Rg3jJLHaV7xPwG+YRGrv6FP0wwk/toTpATxWYOW0BKdWwl82VT2tFYi5DlROa0Mxg=="], |
| 793 | 887 | ||
| 794 | "tarn": ["tarn@3.0.2", "", {}, "sha512-51LAVKUSZSVfI05vjPESNc5vwqqZpbXCsU+/+wxlOrUjk2SnFTt97v9ZgQrD4YmxYW1Px6w2KjaDitCfkvgxMQ=="], | 888 | "tarn": ["tarn@3.0.2", "", {}, "sha512-51LAVKUSZSVfI05vjPESNc5vwqqZpbXCsU+/+wxlOrUjk2SnFTt97v9ZgQrD4YmxYW1Px6w2KjaDitCfkvgxMQ=="], |
| @@ -807,6 +901,8 @@ · 12 unmodified lines | |||
| 807 | 901 | ||
| 808 | "tinyspy": ["tinyspy@4.0.4", "", {}, "sha512-azl+t0z7pw/z958Gy9svOTuzqIk6xq+NSheJzn5MMWtWTFywIacg2wUlzKFGtt3cthx0r2SxMK0yzJOR0IES7Q=="], | 902 | "tinyspy": ["tinyspy@4.0.4", "", {}, "sha512-azl+t0z7pw/z958Gy9svOTuzqIk6xq+NSheJzn5MMWtWTFywIacg2wUlzKFGtt3cthx0r2SxMK0yzJOR0IES7Q=="], |
| 809 | 903 | ||
| 904 | "to-regex-range": ["to-regex-range@5.0.1", "", { "dependencies": { "is-number": "^7.0.0" } }, "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ=="], | ||
| 905 | |||
| 810 | "toidentifier": ["toidentifier@1.0.1", "", {}, "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA=="], | 906 | "toidentifier": ["toidentifier@1.0.1", "", {}, "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA=="], |
| 811 | 907 | ||
| 812 | "toml": ["toml@3.0.0", "", {}, "sha512-y/mWCZinnvxjTKYhJ+pYxwD0mRLVvOtdS2Awbgxln6iEnt4rk0yBxeSBHkGJcPucRiG0e55mwWp+g/05rsrd6w=="], | 908 | "toml": ["toml@3.0.0", "", {}, "sha512-y/mWCZinnvxjTKYhJ+pYxwD0mRLVvOtdS2Awbgxln6iEnt4rk0yBxeSBHkGJcPucRiG0e55mwWp+g/05rsrd6w=="], |
| @@ -833,6 +929,8 @@ · 20 unmodified lines | |||
| 833 | 929 | ||
| 834 | "vitest": ["vitest@3.2.4", "", { "dependencies": { "@types/chai": "^5.2.2", "@vitest/expect": "3.2.4", "@vitest/mocker": "3.2.4", "@vitest/pretty-format": "^3.2.4", "@vitest/runner": "3.2.4", "@vitest/snapshot": "3.2.4", "@vitest/spy": "3.2.4", "@vitest/utils": "3.2.4", "chai": "^5.2.0", "debug": "^4.4.1", "expect-type": "^1.2.1", "magic-string": "^0.30.17", "pathe": "^2.0.3", "picomatch": "^4.0.2", "std-env": "^3.9.0", "tinybench": "^2.9.0", "tinyexec": "^0.3.2", "tinyglobby": "^0.2.14", "tinypool": "^1.1.1", "tinyrainbow": "^2.0.0", "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0", "vite-node": "3.2.4", "why-is-node-running": "^2.3.0" }, "peerDependencies": { "@edge-runtime/vm": "*", "@types/debug": "^4.1.12", "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", "@vitest/browser": "3.2.4", "@vitest/ui": "3.2.4", "happy-dom": "*", "jsdom": "*" }, "optionalPeers": ["@edge-runtime/vm", "@types/debug", "@types/node", "@vitest/browser", "@vitest/ui", "happy-dom", "jsdom"], "bin": { "vitest": "vitest.mjs" } }, "sha512-LUCP5ev3GURDysTWiP47wRRUpLKMOfPh+yKTx3kVIEiu5KOMeqzpnYNsKyOoVrULivR8tLcks4+lga33Whn90A=="], | 930 | "vitest": ["vitest@3.2.4", "", { "dependencies": { "@types/chai": "^5.2.2", "@vitest/expect": "3.2.4", "@vitest/mocker": "3.2.4", "@vitest/pretty-format": "^3.2.4", "@vitest/runner": "3.2.4", "@vitest/snapshot": "3.2.4", "@vitest/spy": "3.2.4", "@vitest/utils": "3.2.4", "chai": "^5.2.0", "debug": "^4.4.1", "expect-type": "^1.2.1", "magic-string": "^0.30.17", "pathe": "^2.0.3", "picomatch": "^4.0.2", "std-env": "^3.9.0", "tinybench": "^2.9.0", "tinyexec": "^0.3.2", "tinyglobby": "^0.2.14", "tinypool": "^1.1.1", "tinyrainbow": "^2.0.0", "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0", "vite-node": "3.2.4", "why-is-node-running": "^2.3.0" }, "peerDependencies": { "@edge-runtime/vm": "*", "@types/debug": "^4.1.12", "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", "@vitest/browser": "3.2.4", "@vitest/ui": "3.2.4", "happy-dom": "*", "jsdom": "*" }, "optionalPeers": ["@edge-runtime/vm", "@types/debug", "@types/node", "@vitest/browser", "@vitest/ui", "happy-dom", "jsdom"], "bin": { "vitest": "vitest.mjs" } }, "sha512-LUCP5ev3GURDysTWiP47wRRUpLKMOfPh+yKTx3kVIEiu5KOMeqzpnYNsKyOoVrULivR8tLcks4+lga33Whn90A=="], |
| 835 | 931 | ||
| 932 | "walk-up-path": ["walk-up-path@4.0.0", "", {}, "sha512-3hu+tD8YzSLGuFYtPRb48vdhKMi0KQV5sn+uWr8+7dMEq/2G/dtLrdDinkLjqq5TIbIBjYJ4Ax/n3YiaW7QM8A=="], | ||
| 933 | |||
| 836 | "which": ["which@2.0.2", "", { "dependencies": { "isexe": "^2.0.0" }, "bin": { "node-which": "./bin/node-which" } }, "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA=="], | 934 | "which": ["which@2.0.2", "", { "dependencies": { "isexe": "^2.0.0" }, "bin": { "node-which": "./bin/node-which" } }, "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA=="], |
| 837 | 935 | ||
| 838 | "why-is-node-running": ["why-is-node-running@2.3.0", "", { "dependencies": { "siginfo": "^2.0.0", "stackback": "0.0.2" }, "bin": { "why-is-node-running": "cli.js" } }, "sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w=="], | 936 | "why-is-node-running": ["why-is-node-running@2.3.0", "", { "dependencies": { "siginfo": "^2.0.0", "stackback": "0.0.2" }, "bin": { "why-is-node-running": "cli.js" } }, "sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w=="], |
| @@ -851,6 +949,8 @@ · 12 unmodified lines | |||
| 851 | 949 | ||
| 852 | "@azure/msal-node/uuid": ["uuid@8.3.2", "", { "bin": { "uuid": "dist/bin/uuid" } }, "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg=="], | 950 | "@azure/msal-node/uuid": ["uuid@8.3.2", "", { "bin": { "uuid": "dist/bin/uuid" } }, "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg=="], |
| 853 | 951 | ||
| 952 | "micromatch/picomatch": ["picomatch@2.3.1", "", {}, "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="], | ||
| 953 | |||
| 854 | "tedious/iconv-lite": ["iconv-lite@0.6.3", "", { "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" } }, "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw=="], | 954 | "tedious/iconv-lite": ["iconv-lite@0.6.3", "", { "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" } }, "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw=="], |
| 855 | 955 | ||
| 856 | "vite/esbuild": ["esbuild@0.27.3", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.27.3", "@esbuild/android-arm": "0.27.3", "@esbuild/android-arm64": "0.27.3", "@esbuild/android-x64": "0.27.3", "@esbuild/darwin-arm64": "0.27.3", "@esbuild/darwin-x64": "0.27.3", "@esbuild/freebsd-arm64": "0.27.3", "@esbuild/freebsd-x64": "0.27.3", "@esbuild/linux-arm": "0.27.3", "@esbuild/linux-arm64": "0.27.3", "@esbuild/linux-ia32": "0.27.3", "@esbuild/linux-loong64": "0.27.3", "@esbuild/linux-mips64el": "0.27.3", "@esbuild/linux-ppc64": "0.27.3", "@esbuild/linux-riscv64": "0.27.3", "@esbuild/linux-s390x": "0.27.3", "@esbuild/linux-x64": "0.27.3", "@esbuild/netbsd-arm64": "0.27.3", "@esbuild/netbsd-x64": "0.27.3", "@esbuild/openbsd-arm64": "0.27.3", "@esbuild/openbsd-x64": "0.27.3", "@esbuild/openharmony-arm64": "0.27.3", "@esbuild/sunos-x64": "0.27.3", "@esbuild/win32-arm64": "0.27.3", "@esbuild/win32-ia32": "0.27.3", "@esbuild/win32-x64": "0.27.3" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-8VwMnyGCONIs6cWue2IdpHxHnAjzxnw2Zr7MkVxB2vjmQ2ivqGFb4LEG3SMnv0Gb2F/G/2yA8zUaiL1gywDCCg=="], | 956 | "vite/esbuild": ["esbuild@0.27.3", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.27.3", "@esbuild/android-arm": "0.27.3", "@esbuild/android-arm64": "0.27.3", "@esbuild/android-x64": "0.27.3", "@esbuild/darwin-arm64": "0.27.3", "@esbuild/darwin-x64": "0.27.3", "@esbuild/freebsd-arm64": "0.27.3", "@esbuild/freebsd-x64": "0.27.3", "@esbuild/linux-arm": "0.27.3", "@esbuild/linux-arm64": "0.27.3", "@esbuild/linux-ia32": "0.27.3", "@esbuild/linux-loong64": "0.27.3", "@esbuild/linux-mips64el": "0.27.3", "@esbuild/linux-ppc64": "0.27.3", "@esbuild/linux-riscv64": "0.27.3", "@esbuild/linux-s390x": "0.27.3", "@esbuild/linux-x64": "0.27.3", "@esbuild/netbsd-arm64": "0.27.3", "@esbuild/netbsd-x64": "0.27.3", "@esbuild/openbsd-arm64": "0.27.3", "@esbuild/openbsd-x64": "0.27.3", "@esbuild/openharmony-arm64": "0.27.3", "@esbuild/sunos-x64": "0.27.3", "@esbuild/win32-arm64": "0.27.3", "@esbuild/win32-ia32": "0.27.3", "@esbuild/win32-x64": "0.27.3" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-8VwMnyGCONIs6cWue2IdpHxHnAjzxnw2Zr7MkVxB2vjmQ2ivqGFb4LEG3SMnv0Gb2F/G/2yA8zUaiL1gywDCCg=="], |
| @@ -0,0 +1,38 @@ | |||
| 1 | { | ||
| 2 | "$schema": "https://unpkg.com/knip@5/schema.json", | ||
| 3 | "exclude": [ | ||
| 4 | "duplicates" | ||
| 5 | ], | ||
| 6 | "ignoreIssues": { | ||
| 7 | "packages/codemode-openapi/src/openapi-extractor-wasm/openapi_extractor.js": [ | ||
| 8 | "exports" | ||
| 9 | ] | ||
| 10 | }, | ||
| 11 | "workspaces": { | ||
| 12 | ".": { | ||
| 13 | "entry": [], | ||
| 14 | "project": [] | ||
| 15 | }, | ||
| 16 | "apps/*": { | ||
| 17 | "entry": [ | ||
| 18 | "src/index.ts", | ||
| 19 | "src/main.ts", | ||
| 20 | "src/server.ts", | ||
| 21 | "src/cli/main.ts" | ||
| 22 | ], | ||
| 23 | "project": [ | ||
| 24 | "src/**/*.{js,mjs,cjs,jsx,ts,tsx,mts,cts}" | ||
| 25 | ] | ||
| 26 | }, | ||
| 27 | "packages/*": { | ||
| 28 | "entry": [ | ||
| 29 | "src/index.ts", | ||
| 30 | "src/main.ts", | ||
| 31 | "src/playground.ts" | ||
| 32 | ], | ||
| 33 | "project": [ | ||
| 34 | "src/**/*.{js,mjs,cjs,jsx,ts,tsx,mts,cts}" | ||
| 35 | ] | ||
| 36 | } | ||
| 37 | } | ||
| 38 | } | ||
| @@ -19,9 +19,11 @@ · 18 unmodified lines | |||
| 19 | "zod": "^4.3.6" | 19 | "zod": "^4.3.6" |
| 20 | }, | 20 | }, |
| 21 | "scripts": { | 21 | "scripts": { |
| 22 | "typecheck": "bun run --filter='*' typecheck" | 22 | "typecheck": "bun run --filter='*' typecheck", |
| 23 | "knip": "knip" | ||
| 23 | }, | 24 | }, |
| 24 | "devDependencies": { | 25 | "devDependencies": { |
| 26 | "knip": "^5.85.0", | ||
| 25 | "typescript": "^5.9.3" | 27 | "typescript": "^5.9.3" |
| 26 | } | 28 | } |
| 27 | } | 29 | } |
| @@ -76,7 +76,7 @@ export const toMcpElicitationResponse = ( · 75 unmodified lines | |||
| 76 | } | 76 | } |
| 77 | : { action: response.action }; | 77 | : { action: response.action }; |
| 78 | 78 | ||
| 79 | export type McpClientWithElicitationHandler = { | 79 | type McpClientWithElicitationHandler = { |
| 80 | setRequestHandler: ( | 80 | setRequestHandler: ( |
| 81 | schema: typeof ElicitRequestSchema, | 81 | schema: typeof ElicitRequestSchema, |
| 82 | handler: (request: { params: unknown }) => Promise<unknown>, | 82 | handler: (request: { params: unknown }) => Promise<unknown>, |
| @@ -8,56 +8,6 @@ import { PoliciesApi } from "./policies/api"; · 7 unmodified lines | |||
| 8 | import { SourcesApi } from "./sources/api"; | 8 | import { SourcesApi } from "./sources/api"; |
| 9 | import { WorkspacesApi } from "./workspaces/api"; | 9 | import { WorkspacesApi } from "./workspaces/api"; |
| 10 | 10 | ||
| 11 | export { | ||
| 12 | ControlPlaneBadRequestError, | ||
| 13 | ControlPlaneForbiddenError, | ||
| 14 | ControlPlaneNotFoundError, | ||
| 15 | ControlPlaneStorageError, | ||
| 16 | ControlPlaneUnauthorizedError, | ||
| 17 | } from "./errors"; | ||
| 18 | |||
| 19 | export { | ||
| 20 | CreateExecutionPayloadSchema, | ||
| 21 | ResumeExecutionPayloadSchema, | ||
| 22 | type CreateExecutionPayload, | ||
| 23 | type ResumeExecutionPayload, | ||
| 24 | } from "./executions/api"; | ||
| 25 | |||
| 26 | export { | ||
| 27 | CreateOrganizationPayloadSchema, | ||
| 28 | UpdateOrganizationPayloadSchema, | ||
| 29 | type CreateOrganizationPayload, | ||
| 30 | type UpdateOrganizationPayload, | ||
| 31 | } from "./organizations/api"; | ||
| 32 | |||
| 33 | export { | ||
| 34 | CreateMembershipPayloadSchema, | ||
| 35 | UpdateMembershipPayloadSchema, | ||
| 36 | type CreateMembershipPayload, | ||
| 37 | type UpdateMembershipPayload, | ||
| 38 | } from "./memberships/api"; | ||
| 39 | |||
| 40 | export { | ||
| 41 | CreateWorkspacePayloadSchema, | ||
| 42 | UpdateWorkspacePayloadSchema, | ||
| 43 | type CreateWorkspacePayload, | ||
| 44 | type UpdateWorkspacePayload, | ||
| 45 | } from "./workspaces/api"; | ||
| 46 | |||
| 47 | export { | ||
| 48 | CreateSourcePayloadSchema, | ||
| 49 | UpdateSourcePayloadSchema, | ||
| 50 | type CreateSourcePayload, | ||
| 51 | type UpdateSourcePayload, | ||
| 52 | } from "./sources/api"; | ||
| 53 | |||
| 54 | export { | ||
| 55 | CreatePolicyPayloadSchema, | ||
| 56 | UpdatePolicyPayloadSchema, | ||
| 57 | type CreatePolicyPayload, | ||
| 58 | type UpdatePolicyPayload, | ||
| 59 | } from "./policies/api"; | ||
| 60 | |||
| 61 | export class ControlPlaneApi extends HttpApi.make("controlPlane") | 11 | export class ControlPlaneApi extends HttpApi.make("controlPlane") |
| 62 | .add(LocalApi) | 12 | .add(LocalApi) |
| 63 | .add(OrganizationsApi) | 13 | .add(OrganizationsApi) |
| @@ -16,7 +16,7 @@ import { · 15 unmodified lines | |||
| 16 | ControlPlaneForbiddenError, | 16 | ControlPlaneForbiddenError, |
| 17 | ControlPlaneUnauthorizedError, | 17 | ControlPlaneUnauthorizedError, |
| 18 | } from "../errors"; | 18 | } from "../errors"; |
| 19 | import { ControlPlaneService } from "../service"; | 19 | import { ControlPlaneExecutionsService } from "../service"; |
| 20 | 20 | ||
| 21 | const toForbiddenError = ( | 21 | const toForbiddenError = ( |
| 22 | operation: string, | 22 | operation: string, |
| @@ -59,7 +59,7 @@ export const ControlPlaneExecutionsLive = HttpApiBuilder.group( · 36 unmodified lines | |||
| 59 | handlers | 59 | handlers |
| 60 | .handle("create", ({ path, payload }) => | 60 | .handle("create", ({ path, payload }) => |
| 61 | Effect.gen(function* () { | 61 | Effect.gen(function* () { |
| 62 | const service = yield* ControlPlaneService; | 62 | const service = yield* ControlPlaneExecutionsService; |
| 63 | const actor = yield* resolveWorkspaceActor(path.workspaceId); | 63 | const actor = yield* resolveWorkspaceActor(path.workspaceId); |
| 64 | 64 | ||
| 65 | return yield* withPolicy(requireExecuteWorkspace(path.workspaceId))( | 65 | return yield* withPolicy(requireExecuteWorkspace(path.workspaceId))( |
| @@ -80,7 +80,7 @@ export const ControlPlaneExecutionsLive = HttpApiBuilder.group( · 14 unmodified lines | |||
| 80 | ) | 80 | ) |
| 81 | .handle("get", ({ path }) => | 81 | .handle("get", ({ path }) => |
| 82 | Effect.gen(function* () { | 82 | Effect.gen(function* () { |
| 83 | const service = yield* ControlPlaneService; | 83 | const service = yield* ControlPlaneExecutionsService; |
| 84 | const actor = yield* resolveWorkspaceActor(path.workspaceId); | 84 | const actor = yield* resolveWorkspaceActor(path.workspaceId); |
| 85 | 85 | ||
| 86 | return yield* withPolicy(requireExecuteWorkspace(path.workspaceId))( | 86 | return yield* withPolicy(requireExecuteWorkspace(path.workspaceId))( |
| @@ -100,7 +100,7 @@ export const ControlPlaneExecutionsLive = HttpApiBuilder.group( · 13 unmodified lines | |||
| 100 | ) | 100 | ) |
| 101 | .handle("resume", ({ path, payload }) => | 101 | .handle("resume", ({ path, payload }) => |
| 102 | Effect.gen(function* () { | 102 | Effect.gen(function* () { |
| 103 | const service = yield* ControlPlaneService; | 103 | const service = yield* ControlPlaneExecutionsService; |
| 104 | const actor = yield* resolveWorkspaceActor(path.workspaceId); | 104 | const actor = yield* resolveWorkspaceActor(path.workspaceId); |
| 105 | 105 | ||
| 106 | return yield* withPolicy(requireExecuteWorkspace(path.workspaceId))( | 106 | return yield* withPolicy(requireExecuteWorkspace(path.workspaceId))( |
| @@ -11,7 +11,7 @@ import { ControlPlaneLocalLive } from "./local/http"; · 10 unmodified lines | |||
| 11 | import { ControlPlaneMembershipsLive } from "./memberships/http"; | 11 | import { ControlPlaneMembershipsLive } from "./memberships/http"; |
| 12 | import { ControlPlaneOrganizationsLive } from "./organizations/http"; | 12 | import { ControlPlaneOrganizationsLive } from "./organizations/http"; |
| 13 | import { ControlPlanePoliciesLive } from "./policies/http"; | 13 | import { ControlPlanePoliciesLive } from "./policies/http"; |
| 14 | import { ControlPlaneService } from "./service"; | 14 | import { type ControlPlaneApiServiceContext } from "./service"; |
| 15 | import { ControlPlaneSourcesLive } from "./sources/http"; | 15 | import { ControlPlaneSourcesLive } from "./sources/http"; |
| 16 | import { ControlPlaneWorkspacesLive } from "./workspaces/http"; | 16 | import { ControlPlaneWorkspacesLive } from "./workspaces/http"; |
| 17 | 17 | ||
| @@ -26,7 +26,7 @@ export const ControlPlaneApiLive = HttpApiBuilder.api(ControlPlaneApi).pipe( · 8 unmodified lines | |||
| 26 | ); | 26 | ); |
| 27 | 27 | ||
| 28 | export const createControlPlaneApiLayer = <EService, EResolver>( | 28 | export const createControlPlaneApiLayer = <EService, EResolver>( |
| 29 | serviceLayer: Layer.Layer<ControlPlaneService, EService, never>, | 29 | serviceLayer: Layer.Layer<ControlPlaneApiServiceContext, EService, never>, |
| 30 | actorResolverLayer: Layer.Layer<ControlPlaneActorResolver, EResolver, never>, | 30 | actorResolverLayer: Layer.Layer<ControlPlaneActorResolver, EResolver, never>, |
| 31 | ) => | 31 | ) => |
| 32 | ControlPlaneApiLive.pipe( | 32 | ControlPlaneApiLive.pipe( |
| @@ -14,8 +14,21 @@ export { · 13 unmodified lines | |||
| 14 | } from "./errors"; | 14 | } from "./errors"; |
| 15 | 15 | ||
| 16 | export { | 16 | export { |
| 17 | ControlPlaneService, | 17 | ControlPlaneOrganizationsService, |
| 18 | type ControlPlaneServiceShape, | 18 | type ControlPlaneOrganizationsServiceShape, |
| 19 | ControlPlaneMembershipsService, | ||
| 20 | type ControlPlaneMembershipsServiceShape, | ||
| 21 | ControlPlaneWorkspacesService, | ||
| 22 | type ControlPlaneWorkspacesServiceShape, | ||
| 23 | ControlPlaneSourcesService, | ||
| 24 | type ControlPlaneSourcesServiceShape, | ||
| 25 | ControlPlaneExecutionsService, | ||
| 26 | type ControlPlaneExecutionsServiceShape, | ||
| 27 | ControlPlaneLocalService, | ||
| 28 | type ControlPlaneLocalServiceShape, | ||
| 29 | ControlPlanePoliciesService, | ||
| 30 | type ControlPlanePoliciesServiceShape, | ||
| 31 | type ControlPlaneApiServiceContext, | ||
| 19 | type CreateOrganizationInput, | 32 | type CreateOrganizationInput, |
| 20 | type UpdateOrganizationInput, | 33 | type UpdateOrganizationInput, |
| 21 | type RemoveOrganizationInput, | 34 | type RemoveOrganizationInput, |
| @@ -2,7 +2,7 @@ import { HttpApiBuilder, HttpServerRequest } from "@effect/platform"; · 1 unmodified line | |||
| 2 | import * as Effect from "effect/Effect"; | 2 | import * as Effect from "effect/Effect"; |
| 3 | 3 | ||
| 4 | import { ControlPlaneApi } from "../api"; | 4 | import { ControlPlaneApi } from "../api"; |
| 5 | import { ControlPlaneService } from "../service"; | 5 | import { ControlPlaneLocalService } from "../service"; |
| 6 | 6 | ||
| 7 | export const ControlPlaneLocalLive = HttpApiBuilder.group( | 7 | export const ControlPlaneLocalLive = HttpApiBuilder.group( |
| 8 | ControlPlaneApi, | 8 | ControlPlaneApi, |
| @@ -11,13 +11,13 @@ export const ControlPlaneLocalLive = HttpApiBuilder.group( · 2 unmodified lines | |||
| 11 | handlers | 11 | handlers |
| 12 | .handle("installation", () => | 12 | .handle("installation", () => |
| 13 | Effect.gen(function* () { | 13 | Effect.gen(function* () { |
| 14 | const service = yield* ControlPlaneService; | 14 | const service = yield* ControlPlaneLocalService; |
| 15 | return yield* service.getLocalInstallation(); | 15 | return yield* service.getLocalInstallation(); |
| 16 | }), | 16 | }), |
| 17 | ) | 17 | ) |
| 18 | .handle("oauthCallback", () => | 18 | .handle("oauthCallback", () => |
| 19 | Effect.gen(function* () { | 19 | Effect.gen(function* () { |
| 20 | const service = yield* ControlPlaneService; | 20 | const service = yield* ControlPlaneLocalService; |
| 21 | const request = yield* HttpServerRequest.HttpServerRequest; | 21 | const request = yield* HttpServerRequest.HttpServerRequest; |
| 22 | const requestUrl = new URL(request.url, "http://127.0.0.1"); | 22 | const requestUrl = new URL(request.url, "http://127.0.0.1"); |
| 23 | 23 | ||
| @@ -16,7 +16,7 @@ import { · 15 unmodified lines | |||
| 16 | ControlPlaneForbiddenError, | 16 | ControlPlaneForbiddenError, |
| 17 | ControlPlaneUnauthorizedError, | 17 | ControlPlaneUnauthorizedError, |
| 18 | } from "../errors"; | 18 | } from "../errors"; |
| 19 | import { ControlPlaneService } from "../service"; | 19 | import { ControlPlaneMembershipsService } from "../service"; |
| 20 | 20 | ||
| 21 | const toForbiddenError = ( | 21 | const toForbiddenError = ( |
| 22 | operation: string, | 22 | operation: string, |
| @@ -63,7 +63,7 @@ export const ControlPlaneMembershipsLive = HttpApiBuilder.group( · 40 unmodified lines | |||
| 63 | handlers | 63 | handlers |
| 64 | .handle("list", ({ path }) => | 64 | .handle("list", ({ path }) => |
| 65 | Effect.gen(function* () { | 65 | Effect.gen(function* () { |
| 66 | const service = yield* ControlPlaneService; | 66 | const service = yield* ControlPlaneMembershipsService; |
| 67 | const actor = yield* resolveActor; | 67 | const actor = yield* resolveActor; |
| 68 | 68 | ||
| 69 | return yield* withPolicy(requireReadMemberships(path.organizationId))( | 69 | return yield* withPolicy(requireReadMemberships(path.organizationId))( |
| @@ -80,7 +80,7 @@ export const ControlPlaneMembershipsLive = HttpApiBuilder.group( · 10 unmodified lines | |||
| 80 | ) | 80 | ) |
| 81 | .handle("create", ({ path, payload }) => | 81 | .handle("create", ({ path, payload }) => |
| 82 | Effect.gen(function* () { | 82 | Effect.gen(function* () { |
| 83 | const service = yield* ControlPlaneService; | 83 | const service = yield* ControlPlaneMembershipsService; |
| 84 | const actor = yield* resolveActor; | 84 | const actor = yield* resolveActor; |
| 85 | 85 | ||
| 86 | return yield* withPolicy(requireWriteMemberships(path.organizationId))( | 86 | return yield* withPolicy(requireWriteMemberships(path.organizationId))( |
| @@ -97,7 +97,7 @@ export const ControlPlaneMembershipsLive = HttpApiBuilder.group( · 10 unmodified lines | |||
| 97 | ) | 97 | ) |
| 98 | .handle("update", ({ path, payload }) => | 98 | .handle("update", ({ path, payload }) => |
| 99 | Effect.gen(function* () { | 99 | Effect.gen(function* () { |
| 100 | const service = yield* ControlPlaneService; | 100 | const service = yield* ControlPlaneMembershipsService; |
| 101 | const actor = yield* resolveActor; | 101 | const actor = yield* resolveActor; |
| 102 | 102 | ||
| 103 | return yield* withPolicy(requireWriteMemberships(path.organizationId))( | 103 | return yield* withPolicy(requireWriteMemberships(path.organizationId))( |
| @@ -118,7 +118,7 @@ export const ControlPlaneMembershipsLive = HttpApiBuilder.group( · 14 unmodified lines | |||
| 118 | ) | 118 | ) |
| 119 | .handle("remove", ({ path }) => | 119 | .handle("remove", ({ path }) => |
| 120 | Effect.gen(function* () { | 120 | Effect.gen(function* () { |
| 121 | const service = yield* ControlPlaneService; | 121 | const service = yield* ControlPlaneMembershipsService; |
| 122 | const actor = yield* resolveActor; | 122 | const actor = yield* resolveActor; |
| 123 | 123 | ||
| 124 | return yield* withPolicy(requireWriteMemberships(path.organizationId))( | 124 | return yield* withPolicy(requireWriteMemberships(path.organizationId))( |
| @@ -16,7 +16,7 @@ import { · 15 unmodified lines | |||
| 16 | ControlPlaneForbiddenError, | 16 | ControlPlaneForbiddenError, |
| 17 | ControlPlaneUnauthorizedError, | 17 | ControlPlaneUnauthorizedError, |
| 18 | } from "../errors"; | 18 | } from "../errors"; |
| 19 | import { ControlPlaneService } from "../service"; | 19 | import { ControlPlaneOrganizationsService } from "../service"; |
| 20 | 20 | ||
| 21 | const toForbiddenError = ( | 21 | const toForbiddenError = ( |
| 22 | operation: string, | 22 | operation: string, |
| @@ -61,7 +61,7 @@ export const ControlPlaneOrganizationsLive = HttpApiBuilder.group( · 38 unmodified lines | |||
| 61 | handlers | 61 | handlers |
| 62 | .handle("list", () => | 62 | .handle("list", () => |
| 63 | Effect.gen(function* () { | 63 | Effect.gen(function* () { |
| 64 | const service = yield* ControlPlaneService; | 64 | const service = yield* ControlPlaneOrganizationsService; |
| 65 | const actor = yield* resolveActor; | 65 | const actor = yield* resolveActor; |
| 66 | 66 | ||
| 67 | return yield* withPolicy(requireReadOrganizations)( | 67 | return yield* withPolicy(requireReadOrganizations)( |
| @@ -80,7 +80,7 @@ export const ControlPlaneOrganizationsLive = HttpApiBuilder.group( · 12 unmodified lines | |||
| 80 | ) | 80 | ) |
| 81 | .handle("create", ({ payload }) => | 81 | .handle("create", ({ payload }) => |
| 82 | Effect.gen(function* () { | 82 | Effect.gen(function* () { |
| 83 | const service = yield* ControlPlaneService; | 83 | const service = yield* ControlPlaneOrganizationsService; |
| 84 | const actor = yield* resolveActor; | 84 | const actor = yield* resolveActor; |
| 85 | 85 | ||
| 86 | return yield* service.createOrganization({ | 86 | return yield* service.createOrganization({ |
| @@ -95,7 +95,7 @@ export const ControlPlaneOrganizationsLive = HttpApiBuilder.group( · 8 unmodified lines | |||
| 95 | ) | 95 | ) |
| 96 | .handle("get", ({ path }) => | 96 | .handle("get", ({ path }) => |
| 97 | Effect.gen(function* () { | 97 | Effect.gen(function* () { |
| 98 | const service = yield* ControlPlaneService; | 98 | const service = yield* ControlPlaneOrganizationsService; |
| 99 | const actor = yield* resolveActor; | 99 | const actor = yield* resolveActor; |
| 100 | 100 | ||
| 101 | return yield* withPolicy(requireReadOrganizations)( | 101 | return yield* withPolicy(requireReadOrganizations)( |
| @@ -115,7 +115,7 @@ export const ControlPlaneOrganizationsLive = HttpApiBuilder.group( · 13 unmodified lines | |||
| 115 | ) | 115 | ) |
| 116 | .handle("update", ({ path, payload }) => | 116 | .handle("update", ({ path, payload }) => |
| 117 | Effect.gen(function* () { | 117 | Effect.gen(function* () { |
| 118 | const service = yield* ControlPlaneService; | 118 | const service = yield* ControlPlaneOrganizationsService; |
| 119 | const actor = yield* resolveActor; | 119 | const actor = yield* resolveActor; |
| 120 | 120 | ||
| 121 | return yield* withPolicy(requireManageOrganizations(path.organizationId))( | 121 | return yield* withPolicy(requireManageOrganizations(path.organizationId))( |
| @@ -135,7 +135,7 @@ export const ControlPlaneOrganizationsLive = HttpApiBuilder.group( · 13 unmodified lines | |||
| 135 | ) | 135 | ) |
| 136 | .handle("remove", ({ path }) => | 136 | .handle("remove", ({ path }) => |
| 137 | Effect.gen(function* () { | 137 | Effect.gen(function* () { |
| 138 | const service = yield* ControlPlaneService; | 138 | const service = yield* ControlPlaneOrganizationsService; |
| 139 | const actor = yield* resolveActor; | 139 | const actor = yield* resolveActor; |
| 140 | 140 | ||
| 141 | return yield* withPolicy(requireManageOrganizations(path.organizationId))( | 141 | return yield* withPolicy(requireManageOrganizations(path.organizationId))( |
| @@ -16,7 +16,7 @@ import { · 15 unmodified lines | |||
| 16 | ControlPlaneForbiddenError, | 16 | ControlPlaneForbiddenError, |
| 17 | ControlPlaneUnauthorizedError, | 17 | ControlPlaneUnauthorizedError, |
| 18 | } from "../errors"; | 18 | } from "../errors"; |
| 19 | import { ControlPlaneService } from "../service"; | 19 | import { ControlPlanePoliciesService } from "../service"; |
| 20 | 20 | ||
| 21 | const toForbiddenError = ( | 21 | const toForbiddenError = ( |
| 22 | operation: string, | 22 | operation: string, |
| @@ -65,7 +65,7 @@ export const ControlPlanePoliciesLive = HttpApiBuilder.group( · 42 unmodified lines | |||
| 65 | handlers | 65 | handlers |
| 66 | .handle("list", ({ path }) => | 66 | .handle("list", ({ path }) => |
| 67 | Effect.gen(function* () { | 67 | Effect.gen(function* () { |
| 68 | const service = yield* ControlPlaneService; | 68 | const service = yield* ControlPlanePoliciesService; |
| 69 | const actor = yield* resolveWorkspaceActor(path.workspaceId); | 69 | const actor = yield* resolveWorkspaceActor(path.workspaceId); |
| 70 | 70 | ||
| 71 | return yield* withPolicy(requireReadPolicies(path.workspaceId))( | 71 | return yield* withPolicy(requireReadPolicies(path.workspaceId))( |
| @@ -82,7 +82,7 @@ export const ControlPlanePoliciesLive = HttpApiBuilder.group( · 10 unmodified lines | |||
| 82 | ) | 82 | ) |
| 83 | .handle("create", ({ path, payload }) => | 83 | .handle("create", ({ path, payload }) => |
| 84 | Effect.gen(function* () { | 84 | Effect.gen(function* () { |
| 85 | const service = yield* ControlPlaneService; | 85 | const service = yield* ControlPlanePoliciesService; |
| 86 | const actor = yield* resolveWorkspaceActor(path.workspaceId); | 86 | const actor = yield* resolveWorkspaceActor(path.workspaceId); |
| 87 | 87 | ||
| 88 | return yield* withPolicy(requireWritePolicies(path.workspaceId))( | 88 | return yield* withPolicy(requireWritePolicies(path.workspaceId))( |
| @@ -99,7 +99,7 @@ export const ControlPlanePoliciesLive = HttpApiBuilder.group( · 10 unmodified lines | |||
| 99 | ) | 99 | ) |
| 100 | .handle("get", ({ path }) => | 100 | .handle("get", ({ path }) => |
| 101 | Effect.gen(function* () { | 101 | Effect.gen(function* () { |
| 102 | const service = yield* ControlPlaneService; | 102 | const service = yield* ControlPlanePoliciesService; |
| 103 | const actor = yield* resolveWorkspaceActor(path.workspaceId); | 103 | const actor = yield* resolveWorkspaceActor(path.workspaceId); |
| 104 | 104 | ||
| 105 | return yield* withPolicy(requireReadPolicies(path.workspaceId))( | 105 | return yield* withPolicy(requireReadPolicies(path.workspaceId))( |
| @@ -119,7 +119,7 @@ export const ControlPlanePoliciesLive = HttpApiBuilder.group( · 13 unmodified lines | |||
| 119 | ) | 119 | ) |
| 120 | .handle("update", ({ path, payload }) => | 120 | .handle("update", ({ path, payload }) => |
| 121 | Effect.gen(function* () { | 121 | Effect.gen(function* () { |
| 122 | const service = yield* ControlPlaneService; | 122 | const service = yield* ControlPlanePoliciesService; |
| 123 | const actor = yield* resolveWorkspaceActor(path.workspaceId); | 123 | const actor = yield* resolveWorkspaceActor(path.workspaceId); |
| 124 | 124 | ||
| 125 | return yield* withPolicy(requireWritePolicies(path.workspaceId))( | 125 | return yield* withPolicy(requireWritePolicies(path.workspaceId))( |
| @@ -140,7 +140,7 @@ export const ControlPlanePoliciesLive = HttpApiBuilder.group( · 14 unmodified lines | |||
| 140 | ) | 140 | ) |
| 141 | .handle("remove", ({ path }) => | 141 | .handle("remove", ({ path }) => |
| 142 | Effect.gen(function* () { | 142 | Effect.gen(function* () { |
| 143 | const service = yield* ControlPlaneService; | 143 | const service = yield* ControlPlanePoliciesService; |
| 144 | const actor = yield* resolveWorkspaceActor(path.workspaceId); | 144 | const actor = yield* resolveWorkspaceActor(path.workspaceId); |
| 145 | 145 | ||
| 146 | return yield* withPolicy(requireWritePolicies(path.workspaceId))( | 146 | return yield* withPolicy(requireWritePolicies(path.workspaceId))( |
| @@ -158,7 +158,7 @@ export type RemovePolicyInput = { · 157 unmodified lines | |||
| 158 | policyId: PolicyId; | 158 | policyId: PolicyId; |
| 159 | }; | 159 | }; |
| 160 | 160 | ||
| 161 | export type ControlPlaneServiceShape = { | 161 | export type ControlPlaneOrganizationsServiceShape = { |
| 162 | listOrganizations: (input: { | 162 | listOrganizations: (input: { |
| 163 | accountId: AccountId; | 163 | accountId: AccountId; |
| 164 | }) => Effect.Effect<ReadonlyArray<Organization>, ControlPlaneStorageError>; | 164 | }) => Effect.Effect<ReadonlyArray<Organization>, ControlPlaneStorageError>; |
| @@ -178,7 +178,9 @@ export type ControlPlaneServiceShape = { · 13 unmodified lines | |||
| 178 | removeOrganization: ( | 178 | removeOrganization: ( |
| 179 | input: RemoveOrganizationInput, | 179 | input: RemoveOrganizationInput, |
| 180 | ) => Effect.Effect<{ removed: boolean }, ControlPlaneStorageError>; | 180 | ) => Effect.Effect<{ removed: boolean }, ControlPlaneStorageError>; |
| 181 | }; | ||
| 181 | 182 | ||
| 183 | export type ControlPlaneMembershipsServiceShape = { | ||
| 182 | listMemberships: ( | 184 | listMemberships: ( |
| 183 | organizationId: OrganizationId, | 185 | organizationId: OrganizationId, |
| 184 | ) => Effect.Effect< | 186 | ) => Effect.Effect< |
| @@ -200,7 +202,9 @@ export type ControlPlaneServiceShape = { · 15 unmodified lines | |||
| 200 | removeMembership: ( | 202 | removeMembership: ( |
| 201 | input: RemoveMembershipInput, | 203 | input: RemoveMembershipInput, |
| 202 | ) => Effect.Effect<{ removed: boolean }, ControlPlaneNotFoundError | ControlPlaneStorageError>; | 204 | ) => Effect.Effect<{ removed: boolean }, ControlPlaneNotFoundError | ControlPlaneStorageError>; |
| 205 | }; | ||
| 203 | 206 | ||
| 207 | export type ControlPlaneWorkspacesServiceShape = { | ||
| 204 | listWorkspaces: ( | 208 | listWorkspaces: ( |
| 205 | organizationId: OrganizationId, | 209 | organizationId: OrganizationId, |
| 206 | ) => Effect.Effect<ReadonlyArray<Workspace>, ControlPlaneNotFoundError | ControlPlaneStorageError>; | 210 | ) => Effect.Effect<ReadonlyArray<Workspace>, ControlPlaneNotFoundError | ControlPlaneStorageError>; |
| @@ -222,7 +226,9 @@ export type ControlPlaneServiceShape = { · 15 unmodified lines | |||
| 222 | removeWorkspace: ( | 226 | removeWorkspace: ( |
| 223 | input: RemoveWorkspaceInput, | 227 | input: RemoveWorkspaceInput, |
| 224 | ) => Effect.Effect<{ removed: boolean }, ControlPlaneStorageError>; | 228 | ) => Effect.Effect<{ removed: boolean }, ControlPlaneStorageError>; |
| 229 | }; | ||
| 225 | 230 | ||
| 231 | export type ControlPlaneSourcesServiceShape = { | ||
| 226 | listSources: ( | 232 | listSources: ( |
| 227 | workspaceId: WorkspaceId, | 233 | workspaceId: WorkspaceId, |
| 228 | ) => Effect.Effect<ReadonlyArray<Source>, ControlPlaneStorageError>; | 234 | ) => Effect.Effect<ReadonlyArray<Source>, ControlPlaneStorageError>; |
| @@ -241,7 +247,9 @@ export type ControlPlaneServiceShape = { · 12 unmodified lines | |||
| 241 | removeSource: ( | 247 | removeSource: ( |
| 242 | input: RemoveSourceInput, | 248 | input: RemoveSourceInput, |
| 243 | ) => Effect.Effect<{ removed: boolean }, ControlPlaneStorageError>; | 249 | ) => Effect.Effect<{ removed: boolean }, ControlPlaneStorageError>; |
| 250 | }; | ||
| 244 | 251 | ||
| 252 | export type ControlPlaneExecutionsServiceShape = { | ||
| 245 | createExecution: ( | 253 | createExecution: ( |
| 246 | input: CreateExecutionInput, | 254 | input: CreateExecutionInput, |
| 247 | ) => Effect.Effect< | 255 | ) => Effect.Effect< |
| @@ -257,7 +265,9 @@ export type ControlPlaneServiceShape = { · 9 unmodified lines | |||
| 257 | ExecutionEnvelope, | 265 | ExecutionEnvelope, |
| 258 | ControlPlaneBadRequestError | ControlPlaneNotFoundError | ControlPlaneStorageError | 266 | ControlPlaneBadRequestError | ControlPlaneNotFoundError | ControlPlaneStorageError |
| 259 | >; | 267 | >; |
| 268 | }; | ||
| 260 | 269 | ||
| 270 | export type ControlPlaneLocalServiceShape = { | ||
| 261 | getLocalInstallation: () => Effect.Effect< | 271 | getLocalInstallation: () => Effect.Effect< |
| 262 | LocalInstallation, | 272 | LocalInstallation, |
| 263 | ControlPlaneNotFoundError | ControlPlaneStorageError | 273 | ControlPlaneNotFoundError | ControlPlaneStorageError |
| @@ -265,7 +275,9 @@ export type ControlPlaneServiceShape = { · 1 unmodified line | |||
| 265 | completeSourceAuthCallback: ( | 275 | completeSourceAuthCallback: ( |
| 266 | input: CompleteSourceAuthCallbackInput, | 276 | input: CompleteSourceAuthCallbackInput, |
| 267 | ) => Effect.Effect<Source, ControlPlaneBadRequestError | ControlPlaneNotFoundError | ControlPlaneStorageError>; | 277 | ) => Effect.Effect<Source, ControlPlaneBadRequestError | ControlPlaneNotFoundError | ControlPlaneStorageError>; |
| 278 | }; | ||
| 268 | 279 | ||
| 280 | export type ControlPlanePoliciesServiceShape = { | ||
| 269 | listPolicies: ( | 281 | listPolicies: ( |
| 270 | workspaceId: WorkspaceId, | 282 | workspaceId: WorkspaceId, |
| 271 | ) => Effect.Effect<ReadonlyArray<Policy>, ControlPlaneStorageError>; | 283 | ) => Effect.Effect<ReadonlyArray<Policy>, ControlPlaneStorageError>; |
| @@ -286,6 +298,46 @@ export type ControlPlaneServiceShape = { · 14 unmodified lines | |||
| 286 | ) => Effect.Effect<{ removed: boolean }, ControlPlaneStorageError>; | 298 | ) => Effect.Effect<{ removed: boolean }, ControlPlaneStorageError>; |
| 287 | }; | 299 | }; |
| 288 | 300 | ||
| 289 | export class ControlPlaneService extends Context.Tag( | 301 | export class ControlPlaneOrganizationsService extends Context.Tag( |
| 290 | "#api/ControlPlaneService", | 302 | "#api/ControlPlaneOrganizationsService", |
| 291 | )<ControlPlaneService, ControlPlaneServiceShape>() {} | 303 | )<ControlPlaneOrganizationsService, ControlPlaneOrganizationsServiceShape>() { |
| 304 | } | ||
| 305 | |||
| 306 | export class ControlPlaneMembershipsService extends Context.Tag( | ||
| 307 | "#api/ControlPlaneMembershipsService", | ||
| 308 | )<ControlPlaneMembershipsService, ControlPlaneMembershipsServiceShape>() { | ||
| 309 | } | ||
| 310 | |||
| 311 | export class ControlPlaneWorkspacesService extends Context.Tag( | ||
| 312 | "#api/ControlPlaneWorkspacesService", | ||
| 313 | )<ControlPlaneWorkspacesService, ControlPlaneWorkspacesServiceShape>() { | ||
| 314 | } | ||
| 315 | |||
| 316 | export class ControlPlaneSourcesService extends Context.Tag( | ||
| 317 | "#api/ControlPlaneSourcesService", | ||
| 318 | )<ControlPlaneSourcesService, ControlPlaneSourcesServiceShape>() { | ||
| 319 | } | ||
| 320 | |||
| 321 | export class ControlPlaneExecutionsService extends Context.Tag( | ||
| 322 | "#api/ControlPlaneExecutionsService", | ||
| 323 | )<ControlPlaneExecutionsService, ControlPlaneExecutionsServiceShape>() { | ||
| 324 | } | ||
| 325 | |||
| 326 | export class ControlPlaneLocalService extends Context.Tag( | ||
| 327 | "#api/ControlPlaneLocalService", | ||
| 328 | )<ControlPlaneLocalService, ControlPlaneLocalServiceShape>() { | ||
| 329 | } | ||
| 330 | |||
| 331 | export class ControlPlanePoliciesService extends Context.Tag( | ||
| 332 | "#api/ControlPlanePoliciesService", | ||
| 333 | )<ControlPlanePoliciesService, ControlPlanePoliciesServiceShape>() { | ||
| 334 | } | ||
| 335 | |||
| 336 | export type ControlPlaneApiServiceContext = | ||
| 337 | | ControlPlaneOrganizationsService | ||
| 338 | | ControlPlaneMembershipsService | ||
| 339 | | ControlPlaneWorkspacesService | ||
| 340 | | ControlPlaneSourcesService | ||
| 341 | | ControlPlaneExecutionsService | ||
| 342 | | ControlPlaneLocalService | ||
| 343 | | ControlPlanePoliciesService; | ||
| @@ -16,7 +16,7 @@ import { · 15 unmodified lines | |||
| 16 | ControlPlaneForbiddenError, | 16 | ControlPlaneForbiddenError, |
| 17 | ControlPlaneUnauthorizedError, | 17 | ControlPlaneUnauthorizedError, |
| 18 | } from "../errors"; | 18 | } from "../errors"; |
| 19 | import { ControlPlaneService } from "../service"; | 19 | import { ControlPlaneSourcesService } from "../service"; |
| 20 | 20 | ||
| 21 | const toForbiddenError = ( | 21 | const toForbiddenError = ( |
| 22 | operation: string, | 22 | operation: string, |
| @@ -65,7 +65,7 @@ export const ControlPlaneSourcesLive = HttpApiBuilder.group( · 42 unmodified lines | |||
| 65 | handlers | 65 | handlers |
| 66 | .handle("list", ({ path }) => | 66 | .handle("list", ({ path }) => |
| 67 | Effect.gen(function* () { | 67 | Effect.gen(function* () { |
| 68 | const service = yield* ControlPlaneService; | 68 | const service = yield* ControlPlaneSourcesService; |
| 69 | const actor = yield* resolveWorkspaceActor(path.workspaceId); | 69 | const actor = yield* resolveWorkspaceActor(path.workspaceId); |
| 70 | 70 | ||
| 71 | return yield* withPolicy(requireReadSources(path.workspaceId))( | 71 | return yield* withPolicy(requireReadSources(path.workspaceId))( |
| @@ -82,7 +82,7 @@ export const ControlPlaneSourcesLive = HttpApiBuilder.group( · 10 unmodified lines | |||
| 82 | ) | 82 | ) |
| 83 | .handle("create", ({ path, payload }) => | 83 | .handle("create", ({ path, payload }) => |
| 84 | Effect.gen(function* () { | 84 | Effect.gen(function* () { |
| 85 | const service = yield* ControlPlaneService; | 85 | const service = yield* ControlPlaneSourcesService; |
| 86 | const actor = yield* resolveWorkspaceActor(path.workspaceId); | 86 | const actor = yield* resolveWorkspaceActor(path.workspaceId); |
| 87 | 87 | ||
| 88 | return yield* withPolicy(requireWriteSources(path.workspaceId))( | 88 | return yield* withPolicy(requireWriteSources(path.workspaceId))( |
| @@ -99,7 +99,7 @@ export const ControlPlaneSourcesLive = HttpApiBuilder.group( · 10 unmodified lines | |||
| 99 | ) | 99 | ) |
| 100 | .handle("get", ({ path }) => | 100 | .handle("get", ({ path }) => |
| 101 | Effect.gen(function* () { | 101 | Effect.gen(function* () { |
| 102 | const service = yield* ControlPlaneService; | 102 | const service = yield* ControlPlaneSourcesService; |
| 103 | const actor = yield* resolveWorkspaceActor(path.workspaceId); | 103 | const actor = yield* resolveWorkspaceActor(path.workspaceId); |
| 104 | 104 | ||
| 105 | return yield* withPolicy(requireReadSources(path.workspaceId))( | 105 | return yield* withPolicy(requireReadSources(path.workspaceId))( |
| @@ -119,7 +119,7 @@ export const ControlPlaneSourcesLive = HttpApiBuilder.group( · 13 unmodified lines | |||
| 119 | ) | 119 | ) |
| 120 | .handle("update", ({ path, payload }) => | 120 | .handle("update", ({ path, payload }) => |
| 121 | Effect.gen(function* () { | 121 | Effect.gen(function* () { |
| 122 | const service = yield* ControlPlaneService; | 122 | const service = yield* ControlPlaneSourcesService; |
| 123 | const actor = yield* resolveWorkspaceActor(path.workspaceId); | 123 | const actor = yield* resolveWorkspaceActor(path.workspaceId); |
| 124 | 124 | ||
| 125 | return yield* withPolicy(requireWriteSources(path.workspaceId))( | 125 | return yield* withPolicy(requireWriteSources(path.workspaceId))( |
| @@ -140,7 +140,7 @@ export const ControlPlaneSourcesLive = HttpApiBuilder.group( · 14 unmodified lines | |||
| 140 | ) | 140 | ) |
| 141 | .handle("remove", ({ path }) => | 141 | .handle("remove", ({ path }) => |
| 142 | Effect.gen(function* () { | 142 | Effect.gen(function* () { |
| 143 | const service = yield* ControlPlaneService; | 143 | const service = yield* ControlPlaneSourcesService; |
| 144 | const actor = yield* resolveWorkspaceActor(path.workspaceId); | 144 | const actor = yield* resolveWorkspaceActor(path.workspaceId); |
| 145 | 145 | ||
| 146 | return yield* withPolicy(requireWriteSources(path.workspaceId))( | 146 | return yield* withPolicy(requireWriteSources(path.workspaceId))( |
| @@ -16,7 +16,7 @@ import { · 15 unmodified lines | |||
| 16 | ControlPlaneForbiddenError, | 16 | ControlPlaneForbiddenError, |
| 17 | ControlPlaneUnauthorizedError, | 17 | ControlPlaneUnauthorizedError, |
| 18 | } from "../errors"; | 18 | } from "../errors"; |
| 19 | import { ControlPlaneService } from "../service"; | 19 | import { ControlPlaneWorkspacesService } from "../service"; |
| 20 | 20 | ||
| 21 | const toForbiddenError = ( | 21 | const toForbiddenError = ( |
| 22 | operation: string, | 22 | operation: string, |
| @@ -83,7 +83,7 @@ export const ControlPlaneWorkspacesLive = HttpApiBuilder.group( · 60 unmodified lines | |||
| 83 | handlers | 83 | handlers |
| 84 | .handle("list", ({ path }) => | 84 | .handle("list", ({ path }) => |
| 85 | Effect.gen(function* () { | 85 | Effect.gen(function* () { |
| 86 | const service = yield* ControlPlaneService; | 86 | const service = yield* ControlPlaneWorkspacesService; |
| 87 | const actor = yield* resolveActor; | 87 | const actor = yield* resolveActor; |
| 88 | 88 | ||
| 89 | return yield* withPolicy( | 89 | return yield* withPolicy( |
| @@ -102,7 +102,7 @@ export const ControlPlaneWorkspacesLive = HttpApiBuilder.group( · 12 unmodified lines | |||
| 102 | ) | 102 | ) |
| 103 | .handle("create", ({ path, payload }) => | 103 | .handle("create", ({ path, payload }) => |
| 104 | Effect.gen(function* () { | 104 | Effect.gen(function* () { |
| 105 | const service = yield* ControlPlaneService; | 105 | const service = yield* ControlPlaneWorkspacesService; |
| 106 | const actor = yield* resolveActor; | 106 | const actor = yield* resolveActor; |
| 107 | 107 | ||
| 108 | return yield* withPolicy( | 108 | return yield* withPolicy( |
| @@ -125,7 +125,7 @@ export const ControlPlaneWorkspacesLive = HttpApiBuilder.group( · 16 unmodified lines | |||
| 125 | ) | 125 | ) |
| 126 | .handle("get", ({ path }) => | 126 | .handle("get", ({ path }) => |
| 127 | Effect.gen(function* () { | 127 | Effect.gen(function* () { |
| 128 | const service = yield* ControlPlaneService; | 128 | const service = yield* ControlPlaneWorkspacesService; |
| 129 | const actor = yield* resolveWorkspaceActor(path.workspaceId); | 129 | const actor = yield* resolveWorkspaceActor(path.workspaceId); |
| 130 | 130 | ||
| 131 | return yield* withPolicy(requireReadWorkspace(path.workspaceId))( | 131 | return yield* withPolicy(requireReadWorkspace(path.workspaceId))( |
| @@ -142,7 +142,7 @@ export const ControlPlaneWorkspacesLive = HttpApiBuilder.group( · 10 unmodified lines | |||
| 142 | ) | 142 | ) |
| 143 | .handle("update", ({ path, payload }) => | 143 | .handle("update", ({ path, payload }) => |
| 144 | Effect.gen(function* () { | 144 | Effect.gen(function* () { |
| 145 | const service = yield* ControlPlaneService; | 145 | const service = yield* ControlPlaneWorkspacesService; |
| 146 | const actor = yield* resolveWorkspaceActor(path.workspaceId); | 146 | const actor = yield* resolveWorkspaceActor(path.workspaceId); |
| 147 | 147 | ||
| 148 | return yield* withPolicy(requireManageWorkspace(path.workspaceId))( | 148 | return yield* withPolicy(requireManageWorkspace(path.workspaceId))( |
| @@ -159,7 +159,7 @@ export const ControlPlaneWorkspacesLive = HttpApiBuilder.group( · 10 unmodified lines | |||
| 159 | ) | 159 | ) |
| 160 | .handle("remove", ({ path }) => | 160 | .handle("remove", ({ path }) => |
| 161 | Effect.gen(function* () { | 161 | Effect.gen(function* () { |
| 162 | const service = yield* ControlPlaneService; | 162 | const service = yield* ControlPlaneWorkspacesService; |
| 163 | const actor = yield* resolveWorkspaceActor(path.workspaceId); | 163 | const actor = yield* resolveWorkspaceActor(path.workspaceId); |
| 164 | 164 | ||
| 165 | return yield* withPolicy(requireManageWorkspace(path.workspaceId))( | 165 | return yield* withPolicy(requireManageWorkspace(path.workspaceId))( |
| @@ -1,7 +1,7 @@ | |||
| 1 | import { describe, expect, it } from "@effect/vitest"; | 1 | import { describe, expect, it } from "@effect/vitest"; |
| 2 | import * as Effect from "effect/Effect"; | 2 | import * as Effect from "effect/Effect"; |
| 3 | 3 | ||
| 4 | import { WorkspaceIdSchema, type AccountId } from "#schema"; | 4 | import type { AccountId } from "#schema"; |
| 5 | 5 | ||
| 6 | import { createSqlControlPlaneRuntime } from "./index"; | 6 | import { createSqlControlPlaneRuntime } from "./index"; |
| 7 | import { withControlPlaneClient } from "./test-http-client"; | 7 | import { withControlPlaneClient } from "./test-http-client"; |
| @@ -314,11 +314,6 @@ describe("control-plane-runtime", () => { · 306 unmodified lines | |||
| 314 | ); | 314 | ); |
| 315 | expect(deleteOrg.removed).toBe(true); | 315 | expect(deleteOrg.removed).toBe(true); |
| 316 | 316 | ||
| 317 | const deletedWorkspaceLookup = yield* Effect.either( | ||
| 318 | runtime.service.getWorkspace(WorkspaceIdSchema.make(workspace.id)), | ||
| 319 | ); | ||
| 320 | expect(deletedWorkspaceLookup._tag).toBe("Left"); | ||
| 321 | |||
| 322 | const listStaleWorkspacesError = yield* expectLeft( | 317 | const listStaleWorkspacesError = yield* expectLeft( |
| 323 | withControlPlaneClient( | 318 | withControlPlaneClient( |
| 324 | { runtime, accountId: "acc_del" }, | 319 | { runtime, accountId: "acc_del" }, |
| @@ -1,4 +1,4 @@ | |||
| 1 | import type { ControlPlaneServiceShape } from "#api"; | 1 | import type { ControlPlaneExecutionsServiceShape } from "#api"; |
| 2 | import { | 2 | import { |
| 3 | ControlPlaneBadRequestError, | 3 | ControlPlaneBadRequestError, |
| 4 | ControlPlaneNotFoundError, | 4 | ControlPlaneNotFoundError, |
| @@ -24,7 +24,6 @@ import { · 19 unmodified lines | |||
| 24 | ResumeUnsupportedError, | 24 | ResumeUnsupportedError, |
| 25 | } from "./execution-state"; | 25 | } from "./execution-state"; |
| 26 | import { | 26 | import { |
| 27 | createLiveExecutionManager, | ||
| 28 | type LiveExecutionManager, | 27 | type LiveExecutionManager, |
| 29 | } from "./live-execution"; | 28 | } from "./live-execution"; |
| 30 | 29 | ||
| @@ -107,13 +106,6 @@ const ElicitationResponseSchema = Schema.Struct({ · 76 unmodified lines | |||
| 107 | 106 | ||
| 108 | const decodeElicitationResponse = Schema.decodeUnknown(ElicitationResponseSchema); | 107 | const decodeElicitationResponse = Schema.decodeUnknown(ElicitationResponseSchema); |
| 109 | 108 | ||
| 110 | const defaultExecutionResolver: ResolveExecutionEnvironment = () => | ||
| 111 | Effect.fail( | ||
| 112 | new Error("Execution environment resolver is not configured"), | ||
| 113 | ); | ||
| 114 | |||
| 115 | const defaultLiveExecutionManager = createLiveExecutionManager(); | ||
| 116 | |||
| 117 | const withExecutionInvocationContext = (input: { | 109 | const withExecutionInvocationContext = (input: { |
| 118 | executionId: Execution["id"]; | 110 | executionId: Execution["id"]; |
| 119 | toolInvoker: ToolInvoker; | 111 | toolInvoker: ToolInvoker; |
| @@ -190,15 +182,10 @@ const fetchExecutionEnvelope = ( · 70 unmodified lines | |||
| 190 | 182 | ||
| 191 | export const createRuntimeExecutionsService = ( | 183 | export const createRuntimeExecutionsService = ( |
| 192 | rows: SqlControlPlaneRows, | 184 | rows: SqlControlPlaneRows, |
| 193 | executionResolver: ResolveExecutionEnvironment = defaultExecutionResolver, | 185 | executionResolver: ResolveExecutionEnvironment, |
| 194 | liveExecutionManager: LiveExecutionManager = defaultLiveExecutionManager, | 186 | liveExecutionManager: LiveExecutionManager, |
| 195 | ): Pick< | 187 | ): ControlPlaneExecutionsServiceShape => { |
| 196 | ControlPlaneServiceShape, | 188 | const createExecution: ControlPlaneExecutionsServiceShape["createExecution"] = ( |
| 197 | | "createExecution" | ||
| 198 | | "getExecution" | ||
| 199 | | "resumeExecution" | ||
| 200 | > => { | ||
| 201 | const createExecution: ControlPlaneServiceShape["createExecution"] = ( | ||
| 202 | { workspaceId, payload, createdByAccountId }, | 189 | { workspaceId, payload, createdByAccountId }, |
| 203 | ) => | 190 | ) => |
| 204 | Effect.gen(function* () { | 191 | Effect.gen(function* () { |
| @@ -5,10 +5,23 @@ import * as Layer from "effect/Layer"; · 4 unmodified lines | |||
| 5 | import * as Scope from "effect/Scope"; | 5 | import * as Scope from "effect/Scope"; |
| 6 | 6 | ||
| 7 | import { | 7 | import { |
| 8 | type ControlPlaneApiServiceContext, | ||
| 8 | ControlPlaneActorResolver, | 9 | ControlPlaneActorResolver, |
| 9 | type ControlPlaneActorResolverShape, | 10 | type ControlPlaneActorResolverShape, |
| 10 | ControlPlaneService, | 11 | ControlPlaneExecutionsService, |
| 11 | type ControlPlaneServiceShape, | 12 | type ControlPlaneExecutionsServiceShape, |
| 13 | ControlPlaneLocalService, | ||
| 14 | type ControlPlaneLocalServiceShape, | ||
| 15 | ControlPlaneMembershipsService, | ||
| 16 | type ControlPlaneMembershipsServiceShape, | ||
| 17 | ControlPlaneOrganizationsService, | ||
| 18 | type ControlPlaneOrganizationsServiceShape, | ||
| 19 | ControlPlanePoliciesService, | ||
| 20 | type ControlPlanePoliciesServiceShape, | ||
| 21 | ControlPlaneSourcesService, | ||
| 22 | type ControlPlaneSourcesServiceShape, | ||
| 23 | ControlPlaneWorkspacesService, | ||
| 24 | type ControlPlaneWorkspacesServiceShape, | ||
| 12 | } from "#api"; | 25 | } from "#api"; |
| 13 | import { | 26 | import { |
| 14 | SqlControlPlanePersistenceLive, | 27 | SqlControlPlanePersistenceLive, |
| @@ -39,8 +52,7 @@ import { · 24 unmodified lines | |||
| 39 | type ResolveSecretMaterial, | 52 | type ResolveSecretMaterial, |
| 40 | } from "./source-auth-service"; | 53 | } from "./source-auth-service"; |
| 41 | import { | 54 | import { |
| 42 | RuntimeControlPlaneServiceLive, | 55 | RuntimeControlPlaneApiServicesLive, |
| 43 | createRuntimeControlPlaneService, | ||
| 44 | } from "./services"; | 56 | } from "./services"; |
| 45 | import { | 57 | import { |
| 46 | RuntimeExecutionResolverLive, | 58 | RuntimeExecutionResolverLive, |
| @@ -49,7 +61,6 @@ import { · 2 unmodified lines | |||
| 49 | export { | 61 | export { |
| 50 | ControlPlaneAuthHeaders, | 62 | ControlPlaneAuthHeaders, |
| 51 | createHeaderActorResolver, | 63 | createHeaderActorResolver, |
| 52 | createRuntimeControlPlaneService, | ||
| 53 | }; | 64 | }; |
| 54 | 65 | ||
| 55 | export * from "./execution-state"; | 66 | export * from "./execution-state"; |
| @@ -85,6 +96,25 @@ const toLocalInstallationBootstrapError = ( · 29 unmodified lines | |||
| 85 | const closeScope = (scope: Scope.CloseableScope) => | 96 | const closeScope = (scope: Scope.CloseableScope) => |
| 86 | Scope.close(scope, Exit.void).pipe(Effect.orDie); | 97 | Scope.close(scope, Exit.void).pipe(Effect.orDie); |
| 87 | 98 | ||
| 99 | const createRuntimeServicesLayer = (input: { | ||
| 100 | organizationsService: ControlPlaneOrganizationsServiceShape; | ||
| 101 | membershipsService: ControlPlaneMembershipsServiceShape; | ||
| 102 | workspacesService: ControlPlaneWorkspacesServiceShape; | ||
| 103 | sourcesService: ControlPlaneSourcesServiceShape; | ||
| 104 | policiesService: ControlPlanePoliciesServiceShape; | ||
| 105 | localService: ControlPlaneLocalServiceShape; | ||
| 106 | executionsService: ControlPlaneExecutionsServiceShape; | ||
| 107 | }): Layer.Layer<ControlPlaneApiServiceContext, never, never> => | ||
| 108 | Layer.mergeAll( | ||
| 109 | Layer.succeed(ControlPlaneOrganizationsService, input.organizationsService), | ||
| 110 | Layer.succeed(ControlPlaneMembershipsService, input.membershipsService), | ||
| 111 | Layer.succeed(ControlPlaneWorkspacesService, input.workspacesService), | ||
| 112 | Layer.succeed(ControlPlaneSourcesService, input.sourcesService), | ||
| 113 | Layer.succeed(ControlPlanePoliciesService, input.policiesService), | ||
| 114 | Layer.succeed(ControlPlaneLocalService, input.localService), | ||
| 115 | Layer.succeed(ControlPlaneExecutionsService, input.executionsService), | ||
| 116 | ); | ||
| 117 | |||
| 88 | export const createRuntimeControlPlaneLayer = ( | 118 | export const createRuntimeControlPlaneLayer = ( |
| 89 | options: RuntimeControlPlaneOptions = {}, | 119 | options: RuntimeControlPlaneOptions = {}, |
| 90 | ) => { | 120 | ) => { |
| @@ -105,11 +135,12 @@ export const createRuntimeControlPlaneLayer = ( · 14 unmodified lines | |||
| 105 | sourceAuthLayer, | 135 | sourceAuthLayer, |
| 106 | executionResolverLayer, | 136 | executionResolverLayer, |
| 107 | ); | 137 | ); |
| 138 | const apiServicesLayer = RuntimeControlPlaneApiServicesLive.pipe( | ||
| 139 | Layer.provide(runtimeDependenciesLayer), | ||
| 140 | ); | ||
| 108 | 141 | ||
| 109 | return Layer.mergeAll( | 142 | return Layer.mergeAll( |
| 110 | RuntimeControlPlaneServiceLive.pipe( | 143 | apiServicesLayer, |
| 111 | Layer.provide(runtimeDependenciesLayer), | ||
| 112 | ), | ||
| 113 | RuntimeActorResolverLive(options.actorResolver), | 144 | RuntimeActorResolverLive(options.actorResolver), |
| 114 | runtimeDependenciesLayer, | 145 | runtimeDependenciesLayer, |
| 115 | ); | 146 | ); |
| @@ -118,15 +149,30 @@ export const createRuntimeControlPlaneLayer = ( · 2 unmodified lines | |||
| 118 | export const createRuntimeControlPlane = ( | 149 | export const createRuntimeControlPlane = ( |
| 119 | input: RuntimeControlPlaneInput, | 150 | input: RuntimeControlPlaneInput, |
| 120 | ): Effect.Effect<{ | 151 | ): Effect.Effect<{ |
| 121 | service: ControlPlaneServiceShape; | 152 | serviceLayer: Layer.Layer<ControlPlaneApiServiceContext, never, never>; |
| 122 | actorResolver: ControlPlaneActorResolverShape; | 153 | actorResolver: ControlPlaneActorResolverShape; |
| 123 | }> => | 154 | }> => |
| 124 | Effect.gen(function* () { | 155 | Effect.gen(function* () { |
| 125 | const service = yield* ControlPlaneService; | ||
| 126 | const actorResolver = yield* ControlPlaneActorResolver; | 156 | const actorResolver = yield* ControlPlaneActorResolver; |
| 157 | const organizationsService = yield* ControlPlaneOrganizationsService; | ||
| 158 | const membershipsService = yield* ControlPlaneMembershipsService; | ||
| 159 | const workspacesService = yield* ControlPlaneWorkspacesService; | ||
| 160 | const sourcesService = yield* ControlPlaneSourcesService; | ||
| 161 | const policiesService = yield* ControlPlanePoliciesService; | ||
| 162 | const localService = yield* ControlPlaneLocalService; | ||
| 163 | const executionsService = yield* ControlPlaneExecutionsService; | ||
| 164 | const serviceLayer = createRuntimeServicesLayer({ | ||
| 165 | organizationsService, | ||
| 166 | membershipsService, | ||
| 167 | workspacesService, | ||
| 168 | sourcesService, | ||
| 169 | policiesService, | ||
| 170 | localService, | ||
| 171 | executionsService, | ||
| 172 | }); | ||
| 127 | 173 | ||
| 128 | return { | 174 | return { |
| 129 | service, | 175 | serviceLayer, |
| 130 | actorResolver, | 176 | actorResolver, |
| 131 | }; | 177 | }; |
| 132 | }).pipe( | 178 | }).pipe( |
| @@ -143,7 +189,7 @@ export const createRuntimeControlPlane = ( · 10 unmodified lines | |||
| 143 | export type SqlControlPlaneRuntime = { | 189 | export type SqlControlPlaneRuntime = { |
| 144 | persistence: SqlControlPlanePersistence; | 190 | persistence: SqlControlPlanePersistence; |
| 145 | localInstallation: LocalInstallation; | 191 | localInstallation: LocalInstallation; |
| 146 | service: ControlPlaneServiceShape; | 192 | serviceLayer: Layer.Layer<ControlPlaneApiServiceContext, never, never>; |
| 147 | actorResolver: ControlPlaneActorResolverShape; | 193 | actorResolver: ControlPlaneActorResolverShape; |
| 148 | close: () => Promise<void>; | 194 | close: () => Promise<void>; |
| 149 | }; | 195 | }; |
| @@ -171,8 +217,23 @@ export const createSqlControlPlaneRuntime = ( · 21 unmodified lines | |||
| 171 | ); | 217 | ); |
| 172 | 218 | ||
| 173 | const persistence = Context.get(context, SqlControlPlanePersistenceService); | 219 | const persistence = Context.get(context, SqlControlPlanePersistenceService); |
| 174 | const service = Context.get(context, ControlPlaneService); | ||
| 175 | const actorResolver = Context.get(context, ControlPlaneActorResolver); | 220 | const actorResolver = Context.get(context, ControlPlaneActorResolver); |
| 221 | const organizationsService = Context.get(context, ControlPlaneOrganizationsService); | ||
| 222 | const membershipsService = Context.get(context, ControlPlaneMembershipsService); | ||
| 223 | const workspacesService = Context.get(context, ControlPlaneWorkspacesService); | ||
| 224 | const sourcesService = Context.get(context, ControlPlaneSourcesService); | ||
| 225 | const policiesService = Context.get(context, ControlPlanePoliciesService); | ||
| 226 | const localService = Context.get(context, ControlPlaneLocalService); | ||
| 227 | const executionsService = Context.get(context, ControlPlaneExecutionsService); | ||
| 228 | const serviceLayer = createRuntimeServicesLayer({ | ||
| 229 | organizationsService, | ||
| 230 | membershipsService, | ||
| 231 | workspacesService, | ||
| 232 | sourcesService, | ||
| 233 | policiesService, | ||
| 234 | localService, | ||
| 235 | executionsService, | ||
| 236 | }); | ||
| 176 | 237 | ||
| 177 | const localInstallation = yield* getOrProvisionLocalInstallation( | 238 | const localInstallation = yield* getOrProvisionLocalInstallation( |
| 178 | persistence.rows, | 239 | persistence.rows, |
| @@ -187,7 +248,7 @@ export const createSqlControlPlaneRuntime = ( · 8 unmodified lines | |||
| 187 | return { | 248 | return { |
| 188 | persistence, | 249 | persistence, |
| 189 | localInstallation, | 250 | localInstallation, |
| 190 | service, | 251 | serviceLayer, |
| 191 | actorResolver, | 252 | actorResolver, |
| 192 | close: () => Effect.runPromise(Scope.close(scope, Exit.void)), | 253 | close: () => Effect.runPromise(Scope.close(scope, Exit.void)), |
| 193 | }; | 254 | }; |
| @@ -1,6 +1,18 @@ | |||
| 1 | import { | 1 | import { |
| 2 | ControlPlaneService, | 2 | ControlPlaneExecutionsService, |
| 3 | type ControlPlaneServiceShape, | 3 | type ControlPlaneExecutionsServiceShape, |
| 4 | ControlPlaneLocalService, | ||
| 5 | type ControlPlaneLocalServiceShape, | ||
| 6 | ControlPlaneMembershipsService, | ||
| 7 | type ControlPlaneMembershipsServiceShape, | ||
| 8 | ControlPlaneOrganizationsService, | ||
| 9 | type ControlPlaneOrganizationsServiceShape, | ||
| 10 | ControlPlanePoliciesService, | ||
| 11 | type ControlPlanePoliciesServiceShape, | ||
| 12 | ControlPlaneSourcesService, | ||
| 13 | type ControlPlaneSourcesServiceShape, | ||
| 14 | ControlPlaneWorkspacesService, | ||
| 15 | type ControlPlaneWorkspacesServiceShape, | ||
| 4 | ControlPlaneBadRequestError, | 16 | ControlPlaneBadRequestError, |
| 5 | ControlPlaneNotFoundError, | 17 | ControlPlaneNotFoundError, |
| 6 | ControlPlaneStorageError, | 18 | ControlPlaneStorageError, |
| @@ -30,10 +42,8 @@ import * as Effect from "effect/Effect"; · 23 unmodified lines | |||
| 30 | import * as Layer from "effect/Layer"; | 42 | import * as Layer from "effect/Layer"; |
| 31 | import * as Option from "effect/Option"; | 43 | import * as Option from "effect/Option"; |
| 32 | 44 | ||
| 33 | import { type ResolveExecutionEnvironment } from "./execution-state"; | ||
| 34 | import { | 45 | import { |
| 35 | LiveExecutionManagerService, | 46 | LiveExecutionManagerService, |
| 36 | type LiveExecutionManager, | ||
| 37 | } from "./live-execution"; | 47 | } from "./live-execution"; |
| 38 | import { createRuntimeExecutionsService } from "./execution-service"; | 48 | import { createRuntimeExecutionsService } from "./execution-service"; |
| 39 | import { loadLocalInstallation } from "./local-installation"; | 49 | import { loadLocalInstallation } from "./local-installation"; |
| @@ -204,14 +214,7 @@ const ensureOrganizationExists = ( · 164 unmodified lines | |||
| 204 | 214 | ||
| 205 | const createOrganizationsService = ( | 215 | const createOrganizationsService = ( |
| 206 | rows: SqlControlPlaneRows, | 216 | rows: SqlControlPlaneRows, |
| 207 | ): Pick< | 217 | ): ControlPlaneOrganizationsServiceShape => ({ |
| 208 | ControlPlaneServiceShape, | ||
| 209 | | "listOrganizations" | ||
| 210 | | "createOrganization" | ||
| 211 | | "getOrganization" | ||
| 212 | | "updateOrganization" | ||
| 213 | | "removeOrganization" | ||
| 214 | > => ({ | ||
| 215 | listOrganizations: ({ accountId }) => | 218 | listOrganizations: ({ accountId }) => |
| 216 | Effect.gen(function* () { | 219 | Effect.gen(function* () { |
| 217 | const memberships = yield* mapStorageError( | 220 | const memberships = yield* mapStorageError( |
| @@ -363,13 +366,7 @@ const createOrganizationsService = ( · 145 unmodified lines | |||
| 363 | 366 | ||
| 364 | const createMembershipsService = ( | 367 | const createMembershipsService = ( |
| 365 | rows: SqlControlPlaneRows, | 368 | rows: SqlControlPlaneRows, |
| 366 | ): Pick< | 369 | ): ControlPlaneMembershipsServiceShape => ({ |
| 367 | ControlPlaneServiceShape, | ||
| 368 | | "listMemberships" | ||
| 369 | | "createMembership" | ||
| 370 | | "updateMembership" | ||
| 371 | | "removeMembership" | ||
| 372 | > => ({ | ||
| 373 | listMemberships: (organizationId) => | 370 | listMemberships: (organizationId) => |
| 374 | Effect.gen(function* () { | 371 | Effect.gen(function* () { |
| 375 | yield* ensureOrganizationExists(rows, "memberships.list", organizationId); | 372 | yield* ensureOrganizationExists(rows, "memberships.list", organizationId); |
| @@ -485,14 +482,7 @@ const createMembershipsService = ( · 109 unmodified lines | |||
| 485 | 482 | ||
| 486 | const createWorkspacesService = ( | 483 | const createWorkspacesService = ( |
| 487 | rows: SqlControlPlaneRows, | 484 | rows: SqlControlPlaneRows, |
| 488 | ): Pick< | 485 | ): ControlPlaneWorkspacesServiceShape => ({ |
| 489 | ControlPlaneServiceShape, | ||
| 490 | | "listWorkspaces" | ||
| 491 | | "createWorkspace" | ||
| 492 | | "getWorkspace" | ||
| 493 | | "updateWorkspace" | ||
| 494 | | "removeWorkspace" | ||
| 495 | > => ({ | ||
| 496 | listWorkspaces: (organizationId) => | 486 | listWorkspaces: (organizationId) => |
| 497 | Effect.gen(function* () { | 487 | Effect.gen(function* () { |
| 498 | yield* ensureOrganizationExists(rows, "workspaces.list", organizationId); | 488 | yield* ensureOrganizationExists(rows, "workspaces.list", organizationId); |
| @@ -594,14 +584,7 @@ const createWorkspacesService = ( · 95 unmodified lines | |||
| 594 | 584 | ||
| 595 | const createSourcesService = ( | 585 | const createSourcesService = ( |
| 596 | rows: SqlControlPlaneRows, | 586 | rows: SqlControlPlaneRows, |
| 597 | ): Pick< | 587 | ): ControlPlaneSourcesServiceShape => ({ |
| 598 | ControlPlaneServiceShape, | ||
| 599 | | "listSources" | ||
| 600 | | "createSource" | ||
| 601 | | "getSource" | ||
| 602 | | "updateSource" | ||
| 603 | | "removeSource" | ||
| 604 | > => ({ | ||
| 605 | listSources: (workspaceId) => | 588 | listSources: (workspaceId) => |
| 606 | Effect.gen(function* () { | 589 | Effect.gen(function* () { |
| 607 | const sourceRecords = yield* mapStorageError( | 590 | const sourceRecords = yield* mapStorageError( |
| @@ -833,14 +816,7 @@ const createSourcesService = ( · 225 unmodified lines | |||
| 833 | 816 | ||
| 834 | const createPoliciesService = ( | 817 | const createPoliciesService = ( |
| 835 | rows: SqlControlPlaneRows, | 818 | rows: SqlControlPlaneRows, |
| 836 | ): Pick< | 819 | ): ControlPlanePoliciesServiceShape => ({ |
| 837 | ControlPlaneServiceShape, | ||
| 838 | | "listPolicies" | ||
| 839 | | "createPolicy" | ||
| 840 | | "getPolicy" | ||
| 841 | | "updatePolicy" | ||
| 842 | | "removePolicy" | ||
| 843 | > => ({ | ||
| 844 | listPolicies: (workspaceId) => | 820 | listPolicies: (workspaceId) => |
| 845 | mapStorageError( | 821 | mapStorageError( |
| 846 | "policies.list", | 822 | "policies.list", |
| @@ -1003,8 +979,8 @@ const createPoliciesService = ( · 156 unmodified lines | |||
| 1003 | 979 | ||
| 1004 | const createLocalService = ( | 980 | const createLocalService = ( |
| 1005 | rows: SqlControlPlaneRows, | 981 | rows: SqlControlPlaneRows, |
| 1006 | sourceAuthService?: RuntimeSourceAuthService, | 982 | sourceAuthService: RuntimeSourceAuthService, |
| 1007 | ): Pick<ControlPlaneServiceShape, "getLocalInstallation" | "completeSourceAuthCallback"> => ({ | 983 | ): ControlPlaneLocalServiceShape => ({ |
| 1008 | getLocalInstallation: () => | 984 | getLocalInstallation: () => |
| 1009 | Effect.gen(function* () { | 985 | Effect.gen(function* () { |
| 1010 | const installation = yield* loadLocalInstallation(rows).pipe( | 986 | const installation = yield* loadLocalInstallation(rows).pipe( |
| @@ -1034,16 +1010,6 @@ const createLocalService = ( · 23 unmodified lines | |||
| 1034 | 1010 | ||
| 1035 | completeSourceAuthCallback: (input) => | 1011 | completeSourceAuthCallback: (input) => |
| 1036 | Effect.gen(function* () { | 1012 | Effect.gen(function* () { |
| 1037 | if (!sourceAuthService) { | ||
| 1038 | return yield* Effect.fail( | ||
| 1039 | badRequest( | ||
| 1040 | "local.oauth.callback", | ||
| 1041 | "Source auth callback handling is unavailable", | ||
| 1042 | "Runtime source auth service is not configured", | ||
| 1043 | ), | ||
| 1044 | ); | ||
| 1045 | } | ||
| 1046 | |||
| 1047 | return yield* sourceAuthService.completeSourceAuthCallback(input).pipe( | 1013 | return yield* sourceAuthService.completeSourceAuthCallback(input).pipe( |
| 1048 | Effect.mapError((error) => | 1014 | Effect.mapError((error) => |
| 1049 | new ControlPlaneStorageError({ | 1015 | new ControlPlaneStorageError({ |
| @@ -1056,43 +1022,62 @@ const createLocalService = ( · 6 unmodified lines | |||
| 1056 | }), | 1022 | }), |
| 1057 | }); | 1023 | }); |
| 1058 | 1024 | ||
| 1059 | export const createRuntimeControlPlaneService = ( | 1025 | const RuntimeOrganizationsServiceLive = Layer.effect( |
| 1060 | rows: SqlControlPlaneRows, | 1026 | ControlPlaneOrganizationsService, |
| 1061 | options: { | 1027 | Effect.map(SqlControlPlaneRowsService, createOrganizationsService), |
| 1062 | executionResolver?: ResolveExecutionEnvironment; | 1028 | ); |
| 1063 | liveExecutionManager?: LiveExecutionManager; | 1029 | |
| 1064 | sourceAuthService?: RuntimeSourceAuthService; | 1030 | const RuntimeMembershipsServiceLive = Layer.effect( |
| 1065 | } = {}, | 1031 | ControlPlaneMembershipsService, |
| 1066 | ) => ({ | 1032 | Effect.map(SqlControlPlaneRowsService, createMembershipsService), |
| 1067 | ...createLocalService(rows, options.sourceAuthService), | 1033 | ); |
| 1068 | ...createOrganizationsService(rows), | 1034 | |
| 1069 | ...createMembershipsService(rows), | 1035 | const RuntimeWorkspacesServiceLive = Layer.effect( |
| 1070 | ...createWorkspacesService(rows), | 1036 | ControlPlaneWorkspacesService, |
| 1071 | ...createSourcesService(rows), | 1037 | Effect.map(SqlControlPlaneRowsService, createWorkspacesService), |
| 1072 | ...createPoliciesService(rows), | 1038 | ); |
| 1073 | ...createRuntimeExecutionsService( | 1039 | |
| 1074 | rows, | 1040 | const RuntimeSourcesServiceLive = Layer.effect( |
| 1075 | options.executionResolver, | 1041 | ControlPlaneSourcesService, |
| 1076 | options.liveExecutionManager, | 1042 | Effect.map(SqlControlPlaneRowsService, createSourcesService), |
| 1077 | ), | 1043 | ); |
| 1078 | } satisfies ControlPlaneServiceShape); | 1044 | |
| 1079 | 1045 | const RuntimePoliciesServiceLive = Layer.effect( | |
| 1080 | export type RuntimeControlPlaneService = ReturnType< | 1046 | ControlPlanePoliciesService, |
| 1081 | typeof createRuntimeControlPlaneService | 1047 | Effect.map(SqlControlPlaneRowsService, createPoliciesService), |
| 1082 | >; | 1048 | ); |
| 1083 | 1049 | ||
| 1084 | export const RuntimeControlPlaneServiceLive = Layer.effect( | 1050 | const RuntimeLocalServiceLive = Layer.effect( |
| 1085 | ControlPlaneService, | 1051 | ControlPlaneLocalService, |
| 1052 | Effect.gen(function* () { | ||
| 1053 | const rows = yield* SqlControlPlaneRowsService; | ||
| 1054 | const sourceAuthService = yield* RuntimeSourceAuthServiceTag; | ||
| 1055 | |||
| 1056 | return createLocalService(rows, sourceAuthService); | ||
| 1057 | }), | ||
| 1058 | ); | ||
| 1059 | |||
| 1060 | const RuntimeExecutionsServiceLive = Layer.effect( | ||
| 1061 | ControlPlaneExecutionsService, | ||
| 1086 | Effect.gen(function* () { | 1062 | Effect.gen(function* () { |
| 1087 | const rows = yield* SqlControlPlaneRowsService; | 1063 | const rows = yield* SqlControlPlaneRowsService; |
| 1088 | const executionResolver = yield* RuntimeExecutionResolverService; | 1064 | const executionResolver = yield* RuntimeExecutionResolverService; |
| 1089 | const liveExecutionManager = yield* LiveExecutionManagerService; | 1065 | const liveExecutionManager = yield* LiveExecutionManagerService; |
| 1090 | const sourceAuthService = yield* RuntimeSourceAuthServiceTag; | ||
| 1091 | 1066 | ||
| 1092 | return createRuntimeControlPlaneService(rows, { | 1067 | return createRuntimeExecutionsService( |
| 1068 | rows, | ||
| 1093 | executionResolver, | 1069 | executionResolver, |
| 1094 | liveExecutionManager, | 1070 | liveExecutionManager, |
| 1095 | sourceAuthService, | 1071 | ); |
| 1096 | }); | ||
| 1097 | }), | 1072 | }), |
| 1098 | ); | 1073 | ); |
| 1074 | |||
| 1075 | export const RuntimeControlPlaneApiServicesLive = Layer.mergeAll( | ||
| 1076 | RuntimeOrganizationsServiceLive, | ||
| 1077 | RuntimeMembershipsServiceLive, | ||
| 1078 | RuntimeWorkspacesServiceLive, | ||
| 1079 | RuntimeSourcesServiceLive, | ||
| 1080 | RuntimePoliciesServiceLive, | ||
| 1081 | RuntimeLocalServiceLive, | ||
| 1082 | RuntimeExecutionsServiceLive, | ||
| 1083 | ); | ||
| @@ -7,21 +7,3 @@ export const slugify = (value: string): string => · 6 unmodified lines | |||
| 7 | .replace(slugifyRegex, "-") | 7 | .replace(slugifyRegex, "-") |
| 8 | .replace(/^-+/, "") | 8 | .replace(/^-+/, "") |
| 9 | .replace(/-+$/, ""); | 9 | .replace(/-+$/, ""); |
| 10 | |||
| 11 | export const ensureUniqueSlug = async ( | ||
| 12 | base: string, | ||
| 13 | hasCollision: (candidate: string) => Promise<boolean>, | ||
| 14 | ): Promise<string> => { | ||
| 15 | const normalizedBase = slugify(base); | ||
| 16 | const seed = normalizedBase.length > 0 ? normalizedBase : "item"; | ||
| 17 | |||
| 18 | let counter = 0; | ||
| 19 | while (true) { | ||
| 20 | const candidate = counter === 0 ? seed : `${seed}-${counter + 1}`; | ||
| 21 | if (!(await hasCollision(candidate))) { | ||
| 22 | return candidate; | ||
| 23 | } | ||
| 24 | |||
| 25 | counter += 1; | ||
| 26 | } | ||
| 27 | }; | ||
| @@ -11,7 +11,6 @@ import * as Layer from "effect/Layer"; · 10 unmodified lines | |||
| 11 | import { | 11 | import { |
| 12 | ControlPlaneActorResolver, | 12 | ControlPlaneActorResolver, |
| 13 | ControlPlaneApi, | 13 | ControlPlaneApi, |
| 14 | ControlPlaneService, | ||
| 15 | createControlPlaneApiLayer, | 14 | createControlPlaneApiLayer, |
| 16 | } from "#api"; | 15 | } from "#api"; |
| 17 | 16 | ||
| @@ -21,12 +20,11 @@ import { · 3 unmodified lines | |||
| 21 | } from "./index"; | 20 | } from "./index"; |
| 22 | 21 | ||
| 23 | const createClientLayer = (runtime: SqlControlPlaneRuntime) => { | 22 | const createClientLayer = (runtime: SqlControlPlaneRuntime) => { |
| 24 | const serviceLayer = Layer.succeed(ControlPlaneService, runtime.service); | ||
| 25 | const actorResolverLayer = Layer.succeed( | 23 | const actorResolverLayer = Layer.succeed( |
| 26 | ControlPlaneActorResolver, | 24 | ControlPlaneActorResolver, |
| 27 | runtime.actorResolver, | 25 | runtime.actorResolver, |
| 28 | ); | 26 | ); |
| 29 | const apiLayer = createControlPlaneApiLayer(serviceLayer, actorResolverLayer); | 27 | const apiLayer = createControlPlaneApiLayer(runtime.serviceLayer, actorResolverLayer); |
| 30 | 28 | ||
| 31 | return HttpApiBuilder.serve().pipe( | 29 | return HttpApiBuilder.serve().pipe( |
| 32 | Layer.provide(apiLayer), | 30 | Layer.provide(apiLayer), |
| @@ -49,7 +47,7 @@ const createControlPlaneClient = (accountId?: string) => · 16 unmodified lines | |||
| 49 | : undefined, | 47 | : undefined, |
| 50 | }); | 48 | }); |
| 51 | 49 | ||
| 52 | export type ControlPlaneClient = Effect.Effect.Success< | 50 | type ControlPlaneClient = Effect.Effect.Success< |
| 53 | ReturnType<typeof createControlPlaneClient> | 51 | ReturnType<typeof createControlPlaneClient> |
| 54 | >; | 52 | >; |
| 55 | 53 | ||
| @@ -13,7 +13,6 @@ · 12 unmodified lines | |||
| 13 | "@executor-v3/ai-sdk-adapter": "workspace:*", | 13 | "@executor-v3/ai-sdk-adapter": "workspace:*", |
| 14 | "@executor-v3/codemode-core": "workspace:*", | 14 | "@executor-v3/codemode-core": "workspace:*", |
| 15 | "@executor-v3/codemode-openapi": "workspace:*", | 15 | "@executor-v3/codemode-openapi": "workspace:*", |
| 16 | "@executor-v3/control-plane": "workspace:*", | ||
| 17 | "@executor-v3/runtime-local-inproc": "workspace:*", | 16 | "@executor-v3/runtime-local-inproc": "workspace:*", |
| 18 | "effect": "catalog:" | 17 | "effect": "catalog:" |
| 19 | }, | 18 | }, |