@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,18 +1,19 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.configCommand = exports.
|
|
3
|
+
exports.configCommand = exports.PROVIDER_BASE_URLS = exports.CREDENTIAL_NS = exports.AI_NS = void 0;
|
|
4
4
|
exports.maskSecret = maskSecret;
|
|
5
5
|
exports.credentialId = credentialId;
|
|
6
6
|
exports.buildProviderSparql = buildProviderSparql;
|
|
7
7
|
exports.buildCredentialSparql = buildCredentialSparql;
|
|
8
8
|
exports.buildResetSparql = buildResetSparql;
|
|
9
|
+
const models_1 = require("@undefineds.co/models");
|
|
9
10
|
const credentials_store_1 = require("../lib/credentials-store");
|
|
10
11
|
const solid_auth_1 = require("../lib/solid-auth");
|
|
11
12
|
/**
|
|
12
|
-
* Config 子命令:配置
|
|
13
|
+
* Config 子命令:配置 Pod 中的 AI provider。
|
|
13
14
|
*
|
|
14
15
|
* 写入 Pod 的两个资源,与服务端 PodChatKitStore.getAiConfig() 对齐:
|
|
15
|
-
* /settings/
|
|
16
|
+
* /settings/providers/{provider}.ttl — Provider + optional Model
|
|
16
17
|
* /settings/credentials.ttl#cred-{provider} — Credential (apiKey, service=ai, status=active, provider link)
|
|
17
18
|
*
|
|
18
19
|
* 用法:
|
|
@@ -21,7 +22,8 @@ const solid_auth_1 = require("../lib/solid-auth");
|
|
|
21
22
|
* xpod config show
|
|
22
23
|
* xpod config reset
|
|
23
24
|
*/
|
|
24
|
-
exports.
|
|
25
|
+
exports.AI_NS = models_1.XPOD_AI.NAMESPACE;
|
|
26
|
+
exports.CREDENTIAL_NS = models_1.XPOD_CREDENTIAL.NAMESPACE;
|
|
25
27
|
/** provider name → default baseUrl */
|
|
26
28
|
exports.PROVIDER_BASE_URLS = {
|
|
27
29
|
openai: 'https://api.openai.com/v1',
|
|
@@ -33,10 +35,8 @@ exports.PROVIDER_BASE_URLS = {
|
|
|
33
35
|
mistral: 'https://api.mistral.ai/v1',
|
|
34
36
|
cohere: 'https://api.cohere.ai/v1',
|
|
35
37
|
zhipu: 'https://open.bigmodel.cn/api/paas/v4',
|
|
36
|
-
codebuddy: 'https://api.codebuddy.ai/v1',
|
|
38
|
+
codebuddy: 'https://api.codebuddy.ai/v1',
|
|
37
39
|
};
|
|
38
|
-
/** OAuth providers that require browser login */
|
|
39
|
-
exports.OAUTH_PROVIDERS = new Set(['codebuddy']);
|
|
40
40
|
function maskSecret(value) {
|
|
41
41
|
if (value.length <= 8)
|
|
42
42
|
return '****';
|
|
@@ -68,16 +68,48 @@ async function resolveAuth(argv) {
|
|
|
68
68
|
return { accessToken: tokenResult.accessToken, podUrl };
|
|
69
69
|
}
|
|
70
70
|
/**
|
|
71
|
-
* Build SPARQL UPDATE to upsert a Provider at /settings/
|
|
71
|
+
* Build SPARQL UPDATE to upsert a Provider at /settings/providers/{id}.ttl
|
|
72
72
|
*/
|
|
73
|
-
function buildProviderSparql(resourceUrl, providerId) {
|
|
73
|
+
function buildProviderSparql(resourceUrl, providerId, fields = {}) {
|
|
74
74
|
const baseUrl = exports.PROVIDER_BASE_URLS[providerId.toLowerCase()];
|
|
75
|
-
const displayName =
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
75
|
+
const displayName = (0, models_1.getAIConfigProviderMetadata)(providerId).displayName
|
|
76
|
+
?? providerId.charAt(0).toUpperCase() + providerId.slice(1);
|
|
77
|
+
const subject = `<${resourceUrl}>`;
|
|
78
|
+
const deletes = [
|
|
79
|
+
`${subject} ai:baseUrl ?oldBase .`,
|
|
80
|
+
`${subject} ai:displayName ?oldName .`,
|
|
81
|
+
];
|
|
82
|
+
const providerPredicates = [
|
|
83
|
+
`a ai:Provider`,
|
|
84
|
+
`ai:displayName "${displayName}"`,
|
|
85
|
+
];
|
|
86
|
+
const insertTriples = [];
|
|
87
|
+
const optionals = [
|
|
88
|
+
`OPTIONAL { ${subject} ai:baseUrl ?oldBase }`,
|
|
89
|
+
`OPTIONAL { ${subject} ai:displayName ?oldName }`,
|
|
90
|
+
];
|
|
91
|
+
if (baseUrl) {
|
|
92
|
+
providerPredicates.push(`ai:baseUrl "${baseUrl}"`);
|
|
93
|
+
}
|
|
94
|
+
if (fields.model) {
|
|
95
|
+
const modelRef = (0, models_1.aiConfigModelRef)(providerId, fields.model);
|
|
96
|
+
const fragmentIndex = modelRef.indexOf('#');
|
|
97
|
+
const modelSubject = fragmentIndex >= 0
|
|
98
|
+
? `<${resourceUrl}#${modelRef.slice(fragmentIndex + 1)}>`
|
|
99
|
+
: `<${resourceUrl}#${fields.model}>`;
|
|
100
|
+
deletes.push(`${subject} ai:defaultModel ?oldDefaultModel .`);
|
|
101
|
+
deletes.push(`${subject} ai:hasModel ?oldHasModel .`);
|
|
102
|
+
optionals.push(`OPTIONAL { ${subject} ai:defaultModel ?oldDefaultModel }`);
|
|
103
|
+
optionals.push(`OPTIONAL { ${subject} ai:hasModel ?oldHasModel }`);
|
|
104
|
+
providerPredicates.push(`ai:defaultModel ${modelSubject}`);
|
|
105
|
+
providerPredicates.push(`ai:hasModel ${modelSubject}`);
|
|
106
|
+
insertTriples.push(`${modelSubject} a ai:Model ; ai:displayName "${fields.model}" ; ai:modelType "chat" ; ai:isProvidedBy ${subject} ; ai:status "active" .`);
|
|
107
|
+
}
|
|
108
|
+
insertTriples.unshift(`${subject} ${providerPredicates.join(' ;\n ')} .`);
|
|
109
|
+
return `PREFIX ai: <${exports.AI_NS}>
|
|
110
|
+
DELETE { ${deletes.join(' ')} }
|
|
111
|
+
INSERT { ${insertTriples.join('\n ')} }
|
|
112
|
+
WHERE { ${optionals.join(' ')} }`;
|
|
81
113
|
}
|
|
82
114
|
/**
|
|
83
115
|
* Build SPARQL UPDATE to upsert a Credential at /settings/credentials.ttl#cred-{provider}
|
|
@@ -85,29 +117,24 @@ WHERE { OPTIONAL { ${subject} udfs:baseUrl ?oldBase } OPTIONAL { ${subject} udfs
|
|
|
85
117
|
function buildCredentialSparql(resourceUrl, podUrl, provider, fields) {
|
|
86
118
|
const credId = credentialId(provider);
|
|
87
119
|
const subject = `<${resourceUrl}#${credId}>`;
|
|
88
|
-
const providerUri = `<${podUrl}
|
|
120
|
+
const providerUri = `<${podUrl.replace(/\/$/, '')}${(0, models_1.aiConfigProviderRef)(provider)}>`;
|
|
89
121
|
const deletes = [];
|
|
90
122
|
const inserts = [
|
|
91
|
-
`${subject} a
|
|
92
|
-
`
|
|
93
|
-
`
|
|
94
|
-
`
|
|
123
|
+
`${subject} a cred:Credential`,
|
|
124
|
+
`cred:service "ai"`,
|
|
125
|
+
`cred:status "active"`,
|
|
126
|
+
`cred:provider ${providerUri}`,
|
|
95
127
|
];
|
|
96
128
|
const optionals = [];
|
|
97
129
|
// Always delete+reinsert provider link
|
|
98
|
-
deletes.push(`${subject}
|
|
99
|
-
optionals.push(`OPTIONAL { ${subject}
|
|
130
|
+
deletes.push(`${subject} cred:provider ?oldProv .`);
|
|
131
|
+
optionals.push(`OPTIONAL { ${subject} cred:provider ?oldProv }`);
|
|
100
132
|
if (fields.apiKey) {
|
|
101
|
-
deletes.push(`${subject}
|
|
102
|
-
optionals.push(`OPTIONAL { ${subject}
|
|
103
|
-
inserts.push(`
|
|
104
|
-
}
|
|
105
|
-
if (fields.model) {
|
|
106
|
-
deletes.push(`${subject} udfs:defaultModel ?oldModel .`);
|
|
107
|
-
optionals.push(`OPTIONAL { ${subject} udfs:defaultModel ?oldModel }`);
|
|
108
|
-
inserts.push(`udfs:defaultModel "${fields.model}"`);
|
|
133
|
+
deletes.push(`${subject} cred:apiKey ?oldKey .`);
|
|
134
|
+
optionals.push(`OPTIONAL { ${subject} cred:apiKey ?oldKey }`);
|
|
135
|
+
inserts.push(`cred:apiKey "${fields.apiKey}"`);
|
|
109
136
|
}
|
|
110
|
-
return `PREFIX
|
|
137
|
+
return `PREFIX cred: <${exports.CREDENTIAL_NS}>
|
|
111
138
|
DELETE { ${deletes.join(' ')} }
|
|
112
139
|
INSERT { ${inserts.join(' ;\n ')} }
|
|
113
140
|
WHERE { ${optionals.join(' ')} }`;
|
|
@@ -118,11 +145,11 @@ WHERE { ${optionals.join(' ')} }`;
|
|
|
118
145
|
function buildResetSparql(resourceUrl, provider) {
|
|
119
146
|
const credId = credentialId(provider);
|
|
120
147
|
const subject = `<${resourceUrl}#${credId}>`;
|
|
121
|
-
return `PREFIX
|
|
148
|
+
return `PREFIX cred: <${exports.CREDENTIAL_NS}>\nDELETE WHERE { ${subject} ?p ?o }`;
|
|
122
149
|
}
|
|
123
|
-
async function writeProvider(podUrl, accessToken, providerId) {
|
|
124
|
-
const resource = `${podUrl}
|
|
125
|
-
const sparql = buildProviderSparql(resource, providerId);
|
|
150
|
+
async function writeProvider(podUrl, accessToken, providerId, fields) {
|
|
151
|
+
const resource = `${podUrl.replace(/\/$/, '')}${(0, models_1.aiConfigProviderRef)(providerId)}`;
|
|
152
|
+
const sparql = buildProviderSparql(resource, providerId, fields);
|
|
126
153
|
const res = await (0, solid_auth_1.authenticatedFetch)(resource, accessToken, {
|
|
127
154
|
method: 'PATCH',
|
|
128
155
|
headers: { 'Content-Type': 'application/sparql-update' },
|
|
@@ -142,7 +169,7 @@ async function writeCredential(podUrl, accessToken, provider, fields) {
|
|
|
142
169
|
}
|
|
143
170
|
const setCommand = {
|
|
144
171
|
command: 'set',
|
|
145
|
-
describe: 'Configure
|
|
172
|
+
describe: 'Configure Pod AI provider (provider, model, api-key — one or more)',
|
|
146
173
|
builder: (yargs) => yargs
|
|
147
174
|
.option('provider', { type: 'string', description: `AI provider (${Object.keys(exports.PROVIDER_BASE_URLS).join(', ')})` })
|
|
148
175
|
.option('model', { type: 'string', description: 'Default model name' })
|
|
@@ -160,7 +187,7 @@ const setCommand = {
|
|
|
160
187
|
const { accessToken, podUrl } = await resolveAuth(argv);
|
|
161
188
|
const provider = argv.provider;
|
|
162
189
|
// Write provider
|
|
163
|
-
const provOk = await writeProvider(podUrl, accessToken, provider);
|
|
190
|
+
const provOk = await writeProvider(podUrl, accessToken, provider, { model: argv.model });
|
|
164
191
|
if (!provOk) {
|
|
165
192
|
console.error('Failed to write provider config.');
|
|
166
193
|
process.exit(1);
|
|
@@ -179,12 +206,12 @@ const setCommand = {
|
|
|
179
206
|
console.log(` model: ${argv.model}`);
|
|
180
207
|
if (argv['api-key'])
|
|
181
208
|
console.log(` api-key: ${maskSecret(argv['api-key'])}`);
|
|
182
|
-
console.log('
|
|
209
|
+
console.log('Pod AI provider config saved.');
|
|
183
210
|
},
|
|
184
211
|
};
|
|
185
212
|
const showCommand = {
|
|
186
213
|
command: 'show',
|
|
187
|
-
describe: 'Show current
|
|
214
|
+
describe: 'Show current Pod AI provider config',
|
|
188
215
|
builder: (yargs) => yargs,
|
|
189
216
|
handler: async (argv) => {
|
|
190
217
|
const { accessToken, podUrl } = await resolveAuth(argv);
|
|
@@ -193,7 +220,7 @@ const showCommand = {
|
|
|
193
220
|
headers: { Accept: 'text/turtle' },
|
|
194
221
|
});
|
|
195
222
|
if (!res.ok) {
|
|
196
|
-
console.log('No
|
|
223
|
+
console.log('No Pod AI provider config found. Use `xpod config set --provider openai --api-key sk-xxx` to configure.');
|
|
197
224
|
return;
|
|
198
225
|
}
|
|
199
226
|
const turtle = await res.text();
|
|
@@ -204,24 +231,21 @@ const showCommand = {
|
|
|
204
231
|
if (!block.includes('service') || !block.includes('"ai"'))
|
|
205
232
|
continue;
|
|
206
233
|
found = true;
|
|
207
|
-
const providerMatch = block.match(/providers
|
|
234
|
+
const providerMatch = block.match(/settings\/providers\/([^/\s>]+)\.ttl/);
|
|
208
235
|
const apiKeyMatch = block.match(/apiKey\s+"([^"]+)"/);
|
|
209
|
-
const modelMatch = block.match(/defaultModel\s+"([^"]+)"/);
|
|
210
236
|
if (providerMatch)
|
|
211
237
|
console.log(` provider: ${providerMatch[1]}`);
|
|
212
|
-
if (modelMatch)
|
|
213
|
-
console.log(` model: ${modelMatch[1]}`);
|
|
214
238
|
if (apiKeyMatch)
|
|
215
239
|
console.log(` api-key: ${maskSecret(apiKeyMatch[1])}`);
|
|
216
240
|
}
|
|
217
241
|
if (!found) {
|
|
218
|
-
console.log('No
|
|
242
|
+
console.log('No Pod AI provider config found. Use `xpod config set --provider openai --api-key sk-xxx` to configure.');
|
|
219
243
|
}
|
|
220
244
|
},
|
|
221
245
|
};
|
|
222
246
|
const resetCommand = {
|
|
223
247
|
command: 'reset',
|
|
224
|
-
describe: 'Remove
|
|
248
|
+
describe: 'Remove Pod AI provider config',
|
|
225
249
|
builder: (yargs) => yargs.option('provider', {
|
|
226
250
|
type: 'string',
|
|
227
251
|
description: 'Provider to remove',
|
|
@@ -238,7 +262,7 @@ const resetCommand = {
|
|
|
238
262
|
body: sparql,
|
|
239
263
|
});
|
|
240
264
|
if (res.ok) {
|
|
241
|
-
console.log(`
|
|
265
|
+
console.log(`Pod AI provider config for ${provider} removed.`);
|
|
242
266
|
}
|
|
243
267
|
else {
|
|
244
268
|
const text = await res.text();
|
|
@@ -249,7 +273,7 @@ const resetCommand = {
|
|
|
249
273
|
};
|
|
250
274
|
exports.configCommand = {
|
|
251
275
|
command: 'config',
|
|
252
|
-
describe: '
|
|
276
|
+
describe: 'Pod AI provider configuration (provider, model, api-key)',
|
|
253
277
|
builder: (yargs) => yargs
|
|
254
278
|
.option('url', {
|
|
255
279
|
alias: 'u',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/cli/commands/config.ts"],"names":[],"mappings":"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","sourcesContent":["import type { CommandModule } from 'yargs';\nimport { loadCredentials, getClientCredentials } from '../lib/credentials-store';\nimport { getAccessToken, authenticatedFetch } from '../lib/solid-auth';\n\ninterface ConfigArgs {\n url?: string;\n}\n\ninterface SetArgs extends ConfigArgs {\n provider?: string;\n model?: string;\n 'api-key'?: string;\n type?: 'api-key' | 'oauth'; // 认证类型\n}\n\n/**\n * Config 子命令:配置 SecretaryAI 使用的 AI 服务。\n *\n * 写入 Pod 的两个资源,与服务端 PodChatKitStore.getAiConfig() 对齐:\n * /settings/ai/providers.ttl#{provider} — Provider (baseUrl, displayName)\n * /settings/credentials.ttl#cred-{provider} — Credential (apiKey, service=ai, status=active, provider link)\n *\n * 用法:\n * xpod config set --provider openai --model gpt-4o --api-key sk-xxx\n * xpod config set --api-key sk-new-key # 更新已有 provider 的 key\n * xpod config show\n * xpod config reset\n */\n\nexport const UDFS_NS = 'https://undefineds.co/ns#';\n\n/** provider name → default baseUrl */\nexport const PROVIDER_BASE_URLS: Record<string, string> = {\n openai: 'https://api.openai.com/v1',\n google: 'https://generativelanguage.googleapis.com/v1beta/openai',\n anthropic: 'https://api.anthropic.com/v1',\n deepseek: 'https://api.deepseek.com/v1',\n openrouter: 'https://openrouter.ai/api/v1',\n ollama: 'http://localhost:11434/v1',\n mistral: 'https://api.mistral.ai/v1',\n cohere: 'https://api.cohere.ai/v1',\n zhipu: 'https://open.bigmodel.cn/api/paas/v4',\n codebuddy: 'https://api.codebuddy.ai/v1', // OAuth provider\n};\n\n/** OAuth providers that require browser login */\nexport const OAUTH_PROVIDERS = new Set(['codebuddy']);\n\nexport function maskSecret(value: string): string {\n if (value.length <= 8) return '****';\n return value.slice(0, 4) + '****' + value.slice(-4);\n}\n\nexport function credentialId(provider: string): string {\n return `cred-${provider.toLowerCase()}`;\n}\n\nasync function resolveAuth(argv: ConfigArgs): Promise<{ accessToken: string; podUrl: string }> {\n const creds = loadCredentials();\n if (!creds) {\n console.error('No credentials found. Run `xpod auth create-credentials` first.');\n process.exit(1);\n }\n\n const clientCreds = getClientCredentials(creds);\n if (!clientCreds) {\n console.error('OAuth authentication not yet supported. Please use client credentials.');\n process.exit(1);\n }\n\n const baseUrl = (argv.url ?? creds.url).replace(/\\/?$/, '/');\n\n const tokenResult = await getAccessToken(clientCreds.clientId, clientCreds.clientSecret, baseUrl);\n if (!tokenResult) {\n console.error('Failed to obtain access token. Credentials may be expired — run `xpod auth create-credentials` again.');\n process.exit(1);\n }\n\n const webIdUrl = new URL(creds.webId);\n const pathParts = webIdUrl.pathname.split('/').filter(Boolean);\n const podUrl = `${webIdUrl.origin}/${pathParts[0]}/`;\n\n return { accessToken: tokenResult.accessToken, podUrl };\n}\n\n/**\n * Build SPARQL UPDATE to upsert a Provider at /settings/ai/providers.ttl#{id}\n */\nexport function buildProviderSparql(resourceUrl: string, providerId: string): string {\n const baseUrl = PROVIDER_BASE_URLS[providerId.toLowerCase()];\n const displayName = providerId.charAt(0).toUpperCase() + providerId.slice(1);\n const subject = `<${resourceUrl}#${providerId}>`;\n\n return `PREFIX udfs: <${UDFS_NS}>\nDELETE { ${subject} udfs:baseUrl ?oldBase . ${subject} udfs:displayName ?oldName }\nINSERT { ${subject} a udfs:Provider ; udfs:displayName \"${displayName}\"${baseUrl ? ` ; udfs:baseUrl \"${baseUrl}\"` : ''} }\nWHERE { OPTIONAL { ${subject} udfs:baseUrl ?oldBase } OPTIONAL { ${subject} udfs:displayName ?oldName } }`;\n}\n\n/**\n * Build SPARQL UPDATE to upsert a Credential at /settings/credentials.ttl#cred-{provider}\n */\nexport function buildCredentialSparql(\n resourceUrl: string,\n podUrl: string,\n provider: string,\n fields: { apiKey?: string; model?: string },\n): string {\n const credId = credentialId(provider);\n const subject = `<${resourceUrl}#${credId}>`;\n const providerUri = `<${podUrl}settings/ai/providers.ttl#${provider}>`;\n\n const deletes: string[] = [];\n const inserts: string[] = [\n `${subject} a udfs:Credential`,\n `udfs:service \"ai\"`,\n `udfs:status \"active\"`,\n `udfs:provider ${providerUri}`,\n ];\n const optionals: string[] = [];\n\n // Always delete+reinsert provider link\n deletes.push(`${subject} udfs:provider ?oldProv .`);\n optionals.push(`OPTIONAL { ${subject} udfs:provider ?oldProv }`);\n\n if (fields.apiKey) {\n deletes.push(`${subject} udfs:apiKey ?oldKey .`);\n optionals.push(`OPTIONAL { ${subject} udfs:apiKey ?oldKey }`);\n inserts.push(`udfs:apiKey \"${fields.apiKey}\"`);\n }\n if (fields.model) {\n deletes.push(`${subject} udfs:defaultModel ?oldModel .`);\n optionals.push(`OPTIONAL { ${subject} udfs:defaultModel ?oldModel }`);\n inserts.push(`udfs:defaultModel \"${fields.model}\"`);\n }\n\n return `PREFIX udfs: <${UDFS_NS}>\nDELETE { ${deletes.join(' ')} }\nINSERT { ${inserts.join(' ;\\n ')} }\nWHERE { ${optionals.join(' ')} }`;\n}\n\n/**\n * Build SPARQL UPDATE to delete a Credential\n */\nexport function buildResetSparql(resourceUrl: string, provider: string): string {\n const credId = credentialId(provider);\n const subject = `<${resourceUrl}#${credId}>`;\n return `PREFIX udfs: <${UDFS_NS}>\\nDELETE WHERE { ${subject} ?p ?o }`;\n}\n\nasync function writeProvider(podUrl: string, accessToken: string, providerId: string): Promise<boolean> {\n const resource = `${podUrl}settings/ai/providers.ttl`;\n const sparql = buildProviderSparql(resource, providerId);\n const res = await authenticatedFetch(resource, accessToken, {\n method: 'PATCH',\n headers: { 'Content-Type': 'application/sparql-update' },\n body: sparql,\n });\n return res.ok;\n}\n\nasync function writeCredential(\n podUrl: string,\n accessToken: string,\n provider: string,\n fields: { apiKey?: string; model?: string },\n): Promise<boolean> {\n const resource = `${podUrl}settings/credentials.ttl`;\n const sparql = buildCredentialSparql(resource, podUrl, provider, fields);\n const res = await authenticatedFetch(resource, accessToken, {\n method: 'PATCH',\n headers: { 'Content-Type': 'application/sparql-update' },\n body: sparql,\n });\n return res.ok;\n}\n\nconst setCommand: CommandModule<ConfigArgs, SetArgs> = {\n command: 'set',\n describe: 'Configure SecretaryAI (provider, model, api-key — one or more)',\n builder: (yargs) =>\n yargs\n .option('provider', { type: 'string', description: `AI provider (${Object.keys(PROVIDER_BASE_URLS).join(', ')})` })\n .option('model', { type: 'string', description: 'Default model name' })\n .option('api-key', { type: 'string', description: 'API key' })\n .check((argv) => {\n if (!argv.provider && !argv.model && !argv['api-key']) {\n throw new Error('Specify at least one of --provider, --model, or --api-key');\n }\n if ((argv.model || argv['api-key']) && !argv.provider) {\n throw new Error('--provider is required when setting --model or --api-key');\n }\n return true;\n }),\n handler: async (argv) => {\n const { accessToken, podUrl } = await resolveAuth(argv);\n const provider = argv.provider!;\n\n // Write provider\n const provOk = await writeProvider(podUrl, accessToken, provider);\n if (!provOk) {\n console.error('Failed to write provider config.');\n process.exit(1);\n }\n\n // Write credential\n const credOk = await writeCredential(podUrl, accessToken, provider, {\n apiKey: argv['api-key'],\n model: argv.model,\n });\n if (!credOk) {\n console.error('Failed to write credential config.');\n process.exit(1);\n }\n\n console.log(` provider: ${provider}`);\n if (argv.model) console.log(` model: ${argv.model}`);\n if (argv['api-key']) console.log(` api-key: ${maskSecret(argv['api-key'])}`);\n console.log('SecretaryAI config saved.');\n },\n};\n\nconst showCommand: CommandModule<ConfigArgs, ConfigArgs> = {\n command: 'show',\n describe: 'Show current SecretaryAI config',\n builder: (yargs) => yargs,\n handler: async (argv) => {\n const { accessToken, podUrl } = await resolveAuth(argv);\n const resource = `${podUrl}settings/credentials.ttl`;\n const res = await authenticatedFetch(resource, accessToken, {\n headers: { Accept: 'text/turtle' },\n });\n\n if (!res.ok) {\n console.log('No SecretaryAI config found. Use `xpod config set --provider openai --api-key sk-xxx` to configure.');\n return;\n }\n\n const turtle = await res.text();\n // Parse simple triples from turtle to find AI credentials\n const credBlocks = turtle.split(/(?=<[^>]*#cred-)/);\n let found = false;\n for (const block of credBlocks) {\n if (!block.includes('service') || !block.includes('\"ai\"')) continue;\n found = true;\n\n const providerMatch = block.match(/providers\\.ttl#(\\w+)/);\n const apiKeyMatch = block.match(/apiKey\\s+\"([^\"]+)\"/);\n const modelMatch = block.match(/defaultModel\\s+\"([^\"]+)\"/);\n\n if (providerMatch) console.log(` provider: ${providerMatch[1]}`);\n if (modelMatch) console.log(` model: ${modelMatch[1]}`);\n if (apiKeyMatch) console.log(` api-key: ${maskSecret(apiKeyMatch[1])}`);\n }\n\n if (!found) {\n console.log('No SecretaryAI config found. Use `xpod config set --provider openai --api-key sk-xxx` to configure.');\n }\n },\n};\n\nconst resetCommand: CommandModule<ConfigArgs, SetArgs> = {\n command: 'reset',\n describe: 'Remove SecretaryAI config',\n builder: (yargs) =>\n yargs.option('provider', {\n type: 'string',\n description: 'Provider to remove',\n demandOption: true,\n }),\n handler: async (argv) => {\n const { accessToken, podUrl } = await resolveAuth(argv);\n const provider = argv.provider!;\n const resource = `${podUrl}settings/credentials.ttl`;\n const sparql = buildResetSparql(resource, provider);\n\n const res = await authenticatedFetch(resource, accessToken, {\n method: 'PATCH',\n headers: { 'Content-Type': 'application/sparql-update' },\n body: sparql,\n });\n\n if (res.ok) {\n console.log(`SecretaryAI config for ${provider} removed.`);\n } else {\n const text = await res.text();\n console.error(`Failed to reset config: ${res.status} ${text.slice(0, 200)}`);\n process.exit(1);\n }\n },\n};\n\nexport const configCommand: CommandModule<object, ConfigArgs> = {\n command: 'config',\n describe: 'SecretaryAI configuration (provider, model, api-key)',\n builder: (yargs) =>\n yargs\n .option('url', {\n alias: 'u',\n type: 'string',\n description: 'Server base URL (default: from ~/.xpod/)',\n })\n .command(setCommand)\n .command(showCommand)\n .command(resetCommand)\n .demandCommand(1, 'Please specify a config subcommand'),\n handler: () => {},\n};\n"]}
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/cli/commands/config.ts"],"names":[],"mappings":"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","sourcesContent":["import type { CommandModule } from 'yargs';\nimport { aiConfigModelRef, aiConfigProviderRef, getAIConfigProviderMetadata, XPOD_AI, XPOD_CREDENTIAL } from '@undefineds.co/models';\nimport { loadCredentials, getClientCredentials } from '../lib/credentials-store';\nimport { getAccessToken, authenticatedFetch } from '../lib/solid-auth';\n\ninterface ConfigArgs {\n url?: string;\n}\n\ninterface SetArgs extends ConfigArgs {\n provider?: string;\n model?: string;\n 'api-key'?: string;\n}\n\n/**\n * Config 子命令:配置 Pod 中的 AI provider。\n *\n * 写入 Pod 的两个资源,与服务端 PodChatKitStore.getAiConfig() 对齐:\n * /settings/providers/{provider}.ttl — Provider + optional Model\n * /settings/credentials.ttl#cred-{provider} — Credential (apiKey, service=ai, status=active, provider link)\n *\n * 用法:\n * xpod config set --provider openai --model gpt-4o --api-key sk-xxx\n * xpod config set --api-key sk-new-key # 更新已有 provider 的 key\n * xpod config show\n * xpod config reset\n */\n\nexport const AI_NS = XPOD_AI.NAMESPACE;\nexport const CREDENTIAL_NS = XPOD_CREDENTIAL.NAMESPACE;\n\n/** provider name → default baseUrl */\nexport const PROVIDER_BASE_URLS: Record<string, string> = {\n openai: 'https://api.openai.com/v1',\n google: 'https://generativelanguage.googleapis.com/v1beta/openai',\n anthropic: 'https://api.anthropic.com/v1',\n deepseek: 'https://api.deepseek.com/v1',\n openrouter: 'https://openrouter.ai/api/v1',\n ollama: 'http://localhost:11434/v1',\n mistral: 'https://api.mistral.ai/v1',\n cohere: 'https://api.cohere.ai/v1',\n zhipu: 'https://open.bigmodel.cn/api/paas/v4',\n codebuddy: 'https://api.codebuddy.ai/v1',\n};\n\nexport function maskSecret(value: string): string {\n if (value.length <= 8) return '****';\n return value.slice(0, 4) + '****' + value.slice(-4);\n}\n\nexport function credentialId(provider: string): string {\n return `cred-${provider.toLowerCase()}`;\n}\n\nasync function resolveAuth(argv: ConfigArgs): Promise<{ accessToken: string; podUrl: string }> {\n const creds = loadCredentials();\n if (!creds) {\n console.error('No credentials found. Run `xpod auth create-credentials` first.');\n process.exit(1);\n }\n\n const clientCreds = getClientCredentials(creds);\n if (!clientCreds) {\n console.error('OAuth authentication not yet supported. Please use client credentials.');\n process.exit(1);\n }\n\n const baseUrl = (argv.url ?? creds.url).replace(/\\/?$/, '/');\n\n const tokenResult = await getAccessToken(clientCreds.clientId, clientCreds.clientSecret, baseUrl);\n if (!tokenResult) {\n console.error('Failed to obtain access token. Credentials may be expired — run `xpod auth create-credentials` again.');\n process.exit(1);\n }\n\n const webIdUrl = new URL(creds.webId);\n const pathParts = webIdUrl.pathname.split('/').filter(Boolean);\n const podUrl = `${webIdUrl.origin}/${pathParts[0]}/`;\n\n return { accessToken: tokenResult.accessToken, podUrl };\n}\n\n/**\n * Build SPARQL UPDATE to upsert a Provider at /settings/providers/{id}.ttl\n */\nexport function buildProviderSparql(resourceUrl: string, providerId: string, fields: { model?: string } = {}): string {\n const baseUrl = PROVIDER_BASE_URLS[providerId.toLowerCase()];\n const displayName = getAIConfigProviderMetadata(providerId).displayName\n ?? providerId.charAt(0).toUpperCase() + providerId.slice(1);\n const subject = `<${resourceUrl}>`;\n const deletes = [\n `${subject} ai:baseUrl ?oldBase .`,\n `${subject} ai:displayName ?oldName .`,\n ];\n const providerPredicates = [\n `a ai:Provider`,\n `ai:displayName \"${displayName}\"`,\n ];\n const insertTriples: string[] = [];\n const optionals = [\n `OPTIONAL { ${subject} ai:baseUrl ?oldBase }`,\n `OPTIONAL { ${subject} ai:displayName ?oldName }`,\n ];\n\n if (baseUrl) {\n providerPredicates.push(`ai:baseUrl \"${baseUrl}\"`);\n }\n\n if (fields.model) {\n const modelRef = aiConfigModelRef(providerId, fields.model);\n const fragmentIndex = modelRef.indexOf('#');\n const modelSubject = fragmentIndex >= 0\n ? `<${resourceUrl}#${modelRef.slice(fragmentIndex + 1)}>`\n : `<${resourceUrl}#${fields.model}>`;\n deletes.push(`${subject} ai:defaultModel ?oldDefaultModel .`);\n deletes.push(`${subject} ai:hasModel ?oldHasModel .`);\n optionals.push(`OPTIONAL { ${subject} ai:defaultModel ?oldDefaultModel }`);\n optionals.push(`OPTIONAL { ${subject} ai:hasModel ?oldHasModel }`);\n providerPredicates.push(`ai:defaultModel ${modelSubject}`);\n providerPredicates.push(`ai:hasModel ${modelSubject}`);\n insertTriples.push(`${modelSubject} a ai:Model ; ai:displayName \"${fields.model}\" ; ai:modelType \"chat\" ; ai:isProvidedBy ${subject} ; ai:status \"active\" .`);\n }\n insertTriples.unshift(`${subject} ${providerPredicates.join(' ;\\n ')} .`);\n\n return `PREFIX ai: <${AI_NS}>\nDELETE { ${deletes.join(' ')} }\nINSERT { ${insertTriples.join('\\n ')} }\nWHERE { ${optionals.join(' ')} }`;\n}\n\n/**\n * Build SPARQL UPDATE to upsert a Credential at /settings/credentials.ttl#cred-{provider}\n */\nexport function buildCredentialSparql(\n resourceUrl: string,\n podUrl: string,\n provider: string,\n fields: { apiKey?: string; model?: string },\n): string {\n const credId = credentialId(provider);\n const subject = `<${resourceUrl}#${credId}>`;\n const providerUri = `<${podUrl.replace(/\\/$/, '')}${aiConfigProviderRef(provider)}>`;\n\n const deletes: string[] = [];\n const inserts: string[] = [\n `${subject} a cred:Credential`,\n `cred:service \"ai\"`,\n `cred:status \"active\"`,\n `cred:provider ${providerUri}`,\n ];\n const optionals: string[] = [];\n\n // Always delete+reinsert provider link\n deletes.push(`${subject} cred:provider ?oldProv .`);\n optionals.push(`OPTIONAL { ${subject} cred:provider ?oldProv }`);\n\n if (fields.apiKey) {\n deletes.push(`${subject} cred:apiKey ?oldKey .`);\n optionals.push(`OPTIONAL { ${subject} cred:apiKey ?oldKey }`);\n inserts.push(`cred:apiKey \"${fields.apiKey}\"`);\n }\n\n return `PREFIX cred: <${CREDENTIAL_NS}>\nDELETE { ${deletes.join(' ')} }\nINSERT { ${inserts.join(' ;\\n ')} }\nWHERE { ${optionals.join(' ')} }`;\n}\n\n/**\n * Build SPARQL UPDATE to delete a Credential\n */\nexport function buildResetSparql(resourceUrl: string, provider: string): string {\n const credId = credentialId(provider);\n const subject = `<${resourceUrl}#${credId}>`;\n return `PREFIX cred: <${CREDENTIAL_NS}>\\nDELETE WHERE { ${subject} ?p ?o }`;\n}\n\nasync function writeProvider(podUrl: string, accessToken: string, providerId: string, fields: { model?: string }): Promise<boolean> {\n const resource = `${podUrl.replace(/\\/$/, '')}${aiConfigProviderRef(providerId)}`;\n const sparql = buildProviderSparql(resource, providerId, fields);\n const res = await authenticatedFetch(resource, accessToken, {\n method: 'PATCH',\n headers: { 'Content-Type': 'application/sparql-update' },\n body: sparql,\n });\n return res.ok;\n}\n\nasync function writeCredential(\n podUrl: string,\n accessToken: string,\n provider: string,\n fields: { apiKey?: string; model?: string },\n): Promise<boolean> {\n const resource = `${podUrl}settings/credentials.ttl`;\n const sparql = buildCredentialSparql(resource, podUrl, provider, fields);\n const res = await authenticatedFetch(resource, accessToken, {\n method: 'PATCH',\n headers: { 'Content-Type': 'application/sparql-update' },\n body: sparql,\n });\n return res.ok;\n}\n\nconst setCommand: CommandModule<ConfigArgs, SetArgs> = {\n command: 'set',\n describe: 'Configure Pod AI provider (provider, model, api-key — one or more)',\n builder: (yargs) =>\n yargs\n .option('provider', { type: 'string', description: `AI provider (${Object.keys(PROVIDER_BASE_URLS).join(', ')})` })\n .option('model', { type: 'string', description: 'Default model name' })\n .option('api-key', { type: 'string', description: 'API key' })\n .check((argv) => {\n if (!argv.provider && !argv.model && !argv['api-key']) {\n throw new Error('Specify at least one of --provider, --model, or --api-key');\n }\n if ((argv.model || argv['api-key']) && !argv.provider) {\n throw new Error('--provider is required when setting --model or --api-key');\n }\n return true;\n }),\n handler: async (argv) => {\n const { accessToken, podUrl } = await resolveAuth(argv);\n const provider = argv.provider!;\n\n // Write provider\n const provOk = await writeProvider(podUrl, accessToken, provider, { model: argv.model });\n if (!provOk) {\n console.error('Failed to write provider config.');\n process.exit(1);\n }\n\n // Write credential\n const credOk = await writeCredential(podUrl, accessToken, provider, {\n apiKey: argv['api-key'],\n model: argv.model,\n });\n if (!credOk) {\n console.error('Failed to write credential config.');\n process.exit(1);\n }\n\n console.log(` provider: ${provider}`);\n if (argv.model) console.log(` model: ${argv.model}`);\n if (argv['api-key']) console.log(` api-key: ${maskSecret(argv['api-key'])}`);\n console.log('Pod AI provider config saved.');\n },\n};\n\nconst showCommand: CommandModule<ConfigArgs, ConfigArgs> = {\n command: 'show',\n describe: 'Show current Pod AI provider config',\n builder: (yargs) => yargs,\n handler: async (argv) => {\n const { accessToken, podUrl } = await resolveAuth(argv);\n const resource = `${podUrl}settings/credentials.ttl`;\n const res = await authenticatedFetch(resource, accessToken, {\n headers: { Accept: 'text/turtle' },\n });\n\n if (!res.ok) {\n console.log('No Pod AI provider config found. Use `xpod config set --provider openai --api-key sk-xxx` to configure.');\n return;\n }\n\n const turtle = await res.text();\n // Parse simple triples from turtle to find AI credentials\n const credBlocks = turtle.split(/(?=<[^>]*#cred-)/);\n let found = false;\n for (const block of credBlocks) {\n if (!block.includes('service') || !block.includes('\"ai\"')) continue;\n found = true;\n\n const providerMatch = block.match(/settings\\/providers\\/([^/\\s>]+)\\.ttl/);\n const apiKeyMatch = block.match(/apiKey\\s+\"([^\"]+)\"/);\n\n if (providerMatch) console.log(` provider: ${providerMatch[1]}`);\n if (apiKeyMatch) console.log(` api-key: ${maskSecret(apiKeyMatch[1])}`);\n }\n\n if (!found) {\n console.log('No Pod AI provider config found. Use `xpod config set --provider openai --api-key sk-xxx` to configure.');\n }\n },\n};\n\nconst resetCommand: CommandModule<ConfigArgs, SetArgs> = {\n command: 'reset',\n describe: 'Remove Pod AI provider config',\n builder: (yargs) =>\n yargs.option('provider', {\n type: 'string',\n description: 'Provider to remove',\n demandOption: true,\n }),\n handler: async (argv) => {\n const { accessToken, podUrl } = await resolveAuth(argv);\n const provider = argv.provider!;\n const resource = `${podUrl}settings/credentials.ttl`;\n const sparql = buildResetSparql(resource, provider);\n\n const res = await authenticatedFetch(resource, accessToken, {\n method: 'PATCH',\n headers: { 'Content-Type': 'application/sparql-update' },\n body: sparql,\n });\n\n if (res.ok) {\n console.log(`Pod AI provider config for ${provider} removed.`);\n } else {\n const text = await res.text();\n console.error(`Failed to reset config: ${res.status} ${text.slice(0, 200)}`);\n process.exit(1);\n }\n },\n};\n\nexport const configCommand: CommandModule<object, ConfigArgs> = {\n command: 'config',\n describe: 'Pod AI provider configuration (provider, model, api-key)',\n builder: (yargs) =>\n yargs\n .option('url', {\n alias: 'u',\n type: 'string',\n description: 'Server base URL (default: from ~/.xpod/)',\n })\n .command(setCommand)\n .command(showCommand)\n .command(resetCommand)\n .demandCommand(1, 'Please specify a config subcommand'),\n handler: () => {},\n};\n"]}
|
|
@@ -1,9 +1,11 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* xpod login - OAuth login for AI providers
|
|
3
|
-
*
|
|
4
|
-
* Usage:
|
|
5
|
-
* xpod login codebuddy
|
|
6
|
-
* xpod login anthropic
|
|
7
|
-
*/
|
|
8
1
|
import type { CommandModule } from 'yargs';
|
|
9
|
-
|
|
2
|
+
interface LoginArgs {
|
|
3
|
+
url?: string;
|
|
4
|
+
email?: string;
|
|
5
|
+
password?: string;
|
|
6
|
+
'web-id'?: string;
|
|
7
|
+
name?: string;
|
|
8
|
+
output?: boolean;
|
|
9
|
+
}
|
|
10
|
+
export declare const loginCommandModule: CommandModule<object, LoginArgs>;
|
|
11
|
+
export {};
|
|
@@ -1,106 +1,106 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* xpod login - OAuth login for AI providers
|
|
4
|
-
*
|
|
5
|
-
* Usage:
|
|
6
|
-
* xpod login codebuddy
|
|
7
|
-
* xpod login anthropic
|
|
8
|
-
*/
|
|
9
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
3
|
exports.loginCommandModule = void 0;
|
|
4
|
+
const css_account_1 = require("../lib/css-account");
|
|
11
5
|
const credentials_store_1 = require("../lib/credentials-store");
|
|
12
|
-
const solid_auth_1 = require("../lib/solid-auth");
|
|
13
|
-
const pi_optional_1 = require("../lib/pi-optional");
|
|
14
|
-
const oauth_credential_manager_1 = require("../lib/oauth-credential-manager");
|
|
15
|
-
const oauth_providers_1 = require("../lib/oauth-providers");
|
|
16
6
|
const prompt_1 = require("../lib/prompt");
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
7
|
+
function resolveUrl(url) {
|
|
8
|
+
const raw = url || process.env.CSS_BASE_URL || 'http://localhost:3000';
|
|
9
|
+
return raw.endsWith('/') ? raw : `${raw}/`;
|
|
10
|
+
}
|
|
11
|
+
async function resolveWebId(baseUrl, token, explicitWebId) {
|
|
12
|
+
if (explicitWebId) {
|
|
13
|
+
return explicitWebId;
|
|
14
|
+
}
|
|
15
|
+
const accountRes = await fetch(`${baseUrl}.account/`, {
|
|
16
|
+
headers: {
|
|
17
|
+
Accept: 'application/json',
|
|
18
|
+
Authorization: `CSS-Account-Token ${token}`,
|
|
19
|
+
},
|
|
20
|
+
});
|
|
21
|
+
if (!accountRes.ok) {
|
|
22
|
+
return undefined;
|
|
23
|
+
}
|
|
24
|
+
const accountData = await accountRes.json();
|
|
25
|
+
const webIds = accountData.webIds;
|
|
26
|
+
if (!webIds || typeof webIds !== 'object') {
|
|
27
|
+
return undefined;
|
|
28
|
+
}
|
|
29
|
+
return Object.keys(webIds)[0];
|
|
30
|
+
}
|
|
31
|
+
exports.loginCommandModule = {
|
|
32
|
+
command: 'login',
|
|
33
|
+
describe: 'Login to xpod/Solid and store CLI client credentials',
|
|
34
|
+
builder: (yargs) => yargs
|
|
35
|
+
.option('url', {
|
|
36
|
+
alias: 'u',
|
|
21
37
|
type: 'string',
|
|
22
|
-
description: '
|
|
23
|
-
|
|
38
|
+
description: 'Server base URL',
|
|
39
|
+
default: process.env.CSS_BASE_URL || 'http://localhost:3000',
|
|
40
|
+
})
|
|
41
|
+
.option('email', { type: 'string', description: 'Account email (will prompt if not provided)' })
|
|
42
|
+
.option('password', { type: 'string', description: 'Account password (will prompt securely if not provided)' })
|
|
43
|
+
.option('web-id', { type: 'string', description: 'WebID to bind credentials to' })
|
|
44
|
+
.option('name', { type: 'string', description: 'Credential label' })
|
|
45
|
+
.option('output', { type: 'boolean', default: false, description: 'Print credentials instead of saving to ~/.xpod/' }),
|
|
24
46
|
handler: async (argv) => {
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
console.error('Error: No Solid credentials found.');
|
|
29
|
-
console.error('Please run: xpod auth create-credentials');
|
|
47
|
+
const baseUrl = resolveUrl(argv.url);
|
|
48
|
+
if (!(await (0, css_account_1.checkServer)(baseUrl))) {
|
|
49
|
+
console.error(`Cannot reach server at ${baseUrl}`);
|
|
30
50
|
process.exit(1);
|
|
31
51
|
}
|
|
32
|
-
|
|
33
|
-
if (!
|
|
34
|
-
|
|
35
|
-
|
|
52
|
+
let email = argv.email;
|
|
53
|
+
if (!email) {
|
|
54
|
+
email = await (0, prompt_1.promptText)('Email: ');
|
|
55
|
+
if (!email) {
|
|
56
|
+
console.error('Email is required');
|
|
57
|
+
process.exit(1);
|
|
58
|
+
}
|
|
36
59
|
}
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
60
|
+
let password = argv.password;
|
|
61
|
+
if (!password) {
|
|
62
|
+
password = await (0, prompt_1.promptPassword)('Password: ');
|
|
63
|
+
if (!password) {
|
|
64
|
+
console.error('Password is required');
|
|
65
|
+
process.exit(1);
|
|
66
|
+
}
|
|
41
67
|
}
|
|
42
|
-
|
|
43
|
-
|
|
68
|
+
const token = await (0, css_account_1.login)(email, password, baseUrl);
|
|
69
|
+
if (!token) {
|
|
70
|
+
console.error('Login failed.');
|
|
44
71
|
process.exit(1);
|
|
45
72
|
}
|
|
46
|
-
const
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
let providerId = argv.provider;
|
|
51
|
-
if (!providerId) {
|
|
52
|
-
console.log('Available OAuth providers:');
|
|
53
|
-
console.log(' codebuddy - CodeBuddy (Tencent AI)');
|
|
54
|
-
console.log(' anthropic - Anthropic (Claude Pro/Max)');
|
|
55
|
-
console.log(' github-copilot - GitHub Copilot');
|
|
56
|
-
console.log('');
|
|
57
|
-
providerId = await (0, prompt_1.promptText)('Enter provider name: ');
|
|
58
|
-
if (!providerId) {
|
|
59
|
-
console.error('Provider name is required');
|
|
60
|
-
process.exit(1);
|
|
61
|
-
}
|
|
73
|
+
const controls = await (0, css_account_1.getAccountControls)(token, baseUrl);
|
|
74
|
+
if (!controls?.clientCredentials) {
|
|
75
|
+
console.error('Cannot find client credentials endpoint.');
|
|
76
|
+
process.exit(1);
|
|
62
77
|
}
|
|
63
|
-
const
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
console.error(`Error: Unknown provider: ${providerId}`);
|
|
67
|
-
console.error('Available providers: codebuddy, anthropic, github-copilot');
|
|
78
|
+
const webId = await resolveWebId(baseUrl, token, argv['web-id']);
|
|
79
|
+
if (!webId) {
|
|
80
|
+
console.error('No WebID found. Specify --web-id explicitly.');
|
|
68
81
|
process.exit(1);
|
|
69
82
|
}
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
+
const credential = await (0, css_account_1.createClientCredentials)(token, controls.clientCredentials, webId, argv.name);
|
|
84
|
+
if (!credential) {
|
|
85
|
+
console.error('Failed to create client credentials.');
|
|
86
|
+
process.exit(1);
|
|
87
|
+
}
|
|
88
|
+
console.log('Credentials created:');
|
|
89
|
+
console.log(` client_id: ${credential.id}`);
|
|
90
|
+
console.log(` client_secret: ${credential.secret}`);
|
|
91
|
+
console.log(` webId: ${webId}`);
|
|
92
|
+
if (!argv.output) {
|
|
93
|
+
(0, credentials_store_1.saveCredentials)({
|
|
94
|
+
url: baseUrl,
|
|
95
|
+
webId,
|
|
96
|
+
authType: 'client_credentials',
|
|
97
|
+
secrets: {
|
|
98
|
+
clientId: credential.id,
|
|
99
|
+
clientSecret: credential.secret ?? '',
|
|
83
100
|
},
|
|
84
101
|
});
|
|
85
|
-
|
|
86
|
-
const providerUri = `${podUrl}settings/ai/providers.ttl#${providerId}`;
|
|
87
|
-
await (0, oauth_credential_manager_1.saveOAuthCredential)(session, providerId, providerUri, credentials, `${provider.name} OAuth`);
|
|
88
|
-
console.log(`\n✓ ${provider.name} credentials saved to your Pod!`);
|
|
89
|
-
console.log('You can now use the AI agent with this provider.\n');
|
|
90
|
-
await session.logout();
|
|
91
|
-
}
|
|
92
|
-
catch (error) {
|
|
93
|
-
console.error(`\nError during OAuth login: ${error instanceof Error ? error.message : String(error)}`);
|
|
94
|
-
process.exit(1);
|
|
102
|
+
console.log(`\nSaved to ${(0, credentials_store_1.getConfigPath)().replace('/config.json', '/')}`);
|
|
95
103
|
}
|
|
96
104
|
},
|
|
97
105
|
};
|
|
98
|
-
exports.loginCommandModule = {
|
|
99
|
-
command: 'login',
|
|
100
|
-
describe: 'OAuth login for AI providers',
|
|
101
|
-
builder: (yargs) => yargs.command(loginCommand),
|
|
102
|
-
handler: () => {
|
|
103
|
-
// Parent command, delegate to subcommands
|
|
104
|
-
},
|
|
105
|
-
};
|
|
106
106
|
//# sourceMappingURL=login.js.map
|