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
package/README.md ADDED
@@ -0,0 +1,222 @@
1
+ # sudocode
2
+
3
+ Git-native spec and issue management for AI-assisted software development.
4
+
5
+ ## Overview
6
+
7
+ Sudocode is a git-native workflow tool designed for AI-assisted development. It stores specs and issues as JSONL files alongside your code, enabling version control, branching, and merging of your project management data just like code.
8
+
9
+ **Key Features:**
10
+ - **Git-native** - All data stored in `.sudocode/` as JSONL, versioned with your code
11
+ - **Anchored feedback** - Link issues to specific lines in specs with smart relocation
12
+ - **Relationship tracking** - Model dependencies, blockers, and implementations
13
+ - **MCP integration** - Works seamlessly with Claude and other AI assistants
14
+ - **Fast local cache** - SQLite for instant queries without parsing JSONL
15
+ - **Bidirectional sync** - Export to markdown, edit, import back
16
+
17
+ ## What's Included
18
+
19
+ This meta-package bundles all sudocode components:
20
+
21
+ - **@sudocode-ai/cli** - Command-line interface (`sudocode` command)
22
+ - **@sudocode-ai/mcp** - Model Context Protocol server for AI assistants
23
+ - **@sudocode-ai/types** - TypeScript type definitions
24
+
25
+ ## Installation
26
+
27
+ ```bash
28
+ npm install -g sudocode
29
+ ```
30
+
31
+ After installation, both `sudocode` (also aliased as `sdc`) commands will be available.
32
+
33
+ ## Quick Start
34
+
35
+ ```bash
36
+ # Initialize in your project
37
+ sudocode init
38
+
39
+ # Create your first spec
40
+ sudocode spec create "User authentication system" -p 4
41
+
42
+ # Create an issue
43
+ sudocode issue create "Implement OAuth login" -p 3 -a alice
44
+
45
+ # Link the issue to the spec
46
+ sudocode link ISSUE-1 SPEC-1 --type implements
47
+
48
+ # Show what's ready to work on
49
+ sudocode ready
50
+
51
+ # Update issue status
52
+ sudocode issue update ISSUE-1 --status in_progress
53
+
54
+ # View project status
55
+ sudocode status
56
+ ```
57
+
58
+ ## Core Commands
59
+
60
+ ```bash
61
+ # Initialization
62
+ sudocode init # Set up .sudocode/ directory
63
+
64
+ # Specs (specifications/requirements)
65
+ sudocode spec create <title> [options] # Create a spec
66
+ sudocode spec list # List all specs
67
+ sudocode spec show <id> # Show spec details
68
+
69
+ # Issues (tasks/bugs)
70
+ sudocode issue create <title> [options] # Create an issue
71
+ sudocode issue list [options] # List issues
72
+ sudocode issue update <id> [options] # Update issue
73
+ sudocode issue close <id> # Close issue
74
+
75
+ # Relationships
76
+ sudocode link <from> <to> --type <type> # Link entities
77
+ sudocode ready # Show unblocked work
78
+ sudocode blocked # Show blocked issues
79
+
80
+ # Feedback (link issues to spec lines)
81
+ sudocode feedback add <issue> <spec> [options] # Add anchored feedback
82
+ sudocode feedback list # List feedback
83
+
84
+ # Status
85
+ sudocode status # Quick status
86
+ sudocode stats # Detailed statistics
87
+
88
+ # Sync
89
+ sudocode sync # Sync JSONL with database
90
+ sudocode sync --watch # Auto-sync on changes
91
+ ```
92
+
93
+ For full command documentation, see [@sudocode-ai/cli](https://github.com/sudocode-ai/sudocode/tree/main/cli).
94
+
95
+ ## MCP Integration
96
+
97
+ Sudocode includes an MCP server for seamless AI assistant integration. To use with Claude Code, you can either:
98
+
99
+ 1. Add sudocode as a plugin:
100
+
101
+ ```bash
102
+ # In Claude Code
103
+ /plugin marketplace add sudocode-ai/sudocode
104
+ /plugin install sudocode
105
+ ```
106
+
107
+ 2. Configure Claude Code MCP server:
108
+
109
+ ```json
110
+ {
111
+ "mcpServers": {
112
+ "sudocode": {
113
+ "command": "sudocode-mcp"
114
+ }
115
+ }
116
+ }
117
+ ```
118
+
119
+ Restart Claude Code to apply changes.
120
+
121
+ For full MCP documentation, see [@sudocode-ai/mcp](https://github.com/sudocode-ai/sudocode/tree/main/mcp).
122
+
123
+ ## Example Workflow
124
+
125
+ ### Creating a Feature
126
+
127
+ ```bash
128
+ # Create a spec for the feature
129
+ sudocode spec create "OAuth2 Authentication" -p 4 --tags auth,security
130
+
131
+ # Create implementation issues
132
+ sudocode issue create "Set up OAuth provider configuration" -p 3 -a alice
133
+ sudocode issue create "Implement login endpoint" -p 3 -a bob
134
+ sudocode issue create "Add token refresh logic" -p 2 -a alice
135
+
136
+ # Link issues to spec
137
+ sudocode link ISSUE-1 SPEC-1 --type implements
138
+ sudocode link ISSUE-2 SPEC-1 --type implements
139
+ sudocode link ISSUE-3 SPEC-1 --type implements
140
+
141
+ # Model dependencies
142
+ sudocode link ISSUE-2 ISSUE-1 --type depends-on
143
+
144
+ # Check what's ready
145
+ sudocode ready
146
+ # Shows: ISSUE-1 (no dependencies)
147
+
148
+ # Start work
149
+ sudocode issue update ISSUE-1 --status in_progress
150
+ ```
151
+
152
+ ### Adding Feedback to Specs
153
+
154
+ ```bash
155
+ # Add feedback at a specific line
156
+ sudocode feedback add ISSUE-4 SPEC-1 \
157
+ --line 42 \
158
+ --content "Should we support 2FA?" \
159
+ --type suggestion
160
+
161
+ # Or search for text
162
+ sudocode feedback add ISSUE-5 SPEC-1 \
163
+ --text "password requirements" \
164
+ --content "Consider adding passwordless options" \
165
+ --type comment
166
+
167
+ # View feedback
168
+ sudocode feedback list --spec SPEC-1
169
+ ```
170
+
171
+ ## File Structure
172
+
173
+ After `sudocode init`, your project will have:
174
+
175
+ ```
176
+ .sudocode/
177
+ ├── meta.json # Config & ID counters (git tracked)
178
+ ├── specs.jsonl # All specs (git tracked)
179
+ ├── issues.jsonl # All issues (git tracked)
180
+ ├── cache.db # SQLite cache (gitignored)
181
+ ├── specs/ # Generated markdown that you can edit (gitignored)
182
+ ├── issues/ # Generated markdown that you can edit (gitignored)
183
+ └── .gitignore # Ignores cache and generated files
184
+ ```
185
+
186
+ The JSONL files are designed to be merged in git like code - each line is a complete entity.
187
+
188
+ ## Why Git-Native?
189
+
190
+ **Traditional approach:** Project management data lives in external tools (Jira, Linear, etc.), disconnected from your code.
191
+
192
+ **Sudocode approach:** Project management data lives alongside your code in git, enabling:
193
+ - **Branch specs/issues** with your code branches
194
+ - **Merge specs/issues** when merging branches
195
+ - **Revert specs/issues** along with code changes
196
+ - **Review specs/issues** in pull requests
197
+ - **Version specs/issues** with release tags
198
+ - **AI assistants** can read and modify directly
199
+
200
+ ## Use Cases
201
+
202
+ - **AI-assisted development** - Let AI agents manage issues and provide spec feedback
203
+ - **Spec-driven development** - Write specs, generate issues, track implementation
204
+ - **Context management** - Store project context that moves with your code
205
+ - **Local-first workflow** - No external services required, works offline
206
+ - **Team coordination** - Share specs/issues through git, merge like code
207
+
208
+ ## Documentation
209
+
210
+ - **CLI Reference:** [@sudocode-ai/cli](https://github.com/sudocode-ai/sudocode/tree/main/cli)
211
+ - **MCP Server:** [@sudocode-ai/mcp](https://github.com/sudocode-ai/sudocode/tree/main/mcp)
212
+ - **Type Definitions:** [@sudocode-ai/types](https://github.com/sudocode-ai/sudocode/tree/main/types)
213
+
214
+ ## Individual Package Installation
215
+
216
+ You can also install packages individually:
217
+
218
+ ```bash
219
+ npm install -g @sudocode-ai/cli # CLI only
220
+ npm install -g @sudocode-ai/mcp # MCP server only
221
+ npm install @sudocode-ai/types # Types only (for development)
222
+ ```
package/build.js ADDED
@@ -0,0 +1,75 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Build script for sudocode meta-package
4
+ * Copies workspace packages to node_modules for bundleDependencies
5
+ */
6
+
7
+ import { cpSync, mkdirSync, existsSync, rmSync } from "fs";
8
+ import { join, dirname } from "path";
9
+ import { fileURLToPath } from "url";
10
+
11
+ const __dirname = dirname(fileURLToPath(import.meta.url));
12
+ const rootDir = join(__dirname, "..");
13
+
14
+ console.log("Building sudocode meta-package...");
15
+
16
+ // Create node_modules/@sudocode-ai/
17
+ const nodeModulesDir = join(__dirname, "node_modules");
18
+ const scopeDir = join(nodeModulesDir, "@sudocode-ai");
19
+
20
+ if (existsSync(nodeModulesDir)) {
21
+ rmSync(nodeModulesDir, { recursive: true, force: true });
22
+ }
23
+ mkdirSync(scopeDir, { recursive: true });
24
+
25
+ // Copy workspace packages
26
+ const packages = [
27
+ { name: "types", dir: "types" },
28
+ { name: "cli", dir: "cli" },
29
+ { name: "mcp", dir: "mcp" },
30
+ { name: "local-server", dir: "server" },
31
+ ];
32
+
33
+ for (const pkg of packages) {
34
+ console.log(` - Copying @sudocode-ai/${pkg.name}...`);
35
+
36
+ const srcDir = join(rootDir, pkg.dir);
37
+ const destDir = join(scopeDir, pkg.name);
38
+
39
+ // Copy only the files that would be published (dist/, package.json, README, LICENSE)
40
+ cpSync(srcDir, destDir, {
41
+ recursive: true,
42
+ filter: (src) => {
43
+ const relativePath = src.substring(srcDir.length + 1);
44
+
45
+ // Include the directory itself
46
+ if (!relativePath) return true;
47
+
48
+ const parts = relativePath.split("/");
49
+ const firstPart = parts[0];
50
+
51
+ // Always include package.json, README, LICENSE
52
+ if (
53
+ firstPart === "package.json" ||
54
+ firstPart === "README.md" ||
55
+ firstPart === "LICENSE"
56
+ ) {
57
+ return true;
58
+ }
59
+
60
+ // Include dist directory and its contents
61
+ if (firstPart === "dist") {
62
+ return true;
63
+ }
64
+
65
+ // Exclude everything else (src, node_modules, tests, etc.)
66
+ return false;
67
+ },
68
+ });
69
+
70
+ console.log(` ✓ Copied`);
71
+ }
72
+
73
+ console.log("");
74
+ console.log("✓ Meta-package ready!");
75
+ console.log(" All workspace packages copied to node_modules/@sudocode-ai/");
@@ -0,0 +1,330 @@
1
+ # @sudocode-ai/cli
2
+
3
+ Command-line interface for [sudocode](https://github.com/sudocode-ai/sudocode) - Git-native spec and issue management for AI-assisted software development.
4
+
5
+ ## Overview
6
+
7
+ The sudocode CLI provides a complete toolkit for managing specifications and issues in a git-native workflow. All data is stored in `.sudocode/` as JSONL files that can be versioned alongside your code, with a local SQLite cache for fast queries.
8
+
9
+ ## Features
10
+
11
+ - **Git-native workflow** - All specs and issues stored as JSONL in `.sudocode/`
12
+ - **Fast local cache** - SQLite database for instant queries
13
+ - **Bidirectional sync** - Export to markdown for editing, import back to database
14
+ - **Relationship tracking** - Link specs and issues with typed relationships
15
+ - **Cross-references** - Add inline Obsidian-style `[[ID]]` references in markdown
16
+ - **Anchored feedback** - Attach issue feedback to specific lines in specs
17
+ - **Priority management** - 5-level priority system (0-4)
18
+ - **Flexible queries** - Filter by status, assignee, priority, or grep content
19
+ - **Watch mode** - Auto-sync markdown changes to database
20
+
21
+ ## Installation
22
+
23
+ ```bash
24
+ npm install -g @sudocode-ai/cli
25
+ ```
26
+
27
+ Or install the meta-package that includes the CLI:
28
+
29
+ ```bash
30
+ npm install -g sudocode
31
+ ```
32
+
33
+ ## Quick Start
34
+
35
+ ```bash
36
+ # Initialize sudocode in your project
37
+ sudocode init
38
+
39
+ # Create a spec
40
+ sudocode spec create "User authentication system" -p 4
41
+
42
+ # Create an issue
43
+ sudocode issue create "Implement login endpoint" -p 3 -a alice
44
+
45
+ # Link issue to spec
46
+ sudocode link ISSUE-1 SPEC-1 --type implements
47
+
48
+ # Show ready work
49
+ sudocode ready
50
+
51
+ # Update issue status
52
+ sudocode issue update ISSUE-1 --status in_progress
53
+ ```
54
+
55
+ ## Commands
56
+
57
+ ### Initialization
58
+
59
+ ```bash
60
+ sudocode init [options]
61
+ ```
62
+
63
+ Initialize `.sudocode/` directory structure with database, JSONL files, and configuration.
64
+
65
+ **Options:**
66
+ - `--spec-prefix <prefix>` - ID prefix for specs (default: "SPEC")
67
+ - `--issue-prefix <prefix>` - ID prefix for issues (default: "ISSUE")
68
+
69
+ **Creates:**
70
+ - `.sudocode/cache.db` - SQLite database (gitignored)
71
+ - `.sudocode/specs.jsonl` - Spec storage (versioned)
72
+ - `.sudocode/issues.jsonl` - Issue storage (versioned)
73
+ - `.sudocode/config.json` - Metadata config (versioned)
74
+ - `.sudocode/.gitignore` - Ignores cache and markdown files
75
+
76
+ ### Spec Management
77
+
78
+ ```bash
79
+ # Create a new spec
80
+ sudocode spec create <title> [options]
81
+ -p, --priority <0-4> Priority level (default: 2)
82
+ -d, --description <text> Description
83
+ --design <text> Design notes
84
+ --file-path <path> Custom markdown file path
85
+ --parent <id> Parent spec ID
86
+ --tags <tags> Comma-separated tags
87
+
88
+ # List specs
89
+ sudocode spec list [options]
90
+ -p, --priority <priority> Filter by priority
91
+ -g, --grep <query> Search title or content
92
+ --limit <num> Limit results (default: 50)
93
+
94
+ # Show spec details
95
+ sudocode spec show <id>
96
+
97
+ # Delete specs
98
+ sudocode spec delete <id...>
99
+ ```
100
+
101
+ ### Issue Management
102
+
103
+ ```bash
104
+ # Create a new issue
105
+ sudocode issue create <title> [options]
106
+ -p, --priority <0-4> Priority level (default: 2)
107
+ -d, --description <text> Description
108
+ -a, --assignee <name> Assignee username
109
+ --parent <id> Parent issue ID
110
+ --tags <tags> Comma-separated tags
111
+
112
+ # List issues
113
+ sudocode issue list [options]
114
+ -s, --status <status> Filter by status (open, in_progress, blocked, needs_review, closed)
115
+ -a, --assignee <assignee> Filter by assignee
116
+ -p, --priority <priority> Filter by priority
117
+ -g, --grep <query> Search title, description, or content
118
+ --limit <num> Limit results (default: 50)
119
+
120
+ # Show issue details
121
+ sudocode issue show <id>
122
+
123
+ # Update issue
124
+ sudocode issue update <id> [options]
125
+ -s, --status <status> New status
126
+ -p, --priority <priority> New priority
127
+ -a, --assignee <assignee> New assignee
128
+ --title <title> New title
129
+ --description <desc> New description
130
+
131
+ # Close issues
132
+ sudocode issue close <id...> [options]
133
+ -r, --reason <text> Reason for closing
134
+
135
+ # Delete issues
136
+ sudocode issue delete <id...> [options]
137
+ --hard Permanently delete (default: close)
138
+ ```
139
+
140
+ ### Relationships
141
+
142
+ ```bash
143
+ # Link entities
144
+ sudocode link <from> <to> [options]
145
+ -t, --type <type> Relationship type (default: "references")
146
+ ```
147
+
148
+ **Relationship types:**
149
+ - `blocks` - From blocks To (e.g., ISSUE-1 blocks ISSUE-2)
150
+ - `implements` - From implements To (e.g., ISSUE-1 implements SPEC-1)
151
+ - `references` - From references To (general reference)
152
+ - `depends-on` - From depends on To
153
+ - `related` - General relation
154
+ - `discovered-from` - Issue discovered from spec feedback
155
+
156
+ ### Cross-References
157
+
158
+ Add inline references to specs or issues using Obsidian-style `[[ID]]` syntax.
159
+
160
+ ```bash
161
+ # Add reference to a spec or issue
162
+ sudocode spec add-ref <entity-id> <reference-id> [options]
163
+ sudocode issue add-ref <entity-id> <reference-id> [options]
164
+ -l, --line <number> Line number to insert reference
165
+ -t, --text <text> Text to search for insertion point
166
+ --display <text> Display text for reference (creates [[ID|text]])
167
+ --type <type> Relationship type (creates [[ID]]{ type })
168
+ --format <format> Format: inline or newline (default: inline)
169
+ --position <position> Position: before or after (default: after)
170
+ ```
171
+
172
+ **Notes:**
173
+ - Either `--line` or `--text` is required (mutually exclusive)
174
+ - References use Obsidian-style syntax: `[[ISSUE-001]]`
175
+ - Display text: `[[ISSUE-001|OAuth Implementation]]`
176
+ - With relationship: `[[SPEC-002]]{ implements }`
177
+ - Combined: `[[SPEC-002|Auth Spec]]{ blocks }`
178
+ - Inline format adds reference on same line with surrounding text
179
+ - Newline format adds reference on its own line
180
+
181
+ **Examples:**
182
+
183
+ ```bash
184
+ # Add reference inline after line 45
185
+ sudocode spec add-ref SPEC-001 ISSUE-003 --line 45
186
+
187
+ # Add reference after specific text
188
+ sudocode spec add-ref SPEC-001 ISSUE-003 --text "Requirements:"
189
+
190
+ # Add with display text
191
+ sudocode spec add-ref SPEC-001 ISSUE-003 --line 45 --display "OAuth implementation"
192
+
193
+ # Add with relationship type
194
+ sudocode issue add-ref ISSUE-001 SPEC-002 --text "Design" --type implements
195
+
196
+ # Add on new line before text
197
+ sudocode spec add-ref SPEC-001 ISSUE-004 --text "## Tasks" --format newline --position before
198
+ ```
199
+
200
+ ### Query Commands
201
+
202
+ ```bash
203
+ # Show ready work (no blockers)
204
+ sudocode ready
205
+
206
+ # Show blocked issues
207
+ sudocode blocked
208
+ ```
209
+
210
+ ### Status & Stats
211
+
212
+ ```bash
213
+ # Quick project status
214
+ sudocode status [options]
215
+ -v, --verbose Show detailed status
216
+
217
+ # Detailed statistics
218
+ sudocode stats
219
+ ```
220
+
221
+ ### Feedback Management
222
+
223
+ Feedback allows issues to reference specific locations in specs with anchored comments.
224
+
225
+ ```bash
226
+ # Add feedback to a spec
227
+ sudocode feedback add <issue-id> <spec-id> [options]
228
+ -l, --line <number> Line number in spec
229
+ -t, --text <text> Text to search for anchor
230
+ --type <type> Feedback type (comment, suggestion, request)
231
+ -c, --content <text> Feedback content (required)
232
+ -a, --agent <name> Agent name
233
+
234
+ # List feedback
235
+ sudocode feedback list [options]
236
+ -i, --issue <id> Filter by issue ID
237
+ -s, --spec <id> Filter by spec ID
238
+ -t, --type <type> Filter by type
239
+ --status <status> Filter by status (open, acknowledged, resolved, wont_fix)
240
+ --limit <num> Limit results (default: 50)
241
+
242
+ # Show feedback details
243
+ sudocode feedback show <id>
244
+
245
+ # Dismiss feedback
246
+ sudocode feedback dismiss <id> [options]
247
+ -c, --comment <text> Optional comment
248
+
249
+ # List stale feedback anchors
250
+ sudocode feedback stale
251
+
252
+ # Manually relocate stale anchor
253
+ sudocode feedback relocate <id> --line <number>
254
+ ```
255
+
256
+ ### Sync & Export
257
+
258
+ ```bash
259
+ # Sync between markdown, JSONL, and database
260
+ sudocode sync [options]
261
+ --watch Watch for changes and auto-sync
262
+ --from-markdown Sync from markdown to database
263
+ --to-markdown Sync from database to markdown
264
+
265
+ # Export database to JSONL
266
+ sudocode export [options]
267
+ -o, --output <dir> Output directory (default: ".sudocode")
268
+
269
+ # Import JSONL to database
270
+ sudocode import [options]
271
+ -i, --input <dir> Input directory (default: ".sudocode")
272
+ ```
273
+
274
+ ## Global Options
275
+
276
+ ```bash
277
+ --db <path> Custom database path (auto-discovers by default)
278
+ --json Output in JSON format
279
+ ```
280
+
281
+ ## Example Workflows
282
+
283
+ ### Creating and Working on a Feature
284
+
285
+ ```bash
286
+ # Create a spec for the feature
287
+ sudocode spec create "Add OAuth authentication" -p 4 --tags auth,security
288
+
289
+ # Create implementation issues
290
+ sudocode issue create "Set up OAuth provider" -p 3 -a alice
291
+ sudocode issue create "Create login flow" -p 3 -a bob
292
+
293
+ # Link issues to spec
294
+ sudocode link ISSUE-1 SPEC-1 --type implements
295
+ sudocode link ISSUE-2 SPEC-1 --type implements
296
+
297
+ # Mark an issue as blocking another
298
+ sudocode link ISSUE-1 ISSUE-2 --type blocks
299
+
300
+ # Check what's ready to work on
301
+ sudocode ready
302
+
303
+ # Start working
304
+ sudocode issue update ISSUE-1 --status in_progress
305
+
306
+ # Complete the work
307
+ sudocode issue close ISSUE-1 -r "OAuth provider configured"
308
+ ```
309
+
310
+ ### Adding Feedback to Specs
311
+
312
+ ```bash
313
+ # Add feedback at a specific line
314
+ sudocode feedback add ISSUE-3 SPEC-1 \
315
+ --line 42 \
316
+ --content "Consider adding rate limiting" \
317
+ --type suggestion
318
+
319
+ # Add feedback by searching for text
320
+ sudocode feedback add ISSUE-4 SPEC-1 \
321
+ --text "password requirements" \
322
+ --content "Should we support passkeys?" \
323
+ --type comment
324
+
325
+ # List all feedback for a spec
326
+ sudocode feedback list --spec SPEC-1
327
+
328
+ # Check for stale anchors
329
+ sudocode feedback stale
330
+ ```
@@ -0,0 +1,53 @@
1
+ /**
2
+ * CLI handlers for feedback commands
3
+ */
4
+ import type Database from 'better-sqlite3';
5
+ export interface CommandContext {
6
+ db: Database.Database;
7
+ outputDir: string;
8
+ jsonOutput: boolean;
9
+ }
10
+ export interface FeedbackAddOptions {
11
+ line?: string;
12
+ text?: string;
13
+ type: string;
14
+ content: string;
15
+ agent?: string;
16
+ }
17
+ /**
18
+ * Add feedback to a spec from an issue
19
+ */
20
+ export declare function handleFeedbackAdd(ctx: CommandContext, issueId: string, specId: string, options: FeedbackAddOptions): Promise<void>;
21
+ export interface FeedbackListOptions {
22
+ issue?: string;
23
+ spec?: string;
24
+ type?: string;
25
+ dismissed?: string;
26
+ limit: string;
27
+ }
28
+ /**
29
+ * List feedback with optional filters
30
+ */
31
+ export declare function handleFeedbackList(ctx: CommandContext, options: FeedbackListOptions): Promise<void>;
32
+ /**
33
+ * Show detailed feedback information
34
+ */
35
+ export declare function handleFeedbackShow(ctx: CommandContext, id: string): Promise<void>;
36
+ export interface FeedbackDismissOptions {
37
+ }
38
+ /**
39
+ * Dismiss feedback
40
+ */
41
+ export declare function handleFeedbackDismiss(ctx: CommandContext, id: string, options: FeedbackDismissOptions): Promise<void>;
42
+ /**
43
+ * List stale feedback anchors
44
+ */
45
+ export declare function handleFeedbackStale(ctx: CommandContext): Promise<void>;
46
+ export interface FeedbackRelocateOptions {
47
+ line: string;
48
+ }
49
+ /**
50
+ * Manually relocate a stale anchor
51
+ */
52
+ export declare function handleFeedbackRelocate(ctx: CommandContext, id: string, options: FeedbackRelocateOptions): Promise<void>;
53
+ //# sourceMappingURL=feedback-commands.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"feedback-commands.d.ts","sourceRoot":"","sources":["../../src/cli/feedback-commands.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAc3C,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,QAAQ,CAAC,QAAQ,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,GAAG,EAAE,cAAc,EACnB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,IAAI,CAAC,CA+Df;AAED,MAAM,WAAW,mBAAmB;IAClC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,GAAG,EAAE,cAAc,EACnB,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CAAC,IAAI,CAAC,CAoDf;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,GAAG,EAAE,cAAc,EACnB,EAAE,EAAE,MAAM,GACT,OAAO,CAAC,IAAI,CAAC,CA4Df;AAED,MAAM,WAAW,sBAAsB;CACtC;AAED;;GAEG;AACH,wBAAsB,qBAAqB,CACzC,GAAG,EAAE,cAAc,EACnB,EAAE,EAAE,MAAM,EACV,OAAO,EAAE,sBAAsB,GAC9B,OAAO,CAAC,IAAI,CAAC,CAcf;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,GAAG,EAAE,cAAc,GAClB,OAAO,CAAC,IAAI,CAAC,CA0Cf;AAED,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,wBAAsB,sBAAsB,CAC1C,GAAG,EAAE,cAAc,EACnB,EAAE,EAAE,MAAM,EACV,OAAO,EAAE,uBAAuB,GAC/B,OAAO,CAAC,IAAI,CAAC,CA6Cf"}