sudocode 1.1.17 → 1.1.18-dev.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/node_modules/@sudocode-ai/cli/README.md +330 -0
- package/node_modules/@sudocode-ai/cli/dist/cli/feedback-commands.d.ts +53 -0
- package/node_modules/@sudocode-ai/cli/dist/cli/feedback-commands.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/cli/feedback-commands.js +339 -0
- package/node_modules/@sudocode-ai/cli/dist/cli/feedback-commands.js.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/cli/init-commands.d.ts +20 -0
- package/node_modules/@sudocode-ai/cli/dist/cli/init-commands.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/cli/init-commands.js +145 -0
- package/node_modules/@sudocode-ai/cli/dist/cli/init-commands.js.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/cli/issue-commands.d.ts +46 -0
- package/node_modules/@sudocode-ai/cli/dist/cli/issue-commands.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/cli/issue-commands.js +353 -0
- package/node_modules/@sudocode-ai/cli/dist/cli/issue-commands.js.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/cli/merge-commands.d.ts +42 -0
- package/node_modules/@sudocode-ai/cli/dist/cli/merge-commands.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/cli/merge-commands.js +405 -0
- package/node_modules/@sudocode-ai/cli/dist/cli/merge-commands.js.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/cli/plugin-commands.d.ts +62 -0
- package/node_modules/@sudocode-ai/cli/dist/cli/plugin-commands.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/cli/plugin-commands.js +595 -0
- package/node_modules/@sudocode-ai/cli/dist/cli/plugin-commands.js.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/cli/query-commands.d.ts +18 -0
- package/node_modules/@sudocode-ai/cli/dist/cli/query-commands.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/cli/query-commands.js +61 -0
- package/node_modules/@sudocode-ai/cli/dist/cli/query-commands.js.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/cli/reference-commands.d.ts +22 -0
- package/node_modules/@sudocode-ai/cli/dist/cli/reference-commands.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/cli/reference-commands.js +136 -0
- package/node_modules/@sudocode-ai/cli/dist/cli/reference-commands.js.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/cli/relationship-commands.d.ts +14 -0
- package/node_modules/@sudocode-ai/cli/dist/cli/relationship-commands.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/cli/relationship-commands.js +83 -0
- package/node_modules/@sudocode-ai/cli/dist/cli/relationship-commands.js.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/cli/server-commands.d.ts +17 -0
- package/node_modules/@sudocode-ai/cli/dist/cli/server-commands.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/cli/server-commands.js +123 -0
- package/node_modules/@sudocode-ai/cli/dist/cli/server-commands.js.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/cli/spec-commands.d.ts +38 -0
- package/node_modules/@sudocode-ai/cli/dist/cli/spec-commands.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/cli/spec-commands.js +326 -0
- package/node_modules/@sudocode-ai/cli/dist/cli/spec-commands.js.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/cli/status-commands.d.ts +17 -0
- package/node_modules/@sudocode-ai/cli/dist/cli/status-commands.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/cli/status-commands.js +131 -0
- package/node_modules/@sudocode-ai/cli/dist/cli/status-commands.js.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/cli/sync-commands.d.ts +24 -0
- package/node_modules/@sudocode-ai/cli/dist/cli/sync-commands.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/cli/sync-commands.js +429 -0
- package/node_modules/@sudocode-ai/cli/dist/cli/sync-commands.js.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/cli/update-commands.d.ts +16 -0
- package/node_modules/@sudocode-ai/cli/dist/cli/update-commands.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/cli/update-commands.js +160 -0
- package/node_modules/@sudocode-ai/cli/dist/cli/update-commands.js.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/cli.d.ts +6 -0
- package/node_modules/@sudocode-ai/cli/dist/cli.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/cli.js +543 -0
- package/node_modules/@sudocode-ai/cli/dist/cli.js.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/config.d.ts +50 -0
- package/node_modules/@sudocode-ai/cli/dist/config.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/config.js +76 -0
- package/node_modules/@sudocode-ai/cli/dist/config.js.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/db.d.ts +21 -0
- package/node_modules/@sudocode-ai/cli/dist/db.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/db.js +55 -0
- package/node_modules/@sudocode-ai/cli/dist/db.js.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/export.d.ts +84 -0
- package/node_modules/@sudocode-ai/cli/dist/export.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/export.js +265 -0
- package/node_modules/@sudocode-ai/cli/dist/export.js.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/filename-generator.d.ts +31 -0
- package/node_modules/@sudocode-ai/cli/dist/filename-generator.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/filename-generator.js +103 -0
- package/node_modules/@sudocode-ai/cli/dist/filename-generator.js.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/id-generator.d.ts +63 -0
- package/node_modules/@sudocode-ai/cli/dist/id-generator.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/id-generator.js +196 -0
- package/node_modules/@sudocode-ai/cli/dist/id-generator.js.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/import.d.ts +134 -0
- package/node_modules/@sudocode-ai/cli/dist/import.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/import.js +751 -0
- package/node_modules/@sudocode-ai/cli/dist/import.js.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/index.d.ts +15 -0
- package/node_modules/@sudocode-ai/cli/dist/index.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/index.js +15 -0
- package/node_modules/@sudocode-ai/cli/dist/index.js.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/integrations/base-provider.d.ts +108 -0
- package/node_modules/@sudocode-ai/cli/dist/integrations/base-provider.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/integrations/base-provider.js +80 -0
- package/node_modules/@sudocode-ai/cli/dist/integrations/base-provider.js.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/integrations/config-resolver.d.ts +62 -0
- package/node_modules/@sudocode-ai/cli/dist/integrations/config-resolver.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/integrations/config-resolver.js +69 -0
- package/node_modules/@sudocode-ai/cli/dist/integrations/config-resolver.js.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/integrations/config-validator.d.ts +75 -0
- package/node_modules/@sudocode-ai/cli/dist/integrations/config-validator.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/integrations/config-validator.js +129 -0
- package/node_modules/@sudocode-ai/cli/dist/integrations/config-validator.js.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/integrations/index.d.ts +14 -0
- package/node_modules/@sudocode-ai/cli/dist/integrations/index.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/integrations/index.js +20 -0
- package/node_modules/@sudocode-ai/cli/dist/integrations/index.js.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/integrations/plugin-loader.d.ts +77 -0
- package/node_modules/@sudocode-ai/cli/dist/integrations/plugin-loader.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/integrations/plugin-loader.js +265 -0
- package/node_modules/@sudocode-ai/cli/dist/integrations/plugin-loader.js.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/integrations/registry.d.ts +67 -0
- package/node_modules/@sudocode-ai/cli/dist/integrations/registry.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/integrations/registry.js +77 -0
- package/node_modules/@sudocode-ai/cli/dist/integrations/registry.js.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/integrations/sync-coordinator.d.ts +191 -0
- package/node_modules/@sudocode-ai/cli/dist/integrations/sync-coordinator.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/integrations/sync-coordinator.js +798 -0
- package/node_modules/@sudocode-ai/cli/dist/integrations/sync-coordinator.js.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/integrations/types.d.ts +142 -0
- package/node_modules/@sudocode-ai/cli/dist/integrations/types.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/integrations/types.js +6 -0
- package/node_modules/@sudocode-ai/cli/dist/integrations/types.js.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/integrations/utils/conflict-resolver.d.ts +79 -0
- package/node_modules/@sudocode-ai/cli/dist/integrations/utils/conflict-resolver.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/integrations/utils/conflict-resolver.js +106 -0
- package/node_modules/@sudocode-ai/cli/dist/integrations/utils/conflict-resolver.js.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/jsonl.d.ts +69 -0
- package/node_modules/@sudocode-ai/cli/dist/jsonl.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/jsonl.js +333 -0
- package/node_modules/@sudocode-ai/cli/dist/jsonl.js.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/markdown.d.ts +146 -0
- package/node_modules/@sudocode-ai/cli/dist/markdown.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/markdown.js +329 -0
- package/node_modules/@sudocode-ai/cli/dist/markdown.js.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/merge-resolver.d.ts +85 -0
- package/node_modules/@sudocode-ai/cli/dist/merge-resolver.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/merge-resolver.js +301 -0
- package/node_modules/@sudocode-ai/cli/dist/merge-resolver.js.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/operations/events.d.ts +53 -0
- package/node_modules/@sudocode-ai/cli/dist/operations/events.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/operations/events.js +108 -0
- package/node_modules/@sudocode-ai/cli/dist/operations/events.js.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/operations/external-links.d.ts +147 -0
- package/node_modules/@sudocode-ai/cli/dist/operations/external-links.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/operations/external-links.js +411 -0
- package/node_modules/@sudocode-ai/cli/dist/operations/external-links.js.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/operations/feedback-anchors.d.ts +92 -0
- package/node_modules/@sudocode-ai/cli/dist/operations/feedback-anchors.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/operations/feedback-anchors.js +444 -0
- package/node_modules/@sudocode-ai/cli/dist/operations/feedback-anchors.js.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/operations/feedback.d.ts +94 -0
- package/node_modules/@sudocode-ai/cli/dist/operations/feedback.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/operations/feedback.js +278 -0
- package/node_modules/@sudocode-ai/cli/dist/operations/feedback.js.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/operations/index.d.ts +11 -0
- package/node_modules/@sudocode-ai/cli/dist/operations/index.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/operations/index.js +11 -0
- package/node_modules/@sudocode-ai/cli/dist/operations/index.js.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/operations/issues.d.ts +88 -0
- package/node_modules/@sudocode-ai/cli/dist/operations/issues.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/operations/issues.js +474 -0
- package/node_modules/@sudocode-ai/cli/dist/operations/issues.js.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/operations/references.d.ts +34 -0
- package/node_modules/@sudocode-ai/cli/dist/operations/references.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/operations/references.js +117 -0
- package/node_modules/@sudocode-ai/cli/dist/operations/references.js.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/operations/relationships.d.ts +64 -0
- package/node_modules/@sudocode-ai/cli/dist/operations/relationships.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/operations/relationships.js +281 -0
- package/node_modules/@sudocode-ai/cli/dist/operations/relationships.js.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/operations/specs.d.ts +69 -0
- package/node_modules/@sudocode-ai/cli/dist/operations/specs.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/operations/specs.js +330 -0
- package/node_modules/@sudocode-ai/cli/dist/operations/specs.js.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/operations/tags.d.ts +42 -0
- package/node_modules/@sudocode-ai/cli/dist/operations/tags.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/operations/tags.js +127 -0
- package/node_modules/@sudocode-ai/cli/dist/operations/tags.js.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/operations/transactions.d.ts +41 -0
- package/node_modules/@sudocode-ai/cli/dist/operations/transactions.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/operations/transactions.js +111 -0
- package/node_modules/@sudocode-ai/cli/dist/operations/transactions.js.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/sync.d.ts +47 -0
- package/node_modules/@sudocode-ai/cli/dist/sync.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/sync.js +464 -0
- package/node_modules/@sudocode-ai/cli/dist/sync.js.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/test-schema.d.ts +5 -0
- package/node_modules/@sudocode-ai/cli/dist/test-schema.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/test-schema.js +46 -0
- package/node_modules/@sudocode-ai/cli/dist/test-schema.js.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/types.d.ts +7 -0
- package/node_modules/@sudocode-ai/cli/dist/types.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/types.js +7 -0
- package/node_modules/@sudocode-ai/cli/dist/types.js.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/update-checker.d.ts +33 -0
- package/node_modules/@sudocode-ai/cli/dist/update-checker.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/update-checker.js +193 -0
- package/node_modules/@sudocode-ai/cli/dist/update-checker.js.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/validation.d.ts +11 -0
- package/node_modules/@sudocode-ai/cli/dist/validation.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/validation.js +58 -0
- package/node_modules/@sudocode-ai/cli/dist/validation.js.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/version.d.ts +12 -0
- package/node_modules/@sudocode-ai/cli/dist/version.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/version.js +23 -0
- package/node_modules/@sudocode-ai/cli/dist/version.js.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/watcher.d.ts +69 -0
- package/node_modules/@sudocode-ai/cli/dist/watcher.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/cli/dist/watcher.js +783 -0
- package/node_modules/@sudocode-ai/cli/dist/watcher.js.map +1 -0
- package/node_modules/@sudocode-ai/cli/package.json +73 -0
- package/node_modules/@sudocode-ai/integration-beads/package.json +44 -0
- package/node_modules/@sudocode-ai/integration-github/package.json +41 -0
- package/node_modules/@sudocode-ai/integration-openspec/package.json +43 -0
- package/node_modules/@sudocode-ai/integration-speckit/package.json +42 -0
- package/node_modules/@sudocode-ai/local-server/README.md +25 -0
- package/node_modules/@sudocode-ai/local-server/dist/cli.d.ts +7 -0
- package/node_modules/@sudocode-ai/local-server/dist/cli.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/cli.js +7 -0
- package/node_modules/@sudocode-ai/local-server/dist/cli.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/errors/agent-errors.d.ts +43 -0
- package/node_modules/@sudocode-ai/local-server/dist/errors/agent-errors.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/errors/agent-errors.js +69 -0
- package/node_modules/@sudocode-ai/local-server/dist/errors/agent-errors.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/adapters/claude-adapter.d.ts +63 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/adapters/claude-adapter.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/adapters/claude-adapter.js +83 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/adapters/claude-adapter.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/adapters/codex-adapter.d.ts +67 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/adapters/codex-adapter.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/adapters/codex-adapter.js +183 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/adapters/codex-adapter.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/adapters/codex-config-builder.d.ts +30 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/adapters/codex-config-builder.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/adapters/codex-config-builder.js +110 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/adapters/codex-config-builder.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/adapters/copilot-adapter.d.ts +94 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/adapters/copilot-adapter.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/adapters/copilot-adapter.js +163 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/adapters/copilot-adapter.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/adapters/copilot-config-builder.d.ts +48 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/adapters/copilot-config-builder.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/adapters/copilot-config-builder.js +125 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/adapters/copilot-config-builder.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/adapters/cursor-adapter.d.ts +66 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/adapters/cursor-adapter.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/adapters/cursor-adapter.js +121 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/adapters/cursor-adapter.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/adapters/cursor-config-builder.d.ts +29 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/adapters/cursor-config-builder.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/adapters/cursor-config-builder.js +49 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/adapters/cursor-config-builder.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/adapters/shared/config-presets.d.ts +102 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/adapters/shared/config-presets.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/adapters/shared/config-presets.js +205 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/adapters/shared/config-presets.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/adapters/shared/config-utils.d.ts +95 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/adapters/shared/config-utils.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/adapters/shared/config-utils.js +163 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/adapters/shared/config-utils.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/adapters/shared/index.d.ts +8 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/adapters/shared/index.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/adapters/shared/index.js +8 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/adapters/shared/index.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/executors/agent-executor-wrapper.d.ts +154 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/executors/agent-executor-wrapper.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/executors/agent-executor-wrapper.js +725 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/executors/agent-executor-wrapper.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/executors/executor-factory.d.ts +95 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/executors/executor-factory.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/executors/executor-factory.js +128 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/executors/executor-factory.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/output/ag-ui-adapter.d.ts +174 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/output/ag-ui-adapter.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/output/ag-ui-adapter.js +436 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/output/ag-ui-adapter.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/output/claude-to-ag-ui.d.ts +90 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/output/claude-to-ag-ui.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/output/claude-to-ag-ui.js +153 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/output/claude-to-ag-ui.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/output/index.d.ts +15 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/output/index.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/output/index.js +13 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/output/index.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/output/normalized-to-ag-ui-adapter.d.ts +108 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/output/normalized-to-ag-ui-adapter.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/output/normalized-to-ag-ui-adapter.js +321 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/output/normalized-to-ag-ui-adapter.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/output/types.d.ts +421 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/output/types.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/output/types.js +22 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/output/types.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/process/builders/claude.d.ts +53 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/process/builders/claude.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/process/builders/claude.js +225 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/process/builders/claude.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/transport/event-buffer.d.ts +119 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/transport/event-buffer.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/transport/event-buffer.js +208 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/transport/event-buffer.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/transport/index.d.ts +10 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/transport/index.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/transport/index.js +10 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/transport/index.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/transport/ipc-transport-manager.d.ts +74 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/transport/ipc-transport-manager.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/transport/ipc-transport-manager.js +104 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/transport/ipc-transport-manager.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/transport/sse-transport.d.ts +146 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/transport/sse-transport.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/transport/sse-transport.js +282 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/transport/sse-transport.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/transport/transport-manager.d.ts +176 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/transport/transport-manager.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/transport/transport-manager.js +234 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/transport/transport-manager.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/worktree/config.d.ts +74 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/worktree/config.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/worktree/config.js +280 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/worktree/config.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/worktree/conflict-detector.d.ts +85 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/worktree/conflict-detector.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/worktree/conflict-detector.js +129 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/worktree/conflict-detector.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/worktree/git-cli.d.ts +208 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/worktree/git-cli.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/worktree/git-cli.js +280 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/worktree/git-cli.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/worktree/git-sync-cli.d.ts +225 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/worktree/git-sync-cli.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/worktree/git-sync-cli.js +464 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/worktree/git-sync-cli.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/worktree/index.d.ts +16 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/worktree/index.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/worktree/index.js +15 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/worktree/index.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/worktree/manager.d.ts +221 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/worktree/manager.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/worktree/manager.js +508 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/worktree/manager.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/worktree/types.d.ts +90 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/worktree/types.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/worktree/types.js +42 -0
- package/node_modules/@sudocode-ai/local-server/dist/execution/worktree/types.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/index.d.ts +6 -0
- package/node_modules/@sudocode-ai/local-server/dist/index.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/index.js +371 -0
- package/node_modules/@sudocode-ai/local-server/dist/index.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/middleware/project-context.d.ts +37 -0
- package/node_modules/@sudocode-ai/local-server/dist/middleware/project-context.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/middleware/project-context.js +91 -0
- package/node_modules/@sudocode-ai/local-server/dist/middleware/project-context.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/public/assets/index-D4AKx6EO.css +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/public/assets/index-DorQqwGV.js +927 -0
- package/node_modules/@sudocode-ai/local-server/dist/public/assets/index-DorQqwGV.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/public/assets/react-vendor-DoNwlLhy.js +60 -0
- package/node_modules/@sudocode-ai/local-server/dist/public/assets/react-vendor-DoNwlLhy.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/public/assets/ui-vendor-DlxvBun1.js +54 -0
- package/node_modules/@sudocode-ai/local-server/dist/public/assets/ui-vendor-DlxvBun1.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/public/favicon.ico +0 -0
- package/node_modules/@sudocode-ai/local-server/dist/public/index.html +16 -0
- package/node_modules/@sudocode-ai/local-server/dist/public/logo.png +0 -0
- package/node_modules/@sudocode-ai/local-server/dist/routes/agents.d.ts +3 -0
- package/node_modules/@sudocode-ai/local-server/dist/routes/agents.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/routes/agents.js +62 -0
- package/node_modules/@sudocode-ai/local-server/dist/routes/agents.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/routes/config.d.ts +3 -0
- package/node_modules/@sudocode-ai/local-server/dist/routes/config.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/routes/config.js +116 -0
- package/node_modules/@sudocode-ai/local-server/dist/routes/config.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/routes/editors.d.ts +15 -0
- package/node_modules/@sudocode-ai/local-server/dist/routes/editors.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/routes/editors.js +98 -0
- package/node_modules/@sudocode-ai/local-server/dist/routes/editors.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/routes/executions-stream.d.ts +27 -0
- package/node_modules/@sudocode-ai/local-server/dist/routes/executions-stream.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/routes/executions-stream.js +59 -0
- package/node_modules/@sudocode-ai/local-server/dist/routes/executions-stream.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/routes/executions.d.ts +18 -0
- package/node_modules/@sudocode-ai/local-server/dist/routes/executions.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/routes/executions.js +1169 -0
- package/node_modules/@sudocode-ai/local-server/dist/routes/executions.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/routes/feedback.d.ts +8 -0
- package/node_modules/@sudocode-ai/local-server/dist/routes/feedback.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/routes/feedback.js +340 -0
- package/node_modules/@sudocode-ai/local-server/dist/routes/feedback.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/routes/files.d.ts +18 -0
- package/node_modules/@sudocode-ai/local-server/dist/routes/files.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/routes/files.js +89 -0
- package/node_modules/@sudocode-ai/local-server/dist/routes/files.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/routes/import.d.ts +142 -0
- package/node_modules/@sudocode-ai/local-server/dist/routes/import.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/routes/import.js +896 -0
- package/node_modules/@sudocode-ai/local-server/dist/routes/import.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/routes/issues.d.ts +8 -0
- package/node_modules/@sudocode-ai/local-server/dist/routes/issues.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/routes/issues.js +419 -0
- package/node_modules/@sudocode-ai/local-server/dist/routes/issues.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/routes/plugins.d.ts +34 -0
- package/node_modules/@sudocode-ai/local-server/dist/routes/plugins.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/routes/plugins.js +602 -0
- package/node_modules/@sudocode-ai/local-server/dist/routes/plugins.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/routes/projects.d.ts +11 -0
- package/node_modules/@sudocode-ai/local-server/dist/routes/projects.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/routes/projects.js +536 -0
- package/node_modules/@sudocode-ai/local-server/dist/routes/projects.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/routes/relationships.d.ts +8 -0
- package/node_modules/@sudocode-ai/local-server/dist/routes/relationships.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/routes/relationships.js +310 -0
- package/node_modules/@sudocode-ai/local-server/dist/routes/relationships.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/routes/repo-info.d.ts +3 -0
- package/node_modules/@sudocode-ai/local-server/dist/routes/repo-info.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/routes/repo-info.js +203 -0
- package/node_modules/@sudocode-ai/local-server/dist/routes/repo-info.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/routes/specs.d.ts +8 -0
- package/node_modules/@sudocode-ai/local-server/dist/routes/specs.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/routes/specs.js +414 -0
- package/node_modules/@sudocode-ai/local-server/dist/routes/specs.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/routes/update.d.ts +7 -0
- package/node_modules/@sudocode-ai/local-server/dist/routes/update.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/routes/update.js +194 -0
- package/node_modules/@sudocode-ai/local-server/dist/routes/update.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/routes/version.d.ts +3 -0
- package/node_modules/@sudocode-ai/local-server/dist/routes/version.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/routes/version.js +25 -0
- package/node_modules/@sudocode-ai/local-server/dist/routes/version.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/routes/workflows.d.ts +8 -0
- package/node_modules/@sudocode-ai/local-server/dist/routes/workflows.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/routes/workflows.js +1729 -0
- package/node_modules/@sudocode-ai/local-server/dist/routes/workflows.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/agent-registry.d.ts +140 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/agent-registry.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/agent-registry.js +272 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/agent-registry.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/db.d.ts +33 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/db.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/db.js +90 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/db.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/editor-service.d.ts +57 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/editor-service.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/editor-service.js +204 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/editor-service.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/execution-changes-service.d.ts +110 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/execution-changes-service.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/execution-changes-service.js +710 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/execution-changes-service.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/execution-event-callbacks.d.ts +73 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/execution-event-callbacks.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/execution-event-callbacks.js +82 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/execution-event-callbacks.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/execution-lifecycle.d.ts +145 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/execution-lifecycle.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/execution-lifecycle.js +392 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/execution-lifecycle.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/execution-logs-cleanup.d.ts +88 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/execution-logs-cleanup.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/execution-logs-cleanup.js +137 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/execution-logs-cleanup.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/execution-logs-store.d.ts +252 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/execution-logs-store.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/execution-logs-store.js +379 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/execution-logs-store.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/execution-service.d.ts +280 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/execution-service.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/execution-service.js +1240 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/execution-service.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/execution-worker-pool.d.ts +116 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/execution-worker-pool.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/execution-worker-pool.js +326 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/execution-worker-pool.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/executions.d.ts +63 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/executions.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/executions.js +177 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/executions.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/export.d.ts +32 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/export.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/export.js +114 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/export.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/external-refresh-service.d.ts +104 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/external-refresh-service.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/external-refresh-service.js +520 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/external-refresh-service.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/feedback.d.ts +56 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/feedback.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/feedback.js +78 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/feedback.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/file-search/git-ls-files-strategy.d.ts +72 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/file-search/git-ls-files-strategy.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/file-search/git-ls-files-strategy.js +176 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/file-search/git-ls-files-strategy.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/file-search/index.d.ts +9 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/file-search/index.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/file-search/index.js +10 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/file-search/index.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/file-search/registry.d.ts +97 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/file-search/registry.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/file-search/registry.js +140 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/file-search/registry.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/file-search/strategy.d.ts +58 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/file-search/strategy.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/file-search/strategy.js +8 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/file-search/strategy.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/integration-sync-service.d.ts +185 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/integration-sync-service.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/integration-sync-service.js +428 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/integration-sync-service.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/issues.d.ts +27 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/issues.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/issues.js +35 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/issues.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/project-context.d.ts +97 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/project-context.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/project-context.js +170 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/project-context.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/project-manager.d.ts +102 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/project-manager.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/project-manager.js +502 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/project-manager.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/project-registry.d.ts +98 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/project-registry.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/project-registry.js +289 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/project-registry.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/prompt-resolver.d.ts +97 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/prompt-resolver.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/prompt-resolver.js +377 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/prompt-resolver.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/prompt-template-engine.d.ts +108 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/prompt-template-engine.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/prompt-template-engine.js +212 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/prompt-template-engine.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/prompt-templates.d.ts +97 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/prompt-templates.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/prompt-templates.js +236 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/prompt-templates.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/relationships.d.ts +35 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/relationships.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/relationships.js +42 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/relationships.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/repo-info.d.ts +33 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/repo-info.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/repo-info.js +136 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/repo-info.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/specs.d.ts +27 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/specs.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/specs.js +35 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/specs.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/version-service.d.ts +14 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/version-service.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/version-service.js +57 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/version-service.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/watcher.d.ts +49 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/watcher.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/watcher.js +52 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/watcher.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/websocket.d.ts +179 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/websocket.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/websocket.js +543 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/websocket.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/workflow-broadcast-service.d.ts +43 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/workflow-broadcast-service.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/workflow-broadcast-service.js +155 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/workflow-broadcast-service.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/worktree-sync-service.d.ts +437 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/worktree-sync-service.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/worktree-sync-service.js +1505 -0
- package/node_modules/@sudocode-ai/local-server/dist/services/worktree-sync-service.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/types/editor.d.ts +49 -0
- package/node_modules/@sudocode-ai/local-server/dist/types/editor.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/types/editor.js +50 -0
- package/node_modules/@sudocode-ai/local-server/dist/types/editor.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/types/project.d.ts +58 -0
- package/node_modules/@sudocode-ai/local-server/dist/types/project.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/types/project.js +10 -0
- package/node_modules/@sudocode-ai/local-server/dist/types/project.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/utils/execFileNoThrow.d.ts +43 -0
- package/node_modules/@sudocode-ai/local-server/dist/utils/execFileNoThrow.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/utils/execFileNoThrow.js +53 -0
- package/node_modules/@sudocode-ai/local-server/dist/utils/execFileNoThrow.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/utils/executable-check.d.ts +36 -0
- package/node_modules/@sudocode-ai/local-server/dist/utils/executable-check.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/utils/executable-check.js +79 -0
- package/node_modules/@sudocode-ai/local-server/dist/utils/executable-check.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/utils/sudocode-dir.d.ts +6 -0
- package/node_modules/@sudocode-ai/local-server/dist/utils/sudocode-dir.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/utils/sudocode-dir.js +9 -0
- package/node_modules/@sudocode-ai/local-server/dist/utils/sudocode-dir.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/workers/execution-worker.d.ts +18 -0
- package/node_modules/@sudocode-ai/local-server/dist/workers/execution-worker.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/workers/execution-worker.js +340 -0
- package/node_modules/@sudocode-ai/local-server/dist/workers/execution-worker.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/workers/worker-ipc.d.ts +84 -0
- package/node_modules/@sudocode-ai/local-server/dist/workers/worker-ipc.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/workers/worker-ipc.js +29 -0
- package/node_modules/@sudocode-ai/local-server/dist/workers/worker-ipc.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/workflow/base-workflow-engine.d.ts +186 -0
- package/node_modules/@sudocode-ai/local-server/dist/workflow/base-workflow-engine.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/workflow/base-workflow-engine.js +557 -0
- package/node_modules/@sudocode-ai/local-server/dist/workflow/base-workflow-engine.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/workflow/dependency-analyzer.d.ts +78 -0
- package/node_modules/@sudocode-ai/local-server/dist/workflow/dependency-analyzer.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/workflow/dependency-analyzer.js +264 -0
- package/node_modules/@sudocode-ai/local-server/dist/workflow/dependency-analyzer.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/workflow/engines/orchestrator-engine.d.ts +237 -0
- package/node_modules/@sudocode-ai/local-server/dist/workflow/engines/orchestrator-engine.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/workflow/engines/orchestrator-engine.js +749 -0
- package/node_modules/@sudocode-ai/local-server/dist/workflow/engines/orchestrator-engine.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/workflow/engines/sequential-engine.d.ts +276 -0
- package/node_modules/@sudocode-ai/local-server/dist/workflow/engines/sequential-engine.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/workflow/engines/sequential-engine.js +1110 -0
- package/node_modules/@sudocode-ai/local-server/dist/workflow/engines/sequential-engine.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/workflow/index.d.ts +15 -0
- package/node_modules/@sudocode-ai/local-server/dist/workflow/index.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/workflow/index.js +22 -0
- package/node_modules/@sudocode-ai/local-server/dist/workflow/index.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/workflow/mcp/api-client.d.ts +103 -0
- package/node_modules/@sudocode-ai/local-server/dist/workflow/mcp/api-client.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/workflow/mcp/api-client.js +193 -0
- package/node_modules/@sudocode-ai/local-server/dist/workflow/mcp/api-client.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/workflow/mcp/index.d.ts +16 -0
- package/node_modules/@sudocode-ai/local-server/dist/workflow/mcp/index.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/workflow/mcp/index.js +114 -0
- package/node_modules/@sudocode-ai/local-server/dist/workflow/mcp/index.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/workflow/mcp/server.d.ts +85 -0
- package/node_modules/@sudocode-ai/local-server/dist/workflow/mcp/server.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/workflow/mcp/server.js +520 -0
- package/node_modules/@sudocode-ai/local-server/dist/workflow/mcp/server.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/workflow/mcp/tools/escalation.d.ts +36 -0
- package/node_modules/@sudocode-ai/local-server/dist/workflow/mcp/tools/escalation.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/workflow/mcp/tools/escalation.js +47 -0
- package/node_modules/@sudocode-ai/local-server/dist/workflow/mcp/tools/escalation.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/workflow/mcp/tools/execution.d.ts +59 -0
- package/node_modules/@sudocode-ai/local-server/dist/workflow/mcp/tools/execution.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/workflow/mcp/tools/execution.js +67 -0
- package/node_modules/@sudocode-ai/local-server/dist/workflow/mcp/tools/execution.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/workflow/mcp/tools/inspection.d.ts +82 -0
- package/node_modules/@sudocode-ai/local-server/dist/workflow/mcp/tools/inspection.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/workflow/mcp/tools/inspection.js +57 -0
- package/node_modules/@sudocode-ai/local-server/dist/workflow/mcp/tools/inspection.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/workflow/mcp/tools/workflow.d.ts +59 -0
- package/node_modules/@sudocode-ai/local-server/dist/workflow/mcp/tools/workflow.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/workflow/mcp/tools/workflow.js +40 -0
- package/node_modules/@sudocode-ai/local-server/dist/workflow/mcp/tools/workflow.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/workflow/mcp/types.d.ts +345 -0
- package/node_modules/@sudocode-ai/local-server/dist/workflow/mcp/types.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/workflow/mcp/types.js +7 -0
- package/node_modules/@sudocode-ai/local-server/dist/workflow/mcp/types.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/workflow/services/prompt-builder.d.ts +36 -0
- package/node_modules/@sudocode-ai/local-server/dist/workflow/services/prompt-builder.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/workflow/services/prompt-builder.js +329 -0
- package/node_modules/@sudocode-ai/local-server/dist/workflow/services/prompt-builder.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/workflow/services/wakeup-service.d.ts +262 -0
- package/node_modules/@sudocode-ai/local-server/dist/workflow/services/wakeup-service.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/workflow/services/wakeup-service.js +809 -0
- package/node_modules/@sudocode-ai/local-server/dist/workflow/services/wakeup-service.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/workflow/workflow-engine.d.ts +221 -0
- package/node_modules/@sudocode-ai/local-server/dist/workflow/workflow-engine.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/workflow/workflow-engine.js +94 -0
- package/node_modules/@sudocode-ai/local-server/dist/workflow/workflow-engine.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/workflow/workflow-event-emitter.d.ts +278 -0
- package/node_modules/@sudocode-ai/local-server/dist/workflow/workflow-event-emitter.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/local-server/dist/workflow/workflow-event-emitter.js +259 -0
- package/node_modules/@sudocode-ai/local-server/dist/workflow/workflow-event-emitter.js.map +1 -0
- package/node_modules/@sudocode-ai/local-server/package.json +78 -0
- package/node_modules/@sudocode-ai/mcp/README.md +226 -0
- package/node_modules/@sudocode-ai/mcp/dist/client.d.ts +33 -0
- package/node_modules/@sudocode-ai/mcp/dist/client.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/mcp/dist/client.js +166 -0
- package/node_modules/@sudocode-ai/mcp/dist/client.js.map +1 -0
- package/node_modules/@sudocode-ai/mcp/dist/index.d.ts +6 -0
- package/node_modules/@sudocode-ai/mcp/dist/index.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/mcp/dist/index.js +64 -0
- package/node_modules/@sudocode-ai/mcp/dist/index.js.map +1 -0
- package/node_modules/@sudocode-ai/mcp/dist/server.d.ts +26 -0
- package/node_modules/@sudocode-ai/mcp/dist/server.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/mcp/dist/server.js +577 -0
- package/node_modules/@sudocode-ai/mcp/dist/server.js.map +1 -0
- package/node_modules/@sudocode-ai/mcp/dist/tools/analytics.d.ts +41 -0
- package/node_modules/@sudocode-ai/mcp/dist/tools/analytics.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/mcp/dist/tools/analytics.js +21 -0
- package/node_modules/@sudocode-ai/mcp/dist/tools/analytics.js.map +1 -0
- package/node_modules/@sudocode-ai/mcp/dist/tools/feedback.d.ts +21 -0
- package/node_modules/@sudocode-ai/mcp/dist/tools/feedback.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/mcp/dist/tools/feedback.js +30 -0
- package/node_modules/@sudocode-ai/mcp/dist/tools/feedback.js.map +1 -0
- package/node_modules/@sudocode-ai/mcp/dist/tools/init.d.ts +17 -0
- package/node_modules/@sudocode-ai/mcp/dist/tools/init.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/mcp/dist/tools/init.js +15 -0
- package/node_modules/@sudocode-ai/mcp/dist/tools/init.js.map +1 -0
- package/node_modules/@sudocode-ai/mcp/dist/tools/issues.d.ts +44 -0
- package/node_modules/@sudocode-ai/mcp/dist/tools/issues.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/mcp/dist/tools/issues.js +109 -0
- package/node_modules/@sudocode-ai/mcp/dist/tools/issues.js.map +1 -0
- package/node_modules/@sudocode-ai/mcp/dist/tools/references.d.ts +21 -0
- package/node_modules/@sudocode-ai/mcp/dist/tools/references.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/mcp/dist/tools/references.js +49 -0
- package/node_modules/@sudocode-ai/mcp/dist/tools/references.js.map +1 -0
- package/node_modules/@sudocode-ai/mcp/dist/tools/relationships.d.ts +15 -0
- package/node_modules/@sudocode-ai/mcp/dist/tools/relationships.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/mcp/dist/tools/relationships.js +18 -0
- package/node_modules/@sudocode-ai/mcp/dist/tools/relationships.js.map +1 -0
- package/node_modules/@sudocode-ai/mcp/dist/tools/specs.d.ts +35 -0
- package/node_modules/@sudocode-ai/mcp/dist/tools/specs.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/mcp/dist/tools/specs.js +85 -0
- package/node_modules/@sudocode-ai/mcp/dist/tools/specs.js.map +1 -0
- package/node_modules/@sudocode-ai/mcp/dist/types.d.ts +35 -0
- package/node_modules/@sudocode-ai/mcp/dist/types.d.ts.map +1 -0
- package/node_modules/@sudocode-ai/mcp/dist/types.js +21 -0
- package/node_modules/@sudocode-ai/mcp/dist/types.js.map +1 -0
- package/node_modules/@sudocode-ai/mcp/package.json +67 -0
- package/node_modules/@sudocode-ai/types/README.md +7 -0
- package/node_modules/@sudocode-ai/types/package.json +76 -0
- package/node_modules/@sudocode-ai/types/src/agents.d.ts +278 -0
- package/node_modules/@sudocode-ai/types/src/artifacts.d.ts +66 -0
- package/node_modules/@sudocode-ai/types/src/events.d.ts +70 -0
- package/node_modules/@sudocode-ai/types/src/index.d.ts +452 -0
- package/node_modules/@sudocode-ai/types/src/integrations.d.ts +454 -0
- package/node_modules/@sudocode-ai/types/src/workflows.d.ts +501 -0
- package/node_modules/commander/LICENSE +22 -0
- package/node_modules/commander/Readme.md +1149 -0
- package/node_modules/commander/esm.mjs +16 -0
- package/node_modules/commander/index.js +24 -0
- package/node_modules/commander/lib/argument.js +149 -0
- package/node_modules/commander/lib/command.js +2662 -0
- package/node_modules/commander/lib/error.js +39 -0
- package/node_modules/commander/lib/help.js +709 -0
- package/node_modules/commander/lib/option.js +367 -0
- package/node_modules/commander/lib/suggestSimilar.js +101 -0
- package/node_modules/commander/package-support.json +16 -0
- package/node_modules/commander/package.json +82 -0
- package/node_modules/commander/typings/esm.d.mts +3 -0
- package/node_modules/commander/typings/index.d.ts +1045 -0
- package/node_modules/glob/LICENSE +15 -0
- package/node_modules/glob/README.md +1265 -0
- package/node_modules/glob/package.json +99 -0
- package/node_modules/isexe/LICENSE +15 -0
- package/node_modules/isexe/README.md +74 -0
- package/node_modules/isexe/package.json +96 -0
- package/node_modules/which/LICENSE +15 -0
- package/node_modules/which/README.md +51 -0
- package/node_modules/which/bin/which.js +52 -0
- package/node_modules/which/lib/index.js +111 -0
- package/node_modules/which/package.json +52 -0
- package/package.json +9 -9
|
@@ -0,0 +1,1169 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Executions API routes (mapped to /api)
|
|
3
|
+
*
|
|
4
|
+
* Provides REST API for managing issue executions.
|
|
5
|
+
*
|
|
6
|
+
* Note: All routes require X-Project-ID header via requireProject() middleware
|
|
7
|
+
*/
|
|
8
|
+
import { Router } from "express";
|
|
9
|
+
import { execSync } from "child_process";
|
|
10
|
+
import { NormalizedEntryToAgUiAdapter } from "../execution/output/normalized-to-ag-ui-adapter.js";
|
|
11
|
+
import { AgUiEventAdapter } from "../execution/output/ag-ui-adapter.js";
|
|
12
|
+
import { agentRegistryService } from "../services/agent-registry.js";
|
|
13
|
+
import { AgentNotFoundError, AgentNotImplementedError, AgentError, } from "../errors/agent-errors.js";
|
|
14
|
+
import { WorktreeSyncService, WorktreeSyncError, WorktreeSyncErrorCode, } from "../services/worktree-sync-service.js";
|
|
15
|
+
import { ExecutionChangesService } from "../services/execution-changes-service.js";
|
|
16
|
+
/**
|
|
17
|
+
* Get WorktreeSyncService instance for a request
|
|
18
|
+
*
|
|
19
|
+
* @param req - Express request with project context
|
|
20
|
+
* @returns WorktreeSyncService instance
|
|
21
|
+
*/
|
|
22
|
+
function getWorktreeSyncService(req) {
|
|
23
|
+
const db = req.project.db;
|
|
24
|
+
const repoPath = req.project.path;
|
|
25
|
+
return new WorktreeSyncService(db, repoPath);
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Get HTTP status code for WorktreeSyncError
|
|
29
|
+
*
|
|
30
|
+
* @param error - WorktreeSyncError instance
|
|
31
|
+
* @returns HTTP status code
|
|
32
|
+
*/
|
|
33
|
+
function getStatusCodeForSyncError(error) {
|
|
34
|
+
switch (error.code) {
|
|
35
|
+
case WorktreeSyncErrorCode.NO_WORKTREE:
|
|
36
|
+
case WorktreeSyncErrorCode.WORKTREE_MISSING:
|
|
37
|
+
case WorktreeSyncErrorCode.BRANCH_MISSING:
|
|
38
|
+
case WorktreeSyncErrorCode.TARGET_BRANCH_MISSING:
|
|
39
|
+
case WorktreeSyncErrorCode.EXECUTION_NOT_FOUND:
|
|
40
|
+
return 404; // Not found
|
|
41
|
+
case WorktreeSyncErrorCode.DIRTY_WORKING_TREE:
|
|
42
|
+
case WorktreeSyncErrorCode.CODE_CONFLICTS:
|
|
43
|
+
case WorktreeSyncErrorCode.NO_COMMON_BASE:
|
|
44
|
+
return 400; // Bad request (user must fix)
|
|
45
|
+
case WorktreeSyncErrorCode.MERGE_FAILED:
|
|
46
|
+
case WorktreeSyncErrorCode.JSONL_RESOLUTION_FAILED:
|
|
47
|
+
case WorktreeSyncErrorCode.DATABASE_SYNC_FAILED:
|
|
48
|
+
return 500; // Internal error
|
|
49
|
+
default:
|
|
50
|
+
return 500;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Create executions router
|
|
55
|
+
*
|
|
56
|
+
* Note: ExecutionService and ExecutionLogsStore are accessed via req.project
|
|
57
|
+
* which is injected by the requireProject() middleware
|
|
58
|
+
*
|
|
59
|
+
* @returns Express router with execution endpoints
|
|
60
|
+
*/
|
|
61
|
+
export function createExecutionsRouter() {
|
|
62
|
+
const router = Router();
|
|
63
|
+
/**
|
|
64
|
+
* GET /api/executions
|
|
65
|
+
*
|
|
66
|
+
* List all executions with filtering and pagination
|
|
67
|
+
*
|
|
68
|
+
* Query parameters:
|
|
69
|
+
* - limit?: number (default: 50)
|
|
70
|
+
* - offset?: number (default: 0)
|
|
71
|
+
* - status?: ExecutionStatus | ExecutionStatus[] (comma-separated for multiple)
|
|
72
|
+
* - issueId?: string
|
|
73
|
+
* - sortBy?: 'created_at' | 'updated_at' (default: 'created_at')
|
|
74
|
+
* - order?: 'asc' | 'desc' (default: 'desc')
|
|
75
|
+
* - since?: ISO date string - only return executions created after this date
|
|
76
|
+
* - includeRunning?: 'true' - when used with 'since', also include running executions regardless of age
|
|
77
|
+
*/
|
|
78
|
+
router.get("/executions", (req, res) => {
|
|
79
|
+
try {
|
|
80
|
+
// Parse query parameters
|
|
81
|
+
const limit = req.query.limit
|
|
82
|
+
? parseInt(req.query.limit, 10)
|
|
83
|
+
: undefined;
|
|
84
|
+
const offset = req.query.offset
|
|
85
|
+
? parseInt(req.query.offset, 10)
|
|
86
|
+
: undefined;
|
|
87
|
+
// Parse status (can be single value or comma-separated array)
|
|
88
|
+
let status = undefined;
|
|
89
|
+
if (req.query.status) {
|
|
90
|
+
const statusParam = req.query.status;
|
|
91
|
+
status = statusParam.includes(",")
|
|
92
|
+
? statusParam.split(",").map((s) => s.trim())
|
|
93
|
+
: statusParam;
|
|
94
|
+
}
|
|
95
|
+
const issueId = req.query.issueId;
|
|
96
|
+
const sortBy = req.query.sortBy || undefined;
|
|
97
|
+
const order = req.query.order || undefined;
|
|
98
|
+
const since = req.query.since;
|
|
99
|
+
const includeRunning = req.query.includeRunning === "true";
|
|
100
|
+
// Validate limit and offset
|
|
101
|
+
if (limit !== undefined && (isNaN(limit) || limit < 0)) {
|
|
102
|
+
res.status(400).json({
|
|
103
|
+
success: false,
|
|
104
|
+
data: null,
|
|
105
|
+
message: "Invalid limit parameter",
|
|
106
|
+
});
|
|
107
|
+
return;
|
|
108
|
+
}
|
|
109
|
+
if (offset !== undefined && (isNaN(offset) || offset < 0)) {
|
|
110
|
+
res.status(400).json({
|
|
111
|
+
success: false,
|
|
112
|
+
data: null,
|
|
113
|
+
message: "Invalid offset parameter",
|
|
114
|
+
});
|
|
115
|
+
return;
|
|
116
|
+
}
|
|
117
|
+
// Validate sortBy
|
|
118
|
+
if (sortBy && sortBy !== "created_at" && sortBy !== "updated_at") {
|
|
119
|
+
res.status(400).json({
|
|
120
|
+
success: false,
|
|
121
|
+
data: null,
|
|
122
|
+
message: "Invalid sortBy parameter. Must be 'created_at' or 'updated_at'",
|
|
123
|
+
});
|
|
124
|
+
return;
|
|
125
|
+
}
|
|
126
|
+
// Validate order
|
|
127
|
+
if (order && order !== "asc" && order !== "desc") {
|
|
128
|
+
res.status(400).json({
|
|
129
|
+
success: false,
|
|
130
|
+
data: null,
|
|
131
|
+
message: "Invalid order parameter. Must be 'asc' or 'desc'",
|
|
132
|
+
});
|
|
133
|
+
return;
|
|
134
|
+
}
|
|
135
|
+
// Validate since (should be valid ISO date)
|
|
136
|
+
if (since) {
|
|
137
|
+
const sinceDate = new Date(since);
|
|
138
|
+
if (isNaN(sinceDate.getTime())) {
|
|
139
|
+
res.status(400).json({
|
|
140
|
+
success: false,
|
|
141
|
+
data: null,
|
|
142
|
+
message: "Invalid since parameter. Must be a valid ISO date string",
|
|
143
|
+
});
|
|
144
|
+
return;
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
// Call service method
|
|
148
|
+
const result = req.project.executionService.listAll({
|
|
149
|
+
limit,
|
|
150
|
+
offset,
|
|
151
|
+
status,
|
|
152
|
+
issueId,
|
|
153
|
+
sortBy,
|
|
154
|
+
order,
|
|
155
|
+
since,
|
|
156
|
+
includeRunning,
|
|
157
|
+
});
|
|
158
|
+
res.json({
|
|
159
|
+
success: true,
|
|
160
|
+
data: result,
|
|
161
|
+
});
|
|
162
|
+
}
|
|
163
|
+
catch (error) {
|
|
164
|
+
console.error("Error listing executions:", error);
|
|
165
|
+
res.status(500).json({
|
|
166
|
+
success: false,
|
|
167
|
+
data: null,
|
|
168
|
+
error_data: error instanceof Error ? error.message : String(error),
|
|
169
|
+
message: "Failed to list executions",
|
|
170
|
+
});
|
|
171
|
+
}
|
|
172
|
+
});
|
|
173
|
+
/**
|
|
174
|
+
* POST /api/executions
|
|
175
|
+
*
|
|
176
|
+
* Create and start an adhoc execution (not tied to an issue)
|
|
177
|
+
*
|
|
178
|
+
* Request body:
|
|
179
|
+
* - prompt: string (required) - The prompt for the execution
|
|
180
|
+
* - config?: ExecutionConfig - Execution configuration
|
|
181
|
+
* - agentType?: string - Agent type (defaults to 'claude-code')
|
|
182
|
+
*/
|
|
183
|
+
router.post("/executions", async (req, res) => {
|
|
184
|
+
try {
|
|
185
|
+
const { config, prompt, agentType } = req.body;
|
|
186
|
+
// Validate required fields - prompt is required for adhoc executions
|
|
187
|
+
if (!prompt || typeof prompt !== "string" || !prompt.trim()) {
|
|
188
|
+
res.status(400).json({
|
|
189
|
+
success: false,
|
|
190
|
+
data: null,
|
|
191
|
+
message: "Prompt is required for adhoc executions",
|
|
192
|
+
});
|
|
193
|
+
return;
|
|
194
|
+
}
|
|
195
|
+
// Validate agentType if provided
|
|
196
|
+
if (agentType) {
|
|
197
|
+
// Check if agent exists in registry
|
|
198
|
+
if (!agentRegistryService.hasAgent(agentType)) {
|
|
199
|
+
const availableAgents = agentRegistryService
|
|
200
|
+
.getAvailableAgents()
|
|
201
|
+
.map((a) => a.name);
|
|
202
|
+
throw new AgentNotFoundError(agentType, availableAgents);
|
|
203
|
+
}
|
|
204
|
+
// Check if agent is implemented
|
|
205
|
+
if (!agentRegistryService.isAgentImplemented(agentType)) {
|
|
206
|
+
throw new AgentNotImplementedError(agentType);
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
// Create execution with null issueId (adhoc execution)
|
|
210
|
+
const execution = await req.project.executionService.createExecution(null, // No issue for adhoc executions
|
|
211
|
+
config || {}, prompt, agentType // Optional, defaults to 'claude-code' in service
|
|
212
|
+
);
|
|
213
|
+
res.status(201).json({
|
|
214
|
+
success: true,
|
|
215
|
+
data: execution,
|
|
216
|
+
});
|
|
217
|
+
}
|
|
218
|
+
catch (error) {
|
|
219
|
+
console.error("[API Route] ERROR: Failed to create adhoc execution:", error);
|
|
220
|
+
// Handle agent-specific errors with enhanced error responses
|
|
221
|
+
if (error instanceof AgentNotFoundError) {
|
|
222
|
+
res.status(400).json({
|
|
223
|
+
success: false,
|
|
224
|
+
data: null,
|
|
225
|
+
error: error.message,
|
|
226
|
+
code: error.code,
|
|
227
|
+
details: error.details,
|
|
228
|
+
});
|
|
229
|
+
return;
|
|
230
|
+
}
|
|
231
|
+
if (error instanceof AgentNotImplementedError) {
|
|
232
|
+
res.status(501).json({
|
|
233
|
+
success: false,
|
|
234
|
+
data: null,
|
|
235
|
+
error: error.message,
|
|
236
|
+
code: error.code,
|
|
237
|
+
details: error.details,
|
|
238
|
+
});
|
|
239
|
+
return;
|
|
240
|
+
}
|
|
241
|
+
if (error instanceof AgentError) {
|
|
242
|
+
// Generic agent error (400 by default)
|
|
243
|
+
res.status(400).json({
|
|
244
|
+
success: false,
|
|
245
|
+
data: null,
|
|
246
|
+
error: error.message,
|
|
247
|
+
code: error.code,
|
|
248
|
+
details: error.details,
|
|
249
|
+
});
|
|
250
|
+
return;
|
|
251
|
+
}
|
|
252
|
+
// Handle other errors
|
|
253
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
254
|
+
res.status(500).json({
|
|
255
|
+
success: false,
|
|
256
|
+
data: null,
|
|
257
|
+
error_data: errorMessage,
|
|
258
|
+
message: "Failed to create adhoc execution",
|
|
259
|
+
});
|
|
260
|
+
}
|
|
261
|
+
});
|
|
262
|
+
/**
|
|
263
|
+
* POST /api/issues/:issueId/executions
|
|
264
|
+
*
|
|
265
|
+
* Create and start a new execution
|
|
266
|
+
*/
|
|
267
|
+
router.post("/issues/:issueId/executions", async (req, res) => {
|
|
268
|
+
try {
|
|
269
|
+
const { issueId } = req.params;
|
|
270
|
+
const { config, prompt, agentType } = req.body;
|
|
271
|
+
// Validate required fields
|
|
272
|
+
if (!prompt) {
|
|
273
|
+
res.status(400).json({
|
|
274
|
+
success: false,
|
|
275
|
+
data: null,
|
|
276
|
+
message: "Prompt is required",
|
|
277
|
+
});
|
|
278
|
+
return;
|
|
279
|
+
}
|
|
280
|
+
// Validate agentType if provided
|
|
281
|
+
if (agentType) {
|
|
282
|
+
// Check if agent exists in registry
|
|
283
|
+
if (!agentRegistryService.hasAgent(agentType)) {
|
|
284
|
+
const availableAgents = agentRegistryService
|
|
285
|
+
.getAvailableAgents()
|
|
286
|
+
.map((a) => a.name);
|
|
287
|
+
throw new AgentNotFoundError(agentType, availableAgents);
|
|
288
|
+
}
|
|
289
|
+
// Check if agent is implemented
|
|
290
|
+
if (!agentRegistryService.isAgentImplemented(agentType)) {
|
|
291
|
+
throw new AgentNotImplementedError(agentType);
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
const execution = await req.project.executionService.createExecution(issueId, config || {}, prompt, agentType // Optional, defaults to 'claude-code' in service
|
|
295
|
+
);
|
|
296
|
+
res.status(201).json({
|
|
297
|
+
success: true,
|
|
298
|
+
data: execution,
|
|
299
|
+
});
|
|
300
|
+
}
|
|
301
|
+
catch (error) {
|
|
302
|
+
console.error("[API Route] ERROR: Failed to create execution:", error);
|
|
303
|
+
// Handle agent-specific errors with enhanced error responses
|
|
304
|
+
if (error instanceof AgentNotFoundError) {
|
|
305
|
+
res.status(400).json({
|
|
306
|
+
success: false,
|
|
307
|
+
data: null,
|
|
308
|
+
error: error.message,
|
|
309
|
+
code: error.code,
|
|
310
|
+
details: error.details,
|
|
311
|
+
});
|
|
312
|
+
return;
|
|
313
|
+
}
|
|
314
|
+
if (error instanceof AgentNotImplementedError) {
|
|
315
|
+
res.status(501).json({
|
|
316
|
+
success: false,
|
|
317
|
+
data: null,
|
|
318
|
+
error: error.message,
|
|
319
|
+
code: error.code,
|
|
320
|
+
details: error.details,
|
|
321
|
+
});
|
|
322
|
+
return;
|
|
323
|
+
}
|
|
324
|
+
if (error instanceof AgentError) {
|
|
325
|
+
// Generic agent error (400 by default)
|
|
326
|
+
res.status(400).json({
|
|
327
|
+
success: false,
|
|
328
|
+
data: null,
|
|
329
|
+
error: error.message,
|
|
330
|
+
code: error.code,
|
|
331
|
+
details: error.details,
|
|
332
|
+
});
|
|
333
|
+
return;
|
|
334
|
+
}
|
|
335
|
+
// Handle other errors (backwards compatibility)
|
|
336
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
337
|
+
const statusCode = errorMessage.includes("not found") ? 404 : 500;
|
|
338
|
+
res.status(statusCode).json({
|
|
339
|
+
success: false,
|
|
340
|
+
data: null,
|
|
341
|
+
error_data: errorMessage,
|
|
342
|
+
message: "Failed to create execution",
|
|
343
|
+
});
|
|
344
|
+
}
|
|
345
|
+
});
|
|
346
|
+
/**
|
|
347
|
+
* GET /api/executions/:executionId
|
|
348
|
+
*
|
|
349
|
+
* Get a specific execution by ID
|
|
350
|
+
*/
|
|
351
|
+
router.get("/executions/:executionId", (req, res) => {
|
|
352
|
+
try {
|
|
353
|
+
const { executionId } = req.params;
|
|
354
|
+
const execution = req.project.executionService.getExecution(executionId);
|
|
355
|
+
if (!execution) {
|
|
356
|
+
res.status(404).json({
|
|
357
|
+
success: false,
|
|
358
|
+
data: null,
|
|
359
|
+
message: `Execution not found: ${executionId}`,
|
|
360
|
+
});
|
|
361
|
+
return;
|
|
362
|
+
}
|
|
363
|
+
res.json({
|
|
364
|
+
success: true,
|
|
365
|
+
data: execution,
|
|
366
|
+
});
|
|
367
|
+
}
|
|
368
|
+
catch (error) {
|
|
369
|
+
console.error("Error getting execution:", error);
|
|
370
|
+
res.status(500).json({
|
|
371
|
+
success: false,
|
|
372
|
+
data: null,
|
|
373
|
+
error_data: error instanceof Error ? error.message : String(error),
|
|
374
|
+
message: "Failed to get execution",
|
|
375
|
+
});
|
|
376
|
+
}
|
|
377
|
+
});
|
|
378
|
+
/**
|
|
379
|
+
* GET /api/executions/:executionId/chain
|
|
380
|
+
*
|
|
381
|
+
* Get execution chain (root execution + all follow-ups)
|
|
382
|
+
*
|
|
383
|
+
* Returns the full chain of executions starting from the root.
|
|
384
|
+
* If the requested execution is a follow-up, finds the root and returns the full chain.
|
|
385
|
+
* Executions are ordered chronologically (oldest first).
|
|
386
|
+
*/
|
|
387
|
+
router.get("/executions/:executionId/chain", (req, res) => {
|
|
388
|
+
try {
|
|
389
|
+
const { executionId } = req.params;
|
|
390
|
+
const db = req.project.db;
|
|
391
|
+
// Get the requested execution
|
|
392
|
+
const execution = req.project.executionService.getExecution(executionId);
|
|
393
|
+
if (!execution) {
|
|
394
|
+
res.status(404).json({
|
|
395
|
+
success: false,
|
|
396
|
+
data: null,
|
|
397
|
+
message: `Execution not found: ${executionId}`,
|
|
398
|
+
});
|
|
399
|
+
return;
|
|
400
|
+
}
|
|
401
|
+
// Find the root execution by traversing up parent_execution_id
|
|
402
|
+
let rootId = executionId;
|
|
403
|
+
let current = execution;
|
|
404
|
+
while (current.parent_execution_id) {
|
|
405
|
+
rootId = current.parent_execution_id;
|
|
406
|
+
const parent = req.project.executionService.getExecution(rootId);
|
|
407
|
+
if (!parent)
|
|
408
|
+
break;
|
|
409
|
+
current = parent;
|
|
410
|
+
}
|
|
411
|
+
// Get all executions in the chain (root + all descendants)
|
|
412
|
+
// Using recursive CTE to get all descendants
|
|
413
|
+
const chain = db
|
|
414
|
+
.prepare(`
|
|
415
|
+
WITH RECURSIVE execution_chain AS (
|
|
416
|
+
-- Base case: the root execution
|
|
417
|
+
SELECT * FROM executions WHERE id = ?
|
|
418
|
+
UNION ALL
|
|
419
|
+
-- Recursive case: children of executions in the chain
|
|
420
|
+
SELECT e.* FROM executions e
|
|
421
|
+
INNER JOIN execution_chain ec ON e.parent_execution_id = ec.id
|
|
422
|
+
)
|
|
423
|
+
SELECT * FROM execution_chain
|
|
424
|
+
ORDER BY created_at ASC
|
|
425
|
+
`)
|
|
426
|
+
.all(rootId);
|
|
427
|
+
res.json({
|
|
428
|
+
success: true,
|
|
429
|
+
data: {
|
|
430
|
+
rootId,
|
|
431
|
+
executions: chain,
|
|
432
|
+
},
|
|
433
|
+
});
|
|
434
|
+
}
|
|
435
|
+
catch (error) {
|
|
436
|
+
console.error("Error getting execution chain:", error);
|
|
437
|
+
res.status(500).json({
|
|
438
|
+
success: false,
|
|
439
|
+
data: null,
|
|
440
|
+
error_data: error instanceof Error ? error.message : String(error),
|
|
441
|
+
message: "Failed to get execution chain",
|
|
442
|
+
});
|
|
443
|
+
}
|
|
444
|
+
});
|
|
445
|
+
/**
|
|
446
|
+
* GET /api/executions/:executionId/logs
|
|
447
|
+
*
|
|
448
|
+
* Get AG-UI events for historical replay
|
|
449
|
+
*
|
|
450
|
+
* Fetches NormalizedEntry logs from storage and converts them to AG-UI events on-demand.
|
|
451
|
+
* This preserves full structured data in storage while serving UI-ready events to frontend.
|
|
452
|
+
*/
|
|
453
|
+
router.get("/executions/:executionId/logs", async (req, res) => {
|
|
454
|
+
try {
|
|
455
|
+
const { executionId } = req.params;
|
|
456
|
+
// Verify execution exists
|
|
457
|
+
const execution = req.project.executionService.getExecution(executionId);
|
|
458
|
+
if (!execution) {
|
|
459
|
+
res.status(404).json({
|
|
460
|
+
success: false,
|
|
461
|
+
data: null,
|
|
462
|
+
message: `Execution not found: ${executionId}`,
|
|
463
|
+
});
|
|
464
|
+
return;
|
|
465
|
+
}
|
|
466
|
+
// Fetch normalized entries from storage
|
|
467
|
+
const normalizedEntries = req.project.logsStore.getNormalizedEntries(executionId);
|
|
468
|
+
const metadata = req.project.logsStore.getLogMetadata(executionId);
|
|
469
|
+
// Convert NormalizedEntry to AG-UI events on-demand
|
|
470
|
+
const events = [];
|
|
471
|
+
// Create a temporary AG-UI adapter to collect events
|
|
472
|
+
const agUiAdapter = new AgUiEventAdapter(executionId);
|
|
473
|
+
agUiAdapter.onEvent((event) => {
|
|
474
|
+
events.push(event);
|
|
475
|
+
});
|
|
476
|
+
// Create normalized adapter to transform entries
|
|
477
|
+
const normalizedAdapter = new NormalizedEntryToAgUiAdapter(agUiAdapter);
|
|
478
|
+
// Process all normalized entries through the adapter
|
|
479
|
+
for (const entry of normalizedEntries) {
|
|
480
|
+
await normalizedAdapter.processEntry(entry);
|
|
481
|
+
}
|
|
482
|
+
res.json({
|
|
483
|
+
success: true,
|
|
484
|
+
data: {
|
|
485
|
+
executionId,
|
|
486
|
+
events,
|
|
487
|
+
metadata: metadata
|
|
488
|
+
? {
|
|
489
|
+
lineCount: metadata.line_count,
|
|
490
|
+
byteSize: metadata.byte_size,
|
|
491
|
+
createdAt: metadata.created_at,
|
|
492
|
+
updatedAt: metadata.updated_at,
|
|
493
|
+
}
|
|
494
|
+
: {
|
|
495
|
+
lineCount: 0,
|
|
496
|
+
byteSize: 0,
|
|
497
|
+
createdAt: execution.created_at,
|
|
498
|
+
updatedAt: execution.updated_at,
|
|
499
|
+
},
|
|
500
|
+
},
|
|
501
|
+
});
|
|
502
|
+
}
|
|
503
|
+
catch (error) {
|
|
504
|
+
console.error("[GET /executions/:id/logs] Error:", error);
|
|
505
|
+
res.status(500).json({
|
|
506
|
+
success: false,
|
|
507
|
+
data: null,
|
|
508
|
+
error_data: error instanceof Error ? error.message : String(error),
|
|
509
|
+
message: "Failed to fetch execution logs",
|
|
510
|
+
});
|
|
511
|
+
}
|
|
512
|
+
});
|
|
513
|
+
/**
|
|
514
|
+
* GET /api/executions/:executionId/changes
|
|
515
|
+
*
|
|
516
|
+
* Get code changes (file list + diff statistics) for an execution
|
|
517
|
+
*
|
|
518
|
+
* Calculates changes on-demand from commit SHAs. Supports:
|
|
519
|
+
* - Committed changes (commit-to-commit diff)
|
|
520
|
+
* - Uncommitted changes (working tree diff)
|
|
521
|
+
* - Unavailable states with clear error reasons
|
|
522
|
+
*/
|
|
523
|
+
router.get("/executions/:executionId/changes", async (req, res) => {
|
|
524
|
+
try {
|
|
525
|
+
const { executionId } = req.params;
|
|
526
|
+
const db = req.project.db;
|
|
527
|
+
const repoPath = req.project.path;
|
|
528
|
+
// Create changes service
|
|
529
|
+
const changesService = new ExecutionChangesService(db, repoPath);
|
|
530
|
+
// Get changes
|
|
531
|
+
const result = await changesService.getChanges(executionId);
|
|
532
|
+
res.json({
|
|
533
|
+
success: true,
|
|
534
|
+
data: result,
|
|
535
|
+
});
|
|
536
|
+
}
|
|
537
|
+
catch (error) {
|
|
538
|
+
console.error("[GET /executions/:id/changes] Error:", error);
|
|
539
|
+
res.status(500).json({
|
|
540
|
+
success: false,
|
|
541
|
+
data: null,
|
|
542
|
+
error_data: error instanceof Error ? error.message : String(error),
|
|
543
|
+
message: "Failed to calculate changes",
|
|
544
|
+
});
|
|
545
|
+
}
|
|
546
|
+
});
|
|
547
|
+
/**
|
|
548
|
+
* GET /api/executions/:executionId/changes/file
|
|
549
|
+
*
|
|
550
|
+
* Get diff content for a specific file in an execution
|
|
551
|
+
*
|
|
552
|
+
* Query params:
|
|
553
|
+
* - filePath: Path to the file to get diff for
|
|
554
|
+
*/
|
|
555
|
+
router.get("/executions/:executionId/changes/file", async (req, res) => {
|
|
556
|
+
try {
|
|
557
|
+
const { executionId } = req.params;
|
|
558
|
+
const { filePath } = req.query;
|
|
559
|
+
if (!filePath || typeof filePath !== "string") {
|
|
560
|
+
res.status(400).json({
|
|
561
|
+
success: false,
|
|
562
|
+
data: null,
|
|
563
|
+
message: "filePath query parameter is required",
|
|
564
|
+
});
|
|
565
|
+
return;
|
|
566
|
+
}
|
|
567
|
+
const db = req.project.db;
|
|
568
|
+
const repoPath = req.project.path;
|
|
569
|
+
// Create changes service
|
|
570
|
+
const changesService = new ExecutionChangesService(db, repoPath);
|
|
571
|
+
// Get file diff
|
|
572
|
+
const result = await changesService.getFileDiff(executionId, filePath);
|
|
573
|
+
if (!result.success) {
|
|
574
|
+
res.status(400).json({
|
|
575
|
+
success: false,
|
|
576
|
+
data: null,
|
|
577
|
+
message: result.error || "Failed to get file diff",
|
|
578
|
+
});
|
|
579
|
+
return;
|
|
580
|
+
}
|
|
581
|
+
res.json({
|
|
582
|
+
success: true,
|
|
583
|
+
data: {
|
|
584
|
+
filePath,
|
|
585
|
+
oldContent: result.oldContent,
|
|
586
|
+
newContent: result.newContent,
|
|
587
|
+
},
|
|
588
|
+
});
|
|
589
|
+
}
|
|
590
|
+
catch (error) {
|
|
591
|
+
console.error("[GET /executions/:id/changes/file] Error:", error);
|
|
592
|
+
res.status(500).json({
|
|
593
|
+
success: false,
|
|
594
|
+
data: null,
|
|
595
|
+
error_data: error instanceof Error ? error.message : String(error),
|
|
596
|
+
message: "Failed to get file diff",
|
|
597
|
+
});
|
|
598
|
+
}
|
|
599
|
+
});
|
|
600
|
+
/**
|
|
601
|
+
* GET /api/issues/:issueId/executions
|
|
602
|
+
*
|
|
603
|
+
* List all executions for an issue
|
|
604
|
+
*/
|
|
605
|
+
router.get("/issues/:issueId/executions", (req, res) => {
|
|
606
|
+
try {
|
|
607
|
+
const { issueId } = req.params;
|
|
608
|
+
const executions = req.project.executionService.listExecutions(issueId);
|
|
609
|
+
res.json({
|
|
610
|
+
success: true,
|
|
611
|
+
data: executions,
|
|
612
|
+
});
|
|
613
|
+
}
|
|
614
|
+
catch (error) {
|
|
615
|
+
console.error("Error listing executions:", error);
|
|
616
|
+
res.status(500).json({
|
|
617
|
+
success: false,
|
|
618
|
+
data: null,
|
|
619
|
+
error_data: error instanceof Error ? error.message : String(error),
|
|
620
|
+
message: "Failed to list executions",
|
|
621
|
+
});
|
|
622
|
+
}
|
|
623
|
+
});
|
|
624
|
+
/**
|
|
625
|
+
* POST /api/executions/:executionId/follow-up
|
|
626
|
+
*
|
|
627
|
+
* Create a follow-up execution that reuses the parent's worktree
|
|
628
|
+
*/
|
|
629
|
+
router.post("/executions/:executionId/follow-up", async (req, res) => {
|
|
630
|
+
try {
|
|
631
|
+
const { executionId } = req.params;
|
|
632
|
+
const { feedback } = req.body;
|
|
633
|
+
// Validate required fields
|
|
634
|
+
if (!feedback) {
|
|
635
|
+
res.status(400).json({
|
|
636
|
+
success: false,
|
|
637
|
+
data: null,
|
|
638
|
+
message: "Feedback is required",
|
|
639
|
+
});
|
|
640
|
+
return;
|
|
641
|
+
}
|
|
642
|
+
const followUpExecution = await req.project.executionService.createFollowUp(executionId, feedback);
|
|
643
|
+
res.status(201).json({
|
|
644
|
+
success: true,
|
|
645
|
+
data: followUpExecution,
|
|
646
|
+
});
|
|
647
|
+
}
|
|
648
|
+
catch (error) {
|
|
649
|
+
console.error("Error creating follow-up execution:", error);
|
|
650
|
+
// Handle specific error cases
|
|
651
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
652
|
+
const statusCode = errorMessage.includes("not found") ||
|
|
653
|
+
errorMessage.includes("no worktree")
|
|
654
|
+
? 404
|
|
655
|
+
: 500;
|
|
656
|
+
res.status(statusCode).json({
|
|
657
|
+
success: false,
|
|
658
|
+
data: null,
|
|
659
|
+
error_data: errorMessage,
|
|
660
|
+
message: "Failed to create follow-up execution",
|
|
661
|
+
});
|
|
662
|
+
}
|
|
663
|
+
});
|
|
664
|
+
/**
|
|
665
|
+
* POST /api/executions/:executionId/cancel
|
|
666
|
+
*
|
|
667
|
+
* Cancel a running execution
|
|
668
|
+
*/
|
|
669
|
+
router.post("/executions/:executionId/cancel", async (req, res) => {
|
|
670
|
+
try {
|
|
671
|
+
const { executionId } = req.params;
|
|
672
|
+
await req.project.executionService.cancelExecution(executionId);
|
|
673
|
+
res.json({
|
|
674
|
+
success: true,
|
|
675
|
+
data: { executionId },
|
|
676
|
+
message: "Execution cancelled successfully",
|
|
677
|
+
});
|
|
678
|
+
}
|
|
679
|
+
catch (error) {
|
|
680
|
+
console.error("Error cancelling execution:", error);
|
|
681
|
+
// Handle specific error cases
|
|
682
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
683
|
+
const statusCode = errorMessage.includes("not found") ? 404 : 500;
|
|
684
|
+
res.status(statusCode).json({
|
|
685
|
+
success: false,
|
|
686
|
+
data: null,
|
|
687
|
+
error_data: errorMessage,
|
|
688
|
+
message: "Failed to cancel execution",
|
|
689
|
+
});
|
|
690
|
+
}
|
|
691
|
+
});
|
|
692
|
+
/**
|
|
693
|
+
* DELETE /api/executions/:executionId
|
|
694
|
+
*
|
|
695
|
+
* Delete an execution and its entire chain (or cancel if ?cancel=true)
|
|
696
|
+
*
|
|
697
|
+
* Query parameters:
|
|
698
|
+
* - cancel: if "true", cancel the execution instead of deleting it
|
|
699
|
+
* - deleteBranch: if "true", also delete the execution's branch
|
|
700
|
+
* - deleteWorktree: if "true", also delete the execution's worktree
|
|
701
|
+
*/
|
|
702
|
+
router.delete("/executions/:executionId", async (req, res) => {
|
|
703
|
+
try {
|
|
704
|
+
const { executionId } = req.params;
|
|
705
|
+
const { cancel, deleteBranch, deleteWorktree } = req.query;
|
|
706
|
+
// If cancel query param is true, cancel the execution
|
|
707
|
+
if (cancel === "true") {
|
|
708
|
+
await req.project.executionService.cancelExecution(executionId);
|
|
709
|
+
res.json({
|
|
710
|
+
success: true,
|
|
711
|
+
data: { executionId },
|
|
712
|
+
message: "Execution cancelled successfully",
|
|
713
|
+
});
|
|
714
|
+
return;
|
|
715
|
+
}
|
|
716
|
+
// Otherwise, delete the execution and its chain
|
|
717
|
+
await req.project.executionService.deleteExecution(executionId, deleteBranch === "true", deleteWorktree === "true");
|
|
718
|
+
res.json({
|
|
719
|
+
success: true,
|
|
720
|
+
data: { executionId },
|
|
721
|
+
message: "Execution deleted successfully",
|
|
722
|
+
});
|
|
723
|
+
}
|
|
724
|
+
catch (error) {
|
|
725
|
+
console.error("Error deleting/cancelling execution:", error);
|
|
726
|
+
// Handle specific error cases
|
|
727
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
728
|
+
const statusCode = errorMessage.includes("not found") ? 404 : 500;
|
|
729
|
+
res.status(statusCode).json({
|
|
730
|
+
success: false,
|
|
731
|
+
data: null,
|
|
732
|
+
error_data: errorMessage,
|
|
733
|
+
message: "Failed to delete/cancel execution",
|
|
734
|
+
});
|
|
735
|
+
}
|
|
736
|
+
});
|
|
737
|
+
/**
|
|
738
|
+
* GET /api/executions/:executionId/worktree
|
|
739
|
+
*
|
|
740
|
+
* Check if worktree exists for an execution
|
|
741
|
+
*/
|
|
742
|
+
router.get("/executions/:executionId/worktree", async (req, res) => {
|
|
743
|
+
try {
|
|
744
|
+
const { executionId } = req.params;
|
|
745
|
+
const exists = await req.project.executionService.worktreeExists(executionId);
|
|
746
|
+
res.json({
|
|
747
|
+
success: true,
|
|
748
|
+
data: { exists },
|
|
749
|
+
});
|
|
750
|
+
}
|
|
751
|
+
catch (error) {
|
|
752
|
+
console.error("Error checking worktree:", error);
|
|
753
|
+
res.status(500).json({
|
|
754
|
+
success: false,
|
|
755
|
+
data: null,
|
|
756
|
+
error_data: error instanceof Error ? error.message : String(error),
|
|
757
|
+
message: "Failed to check worktree status",
|
|
758
|
+
});
|
|
759
|
+
}
|
|
760
|
+
});
|
|
761
|
+
/**
|
|
762
|
+
* DELETE /api/executions/:executionId/worktree
|
|
763
|
+
*
|
|
764
|
+
* Delete the worktree for an execution
|
|
765
|
+
*
|
|
766
|
+
* Query parameters:
|
|
767
|
+
* - deleteBranch: if "true", also delete the execution's branch
|
|
768
|
+
*/
|
|
769
|
+
router.delete("/executions/:executionId/worktree", async (req, res) => {
|
|
770
|
+
try {
|
|
771
|
+
const { executionId } = req.params;
|
|
772
|
+
const { deleteBranch } = req.query;
|
|
773
|
+
await req.project.executionService.deleteWorktree(executionId, deleteBranch === "true");
|
|
774
|
+
res.json({
|
|
775
|
+
success: true,
|
|
776
|
+
data: { executionId },
|
|
777
|
+
message: "Worktree deleted successfully",
|
|
778
|
+
});
|
|
779
|
+
}
|
|
780
|
+
catch (error) {
|
|
781
|
+
console.error("Error deleting worktree:", error);
|
|
782
|
+
// Handle specific error cases
|
|
783
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
784
|
+
let statusCode = 500;
|
|
785
|
+
if (errorMessage.includes("not found")) {
|
|
786
|
+
statusCode = 404;
|
|
787
|
+
}
|
|
788
|
+
else if (errorMessage.includes("has no worktree") ||
|
|
789
|
+
errorMessage.includes("Cannot delete worktree")) {
|
|
790
|
+
statusCode = 400;
|
|
791
|
+
}
|
|
792
|
+
res.status(statusCode).json({
|
|
793
|
+
success: false,
|
|
794
|
+
data: null,
|
|
795
|
+
error_data: errorMessage,
|
|
796
|
+
message: "Failed to delete worktree",
|
|
797
|
+
});
|
|
798
|
+
}
|
|
799
|
+
});
|
|
800
|
+
/**
|
|
801
|
+
* GET /api/executions/:executionId/sync/preview
|
|
802
|
+
*
|
|
803
|
+
* Preview sync changes and detect conflicts
|
|
804
|
+
*
|
|
805
|
+
* Returns preview of what would happen if sync is performed,
|
|
806
|
+
* including conflicts, diff, commits, and warnings.
|
|
807
|
+
*/
|
|
808
|
+
router.get("/executions/:executionId/sync/preview", async (req, res) => {
|
|
809
|
+
try {
|
|
810
|
+
const { executionId } = req.params;
|
|
811
|
+
// Get worktree sync service
|
|
812
|
+
const syncService = getWorktreeSyncService(req);
|
|
813
|
+
// Preview sync
|
|
814
|
+
const preview = await syncService.previewSync(executionId);
|
|
815
|
+
res.json({
|
|
816
|
+
success: true,
|
|
817
|
+
data: preview,
|
|
818
|
+
});
|
|
819
|
+
}
|
|
820
|
+
catch (error) {
|
|
821
|
+
console.error(`Failed to preview sync for execution ${req.params.executionId}:`, error);
|
|
822
|
+
if (error instanceof WorktreeSyncError) {
|
|
823
|
+
const statusCode = getStatusCodeForSyncError(error);
|
|
824
|
+
res.status(statusCode).json({
|
|
825
|
+
success: false,
|
|
826
|
+
data: null,
|
|
827
|
+
error: error.message,
|
|
828
|
+
code: error.code,
|
|
829
|
+
});
|
|
830
|
+
}
|
|
831
|
+
else {
|
|
832
|
+
res.status(500).json({
|
|
833
|
+
success: false,
|
|
834
|
+
data: null,
|
|
835
|
+
error: "Internal server error",
|
|
836
|
+
message: error instanceof Error ? error.message : String(error),
|
|
837
|
+
});
|
|
838
|
+
}
|
|
839
|
+
}
|
|
840
|
+
});
|
|
841
|
+
/**
|
|
842
|
+
* POST /api/executions/:executionId/sync/squash
|
|
843
|
+
*
|
|
844
|
+
* Perform squash sync operation
|
|
845
|
+
*
|
|
846
|
+
* Combines all worktree changes into a single commit on the target branch.
|
|
847
|
+
* Automatically resolves JSONL conflicts using merge-resolver.
|
|
848
|
+
*
|
|
849
|
+
* Request body:
|
|
850
|
+
* - commitMessage?: string - Optional custom commit message
|
|
851
|
+
*/
|
|
852
|
+
router.post("/executions/:executionId/sync/squash", async (req, res) => {
|
|
853
|
+
try {
|
|
854
|
+
const { executionId } = req.params;
|
|
855
|
+
const { commitMessage } = req.body || {};
|
|
856
|
+
// Get worktree sync service
|
|
857
|
+
const syncService = getWorktreeSyncService(req);
|
|
858
|
+
// Check if squashSync method exists
|
|
859
|
+
if (typeof syncService.squashSync !== "function") {
|
|
860
|
+
res.status(501).json({
|
|
861
|
+
success: false,
|
|
862
|
+
data: null,
|
|
863
|
+
error: "Squash sync not yet implemented",
|
|
864
|
+
message: "The squashSync operation is not available yet",
|
|
865
|
+
});
|
|
866
|
+
return;
|
|
867
|
+
}
|
|
868
|
+
// Perform squash sync
|
|
869
|
+
const result = await syncService.squashSync(executionId, commitMessage);
|
|
870
|
+
res.json({
|
|
871
|
+
success: true,
|
|
872
|
+
data: result,
|
|
873
|
+
});
|
|
874
|
+
}
|
|
875
|
+
catch (error) {
|
|
876
|
+
console.error(`Failed to squash sync execution ${req.params.executionId}:`, error);
|
|
877
|
+
if (error instanceof WorktreeSyncError) {
|
|
878
|
+
const statusCode = getStatusCodeForSyncError(error);
|
|
879
|
+
res.status(statusCode).json({
|
|
880
|
+
success: false,
|
|
881
|
+
data: null,
|
|
882
|
+
error: error.message,
|
|
883
|
+
code: error.code,
|
|
884
|
+
});
|
|
885
|
+
}
|
|
886
|
+
else {
|
|
887
|
+
res.status(500).json({
|
|
888
|
+
success: false,
|
|
889
|
+
data: null,
|
|
890
|
+
error: "Internal server error",
|
|
891
|
+
message: error instanceof Error ? error.message : String(error),
|
|
892
|
+
});
|
|
893
|
+
}
|
|
894
|
+
}
|
|
895
|
+
});
|
|
896
|
+
/**
|
|
897
|
+
* POST /api/executions/:executionId/sync/stage
|
|
898
|
+
*
|
|
899
|
+
* Perform stage sync operation
|
|
900
|
+
*
|
|
901
|
+
* Applies committed worktree changes to the working directory without committing.
|
|
902
|
+
* Changes are left staged, ready for the user to commit manually.
|
|
903
|
+
*
|
|
904
|
+
* Request body:
|
|
905
|
+
* - includeUncommitted?: boolean - If true, also copy uncommitted files from worktree
|
|
906
|
+
* - overrideLocalChanges?: boolean - If true, skip merge and overwrite local changes
|
|
907
|
+
*/
|
|
908
|
+
router.post("/executions/:executionId/sync/stage", async (req, res) => {
|
|
909
|
+
try {
|
|
910
|
+
const { executionId } = req.params;
|
|
911
|
+
const { includeUncommitted, overrideLocalChanges } = req.body || {};
|
|
912
|
+
// Get worktree sync service
|
|
913
|
+
const syncService = getWorktreeSyncService(req);
|
|
914
|
+
// Perform stage sync with options
|
|
915
|
+
const result = await syncService.stageSync(executionId, {
|
|
916
|
+
includeUncommitted: includeUncommitted === true,
|
|
917
|
+
overrideLocalChanges: overrideLocalChanges === true,
|
|
918
|
+
});
|
|
919
|
+
res.json({
|
|
920
|
+
success: true,
|
|
921
|
+
data: result,
|
|
922
|
+
});
|
|
923
|
+
}
|
|
924
|
+
catch (error) {
|
|
925
|
+
console.error(`Failed to stage sync execution ${req.params.executionId}:`, error);
|
|
926
|
+
if (error instanceof WorktreeSyncError) {
|
|
927
|
+
const statusCode = getStatusCodeForSyncError(error);
|
|
928
|
+
res.status(statusCode).json({
|
|
929
|
+
success: false,
|
|
930
|
+
data: null,
|
|
931
|
+
error: error.message,
|
|
932
|
+
code: error.code,
|
|
933
|
+
});
|
|
934
|
+
}
|
|
935
|
+
else {
|
|
936
|
+
res.status(500).json({
|
|
937
|
+
success: false,
|
|
938
|
+
data: null,
|
|
939
|
+
error: "Internal server error",
|
|
940
|
+
message: error instanceof Error ? error.message : String(error),
|
|
941
|
+
});
|
|
942
|
+
}
|
|
943
|
+
}
|
|
944
|
+
});
|
|
945
|
+
/**
|
|
946
|
+
* POST /api/executions/:executionId/sync/preserve
|
|
947
|
+
*
|
|
948
|
+
* Perform preserve sync operation
|
|
949
|
+
*
|
|
950
|
+
* Merges all commits from worktree branch to target branch, preserving commit history.
|
|
951
|
+
* Only includes committed changes - uncommitted changes are excluded.
|
|
952
|
+
*/
|
|
953
|
+
router.post("/executions/:executionId/sync/preserve", async (req, res) => {
|
|
954
|
+
try {
|
|
955
|
+
const { executionId } = req.params;
|
|
956
|
+
// Get worktree sync service
|
|
957
|
+
const syncService = getWorktreeSyncService(req);
|
|
958
|
+
// Perform preserve sync
|
|
959
|
+
const result = await syncService.preserveSync(executionId);
|
|
960
|
+
res.json({
|
|
961
|
+
success: true,
|
|
962
|
+
data: result,
|
|
963
|
+
});
|
|
964
|
+
}
|
|
965
|
+
catch (error) {
|
|
966
|
+
console.error(`Failed to preserve sync execution ${req.params.executionId}:`, error);
|
|
967
|
+
if (error instanceof WorktreeSyncError) {
|
|
968
|
+
const statusCode = getStatusCodeForSyncError(error);
|
|
969
|
+
res.status(statusCode).json({
|
|
970
|
+
success: false,
|
|
971
|
+
data: null,
|
|
972
|
+
error: error.message,
|
|
973
|
+
code: error.code,
|
|
974
|
+
});
|
|
975
|
+
}
|
|
976
|
+
else {
|
|
977
|
+
res.status(500).json({
|
|
978
|
+
success: false,
|
|
979
|
+
data: null,
|
|
980
|
+
error: "Internal server error",
|
|
981
|
+
message: error instanceof Error ? error.message : String(error),
|
|
982
|
+
});
|
|
983
|
+
}
|
|
984
|
+
}
|
|
985
|
+
});
|
|
986
|
+
/**
|
|
987
|
+
* POST /api/executions/:executionId/commit
|
|
988
|
+
*
|
|
989
|
+
* Commit uncommitted changes for an execution
|
|
990
|
+
*
|
|
991
|
+
* Commits changes to the appropriate branch based on execution mode:
|
|
992
|
+
* - Local mode: Commits to target_branch (current branch)
|
|
993
|
+
* - Worktree mode: Commits to branch_name (temp branch) in worktree
|
|
994
|
+
*
|
|
995
|
+
* Request body:
|
|
996
|
+
* - message: string (required) - Commit message
|
|
997
|
+
*/
|
|
998
|
+
router.post("/executions/:executionId/commit", async (req, res) => {
|
|
999
|
+
try {
|
|
1000
|
+
const { executionId } = req.params;
|
|
1001
|
+
const { message } = req.body;
|
|
1002
|
+
// Validate commit message
|
|
1003
|
+
if (!message || typeof message !== "string" || !message.trim()) {
|
|
1004
|
+
res.status(400).json({
|
|
1005
|
+
success: false,
|
|
1006
|
+
data: null,
|
|
1007
|
+
message: "Commit message is required and must be non-empty",
|
|
1008
|
+
});
|
|
1009
|
+
return;
|
|
1010
|
+
}
|
|
1011
|
+
const db = req.project.db;
|
|
1012
|
+
const repoPath = req.project.path;
|
|
1013
|
+
// Load execution from database
|
|
1014
|
+
const execution = db
|
|
1015
|
+
.prepare("SELECT * FROM executions WHERE id = ?")
|
|
1016
|
+
.get(executionId);
|
|
1017
|
+
if (!execution) {
|
|
1018
|
+
res.status(404).json({
|
|
1019
|
+
success: false,
|
|
1020
|
+
data: null,
|
|
1021
|
+
message: "Execution not found",
|
|
1022
|
+
});
|
|
1023
|
+
return;
|
|
1024
|
+
}
|
|
1025
|
+
// Determine working directory and target branch
|
|
1026
|
+
// IMPORTANT: If worktree_path exists, always use it - this is more reliable than the mode field
|
|
1027
|
+
// which may not be set correctly on follow-up executions
|
|
1028
|
+
const hasWorktree = !!execution.worktree_path;
|
|
1029
|
+
const workingDir = hasWorktree ? execution.worktree_path : repoPath;
|
|
1030
|
+
const targetBranch = hasWorktree
|
|
1031
|
+
? execution.branch_name
|
|
1032
|
+
: execution.target_branch || "main";
|
|
1033
|
+
console.log(`[Commit] Execution ${executionId}: hasWorktree=${hasWorktree}, workingDir=${workingDir}, targetBranch=${targetBranch}, mode=${execution.mode}`);
|
|
1034
|
+
// Get current uncommitted files from working directory instead of stale database field
|
|
1035
|
+
// This ensures we're working with the current state
|
|
1036
|
+
let filesChanged = [];
|
|
1037
|
+
try {
|
|
1038
|
+
// Get modified tracked files
|
|
1039
|
+
const modifiedOutput = execSync("git diff --name-only", {
|
|
1040
|
+
cwd: workingDir,
|
|
1041
|
+
encoding: "utf-8",
|
|
1042
|
+
stdio: "pipe",
|
|
1043
|
+
});
|
|
1044
|
+
// Get staged files
|
|
1045
|
+
const stagedOutput = execSync("git diff --cached --name-only", {
|
|
1046
|
+
cwd: workingDir,
|
|
1047
|
+
encoding: "utf-8",
|
|
1048
|
+
stdio: "pipe",
|
|
1049
|
+
});
|
|
1050
|
+
// Get untracked files
|
|
1051
|
+
const untrackedOutput = execSync("git ls-files --others --exclude-standard", {
|
|
1052
|
+
cwd: workingDir,
|
|
1053
|
+
encoding: "utf-8",
|
|
1054
|
+
stdio: "pipe",
|
|
1055
|
+
});
|
|
1056
|
+
console.log(`[Commit] Git status in ${workingDir}:`, {
|
|
1057
|
+
modified: modifiedOutput.trim().split("\n").filter(Boolean),
|
|
1058
|
+
staged: stagedOutput.trim().split("\n").filter(Boolean),
|
|
1059
|
+
untracked: untrackedOutput.trim().split("\n").filter(Boolean),
|
|
1060
|
+
});
|
|
1061
|
+
// Combine all files, removing duplicates
|
|
1062
|
+
const allFiles = new Set();
|
|
1063
|
+
for (const output of [
|
|
1064
|
+
modifiedOutput,
|
|
1065
|
+
stagedOutput,
|
|
1066
|
+
untrackedOutput,
|
|
1067
|
+
]) {
|
|
1068
|
+
output
|
|
1069
|
+
.split("\n")
|
|
1070
|
+
.filter((line) => line.trim())
|
|
1071
|
+
.forEach((file) => allFiles.add(file));
|
|
1072
|
+
}
|
|
1073
|
+
filesChanged = Array.from(allFiles);
|
|
1074
|
+
}
|
|
1075
|
+
catch (error) {
|
|
1076
|
+
console.error("Failed to get uncommitted files:", error);
|
|
1077
|
+
}
|
|
1078
|
+
// Validate has uncommitted changes
|
|
1079
|
+
if (filesChanged.length === 0) {
|
|
1080
|
+
res.status(400).json({
|
|
1081
|
+
success: false,
|
|
1082
|
+
data: null,
|
|
1083
|
+
message: "No files to commit",
|
|
1084
|
+
});
|
|
1085
|
+
return;
|
|
1086
|
+
}
|
|
1087
|
+
// Execute git operations
|
|
1088
|
+
try {
|
|
1089
|
+
// Add all changes (more reliable than adding specific files)
|
|
1090
|
+
// This catches any files that might have been missed in detection
|
|
1091
|
+
execSync("git add -A", {
|
|
1092
|
+
cwd: workingDir,
|
|
1093
|
+
encoding: "utf-8",
|
|
1094
|
+
stdio: "pipe",
|
|
1095
|
+
});
|
|
1096
|
+
console.log(`[Commit] Staged all changes with git add -A`);
|
|
1097
|
+
// Verify something is staged
|
|
1098
|
+
const stagedAfterAdd = execSync("git diff --cached --name-only", {
|
|
1099
|
+
cwd: workingDir,
|
|
1100
|
+
encoding: "utf-8",
|
|
1101
|
+
stdio: "pipe",
|
|
1102
|
+
}).trim();
|
|
1103
|
+
if (!stagedAfterAdd) {
|
|
1104
|
+
console.log(`[Commit] No files staged after git add -A`);
|
|
1105
|
+
res.status(400).json({
|
|
1106
|
+
success: false,
|
|
1107
|
+
data: null,
|
|
1108
|
+
message: "No files staged for commit after git add",
|
|
1109
|
+
});
|
|
1110
|
+
return;
|
|
1111
|
+
}
|
|
1112
|
+
console.log(`[Commit] Files staged: ${stagedAfterAdd.split("\n").filter(Boolean).join(", ")}`);
|
|
1113
|
+
// Commit using -F - to read message from stdin (safer than shell escaping)
|
|
1114
|
+
const { spawnSync } = await import("child_process");
|
|
1115
|
+
const commitResult = spawnSync("git", ["commit", "-m", message], {
|
|
1116
|
+
cwd: workingDir,
|
|
1117
|
+
encoding: "utf-8",
|
|
1118
|
+
stdio: "pipe",
|
|
1119
|
+
});
|
|
1120
|
+
if (commitResult.status !== 0) {
|
|
1121
|
+
const errorOutput = commitResult.stderr || commitResult.stdout || "Unknown error";
|
|
1122
|
+
console.error(`[Commit] git commit failed:`, errorOutput);
|
|
1123
|
+
throw new Error(`git commit failed: ${errorOutput}`);
|
|
1124
|
+
}
|
|
1125
|
+
console.log(`[Commit] git commit output:`, commitResult.stdout);
|
|
1126
|
+
// Get commit SHA
|
|
1127
|
+
const commitSha = execSync("git rev-parse HEAD", {
|
|
1128
|
+
cwd: workingDir,
|
|
1129
|
+
encoding: "utf-8",
|
|
1130
|
+
stdio: "pipe",
|
|
1131
|
+
}).trim();
|
|
1132
|
+
console.log(`[Commit] Successfully committed ${filesChanged.length} files: ${commitSha}`);
|
|
1133
|
+
// Note: We do NOT update execution.after_commit here
|
|
1134
|
+
// That field represents the state at execution completion time
|
|
1135
|
+
// Manual commits after execution are tracked separately
|
|
1136
|
+
res.json({
|
|
1137
|
+
success: true,
|
|
1138
|
+
data: {
|
|
1139
|
+
commitSha,
|
|
1140
|
+
filesCommitted: filesChanged.length,
|
|
1141
|
+
branch: targetBranch,
|
|
1142
|
+
},
|
|
1143
|
+
message: `Successfully committed ${filesChanged.length} file${filesChanged.length !== 1 ? "s" : ""}`,
|
|
1144
|
+
});
|
|
1145
|
+
}
|
|
1146
|
+
catch (gitError) {
|
|
1147
|
+
console.error("Git operation failed:", gitError);
|
|
1148
|
+
const errorMessage = gitError instanceof Error ? gitError.message : String(gitError);
|
|
1149
|
+
res.status(500).json({
|
|
1150
|
+
success: false,
|
|
1151
|
+
data: null,
|
|
1152
|
+
message: "Git commit failed",
|
|
1153
|
+
error: errorMessage,
|
|
1154
|
+
});
|
|
1155
|
+
}
|
|
1156
|
+
}
|
|
1157
|
+
catch (error) {
|
|
1158
|
+
console.error(`Failed to commit for execution ${req.params.executionId}:`, error);
|
|
1159
|
+
res.status(500).json({
|
|
1160
|
+
success: false,
|
|
1161
|
+
data: null,
|
|
1162
|
+
error: "Internal server error",
|
|
1163
|
+
message: error instanceof Error ? error.message : String(error),
|
|
1164
|
+
});
|
|
1165
|
+
}
|
|
1166
|
+
});
|
|
1167
|
+
return router;
|
|
1168
|
+
}
|
|
1169
|
+
//# sourceMappingURL=executions.js.map
|