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.
Files changed (857) hide show
  1. package/package.json +9 -9
  2. package/node_modules/@sudocode-ai/cli/README.md +0 -1629
  3. package/node_modules/@sudocode-ai/cli/dist/auth/claude.d.ts +0 -19
  4. package/node_modules/@sudocode-ai/cli/dist/auth/claude.d.ts.map +0 -1
  5. package/node_modules/@sudocode-ai/cli/dist/auth/claude.js +0 -179
  6. package/node_modules/@sudocode-ai/cli/dist/auth/claude.js.map +0 -1
  7. package/node_modules/@sudocode-ai/cli/dist/auth/clear.d.ts +0 -17
  8. package/node_modules/@sudocode-ai/cli/dist/auth/clear.d.ts.map +0 -1
  9. package/node_modules/@sudocode-ai/cli/dist/auth/clear.js +0 -68
  10. package/node_modules/@sudocode-ai/cli/dist/auth/clear.js.map +0 -1
  11. package/node_modules/@sudocode-ai/cli/dist/auth/credentials.d.ts +0 -93
  12. package/node_modules/@sudocode-ai/cli/dist/auth/credentials.d.ts.map +0 -1
  13. package/node_modules/@sudocode-ai/cli/dist/auth/credentials.js +0 -255
  14. package/node_modules/@sudocode-ai/cli/dist/auth/credentials.js.map +0 -1
  15. package/node_modules/@sudocode-ai/cli/dist/auth/index.d.ts +0 -13
  16. package/node_modules/@sudocode-ai/cli/dist/auth/index.d.ts.map +0 -1
  17. package/node_modules/@sudocode-ai/cli/dist/auth/index.js +0 -19
  18. package/node_modules/@sudocode-ai/cli/dist/auth/index.js.map +0 -1
  19. package/node_modules/@sudocode-ai/cli/dist/auth/status.d.ts +0 -17
  20. package/node_modules/@sudocode-ai/cli/dist/auth/status.d.ts.map +0 -1
  21. package/node_modules/@sudocode-ai/cli/dist/auth/status.js +0 -132
  22. package/node_modules/@sudocode-ai/cli/dist/auth/status.js.map +0 -1
  23. package/node_modules/@sudocode-ai/cli/dist/cli/auth-commands.d.ts +0 -34
  24. package/node_modules/@sudocode-ai/cli/dist/cli/auth-commands.d.ts.map +0 -1
  25. package/node_modules/@sudocode-ai/cli/dist/cli/auth-commands.js +0 -28
  26. package/node_modules/@sudocode-ai/cli/dist/cli/auth-commands.js.map +0 -1
  27. package/node_modules/@sudocode-ai/cli/dist/cli/feedback-commands.d.ts +0 -53
  28. package/node_modules/@sudocode-ai/cli/dist/cli/feedback-commands.d.ts.map +0 -1
  29. package/node_modules/@sudocode-ai/cli/dist/cli/feedback-commands.js +0 -339
  30. package/node_modules/@sudocode-ai/cli/dist/cli/feedback-commands.js.map +0 -1
  31. package/node_modules/@sudocode-ai/cli/dist/cli/init-commands.d.ts +0 -20
  32. package/node_modules/@sudocode-ai/cli/dist/cli/init-commands.d.ts.map +0 -1
  33. package/node_modules/@sudocode-ai/cli/dist/cli/init-commands.js +0 -145
  34. package/node_modules/@sudocode-ai/cli/dist/cli/init-commands.js.map +0 -1
  35. package/node_modules/@sudocode-ai/cli/dist/cli/issue-commands.d.ts +0 -46
  36. package/node_modules/@sudocode-ai/cli/dist/cli/issue-commands.d.ts.map +0 -1
  37. package/node_modules/@sudocode-ai/cli/dist/cli/issue-commands.js +0 -353
  38. package/node_modules/@sudocode-ai/cli/dist/cli/issue-commands.js.map +0 -1
  39. package/node_modules/@sudocode-ai/cli/dist/cli/merge-commands.d.ts +0 -42
  40. package/node_modules/@sudocode-ai/cli/dist/cli/merge-commands.d.ts.map +0 -1
  41. package/node_modules/@sudocode-ai/cli/dist/cli/merge-commands.js +0 -680
  42. package/node_modules/@sudocode-ai/cli/dist/cli/merge-commands.js.map +0 -1
  43. package/node_modules/@sudocode-ai/cli/dist/cli/plugin-commands.d.ts +0 -62
  44. package/node_modules/@sudocode-ai/cli/dist/cli/plugin-commands.d.ts.map +0 -1
  45. package/node_modules/@sudocode-ai/cli/dist/cli/plugin-commands.js +0 -595
  46. package/node_modules/@sudocode-ai/cli/dist/cli/plugin-commands.js.map +0 -1
  47. package/node_modules/@sudocode-ai/cli/dist/cli/query-commands.d.ts +0 -18
  48. package/node_modules/@sudocode-ai/cli/dist/cli/query-commands.d.ts.map +0 -1
  49. package/node_modules/@sudocode-ai/cli/dist/cli/query-commands.js +0 -61
  50. package/node_modules/@sudocode-ai/cli/dist/cli/query-commands.js.map +0 -1
  51. package/node_modules/@sudocode-ai/cli/dist/cli/reference-commands.d.ts +0 -22
  52. package/node_modules/@sudocode-ai/cli/dist/cli/reference-commands.d.ts.map +0 -1
  53. package/node_modules/@sudocode-ai/cli/dist/cli/reference-commands.js +0 -136
  54. package/node_modules/@sudocode-ai/cli/dist/cli/reference-commands.js.map +0 -1
  55. package/node_modules/@sudocode-ai/cli/dist/cli/relationship-commands.d.ts +0 -14
  56. package/node_modules/@sudocode-ai/cli/dist/cli/relationship-commands.d.ts.map +0 -1
  57. package/node_modules/@sudocode-ai/cli/dist/cli/relationship-commands.js +0 -83
  58. package/node_modules/@sudocode-ai/cli/dist/cli/relationship-commands.js.map +0 -1
  59. package/node_modules/@sudocode-ai/cli/dist/cli/remote-commands.d.ts +0 -59
  60. package/node_modules/@sudocode-ai/cli/dist/cli/remote-commands.d.ts.map +0 -1
  61. package/node_modules/@sudocode-ai/cli/dist/cli/remote-commands.js +0 -391
  62. package/node_modules/@sudocode-ai/cli/dist/cli/remote-commands.js.map +0 -1
  63. package/node_modules/@sudocode-ai/cli/dist/cli/server-commands.d.ts +0 -17
  64. package/node_modules/@sudocode-ai/cli/dist/cli/server-commands.d.ts.map +0 -1
  65. package/node_modules/@sudocode-ai/cli/dist/cli/server-commands.js +0 -123
  66. package/node_modules/@sudocode-ai/cli/dist/cli/server-commands.js.map +0 -1
  67. package/node_modules/@sudocode-ai/cli/dist/cli/spec-commands.d.ts +0 -38
  68. package/node_modules/@sudocode-ai/cli/dist/cli/spec-commands.d.ts.map +0 -1
  69. package/node_modules/@sudocode-ai/cli/dist/cli/spec-commands.js +0 -326
  70. package/node_modules/@sudocode-ai/cli/dist/cli/spec-commands.js.map +0 -1
  71. package/node_modules/@sudocode-ai/cli/dist/cli/status-commands.d.ts +0 -17
  72. package/node_modules/@sudocode-ai/cli/dist/cli/status-commands.d.ts.map +0 -1
  73. package/node_modules/@sudocode-ai/cli/dist/cli/status-commands.js +0 -131
  74. package/node_modules/@sudocode-ai/cli/dist/cli/status-commands.js.map +0 -1
  75. package/node_modules/@sudocode-ai/cli/dist/cli/sync-commands.d.ts +0 -24
  76. package/node_modules/@sudocode-ai/cli/dist/cli/sync-commands.d.ts.map +0 -1
  77. package/node_modules/@sudocode-ai/cli/dist/cli/sync-commands.js +0 -429
  78. package/node_modules/@sudocode-ai/cli/dist/cli/sync-commands.js.map +0 -1
  79. package/node_modules/@sudocode-ai/cli/dist/cli/update-commands.d.ts +0 -16
  80. package/node_modules/@sudocode-ai/cli/dist/cli/update-commands.d.ts.map +0 -1
  81. package/node_modules/@sudocode-ai/cli/dist/cli/update-commands.js +0 -216
  82. package/node_modules/@sudocode-ai/cli/dist/cli/update-commands.js.map +0 -1
  83. package/node_modules/@sudocode-ai/cli/dist/cli.d.ts +0 -6
  84. package/node_modules/@sudocode-ai/cli/dist/cli.d.ts.map +0 -1
  85. package/node_modules/@sudocode-ai/cli/dist/cli.js +0 -673
  86. package/node_modules/@sudocode-ai/cli/dist/cli.js.map +0 -1
  87. package/node_modules/@sudocode-ai/cli/dist/config.d.ts +0 -50
  88. package/node_modules/@sudocode-ai/cli/dist/config.d.ts.map +0 -1
  89. package/node_modules/@sudocode-ai/cli/dist/config.js +0 -76
  90. package/node_modules/@sudocode-ai/cli/dist/config.js.map +0 -1
  91. package/node_modules/@sudocode-ai/cli/dist/db.d.ts +0 -21
  92. package/node_modules/@sudocode-ai/cli/dist/db.d.ts.map +0 -1
  93. package/node_modules/@sudocode-ai/cli/dist/db.js +0 -55
  94. package/node_modules/@sudocode-ai/cli/dist/db.js.map +0 -1
  95. package/node_modules/@sudocode-ai/cli/dist/export.d.ts +0 -84
  96. package/node_modules/@sudocode-ai/cli/dist/export.d.ts.map +0 -1
  97. package/node_modules/@sudocode-ai/cli/dist/export.js +0 -265
  98. package/node_modules/@sudocode-ai/cli/dist/export.js.map +0 -1
  99. package/node_modules/@sudocode-ai/cli/dist/filename-generator.d.ts +0 -31
  100. package/node_modules/@sudocode-ai/cli/dist/filename-generator.d.ts.map +0 -1
  101. package/node_modules/@sudocode-ai/cli/dist/filename-generator.js +0 -103
  102. package/node_modules/@sudocode-ai/cli/dist/filename-generator.js.map +0 -1
  103. package/node_modules/@sudocode-ai/cli/dist/git-merge.d.ts +0 -88
  104. package/node_modules/@sudocode-ai/cli/dist/git-merge.d.ts.map +0 -1
  105. package/node_modules/@sudocode-ai/cli/dist/git-merge.js +0 -214
  106. package/node_modules/@sudocode-ai/cli/dist/git-merge.js.map +0 -1
  107. package/node_modules/@sudocode-ai/cli/dist/id-generator.d.ts +0 -63
  108. package/node_modules/@sudocode-ai/cli/dist/id-generator.d.ts.map +0 -1
  109. package/node_modules/@sudocode-ai/cli/dist/id-generator.js +0 -196
  110. package/node_modules/@sudocode-ai/cli/dist/id-generator.js.map +0 -1
  111. package/node_modules/@sudocode-ai/cli/dist/import.d.ts +0 -134
  112. package/node_modules/@sudocode-ai/cli/dist/import.d.ts.map +0 -1
  113. package/node_modules/@sudocode-ai/cli/dist/import.js +0 -751
  114. package/node_modules/@sudocode-ai/cli/dist/import.js.map +0 -1
  115. package/node_modules/@sudocode-ai/cli/dist/index.d.ts +0 -17
  116. package/node_modules/@sudocode-ai/cli/dist/index.d.ts.map +0 -1
  117. package/node_modules/@sudocode-ai/cli/dist/index.js +0 -17
  118. package/node_modules/@sudocode-ai/cli/dist/index.js.map +0 -1
  119. package/node_modules/@sudocode-ai/cli/dist/integrations/base-provider.d.ts +0 -108
  120. package/node_modules/@sudocode-ai/cli/dist/integrations/base-provider.d.ts.map +0 -1
  121. package/node_modules/@sudocode-ai/cli/dist/integrations/base-provider.js +0 -80
  122. package/node_modules/@sudocode-ai/cli/dist/integrations/base-provider.js.map +0 -1
  123. package/node_modules/@sudocode-ai/cli/dist/integrations/config-resolver.d.ts +0 -62
  124. package/node_modules/@sudocode-ai/cli/dist/integrations/config-resolver.d.ts.map +0 -1
  125. package/node_modules/@sudocode-ai/cli/dist/integrations/config-resolver.js +0 -69
  126. package/node_modules/@sudocode-ai/cli/dist/integrations/config-resolver.js.map +0 -1
  127. package/node_modules/@sudocode-ai/cli/dist/integrations/config-validator.d.ts +0 -75
  128. package/node_modules/@sudocode-ai/cli/dist/integrations/config-validator.d.ts.map +0 -1
  129. package/node_modules/@sudocode-ai/cli/dist/integrations/config-validator.js +0 -129
  130. package/node_modules/@sudocode-ai/cli/dist/integrations/config-validator.js.map +0 -1
  131. package/node_modules/@sudocode-ai/cli/dist/integrations/index.d.ts +0 -14
  132. package/node_modules/@sudocode-ai/cli/dist/integrations/index.d.ts.map +0 -1
  133. package/node_modules/@sudocode-ai/cli/dist/integrations/index.js +0 -20
  134. package/node_modules/@sudocode-ai/cli/dist/integrations/index.js.map +0 -1
  135. package/node_modules/@sudocode-ai/cli/dist/integrations/plugin-loader.d.ts +0 -77
  136. package/node_modules/@sudocode-ai/cli/dist/integrations/plugin-loader.d.ts.map +0 -1
  137. package/node_modules/@sudocode-ai/cli/dist/integrations/plugin-loader.js +0 -265
  138. package/node_modules/@sudocode-ai/cli/dist/integrations/plugin-loader.js.map +0 -1
  139. package/node_modules/@sudocode-ai/cli/dist/integrations/registry.d.ts +0 -67
  140. package/node_modules/@sudocode-ai/cli/dist/integrations/registry.d.ts.map +0 -1
  141. package/node_modules/@sudocode-ai/cli/dist/integrations/registry.js +0 -77
  142. package/node_modules/@sudocode-ai/cli/dist/integrations/registry.js.map +0 -1
  143. package/node_modules/@sudocode-ai/cli/dist/integrations/sync-coordinator.d.ts +0 -191
  144. package/node_modules/@sudocode-ai/cli/dist/integrations/sync-coordinator.d.ts.map +0 -1
  145. package/node_modules/@sudocode-ai/cli/dist/integrations/sync-coordinator.js +0 -798
  146. package/node_modules/@sudocode-ai/cli/dist/integrations/sync-coordinator.js.map +0 -1
  147. package/node_modules/@sudocode-ai/cli/dist/integrations/types.d.ts +0 -142
  148. package/node_modules/@sudocode-ai/cli/dist/integrations/types.d.ts.map +0 -1
  149. package/node_modules/@sudocode-ai/cli/dist/integrations/types.js +0 -6
  150. package/node_modules/@sudocode-ai/cli/dist/integrations/types.js.map +0 -1
  151. package/node_modules/@sudocode-ai/cli/dist/integrations/utils/conflict-resolver.d.ts +0 -79
  152. package/node_modules/@sudocode-ai/cli/dist/integrations/utils/conflict-resolver.d.ts.map +0 -1
  153. package/node_modules/@sudocode-ai/cli/dist/integrations/utils/conflict-resolver.js +0 -106
  154. package/node_modules/@sudocode-ai/cli/dist/integrations/utils/conflict-resolver.js.map +0 -1
  155. package/node_modules/@sudocode-ai/cli/dist/jsonl.d.ts +0 -69
  156. package/node_modules/@sudocode-ai/cli/dist/jsonl.d.ts.map +0 -1
  157. package/node_modules/@sudocode-ai/cli/dist/jsonl.js +0 -333
  158. package/node_modules/@sudocode-ai/cli/dist/jsonl.js.map +0 -1
  159. package/node_modules/@sudocode-ai/cli/dist/markdown.d.ts +0 -146
  160. package/node_modules/@sudocode-ai/cli/dist/markdown.d.ts.map +0 -1
  161. package/node_modules/@sudocode-ai/cli/dist/markdown.js +0 -329
  162. package/node_modules/@sudocode-ai/cli/dist/markdown.js.map +0 -1
  163. package/node_modules/@sudocode-ai/cli/dist/merge-resolver.d.ts +0 -157
  164. package/node_modules/@sudocode-ai/cli/dist/merge-resolver.d.ts.map +0 -1
  165. package/node_modules/@sudocode-ai/cli/dist/merge-resolver.js +0 -716
  166. package/node_modules/@sudocode-ai/cli/dist/merge-resolver.js.map +0 -1
  167. package/node_modules/@sudocode-ai/cli/dist/operations/events.d.ts +0 -53
  168. package/node_modules/@sudocode-ai/cli/dist/operations/events.d.ts.map +0 -1
  169. package/node_modules/@sudocode-ai/cli/dist/operations/events.js +0 -108
  170. package/node_modules/@sudocode-ai/cli/dist/operations/events.js.map +0 -1
  171. package/node_modules/@sudocode-ai/cli/dist/operations/external-links.d.ts +0 -147
  172. package/node_modules/@sudocode-ai/cli/dist/operations/external-links.d.ts.map +0 -1
  173. package/node_modules/@sudocode-ai/cli/dist/operations/external-links.js +0 -411
  174. package/node_modules/@sudocode-ai/cli/dist/operations/external-links.js.map +0 -1
  175. package/node_modules/@sudocode-ai/cli/dist/operations/feedback-anchors.d.ts +0 -92
  176. package/node_modules/@sudocode-ai/cli/dist/operations/feedback-anchors.d.ts.map +0 -1
  177. package/node_modules/@sudocode-ai/cli/dist/operations/feedback-anchors.js +0 -444
  178. package/node_modules/@sudocode-ai/cli/dist/operations/feedback-anchors.js.map +0 -1
  179. package/node_modules/@sudocode-ai/cli/dist/operations/feedback.d.ts +0 -94
  180. package/node_modules/@sudocode-ai/cli/dist/operations/feedback.d.ts.map +0 -1
  181. package/node_modules/@sudocode-ai/cli/dist/operations/feedback.js +0 -278
  182. package/node_modules/@sudocode-ai/cli/dist/operations/feedback.js.map +0 -1
  183. package/node_modules/@sudocode-ai/cli/dist/operations/index.d.ts +0 -11
  184. package/node_modules/@sudocode-ai/cli/dist/operations/index.d.ts.map +0 -1
  185. package/node_modules/@sudocode-ai/cli/dist/operations/index.js +0 -11
  186. package/node_modules/@sudocode-ai/cli/dist/operations/index.js.map +0 -1
  187. package/node_modules/@sudocode-ai/cli/dist/operations/issues.d.ts +0 -88
  188. package/node_modules/@sudocode-ai/cli/dist/operations/issues.d.ts.map +0 -1
  189. package/node_modules/@sudocode-ai/cli/dist/operations/issues.js +0 -474
  190. package/node_modules/@sudocode-ai/cli/dist/operations/issues.js.map +0 -1
  191. package/node_modules/@sudocode-ai/cli/dist/operations/references.d.ts +0 -34
  192. package/node_modules/@sudocode-ai/cli/dist/operations/references.d.ts.map +0 -1
  193. package/node_modules/@sudocode-ai/cli/dist/operations/references.js +0 -117
  194. package/node_modules/@sudocode-ai/cli/dist/operations/references.js.map +0 -1
  195. package/node_modules/@sudocode-ai/cli/dist/operations/relationships.d.ts +0 -64
  196. package/node_modules/@sudocode-ai/cli/dist/operations/relationships.d.ts.map +0 -1
  197. package/node_modules/@sudocode-ai/cli/dist/operations/relationships.js +0 -281
  198. package/node_modules/@sudocode-ai/cli/dist/operations/relationships.js.map +0 -1
  199. package/node_modules/@sudocode-ai/cli/dist/operations/specs.d.ts +0 -69
  200. package/node_modules/@sudocode-ai/cli/dist/operations/specs.d.ts.map +0 -1
  201. package/node_modules/@sudocode-ai/cli/dist/operations/specs.js +0 -330
  202. package/node_modules/@sudocode-ai/cli/dist/operations/specs.js.map +0 -1
  203. package/node_modules/@sudocode-ai/cli/dist/operations/tags.d.ts +0 -42
  204. package/node_modules/@sudocode-ai/cli/dist/operations/tags.d.ts.map +0 -1
  205. package/node_modules/@sudocode-ai/cli/dist/operations/tags.js +0 -127
  206. package/node_modules/@sudocode-ai/cli/dist/operations/tags.js.map +0 -1
  207. package/node_modules/@sudocode-ai/cli/dist/operations/transactions.d.ts +0 -41
  208. package/node_modules/@sudocode-ai/cli/dist/operations/transactions.d.ts.map +0 -1
  209. package/node_modules/@sudocode-ai/cli/dist/operations/transactions.js +0 -111
  210. package/node_modules/@sudocode-ai/cli/dist/operations/transactions.js.map +0 -1
  211. package/node_modules/@sudocode-ai/cli/dist/remote/claude-auth.d.ts +0 -65
  212. package/node_modules/@sudocode-ai/cli/dist/remote/claude-auth.d.ts.map +0 -1
  213. package/node_modules/@sudocode-ai/cli/dist/remote/claude-auth.js +0 -100
  214. package/node_modules/@sudocode-ai/cli/dist/remote/claude-auth.js.map +0 -1
  215. package/node_modules/@sudocode-ai/cli/dist/remote/config.d.ts +0 -83
  216. package/node_modules/@sudocode-ai/cli/dist/remote/config.d.ts.map +0 -1
  217. package/node_modules/@sudocode-ai/cli/dist/remote/config.js +0 -266
  218. package/node_modules/@sudocode-ai/cli/dist/remote/config.js.map +0 -1
  219. package/node_modules/@sudocode-ai/cli/dist/remote/errors.d.ts +0 -18
  220. package/node_modules/@sudocode-ai/cli/dist/remote/errors.d.ts.map +0 -1
  221. package/node_modules/@sudocode-ai/cli/dist/remote/errors.js +0 -27
  222. package/node_modules/@sudocode-ai/cli/dist/remote/errors.js.map +0 -1
  223. package/node_modules/@sudocode-ai/cli/dist/remote/git-context.d.ts +0 -51
  224. package/node_modules/@sudocode-ai/cli/dist/remote/git-context.d.ts.map +0 -1
  225. package/node_modules/@sudocode-ai/cli/dist/remote/git-context.js +0 -107
  226. package/node_modules/@sudocode-ai/cli/dist/remote/git-context.js.map +0 -1
  227. package/node_modules/@sudocode-ai/cli/dist/remote/spawn-service.d.ts +0 -86
  228. package/node_modules/@sudocode-ai/cli/dist/remote/spawn-service.d.ts.map +0 -1
  229. package/node_modules/@sudocode-ai/cli/dist/remote/spawn-service.js +0 -248
  230. package/node_modules/@sudocode-ai/cli/dist/remote/spawn-service.js.map +0 -1
  231. package/node_modules/@sudocode-ai/cli/dist/remote/types.d.ts +0 -82
  232. package/node_modules/@sudocode-ai/cli/dist/remote/types.d.ts.map +0 -1
  233. package/node_modules/@sudocode-ai/cli/dist/remote/types.js +0 -5
  234. package/node_modules/@sudocode-ai/cli/dist/remote/types.js.map +0 -1
  235. package/node_modules/@sudocode-ai/cli/dist/sync.d.ts +0 -47
  236. package/node_modules/@sudocode-ai/cli/dist/sync.d.ts.map +0 -1
  237. package/node_modules/@sudocode-ai/cli/dist/sync.js +0 -464
  238. package/node_modules/@sudocode-ai/cli/dist/sync.js.map +0 -1
  239. package/node_modules/@sudocode-ai/cli/dist/test-schema.d.ts +0 -5
  240. package/node_modules/@sudocode-ai/cli/dist/test-schema.d.ts.map +0 -1
  241. package/node_modules/@sudocode-ai/cli/dist/test-schema.js +0 -46
  242. package/node_modules/@sudocode-ai/cli/dist/test-schema.js.map +0 -1
  243. package/node_modules/@sudocode-ai/cli/dist/types.d.ts +0 -7
  244. package/node_modules/@sudocode-ai/cli/dist/types.d.ts.map +0 -1
  245. package/node_modules/@sudocode-ai/cli/dist/types.js +0 -7
  246. package/node_modules/@sudocode-ai/cli/dist/types.js.map +0 -1
  247. package/node_modules/@sudocode-ai/cli/dist/update-checker.d.ts +0 -33
  248. package/node_modules/@sudocode-ai/cli/dist/update-checker.d.ts.map +0 -1
  249. package/node_modules/@sudocode-ai/cli/dist/update-checker.js +0 -193
  250. package/node_modules/@sudocode-ai/cli/dist/update-checker.js.map +0 -1
  251. package/node_modules/@sudocode-ai/cli/dist/validation.d.ts +0 -11
  252. package/node_modules/@sudocode-ai/cli/dist/validation.d.ts.map +0 -1
  253. package/node_modules/@sudocode-ai/cli/dist/validation.js +0 -58
  254. package/node_modules/@sudocode-ai/cli/dist/validation.js.map +0 -1
  255. package/node_modules/@sudocode-ai/cli/dist/version.d.ts +0 -12
  256. package/node_modules/@sudocode-ai/cli/dist/version.d.ts.map +0 -1
  257. package/node_modules/@sudocode-ai/cli/dist/version.js +0 -23
  258. package/node_modules/@sudocode-ai/cli/dist/version.js.map +0 -1
  259. package/node_modules/@sudocode-ai/cli/dist/watcher.d.ts +0 -75
  260. package/node_modules/@sudocode-ai/cli/dist/watcher.d.ts.map +0 -1
  261. package/node_modules/@sudocode-ai/cli/dist/watcher.js +0 -797
  262. package/node_modules/@sudocode-ai/cli/dist/watcher.js.map +0 -1
  263. package/node_modules/@sudocode-ai/cli/dist/yaml-conflict-resolver.d.ts +0 -91
  264. package/node_modules/@sudocode-ai/cli/dist/yaml-conflict-resolver.d.ts.map +0 -1
  265. package/node_modules/@sudocode-ai/cli/dist/yaml-conflict-resolver.js +0 -197
  266. package/node_modules/@sudocode-ai/cli/dist/yaml-conflict-resolver.js.map +0 -1
  267. package/node_modules/@sudocode-ai/cli/dist/yaml-converter.d.ts +0 -68
  268. package/node_modules/@sudocode-ai/cli/dist/yaml-converter.d.ts.map +0 -1
  269. package/node_modules/@sudocode-ai/cli/dist/yaml-converter.js +0 -109
  270. package/node_modules/@sudocode-ai/cli/dist/yaml-converter.js.map +0 -1
  271. package/node_modules/@sudocode-ai/cli/package.json +0 -76
  272. package/node_modules/@sudocode-ai/integration-beads/package.json +0 -44
  273. package/node_modules/@sudocode-ai/integration-github/package.json +0 -41
  274. package/node_modules/@sudocode-ai/integration-openspec/package.json +0 -43
  275. package/node_modules/@sudocode-ai/integration-speckit/package.json +0 -42
  276. package/node_modules/@sudocode-ai/local-server/README.md +0 -25
  277. package/node_modules/@sudocode-ai/local-server/dist/cli.d.ts +0 -7
  278. package/node_modules/@sudocode-ai/local-server/dist/cli.d.ts.map +0 -1
  279. package/node_modules/@sudocode-ai/local-server/dist/cli.js +0 -7
  280. package/node_modules/@sudocode-ai/local-server/dist/cli.js.map +0 -1
  281. package/node_modules/@sudocode-ai/local-server/dist/errors/agent-errors.d.ts +0 -43
  282. package/node_modules/@sudocode-ai/local-server/dist/errors/agent-errors.d.ts.map +0 -1
  283. package/node_modules/@sudocode-ai/local-server/dist/errors/agent-errors.js +0 -69
  284. package/node_modules/@sudocode-ai/local-server/dist/errors/agent-errors.js.map +0 -1
  285. package/node_modules/@sudocode-ai/local-server/dist/execution/adapters/claude-adapter.d.ts +0 -63
  286. package/node_modules/@sudocode-ai/local-server/dist/execution/adapters/claude-adapter.d.ts.map +0 -1
  287. package/node_modules/@sudocode-ai/local-server/dist/execution/adapters/claude-adapter.js +0 -83
  288. package/node_modules/@sudocode-ai/local-server/dist/execution/adapters/claude-adapter.js.map +0 -1
  289. package/node_modules/@sudocode-ai/local-server/dist/execution/adapters/codex-adapter.d.ts +0 -67
  290. package/node_modules/@sudocode-ai/local-server/dist/execution/adapters/codex-adapter.d.ts.map +0 -1
  291. package/node_modules/@sudocode-ai/local-server/dist/execution/adapters/codex-adapter.js +0 -183
  292. package/node_modules/@sudocode-ai/local-server/dist/execution/adapters/codex-adapter.js.map +0 -1
  293. package/node_modules/@sudocode-ai/local-server/dist/execution/adapters/codex-config-builder.d.ts +0 -30
  294. package/node_modules/@sudocode-ai/local-server/dist/execution/adapters/codex-config-builder.d.ts.map +0 -1
  295. package/node_modules/@sudocode-ai/local-server/dist/execution/adapters/codex-config-builder.js +0 -110
  296. package/node_modules/@sudocode-ai/local-server/dist/execution/adapters/codex-config-builder.js.map +0 -1
  297. package/node_modules/@sudocode-ai/local-server/dist/execution/adapters/copilot-adapter.d.ts +0 -94
  298. package/node_modules/@sudocode-ai/local-server/dist/execution/adapters/copilot-adapter.d.ts.map +0 -1
  299. package/node_modules/@sudocode-ai/local-server/dist/execution/adapters/copilot-adapter.js +0 -163
  300. package/node_modules/@sudocode-ai/local-server/dist/execution/adapters/copilot-adapter.js.map +0 -1
  301. package/node_modules/@sudocode-ai/local-server/dist/execution/adapters/copilot-config-builder.d.ts +0 -48
  302. package/node_modules/@sudocode-ai/local-server/dist/execution/adapters/copilot-config-builder.d.ts.map +0 -1
  303. package/node_modules/@sudocode-ai/local-server/dist/execution/adapters/copilot-config-builder.js +0 -125
  304. package/node_modules/@sudocode-ai/local-server/dist/execution/adapters/copilot-config-builder.js.map +0 -1
  305. package/node_modules/@sudocode-ai/local-server/dist/execution/adapters/cursor-adapter.d.ts +0 -66
  306. package/node_modules/@sudocode-ai/local-server/dist/execution/adapters/cursor-adapter.d.ts.map +0 -1
  307. package/node_modules/@sudocode-ai/local-server/dist/execution/adapters/cursor-adapter.js +0 -121
  308. package/node_modules/@sudocode-ai/local-server/dist/execution/adapters/cursor-adapter.js.map +0 -1
  309. package/node_modules/@sudocode-ai/local-server/dist/execution/adapters/cursor-config-builder.d.ts +0 -29
  310. package/node_modules/@sudocode-ai/local-server/dist/execution/adapters/cursor-config-builder.d.ts.map +0 -1
  311. package/node_modules/@sudocode-ai/local-server/dist/execution/adapters/cursor-config-builder.js +0 -49
  312. package/node_modules/@sudocode-ai/local-server/dist/execution/adapters/cursor-config-builder.js.map +0 -1
  313. package/node_modules/@sudocode-ai/local-server/dist/execution/adapters/shared/config-presets.d.ts +0 -102
  314. package/node_modules/@sudocode-ai/local-server/dist/execution/adapters/shared/config-presets.d.ts.map +0 -1
  315. package/node_modules/@sudocode-ai/local-server/dist/execution/adapters/shared/config-presets.js +0 -205
  316. package/node_modules/@sudocode-ai/local-server/dist/execution/adapters/shared/config-presets.js.map +0 -1
  317. package/node_modules/@sudocode-ai/local-server/dist/execution/adapters/shared/config-utils.d.ts +0 -95
  318. package/node_modules/@sudocode-ai/local-server/dist/execution/adapters/shared/config-utils.d.ts.map +0 -1
  319. package/node_modules/@sudocode-ai/local-server/dist/execution/adapters/shared/config-utils.js +0 -163
  320. package/node_modules/@sudocode-ai/local-server/dist/execution/adapters/shared/config-utils.js.map +0 -1
  321. package/node_modules/@sudocode-ai/local-server/dist/execution/adapters/shared/index.d.ts +0 -8
  322. package/node_modules/@sudocode-ai/local-server/dist/execution/adapters/shared/index.d.ts.map +0 -1
  323. package/node_modules/@sudocode-ai/local-server/dist/execution/adapters/shared/index.js +0 -8
  324. package/node_modules/@sudocode-ai/local-server/dist/execution/adapters/shared/index.js.map +0 -1
  325. package/node_modules/@sudocode-ai/local-server/dist/execution/executors/acp-executor-wrapper.d.ts +0 -331
  326. package/node_modules/@sudocode-ai/local-server/dist/execution/executors/acp-executor-wrapper.d.ts.map +0 -1
  327. package/node_modules/@sudocode-ai/local-server/dist/execution/executors/acp-executor-wrapper.js +0 -1126
  328. package/node_modules/@sudocode-ai/local-server/dist/execution/executors/acp-executor-wrapper.js.map +0 -1
  329. package/node_modules/@sudocode-ai/local-server/dist/execution/executors/agent-config-handlers.d.ts +0 -158
  330. package/node_modules/@sudocode-ai/local-server/dist/execution/executors/agent-config-handlers.d.ts.map +0 -1
  331. package/node_modules/@sudocode-ai/local-server/dist/execution/executors/agent-config-handlers.js +0 -352
  332. package/node_modules/@sudocode-ai/local-server/dist/execution/executors/agent-config-handlers.js.map +0 -1
  333. package/node_modules/@sudocode-ai/local-server/dist/execution/executors/executor-factory.d.ts +0 -170
  334. package/node_modules/@sudocode-ai/local-server/dist/execution/executors/executor-factory.d.ts.map +0 -1
  335. package/node_modules/@sudocode-ai/local-server/dist/execution/executors/executor-factory.js +0 -216
  336. package/node_modules/@sudocode-ai/local-server/dist/execution/executors/executor-factory.js.map +0 -1
  337. package/node_modules/@sudocode-ai/local-server/dist/execution/executors/legacy-shim-executor-wrapper.d.ts +0 -216
  338. package/node_modules/@sudocode-ai/local-server/dist/execution/executors/legacy-shim-executor-wrapper.d.ts.map +0 -1
  339. package/node_modules/@sudocode-ai/local-server/dist/execution/executors/legacy-shim-executor-wrapper.js +0 -679
  340. package/node_modules/@sudocode-ai/local-server/dist/execution/executors/legacy-shim-executor-wrapper.js.map +0 -1
  341. package/node_modules/@sudocode-ai/local-server/dist/execution/executors/permission-manager.d.ts +0 -118
  342. package/node_modules/@sudocode-ai/local-server/dist/execution/executors/permission-manager.d.ts.map +0 -1
  343. package/node_modules/@sudocode-ai/local-server/dist/execution/executors/permission-manager.js +0 -143
  344. package/node_modules/@sudocode-ai/local-server/dist/execution/executors/permission-manager.js.map +0 -1
  345. package/node_modules/@sudocode-ai/local-server/dist/execution/handlers/file-handler.d.ts +0 -60
  346. package/node_modules/@sudocode-ai/local-server/dist/execution/handlers/file-handler.d.ts.map +0 -1
  347. package/node_modules/@sudocode-ai/local-server/dist/execution/handlers/file-handler.js +0 -115
  348. package/node_modules/@sudocode-ai/local-server/dist/execution/handlers/file-handler.js.map +0 -1
  349. package/node_modules/@sudocode-ai/local-server/dist/execution/output/coalesced-types.d.ts +0 -131
  350. package/node_modules/@sudocode-ai/local-server/dist/execution/output/coalesced-types.d.ts.map +0 -1
  351. package/node_modules/@sudocode-ai/local-server/dist/execution/output/coalesced-types.js +0 -47
  352. package/node_modules/@sudocode-ai/local-server/dist/execution/output/coalesced-types.js.map +0 -1
  353. package/node_modules/@sudocode-ai/local-server/dist/execution/output/index.d.ts +0 -16
  354. package/node_modules/@sudocode-ai/local-server/dist/execution/output/index.d.ts.map +0 -1
  355. package/node_modules/@sudocode-ai/local-server/dist/execution/output/index.js +0 -15
  356. package/node_modules/@sudocode-ai/local-server/dist/execution/output/index.js.map +0 -1
  357. package/node_modules/@sudocode-ai/local-server/dist/execution/output/normalized-to-coalesced.d.ts +0 -40
  358. package/node_modules/@sudocode-ai/local-server/dist/execution/output/normalized-to-coalesced.d.ts.map +0 -1
  359. package/node_modules/@sudocode-ai/local-server/dist/execution/output/normalized-to-coalesced.js +0 -165
  360. package/node_modules/@sudocode-ai/local-server/dist/execution/output/normalized-to-coalesced.js.map +0 -1
  361. package/node_modules/@sudocode-ai/local-server/dist/execution/output/session-update-coalescer.d.ts +0 -99
  362. package/node_modules/@sudocode-ai/local-server/dist/execution/output/session-update-coalescer.d.ts.map +0 -1
  363. package/node_modules/@sudocode-ai/local-server/dist/execution/output/session-update-coalescer.js +0 -329
  364. package/node_modules/@sudocode-ai/local-server/dist/execution/output/session-update-coalescer.js.map +0 -1
  365. package/node_modules/@sudocode-ai/local-server/dist/execution/output/types.d.ts +0 -421
  366. package/node_modules/@sudocode-ai/local-server/dist/execution/output/types.d.ts.map +0 -1
  367. package/node_modules/@sudocode-ai/local-server/dist/execution/output/types.js +0 -22
  368. package/node_modules/@sudocode-ai/local-server/dist/execution/output/types.js.map +0 -1
  369. package/node_modules/@sudocode-ai/local-server/dist/execution/process/builders/claude.d.ts +0 -53
  370. package/node_modules/@sudocode-ai/local-server/dist/execution/process/builders/claude.d.ts.map +0 -1
  371. package/node_modules/@sudocode-ai/local-server/dist/execution/process/builders/claude.js +0 -225
  372. package/node_modules/@sudocode-ai/local-server/dist/execution/process/builders/claude.js.map +0 -1
  373. package/node_modules/@sudocode-ai/local-server/dist/execution/worktree/config.d.ts +0 -74
  374. package/node_modules/@sudocode-ai/local-server/dist/execution/worktree/config.d.ts.map +0 -1
  375. package/node_modules/@sudocode-ai/local-server/dist/execution/worktree/config.js +0 -280
  376. package/node_modules/@sudocode-ai/local-server/dist/execution/worktree/config.js.map +0 -1
  377. package/node_modules/@sudocode-ai/local-server/dist/execution/worktree/conflict-detector.d.ts +0 -85
  378. package/node_modules/@sudocode-ai/local-server/dist/execution/worktree/conflict-detector.d.ts.map +0 -1
  379. package/node_modules/@sudocode-ai/local-server/dist/execution/worktree/conflict-detector.js +0 -129
  380. package/node_modules/@sudocode-ai/local-server/dist/execution/worktree/conflict-detector.js.map +0 -1
  381. package/node_modules/@sudocode-ai/local-server/dist/execution/worktree/git-cli.d.ts +0 -208
  382. package/node_modules/@sudocode-ai/local-server/dist/execution/worktree/git-cli.d.ts.map +0 -1
  383. package/node_modules/@sudocode-ai/local-server/dist/execution/worktree/git-cli.js +0 -280
  384. package/node_modules/@sudocode-ai/local-server/dist/execution/worktree/git-cli.js.map +0 -1
  385. package/node_modules/@sudocode-ai/local-server/dist/execution/worktree/git-sync-cli.d.ts +0 -225
  386. package/node_modules/@sudocode-ai/local-server/dist/execution/worktree/git-sync-cli.d.ts.map +0 -1
  387. package/node_modules/@sudocode-ai/local-server/dist/execution/worktree/git-sync-cli.js +0 -464
  388. package/node_modules/@sudocode-ai/local-server/dist/execution/worktree/git-sync-cli.js.map +0 -1
  389. package/node_modules/@sudocode-ai/local-server/dist/execution/worktree/index.d.ts +0 -16
  390. package/node_modules/@sudocode-ai/local-server/dist/execution/worktree/index.d.ts.map +0 -1
  391. package/node_modules/@sudocode-ai/local-server/dist/execution/worktree/index.js +0 -15
  392. package/node_modules/@sudocode-ai/local-server/dist/execution/worktree/index.js.map +0 -1
  393. package/node_modules/@sudocode-ai/local-server/dist/execution/worktree/manager.d.ts +0 -221
  394. package/node_modules/@sudocode-ai/local-server/dist/execution/worktree/manager.d.ts.map +0 -1
  395. package/node_modules/@sudocode-ai/local-server/dist/execution/worktree/manager.js +0 -508
  396. package/node_modules/@sudocode-ai/local-server/dist/execution/worktree/manager.js.map +0 -1
  397. package/node_modules/@sudocode-ai/local-server/dist/execution/worktree/types.d.ts +0 -90
  398. package/node_modules/@sudocode-ai/local-server/dist/execution/worktree/types.d.ts.map +0 -1
  399. package/node_modules/@sudocode-ai/local-server/dist/execution/worktree/types.js +0 -42
  400. package/node_modules/@sudocode-ai/local-server/dist/execution/worktree/types.js.map +0 -1
  401. package/node_modules/@sudocode-ai/local-server/dist/index.d.ts +0 -3
  402. package/node_modules/@sudocode-ai/local-server/dist/index.d.ts.map +0 -1
  403. package/node_modules/@sudocode-ai/local-server/dist/index.js +0 -413
  404. package/node_modules/@sudocode-ai/local-server/dist/index.js.map +0 -1
  405. package/node_modules/@sudocode-ai/local-server/dist/middleware/project-context.d.ts +0 -37
  406. package/node_modules/@sudocode-ai/local-server/dist/middleware/project-context.d.ts.map +0 -1
  407. package/node_modules/@sudocode-ai/local-server/dist/middleware/project-context.js +0 -91
  408. package/node_modules/@sudocode-ai/local-server/dist/middleware/project-context.js.map +0 -1
  409. package/node_modules/@sudocode-ai/local-server/dist/public/assets/index-6xIC1sAG.js +0 -3837
  410. package/node_modules/@sudocode-ai/local-server/dist/public/assets/index-6xIC1sAG.js.map +0 -1
  411. package/node_modules/@sudocode-ai/local-server/dist/public/assets/index-QH6t9Xqh.css +0 -1
  412. package/node_modules/@sudocode-ai/local-server/dist/public/assets/ort-wasm-simd-threaded.jsep-B0T3yYHD.wasm +0 -0
  413. package/node_modules/@sudocode-ai/local-server/dist/public/assets/react-vendor-DoNwlLhy.js +0 -60
  414. package/node_modules/@sudocode-ai/local-server/dist/public/assets/react-vendor-DoNwlLhy.js.map +0 -1
  415. package/node_modules/@sudocode-ai/local-server/dist/public/assets/ui-vendor-DlxvBun1.js +0 -54
  416. package/node_modules/@sudocode-ai/local-server/dist/public/assets/ui-vendor-DlxvBun1.js.map +0 -1
  417. package/node_modules/@sudocode-ai/local-server/dist/public/favicon.ico +0 -0
  418. package/node_modules/@sudocode-ai/local-server/dist/public/index.html +0 -16
  419. package/node_modules/@sudocode-ai/local-server/dist/public/kokoro-test.html +0 -197
  420. package/node_modules/@sudocode-ai/local-server/dist/public/logo.png +0 -0
  421. package/node_modules/@sudocode-ai/local-server/dist/routes/agents.d.ts +0 -3
  422. package/node_modules/@sudocode-ai/local-server/dist/routes/agents.d.ts.map +0 -1
  423. package/node_modules/@sudocode-ai/local-server/dist/routes/agents.js +0 -188
  424. package/node_modules/@sudocode-ai/local-server/dist/routes/agents.js.map +0 -1
  425. package/node_modules/@sudocode-ai/local-server/dist/routes/config.d.ts +0 -3
  426. package/node_modules/@sudocode-ai/local-server/dist/routes/config.d.ts.map +0 -1
  427. package/node_modules/@sudocode-ai/local-server/dist/routes/config.js +0 -155
  428. package/node_modules/@sudocode-ai/local-server/dist/routes/config.js.map +0 -1
  429. package/node_modules/@sudocode-ai/local-server/dist/routes/editors.d.ts +0 -15
  430. package/node_modules/@sudocode-ai/local-server/dist/routes/editors.d.ts.map +0 -1
  431. package/node_modules/@sudocode-ai/local-server/dist/routes/editors.js +0 -98
  432. package/node_modules/@sudocode-ai/local-server/dist/routes/editors.js.map +0 -1
  433. package/node_modules/@sudocode-ai/local-server/dist/routes/executions.d.ts +0 -18
  434. package/node_modules/@sudocode-ai/local-server/dist/routes/executions.d.ts.map +0 -1
  435. package/node_modules/@sudocode-ai/local-server/dist/routes/executions.js +0 -1570
  436. package/node_modules/@sudocode-ai/local-server/dist/routes/executions.js.map +0 -1
  437. package/node_modules/@sudocode-ai/local-server/dist/routes/feedback.d.ts +0 -8
  438. package/node_modules/@sudocode-ai/local-server/dist/routes/feedback.d.ts.map +0 -1
  439. package/node_modules/@sudocode-ai/local-server/dist/routes/feedback.js +0 -340
  440. package/node_modules/@sudocode-ai/local-server/dist/routes/feedback.js.map +0 -1
  441. package/node_modules/@sudocode-ai/local-server/dist/routes/files.d.ts +0 -18
  442. package/node_modules/@sudocode-ai/local-server/dist/routes/files.d.ts.map +0 -1
  443. package/node_modules/@sudocode-ai/local-server/dist/routes/files.js +0 -89
  444. package/node_modules/@sudocode-ai/local-server/dist/routes/files.js.map +0 -1
  445. package/node_modules/@sudocode-ai/local-server/dist/routes/import.d.ts +0 -142
  446. package/node_modules/@sudocode-ai/local-server/dist/routes/import.d.ts.map +0 -1
  447. package/node_modules/@sudocode-ai/local-server/dist/routes/import.js +0 -896
  448. package/node_modules/@sudocode-ai/local-server/dist/routes/import.js.map +0 -1
  449. package/node_modules/@sudocode-ai/local-server/dist/routes/issues.d.ts +0 -8
  450. package/node_modules/@sudocode-ai/local-server/dist/routes/issues.d.ts.map +0 -1
  451. package/node_modules/@sudocode-ai/local-server/dist/routes/issues.js +0 -419
  452. package/node_modules/@sudocode-ai/local-server/dist/routes/issues.js.map +0 -1
  453. package/node_modules/@sudocode-ai/local-server/dist/routes/plugins.d.ts +0 -34
  454. package/node_modules/@sudocode-ai/local-server/dist/routes/plugins.d.ts.map +0 -1
  455. package/node_modules/@sudocode-ai/local-server/dist/routes/plugins.js +0 -602
  456. package/node_modules/@sudocode-ai/local-server/dist/routes/plugins.js.map +0 -1
  457. package/node_modules/@sudocode-ai/local-server/dist/routes/projects.d.ts +0 -11
  458. package/node_modules/@sudocode-ai/local-server/dist/routes/projects.d.ts.map +0 -1
  459. package/node_modules/@sudocode-ai/local-server/dist/routes/projects.js +0 -536
  460. package/node_modules/@sudocode-ai/local-server/dist/routes/projects.js.map +0 -1
  461. package/node_modules/@sudocode-ai/local-server/dist/routes/relationships.d.ts +0 -8
  462. package/node_modules/@sudocode-ai/local-server/dist/routes/relationships.d.ts.map +0 -1
  463. package/node_modules/@sudocode-ai/local-server/dist/routes/relationships.js +0 -310
  464. package/node_modules/@sudocode-ai/local-server/dist/routes/relationships.js.map +0 -1
  465. package/node_modules/@sudocode-ai/local-server/dist/routes/repo-info.d.ts +0 -3
  466. package/node_modules/@sudocode-ai/local-server/dist/routes/repo-info.d.ts.map +0 -1
  467. package/node_modules/@sudocode-ai/local-server/dist/routes/repo-info.js +0 -203
  468. package/node_modules/@sudocode-ai/local-server/dist/routes/repo-info.js.map +0 -1
  469. package/node_modules/@sudocode-ai/local-server/dist/routes/specs.d.ts +0 -8
  470. package/node_modules/@sudocode-ai/local-server/dist/routes/specs.d.ts.map +0 -1
  471. package/node_modules/@sudocode-ai/local-server/dist/routes/specs.js +0 -414
  472. package/node_modules/@sudocode-ai/local-server/dist/routes/specs.js.map +0 -1
  473. package/node_modules/@sudocode-ai/local-server/dist/routes/update.d.ts +0 -7
  474. package/node_modules/@sudocode-ai/local-server/dist/routes/update.d.ts.map +0 -1
  475. package/node_modules/@sudocode-ai/local-server/dist/routes/update.js +0 -194
  476. package/node_modules/@sudocode-ai/local-server/dist/routes/update.js.map +0 -1
  477. package/node_modules/@sudocode-ai/local-server/dist/routes/version.d.ts +0 -3
  478. package/node_modules/@sudocode-ai/local-server/dist/routes/version.d.ts.map +0 -1
  479. package/node_modules/@sudocode-ai/local-server/dist/routes/version.js +0 -25
  480. package/node_modules/@sudocode-ai/local-server/dist/routes/version.js.map +0 -1
  481. package/node_modules/@sudocode-ai/local-server/dist/routes/voice.d.ts +0 -12
  482. package/node_modules/@sudocode-ai/local-server/dist/routes/voice.d.ts.map +0 -1
  483. package/node_modules/@sudocode-ai/local-server/dist/routes/voice.js +0 -387
  484. package/node_modules/@sudocode-ai/local-server/dist/routes/voice.js.map +0 -1
  485. package/node_modules/@sudocode-ai/local-server/dist/routes/workflows.d.ts +0 -8
  486. package/node_modules/@sudocode-ai/local-server/dist/routes/workflows.d.ts.map +0 -1
  487. package/node_modules/@sudocode-ai/local-server/dist/routes/workflows.js +0 -1730
  488. package/node_modules/@sudocode-ai/local-server/dist/routes/workflows.js.map +0 -1
  489. package/node_modules/@sudocode-ai/local-server/dist/services/agent-registry.d.ts +0 -150
  490. package/node_modules/@sudocode-ai/local-server/dist/services/agent-registry.d.ts.map +0 -1
  491. package/node_modules/@sudocode-ai/local-server/dist/services/agent-registry.js +0 -312
  492. package/node_modules/@sudocode-ai/local-server/dist/services/agent-registry.js.map +0 -1
  493. package/node_modules/@sudocode-ai/local-server/dist/services/command-discovery-service.d.ts +0 -43
  494. package/node_modules/@sudocode-ai/local-server/dist/services/command-discovery-service.d.ts.map +0 -1
  495. package/node_modules/@sudocode-ai/local-server/dist/services/command-discovery-service.js +0 -114
  496. package/node_modules/@sudocode-ai/local-server/dist/services/command-discovery-service.js.map +0 -1
  497. package/node_modules/@sudocode-ai/local-server/dist/services/db.d.ts +0 -33
  498. package/node_modules/@sudocode-ai/local-server/dist/services/db.d.ts.map +0 -1
  499. package/node_modules/@sudocode-ai/local-server/dist/services/db.js +0 -90
  500. package/node_modules/@sudocode-ai/local-server/dist/services/db.js.map +0 -1
  501. package/node_modules/@sudocode-ai/local-server/dist/services/editor-service.d.ts +0 -57
  502. package/node_modules/@sudocode-ai/local-server/dist/services/editor-service.d.ts.map +0 -1
  503. package/node_modules/@sudocode-ai/local-server/dist/services/editor-service.js +0 -204
  504. package/node_modules/@sudocode-ai/local-server/dist/services/editor-service.js.map +0 -1
  505. package/node_modules/@sudocode-ai/local-server/dist/services/execution-changes-service.d.ts +0 -110
  506. package/node_modules/@sudocode-ai/local-server/dist/services/execution-changes-service.d.ts.map +0 -1
  507. package/node_modules/@sudocode-ai/local-server/dist/services/execution-changes-service.js +0 -710
  508. package/node_modules/@sudocode-ai/local-server/dist/services/execution-changes-service.js.map +0 -1
  509. package/node_modules/@sudocode-ai/local-server/dist/services/execution-event-callbacks.d.ts +0 -73
  510. package/node_modules/@sudocode-ai/local-server/dist/services/execution-event-callbacks.d.ts.map +0 -1
  511. package/node_modules/@sudocode-ai/local-server/dist/services/execution-event-callbacks.js +0 -82
  512. package/node_modules/@sudocode-ai/local-server/dist/services/execution-event-callbacks.js.map +0 -1
  513. package/node_modules/@sudocode-ai/local-server/dist/services/execution-lifecycle.d.ts +0 -145
  514. package/node_modules/@sudocode-ai/local-server/dist/services/execution-lifecycle.d.ts.map +0 -1
  515. package/node_modules/@sudocode-ai/local-server/dist/services/execution-lifecycle.js +0 -392
  516. package/node_modules/@sudocode-ai/local-server/dist/services/execution-lifecycle.js.map +0 -1
  517. package/node_modules/@sudocode-ai/local-server/dist/services/execution-logs-cleanup.d.ts +0 -88
  518. package/node_modules/@sudocode-ai/local-server/dist/services/execution-logs-cleanup.d.ts.map +0 -1
  519. package/node_modules/@sudocode-ai/local-server/dist/services/execution-logs-cleanup.js +0 -137
  520. package/node_modules/@sudocode-ai/local-server/dist/services/execution-logs-cleanup.js.map +0 -1
  521. package/node_modules/@sudocode-ai/local-server/dist/services/execution-logs-store.d.ts +0 -312
  522. package/node_modules/@sudocode-ai/local-server/dist/services/execution-logs-store.d.ts.map +0 -1
  523. package/node_modules/@sudocode-ai/local-server/dist/services/execution-logs-store.js +0 -518
  524. package/node_modules/@sudocode-ai/local-server/dist/services/execution-logs-store.js.map +0 -1
  525. package/node_modules/@sudocode-ai/local-server/dist/services/execution-service.d.ts +0 -409
  526. package/node_modules/@sudocode-ai/local-server/dist/services/execution-service.d.ts.map +0 -1
  527. package/node_modules/@sudocode-ai/local-server/dist/services/execution-service.js +0 -1694
  528. package/node_modules/@sudocode-ai/local-server/dist/services/execution-service.js.map +0 -1
  529. package/node_modules/@sudocode-ai/local-server/dist/services/execution-worker-pool.d.ts +0 -116
  530. package/node_modules/@sudocode-ai/local-server/dist/services/execution-worker-pool.d.ts.map +0 -1
  531. package/node_modules/@sudocode-ai/local-server/dist/services/execution-worker-pool.js +0 -326
  532. package/node_modules/@sudocode-ai/local-server/dist/services/execution-worker-pool.js.map +0 -1
  533. package/node_modules/@sudocode-ai/local-server/dist/services/executions.d.ts +0 -63
  534. package/node_modules/@sudocode-ai/local-server/dist/services/executions.d.ts.map +0 -1
  535. package/node_modules/@sudocode-ai/local-server/dist/services/executions.js +0 -177
  536. package/node_modules/@sudocode-ai/local-server/dist/services/executions.js.map +0 -1
  537. package/node_modules/@sudocode-ai/local-server/dist/services/export.d.ts +0 -32
  538. package/node_modules/@sudocode-ai/local-server/dist/services/export.d.ts.map +0 -1
  539. package/node_modules/@sudocode-ai/local-server/dist/services/export.js +0 -114
  540. package/node_modules/@sudocode-ai/local-server/dist/services/export.js.map +0 -1
  541. package/node_modules/@sudocode-ai/local-server/dist/services/external-refresh-service.d.ts +0 -104
  542. package/node_modules/@sudocode-ai/local-server/dist/services/external-refresh-service.d.ts.map +0 -1
  543. package/node_modules/@sudocode-ai/local-server/dist/services/external-refresh-service.js +0 -520
  544. package/node_modules/@sudocode-ai/local-server/dist/services/external-refresh-service.js.map +0 -1
  545. package/node_modules/@sudocode-ai/local-server/dist/services/feedback.d.ts +0 -56
  546. package/node_modules/@sudocode-ai/local-server/dist/services/feedback.d.ts.map +0 -1
  547. package/node_modules/@sudocode-ai/local-server/dist/services/feedback.js +0 -78
  548. package/node_modules/@sudocode-ai/local-server/dist/services/feedback.js.map +0 -1
  549. package/node_modules/@sudocode-ai/local-server/dist/services/file-search/git-ls-files-strategy.d.ts +0 -72
  550. package/node_modules/@sudocode-ai/local-server/dist/services/file-search/git-ls-files-strategy.d.ts.map +0 -1
  551. package/node_modules/@sudocode-ai/local-server/dist/services/file-search/git-ls-files-strategy.js +0 -176
  552. package/node_modules/@sudocode-ai/local-server/dist/services/file-search/git-ls-files-strategy.js.map +0 -1
  553. package/node_modules/@sudocode-ai/local-server/dist/services/file-search/index.d.ts +0 -9
  554. package/node_modules/@sudocode-ai/local-server/dist/services/file-search/index.d.ts.map +0 -1
  555. package/node_modules/@sudocode-ai/local-server/dist/services/file-search/index.js +0 -10
  556. package/node_modules/@sudocode-ai/local-server/dist/services/file-search/index.js.map +0 -1
  557. package/node_modules/@sudocode-ai/local-server/dist/services/file-search/registry.d.ts +0 -97
  558. package/node_modules/@sudocode-ai/local-server/dist/services/file-search/registry.d.ts.map +0 -1
  559. package/node_modules/@sudocode-ai/local-server/dist/services/file-search/registry.js +0 -140
  560. package/node_modules/@sudocode-ai/local-server/dist/services/file-search/registry.js.map +0 -1
  561. package/node_modules/@sudocode-ai/local-server/dist/services/file-search/strategy.d.ts +0 -58
  562. package/node_modules/@sudocode-ai/local-server/dist/services/file-search/strategy.d.ts.map +0 -1
  563. package/node_modules/@sudocode-ai/local-server/dist/services/file-search/strategy.js +0 -8
  564. package/node_modules/@sudocode-ai/local-server/dist/services/file-search/strategy.js.map +0 -1
  565. package/node_modules/@sudocode-ai/local-server/dist/services/integration-sync-service.d.ts +0 -185
  566. package/node_modules/@sudocode-ai/local-server/dist/services/integration-sync-service.d.ts.map +0 -1
  567. package/node_modules/@sudocode-ai/local-server/dist/services/integration-sync-service.js +0 -428
  568. package/node_modules/@sudocode-ai/local-server/dist/services/integration-sync-service.js.map +0 -1
  569. package/node_modules/@sudocode-ai/local-server/dist/services/issues.d.ts +0 -27
  570. package/node_modules/@sudocode-ai/local-server/dist/services/issues.d.ts.map +0 -1
  571. package/node_modules/@sudocode-ai/local-server/dist/services/issues.js +0 -35
  572. package/node_modules/@sudocode-ai/local-server/dist/services/issues.js.map +0 -1
  573. package/node_modules/@sudocode-ai/local-server/dist/services/narration-service.d.ts +0 -312
  574. package/node_modules/@sudocode-ai/local-server/dist/services/narration-service.d.ts.map +0 -1
  575. package/node_modules/@sudocode-ai/local-server/dist/services/narration-service.js +0 -749
  576. package/node_modules/@sudocode-ai/local-server/dist/services/narration-service.js.map +0 -1
  577. package/node_modules/@sudocode-ai/local-server/dist/services/project-context.d.ts +0 -93
  578. package/node_modules/@sudocode-ai/local-server/dist/services/project-context.d.ts.map +0 -1
  579. package/node_modules/@sudocode-ai/local-server/dist/services/project-context.js +0 -166
  580. package/node_modules/@sudocode-ai/local-server/dist/services/project-context.js.map +0 -1
  581. package/node_modules/@sudocode-ai/local-server/dist/services/project-manager.d.ts +0 -102
  582. package/node_modules/@sudocode-ai/local-server/dist/services/project-manager.d.ts.map +0 -1
  583. package/node_modules/@sudocode-ai/local-server/dist/services/project-manager.js +0 -500
  584. package/node_modules/@sudocode-ai/local-server/dist/services/project-manager.js.map +0 -1
  585. package/node_modules/@sudocode-ai/local-server/dist/services/project-registry.d.ts +0 -98
  586. package/node_modules/@sudocode-ai/local-server/dist/services/project-registry.d.ts.map +0 -1
  587. package/node_modules/@sudocode-ai/local-server/dist/services/project-registry.js +0 -289
  588. package/node_modules/@sudocode-ai/local-server/dist/services/project-registry.js.map +0 -1
  589. package/node_modules/@sudocode-ai/local-server/dist/services/prompt-resolver.d.ts +0 -97
  590. package/node_modules/@sudocode-ai/local-server/dist/services/prompt-resolver.d.ts.map +0 -1
  591. package/node_modules/@sudocode-ai/local-server/dist/services/prompt-resolver.js +0 -377
  592. package/node_modules/@sudocode-ai/local-server/dist/services/prompt-resolver.js.map +0 -1
  593. package/node_modules/@sudocode-ai/local-server/dist/services/prompt-template-engine.d.ts +0 -108
  594. package/node_modules/@sudocode-ai/local-server/dist/services/prompt-template-engine.d.ts.map +0 -1
  595. package/node_modules/@sudocode-ai/local-server/dist/services/prompt-template-engine.js +0 -212
  596. package/node_modules/@sudocode-ai/local-server/dist/services/prompt-template-engine.js.map +0 -1
  597. package/node_modules/@sudocode-ai/local-server/dist/services/prompt-templates.d.ts +0 -97
  598. package/node_modules/@sudocode-ai/local-server/dist/services/prompt-templates.d.ts.map +0 -1
  599. package/node_modules/@sudocode-ai/local-server/dist/services/prompt-templates.js +0 -236
  600. package/node_modules/@sudocode-ai/local-server/dist/services/prompt-templates.js.map +0 -1
  601. package/node_modules/@sudocode-ai/local-server/dist/services/relationships.d.ts +0 -35
  602. package/node_modules/@sudocode-ai/local-server/dist/services/relationships.d.ts.map +0 -1
  603. package/node_modules/@sudocode-ai/local-server/dist/services/relationships.js +0 -42
  604. package/node_modules/@sudocode-ai/local-server/dist/services/relationships.js.map +0 -1
  605. package/node_modules/@sudocode-ai/local-server/dist/services/repo-info.d.ts +0 -33
  606. package/node_modules/@sudocode-ai/local-server/dist/services/repo-info.d.ts.map +0 -1
  607. package/node_modules/@sudocode-ai/local-server/dist/services/repo-info.js +0 -136
  608. package/node_modules/@sudocode-ai/local-server/dist/services/repo-info.js.map +0 -1
  609. package/node_modules/@sudocode-ai/local-server/dist/services/specs.d.ts +0 -27
  610. package/node_modules/@sudocode-ai/local-server/dist/services/specs.d.ts.map +0 -1
  611. package/node_modules/@sudocode-ai/local-server/dist/services/specs.js +0 -35
  612. package/node_modules/@sudocode-ai/local-server/dist/services/specs.js.map +0 -1
  613. package/node_modules/@sudocode-ai/local-server/dist/services/stt-providers/index.d.ts +0 -21
  614. package/node_modules/@sudocode-ai/local-server/dist/services/stt-providers/index.d.ts.map +0 -1
  615. package/node_modules/@sudocode-ai/local-server/dist/services/stt-providers/index.js +0 -32
  616. package/node_modules/@sudocode-ai/local-server/dist/services/stt-providers/index.js.map +0 -1
  617. package/node_modules/@sudocode-ai/local-server/dist/services/stt-providers/openai-whisper.d.ts +0 -66
  618. package/node_modules/@sudocode-ai/local-server/dist/services/stt-providers/openai-whisper.d.ts.map +0 -1
  619. package/node_modules/@sudocode-ai/local-server/dist/services/stt-providers/openai-whisper.js +0 -137
  620. package/node_modules/@sudocode-ai/local-server/dist/services/stt-providers/openai-whisper.js.map +0 -1
  621. package/node_modules/@sudocode-ai/local-server/dist/services/stt-providers/whisper-local.d.ts +0 -64
  622. package/node_modules/@sudocode-ai/local-server/dist/services/stt-providers/whisper-local.d.ts.map +0 -1
  623. package/node_modules/@sudocode-ai/local-server/dist/services/stt-providers/whisper-local.js +0 -166
  624. package/node_modules/@sudocode-ai/local-server/dist/services/stt-providers/whisper-local.js.map +0 -1
  625. package/node_modules/@sudocode-ai/local-server/dist/services/stt-service.d.ts +0 -160
  626. package/node_modules/@sudocode-ai/local-server/dist/services/stt-service.d.ts.map +0 -1
  627. package/node_modules/@sudocode-ai/local-server/dist/services/stt-service.js +0 -246
  628. package/node_modules/@sudocode-ai/local-server/dist/services/stt-service.js.map +0 -1
  629. package/node_modules/@sudocode-ai/local-server/dist/services/tts-providers/browser-tts.d.ts +0 -64
  630. package/node_modules/@sudocode-ai/local-server/dist/services/tts-providers/browser-tts.d.ts.map +0 -1
  631. package/node_modules/@sudocode-ai/local-server/dist/services/tts-providers/browser-tts.js +0 -89
  632. package/node_modules/@sudocode-ai/local-server/dist/services/tts-providers/browser-tts.js.map +0 -1
  633. package/node_modules/@sudocode-ai/local-server/dist/services/tts-providers/index.d.ts +0 -20
  634. package/node_modules/@sudocode-ai/local-server/dist/services/tts-providers/index.d.ts.map +0 -1
  635. package/node_modules/@sudocode-ai/local-server/dist/services/tts-providers/index.js +0 -31
  636. package/node_modules/@sudocode-ai/local-server/dist/services/tts-providers/index.js.map +0 -1
  637. package/node_modules/@sudocode-ai/local-server/dist/services/tts-service.d.ts +0 -190
  638. package/node_modules/@sudocode-ai/local-server/dist/services/tts-service.d.ts.map +0 -1
  639. package/node_modules/@sudocode-ai/local-server/dist/services/tts-service.js +0 -296
  640. package/node_modules/@sudocode-ai/local-server/dist/services/tts-service.js.map +0 -1
  641. package/node_modules/@sudocode-ai/local-server/dist/services/tts-sidecar-manager.d.ts +0 -276
  642. package/node_modules/@sudocode-ai/local-server/dist/services/tts-sidecar-manager.d.ts.map +0 -1
  643. package/node_modules/@sudocode-ai/local-server/dist/services/tts-sidecar-manager.js +0 -665
  644. package/node_modules/@sudocode-ai/local-server/dist/services/tts-sidecar-manager.js.map +0 -1
  645. package/node_modules/@sudocode-ai/local-server/dist/services/version-service.d.ts +0 -14
  646. package/node_modules/@sudocode-ai/local-server/dist/services/version-service.d.ts.map +0 -1
  647. package/node_modules/@sudocode-ai/local-server/dist/services/version-service.js +0 -57
  648. package/node_modules/@sudocode-ai/local-server/dist/services/version-service.js.map +0 -1
  649. package/node_modules/@sudocode-ai/local-server/dist/services/watcher.d.ts +0 -49
  650. package/node_modules/@sudocode-ai/local-server/dist/services/watcher.d.ts.map +0 -1
  651. package/node_modules/@sudocode-ai/local-server/dist/services/watcher.js +0 -52
  652. package/node_modules/@sudocode-ai/local-server/dist/services/watcher.js.map +0 -1
  653. package/node_modules/@sudocode-ai/local-server/dist/services/websocket.d.ts +0 -246
  654. package/node_modules/@sudocode-ai/local-server/dist/services/websocket.d.ts.map +0 -1
  655. package/node_modules/@sudocode-ai/local-server/dist/services/websocket.js +0 -758
  656. package/node_modules/@sudocode-ai/local-server/dist/services/websocket.js.map +0 -1
  657. package/node_modules/@sudocode-ai/local-server/dist/services/workflow-broadcast-service.d.ts +0 -43
  658. package/node_modules/@sudocode-ai/local-server/dist/services/workflow-broadcast-service.d.ts.map +0 -1
  659. package/node_modules/@sudocode-ai/local-server/dist/services/workflow-broadcast-service.js +0 -155
  660. package/node_modules/@sudocode-ai/local-server/dist/services/workflow-broadcast-service.js.map +0 -1
  661. package/node_modules/@sudocode-ai/local-server/dist/services/worktree-sync-service.d.ts +0 -452
  662. package/node_modules/@sudocode-ai/local-server/dist/services/worktree-sync-service.d.ts.map +0 -1
  663. package/node_modules/@sudocode-ai/local-server/dist/services/worktree-sync-service.js +0 -1602
  664. package/node_modules/@sudocode-ai/local-server/dist/services/worktree-sync-service.js.map +0 -1
  665. package/node_modules/@sudocode-ai/local-server/dist/types/editor.d.ts +0 -49
  666. package/node_modules/@sudocode-ai/local-server/dist/types/editor.d.ts.map +0 -1
  667. package/node_modules/@sudocode-ai/local-server/dist/types/editor.js +0 -50
  668. package/node_modules/@sudocode-ai/local-server/dist/types/editor.js.map +0 -1
  669. package/node_modules/@sudocode-ai/local-server/dist/types/project.d.ts +0 -58
  670. package/node_modules/@sudocode-ai/local-server/dist/types/project.d.ts.map +0 -1
  671. package/node_modules/@sudocode-ai/local-server/dist/types/project.js +0 -10
  672. package/node_modules/@sudocode-ai/local-server/dist/types/project.js.map +0 -1
  673. package/node_modules/@sudocode-ai/local-server/dist/utils/execFileNoThrow.d.ts +0 -43
  674. package/node_modules/@sudocode-ai/local-server/dist/utils/execFileNoThrow.d.ts.map +0 -1
  675. package/node_modules/@sudocode-ai/local-server/dist/utils/execFileNoThrow.js +0 -53
  676. package/node_modules/@sudocode-ai/local-server/dist/utils/execFileNoThrow.js.map +0 -1
  677. package/node_modules/@sudocode-ai/local-server/dist/utils/executable-check.d.ts +0 -36
  678. package/node_modules/@sudocode-ai/local-server/dist/utils/executable-check.d.ts.map +0 -1
  679. package/node_modules/@sudocode-ai/local-server/dist/utils/executable-check.js +0 -79
  680. package/node_modules/@sudocode-ai/local-server/dist/utils/executable-check.js.map +0 -1
  681. package/node_modules/@sudocode-ai/local-server/dist/utils/sudocode-dir.d.ts +0 -6
  682. package/node_modules/@sudocode-ai/local-server/dist/utils/sudocode-dir.d.ts.map +0 -1
  683. package/node_modules/@sudocode-ai/local-server/dist/utils/sudocode-dir.js +0 -9
  684. package/node_modules/@sudocode-ai/local-server/dist/utils/sudocode-dir.js.map +0 -1
  685. package/node_modules/@sudocode-ai/local-server/dist/utils/voice-config.d.ts +0 -26
  686. package/node_modules/@sudocode-ai/local-server/dist/utils/voice-config.d.ts.map +0 -1
  687. package/node_modules/@sudocode-ai/local-server/dist/utils/voice-config.js +0 -48
  688. package/node_modules/@sudocode-ai/local-server/dist/utils/voice-config.js.map +0 -1
  689. package/node_modules/@sudocode-ai/local-server/dist/workers/execution-worker.d.ts +0 -18
  690. package/node_modules/@sudocode-ai/local-server/dist/workers/execution-worker.d.ts.map +0 -1
  691. package/node_modules/@sudocode-ai/local-server/dist/workers/execution-worker.js +0 -344
  692. package/node_modules/@sudocode-ai/local-server/dist/workers/execution-worker.js.map +0 -1
  693. package/node_modules/@sudocode-ai/local-server/dist/workers/worker-ipc.d.ts +0 -84
  694. package/node_modules/@sudocode-ai/local-server/dist/workers/worker-ipc.d.ts.map +0 -1
  695. package/node_modules/@sudocode-ai/local-server/dist/workers/worker-ipc.js +0 -29
  696. package/node_modules/@sudocode-ai/local-server/dist/workers/worker-ipc.js.map +0 -1
  697. package/node_modules/@sudocode-ai/local-server/dist/workflow/base-workflow-engine.d.ts +0 -188
  698. package/node_modules/@sudocode-ai/local-server/dist/workflow/base-workflow-engine.d.ts.map +0 -1
  699. package/node_modules/@sudocode-ai/local-server/dist/workflow/base-workflow-engine.js +0 -557
  700. package/node_modules/@sudocode-ai/local-server/dist/workflow/base-workflow-engine.js.map +0 -1
  701. package/node_modules/@sudocode-ai/local-server/dist/workflow/dependency-analyzer.d.ts +0 -78
  702. package/node_modules/@sudocode-ai/local-server/dist/workflow/dependency-analyzer.d.ts.map +0 -1
  703. package/node_modules/@sudocode-ai/local-server/dist/workflow/dependency-analyzer.js +0 -264
  704. package/node_modules/@sudocode-ai/local-server/dist/workflow/dependency-analyzer.js.map +0 -1
  705. package/node_modules/@sudocode-ai/local-server/dist/workflow/engines/orchestrator-engine.d.ts +0 -241
  706. package/node_modules/@sudocode-ai/local-server/dist/workflow/engines/orchestrator-engine.d.ts.map +0 -1
  707. package/node_modules/@sudocode-ai/local-server/dist/workflow/engines/orchestrator-engine.js +0 -752
  708. package/node_modules/@sudocode-ai/local-server/dist/workflow/engines/orchestrator-engine.js.map +0 -1
  709. package/node_modules/@sudocode-ai/local-server/dist/workflow/engines/sequential-engine.d.ts +0 -283
  710. package/node_modules/@sudocode-ai/local-server/dist/workflow/engines/sequential-engine.d.ts.map +0 -1
  711. package/node_modules/@sudocode-ai/local-server/dist/workflow/engines/sequential-engine.js +0 -1190
  712. package/node_modules/@sudocode-ai/local-server/dist/workflow/engines/sequential-engine.js.map +0 -1
  713. package/node_modules/@sudocode-ai/local-server/dist/workflow/index.d.ts +0 -15
  714. package/node_modules/@sudocode-ai/local-server/dist/workflow/index.d.ts.map +0 -1
  715. package/node_modules/@sudocode-ai/local-server/dist/workflow/index.js +0 -22
  716. package/node_modules/@sudocode-ai/local-server/dist/workflow/index.js.map +0 -1
  717. package/node_modules/@sudocode-ai/local-server/dist/workflow/mcp/api-client.d.ts +0 -103
  718. package/node_modules/@sudocode-ai/local-server/dist/workflow/mcp/api-client.d.ts.map +0 -1
  719. package/node_modules/@sudocode-ai/local-server/dist/workflow/mcp/api-client.js +0 -193
  720. package/node_modules/@sudocode-ai/local-server/dist/workflow/mcp/api-client.js.map +0 -1
  721. package/node_modules/@sudocode-ai/local-server/dist/workflow/mcp/index.d.ts +0 -16
  722. package/node_modules/@sudocode-ai/local-server/dist/workflow/mcp/index.d.ts.map +0 -1
  723. package/node_modules/@sudocode-ai/local-server/dist/workflow/mcp/index.js +0 -114
  724. package/node_modules/@sudocode-ai/local-server/dist/workflow/mcp/index.js.map +0 -1
  725. package/node_modules/@sudocode-ai/local-server/dist/workflow/mcp/server.d.ts +0 -85
  726. package/node_modules/@sudocode-ai/local-server/dist/workflow/mcp/server.d.ts.map +0 -1
  727. package/node_modules/@sudocode-ai/local-server/dist/workflow/mcp/server.js +0 -520
  728. package/node_modules/@sudocode-ai/local-server/dist/workflow/mcp/server.js.map +0 -1
  729. package/node_modules/@sudocode-ai/local-server/dist/workflow/mcp/tools/escalation.d.ts +0 -36
  730. package/node_modules/@sudocode-ai/local-server/dist/workflow/mcp/tools/escalation.d.ts.map +0 -1
  731. package/node_modules/@sudocode-ai/local-server/dist/workflow/mcp/tools/escalation.js +0 -47
  732. package/node_modules/@sudocode-ai/local-server/dist/workflow/mcp/tools/escalation.js.map +0 -1
  733. package/node_modules/@sudocode-ai/local-server/dist/workflow/mcp/tools/execution.d.ts +0 -59
  734. package/node_modules/@sudocode-ai/local-server/dist/workflow/mcp/tools/execution.d.ts.map +0 -1
  735. package/node_modules/@sudocode-ai/local-server/dist/workflow/mcp/tools/execution.js +0 -67
  736. package/node_modules/@sudocode-ai/local-server/dist/workflow/mcp/tools/execution.js.map +0 -1
  737. package/node_modules/@sudocode-ai/local-server/dist/workflow/mcp/tools/inspection.d.ts +0 -82
  738. package/node_modules/@sudocode-ai/local-server/dist/workflow/mcp/tools/inspection.d.ts.map +0 -1
  739. package/node_modules/@sudocode-ai/local-server/dist/workflow/mcp/tools/inspection.js +0 -57
  740. package/node_modules/@sudocode-ai/local-server/dist/workflow/mcp/tools/inspection.js.map +0 -1
  741. package/node_modules/@sudocode-ai/local-server/dist/workflow/mcp/tools/workflow.d.ts +0 -59
  742. package/node_modules/@sudocode-ai/local-server/dist/workflow/mcp/tools/workflow.d.ts.map +0 -1
  743. package/node_modules/@sudocode-ai/local-server/dist/workflow/mcp/tools/workflow.js +0 -40
  744. package/node_modules/@sudocode-ai/local-server/dist/workflow/mcp/tools/workflow.js.map +0 -1
  745. package/node_modules/@sudocode-ai/local-server/dist/workflow/mcp/types.d.ts +0 -345
  746. package/node_modules/@sudocode-ai/local-server/dist/workflow/mcp/types.d.ts.map +0 -1
  747. package/node_modules/@sudocode-ai/local-server/dist/workflow/mcp/types.js +0 -7
  748. package/node_modules/@sudocode-ai/local-server/dist/workflow/mcp/types.js.map +0 -1
  749. package/node_modules/@sudocode-ai/local-server/dist/workflow/services/prompt-builder.d.ts +0 -36
  750. package/node_modules/@sudocode-ai/local-server/dist/workflow/services/prompt-builder.d.ts.map +0 -1
  751. package/node_modules/@sudocode-ai/local-server/dist/workflow/services/prompt-builder.js +0 -329
  752. package/node_modules/@sudocode-ai/local-server/dist/workflow/services/prompt-builder.js.map +0 -1
  753. package/node_modules/@sudocode-ai/local-server/dist/workflow/services/wakeup-service.d.ts +0 -262
  754. package/node_modules/@sudocode-ai/local-server/dist/workflow/services/wakeup-service.d.ts.map +0 -1
  755. package/node_modules/@sudocode-ai/local-server/dist/workflow/services/wakeup-service.js +0 -809
  756. package/node_modules/@sudocode-ai/local-server/dist/workflow/services/wakeup-service.js.map +0 -1
  757. package/node_modules/@sudocode-ai/local-server/dist/workflow/workflow-engine.d.ts +0 -228
  758. package/node_modules/@sudocode-ai/local-server/dist/workflow/workflow-engine.d.ts.map +0 -1
  759. package/node_modules/@sudocode-ai/local-server/dist/workflow/workflow-engine.js +0 -94
  760. package/node_modules/@sudocode-ai/local-server/dist/workflow/workflow-engine.js.map +0 -1
  761. package/node_modules/@sudocode-ai/local-server/dist/workflow/workflow-event-emitter.d.ts +0 -278
  762. package/node_modules/@sudocode-ai/local-server/dist/workflow/workflow-event-emitter.d.ts.map +0 -1
  763. package/node_modules/@sudocode-ai/local-server/dist/workflow/workflow-event-emitter.js +0 -259
  764. package/node_modules/@sudocode-ai/local-server/dist/workflow/workflow-event-emitter.js.map +0 -1
  765. package/node_modules/@sudocode-ai/local-server/package.json +0 -83
  766. package/node_modules/@sudocode-ai/mcp/README.md +0 -226
  767. package/node_modules/@sudocode-ai/mcp/dist/api-client.d.ts +0 -296
  768. package/node_modules/@sudocode-ai/mcp/dist/api-client.d.ts.map +0 -1
  769. package/node_modules/@sudocode-ai/mcp/dist/api-client.js +0 -304
  770. package/node_modules/@sudocode-ai/mcp/dist/api-client.js.map +0 -1
  771. package/node_modules/@sudocode-ai/mcp/dist/client.d.ts +0 -33
  772. package/node_modules/@sudocode-ai/mcp/dist/client.d.ts.map +0 -1
  773. package/node_modules/@sudocode-ai/mcp/dist/client.js +0 -166
  774. package/node_modules/@sudocode-ai/mcp/dist/client.js.map +0 -1
  775. package/node_modules/@sudocode-ai/mcp/dist/index.d.ts +0 -6
  776. package/node_modules/@sudocode-ai/mcp/dist/index.d.ts.map +0 -1
  777. package/node_modules/@sudocode-ai/mcp/dist/index.js +0 -167
  778. package/node_modules/@sudocode-ai/mcp/dist/index.js.map +0 -1
  779. package/node_modules/@sudocode-ai/mcp/dist/scopes.d.ts +0 -126
  780. package/node_modules/@sudocode-ai/mcp/dist/scopes.d.ts.map +0 -1
  781. package/node_modules/@sudocode-ai/mcp/dist/scopes.js +0 -282
  782. package/node_modules/@sudocode-ai/mcp/dist/scopes.js.map +0 -1
  783. package/node_modules/@sudocode-ai/mcp/dist/server.d.ts +0 -37
  784. package/node_modules/@sudocode-ai/mcp/dist/server.d.ts.map +0 -1
  785. package/node_modules/@sudocode-ai/mcp/dist/server.js +0 -442
  786. package/node_modules/@sudocode-ai/mcp/dist/server.js.map +0 -1
  787. package/node_modules/@sudocode-ai/mcp/dist/tool-registry.d.ts +0 -49
  788. package/node_modules/@sudocode-ai/mcp/dist/tool-registry.d.ts.map +0 -1
  789. package/node_modules/@sudocode-ai/mcp/dist/tool-registry.js +0 -720
  790. package/node_modules/@sudocode-ai/mcp/dist/tool-registry.js.map +0 -1
  791. package/node_modules/@sudocode-ai/mcp/dist/tools/analytics.d.ts +0 -41
  792. package/node_modules/@sudocode-ai/mcp/dist/tools/analytics.d.ts.map +0 -1
  793. package/node_modules/@sudocode-ai/mcp/dist/tools/analytics.js +0 -21
  794. package/node_modules/@sudocode-ai/mcp/dist/tools/analytics.js.map +0 -1
  795. package/node_modules/@sudocode-ai/mcp/dist/tools/feedback.d.ts +0 -21
  796. package/node_modules/@sudocode-ai/mcp/dist/tools/feedback.d.ts.map +0 -1
  797. package/node_modules/@sudocode-ai/mcp/dist/tools/feedback.js +0 -30
  798. package/node_modules/@sudocode-ai/mcp/dist/tools/feedback.js.map +0 -1
  799. package/node_modules/@sudocode-ai/mcp/dist/tools/init.d.ts +0 -17
  800. package/node_modules/@sudocode-ai/mcp/dist/tools/init.d.ts.map +0 -1
  801. package/node_modules/@sudocode-ai/mcp/dist/tools/init.js +0 -15
  802. package/node_modules/@sudocode-ai/mcp/dist/tools/init.js.map +0 -1
  803. package/node_modules/@sudocode-ai/mcp/dist/tools/issues.d.ts +0 -44
  804. package/node_modules/@sudocode-ai/mcp/dist/tools/issues.d.ts.map +0 -1
  805. package/node_modules/@sudocode-ai/mcp/dist/tools/issues.js +0 -109
  806. package/node_modules/@sudocode-ai/mcp/dist/tools/issues.js.map +0 -1
  807. package/node_modules/@sudocode-ai/mcp/dist/tools/references.d.ts +0 -21
  808. package/node_modules/@sudocode-ai/mcp/dist/tools/references.d.ts.map +0 -1
  809. package/node_modules/@sudocode-ai/mcp/dist/tools/references.js +0 -49
  810. package/node_modules/@sudocode-ai/mcp/dist/tools/references.js.map +0 -1
  811. package/node_modules/@sudocode-ai/mcp/dist/tools/relationships.d.ts +0 -15
  812. package/node_modules/@sudocode-ai/mcp/dist/tools/relationships.d.ts.map +0 -1
  813. package/node_modules/@sudocode-ai/mcp/dist/tools/relationships.js +0 -18
  814. package/node_modules/@sudocode-ai/mcp/dist/tools/relationships.js.map +0 -1
  815. package/node_modules/@sudocode-ai/mcp/dist/tools/specs.d.ts +0 -35
  816. package/node_modules/@sudocode-ai/mcp/dist/tools/specs.d.ts.map +0 -1
  817. package/node_modules/@sudocode-ai/mcp/dist/tools/specs.js +0 -85
  818. package/node_modules/@sudocode-ai/mcp/dist/tools/specs.js.map +0 -1
  819. package/node_modules/@sudocode-ai/mcp/dist/types.d.ts +0 -46
  820. package/node_modules/@sudocode-ai/mcp/dist/types.d.ts.map +0 -1
  821. package/node_modules/@sudocode-ai/mcp/dist/types.js +0 -21
  822. package/node_modules/@sudocode-ai/mcp/dist/types.js.map +0 -1
  823. package/node_modules/@sudocode-ai/mcp/package.json +0 -67
  824. package/node_modules/@sudocode-ai/types/README.md +0 -7
  825. package/node_modules/@sudocode-ai/types/package.json +0 -81
  826. package/node_modules/@sudocode-ai/types/src/agents.d.ts +0 -348
  827. package/node_modules/@sudocode-ai/types/src/artifacts.d.ts +0 -66
  828. package/node_modules/@sudocode-ai/types/src/events.d.ts +0 -70
  829. package/node_modules/@sudocode-ai/types/src/index.d.ts +0 -587
  830. package/node_modules/@sudocode-ai/types/src/integrations.d.ts +0 -454
  831. package/node_modules/@sudocode-ai/types/src/voice.d.ts +0 -465
  832. package/node_modules/@sudocode-ai/types/src/workflows.d.ts +0 -501
  833. package/node_modules/commander/LICENSE +0 -22
  834. package/node_modules/commander/Readme.md +0 -1149
  835. package/node_modules/commander/esm.mjs +0 -16
  836. package/node_modules/commander/index.js +0 -24
  837. package/node_modules/commander/lib/argument.js +0 -149
  838. package/node_modules/commander/lib/command.js +0 -2662
  839. package/node_modules/commander/lib/error.js +0 -39
  840. package/node_modules/commander/lib/help.js +0 -709
  841. package/node_modules/commander/lib/option.js +0 -367
  842. package/node_modules/commander/lib/suggestSimilar.js +0 -101
  843. package/node_modules/commander/package-support.json +0 -16
  844. package/node_modules/commander/package.json +0 -82
  845. package/node_modules/commander/typings/esm.d.mts +0 -3
  846. package/node_modules/commander/typings/index.d.ts +0 -1045
  847. package/node_modules/glob/LICENSE +0 -15
  848. package/node_modules/glob/README.md +0 -1265
  849. package/node_modules/glob/package.json +0 -99
  850. package/node_modules/isexe/LICENSE +0 -15
  851. package/node_modules/isexe/README.md +0 -74
  852. package/node_modules/isexe/package.json +0 -96
  853. package/node_modules/which/LICENSE +0 -15
  854. package/node_modules/which/README.md +0 -51
  855. package/node_modules/which/bin/which.js +0 -52
  856. package/node_modules/which/lib/index.js +0 -111
  857. package/node_modules/which/package.json +0 -52
