@undefineds.co/xpod 0.2.45 → 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/storage/vector/VectorIndexingListener.js +13 -18
- package/dist/storage/vector/VectorIndexingListener.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/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":"InngestRunExecutionBackend.js","sourceRoot":"","sources":["../../../src/api/runs/InngestRunExecutionBackend.ts"],"names":[],"mappings":";;;AAAA,qCAAkC;AAIlC,yDAA4E;AAC5E,iEAA8D;AAGjD,QAAA,wBAAwB,GAAG,oBAAoB,CAAC;AAChD,QAAA,iCAAiC,GAAG,6BAA6B,CAAC;AAClE,QAAA,0BAA0B,GAAG,gBAAgB,CAAC;AAgD3D;;;;;;;;;;GAUG;AACH,MAAa,0BAA0B;IAYrC,YAAmB,UAA6C,EAAE;QAJjD,gBAAW,GAAG,IAAI,GAAG,EAAsB,CAAC;QAK3D,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,IAAI,iBAAO,CAAC;YAC1C,EAAE,EAAE,qBAAqB;YACzB,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,KAAK,EAAE,IAAI;SACZ,CAAC,CAAC;QACH,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,aAAa,IAAI,IAAI,2CAAoB,EAAE,CAAC;QACzE,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC,gBAAgB;eAC3C,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,mCAAgB,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QACrH,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC;QAC/C,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC;QAC/C,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC,eAAe,IAAI,IAAI,CAAC;QACvD,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,aAAa,IAAI,IAAI,CAAC;QACnD,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,MAAM,CAAC,cAAc,CAChD;YACE,EAAE,EAAE,kCAA0B;YAC9B,IAAI,EAAE,gBAAgB;YACtB,QAAQ,EAAE;gBACR,EAAE,KAAK,EAAE,gCAAwB,EAAE;gBACnC,EAAE,KAAK,EAAE,yCAAiC,EAAE;aAC7C;YACD,WAAW,EAAE,yBAAyB;SACvC,EACD,CAAC,GAAQ,EAAE,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,GAA4B,CAAC,CAChE,CAAC;IACJ,CAAC;IAEM,SAAS;QACd,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAEM,KAAK,CAAC,CAAC,KAAK,CAAC,KAAwB;QAC1C,MAAM,KAAK,GAAG,IAAI,cAAc,EAAqB,CAAC;QACtD,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;QACpE,MAAM,OAAO,GAAI,KAAwD,CAAC,OAAO,CAAC;QAClF,IAAI,CAAC,eAAe,EAAE,CAAC,OAAO,CAAC,CAAC;QAChC,MAAM,SAAS,GAAG,KAAK,CAAC,YAAY;YAClC,CAAC,CAAC,yCAAiC;YACnC,CAAC,CAAC,gCAAwB,CAAC;QAC7B,MAAM,YAAY,GAAG,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;QAEtD,IAAI,CAAC;YACH,IAAI,CAAC,IAAI,CAAC,eAAe,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;gBACjD,MAAM;oBACJ,IAAI,EAAE,OAAO;oBACb,OAAO,EAAE,iFAAiF;iBAC3F,CAAC;gBACF,OAAO;YACT,CAAC;YAED,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;gBACzB,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;oBACrB,EAAE,EAAE,YAAY;oBAChB,IAAI,EAAE,SAAS;oBACf,IAAI,EAAE;wBACJ,KAAK,EAAE,KAAK,CAAC,KAAK;wBAClB,QAAQ,EAAE,KAAK,CAAC,QAAQ;wBACxB,YAAY;wBACZ,YAAY,EAAE,KAAK,CAAC,YAAY;wBAChC,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,OAAO,CAAC;qBACzC;iBACF,CAAC,CAAC;YACL,CAAC;YAED,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;gBACxB,KAAK,CAAC,KAAK,EAAE,CAAC;gBACd,OAAO;YACT,CAAC;YAED,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;gBACvB,KAAK,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;oBACxE,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;oBAChE,KAAK,CAAC,KAAK,EAAE,CAAC;gBAChB,CAAC,CAAC,CAAC;YACL,CAAC;YAED,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;gBAC1C,MAAM,KAAK,CAAC;YACd,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC;QAC5D,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACrC,KAAK,CAAC,KAAK,EAAE,CAAC;QAChB,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,cAAc,CAAC,GAA0B;QACrD,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC;QACpC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,gBAAgB,EAAE,CAAC;QACxD,CAAC;QACD,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC5C,IAAI,OAAO,EAAE,CAAC;YACZ,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;gBACpB,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;YACtC,CAAC;YACD,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;YACvB,MAAM,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,IAAI,EAAE;gBACzC,IAAI,CAAC;oBACH,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;wBAClE,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBAC5B,CAAC;gBACH,CAAC;wBAAS,CAAC;oBACT,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;gBACxB,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;QACxC,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,gBAAgB,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;YACpD,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;QACxC,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,IAAK,CAAC,CAAC;QAC5D,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;QACxC,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE;YACnE,OAAO,IAAI,CAAC,gBAAiB,CAAC,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAC3D,CAAC,CAAC,CAAC;QAEH,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;IAC1C,CAAC;IAEM,KAAK,CAAC,qBAAqB,CAAC,KAAa,EAAE,OAAqB;QACrE,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;QAC1D,CAAC;QACD,OAAO,IAAI,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAClE,CAAC;IAEO,mBAAmB,CAAC,KAAwB;QAClD,MAAM,YAAY,GAAG,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;QACtD,OAAO;YACL,KAAK,EAAE;gBACL,EAAE,EAAE,YAAY;gBAChB,IAAI,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,yCAAiC,CAAC,CAAC,CAAC,gCAAwB;gBACvF,IAAI,EAAE;oBACJ,KAAK,EAAE,KAAK,CAAC,KAAK;oBAClB,QAAQ,EAAE,KAAK,CAAC,QAAQ;oBACxB,YAAY;oBACZ,YAAY,EAAE,KAAK,CAAC,YAAY;oBAChC,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAG,KAAwD,CAAC,OAAO,CAAC;iBACnG;aACF;YACD,KAAK,EAAE,UAAU,YAAY,EAAE;YAC/B,IAAI,EAAE;gBACJ,GAAG,EAAE,KAAK,EAAK,GAAW,EAAE,EAAwB,EAAc,EAAE,CAAC,EAAE,EAAE;aAC1E;SACF,CAAC;IACJ,CAAC;IAEO,WAAW,CAAC,KAAc;QAChC,OAAO,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAChE,CAAC;IAEO,oBAAoB,CAAC,KAAwB;QACnD,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC;YACxB,OAAO,OAAO,KAAK,CAAC,KAAK,EAAE,CAAC;QAC9B,CAAC;QACD,OAAO,OAAO,KAAK,CAAC,KAAK,aAAa,KAAK,CAAC,YAAY,CAAC,IAAI,IAAI,KAAK,CAAC,YAAY,CAAC,MAAM,IAAI,MAAM,EAAE,CAAC;IACzG,CAAC;IAEO,gBAAgB,CAAC,KAAwB,EAAE,OAAiC;QAClF,MAAM,IAAI,GAAG,OAAO,EAAE,IAAuD,CAAC;QAC9E,IAAI,KAAK,CAAC,aAAa,EAAE,CAAC;YACxB,OAAO;gBACL,aAAa,EAAE,KAAK,CAAC,aAAa;gBAClC,GAAG,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAC3F,CAAC;QACJ,CAAC;QACD,IAAI,IAAI,EAAE,IAAI,KAAK,OAAO,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC7D,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;IAC/B,CAAC;CACF;AAjMD,gEAiMC;AAED,MAAM,cAAc;IAApB;QACmB,UAAK,GAAQ,EAAE,CAAC;QACzB,cAAS,GAAsB,EAAE,CAAC;QAClC,WAAM,GAAG,KAAK,CAAC;IAkCzB,CAAC;IAhCQ,IAAI,CAAC,IAAO;QACjB,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,OAAO;QACT,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtB,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;QACxC,QAAQ,EAAE,EAAE,CAAC;IACf,CAAC;IAEM,KAAK;QACV,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,OAAO;QACT,CAAC;QACD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACtC,QAAQ,EAAE,CAAC;QACb,CAAC;QACD,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;IACtB,CAAC;IAEM,KAAK,CAAC,CAAC,OAAO;QACnB,OAAO,IAAI,EAAE,CAAC;YACZ,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC1B,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,EAAG,CAAC;gBAC1B,SAAS;YACX,CAAC;YACD,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBAChB,OAAO;YACT,CAAC;YACD,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;QACrE,CAAC;IACH,CAAC;CACF","sourcesContent":["import { Inngest } from 'inngest';\nimport type { EventPayload } from 'inngest/types';\nimport type { StoreContext } from '../chatkit/store';\nimport type { AgentRuntimeEvent } from './AgentRuntimeTypes';\nimport { ManagedRunWorker, type ManagedRunStore } from './ManagedRunWorker';\nimport { PiAgentRuntimeDriver } from './PiAgentRuntimeDriver';\nimport type { RunExecutionBackend, RunExecutionInput } from './RunExecutionBackend';\n\nexport const XPOD_RUN_REQUESTED_EVENT = 'xpod/run.requested';\nexport const XPOD_RUN_CONTINUE_REQUESTED_EVENT = 'xpod/run.continue_requested';\nexport const XPOD_AGENT_RUN_FUNCTION_ID = 'xpod-agent-run';\n\nexport interface XpodRunRequestedEventData {\n runId: string;\n threadId: string;\n executionKey?: string;\n authBindingId?: string;\n webId?: string;\n continuation?: RunExecutionInput['continuation'];\n}\n\nexport type XpodRunRequestedEvent = EventPayload<XpodRunRequestedEventData> & {\n name: typeof XPOD_RUN_REQUESTED_EVENT | typeof XPOD_RUN_CONTINUE_REQUESTED_EVENT;\n};\n\nexport interface InngestRunExecutionBackendOptions {\n client?: Inngest;\n baseUrl?: string;\n eventKey?: string;\n signingKey?: string;\n runtimeDriver?: RunExecutionBackend;\n store?: ManagedRunStore<StoreContext>;\n managedRunWorker?: ManagedRunWorker<StoreContext>;\n contextResolver?: (data: XpodRunRequestedEventData) => StoreContext | Promise<StoreContext | undefined> | undefined;\n contextRecorder?: (context: StoreContext | undefined) => void;\n durableDelivery?: boolean;\n /**\n * When true, execute the registered Inngest handler in-process after sending\n * the event. This keeps Chat streaming low-latency while preserving the\n * Inngest event/function boundary for the managed-agents backend.\n */\n executeInline?: boolean;\n}\n\ntype PendingRun = {\n input: RunExecutionInput;\n queue: AsyncPushQueue<AgentRuntimeEvent>;\n started: boolean;\n};\n\ntype InngestHandlerContext = {\n event: XpodRunRequestedEvent;\n runId: string;\n step: {\n run<T>(id: string, fn: () => Promise<T> | T): Promise<T>;\n };\n};\n\n/**\n * Inngest-backed managed-agent execution backend.\n *\n * Xpod owns the Run facts; Inngest owns durable function delivery. In this\n * first API-facing implementation the function can execute inline so ChatKit\n * still receives a normal SSE stream without waiting for external polling.\n *\n * The in-memory pending map is only the streaming bridge for an active HTTP\n * request. When no pending stream exists, the registered Inngest function can\n * restore the Run from store through ManagedRunWorker.\n */\nexport class InngestRunExecutionBackend implements RunExecutionBackend {\n private readonly client: Inngest;\n private readonly runtimeDriver: RunExecutionBackend;\n private readonly managedRunWorker?: ManagedRunWorker<StoreContext>;\n private readonly contextResolver?: InngestRunExecutionBackendOptions['contextResolver'];\n private readonly contextRecorder?: InngestRunExecutionBackendOptions['contextRecorder'];\n private readonly executeInline: boolean;\n private readonly durableDelivery: boolean;\n private readonly pendingRuns = new Map<string, PendingRun>();\n\n public readonly agentRunFunction;\n\n public constructor(options: InngestRunExecutionBackendOptions = {}) {\n this.client = options.client ?? new Inngest({\n id: 'xpod-managed-agents',\n baseUrl: options.baseUrl,\n eventKey: options.eventKey,\n signingKey: options.signingKey,\n isDev: true,\n });\n this.runtimeDriver = options.runtimeDriver ?? new PiAgentRuntimeDriver();\n this.managedRunWorker = options.managedRunWorker\n ?? (options.store ? new ManagedRunWorker({ store: options.store, runtimeDriver: this.runtimeDriver }) : undefined);\n this.contextResolver = options.contextResolver;\n this.contextRecorder = options.contextRecorder;\n this.durableDelivery = options.durableDelivery ?? true;\n this.executeInline = options.executeInline ?? true;\n this.agentRunFunction = this.client.createFunction(\n {\n id: XPOD_AGENT_RUN_FUNCTION_ID,\n name: 'Xpod Agent Run',\n triggers: [\n { event: XPOD_RUN_REQUESTED_EVENT },\n { event: XPOD_RUN_CONTINUE_REQUESTED_EVENT },\n ],\n idempotency: 'event.data.executionKey',\n },\n (ctx: any) => this.handleAgentRun(ctx as InngestHandlerContext),\n );\n }\n\n public getClient(): Inngest {\n return this.client;\n }\n\n public async *start(input: RunExecutionInput): AsyncIterable<AgentRuntimeEvent> {\n const queue = new AsyncPushQueue<AgentRuntimeEvent>();\n this.pendingRuns.set(input.runId, { input, queue, started: false });\n const context = (input as RunExecutionInput & { context?: StoreContext }).context;\n this.contextRecorder?.(context);\n const eventName = input.continuation\n ? XPOD_RUN_CONTINUE_REQUESTED_EVENT\n : XPOD_RUN_REQUESTED_EVENT;\n const executionKey = this.executionKeyForInput(input);\n\n try {\n if (!this.durableDelivery && !this.executeInline) {\n yield {\n type: 'error',\n message: 'Run execution backend has neither durable delivery nor inline execution enabled',\n };\n return;\n }\n\n if (this.durableDelivery) {\n await this.client.send({\n id: executionKey,\n name: eventName,\n data: {\n runId: input.runId,\n threadId: input.threadId,\n executionKey,\n continuation: input.continuation,\n ...this.contextEventData(input, context),\n },\n });\n }\n\n if (!this.executeInline) {\n queue.close();\n return;\n }\n\n if (this.executeInline) {\n void this.handleAgentRun(this.createInlineContext(input)).catch((error) => {\n queue.push({ type: 'error', message: this.formatError(error) });\n queue.close();\n });\n }\n\n for await (const event of queue.iterate()) {\n yield event;\n }\n } catch (error) {\n yield { type: 'error', message: this.formatError(error) };\n } finally {\n this.pendingRuns.delete(input.runId);\n queue.close();\n }\n }\n\n private async handleAgentRun(ctx: InngestHandlerContext): Promise<{ runId: string; status: string }> {\n const runId = ctx.event.data?.runId;\n if (!runId) {\n return { runId: 'unknown', status: 'missing_run_id' };\n }\n const pending = this.pendingRuns.get(runId);\n if (pending) {\n if (pending.started) {\n return { runId, status: 'skipped' };\n }\n pending.started = true;\n await ctx.step.run('run-agent', async () => {\n try {\n for await (const event of this.runtimeDriver.start(pending.input)) {\n pending.queue.push(event);\n }\n } finally {\n pending.queue.close();\n }\n });\n\n return { runId, status: 'completed' };\n }\n\n if (!this.managedRunWorker || !this.contextResolver) {\n return { runId, status: 'not_found' };\n }\n\n const context = await this.contextResolver(ctx.event.data!);\n if (!context) {\n return { runId, status: 'not_found' };\n }\n\n const result = await ctx.step.run('run-agent-from-store', async () => {\n return this.managedRunWorker!.executeRun(runId, context);\n });\n\n return { runId, status: result.status };\n }\n\n public async restoreExecutionInput(runId: string, context: StoreContext): Promise<RunExecutionInput> {\n if (!this.managedRunWorker) {\n throw new Error('Managed Run worker is not configured');\n }\n return this.managedRunWorker.loadExecutionInput(runId, context);\n }\n\n private createInlineContext(input: RunExecutionInput): InngestHandlerContext {\n const executionKey = this.executionKeyForInput(input);\n return {\n event: {\n id: executionKey,\n name: input.continuation ? XPOD_RUN_CONTINUE_REQUESTED_EVENT : XPOD_RUN_REQUESTED_EVENT,\n data: {\n runId: input.runId,\n threadId: input.threadId,\n executionKey,\n continuation: input.continuation,\n ...this.contextEventData(input, (input as RunExecutionInput & { context?: StoreContext }).context),\n },\n },\n runId: `inline:${executionKey}`,\n step: {\n run: async <T>(_id: string, fn: () => Promise<T> | T): Promise<T> => fn(),\n },\n };\n }\n\n private formatError(error: unknown): string {\n return error instanceof Error ? error.message : String(error);\n }\n\n private executionKeyForInput(input: RunExecutionInput): string {\n if (!input.continuation) {\n return `run:${input.runId}`;\n }\n return `run:${input.runId}:continue:${input.continuation.kind}:${input.continuation.itemId ?? 'none'}`;\n }\n\n private contextEventData(input: RunExecutionInput, context: StoreContext | undefined): Partial<XpodRunRequestedEventData> {\n const auth = context?.auth as { type?: unknown; webId?: unknown } | undefined;\n if (input.authBindingId) {\n return {\n authBindingId: input.authBindingId,\n ...(auth?.type === 'solid' && typeof auth.webId === 'string' ? { webId: auth.webId } : {}),\n };\n }\n if (auth?.type !== 'solid' || typeof auth.webId !== 'string') {\n return {};\n }\n return { webId: auth.webId };\n }\n}\n\nclass AsyncPushQueue<T> {\n private readonly items: T[] = [];\n private resolvers: Array<() => void> = [];\n private closed = false;\n\n public push(item: T): void {\n if (this.closed) {\n return;\n }\n this.items.push(item);\n const resolver = this.resolvers.shift();\n resolver?.();\n }\n\n public close(): void {\n if (this.closed) {\n return;\n }\n this.closed = true;\n for (const resolver of this.resolvers) {\n resolver();\n }\n this.resolvers = [];\n }\n\n public async *iterate(): AsyncIterable<T> {\n while (true) {\n if (this.items.length > 0) {\n yield this.items.shift()!;\n continue;\n }\n if (this.closed) {\n return;\n }\n await new Promise<void>((resolve) => this.resolvers.push(resolve));\n }\n }\n}\n"]}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import type { ChatKitStore, StoreContext } from '../chatkit/store';
|
|
2
|
+
import type { RunExecutionBackend, RunExecutionInput } from './RunExecutionBackend';
|
|
3
|
+
import { type RunRecordData, type RunStore } from './store';
|
|
4
|
+
export type ManagedRunStore<TContext = StoreContext> = ChatKitStore<TContext> & RunStore<TContext>;
|
|
5
|
+
export interface ManagedRunWorkerOptions<TContext = StoreContext> {
|
|
6
|
+
store: ManagedRunStore<TContext>;
|
|
7
|
+
runtimeDriver: RunExecutionBackend;
|
|
8
|
+
leaseOwner?: string;
|
|
9
|
+
leaseDurationSeconds?: number;
|
|
10
|
+
}
|
|
11
|
+
export interface ManagedRunExecutionResult {
|
|
12
|
+
runId: string;
|
|
13
|
+
status: RunRecordData['status'] | 'skipped';
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Store-backed Managed Agent worker.
|
|
17
|
+
*
|
|
18
|
+
* The worker is the durable Inngest callback path: it restores Run/Thread/
|
|
19
|
+
* Message state from the configured store, invokes the stateless Agent Runtime,
|
|
20
|
+
* then projects runtime output back into RunStep and assistant Message facts.
|
|
21
|
+
*/
|
|
22
|
+
export declare class ManagedRunWorker<TContext = StoreContext> {
|
|
23
|
+
private readonly store;
|
|
24
|
+
private readonly runtimeDriver;
|
|
25
|
+
private readonly leaseOwner;
|
|
26
|
+
private readonly leaseDurationSeconds;
|
|
27
|
+
constructor(options: ManagedRunWorkerOptions<TContext>);
|
|
28
|
+
executeRun(runId: string, context: TContext): Promise<ManagedRunExecutionResult>;
|
|
29
|
+
private claimRun;
|
|
30
|
+
private claimRunWithSave;
|
|
31
|
+
private canExecuteClaimedRun;
|
|
32
|
+
private checkCancellation;
|
|
33
|
+
loadExecutionInput(runId: string, context: TContext): Promise<RunExecutionInput>;
|
|
34
|
+
private loadRunInput;
|
|
35
|
+
private resolveUserMessage;
|
|
36
|
+
private resolveRuntimeConfig;
|
|
37
|
+
private authBindingIdFromRun;
|
|
38
|
+
private asRuntimeConfig;
|
|
39
|
+
private parseRunner;
|
|
40
|
+
private isRunnerType;
|
|
41
|
+
private handleRuntimeControlEvent;
|
|
42
|
+
private markRunStarted;
|
|
43
|
+
private finishRun;
|
|
44
|
+
private stepTypeForStatus;
|
|
45
|
+
private appendRunStep;
|
|
46
|
+
private createAssistantMessage;
|
|
47
|
+
private loadConversation;
|
|
48
|
+
private threadRefFromRun;
|
|
49
|
+
private extractThreadId;
|
|
50
|
+
private resolveRunUri;
|
|
51
|
+
private resolvePodBaseUrl;
|
|
52
|
+
}
|
|
@@ -0,0 +1,452 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ManagedRunWorker = void 0;
|
|
4
|
+
const types_1 = require("../chatkit/types");
|
|
5
|
+
const schema_1 = require("./schema");
|
|
6
|
+
const store_1 = require("./store");
|
|
7
|
+
const types_2 = require("../workspace/types");
|
|
8
|
+
const RUN_WAITING_STATUSES = new Set([
|
|
9
|
+
schema_1.RunStatus.WAITING_INPUT,
|
|
10
|
+
schema_1.RunStatus.WAITING_RUNNER,
|
|
11
|
+
]);
|
|
12
|
+
/**
|
|
13
|
+
* Store-backed Managed Agent worker.
|
|
14
|
+
*
|
|
15
|
+
* The worker is the durable Inngest callback path: it restores Run/Thread/
|
|
16
|
+
* Message state from the configured store, invokes the stateless Agent Runtime,
|
|
17
|
+
* then projects runtime output back into RunStep and assistant Message facts.
|
|
18
|
+
*/
|
|
19
|
+
class ManagedRunWorker {
|
|
20
|
+
constructor(options) {
|
|
21
|
+
this.store = options.store;
|
|
22
|
+
this.runtimeDriver = options.runtimeDriver;
|
|
23
|
+
this.leaseOwner = options.leaseOwner ?? `worker-${Math.random().toString(36).slice(2)}`;
|
|
24
|
+
this.leaseDurationSeconds = options.leaseDurationSeconds ?? 300;
|
|
25
|
+
}
|
|
26
|
+
async executeRun(runId, context) {
|
|
27
|
+
const claimed = await this.claimRun(runId, context);
|
|
28
|
+
if (!claimed) {
|
|
29
|
+
return { runId, status: 'skipped' };
|
|
30
|
+
}
|
|
31
|
+
const loaded = await this.loadRunInput(runId, context);
|
|
32
|
+
const { run, thread, threadRef, userMessage, runtimeConfig } = loaded;
|
|
33
|
+
if (!this.canExecuteClaimedRun(run)) {
|
|
34
|
+
return { runId, status: 'skipped' };
|
|
35
|
+
}
|
|
36
|
+
const assistantItem = await this.createAssistantMessage(thread, context);
|
|
37
|
+
await this.store.addThreadItem(threadRef, assistantItem, context);
|
|
38
|
+
await this.markRunStarted(run, context);
|
|
39
|
+
let fullText = '';
|
|
40
|
+
let runtimeError;
|
|
41
|
+
for await (const event of this.runtimeDriver.start({
|
|
42
|
+
runId: run.id,
|
|
43
|
+
threadId: thread.id,
|
|
44
|
+
prompt: run.prompt ?? '',
|
|
45
|
+
conversation: await this.loadConversation(threadRef, userMessage.id, context),
|
|
46
|
+
config: runtimeConfig,
|
|
47
|
+
authBindingId: this.authBindingIdFromRun(run),
|
|
48
|
+
context: context,
|
|
49
|
+
})) {
|
|
50
|
+
const cancellation = await this.checkCancellation(run, context);
|
|
51
|
+
if (cancellation) {
|
|
52
|
+
assistantItem.status = 'incomplete';
|
|
53
|
+
assistantItem.content = [{ type: 'output_text', text: fullText }];
|
|
54
|
+
await this.store.saveItem(threadRef, assistantItem, context);
|
|
55
|
+
return { runId, status: cancellation };
|
|
56
|
+
}
|
|
57
|
+
if (event.type === 'text') {
|
|
58
|
+
fullText += event.text;
|
|
59
|
+
await this.appendRunStep(run, schema_1.XpodRunStepType.TEXT_DELTA, context, {
|
|
60
|
+
message: event.text,
|
|
61
|
+
data: { delta: event.text },
|
|
62
|
+
});
|
|
63
|
+
continue;
|
|
64
|
+
}
|
|
65
|
+
if (event.type === 'auth_required' || event.type === 'tool_call' || event.type === 'waiting_runner') {
|
|
66
|
+
const terminalStatus = await this.handleRuntimeControlEvent(event, run, assistantItem, threadRef, context, fullText);
|
|
67
|
+
if (terminalStatus) {
|
|
68
|
+
return { runId, status: terminalStatus };
|
|
69
|
+
}
|
|
70
|
+
continue;
|
|
71
|
+
}
|
|
72
|
+
runtimeError = event.message;
|
|
73
|
+
await this.appendRunStep(run, schema_1.XpodRunStepType.ERROR, context, {
|
|
74
|
+
message: event.message,
|
|
75
|
+
});
|
|
76
|
+
break;
|
|
77
|
+
}
|
|
78
|
+
assistantItem.status = runtimeError ? 'incomplete' : 'completed';
|
|
79
|
+
assistantItem.content = [{ type: 'output_text', text: fullText }];
|
|
80
|
+
await this.store.saveItem(threadRef, assistantItem, context);
|
|
81
|
+
const finalStatus = runtimeError ? schema_1.RunStatus.FAILED : schema_1.RunStatus.COMPLETED;
|
|
82
|
+
await this.finishRun(run, finalStatus, context, runtimeError);
|
|
83
|
+
return { runId, status: finalStatus };
|
|
84
|
+
}
|
|
85
|
+
async claimRun(runId, context) {
|
|
86
|
+
const now = (0, types_1.nowTimestamp)();
|
|
87
|
+
const run = this.store.claimRun
|
|
88
|
+
? await this.store.claimRun({
|
|
89
|
+
runId,
|
|
90
|
+
leaseOwner: this.leaseOwner,
|
|
91
|
+
leaseExpiresAt: now + this.leaseDurationSeconds,
|
|
92
|
+
now,
|
|
93
|
+
}, context)
|
|
94
|
+
: await this.claimRunWithSave(runId, context, now);
|
|
95
|
+
if (!run) {
|
|
96
|
+
return false;
|
|
97
|
+
}
|
|
98
|
+
if (run.cancelRequestedAt) {
|
|
99
|
+
run.status = schema_1.RunStatus.CANCELLED;
|
|
100
|
+
run.completedAt = now;
|
|
101
|
+
run.updatedAt = now;
|
|
102
|
+
run.leaseOwner = undefined;
|
|
103
|
+
run.leaseExpiresAt = undefined;
|
|
104
|
+
await this.store.saveRun(run, context);
|
|
105
|
+
await this.appendRunStep(run, schema_1.XpodRunStepType.CANCELLED, context, {
|
|
106
|
+
message: 'Run cancelled before start',
|
|
107
|
+
data: { status: schema_1.RunStatus.CANCELLED },
|
|
108
|
+
});
|
|
109
|
+
return false;
|
|
110
|
+
}
|
|
111
|
+
return true;
|
|
112
|
+
}
|
|
113
|
+
async claimRunWithSave(runId, context, now) {
|
|
114
|
+
const run = await this.store.loadRun(runId, context);
|
|
115
|
+
if (!(0, store_1.canClaimRun)(run, { leaseOwner: this.leaseOwner, now })) {
|
|
116
|
+
return undefined;
|
|
117
|
+
}
|
|
118
|
+
run.leaseOwner = this.leaseOwner;
|
|
119
|
+
run.leaseExpiresAt = now + this.leaseDurationSeconds;
|
|
120
|
+
run.heartbeatAt = now;
|
|
121
|
+
run.updatedAt = now;
|
|
122
|
+
await this.store.saveRun(run, context);
|
|
123
|
+
const claimed = await this.store.loadRun(runId, context);
|
|
124
|
+
return claimed.leaseOwner === this.leaseOwner ? claimed : undefined;
|
|
125
|
+
}
|
|
126
|
+
canExecuteClaimedRun(run) {
|
|
127
|
+
if (run.leaseOwner !== this.leaseOwner) {
|
|
128
|
+
return false;
|
|
129
|
+
}
|
|
130
|
+
return run.status === schema_1.RunStatus.QUEUED || run.status === schema_1.RunStatus.RUNNING;
|
|
131
|
+
}
|
|
132
|
+
async checkCancellation(run, context) {
|
|
133
|
+
const latest = await this.store.loadRun(run.id, context);
|
|
134
|
+
if (!latest.cancelRequestedAt) {
|
|
135
|
+
return undefined;
|
|
136
|
+
}
|
|
137
|
+
await this.finishRun(run, schema_1.RunStatus.CANCELLED, context, 'Run cancellation requested');
|
|
138
|
+
await this.appendRunStep(run, schema_1.XpodRunStepType.CANCELLED, context, {
|
|
139
|
+
message: 'Run cancelled',
|
|
140
|
+
data: { status: schema_1.RunStatus.CANCELLED },
|
|
141
|
+
});
|
|
142
|
+
return schema_1.RunStatus.CANCELLED;
|
|
143
|
+
}
|
|
144
|
+
async loadExecutionInput(runId, context) {
|
|
145
|
+
const loaded = await this.loadRunInput(runId, context);
|
|
146
|
+
return {
|
|
147
|
+
runId: loaded.run.id,
|
|
148
|
+
threadId: loaded.thread.id,
|
|
149
|
+
prompt: loaded.run.prompt ?? '',
|
|
150
|
+
conversation: await this.loadConversation(loaded.threadRef, loaded.userMessage.id, context),
|
|
151
|
+
config: loaded.runtimeConfig,
|
|
152
|
+
authBindingId: this.authBindingIdFromRun(loaded.run),
|
|
153
|
+
context: context,
|
|
154
|
+
};
|
|
155
|
+
}
|
|
156
|
+
async loadRunInput(runId, context) {
|
|
157
|
+
const run = await this.store.loadRun(runId, context);
|
|
158
|
+
const threadRef = this.threadRefFromRun(run);
|
|
159
|
+
const thread = await this.store.loadThread(threadRef, context);
|
|
160
|
+
const userMessage = await this.resolveUserMessage(run, threadRef, context);
|
|
161
|
+
return {
|
|
162
|
+
run,
|
|
163
|
+
thread,
|
|
164
|
+
threadRef,
|
|
165
|
+
userMessage,
|
|
166
|
+
runtimeConfig: this.resolveRuntimeConfig(run, thread),
|
|
167
|
+
context,
|
|
168
|
+
};
|
|
169
|
+
}
|
|
170
|
+
async resolveUserMessage(run, threadRef, context) {
|
|
171
|
+
const metadataUserMessageId = run.metadata?.userMessageId;
|
|
172
|
+
if (typeof metadataUserMessageId === 'string' && metadataUserMessageId.length > 0) {
|
|
173
|
+
const item = await this.store.loadItem(threadRef, metadataUserMessageId, context);
|
|
174
|
+
if (item.type === 'user_message') {
|
|
175
|
+
return item;
|
|
176
|
+
}
|
|
177
|
+
throw new Error(`Run userMessageId does not point to a user message: ${metadataUserMessageId}`);
|
|
178
|
+
}
|
|
179
|
+
const items = await this.store.loadThreadItems(threadRef, undefined, 1000, 'asc', context);
|
|
180
|
+
const prompt = run.prompt?.trim();
|
|
181
|
+
const candidates = items.data.filter((item) => item.type === 'user_message');
|
|
182
|
+
const matching = prompt
|
|
183
|
+
? candidates.find((item) => (0, types_1.extractUserMessageText)(item.content).trim() === prompt)
|
|
184
|
+
: undefined;
|
|
185
|
+
const fallback = matching ?? candidates[candidates.length - 1];
|
|
186
|
+
if (!fallback) {
|
|
187
|
+
throw new Error(`Cannot restore Run input without a user message: ${run.id}`);
|
|
188
|
+
}
|
|
189
|
+
return fallback;
|
|
190
|
+
}
|
|
191
|
+
resolveRuntimeConfig(run, thread) {
|
|
192
|
+
const fromRun = this.asRuntimeConfig(run.metadata?.runtimeConfig);
|
|
193
|
+
if (fromRun) {
|
|
194
|
+
return fromRun;
|
|
195
|
+
}
|
|
196
|
+
const runtime = thread.metadata?.runtime;
|
|
197
|
+
const fromThread = this.asRuntimeConfig(runtime);
|
|
198
|
+
if (fromThread) {
|
|
199
|
+
return fromThread;
|
|
200
|
+
}
|
|
201
|
+
if (!(0, types_2.isWorkspaceUri)(run.workspace)) {
|
|
202
|
+
throw new Error('Run workspace URI is required');
|
|
203
|
+
}
|
|
204
|
+
return {
|
|
205
|
+
workspace: run.workspace,
|
|
206
|
+
runner: this.parseRunner(run.runner),
|
|
207
|
+
};
|
|
208
|
+
}
|
|
209
|
+
authBindingIdFromRun(run) {
|
|
210
|
+
const authBindingId = run.metadata?.authBindingId;
|
|
211
|
+
if (typeof authBindingId === 'string' && authBindingId.length > 0) {
|
|
212
|
+
return authBindingId;
|
|
213
|
+
}
|
|
214
|
+
const authBinding = run.metadata?.authBinding;
|
|
215
|
+
if (authBinding && typeof authBinding === 'object') {
|
|
216
|
+
const id = authBinding.id;
|
|
217
|
+
return typeof id === 'string' && id.length > 0 ? id : undefined;
|
|
218
|
+
}
|
|
219
|
+
return undefined;
|
|
220
|
+
}
|
|
221
|
+
asRuntimeConfig(value) {
|
|
222
|
+
if (!value || typeof value !== 'object') {
|
|
223
|
+
return undefined;
|
|
224
|
+
}
|
|
225
|
+
const candidate = value;
|
|
226
|
+
if (!(0, types_2.isWorkspaceUri)(candidate.workspace) || !candidate.runner) {
|
|
227
|
+
return undefined;
|
|
228
|
+
}
|
|
229
|
+
const runnerType = candidate.runner.type;
|
|
230
|
+
if (!this.isRunnerType(runnerType)) {
|
|
231
|
+
return undefined;
|
|
232
|
+
}
|
|
233
|
+
return {
|
|
234
|
+
...candidate,
|
|
235
|
+
workspace: candidate.workspace,
|
|
236
|
+
runner: {
|
|
237
|
+
...candidate.runner,
|
|
238
|
+
type: runnerType,
|
|
239
|
+
protocol: candidate.runner.protocol === 'acp' ? 'acp' : 'pi',
|
|
240
|
+
},
|
|
241
|
+
};
|
|
242
|
+
}
|
|
243
|
+
parseRunner(runner) {
|
|
244
|
+
const [protocol, type] = runner.split(':');
|
|
245
|
+
return {
|
|
246
|
+
protocol: protocol === 'acp' ? 'acp' : 'pi',
|
|
247
|
+
type: this.isRunnerType(type) ? type : 'pi',
|
|
248
|
+
};
|
|
249
|
+
}
|
|
250
|
+
isRunnerType(value) {
|
|
251
|
+
return value === 'pi' || value === 'codex' || value === 'claude' || value === 'codebuddy';
|
|
252
|
+
}
|
|
253
|
+
async handleRuntimeControlEvent(event, run, assistantItem, threadRef, context, fullText) {
|
|
254
|
+
if (event.type === 'auth_required') {
|
|
255
|
+
await this.appendRunStep(run, schema_1.XpodRunStepType.AUTH_REQUIRED, context, {
|
|
256
|
+
message: event.message,
|
|
257
|
+
data: {
|
|
258
|
+
method: event.method,
|
|
259
|
+
url: event.url,
|
|
260
|
+
options: event.options,
|
|
261
|
+
},
|
|
262
|
+
});
|
|
263
|
+
return undefined;
|
|
264
|
+
}
|
|
265
|
+
if (event.type === 'tool_call') {
|
|
266
|
+
await this.appendRunStep(run, schema_1.XpodRunStepType.TOOL_CALL, context, {
|
|
267
|
+
message: event.name,
|
|
268
|
+
data: {
|
|
269
|
+
requestId: event.requestId,
|
|
270
|
+
name: event.name,
|
|
271
|
+
arguments: event.arguments,
|
|
272
|
+
},
|
|
273
|
+
});
|
|
274
|
+
assistantItem.status = 'incomplete';
|
|
275
|
+
assistantItem.content = [{ type: 'output_text', text: fullText }];
|
|
276
|
+
await this.store.saveItem(threadRef, assistantItem, context);
|
|
277
|
+
await this.finishRun(run, schema_1.RunStatus.WAITING_INPUT, context, `Tool call ${event.name} requires steering`);
|
|
278
|
+
return schema_1.RunStatus.WAITING_INPUT;
|
|
279
|
+
}
|
|
280
|
+
if (event.type === 'waiting_runner') {
|
|
281
|
+
await this.appendRunStep(run, schema_1.XpodRunStepType.WAITING_RUNNER, context, {
|
|
282
|
+
message: event.message,
|
|
283
|
+
data: { workspace: event.workspace },
|
|
284
|
+
});
|
|
285
|
+
assistantItem.status = 'incomplete';
|
|
286
|
+
assistantItem.content = [{ type: 'output_text', text: fullText }];
|
|
287
|
+
await this.store.saveItem(threadRef, assistantItem, context);
|
|
288
|
+
await this.finishRun(run, schema_1.RunStatus.WAITING_RUNNER, context, event.message);
|
|
289
|
+
return schema_1.RunStatus.WAITING_RUNNER;
|
|
290
|
+
}
|
|
291
|
+
return undefined;
|
|
292
|
+
}
|
|
293
|
+
async markRunStarted(run, context) {
|
|
294
|
+
const now = (0, types_1.nowTimestamp)();
|
|
295
|
+
run.status = schema_1.RunStatus.RUNNING;
|
|
296
|
+
run.startedAt = now;
|
|
297
|
+
run.heartbeatAt = now;
|
|
298
|
+
run.updatedAt = now;
|
|
299
|
+
await this.store.saveRun(run, context);
|
|
300
|
+
await this.appendRunStep(run, schema_1.XpodRunStepType.STARTED, context, {
|
|
301
|
+
message: 'Run started',
|
|
302
|
+
});
|
|
303
|
+
}
|
|
304
|
+
async finishRun(run, status, context, error) {
|
|
305
|
+
const now = (0, types_1.nowTimestamp)();
|
|
306
|
+
run.status = status;
|
|
307
|
+
run.completedAt = RUN_WAITING_STATUSES.has(status) ? undefined : now;
|
|
308
|
+
run.heartbeatAt = now;
|
|
309
|
+
run.leaseOwner = undefined;
|
|
310
|
+
run.leaseExpiresAt = undefined;
|
|
311
|
+
run.updatedAt = now;
|
|
312
|
+
run.error = error;
|
|
313
|
+
await this.store.saveRun(run, context);
|
|
314
|
+
await this.appendRunStep(run, this.stepTypeForStatus(status), context, {
|
|
315
|
+
message: error ?? `Run ${status}`,
|
|
316
|
+
data: { status },
|
|
317
|
+
});
|
|
318
|
+
}
|
|
319
|
+
stepTypeForStatus(status) {
|
|
320
|
+
if (status === schema_1.RunStatus.COMPLETED) {
|
|
321
|
+
return schema_1.XpodRunStepType.COMPLETED;
|
|
322
|
+
}
|
|
323
|
+
if (status === schema_1.RunStatus.CANCELLED) {
|
|
324
|
+
return schema_1.XpodRunStepType.CANCELLED;
|
|
325
|
+
}
|
|
326
|
+
if (status === schema_1.RunStatus.WAITING_INPUT) {
|
|
327
|
+
return schema_1.XpodRunStepType.WAITING_INPUT;
|
|
328
|
+
}
|
|
329
|
+
if (status === schema_1.RunStatus.WAITING_RUNNER) {
|
|
330
|
+
return schema_1.XpodRunStepType.WAITING_RUNNER;
|
|
331
|
+
}
|
|
332
|
+
return schema_1.XpodRunStepType.FAILED;
|
|
333
|
+
}
|
|
334
|
+
async appendRunStep(run, type, context, options = {}) {
|
|
335
|
+
const createdAt = (0, types_1.nowTimestamp)();
|
|
336
|
+
await this.store.appendRunStep({
|
|
337
|
+
id: (0, store_1.generateRunStepResourceId)({
|
|
338
|
+
key: (0, types_1.generateId)('run-step'),
|
|
339
|
+
runId: run.id,
|
|
340
|
+
commandKind: run.commandKind,
|
|
341
|
+
surfaceId: run.surfaceId,
|
|
342
|
+
createdAt,
|
|
343
|
+
}),
|
|
344
|
+
commandKind: run.commandKind,
|
|
345
|
+
surfaceId: run.surfaceId,
|
|
346
|
+
runId: run.id,
|
|
347
|
+
run: this.resolveRunUri(run, context),
|
|
348
|
+
type,
|
|
349
|
+
message: options.message,
|
|
350
|
+
data: options.data,
|
|
351
|
+
createdAt,
|
|
352
|
+
}, context);
|
|
353
|
+
}
|
|
354
|
+
async createAssistantMessage(thread, context) {
|
|
355
|
+
return {
|
|
356
|
+
id: this.store.generateItemId('assistant_message', thread, context),
|
|
357
|
+
thread_id: thread.id,
|
|
358
|
+
type: 'assistant_message',
|
|
359
|
+
content: [{ type: 'output_text', text: '' }],
|
|
360
|
+
status: 'in_progress',
|
|
361
|
+
created_at: (0, types_1.nowTimestamp)(),
|
|
362
|
+
};
|
|
363
|
+
}
|
|
364
|
+
async loadConversation(threadRef, currentUserMessageId, context) {
|
|
365
|
+
const items = await this.store.loadThreadItems(threadRef, undefined, 1000, 'asc', context);
|
|
366
|
+
const conversation = [];
|
|
367
|
+
for (const item of items.data) {
|
|
368
|
+
if (item.id === currentUserMessageId) {
|
|
369
|
+
break;
|
|
370
|
+
}
|
|
371
|
+
if (item.type === 'user_message') {
|
|
372
|
+
const text = (0, types_1.extractUserMessageText)(item.content).trim();
|
|
373
|
+
if (text) {
|
|
374
|
+
conversation.push({ role: 'user', text, createdAt: item.created_at });
|
|
375
|
+
}
|
|
376
|
+
continue;
|
|
377
|
+
}
|
|
378
|
+
if (item.type === 'assistant_message' && item.status !== 'in_progress') {
|
|
379
|
+
const text = (0, types_1.extractAssistantMessageText)(item.content).trim();
|
|
380
|
+
if (text) {
|
|
381
|
+
conversation.push({ role: 'assistant', text, createdAt: item.created_at });
|
|
382
|
+
}
|
|
383
|
+
}
|
|
384
|
+
}
|
|
385
|
+
return conversation;
|
|
386
|
+
}
|
|
387
|
+
threadRefFromRun(run) {
|
|
388
|
+
if (/^https?:\/\//.test(run.thread)) {
|
|
389
|
+
return { thread_id: run.thread };
|
|
390
|
+
}
|
|
391
|
+
return (0, types_1.toThreadRef)({
|
|
392
|
+
thread_id: this.extractThreadId(run.thread),
|
|
393
|
+
chat_id: run.surfaceId,
|
|
394
|
+
});
|
|
395
|
+
}
|
|
396
|
+
extractThreadId(thread) {
|
|
397
|
+
const dataMarker = '/.data/';
|
|
398
|
+
if (/^https?:\/\//.test(thread)) {
|
|
399
|
+
try {
|
|
400
|
+
const url = new URL(thread);
|
|
401
|
+
const markerIndex = url.pathname.indexOf(dataMarker);
|
|
402
|
+
if (markerIndex >= 0 && url.hash) {
|
|
403
|
+
return `${url.pathname.slice(markerIndex + dataMarker.length)}${url.hash}`;
|
|
404
|
+
}
|
|
405
|
+
return url.hash.startsWith('#') ? decodeURIComponent(url.hash.slice(1)) : thread;
|
|
406
|
+
}
|
|
407
|
+
catch {
|
|
408
|
+
return thread;
|
|
409
|
+
}
|
|
410
|
+
}
|
|
411
|
+
if (thread.includes(dataMarker)) {
|
|
412
|
+
return thread.slice(thread.indexOf(dataMarker) + dataMarker.length);
|
|
413
|
+
}
|
|
414
|
+
const urnMarker = 'urn:xpod:thread:';
|
|
415
|
+
if (thread.startsWith(urnMarker)) {
|
|
416
|
+
const parts = thread.slice(urnMarker.length).split(':');
|
|
417
|
+
return parts.length > 1 ? decodeURIComponent(parts[1]) : decodeURIComponent(parts[0]);
|
|
418
|
+
}
|
|
419
|
+
return thread;
|
|
420
|
+
}
|
|
421
|
+
resolveRunUri(run, context) {
|
|
422
|
+
const podBaseUrl = this.resolvePodBaseUrl(context);
|
|
423
|
+
if (podBaseUrl) {
|
|
424
|
+
return (0, store_1.resolveDataResourceIri)(podBaseUrl, run.id);
|
|
425
|
+
}
|
|
426
|
+
return (0, store_1.resolveRunUrn)(run.id);
|
|
427
|
+
}
|
|
428
|
+
resolvePodBaseUrl(context) {
|
|
429
|
+
const auth = context.auth;
|
|
430
|
+
const webId = typeof auth?.webId === 'string' ? auth.webId : undefined;
|
|
431
|
+
if (!webId) {
|
|
432
|
+
return undefined;
|
|
433
|
+
}
|
|
434
|
+
try {
|
|
435
|
+
const url = new URL(webId);
|
|
436
|
+
url.hash = '';
|
|
437
|
+
url.search = '';
|
|
438
|
+
const normalizedPath = url.pathname.replace(/\/+$/, '');
|
|
439
|
+
if (!normalizedPath.endsWith('/profile/card')) {
|
|
440
|
+
return undefined;
|
|
441
|
+
}
|
|
442
|
+
const podPath = normalizedPath.slice(0, -'/profile/card'.length) || '/';
|
|
443
|
+
url.pathname = podPath;
|
|
444
|
+
return url.toString().replace(/\/$/, '');
|
|
445
|
+
}
|
|
446
|
+
catch {
|
|
447
|
+
return undefined;
|
|
448
|
+
}
|
|
449
|
+
}
|
|
450
|
+
}
|
|
451
|
+
exports.ManagedRunWorker = ManagedRunWorker;
|
|
452
|
+
//# sourceMappingURL=ManagedRunWorker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ManagedRunWorker.js","sourceRoot":"","sources":["../../../src/api/runs/ManagedRunWorker.ts"],"names":[],"mappings":";;;AAQA,4CAM0B;AAG1B,qCAAqE;AACrE,mCAQiB;AACjB,8CAAoD;AAgBpD,MAAM,oBAAoB,GAAG,IAAI,GAAG,CAAS;IAC3C,kBAAS,CAAC,aAAa;IACvB,kBAAS,CAAC,cAAc;CACzB,CAAC,CAAC;AAWH;;;;;;GAMG;AACH,MAAa,gBAAgB;IAM3B,YAAmB,OAA0C;QAC3D,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;QAC3B,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;QAC3C,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,UAAU,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;QACxF,IAAI,CAAC,oBAAoB,GAAG,OAAO,CAAC,oBAAoB,IAAI,GAAG,CAAC;IAClE,CAAC;IAEM,KAAK,CAAC,UAAU,CAAC,KAAa,EAAE,OAAiB;QACtD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QACpD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;QACtC,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QACvD,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,aAAa,EAAE,GAAG,MAAM,CAAC;QAEtE,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,EAAE,CAAC;YACpC,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;QACtC,CAAC;QAED,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,sBAAsB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACzE,MAAM,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,SAAS,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC;QAClE,MAAM,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QAExC,IAAI,QAAQ,GAAG,EAAE,CAAC;QAClB,IAAI,YAAgC,CAAC;QAErC,IAAI,KAAK,EACP,MAAM,KAAK,IAAI,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;YACtC,KAAK,EAAE,GAAG,CAAC,EAAE;YACb,QAAQ,EAAE,MAAM,CAAC,EAAE;YACnB,MAAM,EAAE,GAAG,CAAC,MAAM,IAAI,EAAE;YACxB,YAAY,EAAE,MAAM,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,WAAW,CAAC,EAAE,EAAE,OAAO,CAAC;YAC7E,MAAM,EAAE,aAAa;YACrB,aAAa,EAAE,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC;YAC7C,OAAO,EAAE,OAAuB;SACjC,CAAC,EACF,CAAC;YACD,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;YAChE,IAAI,YAAY,EAAE,CAAC;gBACjB,aAAa,CAAC,MAAM,GAAG,YAAY,CAAC;gBACpC,aAAa,CAAC,OAAO,GAAG,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;gBAClE,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC;gBAC7D,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC;YACzC,CAAC;YAED,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBAC1B,QAAQ,IAAI,KAAK,CAAC,IAAI,CAAC;gBACvB,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,wBAAW,CAAC,UAAU,EAAE,OAAO,EAAE;oBAC7D,OAAO,EAAE,KAAK,CAAC,IAAI;oBACnB,IAAI,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE;iBAC5B,CAAC,CAAC;gBACH,SAAS;YACX,CAAC;YAED,IAAI,KAAK,CAAC,IAAI,KAAK,eAAe,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,IAAI,KAAK,CAAC,IAAI,KAAK,gBAAgB,EAAE,CAAC;gBACpG,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,yBAAyB,CAAC,KAAK,EAAE,GAAG,EAAE,aAAa,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;gBACrH,IAAI,cAAc,EAAE,CAAC;oBACnB,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC;gBAC3C,CAAC;gBACD,SAAS;YACX,CAAC;YAED,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC;YAC7B,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,wBAAW,CAAC,KAAK,EAAE,OAAO,EAAE;gBACxD,OAAO,EAAE,KAAK,CAAC,OAAO;aACvB,CAAC,CAAC;YACH,MAAM;QACR,CAAC;QAED,aAAa,CAAC,MAAM,GAAG,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC;QACjE,aAAa,CAAC,OAAO,GAAG,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;QAClE,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC;QAC7D,MAAM,WAAW,GAAG,YAAY,CAAC,CAAC,CAAC,kBAAS,CAAC,MAAM,CAAC,CAAC,CAAC,kBAAS,CAAC,SAAS,CAAC;QAC1E,MAAM,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,WAAW,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC;QAC9D,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;IACxC,CAAC;IAEO,KAAK,CAAC,QAAQ,CAAC,KAAa,EAAE,OAAiB;QACrD,MAAM,GAAG,GAAG,IAAA,oBAAY,GAAE,CAAC;QAC3B,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ;YAC7B,CAAC,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;gBAC1B,KAAK;gBACL,UAAU,EAAE,IAAI,CAAC,UAAU;gBAC3B,cAAc,EAAE,GAAG,GAAG,IAAI,CAAC,oBAAoB;gBAC/C,GAAG;aACJ,EAAE,OAAO,CAAC;YACX,CAAC,CAAC,MAAM,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;QACrD,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IAAI,GAAG,CAAC,iBAAiB,EAAE,CAAC;YAC1B,GAAG,CAAC,MAAM,GAAG,kBAAS,CAAC,SAAS,CAAC;YACjC,GAAG,CAAC,WAAW,GAAG,GAAG,CAAC;YACtB,GAAG,CAAC,SAAS,GAAG,GAAG,CAAC;YACpB,GAAG,CAAC,UAAU,GAAG,SAAS,CAAC;YAC3B,GAAG,CAAC,cAAc,GAAG,SAAS,CAAC;YAC/B,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;YACvC,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,wBAAW,CAAC,SAAS,EAAE,OAAO,EAAE;gBAC5D,OAAO,EAAE,4BAA4B;gBACrC,IAAI,EAAE,EAAE,MAAM,EAAE,kBAAS,CAAC,SAAS,EAAE;aACtC,CAAC,CAAC;YACH,OAAO,KAAK,CAAC;QACf,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,KAAK,CAAC,gBAAgB,CAAC,KAAa,EAAE,OAAiB,EAAE,GAAW;QAC1E,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QACrD,IAAI,CAAC,IAAA,mBAAW,EAAC,GAAG,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC;YAC5D,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,GAAG,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QACjC,GAAG,CAAC,cAAc,GAAG,GAAG,GAAG,IAAI,CAAC,oBAAoB,CAAC;QACrD,GAAG,CAAC,WAAW,GAAG,GAAG,CAAC;QACtB,GAAG,CAAC,SAAS,GAAG,GAAG,CAAC;QACpB,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QAEvC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QACzD,OAAO,OAAO,CAAC,UAAU,KAAK,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;IACtE,CAAC;IAEO,oBAAoB,CAAC,GAAkB;QAC7C,IAAI,GAAG,CAAC,UAAU,KAAK,IAAI,CAAC,UAAU,EAAE,CAAC;YACvC,OAAO,KAAK,CAAC;QACf,CAAC;QACD,OAAO,GAAG,CAAC,MAAM,KAAK,kBAAS,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,KAAK,kBAAS,CAAC,OAAO,CAAC;IAC7E,CAAC;IAEO,KAAK,CAAC,iBAAiB,CAAC,GAAkB,EAAE,OAAiB;QACnE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;QACzD,IAAI,CAAC,MAAM,CAAC,iBAAiB,EAAE,CAAC;YAC9B,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,MAAM,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,kBAAS,CAAC,SAAS,EAAE,OAAO,EAAE,4BAA4B,CAAC,CAAC;QACtF,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,wBAAW,CAAC,SAAS,EAAE,OAAO,EAAE;YAC5D,OAAO,EAAE,eAAe;YACxB,IAAI,EAAE,EAAE,MAAM,EAAE,kBAAS,CAAC,SAAS,EAAE;SACtC,CAAC,CAAC;QACH,OAAO,kBAAS,CAAC,SAAS,CAAC;IAC7B,CAAC;IAEM,KAAK,CAAC,kBAAkB,CAAC,KAAa,EAAE,OAAiB;QAC9D,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QACvD,OAAO;YACL,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE;YACpB,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE;YAC1B,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,IAAI,EAAE;YAC/B,YAAY,EAAE,MAAM,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,WAAW,CAAC,EAAE,EAAE,OAAO,CAAC;YAC3F,MAAM,EAAE,MAAM,CAAC,aAAa;YAC5B,aAAa,EAAE,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,GAAG,CAAC;YACpD,OAAO,EAAE,OAAuB;SACjC,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,YAAY,CAAC,KAAa,EAAE,OAAiB;QACzD,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QACrD,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;QAC7C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAC/D,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,GAAG,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;QAC3E,OAAO;YACL,GAAG;YACH,MAAM;YACN,SAAS;YACT,WAAW;YACX,aAAa,EAAE,IAAI,CAAC,oBAAoB,CAAC,GAAG,EAAE,MAAM,CAAC;YACrD,OAAO;SACR,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,kBAAkB,CAC9B,GAAkB,EAClB,SAAoB,EACpB,OAAiB;QAEjB,MAAM,qBAAqB,GAAG,GAAG,CAAC,QAAQ,EAAE,aAAa,CAAC;QAC1D,IAAI,OAAO,qBAAqB,KAAK,QAAQ,IAAI,qBAAqB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAClF,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,EAAE,qBAAqB,EAAE,OAAO,CAAC,CAAC;YAClF,IAAI,IAAI,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;gBACjC,OAAO,IAAuB,CAAC;YACjC,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,uDAAuD,qBAAqB,EAAE,CAAC,CAAC;QAClG,CAAC;QAED,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;QAC3F,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC;QAClC,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,EAA2B,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,cAAc,CAAC,CAAC;QACtG,MAAM,QAAQ,GAAG,MAAM;YACrB,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAA,8BAAsB,EAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,MAAM,CAAC;YACnF,CAAC,CAAC,SAAS,CAAC;QACd,MAAM,QAAQ,GAAG,QAAQ,IAAI,UAAU,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAC/D,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,KAAK,CAAC,oDAAoD,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;QAChF,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAEO,oBAAoB,CAAC,GAAkB,EAAE,MAAsB;QACrE,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;QAClE,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,OAAO,CAAC;QACjB,CAAC;QAED,MAAM,OAAO,GAAI,MAAM,CAAC,QAAgD,EAAE,OAAO,CAAC;QAClF,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;QACjD,IAAI,UAAU,EAAE,CAAC;YACf,OAAO,UAAU,CAAC;QACpB,CAAC;QAED,IAAI,CAAC,IAAA,sBAAc,EAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;YACnC,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;QACnD,CAAC;QACD,OAAO;YACL,SAAS,EAAE,GAAG,CAAC,SAAS;YACxB,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC;SACrC,CAAC;IACJ,CAAC;IAEO,oBAAoB,CAAC,GAAkB;QAC7C,MAAM,aAAa,GAAG,GAAG,CAAC,QAAQ,EAAE,aAAa,CAAC;QAClD,IAAI,OAAO,aAAa,KAAK,QAAQ,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAClE,OAAO,aAAa,CAAC;QACvB,CAAC;QACD,MAAM,WAAW,GAAG,GAAG,CAAC,QAAQ,EAAE,WAAW,CAAC;QAC9C,IAAI,WAAW,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE,CAAC;YACnD,MAAM,EAAE,GAAI,WAAgC,CAAC,EAAE,CAAC;YAChD,OAAO,OAAO,EAAE,KAAK,QAAQ,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;QAClE,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAEO,eAAe,CAAC,KAAc;QACpC,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YACxC,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,MAAM,SAAS,GAAG,KAAoC,CAAC;QACvD,IAAI,CAAC,IAAA,sBAAc,EAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;YAC9D,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,MAAM,UAAU,GAAG,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC;QACzC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,EAAE,CAAC;YACnC,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,OAAO;YACL,GAAG,SAAS;YACZ,SAAS,EAAE,SAAS,CAAC,SAAS;YAC9B,MAAM,EAAE;gBACN,GAAG,SAAS,CAAC,MAAM;gBACnB,IAAI,EAAE,UAAU;gBAChB,QAAQ,EAAE,SAAS,CAAC,MAAM,CAAC,QAAQ,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI;aAC7D;SACoB,CAAC;IAC1B,CAAC;IAEO,WAAW,CAAC,MAAc;QAChC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC3C,OAAO;YACL,QAAQ,EAAE,QAAQ,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI;YAC3C,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI;SAC5C,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,KAAK,CAAC,yBAAyB,CACrC,KAAwB,EACxB,GAAkB,EAClB,aAAmC,EACnC,SAAoB,EACpB,OAAiB,EACjB,QAAgB;QAEhB,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,OAAO,SAAS,CAAC;QACnB,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,aAAa,CAAC,MAAM,GAAG,YAAY,CAAC;YACpC,aAAa,CAAC,OAAO,GAAG,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;YAClE,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC;YAC7D,MAAM,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,kBAAS,CAAC,aAAa,EAAE,OAAO,EAAE,aAAa,KAAK,CAAC,IAAI,oBAAoB,CAAC,CAAC;YACzG,OAAO,kBAAS,CAAC,aAAa,CAAC;QACjC,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,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE;aACrC,CAAC,CAAC;YACH,aAAa,CAAC,MAAM,GAAG,YAAY,CAAC;YACpC,aAAa,CAAC,OAAO,GAAG,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;YAClE,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC;YAC7D,MAAM,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,kBAAS,CAAC,cAAc,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;YAC5E,OAAO,kBAAS,CAAC,cAAc,CAAC;QAClC,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,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,WAAW,GAAG,GAAG,CAAC;QACtB,GAAG,CAAC,SAAS,GAAG,GAAG,CAAC;QACpB,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QACvC,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,oBAAoB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC;QACrE,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,KAAK,CAAC;QAClB,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QACvC,MAAM,IAAI,CAAC,aAAa,CACtB,GAAG,EACH,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAC9B,OAAO,EACP;YACE,OAAO,EAAE,KAAK,IAAI,OAAO,MAAM,EAAE;YACjC,IAAI,EAAE,EAAE,MAAM,EAAE;SACjB,CACF,CAAC;IACJ,CAAC;IAEO,iBAAiB,CAAC,MAA+B;QACvD,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,MAAM,KAAK,kBAAS,CAAC,aAAa,EAAE,CAAC;YACvC,OAAO,wBAAW,CAAC,aAAa,CAAC;QACnC,CAAC;QACD,IAAI,MAAM,KAAK,kBAAS,CAAC,cAAc,EAAE,CAAC;YACxC,OAAO,wBAAW,CAAC,cAAc,CAAC;QACpC,CAAC;QACD,OAAO,wBAAW,CAAC,MAAM,CAAC;IAC5B,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,KAAK,CAAC,aAAa,CAAC;YAC7B,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,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,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;IAEO,gBAAgB,CAAC,GAAkB;QACzC,IAAI,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;YACpC,OAAO,EAAE,SAAS,EAAE,GAAG,CAAC,MAAkD,EAAE,CAAC;QAC/E,CAAC;QACD,OAAO,IAAA,mBAAW,EAAC;YACjB,SAAS,EAAE,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC;YAC3C,OAAO,EAAE,GAAG,CAAC,SAAS;SACvB,CAAC,CAAC;IACL,CAAC;IAEO,eAAe,CAAC,MAAc;QACpC,MAAM,UAAU,GAAG,SAAS,CAAC;QAC7B,IAAI,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YAChC,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC;gBAC5B,MAAM,WAAW,GAAG,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;gBACrD,IAAI,WAAW,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;oBACjC,OAAO,GAAG,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,GAAG,UAAU,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;gBAC7E,CAAC;gBACD,OAAO,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;YACnF,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,MAAM,CAAC;YAChB,CAAC;QACH,CAAC;QACD,IAAI,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;YAChC,OAAO,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;QACtE,CAAC;QACD,MAAM,SAAS,GAAG,kBAAkB,CAAC;QACrC,IAAI,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YACjC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACxD,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACxF,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,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,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;CACF;AAngBD,4CAmgBC","sourcesContent":["import type { ChatKitStore, StoreContext } from '../chatkit/store';\nimport type {\n AssistantMessageItem,\n ThreadItem,\n ThreadMetadata,\n ThreadRef,\n UserMessageItem,\n} from '../chatkit/types';\nimport {\n extractAssistantMessageText,\n extractUserMessageText,\n generateId,\n nowTimestamp,\n toThreadRef,\n} from '../chatkit/types';\nimport type { AgentRuntimeConfig, AgentRuntimeEvent, RunnerProtocol, RunnerType } from './AgentRuntimeTypes';\nimport type { RunExecutionBackend, RunExecutionInput } from './RunExecutionBackend';\nimport { RunStatus, XpodRunStepType as RunStepType } from './schema';\nimport {\n canClaimRun,\n generateRunStepResourceId,\n resolveDataResourceIri,\n resolveRunUrn,\n type RunRecordData,\n type RunStepRecordData,\n type RunStore,\n} from './store';\nimport { isWorkspaceUri } from '../workspace/types';\n\nexport type ManagedRunStore<TContext = StoreContext> = ChatKitStore<TContext> & RunStore<TContext>;\n\nexport interface ManagedRunWorkerOptions<TContext = StoreContext> {\n store: ManagedRunStore<TContext>;\n runtimeDriver: RunExecutionBackend;\n leaseOwner?: string;\n leaseDurationSeconds?: number;\n}\n\nexport interface ManagedRunExecutionResult {\n runId: string;\n status: RunRecordData['status'] | 'skipped';\n}\n\nconst RUN_WAITING_STATUSES = new Set<string>([\n RunStatus.WAITING_INPUT,\n RunStatus.WAITING_RUNNER,\n]);\n\ntype LoadedRunInput<TContext> = {\n run: RunRecordData;\n thread: ThreadMetadata;\n threadRef: ThreadRef;\n userMessage: UserMessageItem;\n runtimeConfig: AgentRuntimeConfig;\n context: TContext;\n};\n\n/**\n * Store-backed Managed Agent worker.\n *\n * The worker is the durable Inngest callback path: it restores Run/Thread/\n * Message state from the configured store, invokes the stateless Agent Runtime,\n * then projects runtime output back into RunStep and assistant Message facts.\n */\nexport class ManagedRunWorker<TContext = StoreContext> {\n private readonly store: ManagedRunStore<TContext>;\n private readonly runtimeDriver: RunExecutionBackend;\n private readonly leaseOwner: string;\n private readonly leaseDurationSeconds: number;\n\n public constructor(options: ManagedRunWorkerOptions<TContext>) {\n this.store = options.store;\n this.runtimeDriver = options.runtimeDriver;\n this.leaseOwner = options.leaseOwner ?? `worker-${Math.random().toString(36).slice(2)}`;\n this.leaseDurationSeconds = options.leaseDurationSeconds ?? 300;\n }\n\n public async executeRun(runId: string, context: TContext): Promise<ManagedRunExecutionResult> {\n const claimed = await this.claimRun(runId, context);\n if (!claimed) {\n return { runId, status: 'skipped' };\n }\n\n const loaded = await this.loadRunInput(runId, context);\n const { run, thread, threadRef, userMessage, runtimeConfig } = loaded;\n\n if (!this.canExecuteClaimedRun(run)) {\n return { runId, status: 'skipped' };\n }\n\n const assistantItem = await this.createAssistantMessage(thread, context);\n await this.store.addThreadItem(threadRef, assistantItem, context);\n await this.markRunStarted(run, context);\n\n let fullText = '';\n let runtimeError: string | undefined;\n\n for await (\n const event of this.runtimeDriver.start({\n runId: run.id,\n threadId: thread.id,\n prompt: run.prompt ?? '',\n conversation: await this.loadConversation(threadRef, userMessage.id, context),\n config: runtimeConfig,\n authBindingId: this.authBindingIdFromRun(run),\n context: context as StoreContext,\n })\n ) {\n const cancellation = await this.checkCancellation(run, context);\n if (cancellation) {\n assistantItem.status = 'incomplete';\n assistantItem.content = [{ type: 'output_text', text: fullText }];\n await this.store.saveItem(threadRef, assistantItem, context);\n return { runId, status: cancellation };\n }\n\n if (event.type === 'text') {\n fullText += event.text;\n await this.appendRunStep(run, RunStepType.TEXT_DELTA, context, {\n message: event.text,\n data: { delta: event.text },\n });\n continue;\n }\n\n if (event.type === 'auth_required' || event.type === 'tool_call' || event.type === 'waiting_runner') {\n const terminalStatus = await this.handleRuntimeControlEvent(event, run, assistantItem, threadRef, context, fullText);\n if (terminalStatus) {\n return { runId, status: terminalStatus };\n }\n continue;\n }\n\n runtimeError = event.message;\n await this.appendRunStep(run, RunStepType.ERROR, context, {\n message: event.message,\n });\n break;\n }\n\n assistantItem.status = runtimeError ? 'incomplete' : 'completed';\n assistantItem.content = [{ type: 'output_text', text: fullText }];\n await this.store.saveItem(threadRef, assistantItem, context);\n const finalStatus = runtimeError ? RunStatus.FAILED : RunStatus.COMPLETED;\n await this.finishRun(run, finalStatus, context, runtimeError);\n return { runId, status: finalStatus };\n }\n\n private async claimRun(runId: string, context: TContext): Promise<boolean> {\n const now = nowTimestamp();\n const run = this.store.claimRun\n ? await this.store.claimRun({\n runId,\n leaseOwner: this.leaseOwner,\n leaseExpiresAt: now + this.leaseDurationSeconds,\n now,\n }, context)\n : await this.claimRunWithSave(runId, context, now);\n if (!run) {\n return false;\n }\n if (run.cancelRequestedAt) {\n run.status = RunStatus.CANCELLED;\n run.completedAt = now;\n run.updatedAt = now;\n run.leaseOwner = undefined;\n run.leaseExpiresAt = undefined;\n await this.store.saveRun(run, context);\n await this.appendRunStep(run, RunStepType.CANCELLED, context, {\n message: 'Run cancelled before start',\n data: { status: RunStatus.CANCELLED },\n });\n return false;\n }\n return true;\n }\n\n private async claimRunWithSave(runId: string, context: TContext, now: number): Promise<RunRecordData | undefined> {\n const run = await this.store.loadRun(runId, context);\n if (!canClaimRun(run, { leaseOwner: this.leaseOwner, now })) {\n return undefined;\n }\n\n run.leaseOwner = this.leaseOwner;\n run.leaseExpiresAt = now + this.leaseDurationSeconds;\n run.heartbeatAt = now;\n run.updatedAt = now;\n await this.store.saveRun(run, context);\n\n const claimed = await this.store.loadRun(runId, context);\n return claimed.leaseOwner === this.leaseOwner ? claimed : undefined;\n }\n\n private canExecuteClaimedRun(run: RunRecordData): boolean {\n if (run.leaseOwner !== this.leaseOwner) {\n return false;\n }\n return run.status === RunStatus.QUEUED || run.status === RunStatus.RUNNING;\n }\n\n private async checkCancellation(run: RunRecordData, context: TContext): Promise<RunRecordData['status'] | undefined> {\n const latest = await this.store.loadRun(run.id, context);\n if (!latest.cancelRequestedAt) {\n return undefined;\n }\n await this.finishRun(run, RunStatus.CANCELLED, context, 'Run cancellation requested');\n await this.appendRunStep(run, RunStepType.CANCELLED, context, {\n message: 'Run cancelled',\n data: { status: RunStatus.CANCELLED },\n });\n return RunStatus.CANCELLED;\n }\n\n public async loadExecutionInput(runId: string, context: TContext): Promise<RunExecutionInput> {\n const loaded = await this.loadRunInput(runId, context);\n return {\n runId: loaded.run.id,\n threadId: loaded.thread.id,\n prompt: loaded.run.prompt ?? '',\n conversation: await this.loadConversation(loaded.threadRef, loaded.userMessage.id, context),\n config: loaded.runtimeConfig,\n authBindingId: this.authBindingIdFromRun(loaded.run),\n context: context as StoreContext,\n };\n }\n\n private async loadRunInput(runId: string, context: TContext): Promise<LoadedRunInput<TContext>> {\n const run = await this.store.loadRun(runId, context);\n const threadRef = this.threadRefFromRun(run);\n const thread = await this.store.loadThread(threadRef, context);\n const userMessage = await this.resolveUserMessage(run, threadRef, context);\n return {\n run,\n thread,\n threadRef,\n userMessage,\n runtimeConfig: this.resolveRuntimeConfig(run, thread),\n context,\n };\n }\n\n private async resolveUserMessage(\n run: RunRecordData,\n threadRef: ThreadRef,\n context: TContext,\n ): Promise<UserMessageItem> {\n const metadataUserMessageId = run.metadata?.userMessageId;\n if (typeof metadataUserMessageId === 'string' && metadataUserMessageId.length > 0) {\n const item = await this.store.loadItem(threadRef, metadataUserMessageId, context);\n if (item.type === 'user_message') {\n return item as UserMessageItem;\n }\n throw new Error(`Run userMessageId does not point to a user message: ${metadataUserMessageId}`);\n }\n\n const items = await this.store.loadThreadItems(threadRef, undefined, 1000, 'asc', context);\n const prompt = run.prompt?.trim();\n const candidates = items.data.filter((item): item is UserMessageItem => item.type === 'user_message');\n const matching = prompt\n ? candidates.find((item) => extractUserMessageText(item.content).trim() === prompt)\n : undefined;\n const fallback = matching ?? candidates[candidates.length - 1];\n if (!fallback) {\n throw new Error(`Cannot restore Run input without a user message: ${run.id}`);\n }\n return fallback;\n }\n\n private resolveRuntimeConfig(run: RunRecordData, thread: ThreadMetadata): AgentRuntimeConfig {\n const fromRun = this.asRuntimeConfig(run.metadata?.runtimeConfig);\n if (fromRun) {\n return fromRun;\n }\n\n const runtime = (thread.metadata as Record<string, unknown> | undefined)?.runtime;\n const fromThread = this.asRuntimeConfig(runtime);\n if (fromThread) {\n return fromThread;\n }\n\n if (!isWorkspaceUri(run.workspace)) {\n throw new Error('Run workspace URI is required');\n }\n return {\n workspace: run.workspace,\n runner: this.parseRunner(run.runner),\n };\n }\n\n private authBindingIdFromRun(run: RunRecordData): string | undefined {\n const authBindingId = run.metadata?.authBindingId;\n if (typeof authBindingId === 'string' && authBindingId.length > 0) {\n return authBindingId;\n }\n const authBinding = run.metadata?.authBinding;\n if (authBinding && typeof authBinding === 'object') {\n const id = (authBinding as { id?: unknown }).id;\n return typeof id === 'string' && id.length > 0 ? id : undefined;\n }\n return undefined;\n }\n\n private asRuntimeConfig(value: unknown): AgentRuntimeConfig | undefined {\n if (!value || typeof value !== 'object') {\n return undefined;\n }\n const candidate = value as Partial<AgentRuntimeConfig>;\n if (!isWorkspaceUri(candidate.workspace) || !candidate.runner) {\n return undefined;\n }\n const runnerType = candidate.runner.type;\n if (!this.isRunnerType(runnerType)) {\n return undefined;\n }\n return {\n ...candidate,\n workspace: candidate.workspace,\n runner: {\n ...candidate.runner,\n type: runnerType,\n protocol: candidate.runner.protocol === 'acp' ? 'acp' : 'pi',\n },\n } as AgentRuntimeConfig;\n }\n\n private parseRunner(runner: string): { protocol: RunnerProtocol; type: RunnerType } {\n const [protocol, type] = runner.split(':');\n return {\n protocol: protocol === 'acp' ? 'acp' : 'pi',\n type: this.isRunnerType(type) ? type : 'pi',\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 async handleRuntimeControlEvent(\n event: AgentRuntimeEvent,\n run: RunRecordData,\n assistantItem: AssistantMessageItem,\n threadRef: ThreadRef,\n context: TContext,\n fullText: string,\n ): Promise<RunRecordData['status'] | undefined> {\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 return undefined;\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 assistantItem.status = 'incomplete';\n assistantItem.content = [{ type: 'output_text', text: fullText }];\n await this.store.saveItem(threadRef, assistantItem, context);\n await this.finishRun(run, RunStatus.WAITING_INPUT, context, `Tool call ${event.name} requires steering`);\n return RunStatus.WAITING_INPUT;\n }\n\n if (event.type === 'waiting_runner') {\n await this.appendRunStep(run, RunStepType.WAITING_RUNNER, context, {\n message: event.message,\n data: { workspace: event.workspace },\n });\n assistantItem.status = 'incomplete';\n assistantItem.content = [{ type: 'output_text', text: fullText }];\n await this.store.saveItem(threadRef, assistantItem, context);\n await this.finishRun(run, RunStatus.WAITING_RUNNER, context, event.message);\n return RunStatus.WAITING_RUNNER;\n }\n\n return undefined;\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.heartbeatAt = now;\n run.updatedAt = now;\n await this.store.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 = RUN_WAITING_STATUSES.has(status) ? undefined : now;\n run.heartbeatAt = now;\n run.leaseOwner = undefined;\n run.leaseExpiresAt = undefined;\n run.updatedAt = now;\n run.error = error;\n await this.store.saveRun(run, context);\n await this.appendRunStep(\n run,\n this.stepTypeForStatus(status),\n context,\n {\n message: error ?? `Run ${status}`,\n data: { status },\n },\n );\n }\n\n private stepTypeForStatus(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 (status === RunStatus.WAITING_INPUT) {\n return RunStepType.WAITING_INPUT;\n }\n if (status === RunStatus.WAITING_RUNNER) {\n return RunStepType.WAITING_RUNNER;\n }\n return RunStepType.FAILED;\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.store.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 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 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 private threadRefFromRun(run: RunRecordData): ThreadRef {\n if (/^https?:\\/\\//.test(run.thread)) {\n return { thread_id: run.thread as `http://${string}` | `https://${string}` };\n }\n return toThreadRef({\n thread_id: this.extractThreadId(run.thread),\n chat_id: run.surfaceId,\n });\n }\n\n private extractThreadId(thread: string): string {\n const dataMarker = '/.data/';\n if (/^https?:\\/\\//.test(thread)) {\n try {\n const url = new URL(thread);\n const markerIndex = url.pathname.indexOf(dataMarker);\n if (markerIndex >= 0 && url.hash) {\n return `${url.pathname.slice(markerIndex + dataMarker.length)}${url.hash}`;\n }\n return url.hash.startsWith('#') ? decodeURIComponent(url.hash.slice(1)) : thread;\n } catch {\n return thread;\n }\n }\n if (thread.includes(dataMarker)) {\n return thread.slice(thread.indexOf(dataMarker) + dataMarker.length);\n }\n const urnMarker = 'urn:xpod:thread:';\n if (thread.startsWith(urnMarker)) {\n const parts = thread.slice(urnMarker.length).split(':');\n return parts.length > 1 ? decodeURIComponent(parts[1]) : decodeURIComponent(parts[0]);\n }\n return thread;\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 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"]}
|