@jonit-dev/night-watch-cli 1.7.17 → 1.7.19

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 (264) hide show
  1. package/bin/night-watch.mjs +1 -1
  2. package/dist/src/cli.js +13 -4
  3. package/dist/src/cli.js.map +1 -1
  4. package/dist/src/server/index.d.ts.map +1 -1
  5. package/dist/src/server/index.js +12 -1
  6. package/dist/src/server/index.js.map +1 -1
  7. package/package.json +1 -1
  8. package/web/dist/assets/index-DOzZY27d.js +473 -0
  9. package/web/dist/assets/index-w6Q6gxCS.css +1 -0
  10. package/web/dist/index.html +2 -2
  11. package/dist/board/factory.d.ts +0 -3
  12. package/dist/board/factory.d.ts.map +0 -1
  13. package/dist/board/factory.js +0 -10
  14. package/dist/board/factory.js.map +0 -1
  15. package/dist/board/providers/github-graphql.d.ts +0 -16
  16. package/dist/board/providers/github-graphql.d.ts.map +0 -1
  17. package/dist/board/providers/github-graphql.js +0 -43
  18. package/dist/board/providers/github-graphql.js.map +0 -1
  19. package/dist/board/providers/github-projects.d.ts +0 -51
  20. package/dist/board/providers/github-projects.d.ts.map +0 -1
  21. package/dist/board/providers/github-projects.js +0 -672
  22. package/dist/board/providers/github-projects.js.map +0 -1
  23. package/dist/board/types.d.ts +0 -60
  24. package/dist/board/types.d.ts.map +0 -1
  25. package/dist/board/types.js +0 -4
  26. package/dist/board/types.js.map +0 -1
  27. package/dist/cli.d.ts +0 -3
  28. package/dist/cli.d.ts.map +0 -1
  29. package/dist/cli.js +0 -80
  30. package/dist/cli.js.map +0 -1
  31. package/dist/commands/board.d.ts +0 -9
  32. package/dist/commands/board.d.ts.map +0 -1
  33. package/dist/commands/board.js +0 -294
  34. package/dist/commands/board.js.map +0 -1
  35. package/dist/commands/cancel.d.ts +0 -46
  36. package/dist/commands/cancel.d.ts.map +0 -1
  37. package/dist/commands/cancel.js +0 -241
  38. package/dist/commands/cancel.js.map +0 -1
  39. package/dist/commands/dashboard/tab-actions.d.ts +0 -10
  40. package/dist/commands/dashboard/tab-actions.d.ts.map +0 -1
  41. package/dist/commands/dashboard/tab-actions.js +0 -245
  42. package/dist/commands/dashboard/tab-actions.js.map +0 -1
  43. package/dist/commands/dashboard/tab-config.d.ts +0 -21
  44. package/dist/commands/dashboard/tab-config.d.ts.map +0 -1
  45. package/dist/commands/dashboard/tab-config.js +0 -829
  46. package/dist/commands/dashboard/tab-config.js.map +0 -1
  47. package/dist/commands/dashboard/tab-logs.d.ts +0 -10
  48. package/dist/commands/dashboard/tab-logs.d.ts.map +0 -1
  49. package/dist/commands/dashboard/tab-logs.js +0 -178
  50. package/dist/commands/dashboard/tab-logs.js.map +0 -1
  51. package/dist/commands/dashboard/tab-schedules.d.ts +0 -21
  52. package/dist/commands/dashboard/tab-schedules.d.ts.map +0 -1
  53. package/dist/commands/dashboard/tab-schedules.js +0 -304
  54. package/dist/commands/dashboard/tab-schedules.js.map +0 -1
  55. package/dist/commands/dashboard/tab-status.d.ts +0 -32
  56. package/dist/commands/dashboard/tab-status.d.ts.map +0 -1
  57. package/dist/commands/dashboard/tab-status.js +0 -421
  58. package/dist/commands/dashboard/tab-status.js.map +0 -1
  59. package/dist/commands/dashboard/types.d.ts +0 -43
  60. package/dist/commands/dashboard/types.d.ts.map +0 -1
  61. package/dist/commands/dashboard/types.js +0 -5
  62. package/dist/commands/dashboard/types.js.map +0 -1
  63. package/dist/commands/dashboard.d.ts +0 -11
  64. package/dist/commands/dashboard.d.ts.map +0 -1
  65. package/dist/commands/dashboard.js +0 -239
  66. package/dist/commands/dashboard.js.map +0 -1
  67. package/dist/commands/doctor.d.ts +0 -16
  68. package/dist/commands/doctor.d.ts.map +0 -1
  69. package/dist/commands/doctor.js +0 -202
  70. package/dist/commands/doctor.js.map +0 -1
  71. package/dist/commands/history.d.ts +0 -7
  72. package/dist/commands/history.d.ts.map +0 -1
  73. package/dist/commands/history.js +0 -56
  74. package/dist/commands/history.js.map +0 -1
  75. package/dist/commands/init.d.ts +0 -25
  76. package/dist/commands/init.d.ts.map +0 -1
  77. package/dist/commands/init.js +0 -534
  78. package/dist/commands/init.js.map +0 -1
  79. package/dist/commands/install.d.ts +0 -48
  80. package/dist/commands/install.d.ts.map +0 -1
  81. package/dist/commands/install.js +0 -303
  82. package/dist/commands/install.js.map +0 -1
  83. package/dist/commands/logs.d.ts +0 -15
  84. package/dist/commands/logs.d.ts.map +0 -1
  85. package/dist/commands/logs.js +0 -104
  86. package/dist/commands/logs.js.map +0 -1
  87. package/dist/commands/prd-state.d.ts +0 -12
  88. package/dist/commands/prd-state.d.ts.map +0 -1
  89. package/dist/commands/prd-state.js +0 -47
  90. package/dist/commands/prd-state.js.map +0 -1
  91. package/dist/commands/prd.d.ts +0 -24
  92. package/dist/commands/prd.d.ts.map +0 -1
  93. package/dist/commands/prd.js +0 -283
  94. package/dist/commands/prd.js.map +0 -1
  95. package/dist/commands/prds.d.ts +0 -13
  96. package/dist/commands/prds.d.ts.map +0 -1
  97. package/dist/commands/prds.js +0 -196
  98. package/dist/commands/prds.js.map +0 -1
  99. package/dist/commands/prs.d.ts +0 -14
  100. package/dist/commands/prs.d.ts.map +0 -1
  101. package/dist/commands/prs.js +0 -106
  102. package/dist/commands/prs.js.map +0 -1
  103. package/dist/commands/qa.d.ts +0 -30
  104. package/dist/commands/qa.d.ts.map +0 -1
  105. package/dist/commands/qa.js +0 -159
  106. package/dist/commands/qa.js.map +0 -1
  107. package/dist/commands/retry.d.ts +0 -9
  108. package/dist/commands/retry.d.ts.map +0 -1
  109. package/dist/commands/retry.js +0 -72
  110. package/dist/commands/retry.js.map +0 -1
  111. package/dist/commands/review.d.ts +0 -35
  112. package/dist/commands/review.d.ts.map +0 -1
  113. package/dist/commands/review.js +0 -252
  114. package/dist/commands/review.js.map +0 -1
  115. package/dist/commands/run.d.ts +0 -61
  116. package/dist/commands/run.d.ts.map +0 -1
  117. package/dist/commands/run.js +0 -364
  118. package/dist/commands/run.js.map +0 -1
  119. package/dist/commands/serve.d.ts +0 -7
  120. package/dist/commands/serve.d.ts.map +0 -1
  121. package/dist/commands/serve.js +0 -27
  122. package/dist/commands/serve.js.map +0 -1
  123. package/dist/commands/slice.d.ts +0 -26
  124. package/dist/commands/slice.d.ts.map +0 -1
  125. package/dist/commands/slice.js +0 -175
  126. package/dist/commands/slice.js.map +0 -1
  127. package/dist/commands/state.d.ts +0 -8
  128. package/dist/commands/state.d.ts.map +0 -1
  129. package/dist/commands/state.js +0 -56
  130. package/dist/commands/state.js.map +0 -1
  131. package/dist/commands/status.d.ts +0 -14
  132. package/dist/commands/status.d.ts.map +0 -1
  133. package/dist/commands/status.js +0 -147
  134. package/dist/commands/status.js.map +0 -1
  135. package/dist/commands/uninstall.d.ts +0 -25
  136. package/dist/commands/uninstall.d.ts.map +0 -1
  137. package/dist/commands/uninstall.js +0 -141
  138. package/dist/commands/uninstall.js.map +0 -1
  139. package/dist/commands/update.d.ts +0 -21
  140. package/dist/commands/update.d.ts.map +0 -1
  141. package/dist/commands/update.js +0 -87
  142. package/dist/commands/update.js.map +0 -1
  143. package/dist/config.d.ts +0 -23
  144. package/dist/config.d.ts.map +0 -1
  145. package/dist/config.js +0 -601
  146. package/dist/config.js.map +0 -1
  147. package/dist/constants.d.ts +0 -59
  148. package/dist/constants.d.ts.map +0 -1
  149. package/dist/constants.js +0 -110
  150. package/dist/constants.js.map +0 -1
  151. package/dist/server/index.d.ts +0 -23
  152. package/dist/server/index.d.ts.map +0 -1
  153. package/dist/server/index.js +0 -1074
  154. package/dist/server/index.js.map +0 -1
  155. package/dist/storage/json-state-migrator.d.ts +0 -24
  156. package/dist/storage/json-state-migrator.d.ts.map +0 -1
  157. package/dist/storage/json-state-migrator.js +0 -197
  158. package/dist/storage/json-state-migrator.js.map +0 -1
  159. package/dist/storage/repositories/index.d.ts +0 -23
  160. package/dist/storage/repositories/index.d.ts.map +0 -1
  161. package/dist/storage/repositories/index.js +0 -37
  162. package/dist/storage/repositories/index.js.map +0 -1
  163. package/dist/storage/repositories/interfaces.d.ts +0 -37
  164. package/dist/storage/repositories/interfaces.d.ts.map +0 -1
  165. package/dist/storage/repositories/interfaces.js +0 -6
  166. package/dist/storage/repositories/interfaces.js.map +0 -1
  167. package/dist/storage/repositories/sqlite/execution-history-repository.d.ts +0 -21
  168. package/dist/storage/repositories/sqlite/execution-history-repository.d.ts.map +0 -1
  169. package/dist/storage/repositories/sqlite/execution-history-repository.js +0 -94
  170. package/dist/storage/repositories/sqlite/execution-history-repository.js.map +0 -1
  171. package/dist/storage/repositories/sqlite/prd-state-repository.d.ts +0 -17
  172. package/dist/storage/repositories/sqlite/prd-state-repository.d.ts.map +0 -1
  173. package/dist/storage/repositories/sqlite/prd-state-repository.js +0 -74
  174. package/dist/storage/repositories/sqlite/prd-state-repository.js.map +0 -1
  175. package/dist/storage/repositories/sqlite/project-registry-repository.d.ts +0 -16
  176. package/dist/storage/repositories/sqlite/project-registry-repository.d.ts.map +0 -1
  177. package/dist/storage/repositories/sqlite/project-registry-repository.js +0 -34
  178. package/dist/storage/repositories/sqlite/project-registry-repository.js.map +0 -1
  179. package/dist/storage/repositories/sqlite/roadmap-state-repository.d.ts +0 -14
  180. package/dist/storage/repositories/sqlite/roadmap-state-repository.d.ts.map +0 -1
  181. package/dist/storage/repositories/sqlite/roadmap-state-repository.js +0 -47
  182. package/dist/storage/repositories/sqlite/roadmap-state-repository.js.map +0 -1
  183. package/dist/storage/sqlite/client.d.ts +0 -23
  184. package/dist/storage/sqlite/client.d.ts.map +0 -1
  185. package/dist/storage/sqlite/client.js +0 -47
  186. package/dist/storage/sqlite/client.js.map +0 -1
  187. package/dist/storage/sqlite/migrations.d.ts +0 -11
  188. package/dist/storage/sqlite/migrations.d.ts.map +0 -1
  189. package/dist/storage/sqlite/migrations.js +0 -57
  190. package/dist/storage/sqlite/migrations.js.map +0 -1
  191. package/dist/templates/prd-template.d.ts +0 -11
  192. package/dist/templates/prd-template.d.ts.map +0 -1
  193. package/dist/templates/prd-template.js +0 -166
  194. package/dist/templates/prd-template.js.map +0 -1
  195. package/dist/templates/slicer-prompt.d.ts +0 -54
  196. package/dist/templates/slicer-prompt.d.ts.map +0 -1
  197. package/dist/templates/slicer-prompt.js +0 -163
  198. package/dist/templates/slicer-prompt.js.map +0 -1
  199. package/dist/types.d.ts +0 -123
  200. package/dist/types.d.ts.map +0 -1
  201. package/dist/types.js +0 -5
  202. package/dist/types.js.map +0 -1
  203. package/dist/utils/checks.d.ts +0 -55
  204. package/dist/utils/checks.d.ts.map +0 -1
  205. package/dist/utils/checks.js +0 -246
  206. package/dist/utils/checks.js.map +0 -1
  207. package/dist/utils/config-writer.d.ts +0 -16
  208. package/dist/utils/config-writer.d.ts.map +0 -1
  209. package/dist/utils/config-writer.js +0 -45
  210. package/dist/utils/config-writer.js.map +0 -1
  211. package/dist/utils/crontab.d.ts +0 -62
  212. package/dist/utils/crontab.d.ts.map +0 -1
  213. package/dist/utils/crontab.js +0 -168
  214. package/dist/utils/crontab.js.map +0 -1
  215. package/dist/utils/execution-history.d.ts +0 -54
  216. package/dist/utils/execution-history.d.ts.map +0 -1
  217. package/dist/utils/execution-history.js +0 -80
  218. package/dist/utils/execution-history.js.map +0 -1
  219. package/dist/utils/github.d.ts +0 -40
  220. package/dist/utils/github.d.ts.map +0 -1
  221. package/dist/utils/github.js +0 -126
  222. package/dist/utils/github.js.map +0 -1
  223. package/dist/utils/notify.d.ts +0 -63
  224. package/dist/utils/notify.d.ts.map +0 -1
  225. package/dist/utils/notify.js +0 -264
  226. package/dist/utils/notify.js.map +0 -1
  227. package/dist/utils/prd-states.d.ts +0 -16
  228. package/dist/utils/prd-states.d.ts.map +0 -1
  229. package/dist/utils/prd-states.js +0 -28
  230. package/dist/utils/prd-states.js.map +0 -1
  231. package/dist/utils/registry.d.ts +0 -44
  232. package/dist/utils/registry.d.ts.map +0 -1
  233. package/dist/utils/registry.js +0 -86
  234. package/dist/utils/registry.js.map +0 -1
  235. package/dist/utils/roadmap-parser.d.ts +0 -45
  236. package/dist/utils/roadmap-parser.d.ts.map +0 -1
  237. package/dist/utils/roadmap-parser.js +0 -136
  238. package/dist/utils/roadmap-parser.js.map +0 -1
  239. package/dist/utils/roadmap-scanner.d.ts +0 -92
  240. package/dist/utils/roadmap-scanner.d.ts.map +0 -1
  241. package/dist/utils/roadmap-scanner.js +0 -349
  242. package/dist/utils/roadmap-scanner.js.map +0 -1
  243. package/dist/utils/roadmap-state.d.ts +0 -90
  244. package/dist/utils/roadmap-state.d.ts.map +0 -1
  245. package/dist/utils/roadmap-state.js +0 -154
  246. package/dist/utils/roadmap-state.js.map +0 -1
  247. package/dist/utils/script-result.d.ts +0 -12
  248. package/dist/utils/script-result.d.ts.map +0 -1
  249. package/dist/utils/script-result.js +0 -46
  250. package/dist/utils/script-result.js.map +0 -1
  251. package/dist/utils/shell.d.ts +0 -27
  252. package/dist/utils/shell.d.ts.map +0 -1
  253. package/dist/utils/shell.js +0 -64
  254. package/dist/utils/shell.js.map +0 -1
  255. package/dist/utils/status-data.d.ts +0 -148
  256. package/dist/utils/status-data.d.ts.map +0 -1
  257. package/dist/utils/status-data.js +0 -593
  258. package/dist/utils/status-data.js.map +0 -1
  259. package/dist/utils/ui.d.ts +0 -55
  260. package/dist/utils/ui.d.ts.map +0 -1
  261. package/dist/utils/ui.js +0 -121
  262. package/dist/utils/ui.js.map +0 -1
  263. package/web/dist/assets/index-BtxQU4oX.css +0 -1
  264. package/web/dist/assets/index-CzAWcldp.js +0 -473
