@sudocode-ai/local-server 0.1.6 → 0.1.8
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/README.md +6 -0
- package/dist/errors/agent-errors.d.ts +43 -0
- package/dist/errors/agent-errors.d.ts.map +1 -0
- package/dist/errors/agent-errors.js +69 -0
- package/dist/errors/agent-errors.js.map +1 -0
- package/dist/execution/adapters/claude-adapter.d.ts +63 -0
- package/dist/execution/adapters/claude-adapter.d.ts.map +1 -0
- package/dist/execution/adapters/claude-adapter.js +82 -0
- package/dist/execution/adapters/claude-adapter.js.map +1 -0
- package/dist/execution/adapters/codex-adapter.d.ts +67 -0
- package/dist/execution/adapters/codex-adapter.d.ts.map +1 -0
- package/dist/execution/adapters/codex-adapter.js +183 -0
- package/dist/execution/adapters/codex-adapter.js.map +1 -0
- package/dist/execution/adapters/codex-config-builder.d.ts +30 -0
- package/dist/execution/adapters/codex-config-builder.d.ts.map +1 -0
- package/dist/execution/adapters/codex-config-builder.js +110 -0
- package/dist/execution/adapters/codex-config-builder.js.map +1 -0
- package/dist/execution/adapters/copilot-adapter.d.ts +94 -0
- package/dist/execution/adapters/copilot-adapter.d.ts.map +1 -0
- package/dist/execution/adapters/copilot-adapter.js +163 -0
- package/dist/execution/adapters/copilot-adapter.js.map +1 -0
- package/dist/execution/adapters/copilot-config-builder.d.ts +48 -0
- package/dist/execution/adapters/copilot-config-builder.d.ts.map +1 -0
- package/dist/execution/adapters/copilot-config-builder.js +125 -0
- package/dist/execution/adapters/copilot-config-builder.js.map +1 -0
- package/dist/execution/adapters/cursor-adapter.d.ts +66 -0
- package/dist/execution/adapters/cursor-adapter.d.ts.map +1 -0
- package/dist/execution/adapters/cursor-adapter.js +121 -0
- package/dist/execution/adapters/cursor-adapter.js.map +1 -0
- package/dist/execution/adapters/cursor-config-builder.d.ts +29 -0
- package/dist/execution/adapters/cursor-config-builder.d.ts.map +1 -0
- package/dist/execution/adapters/cursor-config-builder.js +49 -0
- package/dist/execution/adapters/cursor-config-builder.js.map +1 -0
- package/dist/execution/adapters/shared/config-presets.d.ts +102 -0
- package/dist/execution/adapters/shared/config-presets.d.ts.map +1 -0
- package/dist/execution/adapters/shared/config-presets.js +205 -0
- package/dist/execution/adapters/shared/config-presets.js.map +1 -0
- package/dist/execution/adapters/shared/config-utils.d.ts +95 -0
- package/dist/execution/adapters/shared/config-utils.d.ts.map +1 -0
- package/dist/execution/adapters/shared/config-utils.js +163 -0
- package/dist/execution/adapters/shared/config-utils.js.map +1 -0
- package/dist/execution/adapters/shared/index.d.ts +8 -0
- package/dist/execution/adapters/shared/index.d.ts.map +1 -0
- package/dist/execution/adapters/shared/index.js +8 -0
- package/dist/execution/adapters/shared/index.js.map +1 -0
- package/dist/execution/executors/agent-executor-wrapper.d.ts +153 -0
- package/dist/execution/executors/agent-executor-wrapper.d.ts.map +1 -0
- package/dist/execution/executors/agent-executor-wrapper.js +652 -0
- package/dist/execution/executors/agent-executor-wrapper.js.map +1 -0
- package/dist/execution/executors/executor-factory.d.ts +95 -0
- package/dist/execution/executors/executor-factory.d.ts.map +1 -0
- package/dist/execution/executors/executor-factory.js +120 -0
- package/dist/execution/executors/executor-factory.js.map +1 -0
- package/dist/execution/output/ag-ui-adapter.d.ts +0 -2
- package/dist/execution/output/ag-ui-adapter.d.ts.map +1 -1
- package/dist/execution/output/ag-ui-adapter.js +0 -2
- package/dist/execution/output/ag-ui-adapter.js.map +1 -1
- package/dist/execution/output/index.d.ts +0 -3
- package/dist/execution/output/index.d.ts.map +1 -1
- package/dist/execution/output/index.js +0 -2
- package/dist/execution/output/index.js.map +1 -1
- package/dist/execution/output/normalized-to-ag-ui-adapter.d.ts +108 -0
- package/dist/execution/output/normalized-to-ag-ui-adapter.d.ts.map +1 -0
- package/dist/execution/output/normalized-to-ag-ui-adapter.js +321 -0
- package/dist/execution/output/normalized-to-ag-ui-adapter.js.map +1 -0
- package/dist/execution/process/builders/claude.d.ts +25 -58
- package/dist/execution/process/builders/claude.d.ts.map +1 -1
- package/dist/execution/process/builders/claude.js +153 -19
- package/dist/execution/process/builders/claude.js.map +1 -1
- package/dist/execution/transport/ipc-transport-manager.d.ts +74 -0
- package/dist/execution/transport/ipc-transport-manager.d.ts.map +1 -0
- package/dist/execution/transport/ipc-transport-manager.js +104 -0
- package/dist/execution/transport/ipc-transport-manager.js.map +1 -0
- package/dist/execution/transport/transport-manager.d.ts.map +1 -1
- package/dist/execution/transport/transport-manager.js +3 -0
- package/dist/execution/transport/transport-manager.js.map +1 -1
- package/dist/execution/worktree/conflict-detector.d.ts +85 -0
- package/dist/execution/worktree/conflict-detector.d.ts.map +1 -0
- package/dist/execution/worktree/conflict-detector.js +129 -0
- package/dist/execution/worktree/conflict-detector.js.map +1 -0
- package/dist/execution/worktree/git-cli.d.ts +9 -0
- package/dist/execution/worktree/git-cli.d.ts.map +1 -1
- package/dist/execution/worktree/git-cli.js +10 -0
- package/dist/execution/worktree/git-cli.js.map +1 -1
- package/dist/execution/worktree/git-sync-cli.d.ts +187 -0
- package/dist/execution/worktree/git-sync-cli.d.ts.map +1 -0
- package/dist/execution/worktree/git-sync-cli.js +350 -0
- package/dist/execution/worktree/git-sync-cli.js.map +1 -0
- package/dist/execution/worktree/manager.d.ts +18 -0
- package/dist/execution/worktree/manager.d.ts.map +1 -1
- package/dist/execution/worktree/manager.js +9 -3
- package/dist/execution/worktree/manager.js.map +1 -1
- package/dist/index.d.ts +1 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +175 -195
- package/dist/index.js.map +1 -1
- package/dist/middleware/project-context.d.ts +37 -0
- package/dist/middleware/project-context.d.ts.map +1 -0
- package/dist/middleware/project-context.js +91 -0
- package/dist/middleware/project-context.js.map +1 -0
- package/dist/public/assets/index-Bb_W5bUr.css +1 -0
- package/dist/public/assets/index-CFKL113G.js +710 -0
- package/dist/public/assets/index-CFKL113G.js.map +1 -0
- package/dist/public/assets/{react-vendor-ByUx1V_q.js → react-vendor-DiL5hC7l.js} +2 -2
- package/dist/public/assets/{react-vendor-ByUx1V_q.js.map → react-vendor-DiL5hC7l.js.map} +1 -1
- package/dist/public/assets/ui-vendor-B4WMPEfa.js +54 -0
- package/dist/public/assets/ui-vendor-B4WMPEfa.js.map +1 -0
- package/dist/public/index.html +4 -4
- package/dist/routes/agents.d.ts +3 -0
- package/dist/routes/agents.d.ts.map +1 -0
- package/dist/routes/agents.js +62 -0
- package/dist/routes/agents.js.map +1 -0
- package/dist/routes/config.d.ts +3 -0
- package/dist/routes/config.d.ts.map +1 -0
- package/dist/routes/config.js +25 -0
- package/dist/routes/config.js.map +1 -0
- package/dist/routes/editors.d.ts +15 -0
- package/dist/routes/editors.d.ts.map +1 -0
- package/dist/routes/editors.js +98 -0
- package/dist/routes/editors.js.map +1 -0
- package/dist/routes/executions-stream.d.ts +8 -5
- package/dist/routes/executions-stream.d.ts.map +1 -1
- package/dist/routes/executions-stream.js +10 -6
- package/dist/routes/executions-stream.js.map +1 -1
- package/dist/routes/executions.d.ts +6 -10
- package/dist/routes/executions.d.ts.map +1 -1
- package/dist/routes/executions.js +506 -54
- package/dist/routes/executions.js.map +1 -1
- package/dist/routes/feedback.d.ts +3 -2
- package/dist/routes/feedback.d.ts.map +1 -1
- package/dist/routes/feedback.js +32 -22
- package/dist/routes/feedback.js.map +1 -1
- package/dist/routes/files.d.ts +18 -0
- package/dist/routes/files.d.ts.map +1 -0
- package/dist/routes/files.js +89 -0
- package/dist/routes/files.js.map +1 -0
- package/dist/routes/issues.d.ts +3 -2
- package/dist/routes/issues.d.ts.map +1 -1
- package/dist/routes/issues.js +19 -18
- package/dist/routes/issues.js.map +1 -1
- package/dist/routes/projects.d.ts +11 -0
- package/dist/routes/projects.d.ts.map +1 -0
- package/dist/routes/projects.js +447 -0
- package/dist/routes/projects.js.map +1 -0
- package/dist/routes/relationships.d.ts +3 -2
- package/dist/routes/relationships.d.ts.map +1 -1
- package/dist/routes/relationships.js +12 -10
- package/dist/routes/relationships.js.map +1 -1
- package/dist/routes/repo-info.d.ts +3 -0
- package/dist/routes/repo-info.d.ts.map +1 -0
- package/dist/routes/repo-info.js +126 -0
- package/dist/routes/repo-info.js.map +1 -0
- package/dist/routes/specs.d.ts +3 -2
- package/dist/routes/specs.d.ts.map +1 -1
- package/dist/routes/specs.js +19 -18
- package/dist/routes/specs.js.map +1 -1
- package/dist/services/agent-registry.d.ts +140 -0
- package/dist/services/agent-registry.d.ts.map +1 -0
- package/dist/services/agent-registry.js +272 -0
- package/dist/services/agent-registry.js.map +1 -0
- package/dist/services/db.d.ts.map +1 -1
- package/dist/services/db.js +19 -14
- package/dist/services/db.js.map +1 -1
- package/dist/services/editor-service.d.ts +57 -0
- package/dist/services/editor-service.d.ts.map +1 -0
- package/dist/services/editor-service.js +204 -0
- package/dist/services/editor-service.js.map +1 -0
- package/dist/services/execution-changes-service.d.ts +92 -0
- package/dist/services/execution-changes-service.d.ts.map +1 -0
- package/dist/services/execution-changes-service.js +546 -0
- package/dist/services/execution-changes-service.js.map +1 -0
- package/dist/services/execution-lifecycle.d.ts +1 -0
- package/dist/services/execution-lifecycle.d.ts.map +1 -1
- package/dist/services/execution-lifecycle.js +37 -7
- package/dist/services/execution-lifecycle.js.map +1 -1
- package/dist/services/execution-logs-store.d.ts +75 -0
- package/dist/services/execution-logs-store.d.ts.map +1 -1
- package/dist/services/execution-logs-store.js +142 -2
- package/dist/services/execution-logs-store.js.map +1 -1
- package/dist/services/execution-service.d.ts +50 -58
- package/dist/services/execution-service.d.ts.map +1 -1
- package/dist/services/execution-service.js +433 -448
- package/dist/services/execution-service.js.map +1 -1
- package/dist/services/execution-worker-pool.d.ts +116 -0
- package/dist/services/execution-worker-pool.d.ts.map +1 -0
- package/dist/services/execution-worker-pool.js +326 -0
- package/dist/services/execution-worker-pool.js.map +1 -0
- package/dist/services/executions.d.ts +3 -0
- package/dist/services/executions.d.ts.map +1 -1
- package/dist/services/executions.js +11 -2
- package/dist/services/executions.js.map +1 -1
- package/dist/services/export.d.ts +8 -2
- package/dist/services/export.d.ts.map +1 -1
- package/dist/services/export.js +29 -23
- package/dist/services/export.js.map +1 -1
- package/dist/services/feedback.d.ts +16 -0
- package/dist/services/feedback.d.ts.map +1 -1
- package/dist/services/feedback.js +25 -1
- package/dist/services/feedback.js.map +1 -1
- package/dist/services/file-search/git-ls-files-strategy.d.ts +72 -0
- package/dist/services/file-search/git-ls-files-strategy.d.ts.map +1 -0
- package/dist/services/file-search/git-ls-files-strategy.js +176 -0
- package/dist/services/file-search/git-ls-files-strategy.js.map +1 -0
- package/dist/services/file-search/index.d.ts +9 -0
- package/dist/services/file-search/index.d.ts.map +1 -0
- package/dist/services/file-search/index.js +10 -0
- package/dist/services/file-search/index.js.map +1 -0
- package/dist/services/file-search/registry.d.ts +97 -0
- package/dist/services/file-search/registry.d.ts.map +1 -0
- package/dist/services/file-search/registry.js +140 -0
- package/dist/services/file-search/registry.js.map +1 -0
- package/dist/services/file-search/strategy.d.ts +58 -0
- package/dist/services/file-search/strategy.d.ts.map +1 -0
- package/dist/services/file-search/strategy.js +8 -0
- package/dist/services/file-search/strategy.js.map +1 -0
- package/dist/services/project-context.d.ts +69 -0
- package/dist/services/project-context.d.ts.map +1 -0
- package/dist/services/project-context.js +113 -0
- package/dist/services/project-context.js.map +1 -0
- package/dist/services/project-manager.d.ts +95 -0
- package/dist/services/project-manager.d.ts.map +1 -0
- package/dist/services/project-manager.js +388 -0
- package/dist/services/project-manager.js.map +1 -0
- package/dist/services/project-registry.d.ts +98 -0
- package/dist/services/project-registry.d.ts.map +1 -0
- package/dist/services/project-registry.js +289 -0
- package/dist/services/project-registry.js.map +1 -0
- package/dist/services/prompt-resolver.d.ts +97 -0
- package/dist/services/prompt-resolver.d.ts.map +1 -0
- package/dist/services/prompt-resolver.js +377 -0
- package/dist/services/prompt-resolver.js.map +1 -0
- package/dist/services/repo-info.d.ts +29 -0
- package/dist/services/repo-info.d.ts.map +1 -0
- package/dist/services/repo-info.js +99 -0
- package/dist/services/repo-info.js.map +1 -0
- package/dist/services/watcher.d.ts +3 -4
- package/dist/services/watcher.d.ts.map +1 -1
- package/dist/services/watcher.js +18 -35
- package/dist/services/watcher.js.map +1 -1
- package/dist/services/websocket.d.ts +51 -15
- package/dist/services/websocket.d.ts.map +1 -1
- package/dist/services/websocket.js +169 -40
- package/dist/services/websocket.js.map +1 -1
- package/dist/services/worktree-sync-service.d.ts +228 -0
- package/dist/services/worktree-sync-service.d.ts.map +1 -0
- package/dist/services/worktree-sync-service.js +563 -0
- package/dist/services/worktree-sync-service.js.map +1 -0
- package/dist/types/editor.d.ts +49 -0
- package/dist/types/editor.d.ts.map +1 -0
- package/dist/types/editor.js +50 -0
- package/dist/types/editor.js.map +1 -0
- package/dist/types/project.d.ts +58 -0
- package/dist/types/project.d.ts.map +1 -0
- package/dist/types/project.js +10 -0
- package/dist/types/project.js.map +1 -0
- package/dist/utils/executable-check.d.ts +36 -0
- package/dist/utils/executable-check.d.ts.map +1 -0
- package/dist/utils/executable-check.js +79 -0
- package/dist/utils/executable-check.js.map +1 -0
- package/dist/workers/execution-worker.d.ts +18 -0
- package/dist/workers/execution-worker.d.ts.map +1 -0
- package/dist/workers/execution-worker.js +340 -0
- package/dist/workers/execution-worker.js.map +1 -0
- package/dist/workers/worker-ipc.d.ts +84 -0
- package/dist/workers/worker-ipc.d.ts.map +1 -0
- package/dist/workers/worker-ipc.js +29 -0
- package/dist/workers/worker-ipc.js.map +1 -0
- package/package.json +6 -4
- package/dist/execution/engine/engine.d.ts +0 -103
- package/dist/execution/engine/engine.d.ts.map +0 -1
- package/dist/execution/engine/engine.js +0 -10
- package/dist/execution/engine/engine.js.map +0 -1
- package/dist/execution/engine/simple-engine.d.ts +0 -190
- package/dist/execution/engine/simple-engine.d.ts.map +0 -1
- package/dist/execution/engine/simple-engine.js +0 -611
- package/dist/execution/engine/simple-engine.js.map +0 -1
- package/dist/execution/engine/types.d.ts +0 -116
- package/dist/execution/engine/types.d.ts.map +0 -1
- package/dist/execution/engine/types.js +0 -10
- package/dist/execution/engine/types.js.map +0 -1
- package/dist/execution/output/ag-ui-integration.d.ts +0 -96
- package/dist/execution/output/ag-ui-integration.d.ts.map +0 -1
- package/dist/execution/output/ag-ui-integration.js +0 -96
- package/dist/execution/output/ag-ui-integration.js.map +0 -1
- package/dist/execution/output/claude-code-output-processor.d.ts +0 -321
- package/dist/execution/output/claude-code-output-processor.d.ts.map +0 -1
- package/dist/execution/output/claude-code-output-processor.js +0 -769
- package/dist/execution/output/claude-code-output-processor.js.map +0 -1
- package/dist/execution/process/index.d.ts +0 -15
- package/dist/execution/process/index.d.ts.map +0 -1
- package/dist/execution/process/index.js +0 -15
- package/dist/execution/process/index.js.map +0 -1
- package/dist/execution/process/manager.d.ts +0 -133
- package/dist/execution/process/manager.d.ts.map +0 -1
- package/dist/execution/process/manager.js +0 -10
- package/dist/execution/process/manager.js.map +0 -1
- package/dist/execution/process/simple-manager.d.ts +0 -102
- package/dist/execution/process/simple-manager.d.ts.map +0 -1
- package/dist/execution/process/simple-manager.js +0 -336
- package/dist/execution/process/simple-manager.js.map +0 -1
- package/dist/execution/process/types.d.ts +0 -105
- package/dist/execution/process/types.d.ts.map +0 -1
- package/dist/execution/process/types.js +0 -10
- package/dist/execution/process/types.js.map +0 -1
- package/dist/execution/process/utils.d.ts +0 -53
- package/dist/execution/process/utils.d.ts.map +0 -1
- package/dist/execution/process/utils.js +0 -97
- package/dist/execution/process/utils.js.map +0 -1
- package/dist/execution/resilience/circuit-breaker.d.ts +0 -170
- package/dist/execution/resilience/circuit-breaker.d.ts.map +0 -1
- package/dist/execution/resilience/circuit-breaker.js +0 -291
- package/dist/execution/resilience/circuit-breaker.js.map +0 -1
- package/dist/execution/resilience/executor.d.ts +0 -109
- package/dist/execution/resilience/executor.d.ts.map +0 -1
- package/dist/execution/resilience/executor.js +0 -10
- package/dist/execution/resilience/executor.js.map +0 -1
- package/dist/execution/resilience/index.d.ts +0 -14
- package/dist/execution/resilience/index.d.ts.map +0 -1
- package/dist/execution/resilience/index.js +0 -15
- package/dist/execution/resilience/index.js.map +0 -1
- package/dist/execution/resilience/resilient-executor.d.ts +0 -86
- package/dist/execution/resilience/resilient-executor.d.ts.map +0 -1
- package/dist/execution/resilience/resilient-executor.js +0 -261
- package/dist/execution/resilience/resilient-executor.js.map +0 -1
- package/dist/execution/resilience/retry.d.ts +0 -161
- package/dist/execution/resilience/retry.d.ts.map +0 -1
- package/dist/execution/resilience/retry.js +0 -234
- package/dist/execution/resilience/retry.js.map +0 -1
- package/dist/execution/resilience/types.d.ts +0 -226
- package/dist/execution/resilience/types.d.ts.map +0 -1
- package/dist/execution/resilience/types.js +0 -30
- package/dist/execution/resilience/types.js.map +0 -1
- package/dist/execution/workflow/index.d.ts +0 -13
- package/dist/execution/workflow/index.d.ts.map +0 -1
- package/dist/execution/workflow/index.js +0 -13
- package/dist/execution/workflow/index.js.map +0 -1
- package/dist/execution/workflow/linear-orchestrator.d.ts +0 -216
- package/dist/execution/workflow/linear-orchestrator.d.ts.map +0 -1
- package/dist/execution/workflow/linear-orchestrator.js +0 -683
- package/dist/execution/workflow/linear-orchestrator.js.map +0 -1
- package/dist/execution/workflow/memory-storage.d.ts +0 -54
- package/dist/execution/workflow/memory-storage.d.ts.map +0 -1
- package/dist/execution/workflow/memory-storage.js +0 -68
- package/dist/execution/workflow/memory-storage.js.map +0 -1
- package/dist/execution/workflow/orchestrator.d.ts +0 -158
- package/dist/execution/workflow/orchestrator.d.ts.map +0 -1
- package/dist/execution/workflow/orchestrator.js +0 -9
- package/dist/execution/workflow/orchestrator.js.map +0 -1
- package/dist/execution/workflow/types.d.ts +0 -172
- package/dist/execution/workflow/types.d.ts.map +0 -1
- package/dist/execution/workflow/types.js +0 -9
- package/dist/execution/workflow/types.js.map +0 -1
- package/dist/execution/workflow/utils.d.ts +0 -89
- package/dist/execution/workflow/utils.d.ts.map +0 -1
- package/dist/execution/workflow/utils.js +0 -152
- package/dist/execution/workflow/utils.js.map +0 -1
- package/dist/public/assets/index-BvlblDHK.js +0 -570
- package/dist/public/assets/index-BvlblDHK.js.map +0 -1
- package/dist/public/assets/index-BwuKdLgN.css +0 -1
- package/dist/public/assets/ui-vendor-CotR6bx9.js +0 -54
- package/dist/public/assets/ui-vendor-CotR6bx9.js.map +0 -1
|
@@ -0,0 +1,272 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent Registry Service
|
|
3
|
+
*
|
|
4
|
+
* Centralized service for managing agent adapters and providing agent discovery.
|
|
5
|
+
* Wraps the agent-execution-engine's AgentRegistry with sudocode-specific logic.
|
|
6
|
+
*/
|
|
7
|
+
import { AgentRegistry } from "agent-execution-engine/agents";
|
|
8
|
+
import { ClaudeCodeAdapter } from "../execution/adapters/claude-adapter.js";
|
|
9
|
+
import { CodexAdapter } from "../execution/adapters/codex-adapter.js";
|
|
10
|
+
import { CursorAdapter } from "../execution/adapters/cursor-adapter.js";
|
|
11
|
+
import { copilotAdapter } from "../execution/adapters/copilot-adapter.js";
|
|
12
|
+
import { verifyExecutable, } from "../utils/executable-check.js";
|
|
13
|
+
/**
|
|
14
|
+
* Error thrown when an agent is not found in the registry
|
|
15
|
+
*/
|
|
16
|
+
export class AgentNotFoundError extends Error {
|
|
17
|
+
constructor(agentType) {
|
|
18
|
+
super(`Agent '${agentType}' not found in registry`);
|
|
19
|
+
this.name = "AgentNotFoundError";
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Error thrown when attempting to use an unimplemented agent
|
|
24
|
+
*/
|
|
25
|
+
export class AgentNotImplementedError extends Error {
|
|
26
|
+
constructor(agentType) {
|
|
27
|
+
super(`Agent '${agentType}' is not yet implemented`);
|
|
28
|
+
this.name = "AgentNotImplementedError";
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
export class AgentRegistryService {
|
|
32
|
+
registry;
|
|
33
|
+
implementedAgents = new Set([
|
|
34
|
+
"claude-code",
|
|
35
|
+
"codex",
|
|
36
|
+
"cursor",
|
|
37
|
+
"copilot",
|
|
38
|
+
]);
|
|
39
|
+
initialized = false;
|
|
40
|
+
/**
|
|
41
|
+
* Map of agent types to their default executable names
|
|
42
|
+
*/
|
|
43
|
+
agentExecutables = {
|
|
44
|
+
"claude-code": "claude",
|
|
45
|
+
codex: "codex",
|
|
46
|
+
cursor: "cursor-agent",
|
|
47
|
+
copilot: "copilot",
|
|
48
|
+
};
|
|
49
|
+
/**
|
|
50
|
+
* Cache for verification results
|
|
51
|
+
* Key: agent type, Value: cached verification result with timestamp
|
|
52
|
+
*/
|
|
53
|
+
verificationCache = new Map();
|
|
54
|
+
/**
|
|
55
|
+
* Cache TTL in milliseconds (default: 24 hours)
|
|
56
|
+
* Set to a very long duration since agent installations rarely change
|
|
57
|
+
*/
|
|
58
|
+
cacheTTL = 24 * 60 * 60 * 1000; // 24 hours
|
|
59
|
+
constructor() {
|
|
60
|
+
this.registry = new AgentRegistry();
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Initialize the registry by registering all agent adapters
|
|
64
|
+
* Called automatically on first use (lazy initialization)
|
|
65
|
+
*/
|
|
66
|
+
initialize() {
|
|
67
|
+
if (this.initialized) {
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
// Register fully implemented adapters
|
|
71
|
+
this.registry.register(new ClaudeCodeAdapter());
|
|
72
|
+
this.registry.register(new CodexAdapter());
|
|
73
|
+
this.registry.register(new CursorAdapter());
|
|
74
|
+
this.registry.register(copilotAdapter);
|
|
75
|
+
this.initialized = true;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Get all available agents with their metadata and implementation status
|
|
79
|
+
*
|
|
80
|
+
* @returns Array of agent information
|
|
81
|
+
*/
|
|
82
|
+
getAvailableAgents() {
|
|
83
|
+
this.initialize();
|
|
84
|
+
return this.registry.getAll().map((adapter) => ({
|
|
85
|
+
...adapter.metadata,
|
|
86
|
+
implemented: this.implementedAgents.has(adapter.metadata.name),
|
|
87
|
+
}));
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Get an agent adapter by type
|
|
91
|
+
*
|
|
92
|
+
* @param agentType - The agent type to retrieve
|
|
93
|
+
* @returns The agent adapter
|
|
94
|
+
* @throws {AgentNotFoundError} If agent is not registered
|
|
95
|
+
*/
|
|
96
|
+
getAdapter(agentType) {
|
|
97
|
+
this.initialize();
|
|
98
|
+
const adapter = this.registry.get(agentType);
|
|
99
|
+
if (!adapter) {
|
|
100
|
+
throw new AgentNotFoundError(agentType);
|
|
101
|
+
}
|
|
102
|
+
return adapter;
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Check if an agent is fully implemented
|
|
106
|
+
*
|
|
107
|
+
* @param agentType - The agent type to check
|
|
108
|
+
* @returns True if the agent is implemented, false if it's a stub
|
|
109
|
+
*/
|
|
110
|
+
isAgentImplemented(agentType) {
|
|
111
|
+
this.initialize();
|
|
112
|
+
return this.implementedAgents.has(agentType);
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Check if an agent is registered in the registry
|
|
116
|
+
*
|
|
117
|
+
* @param agentType - The agent type to check
|
|
118
|
+
* @returns True if the agent is registered
|
|
119
|
+
*/
|
|
120
|
+
hasAgent(agentType) {
|
|
121
|
+
this.initialize();
|
|
122
|
+
return this.registry.has(agentType);
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Mark an agent as implemented
|
|
126
|
+
* Used when upgrading a stub adapter to a full implementation
|
|
127
|
+
*
|
|
128
|
+
* @param agentType - The agent type to mark as implemented
|
|
129
|
+
*/
|
|
130
|
+
markAsImplemented(agentType) {
|
|
131
|
+
this.initialize();
|
|
132
|
+
if (!this.hasAgent(agentType)) {
|
|
133
|
+
throw new AgentNotFoundError(agentType);
|
|
134
|
+
}
|
|
135
|
+
this.implementedAgents.add(agentType);
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Check if cached verification is still valid
|
|
139
|
+
*
|
|
140
|
+
* @param agentType - The agent type to check
|
|
141
|
+
* @returns Cached result if valid, undefined otherwise
|
|
142
|
+
*/
|
|
143
|
+
getCachedVerification(agentType) {
|
|
144
|
+
const cached = this.verificationCache.get(agentType);
|
|
145
|
+
if (!cached) {
|
|
146
|
+
return undefined;
|
|
147
|
+
}
|
|
148
|
+
const age = Date.now() - cached.timestamp;
|
|
149
|
+
if (age > this.cacheTTL) {
|
|
150
|
+
// Cache expired, remove it
|
|
151
|
+
this.verificationCache.delete(agentType);
|
|
152
|
+
return undefined;
|
|
153
|
+
}
|
|
154
|
+
return cached.result;
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Cache a verification result
|
|
158
|
+
*
|
|
159
|
+
* @param agentType - The agent type
|
|
160
|
+
* @param result - The verification result to cache
|
|
161
|
+
*/
|
|
162
|
+
cacheVerification(agentType, result) {
|
|
163
|
+
this.verificationCache.set(agentType, {
|
|
164
|
+
result,
|
|
165
|
+
timestamp: Date.now(),
|
|
166
|
+
});
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* Clear verification cache for a specific agent or all agents
|
|
170
|
+
*
|
|
171
|
+
* @param agentType - Optional agent type to clear. If not provided, clears all cache.
|
|
172
|
+
*/
|
|
173
|
+
clearVerificationCache(agentType) {
|
|
174
|
+
if (agentType) {
|
|
175
|
+
this.verificationCache.delete(agentType);
|
|
176
|
+
}
|
|
177
|
+
else {
|
|
178
|
+
this.verificationCache.clear();
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* Verify if a specific agent's executable is available on the system
|
|
183
|
+
* Results are cached for performance
|
|
184
|
+
*
|
|
185
|
+
* @param agentType - The agent type to verify
|
|
186
|
+
* @param skipCache - If true, bypass cache and perform fresh verification
|
|
187
|
+
* @returns Promise<VerificationResult>
|
|
188
|
+
*/
|
|
189
|
+
async verifyAgent(agentType, skipCache = false) {
|
|
190
|
+
this.initialize();
|
|
191
|
+
// Check cache first unless skipCache is true
|
|
192
|
+
if (!skipCache) {
|
|
193
|
+
const cached = this.getCachedVerification(agentType);
|
|
194
|
+
if (cached) {
|
|
195
|
+
return cached;
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
// Check if agent is registered
|
|
199
|
+
if (!this.hasAgent(agentType)) {
|
|
200
|
+
const result = {
|
|
201
|
+
available: false,
|
|
202
|
+
error: `Agent '${agentType}' not found in registry`,
|
|
203
|
+
};
|
|
204
|
+
this.cacheVerification(agentType, result);
|
|
205
|
+
return result;
|
|
206
|
+
}
|
|
207
|
+
// Check if agent is implemented
|
|
208
|
+
if (!this.isAgentImplemented(agentType)) {
|
|
209
|
+
const result = {
|
|
210
|
+
available: false,
|
|
211
|
+
error: `Agent '${agentType}' is not yet implemented`,
|
|
212
|
+
};
|
|
213
|
+
this.cacheVerification(agentType, result);
|
|
214
|
+
return result;
|
|
215
|
+
}
|
|
216
|
+
// Get the default executable name for this agent
|
|
217
|
+
const executableName = this.agentExecutables[agentType];
|
|
218
|
+
if (!executableName) {
|
|
219
|
+
const result = {
|
|
220
|
+
available: false,
|
|
221
|
+
error: `No executable mapping found for agent '${agentType}'`,
|
|
222
|
+
};
|
|
223
|
+
this.cacheVerification(agentType, result);
|
|
224
|
+
return result;
|
|
225
|
+
}
|
|
226
|
+
// Verify the executable exists
|
|
227
|
+
const result = await verifyExecutable(executableName);
|
|
228
|
+
this.cacheVerification(agentType, result);
|
|
229
|
+
return result;
|
|
230
|
+
}
|
|
231
|
+
/**
|
|
232
|
+
* Verify all implemented agents and return their availability status
|
|
233
|
+
*
|
|
234
|
+
* @returns Promise<Map<string, VerificationResult>>
|
|
235
|
+
*/
|
|
236
|
+
async verifyAllAgents() {
|
|
237
|
+
this.initialize();
|
|
238
|
+
const results = new Map();
|
|
239
|
+
// Get all implemented agents
|
|
240
|
+
const agents = this.getAvailableAgents().filter((agent) => agent.implemented);
|
|
241
|
+
// Verify each agent in parallel
|
|
242
|
+
await Promise.all(agents.map(async (agent) => {
|
|
243
|
+
const result = await this.verifyAgent(agent.name);
|
|
244
|
+
results.set(agent.name, result);
|
|
245
|
+
}));
|
|
246
|
+
return results;
|
|
247
|
+
}
|
|
248
|
+
/**
|
|
249
|
+
* Get all available agents with their verification status included
|
|
250
|
+
*
|
|
251
|
+
* @returns Promise<AgentInfo[]> - Array of agent information with availability status
|
|
252
|
+
*/
|
|
253
|
+
async getAvailableAgentsWithVerification() {
|
|
254
|
+
this.initialize();
|
|
255
|
+
const agents = this.getAvailableAgents();
|
|
256
|
+
const verificationResults = await this.verifyAllAgents();
|
|
257
|
+
return agents.map((agent) => {
|
|
258
|
+
const verification = verificationResults.get(agent.name);
|
|
259
|
+
return {
|
|
260
|
+
...agent,
|
|
261
|
+
available: verification?.available,
|
|
262
|
+
executablePath: verification?.path,
|
|
263
|
+
verificationError: verification?.error,
|
|
264
|
+
};
|
|
265
|
+
});
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
/**
|
|
269
|
+
* Global agent registry service instance
|
|
270
|
+
*/
|
|
271
|
+
export const agentRegistryService = new AgentRegistryService();
|
|
272
|
+
//# sourceMappingURL=agent-registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-registry.js","sourceRoot":"","sources":["../../src/services/agent-registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"db.d.ts","sourceRoot":"","sources":["../../src/services/db.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,QAAQ,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"db.d.ts","sourceRoot":"","sources":["../../src/services/db.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AAOtC;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,cAAc,GAAG,QAAQ,CAAC,QAAQ,CA8CtE;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,GAAG,OAAO,CAa3D;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ;;;;EAqBpD;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAEzD"}
|
package/dist/services/db.js
CHANGED
|
@@ -5,7 +5,8 @@
|
|
|
5
5
|
import Database from "better-sqlite3";
|
|
6
6
|
import * as path from "path";
|
|
7
7
|
import * as fs from "fs";
|
|
8
|
-
import
|
|
8
|
+
import * as schema from "@sudocode-ai/types/schema";
|
|
9
|
+
import { runMigrations } from "@sudocode-ai/types/migrations";
|
|
9
10
|
import { initializeDefaultTemplates } from "./prompt-templates.js";
|
|
10
11
|
/**
|
|
11
12
|
* Initialize database with CLI schema + server extensions
|
|
@@ -26,19 +27,23 @@ export function initDatabase(config) {
|
|
|
26
27
|
if (readOnly) {
|
|
27
28
|
return db;
|
|
28
29
|
}
|
|
29
|
-
//
|
|
30
|
-
db.
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
db
|
|
38
|
-
// Create indexes
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
30
|
+
// Apply database configuration
|
|
31
|
+
db.exec(schema.DB_CONFIG);
|
|
32
|
+
// Create all tables (CLI + server-specific)
|
|
33
|
+
for (const table of schema.ALL_TABLES) {
|
|
34
|
+
db.exec(table);
|
|
35
|
+
}
|
|
36
|
+
// Run any pending migrations BEFORE creating indexes
|
|
37
|
+
// (migrations might alter table schemas that indexes depend on)
|
|
38
|
+
runMigrations(db);
|
|
39
|
+
// Create all indexes (CLI + server-specific)
|
|
40
|
+
for (const indexes of schema.ALL_INDEXES) {
|
|
41
|
+
db.exec(indexes);
|
|
42
|
+
}
|
|
43
|
+
// Create all views
|
|
44
|
+
for (const view of schema.ALL_VIEWS) {
|
|
45
|
+
db.exec(view);
|
|
46
|
+
}
|
|
42
47
|
// Initialize default prompt templates
|
|
43
48
|
initializeDefaultTemplates(db);
|
|
44
49
|
return db;
|
package/dist/services/db.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"db.js","sourceRoot":"","sources":["../../src/services/db.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AACtC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,
|
|
1
|
+
{"version":3,"file":"db.js","sourceRoot":"","sources":["../../src/services/db.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AACtC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,MAAM,MAAM,2BAA2B,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,EAAE,0BAA0B,EAAE,MAAM,uBAAuB,CAAC;AAUnE;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,MAAsB;IACjD,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,GAAG,KAAK,EAAE,GAAG,MAAM,CAAC;IAElD,0BAA0B;IAC1B,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACjC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACxB,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACzC,CAAC;IAED,gBAAgB;IAChB,MAAM,EAAE,GAAG,IAAI,QAAQ,CAAC,MAAM,EAAE;QAC9B,QAAQ,EAAE,QAAQ;QAClB,aAAa,EAAE,KAAK;KACrB,CAAC,CAAC;IAEH,mCAAmC;IACnC,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,+BAA+B;IAC/B,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAE1B,4CAA4C;IAC5C,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;QACtC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACjB,CAAC;IAED,qDAAqD;IACrD,gEAAgE;IAChE,aAAa,CAAC,EAAE,CAAC,CAAC;IAElB,6CAA6C;IAC7C,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;QACzC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACnB,CAAC;IAED,mBAAmB;IACnB,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;QACpC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAChB,CAAC;IAED,sCAAsC;IACtC,0BAA0B,CAAC,EAAE,CAAC,CAAC;IAE/B,OAAO,EAAE,CAAC;AACZ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,EAAqB;IAChD,MAAM,MAAM,GAAG,EAAE;SACd,OAAO,CACN;;;;;GAKH,CACE;SACA,GAAG,EAAuB,CAAC;IAE9B,OAAO,MAAM,CAAC,KAAK,KAAK,CAAC,CAAC;AAC5B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,EAAqB;IACnD,MAAM,MAAM,GAAG,EAAE;SACd,OAAO,CACN;;;;;GAKH,CACE;SACA,GAAG,EAAwB,CAAC;IAE/B,MAAM,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC,GAAG,EAEpD,CAAC;IAEF,OAAO;QACL,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QACjC,OAAO,EAAE,OAAO,CAAC,YAAY;QAC7B,YAAY,EAAE,YAAY,CAAC,EAAE,CAAC;KAC/B,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,EAAqB;IACjD,EAAE,CAAC,KAAK,EAAE,CAAC;AACb,CAAC"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* EditorService - Manages IDE opening functionality
|
|
3
|
+
*/
|
|
4
|
+
import { EditorType, EditorConfig } from "../types/editor.js";
|
|
5
|
+
/**
|
|
6
|
+
* EditorService handles IDE opening operations
|
|
7
|
+
*/
|
|
8
|
+
export declare class EditorService {
|
|
9
|
+
private repoPath;
|
|
10
|
+
private configCache;
|
|
11
|
+
private configCacheTime;
|
|
12
|
+
private readonly CONFIG_CACHE_TTL;
|
|
13
|
+
constructor(repoPath: string);
|
|
14
|
+
/**
|
|
15
|
+
* Load editor configuration from .sudocode/config.local.json
|
|
16
|
+
* Falls back to default (VS Code) if file doesn't exist
|
|
17
|
+
*/
|
|
18
|
+
loadConfig(): Promise<EditorConfig>;
|
|
19
|
+
/**
|
|
20
|
+
* Get command name for editor type
|
|
21
|
+
*/
|
|
22
|
+
getCommand(editorType: EditorType, customCommand?: string): string;
|
|
23
|
+
/**
|
|
24
|
+
* Check if editor command is available using 'which' package
|
|
25
|
+
*/
|
|
26
|
+
checkAvailability(command: string): Promise<boolean>;
|
|
27
|
+
/**
|
|
28
|
+
* Spawn editor process with worktree path
|
|
29
|
+
*
|
|
30
|
+
* @param worktreePath - Absolute path to worktree directory
|
|
31
|
+
* @param config - Editor configuration
|
|
32
|
+
* @throws EditorOpenError if spawn fails
|
|
33
|
+
*/
|
|
34
|
+
spawnEditor(worktreePath: string, config: EditorConfig): Promise<void>;
|
|
35
|
+
/**
|
|
36
|
+
* Open worktree in IDE using configured editor
|
|
37
|
+
*
|
|
38
|
+
* @param worktreePath - Absolute path to worktree directory
|
|
39
|
+
* @param editorTypeOverride - Optional editor type override for this operation
|
|
40
|
+
*/
|
|
41
|
+
openWorktree(worktreePath: string, editorTypeOverride?: EditorType): Promise<void>;
|
|
42
|
+
/**
|
|
43
|
+
* Check availability of all supported editors
|
|
44
|
+
* Useful for settings UI to show which editors are installed
|
|
45
|
+
*/
|
|
46
|
+
checkAllAvailability(): Promise<Record<EditorType, boolean>>;
|
|
47
|
+
/**
|
|
48
|
+
* Get human-readable editor name for error messages
|
|
49
|
+
*/
|
|
50
|
+
private getEditorName;
|
|
51
|
+
/**
|
|
52
|
+
* Clear the config cache
|
|
53
|
+
* Useful for testing or when config file is updated
|
|
54
|
+
*/
|
|
55
|
+
clearCache(): void;
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=editor-service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"editor-service.d.ts","sourceRoot":"","sources":["../../src/services/editor-service.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAmB,MAAM,oBAAoB,CAAC;AAsB/E;;GAEG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,WAAW,CAA6B;IAChD,OAAO,CAAC,eAAe,CAAa;IACpC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAiB;gBAEtC,QAAQ,EAAE,MAAM;IAI5B;;;OAGG;IACG,UAAU,IAAI,OAAO,CAAC,YAAY,CAAC;IAkDzC;;OAEG;IACH,UAAU,CAAC,UAAU,EAAE,UAAU,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,MAAM;IAOlE;;OAEG;IACG,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAS1D;;;;;;OAMG;IACG,WAAW,CAAC,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAoE5E;;;;;OAKG;IACG,YAAY,CAChB,YAAY,EAAE,MAAM,EACpB,kBAAkB,CAAC,EAAE,UAAU,GAC9B,OAAO,CAAC,IAAI,CAAC;IAehB;;;OAGG;IACG,oBAAoB,IAAI,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IAiBlE;;OAEG;IACH,OAAO,CAAC,aAAa;IAarB;;;OAGG;IACH,UAAU,IAAI,IAAI;CAInB"}
|
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* EditorService - Manages IDE opening functionality
|
|
3
|
+
*/
|
|
4
|
+
import { spawn } from "child_process";
|
|
5
|
+
import * as fs from "fs/promises";
|
|
6
|
+
import * as path from "path";
|
|
7
|
+
import which from "which";
|
|
8
|
+
import { EditorType, EditorOpenError } from "../types/editor.js";
|
|
9
|
+
/**
|
|
10
|
+
* Command mapping for each editor type
|
|
11
|
+
*/
|
|
12
|
+
const EDITOR_COMMANDS = {
|
|
13
|
+
[EditorType.VS_CODE]: "code",
|
|
14
|
+
[EditorType.CURSOR]: "cursor",
|
|
15
|
+
[EditorType.WINDSURF]: "windsurf",
|
|
16
|
+
[EditorType.INTELLIJ]: "idea",
|
|
17
|
+
[EditorType.ZED]: "zed",
|
|
18
|
+
[EditorType.XCODE]: "xed",
|
|
19
|
+
[EditorType.CUSTOM]: "", // Handled specially via customCommand
|
|
20
|
+
};
|
|
21
|
+
/**
|
|
22
|
+
* Default editor configuration
|
|
23
|
+
*/
|
|
24
|
+
const DEFAULT_CONFIG = {
|
|
25
|
+
editorType: EditorType.VS_CODE,
|
|
26
|
+
};
|
|
27
|
+
/**
|
|
28
|
+
* EditorService handles IDE opening operations
|
|
29
|
+
*/
|
|
30
|
+
export class EditorService {
|
|
31
|
+
repoPath;
|
|
32
|
+
configCache = null;
|
|
33
|
+
configCacheTime = 0;
|
|
34
|
+
CONFIG_CACHE_TTL = 5 * 60 * 1000; // 5 minutes
|
|
35
|
+
constructor(repoPath) {
|
|
36
|
+
this.repoPath = repoPath;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Load editor configuration from .sudocode/config.local.json
|
|
40
|
+
* Falls back to default (VS Code) if file doesn't exist
|
|
41
|
+
*/
|
|
42
|
+
async loadConfig() {
|
|
43
|
+
// Check cache
|
|
44
|
+
const now = Date.now();
|
|
45
|
+
if (this.configCache &&
|
|
46
|
+
now - this.configCacheTime < this.CONFIG_CACHE_TTL) {
|
|
47
|
+
return this.configCache;
|
|
48
|
+
}
|
|
49
|
+
const configPath = path.join(this.repoPath, ".sudocode", "config.local.json");
|
|
50
|
+
try {
|
|
51
|
+
const content = await fs.readFile(configPath, "utf-8");
|
|
52
|
+
const parsed = JSON.parse(content);
|
|
53
|
+
if (parsed.editor && typeof parsed.editor.editorType === "string") {
|
|
54
|
+
const config = {
|
|
55
|
+
editorType: parsed.editor.editorType,
|
|
56
|
+
customCommand: parsed.editor.customCommand,
|
|
57
|
+
};
|
|
58
|
+
// Validate editor type
|
|
59
|
+
if (!Object.values(EditorType).includes(config.editorType)) {
|
|
60
|
+
console.warn(`Invalid editor type in config: ${config.editorType}, using default`);
|
|
61
|
+
return DEFAULT_CONFIG;
|
|
62
|
+
}
|
|
63
|
+
// Cache the config
|
|
64
|
+
this.configCache = config;
|
|
65
|
+
this.configCacheTime = now;
|
|
66
|
+
return config;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
catch (error) {
|
|
70
|
+
// Config file doesn't exist or is invalid, use default
|
|
71
|
+
if (error.code !== "ENOENT") {
|
|
72
|
+
console.warn("Failed to load editor config:", error);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
return DEFAULT_CONFIG;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Get command name for editor type
|
|
79
|
+
*/
|
|
80
|
+
getCommand(editorType, customCommand) {
|
|
81
|
+
if (editorType === EditorType.CUSTOM) {
|
|
82
|
+
return customCommand || EDITOR_COMMANDS[EditorType.VS_CODE];
|
|
83
|
+
}
|
|
84
|
+
return EDITOR_COMMANDS[editorType];
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Check if editor command is available using 'which' package
|
|
88
|
+
*/
|
|
89
|
+
async checkAvailability(command) {
|
|
90
|
+
try {
|
|
91
|
+
await which(command);
|
|
92
|
+
return true;
|
|
93
|
+
}
|
|
94
|
+
catch {
|
|
95
|
+
return false;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Spawn editor process with worktree path
|
|
100
|
+
*
|
|
101
|
+
* @param worktreePath - Absolute path to worktree directory
|
|
102
|
+
* @param config - Editor configuration
|
|
103
|
+
* @throws EditorOpenError if spawn fails
|
|
104
|
+
*/
|
|
105
|
+
async spawnEditor(worktreePath, config) {
|
|
106
|
+
const command = this.getCommand(config.editorType, config.customCommand);
|
|
107
|
+
// Check if command is available
|
|
108
|
+
const isAvailable = await this.checkAvailability(command);
|
|
109
|
+
if (!isAvailable) {
|
|
110
|
+
throw new EditorOpenError("EDITOR_NOT_FOUND", config.editorType, `Editor '${command}' not found in PATH`, `Please install ${this.getEditorName(config.editorType)} or configure a different editor`);
|
|
111
|
+
}
|
|
112
|
+
// Check if worktree path exists
|
|
113
|
+
try {
|
|
114
|
+
await fs.access(worktreePath);
|
|
115
|
+
const stats = await fs.stat(worktreePath);
|
|
116
|
+
if (!stats.isDirectory()) {
|
|
117
|
+
throw new EditorOpenError("WORKTREE_MISSING", config.editorType, `Worktree path is not a directory: ${worktreePath}`, "The worktree path must be a valid directory");
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
catch (error) {
|
|
121
|
+
if (error.code === "ENOENT") {
|
|
122
|
+
throw new EditorOpenError("WORKTREE_MISSING", config.editorType, `Worktree directory not found: ${worktreePath}`, "The worktree may have been deleted or the path is incorrect");
|
|
123
|
+
}
|
|
124
|
+
// If it's already an EditorOpenError, re-throw it
|
|
125
|
+
if (error instanceof EditorOpenError) {
|
|
126
|
+
throw error;
|
|
127
|
+
}
|
|
128
|
+
// For other filesystem errors, wrap them
|
|
129
|
+
throw new EditorOpenError("WORKTREE_MISSING", config.editorType, `Cannot access worktree directory: ${worktreePath}`, error instanceof Error ? error.message : String(error));
|
|
130
|
+
}
|
|
131
|
+
try {
|
|
132
|
+
// Spawn in detached mode
|
|
133
|
+
const child = spawn(command, [worktreePath], {
|
|
134
|
+
detached: true,
|
|
135
|
+
stdio: "ignore",
|
|
136
|
+
cwd: worktreePath,
|
|
137
|
+
});
|
|
138
|
+
// Unref so parent process doesn't wait for child
|
|
139
|
+
child.unref();
|
|
140
|
+
}
|
|
141
|
+
catch (error) {
|
|
142
|
+
throw new EditorOpenError("SPAWN_FAILED", config.editorType, `Failed to launch editor '${command}'`, error instanceof Error ? error.message : String(error));
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Open worktree in IDE using configured editor
|
|
147
|
+
*
|
|
148
|
+
* @param worktreePath - Absolute path to worktree directory
|
|
149
|
+
* @param editorTypeOverride - Optional editor type override for this operation
|
|
150
|
+
*/
|
|
151
|
+
async openWorktree(worktreePath, editorTypeOverride) {
|
|
152
|
+
// Load config
|
|
153
|
+
let config = await this.loadConfig();
|
|
154
|
+
// Apply override if provided
|
|
155
|
+
if (editorTypeOverride) {
|
|
156
|
+
config = {
|
|
157
|
+
...config,
|
|
158
|
+
editorType: editorTypeOverride,
|
|
159
|
+
};
|
|
160
|
+
}
|
|
161
|
+
await this.spawnEditor(worktreePath, config);
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Check availability of all supported editors
|
|
165
|
+
* Useful for settings UI to show which editors are installed
|
|
166
|
+
*/
|
|
167
|
+
async checkAllAvailability() {
|
|
168
|
+
const results = {};
|
|
169
|
+
for (const editorType of Object.values(EditorType)) {
|
|
170
|
+
if (editorType === EditorType.CUSTOM) {
|
|
171
|
+
// Custom editors can't be checked without knowing the command
|
|
172
|
+
results[editorType] = false;
|
|
173
|
+
continue;
|
|
174
|
+
}
|
|
175
|
+
const command = this.getCommand(editorType);
|
|
176
|
+
results[editorType] = await this.checkAvailability(command);
|
|
177
|
+
}
|
|
178
|
+
return results;
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* Get human-readable editor name for error messages
|
|
182
|
+
*/
|
|
183
|
+
getEditorName(editorType) {
|
|
184
|
+
const names = {
|
|
185
|
+
[EditorType.VS_CODE]: "Visual Studio Code",
|
|
186
|
+
[EditorType.CURSOR]: "Cursor",
|
|
187
|
+
[EditorType.WINDSURF]: "Windsurf",
|
|
188
|
+
[EditorType.INTELLIJ]: "IntelliJ IDEA",
|
|
189
|
+
[EditorType.ZED]: "Zed",
|
|
190
|
+
[EditorType.XCODE]: "Xcode",
|
|
191
|
+
[EditorType.CUSTOM]: "Custom Editor",
|
|
192
|
+
};
|
|
193
|
+
return names[editorType];
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* Clear the config cache
|
|
197
|
+
* Useful for testing or when config file is updated
|
|
198
|
+
*/
|
|
199
|
+
clearCache() {
|
|
200
|
+
this.configCache = null;
|
|
201
|
+
this.configCacheTime = 0;
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
//# sourceMappingURL=editor-service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"editor-service.js","sourceRoot":"","sources":["../../src/services/editor-service.ts"],"names":[],"mappings":"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"}
|