@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
|
@@ -1,251 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* Get available AI models based on configured providers.
|
|
4
|
-
*
|
|
5
|
-
* Queries the user's Pod for configured AI providers and returns
|
|
6
|
-
* the list of available models from each provider.
|
|
7
|
-
*/
|
|
8
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
9
|
-
if (k2 === undefined) k2 = k;
|
|
10
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
11
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
12
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
13
|
-
}
|
|
14
|
-
Object.defineProperty(o, k2, desc);
|
|
15
|
-
}) : (function(o, m, k, k2) {
|
|
16
|
-
if (k2 === undefined) k2 = k;
|
|
17
|
-
o[k2] = m[k];
|
|
18
|
-
}));
|
|
19
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
20
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
21
|
-
}) : function(o, v) {
|
|
22
|
-
o["default"] = v;
|
|
23
|
-
});
|
|
24
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
25
|
-
if (mod && mod.__esModule) return mod;
|
|
26
|
-
var result = {};
|
|
27
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
28
|
-
__setModuleDefault(result, mod);
|
|
29
|
-
return result;
|
|
30
|
-
};
|
|
31
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
32
|
-
exports.getAvailableModels = getAvailableModels;
|
|
33
|
-
exports.getModelById = getModelById;
|
|
34
|
-
exports.listAvailableModels = listAvailableModels;
|
|
35
|
-
exports.addCustomModel = addCustomModel;
|
|
36
|
-
const drizzle_solid_1 = require("@undefineds.co/drizzle-solid");
|
|
37
|
-
const tables_1 = require("../../credential/schema/tables");
|
|
38
|
-
const provider_1 = require("../../ai/schema/provider");
|
|
39
|
-
const model_1 = require("../../ai/schema/model");
|
|
40
|
-
const types_1 = require("../../credential/schema/types");
|
|
41
|
-
const pi_optional_1 = require("./pi-optional");
|
|
42
|
-
/**
|
|
43
|
-
* Get all available models from configured providers.
|
|
44
|
-
*
|
|
45
|
-
* Returns models from:
|
|
46
|
-
* 1. Providers with active API key credentials
|
|
47
|
-
* 2. Providers with active OAuth credentials
|
|
48
|
-
* 3. Platform default models (from xpod API)
|
|
49
|
-
*/
|
|
50
|
-
async function getAvailableModels(session, xpodUrl) {
|
|
51
|
-
const models = [];
|
|
52
|
-
try {
|
|
53
|
-
const db = (0, drizzle_solid_1.drizzle)({
|
|
54
|
-
fetch: session.fetch,
|
|
55
|
-
info: session.info,
|
|
56
|
-
});
|
|
57
|
-
// 1. Get all active credentials
|
|
58
|
-
const allApiKeyCredentials = await db.select().from(tables_1.ApiKeyCredential);
|
|
59
|
-
const apiKeyCredentials = allApiKeyCredentials.filter((c) => c.service === types_1.ServiceType.AI && c.status === types_1.CredentialStatus.ACTIVE);
|
|
60
|
-
const allOAuthCredentials = await db.select().from(tables_1.OAuthCredential);
|
|
61
|
-
const oauthCredentials = allOAuthCredentials.filter((c) => c.service === types_1.ServiceType.AI && c.status === types_1.CredentialStatus.ACTIVE);
|
|
62
|
-
const allCredentials = [...apiKeyCredentials, ...oauthCredentials];
|
|
63
|
-
// 2. Get all providers
|
|
64
|
-
const allProviders = await db.select().from(provider_1.Provider);
|
|
65
|
-
const providerByUri = new Map(allProviders.map(p => [p['@id'], p]));
|
|
66
|
-
// 3. Collect provider IDs from credentials
|
|
67
|
-
const configuredProviderIds = new Set();
|
|
68
|
-
for (const cred of allCredentials) {
|
|
69
|
-
if (!cred.provider)
|
|
70
|
-
continue;
|
|
71
|
-
const provider = providerByUri.get(cred.provider);
|
|
72
|
-
if (provider && provider.id) {
|
|
73
|
-
configuredProviderIds.add(provider.id);
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
// 4. Get models from each configured provider
|
|
77
|
-
for (const providerId of configuredProviderIds) {
|
|
78
|
-
try {
|
|
79
|
-
// Only get models for known providers
|
|
80
|
-
const knownProviders = ['openai', 'anthropic', 'openrouter', 'ollama', 'google', 'codebuddy'];
|
|
81
|
-
if (!knownProviders.includes(providerId)) {
|
|
82
|
-
console.warn(`Skipping unknown provider: ${providerId}`);
|
|
83
|
-
continue;
|
|
84
|
-
}
|
|
85
|
-
const { getModels } = await (0, pi_optional_1.loadPiAi)();
|
|
86
|
-
const providerModels = getModels(providerId);
|
|
87
|
-
for (const model of providerModels) {
|
|
88
|
-
models.push({
|
|
89
|
-
id: model.id,
|
|
90
|
-
name: model.name || model.id,
|
|
91
|
-
provider: providerId,
|
|
92
|
-
providerName: model.provider || providerId,
|
|
93
|
-
contextWindow: model.contextWindow,
|
|
94
|
-
maxTokens: model.maxTokens,
|
|
95
|
-
});
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
catch (error) {
|
|
99
|
-
console.warn(`Failed to get models for provider ${providerId}:`, error);
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
// 4.5. Get custom models from Pod
|
|
103
|
-
try {
|
|
104
|
-
const allModels = await db.select().from(model_1.Model);
|
|
105
|
-
for (const model of allModels) {
|
|
106
|
-
// Avoid duplicates
|
|
107
|
-
if (!models.some(m => m.id === model.id)) {
|
|
108
|
-
const provider = providerByUri.get(model.isProvidedBy);
|
|
109
|
-
models.push({
|
|
110
|
-
id: model.id,
|
|
111
|
-
name: model.displayName || model.id,
|
|
112
|
-
provider: provider?.id || 'custom',
|
|
113
|
-
providerName: provider?.displayName || 'Custom',
|
|
114
|
-
contextWindow: model.contextLength,
|
|
115
|
-
maxTokens: model.maxOutputTokens,
|
|
116
|
-
});
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
catch (error) {
|
|
121
|
-
console.warn('Failed to get custom models:', error);
|
|
122
|
-
}
|
|
123
|
-
// 5. Always include platform default models (from xpod API)
|
|
124
|
-
try {
|
|
125
|
-
const baseUrl = xpodUrl.endsWith('/') ? xpodUrl : `${xpodUrl}/`;
|
|
126
|
-
const modelsUrl = `${baseUrl}v1/models`;
|
|
127
|
-
const response = await session.fetch(modelsUrl, {
|
|
128
|
-
headers: {
|
|
129
|
-
'Accept': 'application/json',
|
|
130
|
-
},
|
|
131
|
-
});
|
|
132
|
-
if (response.ok) {
|
|
133
|
-
const data = await response.json();
|
|
134
|
-
for (const model of data.data) {
|
|
135
|
-
// Avoid duplicates
|
|
136
|
-
if (!models.some(m => m.id === model.id)) {
|
|
137
|
-
models.push({
|
|
138
|
-
id: model.id,
|
|
139
|
-
name: model.name || model.id,
|
|
140
|
-
provider: model.provider || 'platform',
|
|
141
|
-
providerName: model.owned_by || 'Platform Default',
|
|
142
|
-
contextWindow: model.context_window,
|
|
143
|
-
maxTokens: model.max_tokens,
|
|
144
|
-
});
|
|
145
|
-
}
|
|
146
|
-
}
|
|
147
|
-
}
|
|
148
|
-
else {
|
|
149
|
-
console.warn(`Failed to fetch platform models: ${response.status}`);
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
catch (error) {
|
|
153
|
-
console.warn('Failed to get platform default models:', error);
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
catch (error) {
|
|
157
|
-
console.error('Failed to get available models:', error);
|
|
158
|
-
// Return empty array on error
|
|
159
|
-
}
|
|
160
|
-
return models;
|
|
161
|
-
}
|
|
162
|
-
/**
|
|
163
|
-
* Get a specific model by ID.
|
|
164
|
-
*/
|
|
165
|
-
async function getModelById(session, xpodUrl, modelId) {
|
|
166
|
-
const models = await getAvailableModels(session, xpodUrl);
|
|
167
|
-
return models.find(m => m.id === modelId) || null;
|
|
168
|
-
}
|
|
169
|
-
/**
|
|
170
|
-
* List available models (for CLI display).
|
|
171
|
-
*/
|
|
172
|
-
async function listAvailableModels(session, xpodUrl) {
|
|
173
|
-
const models = await getAvailableModels(session, xpodUrl);
|
|
174
|
-
console.log('\n📋 Available Models:\n');
|
|
175
|
-
// Group by provider
|
|
176
|
-
const byProvider = new Map();
|
|
177
|
-
for (const model of models) {
|
|
178
|
-
const list = byProvider.get(model.provider) || [];
|
|
179
|
-
list.push(model);
|
|
180
|
-
byProvider.set(model.provider, list);
|
|
181
|
-
}
|
|
182
|
-
for (const [, providerModels] of byProvider) {
|
|
183
|
-
console.log(`\n${providerModels[0].providerName}:`);
|
|
184
|
-
for (const model of providerModels) {
|
|
185
|
-
const ctx = model.contextWindow ? ` (${model.contextWindow} tokens)` : '';
|
|
186
|
-
console.log(` ${model.id}${ctx}`);
|
|
187
|
-
}
|
|
188
|
-
}
|
|
189
|
-
console.log('');
|
|
190
|
-
}
|
|
191
|
-
/**
|
|
192
|
-
* Add a custom model to the user's Pod.
|
|
193
|
-
*/
|
|
194
|
-
async function addCustomModel(session, xpodUrl, modelId) {
|
|
195
|
-
try {
|
|
196
|
-
const db = (0, drizzle_solid_1.drizzle)({
|
|
197
|
-
fetch: session.fetch,
|
|
198
|
-
info: session.info,
|
|
199
|
-
});
|
|
200
|
-
// Check if model already exists
|
|
201
|
-
const allModels = await db.select().from(model_1.Model);
|
|
202
|
-
if (allModels.some(m => m.id === modelId)) {
|
|
203
|
-
console.log(`✓ Model ${modelId} already exists`);
|
|
204
|
-
return;
|
|
205
|
-
}
|
|
206
|
-
// Prompt for provider
|
|
207
|
-
const { promptText } = await Promise.resolve().then(() => __importStar(require('./prompt.js')));
|
|
208
|
-
console.log('\n📝 Add custom model\n');
|
|
209
|
-
const displayName = await promptText(`Display name (default: ${modelId}): `);
|
|
210
|
-
const providerInput = await promptText('Provider ID (e.g., openai, anthropic, custom): ');
|
|
211
|
-
const providerId = providerInput || 'custom';
|
|
212
|
-
// Get or create provider
|
|
213
|
-
const allProviders = await db.select().from(provider_1.Provider);
|
|
214
|
-
let provider = allProviders.find(p => p.id === providerId);
|
|
215
|
-
if (!provider) {
|
|
216
|
-
console.log(`\n⚠️ Provider ${providerId} not found. Creating new provider...`);
|
|
217
|
-
const providerName = await promptText(`Provider display name (default: ${providerId}): `);
|
|
218
|
-
const baseUrl = await promptText('Base URL (optional): ');
|
|
219
|
-
await db.insert(provider_1.Provider).values({
|
|
220
|
-
id: providerId,
|
|
221
|
-
displayName: providerName || providerId,
|
|
222
|
-
baseUrl: baseUrl || undefined,
|
|
223
|
-
});
|
|
224
|
-
// Reload provider
|
|
225
|
-
const updatedProviders = await db.select().from(provider_1.Provider);
|
|
226
|
-
provider = updatedProviders.find(p => p.id === providerId);
|
|
227
|
-
}
|
|
228
|
-
if (!provider) {
|
|
229
|
-
throw new Error('Failed to create provider');
|
|
230
|
-
}
|
|
231
|
-
// Create model
|
|
232
|
-
const podUrl = xpodUrl.endsWith('/') ? xpodUrl : `${xpodUrl}/`;
|
|
233
|
-
const providerUri = `${podUrl}settings/ai/providers.ttl#${providerId}`;
|
|
234
|
-
await db.insert(model_1.Model).values({
|
|
235
|
-
id: modelId,
|
|
236
|
-
displayName: displayName || modelId,
|
|
237
|
-
isProvidedBy: providerUri,
|
|
238
|
-
status: 'active',
|
|
239
|
-
createdAt: new Date().toISOString(),
|
|
240
|
-
updatedAt: new Date().toISOString(),
|
|
241
|
-
});
|
|
242
|
-
console.log(`\n✅ Model ${modelId} added successfully!`);
|
|
243
|
-
console.log(` Provider: ${provider.displayName || providerId}`);
|
|
244
|
-
console.log(` Display name: ${displayName || modelId}\n`);
|
|
245
|
-
}
|
|
246
|
-
catch (error) {
|
|
247
|
-
console.error('Failed to add custom model:', error);
|
|
248
|
-
throw error;
|
|
249
|
-
}
|
|
250
|
-
}
|
|
251
|
-
//# sourceMappingURL=model-manager.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"model-manager.js","sourceRoot":"","sources":["../../../src/cli/lib/model-manager.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Get available AI models based on configured providers.\n *\n * Queries the user's Pod for configured AI providers and returns\n * the list of available models from each provider.\n */\n\nimport { drizzle } from '@undefineds.co/drizzle-solid';\nimport { ApiKeyCredential, OAuthCredential } from '../../credential/schema/tables';\nimport { Provider } from '../../ai/schema/provider';\nimport { Model } from '../../ai/schema/model';\nimport { ServiceType, CredentialStatus } from '../../credential/schema/types';\nimport type { Session } from '@inrupt/solid-client-authn-node';\nimport { loadPiAi } from './pi-optional';\n\nexport interface AvailableModel {\n id: string;\n name: string;\n provider: string;\n providerName: string;\n description?: string;\n contextWindow?: number;\n maxTokens?: number;\n}\n\n/**\n * Get all available models from configured providers.\n *\n * Returns models from:\n * 1. Providers with active API key credentials\n * 2. Providers with active OAuth credentials\n * 3. Platform default models (from xpod API)\n */\nexport async function getAvailableModels(session: Session, xpodUrl: string): Promise<AvailableModel[]> {\n const models: AvailableModel[] = [];\n\n try {\n const db: any = drizzle({\n fetch: session.fetch,\n info: session.info,\n } as any);\n\n // 1. Get all active credentials\n const allApiKeyCredentials = await db.select().from(ApiKeyCredential) as any[];\n const apiKeyCredentials = allApiKeyCredentials.filter((c: any) =>\n c.service === ServiceType.AI && c.status === CredentialStatus.ACTIVE,\n );\n\n const allOAuthCredentials = await db.select().from(OAuthCredential) as any[];\n const oauthCredentials = allOAuthCredentials.filter((c: any) =>\n c.service === ServiceType.AI && c.status === CredentialStatus.ACTIVE,\n );\n\n const allCredentials = [...apiKeyCredentials, ...oauthCredentials];\n\n // 2. Get all providers\n const allProviders = await db.select().from(Provider) as any[];\n const providerByUri = new Map(allProviders.map(p => [p['@id'], p]));\n\n // 3. Collect provider IDs from credentials\n const configuredProviderIds = new Set<string>();\n for (const cred of allCredentials) {\n if (!cred.provider) continue;\n const provider = providerByUri.get(cred.provider);\n if (provider && provider.id) {\n configuredProviderIds.add(provider.id as string);\n }\n }\n\n // 4. Get models from each configured provider\n for (const providerId of configuredProviderIds) {\n try {\n // Only get models for known providers\n const knownProviders = ['openai', 'anthropic', 'openrouter', 'ollama', 'google', 'codebuddy'];\n if (!knownProviders.includes(providerId)) {\n console.warn(`Skipping unknown provider: ${providerId}`);\n continue;\n }\n\n const { getModels } = await loadPiAi();\n const providerModels = getModels(providerId);\n for (const model of providerModels) {\n models.push({\n id: model.id,\n name: model.name || model.id,\n provider: providerId,\n providerName: model.provider || providerId,\n contextWindow: model.contextWindow,\n maxTokens: model.maxTokens,\n });\n }\n } catch (error) {\n console.warn(`Failed to get models for provider ${providerId}:`, error);\n }\n }\n\n // 4.5. Get custom models from Pod\n try {\n const allModels = await db.select().from(Model) as any[];\n for (const model of allModels) {\n // Avoid duplicates\n if (!models.some(m => m.id === model.id)) {\n const provider = providerByUri.get(model.isProvidedBy);\n models.push({\n id: model.id,\n name: model.displayName || model.id,\n provider: provider?.id as string || 'custom',\n providerName: provider?.displayName as string || 'Custom',\n contextWindow: model.contextLength,\n maxTokens: model.maxOutputTokens,\n });\n }\n }\n } catch (error) {\n console.warn('Failed to get custom models:', error);\n }\n\n // 5. Always include platform default models (from xpod API)\n try {\n const baseUrl = xpodUrl.endsWith('/') ? xpodUrl : `${xpodUrl}/`;\n const modelsUrl = `${baseUrl}v1/models`;\n\n const response = await session.fetch(modelsUrl, {\n headers: {\n 'Accept': 'application/json',\n },\n });\n\n if (response.ok) {\n const data = await response.json() as { object: string; data: any[] };\n for (const model of data.data) {\n // Avoid duplicates\n if (!models.some(m => m.id === model.id)) {\n models.push({\n id: model.id,\n name: model.name || model.id,\n provider: model.provider || 'platform',\n providerName: model.owned_by || 'Platform Default',\n contextWindow: model.context_window,\n maxTokens: model.max_tokens,\n });\n }\n }\n } else {\n console.warn(`Failed to fetch platform models: ${response.status}`);\n }\n } catch (error) {\n console.warn('Failed to get platform default models:', error);\n }\n } catch (error) {\n console.error('Failed to get available models:', error);\n // Return empty array on error\n }\n\n return models;\n}\n\n/**\n * Get a specific model by ID.\n */\nexport async function getModelById(session: Session, xpodUrl: string, modelId: string): Promise<AvailableModel | null> {\n const models = await getAvailableModels(session, xpodUrl);\n return models.find(m => m.id === modelId) || null;\n}\n\n/**\n * List available models (for CLI display).\n */\nexport async function listAvailableModels(session: Session, xpodUrl: string): Promise<void> {\n const models = await getAvailableModels(session, xpodUrl);\n\n console.log('\\n📋 Available Models:\\n');\n\n // Group by provider\n const byProvider = new Map<string, AvailableModel[]>();\n for (const model of models) {\n const list = byProvider.get(model.provider) || [];\n list.push(model);\n byProvider.set(model.provider, list);\n }\n\n for (const [, providerModels] of byProvider) {\n console.log(`\\n${providerModels[0].providerName}:`);\n for (const model of providerModels) {\n const ctx = model.contextWindow ? ` (${model.contextWindow} tokens)` : '';\n console.log(` ${model.id}${ctx}`);\n }\n }\n\n console.log('');\n}\n\n/**\n * Add a custom model to the user's Pod.\n */\nexport async function addCustomModel(session: Session, xpodUrl: string, modelId: string): Promise<void> {\n try {\n const db: any = drizzle({\n fetch: session.fetch,\n info: session.info,\n } as any);\n\n // Check if model already exists\n const allModels = await db.select().from(Model) as any[];\n if (allModels.some(m => m.id === modelId)) {\n console.log(`✓ Model ${modelId} already exists`);\n return;\n }\n\n // Prompt for provider\n const { promptText } = await import('./prompt.js');\n console.log('\\n📝 Add custom model\\n');\n\n const displayName = await promptText(`Display name (default: ${modelId}): `);\n const providerInput = await promptText('Provider ID (e.g., openai, anthropic, custom): ');\n const providerId = providerInput || 'custom';\n\n // Get or create provider\n const allProviders = await db.select().from(Provider) as any[];\n let provider = allProviders.find(p => p.id === providerId);\n\n if (!provider) {\n console.log(`\\n⚠️ Provider ${providerId} not found. Creating new provider...`);\n const providerName = await promptText(`Provider display name (default: ${providerId}): `);\n const baseUrl = await promptText('Base URL (optional): ');\n\n await db.insert(Provider).values({\n id: providerId,\n displayName: providerName || providerId,\n baseUrl: baseUrl || undefined,\n });\n\n // Reload provider\n const updatedProviders = await db.select().from(Provider) as any[];\n provider = updatedProviders.find(p => p.id === providerId);\n }\n\n if (!provider) {\n throw new Error('Failed to create provider');\n }\n\n // Create model\n const podUrl = xpodUrl.endsWith('/') ? xpodUrl : `${xpodUrl}/`;\n const providerUri = `${podUrl}settings/ai/providers.ttl#${providerId}`;\n\n await db.insert(Model).values({\n id: modelId,\n displayName: displayName || modelId,\n isProvidedBy: providerUri,\n status: 'active',\n createdAt: new Date().toISOString(),\n updatedAt: new Date().toISOString(),\n });\n\n console.log(`\\n✅ Model ${modelId} added successfully!`);\n console.log(` Provider: ${provider.displayName || providerId}`);\n console.log(` Display name: ${displayName || modelId}\\n`);\n } catch (error) {\n console.error('Failed to add custom model:', error);\n throw error;\n }\n}\n"]}
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* OAuth Credential Manager
|
|
3
|
-
*
|
|
4
|
-
* 管理 AI Provider 的 OAuth credentials:
|
|
5
|
-
* - 存储到 Pod
|
|
6
|
-
* - 从 Pod 读取
|
|
7
|
-
* - Token 刷新
|
|
8
|
-
*/
|
|
9
|
-
import type { Session } from '@inrupt/solid-client-authn-node';
|
|
10
|
-
import { type OAuthCredentials } from './pi-optional';
|
|
11
|
-
/**
|
|
12
|
-
* 保存 OAuth credentials 到 Pod
|
|
13
|
-
*
|
|
14
|
-
* @param session - Solid session
|
|
15
|
-
* @param providerId - Provider ID (e.g., 'codebuddy')
|
|
16
|
-
* @param providerUri - Provider 的完整 URI (e.g., 'http://pod/settings/ai/providers.ttl#codebuddy')
|
|
17
|
-
* @param credentials - OAuth credentials from provider.login()
|
|
18
|
-
* @param label - 可选的标签
|
|
19
|
-
*/
|
|
20
|
-
export declare function saveOAuthCredential(session: Session, providerId: string, providerUri: string, credentials: OAuthCredentials, label?: string): Promise<string>;
|
|
21
|
-
/**
|
|
22
|
-
* 刷新 OAuth token
|
|
23
|
-
*
|
|
24
|
-
* @param session - Solid session
|
|
25
|
-
* @param credentialId - Credential ID
|
|
26
|
-
* @param providerId - Provider ID (用于查找 OAuth provider)
|
|
27
|
-
*/
|
|
28
|
-
export declare function refreshOAuthToken(session: Session, credentialId: string, providerId: string): Promise<void>;
|
|
29
|
-
/**
|
|
30
|
-
* 检查并自动刷新过期的 OAuth token
|
|
31
|
-
*
|
|
32
|
-
* @param session - Solid session
|
|
33
|
-
* @param credentialId - Credential ID
|
|
34
|
-
* @param providerId - Provider ID
|
|
35
|
-
* @returns 是否成功刷新
|
|
36
|
-
*/
|
|
37
|
-
export declare function ensureOAuthTokenValid(session: Session, credentialId: string, providerId: string): Promise<boolean>;
|
|
@@ -1,129 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* OAuth Credential Manager
|
|
4
|
-
*
|
|
5
|
-
* 管理 AI Provider 的 OAuth credentials:
|
|
6
|
-
* - 存储到 Pod
|
|
7
|
-
* - 从 Pod 读取
|
|
8
|
-
* - Token 刷新
|
|
9
|
-
*/
|
|
10
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
-
exports.saveOAuthCredential = saveOAuthCredential;
|
|
12
|
-
exports.refreshOAuthToken = refreshOAuthToken;
|
|
13
|
-
exports.ensureOAuthTokenValid = ensureOAuthTokenValid;
|
|
14
|
-
const drizzle_solid_1 = require("@undefineds.co/drizzle-solid");
|
|
15
|
-
const tables_1 = require("../../credential/schema/tables");
|
|
16
|
-
const types_1 = require("../../credential/schema/types");
|
|
17
|
-
const pi_optional_1 = require("./pi-optional");
|
|
18
|
-
/**
|
|
19
|
-
* 保存 OAuth credentials 到 Pod
|
|
20
|
-
*
|
|
21
|
-
* @param session - Solid session
|
|
22
|
-
* @param providerId - Provider ID (e.g., 'codebuddy')
|
|
23
|
-
* @param providerUri - Provider 的完整 URI (e.g., 'http://pod/settings/ai/providers.ttl#codebuddy')
|
|
24
|
-
* @param credentials - OAuth credentials from provider.login()
|
|
25
|
-
* @param label - 可选的标签
|
|
26
|
-
*/
|
|
27
|
-
async function saveOAuthCredential(session, providerId, providerUri, credentials, label) {
|
|
28
|
-
const db = (0, drizzle_solid_1.drizzle)({
|
|
29
|
-
fetch: session.fetch,
|
|
30
|
-
info: session.info,
|
|
31
|
-
});
|
|
32
|
-
// 生成 credential ID
|
|
33
|
-
const credentialId = `oauth-${providerId}-${Date.now()}`;
|
|
34
|
-
// 插入 OAuthCredential
|
|
35
|
-
await db.insert(tables_1.OAuthCredential).values({
|
|
36
|
-
id: credentialId,
|
|
37
|
-
provider: providerUri,
|
|
38
|
-
service: types_1.ServiceType.AI,
|
|
39
|
-
status: types_1.CredentialStatus.ACTIVE,
|
|
40
|
-
label: label || `${providerId} OAuth`,
|
|
41
|
-
oauthRefreshToken: credentials.refresh,
|
|
42
|
-
oauthAccessToken: credentials.access,
|
|
43
|
-
oauthExpiresAt: new Date(credentials.expires),
|
|
44
|
-
});
|
|
45
|
-
console.log(`✓ OAuth credential saved: ${credentialId}`);
|
|
46
|
-
return credentialId;
|
|
47
|
-
}
|
|
48
|
-
/**
|
|
49
|
-
* 刷新 OAuth token
|
|
50
|
-
*
|
|
51
|
-
* @param session - Solid session
|
|
52
|
-
* @param credentialId - Credential ID
|
|
53
|
-
* @param providerId - Provider ID (用于查找 OAuth provider)
|
|
54
|
-
*/
|
|
55
|
-
async function refreshOAuthToken(session, credentialId, providerId) {
|
|
56
|
-
const db = (0, drizzle_solid_1.drizzle)({
|
|
57
|
-
fetch: session.fetch,
|
|
58
|
-
info: session.info,
|
|
59
|
-
});
|
|
60
|
-
// 1. 读取现有 credential
|
|
61
|
-
const allCredentials = await db.select().from(tables_1.OAuthCredential);
|
|
62
|
-
const credential = allCredentials.find((c) => c.id === credentialId);
|
|
63
|
-
if (!credential) {
|
|
64
|
-
throw new Error(`OAuth credential not found: ${credentialId}`);
|
|
65
|
-
}
|
|
66
|
-
// 2. 获取 OAuth provider
|
|
67
|
-
const { getOAuthProvider } = await (0, pi_optional_1.loadPiAiOAuthUtils)();
|
|
68
|
-
const provider = getOAuthProvider(providerId);
|
|
69
|
-
if (!provider) {
|
|
70
|
-
throw new Error(`OAuth provider not found: ${providerId}`);
|
|
71
|
-
}
|
|
72
|
-
// 3. 刷新 token
|
|
73
|
-
const oldCredentials = {
|
|
74
|
-
refresh: credential.oauthRefreshToken || '',
|
|
75
|
-
access: credential.oauthAccessToken || '',
|
|
76
|
-
expires: credential.oauthExpiresAt ? new Date(credential.oauthExpiresAt).getTime() : 0,
|
|
77
|
-
};
|
|
78
|
-
const newCredentials = await provider.refreshToken(oldCredentials);
|
|
79
|
-
// 4. 更新 Pod 中的 credential
|
|
80
|
-
await db.update(tables_1.OAuthCredential)
|
|
81
|
-
.set({
|
|
82
|
-
oauthRefreshToken: newCredentials.refresh,
|
|
83
|
-
oauthAccessToken: newCredentials.access,
|
|
84
|
-
oauthExpiresAt: new Date(newCredentials.expires),
|
|
85
|
-
})
|
|
86
|
-
.where({ id: credentialId });
|
|
87
|
-
console.log(`✓ OAuth token refreshed: ${credentialId}`);
|
|
88
|
-
}
|
|
89
|
-
/**
|
|
90
|
-
* 检查并自动刷新过期的 OAuth token
|
|
91
|
-
*
|
|
92
|
-
* @param session - Solid session
|
|
93
|
-
* @param credentialId - Credential ID
|
|
94
|
-
* @param providerId - Provider ID
|
|
95
|
-
* @returns 是否成功刷新
|
|
96
|
-
*/
|
|
97
|
-
async function ensureOAuthTokenValid(session, credentialId, providerId) {
|
|
98
|
-
const db = (0, drizzle_solid_1.drizzle)({
|
|
99
|
-
fetch: session.fetch,
|
|
100
|
-
info: session.info,
|
|
101
|
-
});
|
|
102
|
-
// 读取 credential
|
|
103
|
-
const allCredentials = await db.select().from(tables_1.OAuthCredential);
|
|
104
|
-
const credential = allCredentials.find((c) => c.id === credentialId);
|
|
105
|
-
if (!credential) {
|
|
106
|
-
return false;
|
|
107
|
-
}
|
|
108
|
-
// 检查是否过期(提前 5 分钟刷新)
|
|
109
|
-
const expiresAt = credential.oauthExpiresAt ? new Date(credential.oauthExpiresAt) : null;
|
|
110
|
-
if (!expiresAt) {
|
|
111
|
-
return false;
|
|
112
|
-
}
|
|
113
|
-
const now = new Date();
|
|
114
|
-
const fiveMinutesLater = new Date(now.getTime() + 5 * 60 * 1000);
|
|
115
|
-
if (expiresAt > fiveMinutesLater) {
|
|
116
|
-
// Token 还有效
|
|
117
|
-
return true;
|
|
118
|
-
}
|
|
119
|
-
// Token 即将过期或已过期,尝试刷新
|
|
120
|
-
try {
|
|
121
|
-
await refreshOAuthToken(session, credentialId, providerId);
|
|
122
|
-
return true;
|
|
123
|
-
}
|
|
124
|
-
catch (error) {
|
|
125
|
-
console.error(`Failed to refresh OAuth token: ${error}`);
|
|
126
|
-
return false;
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
//# sourceMappingURL=oauth-credential-manager.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"oauth-credential-manager.js","sourceRoot":"","sources":["../../../src/cli/lib/oauth-credential-manager.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * OAuth Credential Manager\n *\n * 管理 AI Provider 的 OAuth credentials:\n * - 存储到 Pod\n * - 从 Pod 读取\n * - Token 刷新\n */\n\nimport { drizzle } from '@undefineds.co/drizzle-solid';\nimport { OAuthCredential } from '../../credential/schema/tables';\nimport { ServiceType, CredentialStatus } from '../../credential/schema/types';\nimport type { Session } from '@inrupt/solid-client-authn-node';\nimport { loadPiAiOAuthUtils, type OAuthCredentials } from './pi-optional';\n\n/**\n * 保存 OAuth credentials 到 Pod\n *\n * @param session - Solid session\n * @param providerId - Provider ID (e.g., 'codebuddy')\n * @param providerUri - Provider 的完整 URI (e.g., 'http://pod/settings/ai/providers.ttl#codebuddy')\n * @param credentials - OAuth credentials from provider.login()\n * @param label - 可选的标签\n */\nexport async function saveOAuthCredential(\n session: Session,\n providerId: string,\n providerUri: string,\n credentials: OAuthCredentials,\n label?: string,\n): Promise<string> {\n const db: any = drizzle({\n fetch: session.fetch,\n info: session.info,\n } as any);\n\n // 生成 credential ID\n const credentialId = `oauth-${providerId}-${Date.now()}`;\n\n // 插入 OAuthCredential\n await db.insert(OAuthCredential).values({\n id: credentialId,\n provider: providerUri,\n service: ServiceType.AI,\n status: CredentialStatus.ACTIVE,\n label: label || `${providerId} OAuth`,\n oauthRefreshToken: credentials.refresh,\n oauthAccessToken: credentials.access,\n oauthExpiresAt: new Date(credentials.expires),\n });\n\n console.log(`✓ OAuth credential saved: ${credentialId}`);\n return credentialId;\n}\n\n/**\n * 刷新 OAuth token\n *\n * @param session - Solid session\n * @param credentialId - Credential ID\n * @param providerId - Provider ID (用于查找 OAuth provider)\n */\nexport async function refreshOAuthToken(\n session: Session,\n credentialId: string,\n providerId: string,\n): Promise<void> {\n const db: any = drizzle({\n fetch: session.fetch,\n info: session.info,\n } as any);\n\n // 1. 读取现有 credential\n const allCredentials = await db.select().from(OAuthCredential);\n const credential = allCredentials.find((c: any) => c.id === credentialId);\n\n if (!credential) {\n throw new Error(`OAuth credential not found: ${credentialId}`);\n }\n\n // 2. 获取 OAuth provider\n const { getOAuthProvider } = await loadPiAiOAuthUtils();\n const provider = getOAuthProvider(providerId);\n if (!provider) {\n throw new Error(`OAuth provider not found: ${providerId}`);\n }\n\n // 3. 刷新 token\n const oldCredentials: OAuthCredentials = {\n refresh: credential.oauthRefreshToken || '',\n access: credential.oauthAccessToken || '',\n expires: credential.oauthExpiresAt ? new Date(credential.oauthExpiresAt).getTime() : 0,\n };\n\n const newCredentials = await provider.refreshToken(oldCredentials);\n\n // 4. 更新 Pod 中的 credential\n await db.update(OAuthCredential)\n .set({\n oauthRefreshToken: newCredentials.refresh,\n oauthAccessToken: newCredentials.access,\n oauthExpiresAt: new Date(newCredentials.expires),\n })\n .where({ id: credentialId } as any);\n\n console.log(`✓ OAuth token refreshed: ${credentialId}`);\n}\n\n/**\n * 检查并自动刷新过期的 OAuth token\n *\n * @param session - Solid session\n * @param credentialId - Credential ID\n * @param providerId - Provider ID\n * @returns 是否成功刷新\n */\nexport async function ensureOAuthTokenValid(\n session: Session,\n credentialId: string,\n providerId: string,\n): Promise<boolean> {\n const db: any = drizzle({\n fetch: session.fetch,\n info: session.info,\n } as any);\n\n // 读取 credential\n const allCredentials = await db.select().from(OAuthCredential);\n const credential = allCredentials.find((c: any) => c.id === credentialId);\n\n if (!credential) {\n return false;\n }\n\n // 检查是否过期(提前 5 分钟刷新)\n const expiresAt = credential.oauthExpiresAt ? new Date(credential.oauthExpiresAt) : null;\n if (!expiresAt) {\n return false;\n }\n\n const now = new Date();\n const fiveMinutesLater = new Date(now.getTime() + 5 * 60 * 1000);\n\n if (expiresAt > fiveMinutesLater) {\n // Token 还有效\n return true;\n }\n\n // Token 即将过期或已过期,尝试刷新\n try {\n await refreshOAuthToken(session, credentialId, providerId);\n return true;\n } catch (error) {\n console.error(`Failed to refresh OAuth token: ${error}`);\n return false;\n }\n}\n"]}
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* CodeBuddy OAuth Provider
|
|
3
|
-
*
|
|
4
|
-
* 通过 @tencent-ai/agent-sdk 的 authenticate() 实现 OAuth 登录。
|
|
5
|
-
* 登录后 token 存入 Pod 的 Credential 表,跨环境复用。
|
|
6
|
-
*/
|
|
7
|
-
import type { OAuthCredentials, OAuthProviderInterface } from '../pi-optional';
|
|
8
|
-
/**
|
|
9
|
-
* CodeBuddy OAuth 登录
|
|
10
|
-
*
|
|
11
|
-
* 调用 @tencent-ai/agent-sdk 的 authenticate(),
|
|
12
|
-
* 打开浏览器让用户登录腾讯账号,获取 token。
|
|
13
|
-
*/
|
|
14
|
-
export declare function loginCodeBuddy(onAuthUrl: (url: string) => void): Promise<OAuthCredentials>;
|
|
15
|
-
/**
|
|
16
|
-
* CodeBuddy token 刷新
|
|
17
|
-
*
|
|
18
|
-
* CodeBuddy SDK 内部管理 token 生命周期,
|
|
19
|
-
* 如果 token 过期,需要重新登录。
|
|
20
|
-
*/
|
|
21
|
-
export declare function refreshCodeBuddyToken(credentials: OAuthCredentials): Promise<OAuthCredentials>;
|
|
22
|
-
/**
|
|
23
|
-
* CodeBuddy OAuth Provider 实现
|
|
24
|
-
*/
|
|
25
|
-
export declare const codeBuddyOAuthProvider: OAuthProviderInterface;
|
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* CodeBuddy OAuth Provider
|
|
4
|
-
*
|
|
5
|
-
* 通过 @tencent-ai/agent-sdk 的 authenticate() 实现 OAuth 登录。
|
|
6
|
-
* 登录后 token 存入 Pod 的 Credential 表,跨环境复用。
|
|
7
|
-
*/
|
|
8
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
-
exports.codeBuddyOAuthProvider = void 0;
|
|
10
|
-
exports.loginCodeBuddy = loginCodeBuddy;
|
|
11
|
-
exports.refreshCodeBuddyToken = refreshCodeBuddyToken;
|
|
12
|
-
/**
|
|
13
|
-
* CodeBuddy OAuth 登录
|
|
14
|
-
*
|
|
15
|
-
* 调用 @tencent-ai/agent-sdk 的 authenticate(),
|
|
16
|
-
* 打开浏览器让用户登录腾讯账号,获取 token。
|
|
17
|
-
*/
|
|
18
|
-
async function loginCodeBuddy(onAuthUrl) {
|
|
19
|
-
// 动态导入,避免未安装时报错
|
|
20
|
-
const mod = await (new Function('specifier', 'return import(specifier)'))('@tencent-ai/agent-sdk');
|
|
21
|
-
const authenticate = mod.unstable_v2_authenticate;
|
|
22
|
-
if (typeof authenticate !== 'function') {
|
|
23
|
-
throw new Error('@tencent-ai/agent-sdk 不可用或版本过低,需要 unstable_v2_authenticate');
|
|
24
|
-
}
|
|
25
|
-
const result = await authenticate({
|
|
26
|
-
environment: 'external',
|
|
27
|
-
onAuthUrl: (authState) => {
|
|
28
|
-
onAuthUrl(authState.authUrl);
|
|
29
|
-
},
|
|
30
|
-
});
|
|
31
|
-
return {
|
|
32
|
-
refresh: '',
|
|
33
|
-
access: result.userinfo.token,
|
|
34
|
-
expires: Date.now() + 24 * 3600_000,
|
|
35
|
-
userId: result.userinfo.userId,
|
|
36
|
-
userName: result.userinfo.userName,
|
|
37
|
-
};
|
|
38
|
-
}
|
|
39
|
-
/**
|
|
40
|
-
* CodeBuddy token 刷新
|
|
41
|
-
*
|
|
42
|
-
* CodeBuddy SDK 内部管理 token 生命周期,
|
|
43
|
-
* 如果 token 过期,需要重新登录。
|
|
44
|
-
*/
|
|
45
|
-
async function refreshCodeBuddyToken(credentials) {
|
|
46
|
-
if (credentials.expires > Date.now()) {
|
|
47
|
-
return credentials;
|
|
48
|
-
}
|
|
49
|
-
throw new Error('CodeBuddy token expired, please login again');
|
|
50
|
-
}
|
|
51
|
-
/**
|
|
52
|
-
* CodeBuddy OAuth Provider 实现
|
|
53
|
-
*/
|
|
54
|
-
exports.codeBuddyOAuthProvider = {
|
|
55
|
-
id: 'codebuddy',
|
|
56
|
-
name: 'CodeBuddy',
|
|
57
|
-
async login(callbacks) {
|
|
58
|
-
return loginCodeBuddy((url) => {
|
|
59
|
-
callbacks.onAuth({ url, instructions: '请在浏览器中登录腾讯账号' });
|
|
60
|
-
});
|
|
61
|
-
},
|
|
62
|
-
async refreshToken(credentials) {
|
|
63
|
-
return refreshCodeBuddyToken(credentials);
|
|
64
|
-
},
|
|
65
|
-
getApiKey(credentials) {
|
|
66
|
-
return credentials.access;
|
|
67
|
-
},
|
|
68
|
-
};
|
|
69
|
-
//# sourceMappingURL=codebuddy.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"codebuddy.js","sourceRoot":"","sources":["../../../../src/cli/lib/oauth-providers/codebuddy.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AA0BH,wCA8BC;AAQD,sDAOC;AAnDD;;;;;GAKG;AACI,KAAK,UAAU,cAAc,CAClC,SAAgC;IAEhC,gBAAgB;IAChB,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,QAAQ,CAC7B,WAAW,EACX,0BAA0B,CAC3B,CAAC,CAAC,uBAAuB,CAAwB,CAAC;IAEnD,MAAM,YAAY,GAAG,GAAG,CAAC,wBAAwB,CAAC;IAClD,IAAI,OAAO,YAAY,KAAK,UAAU,EAAE,CAAC;QACvC,MAAM,IAAI,KAAK,CACb,4DAA4D,CAC7D,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC;QAChC,WAAW,EAAE,UAAU;QACvB,SAAS,EAAE,CAAC,SAA6B,EAAE,EAAE;YAC3C,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QAC/B,CAAC;KACF,CAAoC,CAAC;IAEtC,OAAO;QACL,OAAO,EAAE,EAAE;QACX,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,KAAK;QAC7B,OAAO,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,QAAQ;QACnC,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM;QAC9B,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,QAAQ;KACnC,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACI,KAAK,UAAU,qBAAqB,CACzC,WAA6B;IAE7B,IAAI,WAAW,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;QACrC,OAAO,WAAW,CAAC;IACrB,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;AACjE,CAAC;AAED;;GAEG;AACU,QAAA,sBAAsB,GAA2B;IAC5D,EAAE,EAAE,WAAW;IACf,IAAI,EAAE,WAAW;IAEjB,KAAK,CAAC,KAAK,CAAC,SAA8B;QACxC,OAAO,cAAc,CAAC,CAAC,GAAG,EAAE,EAAE;YAC5B,SAAS,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,YAAY,EAAE,cAAc,EAAE,CAAC,CAAC;QAC1D,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,WAA6B;QAC9C,OAAO,qBAAqB,CAAC,WAAW,CAAC,CAAC;IAC5C,CAAC;IAED,SAAS,CAAC,WAA6B;QACrC,OAAO,WAAW,CAAC,MAAM,CAAC;IAC5B,CAAC;CACF,CAAC","sourcesContent":["/**\n * CodeBuddy OAuth Provider\n *\n * 通过 @tencent-ai/agent-sdk 的 authenticate() 实现 OAuth 登录。\n * 登录后 token 存入 Pod 的 Credential 表,跨环境复用。\n */\n\nimport type {\n OAuthCredentials,\n OAuthLoginCallbacks,\n OAuthProviderInterface,\n} from '../pi-optional';\n\ninterface CodeBuddyAuthState {\n state: string;\n authUrl: string;\n}\n\ninterface CodeBuddyUserinfo {\n userId: string;\n userName: string;\n userNickname: string;\n token: string;\n}\n\n/**\n * CodeBuddy OAuth 登录\n *\n * 调用 @tencent-ai/agent-sdk 的 authenticate(),\n * 打开浏览器让用户登录腾讯账号,获取 token。\n */\nexport async function loginCodeBuddy(\n onAuthUrl: (url: string) => void,\n): Promise<OAuthCredentials> {\n // 动态导入,避免未安装时报错\n const mod = await (new Function(\n 'specifier',\n 'return import(specifier)',\n ))('@tencent-ai/agent-sdk') as Record<string, any>;\n\n const authenticate = mod.unstable_v2_authenticate;\n if (typeof authenticate !== 'function') {\n throw new Error(\n '@tencent-ai/agent-sdk 不可用或版本过低,需要 unstable_v2_authenticate',\n );\n }\n\n const result = await authenticate({\n environment: 'external',\n onAuthUrl: (authState: CodeBuddyAuthState) => {\n onAuthUrl(authState.authUrl);\n },\n }) as { userinfo: CodeBuddyUserinfo };\n\n return {\n refresh: '',\n access: result.userinfo.token,\n expires: Date.now() + 24 * 3600_000,\n userId: result.userinfo.userId,\n userName: result.userinfo.userName,\n };\n}\n\n/**\n * CodeBuddy token 刷新\n *\n * CodeBuddy SDK 内部管理 token 生命周期,\n * 如果 token 过期,需要重新登录。\n */\nexport async function refreshCodeBuddyToken(\n credentials: OAuthCredentials,\n): Promise<OAuthCredentials> {\n if (credentials.expires > Date.now()) {\n return credentials;\n }\n throw new Error('CodeBuddy token expired, please login again');\n}\n\n/**\n * CodeBuddy OAuth Provider 实现\n */\nexport const codeBuddyOAuthProvider: OAuthProviderInterface = {\n id: 'codebuddy',\n name: 'CodeBuddy',\n\n async login(callbacks: OAuthLoginCallbacks): Promise<OAuthCredentials> {\n return loginCodeBuddy((url) => {\n callbacks.onAuth({ url, instructions: '请在浏览器中登录腾讯账号' });\n });\n },\n\n async refreshToken(credentials: OAuthCredentials): Promise<OAuthCredentials> {\n return refreshCodeBuddyToken(credentials);\n },\n\n getApiKey(credentials: OAuthCredentials): string {\n return credentials.access;\n },\n};\n"]}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* OAuth Providers Registry
|
|
3
|
-
*
|
|
4
|
-
* 注册所有 AI Provider 的 OAuth 实现。
|
|
5
|
-
* Solid OIDC 不在这里——它是"统一钥匙",存本地。
|
|
6
|
-
* 这里的 provider token 存 Pod,跨环境复用。
|
|
7
|
-
*/
|
|
8
|
-
/**
|
|
9
|
-
* 注册所有自定义 OAuth providers 到 pi-mono 框架
|
|
10
|
-
*/
|
|
11
|
-
export declare function registerCustomOAuthProviders(): Promise<void>;
|
|
12
|
-
export { codeBuddyOAuthProvider } from './codebuddy';
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* OAuth Providers Registry
|
|
4
|
-
*
|
|
5
|
-
* 注册所有 AI Provider 的 OAuth 实现。
|
|
6
|
-
* Solid OIDC 不在这里——它是"统一钥匙",存本地。
|
|
7
|
-
* 这里的 provider token 存 Pod,跨环境复用。
|
|
8
|
-
*/
|
|
9
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
-
exports.codeBuddyOAuthProvider = void 0;
|
|
11
|
-
exports.registerCustomOAuthProviders = registerCustomOAuthProviders;
|
|
12
|
-
const pi_optional_1 = require("../pi-optional");
|
|
13
|
-
const codebuddy_1 = require("./codebuddy");
|
|
14
|
-
/**
|
|
15
|
-
* 注册所有自定义 OAuth providers 到 pi-mono 框架
|
|
16
|
-
*/
|
|
17
|
-
async function registerCustomOAuthProviders() {
|
|
18
|
-
const { registerOAuthProvider } = await (0, pi_optional_1.loadPiAiOAuthUtils)();
|
|
19
|
-
registerOAuthProvider(codebuddy_1.codeBuddyOAuthProvider);
|
|
20
|
-
}
|
|
21
|
-
var codebuddy_2 = require("./codebuddy");
|
|
22
|
-
Object.defineProperty(exports, "codeBuddyOAuthProvider", { enumerable: true, get: function () { return codebuddy_2.codeBuddyOAuthProvider; } });
|
|
23
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/cli/lib/oauth-providers/index.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;AAQH,oEAGC;AATD,gDAAoD;AACpD,2CAAqD;AAErD;;GAEG;AACI,KAAK,UAAU,4BAA4B;IAChD,MAAM,EAAE,qBAAqB,EAAE,GAAG,MAAM,IAAA,gCAAkB,GAAE,CAAC;IAC7D,qBAAqB,CAAC,kCAAsB,CAAC,CAAC;AAChD,CAAC;AAED,yCAAqD;AAA5C,mHAAA,sBAAsB,OAAA","sourcesContent":["/**\n * OAuth Providers Registry\n *\n * 注册所有 AI Provider 的 OAuth 实现。\n * Solid OIDC 不在这里——它是\"统一钥匙\",存本地。\n * 这里的 provider token 存 Pod,跨环境复用。\n */\n\nimport { loadPiAiOAuthUtils } from '../pi-optional';\nimport { codeBuddyOAuthProvider } from './codebuddy';\n\n/**\n * 注册所有自定义 OAuth providers 到 pi-mono 框架\n */\nexport async function registerCustomOAuthProviders(): Promise<void> {\n const { registerOAuthProvider } = await loadPiAiOAuthUtils();\n registerOAuthProvider(codeBuddyOAuthProvider);\n}\n\nexport { codeBuddyOAuthProvider } from './codebuddy';\n"]}
|