sudocode 1.1.20 → 1.1.22
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/package.json +9 -9
- package/node_modules/@sudocode-ai/cli/README.md +0 -1629
- package/node_modules/@sudocode-ai/cli/dist/auth/claude.d.ts +0 -19
- package/node_modules/@sudocode-ai/cli/dist/auth/claude.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/auth/claude.js +0 -179
- package/node_modules/@sudocode-ai/cli/dist/auth/claude.js.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/auth/clear.d.ts +0 -17
- package/node_modules/@sudocode-ai/cli/dist/auth/clear.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/auth/clear.js +0 -68
- package/node_modules/@sudocode-ai/cli/dist/auth/clear.js.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/auth/credentials.d.ts +0 -93
- package/node_modules/@sudocode-ai/cli/dist/auth/credentials.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/auth/credentials.js +0 -255
- package/node_modules/@sudocode-ai/cli/dist/auth/credentials.js.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/auth/index.d.ts +0 -13
- package/node_modules/@sudocode-ai/cli/dist/auth/index.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/auth/index.js +0 -19
- package/node_modules/@sudocode-ai/cli/dist/auth/index.js.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/auth/status.d.ts +0 -17
- package/node_modules/@sudocode-ai/cli/dist/auth/status.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/auth/status.js +0 -132
- package/node_modules/@sudocode-ai/cli/dist/auth/status.js.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/cli/auth-commands.d.ts +0 -34
- package/node_modules/@sudocode-ai/cli/dist/cli/auth-commands.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/cli/auth-commands.js +0 -28
- package/node_modules/@sudocode-ai/cli/dist/cli/auth-commands.js.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/cli/feedback-commands.d.ts +0 -53
- package/node_modules/@sudocode-ai/cli/dist/cli/feedback-commands.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/cli/feedback-commands.js +0 -339
- package/node_modules/@sudocode-ai/cli/dist/cli/feedback-commands.js.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/cli/init-commands.d.ts +0 -20
- package/node_modules/@sudocode-ai/cli/dist/cli/init-commands.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/cli/init-commands.js +0 -145
- package/node_modules/@sudocode-ai/cli/dist/cli/init-commands.js.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/cli/issue-commands.d.ts +0 -46
- package/node_modules/@sudocode-ai/cli/dist/cli/issue-commands.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/cli/issue-commands.js +0 -353
- package/node_modules/@sudocode-ai/cli/dist/cli/issue-commands.js.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/cli/merge-commands.d.ts +0 -42
- package/node_modules/@sudocode-ai/cli/dist/cli/merge-commands.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/cli/merge-commands.js +0 -680
- package/node_modules/@sudocode-ai/cli/dist/cli/merge-commands.js.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/cli/plugin-commands.d.ts +0 -62
- package/node_modules/@sudocode-ai/cli/dist/cli/plugin-commands.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/cli/plugin-commands.js +0 -595
- package/node_modules/@sudocode-ai/cli/dist/cli/plugin-commands.js.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/cli/query-commands.d.ts +0 -18
- package/node_modules/@sudocode-ai/cli/dist/cli/query-commands.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/cli/query-commands.js +0 -61
- package/node_modules/@sudocode-ai/cli/dist/cli/query-commands.js.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/cli/reference-commands.d.ts +0 -22
- package/node_modules/@sudocode-ai/cli/dist/cli/reference-commands.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/cli/reference-commands.js +0 -136
- package/node_modules/@sudocode-ai/cli/dist/cli/reference-commands.js.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/cli/relationship-commands.d.ts +0 -14
- package/node_modules/@sudocode-ai/cli/dist/cli/relationship-commands.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/cli/relationship-commands.js +0 -83
- package/node_modules/@sudocode-ai/cli/dist/cli/relationship-commands.js.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/cli/remote-commands.d.ts +0 -59
- package/node_modules/@sudocode-ai/cli/dist/cli/remote-commands.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/cli/remote-commands.js +0 -391
- package/node_modules/@sudocode-ai/cli/dist/cli/remote-commands.js.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/cli/server-commands.d.ts +0 -17
- package/node_modules/@sudocode-ai/cli/dist/cli/server-commands.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/cli/server-commands.js +0 -123
- package/node_modules/@sudocode-ai/cli/dist/cli/server-commands.js.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/cli/spec-commands.d.ts +0 -38
- package/node_modules/@sudocode-ai/cli/dist/cli/spec-commands.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/cli/spec-commands.js +0 -326
- package/node_modules/@sudocode-ai/cli/dist/cli/spec-commands.js.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/cli/status-commands.d.ts +0 -17
- package/node_modules/@sudocode-ai/cli/dist/cli/status-commands.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/cli/status-commands.js +0 -131
- package/node_modules/@sudocode-ai/cli/dist/cli/status-commands.js.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/cli/sync-commands.d.ts +0 -24
- package/node_modules/@sudocode-ai/cli/dist/cli/sync-commands.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/cli/sync-commands.js +0 -429
- package/node_modules/@sudocode-ai/cli/dist/cli/sync-commands.js.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/cli/update-commands.d.ts +0 -16
- package/node_modules/@sudocode-ai/cli/dist/cli/update-commands.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/cli/update-commands.js +0 -216
- package/node_modules/@sudocode-ai/cli/dist/cli/update-commands.js.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/cli.d.ts +0 -6
- package/node_modules/@sudocode-ai/cli/dist/cli.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/cli.js +0 -673
- package/node_modules/@sudocode-ai/cli/dist/cli.js.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/config.d.ts +0 -50
- package/node_modules/@sudocode-ai/cli/dist/config.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/config.js +0 -76
- package/node_modules/@sudocode-ai/cli/dist/config.js.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/db.d.ts +0 -21
- package/node_modules/@sudocode-ai/cli/dist/db.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/db.js +0 -55
- package/node_modules/@sudocode-ai/cli/dist/db.js.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/export.d.ts +0 -84
- package/node_modules/@sudocode-ai/cli/dist/export.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/export.js +0 -265
- package/node_modules/@sudocode-ai/cli/dist/export.js.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/filename-generator.d.ts +0 -31
- package/node_modules/@sudocode-ai/cli/dist/filename-generator.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/filename-generator.js +0 -103
- package/node_modules/@sudocode-ai/cli/dist/filename-generator.js.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/git-merge.d.ts +0 -88
- package/node_modules/@sudocode-ai/cli/dist/git-merge.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/git-merge.js +0 -214
- package/node_modules/@sudocode-ai/cli/dist/git-merge.js.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/id-generator.d.ts +0 -63
- package/node_modules/@sudocode-ai/cli/dist/id-generator.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/id-generator.js +0 -196
- package/node_modules/@sudocode-ai/cli/dist/id-generator.js.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/import.d.ts +0 -134
- package/node_modules/@sudocode-ai/cli/dist/import.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/import.js +0 -751
- package/node_modules/@sudocode-ai/cli/dist/import.js.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/index.d.ts +0 -17
- package/node_modules/@sudocode-ai/cli/dist/index.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/index.js +0 -17
- package/node_modules/@sudocode-ai/cli/dist/index.js.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/integrations/base-provider.d.ts +0 -108
- package/node_modules/@sudocode-ai/cli/dist/integrations/base-provider.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/integrations/base-provider.js +0 -80
- package/node_modules/@sudocode-ai/cli/dist/integrations/base-provider.js.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/integrations/config-resolver.d.ts +0 -62
- package/node_modules/@sudocode-ai/cli/dist/integrations/config-resolver.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/integrations/config-resolver.js +0 -69
- package/node_modules/@sudocode-ai/cli/dist/integrations/config-resolver.js.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/integrations/config-validator.d.ts +0 -75
- package/node_modules/@sudocode-ai/cli/dist/integrations/config-validator.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/integrations/config-validator.js +0 -129
- package/node_modules/@sudocode-ai/cli/dist/integrations/config-validator.js.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/integrations/index.d.ts +0 -14
- package/node_modules/@sudocode-ai/cli/dist/integrations/index.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/integrations/index.js +0 -20
- package/node_modules/@sudocode-ai/cli/dist/integrations/index.js.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/integrations/plugin-loader.d.ts +0 -77
- package/node_modules/@sudocode-ai/cli/dist/integrations/plugin-loader.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/integrations/plugin-loader.js +0 -265
- package/node_modules/@sudocode-ai/cli/dist/integrations/plugin-loader.js.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/integrations/registry.d.ts +0 -67
- package/node_modules/@sudocode-ai/cli/dist/integrations/registry.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/integrations/registry.js +0 -77
- package/node_modules/@sudocode-ai/cli/dist/integrations/registry.js.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/integrations/sync-coordinator.d.ts +0 -191
- package/node_modules/@sudocode-ai/cli/dist/integrations/sync-coordinator.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/integrations/sync-coordinator.js +0 -798
- package/node_modules/@sudocode-ai/cli/dist/integrations/sync-coordinator.js.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/integrations/types.d.ts +0 -142
- package/node_modules/@sudocode-ai/cli/dist/integrations/types.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/integrations/types.js +0 -6
- package/node_modules/@sudocode-ai/cli/dist/integrations/types.js.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/integrations/utils/conflict-resolver.d.ts +0 -79
- package/node_modules/@sudocode-ai/cli/dist/integrations/utils/conflict-resolver.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/integrations/utils/conflict-resolver.js +0 -106
- package/node_modules/@sudocode-ai/cli/dist/integrations/utils/conflict-resolver.js.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/jsonl.d.ts +0 -69
- package/node_modules/@sudocode-ai/cli/dist/jsonl.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/jsonl.js +0 -333
- package/node_modules/@sudocode-ai/cli/dist/jsonl.js.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/markdown.d.ts +0 -146
- package/node_modules/@sudocode-ai/cli/dist/markdown.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/markdown.js +0 -329
- package/node_modules/@sudocode-ai/cli/dist/markdown.js.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/merge-resolver.d.ts +0 -157
- package/node_modules/@sudocode-ai/cli/dist/merge-resolver.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/merge-resolver.js +0 -716
- package/node_modules/@sudocode-ai/cli/dist/merge-resolver.js.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/operations/events.d.ts +0 -53
- package/node_modules/@sudocode-ai/cli/dist/operations/events.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/operations/events.js +0 -108
- package/node_modules/@sudocode-ai/cli/dist/operations/events.js.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/operations/external-links.d.ts +0 -147
- package/node_modules/@sudocode-ai/cli/dist/operations/external-links.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/operations/external-links.js +0 -411
- package/node_modules/@sudocode-ai/cli/dist/operations/external-links.js.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/operations/feedback-anchors.d.ts +0 -92
- package/node_modules/@sudocode-ai/cli/dist/operations/feedback-anchors.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/operations/feedback-anchors.js +0 -444
- package/node_modules/@sudocode-ai/cli/dist/operations/feedback-anchors.js.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/operations/feedback.d.ts +0 -94
- package/node_modules/@sudocode-ai/cli/dist/operations/feedback.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/operations/feedback.js +0 -278
- package/node_modules/@sudocode-ai/cli/dist/operations/feedback.js.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/operations/index.d.ts +0 -11
- package/node_modules/@sudocode-ai/cli/dist/operations/index.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/operations/index.js +0 -11
- package/node_modules/@sudocode-ai/cli/dist/operations/index.js.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/operations/issues.d.ts +0 -88
- package/node_modules/@sudocode-ai/cli/dist/operations/issues.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/operations/issues.js +0 -474
- package/node_modules/@sudocode-ai/cli/dist/operations/issues.js.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/operations/references.d.ts +0 -34
- package/node_modules/@sudocode-ai/cli/dist/operations/references.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/operations/references.js +0 -117
- package/node_modules/@sudocode-ai/cli/dist/operations/references.js.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/operations/relationships.d.ts +0 -64
- package/node_modules/@sudocode-ai/cli/dist/operations/relationships.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/operations/relationships.js +0 -281
- package/node_modules/@sudocode-ai/cli/dist/operations/relationships.js.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/operations/specs.d.ts +0 -69
- package/node_modules/@sudocode-ai/cli/dist/operations/specs.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/operations/specs.js +0 -330
- package/node_modules/@sudocode-ai/cli/dist/operations/specs.js.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/operations/tags.d.ts +0 -42
- package/node_modules/@sudocode-ai/cli/dist/operations/tags.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/operations/tags.js +0 -127
- package/node_modules/@sudocode-ai/cli/dist/operations/tags.js.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/operations/transactions.d.ts +0 -41
- package/node_modules/@sudocode-ai/cli/dist/operations/transactions.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/operations/transactions.js +0 -111
- package/node_modules/@sudocode-ai/cli/dist/operations/transactions.js.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/remote/claude-auth.d.ts +0 -65
- package/node_modules/@sudocode-ai/cli/dist/remote/claude-auth.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/remote/claude-auth.js +0 -100
- package/node_modules/@sudocode-ai/cli/dist/remote/claude-auth.js.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/remote/config.d.ts +0 -83
- package/node_modules/@sudocode-ai/cli/dist/remote/config.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/remote/config.js +0 -266
- package/node_modules/@sudocode-ai/cli/dist/remote/config.js.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/remote/errors.d.ts +0 -18
- package/node_modules/@sudocode-ai/cli/dist/remote/errors.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/remote/errors.js +0 -27
- package/node_modules/@sudocode-ai/cli/dist/remote/errors.js.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/remote/git-context.d.ts +0 -51
- package/node_modules/@sudocode-ai/cli/dist/remote/git-context.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/remote/git-context.js +0 -107
- package/node_modules/@sudocode-ai/cli/dist/remote/git-context.js.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/remote/spawn-service.d.ts +0 -86
- package/node_modules/@sudocode-ai/cli/dist/remote/spawn-service.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/remote/spawn-service.js +0 -248
- package/node_modules/@sudocode-ai/cli/dist/remote/spawn-service.js.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/remote/types.d.ts +0 -82
- package/node_modules/@sudocode-ai/cli/dist/remote/types.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/remote/types.js +0 -5
- package/node_modules/@sudocode-ai/cli/dist/remote/types.js.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/sync.d.ts +0 -47
- package/node_modules/@sudocode-ai/cli/dist/sync.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/sync.js +0 -464
- package/node_modules/@sudocode-ai/cli/dist/sync.js.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/test-schema.d.ts +0 -5
- package/node_modules/@sudocode-ai/cli/dist/test-schema.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/test-schema.js +0 -46
- package/node_modules/@sudocode-ai/cli/dist/test-schema.js.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/types.d.ts +0 -7
- package/node_modules/@sudocode-ai/cli/dist/types.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/types.js +0 -7
- package/node_modules/@sudocode-ai/cli/dist/types.js.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/update-checker.d.ts +0 -33
- package/node_modules/@sudocode-ai/cli/dist/update-checker.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/update-checker.js +0 -193
- package/node_modules/@sudocode-ai/cli/dist/update-checker.js.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/validation.d.ts +0 -11
- package/node_modules/@sudocode-ai/cli/dist/validation.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/validation.js +0 -58
- package/node_modules/@sudocode-ai/cli/dist/validation.js.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/version.d.ts +0 -12
- package/node_modules/@sudocode-ai/cli/dist/version.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/version.js +0 -23
- package/node_modules/@sudocode-ai/cli/dist/version.js.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/watcher.d.ts +0 -75
- package/node_modules/@sudocode-ai/cli/dist/watcher.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/watcher.js +0 -797
- package/node_modules/@sudocode-ai/cli/dist/watcher.js.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/yaml-conflict-resolver.d.ts +0 -91
- package/node_modules/@sudocode-ai/cli/dist/yaml-conflict-resolver.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/yaml-conflict-resolver.js +0 -197
- package/node_modules/@sudocode-ai/cli/dist/yaml-conflict-resolver.js.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/yaml-converter.d.ts +0 -68
- package/node_modules/@sudocode-ai/cli/dist/yaml-converter.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/cli/dist/yaml-converter.js +0 -109
- package/node_modules/@sudocode-ai/cli/dist/yaml-converter.js.map +0 -1
- package/node_modules/@sudocode-ai/cli/package.json +0 -76
- package/node_modules/@sudocode-ai/integration-beads/package.json +0 -44
- package/node_modules/@sudocode-ai/integration-github/package.json +0 -41
- package/node_modules/@sudocode-ai/integration-openspec/package.json +0 -43
- package/node_modules/@sudocode-ai/integration-speckit/package.json +0 -42
- package/node_modules/@sudocode-ai/local-server/README.md +0 -25
- package/node_modules/@sudocode-ai/local-server/dist/cli.d.ts +0 -7
- package/node_modules/@sudocode-ai/local-server/dist/cli.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/cli.js +0 -7
- package/node_modules/@sudocode-ai/local-server/dist/cli.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/errors/agent-errors.d.ts +0 -43
- package/node_modules/@sudocode-ai/local-server/dist/errors/agent-errors.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/errors/agent-errors.js +0 -69
- package/node_modules/@sudocode-ai/local-server/dist/errors/agent-errors.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/execution/adapters/claude-adapter.d.ts +0 -63
- package/node_modules/@sudocode-ai/local-server/dist/execution/adapters/claude-adapter.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/execution/adapters/claude-adapter.js +0 -83
- package/node_modules/@sudocode-ai/local-server/dist/execution/adapters/claude-adapter.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/execution/adapters/codex-adapter.d.ts +0 -67
- package/node_modules/@sudocode-ai/local-server/dist/execution/adapters/codex-adapter.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/execution/adapters/codex-adapter.js +0 -183
- package/node_modules/@sudocode-ai/local-server/dist/execution/adapters/codex-adapter.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/execution/adapters/codex-config-builder.d.ts +0 -30
- package/node_modules/@sudocode-ai/local-server/dist/execution/adapters/codex-config-builder.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/execution/adapters/codex-config-builder.js +0 -110
- package/node_modules/@sudocode-ai/local-server/dist/execution/adapters/codex-config-builder.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/execution/adapters/copilot-adapter.d.ts +0 -94
- package/node_modules/@sudocode-ai/local-server/dist/execution/adapters/copilot-adapter.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/execution/adapters/copilot-adapter.js +0 -163
- package/node_modules/@sudocode-ai/local-server/dist/execution/adapters/copilot-adapter.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/execution/adapters/copilot-config-builder.d.ts +0 -48
- package/node_modules/@sudocode-ai/local-server/dist/execution/adapters/copilot-config-builder.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/execution/adapters/copilot-config-builder.js +0 -125
- package/node_modules/@sudocode-ai/local-server/dist/execution/adapters/copilot-config-builder.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/execution/adapters/cursor-adapter.d.ts +0 -66
- package/node_modules/@sudocode-ai/local-server/dist/execution/adapters/cursor-adapter.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/execution/adapters/cursor-adapter.js +0 -121
- package/node_modules/@sudocode-ai/local-server/dist/execution/adapters/cursor-adapter.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/execution/adapters/cursor-config-builder.d.ts +0 -29
- package/node_modules/@sudocode-ai/local-server/dist/execution/adapters/cursor-config-builder.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/execution/adapters/cursor-config-builder.js +0 -49
- package/node_modules/@sudocode-ai/local-server/dist/execution/adapters/cursor-config-builder.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/execution/adapters/shared/config-presets.d.ts +0 -102
- package/node_modules/@sudocode-ai/local-server/dist/execution/adapters/shared/config-presets.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/execution/adapters/shared/config-presets.js +0 -205
- package/node_modules/@sudocode-ai/local-server/dist/execution/adapters/shared/config-presets.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/execution/adapters/shared/config-utils.d.ts +0 -95
- package/node_modules/@sudocode-ai/local-server/dist/execution/adapters/shared/config-utils.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/execution/adapters/shared/config-utils.js +0 -163
- package/node_modules/@sudocode-ai/local-server/dist/execution/adapters/shared/config-utils.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/execution/adapters/shared/index.d.ts +0 -8
- package/node_modules/@sudocode-ai/local-server/dist/execution/adapters/shared/index.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/execution/adapters/shared/index.js +0 -8
- package/node_modules/@sudocode-ai/local-server/dist/execution/adapters/shared/index.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/execution/executors/acp-executor-wrapper.d.ts +0 -331
- package/node_modules/@sudocode-ai/local-server/dist/execution/executors/acp-executor-wrapper.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/execution/executors/acp-executor-wrapper.js +0 -1126
- package/node_modules/@sudocode-ai/local-server/dist/execution/executors/acp-executor-wrapper.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/execution/executors/agent-config-handlers.d.ts +0 -158
- package/node_modules/@sudocode-ai/local-server/dist/execution/executors/agent-config-handlers.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/execution/executors/agent-config-handlers.js +0 -352
- package/node_modules/@sudocode-ai/local-server/dist/execution/executors/agent-config-handlers.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/execution/executors/executor-factory.d.ts +0 -170
- package/node_modules/@sudocode-ai/local-server/dist/execution/executors/executor-factory.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/execution/executors/executor-factory.js +0 -216
- package/node_modules/@sudocode-ai/local-server/dist/execution/executors/executor-factory.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/execution/executors/legacy-shim-executor-wrapper.d.ts +0 -216
- package/node_modules/@sudocode-ai/local-server/dist/execution/executors/legacy-shim-executor-wrapper.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/execution/executors/legacy-shim-executor-wrapper.js +0 -679
- package/node_modules/@sudocode-ai/local-server/dist/execution/executors/legacy-shim-executor-wrapper.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/execution/executors/permission-manager.d.ts +0 -118
- package/node_modules/@sudocode-ai/local-server/dist/execution/executors/permission-manager.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/execution/executors/permission-manager.js +0 -143
- package/node_modules/@sudocode-ai/local-server/dist/execution/executors/permission-manager.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/execution/handlers/file-handler.d.ts +0 -60
- package/node_modules/@sudocode-ai/local-server/dist/execution/handlers/file-handler.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/execution/handlers/file-handler.js +0 -115
- package/node_modules/@sudocode-ai/local-server/dist/execution/handlers/file-handler.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/execution/output/coalesced-types.d.ts +0 -131
- package/node_modules/@sudocode-ai/local-server/dist/execution/output/coalesced-types.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/execution/output/coalesced-types.js +0 -47
- package/node_modules/@sudocode-ai/local-server/dist/execution/output/coalesced-types.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/execution/output/index.d.ts +0 -16
- package/node_modules/@sudocode-ai/local-server/dist/execution/output/index.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/execution/output/index.js +0 -15
- package/node_modules/@sudocode-ai/local-server/dist/execution/output/index.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/execution/output/normalized-to-coalesced.d.ts +0 -40
- package/node_modules/@sudocode-ai/local-server/dist/execution/output/normalized-to-coalesced.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/execution/output/normalized-to-coalesced.js +0 -165
- package/node_modules/@sudocode-ai/local-server/dist/execution/output/normalized-to-coalesced.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/execution/output/session-update-coalescer.d.ts +0 -99
- package/node_modules/@sudocode-ai/local-server/dist/execution/output/session-update-coalescer.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/execution/output/session-update-coalescer.js +0 -329
- package/node_modules/@sudocode-ai/local-server/dist/execution/output/session-update-coalescer.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/execution/output/types.d.ts +0 -421
- package/node_modules/@sudocode-ai/local-server/dist/execution/output/types.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/execution/output/types.js +0 -22
- package/node_modules/@sudocode-ai/local-server/dist/execution/output/types.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/execution/process/builders/claude.d.ts +0 -53
- package/node_modules/@sudocode-ai/local-server/dist/execution/process/builders/claude.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/execution/process/builders/claude.js +0 -225
- package/node_modules/@sudocode-ai/local-server/dist/execution/process/builders/claude.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/execution/worktree/config.d.ts +0 -74
- package/node_modules/@sudocode-ai/local-server/dist/execution/worktree/config.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/execution/worktree/config.js +0 -280
- package/node_modules/@sudocode-ai/local-server/dist/execution/worktree/config.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/execution/worktree/conflict-detector.d.ts +0 -85
- package/node_modules/@sudocode-ai/local-server/dist/execution/worktree/conflict-detector.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/execution/worktree/conflict-detector.js +0 -129
- package/node_modules/@sudocode-ai/local-server/dist/execution/worktree/conflict-detector.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/execution/worktree/git-cli.d.ts +0 -208
- package/node_modules/@sudocode-ai/local-server/dist/execution/worktree/git-cli.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/execution/worktree/git-cli.js +0 -280
- package/node_modules/@sudocode-ai/local-server/dist/execution/worktree/git-cli.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/execution/worktree/git-sync-cli.d.ts +0 -225
- package/node_modules/@sudocode-ai/local-server/dist/execution/worktree/git-sync-cli.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/execution/worktree/git-sync-cli.js +0 -464
- package/node_modules/@sudocode-ai/local-server/dist/execution/worktree/git-sync-cli.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/execution/worktree/index.d.ts +0 -16
- package/node_modules/@sudocode-ai/local-server/dist/execution/worktree/index.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/execution/worktree/index.js +0 -15
- package/node_modules/@sudocode-ai/local-server/dist/execution/worktree/index.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/execution/worktree/manager.d.ts +0 -221
- package/node_modules/@sudocode-ai/local-server/dist/execution/worktree/manager.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/execution/worktree/manager.js +0 -508
- package/node_modules/@sudocode-ai/local-server/dist/execution/worktree/manager.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/execution/worktree/types.d.ts +0 -90
- package/node_modules/@sudocode-ai/local-server/dist/execution/worktree/types.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/execution/worktree/types.js +0 -42
- package/node_modules/@sudocode-ai/local-server/dist/execution/worktree/types.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/index.d.ts +0 -3
- package/node_modules/@sudocode-ai/local-server/dist/index.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/index.js +0 -413
- package/node_modules/@sudocode-ai/local-server/dist/index.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/middleware/project-context.d.ts +0 -37
- package/node_modules/@sudocode-ai/local-server/dist/middleware/project-context.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/middleware/project-context.js +0 -91
- package/node_modules/@sudocode-ai/local-server/dist/middleware/project-context.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/public/assets/index-6xIC1sAG.js +0 -3837
- package/node_modules/@sudocode-ai/local-server/dist/public/assets/index-6xIC1sAG.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/public/assets/index-QH6t9Xqh.css +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/public/assets/ort-wasm-simd-threaded.jsep-B0T3yYHD.wasm +0 -0
- package/node_modules/@sudocode-ai/local-server/dist/public/assets/react-vendor-DoNwlLhy.js +0 -60
- package/node_modules/@sudocode-ai/local-server/dist/public/assets/react-vendor-DoNwlLhy.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/public/assets/ui-vendor-DlxvBun1.js +0 -54
- package/node_modules/@sudocode-ai/local-server/dist/public/assets/ui-vendor-DlxvBun1.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/public/favicon.ico +0 -0
- package/node_modules/@sudocode-ai/local-server/dist/public/index.html +0 -16
- package/node_modules/@sudocode-ai/local-server/dist/public/kokoro-test.html +0 -197
- 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 +0 -3
- package/node_modules/@sudocode-ai/local-server/dist/routes/agents.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/routes/agents.js +0 -188
- package/node_modules/@sudocode-ai/local-server/dist/routes/agents.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/routes/config.d.ts +0 -3
- package/node_modules/@sudocode-ai/local-server/dist/routes/config.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/routes/config.js +0 -155
- package/node_modules/@sudocode-ai/local-server/dist/routes/config.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/routes/editors.d.ts +0 -15
- package/node_modules/@sudocode-ai/local-server/dist/routes/editors.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/routes/editors.js +0 -98
- package/node_modules/@sudocode-ai/local-server/dist/routes/editors.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/routes/executions.d.ts +0 -18
- package/node_modules/@sudocode-ai/local-server/dist/routes/executions.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/routes/executions.js +0 -1570
- package/node_modules/@sudocode-ai/local-server/dist/routes/executions.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/routes/feedback.d.ts +0 -8
- package/node_modules/@sudocode-ai/local-server/dist/routes/feedback.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/routes/feedback.js +0 -340
- package/node_modules/@sudocode-ai/local-server/dist/routes/feedback.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/routes/files.d.ts +0 -18
- package/node_modules/@sudocode-ai/local-server/dist/routes/files.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/routes/files.js +0 -89
- package/node_modules/@sudocode-ai/local-server/dist/routes/files.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/routes/import.d.ts +0 -142
- package/node_modules/@sudocode-ai/local-server/dist/routes/import.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/routes/import.js +0 -896
- package/node_modules/@sudocode-ai/local-server/dist/routes/import.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/routes/issues.d.ts +0 -8
- package/node_modules/@sudocode-ai/local-server/dist/routes/issues.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/routes/issues.js +0 -419
- package/node_modules/@sudocode-ai/local-server/dist/routes/issues.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/routes/plugins.d.ts +0 -34
- package/node_modules/@sudocode-ai/local-server/dist/routes/plugins.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/routes/plugins.js +0 -602
- package/node_modules/@sudocode-ai/local-server/dist/routes/plugins.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/routes/projects.d.ts +0 -11
- package/node_modules/@sudocode-ai/local-server/dist/routes/projects.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/routes/projects.js +0 -536
- package/node_modules/@sudocode-ai/local-server/dist/routes/projects.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/routes/relationships.d.ts +0 -8
- package/node_modules/@sudocode-ai/local-server/dist/routes/relationships.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/routes/relationships.js +0 -310
- package/node_modules/@sudocode-ai/local-server/dist/routes/relationships.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/routes/repo-info.d.ts +0 -3
- package/node_modules/@sudocode-ai/local-server/dist/routes/repo-info.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/routes/repo-info.js +0 -203
- package/node_modules/@sudocode-ai/local-server/dist/routes/repo-info.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/routes/specs.d.ts +0 -8
- package/node_modules/@sudocode-ai/local-server/dist/routes/specs.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/routes/specs.js +0 -414
- package/node_modules/@sudocode-ai/local-server/dist/routes/specs.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/routes/update.d.ts +0 -7
- package/node_modules/@sudocode-ai/local-server/dist/routes/update.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/routes/update.js +0 -194
- package/node_modules/@sudocode-ai/local-server/dist/routes/update.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/routes/version.d.ts +0 -3
- package/node_modules/@sudocode-ai/local-server/dist/routes/version.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/routes/version.js +0 -25
- package/node_modules/@sudocode-ai/local-server/dist/routes/version.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/routes/voice.d.ts +0 -12
- package/node_modules/@sudocode-ai/local-server/dist/routes/voice.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/routes/voice.js +0 -387
- package/node_modules/@sudocode-ai/local-server/dist/routes/voice.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/routes/workflows.d.ts +0 -8
- package/node_modules/@sudocode-ai/local-server/dist/routes/workflows.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/routes/workflows.js +0 -1730
- package/node_modules/@sudocode-ai/local-server/dist/routes/workflows.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/services/agent-registry.d.ts +0 -150
- package/node_modules/@sudocode-ai/local-server/dist/services/agent-registry.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/services/agent-registry.js +0 -312
- package/node_modules/@sudocode-ai/local-server/dist/services/agent-registry.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/services/command-discovery-service.d.ts +0 -43
- package/node_modules/@sudocode-ai/local-server/dist/services/command-discovery-service.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/services/command-discovery-service.js +0 -114
- package/node_modules/@sudocode-ai/local-server/dist/services/command-discovery-service.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/services/db.d.ts +0 -33
- package/node_modules/@sudocode-ai/local-server/dist/services/db.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/services/db.js +0 -90
- package/node_modules/@sudocode-ai/local-server/dist/services/db.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/services/editor-service.d.ts +0 -57
- package/node_modules/@sudocode-ai/local-server/dist/services/editor-service.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/services/editor-service.js +0 -204
- package/node_modules/@sudocode-ai/local-server/dist/services/editor-service.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/services/execution-changes-service.d.ts +0 -110
- package/node_modules/@sudocode-ai/local-server/dist/services/execution-changes-service.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/services/execution-changes-service.js +0 -710
- package/node_modules/@sudocode-ai/local-server/dist/services/execution-changes-service.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/services/execution-event-callbacks.d.ts +0 -73
- package/node_modules/@sudocode-ai/local-server/dist/services/execution-event-callbacks.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/services/execution-event-callbacks.js +0 -82
- package/node_modules/@sudocode-ai/local-server/dist/services/execution-event-callbacks.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/services/execution-lifecycle.d.ts +0 -145
- package/node_modules/@sudocode-ai/local-server/dist/services/execution-lifecycle.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/services/execution-lifecycle.js +0 -392
- package/node_modules/@sudocode-ai/local-server/dist/services/execution-lifecycle.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/services/execution-logs-cleanup.d.ts +0 -88
- package/node_modules/@sudocode-ai/local-server/dist/services/execution-logs-cleanup.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/services/execution-logs-cleanup.js +0 -137
- package/node_modules/@sudocode-ai/local-server/dist/services/execution-logs-cleanup.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/services/execution-logs-store.d.ts +0 -312
- package/node_modules/@sudocode-ai/local-server/dist/services/execution-logs-store.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/services/execution-logs-store.js +0 -518
- package/node_modules/@sudocode-ai/local-server/dist/services/execution-logs-store.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/services/execution-service.d.ts +0 -409
- package/node_modules/@sudocode-ai/local-server/dist/services/execution-service.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/services/execution-service.js +0 -1694
- package/node_modules/@sudocode-ai/local-server/dist/services/execution-service.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/services/execution-worker-pool.d.ts +0 -116
- package/node_modules/@sudocode-ai/local-server/dist/services/execution-worker-pool.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/services/execution-worker-pool.js +0 -326
- package/node_modules/@sudocode-ai/local-server/dist/services/execution-worker-pool.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/services/executions.d.ts +0 -63
- package/node_modules/@sudocode-ai/local-server/dist/services/executions.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/services/executions.js +0 -177
- package/node_modules/@sudocode-ai/local-server/dist/services/executions.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/services/export.d.ts +0 -32
- package/node_modules/@sudocode-ai/local-server/dist/services/export.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/services/export.js +0 -114
- package/node_modules/@sudocode-ai/local-server/dist/services/export.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/services/external-refresh-service.d.ts +0 -104
- package/node_modules/@sudocode-ai/local-server/dist/services/external-refresh-service.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/services/external-refresh-service.js +0 -520
- package/node_modules/@sudocode-ai/local-server/dist/services/external-refresh-service.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/services/feedback.d.ts +0 -56
- package/node_modules/@sudocode-ai/local-server/dist/services/feedback.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/services/feedback.js +0 -78
- package/node_modules/@sudocode-ai/local-server/dist/services/feedback.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/services/file-search/git-ls-files-strategy.d.ts +0 -72
- package/node_modules/@sudocode-ai/local-server/dist/services/file-search/git-ls-files-strategy.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/services/file-search/git-ls-files-strategy.js +0 -176
- package/node_modules/@sudocode-ai/local-server/dist/services/file-search/git-ls-files-strategy.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/services/file-search/index.d.ts +0 -9
- package/node_modules/@sudocode-ai/local-server/dist/services/file-search/index.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/services/file-search/index.js +0 -10
- package/node_modules/@sudocode-ai/local-server/dist/services/file-search/index.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/services/file-search/registry.d.ts +0 -97
- package/node_modules/@sudocode-ai/local-server/dist/services/file-search/registry.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/services/file-search/registry.js +0 -140
- package/node_modules/@sudocode-ai/local-server/dist/services/file-search/registry.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/services/file-search/strategy.d.ts +0 -58
- package/node_modules/@sudocode-ai/local-server/dist/services/file-search/strategy.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/services/file-search/strategy.js +0 -8
- package/node_modules/@sudocode-ai/local-server/dist/services/file-search/strategy.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/services/integration-sync-service.d.ts +0 -185
- package/node_modules/@sudocode-ai/local-server/dist/services/integration-sync-service.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/services/integration-sync-service.js +0 -428
- package/node_modules/@sudocode-ai/local-server/dist/services/integration-sync-service.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/services/issues.d.ts +0 -27
- package/node_modules/@sudocode-ai/local-server/dist/services/issues.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/services/issues.js +0 -35
- package/node_modules/@sudocode-ai/local-server/dist/services/issues.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/services/narration-service.d.ts +0 -312
- package/node_modules/@sudocode-ai/local-server/dist/services/narration-service.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/services/narration-service.js +0 -749
- package/node_modules/@sudocode-ai/local-server/dist/services/narration-service.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/services/project-context.d.ts +0 -93
- package/node_modules/@sudocode-ai/local-server/dist/services/project-context.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/services/project-context.js +0 -166
- package/node_modules/@sudocode-ai/local-server/dist/services/project-context.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/services/project-manager.d.ts +0 -102
- package/node_modules/@sudocode-ai/local-server/dist/services/project-manager.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/services/project-manager.js +0 -500
- package/node_modules/@sudocode-ai/local-server/dist/services/project-manager.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/services/project-registry.d.ts +0 -98
- package/node_modules/@sudocode-ai/local-server/dist/services/project-registry.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/services/project-registry.js +0 -289
- package/node_modules/@sudocode-ai/local-server/dist/services/project-registry.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/services/prompt-resolver.d.ts +0 -97
- package/node_modules/@sudocode-ai/local-server/dist/services/prompt-resolver.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/services/prompt-resolver.js +0 -377
- package/node_modules/@sudocode-ai/local-server/dist/services/prompt-resolver.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/services/prompt-template-engine.d.ts +0 -108
- package/node_modules/@sudocode-ai/local-server/dist/services/prompt-template-engine.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/services/prompt-template-engine.js +0 -212
- package/node_modules/@sudocode-ai/local-server/dist/services/prompt-template-engine.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/services/prompt-templates.d.ts +0 -97
- package/node_modules/@sudocode-ai/local-server/dist/services/prompt-templates.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/services/prompt-templates.js +0 -236
- package/node_modules/@sudocode-ai/local-server/dist/services/prompt-templates.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/services/relationships.d.ts +0 -35
- package/node_modules/@sudocode-ai/local-server/dist/services/relationships.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/services/relationships.js +0 -42
- package/node_modules/@sudocode-ai/local-server/dist/services/relationships.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/services/repo-info.d.ts +0 -33
- package/node_modules/@sudocode-ai/local-server/dist/services/repo-info.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/services/repo-info.js +0 -136
- package/node_modules/@sudocode-ai/local-server/dist/services/repo-info.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/services/specs.d.ts +0 -27
- package/node_modules/@sudocode-ai/local-server/dist/services/specs.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/services/specs.js +0 -35
- package/node_modules/@sudocode-ai/local-server/dist/services/specs.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/services/stt-providers/index.d.ts +0 -21
- package/node_modules/@sudocode-ai/local-server/dist/services/stt-providers/index.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/services/stt-providers/index.js +0 -32
- package/node_modules/@sudocode-ai/local-server/dist/services/stt-providers/index.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/services/stt-providers/openai-whisper.d.ts +0 -66
- package/node_modules/@sudocode-ai/local-server/dist/services/stt-providers/openai-whisper.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/services/stt-providers/openai-whisper.js +0 -137
- package/node_modules/@sudocode-ai/local-server/dist/services/stt-providers/openai-whisper.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/services/stt-providers/whisper-local.d.ts +0 -64
- package/node_modules/@sudocode-ai/local-server/dist/services/stt-providers/whisper-local.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/services/stt-providers/whisper-local.js +0 -166
- package/node_modules/@sudocode-ai/local-server/dist/services/stt-providers/whisper-local.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/services/stt-service.d.ts +0 -160
- package/node_modules/@sudocode-ai/local-server/dist/services/stt-service.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/services/stt-service.js +0 -246
- package/node_modules/@sudocode-ai/local-server/dist/services/stt-service.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/services/tts-providers/browser-tts.d.ts +0 -64
- package/node_modules/@sudocode-ai/local-server/dist/services/tts-providers/browser-tts.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/services/tts-providers/browser-tts.js +0 -89
- package/node_modules/@sudocode-ai/local-server/dist/services/tts-providers/browser-tts.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/services/tts-providers/index.d.ts +0 -20
- package/node_modules/@sudocode-ai/local-server/dist/services/tts-providers/index.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/services/tts-providers/index.js +0 -31
- package/node_modules/@sudocode-ai/local-server/dist/services/tts-providers/index.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/services/tts-service.d.ts +0 -190
- package/node_modules/@sudocode-ai/local-server/dist/services/tts-service.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/services/tts-service.js +0 -296
- package/node_modules/@sudocode-ai/local-server/dist/services/tts-service.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/services/tts-sidecar-manager.d.ts +0 -276
- package/node_modules/@sudocode-ai/local-server/dist/services/tts-sidecar-manager.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/services/tts-sidecar-manager.js +0 -665
- package/node_modules/@sudocode-ai/local-server/dist/services/tts-sidecar-manager.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/services/version-service.d.ts +0 -14
- package/node_modules/@sudocode-ai/local-server/dist/services/version-service.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/services/version-service.js +0 -57
- package/node_modules/@sudocode-ai/local-server/dist/services/version-service.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/services/watcher.d.ts +0 -49
- package/node_modules/@sudocode-ai/local-server/dist/services/watcher.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/services/watcher.js +0 -52
- package/node_modules/@sudocode-ai/local-server/dist/services/watcher.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/services/websocket.d.ts +0 -246
- package/node_modules/@sudocode-ai/local-server/dist/services/websocket.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/services/websocket.js +0 -758
- package/node_modules/@sudocode-ai/local-server/dist/services/websocket.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/services/workflow-broadcast-service.d.ts +0 -43
- package/node_modules/@sudocode-ai/local-server/dist/services/workflow-broadcast-service.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/services/workflow-broadcast-service.js +0 -155
- package/node_modules/@sudocode-ai/local-server/dist/services/workflow-broadcast-service.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/services/worktree-sync-service.d.ts +0 -452
- package/node_modules/@sudocode-ai/local-server/dist/services/worktree-sync-service.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/services/worktree-sync-service.js +0 -1602
- package/node_modules/@sudocode-ai/local-server/dist/services/worktree-sync-service.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/types/editor.d.ts +0 -49
- package/node_modules/@sudocode-ai/local-server/dist/types/editor.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/types/editor.js +0 -50
- package/node_modules/@sudocode-ai/local-server/dist/types/editor.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/types/project.d.ts +0 -58
- package/node_modules/@sudocode-ai/local-server/dist/types/project.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/types/project.js +0 -10
- package/node_modules/@sudocode-ai/local-server/dist/types/project.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/utils/execFileNoThrow.d.ts +0 -43
- package/node_modules/@sudocode-ai/local-server/dist/utils/execFileNoThrow.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/utils/execFileNoThrow.js +0 -53
- package/node_modules/@sudocode-ai/local-server/dist/utils/execFileNoThrow.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/utils/executable-check.d.ts +0 -36
- package/node_modules/@sudocode-ai/local-server/dist/utils/executable-check.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/utils/executable-check.js +0 -79
- package/node_modules/@sudocode-ai/local-server/dist/utils/executable-check.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/utils/sudocode-dir.d.ts +0 -6
- package/node_modules/@sudocode-ai/local-server/dist/utils/sudocode-dir.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/utils/sudocode-dir.js +0 -9
- package/node_modules/@sudocode-ai/local-server/dist/utils/sudocode-dir.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/utils/voice-config.d.ts +0 -26
- package/node_modules/@sudocode-ai/local-server/dist/utils/voice-config.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/utils/voice-config.js +0 -48
- package/node_modules/@sudocode-ai/local-server/dist/utils/voice-config.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/workers/execution-worker.d.ts +0 -18
- package/node_modules/@sudocode-ai/local-server/dist/workers/execution-worker.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/workers/execution-worker.js +0 -344
- package/node_modules/@sudocode-ai/local-server/dist/workers/execution-worker.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/workers/worker-ipc.d.ts +0 -84
- package/node_modules/@sudocode-ai/local-server/dist/workers/worker-ipc.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/workers/worker-ipc.js +0 -29
- package/node_modules/@sudocode-ai/local-server/dist/workers/worker-ipc.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/workflow/base-workflow-engine.d.ts +0 -188
- package/node_modules/@sudocode-ai/local-server/dist/workflow/base-workflow-engine.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/workflow/base-workflow-engine.js +0 -557
- package/node_modules/@sudocode-ai/local-server/dist/workflow/base-workflow-engine.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/workflow/dependency-analyzer.d.ts +0 -78
- package/node_modules/@sudocode-ai/local-server/dist/workflow/dependency-analyzer.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/workflow/dependency-analyzer.js +0 -264
- package/node_modules/@sudocode-ai/local-server/dist/workflow/dependency-analyzer.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/workflow/engines/orchestrator-engine.d.ts +0 -241
- package/node_modules/@sudocode-ai/local-server/dist/workflow/engines/orchestrator-engine.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/workflow/engines/orchestrator-engine.js +0 -752
- package/node_modules/@sudocode-ai/local-server/dist/workflow/engines/orchestrator-engine.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/workflow/engines/sequential-engine.d.ts +0 -283
- package/node_modules/@sudocode-ai/local-server/dist/workflow/engines/sequential-engine.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/workflow/engines/sequential-engine.js +0 -1190
- package/node_modules/@sudocode-ai/local-server/dist/workflow/engines/sequential-engine.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/workflow/index.d.ts +0 -15
- package/node_modules/@sudocode-ai/local-server/dist/workflow/index.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/workflow/index.js +0 -22
- package/node_modules/@sudocode-ai/local-server/dist/workflow/index.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/workflow/mcp/api-client.d.ts +0 -103
- package/node_modules/@sudocode-ai/local-server/dist/workflow/mcp/api-client.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/workflow/mcp/api-client.js +0 -193
- package/node_modules/@sudocode-ai/local-server/dist/workflow/mcp/api-client.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/workflow/mcp/index.d.ts +0 -16
- package/node_modules/@sudocode-ai/local-server/dist/workflow/mcp/index.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/workflow/mcp/index.js +0 -114
- package/node_modules/@sudocode-ai/local-server/dist/workflow/mcp/index.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/workflow/mcp/server.d.ts +0 -85
- package/node_modules/@sudocode-ai/local-server/dist/workflow/mcp/server.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/workflow/mcp/server.js +0 -520
- package/node_modules/@sudocode-ai/local-server/dist/workflow/mcp/server.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/workflow/mcp/tools/escalation.d.ts +0 -36
- package/node_modules/@sudocode-ai/local-server/dist/workflow/mcp/tools/escalation.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/workflow/mcp/tools/escalation.js +0 -47
- package/node_modules/@sudocode-ai/local-server/dist/workflow/mcp/tools/escalation.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/workflow/mcp/tools/execution.d.ts +0 -59
- package/node_modules/@sudocode-ai/local-server/dist/workflow/mcp/tools/execution.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/workflow/mcp/tools/execution.js +0 -67
- package/node_modules/@sudocode-ai/local-server/dist/workflow/mcp/tools/execution.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/workflow/mcp/tools/inspection.d.ts +0 -82
- package/node_modules/@sudocode-ai/local-server/dist/workflow/mcp/tools/inspection.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/workflow/mcp/tools/inspection.js +0 -57
- package/node_modules/@sudocode-ai/local-server/dist/workflow/mcp/tools/inspection.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/workflow/mcp/tools/workflow.d.ts +0 -59
- package/node_modules/@sudocode-ai/local-server/dist/workflow/mcp/tools/workflow.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/workflow/mcp/tools/workflow.js +0 -40
- package/node_modules/@sudocode-ai/local-server/dist/workflow/mcp/tools/workflow.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/workflow/mcp/types.d.ts +0 -345
- package/node_modules/@sudocode-ai/local-server/dist/workflow/mcp/types.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/workflow/mcp/types.js +0 -7
- package/node_modules/@sudocode-ai/local-server/dist/workflow/mcp/types.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/workflow/services/prompt-builder.d.ts +0 -36
- package/node_modules/@sudocode-ai/local-server/dist/workflow/services/prompt-builder.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/workflow/services/prompt-builder.js +0 -329
- package/node_modules/@sudocode-ai/local-server/dist/workflow/services/prompt-builder.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/workflow/services/wakeup-service.d.ts +0 -262
- package/node_modules/@sudocode-ai/local-server/dist/workflow/services/wakeup-service.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/workflow/services/wakeup-service.js +0 -809
- package/node_modules/@sudocode-ai/local-server/dist/workflow/services/wakeup-service.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/workflow/workflow-engine.d.ts +0 -228
- package/node_modules/@sudocode-ai/local-server/dist/workflow/workflow-engine.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/workflow/workflow-engine.js +0 -94
- package/node_modules/@sudocode-ai/local-server/dist/workflow/workflow-engine.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/workflow/workflow-event-emitter.d.ts +0 -278
- package/node_modules/@sudocode-ai/local-server/dist/workflow/workflow-event-emitter.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/local-server/dist/workflow/workflow-event-emitter.js +0 -259
- package/node_modules/@sudocode-ai/local-server/dist/workflow/workflow-event-emitter.js.map +0 -1
- package/node_modules/@sudocode-ai/local-server/package.json +0 -83
- package/node_modules/@sudocode-ai/mcp/README.md +0 -226
- package/node_modules/@sudocode-ai/mcp/dist/api-client.d.ts +0 -296
- package/node_modules/@sudocode-ai/mcp/dist/api-client.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/mcp/dist/api-client.js +0 -304
- package/node_modules/@sudocode-ai/mcp/dist/api-client.js.map +0 -1
- package/node_modules/@sudocode-ai/mcp/dist/client.d.ts +0 -33
- package/node_modules/@sudocode-ai/mcp/dist/client.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/mcp/dist/client.js +0 -166
- package/node_modules/@sudocode-ai/mcp/dist/client.js.map +0 -1
- package/node_modules/@sudocode-ai/mcp/dist/index.d.ts +0 -6
- package/node_modules/@sudocode-ai/mcp/dist/index.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/mcp/dist/index.js +0 -167
- package/node_modules/@sudocode-ai/mcp/dist/index.js.map +0 -1
- package/node_modules/@sudocode-ai/mcp/dist/scopes.d.ts +0 -126
- package/node_modules/@sudocode-ai/mcp/dist/scopes.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/mcp/dist/scopes.js +0 -282
- package/node_modules/@sudocode-ai/mcp/dist/scopes.js.map +0 -1
- package/node_modules/@sudocode-ai/mcp/dist/server.d.ts +0 -37
- package/node_modules/@sudocode-ai/mcp/dist/server.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/mcp/dist/server.js +0 -442
- package/node_modules/@sudocode-ai/mcp/dist/server.js.map +0 -1
- package/node_modules/@sudocode-ai/mcp/dist/tool-registry.d.ts +0 -49
- package/node_modules/@sudocode-ai/mcp/dist/tool-registry.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/mcp/dist/tool-registry.js +0 -720
- package/node_modules/@sudocode-ai/mcp/dist/tool-registry.js.map +0 -1
- package/node_modules/@sudocode-ai/mcp/dist/tools/analytics.d.ts +0 -41
- package/node_modules/@sudocode-ai/mcp/dist/tools/analytics.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/mcp/dist/tools/analytics.js +0 -21
- package/node_modules/@sudocode-ai/mcp/dist/tools/analytics.js.map +0 -1
- package/node_modules/@sudocode-ai/mcp/dist/tools/feedback.d.ts +0 -21
- package/node_modules/@sudocode-ai/mcp/dist/tools/feedback.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/mcp/dist/tools/feedback.js +0 -30
- package/node_modules/@sudocode-ai/mcp/dist/tools/feedback.js.map +0 -1
- package/node_modules/@sudocode-ai/mcp/dist/tools/init.d.ts +0 -17
- package/node_modules/@sudocode-ai/mcp/dist/tools/init.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/mcp/dist/tools/init.js +0 -15
- package/node_modules/@sudocode-ai/mcp/dist/tools/init.js.map +0 -1
- package/node_modules/@sudocode-ai/mcp/dist/tools/issues.d.ts +0 -44
- package/node_modules/@sudocode-ai/mcp/dist/tools/issues.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/mcp/dist/tools/issues.js +0 -109
- package/node_modules/@sudocode-ai/mcp/dist/tools/issues.js.map +0 -1
- package/node_modules/@sudocode-ai/mcp/dist/tools/references.d.ts +0 -21
- package/node_modules/@sudocode-ai/mcp/dist/tools/references.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/mcp/dist/tools/references.js +0 -49
- package/node_modules/@sudocode-ai/mcp/dist/tools/references.js.map +0 -1
- package/node_modules/@sudocode-ai/mcp/dist/tools/relationships.d.ts +0 -15
- package/node_modules/@sudocode-ai/mcp/dist/tools/relationships.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/mcp/dist/tools/relationships.js +0 -18
- package/node_modules/@sudocode-ai/mcp/dist/tools/relationships.js.map +0 -1
- package/node_modules/@sudocode-ai/mcp/dist/tools/specs.d.ts +0 -35
- package/node_modules/@sudocode-ai/mcp/dist/tools/specs.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/mcp/dist/tools/specs.js +0 -85
- package/node_modules/@sudocode-ai/mcp/dist/tools/specs.js.map +0 -1
- package/node_modules/@sudocode-ai/mcp/dist/types.d.ts +0 -46
- package/node_modules/@sudocode-ai/mcp/dist/types.d.ts.map +0 -1
- package/node_modules/@sudocode-ai/mcp/dist/types.js +0 -21
- package/node_modules/@sudocode-ai/mcp/dist/types.js.map +0 -1
- package/node_modules/@sudocode-ai/mcp/package.json +0 -67
- package/node_modules/@sudocode-ai/types/README.md +0 -7
- package/node_modules/@sudocode-ai/types/package.json +0 -81
- package/node_modules/@sudocode-ai/types/src/agents.d.ts +0 -348
- package/node_modules/@sudocode-ai/types/src/artifacts.d.ts +0 -66
- package/node_modules/@sudocode-ai/types/src/events.d.ts +0 -70
- package/node_modules/@sudocode-ai/types/src/index.d.ts +0 -587
- package/node_modules/@sudocode-ai/types/src/integrations.d.ts +0 -454
- package/node_modules/@sudocode-ai/types/src/voice.d.ts +0 -465
- package/node_modules/@sudocode-ai/types/src/workflows.d.ts +0 -501
- package/node_modules/commander/LICENSE +0 -22
- package/node_modules/commander/Readme.md +0 -1149
- package/node_modules/commander/esm.mjs +0 -16
- package/node_modules/commander/index.js +0 -24
- package/node_modules/commander/lib/argument.js +0 -149
- package/node_modules/commander/lib/command.js +0 -2662
- package/node_modules/commander/lib/error.js +0 -39
- package/node_modules/commander/lib/help.js +0 -709
- package/node_modules/commander/lib/option.js +0 -367
- package/node_modules/commander/lib/suggestSimilar.js +0 -101
- package/node_modules/commander/package-support.json +0 -16
- package/node_modules/commander/package.json +0 -82
- package/node_modules/commander/typings/esm.d.mts +0 -3
- package/node_modules/commander/typings/index.d.ts +0 -1045
- package/node_modules/glob/LICENSE +0 -15
- package/node_modules/glob/README.md +0 -1265
- package/node_modules/glob/package.json +0 -99
- package/node_modules/isexe/LICENSE +0 -15
- package/node_modules/isexe/README.md +0 -74
- package/node_modules/isexe/package.json +0 -96
- package/node_modules/which/LICENSE +0 -15
- package/node_modules/which/README.md +0 -51
- package/node_modules/which/bin/which.js +0 -52
- package/node_modules/which/lib/index.js +0 -111
- package/node_modules/which/package.json +0 -52
|
@@ -1,1570 +0,0 @@
|
|
|
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 { agentRegistryService } from "../services/agent-registry.js";
|
|
11
|
-
import { AgentNotFoundError, AgentNotImplementedError, AgentError, } from "../errors/agent-errors.js";
|
|
12
|
-
import { WorktreeSyncService, WorktreeSyncError, WorktreeSyncErrorCode, } from "../services/worktree-sync-service.js";
|
|
13
|
-
import { ExecutionChangesService } from "../services/execution-changes-service.js";
|
|
14
|
-
/**
|
|
15
|
-
* Get WorktreeSyncService instance for a request
|
|
16
|
-
*
|
|
17
|
-
* @param req - Express request with project context
|
|
18
|
-
* @returns WorktreeSyncService instance
|
|
19
|
-
*/
|
|
20
|
-
function getWorktreeSyncService(req) {
|
|
21
|
-
const db = req.project.db;
|
|
22
|
-
const repoPath = req.project.path;
|
|
23
|
-
return new WorktreeSyncService(db, repoPath);
|
|
24
|
-
}
|
|
25
|
-
/**
|
|
26
|
-
* Get HTTP status code for WorktreeSyncError
|
|
27
|
-
*
|
|
28
|
-
* @param error - WorktreeSyncError instance
|
|
29
|
-
* @returns HTTP status code
|
|
30
|
-
*/
|
|
31
|
-
function getStatusCodeForSyncError(error) {
|
|
32
|
-
switch (error.code) {
|
|
33
|
-
case WorktreeSyncErrorCode.NO_WORKTREE:
|
|
34
|
-
case WorktreeSyncErrorCode.WORKTREE_MISSING:
|
|
35
|
-
case WorktreeSyncErrorCode.BRANCH_MISSING:
|
|
36
|
-
case WorktreeSyncErrorCode.TARGET_BRANCH_MISSING:
|
|
37
|
-
case WorktreeSyncErrorCode.EXECUTION_NOT_FOUND:
|
|
38
|
-
return 404; // Not found
|
|
39
|
-
case WorktreeSyncErrorCode.DIRTY_WORKING_TREE:
|
|
40
|
-
case WorktreeSyncErrorCode.CODE_CONFLICTS:
|
|
41
|
-
case WorktreeSyncErrorCode.NO_COMMON_BASE:
|
|
42
|
-
return 400; // Bad request (user must fix)
|
|
43
|
-
case WorktreeSyncErrorCode.MERGE_FAILED:
|
|
44
|
-
case WorktreeSyncErrorCode.JSONL_RESOLUTION_FAILED:
|
|
45
|
-
case WorktreeSyncErrorCode.DATABASE_SYNC_FAILED:
|
|
46
|
-
return 500; // Internal error
|
|
47
|
-
default:
|
|
48
|
-
return 500;
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
/**
|
|
52
|
-
* Create executions router
|
|
53
|
-
*
|
|
54
|
-
* Note: ExecutionService and ExecutionLogsStore are accessed via req.project
|
|
55
|
-
* which is injected by the requireProject() middleware
|
|
56
|
-
*
|
|
57
|
-
* @returns Express router with execution endpoints
|
|
58
|
-
*/
|
|
59
|
-
export function createExecutionsRouter() {
|
|
60
|
-
const router = Router();
|
|
61
|
-
/**
|
|
62
|
-
* GET /api/executions
|
|
63
|
-
*
|
|
64
|
-
* List all executions with filtering and pagination
|
|
65
|
-
*
|
|
66
|
-
* Query parameters:
|
|
67
|
-
* - limit?: number (default: 50)
|
|
68
|
-
* - offset?: number (default: 0)
|
|
69
|
-
* - status?: ExecutionStatus | ExecutionStatus[] (comma-separated for multiple)
|
|
70
|
-
* - issueId?: string
|
|
71
|
-
* - sortBy?: 'created_at' | 'updated_at' (default: 'created_at')
|
|
72
|
-
* - order?: 'asc' | 'desc' (default: 'desc')
|
|
73
|
-
* - since?: ISO date string - only return executions created after this date
|
|
74
|
-
* - includeRunning?: 'true' - when used with 'since', also include running executions regardless of age
|
|
75
|
-
*/
|
|
76
|
-
router.get("/executions", (req, res) => {
|
|
77
|
-
try {
|
|
78
|
-
// Parse query parameters
|
|
79
|
-
const limit = req.query.limit
|
|
80
|
-
? parseInt(req.query.limit, 10)
|
|
81
|
-
: undefined;
|
|
82
|
-
const offset = req.query.offset
|
|
83
|
-
? parseInt(req.query.offset, 10)
|
|
84
|
-
: undefined;
|
|
85
|
-
// Parse status (can be single value or comma-separated array)
|
|
86
|
-
let status = undefined;
|
|
87
|
-
if (req.query.status) {
|
|
88
|
-
const statusParam = req.query.status;
|
|
89
|
-
status = statusParam.includes(",")
|
|
90
|
-
? statusParam.split(",").map((s) => s.trim())
|
|
91
|
-
: statusParam;
|
|
92
|
-
}
|
|
93
|
-
const issueId = req.query.issueId;
|
|
94
|
-
const sortBy = req.query.sortBy || undefined;
|
|
95
|
-
const order = req.query.order || undefined;
|
|
96
|
-
const since = req.query.since;
|
|
97
|
-
const includeRunning = req.query.includeRunning === "true";
|
|
98
|
-
// Parse tags (can be single value or comma-separated array)
|
|
99
|
-
let tags = undefined;
|
|
100
|
-
if (req.query.tags) {
|
|
101
|
-
const tagsParam = req.query.tags;
|
|
102
|
-
tags = tagsParam.includes(",")
|
|
103
|
-
? tagsParam.split(",").map((t) => t.trim())
|
|
104
|
-
: [tagsParam];
|
|
105
|
-
}
|
|
106
|
-
// Validate limit and offset
|
|
107
|
-
if (limit !== undefined && (isNaN(limit) || limit < 0)) {
|
|
108
|
-
res.status(400).json({
|
|
109
|
-
success: false,
|
|
110
|
-
data: null,
|
|
111
|
-
message: "Invalid limit parameter",
|
|
112
|
-
});
|
|
113
|
-
return;
|
|
114
|
-
}
|
|
115
|
-
if (offset !== undefined && (isNaN(offset) || offset < 0)) {
|
|
116
|
-
res.status(400).json({
|
|
117
|
-
success: false,
|
|
118
|
-
data: null,
|
|
119
|
-
message: "Invalid offset parameter",
|
|
120
|
-
});
|
|
121
|
-
return;
|
|
122
|
-
}
|
|
123
|
-
// Validate sortBy
|
|
124
|
-
if (sortBy && sortBy !== "created_at" && sortBy !== "updated_at") {
|
|
125
|
-
res.status(400).json({
|
|
126
|
-
success: false,
|
|
127
|
-
data: null,
|
|
128
|
-
message: "Invalid sortBy parameter. Must be 'created_at' or 'updated_at'",
|
|
129
|
-
});
|
|
130
|
-
return;
|
|
131
|
-
}
|
|
132
|
-
// Validate order
|
|
133
|
-
if (order && order !== "asc" && order !== "desc") {
|
|
134
|
-
res.status(400).json({
|
|
135
|
-
success: false,
|
|
136
|
-
data: null,
|
|
137
|
-
message: "Invalid order parameter. Must be 'asc' or 'desc'",
|
|
138
|
-
});
|
|
139
|
-
return;
|
|
140
|
-
}
|
|
141
|
-
// Validate since (should be valid ISO date)
|
|
142
|
-
if (since) {
|
|
143
|
-
const sinceDate = new Date(since);
|
|
144
|
-
if (isNaN(sinceDate.getTime())) {
|
|
145
|
-
res.status(400).json({
|
|
146
|
-
success: false,
|
|
147
|
-
data: null,
|
|
148
|
-
message: "Invalid since parameter. Must be a valid ISO date string",
|
|
149
|
-
});
|
|
150
|
-
return;
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
// Call service method
|
|
154
|
-
const result = req.project.executionService.listAll({
|
|
155
|
-
limit,
|
|
156
|
-
offset,
|
|
157
|
-
status,
|
|
158
|
-
issueId,
|
|
159
|
-
sortBy,
|
|
160
|
-
order,
|
|
161
|
-
since,
|
|
162
|
-
includeRunning,
|
|
163
|
-
tags,
|
|
164
|
-
});
|
|
165
|
-
res.json({
|
|
166
|
-
success: true,
|
|
167
|
-
data: result,
|
|
168
|
-
});
|
|
169
|
-
}
|
|
170
|
-
catch (error) {
|
|
171
|
-
console.error("Error listing executions:", error);
|
|
172
|
-
res.status(500).json({
|
|
173
|
-
success: false,
|
|
174
|
-
data: null,
|
|
175
|
-
error_data: error instanceof Error ? error.message : String(error),
|
|
176
|
-
message: "Failed to list executions",
|
|
177
|
-
});
|
|
178
|
-
}
|
|
179
|
-
});
|
|
180
|
-
/**
|
|
181
|
-
* POST /api/executions
|
|
182
|
-
*
|
|
183
|
-
* Create and start an adhoc execution (not tied to an issue)
|
|
184
|
-
*
|
|
185
|
-
* Request body:
|
|
186
|
-
* - prompt: string (required) - The prompt for the execution
|
|
187
|
-
* - config?: ExecutionConfig - Execution configuration
|
|
188
|
-
* - agentType?: string - Agent type (defaults to 'claude-code')
|
|
189
|
-
*/
|
|
190
|
-
router.post("/executions", async (req, res) => {
|
|
191
|
-
try {
|
|
192
|
-
const { config, prompt, agentType } = req.body;
|
|
193
|
-
// Validate required fields - prompt is required for adhoc executions
|
|
194
|
-
if (!prompt || typeof prompt !== "string" || !prompt.trim()) {
|
|
195
|
-
res.status(400).json({
|
|
196
|
-
success: false,
|
|
197
|
-
data: null,
|
|
198
|
-
message: "Prompt is required for adhoc executions",
|
|
199
|
-
});
|
|
200
|
-
return;
|
|
201
|
-
}
|
|
202
|
-
// Validate agentType if provided
|
|
203
|
-
if (agentType) {
|
|
204
|
-
// Check if agent exists in registry
|
|
205
|
-
if (!agentRegistryService.hasAgent(agentType)) {
|
|
206
|
-
const availableAgents = agentRegistryService
|
|
207
|
-
.getAvailableAgents()
|
|
208
|
-
.map((a) => a.name);
|
|
209
|
-
throw new AgentNotFoundError(agentType, availableAgents);
|
|
210
|
-
}
|
|
211
|
-
// Check if agent is implemented
|
|
212
|
-
if (!agentRegistryService.isAgentImplemented(agentType)) {
|
|
213
|
-
throw new AgentNotImplementedError(agentType);
|
|
214
|
-
}
|
|
215
|
-
}
|
|
216
|
-
// Create execution with null issueId (adhoc execution)
|
|
217
|
-
const execution = await req.project.executionService.createExecution(null, // No issue for adhoc executions
|
|
218
|
-
config || {}, prompt, agentType // Optional, defaults to 'claude-code' in service
|
|
219
|
-
);
|
|
220
|
-
res.status(201).json({
|
|
221
|
-
success: true,
|
|
222
|
-
data: execution,
|
|
223
|
-
});
|
|
224
|
-
}
|
|
225
|
-
catch (error) {
|
|
226
|
-
console.error("[API Route] ERROR: Failed to create adhoc execution:", error);
|
|
227
|
-
// Handle agent-specific errors with enhanced error responses
|
|
228
|
-
if (error instanceof AgentNotFoundError) {
|
|
229
|
-
res.status(400).json({
|
|
230
|
-
success: false,
|
|
231
|
-
data: null,
|
|
232
|
-
error: error.message,
|
|
233
|
-
code: error.code,
|
|
234
|
-
details: error.details,
|
|
235
|
-
});
|
|
236
|
-
return;
|
|
237
|
-
}
|
|
238
|
-
if (error instanceof AgentNotImplementedError) {
|
|
239
|
-
res.status(501).json({
|
|
240
|
-
success: false,
|
|
241
|
-
data: null,
|
|
242
|
-
error: error.message,
|
|
243
|
-
code: error.code,
|
|
244
|
-
details: error.details,
|
|
245
|
-
});
|
|
246
|
-
return;
|
|
247
|
-
}
|
|
248
|
-
if (error instanceof AgentError) {
|
|
249
|
-
// Generic agent error (400 by default)
|
|
250
|
-
res.status(400).json({
|
|
251
|
-
success: false,
|
|
252
|
-
data: null,
|
|
253
|
-
error: error.message,
|
|
254
|
-
code: error.code,
|
|
255
|
-
details: error.details,
|
|
256
|
-
});
|
|
257
|
-
return;
|
|
258
|
-
}
|
|
259
|
-
// Handle other errors
|
|
260
|
-
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
261
|
-
res.status(500).json({
|
|
262
|
-
success: false,
|
|
263
|
-
data: null,
|
|
264
|
-
error_data: errorMessage,
|
|
265
|
-
message: "Failed to create adhoc execution",
|
|
266
|
-
});
|
|
267
|
-
}
|
|
268
|
-
});
|
|
269
|
-
/**
|
|
270
|
-
* POST /api/issues/:issueId/executions
|
|
271
|
-
*
|
|
272
|
-
* Create and start a new execution
|
|
273
|
-
*/
|
|
274
|
-
router.post("/issues/:issueId/executions", async (req, res) => {
|
|
275
|
-
try {
|
|
276
|
-
const { issueId } = req.params;
|
|
277
|
-
const { config, prompt, agentType } = req.body;
|
|
278
|
-
// Validate required fields
|
|
279
|
-
if (!prompt) {
|
|
280
|
-
res.status(400).json({
|
|
281
|
-
success: false,
|
|
282
|
-
data: null,
|
|
283
|
-
message: "Prompt is required",
|
|
284
|
-
});
|
|
285
|
-
return;
|
|
286
|
-
}
|
|
287
|
-
// Validate agentType if provided
|
|
288
|
-
if (agentType) {
|
|
289
|
-
// Check if agent exists in registry
|
|
290
|
-
if (!agentRegistryService.hasAgent(agentType)) {
|
|
291
|
-
const availableAgents = agentRegistryService
|
|
292
|
-
.getAvailableAgents()
|
|
293
|
-
.map((a) => a.name);
|
|
294
|
-
throw new AgentNotFoundError(agentType, availableAgents);
|
|
295
|
-
}
|
|
296
|
-
// Check if agent is implemented
|
|
297
|
-
if (!agentRegistryService.isAgentImplemented(agentType)) {
|
|
298
|
-
throw new AgentNotImplementedError(agentType);
|
|
299
|
-
}
|
|
300
|
-
}
|
|
301
|
-
const execution = await req.project.executionService.createExecution(issueId, config || {}, prompt, agentType // Optional, defaults to 'claude-code' in service
|
|
302
|
-
);
|
|
303
|
-
res.status(201).json({
|
|
304
|
-
success: true,
|
|
305
|
-
data: execution,
|
|
306
|
-
});
|
|
307
|
-
}
|
|
308
|
-
catch (error) {
|
|
309
|
-
console.error("[API Route] ERROR: Failed to create execution:", error);
|
|
310
|
-
// Handle agent-specific errors with enhanced error responses
|
|
311
|
-
if (error instanceof AgentNotFoundError) {
|
|
312
|
-
res.status(400).json({
|
|
313
|
-
success: false,
|
|
314
|
-
data: null,
|
|
315
|
-
error: error.message,
|
|
316
|
-
code: error.code,
|
|
317
|
-
details: error.details,
|
|
318
|
-
});
|
|
319
|
-
return;
|
|
320
|
-
}
|
|
321
|
-
if (error instanceof AgentNotImplementedError) {
|
|
322
|
-
res.status(501).json({
|
|
323
|
-
success: false,
|
|
324
|
-
data: null,
|
|
325
|
-
error: error.message,
|
|
326
|
-
code: error.code,
|
|
327
|
-
details: error.details,
|
|
328
|
-
});
|
|
329
|
-
return;
|
|
330
|
-
}
|
|
331
|
-
if (error instanceof AgentError) {
|
|
332
|
-
// Generic agent error (400 by default)
|
|
333
|
-
res.status(400).json({
|
|
334
|
-
success: false,
|
|
335
|
-
data: null,
|
|
336
|
-
error: error.message,
|
|
337
|
-
code: error.code,
|
|
338
|
-
details: error.details,
|
|
339
|
-
});
|
|
340
|
-
return;
|
|
341
|
-
}
|
|
342
|
-
// Handle other errors (backwards compatibility)
|
|
343
|
-
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
344
|
-
const statusCode = errorMessage.includes("not found") ? 404 : 500;
|
|
345
|
-
res.status(statusCode).json({
|
|
346
|
-
success: false,
|
|
347
|
-
data: null,
|
|
348
|
-
error_data: errorMessage,
|
|
349
|
-
message: "Failed to create execution",
|
|
350
|
-
});
|
|
351
|
-
}
|
|
352
|
-
});
|
|
353
|
-
/**
|
|
354
|
-
* GET /api/executions/:executionId
|
|
355
|
-
*
|
|
356
|
-
* Get a specific execution by ID
|
|
357
|
-
*/
|
|
358
|
-
router.get("/executions/:executionId", (req, res) => {
|
|
359
|
-
try {
|
|
360
|
-
const { executionId } = req.params;
|
|
361
|
-
const execution = req.project.executionService.getExecution(executionId);
|
|
362
|
-
if (!execution) {
|
|
363
|
-
res.status(404).json({
|
|
364
|
-
success: false,
|
|
365
|
-
data: null,
|
|
366
|
-
message: `Execution not found: ${executionId}`,
|
|
367
|
-
});
|
|
368
|
-
return;
|
|
369
|
-
}
|
|
370
|
-
res.json({
|
|
371
|
-
success: true,
|
|
372
|
-
data: execution,
|
|
373
|
-
});
|
|
374
|
-
}
|
|
375
|
-
catch (error) {
|
|
376
|
-
console.error("Error getting execution:", error);
|
|
377
|
-
res.status(500).json({
|
|
378
|
-
success: false,
|
|
379
|
-
data: null,
|
|
380
|
-
error_data: error instanceof Error ? error.message : String(error),
|
|
381
|
-
message: "Failed to get execution",
|
|
382
|
-
});
|
|
383
|
-
}
|
|
384
|
-
});
|
|
385
|
-
/**
|
|
386
|
-
* GET /api/executions/:executionId/chain
|
|
387
|
-
*
|
|
388
|
-
* Get execution chain (root execution + all follow-ups)
|
|
389
|
-
*
|
|
390
|
-
* Returns the full chain of executions starting from the root.
|
|
391
|
-
* If the requested execution is a follow-up, finds the root and returns the full chain.
|
|
392
|
-
* Executions are ordered chronologically (oldest first).
|
|
393
|
-
*/
|
|
394
|
-
router.get("/executions/:executionId/chain", (req, res) => {
|
|
395
|
-
try {
|
|
396
|
-
const { executionId } = req.params;
|
|
397
|
-
const db = req.project.db;
|
|
398
|
-
// Get the requested execution
|
|
399
|
-
const execution = req.project.executionService.getExecution(executionId);
|
|
400
|
-
if (!execution) {
|
|
401
|
-
res.status(404).json({
|
|
402
|
-
success: false,
|
|
403
|
-
data: null,
|
|
404
|
-
message: `Execution not found: ${executionId}`,
|
|
405
|
-
});
|
|
406
|
-
return;
|
|
407
|
-
}
|
|
408
|
-
// Find the root execution by traversing up parent_execution_id
|
|
409
|
-
let rootId = executionId;
|
|
410
|
-
let current = execution;
|
|
411
|
-
while (current.parent_execution_id) {
|
|
412
|
-
rootId = current.parent_execution_id;
|
|
413
|
-
const parent = req.project.executionService.getExecution(rootId);
|
|
414
|
-
if (!parent)
|
|
415
|
-
break;
|
|
416
|
-
current = parent;
|
|
417
|
-
}
|
|
418
|
-
// Get all executions in the chain (root + all descendants)
|
|
419
|
-
// Using recursive CTE to get all descendants
|
|
420
|
-
const chain = db
|
|
421
|
-
.prepare(`
|
|
422
|
-
WITH RECURSIVE execution_chain AS (
|
|
423
|
-
-- Base case: the root execution
|
|
424
|
-
SELECT * FROM executions WHERE id = ?
|
|
425
|
-
UNION ALL
|
|
426
|
-
-- Recursive case: children of executions in the chain
|
|
427
|
-
SELECT e.* FROM executions e
|
|
428
|
-
INNER JOIN execution_chain ec ON e.parent_execution_id = ec.id
|
|
429
|
-
)
|
|
430
|
-
SELECT * FROM execution_chain
|
|
431
|
-
ORDER BY created_at ASC
|
|
432
|
-
`)
|
|
433
|
-
.all(rootId);
|
|
434
|
-
res.json({
|
|
435
|
-
success: true,
|
|
436
|
-
data: {
|
|
437
|
-
rootId,
|
|
438
|
-
executions: chain,
|
|
439
|
-
},
|
|
440
|
-
});
|
|
441
|
-
}
|
|
442
|
-
catch (error) {
|
|
443
|
-
console.error("Error getting execution chain:", error);
|
|
444
|
-
res.status(500).json({
|
|
445
|
-
success: false,
|
|
446
|
-
data: null,
|
|
447
|
-
error_data: error instanceof Error ? error.message : String(error),
|
|
448
|
-
message: "Failed to get execution chain",
|
|
449
|
-
});
|
|
450
|
-
}
|
|
451
|
-
});
|
|
452
|
-
/**
|
|
453
|
-
* GET /api/executions/:executionId/logs
|
|
454
|
-
*
|
|
455
|
-
* Get CoalescedSessionUpdate events for historical replay
|
|
456
|
-
*
|
|
457
|
-
* Returns logs in unified CoalescedSessionUpdate format.
|
|
458
|
-
* Automatically detects storage format (ACP or legacy) and converts as needed.
|
|
459
|
-
*/
|
|
460
|
-
router.get("/executions/:executionId/logs", async (req, res) => {
|
|
461
|
-
try {
|
|
462
|
-
const { executionId } = req.params;
|
|
463
|
-
// Verify execution exists
|
|
464
|
-
const execution = req.project.executionService.getExecution(executionId);
|
|
465
|
-
if (!execution) {
|
|
466
|
-
res.status(404).json({
|
|
467
|
-
success: false,
|
|
468
|
-
data: null,
|
|
469
|
-
message: `Execution not found: ${executionId}`,
|
|
470
|
-
});
|
|
471
|
-
return;
|
|
472
|
-
}
|
|
473
|
-
// Get logs in unified CoalescedSessionUpdate format
|
|
474
|
-
// This handles both ACP (raw_logs) and legacy (normalized_entry) formats
|
|
475
|
-
const events = req.project.logsStore.getCoalescedLogs(executionId);
|
|
476
|
-
const metadata = req.project.logsStore.getLogMetadata(executionId);
|
|
477
|
-
const format = req.project.logsStore.detectLogFormat(executionId);
|
|
478
|
-
res.json({
|
|
479
|
-
success: true,
|
|
480
|
-
data: {
|
|
481
|
-
executionId,
|
|
482
|
-
events,
|
|
483
|
-
format, // Include format for debugging/transparency
|
|
484
|
-
metadata: metadata
|
|
485
|
-
? {
|
|
486
|
-
lineCount: metadata.line_count,
|
|
487
|
-
byteSize: metadata.byte_size,
|
|
488
|
-
createdAt: metadata.created_at,
|
|
489
|
-
updatedAt: metadata.updated_at,
|
|
490
|
-
}
|
|
491
|
-
: {
|
|
492
|
-
lineCount: 0,
|
|
493
|
-
byteSize: 0,
|
|
494
|
-
createdAt: execution.created_at,
|
|
495
|
-
updatedAt: execution.updated_at,
|
|
496
|
-
},
|
|
497
|
-
},
|
|
498
|
-
});
|
|
499
|
-
}
|
|
500
|
-
catch (error) {
|
|
501
|
-
console.error("[GET /executions/:id/logs] Error:", error);
|
|
502
|
-
res.status(500).json({
|
|
503
|
-
success: false,
|
|
504
|
-
data: null,
|
|
505
|
-
error_data: error instanceof Error ? error.message : String(error),
|
|
506
|
-
message: "Failed to fetch execution logs",
|
|
507
|
-
});
|
|
508
|
-
}
|
|
509
|
-
});
|
|
510
|
-
/**
|
|
511
|
-
* GET /api/executions/:executionId/changes
|
|
512
|
-
*
|
|
513
|
-
* Get code changes (file list + diff statistics) for an execution
|
|
514
|
-
*
|
|
515
|
-
* Calculates changes on-demand from commit SHAs. Supports:
|
|
516
|
-
* - Committed changes (commit-to-commit diff)
|
|
517
|
-
* - Uncommitted changes (working tree diff)
|
|
518
|
-
* - Unavailable states with clear error reasons
|
|
519
|
-
*/
|
|
520
|
-
router.get("/executions/:executionId/changes", async (req, res) => {
|
|
521
|
-
try {
|
|
522
|
-
const { executionId } = req.params;
|
|
523
|
-
const db = req.project.db;
|
|
524
|
-
const repoPath = req.project.path;
|
|
525
|
-
// Create changes service
|
|
526
|
-
const changesService = new ExecutionChangesService(db, repoPath);
|
|
527
|
-
// Get changes
|
|
528
|
-
const result = await changesService.getChanges(executionId);
|
|
529
|
-
res.json({
|
|
530
|
-
success: true,
|
|
531
|
-
data: result,
|
|
532
|
-
});
|
|
533
|
-
}
|
|
534
|
-
catch (error) {
|
|
535
|
-
console.error("[GET /executions/:id/changes] Error:", error);
|
|
536
|
-
res.status(500).json({
|
|
537
|
-
success: false,
|
|
538
|
-
data: null,
|
|
539
|
-
error_data: error instanceof Error ? error.message : String(error),
|
|
540
|
-
message: "Failed to calculate changes",
|
|
541
|
-
});
|
|
542
|
-
}
|
|
543
|
-
});
|
|
544
|
-
/**
|
|
545
|
-
* GET /api/executions/:executionId/changes/file
|
|
546
|
-
*
|
|
547
|
-
* Get diff content for a specific file in an execution
|
|
548
|
-
*
|
|
549
|
-
* Query params:
|
|
550
|
-
* - filePath: Path to the file to get diff for
|
|
551
|
-
*/
|
|
552
|
-
router.get("/executions/:executionId/changes/file", async (req, res) => {
|
|
553
|
-
try {
|
|
554
|
-
const { executionId } = req.params;
|
|
555
|
-
const { filePath } = req.query;
|
|
556
|
-
if (!filePath || typeof filePath !== "string") {
|
|
557
|
-
res.status(400).json({
|
|
558
|
-
success: false,
|
|
559
|
-
data: null,
|
|
560
|
-
message: "filePath query parameter is required",
|
|
561
|
-
});
|
|
562
|
-
return;
|
|
563
|
-
}
|
|
564
|
-
const db = req.project.db;
|
|
565
|
-
const repoPath = req.project.path;
|
|
566
|
-
// Create changes service
|
|
567
|
-
const changesService = new ExecutionChangesService(db, repoPath);
|
|
568
|
-
// Get file diff
|
|
569
|
-
const result = await changesService.getFileDiff(executionId, filePath);
|
|
570
|
-
if (!result.success) {
|
|
571
|
-
res.status(400).json({
|
|
572
|
-
success: false,
|
|
573
|
-
data: null,
|
|
574
|
-
message: result.error || "Failed to get file diff",
|
|
575
|
-
});
|
|
576
|
-
return;
|
|
577
|
-
}
|
|
578
|
-
res.json({
|
|
579
|
-
success: true,
|
|
580
|
-
data: {
|
|
581
|
-
filePath,
|
|
582
|
-
oldContent: result.oldContent,
|
|
583
|
-
newContent: result.newContent,
|
|
584
|
-
},
|
|
585
|
-
});
|
|
586
|
-
}
|
|
587
|
-
catch (error) {
|
|
588
|
-
console.error("[GET /executions/:id/changes/file] Error:", error);
|
|
589
|
-
res.status(500).json({
|
|
590
|
-
success: false,
|
|
591
|
-
data: null,
|
|
592
|
-
error_data: error instanceof Error ? error.message : String(error),
|
|
593
|
-
message: "Failed to get file diff",
|
|
594
|
-
});
|
|
595
|
-
}
|
|
596
|
-
});
|
|
597
|
-
/**
|
|
598
|
-
* GET /api/issues/:issueId/executions
|
|
599
|
-
*
|
|
600
|
-
* List all executions for an issue
|
|
601
|
-
*/
|
|
602
|
-
router.get("/issues/:issueId/executions", (req, res) => {
|
|
603
|
-
try {
|
|
604
|
-
const { issueId } = req.params;
|
|
605
|
-
const executions = req.project.executionService.listExecutions(issueId);
|
|
606
|
-
res.json({
|
|
607
|
-
success: true,
|
|
608
|
-
data: executions,
|
|
609
|
-
});
|
|
610
|
-
}
|
|
611
|
-
catch (error) {
|
|
612
|
-
console.error("Error listing executions:", error);
|
|
613
|
-
res.status(500).json({
|
|
614
|
-
success: false,
|
|
615
|
-
data: null,
|
|
616
|
-
error_data: error instanceof Error ? error.message : String(error),
|
|
617
|
-
message: "Failed to list executions",
|
|
618
|
-
});
|
|
619
|
-
}
|
|
620
|
-
});
|
|
621
|
-
/**
|
|
622
|
-
* POST /api/executions/:executionId/follow-up
|
|
623
|
-
*
|
|
624
|
-
* Create a follow-up execution that reuses the parent's worktree
|
|
625
|
-
*/
|
|
626
|
-
router.post("/executions/:executionId/follow-up", async (req, res) => {
|
|
627
|
-
try {
|
|
628
|
-
const { executionId } = req.params;
|
|
629
|
-
const { feedback } = req.body;
|
|
630
|
-
// Validate required fields
|
|
631
|
-
if (!feedback) {
|
|
632
|
-
res.status(400).json({
|
|
633
|
-
success: false,
|
|
634
|
-
data: null,
|
|
635
|
-
message: "Feedback is required",
|
|
636
|
-
});
|
|
637
|
-
return;
|
|
638
|
-
}
|
|
639
|
-
const followUpExecution = await req.project.executionService.createFollowUp(executionId, feedback);
|
|
640
|
-
res.status(201).json({
|
|
641
|
-
success: true,
|
|
642
|
-
data: followUpExecution,
|
|
643
|
-
});
|
|
644
|
-
}
|
|
645
|
-
catch (error) {
|
|
646
|
-
console.error("Error creating follow-up execution:", error);
|
|
647
|
-
// Handle specific error cases
|
|
648
|
-
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
649
|
-
const statusCode = errorMessage.includes("not found") ||
|
|
650
|
-
errorMessage.includes("no worktree")
|
|
651
|
-
? 404
|
|
652
|
-
: 500;
|
|
653
|
-
res.status(statusCode).json({
|
|
654
|
-
success: false,
|
|
655
|
-
data: null,
|
|
656
|
-
error_data: errorMessage,
|
|
657
|
-
message: "Failed to create follow-up execution",
|
|
658
|
-
});
|
|
659
|
-
}
|
|
660
|
-
});
|
|
661
|
-
/**
|
|
662
|
-
* POST /api/executions/:executionId/skip-all-permissions
|
|
663
|
-
*
|
|
664
|
-
* Stop current execution and restart with skip-permissions enabled
|
|
665
|
-
*
|
|
666
|
-
* This is used when the user wants to bypass all remaining permission prompts.
|
|
667
|
-
* It creates a follow-up execution with dangerouslySkipPermissions: true.
|
|
668
|
-
*
|
|
669
|
-
* Request body (optional):
|
|
670
|
-
* - feedback?: string - Optional feedback to include in the follow-up prompt
|
|
671
|
-
*/
|
|
672
|
-
router.post("/executions/:executionId/skip-all-permissions", async (req, res) => {
|
|
673
|
-
try {
|
|
674
|
-
const { executionId } = req.params;
|
|
675
|
-
const { feedback } = req.body;
|
|
676
|
-
// 1. Cancel the current execution
|
|
677
|
-
try {
|
|
678
|
-
await req.project.executionService.cancelExecution(executionId);
|
|
679
|
-
}
|
|
680
|
-
catch (cancelError) {
|
|
681
|
-
// Execution might already be stopped/completed - continue anyway
|
|
682
|
-
console.log(`[skip-all-permissions] Cancel returned error (may be expected): ${cancelError}`);
|
|
683
|
-
}
|
|
684
|
-
// 2. Create follow-up with dangerouslySkipPermissions enabled
|
|
685
|
-
const followUpExecution = await req.project.executionService.createFollowUp(executionId, feedback || "Continue from where you left off.", {
|
|
686
|
-
configOverrides: {
|
|
687
|
-
dangerouslySkipPermissions: true,
|
|
688
|
-
// Also update agentConfig to reflect the change
|
|
689
|
-
agentConfig: {
|
|
690
|
-
dangerouslySkipPermissions: true,
|
|
691
|
-
},
|
|
692
|
-
},
|
|
693
|
-
});
|
|
694
|
-
res.status(201).json({
|
|
695
|
-
success: true,
|
|
696
|
-
data: {
|
|
697
|
-
previousExecutionId: executionId,
|
|
698
|
-
newExecution: followUpExecution,
|
|
699
|
-
},
|
|
700
|
-
message: "Execution restarted with skip-all-permissions enabled. Future permission prompts will be auto-approved.",
|
|
701
|
-
});
|
|
702
|
-
}
|
|
703
|
-
catch (error) {
|
|
704
|
-
console.error("Error in skip-all-permissions:", error);
|
|
705
|
-
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
706
|
-
const statusCode = errorMessage.includes("not found") ? 404 : 500;
|
|
707
|
-
res.status(statusCode).json({
|
|
708
|
-
success: false,
|
|
709
|
-
data: null,
|
|
710
|
-
error_data: errorMessage,
|
|
711
|
-
message: "Failed to restart execution with skip-all-permissions",
|
|
712
|
-
});
|
|
713
|
-
}
|
|
714
|
-
});
|
|
715
|
-
/**
|
|
716
|
-
* POST /api/executions/:executionId/cancel
|
|
717
|
-
*
|
|
718
|
-
* Cancel a running execution
|
|
719
|
-
*/
|
|
720
|
-
router.post("/executions/:executionId/cancel", async (req, res) => {
|
|
721
|
-
try {
|
|
722
|
-
const { executionId } = req.params;
|
|
723
|
-
await req.project.executionService.cancelExecution(executionId);
|
|
724
|
-
res.json({
|
|
725
|
-
success: true,
|
|
726
|
-
data: { executionId },
|
|
727
|
-
message: "Execution cancelled successfully",
|
|
728
|
-
});
|
|
729
|
-
}
|
|
730
|
-
catch (error) {
|
|
731
|
-
console.error("Error cancelling execution:", error);
|
|
732
|
-
// Handle specific error cases
|
|
733
|
-
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
734
|
-
const statusCode = errorMessage.includes("not found") ? 404 : 500;
|
|
735
|
-
res.status(statusCode).json({
|
|
736
|
-
success: false,
|
|
737
|
-
data: null,
|
|
738
|
-
error_data: errorMessage,
|
|
739
|
-
message: "Failed to cancel execution",
|
|
740
|
-
});
|
|
741
|
-
}
|
|
742
|
-
});
|
|
743
|
-
/**
|
|
744
|
-
* POST /api/executions/:executionId/permission/:requestId
|
|
745
|
-
*
|
|
746
|
-
* Respond to a permission request for an interactive execution
|
|
747
|
-
*
|
|
748
|
-
* Request body:
|
|
749
|
-
* - optionId: string (required) - The selected option ID (e.g., 'allow_once', 'reject_always')
|
|
750
|
-
*/
|
|
751
|
-
router.post("/executions/:executionId/permission/:requestId", (req, res) => {
|
|
752
|
-
try {
|
|
753
|
-
const { executionId, requestId } = req.params;
|
|
754
|
-
const { optionId } = req.body;
|
|
755
|
-
// Validate required fields
|
|
756
|
-
if (!optionId || typeof optionId !== "string") {
|
|
757
|
-
res.status(400).json({
|
|
758
|
-
success: false,
|
|
759
|
-
data: null,
|
|
760
|
-
message: "optionId is required and must be a string",
|
|
761
|
-
});
|
|
762
|
-
return;
|
|
763
|
-
}
|
|
764
|
-
// Attempt to respond to the permission
|
|
765
|
-
const success = req.project.executionService.respondToPermission(executionId, requestId, optionId);
|
|
766
|
-
if (!success) {
|
|
767
|
-
res.status(404).json({
|
|
768
|
-
success: false,
|
|
769
|
-
data: null,
|
|
770
|
-
message: `Permission request ${requestId} not found or already resolved`,
|
|
771
|
-
});
|
|
772
|
-
return;
|
|
773
|
-
}
|
|
774
|
-
res.json({
|
|
775
|
-
success: true,
|
|
776
|
-
data: { executionId, requestId, optionId },
|
|
777
|
-
message: "Permission response sent successfully",
|
|
778
|
-
});
|
|
779
|
-
}
|
|
780
|
-
catch (error) {
|
|
781
|
-
console.error("Error responding to permission:", error);
|
|
782
|
-
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
783
|
-
const statusCode = errorMessage.includes("not found") ||
|
|
784
|
-
errorMessage.includes("not active")
|
|
785
|
-
? 404
|
|
786
|
-
: 500;
|
|
787
|
-
res.status(statusCode).json({
|
|
788
|
-
success: false,
|
|
789
|
-
data: null,
|
|
790
|
-
error_data: errorMessage,
|
|
791
|
-
message: "Failed to respond to permission request",
|
|
792
|
-
});
|
|
793
|
-
}
|
|
794
|
-
});
|
|
795
|
-
/**
|
|
796
|
-
* GET /api/executions/:executionId/permissions
|
|
797
|
-
*
|
|
798
|
-
* Get pending permission requests for an execution
|
|
799
|
-
*/
|
|
800
|
-
router.get("/executions/:executionId/permissions", (req, res) => {
|
|
801
|
-
try {
|
|
802
|
-
const { executionId } = req.params;
|
|
803
|
-
const pendingIds = req.project.executionService.getPendingPermissionIds(executionId);
|
|
804
|
-
const hasPending = req.project.executionService.hasPendingPermissions(executionId);
|
|
805
|
-
res.json({
|
|
806
|
-
success: true,
|
|
807
|
-
data: {
|
|
808
|
-
executionId,
|
|
809
|
-
hasPending,
|
|
810
|
-
pendingRequestIds: pendingIds,
|
|
811
|
-
},
|
|
812
|
-
});
|
|
813
|
-
}
|
|
814
|
-
catch (error) {
|
|
815
|
-
console.error("Error getting pending permissions:", error);
|
|
816
|
-
res.status(500).json({
|
|
817
|
-
success: false,
|
|
818
|
-
data: null,
|
|
819
|
-
error_data: error instanceof Error ? error.message : String(error),
|
|
820
|
-
message: "Failed to get pending permissions",
|
|
821
|
-
});
|
|
822
|
-
}
|
|
823
|
-
});
|
|
824
|
-
/**
|
|
825
|
-
* POST /api/executions/:executionId/mode
|
|
826
|
-
*
|
|
827
|
-
* Set the session mode for an active execution
|
|
828
|
-
*
|
|
829
|
-
* Request body:
|
|
830
|
-
* - mode: string (required) - The mode to set (e.g., "code", "plan", "architect")
|
|
831
|
-
*/
|
|
832
|
-
router.post("/executions/:executionId/mode", (req, res) => {
|
|
833
|
-
try {
|
|
834
|
-
const { executionId } = req.params;
|
|
835
|
-
const { mode } = req.body;
|
|
836
|
-
// Validate required fields
|
|
837
|
-
if (!mode || typeof mode !== "string") {
|
|
838
|
-
res.status(400).json({
|
|
839
|
-
success: false,
|
|
840
|
-
data: null,
|
|
841
|
-
message: "mode is required and must be a string",
|
|
842
|
-
});
|
|
843
|
-
return;
|
|
844
|
-
}
|
|
845
|
-
// Attempt to set the mode
|
|
846
|
-
const success = req.project.executionService.setMode(executionId, mode);
|
|
847
|
-
if (!success) {
|
|
848
|
-
res.status(404).json({
|
|
849
|
-
success: false,
|
|
850
|
-
data: null,
|
|
851
|
-
message: `Failed to set mode for execution ${executionId}`,
|
|
852
|
-
});
|
|
853
|
-
return;
|
|
854
|
-
}
|
|
855
|
-
res.json({
|
|
856
|
-
success: true,
|
|
857
|
-
data: { executionId, mode },
|
|
858
|
-
message: `Mode set to "${mode}" successfully`,
|
|
859
|
-
});
|
|
860
|
-
}
|
|
861
|
-
catch (error) {
|
|
862
|
-
console.error("Error setting execution mode:", error);
|
|
863
|
-
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
864
|
-
const statusCode = errorMessage.includes("not found") ||
|
|
865
|
-
errorMessage.includes("not active")
|
|
866
|
-
? 404
|
|
867
|
-
: 500;
|
|
868
|
-
res.status(statusCode).json({
|
|
869
|
-
success: false,
|
|
870
|
-
data: null,
|
|
871
|
-
error_data: errorMessage,
|
|
872
|
-
message: "Failed to set execution mode",
|
|
873
|
-
});
|
|
874
|
-
}
|
|
875
|
-
});
|
|
876
|
-
/**
|
|
877
|
-
* POST /api/executions/:executionId/interrupt
|
|
878
|
-
*
|
|
879
|
-
* Interrupt an active execution
|
|
880
|
-
*
|
|
881
|
-
* Cancels the agent's current work without providing new instructions.
|
|
882
|
-
* The session remains valid and can receive new prompts via follow-up.
|
|
883
|
-
*
|
|
884
|
-
* Request body (optional):
|
|
885
|
-
* - prompt?: string - If provided, cancel current work and continue with this prompt
|
|
886
|
-
*/
|
|
887
|
-
router.post("/executions/:executionId/interrupt", async (req, res) => {
|
|
888
|
-
try {
|
|
889
|
-
const { executionId } = req.params;
|
|
890
|
-
const { prompt } = req.body;
|
|
891
|
-
if (prompt && typeof prompt === "string" && prompt.trim()) {
|
|
892
|
-
// Interrupt and continue with new prompt
|
|
893
|
-
await req.project.executionService.interruptWithPrompt(executionId, prompt);
|
|
894
|
-
res.json({
|
|
895
|
-
success: true,
|
|
896
|
-
data: { executionId, interrupted: true, redirected: true },
|
|
897
|
-
message: "Execution interrupted and redirected",
|
|
898
|
-
});
|
|
899
|
-
}
|
|
900
|
-
else {
|
|
901
|
-
// Simple cancel
|
|
902
|
-
const success = await req.project.executionService.interruptExecution(executionId);
|
|
903
|
-
if (!success) {
|
|
904
|
-
res.status(404).json({
|
|
905
|
-
success: false,
|
|
906
|
-
data: null,
|
|
907
|
-
message: `Failed to interrupt execution ${executionId}`,
|
|
908
|
-
});
|
|
909
|
-
return;
|
|
910
|
-
}
|
|
911
|
-
res.json({
|
|
912
|
-
success: true,
|
|
913
|
-
data: { executionId, interrupted: true },
|
|
914
|
-
message: "Execution interrupted",
|
|
915
|
-
});
|
|
916
|
-
}
|
|
917
|
-
}
|
|
918
|
-
catch (error) {
|
|
919
|
-
console.error("Error interrupting execution:", error);
|
|
920
|
-
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
921
|
-
let statusCode = 500;
|
|
922
|
-
if (errorMessage.includes("not found") ||
|
|
923
|
-
errorMessage.includes("not active")) {
|
|
924
|
-
statusCode = 404;
|
|
925
|
-
}
|
|
926
|
-
else if (errorMessage.includes("not an ACP execution") ||
|
|
927
|
-
errorMessage.includes("does not support interruption")) {
|
|
928
|
-
statusCode = 400;
|
|
929
|
-
}
|
|
930
|
-
res.status(statusCode).json({
|
|
931
|
-
success: false,
|
|
932
|
-
data: null,
|
|
933
|
-
error_data: errorMessage,
|
|
934
|
-
message: "Failed to interrupt execution",
|
|
935
|
-
});
|
|
936
|
-
}
|
|
937
|
-
});
|
|
938
|
-
/**
|
|
939
|
-
* POST /api/executions/:executionId/fork
|
|
940
|
-
*
|
|
941
|
-
* Fork an active execution into a new independent execution
|
|
942
|
-
*
|
|
943
|
-
* Creates a new execution that inherits the conversation history from the parent
|
|
944
|
-
* session. The forked execution runs independently but preserves context.
|
|
945
|
-
*
|
|
946
|
-
* This is useful for:
|
|
947
|
-
* - Exploring alternative approaches without losing progress
|
|
948
|
-
* - Creating checkpoint branches for experimentation
|
|
949
|
-
* - Parallel exploration of different solutions
|
|
950
|
-
*
|
|
951
|
-
* Note: This relies on the experimental session/fork ACP capability
|
|
952
|
-
*/
|
|
953
|
-
router.post("/executions/:executionId/fork", async (req, res) => {
|
|
954
|
-
try {
|
|
955
|
-
const { executionId } = req.params;
|
|
956
|
-
const forkedExecution = await req.project.executionService.forkExecution(executionId);
|
|
957
|
-
res.status(201).json({
|
|
958
|
-
success: true,
|
|
959
|
-
data: forkedExecution,
|
|
960
|
-
message: "Execution forked successfully",
|
|
961
|
-
});
|
|
962
|
-
}
|
|
963
|
-
catch (error) {
|
|
964
|
-
console.error("Error forking execution:", error);
|
|
965
|
-
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
966
|
-
let statusCode = 500;
|
|
967
|
-
if (errorMessage.includes("not found") ||
|
|
968
|
-
errorMessage.includes("not active")) {
|
|
969
|
-
statusCode = 404;
|
|
970
|
-
}
|
|
971
|
-
else if (errorMessage.includes("not an ACP execution") ||
|
|
972
|
-
errorMessage.includes("does not support forking")) {
|
|
973
|
-
statusCode = 400;
|
|
974
|
-
}
|
|
975
|
-
res.status(statusCode).json({
|
|
976
|
-
success: false,
|
|
977
|
-
data: null,
|
|
978
|
-
error_data: errorMessage,
|
|
979
|
-
message: "Failed to fork execution",
|
|
980
|
-
});
|
|
981
|
-
}
|
|
982
|
-
});
|
|
983
|
-
/**
|
|
984
|
-
* DELETE /api/executions/:executionId
|
|
985
|
-
*
|
|
986
|
-
* Delete an execution and its entire chain (or cancel if ?cancel=true)
|
|
987
|
-
*
|
|
988
|
-
* Query parameters:
|
|
989
|
-
* - cancel: if "true", cancel the execution instead of deleting it
|
|
990
|
-
* - deleteBranch: if "true", also delete the execution's branch
|
|
991
|
-
* - deleteWorktree: if "true", also delete the execution's worktree
|
|
992
|
-
*/
|
|
993
|
-
router.delete("/executions/:executionId", async (req, res) => {
|
|
994
|
-
try {
|
|
995
|
-
const { executionId } = req.params;
|
|
996
|
-
const { cancel, deleteBranch, deleteWorktree } = req.query;
|
|
997
|
-
// If cancel query param is true, cancel the execution
|
|
998
|
-
if (cancel === "true") {
|
|
999
|
-
await req.project.executionService.cancelExecution(executionId);
|
|
1000
|
-
res.json({
|
|
1001
|
-
success: true,
|
|
1002
|
-
data: { executionId },
|
|
1003
|
-
message: "Execution cancelled successfully",
|
|
1004
|
-
});
|
|
1005
|
-
return;
|
|
1006
|
-
}
|
|
1007
|
-
// Otherwise, delete the execution and its chain
|
|
1008
|
-
await req.project.executionService.deleteExecution(executionId, deleteBranch === "true", deleteWorktree === "true");
|
|
1009
|
-
res.json({
|
|
1010
|
-
success: true,
|
|
1011
|
-
data: { executionId },
|
|
1012
|
-
message: "Execution deleted successfully",
|
|
1013
|
-
});
|
|
1014
|
-
}
|
|
1015
|
-
catch (error) {
|
|
1016
|
-
console.error("Error deleting/cancelling execution:", error);
|
|
1017
|
-
// Handle specific error cases
|
|
1018
|
-
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
1019
|
-
const statusCode = errorMessage.includes("not found") ? 404 : 500;
|
|
1020
|
-
res.status(statusCode).json({
|
|
1021
|
-
success: false,
|
|
1022
|
-
data: null,
|
|
1023
|
-
error_data: errorMessage,
|
|
1024
|
-
message: "Failed to delete/cancel execution",
|
|
1025
|
-
});
|
|
1026
|
-
}
|
|
1027
|
-
});
|
|
1028
|
-
/**
|
|
1029
|
-
* GET /api/executions/:executionId/worktree
|
|
1030
|
-
*
|
|
1031
|
-
* Check if worktree exists for an execution
|
|
1032
|
-
*/
|
|
1033
|
-
router.get("/executions/:executionId/worktree", async (req, res) => {
|
|
1034
|
-
try {
|
|
1035
|
-
const { executionId } = req.params;
|
|
1036
|
-
const exists = await req.project.executionService.worktreeExists(executionId);
|
|
1037
|
-
res.json({
|
|
1038
|
-
success: true,
|
|
1039
|
-
data: { exists },
|
|
1040
|
-
});
|
|
1041
|
-
}
|
|
1042
|
-
catch (error) {
|
|
1043
|
-
console.error("Error checking worktree:", error);
|
|
1044
|
-
res.status(500).json({
|
|
1045
|
-
success: false,
|
|
1046
|
-
data: null,
|
|
1047
|
-
error_data: error instanceof Error ? error.message : String(error),
|
|
1048
|
-
message: "Failed to check worktree status",
|
|
1049
|
-
});
|
|
1050
|
-
}
|
|
1051
|
-
});
|
|
1052
|
-
/**
|
|
1053
|
-
* DELETE /api/executions/:executionId/worktree
|
|
1054
|
-
*
|
|
1055
|
-
* Delete the worktree for an execution
|
|
1056
|
-
*
|
|
1057
|
-
* Query parameters:
|
|
1058
|
-
* - deleteBranch: if "true", also delete the execution's branch
|
|
1059
|
-
*/
|
|
1060
|
-
router.delete("/executions/:executionId/worktree", async (req, res) => {
|
|
1061
|
-
try {
|
|
1062
|
-
const { executionId } = req.params;
|
|
1063
|
-
const { deleteBranch } = req.query;
|
|
1064
|
-
await req.project.executionService.deleteWorktree(executionId, deleteBranch === "true");
|
|
1065
|
-
res.json({
|
|
1066
|
-
success: true,
|
|
1067
|
-
data: { executionId },
|
|
1068
|
-
message: "Worktree deleted successfully",
|
|
1069
|
-
});
|
|
1070
|
-
}
|
|
1071
|
-
catch (error) {
|
|
1072
|
-
console.error("Error deleting worktree:", error);
|
|
1073
|
-
// Handle specific error cases
|
|
1074
|
-
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
1075
|
-
let statusCode = 500;
|
|
1076
|
-
if (errorMessage.includes("not found")) {
|
|
1077
|
-
statusCode = 404;
|
|
1078
|
-
}
|
|
1079
|
-
else if (errorMessage.includes("has no worktree") ||
|
|
1080
|
-
errorMessage.includes("Cannot delete worktree")) {
|
|
1081
|
-
statusCode = 400;
|
|
1082
|
-
}
|
|
1083
|
-
res.status(statusCode).json({
|
|
1084
|
-
success: false,
|
|
1085
|
-
data: null,
|
|
1086
|
-
error_data: errorMessage,
|
|
1087
|
-
message: "Failed to delete worktree",
|
|
1088
|
-
});
|
|
1089
|
-
}
|
|
1090
|
-
});
|
|
1091
|
-
/**
|
|
1092
|
-
* GET /api/executions/:executionId/sync/preview
|
|
1093
|
-
*
|
|
1094
|
-
* Preview sync changes and detect conflicts
|
|
1095
|
-
*
|
|
1096
|
-
* Returns preview of what would happen if sync is performed,
|
|
1097
|
-
* including conflicts, diff, commits, and warnings.
|
|
1098
|
-
*/
|
|
1099
|
-
router.get("/executions/:executionId/sync/preview", async (req, res) => {
|
|
1100
|
-
try {
|
|
1101
|
-
const { executionId } = req.params;
|
|
1102
|
-
// Get worktree sync service
|
|
1103
|
-
const syncService = getWorktreeSyncService(req);
|
|
1104
|
-
// Preview sync
|
|
1105
|
-
const preview = await syncService.previewSync(executionId);
|
|
1106
|
-
res.json({
|
|
1107
|
-
success: true,
|
|
1108
|
-
data: preview,
|
|
1109
|
-
});
|
|
1110
|
-
}
|
|
1111
|
-
catch (error) {
|
|
1112
|
-
console.error(`Failed to preview sync for execution ${req.params.executionId}:`, error);
|
|
1113
|
-
if (error instanceof WorktreeSyncError) {
|
|
1114
|
-
const statusCode = getStatusCodeForSyncError(error);
|
|
1115
|
-
res.status(statusCode).json({
|
|
1116
|
-
success: false,
|
|
1117
|
-
data: null,
|
|
1118
|
-
error: error.message,
|
|
1119
|
-
code: error.code,
|
|
1120
|
-
});
|
|
1121
|
-
}
|
|
1122
|
-
else {
|
|
1123
|
-
res.status(500).json({
|
|
1124
|
-
success: false,
|
|
1125
|
-
data: null,
|
|
1126
|
-
error: "Internal server error",
|
|
1127
|
-
message: error instanceof Error ? error.message : String(error),
|
|
1128
|
-
});
|
|
1129
|
-
}
|
|
1130
|
-
}
|
|
1131
|
-
});
|
|
1132
|
-
/**
|
|
1133
|
-
* POST /api/executions/:executionId/sync/squash
|
|
1134
|
-
*
|
|
1135
|
-
* Perform squash sync operation
|
|
1136
|
-
*
|
|
1137
|
-
* Combines all worktree changes into a single commit on the target branch.
|
|
1138
|
-
* Automatically resolves JSONL conflicts using merge-resolver.
|
|
1139
|
-
*
|
|
1140
|
-
* Request body:
|
|
1141
|
-
* - commitMessage?: string - Optional custom commit message
|
|
1142
|
-
*/
|
|
1143
|
-
router.post("/executions/:executionId/sync/squash", async (req, res) => {
|
|
1144
|
-
try {
|
|
1145
|
-
const { executionId } = req.params;
|
|
1146
|
-
const { commitMessage } = req.body || {};
|
|
1147
|
-
// Get worktree sync service
|
|
1148
|
-
const syncService = getWorktreeSyncService(req);
|
|
1149
|
-
// Check if squashSync method exists
|
|
1150
|
-
if (typeof syncService.squashSync !== "function") {
|
|
1151
|
-
res.status(501).json({
|
|
1152
|
-
success: false,
|
|
1153
|
-
data: null,
|
|
1154
|
-
error: "Squash sync not yet implemented",
|
|
1155
|
-
message: "The squashSync operation is not available yet",
|
|
1156
|
-
});
|
|
1157
|
-
return;
|
|
1158
|
-
}
|
|
1159
|
-
// Perform squash sync
|
|
1160
|
-
const result = await syncService.squashSync(executionId, commitMessage);
|
|
1161
|
-
res.json({
|
|
1162
|
-
success: true,
|
|
1163
|
-
data: result,
|
|
1164
|
-
});
|
|
1165
|
-
}
|
|
1166
|
-
catch (error) {
|
|
1167
|
-
console.error(`Failed to squash sync execution ${req.params.executionId}:`, error);
|
|
1168
|
-
if (error instanceof WorktreeSyncError) {
|
|
1169
|
-
const statusCode = getStatusCodeForSyncError(error);
|
|
1170
|
-
res.status(statusCode).json({
|
|
1171
|
-
success: false,
|
|
1172
|
-
data: null,
|
|
1173
|
-
error: error.message,
|
|
1174
|
-
code: error.code,
|
|
1175
|
-
});
|
|
1176
|
-
}
|
|
1177
|
-
else {
|
|
1178
|
-
res.status(500).json({
|
|
1179
|
-
success: false,
|
|
1180
|
-
data: null,
|
|
1181
|
-
error: "Internal server error",
|
|
1182
|
-
message: error instanceof Error ? error.message : String(error),
|
|
1183
|
-
});
|
|
1184
|
-
}
|
|
1185
|
-
}
|
|
1186
|
-
});
|
|
1187
|
-
/**
|
|
1188
|
-
* POST /api/executions/:executionId/sync/stage
|
|
1189
|
-
*
|
|
1190
|
-
* Perform stage sync operation
|
|
1191
|
-
*
|
|
1192
|
-
* Applies committed worktree changes to the working directory without committing.
|
|
1193
|
-
* Changes are left staged, ready for the user to commit manually.
|
|
1194
|
-
*
|
|
1195
|
-
* Request body:
|
|
1196
|
-
* - includeUncommitted?: boolean - If true, also copy uncommitted files from worktree
|
|
1197
|
-
* - overrideLocalChanges?: boolean - If true, skip merge and overwrite local changes
|
|
1198
|
-
*/
|
|
1199
|
-
router.post("/executions/:executionId/sync/stage", async (req, res) => {
|
|
1200
|
-
try {
|
|
1201
|
-
const { executionId } = req.params;
|
|
1202
|
-
const { includeUncommitted, overrideLocalChanges } = req.body || {};
|
|
1203
|
-
// Get worktree sync service
|
|
1204
|
-
const syncService = getWorktreeSyncService(req);
|
|
1205
|
-
// Perform stage sync with options
|
|
1206
|
-
const result = await syncService.stageSync(executionId, {
|
|
1207
|
-
includeUncommitted: includeUncommitted === true,
|
|
1208
|
-
overrideLocalChanges: overrideLocalChanges === true,
|
|
1209
|
-
});
|
|
1210
|
-
res.json({
|
|
1211
|
-
success: true,
|
|
1212
|
-
data: result,
|
|
1213
|
-
});
|
|
1214
|
-
}
|
|
1215
|
-
catch (error) {
|
|
1216
|
-
console.error(`Failed to stage sync execution ${req.params.executionId}:`, error);
|
|
1217
|
-
if (error instanceof WorktreeSyncError) {
|
|
1218
|
-
const statusCode = getStatusCodeForSyncError(error);
|
|
1219
|
-
res.status(statusCode).json({
|
|
1220
|
-
success: false,
|
|
1221
|
-
data: null,
|
|
1222
|
-
error: error.message,
|
|
1223
|
-
code: error.code,
|
|
1224
|
-
});
|
|
1225
|
-
}
|
|
1226
|
-
else {
|
|
1227
|
-
res.status(500).json({
|
|
1228
|
-
success: false,
|
|
1229
|
-
data: null,
|
|
1230
|
-
error: "Internal server error",
|
|
1231
|
-
message: error instanceof Error ? error.message : String(error),
|
|
1232
|
-
});
|
|
1233
|
-
}
|
|
1234
|
-
}
|
|
1235
|
-
});
|
|
1236
|
-
/**
|
|
1237
|
-
* POST /api/executions/:executionId/sync/preserve
|
|
1238
|
-
*
|
|
1239
|
-
* Perform preserve sync operation
|
|
1240
|
-
*
|
|
1241
|
-
* Merges all commits from worktree branch to target branch, preserving commit history.
|
|
1242
|
-
* Only includes committed changes - uncommitted changes are excluded.
|
|
1243
|
-
*/
|
|
1244
|
-
router.post("/executions/:executionId/sync/preserve", async (req, res) => {
|
|
1245
|
-
try {
|
|
1246
|
-
const { executionId } = req.params;
|
|
1247
|
-
// Get worktree sync service
|
|
1248
|
-
const syncService = getWorktreeSyncService(req);
|
|
1249
|
-
// Perform preserve sync
|
|
1250
|
-
const result = await syncService.preserveSync(executionId);
|
|
1251
|
-
res.json({
|
|
1252
|
-
success: true,
|
|
1253
|
-
data: result,
|
|
1254
|
-
});
|
|
1255
|
-
}
|
|
1256
|
-
catch (error) {
|
|
1257
|
-
console.error(`Failed to preserve sync execution ${req.params.executionId}:`, error);
|
|
1258
|
-
if (error instanceof WorktreeSyncError) {
|
|
1259
|
-
const statusCode = getStatusCodeForSyncError(error);
|
|
1260
|
-
res.status(statusCode).json({
|
|
1261
|
-
success: false,
|
|
1262
|
-
data: null,
|
|
1263
|
-
error: error.message,
|
|
1264
|
-
code: error.code,
|
|
1265
|
-
});
|
|
1266
|
-
}
|
|
1267
|
-
else {
|
|
1268
|
-
res.status(500).json({
|
|
1269
|
-
success: false,
|
|
1270
|
-
data: null,
|
|
1271
|
-
error: "Internal server error",
|
|
1272
|
-
message: error instanceof Error ? error.message : String(error),
|
|
1273
|
-
});
|
|
1274
|
-
}
|
|
1275
|
-
}
|
|
1276
|
-
});
|
|
1277
|
-
/**
|
|
1278
|
-
* POST /api/executions/:executionId/commit
|
|
1279
|
-
*
|
|
1280
|
-
* Commit uncommitted changes for an execution
|
|
1281
|
-
*
|
|
1282
|
-
* Commits changes to the appropriate branch based on execution mode:
|
|
1283
|
-
* - Local mode: Commits to target_branch (current branch)
|
|
1284
|
-
* - Worktree mode: Commits to branch_name (temp branch) in worktree
|
|
1285
|
-
*
|
|
1286
|
-
* Request body:
|
|
1287
|
-
* - message: string (required) - Commit message
|
|
1288
|
-
*/
|
|
1289
|
-
router.post("/executions/:executionId/commit", async (req, res) => {
|
|
1290
|
-
try {
|
|
1291
|
-
const { executionId } = req.params;
|
|
1292
|
-
const { message } = req.body;
|
|
1293
|
-
// Validate commit message
|
|
1294
|
-
if (!message || typeof message !== "string" || !message.trim()) {
|
|
1295
|
-
res.status(400).json({
|
|
1296
|
-
success: false,
|
|
1297
|
-
data: null,
|
|
1298
|
-
message: "Commit message is required and must be non-empty",
|
|
1299
|
-
});
|
|
1300
|
-
return;
|
|
1301
|
-
}
|
|
1302
|
-
const db = req.project.db;
|
|
1303
|
-
const repoPath = req.project.path;
|
|
1304
|
-
// Load execution from database
|
|
1305
|
-
const execution = db
|
|
1306
|
-
.prepare("SELECT * FROM executions WHERE id = ?")
|
|
1307
|
-
.get(executionId);
|
|
1308
|
-
if (!execution) {
|
|
1309
|
-
res.status(404).json({
|
|
1310
|
-
success: false,
|
|
1311
|
-
data: null,
|
|
1312
|
-
message: "Execution not found",
|
|
1313
|
-
});
|
|
1314
|
-
return;
|
|
1315
|
-
}
|
|
1316
|
-
// Determine working directory and target branch
|
|
1317
|
-
// IMPORTANT: If worktree_path exists, always use it - this is more reliable than the mode field
|
|
1318
|
-
// which may not be set correctly on follow-up executions
|
|
1319
|
-
const hasWorktree = !!execution.worktree_path;
|
|
1320
|
-
const workingDir = hasWorktree ? execution.worktree_path : repoPath;
|
|
1321
|
-
const targetBranch = hasWorktree
|
|
1322
|
-
? execution.branch_name
|
|
1323
|
-
: execution.target_branch || "main";
|
|
1324
|
-
console.log(`[Commit] Execution ${executionId}: hasWorktree=${hasWorktree}, workingDir=${workingDir}, targetBranch=${targetBranch}, mode=${execution.mode}`);
|
|
1325
|
-
// Get current uncommitted files from working directory instead of stale database field
|
|
1326
|
-
// This ensures we're working with the current state
|
|
1327
|
-
let filesChanged = [];
|
|
1328
|
-
try {
|
|
1329
|
-
// Get modified tracked files
|
|
1330
|
-
const modifiedOutput = execSync("git diff --name-only", {
|
|
1331
|
-
cwd: workingDir,
|
|
1332
|
-
encoding: "utf-8",
|
|
1333
|
-
stdio: "pipe",
|
|
1334
|
-
});
|
|
1335
|
-
// Get staged files
|
|
1336
|
-
const stagedOutput = execSync("git diff --cached --name-only", {
|
|
1337
|
-
cwd: workingDir,
|
|
1338
|
-
encoding: "utf-8",
|
|
1339
|
-
stdio: "pipe",
|
|
1340
|
-
});
|
|
1341
|
-
// Get untracked files
|
|
1342
|
-
const untrackedOutput = execSync("git ls-files --others --exclude-standard", {
|
|
1343
|
-
cwd: workingDir,
|
|
1344
|
-
encoding: "utf-8",
|
|
1345
|
-
stdio: "pipe",
|
|
1346
|
-
});
|
|
1347
|
-
console.log(`[Commit] Git status in ${workingDir}:`, {
|
|
1348
|
-
modified: modifiedOutput.trim().split("\n").filter(Boolean),
|
|
1349
|
-
staged: stagedOutput.trim().split("\n").filter(Boolean),
|
|
1350
|
-
untracked: untrackedOutput.trim().split("\n").filter(Boolean),
|
|
1351
|
-
});
|
|
1352
|
-
// Combine all files, removing duplicates
|
|
1353
|
-
const allFiles = new Set();
|
|
1354
|
-
for (const output of [
|
|
1355
|
-
modifiedOutput,
|
|
1356
|
-
stagedOutput,
|
|
1357
|
-
untrackedOutput,
|
|
1358
|
-
]) {
|
|
1359
|
-
output
|
|
1360
|
-
.split("\n")
|
|
1361
|
-
.filter((line) => line.trim())
|
|
1362
|
-
.forEach((file) => allFiles.add(file));
|
|
1363
|
-
}
|
|
1364
|
-
filesChanged = Array.from(allFiles);
|
|
1365
|
-
}
|
|
1366
|
-
catch (error) {
|
|
1367
|
-
console.error("Failed to get uncommitted files:", error);
|
|
1368
|
-
}
|
|
1369
|
-
// Validate has uncommitted changes
|
|
1370
|
-
if (filesChanged.length === 0) {
|
|
1371
|
-
res.status(400).json({
|
|
1372
|
-
success: false,
|
|
1373
|
-
data: null,
|
|
1374
|
-
message: "No files to commit",
|
|
1375
|
-
});
|
|
1376
|
-
return;
|
|
1377
|
-
}
|
|
1378
|
-
// Execute git operations
|
|
1379
|
-
try {
|
|
1380
|
-
// Add all changes (more reliable than adding specific files)
|
|
1381
|
-
// This catches any files that might have been missed in detection
|
|
1382
|
-
execSync("git add -A", {
|
|
1383
|
-
cwd: workingDir,
|
|
1384
|
-
encoding: "utf-8",
|
|
1385
|
-
stdio: "pipe",
|
|
1386
|
-
});
|
|
1387
|
-
console.log(`[Commit] Staged all changes with git add -A`);
|
|
1388
|
-
// Verify something is staged
|
|
1389
|
-
const stagedAfterAdd = execSync("git diff --cached --name-only", {
|
|
1390
|
-
cwd: workingDir,
|
|
1391
|
-
encoding: "utf-8",
|
|
1392
|
-
stdio: "pipe",
|
|
1393
|
-
}).trim();
|
|
1394
|
-
if (!stagedAfterAdd) {
|
|
1395
|
-
console.log(`[Commit] No files staged after git add -A`);
|
|
1396
|
-
res.status(400).json({
|
|
1397
|
-
success: false,
|
|
1398
|
-
data: null,
|
|
1399
|
-
message: "No files staged for commit after git add",
|
|
1400
|
-
});
|
|
1401
|
-
return;
|
|
1402
|
-
}
|
|
1403
|
-
console.log(`[Commit] Files staged: ${stagedAfterAdd.split("\n").filter(Boolean).join(", ")}`);
|
|
1404
|
-
// Commit using -F - to read message from stdin (safer than shell escaping)
|
|
1405
|
-
const { spawnSync } = await import("child_process");
|
|
1406
|
-
const commitResult = spawnSync("git", ["commit", "--no-verify", "-m", message], {
|
|
1407
|
-
cwd: workingDir,
|
|
1408
|
-
encoding: "utf-8",
|
|
1409
|
-
stdio: "pipe",
|
|
1410
|
-
});
|
|
1411
|
-
if (commitResult.status !== 0) {
|
|
1412
|
-
const errorOutput = commitResult.stderr || commitResult.stdout || "Unknown error";
|
|
1413
|
-
console.error(`[Commit] git commit failed:`, errorOutput);
|
|
1414
|
-
throw new Error(`git commit failed: ${errorOutput}`);
|
|
1415
|
-
}
|
|
1416
|
-
console.log(`[Commit] git commit output:`, commitResult.stdout);
|
|
1417
|
-
// Get commit SHA
|
|
1418
|
-
const commitSha = execSync("git rev-parse HEAD", {
|
|
1419
|
-
cwd: workingDir,
|
|
1420
|
-
encoding: "utf-8",
|
|
1421
|
-
stdio: "pipe",
|
|
1422
|
-
}).trim();
|
|
1423
|
-
console.log(`[Commit] Successfully committed ${filesChanged.length} files: ${commitSha}`);
|
|
1424
|
-
// Note: We do NOT update execution.after_commit here
|
|
1425
|
-
// That field represents the state at execution completion time
|
|
1426
|
-
// Manual commits after execution are tracked separately
|
|
1427
|
-
res.json({
|
|
1428
|
-
success: true,
|
|
1429
|
-
data: {
|
|
1430
|
-
commitSha,
|
|
1431
|
-
filesCommitted: filesChanged.length,
|
|
1432
|
-
branch: targetBranch,
|
|
1433
|
-
},
|
|
1434
|
-
message: `Successfully committed ${filesChanged.length} file${filesChanged.length !== 1 ? "s" : ""}`,
|
|
1435
|
-
});
|
|
1436
|
-
}
|
|
1437
|
-
catch (gitError) {
|
|
1438
|
-
console.error("Git operation failed:", gitError);
|
|
1439
|
-
const errorMessage = gitError instanceof Error ? gitError.message : String(gitError);
|
|
1440
|
-
res.status(500).json({
|
|
1441
|
-
success: false,
|
|
1442
|
-
data: null,
|
|
1443
|
-
message: "Git commit failed",
|
|
1444
|
-
error: errorMessage,
|
|
1445
|
-
});
|
|
1446
|
-
}
|
|
1447
|
-
}
|
|
1448
|
-
catch (error) {
|
|
1449
|
-
console.error(`Failed to commit for execution ${req.params.executionId}:`, error);
|
|
1450
|
-
res.status(500).json({
|
|
1451
|
-
success: false,
|
|
1452
|
-
data: null,
|
|
1453
|
-
error: "Internal server error",
|
|
1454
|
-
message: error instanceof Error ? error.message : String(error),
|
|
1455
|
-
});
|
|
1456
|
-
}
|
|
1457
|
-
});
|
|
1458
|
-
// ============================================================================
|
|
1459
|
-
// Persistent Session Endpoints
|
|
1460
|
-
// ============================================================================
|
|
1461
|
-
/**
|
|
1462
|
-
* POST /api/executions/:executionId/prompt
|
|
1463
|
-
*
|
|
1464
|
-
* Send a prompt to a persistent session
|
|
1465
|
-
*
|
|
1466
|
-
* Returns immediately - output streams via WebSocket subscription.
|
|
1467
|
-
* Returns error if not a persistent session or session not in waiting/paused state.
|
|
1468
|
-
*
|
|
1469
|
-
* Request body:
|
|
1470
|
-
* - prompt: string (required) - The prompt to send
|
|
1471
|
-
*/
|
|
1472
|
-
router.post("/executions/:executionId/prompt", async (req, res) => {
|
|
1473
|
-
try {
|
|
1474
|
-
const { executionId } = req.params;
|
|
1475
|
-
const { prompt } = req.body;
|
|
1476
|
-
// Validate prompt
|
|
1477
|
-
if (!prompt || typeof prompt !== "string" || !prompt.trim()) {
|
|
1478
|
-
res.status(400).json({
|
|
1479
|
-
success: false,
|
|
1480
|
-
error: "prompt is required and must be a non-empty string",
|
|
1481
|
-
});
|
|
1482
|
-
return;
|
|
1483
|
-
}
|
|
1484
|
-
await req.project.executionService.sendPrompt(executionId, prompt);
|
|
1485
|
-
res.json({
|
|
1486
|
-
success: true,
|
|
1487
|
-
message: "Prompt sent to session",
|
|
1488
|
-
});
|
|
1489
|
-
}
|
|
1490
|
-
catch (error) {
|
|
1491
|
-
console.error("Error sending prompt to session:", error);
|
|
1492
|
-
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
1493
|
-
let statusCode = 500;
|
|
1494
|
-
if (errorMessage.includes("not found") ||
|
|
1495
|
-
errorMessage.includes("No active executor")) {
|
|
1496
|
-
statusCode = 404;
|
|
1497
|
-
}
|
|
1498
|
-
else if (errorMessage.includes("does not support") ||
|
|
1499
|
-
errorMessage.includes("Cannot send prompt")) {
|
|
1500
|
-
statusCode = 400;
|
|
1501
|
-
}
|
|
1502
|
-
res.status(statusCode).json({
|
|
1503
|
-
success: false,
|
|
1504
|
-
error: errorMessage,
|
|
1505
|
-
});
|
|
1506
|
-
}
|
|
1507
|
-
});
|
|
1508
|
-
/**
|
|
1509
|
-
* POST /api/executions/:executionId/end-session
|
|
1510
|
-
*
|
|
1511
|
-
* End a persistent session explicitly
|
|
1512
|
-
*
|
|
1513
|
-
* Returns error if not a persistent session.
|
|
1514
|
-
*/
|
|
1515
|
-
router.post("/executions/:executionId/end-session", async (req, res) => {
|
|
1516
|
-
try {
|
|
1517
|
-
const { executionId } = req.params;
|
|
1518
|
-
await req.project.executionService.endSession(executionId);
|
|
1519
|
-
res.json({
|
|
1520
|
-
success: true,
|
|
1521
|
-
message: "Session ended",
|
|
1522
|
-
});
|
|
1523
|
-
}
|
|
1524
|
-
catch (error) {
|
|
1525
|
-
console.error("Error ending session:", error);
|
|
1526
|
-
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
1527
|
-
let statusCode = 500;
|
|
1528
|
-
if (errorMessage.includes("not found") ||
|
|
1529
|
-
errorMessage.includes("No active executor")) {
|
|
1530
|
-
statusCode = 404;
|
|
1531
|
-
}
|
|
1532
|
-
else if (errorMessage.includes("does not support")) {
|
|
1533
|
-
statusCode = 400;
|
|
1534
|
-
}
|
|
1535
|
-
res.status(statusCode).json({
|
|
1536
|
-
success: false,
|
|
1537
|
-
error: errorMessage,
|
|
1538
|
-
});
|
|
1539
|
-
}
|
|
1540
|
-
});
|
|
1541
|
-
/**
|
|
1542
|
-
* GET /api/executions/:executionId/session-state
|
|
1543
|
-
*
|
|
1544
|
-
* Get session state for an execution
|
|
1545
|
-
*
|
|
1546
|
-
* Works for both discrete and persistent sessions.
|
|
1547
|
-
* Returns mode, state, promptCount, and idleTimeMs.
|
|
1548
|
-
*/
|
|
1549
|
-
router.get("/executions/:executionId/session-state", (req, res) => {
|
|
1550
|
-
try {
|
|
1551
|
-
const { executionId } = req.params;
|
|
1552
|
-
const state = req.project.executionService.getSessionState(executionId);
|
|
1553
|
-
res.json({
|
|
1554
|
-
success: true,
|
|
1555
|
-
data: state,
|
|
1556
|
-
});
|
|
1557
|
-
}
|
|
1558
|
-
catch (error) {
|
|
1559
|
-
console.error("Error getting session state:", error);
|
|
1560
|
-
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
1561
|
-
const statusCode = errorMessage.includes("not found") ? 404 : 500;
|
|
1562
|
-
res.status(statusCode).json({
|
|
1563
|
-
success: false,
|
|
1564
|
-
error: errorMessage,
|
|
1565
|
-
});
|
|
1566
|
-
}
|
|
1567
|
-
});
|
|
1568
|
-
return router;
|
|
1569
|
-
}
|
|
1570
|
-
//# sourceMappingURL=executions.js.map
|