@coralai/sps-cli 0.55.13 → 0.56.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/commands/cardMarkComplete.d.ts.map +1 -1
- package/dist/commands/cardMarkComplete.js +6 -3
- package/dist/commands/cardMarkComplete.js.map +1 -1
- package/dist/commands/projectInit.d.ts +18 -16
- package/dist/commands/projectInit.d.ts.map +1 -1
- package/dist/commands/projectInit.js +59 -186
- package/dist/commands/projectInit.js.map +1 -1
- package/dist/commands/skillCommand.js +7 -4
- package/dist/commands/skillCommand.js.map +1 -1
- package/dist/commands/tick.d.ts +2 -20
- package/dist/commands/tick.d.ts.map +1 -1
- package/dist/commands/tick.js +58 -1
- package/dist/commands/tick.js.map +1 -1
- package/dist/console/index.d.ts.map +1 -1
- package/dist/console/index.js +4 -0
- package/dist/console/index.js.map +1 -1
- package/dist/console/routes/chat.d.ts.map +1 -1
- package/dist/console/routes/chat.js +211 -6
- package/dist/console/routes/chat.js.map +1 -1
- package/dist/console/routes/projects.d.ts +0 -6
- package/dist/console/routes/projects.d.ts.map +1 -1
- package/dist/console/routes/projects.js +11 -2
- package/dist/console/routes/projects.js.map +1 -1
- package/dist/console/routes/providers.d.ts +10 -0
- package/dist/console/routes/providers.d.ts.map +1 -0
- package/dist/console/routes/providers.js +63 -0
- package/dist/console/routes/providers.js.map +1 -0
- package/dist/console/routes/smartarrange.d.ts +4 -0
- package/dist/console/routes/smartarrange.d.ts.map +1 -0
- package/dist/console/routes/smartarrange.js +107 -0
- package/dist/console/routes/smartarrange.js.map +1 -0
- package/dist/console/routes/system.d.ts.map +1 -1
- package/dist/console/routes/system.js +28 -0
- package/dist/console/routes/system.js.map +1 -1
- package/dist/console/routes/workers.d.ts.map +1 -1
- package/dist/console/routes/workers.js +36 -4
- package/dist/console/routes/workers.js.map +1 -1
- package/dist/console-assets/assets/index-CWkYVI5d.js +600 -0
- package/dist/console-assets/assets/index-CnUBHNsN.css +10 -0
- package/dist/console-assets/index.html +2 -2
- package/dist/core/agents/AcpBackend.d.ts +24 -0
- package/dist/core/agents/AcpBackend.d.ts.map +1 -0
- package/dist/core/agents/AcpBackend.js +86 -0
- package/dist/core/agents/AcpBackend.js.map +1 -0
- package/dist/core/agents/AgentBackend.d.ts +53 -0
- package/dist/core/agents/AgentBackend.d.ts.map +1 -0
- package/dist/core/agents/AgentBackend.js +18 -0
- package/dist/core/agents/AgentBackend.js.map +1 -0
- package/dist/core/agents/ClaudeAcpBackend.d.ts +13 -0
- package/dist/core/agents/ClaudeAcpBackend.d.ts.map +1 -0
- package/dist/core/agents/ClaudeAcpBackend.js +14 -0
- package/dist/core/agents/ClaudeAcpBackend.js.map +1 -0
- package/dist/core/agents/ClaudeSdkBackend.d.ts +26 -0
- package/dist/core/agents/ClaudeSdkBackend.d.ts.map +1 -0
- package/dist/core/agents/ClaudeSdkBackend.js +102 -0
- package/dist/core/agents/ClaudeSdkBackend.js.map +1 -0
- package/dist/core/agents/CodexAppServerBackend.d.ts +33 -0
- package/dist/core/agents/CodexAppServerBackend.d.ts.map +1 -0
- package/dist/core/agents/CodexAppServerBackend.js +168 -0
- package/dist/core/agents/CodexAppServerBackend.js.map +1 -0
- package/dist/core/agents/OpenAiAgentBackend.d.ts +39 -0
- package/dist/core/agents/OpenAiAgentBackend.d.ts.map +1 -0
- package/dist/core/agents/OpenAiAgentBackend.js +132 -0
- package/dist/core/agents/OpenAiAgentBackend.js.map +1 -0
- package/dist/core/agents/agentsMd.d.ts +2 -0
- package/dist/core/agents/agentsMd.d.ts.map +1 -0
- package/dist/core/agents/agentsMd.js +22 -0
- package/dist/core/agents/agentsMd.js.map +1 -0
- package/dist/core/agents/localTracing.d.ts +3 -0
- package/dist/core/agents/localTracing.d.ts.map +1 -0
- package/dist/core/agents/localTracing.js +42 -0
- package/dist/core/agents/localTracing.js.map +1 -0
- package/dist/core/agents/resolveBackend.d.ts +26 -0
- package/dist/core/agents/resolveBackend.d.ts.map +1 -0
- package/dist/core/agents/resolveBackend.js +27 -0
- package/dist/core/agents/resolveBackend.js.map +1 -0
- package/dist/core/agents/workerOutputSink.d.ts +4 -0
- package/dist/core/agents/workerOutputSink.d.ts.map +1 -0
- package/dist/core/agents/workerOutputSink.js +39 -0
- package/dist/core/agents/workerOutputSink.js.map +1 -0
- package/dist/core/config.d.ts +6 -0
- package/dist/core/config.d.ts.map +1 -1
- package/dist/core/config.js +4 -0
- package/dist/core/config.js.map +1 -1
- package/dist/core/intel/RuntimeSession.d.ts +16 -0
- package/dist/core/intel/RuntimeSession.d.ts.map +1 -0
- package/dist/core/intel/RuntimeSession.js +89 -0
- package/dist/core/intel/RuntimeSession.js.map +1 -0
- package/dist/core/intel/agentsConfig.d.ts +20 -0
- package/dist/core/intel/agentsConfig.d.ts.map +1 -0
- package/dist/core/intel/agentsConfig.js +68 -0
- package/dist/core/intel/agentsConfig.js.map +1 -0
- package/dist/core/intel/planStore.d.ts +23 -0
- package/dist/core/intel/planStore.d.ts.map +1 -0
- package/dist/core/intel/planStore.js +67 -0
- package/dist/core/intel/planStore.js.map +1 -0
- package/dist/core/intel/types.d.ts +86 -0
- package/dist/core/intel/types.d.ts.map +1 -0
- package/dist/core/intel/types.js +8 -0
- package/dist/core/intel/types.js.map +1 -0
- package/dist/core/memoryIngest.d.ts +18 -0
- package/dist/core/memoryIngest.d.ts.map +1 -0
- package/dist/core/memoryIngest.js +56 -0
- package/dist/core/memoryIngest.js.map +1 -0
- package/dist/core/memoryProvider.d.ts +63 -0
- package/dist/core/memoryProvider.d.ts.map +1 -0
- package/dist/core/memoryProvider.js +205 -0
- package/dist/core/memoryProvider.js.map +1 -0
- package/dist/core/skillStore.d.ts.map +1 -1
- package/dist/core/skillStore.js +2 -1
- package/dist/core/skillStore.js.map +1 -1
- package/dist/core/skills/SkillsManager.d.ts +38 -0
- package/dist/core/skills/SkillsManager.d.ts.map +1 -0
- package/dist/core/skills/SkillsManager.js +231 -0
- package/dist/core/skills/SkillsManager.js.map +1 -0
- package/dist/core/skills/distribution.d.ts +64 -0
- package/dist/core/skills/distribution.d.ts.map +1 -0
- package/dist/core/skills/distribution.js +269 -0
- package/dist/core/skills/distribution.js.map +1 -0
- package/dist/core/skills/index.d.ts +13 -0
- package/dist/core/skills/index.d.ts.map +1 -0
- package/dist/core/skills/index.js +13 -0
- package/dist/core/skills/index.js.map +1 -0
- package/dist/core/skills/types.d.ts +44 -0
- package/dist/core/skills/types.d.ts.map +1 -0
- package/dist/core/skills/types.js +9 -0
- package/dist/core/skills/types.js.map +1 -0
- package/dist/core/taskPrompts.d.ts +0 -12
- package/dist/core/taskPrompts.d.ts.map +1 -1
- package/dist/core/taskPrompts.js +0 -14
- package/dist/core/taskPrompts.js.map +1 -1
- package/dist/core/transcriptIngest.d.ts +37 -0
- package/dist/core/transcriptIngest.d.ts.map +1 -0
- package/dist/core/transcriptIngest.js +137 -0
- package/dist/core/transcriptIngest.js.map +1 -0
- package/dist/core/wiki/types.d.ts +282 -745
- package/dist/core/wiki/types.d.ts.map +1 -1
- package/dist/core/wiki/types.js +1 -1
- package/dist/core/wiki/types.js.map +1 -1
- package/dist/daemon/daemonClient.d.ts +6 -0
- package/dist/daemon/daemonClient.d.ts.map +1 -1
- package/dist/daemon/daemonClient.js.map +1 -1
- package/dist/daemon/sessionDaemon.d.ts.map +1 -1
- package/dist/daemon/sessionDaemon.js.map +1 -1
- package/dist/engines/SmartArrangeEngine.d.ts +75 -0
- package/dist/engines/SmartArrangeEngine.d.ts.map +1 -0
- package/dist/engines/SmartArrangeEngine.js +112 -0
- package/dist/engines/SmartArrangeEngine.js.map +1 -0
- package/dist/engines/StageEngine.d.ts +3 -17
- package/dist/engines/StageEngine.d.ts.map +1 -1
- package/dist/engines/StageEngine.js +13 -91
- package/dist/engines/StageEngine.js.map +1 -1
- package/dist/engines/smartarrange/AcpWorkerExec.d.ts +35 -0
- package/dist/engines/smartarrange/AcpWorkerExec.d.ts.map +1 -0
- package/dist/engines/smartarrange/AcpWorkerExec.js +71 -0
- package/dist/engines/smartarrange/AcpWorkerExec.js.map +1 -0
- package/dist/engines/smartarrange/cardSink.d.ts +29 -0
- package/dist/engines/smartarrange/cardSink.d.ts.map +1 -0
- package/dist/engines/smartarrange/cardSink.js +43 -0
- package/dist/engines/smartarrange/cardSink.js.map +1 -0
- package/dist/engines/smartarrange/runner.d.ts +24 -0
- package/dist/engines/smartarrange/runner.d.ts.map +1 -0
- package/dist/engines/smartarrange/runner.js +116 -0
- package/dist/engines/smartarrange/runner.js.map +1 -0
- package/dist/engines/smartarrange/screenshot.d.ts +5 -0
- package/dist/engines/smartarrange/screenshot.d.ts.map +1 -0
- package/dist/engines/smartarrange/screenshot.js +117 -0
- package/dist/engines/smartarrange/screenshot.js.map +1 -0
- package/dist/main.js +127 -92
- package/dist/main.js.map +1 -1
- package/dist/manager/worker-manager-impl.d.ts.map +1 -1
- package/dist/manager/worker-manager-impl.js +7 -0
- package/dist/manager/worker-manager-impl.js.map +1 -1
- package/dist/providers/ACPWorkerRuntime.d.ts +2 -0
- package/dist/providers/ACPWorkerRuntime.d.ts.map +1 -1
- package/dist/providers/ACPWorkerRuntime.js +1 -0
- package/dist/providers/ACPWorkerRuntime.js.map +1 -1
- package/dist/providers/LLMClient.d.ts +32 -0
- package/dist/providers/LLMClient.d.ts.map +1 -0
- package/dist/providers/LLMClient.js +108 -0
- package/dist/providers/LLMClient.js.map +1 -0
- package/dist/providers/MarkdownTaskBackend.d.ts.map +1 -1
- package/dist/providers/MarkdownTaskBackend.js +3 -2
- package/dist/providers/MarkdownTaskBackend.js.map +1 -1
- package/dist/providers/llm/chatTools.d.ts +11 -0
- package/dist/providers/llm/chatTools.d.ts.map +1 -0
- package/dist/providers/llm/chatTools.js +57 -0
- package/dist/providers/llm/chatTools.js.map +1 -0
- package/dist/providers/llm/codexAuth.d.ts +8 -0
- package/dist/providers/llm/codexAuth.d.ts.map +1 -0
- package/dist/providers/llm/codexAuth.js +57 -0
- package/dist/providers/llm/codexAuth.js.map +1 -0
- package/dist/providers/llm/codexModel.d.ts +14 -0
- package/dist/providers/llm/codexModel.d.ts.map +1 -0
- package/dist/providers/llm/codexModel.js +96 -0
- package/dist/providers/llm/codexModel.js.map +1 -0
- package/dist/providers/llm/localSubscription.d.ts +15 -0
- package/dist/providers/llm/localSubscription.d.ts.map +1 -0
- package/dist/providers/llm/localSubscription.js +66 -0
- package/dist/providers/llm/localSubscription.js.map +1 -0
- package/dist/providers/llm/modelFactory.d.ts +14 -0
- package/dist/providers/llm/modelFactory.d.ts.map +1 -0
- package/dist/providers/llm/modelFactory.js +22 -0
- package/dist/providers/llm/modelFactory.js.map +1 -0
- package/dist/providers/llm/monitorSkills.d.ts +6 -0
- package/dist/providers/llm/monitorSkills.d.ts.map +1 -0
- package/dist/providers/llm/monitorSkills.js +37 -0
- package/dist/providers/llm/monitorSkills.js.map +1 -0
- package/dist/providers/llm/probeTools.d.ts +7 -0
- package/dist/providers/llm/probeTools.d.ts.map +1 -0
- package/dist/providers/llm/probeTools.js +84 -0
- package/dist/providers/llm/probeTools.js.map +1 -0
- package/dist/providers/llm/providers.d.ts +26 -0
- package/dist/providers/llm/providers.d.ts.map +1 -0
- package/dist/providers/llm/providers.js +68 -0
- package/dist/providers/llm/providers.js.map +1 -0
- package/dist/providers/llm/skillTools.d.ts +4 -0
- package/dist/providers/llm/skillTools.d.ts.map +1 -0
- package/dist/providers/llm/skillTools.js +42 -0
- package/dist/providers/llm/skillTools.js.map +1 -0
- package/dist/providers/llm/workerTools.d.ts +9 -0
- package/dist/providers/llm/workerTools.d.ts.map +1 -0
- package/dist/providers/llm/workerTools.js +111 -0
- package/dist/providers/llm/workerTools.js.map +1 -0
- package/dist/providers/mcp/spsMcpServer.d.ts +15 -0
- package/dist/providers/mcp/spsMcpServer.d.ts.map +1 -0
- package/dist/providers/mcp/spsMcpServer.js +67 -0
- package/dist/providers/mcp/spsMcpServer.js.map +1 -0
- package/dist/providers/mcp/spsMcpStdio.d.ts +2 -0
- package/dist/providers/mcp/spsMcpStdio.d.ts.map +1 -0
- package/dist/providers/mcp/spsMcpStdio.js +32 -0
- package/dist/providers/mcp/spsMcpStdio.js.map +1 -0
- package/dist/providers/mcp/spsMcpStdioConfig.d.ts +11 -0
- package/dist/providers/mcp/spsMcpStdioConfig.d.ts.map +1 -0
- package/dist/providers/mcp/spsMcpStdioConfig.js +19 -0
- package/dist/providers/mcp/spsMcpStdioConfig.js.map +1 -0
- package/dist/server.d.ts +23 -0
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +23 -0
- package/dist/server.js.map +1 -1
- package/dist/services/ChatService.d.ts +10 -0
- package/dist/services/ChatService.d.ts.map +1 -1
- package/dist/services/ChatService.js +2 -0
- package/dist/services/ChatService.js.map +1 -1
- package/dist/services/LogService.d.ts +1 -1
- package/dist/services/LogService.d.ts.map +1 -1
- package/dist/services/LogService.js +3 -2
- package/dist/services/LogService.js.map +1 -1
- package/dist/services/ProjectService.d.ts +12 -2
- package/dist/services/ProjectService.d.ts.map +1 -1
- package/dist/services/ProjectService.js +1 -0
- package/dist/services/ProjectService.js.map +1 -1
- package/dist/services/SkillService.js +11 -13
- package/dist/services/SkillService.js.map +1 -1
- package/dist/services/SmartArrangeService.d.ts +12 -0
- package/dist/services/SmartArrangeService.d.ts.map +1 -0
- package/dist/services/SmartArrangeService.js +37 -0
- package/dist/services/SmartArrangeService.js.map +1 -0
- package/dist/services/SystemService.d.ts +20 -0
- package/dist/services/SystemService.d.ts.map +1 -1
- package/dist/services/SystemService.js +93 -0
- package/dist/services/SystemService.js.map +1 -1
- package/dist/services/WorkerService.d.ts +8 -0
- package/dist/services/WorkerService.d.ts.map +1 -1
- package/dist/services/WorkerService.js +73 -3
- package/dist/services/WorkerService.js.map +1 -1
- package/dist/services/container.d.ts +2 -0
- package/dist/services/container.d.ts.map +1 -1
- package/dist/services/container.js +2 -0
- package/dist/services/container.js.map +1 -1
- package/dist/shared/localTime.d.ts +8 -0
- package/dist/shared/localTime.d.ts.map +1 -0
- package/dist/shared/localTime.js +11 -0
- package/dist/shared/localTime.js.map +1 -0
- package/dist/shared/runtimePaths.d.ts +1 -1
- package/dist/shared/runtimePaths.d.ts.map +1 -1
- package/dist/shared/runtimePaths.js +2 -2
- package/dist/shared/runtimePaths.js.map +1 -1
- package/dist/shared/runtimeSchemas.d.ts +74 -245
- package/dist/shared/runtimeSchemas.d.ts.map +1 -1
- package/dist/shared/runtimeSchemas.js +2 -2
- package/dist/shared/runtimeSchemas.js.map +1 -1
- package/monitor-skills/probe-playbook/SKILL.md +32 -0
- package/monitor-skills/visual-rubric/SKILL.md +34 -0
- package/package.json +8 -8
- package/project-template/.claude/hooks/stop.sh +3 -1
- package/dist/console-assets/assets/index-BvWWj69G.js +0 -557
- package/dist/console-assets/assets/index-Eo4PuNPl.css +0 -10
- package/dist/interfaces/ACPClient.d.ts +0 -107
- package/dist/interfaces/ACPClient.d.ts.map +0 -1
- package/dist/interfaces/ACPClient.js +0 -17
- package/dist/interfaces/ACPClient.js.map +0 -1
- package/dist/interfaces/AgentRuntime.d.ts +0 -40
- package/dist/interfaces/AgentRuntime.d.ts.map +0 -1
- package/dist/interfaces/AgentRuntime.js +0 -17
- package/dist/interfaces/AgentRuntime.js.map +0 -1
- package/dist/manager/agentmemory.d.ts +0 -6
- package/dist/manager/agentmemory.d.ts.map +0 -1
- package/dist/manager/agentmemory.js +0 -73
- package/dist/manager/agentmemory.js.map +0 -1
- package/dist/models/acp.d.ts +0 -64
- package/dist/models/acp.d.ts.map +0 -1
- package/dist/models/acp.js +0 -17
- package/dist/models/acp.js.map +0 -1
- package/dist/providers/LocalACPClient.d.ts +0 -27
- package/dist/providers/LocalACPClient.d.ts.map +0 -1
- package/dist/providers/LocalACPClient.js +0 -26
- package/dist/providers/LocalACPClient.js.map +0 -1
- package/dist/providers/adapters/AcpSdkAdapter.d.ts +0 -24
- package/dist/providers/adapters/AcpSdkAdapter.d.ts.map +0 -1
- package/dist/providers/adapters/AcpSdkAdapter.js +0 -439
- package/dist/providers/adapters/AcpSdkAdapter.js.map +0 -1
- package/dist/providers/adapters/acp-fs-handlers.d.ts +0 -26
- package/dist/providers/adapters/acp-fs-handlers.d.ts.map +0 -1
- package/dist/providers/adapters/acp-fs-handlers.js +0 -61
- package/dist/providers/adapters/acp-fs-handlers.js.map +0 -1
- package/dist/providers/adapters/acp-permissions.d.ts +0 -42
- package/dist/providers/adapters/acp-permissions.d.ts.map +0 -1
- package/dist/providers/adapters/acp-permissions.js +0 -76
- package/dist/providers/adapters/acp-permissions.js.map +0 -1
- package/dist/providers/adapters/acp-session-accumulator.d.ts +0 -55
- package/dist/providers/adapters/acp-session-accumulator.d.ts.map +0 -1
- package/dist/providers/adapters/acp-session-accumulator.js +0 -133
- package/dist/providers/adapters/acp-session-accumulator.js.map +0 -1
- package/dist/providers/adapters/acp-terminal-manager.d.ts +0 -56
- package/dist/providers/adapters/acp-terminal-manager.d.ts.map +0 -1
- package/dist/providers/adapters/acp-terminal-manager.js +0 -127
- package/dist/providers/adapters/acp-terminal-manager.js.map +0 -1
- package/project-template/logs/.gitkeep +0 -0
- package/skills/architecture-decision-records/SKILL.md +0 -207
- package/skills/backend/SKILL.md +0 -62
- package/skills/backend/references/api-design.md +0 -168
- package/skills/backend/references/caching.md +0 -181
- package/skills/backend/references/data-access.md +0 -173
- package/skills/backend/references/layering.md +0 -181
- package/skills/backend/references/observability.md +0 -190
- package/skills/backend/references/resilience.md +0 -201
- package/skills/backend/references/security.md +0 -186
- package/skills/backend-architect/SKILL.md +0 -119
- package/skills/code-reviewer/SKILL.md +0 -143
- package/skills/coding-standards/SKILL.md +0 -60
- package/skills/coding-standards/references/clean-code.md +0 -258
- package/skills/coding-standards/references/code-review.md +0 -192
- package/skills/coding-standards/references/commits-and-prs.md +0 -226
- package/skills/coding-standards/references/error-strategy.md +0 -193
- package/skills/coding-standards/references/naming.md +0 -185
- package/skills/coding-standards/references/tdd.md +0 -171
- package/skills/database/SKILL.md +0 -53
- package/skills/database/references/indexing.md +0 -190
- package/skills/database/references/migrations.md +0 -199
- package/skills/database/references/nosql.md +0 -185
- package/skills/database/references/queries.md +0 -295
- package/skills/database/references/scaling.md +0 -203
- package/skills/database/references/schema.md +0 -191
- package/skills/database-optimizer/SKILL.md +0 -168
- package/skills/debugging-workflow/SKILL.md +0 -244
- package/skills/dev-worker/SKILL.md +0 -40
- package/skills/dev-worker/references/architect.md +0 -139
- package/skills/dev-worker/references/backend.md +0 -163
- package/skills/dev-worker/references/frontend.md +0 -122
- package/skills/dev-worker/references/fullstack.md +0 -179
- package/skills/dev-worker/references/optimizer.md +0 -151
- package/skills/dev-worker/references/phaser.md +0 -109
- package/skills/dev-worker/references/prototyper.md +0 -171
- package/skills/dev-worker/references/reviewer.md +0 -122
- package/skills/dev-worker/references/security.md +0 -154
- package/skills/dev-worker/references/senior.md +0 -155
- package/skills/dev-worker/references/typescript.md +0 -65
- package/skills/dev-worker/references/writer.md +0 -201
- package/skills/devops/SKILL.md +0 -55
- package/skills/devops/references/ci-cd.md +0 -204
- package/skills/devops/references/containers.md +0 -272
- package/skills/devops/references/deploy.md +0 -201
- package/skills/devops/references/iac.md +0 -252
- package/skills/devops/references/observability.md +0 -228
- package/skills/devops/references/secrets.md +0 -178
- package/skills/devops-automator/SKILL.md +0 -164
- package/skills/frontend/SKILL.md +0 -52
- package/skills/frontend/references/accessibility.md +0 -222
- package/skills/frontend/references/components.md +0 -206
- package/skills/frontend/references/performance.md +0 -219
- package/skills/frontend/references/routing.md +0 -209
- package/skills/frontend/references/state.md +0 -190
- package/skills/frontend/references/testing.md +0 -216
- package/skills/frontend-developer/SKILL.md +0 -115
- package/skills/git-workflow/SKILL.md +0 -355
- package/skills/golang/SKILL.md +0 -49
- package/skills/golang/references/concurrency.md +0 -284
- package/skills/golang/references/errors.md +0 -241
- package/skills/golang/references/idioms.md +0 -285
- package/skills/golang/references/testing.md +0 -238
- package/skills/java/SKILL.md +0 -50
- package/skills/java/references/concurrency.md +0 -194
- package/skills/java/references/idioms.md +0 -283
- package/skills/java/references/testing.md +0 -228
- package/skills/kotlin/SKILL.md +0 -47
- package/skills/kotlin/references/coroutines.md +0 -240
- package/skills/kotlin/references/idioms.md +0 -268
- package/skills/kotlin/references/testing.md +0 -219
- package/skills/mobile/SKILL.md +0 -50
- package/skills/mobile/references/architecture.md +0 -204
- package/skills/mobile/references/navigation.md +0 -158
- package/skills/mobile/references/performance.md +0 -152
- package/skills/mobile/references/platform.md +0 -166
- package/skills/mobile/references/state-and-data.md +0 -174
- package/skills/python/SKILL.md +0 -51
- package/skills/python/THIRD_PARTY.md +0 -14
- package/skills/python/references/async.md +0 -218
- package/skills/python/references/error-handling.md +0 -254
- package/skills/python/references/idioms.md +0 -279
- package/skills/python/references/packaging.md +0 -233
- package/skills/python/references/testing.md +0 -269
- package/skills/python/references/typing.md +0 -292
- package/skills/qa-tester/SKILL.md +0 -186
- package/skills/rust/SKILL.md +0 -50
- package/skills/rust/references/async.md +0 -224
- package/skills/rust/references/errors.md +0 -240
- package/skills/rust/references/ownership.md +0 -263
- package/skills/rust/references/testing.md +0 -274
- package/skills/rust/references/traits.md +0 -250
- package/skills/security-engineer/SKILL.md +0 -157
- package/skills/sps-memory/SKILL.md +0 -213
- package/skills/sps-pipeline/SKILL.md +0 -476
- package/skills/swift/SKILL.md +0 -48
- package/skills/swift/references/concurrency.md +0 -280
- package/skills/swift/references/idioms.md +0 -334
- package/skills/swift/references/testing.md +0 -229
- package/skills/tax-worker/SKILL.md +0 -150
- package/skills/tax-worker/references/account-codes.md +0 -165
- package/skills/typescript/SKILL.md +0 -51
- package/skills/typescript/references/async.md +0 -241
- package/skills/typescript/references/errors.md +0 -208
- package/skills/typescript/references/idioms.md +0 -246
- package/skills/typescript/references/testing.md +0 -225
- package/skills/typescript/references/tooling.md +0 -208
- package/skills/typescript/references/types.md +0 -259
- package/skills/wiki-update/SKILL.md +0 -300
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export declare const CODEX_RESPONSES_BASE = "https://chatgpt.com/backend-api/codex";
|
|
2
|
+
export interface CodexCreds {
|
|
3
|
+
accessToken: string;
|
|
4
|
+
accountId: string;
|
|
5
|
+
}
|
|
6
|
+
/** 取可用的 Codex 凭据;access_token 过期(留 2 分钟余量)则刷新并写回 auth.json。 */
|
|
7
|
+
export declare function getCodexCreds(): Promise<CodexCreds>;
|
|
8
|
+
//# sourceMappingURL=codexAuth.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codexAuth.d.ts","sourceRoot":"","sources":["../../../src/providers/llm/codexAuth.ts"],"names":[],"mappings":"AAeA,eAAO,MAAM,oBAAoB,0CAA0C,CAAC;AAE5E,MAAM,WAAW,UAAU;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;CACnB;AAWD,+DAA+D;AAC/D,wBAAsB,aAAa,IAAI,OAAO,CAAC,UAAU,CAAC,CAmCzD"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module providers/llm/codexAuth
|
|
3
|
+
* @description Codex(ChatGPT 订阅)凭据:读 ~/.codex/auth.json,access_token 过期就用
|
|
4
|
+
* refresh_token 自动换新并写回。把订阅当 OpenAI Agents SDK 的模型用。
|
|
5
|
+
* (移植自 gameforge codex-auth,纯 node + fetch,无外部依赖。)
|
|
6
|
+
* @layer provider
|
|
7
|
+
* @boundedContext smartarrange
|
|
8
|
+
*/
|
|
9
|
+
import { readFileSync, writeFileSync } from 'node:fs';
|
|
10
|
+
import { homedir } from 'node:os';
|
|
11
|
+
import { join } from 'node:path';
|
|
12
|
+
const AUTH_FILE = process.env.CODEX_AUTH_FILE || join(homedir(), '.codex', 'auth.json');
|
|
13
|
+
const CLIENT_ID = 'app_EMoamEEZ73f0CkXaXp7hrann';
|
|
14
|
+
const TOKEN_URL = 'https://auth.openai.com/oauth/token';
|
|
15
|
+
export const CODEX_RESPONSES_BASE = 'https://chatgpt.com/backend-api/codex';
|
|
16
|
+
function jwtExpMs(jwt) {
|
|
17
|
+
try {
|
|
18
|
+
const p = JSON.parse(Buffer.from(jwt.split('.')[1], 'base64url').toString());
|
|
19
|
+
return (p.exp || 0) * 1000;
|
|
20
|
+
}
|
|
21
|
+
catch {
|
|
22
|
+
return 0;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
/** 取可用的 Codex 凭据;access_token 过期(留 2 分钟余量)则刷新并写回 auth.json。 */
|
|
26
|
+
export async function getCodexCreds() {
|
|
27
|
+
const raw = JSON.parse(readFileSync(AUTH_FILE, 'utf-8'));
|
|
28
|
+
const access = raw.tokens?.access_token;
|
|
29
|
+
const refresh = raw.tokens?.refresh_token;
|
|
30
|
+
const accountId = raw.tokens?.account_id;
|
|
31
|
+
if (!access || !refresh || !accountId)
|
|
32
|
+
throw new Error('~/.codex/auth.json 缺 token/account_id(请先用 codex 登录)');
|
|
33
|
+
if (Date.now() <= jwtExpMs(access) - 120_000) {
|
|
34
|
+
return { accessToken: access, accountId };
|
|
35
|
+
}
|
|
36
|
+
const res = await fetch(TOKEN_URL, {
|
|
37
|
+
method: 'POST',
|
|
38
|
+
headers: { 'content-type': 'application/json' },
|
|
39
|
+
body: JSON.stringify({ grant_type: 'refresh_token', client_id: CLIENT_ID, refresh_token: refresh }),
|
|
40
|
+
});
|
|
41
|
+
if (!res.ok)
|
|
42
|
+
throw new Error(`Codex token 刷新失败 HTTP ${res.status}: ${(await res.text()).slice(0, 240)}`);
|
|
43
|
+
const j = (await res.json());
|
|
44
|
+
if (!j.access_token)
|
|
45
|
+
throw new Error('Codex 刷新响应缺 access_token');
|
|
46
|
+
raw.tokens = {
|
|
47
|
+
...raw.tokens,
|
|
48
|
+
access_token: j.access_token,
|
|
49
|
+
refresh_token: j.refresh_token || refresh,
|
|
50
|
+
id_token: j.id_token || raw.tokens?.id_token,
|
|
51
|
+
account_id: accountId,
|
|
52
|
+
};
|
|
53
|
+
raw.last_refresh = new Date().toISOString();
|
|
54
|
+
writeFileSync(AUTH_FILE, JSON.stringify(raw, null, 2));
|
|
55
|
+
return { accessToken: j.access_token, accountId };
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=codexAuth.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codexAuth.js","sourceRoot":"","sources":["../../../src/providers/llm/codexAuth.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module providers/llm/codexModel
|
|
3
|
+
* @description Codex(ChatGPT 订阅)接入 @openai/agents 的 Model 适配器。
|
|
4
|
+
* Codex 私有端点两处特殊:① 必须 store:false;② 流式 response.completed 的 output
|
|
5
|
+
* 是空数组(内容只走 output_item/delta)→ SDK 误判没输出反复重发。
|
|
6
|
+
* 修法:自定义 fetch —— 刷 token + 注鉴权头 + force store:false + 把流式 item 注回 completed.output。
|
|
7
|
+
* (移植自 gameforge codex-model。)
|
|
8
|
+
* @layer provider
|
|
9
|
+
* @boundedContext smartarrange
|
|
10
|
+
*/
|
|
11
|
+
import { OpenAIResponsesModel } from '@openai/agents';
|
|
12
|
+
/** 构造一个走 Codex(ChatGPT 订阅)的 Responses Model:每请求刷新 token、注鉴权头、store:false、修 SSE。 */
|
|
13
|
+
export declare function buildCodexModel(model: string): OpenAIResponsesModel;
|
|
14
|
+
//# sourceMappingURL=codexModel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codexModel.d.ts","sourceRoot":"","sources":["../../../src/providers/llm/codexModel.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAqDtD,mFAAmF;AACnF,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,oBAAoB,CAgCnE"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module providers/llm/codexModel
|
|
3
|
+
* @description Codex(ChatGPT 订阅)接入 @openai/agents 的 Model 适配器。
|
|
4
|
+
* Codex 私有端点两处特殊:① 必须 store:false;② 流式 response.completed 的 output
|
|
5
|
+
* 是空数组(内容只走 output_item/delta)→ SDK 误判没输出反复重发。
|
|
6
|
+
* 修法:自定义 fetch —— 刷 token + 注鉴权头 + force store:false + 把流式 item 注回 completed.output。
|
|
7
|
+
* (移植自 gameforge codex-model。)
|
|
8
|
+
* @layer provider
|
|
9
|
+
* @boundedContext smartarrange
|
|
10
|
+
*/
|
|
11
|
+
import { OpenAIResponsesModel } from '@openai/agents';
|
|
12
|
+
import OpenAI from 'openai';
|
|
13
|
+
import { CODEX_RESPONSES_BASE, getCodexCreds } from './codexAuth.js';
|
|
14
|
+
/** 把流式 output_item.done 的 item 注入空的 response.completed.output。 */
|
|
15
|
+
function fixCodexSSE(body) {
|
|
16
|
+
const items = [];
|
|
17
|
+
let buf = '';
|
|
18
|
+
const dec = new TextDecoder();
|
|
19
|
+
const enc = new TextEncoder();
|
|
20
|
+
const tr = new TransformStream({
|
|
21
|
+
transform(chunk, ctrl) {
|
|
22
|
+
buf += dec.decode(chunk, { stream: true });
|
|
23
|
+
let i;
|
|
24
|
+
let out = '';
|
|
25
|
+
while ((i = buf.indexOf('\n')) >= 0) {
|
|
26
|
+
const line = buf.slice(0, i);
|
|
27
|
+
buf = buf.slice(i + 1);
|
|
28
|
+
let ol = line;
|
|
29
|
+
if (line.startsWith('data:')) {
|
|
30
|
+
const p = line.slice(5).trim();
|
|
31
|
+
if (p && p !== '[DONE]') {
|
|
32
|
+
try {
|
|
33
|
+
const e = JSON.parse(p);
|
|
34
|
+
if (e.type === 'response.output_item.done' && e.item)
|
|
35
|
+
items.push(e.item);
|
|
36
|
+
if (e.type === 'response.completed' &&
|
|
37
|
+
e.response &&
|
|
38
|
+
(!e.response.output || !e.response.output.length)) {
|
|
39
|
+
e.response.output = items.slice();
|
|
40
|
+
ol = `data: ${JSON.stringify(e)}`;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
catch {
|
|
44
|
+
/* 非 JSON data 行 → 原样透传 */
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
out += `${ol}\n`;
|
|
49
|
+
}
|
|
50
|
+
if (out)
|
|
51
|
+
ctrl.enqueue(enc.encode(out));
|
|
52
|
+
},
|
|
53
|
+
flush(ctrl) {
|
|
54
|
+
if (buf)
|
|
55
|
+
ctrl.enqueue(enc.encode(buf));
|
|
56
|
+
},
|
|
57
|
+
});
|
|
58
|
+
return body.pipeThrough(tr);
|
|
59
|
+
}
|
|
60
|
+
/** 构造一个走 Codex(ChatGPT 订阅)的 Responses Model:每请求刷新 token、注鉴权头、store:false、修 SSE。 */
|
|
61
|
+
export function buildCodexModel(model) {
|
|
62
|
+
const codexFetch = async (url, init) => {
|
|
63
|
+
const creds = await getCodexCreds();
|
|
64
|
+
const headers = new Headers((init?.headers ?? undefined));
|
|
65
|
+
headers.set('authorization', `Bearer ${creds.accessToken}`);
|
|
66
|
+
headers.set('chatgpt-account-id', creds.accountId);
|
|
67
|
+
headers.set('OpenAI-Beta', 'responses=experimental');
|
|
68
|
+
headers.set('originator', 'sps');
|
|
69
|
+
let body = init?.body;
|
|
70
|
+
if (typeof body === 'string') {
|
|
71
|
+
try {
|
|
72
|
+
const b = JSON.parse(body);
|
|
73
|
+
b.store = false;
|
|
74
|
+
body = JSON.stringify(b);
|
|
75
|
+
}
|
|
76
|
+
catch {
|
|
77
|
+
/* keep */
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
const res = await fetch(url, { ...init, headers, body });
|
|
81
|
+
if (!res.ok || !res.body)
|
|
82
|
+
return res;
|
|
83
|
+
return new Response(fixCodexSSE(res.body), {
|
|
84
|
+
status: res.status,
|
|
85
|
+
statusText: res.statusText,
|
|
86
|
+
headers: res.headers,
|
|
87
|
+
});
|
|
88
|
+
};
|
|
89
|
+
const client = new OpenAI({
|
|
90
|
+
baseURL: CODEX_RESPONSES_BASE,
|
|
91
|
+
apiKey: 'codex-subscription',
|
|
92
|
+
fetch: codexFetch,
|
|
93
|
+
});
|
|
94
|
+
return new OpenAIResponsesModel(client, model);
|
|
95
|
+
}
|
|
96
|
+
//# sourceMappingURL=codexModel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codexModel.js","sourceRoot":"","sources":["../../../src/providers/llm/codexModel.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/** 官方 Claude 订阅可用的模型(别名,claude CLI/agent-sdk 认 sonnet/opus/haiku)。 */
|
|
2
|
+
export declare const CLAUDE_SUB_MODELS: string[];
|
|
3
|
+
/** Codex(ChatGPT 订阅)可用的模型。 */
|
|
4
|
+
export declare const CODEX_SUB_MODELS: string[];
|
|
5
|
+
export interface LocalSub {
|
|
6
|
+
available: boolean;
|
|
7
|
+
models: string[];
|
|
8
|
+
/** 订阅类型/模式等说明(展示用);不可用时为原因。 */
|
|
9
|
+
detail: string;
|
|
10
|
+
}
|
|
11
|
+
/** Claude 官方订阅:有 accessToken 且(未过期 或 有 refreshToken 可续)→ 可用。 */
|
|
12
|
+
export declare function detectClaudeSub(): LocalSub;
|
|
13
|
+
/** Codex(ChatGPT 订阅):有 access_token + account_id(过期由 refresh 处理)→ 可用。 */
|
|
14
|
+
export declare function detectCodexSub(): LocalSub;
|
|
15
|
+
//# sourceMappingURL=localSubscription.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"localSubscription.d.ts","sourceRoot":"","sources":["../../../src/providers/llm/localSubscription.ts"],"names":[],"mappings":"AAcA,sEAAsE;AACtE,eAAO,MAAM,iBAAiB,UAA8B,CAAC;AAC7D,8BAA8B;AAC9B,eAAO,MAAM,gBAAgB,UAAgE,CAAC;AAE9F,MAAM,WAAW,QAAQ;IACvB,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,+BAA+B;IAC/B,MAAM,EAAE,MAAM,CAAC;CAChB;AAWD,gEAAgE;AAChE,wBAAgB,eAAe,IAAI,QAAQ,CAe1C;AAED,yEAAyE;AACzE,wBAAgB,cAAc,IAAI,QAAQ,CAiBzC"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module providers/llm/localSubscription
|
|
3
|
+
* @description 读取本机"官方订阅"凭据并验证可用,暴露其可用模型:
|
|
4
|
+
* - Claude 官方订阅:~/.claude/.credentials.json(claudeAiOauth)
|
|
5
|
+
* - Codex(ChatGPT 订阅):~/.codex/auth.json(tokens)
|
|
6
|
+
* "验证可用" = 凭据文件存在 + token 未过期(或有 refresh_token 可续);纯本地、无网络。
|
|
7
|
+
* 只有验证通过才返回 available:true,供控制台/新建项目作为内置可选模型展示。
|
|
8
|
+
* @layer provider
|
|
9
|
+
* @boundedContext smartarrange
|
|
10
|
+
*/
|
|
11
|
+
import { existsSync, readFileSync } from 'node:fs';
|
|
12
|
+
import { homedir } from 'node:os';
|
|
13
|
+
import { join } from 'node:path';
|
|
14
|
+
/** 官方 Claude 订阅可用的模型(别名,claude CLI/agent-sdk 认 sonnet/opus/haiku)。 */
|
|
15
|
+
export const CLAUDE_SUB_MODELS = ['sonnet', 'opus', 'haiku'];
|
|
16
|
+
/** Codex(ChatGPT 订阅)可用的模型。 */
|
|
17
|
+
export const CODEX_SUB_MODELS = ['gpt-5.5', 'gpt-5.4', 'gpt-5.3-mini', 'gpt-5.3-codex-spark'];
|
|
18
|
+
function jwtExpMs(jwt) {
|
|
19
|
+
try {
|
|
20
|
+
const p = JSON.parse(Buffer.from(jwt.split('.')[1], 'base64url').toString());
|
|
21
|
+
return (p.exp || 0) * 1000;
|
|
22
|
+
}
|
|
23
|
+
catch {
|
|
24
|
+
return 0;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
/** Claude 官方订阅:有 accessToken 且(未过期 或 有 refreshToken 可续)→ 可用。 */
|
|
28
|
+
export function detectClaudeSub() {
|
|
29
|
+
const file = join(homedir(), '.claude', '.credentials.json');
|
|
30
|
+
if (!existsSync(file))
|
|
31
|
+
return { available: false, models: [], detail: '未登录(无 .credentials.json)' };
|
|
32
|
+
try {
|
|
33
|
+
const raw = JSON.parse(readFileSync(file, 'utf-8'));
|
|
34
|
+
const o = raw.claudeAiOauth;
|
|
35
|
+
if (!o?.accessToken)
|
|
36
|
+
return { available: false, models: [], detail: '未登录(无 accessToken)' };
|
|
37
|
+
const fresh = typeof o.expiresAt === 'number' && o.expiresAt > Date.now();
|
|
38
|
+
if (!fresh && !o.refreshToken)
|
|
39
|
+
return { available: false, models: [], detail: 'token 已过期且无法续期' };
|
|
40
|
+
return { available: true, models: CLAUDE_SUB_MODELS, detail: o.subscriptionType || 'claude.ai' };
|
|
41
|
+
}
|
|
42
|
+
catch {
|
|
43
|
+
return { available: false, models: [], detail: '凭据解析失败' };
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
/** Codex(ChatGPT 订阅):有 access_token + account_id(过期由 refresh 处理)→ 可用。 */
|
|
47
|
+
export function detectCodexSub() {
|
|
48
|
+
const file = process.env.CODEX_AUTH_FILE || join(homedir(), '.codex', 'auth.json');
|
|
49
|
+
if (!existsSync(file))
|
|
50
|
+
return { available: false, models: [], detail: '未登录(无 auth.json)' };
|
|
51
|
+
try {
|
|
52
|
+
const raw = JSON.parse(readFileSync(file, 'utf-8'));
|
|
53
|
+
const tok = raw.tokens;
|
|
54
|
+
if (!tok?.access_token || !tok.account_id)
|
|
55
|
+
return { available: false, models: [], detail: '未登录(缺 token/account_id)' };
|
|
56
|
+
// access_token 过期但有 refresh_token → 仍可用(getCodexCreds 会自动续)。
|
|
57
|
+
const fresh = jwtExpMs(tok.access_token) > Date.now();
|
|
58
|
+
if (!fresh && !tok.refresh_token)
|
|
59
|
+
return { available: false, models: [], detail: 'token 已过期且无法续期' };
|
|
60
|
+
return { available: true, models: CODEX_SUB_MODELS, detail: raw.auth_mode || 'chatgpt' };
|
|
61
|
+
}
|
|
62
|
+
catch {
|
|
63
|
+
return { available: false, models: [], detail: '凭据解析失败' };
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=localSubscription.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"localSubscription.js","sourceRoot":"","sources":["../../../src/providers/llm/localSubscription.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module providers/llm/modelFactory
|
|
3
|
+
* @description reviewer(OpenAI 兼容)model 工厂——同构 gameforge configureLLM 的 provider 分派:
|
|
4
|
+
* providerId==='codex' → codex-auth 层;否则 → 三方 OpenAI 兼容 API。
|
|
5
|
+
* @layer provider
|
|
6
|
+
* @boundedContext smartarrange
|
|
7
|
+
*/
|
|
8
|
+
import { OpenAIChatCompletionsModel } from '@openai/agents';
|
|
9
|
+
/** 据 reviewer 配置造一个 SDK Model。 */
|
|
10
|
+
export declare function createReviewerModel(cfg: {
|
|
11
|
+
providerId: string;
|
|
12
|
+
model: string;
|
|
13
|
+
}): import("@openai/agents").OpenAIResponsesModel | OpenAIChatCompletionsModel;
|
|
14
|
+
//# sourceMappingURL=modelFactory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"modelFactory.d.ts","sourceRoot":"","sources":["../../../src/providers/llm/modelFactory.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,0BAA0B,EAAE,MAAM,gBAAgB,CAAC;AAK5D,kCAAkC;AAClC,wBAAgB,mBAAmB,CAAC,GAAG,EAAE;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,8EAO7E"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module providers/llm/modelFactory
|
|
3
|
+
* @description reviewer(OpenAI 兼容)model 工厂——同构 gameforge configureLLM 的 provider 分派:
|
|
4
|
+
* providerId==='codex' → codex-auth 层;否则 → 三方 OpenAI 兼容 API。
|
|
5
|
+
* @layer provider
|
|
6
|
+
* @boundedContext smartarrange
|
|
7
|
+
*/
|
|
8
|
+
import { OpenAIChatCompletionsModel } from '@openai/agents';
|
|
9
|
+
import OpenAI from 'openai';
|
|
10
|
+
import { buildCodexModel } from './codexModel.js';
|
|
11
|
+
import { getAgentProvider } from './providers.js';
|
|
12
|
+
/** 据 reviewer 配置造一个 SDK Model。 */
|
|
13
|
+
export function createReviewerModel(cfg) {
|
|
14
|
+
if (cfg.providerId === 'codex')
|
|
15
|
+
return buildCodexModel(cfg.model);
|
|
16
|
+
const p = getAgentProvider(cfg.providerId);
|
|
17
|
+
if (!p)
|
|
18
|
+
throw new Error(`未知 reviewer provider: ${cfg.providerId}(检查 ~/.coral/game-platform/agent-providers.json)`);
|
|
19
|
+
const client = new OpenAI({ baseURL: p.baseUrl.replace(/\/+$/, ''), apiKey: p.apiKey });
|
|
20
|
+
return new OpenAIChatCompletionsModel(client, cfg.model);
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=modelFactory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"modelFactory.js","sourceRoot":"","sources":["../../../src/providers/llm/modelFactory.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,0BAA0B,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAElD,kCAAkC;AAClC,MAAM,UAAU,mBAAmB,CAAC,GAA0C;IAC5E,IAAI,GAAG,CAAC,UAAU,KAAK,OAAO;QAAE,OAAO,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAElE,MAAM,CAAC,GAAG,gBAAgB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAC3C,IAAI,CAAC,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,yBAAyB,GAAG,CAAC,UAAU,kDAAkD,CAAC,CAAC;IACnH,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;IACxF,OAAO,IAAI,0BAA0B,CAAC,MAAe,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;AACpE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"monitorSkills.d.ts","sourceRoot":"","sources":["../../../src/providers/llm/monitorSkills.ts"],"names":[],"mappings":"AAoBA;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CAY7D"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module providers/llm/monitorSkills
|
|
3
|
+
* @description 监工(OpenAI orchestrator)技能池加载器。OpenAI agent 不像 claude 自动发现 SKILL.md,
|
|
4
|
+
* 所以这里把"监工专用 playbook"(探查 SOP / 视觉评分卡)的**正文全量**读出拼进 orchestrator
|
|
5
|
+
* 指令(reviewer 是"推"模型,判据常驻,见 skills-manager-design §3/§5)。
|
|
6
|
+
* 发现/合并复用 `SkillsManager` 的 `monitor-skills` 命名空间:
|
|
7
|
+
* 项目 <cwd>/.sps/monitor-skills > 用户 ~/.coral/agents/monitor-skills > 随包内建。
|
|
8
|
+
* @layer provider
|
|
9
|
+
* @boundedContext smartarrange
|
|
10
|
+
*/
|
|
11
|
+
import { dirname, resolve } from 'node:path';
|
|
12
|
+
import { fileURLToPath } from 'node:url';
|
|
13
|
+
import { SkillsManager } from '../../core/skills/index.js';
|
|
14
|
+
/** 随包内建目录:dist/providers/llm/monitorSkills.js → 包根/monitor-skills。 */
|
|
15
|
+
function bundledDir() {
|
|
16
|
+
const here = dirname(fileURLToPath(import.meta.url));
|
|
17
|
+
return resolve(here, '..', '..', '..', 'monitor-skills');
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* 加载监工技能池**正文**(高优先级源覆盖同名),拼成一段可塞进指令的文本。
|
|
21
|
+
* 无任何技能 → 返回空串(orchestrator 退化到内建基础指令)。
|
|
22
|
+
*/
|
|
23
|
+
export function loadMonitorSkills(projectDir) {
|
|
24
|
+
// 无 projectDir 时用一个不存在的 cwd,使「项目」根落空(只剩 user + bundled),保持原行为。
|
|
25
|
+
const mgr = new SkillsManager({
|
|
26
|
+
cwd: projectDir ?? '/__sps_no_project__',
|
|
27
|
+
bundledMonitorSkillsDir: bundledDir(),
|
|
28
|
+
});
|
|
29
|
+
const bodies = mgr
|
|
30
|
+
.discover('monitor-skills')
|
|
31
|
+
.map((m) => mgr.load(m.name, 'monitor-skills'))
|
|
32
|
+
.filter((b) => Boolean(b));
|
|
33
|
+
if (!bodies.length)
|
|
34
|
+
return '';
|
|
35
|
+
return ['\n\n=== 监工技能手册(务必遵守)===', ...bodies].join('\n\n');
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=monitorSkills.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"monitorSkills.js","sourceRoot":"","sources":["../../../src/providers/llm/monitorSkills.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAE3D,sEAAsE;AACtE,SAAS,UAAU;IACjB,MAAM,IAAI,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IACrD,OAAO,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,gBAAgB,CAAC,CAAC;AAC3D,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,UAAmB;IACnD,+DAA+D;IAC/D,MAAM,GAAG,GAAG,IAAI,aAAa,CAAC;QAC5B,GAAG,EAAE,UAAU,IAAI,qBAAqB;QACxC,uBAAuB,EAAE,UAAU,EAAE;KACtC,CAAC,CAAC;IACH,MAAM,MAAM,GAAG,GAAG;SACf,QAAQ,CAAC,gBAAgB,CAAC;SAC1B,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC;SAC9C,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1C,IAAI,CAAC,MAAM,CAAC,MAAM;QAAE,OAAO,EAAE,CAAC;IAC9B,OAAO,CAAC,yBAAyB,EAAE,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC7D,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export declare function probeTools(cwd: string): (import("@openai/agents").FunctionTool<unknown, z.ZodObject<{
|
|
3
|
+
path: z.ZodString;
|
|
4
|
+
}, z.core.$strip>, string> | import("@openai/agents").FunctionTool<unknown, z.ZodObject<{
|
|
5
|
+
path: z.ZodOptional<z.ZodString>;
|
|
6
|
+
}, z.core.$strip>, string>)[];
|
|
7
|
+
//# sourceMappingURL=probeTools.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"probeTools.d.ts","sourceRoot":"","sources":["../../../src/providers/llm/probeTools.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM;;;;8BA8DrC"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module providers/llm/probeTools
|
|
3
|
+
* @description orchestrator 的**只读探查工具**(SDK function tools)——给监工一双"眼睛"自主探查
|
|
4
|
+
* workspace 产物。全部只读、限 PROJECT_DIR 内,绝不写(写=claude 的活,三权分立)。
|
|
5
|
+
* 工具结果(产物)当轮喂模型但不进持久 session(RuntimeSession 过滤)。
|
|
6
|
+
* @layer provider
|
|
7
|
+
* @boundedContext smartarrange
|
|
8
|
+
*/
|
|
9
|
+
import { execSync } from 'node:child_process';
|
|
10
|
+
import { existsSync, readdirSync, readFileSync, statSync } from 'node:fs';
|
|
11
|
+
import { resolve } from 'node:path';
|
|
12
|
+
import { tool } from '@openai/agents';
|
|
13
|
+
import { z } from 'zod';
|
|
14
|
+
const MAX = 16000; // 单次返回上限,防爆上下文(超出用 offset 分段续读)
|
|
15
|
+
export function probeTools(cwd) {
|
|
16
|
+
const root = resolve(cwd);
|
|
17
|
+
const safe = (p) => {
|
|
18
|
+
const abs = resolve(root, p || '.');
|
|
19
|
+
if (abs !== root && !abs.startsWith(root + '/'))
|
|
20
|
+
throw new Error(`越界:${p} 不在项目目录内`);
|
|
21
|
+
return abs;
|
|
22
|
+
};
|
|
23
|
+
return [
|
|
24
|
+
tool({
|
|
25
|
+
name: 'read_file',
|
|
26
|
+
description: '读项目内一个文件的【全部内容】(只读,不截断)。用于核验产物是否真实存在、内容是否达标。',
|
|
27
|
+
parameters: z.object({ path: z.string().describe('相对项目根的文件路径') }),
|
|
28
|
+
async execute({ path }) {
|
|
29
|
+
try {
|
|
30
|
+
const abs = safe(path);
|
|
31
|
+
if (!existsSync(abs))
|
|
32
|
+
return `(文件不存在: ${path})`;
|
|
33
|
+
// 🔴 不截断返回整文件:旧版 .slice(0,8000) 会把"读到 8000 字符"误当成文件结尾 →
|
|
34
|
+
// 监工把完整文件(如 11KB 的 game.js)误判成"没写完/被截断"→ 冤枉返工陷死循环(深海霸主 15 轮)。
|
|
35
|
+
return readFileSync(abs, 'utf-8');
|
|
36
|
+
}
|
|
37
|
+
catch (e) {
|
|
38
|
+
return `读取失败: ${e instanceof Error ? e.message : String(e)}`;
|
|
39
|
+
}
|
|
40
|
+
},
|
|
41
|
+
}),
|
|
42
|
+
tool({
|
|
43
|
+
name: 'list_dir',
|
|
44
|
+
description: '列项目内目录(只读)。用于了解产物结构、确认文件是否生成。',
|
|
45
|
+
parameters: z.object({ path: z.string().optional().describe('相对路径,默认项目根') }),
|
|
46
|
+
async execute({ path }) {
|
|
47
|
+
try {
|
|
48
|
+
const abs = safe(path ?? '.');
|
|
49
|
+
if (!existsSync(abs))
|
|
50
|
+
return `(目录不存在: ${path})`;
|
|
51
|
+
return readdirSync(abs)
|
|
52
|
+
.map((n) => {
|
|
53
|
+
try {
|
|
54
|
+
return statSync(resolve(abs, n)).isDirectory() ? `${n}/` : n;
|
|
55
|
+
}
|
|
56
|
+
catch {
|
|
57
|
+
return n;
|
|
58
|
+
}
|
|
59
|
+
})
|
|
60
|
+
.join('\n')
|
|
61
|
+
.slice(0, MAX);
|
|
62
|
+
}
|
|
63
|
+
catch (e) {
|
|
64
|
+
return `列目录失败: ${e instanceof Error ? e.message : String(e)}`;
|
|
65
|
+
}
|
|
66
|
+
},
|
|
67
|
+
}),
|
|
68
|
+
tool({
|
|
69
|
+
name: 'git_diff',
|
|
70
|
+
description: '看工作区相对上次提交的改动(git diff)。用于审查上一卡到底改了什么。',
|
|
71
|
+
parameters: z.object({}),
|
|
72
|
+
async execute() {
|
|
73
|
+
try {
|
|
74
|
+
const out = execSync('git diff HEAD', { cwd: root, encoding: 'utf-8', maxBuffer: 4 * 1024 * 1024 });
|
|
75
|
+
return out.slice(0, MAX) || '(工作区无改动)';
|
|
76
|
+
}
|
|
77
|
+
catch (e) {
|
|
78
|
+
return `git diff 失败: ${e instanceof Error ? e.message : String(e)}`;
|
|
79
|
+
}
|
|
80
|
+
},
|
|
81
|
+
}),
|
|
82
|
+
];
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=probeTools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"probeTools.js","sourceRoot":"","sources":["../../../src/providers/llm/probeTools.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC1E,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AACtC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,gCAAgC;AAEnD,MAAM,UAAU,UAAU,CAAC,GAAW;IACpC,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IAC1B,MAAM,IAAI,GAAG,CAAC,CAAS,EAAU,EAAE;QACjC,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,IAAI,GAAG,CAAC,CAAC;QACpC,IAAI,GAAG,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,GAAG,GAAG,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QACpF,OAAO,GAAG,CAAC;IACb,CAAC,CAAC;IAEF,OAAO;QACL,IAAI,CAAC;YACH,IAAI,EAAE,WAAW;YACjB,WAAW,EAAE,8CAA8C;YAC3D,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;YACjE,KAAK,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE;gBACpB,IAAI,CAAC;oBACH,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;oBACvB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;wBAAE,OAAO,WAAW,IAAI,GAAG,CAAC;oBAChD,wDAAwD;oBACxD,iEAAiE;oBACjE,OAAO,YAAY,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;gBACpC,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC;oBACX,OAAO,SAAS,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC/D,CAAC;YACH,CAAC;SACF,CAAC;QACF,IAAI,CAAC;YACH,IAAI,EAAE,UAAU;YAChB,WAAW,EAAE,+BAA+B;YAC5C,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;YAC5E,KAAK,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE;gBACpB,IAAI,CAAC;oBACH,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC;oBAC9B,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;wBAAE,OAAO,WAAW,IAAI,GAAG,CAAC;oBAChD,OAAO,WAAW,CAAC,GAAG,CAAC;yBACpB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;wBACT,IAAI,CAAC;4BACH,OAAO,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;wBAC/D,CAAC;wBAAC,MAAM,CAAC;4BACP,OAAO,CAAC,CAAC;wBACX,CAAC;oBACH,CAAC,CAAC;yBACD,IAAI,CAAC,IAAI,CAAC;yBACV,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;gBACnB,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC;oBACX,OAAO,UAAU,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;gBAChE,CAAC;YACH,CAAC;SACF,CAAC;QACF,IAAI,CAAC;YACH,IAAI,EAAE,UAAU;YAChB,WAAW,EAAE,wCAAwC;YACrD,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;YACxB,KAAK,CAAC,OAAO;gBACX,IAAI,CAAC;oBACH,MAAM,GAAG,GAAG,QAAQ,CAAC,eAAe,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,GAAG,IAAI,GAAG,IAAI,EAAE,CAAC,CAAC;oBACpG,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,UAAU,CAAC;gBACzC,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC;oBACX,OAAO,gBAAgB,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;gBACtE,CAAC;YACH,CAAC;SACF,CAAC;KACH,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
export interface ProviderEntry {
|
|
2
|
+
id: string;
|
|
3
|
+
name: string;
|
|
4
|
+
baseUrl: string;
|
|
5
|
+
apiKey: string;
|
|
6
|
+
models: string[];
|
|
7
|
+
/** gameforge 可能写的额外字段(createdAt 等);保留不丢。 */
|
|
8
|
+
[extra: string]: unknown;
|
|
9
|
+
}
|
|
10
|
+
/** 'anthropic' = worker/claude(providers.json);'openai' = reviewer/openai agent(agent-providers.json)。 */
|
|
11
|
+
export type ProviderKind = 'anthropic' | 'openai';
|
|
12
|
+
/** 列某类全部 provider。 */
|
|
13
|
+
export declare function listProviders(kind: ProviderKind): ProviderEntry[];
|
|
14
|
+
/** 新增或按 id 覆盖一个 provider(写共享 json,与 gameforge 同位置)。 */
|
|
15
|
+
export declare function upsertProvider(kind: ProviderKind, entry: ProviderEntry): void;
|
|
16
|
+
/** 按 id 删除一个 provider。返回是否删到。 */
|
|
17
|
+
export declare function deleteProvider(kind: ProviderKind, id: string): boolean;
|
|
18
|
+
/** OpenAI 兼容 provider(reviewer 用)。 */
|
|
19
|
+
export declare function getAgentProvider(id: string): ProviderEntry | undefined;
|
|
20
|
+
/** Anthropic 兼容 provider(worker 用)。 */
|
|
21
|
+
export declare function getProvider(id: string): ProviderEntry | undefined;
|
|
22
|
+
/** 列全部 OpenAI 兼容 provider(reviewer 候选)。 */
|
|
23
|
+
export declare function listAgentProviders(): ProviderEntry[];
|
|
24
|
+
/** 列全部 Anthropic 兼容 provider(worker 候选)。 */
|
|
25
|
+
export declare function listAnthropicProviders(): ProviderEntry[];
|
|
26
|
+
//# sourceMappingURL=providers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"providers.d.ts","sourceRoot":"","sources":["../../../src/providers/llm/providers.ts"],"names":[],"mappings":"AAYA,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,4CAA4C;IAC5C,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;CAC1B;AAED,0GAA0G;AAC1G,MAAM,MAAM,YAAY,GAAG,WAAW,GAAG,QAAQ,CAAC;AAelD,sBAAsB;AACtB,wBAAgB,aAAa,CAAC,IAAI,EAAE,YAAY,GAAG,aAAa,EAAE,CAEjE;AAED,uDAAuD;AACvD,wBAAgB,cAAc,CAAC,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,aAAa,GAAG,IAAI,CAS7E;AAED,iCAAiC;AACjC,wBAAgB,cAAc,CAAC,IAAI,EAAE,YAAY,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAQtE;AAED,sCAAsC;AACtC,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS,CAEtE;AAED,uCAAuC;AACvC,wBAAgB,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS,CAEjE;AAED,2CAA2C;AAC3C,wBAAgB,kBAAkB,IAAI,aAAa,EAAE,CAEpD;AAED,4CAA4C;AAC5C,wBAAgB,sBAAsB,IAAI,aAAa,EAAE,CAExD"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module providers/llm/providers
|
|
3
|
+
* @description 读共享的三方兼容 provider 配置(与 gameforge 同位置,不依赖其代码):
|
|
4
|
+
* - agent-providers.json = OpenAI 兼容(给 reviewer / openai agent)
|
|
5
|
+
* - providers.json = Anthropic 兼容(给 worker / claude)
|
|
6
|
+
* @layer provider
|
|
7
|
+
* @boundedContext smartarrange
|
|
8
|
+
*/
|
|
9
|
+
import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';
|
|
10
|
+
import { homedir } from 'node:os';
|
|
11
|
+
import { dirname, join } from 'node:path';
|
|
12
|
+
function fileFor(kind) {
|
|
13
|
+
return join(homedir(), '.coral', 'game-platform', kind === 'anthropic' ? 'providers.json' : 'agent-providers.json');
|
|
14
|
+
}
|
|
15
|
+
function readProviders(file) {
|
|
16
|
+
const p = join(homedir(), '.coral', 'game-platform', file);
|
|
17
|
+
try {
|
|
18
|
+
return existsSync(p) ? JSON.parse(readFileSync(p, 'utf-8')) : [];
|
|
19
|
+
}
|
|
20
|
+
catch {
|
|
21
|
+
return [];
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
/** 列某类全部 provider。 */
|
|
25
|
+
export function listProviders(kind) {
|
|
26
|
+
return readProviders(kind === 'anthropic' ? 'providers.json' : 'agent-providers.json');
|
|
27
|
+
}
|
|
28
|
+
/** 新增或按 id 覆盖一个 provider(写共享 json,与 gameforge 同位置)。 */
|
|
29
|
+
export function upsertProvider(kind, entry) {
|
|
30
|
+
const list = listProviders(kind);
|
|
31
|
+
const i = list.findIndex((x) => x.id === entry.id);
|
|
32
|
+
// 更新:合并保留既有额外字段(createdAt 等);新增:打 createdAt。
|
|
33
|
+
if (i >= 0)
|
|
34
|
+
list[i] = { ...list[i], ...entry };
|
|
35
|
+
else
|
|
36
|
+
list.push({ createdAt: new Date().toISOString(), ...entry });
|
|
37
|
+
const p = fileFor(kind);
|
|
38
|
+
mkdirSync(dirname(p), { recursive: true });
|
|
39
|
+
writeFileSync(p, JSON.stringify(list, null, 2));
|
|
40
|
+
}
|
|
41
|
+
/** 按 id 删除一个 provider。返回是否删到。 */
|
|
42
|
+
export function deleteProvider(kind, id) {
|
|
43
|
+
const list = listProviders(kind);
|
|
44
|
+
const next = list.filter((x) => x.id !== id);
|
|
45
|
+
if (next.length === list.length)
|
|
46
|
+
return false;
|
|
47
|
+
const p = fileFor(kind);
|
|
48
|
+
mkdirSync(dirname(p), { recursive: true });
|
|
49
|
+
writeFileSync(p, JSON.stringify(next, null, 2));
|
|
50
|
+
return true;
|
|
51
|
+
}
|
|
52
|
+
/** OpenAI 兼容 provider(reviewer 用)。 */
|
|
53
|
+
export function getAgentProvider(id) {
|
|
54
|
+
return readProviders('agent-providers.json').find((x) => x.id === id);
|
|
55
|
+
}
|
|
56
|
+
/** Anthropic 兼容 provider(worker 用)。 */
|
|
57
|
+
export function getProvider(id) {
|
|
58
|
+
return readProviders('providers.json').find((x) => x.id === id);
|
|
59
|
+
}
|
|
60
|
+
/** 列全部 OpenAI 兼容 provider(reviewer 候选)。 */
|
|
61
|
+
export function listAgentProviders() {
|
|
62
|
+
return readProviders('agent-providers.json');
|
|
63
|
+
}
|
|
64
|
+
/** 列全部 Anthropic 兼容 provider(worker 候选)。 */
|
|
65
|
+
export function listAnthropicProviders() {
|
|
66
|
+
return readProviders('providers.json');
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=providers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"providers.js","sourceRoot":"","sources":["../../../src/providers/llm/providers.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
/** cwd = 会话/项目工作目录(决定项目级 .sps/skills);无 cwd → 只读全局 HQ(~/.coral/skills)。 */
|
|
3
|
+
export declare function skillTools(cwd?: string): import("@openai/agents").FunctionTool<unknown, z.ZodObject<{}, z.core.$strip>, string>[];
|
|
4
|
+
//# sourceMappingURL=skillTools.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skillTools.d.ts","sourceRoot":"","sources":["../../../src/providers/llm/skillTools.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,2EAA2E;AAC3E,wBAAgB,UAAU,CAAC,GAAG,CAAC,EAAE,MAAM,4FA4BtC"}
|