sudocode 1.1.1 → 1.1.3
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 +4 -3
- package/package.json +8 -38
- package/build.js +0 -75
- package/node_modules/@sudocode-ai/cli/README.md +0 -330
- package/node_modules/@sudocode-ai/cli/dist/cli/feedback-commands.d.ts +0 -53
- package/node_modules/@sudocode-ai/cli/dist/cli/feedback-commands.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/cli/feedback-commands.js +0 -274
- package/node_modules/@sudocode-ai/cli/dist/cli/feedback-commands.js.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/cli/init-commands.d.ts +0 -22
- package/node_modules/@sudocode-ai/cli/dist/cli/init-commands.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/cli/init-commands.js +0 -148
- package/node_modules/@sudocode-ai/cli/dist/cli/init-commands.js.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/cli/issue-commands.d.ts +0 -45
- package/node_modules/@sudocode-ai/cli/dist/cli/issue-commands.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/cli/issue-commands.js +0 -310
- package/node_modules/@sudocode-ai/cli/dist/cli/issue-commands.js.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/cli/query-commands.d.ts +0 -18
- package/node_modules/@sudocode-ai/cli/dist/cli/query-commands.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/cli/query-commands.js +0 -61
- package/node_modules/@sudocode-ai/cli/dist/cli/query-commands.js.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/cli/reference-commands.d.ts +0 -22
- package/node_modules/@sudocode-ai/cli/dist/cli/reference-commands.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/cli/reference-commands.js +0 -136
- package/node_modules/@sudocode-ai/cli/dist/cli/reference-commands.js.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/cli/relationship-commands.d.ts +0 -14
- package/node_modules/@sudocode-ai/cli/dist/cli/relationship-commands.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/cli/relationship-commands.js +0 -76
- package/node_modules/@sudocode-ai/cli/dist/cli/relationship-commands.js.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/cli/server-commands.d.ts +0 -17
- package/node_modules/@sudocode-ai/cli/dist/cli/server-commands.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/cli/server-commands.js +0 -99
- package/node_modules/@sudocode-ai/cli/dist/cli/server-commands.js.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/cli/spec-commands.d.ts +0 -38
- package/node_modules/@sudocode-ai/cli/dist/cli/spec-commands.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/cli/spec-commands.js +0 -321
- package/node_modules/@sudocode-ai/cli/dist/cli/spec-commands.js.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/cli/status-commands.d.ts +0 -17
- package/node_modules/@sudocode-ai/cli/dist/cli/status-commands.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/cli/status-commands.js +0 -131
- package/node_modules/@sudocode-ai/cli/dist/cli/status-commands.js.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/cli/sync-commands.d.ts +0 -24
- package/node_modules/@sudocode-ai/cli/dist/cli/sync-commands.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/cli/sync-commands.js +0 -416
- package/node_modules/@sudocode-ai/cli/dist/cli/sync-commands.js.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/cli/update-commands.d.ts +0 -12
- package/node_modules/@sudocode-ai/cli/dist/cli/update-commands.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/cli/update-commands.js +0 -78
- package/node_modules/@sudocode-ai/cli/dist/cli/update-commands.js.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/cli.d.ts +0 -6
- package/node_modules/@sudocode-ai/cli/dist/cli.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/cli.js +0 -426
- package/node_modules/@sudocode-ai/cli/dist/cli.js.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/db.d.ts +0 -21
- package/node_modules/@sudocode-ai/cli/dist/db.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/db.js +0 -54
- package/node_modules/@sudocode-ai/cli/dist/db.js.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/export.d.ts +0 -79
- package/node_modules/@sudocode-ai/cli/dist/export.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/export.js +0 -195
- package/node_modules/@sudocode-ai/cli/dist/export.js.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/filename-generator.d.ts +0 -30
- package/node_modules/@sudocode-ai/cli/dist/filename-generator.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/filename-generator.js +0 -93
- package/node_modules/@sudocode-ai/cli/dist/filename-generator.js.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/id-generator.d.ts +0 -26
- package/node_modules/@sudocode-ai/cli/dist/id-generator.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/id-generator.js +0 -123
- package/node_modules/@sudocode-ai/cli/dist/id-generator.js.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/import.d.ts +0 -118
- package/node_modules/@sudocode-ai/cli/dist/import.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/import.js +0 -608
- package/node_modules/@sudocode-ai/cli/dist/import.js.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/index.d.ts +0 -13
- package/node_modules/@sudocode-ai/cli/dist/index.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/index.js +0 -13
- package/node_modules/@sudocode-ai/cli/dist/index.js.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/jsonl.d.ts +0 -69
- package/node_modules/@sudocode-ai/cli/dist/jsonl.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/jsonl.js +0 -333
- package/node_modules/@sudocode-ai/cli/dist/jsonl.js.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/markdown.d.ts +0 -146
- package/node_modules/@sudocode-ai/cli/dist/markdown.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/markdown.js +0 -357
- package/node_modules/@sudocode-ai/cli/dist/markdown.js.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/migrations.d.ts +0 -23
- package/node_modules/@sudocode-ai/cli/dist/migrations.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/migrations.js +0 -57
- package/node_modules/@sudocode-ai/cli/dist/migrations.js.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/operations/events.d.ts +0 -53
- package/node_modules/@sudocode-ai/cli/dist/operations/events.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/operations/events.js +0 -108
- package/node_modules/@sudocode-ai/cli/dist/operations/events.js.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/operations/feedback-anchors.d.ts +0 -92
- package/node_modules/@sudocode-ai/cli/dist/operations/feedback-anchors.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/operations/feedback-anchors.js +0 -444
- package/node_modules/@sudocode-ai/cli/dist/operations/feedback-anchors.js.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/operations/feedback.d.ts +0 -76
- package/node_modules/@sudocode-ai/cli/dist/operations/feedback.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/operations/feedback.js +0 -234
- package/node_modules/@sudocode-ai/cli/dist/operations/feedback.js.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/operations/index.d.ts +0 -10
- package/node_modules/@sudocode-ai/cli/dist/operations/index.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/operations/index.js +0 -10
- package/node_modules/@sudocode-ai/cli/dist/operations/index.js.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/operations/issues.d.ts +0 -82
- package/node_modules/@sudocode-ai/cli/dist/operations/issues.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/operations/issues.js +0 -411
- package/node_modules/@sudocode-ai/cli/dist/operations/issues.js.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/operations/references.d.ts +0 -34
- package/node_modules/@sudocode-ai/cli/dist/operations/references.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/operations/references.js +0 -117
- package/node_modules/@sudocode-ai/cli/dist/operations/references.js.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/operations/relationships.d.ts +0 -57
- package/node_modules/@sudocode-ai/cli/dist/operations/relationships.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/operations/relationships.js +0 -236
- package/node_modules/@sudocode-ai/cli/dist/operations/relationships.js.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/operations/specs.d.ts +0 -64
- package/node_modules/@sudocode-ai/cli/dist/operations/specs.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/operations/specs.js +0 -290
- package/node_modules/@sudocode-ai/cli/dist/operations/specs.js.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/operations/tags.d.ts +0 -42
- package/node_modules/@sudocode-ai/cli/dist/operations/tags.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/operations/tags.js +0 -127
- package/node_modules/@sudocode-ai/cli/dist/operations/tags.js.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/operations/transactions.d.ts +0 -41
- package/node_modules/@sudocode-ai/cli/dist/operations/transactions.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/operations/transactions.js +0 -111
- package/node_modules/@sudocode-ai/cli/dist/operations/transactions.js.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/sync.d.ts +0 -47
- package/node_modules/@sudocode-ai/cli/dist/sync.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/sync.js +0 -442
- package/node_modules/@sudocode-ai/cli/dist/sync.js.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/test-schema.d.ts +0 -5
- package/node_modules/@sudocode-ai/cli/dist/test-schema.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/test-schema.js +0 -46
- package/node_modules/@sudocode-ai/cli/dist/test-schema.js.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/types.d.ts +0 -7
- package/node_modules/@sudocode-ai/cli/dist/types.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/types.js +0 -7
- package/node_modules/@sudocode-ai/cli/dist/types.js.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/update-checker.d.ts +0 -24
- package/node_modules/@sudocode-ai/cli/dist/update-checker.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/update-checker.js +0 -151
- package/node_modules/@sudocode-ai/cli/dist/update-checker.js.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/version.d.ts +0 -12
- package/node_modules/@sudocode-ai/cli/dist/version.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/version.js +0 -23
- package/node_modules/@sudocode-ai/cli/dist/version.js.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/watcher.d.ts +0 -63
- package/node_modules/@sudocode-ai/cli/dist/watcher.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/watcher.js +0 -438
- package/node_modules/@sudocode-ai/cli/dist/watcher.js.map +0 -1
- package/node_modules/@sudocode-ai/cli/package.json +0 -65
- package/node_modules/@sudocode-ai/local-server/README.md +0 -19
- package/node_modules/@sudocode-ai/local-server/dist/cli.d.ts +0 -7
- package/node_modules/@sudocode-ai/local-server/dist/cli.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/cli.js +0 -7
- package/node_modules/@sudocode-ai/local-server/dist/cli.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/execution/engine/engine.d.ts +0 -103
- package/node_modules/@sudocode-ai/local-server/dist/execution/engine/engine.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/execution/engine/engine.js +0 -10
- package/node_modules/@sudocode-ai/local-server/dist/execution/engine/engine.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/execution/engine/simple-engine.d.ts +0 -190
- package/node_modules/@sudocode-ai/local-server/dist/execution/engine/simple-engine.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/execution/engine/simple-engine.js +0 -611
- package/node_modules/@sudocode-ai/local-server/dist/execution/engine/simple-engine.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/execution/engine/types.d.ts +0 -116
- package/node_modules/@sudocode-ai/local-server/dist/execution/engine/types.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/execution/engine/types.js +0 -10
- package/node_modules/@sudocode-ai/local-server/dist/execution/engine/types.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/execution/output/ag-ui-adapter.d.ts +0 -176
- package/node_modules/@sudocode-ai/local-server/dist/execution/output/ag-ui-adapter.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/execution/output/ag-ui-adapter.js +0 -438
- package/node_modules/@sudocode-ai/local-server/dist/execution/output/ag-ui-adapter.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/execution/output/ag-ui-integration.d.ts +0 -96
- package/node_modules/@sudocode-ai/local-server/dist/execution/output/ag-ui-integration.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/execution/output/ag-ui-integration.js +0 -96
- package/node_modules/@sudocode-ai/local-server/dist/execution/output/ag-ui-integration.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/execution/output/claude-code-output-processor.d.ts +0 -321
- package/node_modules/@sudocode-ai/local-server/dist/execution/output/claude-code-output-processor.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/execution/output/claude-code-output-processor.js +0 -769
- package/node_modules/@sudocode-ai/local-server/dist/execution/output/claude-code-output-processor.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/execution/output/index.d.ts +0 -18
- package/node_modules/@sudocode-ai/local-server/dist/execution/output/index.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/execution/output/index.js +0 -15
- package/node_modules/@sudocode-ai/local-server/dist/execution/output/index.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/execution/output/types.d.ts +0 -421
- package/node_modules/@sudocode-ai/local-server/dist/execution/output/types.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/execution/output/types.js +0 -22
- package/node_modules/@sudocode-ai/local-server/dist/execution/output/types.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/execution/process/builders/claude.d.ts +0 -86
- package/node_modules/@sudocode-ai/local-server/dist/execution/process/builders/claude.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/execution/process/builders/claude.js +0 -59
- package/node_modules/@sudocode-ai/local-server/dist/execution/process/builders/claude.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/execution/process/index.d.ts +0 -15
- package/node_modules/@sudocode-ai/local-server/dist/execution/process/index.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/execution/process/index.js +0 -15
- package/node_modules/@sudocode-ai/local-server/dist/execution/process/index.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/execution/process/manager.d.ts +0 -133
- package/node_modules/@sudocode-ai/local-server/dist/execution/process/manager.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/execution/process/manager.js +0 -10
- package/node_modules/@sudocode-ai/local-server/dist/execution/process/manager.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/execution/process/simple-manager.d.ts +0 -102
- package/node_modules/@sudocode-ai/local-server/dist/execution/process/simple-manager.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/execution/process/simple-manager.js +0 -336
- package/node_modules/@sudocode-ai/local-server/dist/execution/process/simple-manager.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/execution/process/types.d.ts +0 -105
- package/node_modules/@sudocode-ai/local-server/dist/execution/process/types.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/execution/process/types.js +0 -10
- package/node_modules/@sudocode-ai/local-server/dist/execution/process/types.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/execution/process/utils.d.ts +0 -53
- package/node_modules/@sudocode-ai/local-server/dist/execution/process/utils.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/execution/process/utils.js +0 -97
- package/node_modules/@sudocode-ai/local-server/dist/execution/process/utils.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/execution/resilience/circuit-breaker.d.ts +0 -170
- package/node_modules/@sudocode-ai/local-server/dist/execution/resilience/circuit-breaker.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/execution/resilience/circuit-breaker.js +0 -291
- package/node_modules/@sudocode-ai/local-server/dist/execution/resilience/circuit-breaker.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/execution/resilience/executor.d.ts +0 -109
- package/node_modules/@sudocode-ai/local-server/dist/execution/resilience/executor.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/execution/resilience/executor.js +0 -10
- package/node_modules/@sudocode-ai/local-server/dist/execution/resilience/executor.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/execution/resilience/index.d.ts +0 -14
- package/node_modules/@sudocode-ai/local-server/dist/execution/resilience/index.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/execution/resilience/index.js +0 -15
- package/node_modules/@sudocode-ai/local-server/dist/execution/resilience/index.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/execution/resilience/resilient-executor.d.ts +0 -86
- package/node_modules/@sudocode-ai/local-server/dist/execution/resilience/resilient-executor.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/execution/resilience/resilient-executor.js +0 -261
- package/node_modules/@sudocode-ai/local-server/dist/execution/resilience/resilient-executor.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/execution/resilience/retry.d.ts +0 -161
- package/node_modules/@sudocode-ai/local-server/dist/execution/resilience/retry.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/execution/resilience/retry.js +0 -234
- package/node_modules/@sudocode-ai/local-server/dist/execution/resilience/retry.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/execution/resilience/types.d.ts +0 -226
- package/node_modules/@sudocode-ai/local-server/dist/execution/resilience/types.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/execution/resilience/types.js +0 -30
- package/node_modules/@sudocode-ai/local-server/dist/execution/resilience/types.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/execution/transport/event-buffer.d.ts +0 -119
- package/node_modules/@sudocode-ai/local-server/dist/execution/transport/event-buffer.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/execution/transport/event-buffer.js +0 -208
- package/node_modules/@sudocode-ai/local-server/dist/execution/transport/event-buffer.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/execution/transport/index.d.ts +0 -10
- package/node_modules/@sudocode-ai/local-server/dist/execution/transport/index.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/execution/transport/index.js +0 -10
- package/node_modules/@sudocode-ai/local-server/dist/execution/transport/index.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/execution/transport/sse-transport.d.ts +0 -146
- package/node_modules/@sudocode-ai/local-server/dist/execution/transport/sse-transport.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/execution/transport/sse-transport.js +0 -282
- package/node_modules/@sudocode-ai/local-server/dist/execution/transport/sse-transport.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/execution/transport/transport-manager.d.ts +0 -176
- package/node_modules/@sudocode-ai/local-server/dist/execution/transport/transport-manager.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/execution/transport/transport-manager.js +0 -231
- package/node_modules/@sudocode-ai/local-server/dist/execution/transport/transport-manager.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/execution/workflow/index.d.ts +0 -13
- package/node_modules/@sudocode-ai/local-server/dist/execution/workflow/index.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/execution/workflow/index.js +0 -13
- package/node_modules/@sudocode-ai/local-server/dist/execution/workflow/index.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/execution/workflow/linear-orchestrator.d.ts +0 -216
- package/node_modules/@sudocode-ai/local-server/dist/execution/workflow/linear-orchestrator.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/execution/workflow/linear-orchestrator.js +0 -683
- package/node_modules/@sudocode-ai/local-server/dist/execution/workflow/linear-orchestrator.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/execution/workflow/memory-storage.d.ts +0 -54
- package/node_modules/@sudocode-ai/local-server/dist/execution/workflow/memory-storage.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/execution/workflow/memory-storage.js +0 -68
- package/node_modules/@sudocode-ai/local-server/dist/execution/workflow/memory-storage.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/execution/workflow/orchestrator.d.ts +0 -158
- package/node_modules/@sudocode-ai/local-server/dist/execution/workflow/orchestrator.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/execution/workflow/orchestrator.js +0 -9
- package/node_modules/@sudocode-ai/local-server/dist/execution/workflow/orchestrator.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/execution/workflow/types.d.ts +0 -172
- package/node_modules/@sudocode-ai/local-server/dist/execution/workflow/types.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/execution/workflow/types.js +0 -9
- package/node_modules/@sudocode-ai/local-server/dist/execution/workflow/types.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/execution/workflow/utils.d.ts +0 -89
- package/node_modules/@sudocode-ai/local-server/dist/execution/workflow/utils.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/execution/workflow/utils.js +0 -152
- package/node_modules/@sudocode-ai/local-server/dist/execution/workflow/utils.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/execution/worktree/config.d.ts +0 -74
- package/node_modules/@sudocode-ai/local-server/dist/execution/worktree/config.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/execution/worktree/config.js +0 -280
- package/node_modules/@sudocode-ai/local-server/dist/execution/worktree/config.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/execution/worktree/git-cli.d.ts +0 -151
- package/node_modules/@sudocode-ai/local-server/dist/execution/worktree/git-cli.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/execution/worktree/git-cli.js +0 -189
- package/node_modules/@sudocode-ai/local-server/dist/execution/worktree/git-cli.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/execution/worktree/index.d.ts +0 -16
- package/node_modules/@sudocode-ai/local-server/dist/execution/worktree/index.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/execution/worktree/index.js +0 -15
- package/node_modules/@sudocode-ai/local-server/dist/execution/worktree/index.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/execution/worktree/manager.d.ts +0 -184
- package/node_modules/@sudocode-ai/local-server/dist/execution/worktree/manager.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/execution/worktree/manager.js +0 -452
- package/node_modules/@sudocode-ai/local-server/dist/execution/worktree/manager.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/execution/worktree/types.d.ts +0 -90
- package/node_modules/@sudocode-ai/local-server/dist/execution/worktree/types.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/execution/worktree/types.js +0 -42
- package/node_modules/@sudocode-ai/local-server/dist/execution/worktree/types.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/index.d.ts +0 -8
- package/node_modules/@sudocode-ai/local-server/dist/index.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/index.js +0 -356
- package/node_modules/@sudocode-ai/local-server/dist/index.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/public/assets/index-C4SmlXoo.js +0 -568
- package/node_modules/@sudocode-ai/local-server/dist/public/assets/index-C4SmlXoo.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/public/assets/index-DE59j7ti.css +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/public/assets/react-vendor-LX0UoTxg.js +0 -60
- package/node_modules/@sudocode-ai/local-server/dist/public/assets/react-vendor-LX0UoTxg.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/public/assets/ui-vendor-_cxVHaqZ.js +0 -54
- package/node_modules/@sudocode-ai/local-server/dist/public/assets/ui-vendor-_cxVHaqZ.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/public/favicon.ico +0 -0
- package/node_modules/@sudocode-ai/local-server/dist/public/index.html +0 -16
- package/node_modules/@sudocode-ai/local-server/dist/public/logo.png +0 -0
- package/node_modules/@sudocode-ai/local-server/dist/routes/executions-stream.d.ts +0 -24
- package/node_modules/@sudocode-ai/local-server/dist/routes/executions-stream.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/routes/executions-stream.js +0 -55
- package/node_modules/@sudocode-ai/local-server/dist/routes/executions-stream.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/routes/executions.d.ts +0 -19
- package/node_modules/@sudocode-ai/local-server/dist/routes/executions.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/routes/executions.js +0 -267
- package/node_modules/@sudocode-ai/local-server/dist/routes/executions.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/routes/feedback.d.ts +0 -7
- package/node_modules/@sudocode-ai/local-server/dist/routes/feedback.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/routes/feedback.js +0 -329
- package/node_modules/@sudocode-ai/local-server/dist/routes/feedback.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/routes/issues.d.ts +0 -7
- package/node_modules/@sudocode-ai/local-server/dist/routes/issues.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/routes/issues.js +0 -280
- package/node_modules/@sudocode-ai/local-server/dist/routes/issues.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/routes/relationships.d.ts +0 -7
- package/node_modules/@sudocode-ai/local-server/dist/routes/relationships.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/routes/relationships.js +0 -308
- package/node_modules/@sudocode-ai/local-server/dist/routes/relationships.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/routes/specs.d.ts +0 -7
- package/node_modules/@sudocode-ai/local-server/dist/routes/specs.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/routes/specs.js +0 -270
- package/node_modules/@sudocode-ai/local-server/dist/routes/specs.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/services/db.d.ts +0 -33
- package/node_modules/@sudocode-ai/local-server/dist/services/db.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/services/db.js +0 -85
- package/node_modules/@sudocode-ai/local-server/dist/services/db.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/services/execution-lifecycle.d.ts +0 -108
- package/node_modules/@sudocode-ai/local-server/dist/services/execution-lifecycle.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/services/execution-lifecycle.js +0 -286
- package/node_modules/@sudocode-ai/local-server/dist/services/execution-lifecycle.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/services/execution-service.d.ts +0 -185
- package/node_modules/@sudocode-ai/local-server/dist/services/execution-service.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/services/execution-service.js +0 -676
- package/node_modules/@sudocode-ai/local-server/dist/services/execution-service.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/services/executions.d.ts +0 -59
- package/node_modules/@sudocode-ai/local-server/dist/services/executions.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/services/executions.js +0 -164
- package/node_modules/@sudocode-ai/local-server/dist/services/executions.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/services/export.d.ts +0 -24
- package/node_modules/@sudocode-ai/local-server/dist/services/export.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/services/export.js +0 -106
- package/node_modules/@sudocode-ai/local-server/dist/services/export.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/services/feedback.d.ts +0 -40
- package/node_modules/@sudocode-ai/local-server/dist/services/feedback.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/services/feedback.js +0 -54
- package/node_modules/@sudocode-ai/local-server/dist/services/feedback.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/services/issues.d.ts +0 -27
- package/node_modules/@sudocode-ai/local-server/dist/services/issues.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/services/issues.js +0 -35
- package/node_modules/@sudocode-ai/local-server/dist/services/issues.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/services/prompt-template-engine.d.ts +0 -108
- package/node_modules/@sudocode-ai/local-server/dist/services/prompt-template-engine.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/services/prompt-template-engine.js +0 -212
- package/node_modules/@sudocode-ai/local-server/dist/services/prompt-template-engine.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/services/prompt-templates.d.ts +0 -97
- package/node_modules/@sudocode-ai/local-server/dist/services/prompt-templates.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/services/prompt-templates.js +0 -236
- package/node_modules/@sudocode-ai/local-server/dist/services/prompt-templates.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/services/relationships.d.ts +0 -35
- package/node_modules/@sudocode-ai/local-server/dist/services/relationships.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/services/relationships.js +0 -42
- package/node_modules/@sudocode-ai/local-server/dist/services/relationships.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/services/specs.d.ts +0 -27
- package/node_modules/@sudocode-ai/local-server/dist/services/specs.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/services/specs.js +0 -35
- package/node_modules/@sudocode-ai/local-server/dist/services/specs.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/services/watcher.d.ts +0 -50
- package/node_modules/@sudocode-ai/local-server/dist/services/watcher.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/services/watcher.js +0 -69
- package/node_modules/@sudocode-ai/local-server/dist/services/watcher.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/services/websocket.d.ts +0 -127
- package/node_modules/@sudocode-ai/local-server/dist/services/websocket.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/services/websocket.js +0 -389
- package/node_modules/@sudocode-ai/local-server/dist/services/websocket.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/utils/sudocode-dir.d.ts +0 -6
- package/node_modules/@sudocode-ai/local-server/dist/utils/sudocode-dir.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/utils/sudocode-dir.js +0 -9
- package/node_modules/@sudocode-ai/local-server/dist/utils/sudocode-dir.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/package.json +0 -72
- package/node_modules/@sudocode-ai/mcp/LICENSE +0 -21
- package/node_modules/@sudocode-ai/mcp/README.md +0 -226
- package/node_modules/@sudocode-ai/mcp/dist/client.d.ts +0 -33
- package/node_modules/@sudocode-ai/mcp/dist/client.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/mcp/dist/client.js +0 -159
- package/node_modules/@sudocode-ai/mcp/dist/client.js.map +0 -1
- package/node_modules/@sudocode-ai/mcp/dist/index.d.ts +0 -6
- package/node_modules/@sudocode-ai/mcp/dist/index.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/mcp/dist/index.js +0 -64
- package/node_modules/@sudocode-ai/mcp/dist/index.js.map +0 -1
- package/node_modules/@sudocode-ai/mcp/dist/server.d.ts +0 -26
- package/node_modules/@sudocode-ai/mcp/dist/server.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/mcp/dist/server.js +0 -575
- package/node_modules/@sudocode-ai/mcp/dist/server.js.map +0 -1
- package/node_modules/@sudocode-ai/mcp/dist/tools/analytics.d.ts +0 -41
- package/node_modules/@sudocode-ai/mcp/dist/tools/analytics.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/mcp/dist/tools/analytics.js +0 -21
- package/node_modules/@sudocode-ai/mcp/dist/tools/analytics.js.map +0 -1
- package/node_modules/@sudocode-ai/mcp/dist/tools/feedback.d.ts +0 -19
- package/node_modules/@sudocode-ai/mcp/dist/tools/feedback.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/mcp/dist/tools/feedback.js +0 -24
- package/node_modules/@sudocode-ai/mcp/dist/tools/feedback.js.map +0 -1
- package/node_modules/@sudocode-ai/mcp/dist/tools/init.d.ts +0 -17
- package/node_modules/@sudocode-ai/mcp/dist/tools/init.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/mcp/dist/tools/init.js +0 -15
- package/node_modules/@sudocode-ai/mcp/dist/tools/init.js.map +0 -1
- package/node_modules/@sudocode-ai/mcp/dist/tools/issues.d.ts +0 -44
- package/node_modules/@sudocode-ai/mcp/dist/tools/issues.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/mcp/dist/tools/issues.js +0 -106
- package/node_modules/@sudocode-ai/mcp/dist/tools/issues.js.map +0 -1
- package/node_modules/@sudocode-ai/mcp/dist/tools/references.d.ts +0 -21
- package/node_modules/@sudocode-ai/mcp/dist/tools/references.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/mcp/dist/tools/references.js +0 -49
- package/node_modules/@sudocode-ai/mcp/dist/tools/references.js.map +0 -1
- package/node_modules/@sudocode-ai/mcp/dist/tools/relationships.d.ts +0 -15
- package/node_modules/@sudocode-ai/mcp/dist/tools/relationships.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/mcp/dist/tools/relationships.js +0 -18
- package/node_modules/@sudocode-ai/mcp/dist/tools/relationships.js.map +0 -1
- package/node_modules/@sudocode-ai/mcp/dist/tools/specs.d.ts +0 -35
- package/node_modules/@sudocode-ai/mcp/dist/tools/specs.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/mcp/dist/tools/specs.js +0 -85
- package/node_modules/@sudocode-ai/mcp/dist/tools/specs.js.map +0 -1
- package/node_modules/@sudocode-ai/mcp/dist/types.d.ts +0 -35
- package/node_modules/@sudocode-ai/mcp/dist/types.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/mcp/dist/types.js +0 -21
- package/node_modules/@sudocode-ai/mcp/dist/types.js.map +0 -1
- package/node_modules/@sudocode-ai/mcp/package.json +0 -67
- package/node_modules/@sudocode-ai/types/README.md +0 -7
- package/node_modules/@sudocode-ai/types/dist/schema.d.ts +0 -45
- package/node_modules/@sudocode-ai/types/dist/schema.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/types/dist/schema.js +0 -338
- package/node_modules/@sudocode-ai/types/dist/schema.js.map +0 -1
- package/node_modules/@sudocode-ai/types/package.json +0 -46
|
@@ -1,676 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Execution Service
|
|
3
|
-
*
|
|
4
|
-
* High-level service for managing issue-to-execution transformations.
|
|
5
|
-
* Coordinates between template rendering, worktree management, and workflow execution.
|
|
6
|
-
*
|
|
7
|
-
* @module services/execution-service
|
|
8
|
-
*/
|
|
9
|
-
import { PromptTemplateEngine } from "./prompt-template-engine.js";
|
|
10
|
-
import { ExecutionLifecycleService } from "./execution-lifecycle.js";
|
|
11
|
-
import { createExecution, getExecution, updateExecution, } from "./executions.js";
|
|
12
|
-
import { getDefaultTemplate, getTemplateById } from "./prompt-templates.js";
|
|
13
|
-
import { randomUUID } from "crypto";
|
|
14
|
-
import { SimpleProcessManager } from "../execution/process/simple-manager.js";
|
|
15
|
-
import { SimpleExecutionEngine } from "../execution/engine/simple-engine.js";
|
|
16
|
-
import { ResilientExecutor } from "../execution/resilience/resilient-executor.js";
|
|
17
|
-
import { LinearOrchestrator } from "../execution/workflow/linear-orchestrator.js";
|
|
18
|
-
import { createAgUiSystem } from "../execution/output/ag-ui-integration.js";
|
|
19
|
-
/**
|
|
20
|
-
* ExecutionService
|
|
21
|
-
*
|
|
22
|
-
* Manages the full lifecycle of issue-based executions:
|
|
23
|
-
* - Preparing execution with template rendering
|
|
24
|
-
* - Creating and starting executions with worktree isolation
|
|
25
|
-
* - Creating follow-up executions that reuse worktrees
|
|
26
|
-
* - Canceling and cleaning up executions
|
|
27
|
-
*/
|
|
28
|
-
export class ExecutionService {
|
|
29
|
-
db;
|
|
30
|
-
templateEngine;
|
|
31
|
-
lifecycleService;
|
|
32
|
-
repoPath;
|
|
33
|
-
transportManager;
|
|
34
|
-
activeOrchestrators = new Map();
|
|
35
|
-
/**
|
|
36
|
-
* Create a new ExecutionService
|
|
37
|
-
*
|
|
38
|
-
* @param db - Database instance
|
|
39
|
-
* @param repoPath - Path to the git repository
|
|
40
|
-
* @param lifecycleService - Optional execution lifecycle service (creates one if not provided)
|
|
41
|
-
* @param transportManager - Optional transport manager for SSE streaming
|
|
42
|
-
*/
|
|
43
|
-
constructor(db, repoPath, lifecycleService, transportManager) {
|
|
44
|
-
this.db = db;
|
|
45
|
-
this.repoPath = repoPath;
|
|
46
|
-
this.templateEngine = new PromptTemplateEngine();
|
|
47
|
-
this.lifecycleService =
|
|
48
|
-
lifecycleService || new ExecutionLifecycleService(db, repoPath);
|
|
49
|
-
this.transportManager = transportManager;
|
|
50
|
-
}
|
|
51
|
-
/**
|
|
52
|
-
* Prepare execution - load issue, render template, return preview
|
|
53
|
-
*
|
|
54
|
-
* This method loads the issue and related context, renders the template,
|
|
55
|
-
* and returns a preview for the user to review before starting execution.
|
|
56
|
-
*
|
|
57
|
-
* @param issueId - ID of issue to prepare execution for
|
|
58
|
-
* @param options - Optional template and config overrides
|
|
59
|
-
* @returns Execution prepare result with rendered prompt and context
|
|
60
|
-
*/
|
|
61
|
-
async prepareExecution(issueId, options) {
|
|
62
|
-
// 1. Load issue
|
|
63
|
-
const issue = this.db
|
|
64
|
-
.prepare("SELECT * FROM issues WHERE id = ?")
|
|
65
|
-
.get(issueId);
|
|
66
|
-
if (!issue) {
|
|
67
|
-
throw new Error(`Issue ${issueId} not found`);
|
|
68
|
-
}
|
|
69
|
-
// 2. Load related specs (via implements/references relationships)
|
|
70
|
-
const relatedSpecs = this.db
|
|
71
|
-
.prepare(`
|
|
72
|
-
SELECT DISTINCT s.id, s.title
|
|
73
|
-
FROM specs s
|
|
74
|
-
JOIN relationships r ON r.to_id = s.id AND r.to_type = 'spec'
|
|
75
|
-
WHERE r.from_id = ? AND r.from_type = 'issue'
|
|
76
|
-
AND r.relationship_type IN ('implements', 'references')
|
|
77
|
-
ORDER BY s.title
|
|
78
|
-
`)
|
|
79
|
-
.all(issueId);
|
|
80
|
-
// 3. Build context for template rendering
|
|
81
|
-
const context = {
|
|
82
|
-
issueId: issue.id,
|
|
83
|
-
title: issue.title,
|
|
84
|
-
description: issue.content,
|
|
85
|
-
relatedSpecs: relatedSpecs.length > 0
|
|
86
|
-
? relatedSpecs.map((s) => ({
|
|
87
|
-
id: s.id,
|
|
88
|
-
title: s.title,
|
|
89
|
-
}))
|
|
90
|
-
: undefined,
|
|
91
|
-
};
|
|
92
|
-
// 4. Get template (use custom template if provided, otherwise default)
|
|
93
|
-
let template;
|
|
94
|
-
if (options?.templateId) {
|
|
95
|
-
const customTemplate = getTemplateById(this.db, options.templateId);
|
|
96
|
-
if (!customTemplate) {
|
|
97
|
-
throw new Error(`Template ${options.templateId} not found`);
|
|
98
|
-
}
|
|
99
|
-
template = customTemplate.template;
|
|
100
|
-
}
|
|
101
|
-
else {
|
|
102
|
-
const defaultTemplate = getDefaultTemplate(this.db, "issue");
|
|
103
|
-
if (!defaultTemplate) {
|
|
104
|
-
throw new Error("Default issue template not found");
|
|
105
|
-
}
|
|
106
|
-
template = defaultTemplate.template;
|
|
107
|
-
}
|
|
108
|
-
// 5. Render template
|
|
109
|
-
const renderedPrompt = this.templateEngine.render(template, context);
|
|
110
|
-
// 6. Get default config
|
|
111
|
-
const defaultConfig = {
|
|
112
|
-
mode: "worktree",
|
|
113
|
-
model: "claude-sonnet-4",
|
|
114
|
-
baseBranch: "main",
|
|
115
|
-
checkpointInterval: 1,
|
|
116
|
-
continueOnStepFailure: false,
|
|
117
|
-
captureFileChanges: true,
|
|
118
|
-
captureToolCalls: true,
|
|
119
|
-
...options?.config,
|
|
120
|
-
};
|
|
121
|
-
// 7. Validate
|
|
122
|
-
const warnings = [];
|
|
123
|
-
const errors = [];
|
|
124
|
-
if (!renderedPrompt.trim()) {
|
|
125
|
-
errors.push("Rendered prompt is empty");
|
|
126
|
-
}
|
|
127
|
-
return {
|
|
128
|
-
renderedPrompt,
|
|
129
|
-
issue: {
|
|
130
|
-
id: issue.id,
|
|
131
|
-
title: issue.title,
|
|
132
|
-
content: issue.content,
|
|
133
|
-
},
|
|
134
|
-
relatedSpecs,
|
|
135
|
-
defaultConfig,
|
|
136
|
-
warnings,
|
|
137
|
-
errors,
|
|
138
|
-
};
|
|
139
|
-
}
|
|
140
|
-
/**
|
|
141
|
-
* Create and start execution
|
|
142
|
-
*
|
|
143
|
-
* Creates an execution record, sets up worktree (if needed), and starts
|
|
144
|
-
* workflow execution. Returns the execution record immediately while
|
|
145
|
-
* workflow runs in the background.
|
|
146
|
-
*
|
|
147
|
-
* @param issueId - ID of issue to execute
|
|
148
|
-
* @param config - Execution configuration
|
|
149
|
-
* @param prompt - Rendered prompt to execute
|
|
150
|
-
* @returns Created execution record
|
|
151
|
-
*/
|
|
152
|
-
async createExecution(issueId, config, prompt) {
|
|
153
|
-
// 1. Validate
|
|
154
|
-
if (!prompt.trim()) {
|
|
155
|
-
throw new Error("Prompt cannot be empty");
|
|
156
|
-
}
|
|
157
|
-
const issue = this.db
|
|
158
|
-
.prepare("SELECT * FROM issues WHERE id = ?")
|
|
159
|
-
.get(issueId);
|
|
160
|
-
if (!issue) {
|
|
161
|
-
throw new Error(`Issue ${issueId} not found`);
|
|
162
|
-
}
|
|
163
|
-
// 2. Determine execution mode and create execution with worktree
|
|
164
|
-
const mode = config.mode || "worktree";
|
|
165
|
-
let execution;
|
|
166
|
-
let workDir;
|
|
167
|
-
if (mode === "worktree") {
|
|
168
|
-
// Create execution with isolated worktree
|
|
169
|
-
const result = await this.lifecycleService.createExecutionWithWorktree({
|
|
170
|
-
issueId,
|
|
171
|
-
issueTitle: issue.title,
|
|
172
|
-
agentType: "claude-code",
|
|
173
|
-
targetBranch: config.baseBranch || "main",
|
|
174
|
-
repoPath: this.repoPath,
|
|
175
|
-
mode: mode,
|
|
176
|
-
prompt: prompt,
|
|
177
|
-
config: JSON.stringify(config),
|
|
178
|
-
});
|
|
179
|
-
execution = result.execution;
|
|
180
|
-
workDir = result.worktreePath;
|
|
181
|
-
}
|
|
182
|
-
else {
|
|
183
|
-
// Local mode - create execution without worktree
|
|
184
|
-
const executionId = randomUUID();
|
|
185
|
-
execution = createExecution(this.db, {
|
|
186
|
-
id: executionId,
|
|
187
|
-
issue_id: issueId,
|
|
188
|
-
agent_type: "claude-code",
|
|
189
|
-
mode: mode,
|
|
190
|
-
prompt: prompt,
|
|
191
|
-
config: JSON.stringify(config),
|
|
192
|
-
target_branch: config.baseBranch || "main",
|
|
193
|
-
branch_name: config.baseBranch || "main",
|
|
194
|
-
});
|
|
195
|
-
workDir = this.repoPath;
|
|
196
|
-
}
|
|
197
|
-
// 3. Build WorkflowDefinition
|
|
198
|
-
const workflow = {
|
|
199
|
-
id: `workflow-${execution.id}`,
|
|
200
|
-
steps: [
|
|
201
|
-
{
|
|
202
|
-
id: "execute-issue",
|
|
203
|
-
taskType: "issue",
|
|
204
|
-
prompt,
|
|
205
|
-
taskConfig: {
|
|
206
|
-
model: config.model || "claude-sonnet-4",
|
|
207
|
-
timeout: config.timeout,
|
|
208
|
-
captureFileChanges: config.captureFileChanges ?? true,
|
|
209
|
-
captureToolCalls: config.captureToolCalls ?? true,
|
|
210
|
-
},
|
|
211
|
-
},
|
|
212
|
-
],
|
|
213
|
-
config: {
|
|
214
|
-
checkpointInterval: config.checkpointInterval ?? 1,
|
|
215
|
-
continueOnStepFailure: config.continueOnStepFailure ?? false,
|
|
216
|
-
timeout: config.timeout,
|
|
217
|
-
},
|
|
218
|
-
metadata: {
|
|
219
|
-
workDir,
|
|
220
|
-
issueId,
|
|
221
|
-
executionId: execution.id,
|
|
222
|
-
},
|
|
223
|
-
};
|
|
224
|
-
// 4. Create execution engine stack
|
|
225
|
-
const processManager = new SimpleProcessManager({
|
|
226
|
-
executablePath: "claude",
|
|
227
|
-
args: [
|
|
228
|
-
"--print",
|
|
229
|
-
"--output-format",
|
|
230
|
-
"stream-json",
|
|
231
|
-
"--dangerously-skip-permissions",
|
|
232
|
-
],
|
|
233
|
-
});
|
|
234
|
-
let engine = new SimpleExecutionEngine(processManager, {
|
|
235
|
-
maxConcurrent: 1, // One task at a time for issue execution
|
|
236
|
-
});
|
|
237
|
-
let executor = new ResilientExecutor(engine);
|
|
238
|
-
// 5. Create AG-UI system (processor + adapter) if transport manager is available
|
|
239
|
-
let agUiAdapter;
|
|
240
|
-
if (this.transportManager) {
|
|
241
|
-
const agUiSystem = createAgUiSystem(execution.id);
|
|
242
|
-
agUiAdapter = agUiSystem.adapter;
|
|
243
|
-
// Connect adapter to transport for SSE streaming
|
|
244
|
-
this.transportManager.connectAdapter(agUiAdapter, execution.id);
|
|
245
|
-
// Connect processor to execution engine for real-time output parsing
|
|
246
|
-
// Buffer for incomplete lines (stream-json can split mid-line)
|
|
247
|
-
let lineBuffer = "";
|
|
248
|
-
engine = new SimpleExecutionEngine(processManager, {
|
|
249
|
-
maxConcurrent: 1,
|
|
250
|
-
// TODO: Factor out this logic for DRY principles.
|
|
251
|
-
onOutput: (data, type) => {
|
|
252
|
-
if (type === "stdout") {
|
|
253
|
-
// Append new data to buffer
|
|
254
|
-
lineBuffer += data.toString();
|
|
255
|
-
// Process complete lines (ending with \n)
|
|
256
|
-
let newlineIndex;
|
|
257
|
-
while ((newlineIndex = lineBuffer.indexOf("\n")) !== -1) {
|
|
258
|
-
const line = lineBuffer.slice(0, newlineIndex);
|
|
259
|
-
lineBuffer = lineBuffer.slice(newlineIndex + 1);
|
|
260
|
-
if (line.trim()) {
|
|
261
|
-
agUiSystem.processor.processLine(line).catch((err) => {
|
|
262
|
-
console.error("[ExecutionService] Error processing output line:", {
|
|
263
|
-
error: err instanceof Error ? err.message : String(err),
|
|
264
|
-
line: line.slice(0, 100), // Log first 100 chars for debugging
|
|
265
|
-
});
|
|
266
|
-
});
|
|
267
|
-
}
|
|
268
|
-
}
|
|
269
|
-
}
|
|
270
|
-
},
|
|
271
|
-
});
|
|
272
|
-
executor = new ResilientExecutor(engine);
|
|
273
|
-
}
|
|
274
|
-
// 6. Create LinearOrchestrator
|
|
275
|
-
const orchestrator = new LinearOrchestrator(executor, undefined, // No storage/checkpointing for now
|
|
276
|
-
agUiAdapter, this.lifecycleService);
|
|
277
|
-
// 7. Register event handlers to update execution status in database
|
|
278
|
-
orchestrator.onWorkflowStart(() => {
|
|
279
|
-
try {
|
|
280
|
-
updateExecution(this.db, execution.id, {
|
|
281
|
-
status: "running",
|
|
282
|
-
});
|
|
283
|
-
}
|
|
284
|
-
catch (error) {
|
|
285
|
-
console.error("[ExecutionService] Failed to update execution status to running", {
|
|
286
|
-
executionId: execution.id,
|
|
287
|
-
error: error instanceof Error ? error.message : String(error),
|
|
288
|
-
});
|
|
289
|
-
}
|
|
290
|
-
});
|
|
291
|
-
orchestrator.onWorkflowComplete(() => {
|
|
292
|
-
console.log("[ExecutionService] Workflow completed successfully", {
|
|
293
|
-
executionId: execution.id,
|
|
294
|
-
});
|
|
295
|
-
try {
|
|
296
|
-
updateExecution(this.db, execution.id, {
|
|
297
|
-
status: "completed",
|
|
298
|
-
completed_at: new Date().toISOString(),
|
|
299
|
-
});
|
|
300
|
-
}
|
|
301
|
-
catch (error) {
|
|
302
|
-
console.error("[ExecutionService] Failed to update execution status to completed", {
|
|
303
|
-
executionId: execution.id,
|
|
304
|
-
error: error instanceof Error ? error.message : String(error),
|
|
305
|
-
note: "Execution may have been deleted (e.g., due to CASCADE DELETE from issue deletion)",
|
|
306
|
-
});
|
|
307
|
-
}
|
|
308
|
-
// Remove orchestrator from active map
|
|
309
|
-
this.activeOrchestrators.delete(execution.id);
|
|
310
|
-
});
|
|
311
|
-
orchestrator.onWorkflowFailed((_executionId, error) => {
|
|
312
|
-
console.error("[ExecutionService] Workflow failed", {
|
|
313
|
-
executionId: execution.id,
|
|
314
|
-
error: error.message,
|
|
315
|
-
stack: error.stack,
|
|
316
|
-
});
|
|
317
|
-
try {
|
|
318
|
-
updateExecution(this.db, execution.id, {
|
|
319
|
-
status: "failed",
|
|
320
|
-
completed_at: new Date().toISOString(),
|
|
321
|
-
error_message: error.message,
|
|
322
|
-
});
|
|
323
|
-
}
|
|
324
|
-
catch (updateError) {
|
|
325
|
-
console.error("[ExecutionService] Failed to update execution status to failed", {
|
|
326
|
-
executionId: execution.id,
|
|
327
|
-
error: updateError instanceof Error
|
|
328
|
-
? updateError.message
|
|
329
|
-
: String(updateError),
|
|
330
|
-
note: "Execution may have been deleted (e.g., due to CASCADE DELETE from issue deletion)",
|
|
331
|
-
});
|
|
332
|
-
}
|
|
333
|
-
// Remove orchestrator from active map
|
|
334
|
-
this.activeOrchestrators.delete(execution.id);
|
|
335
|
-
});
|
|
336
|
-
// 8. Start workflow execution (non-blocking)
|
|
337
|
-
orchestrator.startWorkflow(workflow, workDir, {
|
|
338
|
-
checkpointInterval: config.checkpointInterval,
|
|
339
|
-
executionId: execution.id,
|
|
340
|
-
});
|
|
341
|
-
// 9. Store orchestrator for later cancellation
|
|
342
|
-
this.activeOrchestrators.set(execution.id, orchestrator);
|
|
343
|
-
return execution;
|
|
344
|
-
}
|
|
345
|
-
/**
|
|
346
|
-
* Create follow-up execution - reuse worktree from previous execution
|
|
347
|
-
*
|
|
348
|
-
* Creates a new execution that reuses the worktree from a previous execution,
|
|
349
|
-
* appending feedback or additional context to the prompt.
|
|
350
|
-
*
|
|
351
|
-
* @param executionId - ID of previous execution to follow up on
|
|
352
|
-
* @param feedback - Additional feedback/context to append to prompt
|
|
353
|
-
* @returns Created follow-up execution record
|
|
354
|
-
*/
|
|
355
|
-
async createFollowUp(executionId, feedback) {
|
|
356
|
-
// 1. Get previous execution
|
|
357
|
-
const prevExecution = getExecution(this.db, executionId);
|
|
358
|
-
if (!prevExecution) {
|
|
359
|
-
throw new Error(`Execution ${executionId} not found`);
|
|
360
|
-
}
|
|
361
|
-
if (!prevExecution.worktree_path) {
|
|
362
|
-
throw new Error(`Cannot create follow-up: execution ${executionId} has no worktree`);
|
|
363
|
-
}
|
|
364
|
-
// Check if worktree still exists on filesystem, recreate if needed
|
|
365
|
-
if (this.lifecycleService) {
|
|
366
|
-
const fs = await import("fs");
|
|
367
|
-
const worktreeExists = fs.existsSync(prevExecution.worktree_path);
|
|
368
|
-
if (!worktreeExists) {
|
|
369
|
-
console.log(`Recreating worktree for follow-up execution: ${prevExecution.worktree_path}`);
|
|
370
|
-
// Recreate the worktree using the same path and branch
|
|
371
|
-
const worktreeManager = this.lifecycleService.worktreeManager;
|
|
372
|
-
await worktreeManager.createWorktree({
|
|
373
|
-
repoPath: this.repoPath,
|
|
374
|
-
branchName: prevExecution.branch_name,
|
|
375
|
-
worktreePath: prevExecution.worktree_path,
|
|
376
|
-
baseBranch: prevExecution.target_branch,
|
|
377
|
-
createBranch: false, // Branch already exists, just recreate worktree
|
|
378
|
-
});
|
|
379
|
-
}
|
|
380
|
-
}
|
|
381
|
-
// 2. Validate that previous execution has an issue_id
|
|
382
|
-
if (!prevExecution.issue_id) {
|
|
383
|
-
throw new Error("Previous execution must have an issue_id for follow-up");
|
|
384
|
-
}
|
|
385
|
-
// 3. Prepare execution to get rendered prompt
|
|
386
|
-
const prepareResult = await this.prepareExecution(prevExecution.issue_id);
|
|
387
|
-
// 4. Append feedback to prompt
|
|
388
|
-
const followUpPrompt = `${prepareResult.renderedPrompt}
|
|
389
|
-
|
|
390
|
-
## Follow-up Feedback
|
|
391
|
-
${feedback}
|
|
392
|
-
|
|
393
|
-
Please continue working on this issue, taking into account the feedback above.`;
|
|
394
|
-
// 5. Create new execution record that references previous execution
|
|
395
|
-
const newExecutionId = randomUUID();
|
|
396
|
-
const newExecution = createExecution(this.db, {
|
|
397
|
-
id: newExecutionId,
|
|
398
|
-
issue_id: prevExecution.issue_id,
|
|
399
|
-
agent_type: "claude-code",
|
|
400
|
-
target_branch: prevExecution.target_branch,
|
|
401
|
-
branch_name: prevExecution.branch_name,
|
|
402
|
-
// TODO: Handle case where worktree has been deleted.
|
|
403
|
-
worktree_path: prevExecution.worktree_path, // Reuse same worktree
|
|
404
|
-
config: prevExecution.config || undefined, // Preserve config (including cleanupMode) from previous execution
|
|
405
|
-
});
|
|
406
|
-
// 5. Build WorkflowDefinition
|
|
407
|
-
const workflow = {
|
|
408
|
-
id: `workflow-${newExecution.id}`,
|
|
409
|
-
steps: [
|
|
410
|
-
{
|
|
411
|
-
id: "execute-followup",
|
|
412
|
-
taskType: "issue",
|
|
413
|
-
prompt: followUpPrompt,
|
|
414
|
-
taskConfig: {
|
|
415
|
-
model: "claude-sonnet-4",
|
|
416
|
-
captureFileChanges: true,
|
|
417
|
-
captureToolCalls: true,
|
|
418
|
-
},
|
|
419
|
-
},
|
|
420
|
-
],
|
|
421
|
-
config: {
|
|
422
|
-
checkpointInterval: 1,
|
|
423
|
-
continueOnStepFailure: false,
|
|
424
|
-
},
|
|
425
|
-
metadata: {
|
|
426
|
-
workDir: prevExecution.worktree_path,
|
|
427
|
-
issueId: prevExecution.issue_id,
|
|
428
|
-
executionId: newExecution.id,
|
|
429
|
-
followUpOf: executionId,
|
|
430
|
-
},
|
|
431
|
-
};
|
|
432
|
-
// 6. Create execution engine stack
|
|
433
|
-
const processManager = new SimpleProcessManager({
|
|
434
|
-
executablePath: "claude",
|
|
435
|
-
args: [
|
|
436
|
-
"--print",
|
|
437
|
-
"--output-format",
|
|
438
|
-
"stream-json",
|
|
439
|
-
"--dangerously-skip-permissions",
|
|
440
|
-
],
|
|
441
|
-
});
|
|
442
|
-
let engine = new SimpleExecutionEngine(processManager, {
|
|
443
|
-
maxConcurrent: 1,
|
|
444
|
-
});
|
|
445
|
-
let executor = new ResilientExecutor(engine);
|
|
446
|
-
// 7. Create AG-UI system (processor + adapter) if transport manager is available
|
|
447
|
-
let agUiAdapter;
|
|
448
|
-
if (this.transportManager) {
|
|
449
|
-
const agUiSystem = createAgUiSystem(newExecution.id);
|
|
450
|
-
agUiAdapter = agUiSystem.adapter;
|
|
451
|
-
this.transportManager.connectAdapter(agUiAdapter, newExecution.id);
|
|
452
|
-
// Connect processor to execution engine for real-time output parsing
|
|
453
|
-
// Buffer for incomplete lines (stream-json can split mid-line)
|
|
454
|
-
let lineBuffer = "";
|
|
455
|
-
engine = new SimpleExecutionEngine(processManager, {
|
|
456
|
-
maxConcurrent: 1,
|
|
457
|
-
// TODO: Factor out this logic for DRY principles.
|
|
458
|
-
onOutput: (data, type) => {
|
|
459
|
-
if (type === "stdout") {
|
|
460
|
-
// Append new data to buffer
|
|
461
|
-
lineBuffer += data.toString();
|
|
462
|
-
// Process complete lines (ending with \n)
|
|
463
|
-
let newlineIndex;
|
|
464
|
-
while ((newlineIndex = lineBuffer.indexOf("\n")) !== -1) {
|
|
465
|
-
const line = lineBuffer.slice(0, newlineIndex);
|
|
466
|
-
lineBuffer = lineBuffer.slice(newlineIndex + 1);
|
|
467
|
-
if (line.trim()) {
|
|
468
|
-
agUiSystem.processor.processLine(line).catch((err) => {
|
|
469
|
-
console.error("[ExecutionService] Error processing output line:", {
|
|
470
|
-
error: err instanceof Error ? err.message : String(err),
|
|
471
|
-
line: line.slice(0, 100), // Log first 100 chars for debugging
|
|
472
|
-
});
|
|
473
|
-
});
|
|
474
|
-
}
|
|
475
|
-
}
|
|
476
|
-
}
|
|
477
|
-
},
|
|
478
|
-
});
|
|
479
|
-
executor = new ResilientExecutor(engine);
|
|
480
|
-
}
|
|
481
|
-
// 8. Create LinearOrchestrator
|
|
482
|
-
const orchestrator = new LinearOrchestrator(executor, undefined, agUiAdapter, this.lifecycleService);
|
|
483
|
-
// 9. Register event handlers
|
|
484
|
-
orchestrator.onWorkflowStart(() => {
|
|
485
|
-
try {
|
|
486
|
-
updateExecution(this.db, newExecution.id, {
|
|
487
|
-
status: "running",
|
|
488
|
-
});
|
|
489
|
-
}
|
|
490
|
-
catch (error) {
|
|
491
|
-
console.error("[ExecutionService] Failed to update follow-up execution status to running", {
|
|
492
|
-
executionId: newExecution.id,
|
|
493
|
-
error: error instanceof Error ? error.message : String(error),
|
|
494
|
-
});
|
|
495
|
-
}
|
|
496
|
-
});
|
|
497
|
-
orchestrator.onWorkflowComplete(() => {
|
|
498
|
-
try {
|
|
499
|
-
updateExecution(this.db, newExecution.id, {
|
|
500
|
-
status: "completed",
|
|
501
|
-
completed_at: new Date().toISOString(),
|
|
502
|
-
});
|
|
503
|
-
}
|
|
504
|
-
catch (error) {
|
|
505
|
-
console.error("[ExecutionService] Failed to update follow-up execution status to completed", {
|
|
506
|
-
executionId: newExecution.id,
|
|
507
|
-
error: error instanceof Error ? error.message : String(error),
|
|
508
|
-
});
|
|
509
|
-
}
|
|
510
|
-
this.activeOrchestrators.delete(newExecution.id);
|
|
511
|
-
});
|
|
512
|
-
orchestrator.onWorkflowFailed((_execId, error) => {
|
|
513
|
-
try {
|
|
514
|
-
updateExecution(this.db, newExecution.id, {
|
|
515
|
-
status: "failed",
|
|
516
|
-
completed_at: new Date().toISOString(),
|
|
517
|
-
error_message: error.message,
|
|
518
|
-
});
|
|
519
|
-
}
|
|
520
|
-
catch (updateError) {
|
|
521
|
-
console.error("[ExecutionService] Failed to update follow-up execution status to failed", {
|
|
522
|
-
executionId: newExecution.id,
|
|
523
|
-
error: updateError instanceof Error
|
|
524
|
-
? updateError.message
|
|
525
|
-
: String(updateError),
|
|
526
|
-
});
|
|
527
|
-
}
|
|
528
|
-
this.activeOrchestrators.delete(newExecution.id);
|
|
529
|
-
});
|
|
530
|
-
// 10. Start workflow execution (non-blocking)
|
|
531
|
-
orchestrator.startWorkflow(workflow, prevExecution.worktree_path, {
|
|
532
|
-
checkpointInterval: 1,
|
|
533
|
-
executionId: newExecution.id,
|
|
534
|
-
});
|
|
535
|
-
// 11. Store orchestrator for later cancellation
|
|
536
|
-
this.activeOrchestrators.set(newExecution.id, orchestrator);
|
|
537
|
-
return newExecution;
|
|
538
|
-
}
|
|
539
|
-
/**
|
|
540
|
-
* Cancel a running execution
|
|
541
|
-
*
|
|
542
|
-
* Stops the workflow execution and marks the execution as cancelled.
|
|
543
|
-
* Optionally cleans up the worktree based on config.
|
|
544
|
-
*
|
|
545
|
-
* @param executionId - ID of execution to cancel
|
|
546
|
-
*/
|
|
547
|
-
async cancelExecution(executionId) {
|
|
548
|
-
const execution = getExecution(this.db, executionId);
|
|
549
|
-
if (!execution) {
|
|
550
|
-
throw new Error(`Execution ${executionId} not found`);
|
|
551
|
-
}
|
|
552
|
-
if (execution.status !== "running") {
|
|
553
|
-
throw new Error(`Cannot cancel execution in ${execution.status} state`);
|
|
554
|
-
}
|
|
555
|
-
// Get orchestrator from active map
|
|
556
|
-
const orchestrator = this.activeOrchestrators.get(executionId);
|
|
557
|
-
if (orchestrator) {
|
|
558
|
-
// Cancel via orchestrator
|
|
559
|
-
await orchestrator.cancelWorkflow(executionId);
|
|
560
|
-
// Remove from active map
|
|
561
|
-
this.activeOrchestrators.delete(executionId);
|
|
562
|
-
}
|
|
563
|
-
// Update status in database (orchestrator.cancelWorkflow doesn't emit events for DB update)
|
|
564
|
-
updateExecution(this.db, executionId, {
|
|
565
|
-
status: "stopped",
|
|
566
|
-
completed_at: new Date().toISOString(),
|
|
567
|
-
});
|
|
568
|
-
}
|
|
569
|
-
/**
|
|
570
|
-
* Clean up execution resources
|
|
571
|
-
*
|
|
572
|
-
* Removes the worktree and associated files. This is called automatically
|
|
573
|
-
* on workflow completion, or can be called manually.
|
|
574
|
-
*
|
|
575
|
-
* @param executionId - ID of execution to clean up
|
|
576
|
-
*/
|
|
577
|
-
async cleanupExecution(executionId) {
|
|
578
|
-
await this.lifecycleService.cleanupExecution(executionId);
|
|
579
|
-
}
|
|
580
|
-
/**
|
|
581
|
-
* Check if worktree exists in filesystem for an execution
|
|
582
|
-
*
|
|
583
|
-
* @param executionId - ID of execution to check
|
|
584
|
-
* @returns true if worktree exists, false otherwise
|
|
585
|
-
*/
|
|
586
|
-
async worktreeExists(executionId) {
|
|
587
|
-
const execution = getExecution(this.db, executionId);
|
|
588
|
-
if (!execution || !execution.worktree_path) {
|
|
589
|
-
return false;
|
|
590
|
-
}
|
|
591
|
-
const fs = await import("fs");
|
|
592
|
-
return fs.existsSync(execution.worktree_path);
|
|
593
|
-
}
|
|
594
|
-
/**
|
|
595
|
-
* Delete worktree for an execution
|
|
596
|
-
*
|
|
597
|
-
* Manually deletes the worktree for a specific execution, regardless of
|
|
598
|
-
* cleanupMode configuration. This allows users to manually cleanup worktrees
|
|
599
|
-
* when they're configured for manual cleanup.
|
|
600
|
-
*
|
|
601
|
-
* @param executionId - ID of execution whose worktree to delete
|
|
602
|
-
* @throws Error if execution not found, has no worktree, or worktree doesn't exist
|
|
603
|
-
*/
|
|
604
|
-
async deleteWorktree(executionId) {
|
|
605
|
-
const execution = getExecution(this.db, executionId);
|
|
606
|
-
if (!execution) {
|
|
607
|
-
throw new Error(`Execution ${executionId} not found`);
|
|
608
|
-
}
|
|
609
|
-
if (!execution.worktree_path) {
|
|
610
|
-
throw new Error(`Execution ${executionId} has no worktree to delete`);
|
|
611
|
-
}
|
|
612
|
-
// Check if worktree exists in the filesystem
|
|
613
|
-
const fs = await import("fs");
|
|
614
|
-
const worktreeExists = fs.existsSync(execution.worktree_path);
|
|
615
|
-
if (!worktreeExists) {
|
|
616
|
-
throw new Error(`Worktree does not exist in filesystem: ${execution.worktree_path}`);
|
|
617
|
-
}
|
|
618
|
-
// TODO: Cancel any running execution.
|
|
619
|
-
// Get worktree manager from lifecycle service
|
|
620
|
-
const worktreeManager = this.lifecycleService.worktreeManager;
|
|
621
|
-
// Clean up the worktree
|
|
622
|
-
await worktreeManager.cleanupWorktree(execution.worktree_path, this.repoPath);
|
|
623
|
-
}
|
|
624
|
-
/**
|
|
625
|
-
* Shutdown execution service - cancel all active executions
|
|
626
|
-
*
|
|
627
|
-
* This is called during server shutdown to gracefully terminate
|
|
628
|
-
* all running executions before the server exits.
|
|
629
|
-
*/
|
|
630
|
-
async shutdown() {
|
|
631
|
-
const cancelPromises = [];
|
|
632
|
-
// Cancel all active orchestrators
|
|
633
|
-
for (const [executionId, orchestrator,] of this.activeOrchestrators.entries()) {
|
|
634
|
-
cancelPromises.push(orchestrator.cancelWorkflow(executionId).catch((error) => {
|
|
635
|
-
console.error("[ExecutionService] Error canceling execution", {
|
|
636
|
-
executionId,
|
|
637
|
-
error: error.message,
|
|
638
|
-
});
|
|
639
|
-
}));
|
|
640
|
-
}
|
|
641
|
-
// Wait for all cancellations to complete (with timeout)
|
|
642
|
-
await Promise.race([
|
|
643
|
-
Promise.all(cancelPromises),
|
|
644
|
-
new Promise((resolve) => setTimeout(resolve, 5000)), // 5 second timeout
|
|
645
|
-
]);
|
|
646
|
-
}
|
|
647
|
-
/**
|
|
648
|
-
* List all executions for an issue
|
|
649
|
-
*
|
|
650
|
-
* Returns all executions associated with a specific issue,
|
|
651
|
-
* ordered by creation time (most recent first).
|
|
652
|
-
*
|
|
653
|
-
* @param issueId - ID of issue to list executions for
|
|
654
|
-
* @returns Array of executions for the issue
|
|
655
|
-
*/
|
|
656
|
-
listExecutions(issueId) {
|
|
657
|
-
const executions = this.db
|
|
658
|
-
.prepare(`
|
|
659
|
-
SELECT * FROM executions
|
|
660
|
-
WHERE issue_id = ?
|
|
661
|
-
ORDER BY created_at DESC
|
|
662
|
-
`)
|
|
663
|
-
.all(issueId);
|
|
664
|
-
return executions;
|
|
665
|
-
}
|
|
666
|
-
/**
|
|
667
|
-
* Get a single execution by ID
|
|
668
|
-
*
|
|
669
|
-
* @param executionId - ID of execution to retrieve
|
|
670
|
-
* @returns Execution or null if not found
|
|
671
|
-
*/
|
|
672
|
-
getExecution(executionId) {
|
|
673
|
-
return getExecution(this.db, executionId);
|
|
674
|
-
}
|
|
675
|
-
}
|
|
676
|
-
//# sourceMappingURL=execution-service.js.map
|