@jonit-dev/night-watch-cli 1.7.29 → 1.7.31

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 (384) hide show
  1. package/bin/night-watch.mjs +1 -1
  2. package/dist/cli.d.ts +3 -0
  3. package/dist/cli.d.ts.map +1 -0
  4. package/dist/{src/cli.js → cli.js} +1 -0
  5. package/dist/cli.js.map +1 -0
  6. package/dist/{src/commands → commands}/audit.d.ts +2 -2
  7. package/dist/commands/audit.d.ts.map +1 -0
  8. package/dist/commands/audit.js +105 -0
  9. package/dist/commands/audit.js.map +1 -0
  10. package/dist/{src/commands → commands}/board.d.ts +1 -1
  11. package/dist/commands/board.d.ts.map +1 -0
  12. package/dist/commands/board.js +664 -0
  13. package/dist/commands/board.js.map +1 -0
  14. package/dist/{src/commands → commands}/cancel.d.ts +3 -3
  15. package/dist/commands/cancel.d.ts.map +1 -0
  16. package/dist/{src/commands → commands}/cancel.js +18 -20
  17. package/dist/commands/cancel.js.map +1 -0
  18. package/dist/commands/dashboard/tab-actions.d.ts.map +1 -0
  19. package/dist/commands/dashboard/tab-actions.js.map +1 -0
  20. package/dist/{src/commands → commands}/dashboard/tab-config.d.ts +3 -3
  21. package/dist/commands/dashboard/tab-config.d.ts.map +1 -0
  22. package/dist/{src/commands → commands}/dashboard/tab-config.js +250 -187
  23. package/dist/commands/dashboard/tab-config.js.map +1 -0
  24. package/dist/{src/commands → commands}/dashboard/tab-logs.d.ts +1 -1
  25. package/dist/commands/dashboard/tab-logs.d.ts.map +1 -0
  26. package/dist/{src/commands → commands}/dashboard/tab-logs.js +62 -38
  27. package/dist/commands/dashboard/tab-logs.js.map +1 -0
  28. package/dist/{src/commands → commands}/dashboard/tab-schedules.d.ts +1 -1
  29. package/dist/commands/dashboard/tab-schedules.d.ts.map +1 -0
  30. package/dist/{src/commands → commands}/dashboard/tab-schedules.js +85 -76
  31. package/dist/commands/dashboard/tab-schedules.js.map +1 -0
  32. package/dist/{src/commands → commands}/dashboard/tab-status.d.ts +7 -7
  33. package/dist/commands/dashboard/tab-status.d.ts.map +1 -0
  34. package/dist/{src/commands → commands}/dashboard/tab-status.js +98 -95
  35. package/dist/commands/dashboard/tab-status.js.map +1 -0
  36. package/dist/{src/commands → commands}/dashboard/types.d.ts +3 -4
  37. package/dist/commands/dashboard/types.d.ts.map +1 -0
  38. package/dist/commands/dashboard/types.js.map +1 -0
  39. package/dist/{src/commands → commands}/dashboard.d.ts +2 -2
  40. package/dist/commands/dashboard.d.ts.map +1 -0
  41. package/dist/{src/commands → commands}/dashboard.js +32 -33
  42. package/dist/commands/dashboard.js.map +1 -0
  43. package/dist/{src/commands → commands}/doctor.d.ts +2 -2
  44. package/dist/commands/doctor.d.ts.map +1 -0
  45. package/dist/{src/commands → commands}/doctor.js +40 -43
  46. package/dist/commands/doctor.js.map +1 -0
  47. package/dist/{src/commands → commands}/history.d.ts +1 -1
  48. package/dist/commands/history.d.ts.map +1 -0
  49. package/dist/{src/commands → commands}/history.js +11 -18
  50. package/dist/commands/history.js.map +1 -0
  51. package/dist/{src/commands → commands}/init.d.ts +1 -1
  52. package/dist/commands/init.d.ts.map +1 -0
  53. package/dist/{src/commands → commands}/init.js +62 -36
  54. package/dist/commands/init.js.map +1 -0
  55. package/dist/{src/commands → commands}/install.d.ts +2 -2
  56. package/dist/commands/install.d.ts.map +1 -0
  57. package/dist/{src/commands → commands}/install.js +48 -50
  58. package/dist/commands/install.js.map +1 -0
  59. package/dist/{src/commands → commands}/logs.d.ts +1 -1
  60. package/dist/commands/logs.d.ts.map +1 -0
  61. package/dist/{src/commands → commands}/logs.js +29 -30
  62. package/dist/commands/logs.js.map +1 -0
  63. package/dist/{src/commands → commands}/prd-state.d.ts +1 -1
  64. package/dist/commands/prd-state.d.ts.map +1 -0
  65. package/dist/{src/commands → commands}/prd-state.js +14 -14
  66. package/dist/commands/prd-state.js.map +1 -0
  67. package/dist/{src/commands → commands}/prd.d.ts +1 -1
  68. package/dist/commands/prd.d.ts.map +1 -0
  69. package/dist/{src/commands → commands}/prd.js +57 -66
  70. package/dist/commands/prd.js.map +1 -0
  71. package/dist/{src/commands → commands}/prds.d.ts +1 -1
  72. package/dist/commands/prds.d.ts.map +1 -0
  73. package/dist/{src/commands → commands}/prds.js +51 -53
  74. package/dist/commands/prds.js.map +1 -0
  75. package/dist/{src/commands → commands}/prs.d.ts +1 -1
  76. package/dist/commands/prs.d.ts.map +1 -0
  77. package/dist/{src/commands → commands}/prs.js +22 -24
  78. package/dist/commands/prs.js.map +1 -0
  79. package/dist/{src/commands → commands}/qa.d.ts +2 -2
  80. package/dist/commands/qa.d.ts.map +1 -0
  81. package/dist/{src/commands → commands}/qa.js +50 -51
  82. package/dist/commands/qa.js.map +1 -0
  83. package/dist/{src/commands → commands}/retry.d.ts +1 -1
  84. package/dist/commands/retry.d.ts.map +1 -0
  85. package/dist/{src/commands → commands}/retry.js +9 -10
  86. package/dist/commands/retry.js.map +1 -0
  87. package/dist/{src/commands → commands}/review.d.ts +2 -2
  88. package/dist/commands/review.d.ts.map +1 -0
  89. package/dist/{src/commands → commands}/review.js +68 -59
  90. package/dist/commands/review.js.map +1 -0
  91. package/dist/{src/commands → commands}/run.d.ts +2 -2
  92. package/dist/commands/run.d.ts.map +1 -0
  93. package/dist/{src/commands → commands}/run.js +87 -83
  94. package/dist/commands/run.js.map +1 -0
  95. package/dist/{src/commands → commands}/serve.d.ts +2 -2
  96. package/dist/commands/serve.d.ts.map +1 -0
  97. package/dist/{src/commands → commands}/serve.js +18 -18
  98. package/dist/commands/serve.js.map +1 -0
  99. package/dist/{src/commands → commands}/slice.d.ts +2 -2
  100. package/dist/commands/slice.d.ts.map +1 -0
  101. package/dist/{src/commands → commands}/slice.js +50 -46
  102. package/dist/commands/slice.js.map +1 -0
  103. package/dist/{src/commands → commands}/state.d.ts +1 -1
  104. package/dist/commands/state.d.ts.map +1 -0
  105. package/dist/{src/commands → commands}/state.js +20 -22
  106. package/dist/commands/state.js.map +1 -0
  107. package/dist/{src/commands → commands}/status.d.ts +1 -1
  108. package/dist/commands/status.d.ts.map +1 -0
  109. package/dist/{src/commands → commands}/status.js +75 -54
  110. package/dist/commands/status.js.map +1 -0
  111. package/dist/{src/commands → commands}/uninstall.d.ts +1 -1
  112. package/dist/commands/uninstall.d.ts.map +1 -0
  113. package/dist/{src/commands → commands}/uninstall.js +12 -14
  114. package/dist/commands/uninstall.js.map +1 -0
  115. package/dist/{src/commands → commands}/update.d.ts +1 -1
  116. package/dist/commands/update.d.ts.map +1 -0
  117. package/dist/{src/commands → commands}/update.js +23 -23
  118. package/dist/commands/update.js.map +1 -0
  119. package/package.json +18 -42
  120. package/LICENSE +0 -21
  121. package/README.md +0 -132
  122. package/dist/shared/types.d.ts +0 -226
  123. package/dist/shared/types.d.ts.map +0 -1
  124. package/dist/shared/types.js +0 -7
  125. package/dist/shared/types.js.map +0 -1
  126. package/dist/src/agents/soul-compiler.d.ts +0 -11
  127. package/dist/src/agents/soul-compiler.d.ts.map +0 -1
  128. package/dist/src/agents/soul-compiler.js +0 -157
  129. package/dist/src/agents/soul-compiler.js.map +0 -1
  130. package/dist/src/board/factory.d.ts +0 -3
  131. package/dist/src/board/factory.d.ts.map +0 -1
  132. package/dist/src/board/factory.js +0 -10
  133. package/dist/src/board/factory.js.map +0 -1
  134. package/dist/src/board/providers/github-graphql.d.ts +0 -16
  135. package/dist/src/board/providers/github-graphql.d.ts.map +0 -1
  136. package/dist/src/board/providers/github-graphql.js +0 -43
  137. package/dist/src/board/providers/github-graphql.js.map +0 -1
  138. package/dist/src/board/providers/github-projects.d.ts +0 -51
  139. package/dist/src/board/providers/github-projects.d.ts.map +0 -1
  140. package/dist/src/board/providers/github-projects.js +0 -672
  141. package/dist/src/board/providers/github-projects.js.map +0 -1
  142. package/dist/src/board/types.d.ts +0 -60
  143. package/dist/src/board/types.d.ts.map +0 -1
  144. package/dist/src/board/types.js +0 -4
  145. package/dist/src/board/types.js.map +0 -1
  146. package/dist/src/cli.d.ts +0 -3
  147. package/dist/src/cli.d.ts.map +0 -1
  148. package/dist/src/cli.js.map +0 -1
  149. package/dist/src/commands/audit.d.ts.map +0 -1
  150. package/dist/src/commands/audit.js +0 -98
  151. package/dist/src/commands/audit.js.map +0 -1
  152. package/dist/src/commands/board.d.ts.map +0 -1
  153. package/dist/src/commands/board.js +0 -294
  154. package/dist/src/commands/board.js.map +0 -1
  155. package/dist/src/commands/cancel.d.ts.map +0 -1
  156. package/dist/src/commands/cancel.js.map +0 -1
  157. package/dist/src/commands/dashboard/tab-actions.d.ts.map +0 -1
  158. package/dist/src/commands/dashboard/tab-actions.js.map +0 -1
  159. package/dist/src/commands/dashboard/tab-config.d.ts.map +0 -1
  160. package/dist/src/commands/dashboard/tab-config.js.map +0 -1
  161. package/dist/src/commands/dashboard/tab-logs.d.ts.map +0 -1
  162. package/dist/src/commands/dashboard/tab-logs.js.map +0 -1
  163. package/dist/src/commands/dashboard/tab-schedules.d.ts.map +0 -1
  164. package/dist/src/commands/dashboard/tab-schedules.js.map +0 -1
  165. package/dist/src/commands/dashboard/tab-status.d.ts.map +0 -1
  166. package/dist/src/commands/dashboard/tab-status.js.map +0 -1
  167. package/dist/src/commands/dashboard/types.d.ts.map +0 -1
  168. package/dist/src/commands/dashboard/types.js.map +0 -1
  169. package/dist/src/commands/dashboard.d.ts.map +0 -1
  170. package/dist/src/commands/dashboard.js.map +0 -1
  171. package/dist/src/commands/doctor.d.ts.map +0 -1
  172. package/dist/src/commands/doctor.js.map +0 -1
  173. package/dist/src/commands/history.d.ts.map +0 -1
  174. package/dist/src/commands/history.js.map +0 -1
  175. package/dist/src/commands/init.d.ts.map +0 -1
  176. package/dist/src/commands/init.js.map +0 -1
  177. package/dist/src/commands/install.d.ts.map +0 -1
  178. package/dist/src/commands/install.js.map +0 -1
  179. package/dist/src/commands/logs.d.ts.map +0 -1
  180. package/dist/src/commands/logs.js.map +0 -1
  181. package/dist/src/commands/prd-state.d.ts.map +0 -1
  182. package/dist/src/commands/prd-state.js.map +0 -1
  183. package/dist/src/commands/prd.d.ts.map +0 -1
  184. package/dist/src/commands/prd.js.map +0 -1
  185. package/dist/src/commands/prds.d.ts.map +0 -1
  186. package/dist/src/commands/prds.js.map +0 -1
  187. package/dist/src/commands/prs.d.ts.map +0 -1
  188. package/dist/src/commands/prs.js.map +0 -1
  189. package/dist/src/commands/qa.d.ts.map +0 -1
  190. package/dist/src/commands/qa.js.map +0 -1
  191. package/dist/src/commands/retry.d.ts.map +0 -1
  192. package/dist/src/commands/retry.js.map +0 -1
  193. package/dist/src/commands/review.d.ts.map +0 -1
  194. package/dist/src/commands/review.js.map +0 -1
  195. package/dist/src/commands/run.d.ts.map +0 -1
  196. package/dist/src/commands/run.js.map +0 -1
  197. package/dist/src/commands/serve.d.ts.map +0 -1
  198. package/dist/src/commands/serve.js.map +0 -1
  199. package/dist/src/commands/slice.d.ts.map +0 -1
  200. package/dist/src/commands/slice.js.map +0 -1
  201. package/dist/src/commands/state.d.ts.map +0 -1
  202. package/dist/src/commands/state.js.map +0 -1
  203. package/dist/src/commands/status.d.ts.map +0 -1
  204. package/dist/src/commands/status.js.map +0 -1
  205. package/dist/src/commands/uninstall.d.ts.map +0 -1
  206. package/dist/src/commands/uninstall.js.map +0 -1
  207. package/dist/src/commands/update.d.ts.map +0 -1
  208. package/dist/src/commands/update.js.map +0 -1
  209. package/dist/src/config.d.ts +0 -23
  210. package/dist/src/config.d.ts.map +0 -1
  211. package/dist/src/config.js +0 -671
  212. package/dist/src/config.js.map +0 -1
  213. package/dist/src/constants.d.ts +0 -67
  214. package/dist/src/constants.d.ts.map +0 -1
  215. package/dist/src/constants.js +0 -131
  216. package/dist/src/constants.js.map +0 -1
  217. package/dist/src/server/index.d.ts +0 -23
  218. package/dist/src/server/index.d.ts.map +0 -1
  219. package/dist/src/server/index.js +0 -1704
  220. package/dist/src/server/index.js.map +0 -1
  221. package/dist/src/slack/channel-manager.d.ts +0 -32
  222. package/dist/src/slack/channel-manager.d.ts.map +0 -1
  223. package/dist/src/slack/channel-manager.js +0 -128
  224. package/dist/src/slack/channel-manager.js.map +0 -1
  225. package/dist/src/slack/client.d.ts +0 -76
  226. package/dist/src/slack/client.d.ts.map +0 -1
  227. package/dist/src/slack/client.js +0 -193
  228. package/dist/src/slack/client.js.map +0 -1
  229. package/dist/src/slack/deliberation.d.ts +0 -87
  230. package/dist/src/slack/deliberation.d.ts.map +0 -1
  231. package/dist/src/slack/deliberation.js +0 -1354
  232. package/dist/src/slack/deliberation.js.map +0 -1
  233. package/dist/src/slack/index.d.ts +0 -6
  234. package/dist/src/slack/index.d.ts.map +0 -1
  235. package/dist/src/slack/index.js +0 -5
  236. package/dist/src/slack/index.js.map +0 -1
  237. package/dist/src/slack/interaction-listener.d.ts +0 -130
  238. package/dist/src/slack/interaction-listener.d.ts.map +0 -1
  239. package/dist/src/slack/interaction-listener.js +0 -1329
  240. package/dist/src/slack/interaction-listener.js.map +0 -1
  241. package/dist/src/storage/json-state-migrator.d.ts +0 -24
  242. package/dist/src/storage/json-state-migrator.d.ts.map +0 -1
  243. package/dist/src/storage/json-state-migrator.js +0 -197
  244. package/dist/src/storage/json-state-migrator.js.map +0 -1
  245. package/dist/src/storage/repositories/index.d.ts +0 -25
  246. package/dist/src/storage/repositories/index.d.ts.map +0 -1
  247. package/dist/src/storage/repositories/index.js +0 -45
  248. package/dist/src/storage/repositories/index.js.map +0 -1
  249. package/dist/src/storage/repositories/interfaces.d.ts +0 -60
  250. package/dist/src/storage/repositories/interfaces.d.ts.map +0 -1
  251. package/dist/src/storage/repositories/interfaces.js +0 -6
  252. package/dist/src/storage/repositories/interfaces.js.map +0 -1
  253. package/dist/src/storage/repositories/sqlite/agent-persona-repository.d.ts +0 -33
  254. package/dist/src/storage/repositories/sqlite/agent-persona-repository.d.ts.map +0 -1
  255. package/dist/src/storage/repositories/sqlite/agent-persona-repository.js +0 -715
  256. package/dist/src/storage/repositories/sqlite/agent-persona-repository.js.map +0 -1
  257. package/dist/src/storage/repositories/sqlite/execution-history-repository.d.ts +0 -21
  258. package/dist/src/storage/repositories/sqlite/execution-history-repository.d.ts.map +0 -1
  259. package/dist/src/storage/repositories/sqlite/execution-history-repository.js +0 -94
  260. package/dist/src/storage/repositories/sqlite/execution-history-repository.js.map +0 -1
  261. package/dist/src/storage/repositories/sqlite/prd-state-repository.d.ts +0 -17
  262. package/dist/src/storage/repositories/sqlite/prd-state-repository.d.ts.map +0 -1
  263. package/dist/src/storage/repositories/sqlite/prd-state-repository.js +0 -74
  264. package/dist/src/storage/repositories/sqlite/prd-state-repository.js.map +0 -1
  265. package/dist/src/storage/repositories/sqlite/project-registry-repository.d.ts +0 -17
  266. package/dist/src/storage/repositories/sqlite/project-registry-repository.d.ts.map +0 -1
  267. package/dist/src/storage/repositories/sqlite/project-registry-repository.js +0 -43
  268. package/dist/src/storage/repositories/sqlite/project-registry-repository.js.map +0 -1
  269. package/dist/src/storage/repositories/sqlite/roadmap-state-repository.d.ts +0 -14
  270. package/dist/src/storage/repositories/sqlite/roadmap-state-repository.d.ts.map +0 -1
  271. package/dist/src/storage/repositories/sqlite/roadmap-state-repository.js +0 -47
  272. package/dist/src/storage/repositories/sqlite/roadmap-state-repository.js.map +0 -1
  273. package/dist/src/storage/repositories/sqlite/slack-discussion-repository.d.ts +0 -20
  274. package/dist/src/storage/repositories/sqlite/slack-discussion-repository.d.ts.map +0 -1
  275. package/dist/src/storage/repositories/sqlite/slack-discussion-repository.js +0 -88
  276. package/dist/src/storage/repositories/sqlite/slack-discussion-repository.js.map +0 -1
  277. package/dist/src/storage/sqlite/client.d.ts +0 -23
  278. package/dist/src/storage/sqlite/client.d.ts.map +0 -1
  279. package/dist/src/storage/sqlite/client.js +0 -47
  280. package/dist/src/storage/sqlite/client.js.map +0 -1
  281. package/dist/src/storage/sqlite/migrations.d.ts +0 -11
  282. package/dist/src/storage/sqlite/migrations.d.ts.map +0 -1
  283. package/dist/src/storage/sqlite/migrations.js +0 -94
  284. package/dist/src/storage/sqlite/migrations.js.map +0 -1
  285. package/dist/src/templates/prd-template.d.ts +0 -11
  286. package/dist/src/templates/prd-template.d.ts.map +0 -1
  287. package/dist/src/templates/prd-template.js +0 -166
  288. package/dist/src/templates/prd-template.js.map +0 -1
  289. package/dist/src/templates/slicer-prompt.d.ts +0 -54
  290. package/dist/src/templates/slicer-prompt.d.ts.map +0 -1
  291. package/dist/src/templates/slicer-prompt.js +0 -163
  292. package/dist/src/templates/slicer-prompt.js.map +0 -1
  293. package/dist/src/types.d.ts +0 -140
  294. package/dist/src/types.d.ts.map +0 -1
  295. package/dist/src/types.js +0 -5
  296. package/dist/src/types.js.map +0 -1
  297. package/dist/src/utils/avatar-generator.d.ts +0 -6
  298. package/dist/src/utils/avatar-generator.d.ts.map +0 -1
  299. package/dist/src/utils/avatar-generator.js +0 -133
  300. package/dist/src/utils/avatar-generator.js.map +0 -1
  301. package/dist/src/utils/checks.d.ts +0 -55
  302. package/dist/src/utils/checks.d.ts.map +0 -1
  303. package/dist/src/utils/checks.js +0 -246
  304. package/dist/src/utils/checks.js.map +0 -1
  305. package/dist/src/utils/config-writer.d.ts +0 -16
  306. package/dist/src/utils/config-writer.d.ts.map +0 -1
  307. package/dist/src/utils/config-writer.js +0 -45
  308. package/dist/src/utils/config-writer.js.map +0 -1
  309. package/dist/src/utils/crontab.d.ts +0 -62
  310. package/dist/src/utils/crontab.d.ts.map +0 -1
  311. package/dist/src/utils/crontab.js +0 -168
  312. package/dist/src/utils/crontab.js.map +0 -1
  313. package/dist/src/utils/execution-history.d.ts +0 -54
  314. package/dist/src/utils/execution-history.d.ts.map +0 -1
  315. package/dist/src/utils/execution-history.js +0 -80
  316. package/dist/src/utils/execution-history.js.map +0 -1
  317. package/dist/src/utils/github.d.ts +0 -40
  318. package/dist/src/utils/github.d.ts.map +0 -1
  319. package/dist/src/utils/github.js +0 -126
  320. package/dist/src/utils/github.js.map +0 -1
  321. package/dist/src/utils/notify.d.ts +0 -64
  322. package/dist/src/utils/notify.d.ts.map +0 -1
  323. package/dist/src/utils/notify.js +0 -405
  324. package/dist/src/utils/notify.js.map +0 -1
  325. package/dist/src/utils/prd-states.d.ts +0 -16
  326. package/dist/src/utils/prd-states.d.ts.map +0 -1
  327. package/dist/src/utils/prd-states.js +0 -28
  328. package/dist/src/utils/prd-states.js.map +0 -1
  329. package/dist/src/utils/registry.d.ts +0 -45
  330. package/dist/src/utils/registry.d.ts.map +0 -1
  331. package/dist/src/utils/registry.js +0 -86
  332. package/dist/src/utils/registry.js.map +0 -1
  333. package/dist/src/utils/roadmap-parser.d.ts +0 -45
  334. package/dist/src/utils/roadmap-parser.d.ts.map +0 -1
  335. package/dist/src/utils/roadmap-parser.js +0 -136
  336. package/dist/src/utils/roadmap-parser.js.map +0 -1
  337. package/dist/src/utils/roadmap-scanner.d.ts +0 -92
  338. package/dist/src/utils/roadmap-scanner.d.ts.map +0 -1
  339. package/dist/src/utils/roadmap-scanner.js +0 -349
  340. package/dist/src/utils/roadmap-scanner.js.map +0 -1
  341. package/dist/src/utils/roadmap-state.d.ts +0 -90
  342. package/dist/src/utils/roadmap-state.d.ts.map +0 -1
  343. package/dist/src/utils/roadmap-state.js +0 -154
  344. package/dist/src/utils/roadmap-state.js.map +0 -1
  345. package/dist/src/utils/script-result.d.ts +0 -12
  346. package/dist/src/utils/script-result.d.ts.map +0 -1
  347. package/dist/src/utils/script-result.js +0 -46
  348. package/dist/src/utils/script-result.js.map +0 -1
  349. package/dist/src/utils/shell.d.ts +0 -27
  350. package/dist/src/utils/shell.d.ts.map +0 -1
  351. package/dist/src/utils/shell.js +0 -64
  352. package/dist/src/utils/shell.js.map +0 -1
  353. package/dist/src/utils/status-data.d.ts +0 -148
  354. package/dist/src/utils/status-data.d.ts.map +0 -1
  355. package/dist/src/utils/status-data.js +0 -548
  356. package/dist/src/utils/status-data.js.map +0 -1
  357. package/dist/src/utils/ui.d.ts +0 -55
  358. package/dist/src/utils/ui.d.ts.map +0 -1
  359. package/dist/src/utils/ui.js +0 -121
  360. package/dist/src/utils/ui.js.map +0 -1
  361. package/scripts/night-watch-audit-cron.sh +0 -149
  362. package/scripts/night-watch-cron.sh +0 -484
  363. package/scripts/night-watch-helpers.sh +0 -499
  364. package/scripts/night-watch-pr-reviewer-cron.sh +0 -528
  365. package/scripts/night-watch-qa-cron.sh +0 -281
  366. package/scripts/night-watch-slicer-cron.sh +0 -90
  367. package/scripts/test-helpers.bats +0 -77
  368. package/templates/night-watch-pr-reviewer.md +0 -174
  369. package/templates/night-watch-qa.md +0 -157
  370. package/templates/night-watch-slicer.md +0 -219
  371. package/templates/night-watch.config.json +0 -30
  372. package/templates/night-watch.md +0 -94
  373. package/templates/prd-executor.md +0 -235
  374. package/templates/prd.md +0 -26
  375. package/web/dist/assets/index-BiJf9LFT.js +0 -458
  376. package/web/dist/assets/index-OpSgvsYu.css +0 -1
  377. package/web/dist/avatars/carlos.webp +0 -0
  378. package/web/dist/avatars/dev.webp +0 -0
  379. package/web/dist/avatars/maya.webp +0 -0
  380. package/web/dist/avatars/priya.webp +0 -0
  381. package/web/dist/index.html +0 -82
  382. /package/dist/{src/commands → commands}/dashboard/tab-actions.d.ts +0 -0
  383. /package/dist/{src/commands → commands}/dashboard/tab-actions.js +0 -0
  384. /package/dist/{src/commands → commands}/dashboard/types.js +0 -0
