centy 0.2.8 → 0.4.0

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 (412) hide show
  1. package/bin/run.js +3 -3
  2. package/dist/commands/close.d.ts +1 -4
  3. package/dist/commands/close.d.ts.map +1 -1
  4. package/dist/commands/close.js +21 -108
  5. package/dist/commands/close.js.map +1 -1
  6. package/dist/commands/compact.d.ts +1 -5
  7. package/dist/commands/compact.d.ts.map +1 -1
  8. package/dist/commands/compact.js +23 -128
  9. package/dist/commands/compact.js.map +1 -1
  10. package/dist/commands/get/doc.d.ts +1 -0
  11. package/dist/commands/get/doc.d.ts.map +1 -1
  12. package/dist/commands/get/doc.js +19 -75
  13. package/dist/commands/get/doc.js.map +1 -1
  14. package/dist/commands/get/issue.d.ts.map +1 -1
  15. package/dist/commands/get/issue.js +13 -109
  16. package/dist/commands/get/issue.js.map +1 -1
  17. package/dist/commands/init.d.ts +0 -3
  18. package/dist/commands/init.d.ts.map +1 -1
  19. package/dist/commands/init.js +0 -16
  20. package/dist/commands/init.js.map +1 -1
  21. package/dist/commands/show.d.ts +1 -0
  22. package/dist/commands/show.d.ts.map +1 -1
  23. package/dist/commands/show.js +15 -60
  24. package/dist/commands/show.js.map +1 -1
  25. package/dist/commands/start.d.ts +0 -3
  26. package/dist/commands/start.d.ts.map +1 -1
  27. package/dist/commands/start.js +17 -80
  28. package/dist/commands/start.js.map +1 -1
  29. package/dist/daemon/daemon-response-error.d.ts +8 -1
  30. package/dist/daemon/daemon-response-error.d.ts.map +1 -1
  31. package/dist/daemon/daemon-response-error.js +23 -2
  32. package/dist/daemon/daemon-response-error.js.map +1 -1
  33. package/dist/daemon/grpc-client-data.d.ts +26 -0
  34. package/dist/daemon/grpc-client-data.d.ts.map +1 -0
  35. package/dist/daemon/grpc-client-data.js +2 -0
  36. package/dist/daemon/grpc-client-data.js.map +1 -0
  37. package/dist/daemon/grpc-client-extended.d.ts +29 -0
  38. package/dist/daemon/grpc-client-extended.d.ts.map +1 -0
  39. package/dist/daemon/grpc-client-extended.js +2 -0
  40. package/dist/daemon/grpc-client-extended.js.map +1 -0
  41. package/dist/daemon/grpc-client-init.d.ts +23 -0
  42. package/dist/daemon/grpc-client-init.d.ts.map +1 -0
  43. package/dist/daemon/grpc-client-init.js +2 -0
  44. package/dist/daemon/grpc-client-init.js.map +1 -0
  45. package/dist/daemon/grpc-client-ops.d.ts +23 -0
  46. package/dist/daemon/grpc-client-ops.d.ts.map +1 -0
  47. package/dist/daemon/grpc-client-ops.js +2 -0
  48. package/dist/daemon/grpc-client-ops.js.map +1 -0
  49. package/dist/daemon/grpc-client-project.d.ts +22 -0
  50. package/dist/daemon/grpc-client-project.d.ts.map +1 -0
  51. package/dist/daemon/grpc-client-project.js +2 -0
  52. package/dist/daemon/grpc-client-project.js.map +1 -0
  53. package/dist/daemon/grpc-config.d.ts +14 -0
  54. package/dist/daemon/grpc-config.d.ts.map +1 -0
  55. package/dist/daemon/grpc-config.js +26 -0
  56. package/dist/daemon/grpc-config.js.map +1 -0
  57. package/dist/daemon/grpc-utils.d.ts +32 -0
  58. package/dist/daemon/grpc-utils.d.ts.map +1 -0
  59. package/dist/daemon/grpc-utils.js +54 -0
  60. package/dist/daemon/grpc-utils.js.map +1 -0
  61. package/dist/daemon/load-proto.d.ts +9 -135
  62. package/dist/daemon/load-proto.d.ts.map +1 -1
  63. package/dist/daemon/load-proto.js +4 -77
  64. package/dist/daemon/load-proto.js.map +1 -1
  65. package/dist/daemon/parse-error-response.d.ts +14 -0
  66. package/dist/daemon/parse-error-response.d.ts.map +1 -0
  67. package/dist/daemon/parse-error-response.js +45 -0
  68. package/dist/daemon/parse-error-response.js.map +1 -0
  69. package/dist/daemon/types/asset.d.ts +64 -0
  70. package/dist/daemon/types/asset.d.ts.map +1 -0
  71. package/dist/daemon/types/asset.js +6 -0
  72. package/dist/daemon/types/asset.js.map +1 -0
  73. package/dist/daemon/types/config.d.ts +57 -0
  74. package/dist/daemon/types/config.d.ts.map +1 -0
  75. package/dist/daemon/types/config.js +6 -0
  76. package/dist/daemon/types/config.js.map +1 -0
  77. package/dist/daemon/types/daemon-error-message.d.ts +6 -0
  78. package/dist/daemon/types/daemon-error-message.d.ts.map +1 -0
  79. package/dist/daemon/types/daemon-error-message.js +2 -0
  80. package/dist/daemon/types/daemon-error-message.js.map +1 -0
  81. package/dist/daemon/types/daemon-error-response.d.ts +7 -0
  82. package/dist/daemon/types/daemon-error-response.d.ts.map +1 -0
  83. package/dist/daemon/types/daemon-error-response.js +2 -0
  84. package/dist/daemon/types/daemon-error-response.js.map +1 -0
  85. package/dist/daemon/types/daemon.d.ts +25 -0
  86. package/dist/daemon/types/daemon.d.ts.map +1 -0
  87. package/dist/daemon/types/daemon.js +6 -0
  88. package/dist/daemon/types/daemon.js.map +1 -0
  89. package/dist/daemon/types/doc-lifecycle.d.ts +55 -0
  90. package/dist/daemon/types/doc-lifecycle.d.ts.map +1 -0
  91. package/dist/daemon/types/doc-lifecycle.js +7 -0
  92. package/dist/daemon/types/doc-lifecycle.js.map +1 -0
  93. package/dist/daemon/types/doc.d.ts +93 -0
  94. package/dist/daemon/types/doc.d.ts.map +1 -0
  95. package/dist/daemon/types/doc.js +6 -0
  96. package/dist/daemon/types/doc.js.map +1 -0
  97. package/dist/daemon/types/entity-action.d.ts +23 -0
  98. package/dist/daemon/types/entity-action.d.ts.map +1 -0
  99. package/dist/daemon/types/entity-action.js +6 -0
  100. package/dist/daemon/types/entity-action.js.map +1 -0
  101. package/dist/daemon/types/feature.d.ts +61 -0
  102. package/dist/daemon/types/feature.d.ts.map +1 -0
  103. package/dist/daemon/types/feature.js +6 -0
  104. package/dist/daemon/types/feature.js.map +1 -0
  105. package/dist/daemon/types/init.d.ts +66 -0
  106. package/dist/daemon/types/init.d.ts.map +1 -0
  107. package/dist/daemon/types/init.js +6 -0
  108. package/dist/daemon/types/init.js.map +1 -0
  109. package/dist/daemon/types/issue-lifecycle.d.ts +62 -0
  110. package/dist/daemon/types/issue-lifecycle.d.ts.map +1 -0
  111. package/dist/daemon/types/issue-lifecycle.js +7 -0
  112. package/dist/daemon/types/issue-lifecycle.js.map +1 -0
  113. package/dist/daemon/types/issue-search.d.ts +39 -0
  114. package/dist/daemon/types/issue-search.d.ts.map +1 -0
  115. package/dist/daemon/types/issue-search.js +6 -0
  116. package/dist/daemon/types/issue-search.js.map +1 -0
  117. package/dist/daemon/types/issue.d.ts +97 -0
  118. package/dist/daemon/types/issue.d.ts.map +1 -0
  119. package/dist/daemon/types/issue.js +6 -0
  120. package/dist/daemon/types/issue.js.map +1 -0
  121. package/dist/daemon/types/link.d.ts +58 -0
  122. package/dist/daemon/types/link.d.ts.map +1 -0
  123. package/dist/daemon/types/link.js +6 -0
  124. package/dist/daemon/types/link.js.map +1 -0
  125. package/dist/daemon/types/organization.d.ts +62 -0
  126. package/dist/daemon/types/organization.d.ts.map +1 -0
  127. package/dist/daemon/types/organization.js +6 -0
  128. package/dist/daemon/types/organization.js.map +1 -0
  129. package/dist/daemon/types/project.d.ts +101 -0
  130. package/dist/daemon/types/project.d.ts.map +1 -0
  131. package/dist/daemon/types/project.js +6 -0
  132. package/dist/daemon/types/project.js.map +1 -0
  133. package/dist/daemon/types/sync.d.ts +72 -0
  134. package/dist/daemon/types/sync.d.ts.map +1 -0
  135. package/dist/daemon/types/sync.js +6 -0
  136. package/dist/daemon/types/sync.js.map +1 -0
  137. package/dist/daemon/types/user-lifecycle.d.ts +45 -0
  138. package/dist/daemon/types/user-lifecycle.d.ts.map +1 -0
  139. package/dist/daemon/types/user-lifecycle.js +7 -0
  140. package/dist/daemon/types/user-lifecycle.js.map +1 -0
  141. package/dist/daemon/types/user.d.ts +67 -0
  142. package/dist/daemon/types/user.d.ts.map +1 -0
  143. package/dist/daemon/types/user.js +6 -0
  144. package/dist/daemon/types/user.js.map +1 -0
  145. package/dist/daemon/types/workspace-ops.d.ts +66 -0
  146. package/dist/daemon/types/workspace-ops.d.ts.map +1 -0
  147. package/dist/daemon/types/workspace-ops.js +7 -0
  148. package/dist/daemon/types/workspace-ops.js.map +1 -0
  149. package/dist/daemon/types/workspace.d.ts +70 -0
  150. package/dist/daemon/types/workspace.d.ts.map +1 -0
  151. package/dist/daemon/types/workspace.js +6 -0
  152. package/dist/daemon/types/workspace.js.map +1 -0
  153. package/dist/daemon/types.d.ts +23 -1226
  154. package/dist/daemon/types.d.ts.map +1 -1
  155. package/dist/daemon/types.js +23 -2
  156. package/dist/daemon/types.js.map +1 -1
  157. package/dist/lib/autostart/launchd.d.ts.map +1 -1
  158. package/dist/lib/autostart/launchd.js +10 -3
  159. package/dist/lib/autostart/launchd.js.map +1 -1
  160. package/dist/lib/close/close-entity-error.d.ts +4 -0
  161. package/dist/lib/close/close-entity-error.d.ts.map +1 -0
  162. package/dist/lib/close/close-entity-error.js +7 -0
  163. package/dist/lib/close/close-entity-error.js.map +1 -0
  164. package/dist/lib/close/close-issue.d.ts +2 -0
  165. package/dist/lib/close/close-issue.d.ts.map +1 -0
  166. package/dist/lib/close/close-issue.js +23 -0
  167. package/dist/lib/close/close-issue.js.map +1 -0
  168. package/dist/lib/close/find-entity.d.ts +8 -0
  169. package/dist/lib/close/find-entity.d.ts.map +1 -0
  170. package/dist/lib/close/find-entity.js +21 -0
  171. package/dist/lib/close/find-entity.js.map +1 -0
  172. package/dist/lib/compact/apply-llm-response.d.ts +8 -0
  173. package/dist/lib/compact/apply-llm-response.d.ts.map +1 -0
  174. package/dist/lib/compact/apply-llm-response.js +28 -0
  175. package/dist/lib/compact/apply-llm-response.js.map +1 -0
  176. package/dist/lib/compact/compact-parse-error.d.ts +4 -0
  177. package/dist/lib/compact/compact-parse-error.d.ts.map +1 -0
  178. package/dist/lib/compact/compact-parse-error.js +7 -0
  179. package/dist/lib/compact/compact-parse-error.js.map +1 -0
  180. package/dist/lib/compact/compact-save-error.d.ts +4 -0
  181. package/dist/lib/compact/compact-save-error.d.ts.map +1 -0
  182. package/dist/lib/compact/compact-save-error.js +7 -0
  183. package/dist/lib/compact/compact-save-error.js.map +1 -0
  184. package/dist/lib/compact/format-dry-run.d.ts +8 -0
  185. package/dist/lib/compact/format-dry-run.d.ts.map +1 -0
  186. package/dist/lib/compact/format-dry-run.js +15 -0
  187. package/dist/lib/compact/format-dry-run.js.map +1 -0
  188. package/dist/lib/compact/generate-llm-context.d.ts +7 -0
  189. package/dist/lib/compact/generate-llm-context.d.ts.map +1 -0
  190. package/dist/lib/compact/generate-llm-context.js +30 -0
  191. package/dist/lib/compact/generate-llm-context.js.map +1 -0
  192. package/dist/lib/compact/mark-issues.d.ts +6 -0
  193. package/dist/lib/compact/mark-issues.d.ts.map +1 -0
  194. package/dist/lib/compact/mark-issues.js +24 -0
  195. package/dist/lib/compact/mark-issues.js.map +1 -0
  196. package/dist/lib/compact/parse-llm-response.d.ts +6 -0
  197. package/dist/lib/compact/parse-llm-response.d.ts.map +1 -0
  198. package/dist/lib/compact/parse-llm-response.js +22 -0
  199. package/dist/lib/compact/parse-llm-response.js.map +1 -0
  200. package/dist/lib/compact/save-results.d.ts +5 -0
  201. package/dist/lib/compact/save-results.d.ts.map +1 -0
  202. package/dist/lib/compact/save-results.js +24 -0
  203. package/dist/lib/compact/save-results.js.map +1 -0
  204. package/dist/lib/create-issue/converters.d.ts +15 -0
  205. package/dist/lib/create-issue/converters.d.ts.map +1 -0
  206. package/dist/lib/create-issue/converters.js +53 -0
  207. package/dist/lib/create-issue/converters.js.map +1 -0
  208. package/dist/lib/create-issue/create-issue.d.ts.map +1 -1
  209. package/dist/lib/create-issue/create-issue.js +1 -52
  210. package/dist/lib/create-issue/create-issue.js.map +1 -1
  211. package/dist/lib/get-doc/cross-project-hint.d.ts +6 -0
  212. package/dist/lib/get-doc/cross-project-hint.d.ts.map +1 -0
  213. package/dist/lib/get-doc/cross-project-hint.js +27 -0
  214. package/dist/lib/get-doc/cross-project-hint.js.map +1 -0
  215. package/dist/lib/get-doc/format-doc-output.d.ts +3 -0
  216. package/dist/lib/get-doc/format-doc-output.d.ts.map +1 -0
  217. package/dist/lib/get-doc/format-doc-output.js +8 -0
  218. package/dist/lib/get-doc/format-doc-output.js.map +1 -0
  219. package/dist/lib/get-doc/handle-global-search.d.ts +3 -0
  220. package/dist/lib/get-doc/handle-global-search.d.ts.map +1 -0
  221. package/dist/lib/get-doc/handle-global-search.js +32 -0
  222. package/dist/lib/get-doc/handle-global-search.js.map +1 -0
  223. package/dist/lib/get-doc/handle-not-initialized.d.ts +6 -0
  224. package/dist/lib/get-doc/handle-not-initialized.d.ts.map +1 -0
  225. package/dist/lib/get-doc/handle-not-initialized.js +21 -0
  226. package/dist/lib/get-doc/handle-not-initialized.js.map +1 -0
  227. package/dist/lib/get-issue/cross-project-hint.d.ts +6 -0
  228. package/dist/lib/get-issue/cross-project-hint.d.ts.map +1 -0
  229. package/dist/lib/get-issue/cross-project-hint.js +27 -0
  230. package/dist/lib/get-issue/cross-project-hint.js.map +1 -0
  231. package/dist/lib/get-issue/fetch-and-display.d.ts +12 -0
  232. package/dist/lib/get-issue/fetch-and-display.d.ts.map +1 -0
  233. package/dist/lib/get-issue/fetch-and-display.js +39 -0
  234. package/dist/lib/get-issue/fetch-and-display.js.map +1 -0
  235. package/dist/lib/get-issue/format-issue-output.d.ts +3 -0
  236. package/dist/lib/get-issue/format-issue-output.d.ts.map +1 -0
  237. package/dist/lib/get-issue/format-issue-output.js +14 -0
  238. package/dist/lib/get-issue/format-issue-output.js.map +1 -0
  239. package/dist/lib/get-issue/handle-global-search.d.ts +3 -0
  240. package/dist/lib/get-issue/handle-global-search.d.ts.map +1 -0
  241. package/dist/lib/get-issue/handle-global-search.js +36 -0
  242. package/dist/lib/get-issue/handle-global-search.js.map +1 -0
  243. package/dist/lib/get-issue/handle-not-initialized.d.ts +6 -0
  244. package/dist/lib/get-issue/handle-not-initialized.d.ts.map +1 -0
  245. package/dist/lib/get-issue/handle-not-initialized.js +22 -0
  246. package/dist/lib/get-issue/handle-not-initialized.js.map +1 -0
  247. package/dist/lib/init/config-builder.d.ts +9 -0
  248. package/dist/lib/init/config-builder.d.ts.map +1 -0
  249. package/dist/lib/init/config-builder.js +29 -0
  250. package/dist/lib/init/config-builder.js.map +1 -0
  251. package/dist/lib/init/gather-decisions.d.ts +14 -0
  252. package/dist/lib/init/gather-decisions.d.ts.map +1 -0
  253. package/dist/lib/init/gather-decisions.js +38 -0
  254. package/dist/lib/init/gather-decisions.js.map +1 -0
  255. package/dist/lib/init/init.d.ts +1 -7
  256. package/dist/lib/init/init.d.ts.map +1 -1
  257. package/dist/lib/init/init.js +3 -99
  258. package/dist/lib/init/init.js.map +1 -1
  259. package/dist/lib/init/type-converters.d.ts +13 -0
  260. package/dist/lib/init/type-converters.d.ts.map +1 -0
  261. package/dist/lib/init/type-converters.js +15 -0
  262. package/dist/lib/init/type-converters.js.map +1 -0
  263. package/dist/lib/show/format-results.d.ts +3 -0
  264. package/dist/lib/show/format-results.d.ts.map +1 -0
  265. package/dist/lib/show/format-results.js +19 -0
  266. package/dist/lib/show/format-results.js.map +1 -0
  267. package/dist/lib/show/search-entities.d.ts +6 -0
  268. package/dist/lib/show/search-entities.d.ts.map +1 -0
  269. package/dist/lib/show/search-entities.js +7 -0
  270. package/dist/lib/show/search-entities.js.map +1 -0
  271. package/dist/lib/start/handle-missing-daemon.d.ts +2 -0
  272. package/dist/lib/start/handle-missing-daemon.d.ts.map +1 -0
  273. package/dist/lib/start/handle-missing-daemon.js +46 -0
  274. package/dist/lib/start/handle-missing-daemon.js.map +1 -0
  275. package/dist/lib/start/start-background.d.ts +2 -0
  276. package/dist/lib/start/start-background.d.ts.map +1 -0
  277. package/dist/lib/start/start-background.js +18 -0
  278. package/dist/lib/start/start-background.js.map +1 -0
  279. package/dist/lib/start/start-foreground.d.ts +2 -0
  280. package/dist/lib/start/start-foreground.d.ts.map +1 -0
  281. package/dist/lib/start/start-foreground.js +25 -0
  282. package/dist/lib/start/start-foreground.js.map +1 -0
  283. package/dist/types/init-options.d.ts +0 -6
  284. package/dist/types/init-options.d.ts.map +1 -1
  285. package/dist/utils/format-cross-project-hint.d.ts +1 -1
  286. package/dist/utils/format-cross-project-hint.d.ts.map +1 -1
  287. package/dist/utils/format-cross-project-hint.js.map +1 -1
  288. package/dist/utils/handle-not-initialized-with-search.d.ts +1 -1
  289. package/dist/utils/handle-not-initialized-with-search.d.ts.map +1 -1
  290. package/dist/utils/process-timeout-config.d.ts +17 -0
  291. package/dist/utils/process-timeout-config.d.ts.map +1 -0
  292. package/dist/utils/process-timeout-config.js +18 -0
  293. package/dist/utils/process-timeout-config.js.map +1 -0
  294. package/dist/utils/process-timeout-error.d.ts +4 -0
  295. package/dist/utils/process-timeout-error.d.ts.map +1 -0
  296. package/dist/utils/process-timeout-error.js +7 -0
  297. package/dist/utils/process-timeout-error.js.map +1 -0
  298. package/oclif.manifest.json +284 -716
  299. package/package.json +1 -1
  300. package/proto/centy.proto +42 -233
  301. package/dist/commands/create/pr.d.ts +0 -21
  302. package/dist/commands/create/pr.d.ts.map +0 -1
  303. package/dist/commands/create/pr.js +0 -85
  304. package/dist/commands/create/pr.js.map +0 -1
  305. package/dist/commands/delete/pr.d.ts +0 -17
  306. package/dist/commands/delete/pr.d.ts.map +0 -1
  307. package/dist/commands/delete/pr.js +0 -74
  308. package/dist/commands/delete/pr.js.map +0 -1
  309. package/dist/commands/get/pr.d.ts +0 -19
  310. package/dist/commands/get/pr.d.ts.map +0 -1
  311. package/dist/commands/get/pr.js +0 -193
  312. package/dist/commands/get/pr.js.map +0 -1
  313. package/dist/commands/list/prs.d.ts +0 -19
  314. package/dist/commands/list/prs.d.ts.map +0 -1
  315. package/dist/commands/list/prs.js +0 -90
  316. package/dist/commands/list/prs.js.map +0 -1
  317. package/dist/commands/update/pr.d.ts +0 -21
  318. package/dist/commands/update/pr.d.ts.map +0 -1
  319. package/dist/commands/update/pr.js +0 -108
  320. package/dist/commands/update/pr.js.map +0 -1
  321. package/dist/daemon/daemon-create-pr.d.ts +0 -6
  322. package/dist/daemon/daemon-create-pr.d.ts.map +0 -1
  323. package/dist/daemon/daemon-create-pr.js +0 -9
  324. package/dist/daemon/daemon-create-pr.js.map +0 -1
  325. package/dist/daemon/daemon-delete-pr.d.ts +0 -6
  326. package/dist/daemon/daemon-delete-pr.d.ts.map +0 -1
  327. package/dist/daemon/daemon-delete-pr.js +0 -9
  328. package/dist/daemon/daemon-delete-pr.js.map +0 -1
  329. package/dist/daemon/daemon-get-pr-by-display-number.d.ts +0 -6
  330. package/dist/daemon/daemon-get-pr-by-display-number.d.ts.map +0 -1
  331. package/dist/daemon/daemon-get-pr-by-display-number.js +0 -14
  332. package/dist/daemon/daemon-get-pr-by-display-number.js.map +0 -1
  333. package/dist/daemon/daemon-get-pr.d.ts +0 -6
  334. package/dist/daemon/daemon-get-pr.d.ts.map +0 -1
  335. package/dist/daemon/daemon-get-pr.js +0 -14
  336. package/dist/daemon/daemon-get-pr.js.map +0 -1
  337. package/dist/daemon/daemon-get-prs-by-uuid.d.ts +0 -6
  338. package/dist/daemon/daemon-get-prs-by-uuid.d.ts.map +0 -1
  339. package/dist/daemon/daemon-get-prs-by-uuid.js +0 -9
  340. package/dist/daemon/daemon-get-prs-by-uuid.js.map +0 -1
  341. package/dist/daemon/daemon-list-prs.d.ts +0 -6
  342. package/dist/daemon/daemon-list-prs.d.ts.map +0 -1
  343. package/dist/daemon/daemon-list-prs.js +0 -9
  344. package/dist/daemon/daemon-list-prs.js.map +0 -1
  345. package/dist/daemon/daemon-update-pr.d.ts +0 -6
  346. package/dist/daemon/daemon-update-pr.d.ts.map +0 -1
  347. package/dist/daemon/daemon-update-pr.js +0 -9
  348. package/dist/daemon/daemon-update-pr.js.map +0 -1
  349. package/dist/lib/create-pr/create-pr.d.ts +0 -8
  350. package/dist/lib/create-pr/create-pr.d.ts.map +0 -1
  351. package/dist/lib/create-pr/create-pr.js +0 -116
  352. package/dist/lib/create-pr/create-pr.js.map +0 -1
  353. package/dist/lib/create-pr/gather-basic-fields.d.ts +0 -8
  354. package/dist/lib/create-pr/gather-basic-fields.d.ts.map +0 -1
  355. package/dist/lib/create-pr/gather-basic-fields.js +0 -34
  356. package/dist/lib/create-pr/gather-basic-fields.js.map +0 -1
  357. package/dist/lib/create-pr/gather-metadata-fields.d.ts +0 -11
  358. package/dist/lib/create-pr/gather-metadata-fields.d.ts.map +0 -1
  359. package/dist/lib/create-pr/gather-metadata-fields.js +0 -36
  360. package/dist/lib/create-pr/gather-metadata-fields.js.map +0 -1
  361. package/dist/lib/create-pr/gather-pr-input.d.ts +0 -8
  362. package/dist/lib/create-pr/gather-pr-input.d.ts.map +0 -1
  363. package/dist/lib/create-pr/gather-pr-input.js +0 -38
  364. package/dist/lib/create-pr/gather-pr-input.js.map +0 -1
  365. package/dist/lib/create-pr/index.d.ts +0 -2
  366. package/dist/lib/create-pr/index.d.ts.map +0 -1
  367. package/dist/lib/create-pr/index.js +0 -2
  368. package/dist/lib/create-pr/index.js.map +0 -1
  369. package/dist/lib/create-pr/prompt-for-description.d.ts +0 -6
  370. package/dist/lib/create-pr/prompt-for-description.d.ts.map +0 -1
  371. package/dist/lib/create-pr/prompt-for-description.js +0 -12
  372. package/dist/lib/create-pr/prompt-for-description.js.map +0 -1
  373. package/dist/lib/create-pr/prompt-for-linked-issues.d.ts +0 -7
  374. package/dist/lib/create-pr/prompt-for-linked-issues.d.ts.map +0 -1
  375. package/dist/lib/create-pr/prompt-for-linked-issues.js +0 -22
  376. package/dist/lib/create-pr/prompt-for-linked-issues.js.map +0 -1
  377. package/dist/lib/create-pr/prompt-for-priority.d.ts +0 -9
  378. package/dist/lib/create-pr/prompt-for-priority.d.ts.map +0 -1
  379. package/dist/lib/create-pr/prompt-for-priority.js +0 -27
  380. package/dist/lib/create-pr/prompt-for-priority.js.map +0 -1
  381. package/dist/lib/create-pr/prompt-for-reviewers.d.ts +0 -7
  382. package/dist/lib/create-pr/prompt-for-reviewers.d.ts.map +0 -1
  383. package/dist/lib/create-pr/prompt-for-reviewers.js +0 -22
  384. package/dist/lib/create-pr/prompt-for-reviewers.js.map +0 -1
  385. package/dist/lib/create-pr/prompt-for-source-branch.d.ts +0 -7
  386. package/dist/lib/create-pr/prompt-for-source-branch.d.ts.map +0 -1
  387. package/dist/lib/create-pr/prompt-for-source-branch.js +0 -20
  388. package/dist/lib/create-pr/prompt-for-source-branch.js.map +0 -1
  389. package/dist/lib/create-pr/prompt-for-status.d.ts +0 -9
  390. package/dist/lib/create-pr/prompt-for-status.d.ts.map +0 -1
  391. package/dist/lib/create-pr/prompt-for-status.js +0 -27
  392. package/dist/lib/create-pr/prompt-for-status.js.map +0 -1
  393. package/dist/lib/create-pr/prompt-for-target-branch.d.ts +0 -7
  394. package/dist/lib/create-pr/prompt-for-target-branch.d.ts.map +0 -1
  395. package/dist/lib/create-pr/prompt-for-target-branch.js +0 -15
  396. package/dist/lib/create-pr/prompt-for-target-branch.js.map +0 -1
  397. package/dist/lib/create-pr/prompt-for-title.d.ts +0 -6
  398. package/dist/lib/create-pr/prompt-for-title.d.ts.map +0 -1
  399. package/dist/lib/create-pr/prompt-for-title.js +0 -12
  400. package/dist/lib/create-pr/prompt-for-title.js.map +0 -1
  401. package/dist/lib/create-pr/types.d.ts +0 -14
  402. package/dist/lib/create-pr/types.d.ts.map +0 -1
  403. package/dist/lib/create-pr/types.js +0 -2
  404. package/dist/lib/create-pr/types.js.map +0 -1
  405. package/dist/types/create-pr-options.d.ts +0 -30
  406. package/dist/types/create-pr-options.d.ts.map +0 -1
  407. package/dist/types/create-pr-options.js +0 -2
  408. package/dist/types/create-pr-options.js.map +0 -1
  409. package/dist/types/create-pr-result.d.ts +0 -16
  410. package/dist/types/create-pr-result.d.ts.map +0 -1
  411. package/dist/types/create-pr-result.js +0 -2
  412. package/dist/types/create-pr-result.js.map +0 -1
