@undefineds.co/xpod 0.2.44 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/agents/AgentExecutorFactory.js +12 -13
- package/dist/agents/AgentExecutorFactory.js.map +1 -1
- package/dist/agents/config/agent-meta-schema.d.ts +31 -3
- package/dist/agents/config/agent-meta-schema.js +37 -3
- package/dist/agents/config/agent-meta-schema.js.map +1 -1
- package/dist/agents/config/index.d.ts +5 -5
- package/dist/agents/config/index.js +7 -6
- package/dist/agents/config/index.js.map +1 -1
- package/dist/agents/config/parse-agent-instructions.d.ts +12 -0
- package/dist/agents/config/parse-agent-instructions.js +23 -0
- package/dist/agents/config/parse-agent-instructions.js.map +1 -0
- package/dist/agents/config/resolve.d.ts +7 -12
- package/dist/agents/config/resolve.js +272 -156
- package/dist/agents/config/resolve.js.map +1 -1
- package/dist/agents/config/types.d.ts +33 -36
- package/dist/agents/config/types.js +4 -4
- package/dist/agents/config/types.js.map +1 -1
- package/dist/agents/index.d.ts +2 -7
- package/dist/agents/index.js +4 -14
- package/dist/agents/index.js.map +1 -1
- package/dist/agents/types.d.ts +2 -2
- package/dist/agents/types.js.map +1 -1
- package/dist/ai/service/CredentialReaderImpl.js +9 -14
- package/dist/ai/service/CredentialReaderImpl.js.map +1 -1
- package/dist/api/ApiServer.d.ts +7 -0
- package/dist/api/ApiServer.js +5 -1
- package/dist/api/ApiServer.js.map +1 -1
- package/dist/api/chatkit/default-agent.js +1 -1
- package/dist/api/chatkit/default-agent.js.map +1 -1
- package/dist/api/chatkit/index.d.ts +8 -0
- package/dist/api/chatkit/index.js +15 -1
- package/dist/api/chatkit/index.js.map +1 -1
- package/dist/api/chatkit/pod-store.d.ts +80 -17
- package/dist/api/chatkit/pod-store.js +816 -162
- package/dist/api/chatkit/pod-store.js.map +1 -1
- package/dist/api/chatkit/runtime/AcpAgentRuntime.d.ts +41 -0
- package/dist/api/chatkit/runtime/AcpAgentRuntime.js +573 -0
- package/dist/api/chatkit/runtime/AcpAgentRuntime.js.map +1 -0
- package/dist/api/chatkit/runtime/CodexRuntimeProjector.d.ts +27 -0
- package/dist/api/chatkit/runtime/CodexRuntimeProjector.js +157 -0
- package/dist/api/chatkit/runtime/CodexRuntimeProjector.js.map +1 -0
- package/dist/api/chatkit/schema.d.ts +53 -133
- package/dist/api/chatkit/schema.js +11 -175
- package/dist/api/chatkit/schema.js.map +1 -1
- package/dist/api/chatkit/service.d.ts +15 -9
- package/dist/api/chatkit/service.js +82 -234
- package/dist/api/chatkit/service.js.map +1 -1
- package/dist/api/chatkit/store.d.ts +35 -3
- package/dist/api/chatkit/store.js +157 -3
- package/dist/api/chatkit/store.js.map +1 -1
- package/dist/api/chatkit/types.d.ts +16 -2
- package/dist/api/chatkit/types.js +24 -5
- package/dist/api/chatkit/types.js.map +1 -1
- package/dist/api/container/common.js +59 -2
- package/dist/api/container/common.js.map +1 -1
- package/dist/api/container/index.js +15 -0
- package/dist/api/container/index.js.map +1 -1
- package/dist/api/container/routes.js +11 -0
- package/dist/api/container/routes.js.map +1 -1
- package/dist/api/container/types.d.ts +26 -0
- package/dist/api/container/types.js.map +1 -1
- package/dist/api/handlers/InngestHandler.d.ts +11 -0
- package/dist/api/handlers/InngestHandler.js +19 -0
- package/dist/api/handlers/InngestHandler.js.map +1 -0
- package/dist/api/handlers/RunHandler.d.ts +7 -0
- package/dist/api/handlers/RunHandler.js +169 -0
- package/dist/api/handlers/RunHandler.js.map +1 -0
- package/dist/api/handlers/index.d.ts +1 -0
- package/dist/api/handlers/index.js +1 -0
- package/dist/api/handlers/index.js.map +1 -1
- package/dist/api/models/namespaces.d.ts +2 -2
- package/dist/api/models/namespaces.js +1 -4
- package/dist/api/models/namespaces.js.map +1 -1
- package/dist/api/runs/AgentRuntimeTypes.d.ts +83 -0
- package/dist/api/runs/AgentRuntimeTypes.js +3 -0
- package/dist/api/runs/AgentRuntimeTypes.js.map +1 -0
- package/dist/api/runs/EmbeddedInngestService.d.ts +47 -0
- package/dist/api/runs/EmbeddedInngestService.js +203 -0
- package/dist/api/runs/EmbeddedInngestService.js.map +1 -0
- package/dist/api/runs/InngestRunExecutionBackend.d.ts +416 -0
- package/dist/api/runs/InngestRunExecutionBackend.js +225 -0
- package/dist/api/runs/InngestRunExecutionBackend.js.map +1 -0
- package/dist/api/runs/ManagedRunWorker.d.ts +52 -0
- package/dist/api/runs/ManagedRunWorker.js +452 -0
- package/dist/api/runs/ManagedRunWorker.js.map +1 -0
- package/dist/api/runs/PiAgentRuntimeDriver.d.ts +66 -0
- package/dist/api/runs/PiAgentRuntimeDriver.js +614 -0
- package/dist/api/runs/PiAgentRuntimeDriver.js.map +1 -0
- package/dist/api/runs/PiAgentRuntimeWorker.d.ts +1 -0
- package/dist/api/runs/PiAgentRuntimeWorker.js +33 -0
- package/dist/api/runs/PiAgentRuntimeWorker.js.map +1 -0
- package/dist/api/runs/RunAuthContextRegistry.d.ts +19 -0
- package/dist/api/runs/RunAuthContextRegistry.js +59 -0
- package/dist/api/runs/RunAuthContextRegistry.js.map +1 -0
- package/dist/api/runs/RunExecutionBackend.d.ts +57 -0
- package/dist/api/runs/RunExecutionBackend.js +3 -0
- package/dist/api/runs/RunExecutionBackend.js.map +1 -0
- package/dist/api/runs/RunStateCenter.d.ts +82 -0
- package/dist/api/runs/RunStateCenter.js +665 -0
- package/dist/api/runs/RunStateCenter.js.map +1 -0
- package/dist/api/runs/schema.d.ts +55 -0
- package/dist/api/runs/schema.js +14 -0
- package/dist/api/runs/schema.js.map +1 -0
- package/dist/api/runs/store.d.ts +105 -0
- package/dist/api/runs/store.js +116 -0
- package/dist/api/runs/store.js.map +1 -0
- package/dist/api/runtime.d.ts +2 -0
- package/dist/api/runtime.js +40 -1
- package/dist/api/runtime.js.map +1 -1
- package/dist/api/service/VectorStoreService.d.ts +1 -0
- package/dist/api/service/VectorStoreService.js +27 -34
- package/dist/api/service/VectorStoreService.js.map +1 -1
- package/dist/api/service/provider-registry.d.ts +1 -1
- package/dist/api/service/provider-registry.js +1 -1
- package/dist/api/service/provider-registry.js.map +1 -1
- package/dist/api/tasks/InngestTaskScheduler.d.ts +751 -0
- package/dist/api/tasks/InngestTaskScheduler.js +209 -0
- package/dist/api/tasks/InngestTaskScheduler.js.map +1 -0
- package/dist/api/tasks/TaskAuthBinding.d.ts +68 -0
- package/dist/api/tasks/TaskAuthBinding.js +162 -0
- package/dist/api/tasks/TaskAuthBinding.js.map +1 -0
- package/dist/api/tasks/TaskMaterializer.d.ts +55 -0
- package/dist/api/tasks/TaskMaterializer.js +452 -0
- package/dist/api/tasks/TaskMaterializer.js.map +1 -0
- package/dist/api/tasks/TaskService.d.ts +57 -0
- package/dist/api/tasks/TaskService.js +235 -0
- package/dist/api/tasks/TaskService.js.map +1 -0
- package/dist/api/tasks/index.d.ts +6 -0
- package/dist/api/tasks/index.js +25 -0
- package/dist/api/tasks/index.js.map +1 -0
- package/dist/api/tasks/schema.d.ts +23 -0
- package/dist/api/tasks/schema.js +8 -0
- package/dist/api/tasks/schema.js.map +1 -0
- package/dist/api/tasks/store.d.ts +40 -0
- package/dist/api/tasks/store.js +34 -0
- package/dist/api/tasks/store.js.map +1 -0
- package/dist/api/workspace/types.d.ts +3 -0
- package/dist/api/workspace/types.js +23 -0
- package/dist/api/workspace/types.js.map +1 -0
- package/dist/cli/commands/config.d.ts +8 -7
- package/dist/cli/commands/config.js +72 -48
- package/dist/cli/commands/config.js.map +1 -1
- package/dist/cli/commands/login.d.ts +10 -8
- package/dist/cli/commands/login.js +84 -84
- package/dist/cli/commands/login.js.map +1 -1
- package/dist/cli/index.js +3 -124
- package/dist/cli/index.js.map +1 -1
- package/dist/http/search/SearchHttpHandler.js +13 -18
- package/dist/http/search/SearchHttpHandler.js.map +1 -1
- package/dist/runtime/configure-drizzle-solid.js +52 -0
- package/dist/runtime/configure-drizzle-solid.js.map +1 -1
- package/dist/storage/quint/PgQuintStore.d.ts +6 -0
- package/dist/storage/quint/PgQuintStore.js +83 -5
- package/dist/storage/quint/PgQuintStore.js.map +1 -1
- package/dist/storage/quint/PgQuintStore.jsonld +24 -0
- package/dist/storage/quint/SqliteQuintStore.d.ts +1 -0
- package/dist/storage/quint/SqliteQuintStore.js +52 -0
- package/dist/storage/quint/SqliteQuintStore.js.map +1 -1
- package/dist/storage/quint/SqliteQuintStore.jsonld +4 -0
- package/dist/storage/quint/types.d.ts +6 -0
- package/dist/storage/quint/types.js.map +1 -1
- package/dist/storage/sparql/FilterPushdownExtractor.js +23 -11
- package/dist/storage/sparql/FilterPushdownExtractor.js.map +1 -1
- package/dist/storage/vector/VectorIndexingListener.js +13 -18
- package/dist/storage/vector/VectorIndexingListener.js.map +1 -1
- package/dist/util/identifiers/ClusterIdentifierStrategy.js +29 -1
- package/dist/util/identifiers/ClusterIdentifierStrategy.js.map +1 -1
- package/dist/vocab/index.d.ts +2 -6
- package/dist/vocab/index.js +2 -6
- package/dist/vocab/index.js.map +1 -1
- package/dist/vocab/udfs.d.ts +12 -0
- package/dist/vocab/udfs.js +12 -0
- package/dist/vocab/udfs.js.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/README.md +52 -24
- package/node_modules/@undefineds.co/drizzle-solid/README.zh-CN.md +30 -24
- package/node_modules/@undefineds.co/drizzle-solid/dist/core/discovery/types.d.ts +6 -2
- package/node_modules/@undefineds.co/drizzle-solid/dist/core/discovery/types.d.ts.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/core/execution/ldp-executor.d.ts +1 -0
- package/node_modules/@undefineds.co/drizzle-solid/dist/core/execution/ldp-executor.d.ts.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/core/execution/ldp-executor.js +43 -10
- package/node_modules/@undefineds.co/drizzle-solid/dist/core/execution/ldp-executor.js.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/core/execution/ldp-strategy.d.ts.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/core/execution/ldp-strategy.js +1 -0
- package/node_modules/@undefineds.co/drizzle-solid/dist/core/execution/ldp-strategy.js.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/core/execution/pod-executor.d.ts +5 -0
- package/node_modules/@undefineds.co/drizzle-solid/dist/core/execution/pod-executor.d.ts.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/core/execution/pod-executor.js +44 -13
- package/node_modules/@undefineds.co/drizzle-solid/dist/core/execution/pod-executor.js.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/core/execution/sparql-strategy.d.ts +1 -0
- package/node_modules/@undefineds.co/drizzle-solid/dist/core/execution/sparql-strategy.d.ts.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/core/execution/sparql-strategy.js +21 -2
- package/node_modules/@undefineds.co/drizzle-solid/dist/core/execution/sparql-strategy.js.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/core/execution/types.d.ts +1 -0
- package/node_modules/@undefineds.co/drizzle-solid/dist/core/execution/types.d.ts.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/core/expressions.d.ts +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/core/expressions.d.ts.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/core/pod-database.d.ts +76 -41
- package/node_modules/@undefineds.co/drizzle-solid/dist/core/pod-database.d.ts.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/core/pod-database.js +443 -114
- package/node_modules/@undefineds.co/drizzle-solid/dist/core/pod-database.js.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/core/pod-dialect.d.ts +28 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/core/pod-dialect.d.ts.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/core/pod-dialect.js +142 -31
- package/node_modules/@undefineds.co/drizzle-solid/dist/core/pod-dialect.js.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/core/pod-session.d.ts +3 -0
- package/node_modules/@undefineds.co/drizzle-solid/dist/core/pod-session.d.ts.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/core/pod-session.js +84 -6
- package/node_modules/@undefineds.co/drizzle-solid/dist/core/pod-session.js.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/core/query-builders/insert-query-builder.d.ts +3 -0
- package/node_modules/@undefineds.co/drizzle-solid/dist/core/query-builders/insert-query-builder.d.ts.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/core/query-builders/insert-query-builder.js +29 -9
- package/node_modules/@undefineds.co/drizzle-solid/dist/core/query-builders/insert-query-builder.js.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/core/query-builders/select-query-builder.d.ts +2 -8
- package/node_modules/@undefineds.co/drizzle-solid/dist/core/query-builders/select-query-builder.d.ts.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/core/query-builders/select-query-builder.js +19 -51
- package/node_modules/@undefineds.co/drizzle-solid/dist/core/query-builders/select-query-builder.js.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/core/query-builders/types.d.ts +1 -0
- package/node_modules/@undefineds.co/drizzle-solid/dist/core/query-builders/types.d.ts.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/core/query-conditions.d.ts +2 -2
- package/node_modules/@undefineds.co/drizzle-solid/dist/core/query-conditions.d.ts.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/core/query-where-policy.js +6 -6
- package/node_modules/@undefineds.co/drizzle-solid/dist/core/query-where-policy.js.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/core/resource-reference.d.ts +4 -4
- package/node_modules/@undefineds.co/drizzle-solid/dist/core/resource-reference.d.ts.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/core/resource-reference.js +56 -23
- package/node_modules/@undefineds.co/drizzle-solid/dist/core/resource-reference.js.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/core/resource-resolver/base-resolver.d.ts +14 -10
- package/node_modules/@undefineds.co/drizzle-solid/dist/core/resource-resolver/base-resolver.d.ts.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/core/resource-resolver/base-resolver.js +55 -23
- package/node_modules/@undefineds.co/drizzle-solid/dist/core/resource-resolver/base-resolver.js.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/core/resource-resolver/document-resolver.d.ts +3 -3
- package/node_modules/@undefineds.co/drizzle-solid/dist/core/resource-resolver/document-resolver.js +6 -6
- package/node_modules/@undefineds.co/drizzle-solid/dist/core/resource-resolver/document-resolver.js.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/core/resource-resolver/fragment-resolver.d.ts +3 -3
- package/node_modules/@undefineds.co/drizzle-solid/dist/core/resource-resolver/fragment-resolver.js +4 -4
- package/node_modules/@undefineds.co/drizzle-solid/dist/core/resource-resolver/fragment-resolver.js.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/core/runtime/pod-runtime.d.ts.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/core/runtime/pod-runtime.js +33 -8
- package/node_modules/@undefineds.co/drizzle-solid/dist/core/runtime/pod-runtime.js.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/core/schema/defs.d.ts +11 -2
- package/node_modules/@undefineds.co/drizzle-solid/dist/core/schema/defs.d.ts.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/core/schema/factories.d.ts.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/core/schema/factories.js +3 -2
- package/node_modules/@undefineds.co/drizzle-solid/dist/core/schema/factories.js.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/core/schema/pod-table.d.ts +13 -8
- package/node_modules/@undefineds.co/drizzle-solid/dist/core/schema/pod-table.d.ts.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/core/schema/pod-table.js +24 -22
- package/node_modules/@undefineds.co/drizzle-solid/dist/core/schema/pod-table.js.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/core/schema/solid-schema.d.ts +3 -0
- package/node_modules/@undefineds.co/drizzle-solid/dist/core/schema/solid-schema.d.ts.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/core/schema/solid-schema.js.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/core/subject/resolver.d.ts +3 -2
- package/node_modules/@undefineds.co/drizzle-solid/dist/core/subject/resolver.d.ts.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/core/subject/resolver.js +28 -14
- package/node_modules/@undefineds.co/drizzle-solid/dist/core/subject/resolver.js.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/core/triple/handlers/inline.d.ts.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/core/triple/handlers/inline.js +3 -2
- package/node_modules/@undefineds.co/drizzle-solid/dist/core/triple/handlers/inline.js.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/core/uri/resolver.d.ts +9 -9
- package/node_modules/@undefineds.co/drizzle-solid/dist/core/uri/resolver.d.ts.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/core/uri/resolver.js +56 -22
- package/node_modules/@undefineds.co/drizzle-solid/dist/core/uri/resolver.js.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/driver.d.ts +9 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/driver.d.ts.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/driver.js +2 -0
- package/node_modules/@undefineds.co/drizzle-solid/dist/driver.js.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/discovery/types.d.ts +6 -2
- package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/discovery/types.d.ts.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/execution/ldp-executor.d.ts +1 -0
- package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/execution/ldp-executor.d.ts.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/execution/ldp-executor.js +43 -10
- package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/execution/ldp-executor.js.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/execution/ldp-strategy.d.ts.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/execution/ldp-strategy.js +1 -0
- package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/execution/ldp-strategy.js.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/execution/pod-executor.d.ts +5 -0
- package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/execution/pod-executor.d.ts.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/execution/pod-executor.js +44 -13
- package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/execution/pod-executor.js.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/execution/sparql-strategy.d.ts +1 -0
- package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/execution/sparql-strategy.d.ts.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/execution/sparql-strategy.js +21 -2
- package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/execution/sparql-strategy.js.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/execution/types.d.ts +1 -0
- package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/execution/types.d.ts.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/expressions.d.ts +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/expressions.d.ts.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/pod-database.d.ts +76 -41
- package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/pod-database.d.ts.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/pod-database.js +443 -114
- package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/pod-database.js.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/pod-dialect.d.ts +28 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/pod-dialect.d.ts.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/pod-dialect.js +142 -31
- package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/pod-dialect.js.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/pod-session.d.ts +3 -0
- package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/pod-session.d.ts.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/pod-session.js +84 -6
- package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/pod-session.js.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/query-builders/insert-query-builder.d.ts +3 -0
- package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/query-builders/insert-query-builder.d.ts.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/query-builders/insert-query-builder.js +29 -9
- package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/query-builders/insert-query-builder.js.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/query-builders/select-query-builder.d.ts +2 -8
- package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/query-builders/select-query-builder.d.ts.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/query-builders/select-query-builder.js +19 -51
- package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/query-builders/select-query-builder.js.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/query-builders/types.d.ts +1 -0
- package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/query-builders/types.d.ts.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/query-conditions.d.ts +2 -2
- package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/query-conditions.d.ts.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/query-where-policy.js +6 -6
- package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/query-where-policy.js.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/resource-reference.d.ts +4 -4
- package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/resource-reference.d.ts.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/resource-reference.js +56 -23
- package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/resource-reference.js.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/resource-resolver/base-resolver.d.ts +14 -10
- package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/resource-resolver/base-resolver.d.ts.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/resource-resolver/base-resolver.js +55 -23
- package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/resource-resolver/base-resolver.js.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/resource-resolver/document-resolver.d.ts +3 -3
- package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/resource-resolver/document-resolver.js +6 -6
- package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/resource-resolver/document-resolver.js.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/resource-resolver/fragment-resolver.d.ts +3 -3
- package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/resource-resolver/fragment-resolver.js +4 -4
- package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/resource-resolver/fragment-resolver.js.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/runtime/pod-runtime.d.ts.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/runtime/pod-runtime.js +33 -8
- package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/runtime/pod-runtime.js.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/schema/defs.d.ts +11 -2
- package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/schema/defs.d.ts.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/schema/factories.d.ts.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/schema/factories.js +3 -2
- package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/schema/factories.js.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/schema/pod-table.d.ts +13 -8
- package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/schema/pod-table.d.ts.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/schema/pod-table.js +24 -22
- package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/schema/pod-table.js.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/schema/solid-schema.d.ts +3 -0
- package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/schema/solid-schema.d.ts.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/schema/solid-schema.js.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/subject/resolver.d.ts +3 -2
- package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/subject/resolver.d.ts.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/subject/resolver.js +28 -14
- package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/subject/resolver.js.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/triple/handlers/inline.d.ts.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/triple/handlers/inline.js +3 -2
- package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/triple/handlers/inline.js.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/uri/resolver.d.ts +9 -9
- package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/uri/resolver.d.ts.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/uri/resolver.js +56 -22
- package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/uri/resolver.js.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/esm/driver.d.ts +9 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/esm/driver.d.ts.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/esm/driver.js +2 -0
- package/node_modules/@undefineds.co/drizzle-solid/dist/esm/driver.js.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/esm/pod.d.ts +16 -2
- package/node_modules/@undefineds.co/drizzle-solid/dist/esm/pod.d.ts.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/esm/utils/find-by-iri.js +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/esm/utils/find-by-iri.js.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/pod.d.ts +16 -2
- package/node_modules/@undefineds.co/drizzle-solid/dist/pod.d.ts.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/utils/find-by-iri.js +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/utils/find-by-iri.js.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/package.json +1 -1
- package/package.json +5 -3
- package/scripts/patch-jose.js +62 -12
- package/dist/agents/AgentManager.d.ts +0 -116
- package/dist/agents/AgentManager.js +0 -290
- package/dist/agents/AgentManager.js.map +0 -1
- package/dist/agents/IndexAgent.d.ts +0 -70
- package/dist/agents/IndexAgent.js +0 -417
- package/dist/agents/IndexAgent.js.map +0 -1
- package/dist/agents/config/parse-agent-md.d.ts +0 -33
- package/dist/agents/config/parse-agent-md.js +0 -75
- package/dist/agents/config/parse-agent-md.js.map +0 -1
- package/dist/agents/schema/agent-config.d.ts +0 -2
- package/dist/agents/schema/agent-config.js +0 -32
- package/dist/agents/schema/agent-config.js.map +0 -1
- package/dist/agents/schema/create-agent-schema.d.ts +0 -25
- package/dist/agents/schema/create-agent-schema.js +0 -35
- package/dist/agents/schema/create-agent-schema.js.map +0 -1
- package/dist/api/chatkit/runtime/PtyThreadRuntime.d.ts +0 -127
- package/dist/api/chatkit/runtime/PtyThreadRuntime.js +0 -791
- package/dist/api/chatkit/runtime/PtyThreadRuntime.js.map +0 -1
- package/dist/cli/lib/agent-session.d.ts +0 -37
- package/dist/cli/lib/agent-session.js +0 -211
- package/dist/cli/lib/agent-session.js.map +0 -1
- package/dist/cli/lib/ensure-ai-credentials.d.ts +0 -13
- package/dist/cli/lib/ensure-ai-credentials.js +0 -40
- package/dist/cli/lib/ensure-ai-credentials.js.map +0 -1
- package/dist/cli/lib/model-manager.d.ts +0 -37
- package/dist/cli/lib/model-manager.js +0 -251
- package/dist/cli/lib/model-manager.js.map +0 -1
- package/dist/cli/lib/oauth-credential-manager.d.ts +0 -37
- package/dist/cli/lib/oauth-credential-manager.js +0 -129
- package/dist/cli/lib/oauth-credential-manager.js.map +0 -1
- package/dist/cli/lib/oauth-providers/codebuddy.d.ts +0 -25
- package/dist/cli/lib/oauth-providers/codebuddy.js +0 -69
- package/dist/cli/lib/oauth-providers/codebuddy.js.map +0 -1
- package/dist/cli/lib/oauth-providers/index.d.ts +0 -12
- package/dist/cli/lib/oauth-providers/index.js +0 -23
- package/dist/cli/lib/oauth-providers/index.js.map +0 -1
- package/dist/cli/lib/pi-optional.d.ts +0 -84
- package/dist/cli/lib/pi-optional.js +0 -35
- package/dist/cli/lib/pi-optional.js.map +0 -1
- package/dist/cli/lib/pod-ai-config.d.ts +0 -26
- package/dist/cli/lib/pod-ai-config.js +0 -99
- package/dist/cli/lib/pod-ai-config.js.map +0 -1
- package/dist/cli/lib/pod-thread-store.d.ts +0 -57
- package/dist/cli/lib/pod-thread-store.js +0 -312
- package/dist/cli/lib/pod-thread-store.js.map +0 -1
- package/dist/cli/lib/secretary-prompt.d.ts +0 -6
- package/dist/cli/lib/secretary-prompt.js +0 -85
- package/dist/cli/lib/secretary-prompt.js.map +0 -1
- package/dist/task/DrizzleTaskQueue.d.ts +0 -56
- package/dist/task/DrizzleTaskQueue.js +0 -171
- package/dist/task/DrizzleTaskQueue.js.map +0 -1
- package/dist/task/TaskExecutor.d.ts +0 -82
- package/dist/task/TaskExecutor.js +0 -198
- package/dist/task/TaskExecutor.js.map +0 -1
- package/dist/task/index.d.ts +0 -10
- package/dist/task/index.js +0 -20
- package/dist/task/index.js.map +0 -1
- package/dist/task/schema.d.ts +0 -53
- package/dist/task/schema.js +0 -71
- package/dist/task/schema.js.map +0 -1
- package/dist/task/types.d.ts +0 -186
- package/dist/task/types.js +0 -12
- package/dist/task/types.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RunStateCenter.js","sourceRoot":"","sources":["../../../src/api/runs/RunStateCenter.ts"],"names":[],"mappings":";;;AAUA,4CAO0B;AAG1B,6EAA0E;AAE1E,8CAAoD;AACpD,qCAAqE;AACrE,mCAQiB;AASjB,MAAM,oBAAoB,GAAG,IAAI,GAAG,CAAS;IAC3C,kBAAS,CAAC,aAAa;IACvB,kBAAS,CAAC,cAAc;CACzB,CAAC,CAAC;AAkBH;;;;;;GAMG;AACH,MAAa,cAAc;IAMzB,YAAmB,OAAwC;QACzD,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;QAC3B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACpD,IAAI,CAAC,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,IAAI,KAAK,CAAC;QAC9D,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,IAAI,IAAI,uDAA0B,EAAE,CAAC;IACvF,CAAC;IAEM,qBAAqB,CAAC,MAAsB,EAAE,OAAkB;QACrE,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC7B,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAM,OAAO,GAAI,MAAM,CAAC,QAAgB,EAAE,OAAO,CAAC;QAClD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;QACzE,CAAC;QACD,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,IAAkB,CAAC;QACrD,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;QACjE,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACrE,MAAM,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,eAAe,KAAK,IAAI,CAAC;QAChE,MAAM,IAAI,GAAG,eAAe,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;QAC/D,MAAM,SAAS,GAAG,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;QAChF,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;QACvE,CAAC;QAED,OAAO;YACL,GAAG,OAAO;YACV,SAAS;YACT,MAAM,EAAE;gBACN,GAAG,OAAO,CAAC,MAAM;gBACjB,IAAI;gBACJ,QAAQ;aACT;YACD,WAAW,EAAE,OAAO,CAAC,WAAW;SACX,CAAC;IAC1B,CAAC;IAEM,4BAA4B,CAAC,OAAiB;QACnD,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC7B,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,qBAAqB,CAAC,QAAiB;QAC7C,IAAI,QAAQ,KAAK,KAAK,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;YAC5C,OAAO,QAAQ,CAAC;QAClB,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,mBAAmB,CAAC,gBAAyB,EAAE,eAA4D;QACjH,IAAI,IAAA,sBAAc,EAAC,gBAAgB,CAAC,EAAE,CAAC;YACrC,OAAO,gBAAgB,CAAC;QAC1B,CAAC;QACD,OAAO,IAAA,sBAAc,EAAC,eAAe,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,SAAS,CAAC;IACvE,CAAC;IAEM,KAAK,CAAC,CAAC,aAAa,CAAC,KAK3B;QACC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,aAAa,EAAE,GAAG,KAAK,CAAC;QAC9D,MAAM,MAAM,GAAG,IAAA,8BAAsB,EAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAC3D,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;YACnB,OAAO;QACT,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;QACnD,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,sBAAsB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACzE,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC;YAC/B,MAAM;YACN,WAAW;YACX,MAAM;YACN,aAAa;YACb,OAAO;SACR,CAAC,CAAC;QAEH,MAAM,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,SAAS,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC;QAClE,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC;QAClD,MAAM,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QAExC,MAAM,cAAc,GAAoB,EAAE,IAAI,EAAE,aAAa,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;QAC9E,IAAI,YAAgC,CAAC;QAErC,IAAI,KAAK,EACP,MAAM,KAAK,IAAI,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC;YACzC,KAAK,EAAE,GAAG,CAAC,EAAE;YACb,QAAQ,EAAE,MAAM,CAAC,EAAE;YACnB,MAAM;YACN,YAAY,EAAE,MAAM,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,WAAW,CAAC,EAAE,EAAE,OAAO,CAAC;YAC7E,MAAM,EAAE,aAAa;YACrB,OAAO,EAAE,OAAuB;SACjC,CAAC,EACF,CAAC;YACD,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,SAAS,EAAE,cAAc,EAAE,OAAO,CAAC,CAAC;YAC3F,IAAI,YAAY,EAAE,CAAC;gBACjB,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC;gBAChD,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,mBAAmB,EAAE,OAAO,EAAE,4BAA4B,EAAE,CAAC;gBAC1F,OAAO;YACT,CAAC;YAED,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE;gBACpD,GAAG;gBACH,MAAM;gBACN,SAAS;gBACT,SAAS,EAAE,cAAc;gBACzB,OAAO;aACR,CAAC,CAAC;YACH,IAAI,MAAM,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;gBACjC,SAAS;YACX,CAAC;YACD,IAAI,MAAM,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;gBAC/B,OAAO;YACT,CAAC;YAED,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC;YAC9B,MAAM;QACR,CAAC;QAED,MAAM,WAAW,GAAG,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC;QAC9D,MAAM,SAAS,GAAG,IAAI,CAAC,wBAAwB,CAAC,cAAc,CAAC,IAAI,EAAE,cAAc,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;QAC3G,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;QACzD,MAAM,IAAI,CAAC,SAAS,CAClB,GAAG,EACH,YAAY,CAAC,CAAC,CAAC,kBAAS,CAAC,MAAM,CAAC,CAAC,CAAC,kBAAS,CAAC,SAAS,EACrD,OAAO,EACP,YAAY,CACb,CAAC;QACF,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;IAC/C,CAAC;IAEM,KAAK,CAAC,CAAC,wBAAwB,CAAC,KAKtC;QACC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC;QACrD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QACnE,IAAI,IAAI,CAAC,IAAI,KAAK,kBAAkB,EAAE,CAAC;YACrC,OAAO;QACT,CAAC;QAED,MAAM,WAAW,GAAuB;YACtC,GAAG,IAAI;YACP,MAAM;YACN,MAAM,EAAE,WAAW;SACpB,CAAC;QACF,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;QAC3D,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;QAE/C,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,8BAA8B,CAAC,WAAW,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;QACvF,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,OAAO;QACT,CAAC;QAED,MAAM,GAAG,GAAG,IAAA,oBAAY,GAAE,CAAC;QAC3B,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,wBAAW,CAAC,kBAAkB,EAAE,OAAO,EAAE;YACrE,OAAO,EAAE,WAAW,CAAC,IAAI;YACzB,IAAI,EAAE;gBACJ,MAAM,EAAE,WAAW,CAAC,EAAE;gBACtB,MAAM,EAAE,WAAW,CAAC,OAAO;gBAC3B,MAAM;aACP;SACF,CAAC,CAAC;QACH,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,wBAAW,CAAC,kBAAkB,EAAE,OAAO,EAAE;YACrE,OAAO,EAAE,4BAA4B;YACrC,IAAI,EAAE;gBACJ,IAAI,EAAE,oBAAoB;gBAC1B,MAAM,EAAE,WAAW,CAAC,EAAE;aACvB;SACF,CAAC,CAAC;QACH,GAAG,CAAC,MAAM,GAAG,kBAAS,CAAC,MAAM,CAAC;QAC9B,GAAG,CAAC,UAAU,GAAG,SAAS,CAAC;QAC3B,GAAG,CAAC,cAAc,GAAG,SAAS,CAAC;QAC/B,GAAG,CAAC,WAAW,GAAG,SAAS,CAAC;QAC5B,GAAG,CAAC,KAAK,GAAG,SAAS,CAAC;QACtB,GAAG,CAAC,SAAS,GAAG,GAAG,CAAC;QACpB,GAAG,CAAC,QAAQ,GAAG;YACb,GAAG,CAAC,GAAG,CAAC,QAAQ,IAAI,EAAE,CAAC;YACvB,YAAY,EAAE;gBACZ,IAAI,EAAE,oBAAoB;gBAC1B,MAAM,EAAE,WAAW,CAAC,EAAE;gBACtB,MAAM;gBACN,QAAQ,EAAE,GAAG;aACd;SACF,CAAC;QACF,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QAEjC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAC/D,MAAM,eAAe,GAAG,OAAO,GAAG,CAAC,QAAQ,EAAE,eAAe,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC,SAAS,CAAC;QACrH,MAAM,aAAa,GAAG,eAAe;YACnC,CAAC,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,EAAE,eAAe,EAAE,OAAO,CAAyB;YACxF,CAAC,CAAC,MAAM,IAAI,CAAC,sBAAsB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACvD,IAAI,CAAC,eAAe,EAAE,CAAC;YACrB,MAAM,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,SAAS,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC;YAClE,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC;QACpD,CAAC;QACD,MAAM,cAAc,GAAoB;YACtC,IAAI,EAAE,aAAa;YACnB,QAAQ,EAAE,IAAA,mCAA2B,EAAC,aAAa,CAAC,OAAO,CAAC;SAC7D,CAAC;QACF,MAAM,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QAExC,IAAI,KAAK,EACP,MAAM,KAAK,IAAI,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC;YACzC,KAAK,EAAE,GAAG,CAAC,EAAE;YACb,QAAQ,EAAE,IAAI,CAAC,sBAAsB,CAAC,SAAS,CAAC;YAChD,MAAM,EAAE,IAAI,CAAC,uBAAuB,CAAC,WAAW,CAAC;YACjD,YAAY,EAAE,MAAM,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,aAAa,IAAI,WAAW,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC;YACpH,MAAM,EAAE,IAAI,CAAC,mCAAmC,CAAC,GAAG,CAAC;YACrD,YAAY,EAAE;gBACZ,IAAI,EAAE,oBAAoB;gBAC1B,MAAM,EAAE,WAAW,CAAC,EAAE;aACvB;YACD,OAAO,EAAE,OAAuB;SACjC,CAAC,EACF,CAAC;YACD,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,SAAS,EAAE,cAAc,EAAE,OAAO,CAAC,CAAC;YAC3F,IAAI,YAAY,EAAE,CAAC;gBACjB,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC;gBAChD,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,mBAAmB,EAAE,OAAO,EAAE,4BAA4B,EAAE,CAAC;gBAC1F,OAAO;YACT,CAAC;YAED,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE;gBACpD,GAAG;gBACH,MAAM;gBACN,SAAS;gBACT,SAAS,EAAE,cAAc;gBACzB,OAAO;aACR,CAAC,CAAC;YACH,IAAI,MAAM,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;gBACjC,SAAS;YACX,CAAC;YACD,IAAI,MAAM,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;gBAC/B,OAAO;YACT,CAAC;YACD,MAAM,SAAS,GAAG,IAAI,CAAC,wBAAwB,CAAC,cAAc,CAAC,IAAI,EAAE,cAAc,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;YAC5G,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;YACzD,MAAM,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,kBAAS,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;YACrE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;YAC7C,OAAO;QACT,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,wBAAwB,CAAC,cAAc,CAAC,IAAI,EAAE,cAAc,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;QAC3G,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;QACzD,MAAM,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,kBAAS,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QACxD,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;IAC/C,CAAC;IAEO,eAAe,CAAC,KAA6B;QACnD,IACE,OAAO,KAAK,CAAC,OAAO,KAAK,UAAU;eAChC,OAAO,KAAK,CAAC,OAAO,KAAK,UAAU;eACnC,OAAO,KAAK,CAAC,QAAQ,KAAK,UAAU;eACpC,OAAO,KAAK,CAAC,aAAa,KAAK,UAAU;eACzC,OAAO,KAAK,CAAC,YAAY,KAAK,UAAU,EAC3C,CAAC;YACD,OAAO,KAA2B,CAAC;QACrC,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAEO,KAAK,CAAC,SAAS,CAAC,KAMvB;QACC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC;QACtE,MAAM,GAAG,GAAG,IAAA,oBAAY,GAAE,CAAC;QAC3B,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,EAAE,WAAW,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;QAC9E,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;QAChD,MAAM,GAAG,GAAkB;YACzB,EAAE,EAAE,IAAA,6BAAqB,EAAC;gBACxB,GAAG,EAAE,IAAA,kBAAU,EAAC,KAAK,CAAC;gBACtB,WAAW;gBACX,SAAS;gBACT,SAAS,EAAE,GAAG;aACf,CAAC;YACF,MAAM,EAAE,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,OAAO,CAAC;YAC9C,SAAS,EAAE,aAAa,CAAC,SAAS;YAClC,WAAW;YACX,SAAS;YACT,MAAM,EAAE,kBAAS,CAAC,MAAM;YACxB,MAAM,EAAE,GAAG,aAAa,CAAC,MAAM,CAAC,QAAQ,IAAI,IAAI,IAAI,aAAa,CAAC,MAAM,CAAC,IAAI,EAAE;YAC/E,MAAM;YACN,QAAQ,EAAE;gBACR,QAAQ,EAAE,MAAM,CAAC,EAAE;gBACnB,aAAa,EAAE,WAAW,CAAC,EAAE;gBAC7B,aAAa;gBACb,SAAS;aACV;YACD,SAAS,EAAE,GAAG;YACd,SAAS,EAAE,GAAG;SACf,CAAC;QACF,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QACjC,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,wBAAW,CAAC,OAAO,EAAE,OAAO,EAAE;YAC1D,OAAO,EAAE,aAAa;YACtB,IAAI,EAAE;gBACJ,WAAW,EAAE,GAAG,CAAC,WAAW;gBAC5B,MAAM,EAAE,GAAG,CAAC,MAAM;gBAClB,SAAS,EAAE,GAAG,CAAC,SAAS;gBACxB,MAAM,EAAE,GAAG,CAAC,MAAM;aACnB;SACF,CAAC,CAAC;QACH,OAAO,GAAG,CAAC;IACb,CAAC;IAEO,KAAK,CAAC,cAAc,CAAC,GAAkB,EAAE,OAAiB;QAChE,MAAM,GAAG,GAAG,IAAA,oBAAY,GAAE,CAAC;QAC3B,GAAG,CAAC,MAAM,GAAG,kBAAS,CAAC,OAAO,CAAC;QAC/B,GAAG,CAAC,SAAS,GAAG,GAAG,CAAC;QACpB,GAAG,CAAC,SAAS,GAAG,GAAG,CAAC;QACpB,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QACjC,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,wBAAW,CAAC,OAAO,EAAE,OAAO,EAAE;YAC1D,OAAO,EAAE,aAAa;SACvB,CAAC,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,SAAS,CACrB,GAAkB,EAClB,MAA+B,EAC/B,OAAiB,EACjB,KAAc;QAEd,MAAM,GAAG,GAAG,IAAA,oBAAY,GAAE,CAAC;QAC3B,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC;QACpB,GAAG,CAAC,WAAW,GAAG,GAAG,CAAC;QACtB,GAAG,CAAC,SAAS,GAAG,GAAG,CAAC;QACpB,GAAG,CAAC,KAAK,GAAG,KAAK,CAAC;QAClB,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QACjC,MAAM,IAAI,CAAC,aAAa,CACtB,GAAG,EACH,IAAI,CAAC,yBAAyB,CAAC,MAAM,CAAC,EACtC,OAAO,EACP;YACE,OAAO,EAAE,KAAK,IAAI,OAAO,MAAM,EAAE;YACjC,IAAI,EAAE,EAAE,MAAM,EAAE;SACjB,CACF,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,QAAQ,CACpB,GAAkB,EAClB,MAA+B,EAC/B,OAAiB,EACjB,OAAe;QAEf,MAAM,GAAG,GAAG,IAAA,oBAAY,GAAE,CAAC;QAC3B,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC;QACpB,GAAG,CAAC,WAAW,GAAG,SAAS,CAAC;QAC5B,GAAG,CAAC,WAAW,GAAG,GAAG,CAAC;QACtB,GAAG,CAAC,UAAU,GAAG,SAAS,CAAC;QAC3B,GAAG,CAAC,cAAc,GAAG,SAAS,CAAC;QAC/B,GAAG,CAAC,SAAS,GAAG,GAAG,CAAC;QACpB,GAAG,CAAC,KAAK,GAAG,OAAO,CAAC;QACpB,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IACnC,CAAC;IAEO,KAAK,CAAC,CAAC,mBAAmB,CAChC,KAAwB,EACxB,KAMC;QAED,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC;QAE7D,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YAC1B,SAAS,CAAC,QAAQ,IAAI,KAAK,CAAC,IAAI,CAAC;YACjC,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,wBAAW,CAAC,UAAU,EAAE,OAAO,EAAE;gBAC7D,OAAO,EAAE,KAAK,CAAC,IAAI;gBACnB,IAAI,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE;aAC5B,CAAC,CAAC;YACH,MAAM,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC;YAC7E,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;QAChC,CAAC;QAED,IAAI,KAAK,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;YACnC,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,wBAAW,CAAC,aAAa,EAAE,OAAO,EAAE;gBAChE,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,IAAI,EAAE;oBACJ,MAAM,EAAE,KAAK,CAAC,MAAM;oBACpB,GAAG,EAAE,KAAK,CAAC,GAAG;oBACd,OAAO,EAAE,KAAK,CAAC,OAAO;iBACvB;aACF,CAAC,CAAC;YACH,MAAM;gBACJ,IAAI,EAAE,eAAe;gBACrB,MAAM,EAAE;oBACN,WAAW,EAAE,uBAAuB;oBACpC,IAAI,EAAE;wBACJ,MAAM,EAAE,KAAK,CAAC,MAAM;wBACpB,GAAG,EAAE,KAAK,CAAC,GAAG;wBACd,OAAO,EAAE,KAAK,CAAC,OAAO;wBACtB,OAAO,EAAE,KAAK,CAAC,OAAO;qBACvB;iBACF;aACF,CAAC;YACF,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;QAChC,CAAC;QAED,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YAC/B,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,wBAAW,CAAC,SAAS,EAAE,OAAO,EAAE;gBAC5D,OAAO,EAAE,KAAK,CAAC,IAAI;gBACnB,IAAI,EAAE;oBACJ,SAAS,EAAE,KAAK,CAAC,SAAS;oBAC1B,IAAI,EAAE,KAAK,CAAC,IAAI;oBAChB,SAAS,EAAE,KAAK,CAAC,SAAS;iBAC3B;aACF,CAAC,CAAC;YACH,MAAM,QAAQ,GAAuB;gBACnC,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,kBAAkB,EAAE,MAAM,EAAE,OAAO,CAAC;gBAClE,SAAS,EAAE,MAAM,CAAC,EAAE;gBACpB,IAAI,EAAE,kBAAkB;gBACxB,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,SAAS,EAAE,KAAK,CAAC,SAAS;gBAC1B,OAAO,EAAE,KAAK,CAAC,SAAS;gBACxB,MAAM,EAAE,SAAS;gBACjB,QAAQ,EAAE;oBACR,KAAK,EAAE,GAAG,CAAC,EAAE;oBACb,eAAe,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE;iBACnC;gBACD,UAAU,EAAE,IAAA,oBAAY,GAAE;aAC3B,CAAC;YACF,MAAM,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,SAAS,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;YAC7D,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;YAE7C,MAAM,UAAU,GAAG,IAAI,CAAC,wBAAwB,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;YACnG,SAAS,CAAC,IAAI,GAAG,UAAU,CAAC;YAC5B,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;YAC1D,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;YAC9C,GAAG,CAAC,QAAQ,GAAG;gBACb,GAAG,CAAC,GAAG,CAAC,QAAQ,IAAI,EAAE,CAAC;gBACvB,eAAe,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE;gBAClC,WAAW,EAAE;oBACX,MAAM,EAAE,QAAQ,CAAC,EAAE;oBACnB,SAAS,EAAE,KAAK,CAAC,SAAS;oBAC1B,IAAI,EAAE,KAAK,CAAC,IAAI;iBACjB;aACF,CAAC;YACF,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,kBAAS,CAAC,aAAa,EAAE,OAAO,EAAE,mCAAmC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;YAC5G,MAAM;gBACJ,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,uBAAuB;gBAC7B,OAAO,EAAE,0CAA0C,KAAK,CAAC,IAAI,EAAE;aAChE,CAAC;YACF,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;QAC9B,CAAC;QAED,IAAI,KAAK,CAAC,IAAI,KAAK,gBAAgB,EAAE,CAAC;YACpC,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,wBAAW,CAAC,cAAc,EAAE,OAAO,EAAE;gBACjE,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,IAAI,EAAE;oBACJ,SAAS,EAAE,KAAK,CAAC,SAAS;iBAC3B;aACF,CAAC,CAAC;YACH,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC;YACxE,MAAM,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,kBAAS,CAAC,cAAc,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;YAC5E,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;QAC9B,CAAC;QAED,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,wBAAW,CAAC,KAAK,EAAE,OAAO,EAAE;YACxD,OAAO,EAAE,KAAK,CAAC,OAAO;SACvB,CAAC,CAAC;QACH,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC;QACvE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC;IACrD,CAAC;IAEO,KAAK,CAAC,iBAAiB,CAC7B,GAAkB,EAClB,SAAoB,EACpB,SAA0B,EAC1B,OAAiB;QAEjB,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,CAAC;YAC5B,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;QAC5D,IAAI,CAAC,MAAM,CAAC,iBAAiB,EAAE,CAAC;YAC9B,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,GAAG,CAAC,iBAAiB,GAAG,MAAM,CAAC,iBAAiB,CAAC;QACjD,MAAM,SAAS,GAAG,IAAI,CAAC,wBAAwB,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;QAClG,SAAS,CAAC,IAAI,GAAG,SAAS,CAAC;QAC3B,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;QACzD,MAAM,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,kBAAS,CAAC,SAAS,EAAE,OAAO,EAAE,4BAA4B,CAAC,CAAC;QACtF,OAAO,SAAS,CAAC;IACnB,CAAC;IAEO,yBAAyB,CAAC,MAA+B;QAC/D,IAAI,MAAM,KAAK,kBAAS,CAAC,SAAS,EAAE,CAAC;YACnC,OAAO,wBAAW,CAAC,SAAS,CAAC;QAC/B,CAAC;QACD,IAAI,MAAM,KAAK,kBAAS,CAAC,SAAS,EAAE,CAAC;YACnC,OAAO,wBAAW,CAAC,SAAS,CAAC;QAC/B,CAAC;QACD,IAAI,oBAAoB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;YACrC,OAAO,MAAM,KAAK,kBAAS,CAAC,cAAc,CAAC,CAAC,CAAC,wBAAW,CAAC,cAAc,CAAC,CAAC,CAAC,wBAAW,CAAC,aAAa,CAAC;QACtG,CAAC;QACD,OAAO,wBAAW,CAAC,MAAM,CAAC;IAC5B,CAAC;IAEO,KAAK,CAAC,OAAO,CAAC,GAAkB,EAAE,OAAiB;QACzD,MAAM,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IAC7C,CAAC;IAEO,KAAK,CAAC,aAAa,CACzB,GAAkB,EAClB,IAA+B,EAC/B,OAAiB,EACjB,UAGI,EAAE;QAEN,MAAM,SAAS,GAAG,IAAA,oBAAY,GAAE,CAAC;QACjC,MAAM,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;YACjC,EAAE,EAAE,IAAA,iCAAyB,EAAC;gBAC5B,GAAG,EAAE,IAAA,kBAAU,EAAC,UAAU,CAAC;gBAC3B,KAAK,EAAE,GAAG,CAAC,EAAE;gBACb,WAAW,EAAE,GAAG,CAAC,WAAW;gBAC5B,SAAS,EAAE,GAAG,CAAC,SAAS;gBACxB,SAAS;aACV,CAAC;YACF,WAAW,EAAE,GAAG,CAAC,WAAW;YAC5B,SAAS,EAAE,GAAG,CAAC,SAAS;YACxB,KAAK,EAAE,GAAG,CAAC,EAAE;YACb,GAAG,EAAE,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,OAAO,CAAC;YACrC,IAAI;YACJ,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,SAAS;SACV,EAAE,OAAO,CAAC,CAAC;IACd,CAAC;IAEO,gBAAgB,CAAC,MAAsB,EAAE,OAAiB;QAChE,MAAM,QAAQ,GAAG,MAAM,CAAC,EAAE,CAAC;QAC3B,IAAI,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YAClC,OAAO,QAAQ,CAAC;QAClB,CAAC;QAED,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,EAAE,WAAW,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;QAC9E,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;QAChD,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;QACnD,IAAI,UAAU,EAAE,CAAC;YACf,IAAI,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBACxD,OAAO,IAAA,8BAAsB,EAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;YACtD,CAAC;YACD,OAAO,GAAG,UAAU,UAAU,WAAW,IAAI,SAAS,cAAc,QAAQ,EAAE,CAAC;QACjF,CAAC;QACD,OAAO,mBAAmB,WAAW,IAAI,kBAAkB,CAAC,SAAS,CAAC,IAAI,kBAAkB,CAAC,QAAQ,CAAC,EAAE,CAAC;IAC3G,CAAC;IAEO,aAAa,CAAC,GAAkB,EAAE,OAAiB;QACzD,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;QACnD,IAAI,UAAU,EAAE,CAAC;YACf,OAAO,IAAA,8BAAsB,EAAC,UAAU,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;QACpD,CAAC;QACD,OAAO,IAAA,qBAAa,EAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC/B,CAAC;IAEO,KAAK,CAAC,8BAA8B,CAC1C,IAAwB,EACxB,SAAoB,EACpB,OAAiB;QAEjB,MAAM,aAAa,GAAG,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC;QAC3C,IAAI,OAAO,aAAa,KAAK,QAAQ,IAAI,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,CAAC;YAChE,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;YAChE,IAAI,GAAG,CAAC,MAAM,KAAK,kBAAS,CAAC,aAAa,EAAE,CAAC;gBAC3C,OAAO,GAAG,CAAC;YACb,CAAC;QACH,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,CAAC;YAC7B,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,MAAM,gBAAgB,GAAG,IAAI,CAAC,4BAA4B,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAC/E,KAAK,MAAM,MAAM,IAAI,gBAAgB,EAAE,CAAC;YACtC,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;gBAC9C,MAAM;gBACN,MAAM,EAAE,kBAAS,CAAC,aAAa;gBAC/B,KAAK,EAAE,EAAE;aACV,EAAE,OAAO,CAAC,CAAC;YACZ,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE;gBACpC,MAAM,IAAI,GAAG,GAAG,CAAC,QAAQ,EAAE,WAAW,CAAC;gBACvC,OAAO,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAK,IAAY,CAAC,MAAM,KAAK,IAAI,CAAC,EAAE,CAAC;YAC/E,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC;YACpB,IAAI,KAAK,EAAE,CAAC;gBACV,OAAO,KAAK,CAAC;YACf,CAAC;QACH,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAEO,sBAAsB,CAAC,SAAoB;QACjD,IAAI,SAAS,IAAI,SAAS,EAAE,CAAC;YAC3B,OAAO,SAAS,CAAC,SAAS,CAAC;QAC7B,CAAC;QACD,OAAO,SAAS,CAAC,SAAS,CAAC;IAC7B,CAAC;IAEO,4BAA4B,CAAC,SAAoB,EAAE,OAAiB;QAC1E,MAAM,UAAU,GAAa,EAAE,CAAC;QAChC,MAAM,GAAG,GAAG,CAAC,KAAyB,EAAQ,EAAE;YAC9C,IAAI,KAAK,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;gBACzC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACzB,CAAC;QACH,CAAC,CAAC;QAEF,MAAM,QAAQ,GAAG,IAAI,CAAC,sBAAsB,CAAC,SAAS,CAAC,CAAC;QACxD,GAAG,CAAC,QAAQ,CAAC,CAAC;QACd,MAAM,QAAQ,GAAG,IAAI,CAAC,2BAA2B,CAAC,QAAQ,CAAC,CAAC;QAC5D,GAAG,CAAC,QAAQ,CAAC,CAAC;QACd,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;QACnD,IAAI,UAAU,IAAI,QAAQ,EAAE,CAAC;YAC3B,GAAG,CAAC,IAAA,8BAAsB,EAAC,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC;QACpD,CAAC;QACD,OAAO,UAAU,CAAC;IACpB,CAAC;IAEO,2BAA2B,CAAC,QAAgB;QAClD,IAAI,wCAAwC,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC5D,OAAO,QAAQ,CAAC;QAClB,CAAC;QACD,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YACnC,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC;YAC9B,MAAM,MAAM,GAAG,SAAS,CAAC;YACzB,MAAM,KAAK,GAAG,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAC3C,IAAI,KAAK,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;gBAC3B,OAAO,GAAG,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;YACnE,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAEO,uBAAuB,CAAC,IAAwB;QACtD,OAAO,gEAAgE,IAAI,CAAC,IAAI,cAAc,IAAI,CAAC,MAAM,IAAI,EAAE,EAAE,CAAC;IACpH,CAAC;IAEO,mCAAmC,CAAC,GAAkB;QAC5D,MAAM,aAAa,GAAG,GAAG,CAAC,QAAQ,EAAE,aAAa,CAAC;QAClD,IAAI,aAAa,IAAI,OAAO,aAAa,KAAK,QAAQ,EAAE,CAAC;YACvD,OAAO,aAAmC,CAAC;QAC7C,CAAC;QACD,IAAI,CAAC,IAAA,sBAAc,EAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;YACnC,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;QACnD,CAAC;QACD,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC/C,OAAO;YACL,SAAS,EAAE,GAAG,CAAC,SAAS;YACxB,MAAM,EAAE;gBACN,QAAQ,EAAE,QAAQ,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI;gBAC3C,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI;aAC5C;SACF,CAAC;IACJ,CAAC;IAEO,YAAY,CAAC,KAAc;QACjC,OAAO,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,OAAO,IAAI,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,WAAW,CAAC;IAC5F,CAAC;IAEO,gBAAgB,CAAC,MAAsB;QAC7C,IAAI,OAAO,MAAM,CAAC,QAAQ,EAAE,UAAU,KAAK,QAAQ,EAAE,CAAC;YACpD,OAAO,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC;QACpC,CAAC;QACD,IAAI,OAAO,MAAM,CAAC,QAAQ,EAAE,OAAO,KAAK,QAAQ,EAAE,CAAC;YACjD,OAAO,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC;QACjC,CAAC;QACD,OAAO,8BAAsB,CAAC;IAChC,CAAC;IAEO,iBAAiB,CAAC,OAAiB;QACzC,MAAM,IAAI,GAAI,OAAmC,CAAC,IAAuC,CAAC;QAC1F,MAAM,KAAK,GAAG,OAAO,IAAI,EAAE,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;QACvE,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC;YAC3B,GAAG,CAAC,IAAI,GAAG,EAAE,CAAC;YACd,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC;YAChB,MAAM,cAAc,GAAG,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;YACxD,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC;gBAC9C,OAAO,SAAS,CAAC;YACnB,CAAC;YACD,MAAM,OAAO,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC;YACxE,GAAG,CAAC,QAAQ,GAAG,OAAO,CAAC;YACvB,OAAO,GAAG,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAC3C,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,sBAAsB,CAClC,MAAsB,EACtB,OAAiB;QAEjB,OAAO;YACL,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,mBAAmB,EAAE,MAAM,EAAE,OAAO,CAAC;YACnE,SAAS,EAAE,MAAM,CAAC,EAAE;YACpB,IAAI,EAAE,mBAAmB;YACzB,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;YAC5C,MAAM,EAAE,aAAa;YACrB,UAAU,EAAE,IAAA,oBAAY,GAAE;SAC3B,CAAC;IACJ,CAAC;IAEO,wBAAwB,CAC9B,IAA0B,EAC1B,IAAY,EACZ,MAAkC;QAElC,OAAO;YACL,GAAG,IAAI;YACP,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;YACxC,MAAM;SACP,CAAC;IACJ,CAAC;IAEO,mBAAmB,CAAC,MAAsB;QAChD,OAAO,IAAA,mBAAW,EAAC;YACjB,SAAS,EAAE,MAAM,CAAC,EAAE;YACpB,OAAO,EAAE,OAAO,MAAM,CAAC,QAAQ,EAAE,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,8BAAsB;SACzG,CAAC,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,gBAAgB,CAC5B,SAAoB,EACpB,oBAA4B,EAC5B,OAAiB;QAEjB,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;QAC3F,MAAM,YAAY,GAA2E,EAAE,CAAC;QAEhG,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;YAC9B,IAAI,IAAI,CAAC,EAAE,KAAK,oBAAoB,EAAE,CAAC;gBACrC,MAAM;YACR,CAAC;YACD,IAAI,IAAI,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;gBACjC,MAAM,IAAI,GAAG,IAAA,8BAAsB,EAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;gBACzD,IAAI,IAAI,EAAE,CAAC;oBACT,YAAY,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;gBACxE,CAAC;gBACD,SAAS;YACX,CAAC;YACD,IAAI,IAAI,CAAC,IAAI,KAAK,mBAAmB,IAAI,IAAI,CAAC,MAAM,KAAK,aAAa,EAAE,CAAC;gBACvE,MAAM,IAAI,GAAG,IAAA,mCAA2B,EAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;gBAC9D,IAAI,IAAI,EAAE,CAAC;oBACT,YAAY,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;gBAC7E,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,YAAY,CAAC;IACtB,CAAC;CACF;AAhxBD,wCAgxBC","sourcesContent":["import type { ChatKitStore, StoreContext } from '../chatkit/store';\nimport type {\n AssistantMessageItem,\n ClientEffect,\n ClientToolCallItem,\n ThreadItem,\n ThreadMetadata,\n ThreadRef,\n UserMessageItem,\n} from '../chatkit/types';\nimport {\n DEFAULT_THREAD_CHAT_ID,\n extractAssistantMessageText,\n extractUserMessageText,\n generateId,\n toThreadRef,\n nowTimestamp,\n} from '../chatkit/types';\nimport type { AgentRuntimeConfig, RunnerProtocol, RunnerType } from './AgentRuntimeTypes';\nimport type { AgentRuntimeEvent } from './AgentRuntimeTypes';\nimport { InngestRunExecutionBackend } from './InngestRunExecutionBackend';\nimport type { RunExecutionBackend } from './RunExecutionBackend';\nimport { isWorkspaceUri } from '../workspace/types';\nimport { XpodRunStepType as RunStepType, RunStatus } from './schema';\nimport {\n generateRunResourceId,\n generateRunStepResourceId,\n resolveDataResourceIri,\n resolveRunUrn,\n type RunRecordData,\n type RunStepRecordData,\n type RunStore,\n} from './store';\n\nexport type RunStateEvent =\n | { type: 'item_added'; item: ThreadItem }\n | { type: 'item_updated'; itemId: string; delta: string }\n | { type: 'item_done'; item: ThreadItem }\n | { type: 'client_effect'; effect: ClientEffect }\n | { type: 'error'; code: string; message: string };\n\nconst RUN_WAITING_STATUSES = new Set<string>([\n RunStatus.WAITING_INPUT,\n RunStatus.WAITING_RUNNER,\n]);\n\ntype ActiveAssistant = {\n item: AssistantMessageItem;\n fullText: string;\n};\n\ntype RuntimeProjectionResult =\n | { action: 'continue' }\n | { action: 'return' }\n | { action: 'error'; message: string };\n\nexport interface RunStateCenterOptions<TContext = StoreContext> {\n store: ChatKitStore<TContext>;\n enableAgentRuntime?: boolean;\n executionBackend?: RunExecutionBackend;\n}\n\n/**\n * Run is the xpod-side state center for Agent execution.\n *\n * ChatKit and Task APIs are command surfaces. They hand execution to this\n * center, which persists first-class Run/RunStep facts through the configured\n * RunStore while projecting visible output back to Thread/Message.\n */\nexport class RunStateCenter<TContext = StoreContext> {\n private readonly store: ChatKitStore<TContext>;\n private readonly runStore?: RunStore<TContext>;\n private readonly enableAgentRuntime: boolean;\n private readonly executionBackend: RunExecutionBackend;\n\n public constructor(options: RunStateCenterOptions<TContext>) {\n this.store = options.store;\n this.runStore = this.resolveRunStore(options.store);\n this.enableAgentRuntime = options.enableAgentRuntime ?? false;\n this.executionBackend = options.executionBackend ?? new InngestRunExecutionBackend();\n }\n\n public getAgentRuntimeConfig(thread: ThreadMetadata, context?: TContext): AgentRuntimeConfig | null {\n if (!this.enableAgentRuntime) {\n return null;\n }\n const runtime = (thread.metadata as any)?.runtime;\n if (!runtime) {\n return null;\n }\n if (!runtime.runner) {\n throw new Error('Invalid thread.metadata.runtime: runner is required');\n }\n const runnerType = runtime.runner.type as RunnerType;\n if (!runnerType) {\n throw new Error('Invalid thread.metadata.runtime.runner.type');\n }\n\n const protocol = this.resolveRunnerProtocol(runtime.runner.protocol);\n const allowCustomArgv = runtime.runner.allowCustomArgv === true;\n const argv = allowCustomArgv ? runtime.runner.argv : undefined;\n const workspace = this.resolveWorkspaceUri(runtime.workspace, thread.workspace);\n if (!workspace) {\n throw new Error('Invalid thread runtime: workspace URI is required');\n }\n\n return {\n ...runtime,\n workspace,\n runner: {\n ...runtime.runner,\n argv,\n protocol,\n },\n agentConfig: runtime.agentConfig,\n } as AgentRuntimeConfig;\n }\n\n public getDefaultAgentRuntimeConfig(context: TContext): AgentRuntimeConfig | null {\n if (!this.enableAgentRuntime) {\n return null;\n }\n return null;\n }\n\n private resolveRunnerProtocol(protocol: unknown): RunnerProtocol {\n if (protocol === 'acp' || protocol === 'pi') {\n return protocol;\n }\n return 'pi';\n }\n\n private resolveWorkspaceUri(runtimeWorkspace: unknown, threadWorkspace: AgentRuntimeConfig['workspace'] | undefined): AgentRuntimeConfig['workspace'] | undefined {\n if (isWorkspaceUri(runtimeWorkspace)) {\n return runtimeWorkspace;\n }\n return isWorkspaceUri(threadWorkspace) ? threadWorkspace : undefined;\n }\n\n public async *startAgentRun(input: {\n thread: ThreadMetadata;\n userMessage: UserMessageItem;\n context: TContext;\n runtimeConfig: AgentRuntimeConfig;\n }): AsyncIterable<RunStateEvent> {\n const { thread, userMessage, context, runtimeConfig } = input;\n const prompt = extractUserMessageText(userMessage.content);\n if (!prompt.trim()) {\n return;\n }\n\n const threadRef = this.threadRefFromThread(thread);\n const assistantItem = await this.createAssistantMessage(thread, context);\n const run = await this.createRun({\n thread,\n userMessage,\n prompt,\n runtimeConfig,\n context,\n });\n\n await this.store.addThreadItem(threadRef, assistantItem, context);\n yield { type: 'item_added', item: assistantItem };\n await this.markRunStarted(run, context);\n\n const assistantState: ActiveAssistant = { item: assistantItem, fullText: '' };\n let runtimeError: string | undefined;\n\n for await (\n const event of this.executionBackend.start({\n runId: run.id,\n threadId: thread.id,\n prompt,\n conversation: await this.loadConversation(threadRef, userMessage.id, context),\n config: runtimeConfig,\n context: context as StoreContext,\n })\n ) {\n const cancellation = await this.checkCancellation(run, threadRef, assistantState, context);\n if (cancellation) {\n yield { type: 'item_done', item: cancellation };\n yield { type: 'error', code: 'runtime_cancelled', message: 'Run cancellation requested' };\n return;\n }\n\n const result = yield* this.projectRuntimeEvent(event, {\n run,\n thread,\n threadRef,\n assistant: assistantState,\n context,\n });\n if (result.action === 'continue') {\n continue;\n }\n if (result.action === 'return') {\n return;\n }\n\n runtimeError = result.message;\n break;\n }\n\n const finalStatus = runtimeError ? 'incomplete' : 'completed';\n const finalItem = this.finalizeAssistantMessage(assistantState.item, assistantState.fullText, finalStatus);\n await this.store.saveItem(threadRef, finalItem, context);\n await this.finishRun(\n run,\n runtimeError ? RunStatus.FAILED : RunStatus.COMPLETED,\n context,\n runtimeError,\n );\n yield { type: 'item_done', item: finalItem };\n }\n\n public async *completeClientToolOutput(input: {\n threadRef: ThreadRef;\n itemId: string;\n output: string;\n context: TContext;\n }): AsyncIterable<RunStateEvent> {\n const { threadRef, itemId, output, context } = input;\n const item = await this.store.loadItem(threadRef, itemId, context);\n if (item.type !== 'client_tool_call') {\n return;\n }\n\n const updatedItem: ClientToolCallItem = {\n ...item,\n output,\n status: 'completed',\n };\n await this.store.saveItem(threadRef, updatedItem, context);\n yield { type: 'item_done', item: updatedItem };\n\n const run = await this.resolveWaitingRunForToolOutput(updatedItem, threadRef, context);\n if (!run) {\n return;\n }\n\n const now = nowTimestamp();\n await this.appendRunStep(run, RunStepType.CLIENT_TOOL_OUTPUT, context, {\n message: updatedItem.name,\n data: {\n itemId: updatedItem.id,\n callId: updatedItem.call_id,\n output,\n },\n });\n await this.appendRunStep(run, RunStepType.CONTINUE_REQUESTED, context, {\n message: 'Run continuation requested',\n data: {\n kind: 'client_tool_output',\n itemId: updatedItem.id,\n },\n });\n run.status = RunStatus.QUEUED;\n run.leaseOwner = undefined;\n run.leaseExpiresAt = undefined;\n run.completedAt = undefined;\n run.error = undefined;\n run.updatedAt = now;\n run.metadata = {\n ...(run.metadata ?? {}),\n continuation: {\n kind: 'client_tool_output',\n itemId: updatedItem.id,\n output,\n queuedAt: now,\n },\n };\n await this.saveRun(run, context);\n\n const thread = await this.store.loadThread(threadRef, context);\n const assistantItemId = typeof run.metadata?.assistantItemId === 'string' ? run.metadata.assistantItemId : undefined;\n const assistantItem = assistantItemId\n ? await this.store.loadItem(threadRef, assistantItemId, context) as AssistantMessageItem\n : await this.createAssistantMessage(thread, context);\n if (!assistantItemId) {\n await this.store.addThreadItem(threadRef, assistantItem, context);\n yield { type: 'item_added', item: assistantItem };\n }\n const assistantState: ActiveAssistant = {\n item: assistantItem,\n fullText: extractAssistantMessageText(assistantItem.content),\n };\n await this.markRunStarted(run, context);\n\n for await (\n const event of this.executionBackend.start({\n runId: run.id,\n threadId: this.extractThreadIdFromRef(threadRef),\n prompt: this.buildContinuationPrompt(updatedItem),\n conversation: await this.loadConversation(threadRef, String(run.metadata?.userMessageId ?? updatedItem.id), context),\n config: this.resolveRuntimeConfigForContinuation(run),\n continuation: {\n kind: 'client_tool_output',\n itemId: updatedItem.id,\n },\n context: context as StoreContext,\n })\n ) {\n const cancellation = await this.checkCancellation(run, threadRef, assistantState, context);\n if (cancellation) {\n yield { type: 'item_done', item: cancellation };\n yield { type: 'error', code: 'runtime_cancelled', message: 'Run cancellation requested' };\n return;\n }\n\n const result = yield* this.projectRuntimeEvent(event, {\n run,\n thread,\n threadRef,\n assistant: assistantState,\n context,\n });\n if (result.action === 'continue') {\n continue;\n }\n if (result.action === 'return') {\n return;\n }\n const finalItem = this.finalizeAssistantMessage(assistantState.item, assistantState.fullText, 'incomplete');\n await this.store.saveItem(threadRef, finalItem, context);\n await this.finishRun(run, RunStatus.FAILED, context, result.message);\n yield { type: 'item_done', item: finalItem };\n return;\n }\n\n const finalItem = this.finalizeAssistantMessage(assistantState.item, assistantState.fullText, 'completed');\n await this.store.saveItem(threadRef, finalItem, context);\n await this.finishRun(run, RunStatus.COMPLETED, context);\n yield { type: 'item_done', item: finalItem };\n }\n\n private resolveRunStore(store: ChatKitStore<TContext>): RunStore<TContext> | undefined {\n if (\n typeof store.saveRun === 'function'\n && typeof store.loadRun === 'function'\n && typeof store.listRuns === 'function'\n && typeof store.appendRunStep === 'function'\n && typeof store.loadRunSteps === 'function'\n ) {\n return store as RunStore<TContext>;\n }\n return undefined;\n }\n\n private async createRun(input: {\n thread: ThreadMetadata;\n userMessage: UserMessageItem;\n prompt: string;\n runtimeConfig: AgentRuntimeConfig;\n context: TContext;\n }): Promise<RunRecordData> {\n const { thread, userMessage, prompt, runtimeConfig, context } = input;\n const now = nowTimestamp();\n const commandKind = thread.metadata?.commandKind === 'task' ? 'task' : 'chat';\n const surfaceId = this.resolveSurfaceId(thread);\n const run: RunRecordData = {\n id: generateRunResourceId({\n key: generateId('run'),\n commandKind,\n surfaceId,\n createdAt: now,\n }),\n thread: this.resolveThreadUri(thread, context),\n workspace: runtimeConfig.workspace,\n commandKind,\n surfaceId,\n status: RunStatus.QUEUED,\n runner: `${runtimeConfig.runner.protocol ?? 'pi'}:${runtimeConfig.runner.type}`,\n prompt,\n metadata: {\n threadId: thread.id,\n userMessageId: userMessage.id,\n runtimeConfig,\n surfaceId,\n },\n createdAt: now,\n updatedAt: now,\n };\n await this.saveRun(run, context);\n await this.appendRunStep(run, RunStepType.CREATED, context, {\n message: 'Run created',\n data: {\n commandKind: run.commandKind,\n thread: run.thread,\n workspace: run.workspace,\n runner: run.runner,\n },\n });\n return run;\n }\n\n private async markRunStarted(run: RunRecordData, context: TContext): Promise<void> {\n const now = nowTimestamp();\n run.status = RunStatus.RUNNING;\n run.startedAt = now;\n run.updatedAt = now;\n await this.saveRun(run, context);\n await this.appendRunStep(run, RunStepType.STARTED, context, {\n message: 'Run started',\n });\n }\n\n private async finishRun(\n run: RunRecordData,\n status: RunRecordData['status'],\n context: TContext,\n error?: string,\n ): Promise<void> {\n const now = nowTimestamp();\n run.status = status;\n run.completedAt = now;\n run.updatedAt = now;\n run.error = error;\n await this.saveRun(run, context);\n await this.appendRunStep(\n run,\n this.stepTypeForTerminalStatus(status),\n context,\n {\n message: error ?? `Run ${status}`,\n data: { status },\n },\n );\n }\n\n private async pauseRun(\n run: RunRecordData,\n status: RunRecordData['status'],\n context: TContext,\n message: string,\n ): Promise<void> {\n const now = nowTimestamp();\n run.status = status;\n run.completedAt = undefined;\n run.heartbeatAt = now;\n run.leaseOwner = undefined;\n run.leaseExpiresAt = undefined;\n run.updatedAt = now;\n run.error = message;\n await this.saveRun(run, context);\n }\n\n private async *projectRuntimeEvent(\n event: AgentRuntimeEvent,\n input: {\n run: RunRecordData;\n thread: ThreadMetadata;\n threadRef: ThreadRef;\n assistant: ActiveAssistant;\n context: TContext;\n },\n ): AsyncGenerator<RunStateEvent, RuntimeProjectionResult> {\n const { run, thread, threadRef, assistant, context } = input;\n\n if (event.type === 'text') {\n assistant.fullText += event.text;\n await this.appendRunStep(run, RunStepType.TEXT_DELTA, context, {\n message: event.text,\n data: { delta: event.text },\n });\n yield { type: 'item_updated', itemId: assistant.item.id, delta: event.text };\n return { action: 'continue' };\n }\n\n if (event.type === 'auth_required') {\n await this.appendRunStep(run, RunStepType.AUTH_REQUIRED, context, {\n message: event.message,\n data: {\n method: event.method,\n url: event.url,\n options: event.options,\n },\n });\n yield {\n type: 'client_effect',\n effect: {\n effect_type: 'runtime.auth_required',\n data: {\n method: event.method,\n url: event.url,\n message: event.message,\n options: event.options,\n },\n },\n };\n return { action: 'continue' };\n }\n\n if (event.type === 'tool_call') {\n await this.appendRunStep(run, RunStepType.TOOL_CALL, context, {\n message: event.name,\n data: {\n requestId: event.requestId,\n name: event.name,\n arguments: event.arguments,\n },\n });\n const toolItem: ClientToolCallItem = {\n id: this.store.generateItemId('client_tool_call', thread, context),\n thread_id: thread.id,\n type: 'client_tool_call',\n name: event.name,\n arguments: event.arguments,\n call_id: event.requestId,\n status: 'pending',\n metadata: {\n runId: run.id,\n assistantItemId: assistant.item.id,\n },\n created_at: nowTimestamp(),\n };\n await this.store.addThreadItem(threadRef, toolItem, context);\n yield { type: 'item_added', item: toolItem };\n\n const incomplete = this.finalizeAssistantMessage(assistant.item, assistant.fullText, 'incomplete');\n assistant.item = incomplete;\n await this.store.saveItem(threadRef, incomplete, context);\n yield { type: 'item_done', item: incomplete };\n run.metadata = {\n ...(run.metadata ?? {}),\n assistantItemId: assistant.item.id,\n waitingTool: {\n itemId: toolItem.id,\n requestId: event.requestId,\n name: event.name,\n },\n };\n await this.pauseRun(run, RunStatus.WAITING_INPUT, context, `Waiting for client tool output: ${event.name}`);\n yield {\n type: 'error',\n code: 'runtime_waiting_input',\n message: `Run is waiting for client tool output: ${event.name}`,\n };\n return { action: 'return' };\n }\n\n if (event.type === 'waiting_runner') {\n await this.appendRunStep(run, RunStepType.WAITING_RUNNER, context, {\n message: event.message,\n data: {\n workspace: event.workspace,\n },\n });\n yield { type: 'error', code: 'waiting_runner', message: event.message };\n await this.finishRun(run, RunStatus.WAITING_RUNNER, context, event.message);\n return { action: 'return' };\n }\n\n await this.appendRunStep(run, RunStepType.ERROR, context, {\n message: event.message,\n });\n yield { type: 'error', code: 'runtime_error', message: event.message };\n return { action: 'error', message: event.message };\n }\n\n private async checkCancellation(\n run: RunRecordData,\n threadRef: ThreadRef,\n assistant: ActiveAssistant,\n context: TContext,\n ): Promise<AssistantMessageItem | undefined> {\n if (!this.runStore?.loadRun) {\n return undefined;\n }\n const latest = await this.runStore.loadRun(run.id, context);\n if (!latest.cancelRequestedAt) {\n return undefined;\n }\n run.cancelRequestedAt = latest.cancelRequestedAt;\n const finalItem = this.finalizeAssistantMessage(assistant.item, assistant.fullText, 'incomplete');\n assistant.item = finalItem;\n await this.store.saveItem(threadRef, finalItem, context);\n await this.finishRun(run, RunStatus.CANCELLED, context, 'Run cancellation requested');\n return finalItem;\n }\n\n private stepTypeForTerminalStatus(status: RunRecordData['status']): RunStepRecordData['type'] {\n if (status === RunStatus.COMPLETED) {\n return RunStepType.COMPLETED;\n }\n if (status === RunStatus.CANCELLED) {\n return RunStepType.CANCELLED;\n }\n if (RUN_WAITING_STATUSES.has(status)) {\n return status === RunStatus.WAITING_RUNNER ? RunStepType.WAITING_RUNNER : RunStepType.WAITING_INPUT;\n }\n return RunStepType.FAILED;\n }\n\n private async saveRun(run: RunRecordData, context: TContext): Promise<void> {\n await this.runStore?.saveRun(run, context);\n }\n\n private async appendRunStep(\n run: RunRecordData,\n type: RunStepRecordData['type'],\n context: TContext,\n options: {\n message?: string;\n data?: Record<string, unknown>;\n } = {},\n ): Promise<void> {\n const createdAt = nowTimestamp();\n await this.runStore?.appendRunStep({\n id: generateRunStepResourceId({\n key: generateId('run-step'),\n runId: run.id,\n commandKind: run.commandKind,\n surfaceId: run.surfaceId,\n createdAt,\n }),\n commandKind: run.commandKind,\n surfaceId: run.surfaceId,\n runId: run.id,\n run: this.resolveRunUri(run, context),\n type,\n message: options.message,\n data: options.data,\n createdAt,\n }, context);\n }\n\n private resolveThreadUri(thread: ThreadMetadata, context: TContext): string {\n const threadId = thread.id;\n if (/^https?:\\/\\//.test(threadId)) {\n return threadId;\n }\n\n const commandKind = thread.metadata?.commandKind === 'task' ? 'task' : 'chat';\n const surfaceId = this.resolveSurfaceId(thread);\n const podBaseUrl = this.resolvePodBaseUrl(context);\n if (podBaseUrl) {\n if (threadId.includes('#') && !threadId.startsWith('#')) {\n return resolveDataResourceIri(podBaseUrl, threadId);\n }\n return `${podBaseUrl}/.data/${commandKind}/${surfaceId}/index.ttl#${threadId}`;\n }\n return `urn:xpod:thread:${commandKind}:${encodeURIComponent(surfaceId)}:${encodeURIComponent(threadId)}`;\n }\n\n private resolveRunUri(run: RunRecordData, context: TContext): string {\n const podBaseUrl = this.resolvePodBaseUrl(context);\n if (podBaseUrl) {\n return resolveDataResourceIri(podBaseUrl, run.id);\n }\n return resolveRunUrn(run.id);\n }\n\n private async resolveWaitingRunForToolOutput(\n item: ClientToolCallItem,\n threadRef: ThreadRef,\n context: TContext,\n ): Promise<RunRecordData | undefined> {\n const metadataRunId = item.metadata?.runId;\n if (typeof metadataRunId === 'string' && this.runStore?.loadRun) {\n const run = await this.runStore.loadRun(metadataRunId, context);\n if (run.status === RunStatus.WAITING_INPUT) {\n return run;\n }\n }\n\n if (!this.runStore?.listRuns) {\n return undefined;\n }\n\n const threadCandidates = this.threadCandidatesForRunLookup(threadRef, context);\n for (const thread of threadCandidates) {\n const candidates = await this.runStore.listRuns({\n thread,\n status: RunStatus.WAITING_INPUT,\n limit: 10,\n }, context);\n const match = candidates.find((run) => {\n const tool = run.metadata?.waitingTool;\n return !tool || typeof tool !== 'object' || (tool as any).itemId === item.id;\n }) ?? candidates[0];\n if (match) {\n return match;\n }\n }\n return undefined;\n }\n\n private extractThreadIdFromRef(threadRef: ThreadRef): string {\n if ('chat_id' in threadRef) {\n return threadRef.thread_id;\n }\n return threadRef.thread_id;\n }\n\n private threadCandidatesForRunLookup(threadRef: ThreadRef, context: TContext): string[] {\n const candidates: string[] = [];\n const add = (value: string | undefined): void => {\n if (value && !candidates.includes(value)) {\n candidates.push(value);\n }\n };\n\n const threadId = this.extractThreadIdFromRef(threadRef);\n add(threadId);\n const relative = this.extractBaseRelativeThreadId(threadId);\n add(relative);\n const podBaseUrl = this.resolvePodBaseUrl(context);\n if (podBaseUrl && relative) {\n add(resolveDataResourceIri(podBaseUrl, relative));\n }\n return candidates;\n }\n\n private extractBaseRelativeThreadId(threadId: string): string | undefined {\n if (/^(chat|task)\\/[^/]+\\/index\\.ttl#[^#]+$/.test(threadId)) {\n return threadId;\n }\n if (!/^https?:\\/\\//.test(threadId)) {\n return undefined;\n }\n try {\n const url = new URL(threadId);\n const marker = '/.data/';\n const index = url.pathname.indexOf(marker);\n if (index >= 0 && url.hash) {\n return `${url.pathname.slice(index + marker.length)}${url.hash}`;\n }\n } catch {\n return undefined;\n }\n return undefined;\n }\n\n private buildContinuationPrompt(item: ClientToolCallItem): string {\n return `Continue the previous run after client tool output.\\n\\nTool: ${item.name}\\nOutput:\\n${item.output ?? ''}`;\n }\n\n private resolveRuntimeConfigForContinuation(run: RunRecordData): AgentRuntimeConfig {\n const runtimeConfig = run.metadata?.runtimeConfig;\n if (runtimeConfig && typeof runtimeConfig === 'object') {\n return runtimeConfig as AgentRuntimeConfig;\n }\n if (!isWorkspaceUri(run.workspace)) {\n throw new Error('Run workspace URI is required');\n }\n const [protocol, type] = run.runner.split(':');\n return {\n workspace: run.workspace,\n runner: {\n protocol: protocol === 'acp' ? 'acp' : 'pi',\n type: this.isRunnerType(type) ? type : 'pi',\n },\n };\n }\n\n private isRunnerType(value: unknown): value is RunnerType {\n return value === 'pi' || value === 'codex' || value === 'claude' || value === 'codebuddy';\n }\n\n private resolveSurfaceId(thread: ThreadMetadata): string {\n if (typeof thread.metadata?.surface_id === 'string') {\n return thread.metadata.surface_id;\n }\n if (typeof thread.metadata?.chat_id === 'string') {\n return thread.metadata.chat_id;\n }\n return DEFAULT_THREAD_CHAT_ID;\n }\n\n private resolvePodBaseUrl(context: TContext): string | undefined {\n const auth = (context as Record<string, unknown>).auth as { webId?: unknown } | undefined;\n const webId = typeof auth?.webId === 'string' ? auth.webId : undefined;\n if (!webId) {\n return undefined;\n }\n try {\n const url = new URL(webId);\n url.hash = '';\n url.search = '';\n const normalizedPath = url.pathname.replace(/\\/+$/, '');\n if (!normalizedPath.endsWith('/profile/card')) {\n return undefined;\n }\n const podPath = normalizedPath.slice(0, -'/profile/card'.length) || '/';\n url.pathname = podPath;\n return url.toString().replace(/\\/$/, '');\n } catch {\n return undefined;\n }\n }\n\n private async createAssistantMessage(\n thread: ThreadMetadata,\n context: TContext,\n ): Promise<AssistantMessageItem> {\n return {\n id: this.store.generateItemId('assistant_message', thread, context),\n thread_id: thread.id,\n type: 'assistant_message',\n content: [{ type: 'output_text', text: '' }],\n status: 'in_progress',\n created_at: nowTimestamp(),\n };\n }\n\n private finalizeAssistantMessage(\n item: AssistantMessageItem,\n text: string,\n status: 'completed' | 'incomplete',\n ): AssistantMessageItem {\n return {\n ...item,\n content: [{ type: 'output_text', text }],\n status,\n };\n }\n\n private threadRefFromThread(thread: ThreadMetadata): ThreadRef {\n return toThreadRef({\n thread_id: thread.id,\n chat_id: typeof thread.metadata?.chat_id === 'string' ? thread.metadata.chat_id : DEFAULT_THREAD_CHAT_ID,\n });\n }\n\n private async loadConversation(\n threadRef: ThreadRef,\n currentUserMessageId: string,\n context: TContext,\n ): Promise<Array<{ role: 'user' | 'assistant'; text: string; createdAt: number }>> {\n const items = await this.store.loadThreadItems(threadRef, undefined, 1000, 'asc', context);\n const conversation: Array<{ role: 'user' | 'assistant'; text: string; createdAt: number }> = [];\n\n for (const item of items.data) {\n if (item.id === currentUserMessageId) {\n break;\n }\n if (item.type === 'user_message') {\n const text = extractUserMessageText(item.content).trim();\n if (text) {\n conversation.push({ role: 'user', text, createdAt: item.created_at });\n }\n continue;\n }\n if (item.type === 'assistant_message' && item.status !== 'in_progress') {\n const text = extractAssistantMessageText(item.content).trim();\n if (text) {\n conversation.push({ role: 'assistant', text, createdAt: item.created_at });\n }\n }\n }\n\n return conversation;\n }\n}\n"]}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { RunStatus, RunStepType, type RunRow, type RunStatusType, type RunStepRow, type RunStepTypeValue } from '@undefineds.co/models';
|
|
2
|
+
export declare const Run: import("@undefineds.co/drizzle-solid/dist/core/schema").PodTableWithColumns<import("@undefineds.co/drizzle-solid/dist/core/schema").ResolvedColumns<{
|
|
3
|
+
id: import("@undefineds.co/drizzle-solid/dist/core/schema").PodStringColumn<false, false>;
|
|
4
|
+
commandKind: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"string", null, true, true>;
|
|
5
|
+
surfaceId: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"string", null, true, true>;
|
|
6
|
+
task: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"uri", null, false, false>;
|
|
7
|
+
thread: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"uri", null, true, false>;
|
|
8
|
+
workspace: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"uri", null, true, false>;
|
|
9
|
+
status: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"string", null, true, true>;
|
|
10
|
+
runner: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"string", null, true, false>;
|
|
11
|
+
prompt: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"string", null, false, false>;
|
|
12
|
+
externalRunId: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"string", null, false, false>;
|
|
13
|
+
leaseOwner: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"string", null, false, false>;
|
|
14
|
+
leaseExpiresAt: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"datetime", null, false, false>;
|
|
15
|
+
heartbeatAt: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"datetime", null, false, false>;
|
|
16
|
+
cancelRequestedAt: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"datetime", null, false, false>;
|
|
17
|
+
error: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"string", null, false, false>;
|
|
18
|
+
metadata: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"object", null, false, false>;
|
|
19
|
+
createdAt: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"datetime", null, true, true>;
|
|
20
|
+
startedAt: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"datetime", null, false, false>;
|
|
21
|
+
completedAt: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"datetime", null, false, false>;
|
|
22
|
+
updatedAt: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"datetime", null, true, true>;
|
|
23
|
+
}>>;
|
|
24
|
+
export declare const RunStep: import("@undefineds.co/drizzle-solid/dist/core/schema").PodTableWithColumns<import("@undefineds.co/drizzle-solid/dist/core/schema").ResolvedColumns<{
|
|
25
|
+
id: import("@undefineds.co/drizzle-solid/dist/core/schema").PodStringColumn<false, false>;
|
|
26
|
+
commandKind: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"string", null, true, true>;
|
|
27
|
+
surfaceId: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"string", null, true, true>;
|
|
28
|
+
runId: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"string", null, true, false>;
|
|
29
|
+
run: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"uri", null, true, false>;
|
|
30
|
+
type: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"string", null, true, false>;
|
|
31
|
+
message: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"string", null, false, false>;
|
|
32
|
+
data: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"object", null, false, false>;
|
|
33
|
+
createdAt: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"datetime", null, true, true>;
|
|
34
|
+
}>>;
|
|
35
|
+
export { RunStatus, RunStepType };
|
|
36
|
+
export declare const XpodRunStepType: {
|
|
37
|
+
readonly WAITING_INPUT: "runtime.waiting_input";
|
|
38
|
+
readonly CONTINUE_REQUESTED: "run.continue_requested";
|
|
39
|
+
readonly CREATED: "run.created";
|
|
40
|
+
readonly STARTED: "run.started";
|
|
41
|
+
readonly TEXT_DELTA: "runtime.text_delta";
|
|
42
|
+
readonly AUTH_REQUIRED: "runtime.auth_required";
|
|
43
|
+
readonly TOOL_CALL: "runtime.tool_call";
|
|
44
|
+
readonly WAITING_RUNNER: "runtime.waiting_runner";
|
|
45
|
+
readonly CANCEL_REQUESTED: "run.cancel_requested";
|
|
46
|
+
readonly CANCELLED: "run.cancelled";
|
|
47
|
+
readonly ERROR: "runtime.error";
|
|
48
|
+
readonly COMPLETED: "run.completed";
|
|
49
|
+
readonly FAILED: "run.failed";
|
|
50
|
+
readonly CLIENT_TOOL_OUTPUT: "runtime.client_tool_output";
|
|
51
|
+
};
|
|
52
|
+
export type XpodRunStepTypeValue = (typeof XpodRunStepType)[keyof typeof XpodRunStepType];
|
|
53
|
+
export type RunRecord = RunRow;
|
|
54
|
+
export type RunStepRecord = RunStepRow;
|
|
55
|
+
export type { RunStatusType, RunStepTypeValue, };
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.XpodRunStepType = exports.RunStepType = exports.RunStatus = exports.RunStep = exports.Run = void 0;
|
|
4
|
+
const models_1 = require("@undefineds.co/models");
|
|
5
|
+
Object.defineProperty(exports, "RunStatus", { enumerable: true, get: function () { return models_1.RunStatus; } });
|
|
6
|
+
Object.defineProperty(exports, "RunStepType", { enumerable: true, get: function () { return models_1.RunStepType; } });
|
|
7
|
+
exports.Run = models_1.runResource;
|
|
8
|
+
exports.RunStep = models_1.runStepResource;
|
|
9
|
+
exports.XpodRunStepType = {
|
|
10
|
+
...models_1.RunStepType,
|
|
11
|
+
WAITING_INPUT: 'runtime.waiting_input',
|
|
12
|
+
CONTINUE_REQUESTED: 'run.continue_requested',
|
|
13
|
+
};
|
|
14
|
+
//# sourceMappingURL=schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../src/api/runs/schema.ts"],"names":[],"mappings":";;;AAAA,kDAS+B;AAKtB,0FAbP,kBAAS,OAaO;AAAE,4FAZlB,oBAAW,OAYkB;AAHlB,QAAA,GAAG,GAAG,oBAAW,CAAC;AAClB,QAAA,OAAO,GAAG,wBAAe,CAAC;AAI1B,QAAA,eAAe,GAAG;IAC7B,GAAG,oBAAW;IACd,aAAa,EAAE,uBAAuB;IACtC,kBAAkB,EAAE,wBAAwB;CACpC,CAAC","sourcesContent":["import {\n RunStatus,\n RunStepType,\n runResource,\n runStepResource,\n type RunRow,\n type RunStatusType,\n type RunStepRow,\n type RunStepTypeValue,\n} from '@undefineds.co/models';\n\nexport const Run = runResource;\nexport const RunStep = runStepResource;\n\nexport { RunStatus, RunStepType };\n\nexport const XpodRunStepType = {\n ...RunStepType,\n WAITING_INPUT: 'runtime.waiting_input',\n CONTINUE_REQUESTED: 'run.continue_requested',\n} as const;\n\nexport type XpodRunStepTypeValue = (typeof XpodRunStepType)[keyof typeof XpodRunStepType];\n\nexport type RunRecord = RunRow;\nexport type RunStepRecord = RunStepRow;\nexport type {\n RunStatusType,\n RunStepTypeValue,\n};\n"]}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import type { WorkspaceUri } from '../workspace/types';
|
|
2
|
+
import type { RunStatusType, RunStepTypeValue } from './schema';
|
|
3
|
+
export interface RunRecordData {
|
|
4
|
+
/** Base-relative Solid resource id, e.g. `chat/default/2026/05/18/runs.ttl#run_x`. */
|
|
5
|
+
id: string;
|
|
6
|
+
commandKind: 'chat' | 'task';
|
|
7
|
+
surfaceId: string;
|
|
8
|
+
task?: string;
|
|
9
|
+
thread: string;
|
|
10
|
+
workspace: WorkspaceUri;
|
|
11
|
+
status: RunStatusType;
|
|
12
|
+
runner: string;
|
|
13
|
+
prompt?: string;
|
|
14
|
+
externalRunId?: string;
|
|
15
|
+
leaseOwner?: string;
|
|
16
|
+
leaseExpiresAt?: number;
|
|
17
|
+
heartbeatAt?: number;
|
|
18
|
+
cancelRequestedAt?: number;
|
|
19
|
+
error?: string;
|
|
20
|
+
metadata?: Record<string, unknown>;
|
|
21
|
+
createdAt: number;
|
|
22
|
+
startedAt?: number;
|
|
23
|
+
completedAt?: number;
|
|
24
|
+
updatedAt: number;
|
|
25
|
+
}
|
|
26
|
+
export interface RunStepRecordData {
|
|
27
|
+
/** Base-relative Solid resource id, e.g. `chat/default/2026/05/18/runs.ttl#step_x`. */
|
|
28
|
+
id: string;
|
|
29
|
+
commandKind: 'chat' | 'task';
|
|
30
|
+
surfaceId: string;
|
|
31
|
+
/** Denormalized Run resource id for lookup; semantic relation is `run`. */
|
|
32
|
+
runId: string;
|
|
33
|
+
run: string;
|
|
34
|
+
type: RunStepTypeValue | string;
|
|
35
|
+
message?: string;
|
|
36
|
+
data?: Record<string, unknown>;
|
|
37
|
+
createdAt: number;
|
|
38
|
+
}
|
|
39
|
+
export interface RunListOptions {
|
|
40
|
+
task?: string;
|
|
41
|
+
thread?: string;
|
|
42
|
+
workspace?: WorkspaceUri;
|
|
43
|
+
commandKind?: 'chat' | 'task';
|
|
44
|
+
status?: RunStatusType;
|
|
45
|
+
limit?: number;
|
|
46
|
+
}
|
|
47
|
+
export interface RunStore<TContext> {
|
|
48
|
+
saveRun(run: RunRecordData, context: TContext): Promise<void>;
|
|
49
|
+
loadRun(id: string, context: TContext): Promise<RunRecordData>;
|
|
50
|
+
listRuns(options: RunListOptions, context: TContext): Promise<RunRecordData[]>;
|
|
51
|
+
appendRunStep(event: RunStepRecordData, context: TContext): Promise<void>;
|
|
52
|
+
loadRunSteps(runId: string, context: TContext): Promise<RunStepRecordData[]>;
|
|
53
|
+
claimRun?(input: {
|
|
54
|
+
runId: string;
|
|
55
|
+
leaseOwner: string;
|
|
56
|
+
leaseExpiresAt: number;
|
|
57
|
+
now: number;
|
|
58
|
+
}, context: TContext): Promise<RunRecordData | undefined>;
|
|
59
|
+
}
|
|
60
|
+
export declare function isClaimableRunStatus(status: RunRecordData['status']): boolean;
|
|
61
|
+
export declare function hasActiveRunLease(run: Pick<RunRecordData, 'leaseOwner' | 'leaseExpiresAt'>, now: number): boolean;
|
|
62
|
+
export declare function canClaimRun(run: Pick<RunRecordData, 'status' | 'leaseOwner' | 'leaseExpiresAt'>, input: {
|
|
63
|
+
leaseOwner: string;
|
|
64
|
+
now: number;
|
|
65
|
+
}): boolean;
|
|
66
|
+
export declare function isBaseRelativeResourceId(value: string | null | undefined): value is string;
|
|
67
|
+
export declare function isRunResourceId(value: string | null | undefined): value is string;
|
|
68
|
+
/**
|
|
69
|
+
* Extracts the local template fragment for display or protocol compatibility.
|
|
70
|
+
* Do not use this to turn a canonical resource id back into the durable `id`.
|
|
71
|
+
*/
|
|
72
|
+
export declare function extractResourceLocalId(resourceId: string): string;
|
|
73
|
+
export declare function datePathFromTimestamp(timestamp: number | undefined): {
|
|
74
|
+
yyyy: string;
|
|
75
|
+
MM: string;
|
|
76
|
+
dd: string;
|
|
77
|
+
};
|
|
78
|
+
export declare function generateRunResourceId(input: {
|
|
79
|
+
key: string;
|
|
80
|
+
commandKind: 'chat' | 'task';
|
|
81
|
+
surfaceId: string;
|
|
82
|
+
createdAt?: number;
|
|
83
|
+
}): string;
|
|
84
|
+
export declare function generateRunStepResourceId(input: {
|
|
85
|
+
key: string;
|
|
86
|
+
runId?: string;
|
|
87
|
+
commandKind: 'chat' | 'task';
|
|
88
|
+
surfaceId: string;
|
|
89
|
+
createdAt?: number;
|
|
90
|
+
}): string;
|
|
91
|
+
export declare function buildRunResourceId(input: {
|
|
92
|
+
id: string;
|
|
93
|
+
commandKind: 'chat' | 'task';
|
|
94
|
+
surfaceId: string;
|
|
95
|
+
createdAt?: number;
|
|
96
|
+
}): string;
|
|
97
|
+
export declare function buildRunStepResourceId(input: {
|
|
98
|
+
id: string;
|
|
99
|
+
runId?: string;
|
|
100
|
+
commandKind: 'chat' | 'task';
|
|
101
|
+
surfaceId: string;
|
|
102
|
+
createdAt?: number;
|
|
103
|
+
}): string;
|
|
104
|
+
export declare function resolveRunUrn(runId: string): string;
|
|
105
|
+
export declare function resolveDataResourceIri(podBaseUrl: string, resourceId: string): string;
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isClaimableRunStatus = isClaimableRunStatus;
|
|
4
|
+
exports.hasActiveRunLease = hasActiveRunLease;
|
|
5
|
+
exports.canClaimRun = canClaimRun;
|
|
6
|
+
exports.isBaseRelativeResourceId = isBaseRelativeResourceId;
|
|
7
|
+
exports.isRunResourceId = isRunResourceId;
|
|
8
|
+
exports.extractResourceLocalId = extractResourceLocalId;
|
|
9
|
+
exports.datePathFromTimestamp = datePathFromTimestamp;
|
|
10
|
+
exports.generateRunResourceId = generateRunResourceId;
|
|
11
|
+
exports.generateRunStepResourceId = generateRunStepResourceId;
|
|
12
|
+
exports.buildRunResourceId = buildRunResourceId;
|
|
13
|
+
exports.buildRunStepResourceId = buildRunStepResourceId;
|
|
14
|
+
exports.resolveRunUrn = resolveRunUrn;
|
|
15
|
+
exports.resolveDataResourceIri = resolveDataResourceIri;
|
|
16
|
+
const models_1 = require("@undefineds.co/models");
|
|
17
|
+
function isClaimableRunStatus(status) {
|
|
18
|
+
return status === 'queued' || status === 'running';
|
|
19
|
+
}
|
|
20
|
+
function hasActiveRunLease(run, now) {
|
|
21
|
+
return Boolean(run.leaseOwner && run.leaseExpiresAt && run.leaseExpiresAt > now);
|
|
22
|
+
}
|
|
23
|
+
function canClaimRun(run, input) {
|
|
24
|
+
if (!isClaimableRunStatus(run.status)) {
|
|
25
|
+
return false;
|
|
26
|
+
}
|
|
27
|
+
return !hasActiveRunLease(run, input.now) || run.leaseOwner === input.leaseOwner;
|
|
28
|
+
}
|
|
29
|
+
function isBaseRelativeResourceId(value) {
|
|
30
|
+
if (!value || /^https?:\/\//.test(value) || value.startsWith('/') || value.startsWith('#')) {
|
|
31
|
+
return false;
|
|
32
|
+
}
|
|
33
|
+
return /\.(ttl|jsonld|json)(?:#[^#]+)?$/i.test(value);
|
|
34
|
+
}
|
|
35
|
+
function isRunResourceId(value) {
|
|
36
|
+
return isBaseRelativeResourceId(value)
|
|
37
|
+
&& /^(chat|task)\/[^/]+\/\d{4}\/\d{2}\/\d{2}\/runs\.ttl#[^#/]+$/.test(value);
|
|
38
|
+
}
|
|
39
|
+
function assertLocalKey(value, label) {
|
|
40
|
+
if (value.includes('/') || value.includes('#') || /\.(ttl|jsonld|json)(?:#|$)/i.test(value)) {
|
|
41
|
+
throw new Error(`${label} requires a local key: ${value}`);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Extracts the local template fragment for display or protocol compatibility.
|
|
46
|
+
* Do not use this to turn a canonical resource id back into the durable `id`.
|
|
47
|
+
*/
|
|
48
|
+
function extractResourceLocalId(resourceId) {
|
|
49
|
+
const hashIndex = resourceId.lastIndexOf('#');
|
|
50
|
+
if (hashIndex >= 0 && hashIndex < resourceId.length - 1) {
|
|
51
|
+
return resourceId.slice(hashIndex + 1);
|
|
52
|
+
}
|
|
53
|
+
const slashIndex = resourceId.lastIndexOf('/');
|
|
54
|
+
return slashIndex >= 0 && slashIndex < resourceId.length - 1
|
|
55
|
+
? resourceId.slice(slashIndex + 1)
|
|
56
|
+
: resourceId;
|
|
57
|
+
}
|
|
58
|
+
function datePathFromTimestamp(timestamp) {
|
|
59
|
+
const date = typeof timestamp === 'number' ? new Date(timestamp * 1000) : new Date();
|
|
60
|
+
return {
|
|
61
|
+
yyyy: String(date.getUTCFullYear()),
|
|
62
|
+
MM: String(date.getUTCMonth() + 1).padStart(2, '0'),
|
|
63
|
+
dd: String(date.getUTCDate()).padStart(2, '0'),
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
function generateRunResourceId(input) {
|
|
67
|
+
if (isBaseRelativeResourceId(input.key)) {
|
|
68
|
+
throw new Error(`Run id generator requires a local key, got resource id: ${input.key}`);
|
|
69
|
+
}
|
|
70
|
+
assertLocalKey(input.key, 'Run id generator');
|
|
71
|
+
return (0, models_1.runResourceId)(input.key, input);
|
|
72
|
+
}
|
|
73
|
+
function generateRunStepResourceId(input) {
|
|
74
|
+
if (isBaseRelativeResourceId(input.key)) {
|
|
75
|
+
throw new Error(`RunStep id generator requires a local key, got resource id: ${input.key}`);
|
|
76
|
+
}
|
|
77
|
+
assertLocalKey(input.key, 'RunStep id generator');
|
|
78
|
+
if (input.runId && isRunResourceId(input.runId)) {
|
|
79
|
+
return (0, models_1.runStepResourceId)(input.key, input);
|
|
80
|
+
}
|
|
81
|
+
return (0, models_1.runStepResourceId)(input.key, input);
|
|
82
|
+
}
|
|
83
|
+
function buildRunResourceId(input) {
|
|
84
|
+
void input.commandKind;
|
|
85
|
+
void input.surfaceId;
|
|
86
|
+
void input.createdAt;
|
|
87
|
+
if (!isRunResourceId(input.id)) {
|
|
88
|
+
throw new Error(`Run id must be a complete Run resource id: ${input.id}`);
|
|
89
|
+
}
|
|
90
|
+
return input.id;
|
|
91
|
+
}
|
|
92
|
+
function buildRunStepResourceId(input) {
|
|
93
|
+
void input.runId;
|
|
94
|
+
void input.commandKind;
|
|
95
|
+
void input.surfaceId;
|
|
96
|
+
void input.createdAt;
|
|
97
|
+
if (!isRunResourceId(input.id)) {
|
|
98
|
+
throw new Error(`RunStep id must be a complete RunStep resource id: ${input.id}`);
|
|
99
|
+
}
|
|
100
|
+
return input.id;
|
|
101
|
+
}
|
|
102
|
+
function resolveRunUrn(runId) {
|
|
103
|
+
return `urn:xpod:run:${encodeURIComponent(runId)}`;
|
|
104
|
+
}
|
|
105
|
+
function resolveDataResourceIri(podBaseUrl, resourceId) {
|
|
106
|
+
if (/^https?:\/\//.test(resourceId)) {
|
|
107
|
+
return resourceId;
|
|
108
|
+
}
|
|
109
|
+
const base = podBaseUrl.replace(/\/$/, '');
|
|
110
|
+
const relative = resourceId.replace(/^\/+/, '');
|
|
111
|
+
if (relative.startsWith('.data/')) {
|
|
112
|
+
return `${base}/${relative}`;
|
|
113
|
+
}
|
|
114
|
+
return `${base}/.data/${relative}`;
|
|
115
|
+
}
|
|
116
|
+
//# sourceMappingURL=store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store.js","sourceRoot":"","sources":["../../../src/api/runs/store.ts"],"names":[],"mappings":"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","sourcesContent":["import type { WorkspaceUri } from '../workspace/types';\nimport { runResourceId, runStepResourceId } from '@undefineds.co/models';\nimport type { RunStatusType, RunStepTypeValue } from './schema';\n\nexport interface RunRecordData {\n /** Base-relative Solid resource id, e.g. `chat/default/2026/05/18/runs.ttl#run_x`. */\n id: string;\n commandKind: 'chat' | 'task';\n surfaceId: string;\n task?: string;\n thread: string;\n workspace: WorkspaceUri;\n status: RunStatusType;\n runner: string;\n prompt?: string;\n externalRunId?: string;\n leaseOwner?: string;\n leaseExpiresAt?: number;\n heartbeatAt?: number;\n cancelRequestedAt?: number;\n error?: string;\n metadata?: Record<string, unknown>;\n createdAt: number;\n startedAt?: number;\n completedAt?: number;\n updatedAt: number;\n}\n\nexport interface RunStepRecordData {\n /** Base-relative Solid resource id, e.g. `chat/default/2026/05/18/runs.ttl#step_x`. */\n id: string;\n commandKind: 'chat' | 'task';\n surfaceId: string;\n /** Denormalized Run resource id for lookup; semantic relation is `run`. */\n runId: string;\n run: string;\n type: RunStepTypeValue | string;\n message?: string;\n data?: Record<string, unknown>;\n createdAt: number;\n}\n\nexport interface RunListOptions {\n task?: string;\n thread?: string;\n workspace?: WorkspaceUri;\n commandKind?: 'chat' | 'task';\n status?: RunStatusType;\n limit?: number;\n}\n\nexport interface RunStore<TContext> {\n saveRun(run: RunRecordData, context: TContext): Promise<void>;\n loadRun(id: string, context: TContext): Promise<RunRecordData>;\n listRuns(options: RunListOptions, context: TContext): Promise<RunRecordData[]>;\n appendRunStep(event: RunStepRecordData, context: TContext): Promise<void>;\n loadRunSteps(runId: string, context: TContext): Promise<RunStepRecordData[]>;\n claimRun?(input: {\n runId: string;\n leaseOwner: string;\n leaseExpiresAt: number;\n now: number;\n }, context: TContext): Promise<RunRecordData | undefined>;\n}\n\nexport function isClaimableRunStatus(status: RunRecordData['status']): boolean {\n return status === 'queued' || status === 'running';\n}\n\nexport function hasActiveRunLease(\n run: Pick<RunRecordData, 'leaseOwner' | 'leaseExpiresAt'>,\n now: number,\n): boolean {\n return Boolean(run.leaseOwner && run.leaseExpiresAt && run.leaseExpiresAt > now);\n}\n\nexport function canClaimRun(\n run: Pick<RunRecordData, 'status' | 'leaseOwner' | 'leaseExpiresAt'>,\n input: {\n leaseOwner: string;\n now: number;\n },\n): boolean {\n if (!isClaimableRunStatus(run.status)) {\n return false;\n }\n return !hasActiveRunLease(run, input.now) || run.leaseOwner === input.leaseOwner;\n}\n\nexport function isBaseRelativeResourceId(value: string | null | undefined): value is string {\n if (!value || /^https?:\\/\\//.test(value) || value.startsWith('/') || value.startsWith('#')) {\n return false;\n }\n return /\\.(ttl|jsonld|json)(?:#[^#]+)?$/i.test(value);\n}\n\nexport function isRunResourceId(value: string | null | undefined): value is string {\n return isBaseRelativeResourceId(value)\n && /^(chat|task)\\/[^/]+\\/\\d{4}\\/\\d{2}\\/\\d{2}\\/runs\\.ttl#[^#/]+$/.test(value);\n}\n\nfunction assertLocalKey(value: string, label: string): void {\n if (value.includes('/') || value.includes('#') || /\\.(ttl|jsonld|json)(?:#|$)/i.test(value)) {\n throw new Error(`${label} requires a local key: ${value}`);\n }\n}\n\n/**\n * Extracts the local template fragment for display or protocol compatibility.\n * Do not use this to turn a canonical resource id back into the durable `id`.\n */\nexport function extractResourceLocalId(resourceId: string): string {\n const hashIndex = resourceId.lastIndexOf('#');\n if (hashIndex >= 0 && hashIndex < resourceId.length - 1) {\n return resourceId.slice(hashIndex + 1);\n }\n const slashIndex = resourceId.lastIndexOf('/');\n return slashIndex >= 0 && slashIndex < resourceId.length - 1\n ? resourceId.slice(slashIndex + 1)\n : resourceId;\n}\n\nexport function datePathFromTimestamp(timestamp: number | undefined): { yyyy: string; MM: string; dd: string } {\n const date = typeof timestamp === 'number' ? new Date(timestamp * 1000) : new Date();\n return {\n yyyy: String(date.getUTCFullYear()),\n MM: String(date.getUTCMonth() + 1).padStart(2, '0'),\n dd: String(date.getUTCDate()).padStart(2, '0'),\n };\n}\n\nexport function generateRunResourceId(input: {\n key: string;\n commandKind: 'chat' | 'task';\n surfaceId: string;\n createdAt?: number;\n}): string {\n if (isBaseRelativeResourceId(input.key)) {\n throw new Error(`Run id generator requires a local key, got resource id: ${input.key}`);\n }\n assertLocalKey(input.key, 'Run id generator');\n return runResourceId(input.key, input);\n}\n\nexport function generateRunStepResourceId(input: {\n key: string;\n runId?: string;\n commandKind: 'chat' | 'task';\n surfaceId: string;\n createdAt?: number;\n}): string {\n if (isBaseRelativeResourceId(input.key)) {\n throw new Error(`RunStep id generator requires a local key, got resource id: ${input.key}`);\n }\n assertLocalKey(input.key, 'RunStep id generator');\n\n if (input.runId && isRunResourceId(input.runId)) {\n return runStepResourceId(input.key, input);\n }\n\n return runStepResourceId(input.key, input);\n}\n\nexport function buildRunResourceId(input: {\n id: string;\n commandKind: 'chat' | 'task';\n surfaceId: string;\n createdAt?: number;\n}): string {\n void input.commandKind;\n void input.surfaceId;\n void input.createdAt;\n if (!isRunResourceId(input.id)) {\n throw new Error(`Run id must be a complete Run resource id: ${input.id}`);\n }\n return input.id;\n}\n\nexport function buildRunStepResourceId(input: {\n id: string;\n runId?: string;\n commandKind: 'chat' | 'task';\n surfaceId: string;\n createdAt?: number;\n}): string {\n void input.runId;\n void input.commandKind;\n void input.surfaceId;\n void input.createdAt;\n if (!isRunResourceId(input.id)) {\n throw new Error(`RunStep id must be a complete RunStep resource id: ${input.id}`);\n }\n return input.id;\n}\n\nexport function resolveRunUrn(runId: string): string {\n return `urn:xpod:run:${encodeURIComponent(runId)}`;\n}\n\nexport function resolveDataResourceIri(podBaseUrl: string, resourceId: string): string {\n if (/^https?:\\/\\//.test(resourceId)) {\n return resourceId;\n }\n const base = podBaseUrl.replace(/\\/$/, '');\n const relative = resourceId.replace(/^\\/+/, '');\n if (relative.startsWith('.data/')) {\n return `${base}/${relative}`;\n }\n return `${base}/.data/${relative}`;\n}\n"]}
|
package/dist/api/runtime.d.ts
CHANGED
|
@@ -2,6 +2,7 @@ import { type AwilixContainer } from 'awilix';
|
|
|
2
2
|
import { type ApiContainerConfig, type ApiContainerCradle } from './container';
|
|
3
3
|
import type { AuthContext } from './auth/AuthContext';
|
|
4
4
|
import type { RuntimeHost } from '../runtime/host/types';
|
|
5
|
+
import { type EmbeddedInngestRuntimeConfig } from './runs/EmbeddedInngestService';
|
|
5
6
|
export interface StartApiServiceOptions {
|
|
6
7
|
config?: ApiContainerConfig;
|
|
7
8
|
open?: boolean;
|
|
@@ -12,6 +13,7 @@ export interface StartApiServiceOptions {
|
|
|
12
13
|
export interface ApiServiceHandle {
|
|
13
14
|
config: ApiContainerConfig;
|
|
14
15
|
container: AwilixContainer<ApiContainerCradle>;
|
|
16
|
+
inngestRuntimeConfig?: EmbeddedInngestRuntimeConfig;
|
|
15
17
|
stop: () => Promise<void>;
|
|
16
18
|
}
|
|
17
19
|
export declare function startApiService(options?: StartApiServiceOptions): Promise<ApiServiceHandle>;
|
package/dist/api/runtime.js
CHANGED
|
@@ -7,6 +7,7 @@ const ConfigurableLoggerFactory_1 = require("../logging/ConfigurableLoggerFactor
|
|
|
7
7
|
const container_1 = require("./container");
|
|
8
8
|
const routes_1 = require("./container/routes");
|
|
9
9
|
const OpenAuthMiddleware_1 = require("./middleware/OpenAuthMiddleware");
|
|
10
|
+
const EmbeddedInngestService_1 = require("./runs/EmbeddedInngestService");
|
|
10
11
|
function initApiLogger() {
|
|
11
12
|
const loggerFactory = new ConfigurableLoggerFactory_1.ConfigurableLoggerFactory(process.env.CSS_LOGGING_LEVEL || 'info', {
|
|
12
13
|
fileName: './logs/xpod-%DATE%.log',
|
|
@@ -95,6 +96,38 @@ async function stopBackgroundServices(container) {
|
|
|
95
96
|
// ignore shutdown errors
|
|
96
97
|
}
|
|
97
98
|
}
|
|
99
|
+
function resolveApiBaseUrl(config) {
|
|
100
|
+
if (process.env.XPOD_API_BASE_URL) {
|
|
101
|
+
return process.env.XPOD_API_BASE_URL;
|
|
102
|
+
}
|
|
103
|
+
if (process.env.CSS_BASE_URL) {
|
|
104
|
+
return process.env.CSS_BASE_URL;
|
|
105
|
+
}
|
|
106
|
+
if (config.socketPath) {
|
|
107
|
+
return 'http://localhost/';
|
|
108
|
+
}
|
|
109
|
+
return `http://${config.host === '0.0.0.0' ? '127.0.0.1' : config.host}:${config.port}`;
|
|
110
|
+
}
|
|
111
|
+
async function startEmbeddedInngestService(config, logger) {
|
|
112
|
+
const service = new EmbeddedInngestService_1.EmbeddedInngestService({
|
|
113
|
+
edition: config.edition,
|
|
114
|
+
apiBaseUrl: resolveApiBaseUrl(config),
|
|
115
|
+
databaseUrl: config.databaseUrl,
|
|
116
|
+
redisUrl: config.redisUrl,
|
|
117
|
+
enabled: config.inngest?.enabled,
|
|
118
|
+
mode: config.inngest?.mode,
|
|
119
|
+
host: config.inngest?.host,
|
|
120
|
+
port: config.inngest?.port,
|
|
121
|
+
baseUrl: config.inngest?.baseUrl,
|
|
122
|
+
eventKey: config.inngest?.eventKey,
|
|
123
|
+
signingKey: config.inngest?.signingKey,
|
|
124
|
+
binaryPath: config.inngest?.binaryPath,
|
|
125
|
+
sqliteDir: config.inngest?.sqliteDir,
|
|
126
|
+
});
|
|
127
|
+
const runtimeConfig = await service.start();
|
|
128
|
+
logger.info(`Inngest runtime configured: ${runtimeConfig.baseUrl}`);
|
|
129
|
+
return { service, runtimeConfig };
|
|
130
|
+
}
|
|
98
131
|
async function startApiService(options = {}) {
|
|
99
132
|
if (options.initializeLogger !== false) {
|
|
100
133
|
initApiLogger();
|
|
@@ -109,7 +142,11 @@ async function startApiService(options = {}) {
|
|
|
109
142
|
throw new Error('CSS_IDENTITY_DB_URL or DATABASE_URL environment variable is required');
|
|
110
143
|
}
|
|
111
144
|
logger.info(`Starting API Service (edition: ${config.edition})...`);
|
|
112
|
-
const
|
|
145
|
+
const embeddedInngest = await startEmbeddedInngestService(config, logger);
|
|
146
|
+
const container = (0, container_1.createApiContainer)({
|
|
147
|
+
...config,
|
|
148
|
+
inngestRuntimeConfig: embeddedInngest.runtimeConfig,
|
|
149
|
+
});
|
|
113
150
|
if (options.open) {
|
|
114
151
|
container.register({
|
|
115
152
|
authMiddleware: (0, awilix_1.asValue)(new OpenAuthMiddleware_1.OpenAuthMiddleware({ context: options.authContext })),
|
|
@@ -124,10 +161,12 @@ async function startApiService(options = {}) {
|
|
|
124
161
|
return {
|
|
125
162
|
config,
|
|
126
163
|
container,
|
|
164
|
+
inngestRuntimeConfig: embeddedInngest.runtimeConfig,
|
|
127
165
|
stop: async () => {
|
|
128
166
|
logger.info('Stopping API Service...');
|
|
129
167
|
await stopBackgroundServices(container);
|
|
130
168
|
await server.stop();
|
|
169
|
+
await embeddedInngest.service.stop();
|
|
131
170
|
},
|
|
132
171
|
};
|
|
133
172
|
}
|
package/dist/api/runtime.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../src/api/runtime.ts"],"names":[],"mappings":";;AA8HA,0CA2CC;AAzKD,mCAAuD;AACvD,iEAA6E;AAC7E,oFAAiF;AACjF,2CAAsH;AACtH,+CAAoD;AAEpD,wEAAqE;AAiBrE,SAAS,aAAa;IACpB,MAAM,aAAa,GAAG,IAAI,qDAAyB,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,MAAM,EAAE;QAC3F,QAAQ,EAAE,wBAAwB;QAClC,YAAY,EAAE,IAAI;KACnB,CAAC,CAAC;IACH,IAAA,8CAAsB,EAAC,aAAa,CAAC,CAAC;AACxC,CAAC;AAED,KAAK,UAAU,2BAA2B,CACxC,SAA8C,EAC9C,MAA0B,EAC1B,MAAuC;IAEvC,IAAI,CAAC;QACH,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC;QACpD,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,OAAO;QACT,CAAC;QAED,MAAM,gBAAgB,GAAG,SAAS,CAAC,OAAO,CAAC,kBAAkB,CAAQ,CAAC;QACtE,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;QACnE,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,CAAC,MAAM,CAAC,OAAO,KAAK,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QAEnG,MAAM,gBAAgB,CAAC,aAAa,CAAC,YAAY,EAAE;YACjD,WAAW;YACX,SAAS;YACT,MAAM,EAAE,CAAC,aAAa,EAAE,YAAY,EAAE,gBAAgB,CAAC;SACxD,CAAC,CAAC;QAEH,MAAM,CAAC,IAAI,CAAC,gCAAgC,WAAW,IAAI,SAAS,EAAE,CAAC,CAAC;IAC1E,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,KAAK,CAAC,qCAAqC,KAAK,EAAE,CAAC,CAAC;IAC7D,CAAC;AACH,CAAC;AAED,KAAK,UAAU,uBAAuB,CACpC,SAA8C,EAC9C,MAAuC;IAEvC,IAAI,CAAC;QACH,MAAM,mBAAmB,GAAG,SAAS,CAAC,OAAO,CAAC,qBAAqB,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAQ,CAAC;QACzG,IAAI,mBAAmB,EAAE,CAAC;YACxB,mBAAmB,CAAC,KAAK,EAAE,CAAC;QAC9B,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,KAAK,CAAC,6CAA6C,KAAK,EAAE,CAAC,CAAC;IACrE,CAAC;IAED,IAAI,CAAC;QACH,MAAM,WAAW,GAAG,SAAS,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAQ,CAAC;QACzF,IAAI,WAAW,EAAE,CAAC;YAChB,MAAM,WAAW,CAAC,KAAK,EAAE,CAAC;YAC1B,MAAM,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;QACtC,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,KAAK,CAAC,qCAAqC,KAAK,EAAE,CAAC,CAAC;IAC7D,CAAC;IAED,IAAI,CAAC;QACH,MAAM,mBAAmB,GAAG,SAAS,CAAC,OAAO,CAAC,qBAAqB,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAQ,CAAC;QAEzG,IAAI,mBAAmB,EAAE,CAAC;YACxB,MAAM,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;YACjD,MAAM,SAAS,GAAG,MAAM,CAAC,QAAQ,CAC/B,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,MAAM,EAChF,EAAE,CACH,CAAC;YACF,MAAM,MAAM,GAAG,MAAM,mBAAmB,CAAC,KAAK,CAAC;gBAC7C,SAAS,EAAE,OAAO;gBAClB,SAAS,EAAE,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI;gBACzE,aAAa,EAAE,MAAM;aACtB,CAAC,CAAC;YACH,MAAM,mBAAmB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YACxC,MAAM,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,KAAK,CAAC,0CAA0C,KAAK,EAAE,CAAC,CAAC;IAClE,CAAC;AACH,CAAC;AAED,KAAK,UAAU,sBAAsB,CAAC,SAA8C;IAClF,IAAI,CAAC;QACH,MAAM,WAAW,GAAG,SAAS,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAQ,CAAC;QACzF,WAAW,EAAE,IAAI,EAAE,CAAC;IACtB,CAAC;IAAC,MAAM,CAAC;QACP,yBAAyB;IAC3B,CAAC;IAED,IAAI,CAAC;QACH,MAAM,mBAAmB,GAAG,SAAS,CAAC,OAAO,CAAC,qBAAqB,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC,CAAC;QAClG,MAAM,mBAAmB,EAAE,IAAI,EAAE,CAAC;IACpC,CAAC;IAAC,MAAM,CAAC;QACP,yBAAyB;IAC3B,CAAC;IAED,IAAI,CAAC;QACH,MAAM,mBAAmB,GAAG,SAAS,CAAC,OAAO,CAAC,qBAAqB,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAQ,CAAC;QACzG,MAAM,mBAAmB,EAAE,IAAI,EAAE,CAAC;IACpC,CAAC;IAAC,MAAM,CAAC;QACP,yBAAyB;IAC3B,CAAC;AACH,CAAC;AAEM,KAAK,UAAU,eAAe,CAAC,UAAkC,EAAE;IACxE,IAAI,OAAO,CAAC,gBAAgB,KAAK,KAAK,EAAE,CAAC;QACvC,aAAa,EAAE,CAAC;IAClB,CAAC;IAED,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,IAAI,IAAA,6BAAiB,GAAE,CAAC;IACzD,MAAM,MAAM,GAAG;QACb,GAAG,UAAU;QACb,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,UAAU,CAAC,WAAW;KAC3D,CAAC;IACF,MAAM,MAAM,GAAG,IAAA,oCAAY,EAAC,YAAY,CAAC,CAAC;IAE1C,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CAAC,sEAAsE,CAAC,CAAC;IAC1F,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,kCAAkC,MAAM,CAAC,OAAO,MAAM,CAAC,CAAC;IAEpE,MAAM,SAAS,GAAG,IAAA,8BAAkB,EAAC,MAAM,CAAC,CAAC;IAE7C,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,SAAS,CAAC,QAAQ,CAAC;YACjB,cAAc,EAAE,IAAA,gBAAO,EAAC,IAAI,uCAAkB,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;SAClF,CAAC,CAAC;IACL,CAAC;IAED,IAAA,uBAAc,EAAC,SAAS,CAAC,CAAC;IAC1B,MAAM,2BAA2B,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7D,MAAM,uBAAuB,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IAEjD,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IAC9C,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;IACrB,MAAM,CAAC,IAAI,CAAC,yBAAyB,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IAE5H,OAAO;QACL,MAAM;QACN,SAAS;QACT,IAAI,EAAE,KAAK,IAAkB,EAAE;YAC7B,MAAM,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;YACvC,MAAM,sBAAsB,CAAC,SAAS,CAAC,CAAC;YACxC,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;QACtB,CAAC;KACF,CAAC;AACJ,CAAC","sourcesContent":["import { asValue, type AwilixContainer } from 'awilix';\nimport { setGlobalLoggerFactory, getLoggerFor } from 'global-logger-factory';\nimport { ConfigurableLoggerFactory } from '../logging/ConfigurableLoggerFactory';\nimport { createApiContainer, loadConfigFromEnv, type ApiContainerConfig, type ApiContainerCradle } from './container';\nimport { registerRoutes } from './container/routes';\nimport type { AuthContext } from './auth/AuthContext';\nimport { OpenAuthMiddleware } from './middleware/OpenAuthMiddleware';\nimport type { RuntimeHost } from '../runtime/host/types';\n\nexport interface StartApiServiceOptions {\n config?: ApiContainerConfig;\n open?: boolean;\n authContext?: AuthContext;\n initializeLogger?: boolean;\n runtimeHost?: RuntimeHost;\n}\n\nexport interface ApiServiceHandle {\n config: ApiContainerConfig;\n container: AwilixContainer<ApiContainerCradle>;\n stop: () => Promise<void>;\n}\n\nfunction initApiLogger(): void {\n const loggerFactory = new ConfigurableLoggerFactory(process.env.CSS_LOGGING_LEVEL || 'info', {\n fileName: './logs/xpod-%DATE%.log',\n showLocation: true,\n });\n setGlobalLoggerFactory(loggerFactory);\n}\n\nasync function registerPrimaryServiceToken(\n container: AwilixContainer<ApiContainerCradle>,\n config: ApiContainerConfig,\n logger: ReturnType<typeof getLoggerFor>,\n): Promise<void> {\n try {\n const serviceToken = process.env.XPOD_SERVICE_TOKEN;\n if (!serviceToken) {\n return;\n }\n\n const serviceTokenRepo = container.resolve('serviceTokenRepo') as any;\n const serviceType = config.edition === 'cloud' ? 'cloud' : 'local';\n const serviceId = process.env.XPOD_NODE_ID || (config.edition === 'cloud' ? 'cloud-1' : 'local-1');\n\n await serviceTokenRepo.registerToken(serviceToken, {\n serviceType,\n serviceId,\n scopes: ['quota:write', 'usage:read', 'account:manage'],\n });\n\n logger.info(`Registered service token for ${serviceType}:${serviceId}`);\n } catch (error) {\n logger.error(`Failed to register service token: ${error}`);\n }\n}\n\nasync function startBackgroundServices(\n container: AwilixContainer<ApiContainerCradle>,\n logger: ReturnType<typeof getLoggerFor>,\n): Promise<void> {\n try {\n const localNetworkManager = container.resolve('localNetworkManager', { allowUnregistered: true }) as any;\n if (localNetworkManager) {\n localNetworkManager.start();\n }\n } catch (error) {\n logger.error(`Failed to initialize LocalNetworkManager: ${error}`);\n }\n\n try {\n const ddnsManager = container.resolve('ddnsManager', { allowUnregistered: true }) as any;\n if (ddnsManager) {\n await ddnsManager.start();\n logger.info('DDNS Manager started');\n }\n } catch (error) {\n logger.error(`Failed to initialize DdnsManager: ${error}`);\n }\n\n try {\n const localTunnelProvider = container.resolve('localTunnelProvider', { allowUnregistered: true }) as any;\n\n if (localTunnelProvider) {\n logger.info('Starting local tunnel provider...');\n const localPort = Number.parseInt(\n process.env.XPOD_MAIN_PORT ?? process.env.CSS_PORT ?? process.env.PORT ?? '3000',\n 10,\n );\n const config = await localTunnelProvider.setup({\n subdomain: 'local',\n localPort: Number.isFinite(localPort) && localPort > 0 ? localPort : 3000,\n localProtocol: 'http',\n });\n await localTunnelProvider.start(config);\n logger.info('Local tunnel provider started');\n }\n } catch (error) {\n logger.error(`Failed to start local tunnel provider: ${error}`);\n }\n}\n\nasync function stopBackgroundServices(container: AwilixContainer<ApiContainerCradle>): Promise<void> {\n try {\n const ddnsManager = container.resolve('ddnsManager', { allowUnregistered: true }) as any;\n ddnsManager?.stop();\n } catch {\n // ignore shutdown errors\n }\n\n try {\n const localNetworkManager = container.resolve('localNetworkManager', { allowUnregistered: true });\n await localNetworkManager?.stop();\n } catch {\n // ignore shutdown errors\n }\n\n try {\n const localTunnelProvider = container.resolve('localTunnelProvider', { allowUnregistered: true }) as any;\n await localTunnelProvider?.stop();\n } catch {\n // ignore shutdown errors\n }\n}\n\nexport async function startApiService(options: StartApiServiceOptions = {}): Promise<ApiServiceHandle> {\n if (options.initializeLogger !== false) {\n initApiLogger();\n }\n\n const baseConfig = options.config ?? loadConfigFromEnv();\n const config = {\n ...baseConfig,\n runtimeHost: options.runtimeHost ?? baseConfig.runtimeHost,\n };\n const logger = getLoggerFor('ApiRuntime');\n\n if (!config.databaseUrl) {\n throw new Error('CSS_IDENTITY_DB_URL or DATABASE_URL environment variable is required');\n }\n\n logger.info(`Starting API Service (edition: ${config.edition})...`);\n\n const container = createApiContainer(config);\n\n if (options.open) {\n container.register({\n authMiddleware: asValue(new OpenAuthMiddleware({ context: options.authContext })),\n });\n }\n\n registerRoutes(container);\n await registerPrimaryServiceToken(container, config, logger);\n await startBackgroundServices(container, logger);\n\n const server = container.resolve('apiServer');\n await server.start();\n logger.info(`API Service active on ${config.socketPath ? `unix://${config.socketPath}` : `${config.host}:${config.port}`}`);\n\n return {\n config,\n container,\n stop: async(): Promise<void> => {\n logger.info('Stopping API Service...');\n await stopBackgroundServices(container);\n await server.stop();\n },\n };\n}\n"]}
|
|
1
|
+
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../src/api/runtime.ts"],"names":[],"mappings":"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","sourcesContent":["import { asValue, type AwilixContainer } from 'awilix';\nimport { setGlobalLoggerFactory, getLoggerFor } from 'global-logger-factory';\nimport { ConfigurableLoggerFactory } from '../logging/ConfigurableLoggerFactory';\nimport { createApiContainer, loadConfigFromEnv, type ApiContainerConfig, type ApiContainerCradle } from './container';\nimport { registerRoutes } from './container/routes';\nimport type { AuthContext } from './auth/AuthContext';\nimport { OpenAuthMiddleware } from './middleware/OpenAuthMiddleware';\nimport type { RuntimeHost } from '../runtime/host/types';\nimport { EmbeddedInngestService, type EmbeddedInngestRuntimeConfig } from './runs/EmbeddedInngestService';\n\nexport interface StartApiServiceOptions {\n config?: ApiContainerConfig;\n open?: boolean;\n authContext?: AuthContext;\n initializeLogger?: boolean;\n runtimeHost?: RuntimeHost;\n}\n\nexport interface ApiServiceHandle {\n config: ApiContainerConfig;\n container: AwilixContainer<ApiContainerCradle>;\n inngestRuntimeConfig?: EmbeddedInngestRuntimeConfig;\n stop: () => Promise<void>;\n}\n\nfunction initApiLogger(): void {\n const loggerFactory = new ConfigurableLoggerFactory(process.env.CSS_LOGGING_LEVEL || 'info', {\n fileName: './logs/xpod-%DATE%.log',\n showLocation: true,\n });\n setGlobalLoggerFactory(loggerFactory);\n}\n\nasync function registerPrimaryServiceToken(\n container: AwilixContainer<ApiContainerCradle>,\n config: ApiContainerConfig,\n logger: ReturnType<typeof getLoggerFor>,\n): Promise<void> {\n try {\n const serviceToken = process.env.XPOD_SERVICE_TOKEN;\n if (!serviceToken) {\n return;\n }\n\n const serviceTokenRepo = container.resolve('serviceTokenRepo') as any;\n const serviceType = config.edition === 'cloud' ? 'cloud' : 'local';\n const serviceId = process.env.XPOD_NODE_ID || (config.edition === 'cloud' ? 'cloud-1' : 'local-1');\n\n await serviceTokenRepo.registerToken(serviceToken, {\n serviceType,\n serviceId,\n scopes: ['quota:write', 'usage:read', 'account:manage'],\n });\n\n logger.info(`Registered service token for ${serviceType}:${serviceId}`);\n } catch (error) {\n logger.error(`Failed to register service token: ${error}`);\n }\n}\n\nasync function startBackgroundServices(\n container: AwilixContainer<ApiContainerCradle>,\n logger: ReturnType<typeof getLoggerFor>,\n): Promise<void> {\n try {\n const localNetworkManager = container.resolve('localNetworkManager', { allowUnregistered: true }) as any;\n if (localNetworkManager) {\n localNetworkManager.start();\n }\n } catch (error) {\n logger.error(`Failed to initialize LocalNetworkManager: ${error}`);\n }\n\n try {\n const ddnsManager = container.resolve('ddnsManager', { allowUnregistered: true }) as any;\n if (ddnsManager) {\n await ddnsManager.start();\n logger.info('DDNS Manager started');\n }\n } catch (error) {\n logger.error(`Failed to initialize DdnsManager: ${error}`);\n }\n\n try {\n const localTunnelProvider = container.resolve('localTunnelProvider', { allowUnregistered: true }) as any;\n\n if (localTunnelProvider) {\n logger.info('Starting local tunnel provider...');\n const localPort = Number.parseInt(\n process.env.XPOD_MAIN_PORT ?? process.env.CSS_PORT ?? process.env.PORT ?? '3000',\n 10,\n );\n const config = await localTunnelProvider.setup({\n subdomain: 'local',\n localPort: Number.isFinite(localPort) && localPort > 0 ? localPort : 3000,\n localProtocol: 'http',\n });\n await localTunnelProvider.start(config);\n logger.info('Local tunnel provider started');\n }\n } catch (error) {\n logger.error(`Failed to start local tunnel provider: ${error}`);\n }\n}\n\nasync function stopBackgroundServices(container: AwilixContainer<ApiContainerCradle>): Promise<void> {\n try {\n const ddnsManager = container.resolve('ddnsManager', { allowUnregistered: true }) as any;\n ddnsManager?.stop();\n } catch {\n // ignore shutdown errors\n }\n\n try {\n const localNetworkManager = container.resolve('localNetworkManager', { allowUnregistered: true });\n await localNetworkManager?.stop();\n } catch {\n // ignore shutdown errors\n }\n\n try {\n const localTunnelProvider = container.resolve('localTunnelProvider', { allowUnregistered: true }) as any;\n await localTunnelProvider?.stop();\n } catch {\n // ignore shutdown errors\n }\n}\n\nfunction resolveApiBaseUrl(config: ApiContainerConfig): string {\n if (process.env.XPOD_API_BASE_URL) {\n return process.env.XPOD_API_BASE_URL;\n }\n if (process.env.CSS_BASE_URL) {\n return process.env.CSS_BASE_URL;\n }\n if (config.socketPath) {\n return 'http://localhost/';\n }\n return `http://${config.host === '0.0.0.0' ? '127.0.0.1' : config.host}:${config.port}`;\n}\n\nasync function startEmbeddedInngestService(\n config: ApiContainerConfig,\n logger: ReturnType<typeof getLoggerFor>,\n): Promise<{ service: EmbeddedInngestService; runtimeConfig: EmbeddedInngestRuntimeConfig }> {\n const service = new EmbeddedInngestService({\n edition: config.edition,\n apiBaseUrl: resolveApiBaseUrl(config),\n databaseUrl: config.databaseUrl,\n redisUrl: config.redisUrl,\n enabled: config.inngest?.enabled,\n mode: config.inngest?.mode,\n host: config.inngest?.host,\n port: config.inngest?.port,\n baseUrl: config.inngest?.baseUrl,\n eventKey: config.inngest?.eventKey,\n signingKey: config.inngest?.signingKey,\n binaryPath: config.inngest?.binaryPath,\n sqliteDir: config.inngest?.sqliteDir,\n });\n const runtimeConfig = await service.start();\n logger.info(`Inngest runtime configured: ${runtimeConfig.baseUrl}`);\n return { service, runtimeConfig };\n}\n\nexport async function startApiService(options: StartApiServiceOptions = {}): Promise<ApiServiceHandle> {\n if (options.initializeLogger !== false) {\n initApiLogger();\n }\n\n const baseConfig = options.config ?? loadConfigFromEnv();\n const config = {\n ...baseConfig,\n runtimeHost: options.runtimeHost ?? baseConfig.runtimeHost,\n };\n const logger = getLoggerFor('ApiRuntime');\n\n if (!config.databaseUrl) {\n throw new Error('CSS_IDENTITY_DB_URL or DATABASE_URL environment variable is required');\n }\n\n logger.info(`Starting API Service (edition: ${config.edition})...`);\n\n const embeddedInngest = await startEmbeddedInngestService(config, logger);\n const container = createApiContainer({\n ...config,\n inngestRuntimeConfig: embeddedInngest.runtimeConfig,\n });\n\n if (options.open) {\n container.register({\n authMiddleware: asValue(new OpenAuthMiddleware({ context: options.authContext })),\n });\n }\n\n registerRoutes(container);\n await registerPrimaryServiceToken(container, config, logger);\n await startBackgroundServices(container, logger);\n\n const server = container.resolve('apiServer');\n await server.start();\n logger.info(`API Service active on ${config.socketPath ? `unix://${config.socketPath}` : `${config.host}:${config.port}`}`);\n\n return {\n config,\n container,\n inngestRuntimeConfig: embeddedInngest.runtimeConfig,\n stop: async(): Promise<void> => {\n logger.info('Stopping API Service...');\n await stopBackgroundServices(container);\n await server.stop();\n await embeddedInngest.service.stop();\n },\n };\n}\n"]}
|