sudocode 1.0.0 → 1.1.1

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 (447) hide show
  1. package/README.md +222 -0
  2. package/build.js +75 -0
  3. package/node_modules/@sudocode-ai/cli/README.md +330 -0
  4. package/node_modules/@sudocode-ai/cli/dist/cli/feedback-commands.d.ts +53 -0
  5. package/node_modules/@sudocode-ai/cli/dist/cli/feedback-commands.d.ts.map +1 -0
  6. package/node_modules/@sudocode-ai/cli/dist/cli/feedback-commands.js +274 -0
  7. package/node_modules/@sudocode-ai/cli/dist/cli/feedback-commands.js.map +1 -0
  8. package/node_modules/@sudocode-ai/cli/dist/cli/init-commands.d.ts +22 -0
  9. package/node_modules/@sudocode-ai/cli/dist/cli/init-commands.d.ts.map +1 -0
  10. package/node_modules/@sudocode-ai/cli/dist/cli/init-commands.js +148 -0
  11. package/node_modules/@sudocode-ai/cli/dist/cli/init-commands.js.map +1 -0
  12. package/node_modules/@sudocode-ai/cli/dist/cli/issue-commands.d.ts +45 -0
  13. package/node_modules/@sudocode-ai/cli/dist/cli/issue-commands.d.ts.map +1 -0
  14. package/node_modules/@sudocode-ai/cli/dist/cli/issue-commands.js +310 -0
  15. package/node_modules/@sudocode-ai/cli/dist/cli/issue-commands.js.map +1 -0
  16. package/node_modules/@sudocode-ai/cli/dist/cli/query-commands.d.ts +18 -0
  17. package/node_modules/@sudocode-ai/cli/dist/cli/query-commands.d.ts.map +1 -0
  18. package/node_modules/@sudocode-ai/cli/dist/cli/query-commands.js +61 -0
  19. package/node_modules/@sudocode-ai/cli/dist/cli/query-commands.js.map +1 -0
  20. package/node_modules/@sudocode-ai/cli/dist/cli/reference-commands.d.ts +22 -0
  21. package/node_modules/@sudocode-ai/cli/dist/cli/reference-commands.d.ts.map +1 -0
  22. package/node_modules/@sudocode-ai/cli/dist/cli/reference-commands.js +136 -0
  23. package/node_modules/@sudocode-ai/cli/dist/cli/reference-commands.js.map +1 -0
  24. package/node_modules/@sudocode-ai/cli/dist/cli/relationship-commands.d.ts +14 -0
  25. package/node_modules/@sudocode-ai/cli/dist/cli/relationship-commands.d.ts.map +1 -0
  26. package/node_modules/@sudocode-ai/cli/dist/cli/relationship-commands.js +76 -0
  27. package/node_modules/@sudocode-ai/cli/dist/cli/relationship-commands.js.map +1 -0
  28. package/node_modules/@sudocode-ai/cli/dist/cli/server-commands.d.ts +17 -0
  29. package/node_modules/@sudocode-ai/cli/dist/cli/server-commands.d.ts.map +1 -0
  30. package/node_modules/@sudocode-ai/cli/dist/cli/server-commands.js +99 -0
  31. package/node_modules/@sudocode-ai/cli/dist/cli/server-commands.js.map +1 -0
  32. package/node_modules/@sudocode-ai/cli/dist/cli/spec-commands.d.ts +38 -0
  33. package/node_modules/@sudocode-ai/cli/dist/cli/spec-commands.d.ts.map +1 -0
  34. package/node_modules/@sudocode-ai/cli/dist/cli/spec-commands.js +321 -0
  35. package/node_modules/@sudocode-ai/cli/dist/cli/spec-commands.js.map +1 -0
  36. package/node_modules/@sudocode-ai/cli/dist/cli/status-commands.d.ts +17 -0
  37. package/node_modules/@sudocode-ai/cli/dist/cli/status-commands.d.ts.map +1 -0
  38. package/node_modules/@sudocode-ai/cli/dist/cli/status-commands.js +131 -0
  39. package/node_modules/@sudocode-ai/cli/dist/cli/status-commands.js.map +1 -0
  40. package/node_modules/@sudocode-ai/cli/dist/cli/sync-commands.d.ts +24 -0
  41. package/node_modules/@sudocode-ai/cli/dist/cli/sync-commands.d.ts.map +1 -0
  42. package/node_modules/@sudocode-ai/cli/dist/cli/sync-commands.js +416 -0
  43. package/node_modules/@sudocode-ai/cli/dist/cli/sync-commands.js.map +1 -0
  44. package/node_modules/@sudocode-ai/cli/dist/cli/update-commands.d.ts +12 -0
  45. package/node_modules/@sudocode-ai/cli/dist/cli/update-commands.d.ts.map +1 -0
  46. package/node_modules/@sudocode-ai/cli/dist/cli/update-commands.js +78 -0
  47. package/node_modules/@sudocode-ai/cli/dist/cli/update-commands.js.map +1 -0
  48. package/node_modules/@sudocode-ai/cli/dist/cli.d.ts +6 -0
  49. package/node_modules/@sudocode-ai/cli/dist/cli.d.ts.map +1 -0
  50. package/node_modules/@sudocode-ai/cli/dist/cli.js +426 -0
  51. package/node_modules/@sudocode-ai/cli/dist/cli.js.map +1 -0
  52. package/node_modules/@sudocode-ai/cli/dist/db.d.ts +21 -0
  53. package/node_modules/@sudocode-ai/cli/dist/db.d.ts.map +1 -0
  54. package/node_modules/@sudocode-ai/cli/dist/db.js +54 -0
  55. package/node_modules/@sudocode-ai/cli/dist/db.js.map +1 -0
  56. package/node_modules/@sudocode-ai/cli/dist/export.d.ts +79 -0
  57. package/node_modules/@sudocode-ai/cli/dist/export.d.ts.map +1 -0
  58. package/node_modules/@sudocode-ai/cli/dist/export.js +195 -0
  59. package/node_modules/@sudocode-ai/cli/dist/export.js.map +1 -0
  60. package/node_modules/@sudocode-ai/cli/dist/filename-generator.d.ts +30 -0
  61. package/node_modules/@sudocode-ai/cli/dist/filename-generator.d.ts.map +1 -0
  62. package/node_modules/@sudocode-ai/cli/dist/filename-generator.js +93 -0
  63. package/node_modules/@sudocode-ai/cli/dist/filename-generator.js.map +1 -0
  64. package/node_modules/@sudocode-ai/cli/dist/id-generator.d.ts +26 -0
  65. package/node_modules/@sudocode-ai/cli/dist/id-generator.d.ts.map +1 -0
  66. package/node_modules/@sudocode-ai/cli/dist/id-generator.js +123 -0
  67. package/node_modules/@sudocode-ai/cli/dist/id-generator.js.map +1 -0
  68. package/node_modules/@sudocode-ai/cli/dist/import.d.ts +118 -0
  69. package/node_modules/@sudocode-ai/cli/dist/import.d.ts.map +1 -0
  70. package/node_modules/@sudocode-ai/cli/dist/import.js +608 -0
  71. package/node_modules/@sudocode-ai/cli/dist/import.js.map +1 -0
  72. package/node_modules/@sudocode-ai/cli/dist/index.d.ts +13 -0
  73. package/node_modules/@sudocode-ai/cli/dist/index.d.ts.map +1 -0
  74. package/node_modules/@sudocode-ai/cli/dist/index.js +13 -0
  75. package/node_modules/@sudocode-ai/cli/dist/index.js.map +1 -0
  76. package/node_modules/@sudocode-ai/cli/dist/jsonl.d.ts +69 -0
  77. package/node_modules/@sudocode-ai/cli/dist/jsonl.d.ts.map +1 -0
  78. package/node_modules/@sudocode-ai/cli/dist/jsonl.js +333 -0
  79. package/node_modules/@sudocode-ai/cli/dist/jsonl.js.map +1 -0
  80. package/node_modules/@sudocode-ai/cli/dist/markdown.d.ts +146 -0
  81. package/node_modules/@sudocode-ai/cli/dist/markdown.d.ts.map +1 -0
  82. package/node_modules/@sudocode-ai/cli/dist/markdown.js +357 -0
  83. package/node_modules/@sudocode-ai/cli/dist/markdown.js.map +1 -0
  84. package/node_modules/@sudocode-ai/cli/dist/migrations.d.ts +23 -0
  85. package/node_modules/@sudocode-ai/cli/dist/migrations.d.ts.map +1 -0
  86. package/node_modules/@sudocode-ai/cli/dist/migrations.js +57 -0
  87. package/node_modules/@sudocode-ai/cli/dist/migrations.js.map +1 -0
  88. package/node_modules/@sudocode-ai/cli/dist/operations/events.d.ts +53 -0
  89. package/node_modules/@sudocode-ai/cli/dist/operations/events.d.ts.map +1 -0
  90. package/node_modules/@sudocode-ai/cli/dist/operations/events.js +108 -0
  91. package/node_modules/@sudocode-ai/cli/dist/operations/events.js.map +1 -0
  92. package/node_modules/@sudocode-ai/cli/dist/operations/feedback-anchors.d.ts +92 -0
  93. package/node_modules/@sudocode-ai/cli/dist/operations/feedback-anchors.d.ts.map +1 -0
  94. package/node_modules/@sudocode-ai/cli/dist/operations/feedback-anchors.js +444 -0
  95. package/node_modules/@sudocode-ai/cli/dist/operations/feedback-anchors.js.map +1 -0
  96. package/node_modules/@sudocode-ai/cli/dist/operations/feedback.d.ts +76 -0
  97. package/node_modules/@sudocode-ai/cli/dist/operations/feedback.d.ts.map +1 -0
  98. package/node_modules/@sudocode-ai/cli/dist/operations/feedback.js +234 -0
  99. package/node_modules/@sudocode-ai/cli/dist/operations/feedback.js.map +1 -0
  100. package/node_modules/@sudocode-ai/cli/dist/operations/index.d.ts +10 -0
  101. package/node_modules/@sudocode-ai/cli/dist/operations/index.d.ts.map +1 -0
  102. package/node_modules/@sudocode-ai/cli/dist/operations/index.js +10 -0
  103. package/node_modules/@sudocode-ai/cli/dist/operations/index.js.map +1 -0
  104. package/node_modules/@sudocode-ai/cli/dist/operations/issues.d.ts +82 -0
  105. package/node_modules/@sudocode-ai/cli/dist/operations/issues.d.ts.map +1 -0
  106. package/node_modules/@sudocode-ai/cli/dist/operations/issues.js +411 -0
  107. package/node_modules/@sudocode-ai/cli/dist/operations/issues.js.map +1 -0
  108. package/node_modules/@sudocode-ai/cli/dist/operations/references.d.ts +34 -0
  109. package/node_modules/@sudocode-ai/cli/dist/operations/references.d.ts.map +1 -0
  110. package/node_modules/@sudocode-ai/cli/dist/operations/references.js +117 -0
  111. package/node_modules/@sudocode-ai/cli/dist/operations/references.js.map +1 -0
  112. package/node_modules/@sudocode-ai/cli/dist/operations/relationships.d.ts +57 -0
  113. package/node_modules/@sudocode-ai/cli/dist/operations/relationships.d.ts.map +1 -0
  114. package/node_modules/@sudocode-ai/cli/dist/operations/relationships.js +236 -0
  115. package/node_modules/@sudocode-ai/cli/dist/operations/relationships.js.map +1 -0
  116. package/node_modules/@sudocode-ai/cli/dist/operations/specs.d.ts +64 -0
  117. package/node_modules/@sudocode-ai/cli/dist/operations/specs.d.ts.map +1 -0
  118. package/node_modules/@sudocode-ai/cli/dist/operations/specs.js +290 -0
  119. package/node_modules/@sudocode-ai/cli/dist/operations/specs.js.map +1 -0
  120. package/node_modules/@sudocode-ai/cli/dist/operations/tags.d.ts +42 -0
  121. package/node_modules/@sudocode-ai/cli/dist/operations/tags.d.ts.map +1 -0
  122. package/node_modules/@sudocode-ai/cli/dist/operations/tags.js +127 -0
  123. package/node_modules/@sudocode-ai/cli/dist/operations/tags.js.map +1 -0
  124. package/node_modules/@sudocode-ai/cli/dist/operations/transactions.d.ts +41 -0
  125. package/node_modules/@sudocode-ai/cli/dist/operations/transactions.d.ts.map +1 -0
  126. package/node_modules/@sudocode-ai/cli/dist/operations/transactions.js +111 -0
  127. package/node_modules/@sudocode-ai/cli/dist/operations/transactions.js.map +1 -0
  128. package/node_modules/@sudocode-ai/cli/dist/sync.d.ts +47 -0
  129. package/node_modules/@sudocode-ai/cli/dist/sync.d.ts.map +1 -0
  130. package/node_modules/@sudocode-ai/cli/dist/sync.js +442 -0
  131. package/node_modules/@sudocode-ai/cli/dist/sync.js.map +1 -0
  132. package/node_modules/@sudocode-ai/cli/dist/test-schema.d.ts +5 -0
  133. package/node_modules/@sudocode-ai/cli/dist/test-schema.d.ts.map +1 -0
  134. package/node_modules/@sudocode-ai/cli/dist/test-schema.js +46 -0
  135. package/node_modules/@sudocode-ai/cli/dist/test-schema.js.map +1 -0
  136. package/node_modules/@sudocode-ai/cli/dist/types.d.ts +7 -0
  137. package/node_modules/@sudocode-ai/cli/dist/types.d.ts.map +1 -0
  138. package/node_modules/@sudocode-ai/cli/dist/types.js +7 -0
  139. package/node_modules/@sudocode-ai/cli/dist/types.js.map +1 -0
  140. package/node_modules/@sudocode-ai/cli/dist/update-checker.d.ts +24 -0
  141. package/node_modules/@sudocode-ai/cli/dist/update-checker.d.ts.map +1 -0
  142. package/node_modules/@sudocode-ai/cli/dist/update-checker.js +151 -0
  143. package/node_modules/@sudocode-ai/cli/dist/update-checker.js.map +1 -0
  144. package/node_modules/@sudocode-ai/cli/dist/version.d.ts +12 -0
  145. package/node_modules/@sudocode-ai/cli/dist/version.d.ts.map +1 -0
  146. package/node_modules/@sudocode-ai/cli/dist/version.js +23 -0
  147. package/node_modules/@sudocode-ai/cli/dist/version.js.map +1 -0
  148. package/node_modules/@sudocode-ai/cli/dist/watcher.d.ts +63 -0
  149. package/node_modules/@sudocode-ai/cli/dist/watcher.d.ts.map +1 -0
  150. package/node_modules/@sudocode-ai/cli/dist/watcher.js +438 -0
  151. package/node_modules/@sudocode-ai/cli/dist/watcher.js.map +1 -0
  152. package/node_modules/@sudocode-ai/cli/package.json +65 -0
  153. package/node_modules/@sudocode-ai/local-server/README.md +19 -0
  154. package/node_modules/@sudocode-ai/local-server/dist/cli.d.ts +7 -0
  155. package/node_modules/@sudocode-ai/local-server/dist/cli.d.ts.map +1 -0
  156. package/node_modules/@sudocode-ai/local-server/dist/cli.js +7 -0
  157. package/node_modules/@sudocode-ai/local-server/dist/cli.js.map +1 -0
  158. package/node_modules/@sudocode-ai/local-server/dist/execution/engine/engine.d.ts +103 -0
  159. package/node_modules/@sudocode-ai/local-server/dist/execution/engine/engine.d.ts.map +1 -0
  160. package/node_modules/@sudocode-ai/local-server/dist/execution/engine/engine.js +10 -0
  161. package/node_modules/@sudocode-ai/local-server/dist/execution/engine/engine.js.map +1 -0
  162. package/node_modules/@sudocode-ai/local-server/dist/execution/engine/simple-engine.d.ts +190 -0
  163. package/node_modules/@sudocode-ai/local-server/dist/execution/engine/simple-engine.d.ts.map +1 -0
  164. package/node_modules/@sudocode-ai/local-server/dist/execution/engine/simple-engine.js +611 -0
  165. package/node_modules/@sudocode-ai/local-server/dist/execution/engine/simple-engine.js.map +1 -0
  166. package/node_modules/@sudocode-ai/local-server/dist/execution/engine/types.d.ts +116 -0
  167. package/node_modules/@sudocode-ai/local-server/dist/execution/engine/types.d.ts.map +1 -0
  168. package/node_modules/@sudocode-ai/local-server/dist/execution/engine/types.js +10 -0
  169. package/node_modules/@sudocode-ai/local-server/dist/execution/engine/types.js.map +1 -0
  170. package/node_modules/@sudocode-ai/local-server/dist/execution/output/ag-ui-adapter.d.ts +176 -0
  171. package/node_modules/@sudocode-ai/local-server/dist/execution/output/ag-ui-adapter.d.ts.map +1 -0
  172. package/node_modules/@sudocode-ai/local-server/dist/execution/output/ag-ui-adapter.js +438 -0
  173. package/node_modules/@sudocode-ai/local-server/dist/execution/output/ag-ui-adapter.js.map +1 -0
  174. package/node_modules/@sudocode-ai/local-server/dist/execution/output/ag-ui-integration.d.ts +96 -0
  175. package/node_modules/@sudocode-ai/local-server/dist/execution/output/ag-ui-integration.d.ts.map +1 -0
  176. package/node_modules/@sudocode-ai/local-server/dist/execution/output/ag-ui-integration.js +96 -0
  177. package/node_modules/@sudocode-ai/local-server/dist/execution/output/ag-ui-integration.js.map +1 -0
  178. package/node_modules/@sudocode-ai/local-server/dist/execution/output/claude-code-output-processor.d.ts +321 -0
  179. package/node_modules/@sudocode-ai/local-server/dist/execution/output/claude-code-output-processor.d.ts.map +1 -0
  180. package/node_modules/@sudocode-ai/local-server/dist/execution/output/claude-code-output-processor.js +769 -0
  181. package/node_modules/@sudocode-ai/local-server/dist/execution/output/claude-code-output-processor.js.map +1 -0
  182. package/node_modules/@sudocode-ai/local-server/dist/execution/output/index.d.ts +18 -0
  183. package/node_modules/@sudocode-ai/local-server/dist/execution/output/index.d.ts.map +1 -0
  184. package/node_modules/@sudocode-ai/local-server/dist/execution/output/index.js +15 -0
  185. package/node_modules/@sudocode-ai/local-server/dist/execution/output/index.js.map +1 -0
  186. package/node_modules/@sudocode-ai/local-server/dist/execution/output/types.d.ts +421 -0
  187. package/node_modules/@sudocode-ai/local-server/dist/execution/output/types.d.ts.map +1 -0
  188. package/node_modules/@sudocode-ai/local-server/dist/execution/output/types.js +22 -0
  189. package/node_modules/@sudocode-ai/local-server/dist/execution/output/types.js.map +1 -0
  190. package/node_modules/@sudocode-ai/local-server/dist/execution/process/builders/claude.d.ts +86 -0
  191. package/node_modules/@sudocode-ai/local-server/dist/execution/process/builders/claude.d.ts.map +1 -0
  192. package/node_modules/@sudocode-ai/local-server/dist/execution/process/builders/claude.js +59 -0
  193. package/node_modules/@sudocode-ai/local-server/dist/execution/process/builders/claude.js.map +1 -0
  194. package/node_modules/@sudocode-ai/local-server/dist/execution/process/index.d.ts +15 -0
  195. package/node_modules/@sudocode-ai/local-server/dist/execution/process/index.d.ts.map +1 -0
  196. package/node_modules/@sudocode-ai/local-server/dist/execution/process/index.js +15 -0
  197. package/node_modules/@sudocode-ai/local-server/dist/execution/process/index.js.map +1 -0
  198. package/node_modules/@sudocode-ai/local-server/dist/execution/process/manager.d.ts +133 -0
  199. package/node_modules/@sudocode-ai/local-server/dist/execution/process/manager.d.ts.map +1 -0
  200. package/node_modules/@sudocode-ai/local-server/dist/execution/process/manager.js +10 -0
  201. package/node_modules/@sudocode-ai/local-server/dist/execution/process/manager.js.map +1 -0
  202. package/node_modules/@sudocode-ai/local-server/dist/execution/process/simple-manager.d.ts +102 -0
  203. package/node_modules/@sudocode-ai/local-server/dist/execution/process/simple-manager.d.ts.map +1 -0
  204. package/node_modules/@sudocode-ai/local-server/dist/execution/process/simple-manager.js +336 -0
  205. package/node_modules/@sudocode-ai/local-server/dist/execution/process/simple-manager.js.map +1 -0
  206. package/node_modules/@sudocode-ai/local-server/dist/execution/process/types.d.ts +105 -0
  207. package/node_modules/@sudocode-ai/local-server/dist/execution/process/types.d.ts.map +1 -0
  208. package/node_modules/@sudocode-ai/local-server/dist/execution/process/types.js +10 -0
  209. package/node_modules/@sudocode-ai/local-server/dist/execution/process/types.js.map +1 -0
  210. package/node_modules/@sudocode-ai/local-server/dist/execution/process/utils.d.ts +53 -0
  211. package/node_modules/@sudocode-ai/local-server/dist/execution/process/utils.d.ts.map +1 -0
  212. package/node_modules/@sudocode-ai/local-server/dist/execution/process/utils.js +97 -0
  213. package/node_modules/@sudocode-ai/local-server/dist/execution/process/utils.js.map +1 -0
  214. package/node_modules/@sudocode-ai/local-server/dist/execution/resilience/circuit-breaker.d.ts +170 -0
  215. package/node_modules/@sudocode-ai/local-server/dist/execution/resilience/circuit-breaker.d.ts.map +1 -0
  216. package/node_modules/@sudocode-ai/local-server/dist/execution/resilience/circuit-breaker.js +291 -0
  217. package/node_modules/@sudocode-ai/local-server/dist/execution/resilience/circuit-breaker.js.map +1 -0
  218. package/node_modules/@sudocode-ai/local-server/dist/execution/resilience/executor.d.ts +109 -0
  219. package/node_modules/@sudocode-ai/local-server/dist/execution/resilience/executor.d.ts.map +1 -0
  220. package/node_modules/@sudocode-ai/local-server/dist/execution/resilience/executor.js +10 -0
  221. package/node_modules/@sudocode-ai/local-server/dist/execution/resilience/executor.js.map +1 -0
  222. package/node_modules/@sudocode-ai/local-server/dist/execution/resilience/index.d.ts +14 -0
  223. package/node_modules/@sudocode-ai/local-server/dist/execution/resilience/index.d.ts.map +1 -0
  224. package/node_modules/@sudocode-ai/local-server/dist/execution/resilience/index.js +15 -0
  225. package/node_modules/@sudocode-ai/local-server/dist/execution/resilience/index.js.map +1 -0
  226. package/node_modules/@sudocode-ai/local-server/dist/execution/resilience/resilient-executor.d.ts +86 -0
  227. package/node_modules/@sudocode-ai/local-server/dist/execution/resilience/resilient-executor.d.ts.map +1 -0
  228. package/node_modules/@sudocode-ai/local-server/dist/execution/resilience/resilient-executor.js +261 -0
  229. package/node_modules/@sudocode-ai/local-server/dist/execution/resilience/resilient-executor.js.map +1 -0
  230. package/node_modules/@sudocode-ai/local-server/dist/execution/resilience/retry.d.ts +161 -0
  231. package/node_modules/@sudocode-ai/local-server/dist/execution/resilience/retry.d.ts.map +1 -0
  232. package/node_modules/@sudocode-ai/local-server/dist/execution/resilience/retry.js +234 -0
  233. package/node_modules/@sudocode-ai/local-server/dist/execution/resilience/retry.js.map +1 -0
  234. package/node_modules/@sudocode-ai/local-server/dist/execution/resilience/types.d.ts +226 -0
  235. package/node_modules/@sudocode-ai/local-server/dist/execution/resilience/types.d.ts.map +1 -0
  236. package/node_modules/@sudocode-ai/local-server/dist/execution/resilience/types.js +30 -0
  237. package/node_modules/@sudocode-ai/local-server/dist/execution/resilience/types.js.map +1 -0
  238. package/node_modules/@sudocode-ai/local-server/dist/execution/transport/event-buffer.d.ts +119 -0
  239. package/node_modules/@sudocode-ai/local-server/dist/execution/transport/event-buffer.d.ts.map +1 -0
  240. package/node_modules/@sudocode-ai/local-server/dist/execution/transport/event-buffer.js +208 -0
  241. package/node_modules/@sudocode-ai/local-server/dist/execution/transport/event-buffer.js.map +1 -0
  242. package/node_modules/@sudocode-ai/local-server/dist/execution/transport/index.d.ts +10 -0
  243. package/node_modules/@sudocode-ai/local-server/dist/execution/transport/index.d.ts.map +1 -0
  244. package/node_modules/@sudocode-ai/local-server/dist/execution/transport/index.js +10 -0
  245. package/node_modules/@sudocode-ai/local-server/dist/execution/transport/index.js.map +1 -0
  246. package/node_modules/@sudocode-ai/local-server/dist/execution/transport/sse-transport.d.ts +146 -0
  247. package/node_modules/@sudocode-ai/local-server/dist/execution/transport/sse-transport.d.ts.map +1 -0
  248. package/node_modules/@sudocode-ai/local-server/dist/execution/transport/sse-transport.js +282 -0
  249. package/node_modules/@sudocode-ai/local-server/dist/execution/transport/sse-transport.js.map +1 -0
  250. package/node_modules/@sudocode-ai/local-server/dist/execution/transport/transport-manager.d.ts +176 -0
  251. package/node_modules/@sudocode-ai/local-server/dist/execution/transport/transport-manager.d.ts.map +1 -0
  252. package/node_modules/@sudocode-ai/local-server/dist/execution/transport/transport-manager.js +231 -0
  253. package/node_modules/@sudocode-ai/local-server/dist/execution/transport/transport-manager.js.map +1 -0
  254. package/node_modules/@sudocode-ai/local-server/dist/execution/workflow/index.d.ts +13 -0
  255. package/node_modules/@sudocode-ai/local-server/dist/execution/workflow/index.d.ts.map +1 -0
  256. package/node_modules/@sudocode-ai/local-server/dist/execution/workflow/index.js +13 -0
  257. package/node_modules/@sudocode-ai/local-server/dist/execution/workflow/index.js.map +1 -0
  258. package/node_modules/@sudocode-ai/local-server/dist/execution/workflow/linear-orchestrator.d.ts +216 -0
  259. package/node_modules/@sudocode-ai/local-server/dist/execution/workflow/linear-orchestrator.d.ts.map +1 -0
  260. package/node_modules/@sudocode-ai/local-server/dist/execution/workflow/linear-orchestrator.js +683 -0
  261. package/node_modules/@sudocode-ai/local-server/dist/execution/workflow/linear-orchestrator.js.map +1 -0
  262. package/node_modules/@sudocode-ai/local-server/dist/execution/workflow/memory-storage.d.ts +54 -0
  263. package/node_modules/@sudocode-ai/local-server/dist/execution/workflow/memory-storage.d.ts.map +1 -0
  264. package/node_modules/@sudocode-ai/local-server/dist/execution/workflow/memory-storage.js +68 -0
  265. package/node_modules/@sudocode-ai/local-server/dist/execution/workflow/memory-storage.js.map +1 -0
  266. package/node_modules/@sudocode-ai/local-server/dist/execution/workflow/orchestrator.d.ts +158 -0
  267. package/node_modules/@sudocode-ai/local-server/dist/execution/workflow/orchestrator.d.ts.map +1 -0
  268. package/node_modules/@sudocode-ai/local-server/dist/execution/workflow/orchestrator.js +9 -0
  269. package/node_modules/@sudocode-ai/local-server/dist/execution/workflow/orchestrator.js.map +1 -0
  270. package/node_modules/@sudocode-ai/local-server/dist/execution/workflow/types.d.ts +172 -0
  271. package/node_modules/@sudocode-ai/local-server/dist/execution/workflow/types.d.ts.map +1 -0
  272. package/node_modules/@sudocode-ai/local-server/dist/execution/workflow/types.js +9 -0
  273. package/node_modules/@sudocode-ai/local-server/dist/execution/workflow/types.js.map +1 -0
  274. package/node_modules/@sudocode-ai/local-server/dist/execution/workflow/utils.d.ts +89 -0
  275. package/node_modules/@sudocode-ai/local-server/dist/execution/workflow/utils.d.ts.map +1 -0
  276. package/node_modules/@sudocode-ai/local-server/dist/execution/workflow/utils.js +152 -0
  277. package/node_modules/@sudocode-ai/local-server/dist/execution/workflow/utils.js.map +1 -0
  278. package/node_modules/@sudocode-ai/local-server/dist/execution/worktree/config.d.ts +74 -0
  279. package/node_modules/@sudocode-ai/local-server/dist/execution/worktree/config.d.ts.map +1 -0
  280. package/node_modules/@sudocode-ai/local-server/dist/execution/worktree/config.js +280 -0
  281. package/node_modules/@sudocode-ai/local-server/dist/execution/worktree/config.js.map +1 -0
  282. package/node_modules/@sudocode-ai/local-server/dist/execution/worktree/git-cli.d.ts +151 -0
  283. package/node_modules/@sudocode-ai/local-server/dist/execution/worktree/git-cli.d.ts.map +1 -0
  284. package/node_modules/@sudocode-ai/local-server/dist/execution/worktree/git-cli.js +189 -0
  285. package/node_modules/@sudocode-ai/local-server/dist/execution/worktree/git-cli.js.map +1 -0
  286. package/node_modules/@sudocode-ai/local-server/dist/execution/worktree/index.d.ts +16 -0
  287. package/node_modules/@sudocode-ai/local-server/dist/execution/worktree/index.d.ts.map +1 -0
  288. package/node_modules/@sudocode-ai/local-server/dist/execution/worktree/index.js +15 -0
  289. package/node_modules/@sudocode-ai/local-server/dist/execution/worktree/index.js.map +1 -0
  290. package/node_modules/@sudocode-ai/local-server/dist/execution/worktree/manager.d.ts +184 -0
  291. package/node_modules/@sudocode-ai/local-server/dist/execution/worktree/manager.d.ts.map +1 -0
  292. package/node_modules/@sudocode-ai/local-server/dist/execution/worktree/manager.js +452 -0
  293. package/node_modules/@sudocode-ai/local-server/dist/execution/worktree/manager.js.map +1 -0
  294. package/node_modules/@sudocode-ai/local-server/dist/execution/worktree/types.d.ts +90 -0
  295. package/node_modules/@sudocode-ai/local-server/dist/execution/worktree/types.d.ts.map +1 -0
  296. package/node_modules/@sudocode-ai/local-server/dist/execution/worktree/types.js +42 -0
  297. package/node_modules/@sudocode-ai/local-server/dist/execution/worktree/types.js.map +1 -0
  298. package/node_modules/@sudocode-ai/local-server/dist/index.d.ts +8 -0
  299. package/node_modules/@sudocode-ai/local-server/dist/index.d.ts.map +1 -0
  300. package/node_modules/@sudocode-ai/local-server/dist/index.js +356 -0
  301. package/node_modules/@sudocode-ai/local-server/dist/index.js.map +1 -0
  302. package/node_modules/@sudocode-ai/local-server/dist/public/assets/index-C4SmlXoo.js +568 -0
  303. package/node_modules/@sudocode-ai/local-server/dist/public/assets/index-C4SmlXoo.js.map +1 -0
  304. package/node_modules/@sudocode-ai/local-server/dist/public/assets/index-DE59j7ti.css +1 -0
  305. package/node_modules/@sudocode-ai/local-server/dist/public/assets/react-vendor-LX0UoTxg.js +60 -0
  306. package/node_modules/@sudocode-ai/local-server/dist/public/assets/react-vendor-LX0UoTxg.js.map +1 -0
  307. package/node_modules/@sudocode-ai/local-server/dist/public/assets/ui-vendor-_cxVHaqZ.js +54 -0
  308. package/node_modules/@sudocode-ai/local-server/dist/public/assets/ui-vendor-_cxVHaqZ.js.map +1 -0
  309. package/node_modules/@sudocode-ai/local-server/dist/public/favicon.ico +0 -0
  310. package/node_modules/@sudocode-ai/local-server/dist/public/index.html +16 -0
  311. package/node_modules/@sudocode-ai/local-server/dist/public/logo.png +0 -0
  312. package/node_modules/@sudocode-ai/local-server/dist/routes/executions-stream.d.ts +24 -0
  313. package/node_modules/@sudocode-ai/local-server/dist/routes/executions-stream.d.ts.map +1 -0
  314. package/node_modules/@sudocode-ai/local-server/dist/routes/executions-stream.js +55 -0
  315. package/node_modules/@sudocode-ai/local-server/dist/routes/executions-stream.js.map +1 -0
  316. package/node_modules/@sudocode-ai/local-server/dist/routes/executions.d.ts +19 -0
  317. package/node_modules/@sudocode-ai/local-server/dist/routes/executions.d.ts.map +1 -0
  318. package/node_modules/@sudocode-ai/local-server/dist/routes/executions.js +267 -0
  319. package/node_modules/@sudocode-ai/local-server/dist/routes/executions.js.map +1 -0
  320. package/node_modules/@sudocode-ai/local-server/dist/routes/feedback.d.ts +7 -0
  321. package/node_modules/@sudocode-ai/local-server/dist/routes/feedback.d.ts.map +1 -0
  322. package/node_modules/@sudocode-ai/local-server/dist/routes/feedback.js +329 -0
  323. package/node_modules/@sudocode-ai/local-server/dist/routes/feedback.js.map +1 -0
  324. package/node_modules/@sudocode-ai/local-server/dist/routes/issues.d.ts +7 -0
  325. package/node_modules/@sudocode-ai/local-server/dist/routes/issues.d.ts.map +1 -0
  326. package/node_modules/@sudocode-ai/local-server/dist/routes/issues.js +280 -0
  327. package/node_modules/@sudocode-ai/local-server/dist/routes/issues.js.map +1 -0
  328. package/node_modules/@sudocode-ai/local-server/dist/routes/relationships.d.ts +7 -0
  329. package/node_modules/@sudocode-ai/local-server/dist/routes/relationships.d.ts.map +1 -0
  330. package/node_modules/@sudocode-ai/local-server/dist/routes/relationships.js +308 -0
  331. package/node_modules/@sudocode-ai/local-server/dist/routes/relationships.js.map +1 -0
  332. package/node_modules/@sudocode-ai/local-server/dist/routes/specs.d.ts +7 -0
  333. package/node_modules/@sudocode-ai/local-server/dist/routes/specs.d.ts.map +1 -0
  334. package/node_modules/@sudocode-ai/local-server/dist/routes/specs.js +270 -0
  335. package/node_modules/@sudocode-ai/local-server/dist/routes/specs.js.map +1 -0
  336. package/node_modules/@sudocode-ai/local-server/dist/services/db.d.ts +33 -0
  337. package/node_modules/@sudocode-ai/local-server/dist/services/db.d.ts.map +1 -0
  338. package/node_modules/@sudocode-ai/local-server/dist/services/db.js +85 -0
  339. package/node_modules/@sudocode-ai/local-server/dist/services/db.js.map +1 -0
  340. package/node_modules/@sudocode-ai/local-server/dist/services/execution-lifecycle.d.ts +108 -0
  341. package/node_modules/@sudocode-ai/local-server/dist/services/execution-lifecycle.d.ts.map +1 -0
  342. package/node_modules/@sudocode-ai/local-server/dist/services/execution-lifecycle.js +286 -0
  343. package/node_modules/@sudocode-ai/local-server/dist/services/execution-lifecycle.js.map +1 -0
  344. package/node_modules/@sudocode-ai/local-server/dist/services/execution-service.d.ts +185 -0
  345. package/node_modules/@sudocode-ai/local-server/dist/services/execution-service.d.ts.map +1 -0
  346. package/node_modules/@sudocode-ai/local-server/dist/services/execution-service.js +676 -0
  347. package/node_modules/@sudocode-ai/local-server/dist/services/execution-service.js.map +1 -0
  348. package/node_modules/@sudocode-ai/local-server/dist/services/executions.d.ts +59 -0
  349. package/node_modules/@sudocode-ai/local-server/dist/services/executions.d.ts.map +1 -0
  350. package/node_modules/@sudocode-ai/local-server/dist/services/executions.js +164 -0
  351. package/node_modules/@sudocode-ai/local-server/dist/services/executions.js.map +1 -0
  352. package/node_modules/@sudocode-ai/local-server/dist/services/export.d.ts +24 -0
  353. package/node_modules/@sudocode-ai/local-server/dist/services/export.d.ts.map +1 -0
  354. package/node_modules/@sudocode-ai/local-server/dist/services/export.js +106 -0
  355. package/node_modules/@sudocode-ai/local-server/dist/services/export.js.map +1 -0
  356. package/node_modules/@sudocode-ai/local-server/dist/services/feedback.d.ts +40 -0
  357. package/node_modules/@sudocode-ai/local-server/dist/services/feedback.d.ts.map +1 -0
  358. package/node_modules/@sudocode-ai/local-server/dist/services/feedback.js +54 -0
  359. package/node_modules/@sudocode-ai/local-server/dist/services/feedback.js.map +1 -0
  360. package/node_modules/@sudocode-ai/local-server/dist/services/issues.d.ts +27 -0
  361. package/node_modules/@sudocode-ai/local-server/dist/services/issues.d.ts.map +1 -0
  362. package/node_modules/@sudocode-ai/local-server/dist/services/issues.js +35 -0
  363. package/node_modules/@sudocode-ai/local-server/dist/services/issues.js.map +1 -0
  364. package/node_modules/@sudocode-ai/local-server/dist/services/prompt-template-engine.d.ts +108 -0
  365. package/node_modules/@sudocode-ai/local-server/dist/services/prompt-template-engine.d.ts.map +1 -0
  366. package/node_modules/@sudocode-ai/local-server/dist/services/prompt-template-engine.js +212 -0
  367. package/node_modules/@sudocode-ai/local-server/dist/services/prompt-template-engine.js.map +1 -0
  368. package/node_modules/@sudocode-ai/local-server/dist/services/prompt-templates.d.ts +97 -0
  369. package/node_modules/@sudocode-ai/local-server/dist/services/prompt-templates.d.ts.map +1 -0
  370. package/node_modules/@sudocode-ai/local-server/dist/services/prompt-templates.js +236 -0
  371. package/node_modules/@sudocode-ai/local-server/dist/services/prompt-templates.js.map +1 -0
  372. package/node_modules/@sudocode-ai/local-server/dist/services/relationships.d.ts +35 -0
  373. package/node_modules/@sudocode-ai/local-server/dist/services/relationships.d.ts.map +1 -0
  374. package/node_modules/@sudocode-ai/local-server/dist/services/relationships.js +42 -0
  375. package/node_modules/@sudocode-ai/local-server/dist/services/relationships.js.map +1 -0
  376. package/node_modules/@sudocode-ai/local-server/dist/services/specs.d.ts +27 -0
  377. package/node_modules/@sudocode-ai/local-server/dist/services/specs.d.ts.map +1 -0
  378. package/node_modules/@sudocode-ai/local-server/dist/services/specs.js +35 -0
  379. package/node_modules/@sudocode-ai/local-server/dist/services/specs.js.map +1 -0
  380. package/node_modules/@sudocode-ai/local-server/dist/services/watcher.d.ts +50 -0
  381. package/node_modules/@sudocode-ai/local-server/dist/services/watcher.d.ts.map +1 -0
  382. package/node_modules/@sudocode-ai/local-server/dist/services/watcher.js +69 -0
  383. package/node_modules/@sudocode-ai/local-server/dist/services/watcher.js.map +1 -0
  384. package/node_modules/@sudocode-ai/local-server/dist/services/websocket.d.ts +127 -0
  385. package/node_modules/@sudocode-ai/local-server/dist/services/websocket.d.ts.map +1 -0
  386. package/node_modules/@sudocode-ai/local-server/dist/services/websocket.js +389 -0
  387. package/node_modules/@sudocode-ai/local-server/dist/services/websocket.js.map +1 -0
  388. package/node_modules/@sudocode-ai/local-server/dist/utils/sudocode-dir.d.ts +6 -0
  389. package/node_modules/@sudocode-ai/local-server/dist/utils/sudocode-dir.d.ts.map +1 -0
  390. package/node_modules/@sudocode-ai/local-server/dist/utils/sudocode-dir.js +9 -0
  391. package/node_modules/@sudocode-ai/local-server/dist/utils/sudocode-dir.js.map +1 -0
  392. package/node_modules/@sudocode-ai/local-server/package.json +72 -0
  393. package/node_modules/@sudocode-ai/mcp/LICENSE +21 -0
  394. package/node_modules/@sudocode-ai/mcp/README.md +226 -0
  395. package/node_modules/@sudocode-ai/mcp/dist/client.d.ts +33 -0
  396. package/node_modules/@sudocode-ai/mcp/dist/client.d.ts.map +1 -0
  397. package/node_modules/@sudocode-ai/mcp/dist/client.js +159 -0
  398. package/node_modules/@sudocode-ai/mcp/dist/client.js.map +1 -0
  399. package/node_modules/@sudocode-ai/mcp/dist/index.d.ts +6 -0
  400. package/node_modules/@sudocode-ai/mcp/dist/index.d.ts.map +1 -0
  401. package/node_modules/@sudocode-ai/mcp/dist/index.js +64 -0
  402. package/node_modules/@sudocode-ai/mcp/dist/index.js.map +1 -0
  403. package/node_modules/@sudocode-ai/mcp/dist/server.d.ts +26 -0
  404. package/node_modules/@sudocode-ai/mcp/dist/server.d.ts.map +1 -0
  405. package/node_modules/@sudocode-ai/mcp/dist/server.js +575 -0
  406. package/node_modules/@sudocode-ai/mcp/dist/server.js.map +1 -0
  407. package/node_modules/@sudocode-ai/mcp/dist/tools/analytics.d.ts +41 -0
  408. package/node_modules/@sudocode-ai/mcp/dist/tools/analytics.d.ts.map +1 -0
  409. package/node_modules/@sudocode-ai/mcp/dist/tools/analytics.js +21 -0
  410. package/node_modules/@sudocode-ai/mcp/dist/tools/analytics.js.map +1 -0
  411. package/node_modules/@sudocode-ai/mcp/dist/tools/feedback.d.ts +19 -0
  412. package/node_modules/@sudocode-ai/mcp/dist/tools/feedback.d.ts.map +1 -0
  413. package/node_modules/@sudocode-ai/mcp/dist/tools/feedback.js +24 -0
  414. package/node_modules/@sudocode-ai/mcp/dist/tools/feedback.js.map +1 -0
  415. package/node_modules/@sudocode-ai/mcp/dist/tools/init.d.ts +17 -0
  416. package/node_modules/@sudocode-ai/mcp/dist/tools/init.d.ts.map +1 -0
  417. package/node_modules/@sudocode-ai/mcp/dist/tools/init.js +15 -0
  418. package/node_modules/@sudocode-ai/mcp/dist/tools/init.js.map +1 -0
  419. package/node_modules/@sudocode-ai/mcp/dist/tools/issues.d.ts +44 -0
  420. package/node_modules/@sudocode-ai/mcp/dist/tools/issues.d.ts.map +1 -0
  421. package/node_modules/@sudocode-ai/mcp/dist/tools/issues.js +106 -0
  422. package/node_modules/@sudocode-ai/mcp/dist/tools/issues.js.map +1 -0
  423. package/node_modules/@sudocode-ai/mcp/dist/tools/references.d.ts +21 -0
  424. package/node_modules/@sudocode-ai/mcp/dist/tools/references.d.ts.map +1 -0
  425. package/node_modules/@sudocode-ai/mcp/dist/tools/references.js +49 -0
  426. package/node_modules/@sudocode-ai/mcp/dist/tools/references.js.map +1 -0
  427. package/node_modules/@sudocode-ai/mcp/dist/tools/relationships.d.ts +15 -0
  428. package/node_modules/@sudocode-ai/mcp/dist/tools/relationships.d.ts.map +1 -0
  429. package/node_modules/@sudocode-ai/mcp/dist/tools/relationships.js +18 -0
  430. package/node_modules/@sudocode-ai/mcp/dist/tools/relationships.js.map +1 -0
  431. package/node_modules/@sudocode-ai/mcp/dist/tools/specs.d.ts +35 -0
  432. package/node_modules/@sudocode-ai/mcp/dist/tools/specs.d.ts.map +1 -0
  433. package/node_modules/@sudocode-ai/mcp/dist/tools/specs.js +85 -0
  434. package/node_modules/@sudocode-ai/mcp/dist/tools/specs.js.map +1 -0
  435. package/node_modules/@sudocode-ai/mcp/dist/types.d.ts +35 -0
  436. package/node_modules/@sudocode-ai/mcp/dist/types.d.ts.map +1 -0
  437. package/node_modules/@sudocode-ai/mcp/dist/types.js +21 -0
  438. package/node_modules/@sudocode-ai/mcp/dist/types.js.map +1 -0
  439. package/node_modules/@sudocode-ai/mcp/package.json +67 -0
  440. package/node_modules/@sudocode-ai/types/README.md +7 -0
  441. package/node_modules/@sudocode-ai/types/dist/schema.d.ts +45 -0
  442. package/node_modules/@sudocode-ai/types/dist/schema.d.ts.map +1 -0
  443. package/node_modules/@sudocode-ai/types/dist/schema.js +338 -0
  444. package/node_modules/@sudocode-ai/types/dist/schema.js.map +1 -0
  445. package/node_modules/@sudocode-ai/types/package.json +46 -0
  446. package/package.json +51 -12
  447. package/index.js +0 -5