@@ -1,163 +0,0 @@
1
- /**
2
- * Slicer Prompt Template
3
- *
4
- * Provides functionality to render the AI prompt for generating PRDs from roadmap items.
5
- * The template is loaded from templates/night-watch-slicer.md and interpolated with
6
- * runtime values from the roadmap item being processed.
7
- */
8
- import * as fs from "fs";
9
- import * as path from "path";
10
- /**
11
- * The default slicer prompt template.
12
- * This is used if the template file cannot be read.
13
- */
14
- const DEFAULT_SLICER_TEMPLATE = `You are a **PRD Creator Agent**. Your job: analyze the codebase and write a complete Product Requirements Document (PRD) for a feature.
15
-
16
- When this activates: \`PRD Creator: Initializing\`
17
-
18
- ---
19
-
20
- ## Input
21
-
22
- You are creating a PRD for the following roadmap item:
23
-
24
- **Section:** {{SECTION}}
25
- **Title:** {{TITLE}}
26
- **Description:** {{DESCRIPTION}}
27
-
28
- The PRD must be written to this exact file path:
29
- **Output File:** \`{{OUTPUT_FILE_PATH}}\`
30
-
31
- The PRD directory is: \`{{PRD_DIR}}\`
32
-
33
- ---
34
-
35
- ## Your Task
36
-
37
- 1. **Explore the Codebase** - Read relevant existing files to understand the project structure, patterns, and conventions.
38
-
39
- 2. **Assess Complexity** - Score the complexity using the rubric and determine whether this is LOW, MEDIUM, or HIGH complexity.
40
-
41
- 3. **Write a Complete PRD** - Create a full PRD following the prd-creator template structure with Context, Solution, Phases, Tests, and Acceptance Criteria.
42
-
43
- 4. **Write the PRD File** - Use the Write tool to create the PRD file at the exact path specified in \`{{OUTPUT_FILE_PATH}}\`.
44
-
45
- ---
46
-
47
- ## Complexity Scoring
48
-
49
- \`\`\`
50
- COMPLEXITY SCORE (sum all that apply):
51
- +1 Touches 1-5 files
52
- +2 Touches 6-10 files
53
- +3 Touches 10+ files
54
- +2 New system/module from scratch
55
- +2 Complex state logic / concurrency
56
- +2 Multi-package changes
57
- +1 Database schema changes
58
- +1 External API integration
59
-
60
- | Score | Level | Template Mode |
61
- | ----- | ------ | ----------------------------------------------- |
62
- | 1-3 | LOW | Minimal (skip sections marked with MEDIUM/HIGH) |
63
- | 4-6 | MEDIUM | Standard (all sections) |
64
- | 7+ | HIGH | Full + mandatory checkpoints every phase |
65
- \`\`\`
66
-
67
- ---
68
-
69
- ## PRD Template Structure
70
-
71
- Your PRD MUST follow this exact structure with these sections:
72
- 1. **Context** - Problem, files analyzed, current behavior, integration points
73
- 2. **Solution** - Approach, architecture diagram, key decisions, data changes
74
- 3. **Sequence Flow** (MEDIUM/HIGH) - Mermaid sequence diagram
75
- 4. **Execution Phases** - Concrete phases with files, implementation steps, and tests
76
- 5. **Acceptance Criteria** - Checklist of completion requirements
77
-
78
- ---
79
-
80
- ## Critical Instructions
81
-
82
- 1. **Read all relevant existing files BEFORE writing any code**
83
- 2. **Follow existing patterns in the codebase**
84
- 3. **Write the PRD with concrete file paths and implementation details**
85
- 4. **Include specific test names and assertions**
86
- 5. **Use the Write tool to create the PRD file at \`{{OUTPUT_FILE_PATH}}\`**
87
- 6. **The PRD must be complete and actionable - no TODO placeholders**
88
-
89
- DO NOT leave placeholder text like "[Name]" or "[description]" in the final PRD.
90
- DO NOT skip any sections.
91
- DO NOT forget to write the file.
92
- `;
93
- // Cache for the loaded template
94
- let cachedTemplate = null;
95
- /**
96
- * Load the slicer prompt template from the templates directory.
97
- * Falls back to the default template if the file cannot be read.
98
- *
99
- * @param templateDir - Optional custom template directory
100
- * @returns The template string
101
- */
102
- export function loadSlicerTemplate(templateDir) {
103
- if (cachedTemplate) {
104
- return cachedTemplate;
105
- }
106
- // Determine the template file path
107
- const templatePath = templateDir
108
- ? path.join(templateDir, "night-watch-slicer.md")
109
- : path.resolve(__dirname, "..", "..", "templates", "night-watch-slicer.md");
110
- try {
111
- cachedTemplate = fs.readFileSync(templatePath, "utf-8");
112
- return cachedTemplate;
113
- }
114
- catch (_error) {
115
- // Fall back to the default template
116
- console.warn(`Warning: Could not load slicer template from ${templatePath}, using default`);
117
- return DEFAULT_SLICER_TEMPLATE;
118
- }
119
- }
120
- /**
121
- * Clear the cached template (useful for testing)
122
- */
123
- export function clearTemplateCache() {
124
- cachedTemplate = null;
125
- }
126
- /**
127
- * Render the slicer prompt by interpolating the template with the provided variables.
128
- *
129
- * @param vars - The variables to interpolate into the template
130
- * @param customTemplate - Optional custom template to use instead of the default
131
- * @returns The rendered prompt string
132
- */
133
- export function renderSlicerPrompt(vars, customTemplate) {
134
- const template = customTemplate ?? loadSlicerTemplate();
135
- let result = template;
136
- // Replace all placeholders with their values
137
- result = result.replace(/\{\{TITLE\}\}/g, vars.title);
138
- result = result.replace(/\{\{SECTION\}\}/g, vars.section);
139
- result = result.replace(/\{\{DESCRIPTION\}\}/g, vars.description);
140
- result = result.replace(/\{\{OUTPUT_FILE_PATH\}\}/g, vars.outputFilePath);
141
- result = result.replace(/\{\{PRD_DIR\}\}/g, vars.prdDir);
142
- return result;
143
- }
144
- /**
145
- * Create slicer prompt variables from a roadmap item.
146
- *
147
- * @param item - The roadmap item title
148
- * @param section - The roadmap item section
149
- * @param description - The roadmap item description
150
- * @param prdDir - The PRD directory path
151
- * @param prdFilename - The filename for the new PRD
152
- * @returns The slicer prompt variables
153
- */
154
- export function createSlicerPromptVars(title, section, description, prdDir, prdFilename) {
155
- return {
156
- title,
157
- section,
158
- description: description || "(No description provided)",
159
- outputFilePath: path.join(prdDir, prdFilename),
160
- prdDir,
161
- };
162
- }
163
- //# sourceMappingURL=slicer-prompt.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"slicer-prompt.js","sourceRoot":"","sources":["../../src/templates/slicer-prompt.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAkB7B;;;GAGG;AACH,MAAM,uBAAuB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8E/B,CAAC;AAEF,gCAAgC;AAChC,IAAI,cAAc,GAAkB,IAAI,CAAC;AAEzC;;;;;;GAMG;AACH,MAAM,UAAU,kBAAkB,CAAC,WAAoB;IACrD,IAAI,cAAc,EAAE,CAAC;QACnB,OAAO,cAAc,CAAC;IACxB,CAAC;IAED,mCAAmC;IACnC,MAAM,YAAY,GAAG,WAAW;QAC9B,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,uBAAuB,CAAC;QACjD,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,uBAAuB,CAAC,CAAC;IAE9E,IAAI,CAAC;QACH,cAAc,GAAG,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;QACxD,OAAO,cAAc,CAAC;IACxB,CAAC;IAAC,OAAO,MAAM,EAAE,CAAC;QAChB,oCAAoC;QACpC,OAAO,CAAC,IAAI,CACV,gDAAgD,YAAY,iBAAiB,CAC9E,CAAC;QACF,OAAO,uBAAuB,CAAC;IACjC,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB;IAChC,cAAc,GAAG,IAAI,CAAC;AACxB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,kBAAkB,CAChC,IAAuB,EACvB,cAAuB;IAEvB,MAAM,QAAQ,GAAG,cAAc,IAAI,kBAAkB,EAAE,CAAC;IAExD,IAAI,MAAM,GAAG,QAAQ,CAAC;IAEtB,6CAA6C;IAC7C,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,gBAAgB,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IACtD,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,kBAAkB,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IAC1D,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,sBAAsB,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;IAClE,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,2BAA2B,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;IAC1E,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,kBAAkB,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IAEzD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,sBAAsB,CACpC,KAAa,EACb,OAAe,EACf,WAAmB,EACnB,MAAc,EACd,WAAmB;IAEnB,OAAO;QACL,KAAK;QACL,OAAO;QACP,WAAW,EAAE,WAAW,IAAI,2BAA2B;QACvD,cAAc,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC;QAC9C,MAAM;KACP,CAAC;AACJ,CAAC"}
package/dist/types.d.ts DELETED
@@ -1,123 +0,0 @@
1
- /**
2
- * TypeScript interfaces for Night Watch CLI configuration
3
- */
4
- import { IBoardProviderConfig } from "./board/types.js";
5
- /**
6
- * Supported AI providers
7
- */
8
- export type Provider = "claude" | "codex";
9
- /**
10
- * Claude model to use for native (non-proxy) execution
11
- */
12
- export type ClaudeModel = "sonnet" | "opus";
13
- /**
14
- * Complete Night Watch configuration
15
- */
16
- export interface INightWatchConfig {
17
- /** Default branch name (e.g. "main" or "master"). Empty string means auto-detect. */
18
- defaultBranch: string;
19
- /** Directory containing PRD files (relative to project root) */
20
- prdDir: string;
21
- /** Maximum runtime in seconds for PRD execution */
22
- maxRuntime: number;
23
- /** Maximum runtime in seconds for PR reviewer */
24
- reviewerMaxRuntime: number;
25
- /** Prefix for night-watch branches */
26
- branchPrefix: string;
27
- /** Branch patterns to match for PR reviewer */
28
- branchPatterns: string[];
29
- /** Minimum review score (out of 100) to consider PR complete */
30
- minReviewScore: number;
31
- /** Maximum log file size in bytes before rotation */
32
- maxLogSize: number;
33
- /** Cron schedule for PRD execution */
34
- cronSchedule: string;
35
- /** Cron schedule for PR reviewer */
36
- reviewerSchedule: string;
37
- /** Minute offset (0-59) applied to cron schedules during install. Helps stagger multiple projects. */
38
- cronScheduleOffset: number;
39
- /** Maximum retry attempts for rate-limited API calls (default: 3) */
40
- maxRetries: number;
41
- /** AI provider to use for execution */
42
- provider: Provider;
43
- /** Whether the reviewer is enabled */
44
- reviewerEnabled: boolean;
45
- /** Extra environment variables to pass to the provider CLI (e.g. API keys, base URLs) */
46
- providerEnv: Record<string, string>;
47
- /**
48
- * When true, automatically fall back to native Claude (OAuth / direct Anthropic API)
49
- * after the first rate-limit (429) on a proxy provider (e.g. GLM-5 via api.z.ai).
50
- * A Telegram warning is sent immediately when the fallback is triggered.
51
- * Default: false
52
- */
53
- fallbackOnRateLimit: boolean;
54
- /**
55
- * Claude model to use when running natively (i.e. when no ANTHROPIC_BASE_URL proxy
56
- * is set, or when falling back from a rate-limited proxy).
57
- * "sonnet" → claude-sonnet-4-6 (default)
58
- * "opus" → claude-opus-4-6
59
- */
60
- claudeModel: ClaudeModel;
61
- /** Notification webhook configuration */
62
- notifications: INotificationConfig;
63
- /** PRD execution priority order (filenames without .md extension) */
64
- prdPriority: string[];
65
- /** Roadmap scanner configuration */
66
- roadmapScanner: IRoadmapScannerConfig;
67
- /** Directory containing custom template overrides (relative to project root) */
68
- templatesDir: string;
69
- /** Board provider configuration for PRD tracking */
70
- boardProvider: IBoardProviderConfig;
71
- /** Enable automatic merging of PRs that pass CI and review score threshold */
72
- autoMerge: boolean;
73
- /** Git merge method for auto-merge */
74
- autoMergeMethod: MergeMethod;
75
- /** QA process configuration */
76
- qa: IQaConfig;
77
- }
78
- export type QaArtifacts = "screenshot" | "video" | "both";
79
- export interface IQaConfig {
80
- /** Whether the QA process is enabled */
81
- enabled: boolean;
82
- /** Cron schedule for QA execution */
83
- schedule: string;
84
- /** Maximum runtime in seconds for QA */
85
- maxRuntime: number;
86
- /** Branch patterns to match for QA (defaults to top-level branchPatterns if empty) */
87
- branchPatterns: string[];
88
- /** What artifacts to capture for UI tests */
89
- artifacts: QaArtifacts;
90
- /** GitHub label to skip QA (PRs with this label are excluded) */
91
- skipLabel: string;
92
- /** Auto-install Playwright if missing during QA run */
93
- autoInstallPlaywright: boolean;
94
- }
95
- export type WebhookType = "slack" | "discord" | "telegram";
96
- export type NotificationEvent = "run_started" | "run_succeeded" | "run_failed" | "run_timeout" | "review_completed" | "pr_auto_merged" | "rate_limit_fallback" | "qa_completed";
97
- export type MergeMethod = "squash" | "merge" | "rebase";
98
- export interface IWebhookConfig {
99
- type: WebhookType;
100
- url?: string;
101
- botToken?: string;
102
- chatId?: string;
103
- events: NotificationEvent[];
104
- }
105
- export interface INotificationConfig {
106
- webhooks: IWebhookConfig[];
107
- }
108
- /**
109
- * Roadmap Scanner configuration
110
- */
111
- export interface IRoadmapScannerConfig {
112
- /** Whether the roadmap scanner is enabled */
113
- enabled: boolean;
114
- /** Path to the ROADMAP.md file (relative to project root) */
115
- roadmapPath: string;
116
- /** Interval in seconds between automatic scans */
117
- autoScanInterval: number;
118
- /** Cron schedule for the slicer (AI-powered PRD generation from roadmap items) */
119
- slicerSchedule: string;
120
- /** Maximum runtime in seconds for the slicer */
121
- slicerMaxRuntime: number;
122
- }
123
- //# sourceMappingURL=types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js DELETED
@@ -1,5 +0,0 @@
1
- /**
2
- * TypeScript interfaces for Night Watch CLI configuration
3
- */
4
- export {};
5
- //# sourceMappingURL=types.js.map
package/dist/types.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -1,55 +0,0 @@
1
- /**
2
- * Shared validation utilities for Night Watch CLI
3
- * Used by init, doctor, and other commands that need to verify environment
4
- */
5
- import { Provider } from "../types.js";
6
- /**
7
- * Result of an environment check
8
- */
9
- export interface ICheckResult {
10
- passed: boolean;
11
- message: string;
12
- fixable: boolean;
13
- fix?: () => void;
14
- }
15
- /**
16
- * Check if directory is a git repository
17
- */
18
- export declare function checkGitRepo(cwd: string): ICheckResult;
19
- /**
20
- * Check if GitHub CLI is authenticated
21
- */
22
- export declare function checkGhCli(): ICheckResult;
23
- /**
24
- * Check if a specific provider CLI is available
25
- */
26
- export declare function checkProviderCli(provider: Provider): ICheckResult;
27
- /**
28
- * Detect which AI provider CLIs are installed
29
- */
30
- export declare function detectProviders(): Provider[];
31
- /**
32
- * Check if Node.js version meets minimum requirement
33
- */
34
- export declare function checkNodeVersion(minMajor: number): ICheckResult;
35
- /**
36
- * Check if config file exists and is valid JSON
37
- */
38
- export declare function checkConfigFile(projectDir: string): ICheckResult;
39
- /**
40
- * Check if PRD directory exists
41
- */
42
- export declare function checkPrdDirectory(projectDir: string, prdDir: string): ICheckResult;
43
- /**
44
- * Check if logs directory exists
45
- */
46
- export declare function checkLogsDirectory(projectDir: string): ICheckResult;
47
- /**
48
- * Check if crontab is accessible
49
- */
50
- export declare function checkCrontabAccess(): ICheckResult;
51
- /**
52
- * Run all environment checks and return results
53
- */
54
- export declare function runAllChecks(projectDir: string, prdDir: string): ICheckResult[];
55
- //# sourceMappingURL=checks.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"checks.d.ts","sourceRoot":"","sources":["../../src/utils/checks.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAGvC;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,IAAI,CAAC;CAClB;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY,CAOtD;AAED;;GAEG;AACH,wBAAgB,UAAU,IAAI,YAAY,CAkBzC;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,GAAG,YAAY,CAkBjE;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,QAAQ,EAAE,CAc5C;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,YAAY,CAsB/D;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,YAAY,CA4BhE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,GACb,YAAY,CA0Bd;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,YAAY,CAmBnE;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,YAAY,CAoBjD;AAED;;GAEG;AACH,wBAAgB,YAAY,CAC1B,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,GACb,YAAY,EAAE,CAuChB"}
@@ -1,246 +0,0 @@
1
- /**
2
- * Shared validation utilities for Night Watch CLI
3
- * Used by init, doctor, and other commands that need to verify environment
4
- */
5
- import * as fs from "fs";
6
- import * as path from "path";
7
- import { execSync } from "child_process";
8
- import { CONFIG_FILE_NAME, LOG_DIR, VALID_PROVIDERS } from "../constants.js";
9
- /**
10
- * Check if directory is a git repository
11
- */
12
- export function checkGitRepo(cwd) {
13
- const isRepo = fs.existsSync(path.join(cwd, ".git"));
14
- return {
15
- passed: isRepo,
16
- message: isRepo ? "Git repository found" : "Not a git repository",
17
- fixable: false,
18
- };
19
- }
20
- /**
21
- * Check if GitHub CLI is authenticated
22
- */
23
- export function checkGhCli() {
24
- try {
25
- execSync("gh auth status", {
26
- encoding: "utf-8",
27
- stdio: ["pipe", "pipe", "pipe"],
28
- });
29
- return {
30
- passed: true,
31
- message: "GitHub CLI authenticated",
32
- fixable: false,
33
- };
34
- }
35
- catch {
36
- return {
37
- passed: false,
38
- message: "GitHub CLI not authenticated (run: gh auth login)",
39
- fixable: false,
40
- };
41
- }
42
- }
43
- /**
44
- * Check if a specific provider CLI is available
45
- */
46
- export function checkProviderCli(provider) {
47
- try {
48
- execSync(`which ${provider}`, {
49
- encoding: "utf-8",
50
- stdio: ["pipe", "pipe", "pipe"],
51
- });
52
- return {
53
- passed: true,
54
- message: `Provider CLI found: ${provider}`,
55
- fixable: false,
56
- };
57
- }
58
- catch {
59
- return {
60
- passed: false,
61
- message: `Provider CLI not found: ${provider}`,
62
- fixable: false,
63
- };
64
- }
65
- }
66
- /**
67
- * Detect which AI provider CLIs are installed
68
- */
69
- export function detectProviders() {
70
- const providers = [];
71
- for (const provider of VALID_PROVIDERS) {
72
- try {
73
- execSync(`which ${provider}`, {
74
- encoding: "utf-8",
75
- stdio: ["pipe", "pipe", "pipe"],
76
- });
77
- providers.push(provider);
78
- }
79
- catch {
80
- // Provider not available
81
- }
82
- }
83
- return providers;
84
- }
85
- /**
86
- * Check if Node.js version meets minimum requirement
87
- */
88
- export function checkNodeVersion(minMajor) {
89
- const nodeVersion = process.version;
90
- const match = nodeVersion.match(/^v?(\d+)/);
91
- if (!match) {
92
- return {
93
- passed: false,
94
- message: `Could not determine Node.js version (got: ${nodeVersion})`,
95
- fixable: false,
96
- };
97
- }
98
- const major = parseInt(match[1], 10);
99
- const passed = major >= minMajor;
100
- return {
101
- passed,
102
- message: passed
103
- ? `Node.js version ${nodeVersion} (>= ${minMajor}.0.0)`
104
- : `Node.js version ${nodeVersion} is too old (minimum: ${minMajor}.0.0)`,
105
- fixable: false,
106
- };
107
- }
108
- /**
109
- * Check if config file exists and is valid JSON
110
- */
111
- export function checkConfigFile(projectDir) {
112
- const configPath = path.join(projectDir, CONFIG_FILE_NAME);
113
- if (!fs.existsSync(configPath)) {
114
- return {
115
- passed: false,
116
- message: `Config file not found: ${CONFIG_FILE_NAME} (run: night-watch init)`,
117
- fixable: false,
118
- };
119
- }
120
- try {
121
- const content = fs.readFileSync(configPath, "utf-8");
122
- JSON.parse(content);
123
- return {
124
- passed: true,
125
- message: `Config file valid: ${CONFIG_FILE_NAME}`,
126
- fixable: false,
127
- };
128
- }
129
- catch (err) {
130
- const errorMsg = err instanceof Error ? err.message : String(err);
131
- return {
132
- passed: false,
133
- message: `Config file has invalid JSON: ${errorMsg}`,
134
- fixable: false,
135
- };
136
- }
137
- }
138
- /**
139
- * Check if PRD directory exists
140
- */
141
- export function checkPrdDirectory(projectDir, prdDir) {
142
- const prdPath = path.join(projectDir, prdDir);
143
- if (!fs.existsSync(prdPath)) {
144
- return {
145
- passed: false,
146
- message: `PRD directory not found: ${prdDir}`,
147
- fixable: true,
148
- fix: () => {
149
- fs.mkdirSync(prdPath, { recursive: true });
150
- // Also create the done subdirectory
151
- fs.mkdirSync(path.join(prdPath, "done"), { recursive: true });
152
- },
153
- };
154
- }
155
- // Count PRD files (exclude summary and files in done/)
156
- const prds = fs
157
- .readdirSync(prdPath)
158
- .filter((f) => f.endsWith(".md") && f !== "NIGHT-WATCH-SUMMARY.md");
159
- return {
160
- passed: true,
161
- message: `PRD directory found: ${prdDir} (${prds.length} PRDs)`,
162
- fixable: false,
163
- };
164
- }
165
- /**
166
- * Check if logs directory exists
167
- */
168
- export function checkLogsDirectory(projectDir) {
169
- const logsPath = path.join(projectDir, LOG_DIR);
170
- if (!fs.existsSync(logsPath)) {
171
- return {
172
- passed: false,
173
- message: `Logs directory not found: ${LOG_DIR}`,
174
- fixable: true,
175
- fix: () => {
176
- fs.mkdirSync(logsPath, { recursive: true });
177
- },
178
- };
179
- }
180
- return {
181
- passed: true,
182
- message: `Logs directory found: ${LOG_DIR}`,
183
- fixable: false,
184
- };
185
- }
186
- /**
187
- * Check if crontab is accessible
188
- */
189
- export function checkCrontabAccess() {
190
- try {
191
- execSync("crontab -l", {
192
- encoding: "utf-8",
193
- stdio: ["pipe", "pipe", "pipe"],
194
- });
195
- return {
196
- passed: true,
197
- message: "Crontab accessible",
198
- fixable: false,
199
- };
200
- }
201
- catch {
202
- // crontab -l returns error if no crontab exists, but that's still "accessible"
203
- // We check if the error is about access or just "no crontab"
204
- return {
205
- passed: true,
206
- message: "Crontab accessible (empty)",
207
- fixable: false,
208
- };
209
- }
210
- }
211
- /**
212
- * Run all environment checks and return results
213
- */
214
- export function runAllChecks(projectDir, prdDir) {
215
- const results = [];
216
- // Check Node version
217
- results.push(checkNodeVersion(18));
218
- // Check git repo
219
- results.push(checkGitRepo(projectDir));
220
- // Check GitHub CLI
221
- results.push(checkGhCli());
222
- // Check provider CLIs
223
- const providers = detectProviders();
224
- if (providers.length === 0) {
225
- results.push({
226
- passed: false,
227
- message: "No AI provider CLI found (install claude or codex)",
228
- fixable: false,
229
- });
230
- }
231
- else {
232
- for (const provider of providers) {
233
- results.push(checkProviderCli(provider));
234
- }
235
- }
236
- // Check config file
237
- results.push(checkConfigFile(projectDir));
238
- // Check PRD directory
239
- results.push(checkPrdDirectory(projectDir, prdDir));
240
- // Check logs directory
241
- results.push(checkLogsDirectory(projectDir));
242
- // Check crontab access
243
- results.push(checkCrontabAccess());
244
- return results;
245
- }
246
- //# sourceMappingURL=checks.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"checks.js","sourceRoot":"","sources":["../../src/utils/checks.ts"],"names":[],"mappings":"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"}
@@ -1,16 +0,0 @@
1
- /**
2
- * Config writer utility for Night Watch CLI
3
- * Saves partial config changes to night-watch.config.json while preserving unknown keys
4
- */
5
- import { INightWatchConfig } from "../types.js";
6
- export interface ISaveConfigResult {
7
- success: boolean;
8
- error?: string;
9
- }
10
- /**
11
- * Save partial config changes to the night-watch.config.json file.
12
- * Reads the existing file, merges changes, and writes back.
13
- * Preserves unknown keys (like $schema, projectName).
14
- */
15
- export declare function saveConfig(projectDir: string, changes: Partial<INightWatchConfig>): ISaveConfigResult;
16
- //# sourceMappingURL=config-writer.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"config-writer.d.ts","sourceRoot":"","sources":["../../src/utils/config-writer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEhD,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CACxB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,OAAO,CAAC,iBAAiB,CAAC,GAClC,iBAAiB,CAiCnB"}