package/bin/run.js CHANGED
@@ -6,8 +6,8 @@ import { execute } from '@oclif/core'
6
6
  if (typeof Bun === 'undefined') {
7
7
  const { execSync, spawnSync } = await import('child_process')
8
8
  try {
9
- // Check if bun is installed
10
- execSync('bun --version', { stdio: 'ignore' })
9
+ // Check if bun is installed (5s timeout to avoid hanging)
10
+ execSync('bun --version', { stdio: 'ignore', timeout: 5000 })
11
11
  // Re-exec with bun and exit with its exit code
12
12
  const result = spawnSync(
13
13
  'bun',
@@ -20,7 +20,7 @@ if (typeof Bun === 'undefined') {
20
20
  result.status !== null && result.status !== undefined ? result.status : 0
21
21
  )
22
22
  } catch {
23
- // Bun not installed, continue with Node
23
+ // Bun not installed or version check timed out, continue with Node
24
24
  // eslint-disable-next-line default/no-hardcoded-urls
25
25
  console.error('Tip: Install Bun for faster CLI performance: https://bun.sh')
26
26
  }
@@ -1,6 +1,6 @@
1
1
  import { Command } from '@oclif/core';
2
2
  /**
3
- * Generic close command for issues, PRs, and org-issues
3
+ * Close an issue by display number
4
4
  */
5
5
  export default class Close extends Command {
6
6
  static args: {
@@ -9,12 +9,9 @@ export default class Close extends Command {
9
9
  static description: string;
10
10
  static examples: string[];
11
11
  static flags: {
12
- type: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
13
12
  project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
14
13
  json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
15
14
  };
16
15
  run(): Promise<void>;
17
- private closeIssue;
18
- private closePr;
19
16
  }
20
17
  //# sourceMappingURL=close.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"close.d.ts","sourceRoot":"","sources":["../../src/commands/close.ts"],"names":[],"mappings":"AAGA,OAAO,EAAQ,OAAO,EAAS,MAAM,aAAa,CAAA;AAqBlD;;GAEG;AAEH,MAAM,CAAC,OAAO,OAAO,KAAM,SAAQ,OAAO;IAExC,OAAgB,IAAI;;MAKnB;IAGD,OAAgB,WAAW,SAA2C;IAGtE,OAAgB,QAAQ,WAMvB;IAGD,OAAgB,KAAK;;;;MAWpB;IAEY,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;YAwFnB,UAAU;YA4BV,OAAO;CA2BtB"}
1
+ {"version":3,"file":"close.d.ts","sourceRoot":"","sources":["../../src/commands/close.ts"],"names":[],"mappings":"AACA,OAAO,EAAQ,OAAO,EAAS,MAAM,aAAa,CAAA;AAWlD;;GAEG;AAEH,MAAM,CAAC,OAAO,OAAO,KAAM,SAAQ,OAAO;IAExC,OAAgB,IAAI;;MAKnB;IAGD,OAAgB,WAAW,SAAqC;IAGhE,OAAgB,QAAQ,WAIvB;IAGD,OAAgB,KAAK;;;MAMpB;IAEY,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CA8BlC"}
@@ -1,15 +1,12 @@
1
- /* eslint-disable max-lines */
2
1
  // eslint-disable-next-line import/order
3
2
  import { Args, Command, Flags } from '@oclif/core';
4
- import { daemonGetIssueByDisplayNumber } from '../daemon/daemon-get-issue-by-display-number.js';
5
- import { daemonGetPrByDisplayNumber } from '../daemon/daemon-get-pr-by-display-number.js';
6
3
  import { daemonUpdateIssue } from '../daemon/daemon-update-issue.js';
7
- import { daemonUpdatePr } from '../daemon/daemon-update-pr.js';
8
4
  import { projectFlag } from '../flags/project-flag.js';
5
+ import { CloseEntityError } from '../lib/close/close-entity-error.js';
9
6
  import { ensureInitialized, NotInitializedError, } from '../utils/ensure-initialized.js';
10
7
  import { resolveProjectPath } from '../utils/resolve-project-path.js';
11
8
  /**
12
- * Generic close command for issues, PRs, and org-issues
9
+ * Close an issue by display number
13
10
  */
14
11
  // eslint-disable-next-line custom/no-default-class-export, class-export/class-export
15
12
  export default class Close extends Command {
@@ -21,22 +18,15 @@ export default class Close extends Command {
21
18
  }),
22
19
  };
23
20
  // eslint-disable-next-line no-restricted-syntax
24
- static description = 'Close an issue or PR by display number';
21
+ static description = 'Close an issue by display number';
25
22
  // eslint-disable-next-line no-restricted-syntax
26
23
  static examples = [
27
24
  '<%= config.bin %> close 1',
28
25
  '<%= config.bin %> close #1',
29
- '<%= config.bin %> close 1 --type issue',
30
- '<%= config.bin %> close 1 --type pr',
31
26
  '<%= config.bin %> close 1 --project centy-daemon',
32
27
  ];
33
28
  // eslint-disable-next-line no-restricted-syntax
34
29
  static flags = {
35
- type: Flags.string({
36
- char: 't',
37
- description: 'Entity type (issue, pr)',
38
- options: ['issue', 'pr'],
39
- }),
40
30
  project: projectFlag,
41
31
  json: Flags.boolean({
42
32
  description: 'Output as JSON',
@@ -45,13 +35,11 @@ export default class Close extends Command {
45
35
  };
46
36
  async run() {
47
37
  const { args, flags } = await this.parse(Close);
48
- // Parse display number (supports #1 or 1 format)
49
38
  const displayNumberMatch = args.identifier.match(/^#?(\d+)$/);
50
39
  if (!displayNumberMatch) {
51
40
  this.error('Invalid identifier. Please provide a display number (e.g., 1 or #1)');
52
41
  }
53
42
  const displayNumber = Number.parseInt(displayNumberMatch[1], 10);
54
- // Resolve project path for local entities
55
43
  const cwd = await resolveProjectPath(flags.project);
56
44
  try {
57
45
  await ensureInitialized(cwd);
@@ -62,102 +50,27 @@ export default class Close extends Command {
62
50
  }
63
51
  throw error instanceof Error ? error : new Error(String(error));
64
52
  }
65
- // If type is specified, close that type directly
66
- if (flags.type !== undefined) {
67
- if (flags.type === 'issue') {
68
- await this.closeIssue(cwd, displayNumber, flags.json);
69
- }
70
- else if (flags.type === 'pr') {
71
- await this.closePr(cwd, displayNumber, flags.json);
72
- }
73
- return;
74
- }
75
- // Search for entities with this display number
76
- const foundEntities = [];
77
- // Try to find issue
78
- try {
79
- const issue = await daemonGetIssueByDisplayNumber({
80
- projectPath: cwd,
81
- displayNumber,
82
- });
83
- foundEntities.push({
84
- type: 'issue',
85
- id: issue.id,
86
- displayNumber: issue.displayNumber,
87
- });
88
- }
89
- catch {
90
- // Issue not found, continue
91
- }
92
- // Try to find PR
93
- try {
94
- const pr = await daemonGetPrByDisplayNumber({
95
- projectPath: cwd,
96
- displayNumber,
97
- });
98
- foundEntities.push({
99
- type: 'pr',
100
- id: pr.id,
101
- displayNumber: pr.displayNumber,
102
- });
103
- }
104
- catch {
105
- // PR not found, continue
106
- }
107
- // Handle results
108
- if (foundEntities.length === 0) {
109
- this.error(`No issue or PR found with display number #${displayNumber}`);
110
- }
111
- if (foundEntities.length > 1) {
112
- const types = foundEntities.map(e => e.type).join(', ');
113
- this.error(`Ambiguous: found multiple entities with #${displayNumber} (${types}). Use --type to specify which to close.`);
114
- }
115
- // Close the single found entity
116
- const entity = foundEntities[0];
117
- if (entity.type === 'issue') {
118
- await this.closeIssue(cwd, displayNumber, flags.json);
119
- }
120
- else if (entity.type === 'pr') {
121
- await this.closePr(cwd, displayNumber, flags.json);
122
- }
53
+ await closeIssue(cwd, args.identifier, displayNumber, flags.json, this.log.bind(this));
123
54
  }
124
- async closeIssue(projectPath, displayNumber, jsonOutput) {
125
- const issue = await daemonGetIssueByDisplayNumber({
126
- projectPath,
127
- displayNumber,
128
- });
129
- const response = await daemonUpdateIssue({
130
- projectPath,
131
- issueId: issue.id,
132
- status: 'closed',
133
- });
134
- if (!response.success) {
135
- this.error(response.error);
136
- }
137
- if (jsonOutput) {
138
- this.log(JSON.stringify({ type: 'issue', ...response.issue }, null, 2));
139
- return;
140
- }
141
- this.log(`Closed issue #${response.issue.displayNumber}`);
55
+ }
56
+ async function closeIssue(cwd, issueId, displayNumber, json, log) {
57
+ const response = await daemonUpdateIssue({
58
+ projectPath: cwd,
59
+ issueId,
60
+ status: 'closed',
61
+ });
62
+ if (!response.success) {
63
+ throw new CloseEntityError(response.error);
142
64
  }
143
- async closePr(projectPath, displayNumber, jsonOutput) {
144
- const pr = await daemonGetPrByDisplayNumber({
145
- projectPath,
146
- displayNumber,
147
- });
148
- const response = await daemonUpdatePr({
149
- projectPath,
150
- prId: pr.id,
65
+ if (json) {
66
+ log(JSON.stringify({
67
+ type: 'issue',
68
+ displayNumber: response.issue.displayNumber,
151
69
  status: 'closed',
152
- });
153
- if (!response.success) {
154
- this.error(response.error);
155
- }
156
- if (jsonOutput) {
157
- this.log(JSON.stringify({ type: 'pr', ...response.pr }, null, 2));
158
- return;
159
- }
160
- this.log(`Closed PR #${response.pr.displayNumber}`);
70
+ }, null, 2));
71
+ }
72
+ else {
73
+ log(`Closed issue #${response.issue.displayNumber}`);
161
74
  }
162
75
  }
163
76
  //# sourceMappingURL=close.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"close.js","sourceRoot":"","sources":["../../src/commands/close.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"close.js","sourceRoot":"","sources":["../../src/commands/close.ts"],"names":[],"mappings":"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"}
@@ -12,10 +12,6 @@ export default class Compact extends Command {
12
12
  json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
13
13
  };
14
14
  run(): Promise<void>;
15
- private generateLlmContext;
16
- private applyLlmResponse;
17
- private saveMigrationContent;
18
- private saveCompactContent;
19
- private markIssuesFromMigration;
15
+ private applyInput;
20
16
  }
21
17
  //# sourceMappingURL=compact.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"compact.d.ts","sourceRoot":"","sources":["../../src/commands/compact.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,OAAO,EAAS,MAAM,aAAa,CAAA;AAa5C;;GAEG;AAEH,MAAM,CAAC,OAAO,OAAO,OAAQ,SAAQ,OAAO;IAE1C,OAAgB,WAAW,SAC0B;IAGrD,OAAgB,QAAQ,WAKvB;IAGD,OAAgB,KAAK;;;;;MAkBpB;IAEY,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;YA8DnB,kBAAkB;YA4ClB,gBAAgB;YAuDhB,oBAAoB;YAgBpB,kBAAkB;YAgBlB,uBAAuB;CAqCtC"}
1
+ {"version":3,"file":"compact.d.ts","sourceRoot":"","sources":["../../src/commands/compact.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,EAAS,MAAM,aAAa,CAAA;AAW5C;;GAEG;AAEH,MAAM,CAAC,OAAO,OAAO,OAAQ,SAAQ,OAAO;IAE1C,OAAgB,WAAW,SAC0B;IAGrD,OAAgB,QAAQ,WAKvB;IAGD,OAAgB,KAAK;;;;;MAkBpB;IAEY,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;YA8CnB,UAAU;CAqBzB"}
@@ -1,15 +1,12 @@
1
- /* eslint-disable max-lines */
2
1
  // eslint-disable-next-line import/order
3
- import { writeFile, readFile } from 'node:fs/promises';
2
+ import { writeFile } from 'node:fs/promises';
4
3
  // eslint-disable-next-line import/order
5
4
  import { Command, Flags } from '@oclif/core';
6
- import { daemonGetCompact } from '../daemon/daemon-get-compact.js';
7
- import { daemonGetInstruction } from '../daemon/daemon-get-instruction.js';
8
- import { ensureInitialized, NotInitializedError, } from '../utils/ensure-initialized.js';
9
5
  import { daemonListUncompactedIssues } from '../daemon/daemon-list-uncompacted-issues.js';
10
- import { daemonMarkIssuesCompacted } from '../daemon/daemon-mark-issues-compacted.js';
11
- import { daemonSaveMigration } from '../daemon/daemon-save-migration.js';
12
- import { daemonUpdateCompact } from '../daemon/daemon-update-compact.js';
6
+ import { applyLlmResponseFromFile } from '../lib/compact/apply-llm-response.js';
7
+ import { formatDryRun } from '../lib/compact/format-dry-run.js';
8
+ import { generateLlmContext } from '../lib/compact/generate-llm-context.js';
9
+ import { ensureInitialized, NotInitializedError, } from '../utils/ensure-initialized.js';
13
10
  /**
14
11
  * Compact uncompacted issues into features
15
12
  */
@@ -48,7 +45,6 @@ export default class Compact extends Command {
48
45
  const { flags } = await this.parse(Compact);
49
46
  // eslint-disable-next-line no-restricted-syntax
50
47
  const cwd = process.env['CENTY_CWD'] ?? process.cwd();
51
- // Check if initialized
52
48
  try {
53
49
  await ensureInitialized(cwd);
54
50
  }
@@ -58,35 +54,22 @@ export default class Compact extends Command {
58
54
  }
59
55
  throw error instanceof Error ? error : new Error(String(error));
60
56
  }
61
- // If input file provided, apply LLM response
62
57
  if (flags.input !== undefined) {
63
- await this.applyLlmResponse(cwd, flags.input);
58
+ await this.applyInput(cwd, flags.input);
64
59
  return;
65
60
  }
66
- // Get uncompacted issues
67
61
  const response = await daemonListUncompactedIssues({ projectPath: cwd });
68
62
  if (response.issues.length === 0) {
69
63
  this.log('No new issues to compact.');
70
64
  return;
71
65
  }
72
- // Dry run - just show issues
73
66
  if (flags['dry-run']) {
74
- if (flags.json) {
75
- this.log(JSON.stringify(response.issues, null, 2));
76
- }
77
- else {
78
- this.log(`Found ${response.totalCount} uncompacted issue(s):\n`);
79
- for (const issue of response.issues) {
80
- const meta = issue.metadata;
81
- const status = meta !== undefined ? meta.status : 'unknown';
82
- this.log(`#${issue.displayNumber} [${status}] ${issue.title}`);
83
- }
67
+ for (const line of formatDryRun(response, flags.json)) {
68
+ this.log(line);
84
69
  }
85
70
  return;
86
71
  }
87
- // Generate LLM context
88
- const context = await this.generateLlmContext(cwd, response.issues);
89
- // If output file provided, write context
72
+ const context = await generateLlmContext(cwd, response.issues);
90
73
  if (flags.output !== undefined) {
91
74
  // eslint-disable-next-line security/detect-non-literal-fs-filename
92
75
  await writeFile(flags.output, context, 'utf-8');
@@ -94,116 +77,28 @@ export default class Compact extends Command {
94
77
  this.log(`\nNext steps:\n1. Process the file with your LLM\n2. Run: centy compact --input <response-file>`);
95
78
  return;
96
79
  }
97
- // Output context to stdout for piping
98
80
  this.log(context);
99
81
  }
100
- async generateLlmContext(projectPath, issues) {
101
- // Get instruction.md
102
- const instructionResponse = await daemonGetInstruction({ projectPath });
103
- const instruction = instructionResponse.content;
104
- // Get current compact.md
105
- const compactResponse = await daemonGetCompact({ projectPath });
106
- const currentCompact = compactResponse.exists
107
- ? compactResponse.content
108
- : '(No features documented yet)';
109
- // Build context
110
- const parts = [];
111
- parts.push('# LLM Compaction Context\n');
112
- parts.push('## Instructions\n');
113
- parts.push(instruction);
114
- parts.push('\n---\n');
115
- parts.push('## Current Features Summary (compact.md)\n');
116
- parts.push('```markdown');
117
- parts.push(currentCompact);
118
- parts.push('```');
119
- parts.push('\n---\n');
120
- parts.push('## Uncompacted Issues\n');
121
- for (const issue of issues) {
122
- parts.push(`### Issue #${issue.displayNumber}: ${issue.title}`);
123
- parts.push(`**ID:** ${issue.id}`);
124
- parts.push('');
125
- parts.push(issue.description || '(No description)');
126
- parts.push('');
127
- }
128
- return parts.join('\n');
129
- }
130
- async applyLlmResponse(projectPath, inputFile) {
131
- // Read LLM response
132
- // eslint-disable-next-line security/detect-non-literal-fs-filename
133
- const content = await readFile(inputFile, 'utf-8');
134
- // Parse response - look for MIGRATION_CONTENT and COMPACT_CONTENT sections
135
- const migrationMatch = content.match(/### MIGRATION_CONTENT\s*\n```(?:markdown|yaml)?\s*\n([\s\S]*?)```/i);
136
- const compactMatch = content.match(/### COMPACT_CONTENT\s*\n```(?:markdown)?\s*\n([\s\S]*?)```/i);
137
- if (migrationMatch === null && compactMatch === null) {
138
- // Try alternative formats - look for sections without code blocks
139
- const altMigrationMatch = content.match(/### MIGRATION_CONTENT\s*\n([\s\S]*?)(?=### COMPACT_CONTENT|$)/i);
140
- const altCompactMatch = content.match(/### COMPACT_CONTENT\s*\n([\s\S]*?)$/i);
141
- if (altMigrationMatch === null && altCompactMatch === null) {
142
- this.error('Could not parse LLM response. Expected MIGRATION_CONTENT and COMPACT_CONTENT sections.');
143
- }
144
- if (altMigrationMatch !== null) {
145
- await this.saveMigrationContent(projectPath, altMigrationMatch[1].trim());
146
- }
147
- if (altCompactMatch !== null) {
148
- await this.saveCompactContent(projectPath, altCompactMatch[1].trim());
82
+ async applyInput(cwd, inputFile) {
83
+ try {
84
+ const result = await applyLlmResponseFromFile(cwd, inputFile);
85
+ if (result.migrationFilename !== null) {
86
+ this.log(`Migration saved: ${result.migrationFilename}`);
149
87
  }
150
- }
151
- else {
152
- if (migrationMatch !== null) {
153
- await this.saveMigrationContent(projectPath, migrationMatch[1]);
88
+ if (result.compactUpdated) {
89
+ this.log('compact.md updated');
154
90
  }
155
- if (compactMatch !== null) {
156
- await this.saveCompactContent(projectPath, compactMatch[1]);
91
+ if (result.noIdsFound) {
92
+ this.warn('No issue IDs found in migration content. Issues will not be marked as compacted.');
157
93
  }
158
- }
159
- // Mark issues as compacted - extract issue IDs from migration content
160
- await this.markIssuesFromMigration(projectPath, content);
161
- this.log('Compaction applied successfully!');
162
- }
163
- async saveMigrationContent(projectPath, content) {
164
- const response = await daemonSaveMigration({
165
- projectPath,
166
- content,
167
- });
168
- if (!response.success) {
169
- this.error(`Failed to save migration: ${response.error}`);
170
- }
171
- this.log(`Migration saved: ${response.filename}`);
172
- }
173
- async saveCompactContent(projectPath, content) {
174
- const response = await daemonUpdateCompact({
175
- projectPath,
176
- content,
177
- });
178
- if (!response.success) {
179
- this.error(`Failed to update compact.md: ${response.error}`);
180
- }
181
- this.log('compact.md updated');
182
- }
183
- async markIssuesFromMigration(projectPath, content) {
184
- // Extract issue IDs from the migration content
185
- // Look for patterns like:
186
- // - id: uuid-123
187
- // or compactedIssues array
188
- const idMatches = content.matchAll(/(?:id|issueId):\s*["']?([a-f0-9-]{36})["']?/gi);
189
- const issueIds = [];
190
- for (const match of idMatches) {
191
- if (!issueIds.includes(match[1])) {
192
- issueIds.push(match[1]);
94
+ else {
95
+ this.log(`Marked ${result.markedCount} issue(s) as compacted`);
193
96
  }
97
+ this.log('Compaction applied successfully!');
194
98
  }
195
- if (issueIds.length === 0) {
196
- this.warn('No issue IDs found in migration content. Issues will not be marked as compacted.');
197
- return;
198
- }
199
- const response = await daemonMarkIssuesCompacted({
200
- projectPath,
201
- issueIds,
202
- });
203
- if (!response.success) {
204
- this.error(`Failed to mark issues as compacted: ${response.error}`);
99
+ catch (error) {
100
+ this.error(error instanceof Error ? error.message : String(error));
205
101
  }
206
- this.log(`Marked ${response.markedCount} issue(s) as compacted`);
207
102
  }
208
103
  }
209
104
  //# sourceMappingURL=compact.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"compact.js","sourceRoot":"","sources":["../../src/commands/compact.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"compact.js","sourceRoot":"","sources":["../../src/commands/compact.ts"],"names":[],"mappings":"AAAA,wCAAwC;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAE5C,wCAAwC;AACxC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AAE5C,OAAO,EAAE,2BAA2B,EAAE,MAAM,6CAA6C,CAAA;AACzF,OAAO,EAAE,wBAAwB,EAAE,MAAM,sCAAsC,CAAA;AAC/E,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAA;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,wCAAwC,CAAA;AAC3E,OAAO,EACL,iBAAiB,EACjB,mBAAmB,GACpB,MAAM,gCAAgC,CAAA;AAEvC;;GAEG;AACH,qFAAqF;AACrF,MAAM,CAAC,OAAO,OAAO,OAAQ,SAAQ,OAAO;IAC1C,gDAAgD;IAChD,MAAM,CAAU,WAAW,GACzB,mDAAmD,CAAA;IAErD,gDAAgD;IAChD,MAAM,CAAU,QAAQ,GAAG;QACzB,qCAAqC;QACrC,+CAA+C;QAC/C,yDAAyD;QACzD,yDAAyD;KAC1D,CAAA;IAED,gDAAgD;IAChD,MAAM,CAAU,KAAK,GAAG;QACtB,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC;YACvB,IAAI,EAAE,GAAG;YACT,WAAW,EAAE,2CAA2C;YACxD,OAAO,EAAE,KAAK;SACf,CAAC;QACF,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC;YACnB,IAAI,EAAE,GAAG;YACT,WAAW,EAAE,yDAAyD;SACvE,CAAC;QACF,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC;YAClB,IAAI,EAAE,GAAG;YACT,WAAW,EAAE,+CAA+C;SAC7D,CAAC;QACF,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC;YAClB,WAAW,EAAE,gCAAgC;YAC7C,OAAO,EAAE,KAAK;SACf,CAAC;KACH,CAAA;IAEM,KAAK,CAAC,GAAG;QACd,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;QAC3C,gDAAgD;QAChD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,OAAO,CAAC,GAAG,EAAE,CAAA;QAErD,IAAI,CAAC;YACH,MAAM,iBAAiB,CAAC,GAAG,CAAC,CAAA;QAC9B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,mBAAmB,EAAE,CAAC;gBACzC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;YAC3B,CAAC;YACD,MAAM,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;QACjE,CAAC;QAED,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YAC9B,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,CAAA;YACvC,OAAM;QACR,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,2BAA2B,CAAC,EAAE,WAAW,EAAE,GAAG,EAAE,CAAC,CAAA;QACxE,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACjC,IAAI,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAA;YACrC,OAAM;QACR,CAAC;QAED,IAAI,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC;YACrB,KAAK,MAAM,IAAI,IAAI,YAAY,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;gBACtD,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;YAChB,CAAC;YACD,OAAM;QACR,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,kBAAkB,CAAC,GAAG,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAA;QAC9D,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAC/B,mEAAmE;YACnE,MAAM,SAAS,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;YAC/C,IAAI,CAAC,GAAG,CAAC,2BAA2B,KAAK,CAAC,MAAM,EAAE,CAAC,CAAA;YACnD,IAAI,CAAC,GAAG,CACN,iGAAiG,CAClG,CAAA;YACD,OAAM;QACR,CAAC;QAED,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;IACnB,CAAC;IAEO,KAAK,CAAC,UAAU,CAAC,GAAW,EAAE,SAAiB;QACrD,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,wBAAwB,CAAC,GAAG,EAAE,SAAS,CAAC,CAAA;YAC7D,IAAI,MAAM,CAAC,iBAAiB,KAAK,IAAI,EAAE,CAAC;gBACtC,IAAI,CAAC,GAAG,CAAC,oBAAoB,MAAM,CAAC,iBAAiB,EAAE,CAAC,CAAA;YAC1D,CAAC;YACD,IAAI,MAAM,CAAC,cAAc,EAAE,CAAC;gBAC1B,IAAI,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAA;YAChC,CAAC;YACD,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;gBACtB,IAAI,CAAC,IAAI,CACP,kFAAkF,CACnF,CAAA;YACH,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,GAAG,CAAC,UAAU,MAAM,CAAC,WAAW,wBAAwB,CAAC,CAAA;YAChE,CAAC;YACD,IAAI,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAA;QAC9C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,KAAK,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;QACpE,CAAC;IACH,CAAC"}
@@ -15,5 +15,6 @@ export default class GetDoc extends Command {
15
15
  project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
16
16
  };
17
17
  run(): Promise<void>;
18
+ private fetchAndDisplayDoc;
18
19
  }
19
20
  //# sourceMappingURL=doc.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"doc.d.ts","sourceRoot":"","sources":["../../../src/commands/get/doc.ts"],"names":[],"mappings":"AAGA,OAAO,EAAQ,OAAO,EAAS,MAAM,aAAa,CAAA;AAclD;;GAEG;AAEH,MAAM,CAAC,OAAO,OAAO,MAAO,SAAQ,OAAO;IAEzC,OAAgB,OAAO,WAAe;IAGtC,OAAgB,IAAI;;MAKnB;IAGD,OAAgB,WAAW,SAAqC;IAGhE,OAAgB,QAAQ,WAMvB;IAGD,OAAgB,KAAK;;;;MAWpB;IAGY,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAsIlC"}
1
+ {"version":3,"file":"doc.d.ts","sourceRoot":"","sources":["../../../src/commands/get/doc.ts"],"names":[],"mappings":"AACA,OAAO,EAAQ,OAAO,EAAS,MAAM,aAAa,CAAA;AAYlD;;GAEG;AAEH,MAAM,CAAC,OAAO,OAAO,MAAO,SAAQ,OAAO;IAEzC,OAAgB,OAAO,WAAe;IAGtC,OAAgB,IAAI;;MAKnB;IAGD,OAAgB,WAAW,SAAqC;IAGhE,OAAgB,QAAQ,WAMvB;IAGD,OAAgB,KAAK;;;;MAWpB;IAEY,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;YAoCnB,kBAAkB;CAwBjC"}
@@ -1,10 +1,12 @@
1
- /* eslint-disable max-lines */
2
1
  // eslint-disable-next-line import/order
3
2
  import { Args, Command, Flags } from '@oclif/core';
4
3
  import { daemonGetDoc } from '../../daemon/daemon-get-doc.js';
5
4
  import { daemonGetDocsBySlug } from '../../daemon/daemon-get-docs-by-slug.js';
6
5
  import { projectFlag } from '../../flags/project-flag.js';
7
- import { formatCrossProjectHint, formatCrossProjectJson, handleNotInitializedWithSearch, isNotFoundError, } from '../../utils/cross-project-search.js';
6
+ import { checkCrossProjectDoc } from '../../lib/get-doc/cross-project-hint.js';
7
+ import { formatDocPlain } from '../../lib/get-doc/format-doc-output.js';
8
+ import { handleGlobalDocSearch } from '../../lib/get-doc/handle-global-search.js';
9
+ import { handleDocNotInitialized } from '../../lib/get-doc/handle-not-initialized.js';
8
10
  import { ensureInitialized } from '../../utils/ensure-initialized.js';
9
11
  import { resolveProjectPath } from '../../utils/resolve-project-path.js';
10
12
  /**
@@ -44,68 +46,23 @@ export default class GetDoc extends Command {
44
46
  }),
45
47
  project: projectFlag,
46
48
  };
47
- // eslint-disable-next-line max-lines-per-function
48
49
  async run() {
49
50
  const { args, flags } = await this.parse(GetDoc);
50
51
  const cwd = await resolveProjectPath(flags.project);
51
- // Handle global search
52
52
  if (flags.global) {
53
53
  const result = await daemonGetDocsBySlug({ slug: args.slug });
54
54
  if (flags.json) {
55
55
  this.log(JSON.stringify(result, null, 2));
56
56
  return;
57
57
  }
58
- if (result.docs.length === 0) {
59
- this.log(`No docs found with slug: ${args.slug}`);
60
- if (result.errors.length > 0) {
61
- this.warn('Some projects could not be searched:');
62
- for (const err of result.errors) {
63
- this.warn(` - ${err}`);
64
- }
65
- }
66
- return;
67
- }
68
- this.log(`Found ${result.totalCount} doc(s) matching slug: ${args.slug}\n`);
69
- for (const dwp of result.docs) {
70
- const doc = dwp.doc;
71
- this.log(`--- Project: ${dwp.projectName} (${dwp.projectPath}) ---`);
72
- this.log(`Title: ${doc.title}`);
73
- this.log(`Slug: ${doc.slug}`);
74
- this.log(`Created: ${doc.metadata !== undefined ? doc.metadata.createdAt : 'unknown'}`);
75
- this.log(`Updated: ${doc.metadata !== undefined ? doc.metadata.updatedAt : 'unknown'}`);
76
- if (doc.content) {
77
- this.log(`\nContent:\n${doc.content}`);
78
- }
79
- this.log('');
80
- }
81
- if (result.errors.length > 0) {
82
- this.warn('Some projects could not be searched:');
83
- for (const err of result.errors) {
84
- this.warn(` - ${err}`);
85
- }
86
- }
58
+ handleGlobalDocSearch(result, args.slug, this.log.bind(this), this.warn.bind(this));
87
59
  return;
88
60
  }
89
- // Local search
90
61
  try {
91
62
  await ensureInitialized(cwd);
92
63
  }
93
64
  catch (error) {
94
- const result = await handleNotInitializedWithSearch(error, {
95
- entityType: 'doc',
96
- identifier: args.slug,
97
- jsonMode: flags.json,
98
- async globalSearchFn() {
99
- const searchResult = await daemonGetDocsBySlug({ slug: args.slug });
100
- return {
101
- matches: searchResult.docs.map(dwp => ({
102
- projectName: dwp.projectName,
103
- projectPath: dwp.projectPath,
104
- })),
105
- errors: searchResult.errors,
106
- };
107
- },
108
- });
65
+ const result = await handleDocNotInitialized(error, args.slug, flags.json);
109
66
  if (result !== null) {
110
67
  if (result.jsonOutput !== undefined) {
111
68
  this.log(JSON.stringify(result.jsonOutput, null, 2));
@@ -115,39 +72,26 @@ export default class GetDoc extends Command {
115
72
  }
116
73
  throw error instanceof Error ? error : new Error(String(error));
117
74
  }
75
+ await this.fetchAndDisplayDoc(cwd, args.slug, flags.json);
76
+ }
77
+ async fetchAndDisplayDoc(cwd, slug, jsonMode) {
118
78
  try {
119
- const doc = await daemonGetDoc({
120
- projectPath: cwd,
121
- slug: args.slug,
122
- });
123
- if (flags.json) {
79
+ const doc = await daemonGetDoc({ projectPath: cwd, slug });
80
+ if (jsonMode) {
124
81
  this.log(JSON.stringify(doc, null, 2));
125
82
  return;
126
83
  }
127
- this.log(`Title: ${doc.title}`);
128
- this.log(`Slug: ${doc.slug}`);
129
- this.log(`Created: ${doc.metadata !== undefined ? doc.metadata.createdAt : 'unknown'}`);
130
- this.log(`Updated: ${doc.metadata !== undefined ? doc.metadata.updatedAt : 'unknown'}`);
131
- this.log(`\nContent:\n${doc.content}`);
84
+ formatDocPlain(doc, this.log.bind(this));
132
85
  }
133
86
  catch (error) {
134
- // For NOT_FOUND errors, try cross-project search to provide helpful hints
135
- if (isNotFoundError(error)) {
136
- // Try global search to see if the doc exists in another project
137
- const result = await daemonGetDocsBySlug({ slug: args.slug });
138
- if (result.docs.length > 0) {
139
- const matches = result.docs.map(dwp => ({
140
- projectName: dwp.projectName,
141
- projectPath: dwp.projectPath,
142
- }));
143
- if (flags.json) {
144
- this.log(JSON.stringify(formatCrossProjectJson('doc', args.slug, matches), null, 2));
145
- this.exit(1);
146
- }
147
- this.error(formatCrossProjectHint('doc', args.slug, matches));
148
- }
87
+ const cross = await checkCrossProjectDoc(error, slug, jsonMode);
88
+ if (cross.jsonOutput !== null) {
89
+ this.log(JSON.stringify(cross.jsonOutput, null, 2));
90
+ this.exit(1);
91
+ }
92
+ if (cross.hint !== null) {
93
+ this.error(cross.hint);
149
94
  }
150
- // Re-throw original error if not found anywhere or not a NOT_FOUND error
151
95
  throw error instanceof Error ? error : new Error(String(error));
152
96
  }
153
97
  }