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,92 @@
1
+ /**
2
+ * Feedback anchor creation and manipulation utilities
3
+ */
4
+ import type { FeedbackAnchor } from '../types.js';
5
+ export interface SectionInfo {
6
+ heading: string;
7
+ level: number;
8
+ startLine: number;
9
+ }
10
+ /**
11
+ * Create a feedback anchor at a specific line in spec content
12
+ */
13
+ export declare function createFeedbackAnchor(specContent: string, lineNumber: number, charOffset?: number): FeedbackAnchor;
14
+ /**
15
+ * Create a feedback anchor by searching for text in spec content
16
+ */
17
+ export declare function createAnchorByText(specContent: string, searchText: string): FeedbackAnchor | null;
18
+ /**
19
+ * Find the section (markdown heading) containing a given line
20
+ * Walks backwards from the line to find the nearest heading
21
+ */
22
+ export declare function findContainingSection(lines: string[], lineNumber: number): SectionInfo | null;
23
+ /**
24
+ * Extract a text snippet from a line with optional character offset
25
+ */
26
+ export declare function extractSnippet(line: string, charOffset?: number, maxLength?: number): string;
27
+ /**
28
+ * Get context around a line (before or after)
29
+ * @param chars Number of characters to get (negative for before, positive for after)
30
+ */
31
+ export declare function getContext(lines: string[], fromLine: number, chars: number): string;
32
+ /**
33
+ * Create a content hash for quick validation
34
+ */
35
+ export declare function createContentHash(content: string): string;
36
+ /**
37
+ * Verify that an anchor still points to the expected location
38
+ */
39
+ export declare function verifyAnchor(specContent: string, anchor: FeedbackAnchor): boolean;
40
+ /**
41
+ * Get all section headings from spec content
42
+ */
43
+ export declare function getAllSections(specContent: string): SectionInfo[];
44
+ /**
45
+ * Search for text with context matching
46
+ * Returns all matching locations with confidence scores
47
+ */
48
+ export declare function searchByContent(specContent: string, snippet?: string, contextBefore?: string, contextAfter?: string): Array<{
49
+ lineNumber: number;
50
+ confidence: number;
51
+ }>;
52
+ /**
53
+ * Calculate Levenshtein distance between two strings
54
+ * Used for fuzzy matching of section headings
55
+ */
56
+ export declare function levenshteinDistance(str1: string, str2: string): number;
57
+ /**
58
+ * Find the best matching section using fuzzy matching
59
+ * Returns section with lowest edit distance (Levenshtein)
60
+ */
61
+ export declare function findFuzzySection(specContent: string, targetHeading: string, maxDistance?: number): SectionInfo | null;
62
+ /**
63
+ * Relocate a feedback anchor when spec content changes
64
+ * Uses cascade strategy:
65
+ * 1. Section + Line Offset (if section unchanged)
66
+ * 2. Content Search (snippet + context)
67
+ * 3. Fuzzy Section Match (Levenshtein distance)
68
+ * 4. Mark as Stale (preserve original)
69
+ */
70
+ export declare function relocateFeedbackAnchor(oldSpecContent: string, newSpecContent: string, anchor: FeedbackAnchor): FeedbackAnchor;
71
+ /**
72
+ * Relocate all feedback anchors for a spec when its content changes
73
+ * Returns summary of relocation results
74
+ */
75
+ export interface RelocationResult {
76
+ feedback_id: string;
77
+ old_status: 'valid' | 'relocated' | 'stale';
78
+ new_status: 'valid' | 'relocated' | 'stale';
79
+ relocated: boolean;
80
+ }
81
+ export interface RelocationSummary {
82
+ total: number;
83
+ valid: number;
84
+ relocated: number;
85
+ stale: number;
86
+ results: RelocationResult[];
87
+ }
88
+ export declare function relocateSpecFeedback(oldSpecContent: string, newSpecContent: string, feedbackList: Array<{
89
+ id: string;
90
+ anchor: FeedbackAnchor;
91
+ }>): RelocationSummary;
92
+ //# sourceMappingURL=feedback-anchors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"feedback-anchors.d.ts","sourceRoot":"","sources":["../../src/operations/feedback-anchors.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAElD,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,EAClB,UAAU,CAAC,EAAE,MAAM,GAClB,cAAc,CAwChB;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,GACjB,cAAc,GAAG,IAAI,CAiBvB;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,MAAM,EAAE,EACf,UAAU,EAAE,MAAM,GACjB,WAAW,GAAG,IAAI,CAmBpB;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC5B,IAAI,EAAE,MAAM,EACZ,UAAU,CAAC,EAAE,MAAM,EACnB,SAAS,GAAE,MAAW,GACrB,MAAM,CAmCR;AAED;;;GAGG;AACH,wBAAgB,UAAU,CACxB,KAAK,EAAE,MAAM,EAAE,EACf,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,GACZ,MAAM,CA+CR;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAMzD;AAED;;GAEG;AACH,wBAAgB,YAAY,CAC1B,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,cAAc,GACrB,OAAO,CAiCT;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,WAAW,EAAE,CAmBjE;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,WAAW,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE,MAAM,EAChB,aAAa,CAAC,EAAE,MAAM,EACtB,YAAY,CAAC,EAAE,MAAM,GACpB,KAAK,CAAC;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC,CAyCnD;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CA8BtE;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,WAAW,EAAE,MAAM,EACnB,aAAa,EAAE,MAAM,EACrB,WAAW,GAAE,MAAU,GACtB,WAAW,GAAG,IAAI,CAwBpB;AAED;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CACpC,cAAc,EAAE,MAAM,EACtB,cAAc,EAAE,MAAM,EACtB,MAAM,EAAE,cAAc,GACrB,cAAc,CAsGhB;AAED;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,OAAO,GAAG,WAAW,GAAG,OAAO,CAAC;IAC5C,UAAU,EAAE,OAAO,GAAG,WAAW,GAAG,OAAO,CAAC;IAC5C,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,gBAAgB,EAAE,CAAC;CAC7B;AAED,wBAAgB,oBAAoB,CAClC,cAAc,EAAE,MAAM,EACtB,cAAc,EAAE,MAAM,EACtB,YAAY,EAAE,KAAK,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,cAAc,CAAA;CAAE,CAAC,GAC1D,iBAAiB,CA0CnB"}
@@ -0,0 +1,444 @@
1
+ /**
2
+ * Feedback anchor creation and manipulation utilities
3
+ */
4
+ import * as crypto from 'crypto';
5
+ /**
6
+ * Create a feedback anchor at a specific line in spec content
7
+ */
8
+ export function createFeedbackAnchor(specContent, lineNumber, charOffset) {
9
+ const lines = specContent.split('\n');
10
+ // Validate line number
11
+ if (lineNumber < 1 || lineNumber > lines.length) {
12
+ throw new Error(`Line number ${lineNumber} is out of range (1-${lines.length})`);
13
+ }
14
+ const targetLine = lines[lineNumber - 1];
15
+ // Find containing section
16
+ const section = findContainingSection(lines, lineNumber);
17
+ // Extract snippet with context
18
+ const snippet = extractSnippet(targetLine, charOffset, 50);
19
+ const contextBefore = getContext(lines, lineNumber, -50);
20
+ const contextAfter = getContext(lines, lineNumber, 50);
21
+ // Calculate relative offset from section start
22
+ const lineOffset = section ? lineNumber - section.startLine : undefined;
23
+ // Create content hash for validation
24
+ const hash = createContentHash(snippet);
25
+ return {
26
+ section_heading: section?.heading,
27
+ section_level: section?.level,
28
+ line_number: lineNumber,
29
+ line_offset: lineOffset,
30
+ text_snippet: snippet,
31
+ context_before: contextBefore,
32
+ context_after: contextAfter,
33
+ content_hash: hash,
34
+ anchor_status: 'valid',
35
+ last_verified_at: new Date().toISOString(),
36
+ original_location: {
37
+ line_number: lineNumber,
38
+ section_heading: section?.heading,
39
+ },
40
+ };
41
+ }
42
+ /**
43
+ * Create a feedback anchor by searching for text in spec content
44
+ */
45
+ export function createAnchorByText(specContent, searchText) {
46
+ const lines = specContent.split('\n');
47
+ // Find the first line containing the search text
48
+ for (let i = 0; i < lines.length; i++) {
49
+ const line = lines[i];
50
+ const index = line.indexOf(searchText);
51
+ if (index !== -1) {
52
+ // Found it! Create anchor at this location
53
+ const lineNumber = i + 1;
54
+ return createFeedbackAnchor(specContent, lineNumber, index);
55
+ }
56
+ }
57
+ // Not found
58
+ return null;
59
+ }
60
+ /**
61
+ * Find the section (markdown heading) containing a given line
62
+ * Walks backwards from the line to find the nearest heading
63
+ */
64
+ export function findContainingSection(lines, lineNumber) {
65
+ // Walk backwards from the target line
66
+ for (let i = lineNumber - 1; i >= 0; i--) {
67
+ const line = lines[i];
68
+ // Handle Windows line endings by trimming \r
69
+ const match = line.match(/^(#{1,6})\s+(.+?)(\r)?$/);
70
+ if (match) {
71
+ const level = match[1].length;
72
+ const heading = match[2].trim();
73
+ return {
74
+ heading,
75
+ level,
76
+ startLine: i + 1,
77
+ };
78
+ }
79
+ }
80
+ return null;
81
+ }
82
+ /**
83
+ * Extract a text snippet from a line with optional character offset
84
+ */
85
+ export function extractSnippet(line, charOffset, maxLength = 50) {
86
+ if (!line || line.trim() === '') {
87
+ return '';
88
+ }
89
+ // Trim the line first
90
+ const trimmed = line.trim();
91
+ let start = 0;
92
+ let end = trimmed.length;
93
+ if (charOffset !== undefined) {
94
+ // Adjust offset for trimmed line
95
+ const leadingSpaces = line.length - line.trimStart().length;
96
+ const adjustedOffset = Math.max(0, charOffset - leadingSpaces);
97
+ // Center snippet around the char offset
98
+ const halfLen = Math.floor(maxLength / 2);
99
+ start = Math.max(0, adjustedOffset - halfLen);
100
+ end = Math.min(trimmed.length, adjustedOffset + halfLen);
101
+ }
102
+ else {
103
+ // Take from start
104
+ end = Math.min(trimmed.length, maxLength);
105
+ }
106
+ let snippet = trimmed.substring(start, end);
107
+ // Add ellipsis if truncated (no space before ellipsis)
108
+ if (start > 0) {
109
+ snippet = '...' + snippet;
110
+ }
111
+ if (end < trimmed.length) {
112
+ snippet = snippet + '...';
113
+ }
114
+ return snippet;
115
+ }
116
+ /**
117
+ * Get context around a line (before or after)
118
+ * @param chars Number of characters to get (negative for before, positive for after)
119
+ */
120
+ export function getContext(lines, fromLine, chars) {
121
+ if (chars === 0) {
122
+ return '';
123
+ }
124
+ const direction = chars > 0 ? 1 : -1;
125
+ const maxChars = Math.abs(chars);
126
+ let collected = '';
127
+ let currentLine = fromLine - 1; // Convert to 0-indexed
128
+ if (direction > 0) {
129
+ // Get context after
130
+ currentLine += 1; // Start from next line
131
+ }
132
+ else {
133
+ // Get context before
134
+ currentLine -= 1; // Start from previous line
135
+ }
136
+ while (currentLine >= 0 &&
137
+ currentLine < lines.length &&
138
+ collected.length < maxChars) {
139
+ const line = lines[currentLine];
140
+ const remaining = maxChars - collected.length;
141
+ if (direction > 0) {
142
+ // Adding after - append
143
+ if (collected.length > 0) {
144
+ collected += ' ';
145
+ }
146
+ collected += line.substring(0, remaining);
147
+ }
148
+ else {
149
+ // Adding before - prepend
150
+ const start = Math.max(0, line.length - remaining);
151
+ const chunk = line.substring(start);
152
+ if (collected.length > 0) {
153
+ collected = chunk + ' ' + collected;
154
+ }
155
+ else {
156
+ collected = chunk;
157
+ }
158
+ }
159
+ currentLine += direction;
160
+ }
161
+ return collected.trim();
162
+ }
163
+ /**
164
+ * Create a content hash for quick validation
165
+ */
166
+ export function createContentHash(content) {
167
+ return crypto
168
+ .createHash('sha256')
169
+ .update(content)
170
+ .digest('hex')
171
+ .substring(0, 16);
172
+ }
173
+ /**
174
+ * Verify that an anchor still points to the expected location
175
+ */
176
+ export function verifyAnchor(specContent, anchor) {
177
+ if (!anchor.line_number) {
178
+ return false;
179
+ }
180
+ const lines = specContent.split('\n');
181
+ if (anchor.line_number < 1 || anchor.line_number > lines.length) {
182
+ return false;
183
+ }
184
+ const targetLine = lines[anchor.line_number - 1];
185
+ // Check if the line still contains the snippet (remove ellipsis for matching)
186
+ if (anchor.text_snippet && anchor.text_snippet.trim()) {
187
+ const cleanSnippet = anchor.text_snippet.replace(/\.\.\./g, '').trim();
188
+ if (cleanSnippet && !targetLine.includes(cleanSnippet)) {
189
+ return false;
190
+ }
191
+ }
192
+ // Check content hash if available (most reliable check)
193
+ if (anchor.content_hash && anchor.text_snippet && anchor.text_snippet.trim()) {
194
+ const currentSnippet = extractSnippet(targetLine, undefined, 50);
195
+ if (currentSnippet) {
196
+ const currentHash = createContentHash(currentSnippet);
197
+ if (currentHash !== anchor.content_hash) {
198
+ return false;
199
+ }
200
+ }
201
+ }
202
+ return true;
203
+ }
204
+ /**
205
+ * Get all section headings from spec content
206
+ */
207
+ export function getAllSections(specContent) {
208
+ const lines = specContent.split('\n');
209
+ const sections = [];
210
+ for (let i = 0; i < lines.length; i++) {
211
+ const line = lines[i];
212
+ // Handle Windows line endings
213
+ const match = line.match(/^(#{1,6})\s+(.+?)(\r)?$/);
214
+ if (match) {
215
+ sections.push({
216
+ heading: match[2].trim(),
217
+ level: match[1].length,
218
+ startLine: i + 1,
219
+ });
220
+ }
221
+ }
222
+ return sections;
223
+ }
224
+ /**
225
+ * Search for text with context matching
226
+ * Returns all matching locations with confidence scores
227
+ */
228
+ export function searchByContent(specContent, snippet, contextBefore, contextAfter) {
229
+ if (!snippet) {
230
+ return [];
231
+ }
232
+ const lines = specContent.split('\n');
233
+ const results = [];
234
+ // Clean snippet (remove ellipsis)
235
+ const cleanSnippet = snippet.replace(/\.\.\./g, '').trim();
236
+ for (let i = 0; i < lines.length; i++) {
237
+ const line = lines[i];
238
+ if (line.includes(cleanSnippet)) {
239
+ let confidence = 0.5; // Base confidence for snippet match
240
+ // Boost confidence if context matches
241
+ if (contextBefore) {
242
+ const actualBefore = getContext(lines, i + 1, -50);
243
+ if (actualBefore.includes(contextBefore.substring(0, 20))) {
244
+ confidence += 0.25;
245
+ }
246
+ }
247
+ if (contextAfter) {
248
+ const actualAfter = getContext(lines, i + 1, 50);
249
+ if (actualAfter.includes(contextAfter.substring(0, 20))) {
250
+ confidence += 0.25;
251
+ }
252
+ }
253
+ results.push({
254
+ lineNumber: i + 1,
255
+ confidence: Math.min(confidence, 1.0),
256
+ });
257
+ }
258
+ }
259
+ // Sort by confidence (highest first)
260
+ return results.sort((a, b) => b.confidence - a.confidence);
261
+ }
262
+ /**
263
+ * Calculate Levenshtein distance between two strings
264
+ * Used for fuzzy matching of section headings
265
+ */
266
+ export function levenshteinDistance(str1, str2) {
267
+ const len1 = str1.length;
268
+ const len2 = str2.length;
269
+ // Create a 2D array for dynamic programming
270
+ const matrix = Array(len1 + 1)
271
+ .fill(null)
272
+ .map(() => Array(len2 + 1).fill(0));
273
+ // Initialize first row and column
274
+ for (let i = 0; i <= len1; i++) {
275
+ matrix[i][0] = i;
276
+ }
277
+ for (let j = 0; j <= len2; j++) {
278
+ matrix[0][j] = j;
279
+ }
280
+ // Calculate distances
281
+ for (let i = 1; i <= len1; i++) {
282
+ for (let j = 1; j <= len2; j++) {
283
+ const cost = str1[i - 1] === str2[j - 1] ? 0 : 1;
284
+ matrix[i][j] = Math.min(matrix[i - 1][j] + 1, // deletion
285
+ matrix[i][j - 1] + 1, // insertion
286
+ matrix[i - 1][j - 1] + cost // substitution
287
+ );
288
+ }
289
+ }
290
+ return matrix[len1][len2];
291
+ }
292
+ /**
293
+ * Find the best matching section using fuzzy matching
294
+ * Returns section with lowest edit distance (Levenshtein)
295
+ */
296
+ export function findFuzzySection(specContent, targetHeading, maxDistance = 5) {
297
+ const sections = getAllSections(specContent);
298
+ if (sections.length === 0) {
299
+ return null;
300
+ }
301
+ // Normalize headings for comparison (lowercase, trim)
302
+ const normalizedTarget = targetHeading.toLowerCase().trim();
303
+ let bestMatch = null;
304
+ let bestDistance = Infinity;
305
+ for (const section of sections) {
306
+ const normalizedHeading = section.heading.toLowerCase().trim();
307
+ const distance = levenshteinDistance(normalizedTarget, normalizedHeading);
308
+ if (distance < bestDistance && distance <= maxDistance) {
309
+ bestDistance = distance;
310
+ bestMatch = section;
311
+ }
312
+ }
313
+ return bestMatch;
314
+ }
315
+ /**
316
+ * Relocate a feedback anchor when spec content changes
317
+ * Uses cascade strategy:
318
+ * 1. Section + Line Offset (if section unchanged)
319
+ * 2. Content Search (snippet + context)
320
+ * 3. Fuzzy Section Match (Levenshtein distance)
321
+ * 4. Mark as Stale (preserve original)
322
+ */
323
+ export function relocateFeedbackAnchor(oldSpecContent, newSpecContent, anchor) {
324
+ // First, verify if anchor is still valid at original location
325
+ if (verifyAnchor(newSpecContent, anchor)) {
326
+ return {
327
+ ...anchor,
328
+ anchor_status: 'valid',
329
+ last_verified_at: new Date().toISOString(),
330
+ };
331
+ }
332
+ // Strategy 1: Try Section + Line Offset
333
+ if (anchor.section_heading && anchor.line_offset !== undefined) {
334
+ const sections = getAllSections(newSpecContent);
335
+ const matchingSection = sections.find((s) => s.heading === anchor.section_heading);
336
+ if (matchingSection) {
337
+ const newLineNumber = matchingSection.startLine + anchor.line_offset;
338
+ const lines = newSpecContent.split('\n');
339
+ if (newLineNumber > 0 && newLineNumber <= lines.length) {
340
+ const targetLine = lines[newLineNumber - 1];
341
+ // Verify this looks right (check if snippet is close)
342
+ if (anchor.text_snippet) {
343
+ const cleanSnippet = anchor.text_snippet.replace(/\.\.\./g, '').trim();
344
+ if (cleanSnippet && targetLine.includes(cleanSnippet)) {
345
+ // Success! Create new anchor at relocated position
346
+ const newAnchor = createFeedbackAnchor(newSpecContent, newLineNumber);
347
+ return {
348
+ ...newAnchor,
349
+ anchor_status: 'relocated',
350
+ last_verified_at: new Date().toISOString(),
351
+ original_location: anchor.original_location || {
352
+ line_number: anchor.line_number || 0,
353
+ section_heading: anchor.section_heading,
354
+ },
355
+ };
356
+ }
357
+ }
358
+ }
359
+ }
360
+ }
361
+ // Strategy 2: Content Search with Context
362
+ if (anchor.text_snippet) {
363
+ const matches = searchByContent(newSpecContent, anchor.text_snippet, anchor.context_before, anchor.context_after);
364
+ if (matches.length > 0 && matches[0].confidence >= 0.7) {
365
+ // High confidence match found
366
+ const newAnchor = createFeedbackAnchor(newSpecContent, matches[0].lineNumber);
367
+ return {
368
+ ...newAnchor,
369
+ anchor_status: 'relocated',
370
+ last_verified_at: new Date().toISOString(),
371
+ original_location: anchor.original_location || {
372
+ line_number: anchor.line_number || 0,
373
+ section_heading: anchor.section_heading,
374
+ },
375
+ };
376
+ }
377
+ }
378
+ // Strategy 3: Fuzzy Section Match
379
+ if (anchor.section_heading && anchor.line_offset !== undefined) {
380
+ const fuzzyMatch = findFuzzySection(newSpecContent, anchor.section_heading, 5);
381
+ if (fuzzyMatch) {
382
+ const newLineNumber = fuzzyMatch.startLine + anchor.line_offset;
383
+ const lines = newSpecContent.split('\n');
384
+ if (newLineNumber > 0 && newLineNumber <= lines.length) {
385
+ const newAnchor = createFeedbackAnchor(newSpecContent, newLineNumber);
386
+ return {
387
+ ...newAnchor,
388
+ anchor_status: 'relocated',
389
+ last_verified_at: new Date().toISOString(),
390
+ original_location: anchor.original_location || {
391
+ line_number: anchor.line_number || 0,
392
+ section_heading: anchor.section_heading,
393
+ },
394
+ };
395
+ }
396
+ }
397
+ }
398
+ // Strategy 4: Mark as Stale - preserve original but mark invalid
399
+ return {
400
+ ...anchor,
401
+ anchor_status: 'stale',
402
+ last_verified_at: new Date().toISOString(),
403
+ original_location: anchor.original_location || {
404
+ line_number: anchor.line_number || 0,
405
+ section_heading: anchor.section_heading,
406
+ },
407
+ };
408
+ }
409
+ export function relocateSpecFeedback(oldSpecContent, newSpecContent, feedbackList) {
410
+ const results = [];
411
+ let validCount = 0;
412
+ let relocatedCount = 0;
413
+ let staleCount = 0;
414
+ for (const feedback of feedbackList) {
415
+ const oldStatus = feedback.anchor.anchor_status;
416
+ const newAnchor = relocateFeedbackAnchor(oldSpecContent, newSpecContent, feedback.anchor);
417
+ const relocated = newAnchor.anchor_status === 'relocated';
418
+ if (newAnchor.anchor_status === 'valid') {
419
+ validCount++;
420
+ }
421
+ else if (newAnchor.anchor_status === 'relocated') {
422
+ relocatedCount++;
423
+ }
424
+ else {
425
+ staleCount++;
426
+ }
427
+ results.push({
428
+ feedback_id: feedback.id,
429
+ old_status: oldStatus,
430
+ new_status: newAnchor.anchor_status,
431
+ relocated,
432
+ });
433
+ // Note: Actual database update should be done by the caller
434
+ // This function only performs the relocation logic
435
+ }
436
+ return {
437
+ total: feedbackList.length,
438
+ valid: validCount,
439
+ relocated: relocatedCount,
440
+ stale: staleCount,
441
+ results,
442
+ };
443
+ }
444
+ //# sourceMappingURL=feedback-anchors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"feedback-anchors.js","sourceRoot":"","sources":["../../src/operations/feedback-anchors.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,76 @@
1
+ /**
2
+ * CRUD operations for Issue Feedback
3
+ */
4
+ import type Database from "better-sqlite3";
5
+ import type { IssueFeedback, FeedbackType, FeedbackAnchor } from "../types.js";
6
+ export interface CreateFeedbackInput {
7
+ id?: string;
8
+ issue_id: string;
9
+ spec_id: string;
10
+ feedback_type: FeedbackType;
11
+ content: string;
12
+ agent?: string;
13
+ anchor?: FeedbackAnchor;
14
+ dismissed?: boolean;
15
+ }
16
+ export interface UpdateFeedbackInput {
17
+ content?: string;
18
+ dismissed?: boolean;
19
+ anchor?: FeedbackAnchor;
20
+ }
21
+ export interface ListFeedbackOptions {
22
+ issue_id?: string;
23
+ spec_id?: string;
24
+ feedback_type?: FeedbackType;
25
+ dismissed?: boolean;
26
+ limit?: number;
27
+ offset?: number;
28
+ }
29
+ /**
30
+ * Generate next feedback ID (FB-001, FB-002, etc.)
31
+ */
32
+ export declare function generateFeedbackId(db: Database.Database): string;
33
+ /**
34
+ * Create a new feedback entry
35
+ */
36
+ export declare function createFeedback(db: Database.Database, input: CreateFeedbackInput): IssueFeedback;
37
+ /**
38
+ * Get a feedback entry by ID
39
+ */
40
+ export declare function getFeedback(db: Database.Database, id: string): IssueFeedback | null;
41
+ /**
42
+ * Update a feedback entry
43
+ */
44
+ export declare function updateFeedback(db: Database.Database, id: string, input: UpdateFeedbackInput): IssueFeedback;
45
+ /**
46
+ * Delete a feedback entry
47
+ */
48
+ export declare function deleteFeedback(db: Database.Database, id: string): boolean;
49
+ /**
50
+ * Dismiss feedback (convenience method)
51
+ */
52
+ export declare function dismissFeedback(db: Database.Database, id: string): IssueFeedback;
53
+ /**
54
+ * List feedback entries with optional filters
55
+ */
56
+ export declare function listFeedback(db: Database.Database, options?: ListFeedbackOptions): IssueFeedback[];
57
+ /**
58
+ * Get all feedback for a specific issue
59
+ */
60
+ export declare function getFeedbackForIssue(db: Database.Database, issue_id: string): IssueFeedback[];
61
+ /**
62
+ * Get all feedback for a specific spec
63
+ */
64
+ export declare function getFeedbackForSpec(db: Database.Database, spec_id: string): IssueFeedback[];
65
+ /**
66
+ * Get active feedback for a spec (not dismissed)
67
+ */
68
+ export declare function getActiveFeedbackForSpec(db: Database.Database, spec_id: string): IssueFeedback[];
69
+ /**
70
+ * Count feedback by dismissed status
71
+ */
72
+ export declare function countFeedbackByDismissed(db: Database.Database, spec_id?: string): {
73
+ active: number;
74
+ dismissed: number;
75
+ };
76
+ //# sourceMappingURL=feedback.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"feedback.d.ts","sourceRoot":"","sources":["../../src/operations/feedback.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE/E,MAAM,WAAW,mBAAmB;IAClC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,YAAY,CAAC;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,cAAc,CAAC;IACxB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,MAAM,CAAC,EAAE,cAAc,CAAC;CACzB;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,YAAY,CAAC;IAC7B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAaD;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,GAAG,MAAM,CAkBhE;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC5B,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,KAAK,EAAE,mBAAmB,GACzB,aAAa,CAiDf;AAED;;GAEG;AACH,wBAAgB,WAAW,CACzB,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,EAAE,EAAE,MAAM,GACT,aAAa,GAAG,IAAI,CAOtB;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC5B,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,mBAAmB,GACzB,aAAa,CA8Cf;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAIzE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAC7B,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,EAAE,EAAE,MAAM,GACT,aAAa,CAEf;AAED;;GAEG;AACH,wBAAgB,YAAY,CAC1B,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,OAAO,GAAE,mBAAwB,GAChC,aAAa,EAAE,CAuCjB;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,QAAQ,EAAE,MAAM,GACf,aAAa,EAAE,CAEjB;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,OAAO,EAAE,MAAM,GACd,aAAa,EAAE,CAEjB;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,OAAO,EAAE,MAAM,GACd,aAAa,EAAE,CAEjB;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,OAAO,CAAC,EAAE,MAAM,GACf;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CA4BvC"}