@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,12 +1,9 @@
1
1
  /**
2
2
  * Slice command - executes the roadmap slicer to create PRDs from roadmap items
3
3
  */
4
- import { loadConfig } from "../config.js";
5
- import { sendNotifications } from "../utils/notify.js";
6
- import { PROVIDER_COMMANDS } from "../constants.js";
7
- import * as path from "path";
8
- import { createSpinner, createTable, dim, header, info, error as uiError, } from "../utils/ui.js";
9
- import { getRoadmapStatus, sliceNextItem, } from "../utils/roadmap-scanner.js";
4
+ import { PROVIDER_COMMANDS, createSpinner, createTable, dim, getRoadmapStatus, header, info, loadConfig, sendNotifications, sliceNextItem, error as uiError, } from '@night-watch/core';
5
+ import { sendSlackBotNotification } from '@night-watch/slack/notify.js';
6
+ import * as path from 'path';
10
7
  /**
11
8
  * Build environment variables map from config and CLI options for slicer
12
9
  */
@@ -26,10 +23,10 @@ export function buildEnvVars(config, options) {
26
23
  }
27
24
  // Dry run flag
28
25
  if (options.dryRun) {
29
- env.NW_DRY_RUN = "1";
26
+ env.NW_DRY_RUN = '1';
30
27
  }
31
28
  // Sandbox flag - prevents the agent from modifying crontab during execution
32
- env.NW_EXECUTION_CONTEXT = "agent";
29
+ env.NW_EXECUTION_CONTEXT = 'agent';
33
30
  return env;
34
31
  }
35
32
  /**
@@ -56,11 +53,11 @@ export function applyCliOverrides(config, options) {
56
53
  */
