@undefineds.co/xpod 0.2.45 → 0.3.1
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 +9 -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
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"PtyThreadRuntime.js","sourceRoot":"","sources":["../../../../src/api/chatkit/runtime/PtyThreadRuntime.ts"],"names":[],"mappings":"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","sourcesContent":["import * as path from 'node:path';\nimport * as crypto from 'node:crypto';\nimport * as fs from 'node:fs';\nimport * as os from 'node:os';\nimport { getLoggerFor } from 'global-logger-factory';\nimport { getPlatformApiBaseUrl } from '../../service/platform-ai-config';\nimport { PACKAGE_ROOT } from '../../../runtime';\nimport { GitWorktreeService } from './GitWorktreeService';\nimport { AcpRunner } from './AcpRunner';\nimport type { ResolvedAgentConfig } from '../../../agents/config/types';\nimport type { McpServerConfig } from '../../../agents/types';\nimport { codexWireApi, getDefaultBaseUrl } from '../../service/provider-registry';\n\nexport type RunnerType = 'codebuddy' | 'claude' | 'codex';\nexport type RunnerProtocol = 'acp';\n\nexport type WorktreeSpec =\n | { mode: 'existing'; path: string }\n | { mode: 'create'; baseRef?: string; branch?: string };\n\nexport type WorkspaceSpec =\n | { type: 'path'; rootPath: string }\n | { type: 'git'; rootPath: string; worktree: WorktreeSpec };\n\nexport interface PtyRuntimeConfig {\n workspace: WorkspaceSpec;\n /**\n * Stream idle cutoff for agent output. If no output arrives within this window,\n * the current streaming response ends.\n *\n * Defaults to 500ms (fast tests) but real agents may need a larger value.\n */\n idleMs?: number;\n /**\n * How long to keep the stream open after an auth_required event.\n * Defaults to 5 minutes.\n */\n authWaitMs?: number;\n runner: {\n type: RunnerType;\n /**\n * acp: JSON-RPC (Agent Client Protocol) over stdio (recommended)\n */\n protocol?: RunnerProtocol;\n argv?: string[];\n };\n /**\n * Resolved agent configuration from /agents/{agentId}/AGENT.md + .meta.\n * When provided, credentials/model/MCP servers/system prompt come from here\n * instead of DEFAULT_* environment variables.\n */\n agentConfig?: ResolvedAgentConfig;\n}\n\nexport interface PtyThreadRuntimeState {\n workdir: string;\n runnerType: RunnerType;\n protocol: RunnerProtocol;\n argv: string[];\n}\n\nexport type PtyRuntimeOutputEvent =\n | { type: 'text'; text: string }\n | { type: 'error'; message: string }\n | {\n type: 'auth_required';\n method: string;\n url?: string;\n message?: string;\n options?: Array<{ label?: string; url?: string; method?: string }>;\n }\n | {\n type: 'tool_call';\n requestId: string;\n name: string;\n arguments: string;\n };\n\ninterface PendingAcpRequest {\n method: string;\n params?: unknown;\n respond: (result: unknown) => void;\n fail: (code: number, message: string, data?: unknown) => void;\n}\n\ninterface RuntimeEntry {\n runner: AcpRunner;\n state: PtyThreadRuntimeState;\n acp?: {\n sessionId: string;\n pendingRequests: Map<string, PendingAcpRequest>;\n };\n jobs: Array<PtyJob>;\n processing: boolean;\n}\n\n/**\n * In-memory PTY runtime manager keyed by threadId.\n *\n * Notes:\n * - Runtime state is not persisted; thread metadata can store repo/worktree hints,\n * but PTY processes are always runtime-local.\n */\nexport class PtyThreadRuntime {\n private readonly logger = getLoggerFor(this);\n private readonly git = new GitWorktreeService();\n private readonly runtimes = new Map<string, RuntimeEntry>();\n\n constructor(\n private readonly options: {\n worktreeRootDirName?: string;\n } = {},\n ) {}\n\n isRunning(threadId: string): boolean {\n return Boolean(this.runtimes.get(threadId)?.runner.isRunning());\n }\n\n async ensureStarted(threadId: string, cfg: PtyRuntimeConfig): Promise<PtyThreadRuntimeState> {\n const existing = this.runtimes.get(threadId);\n if (existing?.runner.isRunning()) {\n return existing.state;\n }\n\n const workdir = await this.resolveWorkdir(threadId, cfg.workspace);\n if (cfg.workspace.type === 'git') {\n this.git.ensurePathInsideRepo(cfg.workspace.rootPath, workdir);\n }\n\n const protocol: RunnerProtocol = 'acp';\n if (cfg.runner.protocol && cfg.runner.protocol !== 'acp') {\n throw new Error(`Unsupported runner protocol: ${cfg.runner.protocol}. Only 'acp' is supported.`);\n }\n const argv = this.resolveRunnerArgv(cfg.runner.type, cfg.runner.argv);\n const command = argv[0];\n const args = argv.slice(1);\n const env = this.buildRunnerEnv(cfg.runner.type, threadId, workdir, cfg.agentConfig);\n\n const runner = new AcpRunner();\n runner.start({ command, args, cwd: workdir, env });\n\n // ACP handshake + session creation (one session per thread).\n // We intentionally keep capabilities minimal to avoid the agent calling back into the server.\n await runner.request('initialize', {\n protocolVersion: 1,\n clientCapabilities: {},\n clientInfo: { name: 'xpod', version: 'dev' },\n });\n // Build session/new params — inject MCP servers + system prompt from agent config when available.\n const sessionParams: Record<string, unknown> = { cwd: workdir };\n const ac = cfg.agentConfig;\n if (ac) {\n sessionParams.mcpServers = Object.keys(ac.mcpServers).length > 0\n ? this.convertMcpServersForAcp(ac.mcpServers)\n : [];\n if (ac.systemPrompt) sessionParams.systemPrompt = ac.systemPrompt;\n if (ac.skillsContent) sessionParams.appendSystemPrompt = ac.skillsContent;\n if (ac.maxTurns) sessionParams.maxTurns = ac.maxTurns;\n if (ac.allowedTools) sessionParams.allowedTools = ac.allowedTools;\n if (ac.disallowedTools) sessionParams.disallowedTools = ac.disallowedTools;\n if (ac.permissionMode) sessionParams.permissionMode = ac.permissionMode;\n } else {\n sessionParams.mcpServers = [];\n }\n const newSession = await runner.request<{ sessionId: string }>('session/new', sessionParams);\n if (!newSession?.sessionId) {\n throw new Error('ACP session/new did not return sessionId');\n }\n\n const state: PtyThreadRuntimeState = { workdir, runnerType: cfg.runner.type, protocol, argv };\n this.runtimes.set(threadId, {\n runner,\n state,\n acp: { sessionId: newSession.sessionId, pendingRequests: new Map() },\n jobs: [],\n processing: false,\n });\n return state;\n }\n\n stop(threadId: string): void {\n const rt = this.runtimes.get(threadId);\n if (!rt) {\n return;\n }\n rt.runner.stop('SIGINT');\n }\n\n /**\n * Write a message to stdin and stream back output deltas.\n * We serialize jobs per thread to reduce interleaving outputs.\n */\n sendMessage(\n threadId: string,\n text: string,\n options?: { idleMs?: number; authWaitMs?: number },\n ): AsyncIterable<PtyRuntimeOutputEvent> {\n const rt = this.runtimes.get(threadId);\n if (!rt) {\n throw new Error('PTY runtime is not started');\n }\n const idleMs = options?.idleMs ?? 500;\n const authWaitMs = Math.max(options?.authWaitMs ?? 300_000, idleMs);\n const q = new AsyncPushQueue<PtyRuntimeOutputEvent>();\n rt.jobs.push({ input: text, idleMs, authWaitMs, queue: q });\n void this.processJobs(threadId);\n return q.iterate();\n }\n\n respondToRequest(\n threadId: string,\n requestId: string,\n output: string,\n options?: { idleMs?: number; authWaitMs?: number },\n ): AsyncIterable<PtyRuntimeOutputEvent> {\n const rt = this.runtimes.get(threadId);\n if (!rt || rt.state.protocol !== 'acp' || !rt.acp) {\n throw new Error('ACP runtime is not started');\n }\n\n const pending = rt.acp.pendingRequests.get(requestId);\n if (!pending) {\n throw new Error(`ACP request not found: ${requestId}`);\n }\n\n const idleMs = options?.idleMs ?? 500;\n const authWaitMs = Math.max(options?.authWaitMs ?? 300_000, idleMs);\n const q = new AsyncPushQueue<PtyRuntimeOutputEvent>();\n void this.continueAfterRequestResponse(rt, pending, requestId, output, idleMs, authWaitMs, q);\n return q.iterate();\n }\n\n private async processJobs(threadId: string): Promise<void> {\n const rt = this.runtimes.get(threadId);\n if (!rt || rt.processing) {\n return;\n }\n rt.processing = true;\n\n try {\n while (rt.jobs.length > 0) {\n const job = rt.jobs.shift()!;\n await this.runJobAcp(rt, job);\n }\n } finally {\n rt.processing = false;\n }\n }\n\n private async runJobAcp(rt: RuntimeEntry, job: PtyJob): Promise<void> {\n const runner = rt.runner;\n const sessionId = rt.acp?.sessionId;\n if (!sessionId) {\n throw new Error('ACP runtime missing sessionId');\n }\n\n let idleTimer: NodeJS.Timeout | undefined;\n let done = false;\n\n const finish = (): void => {\n if (done) return;\n done = true;\n if (idleTimer) {\n clearTimeout(idleTimer);\n idleTimer = undefined;\n }\n runner.off('notification', onNotification);\n runner.off('request', onRequest);\n job.queue.close();\n };\n\n const bumpIdle = (ms: number = job.idleMs): void => {\n if (done) return;\n if (idleTimer) clearTimeout(idleTimer);\n idleTimer = setTimeout(() => finish(), ms);\n };\n\n // For MVP:\n // - auto-ack common \"permission\"/\"auth\" style requests, so agents don't deadlock\n // - surface auth-required as a structured event (so clients can click URL)\n // - surface text chunks from session/update notifications\n const onRequest = (req: any): void => {\n if (!req || typeof req.method !== 'string') return;\n if (req.method === 'session/request_permission' || req.method === 'auth/request' || req.method === 'auth/authorize') {\n const hint = req.params?.message || req.params?.reason || req.method;\n const url = this.extractAuthUrl(req.params);\n const options =\n this.extractAuthOptions(req.params) ??\n (url ? [{ label: 'Continue in browser', url, method: req.method }] : undefined);\n job.queue.push({\n type: 'auth_required',\n method: req.method,\n url,\n message: typeof hint === 'string' ? hint : undefined,\n options,\n });\n // Keep stream open longer so users can complete browser-based auth.\n bumpIdle(job.authWaitMs);\n // Ack so the runner doesn't deadlock.\n // For \"permission\" style requests we grant by default; for auth requests we just acknowledge handling.\n if (req.method === 'session/request_permission') {\n req.respond({ granted: true });\n } else {\n req.respond({ handled: true });\n }\n return;\n }\n // Map unknown requests to a \"tool call\" (client must respond via threads.add_client_tool_output).\n // We end the current stream so the client can send the follow-up request.\n const pendingId = `acp:${String(req.id)}`;\n rt.acp!.pendingRequests.set(pendingId, {\n method: req.method,\n params: req.params,\n respond: req.respond,\n fail: req.fail,\n });\n job.queue.push({\n type: 'tool_call',\n requestId: pendingId,\n name: req.method,\n arguments: JSON.stringify(req.params ?? {}),\n });\n finish();\n };\n\n const onNotification = (method: string, params: any): void => {\n if (method !== 'session/update') return;\n if (!params || params.sessionId !== sessionId) return;\n\n const update = params.update;\n if (!update || typeof update !== 'object') return;\n\n const text = this.extractTextDeltaFromSessionUpdate(update);\n if (typeof text === 'string' && text.length > 0) {\n job.queue.push({ type: 'text', text });\n bumpIdle();\n }\n };\n\n runner.on('request', onRequest);\n runner.on('notification', onNotification);\n try {\n // Don't await: some agents will block the response until tool-call requests are satisfied.\n // However, some agents (notably codex-acp) may return the final text in the response,\n // not via session/update streaming notifications. We therefore attach a best-effort\n // handler to capture text from the response when available.\n void runner.request('session/prompt', {\n sessionId,\n prompt: [ { type: 'text', text: job.input } ],\n }).then((result) => {\n const text = this.extractTextFromPromptResult(result);\n if (typeof text === 'string' && text.length > 0) {\n job.queue.push({ type: 'text', text });\n bumpIdle();\n }\n }).catch((error) => {\n if (!done) {\n this.logger.warn(`ACP session/prompt failed: ${error}`);\n const anyErr = error as any;\n const dataMsg =\n anyErr?.data && typeof anyErr.data === 'object' && typeof anyErr.data.message === 'string'\n ? anyErr.data.message\n : undefined;\n const msg = dataMsg\n ? `${String(anyErr?.message ?? error)} | data.message=${dataMsg.slice(0, 800)}`\n : String(anyErr?.message ?? error);\n job.queue.push({ type: 'error', message: msg });\n finish();\n }\n });\n // Some agents return the session/prompt response before streaming the final updates.\n // We therefore keep listening until the stream goes idle.\n bumpIdle();\n await job.queue.waitClosed();\n } finally {\n finish();\n }\n }\n\n private async continueAfterRequestResponse(\n rt: RuntimeEntry,\n pending: PendingAcpRequest,\n requestId: string,\n output: string,\n idleMs: number,\n authWaitMs: number,\n queue: AsyncPushQueue<PtyRuntimeOutputEvent>,\n ): Promise<void> {\n const runner = rt.runner;\n const sessionId = rt.acp?.sessionId;\n if (!sessionId || !rt.acp) {\n throw new Error('ACP runtime missing session');\n }\n\n let idleTimer: NodeJS.Timeout | undefined;\n let done = false;\n\n const finish = (): void => {\n if (done) return;\n done = true;\n if (idleTimer) {\n clearTimeout(idleTimer);\n idleTimer = undefined;\n }\n runner.off('notification', onNotification);\n runner.off('request', onRequest);\n queue.close();\n };\n\n const bumpIdle = (ms: number = idleMs): void => {\n if (done) return;\n if (idleTimer) clearTimeout(idleTimer);\n idleTimer = setTimeout(() => finish(), ms);\n };\n\n const onRequest = (req: any): void => {\n if (!req || typeof req.method !== 'string') return;\n if (req.method === 'session/request_permission' || req.method === 'auth/request' || req.method === 'auth/authorize') {\n const hint = req.params?.message || req.params?.reason || req.method;\n const url = this.extractAuthUrl(req.params);\n const options =\n this.extractAuthOptions(req.params) ??\n (url ? [{ label: 'Continue in browser', url, method: req.method }] : undefined);\n queue.push({\n type: 'auth_required',\n method: req.method,\n url,\n message: typeof hint === 'string' ? hint : undefined,\n options,\n });\n // Keep stream open longer so users can complete browser-based auth.\n bumpIdle(authWaitMs);\n if (req.method === 'session/request_permission') {\n req.respond({ granted: true });\n } else {\n req.respond({ handled: true });\n }\n return;\n }\n\n const nestedId = `acp:${String(req.id)}`;\n rt.acp!.pendingRequests.set(nestedId, {\n method: req.method,\n params: req.params,\n respond: req.respond,\n fail: req.fail,\n });\n queue.push({\n type: 'tool_call',\n requestId: nestedId,\n name: req.method,\n arguments: JSON.stringify(req.params ?? {}),\n });\n finish();\n };\n\n const onNotification = (method: string, params: any): void => {\n if (method !== 'session/update') return;\n if (!params || params.sessionId !== sessionId) return;\n const update = params.update;\n if (!update || typeof update !== 'object') return;\n const text = this.extractTextDeltaFromSessionUpdate(update);\n if (typeof text === 'string' && text.length > 0) {\n queue.push({ type: 'text', text });\n bumpIdle();\n }\n };\n\n runner.on('request', onRequest);\n runner.on('notification', onNotification);\n try {\n rt.acp.pendingRequests.delete(requestId);\n let result: unknown = output;\n try {\n result = JSON.parse(output);\n } catch {\n // keep raw string\n }\n pending.respond(result);\n bumpIdle();\n await queue.waitClosed();\n } finally {\n finish();\n }\n }\n\n private async resolveWorkdir(threadId: string, workspace: WorkspaceSpec): Promise<string> {\n if (workspace.type === 'path') {\n if (!fs.existsSync(workspace.rootPath)) {\n throw new Error(`workspace.rootPath not found: ${workspace.rootPath}`);\n }\n return workspace.rootPath;\n }\n\n // workspace.type === 'git'\n const repoRoot = workspace.rootPath;\n const worktree = workspace.worktree;\n\n if (worktree.mode === 'existing') {\n if (!fs.existsSync(worktree.path)) {\n throw new Error(`worktree.path not found: ${worktree.path}`);\n }\n return worktree.path;\n }\n\n await this.git.assertGitRepo(repoRoot);\n\n const rootDirName = this.options.worktreeRootDirName ?? '.xpod-worktrees';\n const root = path.join(repoRoot, rootDirName);\n const worktreePath = path.join(root, threadId);\n\n if (fs.existsSync(worktreePath)) {\n return worktreePath;\n }\n\n const baseRef = worktree.baseRef ?? 'main';\n await this.git.createWorktree({\n repoPath: repoRoot,\n worktreePath,\n baseRef,\n branch: worktree.branch,\n });\n\n return worktreePath;\n }\n\n private resolveRunnerArgv(type: RunnerType, argv?: string[]): string[] {\n if (argv && argv.length > 0) {\n return argv;\n }\n switch (type) {\n case 'codebuddy':\n return [ this.resolveLocalBin('codebuddy'), '--acp' ];\n case 'claude':\n return [ this.resolveLocalBin('claude-code-acp') ]; // from @zed-industries/claude-code-acp\n case 'codex':\n return [ this.resolveLocalBin('codex-acp') ]; // from @zed-industries/codex-acp\n default:\n return [ type ];\n }\n }\n\n private resolveLocalBin(binName: string): string {\n const localBin = path.join(PACKAGE_ROOT, 'node_modules', '.bin', binName);\n if (fs.existsSync(localBin)) {\n return localBin;\n }\n return binName;\n }\n\n private buildRunnerEnv(\n type: RunnerType,\n threadId: string,\n workdir: string,\n agentConfig?: ResolvedAgentConfig,\n ): Record<string, string | undefined> | undefined {\n // When agentConfig is provided, use its credentials; otherwise fall back to DEFAULT_* env vars.\n const defaultApiKey = agentConfig?.apiKey || process.env.DEFAULT_API_KEY?.trim();\n const rawApiBase = agentConfig?.baseUrl || getPlatformApiBaseUrl();\n const defaultModel = agentConfig?.model || process.env.DEFAULT_MODEL?.trim();\n\n // CodeBuddy ACP relies on its own local auth state, not OpenAI/Anthropic keys.\n if (type === 'codebuddy') {\n return undefined;\n }\n\n // Run external agents with an isolated HOME to avoid:\n // - polluting the user's real ~/.codex / ~/.claude state\n // - sandbox permission errors when tools try to write outside workspace roots\n const home = this.getIsolatedHomeDir(type, threadId, workdir);\n\n if (type === 'codex') {\n // codex-acp speaks OpenAI Responses API by default. Only api.openai.com natively supports it.\n // For all other providers, configure codex to use wire_api=\"chat\" so it sends\n // Chat Completions requests directly to the provider instead.\n const defaultApiBase = rawApiBase || getDefaultBaseUrl();\n const codexHome = path.join(home, '.codex');\n this.ensureDir(codexHome);\n this.ensureDir(path.join(codexHome, 'skills'));\n this.ensureCodexConfigAndAuth(codexHome, {\n baseUrl: defaultApiBase,\n apiKey: defaultApiKey,\n wireApi: codexWireApi(defaultApiBase),\n });\n const env: Record<string, string | undefined> = {\n HOME: home,\n XDG_CONFIG_HOME: path.join(home, '.config'),\n XDG_STATE_HOME: path.join(home, '.local', 'state'),\n XDG_DATA_HOME: path.join(home, '.local', 'share'),\n XDG_CACHE_HOME: path.join(home, '.cache'),\n CODEX_HOME: codexHome,\n };\n if (defaultApiKey) {\n // codex-acp advertises CODEX_API_KEY / OPENAI_API_KEY.\n env.CODEX_API_KEY = defaultApiKey;\n env.OPENAI_API_KEY = defaultApiKey;\n }\n env.OPENAI_BASE_URL = defaultApiBase;\n env.OPENAI_API_BASE = defaultApiBase;\n if (defaultModel) {\n // Best-effort: may be ignored by codex-acp depending on its config.\n env.OPENAI_MODEL = defaultModel;\n env.CODEX_MODEL = defaultModel;\n }\n return env;\n }\n\n // type === 'claude'\n const defaultApiBase = rawApiBase || getDefaultBaseUrl();\n const env: Record<string, string | undefined> = {\n HOME: home,\n XDG_CONFIG_HOME: path.join(home, '.config'),\n XDG_STATE_HOME: path.join(home, '.local', 'state'),\n XDG_DATA_HOME: path.join(home, '.local', 'share'),\n XDG_CACHE_HOME: path.join(home, '.cache'),\n };\n const normalizedBase = defaultApiBase ? this.normalizeClaudeBaseUrl(defaultApiBase) : undefined;\n const isOpenRouterLike =\n (typeof normalizedBase === 'string' && normalizedBase.includes('openrouter.ai'));\n\n if (defaultApiKey) {\n // claude-code-acp is built on the Claude Agent SDK.\n // For OpenRouter, the Anthropic-compatible path is typically via AUTH_TOKEN.\n if (isOpenRouterLike) {\n env.ANTHROPIC_AUTH_TOKEN = defaultApiKey;\n delete env.ANTHROPIC_API_KEY;\n } else {\n env.ANTHROPIC_API_KEY = defaultApiKey;\n delete env.ANTHROPIC_AUTH_TOKEN;\n }\n }\n if (normalizedBase) {\n env.ANTHROPIC_BASE_URL = normalizedBase;\n }\n if (defaultModel) {\n // Use the same model for all families to keep behavior predictable.\n env.ANTHROPIC_DEFAULT_SONNET_MODEL = defaultModel;\n env.ANTHROPIC_DEFAULT_HAIKU_MODEL = defaultModel;\n env.ANTHROPIC_DEFAULT_OPUS_MODEL = defaultModel;\n }\n return env;\n }\n\n private getIsolatedHomeDir(type: Exclude<RunnerType, 'codebuddy'>, threadId: string, workdir: string): string {\n // Keep it stable per thread/workdir so session state can be reused across requests,\n // but still isolated from the user's actual home.\n const hash = crypto.createHash('sha256').update(`${type}:${threadId}:${workdir}`).digest('hex').slice(0, 16);\n const root = path.join(os.tmpdir(), 'xpod-acp-home', type, hash);\n fs.mkdirSync(root, { recursive: true });\n return root;\n }\n\n private ensureDir(dir: string): void {\n try {\n fs.mkdirSync(dir, { recursive: true });\n } catch {\n // best-effort: agent binaries may create it themselves\n }\n }\n\n private normalizeClaudeBaseUrl(baseUrl: string): string {\n if (baseUrl.endsWith('/v1')) {\n return baseUrl.slice(0, -3);\n }\n if (baseUrl.endsWith('/v1/')) {\n return baseUrl.slice(0, -4);\n }\n return baseUrl;\n }\n\n private ensureCodexConfigAndAuth(\n codexHome: string,\n options: { baseUrl?: string; apiKey?: string; wireApi?: 'responses' | 'chat' },\n ): void {\n // codex-acp wraps Codex CLI, which primarily reads config/auth from CODEX_HOME.\n // We generate a minimal config + auth file for isolated runs so that:\n // - it doesn't depend on the developer's ~/.codex\n // - it can authenticate without interactive login\n const configPath = path.join(codexHome, 'config.toml');\n const authPath = path.join(codexHome, 'auth.json');\n\n try {\n const baseUrl = options.baseUrl?.trim();\n if (baseUrl) {\n const wireApi = options.wireApi ?? 'responses';\n const contents = [\n 'model_provider = \"codex\"',\n '',\n '[model_providers.codex]',\n 'name = \"codex\"',\n `base_url = ${JSON.stringify(baseUrl)}`,\n `wire_api = ${JSON.stringify(wireApi)}`,\n 'requires_openai_auth = true',\n '',\n ].join('\\n');\n fs.writeFileSync(configPath, contents, { encoding: 'utf8' });\n }\n } catch (e) {\n this.logger.debug(`Failed to write Codex config.toml: ${String(e)}`);\n }\n\n try {\n const apiKey = options.apiKey?.trim();\n if (apiKey) {\n // Match Codex's expected schema.\n fs.writeFileSync(authPath, JSON.stringify({ OPENAI_API_KEY: apiKey }), { encoding: 'utf8' });\n }\n } catch (e) {\n this.logger.debug(`Failed to write Codex auth.json: ${String(e)}`);\n }\n }\n\n /**\n * Convert McpServerConfig map to ACP session/new format.\n * ACP expects an array of { name, ...config } objects.\n */\n private convertMcpServersForAcp(\n servers: Record<string, McpServerConfig>,\n ): Array<Record<string, unknown>> {\n return Object.entries(servers).map(([name, config]) => ({\n name,\n ...config,\n }));\n }\n\n private extractTextDeltaFromSessionUpdate(update: any): string | undefined {\n if (!update) return undefined;\n\n // Common shapes:\n // - { sessionUpdate/type: 'agent_message_chunk', content: { type:'text', text:'...' } }\n // - { ... , delta/text/content: '...' }\n // - { ... , message: { content: [{ type:'text', text:'...' }, ...] } }\n if (typeof update === 'string') return update;\n if (typeof update.delta === 'string') return update.delta;\n if (typeof update.text === 'string') return update.text;\n\n const content = update.content?.content ?? update.content;\n if (typeof content === 'string') return content;\n if (content && typeof content === 'object') {\n if (typeof content.text === 'string') return content.text;\n if (Array.isArray(content)) {\n const parts = content\n .map((p: any) => (p && typeof p === 'object' ? p.text : undefined))\n .filter((t: any) => typeof t === 'string');\n if (parts.length) return parts.join('');\n }\n }\n\n const message = update.message ?? update.item ?? update.assistant_message;\n if (message && typeof message === 'object') {\n const msgContent = message.content?.content ?? message.content;\n if (typeof msgContent === 'string') return msgContent;\n if (Array.isArray(msgContent)) {\n const parts = msgContent\n .map((p: any) => {\n if (!p || typeof p !== 'object') return undefined;\n if (typeof p.text === 'string') return p.text;\n if (typeof p.delta === 'string') return p.delta;\n return undefined;\n })\n .filter((t: any) => typeof t === 'string');\n if (parts.length) return parts.join('');\n }\n }\n\n return undefined;\n }\n\n private extractTextFromPromptResult(result: any): string | undefined {\n if (!result) return undefined;\n if (typeof result === 'string') return result;\n\n // Common shapes observed in ACP implementations:\n // - { message: { content: [{ type:'text', text:'...' }, ...] } }\n // - { output_text: '...' } / { text: '...' }\n // - { content: [{...}] }\n if (typeof result.text === 'string') return result.text;\n if (typeof result.output_text === 'string') return result.output_text;\n\n const message = result.message ?? result.item ?? result.assistant_message;\n if (message && typeof message === 'object') {\n const msgContent = message.content?.content ?? message.content;\n if (typeof msgContent === 'string') return msgContent;\n if (Array.isArray(msgContent)) {\n const parts = msgContent\n .map((p: any) => (p && typeof p === 'object' ? (typeof p.text === 'string' ? p.text : undefined) : undefined))\n .filter((t: any) => typeof t === 'string');\n if (parts.length) return parts.join('');\n }\n }\n\n const content = result.content?.content ?? result.content;\n if (typeof content === 'string') return content;\n if (Array.isArray(content)) {\n const parts = content\n .map((p: any) => (p && typeof p === 'object' ? (typeof p.text === 'string' ? p.text : undefined) : undefined))\n .filter((t: any) => typeof t === 'string');\n if (parts.length) return parts.join('');\n }\n\n return undefined;\n }\n\n private extractAuthUrl(params: any): string | undefined {\n if (!params || typeof params !== 'object') return undefined;\n const candidates = [\n params.url,\n params.authorizationUrl,\n params.authorization_url,\n params.authUrl,\n params.auth_url,\n params.browserUrl,\n params.browser_url,\n params.verification_uri,\n params.verificationUri,\n params.verificationUrl,\n ];\n const found = candidates.find((v) => typeof v === 'string' && v.startsWith('http'));\n return found;\n }\n\n private extractAuthOptions(params: any): Array<{ label?: string; url?: string; method?: string }> | undefined {\n if (!params || typeof params !== 'object') return undefined;\n\n const raw =\n Array.isArray((params as any).methods) ? (params as any).methods\n : Array.isArray((params as any).options) ? (params as any).options\n : Array.isArray((params as any).authMethods) ? (params as any).authMethods\n : Array.isArray((params as any).auth_methods) ? (params as any).auth_methods\n : undefined;\n\n if (!raw) return undefined;\n\n const opts = raw\n .map((m: any) => {\n if (!m || typeof m !== 'object') return undefined;\n const url = this.extractAuthUrl(m);\n const label =\n typeof m.label === 'string' ? m.label :\n typeof m.name === 'string' ? m.name :\n typeof m.type === 'string' ? m.type :\n undefined;\n const method =\n typeof m.method === 'string' ? m.method :\n typeof m.type === 'string' ? m.type :\n undefined;\n return { label, url, method };\n })\n .filter(Boolean) as Array<{ label?: string; url?: string; method?: string }>;\n\n return opts.length > 0 ? opts : undefined;\n }\n}\n\ninterface PtyJob {\n input: string;\n idleMs: number;\n authWaitMs: number;\n queue: AsyncPushQueue<PtyRuntimeOutputEvent>;\n}\n\nclass AsyncPushQueue<T> {\n private readonly items: T[] = [];\n private resolvers: Array<() => void> = [];\n private _closed = false;\n private closeResolvers: Array<() => void> = [];\n\n push(item: T): void {\n if (this._closed) {\n return;\n }\n this.items.push(item);\n const r = this.resolvers.shift();\n r?.();\n }\n\n close(): void {\n if (this._closed) {\n return;\n }\n this._closed = true;\n for (const r of this.resolvers) {\n r();\n }\n this.resolvers = [];\n for (const r of this.closeResolvers) {\n r();\n }\n this.closeResolvers = [];\n }\n\n async waitClosed(): Promise<void> {\n if (this._closed) {\n return;\n }\n await new Promise<void>((resolve) => this.closeResolvers.push(resolve));\n }\n\n 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"]}
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Agent session initialization and execution for xpod CLI.
|
|
3
|
-
*
|
|
4
|
-
* Uses pi-coding-agent for the agent runtime (tools, extensions).
|
|
5
|
-
* All LLM calls go through xpod API (/v1/chat/completions).
|
|
6
|
-
* Server-side handles provider routing based on user's Pod config.
|
|
7
|
-
*/
|
|
8
|
-
import type { Session } from '@inrupt/solid-client-authn-node';
|
|
9
|
-
import { type AgentSessionLike } from './pi-optional';
|
|
10
|
-
export interface InitAgentOptions {
|
|
11
|
-
session: Session;
|
|
12
|
-
apiKey: string;
|
|
13
|
-
xpodUrl: string;
|
|
14
|
-
model?: string;
|
|
15
|
-
chatId: string;
|
|
16
|
-
workspace?: string;
|
|
17
|
-
threadId?: string;
|
|
18
|
-
}
|
|
19
|
-
/**
|
|
20
|
-
* Initialize an AgentSession with Pod-specific configuration.
|
|
21
|
-
*
|
|
22
|
-
* LLM routing: Pod AI config → direct provider call; fallback → xpod API proxy.
|
|
23
|
-
*/
|
|
24
|
-
export declare function initAgent(opts: InitAgentOptions): Promise<{
|
|
25
|
-
agent: AgentSessionLike;
|
|
26
|
-
threadId: string;
|
|
27
|
-
}>;
|
|
28
|
-
/**
|
|
29
|
-
* Run in print mode: send one message, output result, exit.
|
|
30
|
-
* Uses pi-coding-agent's runPrintMode for proper formatting.
|
|
31
|
-
*/
|
|
32
|
-
export declare function runOnce(agent: AgentSessionLike, message: string, session: Session, chatId: string, threadId: string): Promise<void>;
|
|
33
|
-
/**
|
|
34
|
-
* Run in interactive mode using pi-coding-agent's full TUI.
|
|
35
|
-
* Provides diff preview, tool execution visualization, multi-line editor, etc.
|
|
36
|
-
*/
|
|
37
|
-
export declare function runInteractive(agent: AgentSessionLike, _session: Session, _chatId: string, _threadId: string, initialPrompt?: string): Promise<void>;
|
|
@@ -1,211 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* Agent session initialization and execution for xpod CLI.
|
|
4
|
-
*
|
|
5
|
-
* Uses pi-coding-agent for the agent runtime (tools, extensions).
|
|
6
|
-
* All LLM calls go through xpod API (/v1/chat/completions).
|
|
7
|
-
* Server-side handles provider routing based on user's Pod config.
|
|
8
|
-
*/
|
|
9
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
12
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
13
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
14
|
-
}
|
|
15
|
-
Object.defineProperty(o, k2, desc);
|
|
16
|
-
}) : (function(o, m, k, k2) {
|
|
17
|
-
if (k2 === undefined) k2 = k;
|
|
18
|
-
o[k2] = m[k];
|
|
19
|
-
}));
|
|
20
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
21
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
22
|
-
}) : function(o, v) {
|
|
23
|
-
o["default"] = v;
|
|
24
|
-
});
|
|
25
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
26
|
-
if (mod && mod.__esModule) return mod;
|
|
27
|
-
var result = {};
|
|
28
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
29
|
-
__setModuleDefault(result, mod);
|
|
30
|
-
return result;
|
|
31
|
-
};
|
|
32
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
33
|
-
exports.initAgent = initAgent;
|
|
34
|
-
exports.runOnce = runOnce;
|
|
35
|
-
exports.runInteractive = runInteractive;
|
|
36
|
-
const secretary_prompt_1 = require("./secretary-prompt");
|
|
37
|
-
const pod_thread_store_1 = require("./pod-thread-store");
|
|
38
|
-
const os = __importStar(require("os"));
|
|
39
|
-
const path = __importStar(require("path"));
|
|
40
|
-
const pi_optional_1 = require("./pi-optional");
|
|
41
|
-
/**
|
|
42
|
-
* Build a Model object for an OpenAI-compatible endpoint.
|
|
43
|
-
*/
|
|
44
|
-
function buildModel(baseUrl, modelId) {
|
|
45
|
-
return {
|
|
46
|
-
id: modelId,
|
|
47
|
-
name: modelId,
|
|
48
|
-
api: 'openai-completions',
|
|
49
|
-
provider: 'openai',
|
|
50
|
-
baseUrl,
|
|
51
|
-
reasoning: false,
|
|
52
|
-
input: ['text'],
|
|
53
|
-
cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
|
|
54
|
-
contextWindow: 128000,
|
|
55
|
-
maxTokens: 4096,
|
|
56
|
-
};
|
|
57
|
-
}
|
|
58
|
-
/**
|
|
59
|
-
* Resolve AI config: always use xpod API proxy.
|
|
60
|
-
* Server-side handles provider routing based on user's Pod config.
|
|
61
|
-
*/
|
|
62
|
-
async function resolveAiConfig(xpodUrl, apiKey, modelOverride) {
|
|
63
|
-
const base = xpodUrl.endsWith('/') ? `${xpodUrl}v1` : `${xpodUrl}/v1`;
|
|
64
|
-
return {
|
|
65
|
-
model: buildModel(base, modelOverride || 'default'),
|
|
66
|
-
providerApiKey: apiKey,
|
|
67
|
-
source: 'xpod API',
|
|
68
|
-
};
|
|
69
|
-
}
|
|
70
|
-
/**
|
|
71
|
-
* Initialize an AgentSession with Pod-specific configuration.
|
|
72
|
-
*
|
|
73
|
-
* LLM routing: Pod AI config → direct provider call; fallback → xpod API proxy.
|
|
74
|
-
*/
|
|
75
|
-
async function initAgent(opts) {
|
|
76
|
-
const { session, apiKey, xpodUrl, model: modelOverride, chatId, workspace = process.cwd(), threadId: existingThreadId, } = opts;
|
|
77
|
-
// Create or use existing thread (workspace stored as first-class field)
|
|
78
|
-
const threadId = existingThreadId ?? await (0, pod_thread_store_1.createThread)(session, chatId, workspace);
|
|
79
|
-
// Dynamic import ESM packages (must bypass tsc's CJS transform)
|
|
80
|
-
const piCodingAgent = await (0, pi_optional_1.loadPiCodingAgent)();
|
|
81
|
-
const { createAgentSession, AuthStorage, SessionManager, SettingsManager, DefaultResourceLoader } = piCodingAgent;
|
|
82
|
-
// 1. Resolve AI config (always use xpod API)
|
|
83
|
-
const aiConfig = await resolveAiConfig(xpodUrl, apiKey, modelOverride);
|
|
84
|
-
console.error(`[xpod] AI source: ${aiConfig.source}, model: ${aiConfig.model.id}`);
|
|
85
|
-
// 2. Inject API key for the openai provider
|
|
86
|
-
const authStorage = AuthStorage.inMemory();
|
|
87
|
-
authStorage.setRuntimeApiKey('openai', aiConfig.providerApiKey);
|
|
88
|
-
// 3. SessionManager with local persistence
|
|
89
|
-
const sessionDir = path.join(os.homedir(), '.xpod', 'sessions');
|
|
90
|
-
const sessionManager = SessionManager.create(workspace, sessionDir);
|
|
91
|
-
const settingsManager = SettingsManager.inMemory();
|
|
92
|
-
// 4. Resource loader with extensions, skills, and themes enabled
|
|
93
|
-
const resourceLoader = new DefaultResourceLoader({
|
|
94
|
-
cwd: workspace,
|
|
95
|
-
settingsManager,
|
|
96
|
-
systemPrompt: secretary_prompt_1.SECRETARY_SYSTEM_PROMPT,
|
|
97
|
-
noExtensions: false,
|
|
98
|
-
noSkills: false,
|
|
99
|
-
noPromptTemplates: false,
|
|
100
|
-
noThemes: false,
|
|
101
|
-
});
|
|
102
|
-
await resourceLoader.reload();
|
|
103
|
-
// 5. Create agent session (allow runtime model/thinking switching)
|
|
104
|
-
const result = await createAgentSession({
|
|
105
|
-
cwd: workspace,
|
|
106
|
-
authStorage,
|
|
107
|
-
model: aiConfig.model,
|
|
108
|
-
thinkingLevel: 'off', // User can change via Ctrl+T in interactive mode
|
|
109
|
-
sessionManager,
|
|
110
|
-
settingsManager,
|
|
111
|
-
resourceLoader,
|
|
112
|
-
});
|
|
113
|
-
const { session: agent } = result;
|
|
114
|
-
// 6. Load history for continue mode
|
|
115
|
-
if (existingThreadId) {
|
|
116
|
-
const threadData = await (0, pod_thread_store_1.loadThread)(session, chatId, existingThreadId);
|
|
117
|
-
if (threadData && threadData.messages.length > 0) {
|
|
118
|
-
console.error(`[xpod] Loading ${threadData.messages.length} messages from thread ${existingThreadId}`);
|
|
119
|
-
// Convert Pod messages to AgentMessage format and add to session
|
|
120
|
-
for (const msg of threadData.messages) {
|
|
121
|
-
const agentMessage = {
|
|
122
|
-
role: msg.role,
|
|
123
|
-
content: [{ type: 'text', text: msg.content }],
|
|
124
|
-
};
|
|
125
|
-
// Add message to session history
|
|
126
|
-
sessionManager.appendMessage(agentMessage);
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
// Track current assistant message for audit
|
|
131
|
-
let currentAssistantMessage = '';
|
|
132
|
-
const currentToolCalls = new Map();
|
|
133
|
-
// 6. Set up event handlers for audit
|
|
134
|
-
agent.subscribe(async (event) => {
|
|
135
|
-
try {
|
|
136
|
-
// Audit: track tool call start
|
|
137
|
-
if (event.type === 'tool_execution_start') {
|
|
138
|
-
currentToolCalls.set(event.toolCallId, {
|
|
139
|
-
toolName: event.toolName,
|
|
140
|
-
toolCallId: event.toolCallId,
|
|
141
|
-
arguments: event.args,
|
|
142
|
-
status: 'pending',
|
|
143
|
-
});
|
|
144
|
-
}
|
|
145
|
-
// Audit: track assistant message updates
|
|
146
|
-
if (event.type === 'message_update' && event.message.role === 'assistant') {
|
|
147
|
-
const content = event.message.content;
|
|
148
|
-
if (Array.isArray(content)) {
|
|
149
|
-
for (const part of content) {
|
|
150
|
-
if (part.type === 'text') {
|
|
151
|
-
currentAssistantMessage = part.text;
|
|
152
|
-
}
|
|
153
|
-
}
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
// Audit: save assistant message when complete
|
|
157
|
-
if (event.type === 'message_end' && event.message.role === 'assistant') {
|
|
158
|
-
if (currentAssistantMessage) {
|
|
159
|
-
await (0, pod_thread_store_1.saveMessage)(session, chatId, threadId, {
|
|
160
|
-
role: 'assistant',
|
|
161
|
-
content: currentAssistantMessage,
|
|
162
|
-
timestamp: new Date().toISOString(),
|
|
163
|
-
});
|
|
164
|
-
currentAssistantMessage = '';
|
|
165
|
-
}
|
|
166
|
-
}
|
|
167
|
-
// Audit: save tool call when complete
|
|
168
|
-
if (event.type === 'tool_execution_end') {
|
|
169
|
-
const toolCall = currentToolCalls.get(event.toolCallId);
|
|
170
|
-
if (toolCall) {
|
|
171
|
-
toolCall.output = event.result;
|
|
172
|
-
toolCall.status = event.isError ? 'failed' : 'completed';
|
|
173
|
-
await (0, pod_thread_store_1.saveToolCall)(session, chatId, threadId, toolCall);
|
|
174
|
-
currentToolCalls.delete(event.toolCallId);
|
|
175
|
-
}
|
|
176
|
-
}
|
|
177
|
-
}
|
|
178
|
-
catch (error) {
|
|
179
|
-
console.error('Error in event handler:', error);
|
|
180
|
-
}
|
|
181
|
-
});
|
|
182
|
-
return { agent, threadId };
|
|
183
|
-
}
|
|
184
|
-
/**
|
|
185
|
-
* Run in print mode: send one message, output result, exit.
|
|
186
|
-
* Uses pi-coding-agent's runPrintMode for proper formatting.
|
|
187
|
-
*/
|
|
188
|
-
async function runOnce(agent, message, session, chatId, threadId) {
|
|
189
|
-
await (0, pod_thread_store_1.saveMessage)(session, chatId, threadId, {
|
|
190
|
-
role: 'user',
|
|
191
|
-
content: message,
|
|
192
|
-
timestamp: new Date().toISOString(),
|
|
193
|
-
});
|
|
194
|
-
const piCodingAgent = await (0, pi_optional_1.loadPiCodingAgent)();
|
|
195
|
-
await piCodingAgent.runPrintMode(agent, {
|
|
196
|
-
mode: 'text',
|
|
197
|
-
initialMessage: message,
|
|
198
|
-
});
|
|
199
|
-
}
|
|
200
|
-
/**
|
|
201
|
-
* Run in interactive mode using pi-coding-agent's full TUI.
|
|
202
|
-
* Provides diff preview, tool execution visualization, multi-line editor, etc.
|
|
203
|
-
*/
|
|
204
|
-
async function runInteractive(agent, _session, _chatId, _threadId, initialPrompt) {
|
|
205
|
-
const piCodingAgent = await (0, pi_optional_1.loadPiCodingAgent)();
|
|
206
|
-
const mode = new piCodingAgent.InteractiveMode(agent, {
|
|
207
|
-
initialMessage: initialPrompt,
|
|
208
|
-
});
|
|
209
|
-
await mode.run();
|
|
210
|
-
}
|
|
211
|
-
//# sourceMappingURL=agent-session.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"agent-session.js","sourceRoot":"","sources":["../../../src/cli/lib/agent-session.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Agent session initialization and execution for xpod CLI.\n *\n * Uses pi-coding-agent for the agent runtime (tools, extensions).\n * All LLM calls go through xpod API (/v1/chat/completions).\n * Server-side handles provider routing based on user's Pod config.\n */\n\nimport { SECRETARY_SYSTEM_PROMPT } from './secretary-prompt';\nimport { saveMessage, saveToolCall, createThread, loadThread } from './pod-thread-store';\nimport type { Session } from '@inrupt/solid-client-authn-node';\nimport * as os from 'os';\nimport * as path from 'path';\nimport {\n loadPiCodingAgent,\n type AgentSessionLike,\n type CreateAgentSessionResultLike,\n type PiModel,\n} from './pi-optional';\n\nexport interface InitAgentOptions {\n session: Session; // Authenticated Solid session (for Pod ops)\n apiKey: string; // xpod API key (sk-xxx format, for LLM proxy fallback)\n xpodUrl: string; // xpod server URL (fallback endpoint)\n model?: string; // Model ID override\n chatId: string; // Chat ID (from getOrCreateDefaultChat)\n workspace?: string; // Working directory path\n threadId?: string; // Optional thread ID to continue\n}\n\n/**\n * Build a Model object for an OpenAI-compatible endpoint.\n */\nfunction buildModel(baseUrl: string, modelId: string): PiModel {\n return {\n id: modelId,\n name: modelId,\n api: 'openai-completions',\n provider: 'openai',\n baseUrl,\n reasoning: false,\n input: ['text'],\n cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },\n contextWindow: 128000,\n maxTokens: 4096,\n };\n}\n\n/**\n * Resolve AI config: always use xpod API proxy.\n * Server-side handles provider routing based on user's Pod config.\n */\nasync function resolveAiConfig(\n xpodUrl: string,\n apiKey: string,\n modelOverride?: string,\n): Promise<{ model: PiModel; providerApiKey: string; source: string }> {\n const base = xpodUrl.endsWith('/') ? `${xpodUrl}v1` : `${xpodUrl}/v1`;\n return {\n model: buildModel(base, modelOverride || 'default'),\n providerApiKey: apiKey,\n source: 'xpod API',\n };\n}\n\n/**\n * Initialize an AgentSession with Pod-specific configuration.\n *\n * LLM routing: Pod AI config → direct provider call; fallback → xpod API proxy.\n */\nexport async function initAgent(opts: InitAgentOptions): Promise<{ agent: AgentSessionLike; threadId: string }> {\n const {\n session,\n apiKey,\n xpodUrl,\n model: modelOverride,\n chatId,\n workspace = process.cwd(),\n threadId: existingThreadId,\n } = opts;\n\n // Create or use existing thread (workspace stored as first-class field)\n const threadId = existingThreadId ?? await createThread(session, chatId, workspace);\n\n // Dynamic import ESM packages (must bypass tsc's CJS transform)\n const piCodingAgent = await loadPiCodingAgent();\n const { createAgentSession, AuthStorage, SessionManager, SettingsManager, DefaultResourceLoader } = piCodingAgent;\n\n // 1. Resolve AI config (always use xpod API)\n const aiConfig = await resolveAiConfig(xpodUrl, apiKey, modelOverride);\n console.error(`[xpod] AI source: ${aiConfig.source}, model: ${aiConfig.model.id}`);\n\n // 2. Inject API key for the openai provider\n const authStorage = AuthStorage.inMemory();\n authStorage.setRuntimeApiKey('openai', aiConfig.providerApiKey);\n\n // 3. SessionManager with local persistence\n const sessionDir = path.join(os.homedir(), '.xpod', 'sessions');\n const sessionManager = SessionManager.create(workspace, sessionDir);\n const settingsManager = SettingsManager.inMemory();\n\n // 4. Resource loader with extensions, skills, and themes enabled\n const resourceLoader = new DefaultResourceLoader({\n cwd: workspace,\n settingsManager,\n systemPrompt: SECRETARY_SYSTEM_PROMPT,\n noExtensions: false,\n noSkills: false,\n noPromptTemplates: false,\n noThemes: false,\n });\n await resourceLoader.reload();\n\n // 5. Create agent session (allow runtime model/thinking switching)\n const result: CreateAgentSessionResultLike = await createAgentSession({\n cwd: workspace,\n authStorage,\n model: aiConfig.model,\n thinkingLevel: 'off', // User can change via Ctrl+T in interactive mode\n sessionManager,\n settingsManager,\n resourceLoader,\n });\n\n const { session: agent } = result;\n\n // 6. Load history for continue mode\n if (existingThreadId) {\n const threadData = await loadThread(session, chatId, existingThreadId);\n if (threadData && threadData.messages.length > 0) {\n console.error(`[xpod] Loading ${threadData.messages.length} messages from thread ${existingThreadId}`);\n\n // Convert Pod messages to AgentMessage format and add to session\n for (const msg of threadData.messages) {\n const agentMessage: any = {\n role: msg.role,\n content: [{ type: 'text', text: msg.content }],\n };\n\n // Add message to session history\n sessionManager.appendMessage(agentMessage);\n }\n }\n }\n\n // Track current assistant message for audit\n let currentAssistantMessage = '';\n const currentToolCalls = new Map<string, any>();\n\n // 6. Set up event handlers for audit\n agent.subscribe(async (event: any) => {\n try {\n // Audit: track tool call start\n if (event.type === 'tool_execution_start') {\n currentToolCalls.set(event.toolCallId, {\n toolName: event.toolName,\n toolCallId: event.toolCallId,\n arguments: event.args,\n status: 'pending',\n });\n }\n\n // Audit: track assistant message updates\n if (event.type === 'message_update' && event.message.role === 'assistant') {\n const content = event.message.content;\n if (Array.isArray(content)) {\n for (const part of content) {\n if (part.type === 'text') {\n currentAssistantMessage = part.text;\n }\n }\n }\n }\n\n // Audit: save assistant message when complete\n if (event.type === 'message_end' && event.message.role === 'assistant') {\n if (currentAssistantMessage) {\n await saveMessage(session, chatId, threadId, {\n role: 'assistant',\n content: currentAssistantMessage,\n timestamp: new Date().toISOString(),\n });\n currentAssistantMessage = '';\n }\n }\n\n // Audit: save tool call when complete\n if (event.type === 'tool_execution_end') {\n const toolCall = currentToolCalls.get(event.toolCallId);\n if (toolCall) {\n toolCall.output = event.result;\n toolCall.status = event.isError ? 'failed' : 'completed';\n await saveToolCall(session, chatId, threadId, toolCall);\n currentToolCalls.delete(event.toolCallId);\n }\n }\n } catch (error) {\n console.error('Error in event handler:', error);\n }\n });\n\n return { agent, threadId };\n}\n\n/**\n * Run in print mode: send one message, output result, exit.\n * Uses pi-coding-agent's runPrintMode for proper formatting.\n */\nexport async function runOnce(\n agent: AgentSessionLike,\n message: string,\n session: Session,\n chatId: string,\n threadId: string,\n): Promise<void> {\n await saveMessage(session, chatId, threadId, {\n role: 'user',\n content: message,\n timestamp: new Date().toISOString(),\n });\n\n const piCodingAgent = await loadPiCodingAgent();\n await piCodingAgent.runPrintMode(agent, {\n mode: 'text',\n initialMessage: message,\n });\n}\n\n/**\n * Run in interactive mode using pi-coding-agent's full TUI.\n * Provides diff preview, tool execution visualization, multi-line editor, etc.\n */\nexport async function runInteractive(\n agent: AgentSessionLike,\n _session: Session,\n _chatId: string,\n _threadId: string,\n initialPrompt?: string,\n): Promise<void> {\n const piCodingAgent = await loadPiCodingAgent();\n const mode = new piCodingAgent.InteractiveMode(agent, {\n initialMessage: initialPrompt,\n });\n await mode.run();\n}\n"]}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Ensure AI credentials helper
|
|
3
|
-
*
|
|
4
|
-
* 在 agent 启动前检查是否有 AI credentials,如果没有则提示用户登录。
|
|
5
|
-
*/
|
|
6
|
-
import type { Session } from '@inrupt/solid-client-authn-node';
|
|
7
|
-
/**
|
|
8
|
-
* 确保用户有 AI credentials,如果没有则提示
|
|
9
|
-
*
|
|
10
|
-
* @param session - Solid session
|
|
11
|
-
* @returns true if credentials exist, false if user skipped setup
|
|
12
|
-
*/
|
|
13
|
-
export declare function ensureAiCredentials(session: Session): Promise<boolean>;
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* Ensure AI credentials helper
|
|
4
|
-
*
|
|
5
|
-
* 在 agent 启动前检查是否有 AI credentials,如果没有则提示用户登录。
|
|
6
|
-
*/
|
|
7
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
-
exports.ensureAiCredentials = ensureAiCredentials;
|
|
9
|
-
const pod_ai_config_1 = require("./pod-ai-config");
|
|
10
|
-
const prompt_1 = require("./prompt");
|
|
11
|
-
/**
|
|
12
|
-
* 确保用户有 AI credentials,如果没有则提示
|
|
13
|
-
*
|
|
14
|
-
* @param session - Solid session
|
|
15
|
-
* @returns true if credentials exist, false if user skipped setup
|
|
16
|
-
*/
|
|
17
|
-
async function ensureAiCredentials(session) {
|
|
18
|
-
// 检查是否已有 AI credentials
|
|
19
|
-
const existingConfig = await (0, pod_ai_config_1.loadPodAiConfig)(session);
|
|
20
|
-
if (existingConfig) {
|
|
21
|
-
return true; // 已有配置,直接返回
|
|
22
|
-
}
|
|
23
|
-
// 没有配置,提示用户
|
|
24
|
-
console.log('\n💡 No AI credentials found in your Pod.');
|
|
25
|
-
console.log('The agent will use the platform default provider.');
|
|
26
|
-
console.log('');
|
|
27
|
-
console.log('To use your own AI provider, you can:');
|
|
28
|
-
console.log(' • Run: xpod login codebuddy');
|
|
29
|
-
console.log(' • Run: xpod config set --provider openai --api-key YOUR_KEY');
|
|
30
|
-
console.log('');
|
|
31
|
-
const choice = await (0, prompt_1.promptText)('Continue with default provider? (Y/n): ');
|
|
32
|
-
if (choice.toLowerCase() === 'n') {
|
|
33
|
-
console.log('\nPlease configure an AI provider first:');
|
|
34
|
-
console.log(' xpod login codebuddy');
|
|
35
|
-
console.log(' xpod config set --provider openai --api-key YOUR_KEY\n');
|
|
36
|
-
return false;
|
|
37
|
-
}
|
|
38
|
-
return true; // 用户选择继续使用默认 provider
|
|
39
|
-
}
|
|
40
|
-
//# sourceMappingURL=ensure-ai-credentials.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ensure-ai-credentials.js","sourceRoot":"","sources":["../../../src/cli/lib/ensure-ai-credentials.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;AAYH,kDA0BC;AAnCD,mDAAkD;AAClD,qCAAsC;AAEtC;;;;;GAKG;AACI,KAAK,UAAU,mBAAmB,CAAC,OAAgB;IACxD,wBAAwB;IACxB,MAAM,cAAc,GAAG,MAAM,IAAA,+BAAe,EAAC,OAAO,CAAC,CAAC;IACtD,IAAI,cAAc,EAAE,CAAC;QACnB,OAAO,IAAI,CAAC,CAAC,YAAY;IAC3B,CAAC;IAED,YAAY;IACZ,OAAO,CAAC,GAAG,CAAC,2CAA2C,CAAC,CAAC;IACzD,OAAO,CAAC,GAAG,CAAC,mDAAmD,CAAC,CAAC;IACjE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC;IACrD,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;IAC7C,OAAO,CAAC,GAAG,CAAC,+DAA+D,CAAC,CAAC;IAC7E,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEhB,MAAM,MAAM,GAAG,MAAM,IAAA,mBAAU,EAAC,yCAAyC,CAAC,CAAC;IAE3E,IAAI,MAAM,CAAC,WAAW,EAAE,KAAK,GAAG,EAAE,CAAC;QACjC,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC;QACxD,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;QACtC,OAAO,CAAC,GAAG,CAAC,0DAA0D,CAAC,CAAC;QACxE,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,IAAI,CAAC,CAAC,sBAAsB;AACrC,CAAC","sourcesContent":["/**\n * Ensure AI credentials helper\n *\n * 在 agent 启动前检查是否有 AI credentials,如果没有则提示用户登录。\n */\n\nimport type { Session } from '@inrupt/solid-client-authn-node';\nimport { loadPodAiConfig } from './pod-ai-config';\nimport { promptText } from './prompt';\n\n/**\n * 确保用户有 AI credentials,如果没有则提示\n *\n * @param session - Solid session\n * @returns true if credentials exist, false if user skipped setup\n */\nexport async function ensureAiCredentials(session: Session): Promise<boolean> {\n // 检查是否已有 AI credentials\n const existingConfig = await loadPodAiConfig(session);\n if (existingConfig) {\n return true; // 已有配置,直接返回\n }\n\n // 没有配置,提示用户\n console.log('\\n💡 No AI credentials found in your Pod.');\n console.log('The agent will use the platform default provider.');\n console.log('');\n console.log('To use your own AI provider, you can:');\n console.log(' • Run: xpod login codebuddy');\n console.log(' • Run: xpod config set --provider openai --api-key YOUR_KEY');\n console.log('');\n\n const choice = await promptText('Continue with default provider? (Y/n): ');\n\n if (choice.toLowerCase() === 'n') {\n console.log('\\nPlease configure an AI provider first:');\n console.log(' xpod login codebuddy');\n console.log(' xpod config set --provider openai --api-key YOUR_KEY\\n');\n return false;\n }\n\n return true; // 用户选择继续使用默认 provider\n}\n"]}
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Get available AI models based on configured providers.
|
|
3
|
-
*
|
|
4
|
-
* Queries the user's Pod for configured AI providers and returns
|
|
5
|
-
* the list of available models from each provider.
|
|
6
|
-
*/
|
|
7
|
-
import type { Session } from '@inrupt/solid-client-authn-node';
|
|
8
|
-
export interface AvailableModel {
|
|
9
|
-
id: string;
|
|
10
|
-
name: string;
|
|
11
|
-
provider: string;
|
|
12
|
-
providerName: string;
|
|
13
|
-
description?: string;
|
|
14
|
-
contextWindow?: number;
|
|
15
|
-
maxTokens?: number;
|
|
16
|
-
}
|
|
17
|
-
/**
|
|
18
|
-
* Get all available models from configured providers.
|
|
19
|
-
*
|
|
20
|
-
* Returns models from:
|
|
21
|
-
* 1. Providers with active API key credentials
|
|
22
|
-
* 2. Providers with active OAuth credentials
|
|
23
|
-
* 3. Platform default models (from xpod API)
|
|
24
|
-
*/
|
|
25
|
-
export declare function getAvailableModels(session: Session, xpodUrl: string): Promise<AvailableModel[]>;
|
|
26
|
-
/**
|
|
27
|
-
* Get a specific model by ID.
|
|
28
|
-
*/
|
|
29
|
-
export declare function getModelById(session: Session, xpodUrl: string, modelId: string): Promise<AvailableModel | null>;
|
|
30
|
-
/**
|
|
31
|
-
* List available models (for CLI display).
|
|
32
|
-
*/
|
|
33
|
-
export declare function listAvailableModels(session: Session, xpodUrl: string): Promise<void>;
|
|
34
|
-
/**
|
|
35
|
-
* Add a custom model to the user's Pod.
|
|
36
|
-
*/
|
|
37
|
-
export declare function addCustomModel(session: Session, xpodUrl: string, modelId: string): Promise<void>;
|