@@ -1,1730 +0,0 @@
1
- /**
2
- * Workflows API routes (mapped to /api/workflows)
3
- *
4
- * Note: All routes require X-Project-ID header via requireProject() middleware
5
- */
6
- import { Router } from "express";
7
- import { randomUUID } from "crypto";
8
- import { execSync } from "child_process";
9
- import * as fs from "fs";
10
- import { WorkflowNotFoundError, WorkflowStepNotFoundError, WorkflowStateError, WorkflowCycleError, } from "../workflow/workflow-engine.js";
11
- import { broadcastWorkflowUpdate, broadcastWorkflowStepUpdate, } from "../services/websocket.js";
12
- /**
13
- * Get the appropriate workflow engine based on engine type
14
- */
15
- function getEngine(req, engineType = "sequential") {
16
- return req.project?.getWorkflowEngine(engineType) ?? null;
17
- }
18
- /**
19
- * Get the workflow engine for an existing workflow by looking up its config
20
- */
21
- function getEngineForWorkflow(req, workflowId) {
22
- const db = req.project?.db;
23
- if (!db)
24
- return null;
25
- const row = db
26
- .prepare("SELECT config FROM workflows WHERE id = ?")
27
- .get(workflowId);
28
- if (!row)
29
- return null;
30
- try {
31
- const config = JSON.parse(row.config);
32
- const engineType = config.engineType ?? "sequential";
33
- console.log(`[workflows] getEngineForWorkflow: workflow=${workflowId}, engineType=${engineType}`);
34
- return getEngine(req, engineType);
35
- }
36
- catch {
37
- console.log(`[workflows] getEngineForWorkflow: workflow=${workflowId}, defaulting to sequential`);
38
- return getEngine(req, "sequential");
39
- }
40
- }
41
- /**
42
- * Helper to map workflow errors to HTTP status codes
43
- */
44
- function handleWorkflowError(error, res) {
45
- if (error instanceof WorkflowNotFoundError) {
46
- res.status(404).json({
47
- success: false,
48
- data: null,
49
- message: error.message,
50
- });
51
- return;
52
- }
53
- if (error instanceof WorkflowStepNotFoundError) {
54
- res.status(404).json({
55
- success: false,
56
- data: null,
57
- message: error.message,
58
- });
59
- return;
60
- }
61
- if (error instanceof WorkflowStateError) {
62
- res.status(400).json({
63
- success: false,
64
- data: null,
65
- message: error.message,
66
- });
67
- return;
68
- }
69
- if (error instanceof WorkflowCycleError) {
70
- res.status(400).json({
71
- success: false,
72
- data: null,
73
- message: error.message,
74
- cycles: error.cycles,
75
- });
76
- return;
77
- }
78
- // Generic error
79
- console.error("Workflow error:", error);
80
- res.status(500).json({
81
- success: false,
82
- data: null,
83
- error_data: error instanceof Error ? error.message : String(error),
84
- message: "Internal server error",
85
- });
86
- }
87
- export function createWorkflowsRouter() {
88
- const router = Router();
89
- /**
90
- * GET /api/workflows - List all workflows
91
- *
92
- * Query parameters:
93
- * - limit: number (default: 50)
94
- * - offset: number (default: 0)
95
- * - status: WorkflowStatus | WorkflowStatus[] (filter by status)
96
- * - sortBy: 'created_at' | 'updated_at' (default: 'created_at')
97
- * - order: 'asc' | 'desc' (default: 'desc')
98
- */
99
- router.get("/", async (req, res) => {
100
- try {
101
- // Use sequential engine for listing (just for the engine availability check)
102
- const engine = getEngine(req, "sequential");
103
- if (!engine) {
104
- res.status(503).json({
105
- success: false,
106
- data: null,
107
- message: "Workflow engine not available",
108
- });
109
- return;
110
- }
111
- // Parse query parameters
112
- const limit = req.query.limit
113
- ? parseInt(req.query.limit, 10)
114
- : 50;
115
- const offset = req.query.offset
116
- ? parseInt(req.query.offset, 10)
117
- : 0;
118
- const sortBy = req.query.sortBy || "created_at";
119
- const order = req.query.order || "desc";
120
- // Parse status filter (can be single value or array)
121
- let statusFilter;
122
- if (req.query.status) {
123
- const statusParam = req.query.status;
124
- if (Array.isArray(statusParam)) {
125
- statusFilter = statusParam;
126
- }
127
- else {
128
- statusFilter = [statusParam];
129
- }
130
- }
131
- // Query workflows directly from database
132
- const db = req.project.db;
133
- let query = `
134
- SELECT * FROM workflows
135
- WHERE 1=1
136
- `;
137
- const params = [];
138
- if (statusFilter && statusFilter.length > 0) {
139
- const placeholders = statusFilter.map(() => "?").join(", ");
140
- query += ` AND status IN (${placeholders})`;
141
- params.push(...statusFilter);
142
- }
143
- // Validate sortBy to prevent SQL injection
144
- const validSortColumns = ["created_at", "updated_at"];
145
- const sortColumn = validSortColumns.includes(sortBy)
146
- ? sortBy
147
- : "created_at";
148
- const sortOrder = order === "asc" ? "ASC" : "DESC";
149
- query += ` ORDER BY ${sortColumn} ${sortOrder}`;
150
- query += ` LIMIT ? OFFSET ?`;
151
- params.push(limit, offset);
152
- const rows = db.prepare(query).all(...params);
153
- // Parse JSON fields
154
- const workflows = rows.map((row) => ({
155
- id: row.id,
156
- title: row.title,
157
- source: JSON.parse(row.source),
158
- status: row.status,
159
- steps: JSON.parse(row.steps || "[]"),
160
- worktreePath: row.worktree_path,
161
- branchName: row.branch_name,
162
- baseBranch: row.base_branch,
163
- currentStepIndex: row.current_step_index,
164
- orchestratorExecutionId: row.orchestrator_execution_id,
165
- orchestratorSessionId: row.orchestrator_session_id,
166
- config: JSON.parse(row.config),
167
- createdAt: row.created_at,
168
- updatedAt: row.updated_at,
169
- startedAt: row.started_at,
170
- completedAt: row.completed_at,
171
- }));
172
- res.json({
173
- success: true,
174
- data: workflows,
175
- });
176
- }
177
- catch (error) {
178
- handleWorkflowError(error, res);
179
- }
180
- });
181
- /**
182
- * POST /api/workflows - Create a new workflow
183
- *
184
- * Request body:
185
- * - source: WorkflowSource (required)
186
- * - config: Partial<WorkflowConfig>
187
- */
188
- router.post("/", async (req, res) => {
189
- try {
190
- const { source, config } = req.body;
191
- // Determine engine type from config (default to sequential)
192
- const engineType = config?.engineType ?? "sequential";
193
- // Validate: "goal" source requires orchestrator engine
194
- if (source?.type === "goal" && engineType !== "orchestrator") {
195
- res.status(400).json({
196
- success: false,
197
- data: null,
198
- message: "Goal-based workflows require the orchestrator engine. Set config.engineType to 'orchestrator'.",
199
- });
200
- return;
201
- }
202
- const engine = getEngine(req, engineType);
203
- if (!engine) {
204
- res.status(503).json({
205
- success: false,
206
- data: null,
207
- message: `Workflow engine not available for type: ${engineType}`,
208
- });
209
- return;
210
- }
211
- // Validate source
212
- if (!source || !source.type) {
213
- res.status(400).json({
214
- success: false,
215
- data: null,
216
- message: "source is required and must have a type",
217
- });
218
- return;
219
- }
220
- // Validate source type
221
- const validSourceTypes = ["spec", "issues", "root_issue", "goal"];
222
- if (!validSourceTypes.includes(source.type)) {
223
- res.status(400).json({
224
- success: false,
225
- data: null,
226
- message: `Invalid source type: ${source.type}. Must be one of: ${validSourceTypes.join(", ")}`,
227
- });
228
- return;
229
- }
230
- // Validate source-specific fields
231
- if (source.type === "spec" && !("specId" in source)) {
232
- res.status(400).json({
233
- success: false,
234
- data: null,
235
- message: "source.specId is required for spec source type",
236
- });
237
- return;
238
- }
239
- if (source.type === "issues" && !("issueIds" in source)) {
240
- res.status(400).json({
241
- success: false,
242
- data: null,
243
- message: "source.issueIds is required for issues source type",
244
- });
245
- return;
246
- }
247
- if (source.type === "root_issue" && !("issueId" in source)) {
248
- res.status(400).json({
249
- success: false,
250
- data: null,
251
- message: "source.issueId is required for root_issue source type",
252
- });
253
- return;
254
- }
255
- if (source.type === "goal" && !("goal" in source)) {
256
- res.status(400).json({
257
- success: false,
258
- data: null,
259
- message: "source.goal is required for goal source type",
260
- });
261
- return;
262
- }
263
- // Create workflow
264
- const workflow = await engine.createWorkflow(source, config);
265
- // Broadcast creation
266
- broadcastWorkflowUpdate(req.project.id, workflow.id, "created", workflow);
267
- res.status(201).json({
268
- success: true,
269
- data: workflow,
270
- });
271
- }
272
- catch (error) {
273
- handleWorkflowError(error, res);
274
- }
275
- });
276
- /**
277
- * GET /api/workflows/:id - Get a specific workflow
278
- */
279
- router.get("/:id", async (req, res) => {
280
- try {
281
- const { id } = req.params;
282
- const engine = getEngineForWorkflow(req, id);
283
- if (!engine) {
284
- // Try sequential engine as fallback for listing
285
- const fallbackEngine = getEngine(req, "sequential");
286
- if (!fallbackEngine) {
287
- res.status(503).json({
288
- success: false,
289
- data: null,
290
- message: "Workflow engine not available",
291
- });
292
- return;
293
- }
294
- const workflow = await fallbackEngine.getWorkflow(id);
295
- if (!workflow) {
296
- res.status(404).json({
297
- success: false,
298
- data: null,
299
- message: `Workflow not found: ${id}`,
300
- });
301
- return;
302
- }
303
- res.json({ success: true, data: workflow });
304
- return;
305
- }
306
- const workflow = await engine.getWorkflow(id);
307
- if (!workflow) {
308
- res.status(404).json({
309
- success: false,
310
- data: null,
311
- message: `Workflow not found: ${id}`,
312
- });
313
- return;
314
- }
315
- res.json({
316
- success: true,
317
- data: workflow,
318
- });
319
- }
320
- catch (error) {
321
- handleWorkflowError(error, res);
322
- }
323
- });
324
- /**
325
- * DELETE /api/workflows/:id - Delete a workflow
326
- *
327
- * Query parameters:
328
- * - deleteWorktree: if "true", also delete the workflow's worktree
329
- * - deleteBranch: if "true", also delete the workflow's branch
330
- */
331
- router.delete("/:id", async (req, res) => {
332
- try {
333
- const { id } = req.params;
334
- const { deleteWorktree, deleteBranch } = req.query;
335
- const engine = getEngineForWorkflow(req, id);
336
- if (!engine) {
337
- res.status(503).json({
338
- success: false,
339
- data: null,
340
- message: "Workflow engine not available",
341
- });
342
- return;
343
- }
344
- // Check if workflow exists
345
- const workflow = await engine.getWorkflow(id);
346
- if (!workflow) {
347
- res.status(404).json({
348
- success: false,
349
- data: null,
350
- message: `Workflow not found: ${id}`,
351
- });
352
- return;
353
- }
354
- // Cancel if running before deleting
355
- if (workflow.status === "running" || workflow.status === "paused") {
356
- await engine.cancelWorkflow(id);
357
- }
358
- // Track cleanup results
359
- const cleanupResults = {};
360
- const cleanupErrors = [];
361
- const repoPath = req.project.path;
362
- // Delete worktree if requested
363
- if (deleteWorktree === "true" && workflow.worktreePath) {
364
- try {
365
- // Remove git worktree registration
366
- execSync(`git worktree remove --force "${workflow.worktreePath}"`, {
367
- cwd: repoPath,
368
- stdio: "pipe",
369
- });
370
- cleanupResults.worktreeDeleted = true;
371
- console.log(`[workflows/:id] Deleted worktree: ${workflow.worktreePath}`);
372
- }
373
- catch (worktreeError) {
374
- // Worktree might already be removed, try to clean up the directory
375
- try {
376
- if (fs.existsSync(workflow.worktreePath)) {
377
- fs.rmSync(workflow.worktreePath, { recursive: true, force: true });
378
- cleanupResults.worktreeDeleted = true;
379
- console.log(`[workflows/:id] Removed worktree directory: ${workflow.worktreePath}`);
380
- }
381
- // Prune stale worktree entries
382
- execSync("git worktree prune", { cwd: repoPath, stdio: "pipe" });
383
- }
384
- catch (cleanupError) {
385
- const errorMsg = worktreeError instanceof Error
386
- ? worktreeError.message
387
- : String(worktreeError);
388
- cleanupErrors.push(`Failed to delete worktree: ${errorMsg}`);
389
- console.error(`[workflows/:id] Failed to delete worktree ${workflow.worktreePath}:`, worktreeError);
390
- }
391
- }
392
- }
393
- // Delete branch if requested
394
- if (deleteBranch === "true" && workflow.branchName) {
395
- try {
396
- execSync(`git branch -D "${workflow.branchName}"`, {
397
- cwd: repoPath,
398
- stdio: "pipe",
399
- });
400
- cleanupResults.branchDeleted = true;
401
- console.log(`[workflows/:id] Deleted branch: ${workflow.branchName}`);
402
- }
403
- catch (branchError) {
404
- const errorMsg = branchError instanceof Error
405
- ? branchError.message
406
- : String(branchError);
407
- cleanupErrors.push(`Failed to delete branch: ${errorMsg}`);
408
- console.error(`[workflows/:id] Failed to delete branch ${workflow.branchName}:`, branchError);
409
- }
410
- }
411
- if (cleanupErrors.length > 0) {
412
- cleanupResults.cleanupErrors = cleanupErrors;
413
- }
414
- // Delete from database
415
- const db = req.project.db;
416
- db.prepare("DELETE FROM workflow_events WHERE workflow_id = ?").run(id);
417
- db.prepare("DELETE FROM workflows WHERE id = ?").run(id);
418
- // Broadcast deletion
419
- broadcastWorkflowUpdate(req.project.id, id, "deleted", { id });
420
- res.json({
421
- success: true,
422
- data: { id, deleted: true, ...cleanupResults },
423
- });
424
- }
425
- catch (error) {
426
- handleWorkflowError(error, res);
427
- }
428
- });
429
- /**
430
- * POST /api/workflows/:id/start - Start a pending workflow
431
- */
432
- router.post("/:id/start", async (req, res) => {
433
- try {
434
- const { id } = req.params;
435
- const engine = getEngineForWorkflow(req, id);
436
- if (!engine) {
437
- res.status(503).json({
438
- success: false,
439
- data: null,
440
- message: "Workflow engine not available",
441
- });
442
- return;
443
- }
444
- await engine.startWorkflow(id);
445
- const workflow = await engine.getWorkflow(id);
446
- broadcastWorkflowUpdate(req.project.id, id, "started", workflow);
447
- res.json({
448
- success: true,
449
- data: workflow,
450
- });
451
- }
452
- catch (error) {
453
- handleWorkflowError(error, res);
454
- }
455
- });
456
- /**
457
- * POST /api/workflows/:id/pause - Pause a running workflow
458
- */
459
- router.post("/:id/pause", async (req, res) => {
460
- try {
461
- const { id } = req.params;
462
- const engine = getEngineForWorkflow(req, id);
463
- if (!engine) {
464
- res.status(503).json({
465
- success: false,
466
- data: null,
467
- message: "Workflow engine not available",
468
- });
469
- return;
470
- }
471
- await engine.pauseWorkflow(id);
472
- const workflow = await engine.getWorkflow(id);
473
- broadcastWorkflowUpdate(req.project.id, id, "paused", workflow);
474
- res.json({
475
- success: true,
476
- data: workflow,
477
- });
478
- }
479
- catch (error) {
480
- handleWorkflowError(error, res);
481
- }
482
- });
483
- /**
484
- * POST /api/workflows/:id/resume - Resume a paused workflow
485
- *
486
- * Body:
487
- * - message?: string - Optional message to send to the orchestrator on resume
488
- */
489
- router.post("/:id/resume", async (req, res) => {
490
- try {
491
- const { id } = req.params;
492
- const { message } = req.body;
493
- const engine = getEngineForWorkflow(req, id);
494
- if (!engine) {
495
- res.status(503).json({
496
- success: false,
497
- data: null,
498
- message: "Workflow engine not available",
499
- });
500
- return;
501
- }
502
- await engine.resumeWorkflow(id, message);
503
- const workflow = await engine.getWorkflow(id);
504
- broadcastWorkflowUpdate(req.project.id, id, "resumed", workflow);
505
- res.json({
506
- success: true,
507
- data: workflow,
508
- });
509
- }
510
- catch (error) {
511
- handleWorkflowError(error, res);
512
- }
513
- });
514
- /**
515
- * POST /api/workflows/:id/cancel - Cancel a workflow
516
- */
517
- router.post("/:id/cancel", async (req, res) => {
518
- try {
519
- const { id } = req.params;
520
- const engine = getEngineForWorkflow(req, id);
521
- if (!engine) {
522
- res.status(503).json({
523
- success: false,
524
- data: null,
525
- message: "Workflow engine not available",
526
- });
527
- return;
528
- }
529
- await engine.cancelWorkflow(id);
530
- const workflow = await engine.getWorkflow(id);
531
- broadcastWorkflowUpdate(req.project.id, id, "cancelled", workflow);
532
- res.json({
533
- success: true,
534
- data: workflow,
535
- });
536
- }
537
- catch (error) {
538
- handleWorkflowError(error, res);
539
- }
540
- });
541
- /**
542
- * POST /api/workflows/:id/steps/:stepId/retry - Retry a failed step
543
- */
544
- router.post("/:id/steps/:stepId/retry", async (req, res) => {
545
- try {
546
- const { id, stepId } = req.params;
547
- const { freshStart } = req.body || {};
548
- const engine = getEngineForWorkflow(req, id);
549
- if (!engine) {
550
- res.status(503).json({
551
- success: false,
552
- data: null,
553
- message: "Workflow engine not available",
554
- });
555
- return;
556
- }
557
- await engine.retryStep(id, stepId, { freshStart: freshStart === true });
558
- const workflow = await engine.getWorkflow(id);
559
- const step = workflow?.steps.find((s) => s.id === stepId);
560
- if (step) {
561
- broadcastWorkflowStepUpdate(req.project.id, id, "started", {
562
- workflow,
563
- step,
564
- });
565
- }
566
- res.json({
567
- success: true,
568
- data: workflow,
569
- });
570
- }
571
- catch (error) {
572
- handleWorkflowError(error, res);
573
- }
574
- });
575
- /**
576
- * POST /api/workflows/:id/steps/:stepId/skip - Skip a step
577
- *
578
- * Request body:
579
- * - reason: string (optional)
580
- */
581
- router.post("/:id/steps/:stepId/skip", async (req, res) => {
582
- try {
583
- const { id, stepId } = req.params;
584
- const { reason } = req.body;
585
- const engine = getEngineForWorkflow(req, id);
586
- if (!engine) {
587
- res.status(503).json({
588
- success: false,
589
- data: null,
590
- message: "Workflow engine not available",
591
- });
592
- return;
593
- }
594
- await engine.skipStep(id, stepId, reason);
595
- const workflow = await engine.getWorkflow(id);
596
- const step = workflow?.steps.find((s) => s.id === stepId);
597
- if (step) {
598
- broadcastWorkflowStepUpdate(req.project.id, id, "skipped", {
599
- workflow,
600
- step,
601
- reason,
602
- });
603
- }
604
- res.json({
605
- success: true,
606
- data: workflow,
607
- });
608
- }
609
- catch (error) {
610
- handleWorkflowError(error, res);
611
- }
612
- });
613
- /**
614
- * GET /api/workflows/:id/events - Get workflow event history
615
- *
616
- * Query parameters:
617
- * - limit: number (default: 100)
618
- * - offset: number (default: 0)
619
- */
620
- router.get("/:id/events", async (req, res) => {
621
- try {
622
- const { id } = req.params;
623
- const engine = getEngineForWorkflow(req, id);
624
- if (!engine) {
625
- res.status(503).json({
626
- success: false,
627
- data: null,
628
- message: "Workflow engine not available",
629
- });
630
- return;
631
- }
632
- // Check if workflow exists
633
- const workflow = await engine.getWorkflow(id);
634
- if (!workflow) {
635
- res.status(404).json({
636
- success: false,
637
- data: null,
638
- message: `Workflow not found: ${id}`,
639
- });
640
- return;
641
- }
642
- // Parse query parameters
643
- const limit = req.query.limit
644
- ? parseInt(req.query.limit, 10)
645
- : 100;
646
- const offset = req.query.offset
647
- ? parseInt(req.query.offset, 10)
648
- : 0;
649
- // Query events from database
650
- const db = req.project.db;
651
- const rows = db
652
- .prepare(`
653
- SELECT * FROM workflow_events
654
- WHERE workflow_id = ?
655
- ORDER BY created_at DESC
656
- LIMIT ? OFFSET ?
657
- `)
658
- .all(id, limit, offset);
659
- // Parse JSON fields
660
- const events = rows.map((row) => ({
661
- id: row.id,
662
- workflowId: row.workflow_id,
663
- type: row.type,
664
- stepId: row.step_id,
665
- executionId: row.execution_id,
666
- payload: JSON.parse(row.payload || "{}"),
667
- createdAt: row.created_at,
668
- processedAt: row.processed_at,
669
- }));
670
- res.json({
671
- success: true,
672
- data: events,
673
- });
674
- }
675
- catch (error) {
676
- handleWorkflowError(error, res);
677
- }
678
- });
679
- /**
680
- * GET /api/workflows/:id/escalation - Get pending escalation for workflow
681
- */
682
- router.get("/:id/escalation", async (req, res) => {
683
- try {
684
- const { id } = req.params;
685
- const db = req.project.db;
686
- // Check if workflow exists
687
- const workflowExists = db
688
- .prepare("SELECT 1 FROM workflows WHERE id = ?")
689
- .get(id);
690
- if (!workflowExists) {
691
- res.status(404).json({
692
- success: false,
693
- data: null,
694
- message: `Workflow not found: ${id}`,
695
- });
696
- return;
697
- }
698
- // Query for pending escalation (same logic as respond endpoint)
699
- const pendingEscalation = db
700
- .prepare(`
701
- SELECT payload FROM workflow_events
702
- WHERE workflow_id = ?
703
- AND type = 'escalation_requested'
704
- AND json_extract(payload, '$.escalation_id') NOT IN (
705
- SELECT json_extract(payload, '$.escalation_id')
706
- FROM workflow_events
707
- WHERE workflow_id = ?
708
- AND type = 'escalation_resolved'
709
- )
710
- ORDER BY created_at DESC
711
- LIMIT 1
712
- `)
713
- .get(id, id);
714
- if (!pendingEscalation) {
715
- res.json({
716
- success: true,
717
- data: { hasPendingEscalation: false },
718
- });
719
- return;
720
- }
721
- const payload = JSON.parse(pendingEscalation.payload);
722
- res.json({
723
- success: true,
724
- data: {
725
- hasPendingEscalation: true,
726
- escalation: {
727
- requestId: payload.escalation_id,
728
- message: payload.message,
729
- options: payload.options,
730
- context: payload.context,
731
- },
732
- },
733
- });
734
- }
735
- catch (error) {
736
- handleWorkflowError(error, res);
737
- }
738
- });
739
- /**
740
- * POST /api/workflows/:id/escalation/respond - Respond to a pending escalation
741
- *
742
- * Request body:
743
- * - action: 'approve' | 'reject' | 'custom' (required)
744
- * - message: string (optional)
745
- */
746
- router.post("/:id/escalation/respond", async (req, res) => {
747
- try {
748
- const { id } = req.params;
749
- const { action, message } = req.body;
750
- // Validate action
751
- const validActions = ["approve", "reject", "custom"];
752
- if (!action || !validActions.includes(action)) {
753
- res.status(400).json({
754
- success: false,
755
- data: null,
756
- message: `action is required and must be one of: ${validActions.join(", ")}`,
757
- });
758
- return;
759
- }
760
- // Get workflow from database
761
- const db = req.project.db;
762
- const workflowRow = db
763
- .prepare("SELECT * FROM workflows WHERE id = ?")
764
- .get(id);
765
- if (!workflowRow) {
766
- res.status(404).json({
767
- success: false,
768
- data: null,
769
- message: `Workflow not found: ${id}`,
770
- });
771
- return;
772
- }
773
- // Check for pending escalation by querying events
774
- const pendingEscalation = db
775
- .prepare(`
776
- SELECT payload FROM workflow_events
777
- WHERE workflow_id = ?
778
- AND type = 'escalation_requested'
779
- AND json_extract(payload, '$.escalation_id') NOT IN (
780
- SELECT json_extract(payload, '$.escalation_id')
781
- FROM workflow_events
782
- WHERE workflow_id = ?
783
- AND type = 'escalation_resolved'
784
- )
785
- ORDER BY created_at DESC
786
- LIMIT 1
787
- `)
788
- .get(id, id);
789
- if (!pendingEscalation) {
790
- res.status(400).json({
791
- success: false,
792
- data: null,
793
- message: `No pending escalation for workflow: ${id}`,
794
- });
795
- return;
796
- }
797
- // Parse escalation data from event
798
- const escalationPayload = JSON.parse(pendingEscalation.payload);
799
- const now = new Date().toISOString();
800
- // Record escalation_resolved event
801
- const eventId = randomUUID();
802
- db.prepare(`
803
- INSERT INTO workflow_events (id, workflow_id, type, payload, created_at)
804
- VALUES (?, ?, ?, ?, ?)
805
- `).run(eventId, id, "escalation_resolved", JSON.stringify({
806
- escalation_id: escalationPayload.escalation_id,
807
- action,
808
- message,
809
- responded_at: now,
810
- }), now);
811
- // Emit escalation resolved event for WebSocket broadcast
812
- const engine = getEngineForWorkflow(req, id);
813
- if (engine) {
814
- engine.emitEscalationResolved(id, escalationPayload.escalation_id, action, message);
815
- }
816
- // Trigger orchestrator wakeup if available (only on orchestrator engine)
817
- if (engine && "triggerEscalationWakeup" in engine) {
818
- try {
819
- await engine.triggerEscalationWakeup(id);
820
- }
821
- catch (wakeupError) {
822
- console.error("Failed to trigger escalation wakeup:", wakeupError);
823
- // Don't fail the response - escalation is still resolved
824
- }
825
- }
826
- // Parse and return workflow
827
- const workflow = {
828
- id: workflowRow.id,
829
- title: workflowRow.title,
830
- source: JSON.parse(workflowRow.source),
831
- status: workflowRow.status,
832
- steps: JSON.parse(workflowRow.steps || "[]"),
833
- worktreePath: workflowRow.worktree_path,
834
- branchName: workflowRow.branch_name,
835
- baseBranch: workflowRow.base_branch,
836
- currentStepIndex: workflowRow.current_step_index,
837
- orchestratorExecutionId: workflowRow.orchestrator_execution_id,
838
- orchestratorSessionId: workflowRow.orchestrator_session_id,
839
- config: JSON.parse(workflowRow.config),
840
- createdAt: workflowRow.created_at,
841
- updatedAt: workflowRow.updated_at,
842
- startedAt: workflowRow.started_at,
843
- completedAt: workflowRow.completed_at,
844
- };
845
- // Broadcast update
846
- broadcastWorkflowUpdate(req.project.id, id, "updated", workflow);
847
- res.json({
848
- success: true,
849
- data: {
850
- workflow,
851
- escalation: {
852
- id: escalationPayload.escalation_id,
853
- action,
854
- message,
855
- resolvedAt: now,
856
- },
857
- },
858
- message: `Escalation resolved with action: ${action}`,
859
- });
860
- }
861
- catch (error) {
862
- handleWorkflowError(error, res);
863
- }
864
- });
865
- /**
866
- * POST /api/workflows/:id/escalation/notify - Internal endpoint for MCP tool to notify of new escalation
867
- *
868
- * This endpoint is called by the workflow MCP server when an escalation is created.
869
- * It broadcasts the escalation_requested event via WebSocket.
870
- *
871
- * Request body:
872
- * - escalation_id: string (required)
873
- * - message: string (required)
874
- * - options?: string[]
875
- * - context?: Record<string, unknown>
876
- */
877
- router.post("/:id/escalation/notify", async (req, res) => {
878
- try {
879
- const { id } = req.params;
880
- const { escalation_id, message, options, context } = req.body;
881
- if (!escalation_id || !message) {
882
- res.status(400).json({
883
- success: false,
884
- data: null,
885
- message: "escalation_id and message are required",
886
- });
887
- return;
888
- }
889
- // Verify workflow exists
890
- const db = req.project.db;
891
- const workflowExists = db
892
- .prepare("SELECT 1 FROM workflows WHERE id = ?")
893
- .get(id);
894
- if (!workflowExists) {
895
- res.status(404).json({
896
- success: false,
897
- data: null,
898
- message: `Workflow not found: ${id}`,
899
- });
900
- return;
901
- }
902
- // Emit escalation requested event for WebSocket broadcast
903
- const engine = getEngineForWorkflow(req, id);
904
- if (engine) {
905
- engine.emitEscalationRequested(id, escalation_id, message, options, context);
906
- }
907
- res.json({
908
- success: true,
909
- data: { notified: true },
910
- message: "Escalation notification broadcast",
911
- });
912
- }
913
- catch (error) {
914
- handleWorkflowError(error, res);
915
- }
916
- });
917
- // ===========================================================================
918
- // MCP Server Endpoints
919
- // These endpoints are called by the workflow MCP server instead of direct DB access
920
- // ===========================================================================
921
- /**
922
- * GET /api/workflows/:id/status - Get extended workflow status for orchestrator
923
- *
924
- * Returns workflow with steps, active executions, and ready steps.
925
- * Used by workflow_status MCP tool.
926
- */
927
- router.get("/:id/status", async (req, res) => {
928
- try {
929
- const { id } = req.params;
930
- const engine = getEngineForWorkflow(req, id);
931
- if (!engine) {
932
- res.status(503).json({
933
- success: false,
934
- data: null,
935
- message: "Workflow engine not available",
936
- });
937
- return;
938
- }
939
- const workflow = await engine.getWorkflow(id);
940
- if (!workflow) {
941
- res.status(404).json({
942
- success: false,
943
- data: null,
944
- message: `Workflow not found: ${id}`,
945
- });
946
- return;
947
- }
948
- // Get ready steps
949
- const readySteps = await engine.getReadySteps(id);
950
- const readyStepIds = readySteps.map((s) => s.id);
951
- // Get active executions from steps
952
- const db = req.project.db;
953
- const activeExecutionIds = workflow.steps
954
- .filter((s) => s.status === "running" && s.executionId)
955
- .map((s) => s.executionId);
956
- const activeExecutions = [];
957
- for (const execId of activeExecutionIds) {
958
- const exec = db
959
- .prepare("SELECT id, status, started_at FROM executions WHERE id = ?")
960
- .get(execId);
961
- if (exec) {
962
- const step = workflow.steps.find((s) => s.executionId === execId);
963
- activeExecutions.push({
964
- id: exec.id,
965
- stepId: step?.id || "",
966
- status: exec.status,
967
- startedAt: exec.started_at,
968
- });
969
- }
970
- }
971
- // Get issue titles for steps
972
- const issueIds = workflow.steps.map((s) => s.issueId);
973
- const issueTitles = {};
974
- if (issueIds.length > 0) {
975
- const placeholders = issueIds.map(() => "?").join(",");
976
- const issues = db
977
- .prepare(`SELECT id, title FROM issues WHERE id IN (${placeholders})`)
978
- .all(...issueIds);
979
- for (const issue of issues) {
980
- issueTitles[issue.id] = issue.title;
981
- }
982
- }
983
- // Build response matching WorkflowStatusResult type
984
- const result = {
985
- workflow: {
986
- id: workflow.id,
987
- title: workflow.title,
988
- status: workflow.status,
989
- source: workflow.source,
990
- config: workflow.config,
991
- worktreePath: workflow.worktreePath,
992
- },
993
- steps: workflow.steps.map((s) => ({
994
- id: s.id,
995
- issueId: s.issueId,
996
- issueTitle: issueTitles[s.issueId] || s.issueId,
997
- status: s.status,
998
- executionId: s.executionId,
999
- dependsOn: s.dependencies || [],
1000
- })),
1001
- activeExecutions,
1002
- readySteps: readyStepIds,
1003
- };
1004
- res.json({
1005
- success: true,
1006
- data: result,
1007
- });
1008
- }
1009
- catch (error) {
1010
- handleWorkflowError(error, res);
1011
- }
1012
- });
1013
- /**
1014
- * POST /api/workflows/:id/execute - Execute an issue within the workflow
1015
- *
1016
- * Used by execute_issue MCP tool.
1017
- *
1018
- * Request body:
1019
- * - issue_id: string (required)
1020
- * - agent_type?: AgentType
1021
- * - model?: string
1022
- * - worktree_mode: 'create_root' | 'use_root' | 'create_branch' | 'use_branch'
1023
- * - worktree_id?: string (for use_root/use_branch)
1024
- */
1025
- router.post("/:id/execute", async (req, res) => {
1026
- try {
1027
- const { id: workflowId } = req.params;
1028
- const engine = getEngineForWorkflow(req, workflowId);
1029
- if (!engine) {
1030
- res.status(503).json({
1031
- success: false,
1032
- data: null,
1033
- message: "Workflow engine not available",
1034
- });
1035
- return;
1036
- }
1037
- const { issue_id, agent_type, model, worktree_mode, worktree_id } = req.body;
1038
- // Validate required params
1039
- if (!issue_id) {
1040
- res.status(400).json({
1041
- success: false,
1042
- data: null,
1043
- message: "issue_id is required",
1044
- });
1045
- return;
1046
- }
1047
- if (!worktree_mode) {
1048
- res.status(400).json({
1049
- success: false,
1050
- data: null,
1051
- message: "worktree_mode is required",
1052
- });
1053
- return;
1054
- }
1055
- // Get workflow
1056
- const workflow = await engine.getWorkflow(workflowId);
1057
- if (!workflow) {
1058
- res.status(404).json({
1059
- success: false,
1060
- data: null,
1061
- message: `Workflow not found: ${workflowId}`,
1062
- });
1063
- return;
1064
- }
1065
- // Validate workflow is running
1066
- if (workflow.status !== "running") {
1067
- res.status(400).json({
1068
- success: false,
1069
- data: null,
1070
- message: `Cannot execute issue: workflow is ${workflow.status}, expected running`,
1071
- });
1072
- return;
1073
- }
1074
- // Find step for this issue
1075
- const step = workflow.steps.find((s) => s.issueId === issue_id);
1076
- if (!step) {
1077
- res.status(400).json({
1078
- success: false,
1079
- data: null,
1080
- message: `Issue ${issue_id} is not part of workflow ${workflowId}`,
1081
- });
1082
- return;
1083
- }
1084
- // Validate step status
1085
- if (step.status !== "pending" && step.status !== "ready") {
1086
- res.status(400).json({
1087
- success: false,
1088
- data: null,
1089
- message: `Cannot execute step: status is ${step.status}, expected pending or ready`,
1090
- });
1091
- return;
1092
- }
1093
- // Get issue
1094
- const db = req.project.db;
1095
- const issue = db
1096
- .prepare("SELECT id, title, content FROM issues WHERE id = ?")
1097
- .get(issue_id);
1098
- if (!issue) {
1099
- res.status(404).json({
1100
- success: false,
1101
- data: null,
1102
- message: `Issue not found: ${issue_id}`,
1103
- });
1104
- return;
1105
- }
1106
- // Determine worktree configuration
1107
- let reuseWorktreePath;
1108
- if (worktree_mode === "use_root" || worktree_mode === "use_branch") {
1109
- if (!worktree_id) {
1110
- res.status(400).json({
1111
- success: false,
1112
- data: null,
1113
- message: `worktree_id is required for ${worktree_mode} mode`,
1114
- });
1115
- return;
1116
- }
1117
- // Look up the execution to get the worktree path
1118
- const existingExecution = req
1119
- .project.db.prepare("SELECT worktree_path FROM executions WHERE id = ?")
1120
- .get(worktree_id);
1121
- if (!existingExecution?.worktree_path) {
1122
- res.status(400).json({
1123
- success: false,
1124
- data: null,
1125
- message: `Execution ${worktree_id} not found or has no worktree`,
1126
- });
1127
- return;
1128
- }
1129
- reuseWorktreePath = existingExecution.worktree_path;
1130
- }
1131
- else if (worktree_mode === "create_root" &&
1132
- workflow.config.reuseWorktreePath) {
1133
- // For the first execution, use workflow config's reuseWorktreePath if set
1134
- // (e.g., when user selected an existing worktree when creating the workflow)
1135
- reuseWorktreePath = workflow.config.reuseWorktreePath;
1136
- }
1137
- // Build execution config
1138
- const agentTypeToUse = agent_type || workflow.config.defaultAgentType || "claude-code";
1139
- const executionConfig = {
1140
- mode: "worktree",
1141
- model: model || workflow.config.orchestratorModel,
1142
- baseBranch: workflow.baseBranch,
1143
- reuseWorktreePath,
1144
- // Workflow-spawned executions run autonomously without terminal
1145
- dangerouslySkipPermissions: true,
1146
- };
1147
- // Create prompt from issue content
1148
- const prompt = issue.content || `Implement issue: ${issue.title}`;
1149
- // Create execution with workflow context
1150
- const executionService = req.project.executionService;
1151
- const execution = await executionService.createExecution(issue_id, executionConfig, prompt, agentTypeToUse, { workflowId, stepId: step.id });
1152
- // Update step status and execution ID
1153
- const updatedSteps = workflow.steps.map((s) => s.id === step.id
1154
- ? { ...s, status: "running", executionId: execution.id }
1155
- : s);
1156
- db.prepare("UPDATE workflows SET steps = ?, updated_at = ? WHERE id = ?").run(JSON.stringify(updatedSteps), new Date().toISOString(), workflowId);
1157
- // Store worktree path on workflow for create_root mode
1158
- if (worktree_mode === "create_root" && execution.worktree_path) {
1159
- db.prepare("UPDATE workflows SET worktree_path = ?, branch_name = ?, updated_at = ? WHERE id = ?").run(execution.worktree_path, execution.branch_name, new Date().toISOString(), workflowId);
1160
- }
1161
- // Emit step started event
1162
- engine.emitStepStarted(workflowId, {
1163
- ...step,
1164
- status: "running",
1165
- executionId: execution.id,
1166
- });
1167
- // Start execution timeout if configured (orchestrator workflows only)
1168
- if (workflow.config.executionTimeoutMs &&
1169
- "getWakeupService" in engine &&
1170
- typeof engine.getWakeupService === "function") {
1171
- const wakeupService = engine.getWakeupService();
1172
- wakeupService.startExecutionTimeout(execution.id, workflowId, step.id, workflow.config.executionTimeoutMs);
1173
- }
1174
- console.log(`[workflows/:id/execute] Started execution ${execution.id} for issue ${issue_id} in workflow ${workflowId}`);
1175
- res.json({
1176
- success: true,
1177
- data: {
1178
- execution_id: execution.id,
1179
- worktree_path: execution.worktree_path || "",
1180
- branch_name: execution.branch_name,
1181
- status: execution.status,
1182
- },
1183
- });
1184
- }
1185
- catch (error) {
1186
- handleWorkflowError(error, res);
1187
- }
1188
- });
1189
- /**
1190
- * POST /api/workflows/:id/complete - Mark workflow as complete or failed
1191
- *
1192
- * Used by workflow_complete MCP tool.
1193
- *
1194
- * Request body:
1195
- * - summary: string (required)
1196
- * - status?: 'completed' | 'failed' (default: 'completed')
1197
- */
1198
- router.post("/:id/complete", async (req, res) => {
1199
- try {
1200
- const { id: workflowId } = req.params;
1201
- const engine = getEngineForWorkflow(req, workflowId);
1202
- if (!engine) {
1203
- res.status(503).json({
1204
- success: false,
1205
- data: null,
1206
- message: "Workflow engine not available",
1207
- });
1208
- return;
1209
- }
1210
- const { summary, status = "completed" } = req.body;
1211
- if (!summary) {
1212
- res.status(400).json({
1213
- success: false,
1214
- data: null,
1215
- message: "summary is required",
1216
- });
1217
- return;
1218
- }
1219
- // Get workflow
1220
- const workflow = await engine.getWorkflow(workflowId);
1221
- if (!workflow) {
1222
- res.status(404).json({
1223
- success: false,
1224
- data: null,
1225
- message: `Workflow not found: ${workflowId}`,
1226
- });
1227
- return;
1228
- }
1229
- // Update workflow status
1230
- const now = new Date().toISOString();
1231
- const db = req.project.db;
1232
- db.prepare(`
1233
- UPDATE workflows
1234
- SET status = ?, completed_at = ?, updated_at = ?
1235
- WHERE id = ?
1236
- `).run(status, now, now, workflowId);
1237
- // Emit workflow completed/failed event
1238
- const updatedWorkflow = await engine.getWorkflow(workflowId);
1239
- if (status === "completed") {
1240
- engine.emitWorkflowCompleted(workflowId, updatedWorkflow);
1241
- }
1242
- else {
1243
- engine.emitWorkflowFailed(workflowId, summary);
1244
- }
1245
- // Broadcast update
1246
- broadcastWorkflowUpdate(req.project.id, workflowId, status, updatedWorkflow);
1247
- res.json({
1248
- success: true,
1249
- data: {
1250
- success: true,
1251
- workflow_status: status,
1252
- completed_at: now,
1253
- },
1254
- });
1255
- }
1256
- catch (error) {
1257
- handleWorkflowError(error, res);
1258
- }
1259
- });
1260
- /**
1261
- * POST /api/workflows/:id/escalate - Create an escalation request
1262
- *
1263
- * Used by escalate_to_user MCP tool.
1264
- * Creates escalation and emits event for WebSocket broadcast.
1265
- *
1266
- * Request body:
1267
- * - message: string (required)
1268
- * - options?: string[]
1269
- * - context?: Record<string, unknown>
1270
- */
1271
- router.post("/:id/escalate", async (req, res) => {
1272
- try {
1273
- const { id: workflowId } = req.params;
1274
- const { message, options, context: escalationContext, } = req.body;
1275
- if (!message) {
1276
- res.status(400).json({
1277
- success: false,
1278
- data: null,
1279
- message: "message is required",
1280
- });
1281
- return;
1282
- }
1283
- const db = req.project.db;
1284
- // Get workflow
1285
- const workflowRow = db
1286
- .prepare("SELECT * FROM workflows WHERE id = ?")
1287
- .get(workflowId);
1288
- if (!workflowRow) {
1289
- res.status(404).json({
1290
- success: false,
1291
- data: null,
1292
- message: `Workflow not found: ${workflowId}`,
1293
- });
1294
- return;
1295
- }
1296
- // Parse config to check autonomy level
1297
- const config = JSON.parse(workflowRow.config);
1298
- // If full_auto mode, bypass escalation
1299
- if (config.autonomyLevel === "full_auto") {
1300
- console.log(`[workflows/:id/escalate] Workflow ${workflowId} is in full_auto mode, auto-approving`);
1301
- res.json({
1302
- success: true,
1303
- data: {
1304
- status: "auto_approved",
1305
- message: "Escalation auto-approved (workflow is in full_auto mode). " +
1306
- "Proceed with your decision.",
1307
- },
1308
- });
1309
- return;
1310
- }
1311
- // Check for existing pending escalation
1312
- const pendingEscalation = db
1313
- .prepare(`
1314
- SELECT payload FROM workflow_events
1315
- WHERE workflow_id = ?
1316
- AND type = 'escalation_requested'
1317
- AND json_extract(payload, '$.escalation_id') NOT IN (
1318
- SELECT json_extract(payload, '$.escalation_id')
1319
- FROM workflow_events
1320
- WHERE workflow_id = ?
1321
- AND type = 'escalation_resolved'
1322
- )
1323
- ORDER BY created_at DESC
1324
- LIMIT 1
1325
- `)
1326
- .get(workflowId, workflowId);
1327
- if (pendingEscalation) {
1328
- const payload = JSON.parse(pendingEscalation.payload);
1329
- res.status(400).json({
1330
- success: false,
1331
- data: null,
1332
- message: `Workflow already has a pending escalation (ID: ${payload.escalation_id}). ` +
1333
- `Wait for user response or resolve the existing escalation first.`,
1334
- });
1335
- return;
1336
- }
1337
- // Generate unique escalation ID
1338
- const escalationId = randomUUID();
1339
- const now = new Date().toISOString();
1340
- // Record escalation_requested event
1341
- const eventId = randomUUID();
1342
- db.prepare(`
1343
- INSERT INTO workflow_events (id, workflow_id, type, payload, created_at)
1344
- VALUES (?, ?, ?, ?, ?)
1345
- `).run(eventId, workflowId, "escalation_requested", JSON.stringify({
1346
- escalation_id: escalationId,
1347
- message,
1348
- options,
1349
- context: escalationContext,
1350
- }), now);
1351
- // Emit escalation requested event for WebSocket broadcast
1352
- const engine = getEngineForWorkflow(req, workflowId);
1353
- if (engine) {
1354
- engine.emitEscalationRequested(workflowId, escalationId, message, options, escalationContext);
1355
- }
1356
- console.log(`[workflows/:id/escalate] Escalation created for workflow ${workflowId}: ${escalationId}`);
1357
- res.json({
1358
- success: true,
1359
- data: {
1360
- status: "pending",
1361
- escalation_id: escalationId,
1362
- message: "Escalation request created. Your session will end here. " +
1363
- "When the user responds, you will receive a follow-up message with their response. " +
1364
- "The workflow will resume automatically.",
1365
- },
1366
- });
1367
- }
1368
- catch (error) {
1369
- handleWorkflowError(error, res);
1370
- }
1371
- });
1372
- /**
1373
- * POST /api/workflows/:id/notify - Send a non-blocking notification
1374
- *
1375
- * Used by notify_user MCP tool.
1376
- * Broadcasts notification via WebSocket.
1377
- *
1378
- * Request body:
1379
- * - message: string (required)
1380
- * - level?: 'info' | 'warning' | 'error' (default: 'info')
1381
- */
1382
- router.post("/:id/notify", async (req, res) => {
1383
- try {
1384
- const { id: workflowId } = req.params;
1385
- const { message, level = "info" } = req.body;
1386
- if (!message) {
1387
- res.status(400).json({
1388
- success: false,
1389
- data: null,
1390
- message: "message is required",
1391
- });
1392
- return;
1393
- }
1394
- const db = req.project.db;
1395
- // Verify workflow exists
1396
- const workflowExists = db
1397
- .prepare("SELECT 1 FROM workflows WHERE id = ?")
1398
- .get(workflowId);
1399
- if (!workflowExists) {
1400
- res.status(404).json({
1401
- success: false,
1402
- data: null,
1403
- message: `Workflow not found: ${workflowId}`,
1404
- });
1405
- return;
1406
- }
1407
- // Record notification event (for audit trail)
1408
- const eventId = randomUUID();
1409
- const now = new Date().toISOString();
1410
- db.prepare(`
1411
- INSERT INTO workflow_events (id, workflow_id, type, payload, created_at)
1412
- VALUES (?, ?, ?, ?, ?)
1413
- `).run(eventId, workflowId, "user_notification", JSON.stringify({ level, message }), now);
1414
- // Broadcast notification via WebSocket
1415
- broadcastWorkflowUpdate(req.project.id, workflowId, "notification", {
1416
- level,
1417
- message,
1418
- timestamp: now,
1419
- });
1420
- console.log(`[workflows/:id/notify] [${level.toUpperCase()}] Workflow ${workflowId}: ${message}`);
1421
- res.json({
1422
- success: true,
1423
- data: {
1424
- success: true,
1425
- delivered: true, // We assume WebSocket delivery
1426
- },
1427
- });
1428
- }
1429
- catch (error) {
1430
- handleWorkflowError(error, res);
1431
- }
1432
- });
1433
- /**
1434
- * POST /api/workflows/:id/merge - Merge a branch into the workflow worktree
1435
- *
1436
- * Used by merge_branch MCP tool.
1437
- * Merges a source branch into the workflow's worktree.
1438
- *
1439
- * Request body:
1440
- * - source_branch: string (required)
1441
- * - target_branch?: string (default: current workflow branch)
1442
- * - strategy?: 'auto' | 'squash' (default: 'auto')
1443
- * - message?: string (custom commit message)
1444
- */
1445
- router.post("/:id/merge", async (req, res) => {
1446
- try {
1447
- const { id: workflowId } = req.params;
1448
- const { source_branch, target_branch, strategy = "auto", message } = req.body;
1449
- if (!source_branch) {
1450
- res.status(400).json({
1451
- success: false,
1452
- data: null,
1453
- message: "source_branch is required",
1454
- });
1455
- return;
1456
- }
1457
- const db = req.project.db;
1458
- // Get workflow to find worktree path
1459
- const workflowRow = db
1460
- .prepare("SELECT worktree_path, branch_name FROM workflows WHERE id = ?")
1461
- .get(workflowId);
1462
- if (!workflowRow) {
1463
- res.status(404).json({
1464
- success: false,
1465
- data: null,
1466
- message: `Workflow not found: ${workflowId}`,
1467
- });
1468
- return;
1469
- }
1470
- if (!workflowRow.worktree_path) {
1471
- res.status(400).json({
1472
- success: false,
1473
- data: null,
1474
- message: `Workflow ${workflowId} does not have a worktree`,
1475
- });
1476
- return;
1477
- }
1478
- // If target_branch specified and different from current, checkout target first
1479
- if (target_branch && target_branch !== workflowRow.branch_name) {
1480
- try {
1481
- execSync(`git checkout "${target_branch}"`, {
1482
- cwd: workflowRow.worktree_path,
1483
- stdio: "pipe",
1484
- });
1485
- }
1486
- catch (checkoutError) {
1487
- res.status(400).json({
1488
- success: false,
1489
- data: null,
1490
- message: `Failed to checkout target branch: ${target_branch}`,
1491
- error: checkoutError instanceof Error
1492
- ? checkoutError.message
1493
- : String(checkoutError),
1494
- });
1495
- return;
1496
- }
1497
- }
1498
- // Perform merge using git commands
1499
- try {
1500
- let mergeCommit;
1501
- let strategyUsed;
1502
- if (strategy === "squash") {
1503
- // Squash merge
1504
- execSync(`git merge --squash "${source_branch}"`, {
1505
- cwd: workflowRow.worktree_path,
1506
- stdio: "pipe",
1507
- });
1508
- // Commit with custom message or default
1509
- const commitMessage = message || `Squash merge branch '${source_branch}'`;
1510
- execSync(`git commit --no-verify -m "${commitMessage.replace(/"/g, '\\"')}"`, {
1511
- cwd: workflowRow.worktree_path,
1512
- stdio: "pipe",
1513
- });
1514
- mergeCommit = execSync("git rev-parse HEAD", {
1515
- cwd: workflowRow.worktree_path,
1516
- encoding: "utf-8",
1517
- }).trim();
1518
- strategyUsed = "squash";
1519
- }
1520
- else {
1521
- // Auto strategy: try fast-forward first
1522
- try {
1523
- execSync(`git merge-base --is-ancestor HEAD "${source_branch}"`, {
1524
- cwd: workflowRow.worktree_path,
1525
- stdio: "pipe",
1526
- });
1527
- // Fast-forward is possible
1528
- execSync(`git merge --ff-only "${source_branch}"`, {
1529
- cwd: workflowRow.worktree_path,
1530
- stdio: "pipe",
1531
- });
1532
- mergeCommit = execSync("git rev-parse HEAD", {
1533
- cwd: workflowRow.worktree_path,
1534
- encoding: "utf-8",
1535
- }).trim();
1536
- strategyUsed = "fast-forward";
1537
- }
1538
- catch {
1539
- // Fast-forward not possible, do regular merge
1540
- const commitMessage = message || `Merge branch '${source_branch}'`;
1541
- execSync(`git merge --no-ff -m "${commitMessage.replace(/"/g, '\\"')}" "${source_branch}"`, {
1542
- cwd: workflowRow.worktree_path,
1543
- stdio: "pipe",
1544
- });
1545
- mergeCommit = execSync("git rev-parse HEAD", {
1546
- cwd: workflowRow.worktree_path,
1547
- encoding: "utf-8",
1548
- }).trim();
1549
- strategyUsed = "merge";
1550
- }
1551
- }
1552
- console.log(`[workflows/:id/merge] Merged ${source_branch} into workflow ${workflowId} (${strategyUsed})`);
1553
- res.json({
1554
- success: true,
1555
- data: {
1556
- success: true,
1557
- merge_commit: mergeCommit,
1558
- strategy_used: strategyUsed,
1559
- },
1560
- });
1561
- }
1562
- catch (mergeError) {
1563
- // Check for merge conflicts
1564
- let conflictingFiles = [];
1565
- try {
1566
- const conflictOutput = execSync("git diff --name-only --diff-filter=U", {
1567
- cwd: workflowRow.worktree_path,
1568
- encoding: "utf-8",
1569
- });
1570
- conflictingFiles = conflictOutput
1571
- .split("\n")
1572
- .map((l) => l.trim())
1573
- .filter((l) => l.length > 0);
1574
- }
1575
- catch {
1576
- // Not in merge state or other issue
1577
- }
1578
- if (conflictingFiles.length > 0) {
1579
- // Abort the failed merge
1580
- try {
1581
- execSync("git merge --abort", {
1582
- cwd: workflowRow.worktree_path,
1583
- stdio: "pipe",
1584
- });
1585
- }
1586
- catch {
1587
- // Ignore abort errors
1588
- }
1589
- res.json({
1590
- success: true,
1591
- data: {
1592
- success: false,
1593
- strategy_used: strategy === "squash" ? "squash" : "merge",
1594
- conflicting_files: conflictingFiles,
1595
- error: `Merge conflict in ${conflictingFiles.length} file(s)`,
1596
- },
1597
- });
1598
- }
1599
- else {
1600
- res.json({
1601
- success: true,
1602
- data: {
1603
- success: false,
1604
- strategy_used: strategy === "squash" ? "squash" : "merge",
1605
- error: mergeError instanceof Error
1606
- ? mergeError.message
1607
- : String(mergeError),
1608
- },
1609
- });
1610
- }
1611
- }
1612
- }
1613
- catch (error) {
1614
- handleWorkflowError(error, res);
1615
- }
1616
- });
1617
- /**
1618
- * POST /api/workflows/:id/await-events - Register an await condition for the orchestrator
1619
- *
1620
- * Used by await_events MCP tool.
1621
- * Stores condition in wakeup service (in-memory).
1622
- * Returns immediately - orchestrator session should end after this call.
1623
- *
1624
- * Request body:
1625
- * - event_types: AwaitableEventType[] (required)
1626
- * - execution_ids?: string[]
1627
- * - timeout_seconds?: number
1628
- * - message?: string
1629
- */
1630
- router.post("/:id/await-events", async (req, res) => {
1631
- try {
1632
- const { id: workflowId } = req.params;
1633
- const { event_types, execution_ids, timeout_seconds, message } = req.body;
1634
- // Validate required params
1635
- if (!event_types || event_types.length === 0) {
1636
- res.status(400).json({
1637
- success: false,
1638
- data: null,
1639
- message: "event_types is required and must be non-empty",
1640
- });
1641
- return;
1642
- }
1643
- // Validate event types
1644
- const validEventTypes = [
1645
- "step_completed",
1646
- "step_failed",
1647
- "user_response",
1648
- "escalation_resolved",
1649
- "timeout",
1650
- ];
1651
- for (const eventType of event_types) {
1652
- if (!validEventTypes.includes(eventType)) {
1653
- res.status(400).json({
1654
- success: false,
1655
- data: null,
1656
- message: `Invalid event type: ${eventType}. Must be one of: ${validEventTypes.join(", ")}`,
1657
- });
1658
- return;
1659
- }
1660
- }
1661
- const engine = getEngineForWorkflow(req, workflowId);
1662
- if (!engine) {
1663
- res.status(503).json({
1664
- success: false,
1665
- data: null,
1666
- message: "Workflow engine not available",
1667
- });
1668
- return;
1669
- }
1670
- // Get workflow and validate status
1671
- const workflow = await engine.getWorkflow(workflowId);
1672
- if (!workflow) {
1673
- res.status(404).json({
1674
- success: false,
1675
- data: null,
1676
- message: `Workflow not found: ${workflowId}`,
1677
- });
1678
- return;
1679
- }
1680
- if (workflow.status !== "running") {
1681
- res.status(400).json({
1682
- success: false,
1683
- data: null,
1684
- message: `Cannot await events: workflow is ${workflow.status}, expected running`,
1685
- });
1686
- return;
1687
- }
1688
- // Register await condition in wakeup service (in-memory)
1689
- // Note: getWakeupService is available on orchestrator engines
1690
- if (!("getWakeupService" in engine)) {
1691
- res.status(400).json({
1692
- success: false,
1693
- data: null,
1694
- message: "Await events is only supported for orchestrator workflows",
1695
- });
1696
- return;
1697
- }
1698
- const wakeupService = engine.getWakeupService();
1699
- const awaitResult = wakeupService.registerAwait({
1700
- workflowId,
1701
- eventTypes: event_types,
1702
- executionIds: execution_ids,
1703
- timeoutSeconds: timeout_seconds,
1704
- message,
1705
- });
1706
- // Broadcast status update (for UI)
1707
- broadcastWorkflowUpdate(req.project.id, workflowId, "awaiting", {
1708
- await_id: awaitResult.id,
1709
- event_types,
1710
- message,
1711
- });
1712
- console.log(`[workflows/:id/await-events] Registered await ${awaitResult.id} for workflow ${workflowId}`, { eventTypes: event_types, executionIds: execution_ids });
1713
- res.json({
1714
- success: true,
1715
- data: {
1716
- status: "waiting",
1717
- await_id: awaitResult.id,
1718
- message: "Session will end. You'll be woken up when events occur.",
1719
- will_wake_on: event_types,
1720
- timeout_at: awaitResult.timeoutAt,
1721
- },
1722
- });
1723
- }
1724
- catch (error) {
1725
- handleWorkflowError(error, res);
1726
- }
1727
- });
1728
- return router;
1729
- }
1730
- //# sourceMappingURL=workflows.js.map