57
54
  export function sliceCommand(program) {
58
55
  program
59
- .command("slice")
60
- .description("Run roadmap slicer to create PRD from next roadmap item")
61
- .option("--dry-run", "Show what would be executed without running")
62
- .option("--timeout <seconds>", "Override max runtime in seconds for slicer")
63
- .option("--provider <string>", "AI provider to use (claude or codex)")
56
+ .command('slice')
57
+ .description('Run roadmap slicer to create PRD from next roadmap item')
58
+ .option('--dry-run', 'Show what would be executed without running')
59
+ .option('--timeout <seconds>', 'Override max runtime in seconds for slicer')
60
+ .option('--provider <string>', 'AI provider to use (claude or codex)')
64
61
  .action(async (options) => {
65
62
  // Get the project directory (current working directory)
66
63
  const projectDir = process.cwd();
@@ -71,37 +68,40 @@ export function sliceCommand(program) {
71
68
  // Build environment variables
72
69
  const envVars = buildEnvVars(config, options);
73
70
  if (options.dryRun) {
74
- header("Dry Run: Roadmap Slicer");
71
+ header('Dry Run: Roadmap Slicer');
75
72
  // Configuration section with table
76
- header("Configuration");
77
- const configTable = createTable({ head: ["Setting", "Value"] });
78
- configTable.push(["Provider", config.provider]);
79
- configTable.push(["Provider CLI", PROVIDER_COMMANDS[config.provider]]);
80
- configTable.push(["PRD Directory", config.prdDir]);
81
- configTable.push(["Roadmap Path", config.roadmapScanner.roadmapPath]);
82
- configTable.push(["Slicer Max Runtime", `${config.roadmapScanner.slicerMaxRuntime}s (${Math.floor(config.roadmapScanner.slicerMaxRuntime / 60)}min)`]);
83
- configTable.push(["Slicer Schedule", config.roadmapScanner.slicerSchedule]);
84
- configTable.push(["Scanner Enabled", config.roadmapScanner.enabled ? "Yes" : "No"]);
73
+ header('Configuration');
74
+ const configTable = createTable({ head: ['Setting', 'Value'] });
75
+ configTable.push(['Provider', config.provider]);
76
+ configTable.push(['Provider CLI', PROVIDER_COMMANDS[config.provider]]);
77
+ configTable.push(['PRD Directory', config.prdDir]);
78
+ configTable.push(['Roadmap Path', config.roadmapScanner.roadmapPath]);
79
+ configTable.push([
80
+ 'Slicer Max Runtime',
81
+ `${config.roadmapScanner.slicerMaxRuntime}s (${Math.floor(config.roadmapScanner.slicerMaxRuntime / 60)}min)`,
82
+ ]);
83
+ configTable.push(['Slicer Schedule', config.roadmapScanner.slicerSchedule]);
84
+ configTable.push(['Scanner Enabled', config.roadmapScanner.enabled ? 'Yes' : 'No']);
85
85
  console.log(configTable.toString());
86
86
  // Get roadmap status
87
- header("Roadmap Status");
87
+ header('Roadmap Status');
88
88
  const roadmapStatus = getRoadmapStatus(projectDir, config);
89
89
  if (!config.roadmapScanner.enabled) {
90
- dim(" Roadmap scanner is disabled");
90
+ dim(' Roadmap scanner is disabled');
91
91
  }
92
- else if (roadmapStatus.status === "no-roadmap") {
92
+ else if (roadmapStatus.status === 'no-roadmap') {
93
93
  dim(` ROADMAP.md not found at ${config.roadmapScanner.roadmapPath}`);
94
94
  }
95
95
  else {
96
- const statusTable = createTable({ head: ["Metric", "Count"] });
97
- statusTable.push(["Total Items", roadmapStatus.totalItems]);
98
- statusTable.push(["Processed", roadmapStatus.processedItems]);
99
- statusTable.push(["Pending", roadmapStatus.pendingItems]);
100
- statusTable.push(["Status", roadmapStatus.status]);
96
+ const statusTable = createTable({ head: ['Metric', 'Count'] });
97
+ statusTable.push(['Total Items', roadmapStatus.totalItems]);
98
+ statusTable.push(['Processed', roadmapStatus.processedItems]);
99
+ statusTable.push(['Pending', roadmapStatus.pendingItems]);
100
+ statusTable.push(['Status', roadmapStatus.status]);
101
101
  console.log(statusTable.toString());
102
102
  // Show pending items
103
103
  if (roadmapStatus.pendingItems > 0) {
104
- header("Pending Items");
104
+ header('Pending Items');
105
105
  const pendingItems = roadmapStatus.items.filter((item) => !item.processed && !item.checked);
106
106
  for (const item of pendingItems.slice(0, 10)) {
107
107
  info(` - ${item.title}`);
@@ -115,28 +115,28 @@ export function sliceCommand(program) {
115
115
  }
116
116
  }
117
117
  // Provider invocation command
118
- header("Provider Invocation");
118
+ header('Provider Invocation');
119
119
  const providerCmd = PROVIDER_COMMANDS[config.provider];
120
- const autoFlag = config.provider === "claude" ? "--dangerously-skip-permissions" : "--yolo";
120
+ const autoFlag = config.provider === 'claude' ? '--dangerously-skip-permissions' : '--yolo';
121
121
  dim(` ${providerCmd} ${autoFlag} -p "/night-watch-slicer"`);
122
122
  // Environment variables
123
- header("Environment Variables");
123
+ header('Environment Variables');
124
124
  for (const [key, value] of Object.entries(envVars)) {
125
125
  dim(` ${key}=${value}`);
126
126
  }
127
127
  // Full command that would be executed
128
- header("Action");
129
- dim(" Would invoke sliceNextItem() to process one roadmap item");
128
+ header('Action');
129
+ dim(' Would invoke sliceNextItem() to process one roadmap item');
130
130
  console.log();
131
131
  process.exit(0);
132
132
  }
133
133
  // Check if roadmap scanner is enabled
134
134
  if (!config.roadmapScanner.enabled) {
135
- uiError("Roadmap scanner is disabled. Enable it in night-watch.config.json to use the slicer.");
135
+ uiError('Roadmap scanner is disabled. Enable it in night-watch.config.json to use the slicer.');
136
136
  process.exit(1);
137
137
  }
138
138
  // Execute the slicer with spinner
139
- const spinner = createSpinner("Running roadmap slicer...");
139
+ const spinner = createSpinner('Running roadmap slicer...');
140
140
  spinner.start();
141
141
  try {
142
142
  const result = await sliceNextItem(projectDir, config);
@@ -144,29 +144,33 @@ export function sliceCommand(program) {
144
144
  spinner.succeed(`Slicer completed successfully: Created ${result.file}`);
145
145
  }
146
146
  else if (result.error) {
147
- if (result.error === "No pending items to process") {
148
- spinner.succeed("No pending items to process");
147
+ if (result.error === 'No pending items to process') {
148
+ spinner.succeed('No pending items to process');
149
149
  }
150
150
  else {
151
151
  spinner.fail(`Slicer failed: ${result.error}`);
152
152
  }
153
153
  }
154
154
  // Send notifications (fire-and-forget, failures do not affect exit code)
155
- const exitCode = result.sliced ? 0 : (result.error === "No pending items to process" ? 0 : 1);
155
+ const exitCode = result.sliced ? 0 : result.error === 'No pending items to process' ? 0 : 1;
156
156
  if (!options.dryRun && result.sliced) {
157
- const event = "run_succeeded";
158
- await sendNotifications(config, {
157
+ const event = 'run_succeeded';
158
+ const _sliceCtx = {
159
159
  event,
160
160
  projectName: path.basename(projectDir),
161
161
  exitCode,
162
162
  provider: config.provider,
163
163
  prTitle: result.item?.title,
164
- });
164
+ };
165
+ await Promise.allSettled([
166
+ sendNotifications(config, _sliceCtx),
167
+ sendSlackBotNotification(config, _sliceCtx),
168
+ ]);
165
169
  }
166
170
  process.exit(exitCode);
167
171
  }
168
172
  catch (err) {
169
- spinner.fail("Failed to execute slice command");
173
+ spinner.fail('Failed to execute slice command');
170
174
  uiError(`${err instanceof Error ? err.message : String(err)}`);
171
175
  process.exit(1);
172
176
  }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"slice.js","sourceRoot":"","sources":["../../src/commands/slice.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,6 @@
3
3
  * Provides the `night-watch state migrate` subcommand for migrating
4
4
  * legacy JSON state files into the SQLite backend.
5
5
  */
6
- import { Command } from "commander";
6
+ import { Command } from 'commander';
7
7
  export declare function createStateCommand(): Command;
8
8
  //# sourceMappingURL=state.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../src/commands/state.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,wBAAgB,kBAAkB,IAAI,OAAO,CAqD5C"}
@@ -3,33 +3,31 @@
3
3
  * Provides the `night-watch state migrate` subcommand for migrating
4
4
  * legacy JSON state files into the SQLite backend.
5
5
  */
6
- import * as os from "os";
7
- import * as path from "path";
8
- import chalk from "chalk";
9
- import { Command } from "commander";
10
- import { GLOBAL_CONFIG_DIR } from "../constants.js";
11
- import { migrateJsonToSqlite } from "../storage/json-state-migrator.js";
6
+ import * as os from 'os';
7
+ import * as path from 'path';
8
+ import chalk from 'chalk';
9
+ import { Command } from 'commander';
10
+ import { GLOBAL_CONFIG_DIR, migrateJsonToSqlite } from '@night-watch/core';
12
11
  export function createStateCommand() {
13
- const state = new Command("state");
14
- state.description("Manage Night Watch state");
12
+ const state = new Command('state');
13
+ state.description('Manage Night Watch state');
15
14
  state
16
- .command("migrate")
17
- .description("Migrate legacy JSON state files to SQLite")
18
- .option("--dry-run", "Show what would be migrated without making changes")
15
+ .command('migrate')
16
+ .description('Migrate legacy JSON state files to SQLite')
17
+ .option('--dry-run', 'Show what would be migrated without making changes')
19
18
  .action((opts) => {
20
- const nightWatchHome = process.env.NIGHT_WATCH_HOME ||
21
- path.join(os.homedir(), GLOBAL_CONFIG_DIR);
19
+ const nightWatchHome = process.env.NIGHT_WATCH_HOME || path.join(os.homedir(), GLOBAL_CONFIG_DIR);
22
20
  if (opts.dryRun) {
23
- console.log(chalk.cyan("Dry-run mode: no changes will be made.\n"));
21
+ console.log(chalk.cyan('Dry-run mode: no changes will be made.\n'));
24
22
  console.log(`Legacy JSON files that would be migrated from: ${chalk.bold(nightWatchHome)}`);
25
- console.log(` ${path.join(nightWatchHome, "projects.json")}`);
26
- console.log(` ${path.join(nightWatchHome, "history.json")}`);
27
- console.log(` ${path.join(nightWatchHome, "prd-states.json")}`);
23
+ console.log(` ${path.join(nightWatchHome, 'projects.json')}`);
24
+ console.log(` ${path.join(nightWatchHome, 'history.json')}`);
25
+ console.log(` ${path.join(nightWatchHome, 'prd-states.json')}`);
28
26
  console.log(` <project>/<prdDir>/.roadmap-state.json (per project)`);
29
- console.log(chalk.dim("\nRun without --dry-run to apply the migration."));
27
+ console.log(chalk.dim('\nRun without --dry-run to apply the migration.'));
30
28
  return;
31
29
  }
32
- console.log(chalk.cyan("Migrating legacy JSON state to SQLite...\n"));
30
+ console.log(chalk.cyan('Migrating legacy JSON state to SQLite...\n'));
33
31
  let result;
34
32
  try {
35
33
  result = migrateJsonToSqlite(nightWatchHome);
@@ -40,11 +38,11 @@ export function createStateCommand() {
40
38
  process.exit(1);
41
39
  }
42
40
  if (result.alreadyMigrated) {
43
- console.log(chalk.yellow("Migration already completed previously. Nothing to do."));
41
+ console.log(chalk.yellow('Migration already completed previously. Nothing to do.'));
44
42
  return;
45
43
  }
46
- console.log(chalk.green("Migration complete.\n"));
47
- console.log(chalk.bold("Summary:"));
44
+ console.log(chalk.green('Migration complete.\n'));
45
+ console.log(chalk.bold('Summary:'));
48
46
  console.log(` Projects migrated: ${chalk.cyan(String(result.projectsMigrated))}`);
49
47
  console.log(` History records migrated: ${chalk.cyan(String(result.historyRecordsMigrated))}`);
50
48
  console.log(` PRD states migrated: ${chalk.cyan(String(result.prdStatesMigrated))}`);
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state.js","sourceRoot":"","sources":["../../src/commands/state.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,7 @@
2
2
  * Status command for Night Watch CLI
3
3
  * Shows current status including lock files, PRDs, PRs, and logs
4
4
  */
5
- import { Command } from "commander";
5
+ import { Command } from 'commander';
6
6
  export interface IStatusOptions {
7
7
  verbose?: boolean;
8
8
  json?: boolean;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAYpC,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAwDD;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAkKpD"}
@@ -2,18 +2,16 @@
2
2
  * Status command for Night Watch CLI
3
3
  * Shows current status including lock files, PRDs, PRs, and logs
4
4
  */
5
- import chalk from "chalk";
6
- import { loadConfig } from "../config.js";
7
- import { fetchStatusSnapshot, } from "../utils/status-data.js";
8
- import { createTable, dim, formatInstalledStatus, formatRunningStatus, header, } from "../utils/ui.js";
5
+ import chalk from 'chalk';
6
+ import { createTable, dim, fetchStatusSnapshot, formatInstalledStatus, formatRunningStatus, header, loadConfig, } from '@night-watch/core';
9
7
  /**
10
8
  * Format bytes to human-readable size
11
9
  */
12
10
  function formatBytes(bytes) {
13
11
  if (bytes === 0)
14
- return "0 B";
12
+ return '0 B';
15
13
  const k = 1024;
16
- const sizes = ["B", "KB", "MB", "GB"];
14
+ const sizes = ['B', 'KB', 'MB', 'GB'];
17
15
  const i = Math.floor(Math.log(bytes) / Math.log(k));
18
16
  return `${parseFloat((bytes / Math.pow(k, i)).toFixed(1))} ${sizes[i]}`;
19
17
  }
@@ -22,23 +20,23 @@ function formatBytes(bytes) {
22
20
  */
23
21
  export function statusCommand(program) {
24
22
  program
25
- .command("status")
26
- .description("Show current night-watch status")
27
- .option("-v, --verbose", "Show detailed status information")
28
- .option("--json", "Output status as JSON")
23
+ .command('status')
24
+ .description('Show current night-watch status')
25
+ .option('-v, --verbose', 'Show detailed status information')
26
+ .option('--json', 'Output status as JSON')
29
27
  .action(async (options) => {
30
28
  try {
31
29
  const projectDir = process.cwd();
32
30
  const config = loadConfig(projectDir);
33
31
  const snapshot = fetchStatusSnapshot(projectDir, config);
34
32
  // Derive legacy status shape from snapshot for backward-compatible JSON output
35
- const executorProc = snapshot.processes.find((p) => p.name === "executor");
36
- const reviewerProc = snapshot.processes.find((p) => p.name === "reviewer");
37
- const executorLog = snapshot.logs.find((l) => l.name === "executor");
38
- const reviewerLog = snapshot.logs.find((l) => l.name === "reviewer");
39
- const pendingPrds = snapshot.prds.filter((p) => p.status === "ready" || p.status === "blocked").length;
40
- const claimedPrds = snapshot.prds.filter((p) => p.status === "in-progress").length;
41
- const donePrds = snapshot.prds.filter((p) => p.status === "done").length;
33
+ const executorProc = snapshot.processes.find((p) => p.name === 'executor');
34
+ const reviewerProc = snapshot.processes.find((p) => p.name === 'reviewer');
35
+ const executorLog = snapshot.logs.find((l) => l.name === 'executor');
36
+ const reviewerLog = snapshot.logs.find((l) => l.name === 'reviewer');
37
+ const pendingPrds = snapshot.prds.filter((p) => p.status === 'ready' || p.status === 'blocked').length;
38
+ const claimedPrds = snapshot.prds.filter((p) => p.status === 'in-progress').length;
39
+ const donePrds = snapshot.prds.filter((p) => p.status === 'done').length;
42
40
  const status = {
43
41
  projectName: snapshot.projectName,
44
42
  projectDir: snapshot.projectDir,
@@ -52,8 +50,22 @@ export function statusCommand(program) {
52
50
  prs: { open: snapshot.prs.length },
53
51
  crontab: snapshot.crontab,
54
52
  logs: {
55
- executor: executorLog ? { path: executorLog.path, lastLines: executorLog.lastLines, exists: executorLog.exists, size: executorLog.size } : undefined,
56
- reviewer: reviewerLog ? { path: reviewerLog.path, lastLines: reviewerLog.lastLines, exists: reviewerLog.exists, size: reviewerLog.size } : undefined,
53
+ executor: executorLog
54
+ ? {
55
+ path: executorLog.path,
56
+ lastLines: executorLog.lastLines,
57
+ exists: executorLog.exists,
58
+ size: executorLog.size,
59
+ }
60
+ : undefined,
61
+ reviewer: reviewerLog
62
+ ? {
63
+ path: reviewerLog.path,
64
+ lastLines: reviewerLog.lastLines,
65
+ exists: reviewerLog.exists,
66
+ size: reviewerLog.size,
67
+ }
68
+ : undefined,
57
69
  },
58
70
  };
59
71
  // Output as JSON if requested
@@ -64,78 +76,87 @@ export function statusCommand(program) {
64
76
  // Print formatted status dashboard
65
77
  console.log();
66
78
  console.log(chalk.bold.cyan(`Night Watch Status: ${status.projectName}`));
67
- console.log(chalk.dim("".repeat(40)));
79
+ console.log(chalk.dim(''.repeat(40)));
68
80
  console.log();
69
81
  dim(`Project Directory: ${status.projectDir}`);
70
82
  // Configuration section with table
71
- header("Configuration");
72
- const configTable = createTable({ head: ["Setting", "Value"] });
73
- configTable.push(["Provider", status.provider]);
74
- configTable.push(["Reviewer", status.reviewerEnabled ? "Enabled" : "Disabled"]);
75
- configTable.push(["Auto-merge", status.autoMerge ? `Enabled (${status.autoMergeMethod})` : "Disabled"]);
83
+ header('Configuration');
84
+ const configTable = createTable({ head: ['Setting', 'Value'] });
85
+ configTable.push(['Provider', status.provider]);
86
+ configTable.push(['Reviewer', status.reviewerEnabled ? 'Enabled' : 'Disabled']);
87
+ configTable.push([
88
+ 'Auto-merge',
89
+ status.autoMerge ? `Enabled (${status.autoMergeMethod})` : 'Disabled',
90
+ ]);
76
91
  console.log(configTable.toString());
77
92
  // Process status section with colored indicators
78
- header("Process Status");
79
- const processTable = createTable({ head: ["Process", "Status"] });
80
- processTable.push(["Executor", formatRunningStatus(status.executor.running, status.executor.pid)]);
81
- processTable.push(["Reviewer", formatRunningStatus(status.reviewer.running, status.reviewer.pid)]);
93
+ header('Process Status');
94
+ const processTable = createTable({ head: ['Process', 'Status'] });
95
+ processTable.push([
96
+ 'Executor',
97
+ formatRunningStatus(status.executor.running, status.executor.pid),
98
+ ]);
99
+ processTable.push([
100
+ 'Reviewer',
101
+ formatRunningStatus(status.reviewer.running, status.reviewer.pid),
102
+ ]);
82
103
  console.log(processTable.toString());
83
104
  // PRD status section with table
84
- header("PRD Status");
85
- const prdTable = createTable({ head: ["Status", "Count"] });
86
- prdTable.push(["Pending", String(status.prds.pending)]);
87
- prdTable.push(["Claimed", String(status.prds.claimed)]);
88
- prdTable.push(["Completed", String(status.prds.done)]);
105
+ header('PRD Status');
106
+ const prdTable = createTable({ head: ['Status', 'Count'] });
107
+ prdTable.push(['Pending', String(status.prds.pending)]);
108
+ prdTable.push(['Claimed', String(status.prds.claimed)]);
109
+ prdTable.push(['Completed', String(status.prds.done)]);
89
110
  console.log(prdTable.toString());
90
111
  // PR status section with table
91
- header("PR Status");
92
- const prTable = createTable({ head: ["Type", "Count"] });
93
- prTable.push(["Open PRs (night-watch/feat branches)", String(status.prs.open)]);
112
+ header('PR Status');
113
+ const prTable = createTable({ head: ['Type', 'Count'] });
114
+ prTable.push(['Open PRs (night-watch/feat branches)', String(status.prs.open)]);
94
115
  console.log(prTable.toString());
95
116
  // Crontab status section with colored output
96
- header("Crontab Status");
117
+ header('Crontab Status');
97
118
  console.log(` ${formatInstalledStatus(status.crontab.installed)}`);
98
119
  if (status.crontab.installed && options.verbose) {
99
120
  console.log();
100
- dim(" Entries:");
121
+ dim(' Entries:');
101
122
  status.crontab.entries.forEach((entry) => dim(` ${entry}`));
102
123
  }
103
124
  console.log();
104
125
  // Log status section with table
105
- header("Log Files");
106
- const logTable = createTable({ head: ["Log", "Size", "Status"] });
126
+ header('Log Files');
127
+ const logTable = createTable({ head: ['Log', 'Size', 'Status'] });
107
128
  if (status.logs.executor) {
108
129
  logTable.push([
109
- "Executor",
110
- status.logs.executor.exists ? formatBytes(status.logs.executor.size) : "-",
111
- status.logs.executor.exists ? "Exists" : "Not found",
130
+ 'Executor',
131
+ status.logs.executor.exists ? formatBytes(status.logs.executor.size) : '-',
132
+ status.logs.executor.exists ? 'Exists' : 'Not found',
112
133
  ]);
113
134
  }
114
135
  if (status.logs.reviewer) {
115
136
  logTable.push([
116
- "Reviewer",
117
- status.logs.reviewer.exists ? formatBytes(status.logs.reviewer.size) : "-",
118
- status.logs.reviewer.exists ? "Exists" : "Not found",
137
+ 'Reviewer',
138
+ status.logs.reviewer.exists ? formatBytes(status.logs.reviewer.size) : '-',
139
+ status.logs.reviewer.exists ? 'Exists' : 'Not found',
119
140
  ]);
120
141
  }
121
142
  console.log(logTable.toString());
122
143
  // Show last lines in verbose mode
123
144
  if (options.verbose) {
124
145
  if (status.logs.executor?.exists && status.logs.executor.lastLines.length > 0) {
125
- dim(" Executor last 5 lines:");
146
+ dim(' Executor last 5 lines:');
126
147
  status.logs.executor.lastLines.forEach((line) => dim(` ${line}`));
127
148
  }
128
149
  if (status.logs.reviewer?.exists && status.logs.reviewer.lastLines.length > 0) {
129
- dim(" Reviewer last 5 lines:");
150
+ dim(' Reviewer last 5 lines:');
130
151
  status.logs.reviewer.lastLines.forEach((line) => dim(` ${line}`));
131
152
  }
132
153
  }
133
154
  // Tips section with dim styling
134
- header("Commands");
135
- dim(" night-watch install - Install crontab entries");
136
- dim(" night-watch logs - View logs");
137
- dim(" night-watch run - Run executor now");
138
- dim(" night-watch review - Run reviewer now");
155
+ header('Commands');
156
+ dim(' night-watch install - Install crontab entries');
157
+ dim(' night-watch logs - View logs');
158
+ dim(' night-watch run - Run executor now');
159
+ dim(' night-watch review - Run reviewer now');
139
160
  console.log();
140
161
  }
141
162
  catch (error) {
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,7 @@
2
2
  * Uninstall command for Night Watch CLI
3
3
  * Removes crontab entries for the current project
4
4
  */
5
- import { Command } from "commander";
5
+ import { Command } from 'commander';
6
6
  export interface IUninstallOptions {
7
7
  keepLogs?: boolean;
8
8
  }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uninstall.d.ts","sourceRoot":"","sources":["../../src/commands/uninstall.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAepC,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE;IAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,GAC/B,gBAAgB,CA4ClB;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA0EvD"}
@@ -2,11 +2,9 @@
2
2
  * Uninstall command for Night Watch CLI
3
3
  * Removes crontab entries for the current project
4
4
  */
5
- import * as path from "path";
6
- import * as fs from "fs";
7
- import { generateMarker, getEntries, getProjectEntries, removeEntriesForProject, } from "../utils/crontab.js";
8
- import { dim, success, error as uiError, warn, } from "../utils/ui.js";
9
- import { getProjectName } from "../utils/status-data.js";
5
+ import * as path from 'path';
6
+ import * as fs from 'fs';
7
+ import { dim, generateMarker, getEntries, getProjectEntries, getProjectName, removeEntriesForProject, success, error as uiError, warn, } from '@night-watch/core';
10
8
  /**
11
9
  * Core uninstall logic, reusable from dashboard.
12
10
  * Returns result without printing to console.
@@ -21,9 +19,9 @@ export function performUninstall(projectDir, options) {
21
19
  }
22
20
  const removedCount = removeEntriesForProject(projectDir, marker);
23
21
  if (!options?.keepLogs) {
24
- const logDir = path.join(projectDir, "logs");
22
+ const logDir = path.join(projectDir, 'logs');
25
23
  if (fs.existsSync(logDir)) {
26
- const logFiles = ["executor.log", "reviewer.log", "slicer.log", "audit.log"];
24
+ const logFiles = ['executor.log', 'reviewer.log', 'slicer.log', 'audit.log'];
27
25
  logFiles.forEach((logFile) => {
28
26
  const logPath = path.join(logDir, logFile);
29
27
  if (fs.existsSync(logPath)) {
@@ -56,9 +54,9 @@ export function performUninstall(projectDir, options) {
56
54
  */
57
55
  export function uninstallCommand(program) {
58
56
  program
59
- .command("uninstall")
60
- .description("Remove crontab entries")
61
- .option("--keep-logs", "Preserve log files")
57
+ .command('uninstall')
58
+ .description('Remove crontab entries')
59
+ .option('--keep-logs', 'Preserve log files')
62
60
  .action(async (options) => {
63
61
  try {
64
62
  // Get project directory
@@ -70,7 +68,7 @@ export function uninstallCommand(program) {
70
68
  const existingEntries = Array.from(new Set([...getEntries(marker), ...getProjectEntries(projectDir)]));
71
69
  if (existingEntries.length === 0) {
72
70
  warn(`No Night Watch crontab entries found for ${projectName}.`);
73
- dim("Nothing to uninstall.");
71
+ dim('Nothing to uninstall.');
74
72
  return;
75
73
  }
76
74
  // Show entries that will be removed
@@ -80,9 +78,9 @@ export function uninstallCommand(program) {
80
78
  const removedCount = removeEntriesForProject(projectDir, marker);
81
79
  // Handle log files
82
80
  if (!options.keepLogs) {
83
- const logDir = path.join(projectDir, "logs");
81
+ const logDir = path.join(projectDir, 'logs');
84
82
  if (fs.existsSync(logDir)) {
85
- const logFiles = ["executor.log", "reviewer.log", "slicer.log", "audit.log"];
83
+ const logFiles = ['executor.log', 'reviewer.log', 'slicer.log', 'audit.log'];
86
84
  let logsRemoved = 0;
87
85
  logFiles.forEach((logFile) => {
88
86
  const logPath = path.join(logDir, logFile);
@@ -109,7 +107,7 @@ export function uninstallCommand(program) {
109
107
  }
110
108
  else {
111
109
  console.log();
112
- dim("Log files preserved.");
110
+ dim('Log files preserved.');
113
111
  }
114
112
  success(`Successfully removed ${removedCount} crontab entry/entries.`);
115
113
  }