@@ -0,0 +1,438 @@
1
+ /**
2
+ * File watcher for automatic synchronization
3
+ * Watches .sudocode directory for changes and triggers sync operations
4
+ */
5
+ import chokidar from "chokidar";
6
+ import * as path from "path";
7
+ import * as fs from "fs";
8
+ import { syncMarkdownToJSONL, syncJSONLToMarkdown } from "./sync.js";
9
+ import { importFromJSONL } from "./import.js";
10
+ import { exportToJSONL } from "./export.js";
11
+ import { getSpecByFilePath, deleteSpec, listSpecs, getSpec, } from "./operations/specs.js";
12
+ import { listIssues, getIssue } from "./operations/issues.js";
13
+ import { parseMarkdownFile } from "./markdown.js";
14
+ import { listFeedback } from "./operations/feedback.js";
15
+ import { getTags } from "./operations/tags.js";
16
+ /**
17
+ * Start watching files for changes
18
+ * Returns a control object to stop the watcher
19
+ */
20
+ export function startWatcher(options) {
21
+ const { db, baseDir, debounceDelay = 2000, onLog = console.log, onError = console.error, ignoreInitial = true, syncJSONLToMarkdown: enableReverseSync = false, } = options;
22
+ const stats = {
23
+ filesWatched: 0,
24
+ changesPending: 0,
25
+ changesProcessed: 0,
26
+ errors: 0,
27
+ };
28
+ // Map of file paths to pending timeout IDs
29
+ const pendingChanges = new Map();
30
+ /**
31
+ * Check if markdown file content matches database content
32
+ * Returns true if they match (no sync needed)
33
+ */
34
+ function contentMatches(mdPath, entityId, entityType) {
35
+ try {
36
+ // Check if file exists
37
+ if (!fs.existsSync(mdPath)) {
38
+ return false; // File doesn't exist, needs to be created
39
+ }
40
+ // Parse markdown file
41
+ const parsed = parseMarkdownFile(mdPath, db, baseDir);
42
+ const { data: frontmatter, content: mdContent } = parsed;
43
+ // Get entity from database
44
+ const dbEntity = entityType === "spec" ? getSpec(db, entityId) : getIssue(db, entityId);
45
+ if (!dbEntity) {
46
+ return false; // Entity not in DB, shouldn't happen
47
+ }
48
+ // Compare title
49
+ if (frontmatter.title !== dbEntity.title) {
50
+ return false;
51
+ }
52
+ // Compare content (trim to ignore whitespace differences)
53
+ if (mdContent.trim() !== (dbEntity.content || "").trim()) {
54
+ return false;
55
+ }
56
+ // Compare other key fields
57
+ if (entityType === "spec") {
58
+ if (frontmatter.priority !== dbEntity.priority)
59
+ return false;
60
+ }
61
+ else {
62
+ const issue = dbEntity;
63
+ if (frontmatter.status !== issue.status)
64
+ return false;
65
+ if (frontmatter.priority !== issue.priority)
66
+ return false;
67
+ }
68
+ return true; // Content matches
69
+ }
70
+ catch (error) {
71
+ // If there's an error parsing, assume they don't match
72
+ return false;
73
+ }
74
+ }
75
+ /**
76
+ * Check if JSONL file needs to be imported to database
77
+ * Returns true if import is needed (JSONL has changes not in DB)
78
+ */
79
+ function jsonlNeedsImport(jsonlPath) {
80
+ try {
81
+ if (!fs.existsSync(jsonlPath)) {
82
+ return false; // File doesn't exist
83
+ }
84
+ // Read JSONL file
85
+ const content = fs.readFileSync(jsonlPath, "utf8");
86
+ const lines = content
87
+ .trim()
88
+ .split("\n")
89
+ .filter((line) => line.trim());
90
+ // Parse each line and check if it differs from database
91
+ for (const line of lines) {
92
+ const jsonlEntity = JSON.parse(line);
93
+ const entityId = jsonlEntity.id;
94
+ const entityType = jsonlPath.includes("specs.jsonl") ? "spec" : "issue";
95
+ // Get entity from database
96
+ const dbEntity = entityType === "spec"
97
+ ? getSpec(db, entityId)
98
+ : getIssue(db, entityId);
99
+ // If entity doesn't exist in DB, import is needed
100
+ if (!dbEntity) {
101
+ return true;
102
+ }
103
+ // Compare all substantial fields
104
+ if (jsonlEntity.title !== dbEntity.title)
105
+ return true;
106
+ if ((jsonlEntity.content || "").trim() !== (dbEntity.content || "").trim())
107
+ return true;
108
+ if (jsonlEntity.priority !== dbEntity.priority)
109
+ return true;
110
+ if (jsonlEntity.parent_id !== dbEntity.parent_id)
111
+ return true;
112
+ if (jsonlEntity.archived !== dbEntity.archived)
113
+ return true;
114
+ if (jsonlEntity.archived_at !== dbEntity.archived_at)
115
+ return true;
116
+ if (entityType === "spec") {
117
+ const dbSpec = dbEntity;
118
+ // Compare spec-specific fields
119
+ if (jsonlEntity.file_path !== dbSpec.file_path)
120
+ return true;
121
+ }
122
+ else if (entityType === "issue") {
123
+ const dbIssue = dbEntity;
124
+ if (jsonlEntity.status !== dbIssue.status)
125
+ return true;
126
+ if (jsonlEntity.assignee !== dbIssue.assignee)
127
+ return true;
128
+ if (jsonlEntity.closed_at !== dbIssue.closed_at)
129
+ return true;
130
+ // Compare feedback
131
+ const dbFeedback = listFeedback(db, { issue_id: entityId });
132
+ const jsonlFeedback = jsonlEntity.feedback || [];
133
+ if (jsonlFeedback.length !== dbFeedback.length)
134
+ return true;
135
+ // Compare feedback content
136
+ for (const jf of jsonlFeedback) {
137
+ const dbf = dbFeedback.find((f) => f.id === jf.id);
138
+ if (!dbf)
139
+ return true;
140
+ if (jf.content !== dbf.content)
141
+ return true;
142
+ if (jf.feedback_type !== dbf.feedback_type)
143
+ return true;
144
+ if (jf.spec_id !== dbf.spec_id)
145
+ return true;
146
+ if (jf.dismissed !== dbf.dismissed)
147
+ return true;
148
+ // Compare anchor (stringified for comparison)
149
+ const jfAnchor = JSON.stringify(jf.anchor || null);
150
+ const dbfAnchor = JSON.stringify(dbf.anchor && typeof dbf.anchor === "string"
151
+ ? JSON.parse(dbf.anchor)
152
+ : dbf.anchor || null);
153
+ if (jfAnchor !== dbfAnchor)
154
+ return true;
155
+ }
156
+ }
157
+ // Compare tags
158
+ const dbTags = getTags(db, entityId, entityType);
159
+ const jsonlTags = jsonlEntity.tags || [];
160
+ if (jsonlTags.length !== dbTags.length)
161
+ return true;
162
+ const dbTagsSet = new Set(dbTags);
163
+ if (jsonlTags.some((tag) => !dbTagsSet.has(tag)))
164
+ return true;
165
+ // Compare relationships
166
+ const { getOutgoingRelationships } = require("./operations/relationships.js");
167
+ const dbRels = getOutgoingRelationships(db, entityId, entityType);
168
+ const jsonlRels = jsonlEntity.relationships || [];
169
+ if (jsonlRels.length !== dbRels.length)
170
+ return true;
171
+ // Compare relationship content
172
+ for (const jr of jsonlRels) {
173
+ const dr = dbRels.find((r) => r.to_id === jr.to &&
174
+ r.to_type === jr.to_type &&
175
+ r.relationship_type === jr.type);
176
+ if (!dr)
177
+ return true;
178
+ }
179
+ // Compare updated_at timestamp - if JSONL is newer, import is needed
180
+ if (jsonlEntity.updated_at &&
181
+ new Date(jsonlEntity.updated_at).getTime() >
182
+ new Date(dbEntity.updated_at).getTime()) {
183
+ return true;
184
+ }
185
+ }
186
+ return false; // All entities match
187
+ }
188
+ catch (error) {
189
+ // If there's an error, assume import is needed
190
+ return true;
191
+ }
192
+ }
193
+ // Paths to watch
194
+ const specsDir = path.join(baseDir, "specs");
195
+ const issuesDir = path.join(baseDir, "issues");
196
+ const specsJSONL = path.join(baseDir, "specs.jsonl");
197
+ const issuesJSONL = path.join(baseDir, "issues.jsonl");
198
+ // Watch directories and JSONL files - chokidar will recursively watch all files inside
199
+ const watcher = chokidar.watch([specsDir, issuesDir, specsJSONL, issuesJSONL], {
200
+ persistent: true,
201
+ ignoreInitial,
202
+ awaitWriteFinish: {
203
+ stabilityThreshold: 100, // Reduced for faster detection in tests
204
+ pollInterval: 50,
205
+ },
206
+ });
207
+ // Log watch patterns for debugging
208
+ onLog(`[watch] Watching directories: ${specsDir}, ${issuesDir} and JSONL files`);
209
+ /**
210
+ * Process a file change
211
+ */
212
+ async function processChange(filePath, event) {
213
+ try {
214
+ const ext = path.extname(filePath);
215
+ const basename = path.basename(filePath);
216
+ if (ext === ".md") {
217
+ // Markdown file changed - sync to database and JSONL
218
+ onLog(`[watch] ${event} ${path.relative(baseDir, filePath)}`);
219
+ if (event === "unlink") {
220
+ // File was deleted - remove from database and JSONL
221
+ // Calculate relative file path
222
+ const relPath = path.relative(baseDir, filePath);
223
+ // Look up spec by file path
224
+ const spec = getSpecByFilePath(db, relPath);
225
+ if (spec) {
226
+ // Delete from database
227
+ const deleted = deleteSpec(db, spec.id);
228
+ if (deleted) {
229
+ onLog(`[watch] Deleted spec ${spec.id} (file removed)`);
230
+ // Export to JSONL to reflect deletion
231
+ await exportToJSONL(db, { outputDir: baseDir });
232
+ }
233
+ }
234
+ else {
235
+ onLog(`[watch] File deleted but no spec found: ${relPath}`);
236
+ }
237
+ }
238
+ else {
239
+ // Parse markdown to get entity info
240
+ try {
241
+ const parsed = parseMarkdownFile(filePath, db, baseDir);
242
+ const { data: frontmatter } = parsed;
243
+ const entityId = frontmatter.id;
244
+ // Determine entity type based on file location
245
+ const relPath = path.relative(baseDir, filePath);
246
+ const entityType = relPath.startsWith("specs/") || relPath.startsWith("specs\\")
247
+ ? "spec"
248
+ : "issue";
249
+ // Skip if content already matches (prevents oscillation)
250
+ if (entityId && contentMatches(filePath, entityId, entityType)) {
251
+ return;
252
+ }
253
+ // Check timestamps to determine sync direction
254
+ if (entityId) {
255
+ const dbEntity = entityType === "spec"
256
+ ? getSpec(db, entityId)
257
+ : getIssue(db, entityId);
258
+ if (dbEntity) {
259
+ // Get file modification time
260
+ const fileStat = fs.statSync(filePath);
261
+ const fileTime = fileStat.mtimeMs;
262
+ // Get database updated_at time
263
+ const dbTime = new Date(dbEntity.updated_at).getTime();
264
+ // If database is newer than file, skip markdown → database sync
265
+ if (dbTime > fileTime) {
266
+ onLog(`[watch] Skipping sync for ${entityType} ${entityId} (database is newer)`);
267
+ return;
268
+ }
269
+ }
270
+ }
271
+ }
272
+ catch (error) {
273
+ // If parsing fails, continue with sync (might be a new file)
274
+ }
275
+ // Sync markdown to database
276
+ const result = await syncMarkdownToJSONL(db, filePath, {
277
+ outputDir: baseDir,
278
+ autoExport: true,
279
+ autoInitialize: true,
280
+ writeBackFrontmatter: true,
281
+ });
282
+ if (result.success) {
283
+ onLog(`[watch] Synced ${result.entityType} ${result.entityId} (${result.action})`);
284
+ }
285
+ else {
286
+ onError(new Error(`Failed to sync ${filePath}: ${result.error}`));
287
+ stats.errors++;
288
+ }
289
+ }
290
+ }
291
+ else if (basename === "specs.jsonl" || basename === "issues.jsonl") {
292
+ // JSONL file changed (e.g., from git pull) - check if import is needed
293
+ onLog(`[watch] ${event} ${path.relative(baseDir, filePath)}`);
294
+ if (event !== "unlink") {
295
+ // Check if JSONL actually differs from database before importing
296
+ if (jsonlNeedsImport(filePath)) {
297
+ await importFromJSONL(db, {
298
+ inputDir: baseDir,
299
+ });
300
+ onLog(`[watch] Imported JSONL changes to database`);
301
+ }
302
+ // Optionally sync database changes back to markdown files
303
+ // Only sync entities where content actually differs (contentMatches check)
304
+ if (enableReverseSync) {
305
+ onLog(`[watch] Checking for entities that need markdown updates...`);
306
+ let syncedCount = 0;
307
+ // Get all specs and sync to markdown
308
+ const specs = listSpecs(db);
309
+ for (const spec of specs) {
310
+ if (spec.file_path) {
311
+ const mdPath = path.join(baseDir, spec.file_path);
312
+ // Skip if content already matches (prevents oscillation)
313
+ if (contentMatches(mdPath, spec.id, "spec")) {
314
+ continue;
315
+ }
316
+ const result = await syncJSONLToMarkdown(db, spec.id, "spec", mdPath);
317
+ if (result.success) {
318
+ syncedCount++;
319
+ onLog(`[watch] Synced spec ${spec.id} to ${spec.file_path} (${result.action})`);
320
+ }
321
+ else if (result.error) {
322
+ onError(new Error(`Failed to sync spec ${spec.id}: ${result.error}`));
323
+ }
324
+ }
325
+ }
326
+ // Get all issues and check if any need syncing
327
+ const issues = listIssues(db);
328
+ const issuesDir = path.join(baseDir, "issues");
329
+ for (const issue of issues) {
330
+ const fileName = `${issue.id}.md`;
331
+ const mdPath = path.join(issuesDir, fileName);
332
+ // Skip if content already matches (prevents unnecessary writes and oscillation)
333
+ if (contentMatches(mdPath, issue.id, "issue")) {
334
+ continue;
335
+ }
336
+ const result = await syncJSONLToMarkdown(db, issue.id, "issue", mdPath);
337
+ if (result.success) {
338
+ syncedCount++;
339
+ onLog(`[watch] Synced issue ${issue.id} to markdown (${result.action})`);
340
+ }
341
+ else if (result.error) {
342
+ onError(new Error(`Failed to sync issue ${issue.id}: ${result.error}`));
343
+ }
344
+ }
345
+ if (syncedCount > 0) {
346
+ onLog(`[watch] Synced ${syncedCount} entities to markdown`);
347
+ }
348
+ else {
349
+ onLog(`[watch] All markdown files are up to date`);
350
+ }
351
+ }
352
+ }
353
+ }
354
+ stats.changesProcessed++;
355
+ }
356
+ catch (error) {
357
+ const message = error instanceof Error ? error.message : String(error);
358
+ onError(new Error(`Error processing ${filePath}: ${message}`));
359
+ stats.errors++;
360
+ }
361
+ }
362
+ /**
363
+ * Debounced file change handler
364
+ */
365
+ function handleFileChange(filePath, event) {
366
+ // Cancel pending change for this file
367
+ const existingTimeout = pendingChanges.get(filePath);
368
+ if (existingTimeout) {
369
+ clearTimeout(existingTimeout);
370
+ stats.changesPending--;
371
+ }
372
+ // Schedule new change
373
+ stats.changesPending++;
374
+ const timeout = setTimeout(() => {
375
+ pendingChanges.delete(filePath);
376
+ stats.changesPending--;
377
+ processChange(filePath, event);
378
+ }, debounceDelay);
379
+ pendingChanges.set(filePath, timeout);
380
+ }
381
+ // Set up event handlers
382
+ watcher.on("add", (filePath) => handleFileChange(filePath, "add"));
383
+ watcher.on("change", (filePath) => handleFileChange(filePath, "change"));
384
+ watcher.on("unlink", (filePath) => handleFileChange(filePath, "unlink"));
385
+ watcher.on("ready", () => {
386
+ const watched = watcher.getWatched();
387
+ stats.filesWatched = Object.keys(watched).reduce((total, dir) => total + watched[dir].length, 0);
388
+ onLog(`[watch] Watching ${stats.filesWatched} files in ${baseDir}`);
389
+ });
390
+ watcher.on("error", (error) => {
391
+ onError(error);
392
+ stats.errors++;
393
+ });
394
+ // Return control object
395
+ return {
396
+ stop: async () => {
397
+ onLog("[watch] Stopping watcher...");
398
+ // Cancel all pending changes
399
+ for (const timeout of pendingChanges.values()) {
400
+ clearTimeout(timeout);
401
+ }
402
+ pendingChanges.clear();
403
+ stats.changesPending = 0;
404
+ // Close watcher
405
+ await watcher.close();
406
+ onLog("[watch] Watcher stopped");
407
+ },
408
+ getStats: () => ({ ...stats }),
409
+ };
410
+ }
411
+ /**
412
+ * Wait for termination signal and stop watcher gracefully
413
+ */
414
+ export function setupGracefulShutdown(control) {
415
+ let isShuttingDown = false;
416
+ const shutdown = async (signal) => {
417
+ if (isShuttingDown)
418
+ return;
419
+ isShuttingDown = true;
420
+ console.log(`\n[watch] Received ${signal}, shutting down gracefully...`);
421
+ try {
422
+ await control.stop();
423
+ process.exit(0);
424
+ }
425
+ catch (error) {
426
+ console.error("[watch] Error during shutdown:", error);
427
+ process.exit(1);
428
+ }
429
+ };
430
+ // Handle termination signals
431
+ process.on("SIGINT", () => shutdown("SIGINT"));
432
+ process.on("SIGTERM", () => shutdown("SIGTERM"));
433
+ // Handle unhandled promise rejections
434
+ process.on("unhandledRejection", (reason, promise) => {
435
+ console.error("[watch] Unhandled Rejection at:", promise, "reason:", reason);
436
+ });
437
+ }
438
+ //# sourceMappingURL=watcher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"watcher.js","sourceRoot":"","sources":["../src/watcher.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,65 @@
1
+ {
2
+ "name": "@sudocode-ai/cli",
3
+ "version": "0.1.1",
4
+ "description": "Git-native spec and issue management CLI for AI-assisted software development",
5
+ "main": "dist/index.js",
6
+ "type": "module",
7
+ "bin": {
8
+ "sudocode": "dist/cli.js",
9
+ "sdc": "dist/cli.js"
10
+ },
11
+ "scripts": {
12
+ "build": "tsc && chmod +x dist/cli.js",
13
+ "dev": "tsc --watch",
14
+ "test": "vitest",
15
+ "test:schema": "tsc && node dist/test-schema.js",
16
+ "clean": "rm -rf dist"
17
+ },
18
+ "keywords": [
19
+ "sudocode",
20
+ "cli",
21
+ "specs",
22
+ "issues",
23
+ "ai-assisted-development",
24
+ "git-native",
25
+ "project-management"
26
+ ],
27
+ "author": "sudocode AI",
28
+ "license": "Apache-2.0",
29
+ "repository": {
30
+ "type": "git",
31
+ "url": "git+https://github.com/sudocode-ai/sudocode.git",
32
+ "directory": "cli"
33
+ },
34
+ "homepage": "https://sudocode.ai",
35
+ "bugs": {
36
+ "url": "https://github.com/sudocode-ai/sudocode/issues"
37
+ },
38
+ "publishConfig": {
39
+ "access": "public"
40
+ },
41
+ "engines": {
42
+ "node": ">=18.0.0"
43
+ },
44
+ "dependencies": {
45
+ "@sudocode-ai/types": "^0.1.1",
46
+ "better-sqlite3": "^11.8.1",
47
+ "chalk": "^5.6.2",
48
+ "chokidar": "^4.0.3",
49
+ "cli-table3": "^0.6.5",
50
+ "commander": "^14.0.1",
51
+ "gray-matter": "^4.0.3",
52
+ "vite": "7.1.12"
53
+ },
54
+ "devDependencies": {
55
+ "@types/better-sqlite3": "^7.6.8",
56
+ "@types/chokidar": "^1.7.5",
57
+ "@types/node": "^20.10.6",
58
+ "esbuild": "^0.24.2",
59
+ "typescript": "^5.3.3",
60
+ "vitest": "^3.2.4"
61
+ },
62
+ "files": [
63
+ "dist/**/*"
64
+ ]
65
+ }
@@ -0,0 +1,19 @@
1
+ # Sudocode Local Server
2
+
3
+ Local server for sudocode - providesa web UI, REST API, and WebSocket endpoints for managing specs and issues.
4
+
5
+ **THE SUDOCODE LOCAL APP SERVER IS WIP AND IS NOT YET IN A STABLE STATE**
6
+
7
+ ## Features
8
+
9
+ - **REST API** - CRUD operations for issues, specs, relationships, and feedback
10
+ - **WebSocket Server** - Real-time updates for connected clients
11
+ - **File Watcher** - Automatic sync when JSONL files change
12
+ - **Static File Serving** - Serves frontend UI in production mode
13
+
14
+ ## Usage
15
+
16
+ Run the sudocode companion app with `sudocode server`. You can specify a port with the `--port` option.
17
+
18
+ The server will start on `http://localhost:3000` by default.
19
+
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * CLI entry point for sudocode-server
4
+ * Starts the Express server for local development
5
+ */
6
+ import './index.js';
7
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA;;;GAGG;AAEH,OAAO,YAAY,CAAC"}
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * CLI entry point for sudocode-server
4
+ * Starts the Express server for local development
5
+ */
6
+ import './index.js';
7
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA;;;GAGG;AAEH,OAAO,YAAY,CAAC"}