@@ -1,405 +0,0 @@
1
- /**
2
- * Notification utilities for Night Watch CLI
3
- * Sends webhook notifications to Slack, Discord, and Telegram
4
- */
5
- import { info, warn } from "./ui.js";
6
- import { extractSummary } from "./github.js";
7
- import { SlackClient } from "../slack/client.js";
8
- import { DeliberationEngine } from "../slack/deliberation.js";
9
- import { getRepositories } from "../storage/repositories/index.js";
10
- /**
11
- * Get the emoji for a notification event
12
- */
13
- export function getEventEmoji(event) {
14
- switch (event) {
15
- case "run_started":
16
- return "\uD83D\uDE80";
17
- case "run_succeeded":
18
- return "\u2705";
19
- case "run_failed":
20
- return "\u274C";
21
- case "run_timeout":
22
- return "\u23F0";
23
- case "review_completed":
24
- return "\uD83D\uDD0D";
25
- case "rate_limit_fallback":
26
- return "\u26A0\uFE0F";
27
- case "pr_auto_merged":
28
- return "\uD83D\uDD00";
29
- case "qa_completed":
30
- return "\uD83E\uDDEA";
31
- }
32
- }
33
- /**
34
- * Get a human-readable title for a notification event
35
- */
36
- export function getEventTitle(event) {
37
- switch (event) {
38
- case "run_started":
39
- return "PRD Execution Started";
40
- case "run_succeeded":
41
- return "PRD Execution Succeeded";
42
- case "run_failed":
43
- return "PRD Execution Failed";
44
- case "run_timeout":
45
- return "PRD Execution Timed Out";
46
- case "review_completed":
47
- return "PR Review Completed";
48
- case "rate_limit_fallback":
49
- return "Rate Limit Fallback";
50
- case "pr_auto_merged":
51
- return "PR Auto-Merged";
52
- case "qa_completed":
53
- return "QA Completed";
54
- }
55
- }
56
- /**
57
- * Get the Discord embed color for a notification event
58
- */
59
- export function getEventColor(event) {
60
- switch (event) {
61
- case "run_started":
62
- return 0x3498db;
63
- case "run_succeeded":
64
- return 0x00ff00;
65
- case "run_failed":
66
- return 0xff0000;
67
- case "run_timeout":
68
- return 0xff0000;
69
- case "review_completed":
70
- return 0x0099ff;
71
- case "rate_limit_fallback":
72
- return 0xffa500;
73
- case "pr_auto_merged":
74
- return 0x9b59b6;
75
- case "qa_completed":
76
- return 0x2ecc71;
77
- }
78
- }
79
- /**
80
- * Build a description string from notification context
81
- */
82
- export function buildDescription(ctx) {
83
- const lines = [];
84
- lines.push(`Project: ${ctx.projectName}`);
85
- lines.push(`Provider: ${ctx.provider}`);
86
- lines.push(`Exit code: ${ctx.exitCode}`);
87
- if (ctx.prdName) {
88
- lines.push(`PRD: ${ctx.prdName}`);
89
- }
90
- if (ctx.branchName) {
91
- lines.push(`Branch: ${ctx.branchName}`);
92
- }
93
- if (ctx.prNumber !== undefined) {
94
- lines.push(`PR: #${ctx.prNumber}`);
95
- }
96
- if (ctx.duration !== undefined) {
97
- lines.push(`Duration: ${ctx.duration}s`);
98
- }
99
- return lines.join("\n");
100
- }
101
- /**
102
- * Escape special characters for Telegram MarkdownV2 format
103
- */
104
- function escapeMarkdownV2(text) {
105
- return text.replace(/[_*[\]()~`>#+=|{}.!-]/g, "\\$&");
106
- }
107
- /**
108
- * Format a notification payload for Slack incoming webhooks
109
- */
110
- export function formatSlackPayload(ctx) {
111
- const emoji = getEventEmoji(ctx.event);
112
- const title = getEventTitle(ctx.event);
113
- const description = buildDescription(ctx);
114
- let color;
115
- if (ctx.event === "run_succeeded") {
116
- color = "#00ff00";
117
- }
118
- else if (ctx.event === "run_started") {
119
- color = "#3498db";
120
- }
121
- else if (ctx.event === "review_completed") {
122
- color = "#0099ff";
123
- }
124
- else {
125
- color = "#ff0000";
126
- }
127
- return {
128
- attachments: [
129
- {
130
- color,
131
- blocks: [
132
- {
133
- type: "section",
134
- text: {
135
- type: "mrkdwn",
136
- text: `*${emoji} ${title}*\n${description}`,
137
- },
138
- },
139
- ],
140
- },
141
- ],
142
- };
143
- }
144
- /**
145
- * Format a notification payload for Discord webhooks
146
- */
147
- export function formatDiscordPayload(ctx) {
148
- const emoji = getEventEmoji(ctx.event);
149
- const title = getEventTitle(ctx.event);
150
- const description = buildDescription(ctx);
151
- return {
152
- embeds: [
153
- {
154
- title: `${emoji} ${title}`,
155
- description,
156
- color: getEventColor(ctx.event),
157
- timestamp: new Date().toISOString(),
158
- },
159
- ],
160
- };
161
- }
162
- /**
163
- * Build a structured Telegram message when PR details are available.
164
- * Falls back to the basic format when they are not.
165
- */
166
- export function formatTelegramPayload(ctx) {
167
- const emoji = getEventEmoji(ctx.event);
168
- const title = getEventTitle(ctx.event);
169
- // If PR details are present, use the rich structured template
170
- if (ctx.prUrl && ctx.prTitle) {
171
- const lines = [];
172
- lines.push(`*${escapeMarkdownV2(emoji + " " + title)}*`);
173
- lines.push("");
174
- lines.push(`${escapeMarkdownV2("📋")} *${escapeMarkdownV2("PR #" + (ctx.prNumber ?? "") + ": " + ctx.prTitle)}*`);
175
- lines.push(`${escapeMarkdownV2("🔗")} ${escapeMarkdownV2(ctx.prUrl)}`);
176
- // Summary from PR body
177
- if (ctx.prBody && ctx.prBody.trim().length > 0) {
178
- const summary = extractSummary(ctx.prBody);
179
- if (summary) {
180
- lines.push("");
181
- lines.push(`${escapeMarkdownV2("📝 Summary")}`);
182
- lines.push(escapeMarkdownV2(summary));
183
- }
184
- }
185
- // Stats
186
- if (ctx.filesChanged !== undefined || ctx.additions !== undefined) {
187
- lines.push("");
188
- lines.push(`${escapeMarkdownV2("📊 Stats")}`);
189
- const stats = [];
190
- if (ctx.filesChanged !== undefined) {
191
- stats.push(`Files changed: ${ctx.filesChanged}`);
192
- }
193
- if (ctx.additions !== undefined && ctx.deletions !== undefined) {
194
- stats.push(`+${ctx.additions} / -${ctx.deletions}`);
195
- }
196
- lines.push(escapeMarkdownV2(stats.join(" | ")));
197
- }
198
- // Footer
199
- lines.push("");
200
- lines.push(escapeMarkdownV2(`⚙️ Project: ${ctx.projectName} | Provider: ${ctx.provider}`));
201
- return {
202
- text: lines.join("\n"),
203
- parse_mode: "MarkdownV2",
204
- };
205
- }
206
- // Fallback: basic format (no PR details)
207
- const description = buildDescription(ctx);
208
- return {
209
- text: `*${escapeMarkdownV2(emoji + " " + title)}*\n\n${escapeMarkdownV2(description)}`,
210
- parse_mode: "MarkdownV2",
211
- };
212
- }
213
- /**
214
- * Build a one-line notification text for Slack Bot API posts
215
- */
216
- function buildQaNotificationText(ctx) {
217
- const prLabel = ctx.prNumber !== undefined ? `PR #${ctx.prNumber}` : "the latest PR";
218
- const prRef = ctx.prUrl ? `<${ctx.prUrl}|${prLabel}>` : prLabel;
219
- const project = ctx.projectName;
220
- if (ctx.exitCode === 0) {
221
- return `Finished QA on ${prRef} for ${project}.`;
222
- }
223
- return `I ran QA on ${prRef} for ${project}, but it failed. I'll check the logs.`;
224
- }
225
- export function buildNotificationText(ctx) {
226
- if (ctx.event === "qa_completed") {
227
- return buildQaNotificationText(ctx);
228
- }
229
- const emoji = getEventEmoji(ctx.event);
230
- const title = getEventTitle(ctx.event);
231
- const parts = [`${emoji} *${title}*`, `Project: ${ctx.projectName}`];
232
- if (ctx.prdName)
233
- parts.push(`PRD: ${ctx.prdName}`);
234
- if (ctx.branchName)
235
- parts.push(`Branch: ${ctx.branchName}`);
236
- if (ctx.prNumber !== undefined)
237
- parts.push(`PR: #${ctx.prNumber}`);
238
- if (ctx.prUrl)
239
- parts.push(`<${ctx.prUrl}|View PR>`);
240
- if (ctx.duration !== undefined)
241
- parts.push(`Duration: ${ctx.duration}s`);
242
- return parts.join(" | ");
243
- }
244
- /**
245
- * Determine which agent persona name should post for a given event
246
- */
247
- function getPersonaNameForEvent(event) {
248
- switch (event) {
249
- case "run_started":
250
- case "run_succeeded":
251
- case "run_failed":
252
- case "run_timeout":
253
- return "Dev";
254
- case "review_completed":
255
- case "pr_auto_merged":
256
- return "Carlos";
257
- case "qa_completed":
258
- return "Priya";
259
- default:
260
- return "Carlos";
261
- }
262
- }
263
- /**
264
- * Determine which Slack channel to post to for a given event
265
- */
266
- function getChannelForEvent(event, slackConfig) {
267
- switch (event) {
268
- case "run_started":
269
- case "run_succeeded":
270
- case "run_failed":
271
- case "run_timeout":
272
- case "rate_limit_fallback":
273
- return slackConfig.channels.eng;
274
- case "review_completed":
275
- case "pr_auto_merged":
276
- return slackConfig.channels.prs;
277
- case "qa_completed":
278
- return slackConfig.channels.eng;
279
- default:
280
- return slackConfig.channels.eng;
281
- }
282
- }
283
- /**
284
- * Send a notification to a single webhook endpoint
285
- * Silently catches errors — never throws
286
- */
287
- export async function sendWebhook(webhook, ctx) {
288
- // Skip if this event is not in the webhook's configured events
289
- if (!webhook.events.includes(ctx.event)) {
290
- return;
291
- }
292
- try {
293
- let url;
294
- let body;
295
- switch (webhook.type) {
296
- case "slack": {
297
- url = webhook.url;
298
- body = JSON.stringify(formatSlackPayload(ctx));
299
- break;
300
- }
301
- case "discord": {
302
- url = webhook.url;
303
- body = JSON.stringify(formatDiscordPayload(ctx));
304
- break;
305
- }
306
- case "telegram": {
307
- url = `https://api.telegram.org/bot${webhook.botToken}/sendMessage`;
308
- const telegramPayload = formatTelegramPayload(ctx);
309
- body = JSON.stringify({ chat_id: webhook.chatId, ...telegramPayload });
310
- break;
311
- }
312
- }
313
- const response = await fetch(url, {
314
- method: "POST",
315
- headers: { "Content-Type": "application/json" },
316
- body,
317
- });
318
- // Check for non-2xx responses and treat as failure
319
- if (!response.ok) {
320
- throw new Error(`HTTP ${response.status} ${response.statusText}`);
321
- }
322
- }
323
- catch (err) {
324
- const message = err instanceof Error ? err.message : String(err);
325
- warn(`Notification failed (${webhook.type}): ${message}`);
326
- }
327
- }
328
- /**
329
- * Build a discussion trigger from a notification context, if the event warrants deliberation.
330
- * Returns null when deliberation should not be triggered.
331
- */
332
- function buildDiscussionTrigger(ctx, projectPath) {
333
- if (ctx.event === "run_succeeded" && ctx.prNumber) {
334
- return {
335
- type: "pr_review",
336
- projectPath,
337
- ref: String(ctx.prNumber),
338
- context: ctx.prBody
339
- ? ctx.prBody.slice(0, 2000)
340
- : `PR #${ctx.prNumber}: ${ctx.prTitle ?? ctx.projectName}`,
341
- prUrl: ctx.prUrl,
342
- };
343
- }
344
- return null;
345
- }
346
- /**
347
- * Send notifications to all configured webhooks and (if configured) to Slack via Bot API.
348
- */
349
- export async function sendNotifications(config, ctx) {
350
- const tasks = [];
351
- // Slack Bot API path — additive, controlled by config.slack?.enabled
352
- if (config.slack?.enabled && config.slack?.botToken) {
353
- const slackConfig = config.slack;
354
- const slackClient = new SlackClient(slackConfig.botToken);
355
- // Notification post
356
- tasks.push((async () => {
357
- try {
358
- const repos = getRepositories();
359
- const personas = repos.agentPersona.getActive();
360
- const personaName = getPersonaNameForEvent(ctx.event);
361
- const persona = personas.find((p) => p.name === personaName) ?? personas[0];
362
- if (persona) {
363
- const channel = getChannelForEvent(ctx.event, slackConfig);
364
- if (channel) {
365
- const text = buildNotificationText(ctx);
366
- await slackClient.postAsAgent(channel, text, persona);
367
- }
368
- }
369
- }
370
- catch (err) {
371
- const message = err instanceof Error ? err.message : String(err);
372
- warn(`Slack Bot notification failed: ${message}`);
373
- }
374
- })());
375
- // Deliberation — fire-and-forget, gated by discussionEnabled
376
- if (slackConfig.discussionEnabled) {
377
- const trigger = buildDiscussionTrigger(ctx, process.cwd());
378
- if (trigger) {
379
- tasks.push((async () => {
380
- try {
381
- const engine = new DeliberationEngine(slackClient, config);
382
- await engine.startDiscussion(trigger);
383
- }
384
- catch (err) {
385
- const message = err instanceof Error ? err.message : String(err);
386
- warn(`Slack deliberation failed: ${message}`);
387
- }
388
- })());
389
- }
390
- }
391
- }
392
- // Legacy webhook path — backward compatible
393
- const webhooks = config.notifications?.webhooks ?? [];
394
- for (const wh of webhooks) {
395
- tasks.push(sendWebhook(wh, ctx));
396
- }
397
- if (tasks.length === 0) {
398
- return;
399
- }
400
- const results = await Promise.allSettled(tasks);
401
- const sent = results.filter((r) => r.status === "fulfilled").length;
402
- const total = results.length;
403
- info(`Sent ${sent}/${total} notifications`);
404
- }
405
- //# sourceMappingURL=notify.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"notify.js","sourceRoot":"","sources":["../../../src/utils/notify.ts"],"names":[],"mappings":"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"}
@@ -1,16 +0,0 @@
1
- /**
2
- * PRD state persistence for Night Watch CLI
3
- * Tracks pending-review (and future) PRD states via the SQLite repository layer.
4
- */
5
- export interface IPrdStateEntry {
6
- status: "pending-review";
7
- branch: string;
8
- timestamp: number;
9
- }
10
- export type IPrdStates = Record<string, Record<string, IPrdStateEntry>>;
11
- export declare function readPrdStates(): IPrdStates;
12
- export declare function getPrdStatesForProject(projectDir: string): Record<string, IPrdStateEntry>;
13
- export declare function writePrdState(projectDir: string, prdName: string, entry: IPrdStateEntry): void;
14
- export declare function clearPrdState(projectDir: string, prdName: string): void;
15
- export declare function listPrdStatesByStatus(projectDir: string, status: "pending-review"): string[];
16
- //# sourceMappingURL=prd-states.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"prd-states.d.ts","sourceRoot":"","sources":["../../../src/utils/prd-states.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,gBAAgB,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC;AAExE,wBAAgB,aAAa,IAAI,UAAU,CAG1C;AAED,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAGzF;AAED,wBAAgB,aAAa,CAC3B,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,cAAc,GACpB,IAAI,CAGN;AAED,wBAAgB,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAGvE;AAED,wBAAgB,qBAAqB,CACnC,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,gBAAgB,GACvB,MAAM,EAAE,CAKV"}
@@ -1,28 +0,0 @@
1
- /**
2
- * PRD state persistence for Night Watch CLI
3
- * Tracks pending-review (and future) PRD states via the SQLite repository layer.
4
- */
5
- import { getRepositories } from "../storage/repositories/index.js";
6
- export function readPrdStates() {
7
- const { prdState } = getRepositories();
8
- return prdState.readAll();
9
- }
10
- export function getPrdStatesForProject(projectDir) {
11
- const { prdState } = getRepositories();
12
- return prdState.getAll(projectDir);
13
- }
14
- export function writePrdState(projectDir, prdName, entry) {
15
- const { prdState } = getRepositories();
16
- prdState.set(projectDir, prdName, entry);
17
- }
18
- export function clearPrdState(projectDir, prdName) {
19
- const { prdState } = getRepositories();
20
- prdState.delete(projectDir, prdName);
21
- }
22
- export function listPrdStatesByStatus(projectDir, status) {
23
- const states = getPrdStatesForProject(projectDir);
24
- return Object.entries(states)
25
- .filter(([, entry]) => entry.status === status)
26
- .map(([prdName]) => prdName);
27
- }
28
- //# sourceMappingURL=prd-states.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"prd-states.js","sourceRoot":"","sources":["../../../src/utils/prd-states.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AAUnE,MAAM,UAAU,aAAa;IAC3B,MAAM,EAAE,QAAQ,EAAE,GAAG,eAAe,EAAE,CAAC;IACvC,OAAO,QAAQ,CAAC,OAAO,EAAE,CAAC;AAC5B,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,UAAkB;IACvD,MAAM,EAAE,QAAQ,EAAE,GAAG,eAAe,EAAE,CAAC;IACvC,OAAO,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;AACrC,CAAC;AAED,MAAM,UAAU,aAAa,CAC3B,UAAkB,EAClB,OAAe,EACf,KAAqB;IAErB,MAAM,EAAE,QAAQ,EAAE,GAAG,eAAe,EAAE,CAAC;IACvC,QAAQ,CAAC,GAAG,CAAC,UAAU,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;AAC3C,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,UAAkB,EAAE,OAAe;IAC/D,MAAM,EAAE,QAAQ,EAAE,GAAG,eAAe,EAAE,CAAC;IACvC,QAAQ,CAAC,MAAM,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;AACvC,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,UAAkB,EAClB,MAAwB;IAExB,MAAM,MAAM,GAAG,sBAAsB,CAAC,UAAU,CAAC,CAAC;IAClD,OAAO,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;SAC1B,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,KAAK,MAAM,CAAC;SAC9C,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC;AACjC,CAAC"}
@@ -1,45 +0,0 @@
1
- /**
2
- * Global project registry for Night Watch CLI
3
- * Manages project entries via the SQLite repository layer.
4
- */
5
- import { resetRepositories } from "../storage/repositories/index.js";
6
- import { closeDb } from "../storage/sqlite/client.js";
7
- export interface IRegistryEntry {
8
- name: string;
9
- path: string;
10
- slackChannelId?: string;
11
- }
12
- /**
13
- * Get the path to the global registry file.
14
- * Kept for backward compatibility.
15
- */
16
- export declare function getRegistryPath(): string;
17
- /**
18
- * Load all registry entries from the SQLite repository.
19
- */
20
- export declare function loadRegistry(): IRegistryEntry[];
21
- /**
22
- * Save a full set of registry entries (full replace).
23
- * Deletes all existing entries then upserts each provided entry in a transaction.
24
- */
25
- export declare function saveRegistry(entries: IRegistryEntry[]): void;
26
- /**
27
- * Register a project in the global registry.
28
- * No-op if already registered by path. Returns the entry.
29
- */
30
- export declare function registerProject(projectDir: string): IRegistryEntry;
31
- /**
32
- * Remove a project from the registry by path.
33
- * Returns true if it was found and removed.
34
- */
35
- export declare function unregisterProject(projectDir: string): boolean;
36
- /**
37
- * Validate all registry entries.
38
- * Returns entries split into valid (path + config exist) and invalid.
39
- */
40
- export declare function validateRegistry(): {
41
- valid: IRegistryEntry[];
42
- invalid: IRegistryEntry[];
43
- };
44
- export { closeDb, resetRepositories };
45
- //# sourceMappingURL=registry.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../src/utils/registry.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,OAAO,EAAmB,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AACtF,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAGtD,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;;GAGG;AACH,wBAAgB,eAAe,IAAI,MAAM,CAGxC;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,cAAc,EAAE,CAG/C;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,cAAc,EAAE,GAAG,IAAI,CAM5D;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,cAAc,CAmBlE;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAI7D;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,IAAI;IAAE,KAAK,EAAE,cAAc,EAAE,CAAC;IAAC,OAAO,EAAE,cAAc,EAAE,CAAA;CAAE,CAczF;AAED,OAAO,EAAE,OAAO,EAAE,iBAAiB,EAAE,CAAC"}
@@ -1,86 +0,0 @@
1
- /**
2
- * Global project registry for Night Watch CLI
3
- * Manages project entries via the SQLite repository layer.
4
- */
5
- import * as fs from "fs";
6
- import * as os from "os";
7
- import * as path from "path";
8
- import { CONFIG_FILE_NAME, GLOBAL_CONFIG_DIR, REGISTRY_FILE_NAME } from "../constants.js";
9
- import { getRepositories, resetRepositories } from "../storage/repositories/index.js";
10
- import { closeDb } from "../storage/sqlite/client.js";
11
- import { getProjectName } from "./status-data.js";
12
- /**
13
- * Get the path to the global registry file.
14
- * Kept for backward compatibility.
15
- */
16
- export function getRegistryPath() {
17
- const base = process.env.NIGHT_WATCH_HOME || path.join(os.homedir(), GLOBAL_CONFIG_DIR);
18
- return path.join(base, REGISTRY_FILE_NAME);
19
- }
20
- /**
21
- * Load all registry entries from the SQLite repository.
22
- */
23
- export function loadRegistry() {
24
- const { projectRegistry } = getRepositories();
25
- return projectRegistry.getAll();
26
- }
27
- /**
28
- * Save a full set of registry entries (full replace).
29
- * Deletes all existing entries then upserts each provided entry in a transaction.
30
- */
31
- export function saveRegistry(entries) {
32
- const { projectRegistry } = getRepositories();
33
- projectRegistry.clear();
34
- for (const entry of entries) {
35
- projectRegistry.upsert(entry);
36
- }
37
- }
38
- /**
39
- * Register a project in the global registry.
40
- * No-op if already registered by path. Returns the entry.
41
- */
42
- export function registerProject(projectDir) {
43
- const resolvedPath = path.resolve(projectDir);
44
- const { projectRegistry } = getRepositories();
45
- const entries = projectRegistry.getAll();
46
- const existing = entries.find((e) => e.path === resolvedPath);
47
- if (existing) {
48
- return existing;
49
- }
50
- const name = getProjectName(resolvedPath);
51
- // Handle name collisions by appending directory basename
52
- const nameExists = entries.some((e) => e.name === name);
53
- const finalName = nameExists ? `${name}-${path.basename(resolvedPath)}` : name;
54
- const entry = { name: finalName, path: resolvedPath };
55
- projectRegistry.upsert(entry);
56
- return entry;
57
- }
58
- /**
59
- * Remove a project from the registry by path.
60
- * Returns true if it was found and removed.
61
- */
62
- export function unregisterProject(projectDir) {
63
- const resolvedPath = path.resolve(projectDir);
64
- const { projectRegistry } = getRepositories();
65
- return projectRegistry.remove(resolvedPath);
66
- }
67
- /**
68
- * Validate all registry entries.
69
- * Returns entries split into valid (path + config exist) and invalid.
70
- */
71
- export function validateRegistry() {
72
- const entries = loadRegistry();
73
- const valid = [];
74
- const invalid = [];
75
- for (const entry of entries) {
76
- if (fs.existsSync(entry.path) && fs.existsSync(path.join(entry.path, CONFIG_FILE_NAME))) {
77
- valid.push(entry);
78
- }
79
- else {
80
- invalid.push(entry);
81
- }
82
- }
83
- return { valid, invalid };
84
- }
85
- export { closeDb, resetRepositories };
86
- //# sourceMappingURL=registry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/utils/registry.ts"],"names":[],"mappings":"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"}
@@ -1,45 +0,0 @@
1
- /**
2
- * Roadmap Parser for Night Watch CLI
3
- * Parses ROADMAP.md files into structured items
4
- */
5
- /**
6
- * Represents a single item parsed from ROADMAP.md
7
- */
8
- export interface IRoadmapItem {
9
- /** First 8 chars of SHA-256 hash of lowercase trimmed title */
10
- hash: string;
11
- /** The title/heading of the item */
12
- title: string;
13
- /** Optional description text */
14
- description: string;
15
- /** Whether the item is checked/completed (from - [x] format) */
16
- checked: boolean;
17
- /** Parent section name (from ## heading) */
18
- section: string;
19
- }
20
- /**
21
- * Generate a hash for an item based on its title
22
- * Uses first 8 characters of SHA-256 hash of lowercase trimmed title
23
- */
24
- export declare function generateItemHash(title: string): string;
25
- /**
26
- * Parse ROADMAP.md content into structured items
27
- *
28
- * Supports two formats:
29
- * 1. Checklist format: Lines matching `- [ ] Title` or `- [x] Title`
30
- * with optional description on following indented lines
31
- * 2. Heading format: `### Title` followed by body text (until next heading)
32
- *
33
- * @param content - The raw ROADMAP.md content
34
- * @returns Array of parsed roadmap items
35
- */
36
- export declare function parseRoadmap(content: string): IRoadmapItem[];
37
- /**
38
- * Filter roadmap items to only unchecked items (pending work)
39
- */
40
- export declare function getUncheckedItems(items: IRoadmapItem[]): IRoadmapItem[];
41
- /**
42
- * Group roadmap items by section
43
- */
44
- export declare function groupBySection(items: IRoadmapItem[]): Record<string, IRoadmapItem[]>;
45
- //# sourceMappingURL=roadmap-parser.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"roadmap-parser.d.ts","sourceRoot":"","sources":["../../../src/utils/roadmap-parser.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,+DAA+D;IAC/D,IAAI,EAAE,MAAM,CAAC;IACb,oCAAoC;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,gCAAgC;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,gEAAgE;IAChE,OAAO,EAAE,OAAO,CAAC;IACjB,4CAA4C;IAC5C,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAGtD;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,YAAY,EAAE,CAuD5D;AA4DD;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,YAAY,EAAE,GAAG,YAAY,EAAE,CAEvE;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,YAAY,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,YAAY,EAAE,CAAC,CAWpF"}