@stoneforge/smithy 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +13 -0
- package/README.md +114 -0
- package/dist/api/index.d.ts +7 -0
- package/dist/api/index.d.ts.map +1 -0
- package/dist/api/index.js +7 -0
- package/dist/api/index.js.map +1 -0
- package/dist/api/orchestrator-api.d.ts +153 -0
- package/dist/api/orchestrator-api.d.ts.map +1 -0
- package/dist/api/orchestrator-api.js +374 -0
- package/dist/api/orchestrator-api.js.map +1 -0
- package/dist/bin/sf.d.ts +3 -0
- package/dist/bin/sf.d.ts.map +1 -0
- package/dist/bin/sf.js +10 -0
- package/dist/bin/sf.js.map +1 -0
- package/dist/cli/commands/agent.d.ts +20 -0
- package/dist/cli/commands/agent.d.ts.map +1 -0
- package/dist/cli/commands/agent.js +861 -0
- package/dist/cli/commands/agent.js.map +1 -0
- package/dist/cli/commands/daemon.d.ts +14 -0
- package/dist/cli/commands/daemon.d.ts.map +1 -0
- package/dist/cli/commands/daemon.js +272 -0
- package/dist/cli/commands/daemon.js.map +1 -0
- package/dist/cli/commands/dispatch.d.ts +9 -0
- package/dist/cli/commands/dispatch.d.ts.map +1 -0
- package/dist/cli/commands/dispatch.js +128 -0
- package/dist/cli/commands/dispatch.js.map +1 -0
- package/dist/cli/commands/merge.d.ts +11 -0
- package/dist/cli/commands/merge.d.ts.map +1 -0
- package/dist/cli/commands/merge.js +246 -0
- package/dist/cli/commands/merge.js.map +1 -0
- package/dist/cli/commands/pool.d.ts +21 -0
- package/dist/cli/commands/pool.d.ts.map +1 -0
- package/dist/cli/commands/pool.js +762 -0
- package/dist/cli/commands/pool.js.map +1 -0
- package/dist/cli/commands/serve.d.ts +54 -0
- package/dist/cli/commands/serve.d.ts.map +1 -0
- package/dist/cli/commands/serve.js +57 -0
- package/dist/cli/commands/serve.js.map +1 -0
- package/dist/cli/commands/task.d.ts +36 -0
- package/dist/cli/commands/task.d.ts.map +1 -0
- package/dist/cli/commands/task.js +889 -0
- package/dist/cli/commands/task.js.map +1 -0
- package/dist/cli/commands/test-orchestration.d.ts +32 -0
- package/dist/cli/commands/test-orchestration.d.ts.map +1 -0
- package/dist/cli/commands/test-orchestration.js +392 -0
- package/dist/cli/commands/test-orchestration.js.map +1 -0
- package/dist/cli/index.d.ts +13 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +15 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/plugin.d.ts +23 -0
- package/dist/cli/plugin.d.ts.map +1 -0
- package/dist/cli/plugin.js +36 -0
- package/dist/cli/plugin.js.map +1 -0
- package/dist/git/index.d.ts +10 -0
- package/dist/git/index.d.ts.map +1 -0
- package/dist/git/index.js +12 -0
- package/dist/git/index.js.map +1 -0
- package/dist/git/merge.d.ts +79 -0
- package/dist/git/merge.d.ts.map +1 -0
- package/dist/git/merge.js +254 -0
- package/dist/git/merge.js.map +1 -0
- package/dist/git/worktree-manager.d.ts +299 -0
- package/dist/git/worktree-manager.d.ts.map +1 -0
- package/dist/git/worktree-manager.js +744 -0
- package/dist/git/worktree-manager.js.map +1 -0
- package/dist/index.d.ts +24 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +31 -0
- package/dist/index.js.map +1 -0
- package/dist/prompts/director.md +272 -0
- package/dist/prompts/index.d.ts +100 -0
- package/dist/prompts/index.d.ts.map +1 -0
- package/dist/prompts/index.js +294 -0
- package/dist/prompts/index.js.map +1 -0
- package/dist/prompts/message-triage.md +50 -0
- package/dist/prompts/persistent-worker.md +240 -0
- package/dist/prompts/steward-base.md +64 -0
- package/dist/prompts/steward-docs.md +118 -0
- package/dist/prompts/steward-health.md +39 -0
- package/dist/prompts/steward-merge.md +168 -0
- package/dist/prompts/steward-ops.md +28 -0
- package/dist/prompts/steward-reminder.md +26 -0
- package/dist/prompts/worker.md +282 -0
- package/dist/providers/claude/headless.d.ts +18 -0
- package/dist/providers/claude/headless.d.ts.map +1 -0
- package/dist/providers/claude/headless.js +307 -0
- package/dist/providers/claude/headless.js.map +1 -0
- package/dist/providers/claude/index.d.ts +24 -0
- package/dist/providers/claude/index.d.ts.map +1 -0
- package/dist/providers/claude/index.js +80 -0
- package/dist/providers/claude/index.js.map +1 -0
- package/dist/providers/claude/interactive.d.ts +21 -0
- package/dist/providers/claude/interactive.d.ts.map +1 -0
- package/dist/providers/claude/interactive.js +142 -0
- package/dist/providers/claude/interactive.js.map +1 -0
- package/dist/providers/codex/event-mapper.d.ts +91 -0
- package/dist/providers/codex/event-mapper.d.ts.map +1 -0
- package/dist/providers/codex/event-mapper.js +299 -0
- package/dist/providers/codex/event-mapper.js.map +1 -0
- package/dist/providers/codex/headless.d.ts +20 -0
- package/dist/providers/codex/headless.d.ts.map +1 -0
- package/dist/providers/codex/headless.js +174 -0
- package/dist/providers/codex/headless.js.map +1 -0
- package/dist/providers/codex/index.d.ts +30 -0
- package/dist/providers/codex/index.d.ts.map +1 -0
- package/dist/providers/codex/index.js +55 -0
- package/dist/providers/codex/index.js.map +1 -0
- package/dist/providers/codex/interactive.d.ts +21 -0
- package/dist/providers/codex/interactive.d.ts.map +1 -0
- package/dist/providers/codex/interactive.js +141 -0
- package/dist/providers/codex/interactive.js.map +1 -0
- package/dist/providers/codex/jsonrpc-client.d.ts +52 -0
- package/dist/providers/codex/jsonrpc-client.d.ts.map +1 -0
- package/dist/providers/codex/jsonrpc-client.js +141 -0
- package/dist/providers/codex/jsonrpc-client.js.map +1 -0
- package/dist/providers/codex/server-manager.d.ts +100 -0
- package/dist/providers/codex/server-manager.d.ts.map +1 -0
- package/dist/providers/codex/server-manager.js +153 -0
- package/dist/providers/codex/server-manager.js.map +1 -0
- package/dist/providers/index.d.ts +15 -0
- package/dist/providers/index.d.ts.map +1 -0
- package/dist/providers/index.js +19 -0
- package/dist/providers/index.js.map +1 -0
- package/dist/providers/opencode/async-queue.d.ts +21 -0
- package/dist/providers/opencode/async-queue.d.ts.map +1 -0
- package/dist/providers/opencode/async-queue.js +51 -0
- package/dist/providers/opencode/async-queue.js.map +1 -0
- package/dist/providers/opencode/event-mapper.d.ts +132 -0
- package/dist/providers/opencode/event-mapper.d.ts.map +1 -0
- package/dist/providers/opencode/event-mapper.js +204 -0
- package/dist/providers/opencode/event-mapper.js.map +1 -0
- package/dist/providers/opencode/headless.d.ts +25 -0
- package/dist/providers/opencode/headless.d.ts.map +1 -0
- package/dist/providers/opencode/headless.js +190 -0
- package/dist/providers/opencode/headless.js.map +1 -0
- package/dist/providers/opencode/index.d.ts +33 -0
- package/dist/providers/opencode/index.d.ts.map +1 -0
- package/dist/providers/opencode/index.js +42 -0
- package/dist/providers/opencode/index.js.map +1 -0
- package/dist/providers/opencode/interactive.d.ts +21 -0
- package/dist/providers/opencode/interactive.d.ts.map +1 -0
- package/dist/providers/opencode/interactive.js +135 -0
- package/dist/providers/opencode/interactive.js.map +1 -0
- package/dist/providers/opencode/server-manager.d.ts +145 -0
- package/dist/providers/opencode/server-manager.d.ts.map +1 -0
- package/dist/providers/opencode/server-manager.js +163 -0
- package/dist/providers/opencode/server-manager.js.map +1 -0
- package/dist/providers/registry.d.ts +38 -0
- package/dist/providers/registry.d.ts.map +1 -0
- package/dist/providers/registry.js +82 -0
- package/dist/providers/registry.js.map +1 -0
- package/dist/providers/types.d.ts +144 -0
- package/dist/providers/types.d.ts.map +1 -0
- package/dist/providers/types.js +25 -0
- package/dist/providers/types.js.map +1 -0
- package/dist/runtime/event-utils.d.ts +8 -0
- package/dist/runtime/event-utils.d.ts.map +1 -0
- package/dist/runtime/event-utils.js +23 -0
- package/dist/runtime/event-utils.js.map +1 -0
- package/dist/runtime/handoff.d.ts +195 -0
- package/dist/runtime/handoff.d.ts.map +1 -0
- package/dist/runtime/handoff.js +332 -0
- package/dist/runtime/handoff.js.map +1 -0
- package/dist/runtime/index.d.ts +17 -0
- package/dist/runtime/index.d.ts.map +1 -0
- package/dist/runtime/index.js +60 -0
- package/dist/runtime/index.js.map +1 -0
- package/dist/runtime/message-mapper.d.ts +99 -0
- package/dist/runtime/message-mapper.d.ts.map +1 -0
- package/dist/runtime/message-mapper.js +202 -0
- package/dist/runtime/message-mapper.js.map +1 -0
- package/dist/runtime/predecessor-query.d.ts +212 -0
- package/dist/runtime/predecessor-query.d.ts.map +1 -0
- package/dist/runtime/predecessor-query.js +283 -0
- package/dist/runtime/predecessor-query.js.map +1 -0
- package/dist/runtime/session-manager.d.ts +466 -0
- package/dist/runtime/session-manager.d.ts.map +1 -0
- package/dist/runtime/session-manager.js +986 -0
- package/dist/runtime/session-manager.js.map +1 -0
- package/dist/runtime/spawner.d.ts +407 -0
- package/dist/runtime/spawner.d.ts.map +1 -0
- package/dist/runtime/spawner.js +781 -0
- package/dist/runtime/spawner.js.map +1 -0
- package/dist/server/config.d.ts +22 -0
- package/dist/server/config.d.ts.map +1 -0
- package/dist/server/config.js +59 -0
- package/dist/server/config.js.map +1 -0
- package/dist/server/daemon-state.d.ts +50 -0
- package/dist/server/daemon-state.d.ts.map +1 -0
- package/dist/server/daemon-state.js +100 -0
- package/dist/server/daemon-state.js.map +1 -0
- package/dist/server/events-websocket.d.ts +32 -0
- package/dist/server/events-websocket.d.ts.map +1 -0
- package/dist/server/events-websocket.js +96 -0
- package/dist/server/events-websocket.js.map +1 -0
- package/dist/server/formatters.d.ts +94 -0
- package/dist/server/formatters.d.ts.map +1 -0
- package/dist/server/formatters.js +142 -0
- package/dist/server/formatters.js.map +1 -0
- package/dist/server/index.d.ts +17 -0
- package/dist/server/index.d.ts.map +1 -0
- package/dist/server/index.js +153 -0
- package/dist/server/index.js.map +1 -0
- package/dist/server/lsp-websocket.d.ts +33 -0
- package/dist/server/lsp-websocket.d.ts.map +1 -0
- package/dist/server/lsp-websocket.js +161 -0
- package/dist/server/lsp-websocket.js.map +1 -0
- package/dist/server/routes/agents.d.ts +9 -0
- package/dist/server/routes/agents.d.ts.map +1 -0
- package/dist/server/routes/agents.js +369 -0
- package/dist/server/routes/agents.js.map +1 -0
- package/dist/server/routes/daemon.d.ts +13 -0
- package/dist/server/routes/daemon.d.ts.map +1 -0
- package/dist/server/routes/daemon.js +187 -0
- package/dist/server/routes/daemon.js.map +1 -0
- package/dist/server/routes/events.d.ts +23 -0
- package/dist/server/routes/events.d.ts.map +1 -0
- package/dist/server/routes/events.js +282 -0
- package/dist/server/routes/events.js.map +1 -0
- package/dist/server/routes/extensions.d.ts +9 -0
- package/dist/server/routes/extensions.d.ts.map +1 -0
- package/dist/server/routes/extensions.js +202 -0
- package/dist/server/routes/extensions.js.map +1 -0
- package/dist/server/routes/health.d.ts +7 -0
- package/dist/server/routes/health.d.ts.map +1 -0
- package/dist/server/routes/health.js +33 -0
- package/dist/server/routes/health.js.map +1 -0
- package/dist/server/routes/index.d.ts +21 -0
- package/dist/server/routes/index.d.ts.map +1 -0
- package/dist/server/routes/index.js +21 -0
- package/dist/server/routes/index.js.map +1 -0
- package/dist/server/routes/lsp.d.ts +9 -0
- package/dist/server/routes/lsp.d.ts.map +1 -0
- package/dist/server/routes/lsp.js +50 -0
- package/dist/server/routes/lsp.js.map +1 -0
- package/dist/server/routes/plugins.d.ts +9 -0
- package/dist/server/routes/plugins.d.ts.map +1 -0
- package/dist/server/routes/plugins.js +109 -0
- package/dist/server/routes/plugins.js.map +1 -0
- package/dist/server/routes/pools.d.ts +9 -0
- package/dist/server/routes/pools.d.ts.map +1 -0
- package/dist/server/routes/pools.js +189 -0
- package/dist/server/routes/pools.js.map +1 -0
- package/dist/server/routes/scheduler.d.ts +9 -0
- package/dist/server/routes/scheduler.d.ts.map +1 -0
- package/dist/server/routes/scheduler.js +162 -0
- package/dist/server/routes/scheduler.js.map +1 -0
- package/dist/server/routes/sessions.d.ts +27 -0
- package/dist/server/routes/sessions.d.ts.map +1 -0
- package/dist/server/routes/sessions.js +773 -0
- package/dist/server/routes/sessions.js.map +1 -0
- package/dist/server/routes/tasks.d.ts +9 -0
- package/dist/server/routes/tasks.d.ts.map +1 -0
- package/dist/server/routes/tasks.js +954 -0
- package/dist/server/routes/tasks.js.map +1 -0
- package/dist/server/routes/upload.d.ts +8 -0
- package/dist/server/routes/upload.d.ts.map +1 -0
- package/dist/server/routes/upload.js +40 -0
- package/dist/server/routes/upload.js.map +1 -0
- package/dist/server/routes/workflows.d.ts +9 -0
- package/dist/server/routes/workflows.d.ts.map +1 -0
- package/dist/server/routes/workflows.js +532 -0
- package/dist/server/routes/workflows.js.map +1 -0
- package/dist/server/routes/workspace-files.d.ts +12 -0
- package/dist/server/routes/workspace-files.d.ts.map +1 -0
- package/dist/server/routes/workspace-files.js +520 -0
- package/dist/server/routes/workspace-files.js.map +1 -0
- package/dist/server/routes/worktrees.d.ts +9 -0
- package/dist/server/routes/worktrees.d.ts.map +1 -0
- package/dist/server/routes/worktrees.js +94 -0
- package/dist/server/routes/worktrees.js.map +1 -0
- package/dist/server/server.d.ts +14 -0
- package/dist/server/server.d.ts.map +1 -0
- package/dist/server/server.js +258 -0
- package/dist/server/server.js.map +1 -0
- package/dist/server/services/lsp-manager.d.ts +93 -0
- package/dist/server/services/lsp-manager.d.ts.map +1 -0
- package/dist/server/services/lsp-manager.js +291 -0
- package/dist/server/services/lsp-manager.js.map +1 -0
- package/dist/server/services/session-messages.d.ts +61 -0
- package/dist/server/services/session-messages.d.ts.map +1 -0
- package/dist/server/services/session-messages.js +101 -0
- package/dist/server/services/session-messages.js.map +1 -0
- package/dist/server/services.d.ts +35 -0
- package/dist/server/services.d.ts.map +1 -0
- package/dist/server/services.js +159 -0
- package/dist/server/services.js.map +1 -0
- package/dist/server/static.d.ts +18 -0
- package/dist/server/static.d.ts.map +1 -0
- package/dist/server/static.js +71 -0
- package/dist/server/static.js.map +1 -0
- package/dist/server/types.d.ts +20 -0
- package/dist/server/types.d.ts.map +1 -0
- package/dist/server/types.js +7 -0
- package/dist/server/types.js.map +1 -0
- package/dist/server/websocket.d.ts +16 -0
- package/dist/server/websocket.d.ts.map +1 -0
- package/dist/server/websocket.js +143 -0
- package/dist/server/websocket.js.map +1 -0
- package/dist/services/agent-pool-service.d.ts +181 -0
- package/dist/services/agent-pool-service.d.ts.map +1 -0
- package/dist/services/agent-pool-service.js +590 -0
- package/dist/services/agent-pool-service.js.map +1 -0
- package/dist/services/agent-registry.d.ts +185 -0
- package/dist/services/agent-registry.d.ts.map +1 -0
- package/dist/services/agent-registry.js +432 -0
- package/dist/services/agent-registry.js.map +1 -0
- package/dist/services/dispatch-daemon.d.ts +429 -0
- package/dist/services/dispatch-daemon.d.ts.map +1 -0
- package/dist/services/dispatch-daemon.js +1833 -0
- package/dist/services/dispatch-daemon.js.map +1 -0
- package/dist/services/dispatch-service.d.ts +148 -0
- package/dist/services/dispatch-service.d.ts.map +1 -0
- package/dist/services/dispatch-service.js +170 -0
- package/dist/services/dispatch-service.js.map +1 -0
- package/dist/services/docs-steward-service.d.ts +199 -0
- package/dist/services/docs-steward-service.d.ts.map +1 -0
- package/dist/services/docs-steward-service.js +599 -0
- package/dist/services/docs-steward-service.js.map +1 -0
- package/dist/services/health-steward-service.d.ts +446 -0
- package/dist/services/health-steward-service.d.ts.map +1 -0
- package/dist/services/health-steward-service.js +866 -0
- package/dist/services/health-steward-service.js.map +1 -0
- package/dist/services/index.d.ts +26 -0
- package/dist/services/index.d.ts.map +1 -0
- package/dist/services/index.js +111 -0
- package/dist/services/index.js.map +1 -0
- package/dist/services/merge-request-provider.d.ts +59 -0
- package/dist/services/merge-request-provider.d.ts.map +1 -0
- package/dist/services/merge-request-provider.js +89 -0
- package/dist/services/merge-request-provider.js.map +1 -0
- package/dist/services/merge-steward-service.d.ts +268 -0
- package/dist/services/merge-steward-service.d.ts.map +1 -0
- package/dist/services/merge-steward-service.js +568 -0
- package/dist/services/merge-steward-service.js.map +1 -0
- package/dist/services/plugin-executor.d.ts +247 -0
- package/dist/services/plugin-executor.d.ts.map +1 -0
- package/dist/services/plugin-executor.js +451 -0
- package/dist/services/plugin-executor.js.map +1 -0
- package/dist/services/role-definition-service.d.ts +117 -0
- package/dist/services/role-definition-service.d.ts.map +1 -0
- package/dist/services/role-definition-service.js +289 -0
- package/dist/services/role-definition-service.js.map +1 -0
- package/dist/services/steward-scheduler.d.ts +336 -0
- package/dist/services/steward-scheduler.d.ts.map +1 -0
- package/dist/services/steward-scheduler.js +732 -0
- package/dist/services/steward-scheduler.js.map +1 -0
- package/dist/services/task-assignment-service.d.ts +291 -0
- package/dist/services/task-assignment-service.d.ts.map +1 -0
- package/dist/services/task-assignment-service.js +454 -0
- package/dist/services/task-assignment-service.js.map +1 -0
- package/dist/services/worker-task-service.d.ts +202 -0
- package/dist/services/worker-task-service.d.ts.map +1 -0
- package/dist/services/worker-task-service.js +228 -0
- package/dist/services/worker-task-service.js.map +1 -0
- package/dist/testing/index.d.ts +13 -0
- package/dist/testing/index.d.ts.map +1 -0
- package/dist/testing/index.js +17 -0
- package/dist/testing/index.js.map +1 -0
- package/dist/testing/orchestration-tests.d.ts +62 -0
- package/dist/testing/orchestration-tests.d.ts.map +1 -0
- package/dist/testing/orchestration-tests.js +1115 -0
- package/dist/testing/orchestration-tests.js.map +1 -0
- package/dist/testing/test-context.d.ts +171 -0
- package/dist/testing/test-context.d.ts.map +1 -0
- package/dist/testing/test-context.js +665 -0
- package/dist/testing/test-context.js.map +1 -0
- package/dist/testing/test-prompts.d.ts +46 -0
- package/dist/testing/test-prompts.d.ts.map +1 -0
- package/dist/testing/test-prompts.js +140 -0
- package/dist/testing/test-prompts.js.map +1 -0
- package/dist/testing/test-utils.d.ts +200 -0
- package/dist/testing/test-utils.d.ts.map +1 -0
- package/dist/testing/test-utils.js +378 -0
- package/dist/testing/test-utils.js.map +1 -0
- package/dist/types/agent-pool.d.ts +215 -0
- package/dist/types/agent-pool.d.ts.map +1 -0
- package/dist/types/agent-pool.js +143 -0
- package/dist/types/agent-pool.js.map +1 -0
- package/dist/types/agent.d.ts +265 -0
- package/dist/types/agent.d.ts.map +1 -0
- package/dist/types/agent.js +127 -0
- package/dist/types/agent.js.map +1 -0
- package/dist/types/index.d.ts +11 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +40 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/message-types.d.ts +294 -0
- package/dist/types/message-types.d.ts.map +1 -0
- package/dist/types/message-types.js +354 -0
- package/dist/types/message-types.js.map +1 -0
- package/dist/types/role-definition.d.ts +272 -0
- package/dist/types/role-definition.d.ts.map +1 -0
- package/dist/types/role-definition.js +144 -0
- package/dist/types/role-definition.js.map +1 -0
- package/dist/types/task-meta.d.ts +248 -0
- package/dist/types/task-meta.d.ts.map +1 -0
- package/dist/types/task-meta.js +213 -0
- package/dist/types/task-meta.js.map +1 -0
- package/package.json +120 -0
- package/web/assets/abap-BrgZPUOV.js +6 -0
- package/web/assets/apex-DyP6w7ZV.js +6 -0
- package/web/assets/azcli-BaLxmfj-.js +6 -0
- package/web/assets/bat-CFOPXBzS.js +6 -0
- package/web/assets/bicep-BfEKNvv3.js +7 -0
- package/web/assets/cameligo-BFG1Mk7z.js +6 -0
- package/web/assets/clojure-DTECt2xU.js +6 -0
- package/web/assets/codicon-DCmgc-ay.ttf +0 -0
- package/web/assets/coffee-CDGzqUPQ.js +6 -0
- package/web/assets/cpp-CLLBncYj.js +6 -0
- package/web/assets/csharp-dUCx_-0o.js +6 -0
- package/web/assets/csp-5Rap-vPy.js +6 -0
- package/web/assets/css-D3h14YRZ.js +8 -0
- package/web/assets/cssMode-DMo-5YLA.js +9 -0
- package/web/assets/cypher-DrQuvNYM.js +6 -0
- package/web/assets/dart-CFKIUWau.js +6 -0
- package/web/assets/dockerfile-Zznr-cwX.js +6 -0
- package/web/assets/ecl-Ce3n6wWz.js +6 -0
- package/web/assets/elixir-deUWdS0T.js +6 -0
- package/web/assets/flow9-i9-g7ZhI.js +6 -0
- package/web/assets/freemarker2-D4qgkQzN.js +8 -0
- package/web/assets/fsharp-CzKuDChf.js +6 -0
- package/web/assets/go-Cphgjts3.js +6 -0
- package/web/assets/graphql-Cg7bfA9N.js +6 -0
- package/web/assets/handlebars-CXFvNjQC.js +6 -0
- package/web/assets/hcl-0cvrggvQ.js +6 -0
- package/web/assets/html-oyuB_D-B.js +6 -0
- package/web/assets/htmlMode-iWuZ24-r.js +9 -0
- package/web/assets/index-DqP-_E4F.css +32 -0
- package/web/assets/index-R1cylSgw.js +1665 -0
- package/web/assets/ini-Drc7WvVn.js +6 -0
- package/web/assets/java-B_fMsGYe.js +6 -0
- package/web/assets/javascript-CRIkN2Pg.js +6 -0
- package/web/assets/jsonMode-DVDkDgex.js +15 -0
- package/web/assets/julia-Bqgm2twL.js +6 -0
- package/web/assets/kotlin-BSkB5QuD.js +6 -0
- package/web/assets/less-BsTHnhdd.js +7 -0
- package/web/assets/lexon-YWi4-JPR.js +6 -0
- package/web/assets/liquid-CSfldbB5.js +6 -0
- package/web/assets/lua-nf6ki56Z.js +6 -0
- package/web/assets/m3-Cpb6xl2v.js +6 -0
- package/web/assets/markdown-DSZPf7rp.js +6 -0
- package/web/assets/mdx-Dd58iymR.js +6 -0
- package/web/assets/mips-B_c3zf-v.js +6 -0
- package/web/assets/monaco-editor-B4lwqA13.js +751 -0
- package/web/assets/monaco-editor-CQpyCxOA.css +1 -0
- package/web/assets/msdax-rUNN04Wq.js +6 -0
- package/web/assets/mysql-DDwshQtU.js +6 -0
- package/web/assets/objective-c-B5zXfXm9.js +6 -0
- package/web/assets/pascal-CXOwvkN_.js +6 -0
- package/web/assets/pascaligo-Bc-ZgV77.js +6 -0
- package/web/assets/perl-CwNk8-XU.js +6 -0
- package/web/assets/pgsql-tGk8EFnU.js +6 -0
- package/web/assets/php-CpIb_Oan.js +6 -0
- package/web/assets/pla-B03wrqEc.js +6 -0
- package/web/assets/postiats-BKlk5iyT.js +6 -0
- package/web/assets/powerquery-Bhzvs7bI.js +6 -0
- package/web/assets/powershell-Dd3NCNK9.js +6 -0
- package/web/assets/protobuf-COyEY5Pt.js +7 -0
- package/web/assets/pug-BaJupSGV.js +6 -0
- package/web/assets/python-XWrMqdhO.js +6 -0
- package/web/assets/qsharp-DXyYeYxl.js +6 -0
- package/web/assets/r-CdQndTaG.js +6 -0
- package/web/assets/razor-DPlhCpIs.js +6 -0
- package/web/assets/redis-CVwtpugi.js +6 -0
- package/web/assets/redshift-25W9uPmb.js +6 -0
- package/web/assets/restructuredtext-DfzH4Xui.js +6 -0
- package/web/assets/router-vendor-DHlGizSU.js +41 -0
- package/web/assets/ruby-Cp1zYvxS.js +6 -0
- package/web/assets/rust-D5C2fndG.js +6 -0
- package/web/assets/sb-CDntyWJ8.js +6 -0
- package/web/assets/scala-BoFRg7Ot.js +6 -0
- package/web/assets/scheme-Bio4gycK.js +6 -0
- package/web/assets/scss-4Ik7cdeQ.js +8 -0
- package/web/assets/shell-CX-rkNHf.js +6 -0
- package/web/assets/solidity-Tw7wswEv.js +6 -0
- package/web/assets/sophia-C5WLch3f.js +6 -0
- package/web/assets/sparql-DHaeiCBh.js +6 -0
- package/web/assets/sql-CCSDG5nI.js +6 -0
- package/web/assets/st-pnP8ivHi.js +6 -0
- package/web/assets/swift-DwJ7jVG9.js +8 -0
- package/web/assets/systemverilog-B9Xyijhd.js +6 -0
- package/web/assets/tcl-DnHyzjbg.js +6 -0
- package/web/assets/tsMode-BbA1Jbf3.js +16 -0
- package/web/assets/twig-CPajHgWi.js +6 -0
- package/web/assets/typescript-DcLHYzvH.js +6 -0
- package/web/assets/typespec-D-MeaMDU.js +6 -0
- package/web/assets/ui-vendor-BSco96uv.js +51 -0
- package/web/assets/utils-vendor-DaJ2Dubl.js +911 -0
- package/web/assets/vb-DgyLZaXg.js +6 -0
- package/web/assets/wgsl-DYQUnd45.js +303 -0
- package/web/assets/xml-xKYS3dO6.js +6 -0
- package/web/assets/yaml-CNmlXqzH.js +6 -0
- package/web/favicon.ico +0 -0
- package/web/index.html +22 -0
- package/web/logo.png +0 -0
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OpenCode Server Manager (Singleton)
|
|
3
|
+
*
|
|
4
|
+
* Manages the lifecycle of a single shared OpenCode server process.
|
|
5
|
+
* Multiple sessions share one server; ref counting shuts it down
|
|
6
|
+
* when the last session releases.
|
|
7
|
+
*
|
|
8
|
+
* @module
|
|
9
|
+
*/
|
|
10
|
+
// ============================================================================
|
|
11
|
+
// Server Manager
|
|
12
|
+
// ============================================================================
|
|
13
|
+
/** Default model for OpenCode provider */
|
|
14
|
+
const OPENCODE_DEFAULT_MODEL = 'opencode/minimax-m2.5-free';
|
|
15
|
+
/**
|
|
16
|
+
* Manages a single shared OpenCode server instance.
|
|
17
|
+
*
|
|
18
|
+
* - `acquire()` starts or reuses the server, increments ref count
|
|
19
|
+
* - `release()` decrements ref count, stops server at zero
|
|
20
|
+
* - Concurrent acquire() calls are coalesced into a single startup
|
|
21
|
+
*/
|
|
22
|
+
class OpenCodeServerManager {
|
|
23
|
+
client = null;
|
|
24
|
+
server = null;
|
|
25
|
+
refCount = 0;
|
|
26
|
+
startPromise = null;
|
|
27
|
+
async acquire(config) {
|
|
28
|
+
this.refCount++;
|
|
29
|
+
if (this.client) {
|
|
30
|
+
return this.client;
|
|
31
|
+
}
|
|
32
|
+
// Coalesce concurrent startup requests
|
|
33
|
+
if (this.startPromise) {
|
|
34
|
+
return this.startPromise;
|
|
35
|
+
}
|
|
36
|
+
this.startPromise = this.startServer(config);
|
|
37
|
+
try {
|
|
38
|
+
const client = await this.startPromise;
|
|
39
|
+
return client;
|
|
40
|
+
}
|
|
41
|
+
catch (error) {
|
|
42
|
+
this.refCount--;
|
|
43
|
+
this.startPromise = null;
|
|
44
|
+
throw error;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
release() {
|
|
48
|
+
this.refCount = Math.max(0, this.refCount - 1);
|
|
49
|
+
if (this.refCount === 0) {
|
|
50
|
+
this.shutdown();
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
shutdown() {
|
|
54
|
+
if (this.server) {
|
|
55
|
+
this.server.close();
|
|
56
|
+
this.server = null;
|
|
57
|
+
}
|
|
58
|
+
this.client = null;
|
|
59
|
+
this.startPromise = null;
|
|
60
|
+
this.refCount = 0;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* List all available models from OpenCode providers.
|
|
64
|
+
* Uses provider.list() to get the full catalog (not just configured providers).
|
|
65
|
+
* Each model ID is formatted as `providerID/modelID`.
|
|
66
|
+
* @returns Flattened array of models with composite IDs
|
|
67
|
+
*/
|
|
68
|
+
async listModels(config) {
|
|
69
|
+
const client = await this.acquire(config);
|
|
70
|
+
try {
|
|
71
|
+
const response = await client.provider.list();
|
|
72
|
+
if (!response.data?.all) {
|
|
73
|
+
// Fallback to config.providers() if provider.list() is not available
|
|
74
|
+
return this.listModelsFromConfig(client);
|
|
75
|
+
}
|
|
76
|
+
const models = [];
|
|
77
|
+
for (const provider of response.data.all) {
|
|
78
|
+
if (!provider.models)
|
|
79
|
+
continue;
|
|
80
|
+
// Handle models as either a Record or an Array
|
|
81
|
+
const entries = Array.isArray(provider.models)
|
|
82
|
+
? provider.models.map((m) => [m.id, m])
|
|
83
|
+
: Object.entries(provider.models);
|
|
84
|
+
for (const [modelKey, model] of entries) {
|
|
85
|
+
// Format ID as providerID/modelID
|
|
86
|
+
const id = `${provider.id}/${modelKey}`;
|
|
87
|
+
models.push({
|
|
88
|
+
id,
|
|
89
|
+
displayName: model.name || modelKey,
|
|
90
|
+
description: undefined,
|
|
91
|
+
providerName: provider.name || provider.id,
|
|
92
|
+
...(id === OPENCODE_DEFAULT_MODEL ? { isDefault: true } : {}),
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
return models;
|
|
97
|
+
}
|
|
98
|
+
finally {
|
|
99
|
+
this.release();
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Fallback: list models from config.providers() (only configured providers).
|
|
104
|
+
*/
|
|
105
|
+
async listModelsFromConfig(client) {
|
|
106
|
+
const response = await client.config.providers();
|
|
107
|
+
if (!response.data?.providers) {
|
|
108
|
+
return [];
|
|
109
|
+
}
|
|
110
|
+
const models = [];
|
|
111
|
+
for (const provider of response.data.providers) {
|
|
112
|
+
if (!provider.models)
|
|
113
|
+
continue;
|
|
114
|
+
const entries = Array.isArray(provider.models)
|
|
115
|
+
? provider.models.map((m) => [m.id, m])
|
|
116
|
+
: Object.entries(provider.models);
|
|
117
|
+
for (const [modelKey, model] of entries) {
|
|
118
|
+
const id = `${provider.id}/${modelKey}`;
|
|
119
|
+
models.push({
|
|
120
|
+
id,
|
|
121
|
+
displayName: model.name || modelKey,
|
|
122
|
+
description: undefined,
|
|
123
|
+
providerName: provider.name || provider.id,
|
|
124
|
+
...(id === OPENCODE_DEFAULT_MODEL ? { isDefault: true } : {}),
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
return models;
|
|
129
|
+
}
|
|
130
|
+
async startServer(config) {
|
|
131
|
+
const createOpencode = await this.loadSDK();
|
|
132
|
+
const env = {
|
|
133
|
+
...process.env,
|
|
134
|
+
OPENCODE_PERMISSION: JSON.stringify({ '*': 'allow' }),
|
|
135
|
+
OPENCODE_CLIENT: 'stoneforge',
|
|
136
|
+
};
|
|
137
|
+
if (config?.stoneforgeRoot) {
|
|
138
|
+
env.STONEFORGE_ROOT = config.stoneforgeRoot;
|
|
139
|
+
}
|
|
140
|
+
const result = await createOpencode({
|
|
141
|
+
port: config?.port ?? 0,
|
|
142
|
+
cwd: config?.cwd,
|
|
143
|
+
env,
|
|
144
|
+
});
|
|
145
|
+
// The SDK returns richer types; we extract what we need
|
|
146
|
+
this.client = result.client;
|
|
147
|
+
this.server = result.server;
|
|
148
|
+
this.startPromise = null;
|
|
149
|
+
return this.client;
|
|
150
|
+
}
|
|
151
|
+
async loadSDK() {
|
|
152
|
+
try {
|
|
153
|
+
const sdk = await import('@opencode-ai/sdk');
|
|
154
|
+
return sdk.createOpencode;
|
|
155
|
+
}
|
|
156
|
+
catch {
|
|
157
|
+
throw new Error('OpenCode SDK is not installed. Install it with: npm install @opencode-ai/sdk');
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
/** Singleton instance */
|
|
162
|
+
export const serverManager = new OpenCodeServerManager();
|
|
163
|
+
//# sourceMappingURL=server-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server-manager.js","sourceRoot":"","sources":["../../../src/providers/opencode/server-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent Provider Registry
|
|
3
|
+
*
|
|
4
|
+
* Manages registration and lookup of agent providers.
|
|
5
|
+
* The Claude provider is always registered as the default.
|
|
6
|
+
*
|
|
7
|
+
* @module
|
|
8
|
+
*/
|
|
9
|
+
import type { AgentProvider } from './types.js';
|
|
10
|
+
/**
|
|
11
|
+
* Registry for agent providers.
|
|
12
|
+
* Claude is registered automatically as the default provider.
|
|
13
|
+
*/
|
|
14
|
+
export declare class AgentProviderRegistry {
|
|
15
|
+
private readonly providers;
|
|
16
|
+
private defaultProviderName;
|
|
17
|
+
constructor();
|
|
18
|
+
/** Register a provider. Overwrites if name already exists. */
|
|
19
|
+
register(provider: AgentProvider): void;
|
|
20
|
+
/** Get a provider by name. Returns undefined if not found. */
|
|
21
|
+
get(name: string): AgentProvider | undefined;
|
|
22
|
+
/** Get the default provider. */
|
|
23
|
+
getDefault(): AgentProvider;
|
|
24
|
+
/** Set the default provider name. */
|
|
25
|
+
setDefault(name: string): void;
|
|
26
|
+
/** List all registered provider names. */
|
|
27
|
+
list(): string[];
|
|
28
|
+
/**
|
|
29
|
+
* Get a provider, throwing a user-friendly error if not found or unavailable.
|
|
30
|
+
* For non-default providers, includes installation instructions.
|
|
31
|
+
*/
|
|
32
|
+
getOrThrow(name: string): Promise<AgentProvider>;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Gets the global provider registry (lazily created).
|
|
36
|
+
*/
|
|
37
|
+
export declare function getProviderRegistry(): AgentProviderRegistry;
|
|
38
|
+
//# sourceMappingURL=registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/providers/registry.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAKhD;;;GAGG;AACH,qBAAa,qBAAqB;IAChC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAoC;IAC9D,OAAO,CAAC,mBAAmB,CAAY;;IAWvC,8DAA8D;IAC9D,QAAQ,CAAC,QAAQ,EAAE,aAAa,GAAG,IAAI;IAIvC,8DAA8D;IAC9D,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS;IAI5C,gCAAgC;IAChC,UAAU,IAAI,aAAa;IAQ3B,qCAAqC;IACrC,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAO9B,0CAA0C;IAC1C,IAAI,IAAI,MAAM,EAAE;IAIhB;;;OAGG;IACG,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;CAkBvD;AAKD;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,qBAAqB,CAK3D"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent Provider Registry
|
|
3
|
+
*
|
|
4
|
+
* Manages registration and lookup of agent providers.
|
|
5
|
+
* The Claude provider is always registered as the default.
|
|
6
|
+
*
|
|
7
|
+
* @module
|
|
8
|
+
*/
|
|
9
|
+
import { ClaudeAgentProvider } from './claude/index.js';
|
|
10
|
+
import { OpenCodeAgentProvider } from './opencode/index.js';
|
|
11
|
+
import { CodexAgentProvider } from './codex/index.js';
|
|
12
|
+
/**
|
|
13
|
+
* Registry for agent providers.
|
|
14
|
+
* Claude is registered automatically as the default provider.
|
|
15
|
+
*/
|
|
16
|
+
export class AgentProviderRegistry {
|
|
17
|
+
providers = new Map();
|
|
18
|
+
defaultProviderName = 'claude';
|
|
19
|
+
constructor() {
|
|
20
|
+
// Always register the Claude provider as the default
|
|
21
|
+
this.register(new ClaudeAgentProvider());
|
|
22
|
+
// Register OpenCode as an alternative provider
|
|
23
|
+
this.register(new OpenCodeAgentProvider());
|
|
24
|
+
// Register Codex as an alternative provider
|
|
25
|
+
this.register(new CodexAgentProvider());
|
|
26
|
+
}
|
|
27
|
+
/** Register a provider. Overwrites if name already exists. */
|
|
28
|
+
register(provider) {
|
|
29
|
+
this.providers.set(provider.name, provider);
|
|
30
|
+
}
|
|
31
|
+
/** Get a provider by name. Returns undefined if not found. */
|
|
32
|
+
get(name) {
|
|
33
|
+
return this.providers.get(name);
|
|
34
|
+
}
|
|
35
|
+
/** Get the default provider. */
|
|
36
|
+
getDefault() {
|
|
37
|
+
const provider = this.providers.get(this.defaultProviderName);
|
|
38
|
+
if (!provider) {
|
|
39
|
+
throw new Error(`Default provider '${this.defaultProviderName}' is not registered`);
|
|
40
|
+
}
|
|
41
|
+
return provider;
|
|
42
|
+
}
|
|
43
|
+
/** Set the default provider name. */
|
|
44
|
+
setDefault(name) {
|
|
45
|
+
if (!this.providers.has(name)) {
|
|
46
|
+
throw new Error(`Provider '${name}' is not registered`);
|
|
47
|
+
}
|
|
48
|
+
this.defaultProviderName = name;
|
|
49
|
+
}
|
|
50
|
+
/** List all registered provider names. */
|
|
51
|
+
list() {
|
|
52
|
+
return Array.from(this.providers.keys());
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Get a provider, throwing a user-friendly error if not found or unavailable.
|
|
56
|
+
* For non-default providers, includes installation instructions.
|
|
57
|
+
*/
|
|
58
|
+
async getOrThrow(name) {
|
|
59
|
+
const provider = this.providers.get(name);
|
|
60
|
+
if (!provider) {
|
|
61
|
+
const available = this.list().join(', ');
|
|
62
|
+
throw new Error(`Provider '${name}' is not registered. Available providers: ${available}`);
|
|
63
|
+
}
|
|
64
|
+
const isAvailable = await provider.isAvailable();
|
|
65
|
+
if (!isAvailable) {
|
|
66
|
+
throw new Error(`Provider '${name}' is not available. ${provider.getInstallInstructions()}`);
|
|
67
|
+
}
|
|
68
|
+
return provider;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
/** Singleton registry instance. */
|
|
72
|
+
let defaultRegistry;
|
|
73
|
+
/**
|
|
74
|
+
* Gets the global provider registry (lazily created).
|
|
75
|
+
*/
|
|
76
|
+
export function getProviderRegistry() {
|
|
77
|
+
if (!defaultRegistry) {
|
|
78
|
+
defaultRegistry = new AgentProviderRegistry();
|
|
79
|
+
}
|
|
80
|
+
return defaultRegistry;
|
|
81
|
+
}
|
|
82
|
+
//# sourceMappingURL=registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/providers/registry.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAEtD;;;GAGG;AACH,MAAM,OAAO,qBAAqB;IACf,SAAS,GAAG,IAAI,GAAG,EAAyB,CAAC;IACtD,mBAAmB,GAAG,QAAQ,CAAC;IAEvC;QACE,qDAAqD;QACrD,IAAI,CAAC,QAAQ,CAAC,IAAI,mBAAmB,EAAE,CAAC,CAAC;QACzC,+CAA+C;QAC/C,IAAI,CAAC,QAAQ,CAAC,IAAI,qBAAqB,EAAE,CAAC,CAAC;QAC3C,4CAA4C;QAC5C,IAAI,CAAC,QAAQ,CAAC,IAAI,kBAAkB,EAAE,CAAC,CAAC;IAC1C,CAAC;IAED,8DAA8D;IAC9D,QAAQ,CAAC,QAAuB;QAC9B,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC9C,CAAC;IAED,8DAA8D;IAC9D,GAAG,CAAC,IAAY;QACd,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;IAED,gCAAgC;IAChC,UAAU;QACR,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAC9D,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,KAAK,CAAC,qBAAqB,IAAI,CAAC,mBAAmB,qBAAqB,CAAC,CAAC;QACtF,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,qCAAqC;IACrC,UAAU,CAAC,IAAY;QACrB,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YAC9B,MAAM,IAAI,KAAK,CAAC,aAAa,IAAI,qBAAqB,CAAC,CAAC;QAC1D,CAAC;QACD,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;IAClC,CAAC;IAED,0CAA0C;IAC1C,IAAI;QACF,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;IAC3C,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,UAAU,CAAC,IAAY;QAC3B,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC1C,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACzC,MAAM,IAAI,KAAK,CACb,aAAa,IAAI,6CAA6C,SAAS,EAAE,CAC1E,CAAC;QACJ,CAAC;QAED,MAAM,WAAW,GAAG,MAAM,QAAQ,CAAC,WAAW,EAAE,CAAC;QACjD,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CACb,aAAa,IAAI,uBAAuB,QAAQ,CAAC,sBAAsB,EAAE,EAAE,CAC5E,CAAC;QACJ,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;CACF;AAED,mCAAmC;AACnC,IAAI,eAAkD,CAAC;AAEvD;;GAEG;AACH,MAAM,UAAU,mBAAmB;IACjC,IAAI,CAAC,eAAe,EAAE,CAAC;QACrB,eAAe,GAAG,IAAI,qBAAqB,EAAE,CAAC;IAChD,CAAC;IACD,OAAO,eAAe,CAAC;AACzB,CAAC"}
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent Provider Types
|
|
3
|
+
*
|
|
4
|
+
* Defines the provider abstraction layer that enables drop-in replacement
|
|
5
|
+
* of the underlying agent CLI/SDK (e.g., Claude Code, OpenCode) without
|
|
6
|
+
* changing orchestration logic.
|
|
7
|
+
*
|
|
8
|
+
* @module
|
|
9
|
+
*/
|
|
10
|
+
/** Provider-agnostic session ID (replaces Claude-specific session IDs) */
|
|
11
|
+
export type ProviderSessionId = string;
|
|
12
|
+
/** Configuration for an agent provider */
|
|
13
|
+
export interface AgentProviderConfig {
|
|
14
|
+
/** Path to CLI executable (e.g., 'claude', 'opencode') */
|
|
15
|
+
readonly executablePath?: string;
|
|
16
|
+
/** Working directory */
|
|
17
|
+
readonly workingDirectory?: string;
|
|
18
|
+
/** Environment variables */
|
|
19
|
+
readonly environmentVariables?: Record<string, string>;
|
|
20
|
+
/** Timeout in ms */
|
|
21
|
+
readonly timeout?: number;
|
|
22
|
+
/** Stoneforge root directory */
|
|
23
|
+
readonly stoneforgeRoot?: string;
|
|
24
|
+
/** Provider-specific options */
|
|
25
|
+
readonly providerOptions?: Record<string, unknown>;
|
|
26
|
+
}
|
|
27
|
+
/** Provider-agnostic message from the agent */
|
|
28
|
+
export interface AgentMessage {
|
|
29
|
+
readonly type: 'system' | 'assistant' | 'user' | 'tool_use' | 'tool_result' | 'result' | 'error';
|
|
30
|
+
readonly subtype?: string;
|
|
31
|
+
readonly sessionId?: string;
|
|
32
|
+
readonly content?: string;
|
|
33
|
+
readonly tool?: {
|
|
34
|
+
readonly name?: string;
|
|
35
|
+
readonly id?: string;
|
|
36
|
+
readonly input?: unknown;
|
|
37
|
+
};
|
|
38
|
+
/** Raw provider-specific message data */
|
|
39
|
+
readonly raw: unknown;
|
|
40
|
+
}
|
|
41
|
+
/** Handle for a running headless agent session */
|
|
42
|
+
export interface HeadlessSession {
|
|
43
|
+
/** Send a user message to the agent */
|
|
44
|
+
sendMessage(content: string): void;
|
|
45
|
+
/** Iterate over agent messages */
|
|
46
|
+
[Symbol.asyncIterator](): AsyncIterator<AgentMessage>;
|
|
47
|
+
/** Interrupt the current operation */
|
|
48
|
+
interrupt(): Promise<void>;
|
|
49
|
+
/** Close the session */
|
|
50
|
+
close(): void;
|
|
51
|
+
}
|
|
52
|
+
/** Options for spawning a headless session */
|
|
53
|
+
export interface HeadlessSpawnOptions {
|
|
54
|
+
readonly workingDirectory: string;
|
|
55
|
+
readonly initialPrompt?: string;
|
|
56
|
+
readonly resumeSessionId?: ProviderSessionId;
|
|
57
|
+
readonly environmentVariables?: Record<string, string>;
|
|
58
|
+
readonly stoneforgeRoot?: string;
|
|
59
|
+
readonly timeout?: number;
|
|
60
|
+
/** Model identifier to use (e.g., 'claude-sonnet-4-20250514'). If not set, uses provider default. */
|
|
61
|
+
readonly model?: string;
|
|
62
|
+
}
|
|
63
|
+
/** Headless agent provider (SDK/API-based) */
|
|
64
|
+
export interface HeadlessProvider {
|
|
65
|
+
readonly name: string;
|
|
66
|
+
/** Spawn a new headless session */
|
|
67
|
+
spawn(options: HeadlessSpawnOptions): Promise<HeadlessSession>;
|
|
68
|
+
/** Check if provider is available (e.g., SDK installed) */
|
|
69
|
+
isAvailable(): Promise<boolean>;
|
|
70
|
+
}
|
|
71
|
+
/** Handle for a running interactive (PTY) agent session */
|
|
72
|
+
export interface InteractiveSession {
|
|
73
|
+
/** PTY process PID */
|
|
74
|
+
readonly pid?: number;
|
|
75
|
+
/** Write data to the PTY */
|
|
76
|
+
write(data: string): void;
|
|
77
|
+
/** Resize the terminal */
|
|
78
|
+
resize(cols: number, rows: number): void;
|
|
79
|
+
/** Kill the PTY */
|
|
80
|
+
kill(): void;
|
|
81
|
+
/** Event: data from the PTY */
|
|
82
|
+
onData(callback: (data: string) => void): void;
|
|
83
|
+
/** Event: PTY exit */
|
|
84
|
+
onExit(callback: (code: number, signal?: number) => void): void;
|
|
85
|
+
/** Extract provider session ID from output (if available) */
|
|
86
|
+
getSessionId(): ProviderSessionId | undefined;
|
|
87
|
+
}
|
|
88
|
+
/** Options for spawning an interactive session */
|
|
89
|
+
export interface InteractiveSpawnOptions {
|
|
90
|
+
readonly workingDirectory: string;
|
|
91
|
+
readonly initialPrompt?: string;
|
|
92
|
+
readonly resumeSessionId?: ProviderSessionId;
|
|
93
|
+
readonly environmentVariables?: Record<string, string>;
|
|
94
|
+
readonly stoneforgeRoot?: string;
|
|
95
|
+
readonly cols?: number;
|
|
96
|
+
readonly rows?: number;
|
|
97
|
+
/** Model identifier to use (e.g., 'claude-sonnet-4-20250514'). If not set, uses provider default. */
|
|
98
|
+
readonly model?: string;
|
|
99
|
+
}
|
|
100
|
+
/** Interactive (PTY) agent provider */
|
|
101
|
+
export interface InteractiveProvider {
|
|
102
|
+
readonly name: string;
|
|
103
|
+
/** Spawn a new interactive session */
|
|
104
|
+
spawn(options: InteractiveSpawnOptions): Promise<InteractiveSession>;
|
|
105
|
+
/** Check if provider is available (e.g., CLI installed) */
|
|
106
|
+
isAvailable(): Promise<boolean>;
|
|
107
|
+
}
|
|
108
|
+
/** Information about an available model */
|
|
109
|
+
export interface ModelInfo {
|
|
110
|
+
/** Model identifier (e.g., 'claude-sonnet-4-20250514') */
|
|
111
|
+
readonly id: string;
|
|
112
|
+
/** Human-readable display name (e.g., 'Claude Sonnet 4') */
|
|
113
|
+
readonly displayName: string;
|
|
114
|
+
/** Optional description of the model's capabilities */
|
|
115
|
+
readonly description?: string;
|
|
116
|
+
/** Whether this is the provider's default model */
|
|
117
|
+
readonly isDefault?: boolean;
|
|
118
|
+
/** Provider name for disambiguation (e.g., 'anthropic', 'openai') */
|
|
119
|
+
readonly providerName?: string;
|
|
120
|
+
}
|
|
121
|
+
/** Combined provider that supports both headless and interactive modes */
|
|
122
|
+
export interface AgentProvider {
|
|
123
|
+
readonly name: string;
|
|
124
|
+
readonly headless: HeadlessProvider;
|
|
125
|
+
readonly interactive: InteractiveProvider;
|
|
126
|
+
/** Check if provider is available (CLI installed, SDK importable, etc.) */
|
|
127
|
+
isAvailable(): Promise<boolean>;
|
|
128
|
+
/**
|
|
129
|
+
* Human-readable installation instructions shown when provider is not available.
|
|
130
|
+
* e.g., "Install OpenCode SDK: npm install @opencode-ai/sdk"
|
|
131
|
+
*/
|
|
132
|
+
getInstallInstructions(): string;
|
|
133
|
+
/** List available models for this provider */
|
|
134
|
+
listModels(): Promise<ModelInfo[]>;
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Error thrown when a provider operation fails (e.g., SDK crash, auth failure).
|
|
138
|
+
* Route handlers can catch this to return 503 instead of 500.
|
|
139
|
+
*/
|
|
140
|
+
export declare class ProviderError extends Error {
|
|
141
|
+
readonly providerName: string;
|
|
142
|
+
constructor(message: string, providerName: string);
|
|
143
|
+
}
|
|
144
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/providers/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAMH,0EAA0E;AAC1E,MAAM,MAAM,iBAAiB,GAAG,MAAM,CAAC;AAMvC,0CAA0C;AAC1C,MAAM,WAAW,mBAAmB;IAClC,0DAA0D;IAC1D,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,wBAAwB;IACxB,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACnC,4BAA4B;IAC5B,QAAQ,CAAC,oBAAoB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvD,oBAAoB;IACpB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,gCAAgC;IAChC,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,gCAAgC;IAChC,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpD;AAMD,+CAA+C;AAC/C,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,IAAI,EAAE,QAAQ,GAAG,WAAW,GAAG,MAAM,GAAG,UAAU,GAAG,aAAa,GAAG,QAAQ,GAAG,OAAO,CAAC;IACjG,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,IAAI,CAAC,EAAE;QACd,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QACvB,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC;QACrB,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;KAC1B,CAAC;IACF,yCAAyC;IACzC,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC;CACvB;AAMD,kDAAkD;AAClD,MAAM,WAAW,eAAe;IAC9B,uCAAuC;IACvC,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,kCAAkC;IAClC,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,aAAa,CAAC,YAAY,CAAC,CAAC;IACtD,sCAAsC;IACtC,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3B,wBAAwB;IACxB,KAAK,IAAI,IAAI,CAAC;CACf;AAED,8CAA8C;AAC9C,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,eAAe,CAAC,EAAE,iBAAiB,CAAC;IAC7C,QAAQ,CAAC,oBAAoB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvD,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,qGAAqG;IACrG,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,8CAA8C;AAC9C,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB,mCAAmC;IACnC,KAAK,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;IAE/D,2DAA2D;IAC3D,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;CACjC;AAMD,2DAA2D;AAC3D,MAAM,WAAW,kBAAkB;IACjC,sBAAsB;IACtB,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,4BAA4B;IAC5B,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,0BAA0B;IAC1B,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACzC,mBAAmB;IACnB,IAAI,IAAI,IAAI,CAAC;IACb,+BAA+B;IAC/B,MAAM,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI,CAAC;IAC/C,sBAAsB;IACtB,MAAM,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI,CAAC;IAChE,6DAA6D;IAC7D,YAAY,IAAI,iBAAiB,GAAG,SAAS,CAAC;CAC/C;AAED,kDAAkD;AAClD,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,eAAe,CAAC,EAAE,iBAAiB,CAAC;IAC7C,QAAQ,CAAC,oBAAoB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvD,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,qGAAqG;IACrG,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,uCAAuC;AACvC,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB,sCAAsC;IACtC,KAAK,CAAC,OAAO,EAAE,uBAAuB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAErE,2DAA2D;IAC3D,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;CACjC;AAMD,2CAA2C;AAC3C,MAAM,WAAW,SAAS;IACxB,0DAA0D;IAC1D,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,4DAA4D;IAC5D,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,uDAAuD;IACvD,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,mDAAmD;IACnD,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;IAC7B,qEAAqE;IACrE,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;CAChC;AAMD,0EAA0E;AAC1E,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,gBAAgB,CAAC;IACpC,QAAQ,CAAC,WAAW,EAAE,mBAAmB,CAAC;IAE1C,2EAA2E;IAC3E,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAEhC;;;OAGG;IACH,sBAAsB,IAAI,MAAM,CAAC;IAEjC,8CAA8C;IAC9C,UAAU,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;CACpC;AAMD;;;GAGG;AACH,qBAAa,aAAc,SAAQ,KAAK;IACtC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;gBAElB,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM;CAKlD"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent Provider Types
|
|
3
|
+
*
|
|
4
|
+
* Defines the provider abstraction layer that enables drop-in replacement
|
|
5
|
+
* of the underlying agent CLI/SDK (e.g., Claude Code, OpenCode) without
|
|
6
|
+
* changing orchestration logic.
|
|
7
|
+
*
|
|
8
|
+
* @module
|
|
9
|
+
*/
|
|
10
|
+
// ============================================================================
|
|
11
|
+
// Provider Errors
|
|
12
|
+
// ============================================================================
|
|
13
|
+
/**
|
|
14
|
+
* Error thrown when a provider operation fails (e.g., SDK crash, auth failure).
|
|
15
|
+
* Route handlers can catch this to return 503 instead of 500.
|
|
16
|
+
*/
|
|
17
|
+
export class ProviderError extends Error {
|
|
18
|
+
providerName;
|
|
19
|
+
constructor(message, providerName) {
|
|
20
|
+
super(message);
|
|
21
|
+
this.name = 'ProviderError';
|
|
22
|
+
this.providerName = providerName;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/providers/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AA8KH,+EAA+E;AAC/E,kBAAkB;AAClB,+EAA+E;AAE/E;;;GAGG;AACH,MAAM,OAAO,aAAc,SAAQ,KAAK;IAC7B,YAAY,CAAS;IAE9B,YAAY,OAAe,EAAE,YAAoB;QAC/C,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;QAC5B,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;IACnC,CAAC;CACF"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { EventEmitter } from 'events';
|
|
2
|
+
/**
|
|
3
|
+
* Add event listeners to an emitter and dynamically raise its maxListeners
|
|
4
|
+
* limit to prevent false MaxListenersExceededWarning. Returns a cleanup
|
|
5
|
+
* function that removes the listeners and lowers the limit back down.
|
|
6
|
+
*/
|
|
7
|
+
export declare function trackListeners(emitter: EventEmitter, listeners: Record<string, (...args: any[]) => void>): () => void;
|
|
8
|
+
//# sourceMappingURL=event-utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"event-utils.d.ts","sourceRoot":"","sources":["../../src/runtime/event-utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAE3C;;;;GAIG;AACH,wBAAgB,cAAc,CAC5B,OAAO,EAAE,YAAY,EACrB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,CAAC,GAClD,MAAM,IAAI,CAeZ"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Add event listeners to an emitter and dynamically raise its maxListeners
|
|
3
|
+
* limit to prevent false MaxListenersExceededWarning. Returns a cleanup
|
|
4
|
+
* function that removes the listeners and lowers the limit back down.
|
|
5
|
+
*/
|
|
6
|
+
export function trackListeners(emitter, listeners) {
|
|
7
|
+
const count = Object.keys(listeners).length;
|
|
8
|
+
emitter.setMaxListeners(emitter.getMaxListeners() + count);
|
|
9
|
+
for (const [event, handler] of Object.entries(listeners)) {
|
|
10
|
+
emitter.on(event, handler);
|
|
11
|
+
}
|
|
12
|
+
let cleaned = false;
|
|
13
|
+
return () => {
|
|
14
|
+
if (cleaned)
|
|
15
|
+
return;
|
|
16
|
+
cleaned = true;
|
|
17
|
+
for (const [event, handler] of Object.entries(listeners)) {
|
|
18
|
+
emitter.off(event, handler);
|
|
19
|
+
}
|
|
20
|
+
emitter.setMaxListeners(Math.max(0, emitter.getMaxListeners() - count));
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=event-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"event-utils.js","sourceRoot":"","sources":["../../src/runtime/event-utils.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAC5B,OAAqB,EACrB,SAAmD;IAEnD,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC;IAC5C,OAAO,CAAC,eAAe,CAAC,OAAO,CAAC,eAAe,EAAE,GAAG,KAAK,CAAC,CAAC;IAC3D,KAAK,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;QACzD,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAC7B,CAAC;IACD,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,OAAO,GAAG,EAAE;QACV,IAAI,OAAO;YAAE,OAAO;QACpB,OAAO,GAAG,IAAI,CAAC;QACf,KAAK,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;YACzD,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAC9B,CAAC;QACD,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,eAAe,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC;IAC1E,CAAC,CAAC;AACJ,CAAC"}
|