gsd-pi 2.23.0 → 2.25.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (212) hide show
  1. package/README.md +2 -1
  2. package/dist/cli.js +12 -3
  3. package/dist/headless.d.ts +4 -0
  4. package/dist/headless.js +118 -10
  5. package/dist/help-text.js +22 -7
  6. package/dist/models-resolver.d.ts +0 -11
  7. package/dist/models-resolver.js +0 -15
  8. package/dist/resource-loader.d.ts +0 -1
  9. package/dist/resource-loader.js +64 -18
  10. package/dist/resources/GSD-WORKFLOW.md +12 -9
  11. package/dist/resources/extensions/bg-shell/overlay.ts +18 -17
  12. package/dist/resources/extensions/get-secrets-from-user.ts +5 -23
  13. package/dist/resources/extensions/gsd/activity-log.ts +5 -3
  14. package/dist/resources/extensions/gsd/auto-dispatch.ts +51 -2
  15. package/dist/resources/extensions/gsd/auto-prompts.ts +87 -0
  16. package/dist/resources/extensions/gsd/auto-recovery.ts +41 -2
  17. package/dist/resources/extensions/gsd/auto-worktree.ts +134 -4
  18. package/dist/resources/extensions/gsd/auto.ts +307 -77
  19. package/dist/resources/extensions/gsd/cache.ts +3 -1
  20. package/dist/resources/extensions/gsd/commands.ts +176 -10
  21. package/dist/resources/extensions/gsd/complexity.ts +1 -0
  22. package/dist/resources/extensions/gsd/dashboard-overlay.ts +38 -0
  23. package/dist/resources/extensions/gsd/doctor.ts +58 -11
  24. package/dist/resources/extensions/gsd/exit-command.ts +2 -2
  25. package/dist/resources/extensions/gsd/git-service.ts +74 -14
  26. package/dist/resources/extensions/gsd/gitignore.ts +1 -0
  27. package/dist/resources/extensions/gsd/gsd-db.ts +78 -1
  28. package/dist/resources/extensions/gsd/guided-flow.ts +109 -12
  29. package/dist/resources/extensions/gsd/index.ts +48 -2
  30. package/dist/resources/extensions/gsd/memory-extractor.ts +352 -0
  31. package/dist/resources/extensions/gsd/memory-store.ts +441 -0
  32. package/dist/resources/extensions/gsd/migrate/command.ts +2 -2
  33. package/dist/resources/extensions/gsd/parallel-eligibility.ts +233 -0
  34. package/dist/resources/extensions/gsd/parallel-merge.ts +156 -0
  35. package/dist/resources/extensions/gsd/parallel-orchestrator.ts +496 -0
  36. package/dist/resources/extensions/gsd/preferences.ts +65 -1
  37. package/dist/resources/extensions/gsd/prompts/complete-slice.md +1 -1
  38. package/dist/resources/extensions/gsd/prompts/discuss-headless.md +86 -0
  39. package/dist/resources/extensions/gsd/prompts/discuss.md +4 -4
  40. package/dist/resources/extensions/gsd/prompts/execute-task.md +1 -1
  41. package/dist/resources/extensions/gsd/prompts/guided-discuss-milestone.md +1 -1
  42. package/dist/resources/extensions/gsd/prompts/guided-discuss-slice.md +1 -1
  43. package/dist/resources/extensions/gsd/prompts/plan-slice.md +1 -1
  44. package/dist/resources/extensions/gsd/prompts/queue.md +1 -1
  45. package/dist/resources/extensions/gsd/prompts/reassess-roadmap.md +1 -1
  46. package/dist/resources/extensions/gsd/prompts/research-slice.md +1 -1
  47. package/dist/resources/extensions/gsd/prompts/validate-milestone.md +40 -61
  48. package/dist/resources/extensions/gsd/provider-error-pause.ts +29 -2
  49. package/dist/resources/extensions/gsd/session-status-io.ts +197 -0
  50. package/dist/resources/extensions/gsd/state.ts +72 -30
  51. package/dist/resources/extensions/gsd/tests/agent-end-provider-error.test.ts +81 -0
  52. package/dist/resources/extensions/gsd/tests/auto-budget-alerts.test.ts +20 -3
  53. package/dist/resources/extensions/gsd/tests/auto-preflight.test.ts +1 -0
  54. package/dist/resources/extensions/gsd/tests/auto-recovery.test.ts +256 -2
  55. package/dist/resources/extensions/gsd/tests/auto-worktree-milestone-merge.test.ts +34 -0
  56. package/dist/resources/extensions/gsd/tests/auto-worktree.test.ts +58 -0
  57. package/dist/resources/extensions/gsd/tests/complete-milestone.test.ts +8 -1
  58. package/dist/resources/extensions/gsd/tests/derive-state-db.test.ts +9 -15
  59. package/dist/resources/extensions/gsd/tests/derive-state-deps.test.ts +9 -0
  60. package/dist/resources/extensions/gsd/tests/derive-state-draft.test.ts +8 -0
  61. package/dist/resources/extensions/gsd/tests/derive-state.test.ts +14 -0
  62. package/dist/resources/extensions/gsd/tests/git-service.test.ts +70 -4
  63. package/dist/resources/extensions/gsd/tests/gsd-db.test.ts +2 -2
  64. package/dist/resources/extensions/gsd/tests/integration-mixed-milestones.test.ts +8 -0
  65. package/dist/resources/extensions/gsd/tests/md-importer.test.ts +2 -3
  66. package/dist/resources/extensions/gsd/tests/memory-extractor.test.ts +180 -0
  67. package/dist/resources/extensions/gsd/tests/memory-store.test.ts +345 -0
  68. package/dist/resources/extensions/gsd/tests/migrate-writer-integration.test.ts +5 -5
  69. package/dist/resources/extensions/gsd/tests/parallel-orchestration.test.ts +656 -0
  70. package/dist/resources/extensions/gsd/tests/parallel-workers-multi-milestone-e2e.test.ts +354 -0
  71. package/dist/resources/extensions/gsd/tests/queue-reorder-e2e.test.ts +1 -0
  72. package/dist/resources/extensions/gsd/tests/smart-entry-draft.test.ts +1 -1
  73. package/dist/resources/extensions/gsd/tests/validate-milestone.test.ts +316 -0
  74. package/dist/resources/extensions/gsd/tests/visualizer-data.test.ts +147 -2
  75. package/dist/resources/extensions/gsd/tests/visualizer-overlay.test.ts +88 -10
  76. package/dist/resources/extensions/gsd/tests/visualizer-views.test.ts +314 -87
  77. package/dist/resources/extensions/gsd/tests/worker-registry.test.ts +148 -0
  78. package/dist/resources/extensions/gsd/triage-ui.ts +1 -1
  79. package/dist/resources/extensions/gsd/types.ts +15 -1
  80. package/dist/resources/extensions/gsd/visualizer-data.ts +291 -10
  81. package/dist/resources/extensions/gsd/visualizer-overlay.ts +237 -28
  82. package/dist/resources/extensions/gsd/visualizer-views.ts +462 -48
  83. package/dist/resources/extensions/gsd/worktree.ts +9 -2
  84. package/dist/resources/extensions/search-the-web/native-search.ts +15 -5
  85. package/dist/resources/extensions/subagent/index.ts +5 -0
  86. package/dist/resources/extensions/subagent/worker-registry.ts +99 -0
  87. package/dist/update-check.d.ts +9 -0
  88. package/dist/update-check.js +97 -0
  89. package/package.json +6 -1
  90. package/packages/pi-agent-core/dist/agent-loop.js +2 -0
  91. package/packages/pi-agent-core/dist/agent-loop.js.map +1 -1
  92. package/packages/pi-agent-core/src/agent-loop.ts +2 -0
  93. package/packages/pi-ai/dist/providers/anthropic.d.ts.map +1 -1
  94. package/packages/pi-ai/dist/providers/anthropic.js +55 -7
  95. package/packages/pi-ai/dist/providers/anthropic.js.map +1 -1
  96. package/packages/pi-ai/dist/providers/azure-openai-responses.d.ts.map +1 -1
  97. package/packages/pi-ai/dist/providers/azure-openai-responses.js +12 -4
  98. package/packages/pi-ai/dist/providers/azure-openai-responses.js.map +1 -1
  99. package/packages/pi-ai/dist/providers/google-vertex.d.ts.map +1 -1
  100. package/packages/pi-ai/dist/providers/google-vertex.js +21 -9
  101. package/packages/pi-ai/dist/providers/google-vertex.js.map +1 -1
  102. package/packages/pi-ai/dist/providers/mistral.js +3 -0
  103. package/packages/pi-ai/dist/providers/mistral.js.map +1 -1
  104. package/packages/pi-ai/dist/providers/openai-completions.d.ts.map +1 -1
  105. package/packages/pi-ai/dist/providers/openai-completions.js +12 -4
  106. package/packages/pi-ai/dist/providers/openai-completions.js.map +1 -1
  107. package/packages/pi-ai/dist/providers/openai-responses.d.ts.map +1 -1
  108. package/packages/pi-ai/dist/providers/openai-responses.js +12 -4
  109. package/packages/pi-ai/dist/providers/openai-responses.js.map +1 -1
  110. package/packages/pi-ai/dist/types.d.ts +23 -1
  111. package/packages/pi-ai/dist/types.d.ts.map +1 -1
  112. package/packages/pi-ai/dist/types.js.map +1 -1
  113. package/packages/pi-ai/src/providers/anthropic.ts +59 -9
  114. package/packages/pi-ai/src/providers/azure-openai-responses.ts +16 -4
  115. package/packages/pi-ai/src/providers/google-vertex.ts +32 -17
  116. package/packages/pi-ai/src/providers/mistral.ts +3 -0
  117. package/packages/pi-ai/src/providers/openai-completions.ts +16 -4
  118. package/packages/pi-ai/src/providers/openai-responses.ts +16 -4
  119. package/packages/pi-ai/src/types.ts +19 -1
  120. package/packages/pi-coding-agent/dist/core/agent-session.js +1 -1
  121. package/packages/pi-coding-agent/dist/core/agent-session.js.map +1 -1
  122. package/packages/pi-coding-agent/dist/core/settings-manager.js +1 -1
  123. package/packages/pi-coding-agent/dist/core/settings-manager.js.map +1 -1
  124. package/packages/pi-coding-agent/dist/modes/interactive/components/tool-execution.d.ts.map +1 -1
  125. package/packages/pi-coding-agent/dist/modes/interactive/components/tool-execution.js +17 -0
  126. package/packages/pi-coding-agent/dist/modes/interactive/components/tool-execution.js.map +1 -1
  127. package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode.d.ts +4 -0
  128. package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  129. package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode.js +72 -0
  130. package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode.js.map +1 -1
  131. package/packages/pi-coding-agent/src/core/agent-session.ts +1 -1
  132. package/packages/pi-coding-agent/src/core/settings-manager.ts +2 -2
  133. package/packages/pi-coding-agent/src/modes/interactive/components/tool-execution.ts +18 -0
  134. package/packages/pi-coding-agent/src/modes/interactive/interactive-mode.ts +84 -0
  135. package/scripts/postinstall.js +7 -109
  136. package/src/resources/GSD-WORKFLOW.md +12 -9
  137. package/src/resources/extensions/bg-shell/overlay.ts +18 -17
  138. package/src/resources/extensions/get-secrets-from-user.ts +5 -23
  139. package/src/resources/extensions/gsd/activity-log.ts +5 -3
  140. package/src/resources/extensions/gsd/auto-dispatch.ts +51 -2
  141. package/src/resources/extensions/gsd/auto-prompts.ts +87 -0
  142. package/src/resources/extensions/gsd/auto-recovery.ts +41 -2
  143. package/src/resources/extensions/gsd/auto-worktree.ts +134 -4
  144. package/src/resources/extensions/gsd/auto.ts +307 -77
  145. package/src/resources/extensions/gsd/cache.ts +3 -1
  146. package/src/resources/extensions/gsd/commands.ts +176 -10
  147. package/src/resources/extensions/gsd/complexity.ts +1 -0
  148. package/src/resources/extensions/gsd/dashboard-overlay.ts +38 -0
  149. package/src/resources/extensions/gsd/doctor.ts +58 -11
  150. package/src/resources/extensions/gsd/exit-command.ts +2 -2
  151. package/src/resources/extensions/gsd/git-service.ts +74 -14
  152. package/src/resources/extensions/gsd/gitignore.ts +1 -0
  153. package/src/resources/extensions/gsd/gsd-db.ts +78 -1
  154. package/src/resources/extensions/gsd/guided-flow.ts +109 -12
  155. package/src/resources/extensions/gsd/index.ts +48 -2
  156. package/src/resources/extensions/gsd/memory-extractor.ts +352 -0
  157. package/src/resources/extensions/gsd/memory-store.ts +441 -0
  158. package/src/resources/extensions/gsd/migrate/command.ts +2 -2
  159. package/src/resources/extensions/gsd/parallel-eligibility.ts +233 -0
  160. package/src/resources/extensions/gsd/parallel-merge.ts +156 -0
  161. package/src/resources/extensions/gsd/parallel-orchestrator.ts +496 -0
  162. package/src/resources/extensions/gsd/preferences.ts +65 -1
  163. package/src/resources/extensions/gsd/prompts/complete-slice.md +1 -1
  164. package/src/resources/extensions/gsd/prompts/discuss-headless.md +86 -0
  165. package/src/resources/extensions/gsd/prompts/discuss.md +4 -4
  166. package/src/resources/extensions/gsd/prompts/execute-task.md +1 -1
  167. package/src/resources/extensions/gsd/prompts/guided-discuss-milestone.md +1 -1
  168. package/src/resources/extensions/gsd/prompts/guided-discuss-slice.md +1 -1
  169. package/src/resources/extensions/gsd/prompts/plan-slice.md +1 -1
  170. package/src/resources/extensions/gsd/prompts/queue.md +1 -1
  171. package/src/resources/extensions/gsd/prompts/reassess-roadmap.md +1 -1
  172. package/src/resources/extensions/gsd/prompts/research-slice.md +1 -1
  173. package/src/resources/extensions/gsd/prompts/validate-milestone.md +40 -61
  174. package/src/resources/extensions/gsd/provider-error-pause.ts +29 -2
  175. package/src/resources/extensions/gsd/session-status-io.ts +197 -0
  176. package/src/resources/extensions/gsd/state.ts +72 -30
  177. package/src/resources/extensions/gsd/tests/agent-end-provider-error.test.ts +81 -0
  178. package/src/resources/extensions/gsd/tests/auto-budget-alerts.test.ts +20 -3
  179. package/src/resources/extensions/gsd/tests/auto-preflight.test.ts +1 -0
  180. package/src/resources/extensions/gsd/tests/auto-recovery.test.ts +256 -2
  181. package/src/resources/extensions/gsd/tests/auto-worktree-milestone-merge.test.ts +34 -0
  182. package/src/resources/extensions/gsd/tests/auto-worktree.test.ts +58 -0
  183. package/src/resources/extensions/gsd/tests/complete-milestone.test.ts +8 -1
  184. package/src/resources/extensions/gsd/tests/derive-state-db.test.ts +9 -15
  185. package/src/resources/extensions/gsd/tests/derive-state-deps.test.ts +9 -0
  186. package/src/resources/extensions/gsd/tests/derive-state-draft.test.ts +8 -0
  187. package/src/resources/extensions/gsd/tests/derive-state.test.ts +14 -0
  188. package/src/resources/extensions/gsd/tests/git-service.test.ts +70 -4
  189. package/src/resources/extensions/gsd/tests/gsd-db.test.ts +2 -2
  190. package/src/resources/extensions/gsd/tests/integration-mixed-milestones.test.ts +8 -0
  191. package/src/resources/extensions/gsd/tests/md-importer.test.ts +2 -3
  192. package/src/resources/extensions/gsd/tests/memory-extractor.test.ts +180 -0
  193. package/src/resources/extensions/gsd/tests/memory-store.test.ts +345 -0
  194. package/src/resources/extensions/gsd/tests/migrate-writer-integration.test.ts +5 -5
  195. package/src/resources/extensions/gsd/tests/parallel-orchestration.test.ts +656 -0
  196. package/src/resources/extensions/gsd/tests/parallel-workers-multi-milestone-e2e.test.ts +354 -0
  197. package/src/resources/extensions/gsd/tests/queue-reorder-e2e.test.ts +1 -0
  198. package/src/resources/extensions/gsd/tests/smart-entry-draft.test.ts +1 -1
  199. package/src/resources/extensions/gsd/tests/validate-milestone.test.ts +316 -0
  200. package/src/resources/extensions/gsd/tests/visualizer-data.test.ts +147 -2
  201. package/src/resources/extensions/gsd/tests/visualizer-overlay.test.ts +88 -10
  202. package/src/resources/extensions/gsd/tests/visualizer-views.test.ts +314 -87
  203. package/src/resources/extensions/gsd/tests/worker-registry.test.ts +148 -0
  204. package/src/resources/extensions/gsd/triage-ui.ts +1 -1
  205. package/src/resources/extensions/gsd/types.ts +15 -1
  206. package/src/resources/extensions/gsd/visualizer-data.ts +291 -10
  207. package/src/resources/extensions/gsd/visualizer-overlay.ts +237 -28
  208. package/src/resources/extensions/gsd/visualizer-views.ts +462 -48
  209. package/src/resources/extensions/gsd/worktree.ts +9 -2
  210. package/src/resources/extensions/search-the-web/native-search.ts +15 -5
  211. package/src/resources/extensions/subagent/index.ts +5 -0
  212. package/src/resources/extensions/subagent/worker-registry.ts +99 -0
@@ -56,6 +56,51 @@ assertTrue(
56
56
  "exports ChangelogInfo interface",
57
57
  );
58
58
 
59
+ assertTrue(
60
+ dataSrc.includes("export interface SliceVerification"),
61
+ "exports SliceVerification interface",
62
+ );
63
+
64
+ assertTrue(
65
+ dataSrc.includes("export interface KnowledgeInfo"),
66
+ "exports KnowledgeInfo interface",
67
+ );
68
+
69
+ assertTrue(
70
+ dataSrc.includes("export interface CapturesInfo"),
71
+ "exports CapturesInfo interface",
72
+ );
73
+
74
+ assertTrue(
75
+ dataSrc.includes("export interface HealthInfo"),
76
+ "exports HealthInfo interface",
77
+ );
78
+
79
+ assertTrue(
80
+ dataSrc.includes("export interface VisualizerDiscussionState"),
81
+ "exports VisualizerDiscussionState interface",
82
+ );
83
+
84
+ assertTrue(
85
+ dataSrc.includes("export type DiscussionState"),
86
+ "exports DiscussionState type",
87
+ );
88
+
89
+ assertTrue(
90
+ dataSrc.includes("export interface VisualizerSliceRef"),
91
+ "exports VisualizerSliceRef interface",
92
+ );
93
+
94
+ assertTrue(
95
+ dataSrc.includes("export interface VisualizerSliceActivity"),
96
+ "exports VisualizerSliceActivity interface",
97
+ );
98
+
99
+ assertTrue(
100
+ dataSrc.includes("export interface VisualizerStats"),
101
+ "exports VisualizerStats interface",
102
+ );
103
+
59
104
  // Function export
60
105
  assertTrue(
61
106
  dataSrc.includes("export async function loadVisualizerData"),
@@ -123,6 +168,36 @@ assertTrue(
123
168
  "uses aggregateByModel",
124
169
  );
125
170
 
171
+ assertTrue(
172
+ dataSrc.includes("aggregateByTier"),
173
+ "uses aggregateByTier",
174
+ );
175
+
176
+ assertTrue(
177
+ dataSrc.includes("formatTierSavings"),
178
+ "uses formatTierSavings",
179
+ );
180
+
181
+ assertTrue(
182
+ dataSrc.includes("loadAllCaptures"),
183
+ "uses loadAllCaptures",
184
+ );
185
+
186
+ assertTrue(
187
+ dataSrc.includes("countPendingCaptures"),
188
+ "uses countPendingCaptures",
189
+ );
190
+
191
+ assertTrue(
192
+ dataSrc.includes("loadEffectiveGSDPreferences"),
193
+ "uses loadEffectiveGSDPreferences",
194
+ );
195
+
196
+ assertTrue(
197
+ dataSrc.includes("resolveGsdRootFile"),
198
+ "uses resolveGsdRootFile for KNOWLEDGE path",
199
+ );
200
+
126
201
  // Interface fields
127
202
  assertTrue(
128
203
  dataSrc.includes("dependsOn: string[]"),
@@ -144,6 +219,11 @@ assertTrue(
144
219
  "VisualizerData has units array",
145
220
  );
146
221
 
222
+ assertTrue(
223
+ dataSrc.includes("estimate?: string"),
224
+ "VisualizerTask has optional estimate field",
225
+ );
226
+
147
227
  // New data model fields
148
228
  assertTrue(
149
229
  dataSrc.includes("criticalPath: CriticalPathInfo"),
@@ -165,6 +245,56 @@ assertTrue(
165
245
  "VisualizerData has changelog field",
166
246
  );
167
247
 
248
+ assertTrue(
249
+ dataSrc.includes("sliceVerifications: SliceVerification[]"),
250
+ "VisualizerData has sliceVerifications field",
251
+ );
252
+
253
+ assertTrue(
254
+ dataSrc.includes("knowledge: KnowledgeInfo"),
255
+ "VisualizerData has knowledge field",
256
+ );
257
+
258
+ assertTrue(
259
+ dataSrc.includes("captures: CapturesInfo"),
260
+ "VisualizerData has captures field",
261
+ );
262
+
263
+ assertTrue(
264
+ dataSrc.includes("health: HealthInfo"),
265
+ "VisualizerData has health field",
266
+ );
267
+
268
+ assertTrue(
269
+ dataSrc.includes("stats: VisualizerStats"),
270
+ "VisualizerData has stats field",
271
+ );
272
+
273
+ assertTrue(
274
+ dataSrc.includes("discussion: VisualizerDiscussionState[]"),
275
+ "VisualizerData has discussion field",
276
+ );
277
+
278
+ assertTrue(
279
+ dataSrc.includes("loadDiscussionState"),
280
+ "uses loadDiscussionState helper",
281
+ );
282
+
283
+ assertTrue(
284
+ dataSrc.includes("buildVisualizerStats"),
285
+ "uses buildVisualizerStats helper",
286
+ );
287
+
288
+ assertTrue(
289
+ dataSrc.includes("byTier: TierAggregate[]"),
290
+ "VisualizerData has byTier field",
291
+ );
292
+
293
+ assertTrue(
294
+ dataSrc.includes("tierSavingsLine: string"),
295
+ "VisualizerData has tierSavingsLine field",
296
+ );
297
+
168
298
  // completedAt must be coerced to String() to handle YAML Date objects (issue #644)
169
299
  assertTrue(
170
300
  dataSrc.includes("String(summary.frontmatter.completed_at"),
@@ -227,6 +357,21 @@ assertTrue(
227
357
  "overlay delegates to renderExportView",
228
358
  );
229
359
 
360
+ assertTrue(
361
+ overlaySrc.includes("renderKnowledgeView"),
362
+ "overlay delegates to renderKnowledgeView",
363
+ );
364
+
365
+ assertTrue(
366
+ overlaySrc.includes("renderCapturesView"),
367
+ "overlay delegates to renderCapturesView",
368
+ );
369
+
370
+ assertTrue(
371
+ overlaySrc.includes("renderHealthView"),
372
+ "overlay delegates to renderHealthView",
373
+ );
374
+
230
375
  assertTrue(
231
376
  overlaySrc.includes("handleInput"),
232
377
  "overlay has handleInput method",
@@ -273,8 +418,8 @@ assertTrue(
273
418
  );
274
419
 
275
420
  assertTrue(
276
- overlaySrc.includes("7 Export"),
277
- "overlay has 7 tab labels",
421
+ overlaySrc.includes("0 Health"),
422
+ "overlay has 10 tab labels",
278
423
  );
279
424
 
280
425
  // Verify commands.ts integration
@@ -1,5 +1,5 @@
1
1
  // Tests for GSD visualizer overlay.
2
- // Verifies filter mode, tab switching, including reverse tab navigation, and export key handling.
2
+ // Verifies filter mode, tab switching, mouse support, page scroll, help overlay, and 10-tab config.
3
3
 
4
4
  import { readFileSync } from "node:fs";
5
5
  import { join, dirname } from "node:path";
@@ -14,8 +14,8 @@ const overlaySrc = readFileSync(join(__dirname, "..", "visualizer-overlay.ts"),
14
14
  console.log("\n=== Overlay: Tab Configuration ===");
15
15
 
16
16
  assertTrue(
17
- overlaySrc.includes("TAB_COUNT = 7"),
18
- "TAB_COUNT is 7",
17
+ overlaySrc.includes("TAB_COUNT = 10"),
18
+ "TAB_COUNT is 10",
19
19
  );
20
20
 
21
21
  assertTrue(
@@ -38,6 +38,21 @@ assertTrue(
38
38
  "has Export tab label",
39
39
  );
40
40
 
41
+ assertTrue(
42
+ overlaySrc.includes('"8 Knowledge"'),
43
+ "has Knowledge tab label",
44
+ );
45
+
46
+ assertTrue(
47
+ overlaySrc.includes('"9 Captures"'),
48
+ "has Captures tab label",
49
+ );
50
+
51
+ assertTrue(
52
+ overlaySrc.includes('"0 Health"'),
53
+ "has Health tab label",
54
+ );
55
+
41
56
  console.log("\n=== Overlay: Filter Mode ===");
42
57
 
43
58
  assertTrue(
@@ -69,10 +84,10 @@ assertTrue(
69
84
 
70
85
  console.log("\n=== Overlay: Tab Switching ===");
71
86
 
72
- // Supports 1-7 keys
87
+ // Supports 1-9,0 keys
73
88
  assertTrue(
74
- overlaySrc.includes('"1234567"'),
75
- "supports keys 1-7 for tab switching",
89
+ overlaySrc.includes('"1234567890"'),
90
+ "supports keys 1-9,0 for tab switching",
76
91
  );
77
92
 
78
93
  // Tab wraps with TAB_COUNT
@@ -86,6 +101,64 @@ assertTrue(
86
101
  "supports Shift+Tab for reverse tab switching",
87
102
  );
88
103
 
104
+ console.log("\n=== Overlay: Page/Half-Page Scroll ===");
105
+
106
+ assertTrue(
107
+ overlaySrc.includes("Key.pageUp"),
108
+ "has Key.pageUp handler",
109
+ );
110
+
111
+ assertTrue(
112
+ overlaySrc.includes("Key.pageDown"),
113
+ "has Key.pageDown handler",
114
+ );
115
+
116
+ assertTrue(
117
+ overlaySrc.includes('Key.ctrl("u")'),
118
+ "has Ctrl+U half-page scroll",
119
+ );
120
+
121
+ assertTrue(
122
+ overlaySrc.includes('Key.ctrl("d")'),
123
+ "has Ctrl+D half-page scroll",
124
+ );
125
+
126
+ console.log("\n=== Overlay: Mouse Support ===");
127
+
128
+ assertTrue(
129
+ overlaySrc.includes("parseSGRMouse"),
130
+ "has parseSGRMouse method",
131
+ );
132
+
133
+ assertTrue(
134
+ overlaySrc.includes("?1003h"),
135
+ "enables mouse tracking in constructor",
136
+ );
137
+
138
+ assertTrue(
139
+ overlaySrc.includes("?1003l"),
140
+ "disables mouse tracking in dispose",
141
+ );
142
+
143
+ console.log("\n=== Overlay: Collapsible Milestones ===");
144
+
145
+ assertTrue(
146
+ overlaySrc.includes("collapsedMilestones"),
147
+ "has collapsedMilestones state",
148
+ );
149
+
150
+ console.log("\n=== Overlay: Help Overlay ===");
151
+
152
+ assertTrue(
153
+ overlaySrc.includes("showHelp"),
154
+ "has showHelp state",
155
+ );
156
+
157
+ assertTrue(
158
+ overlaySrc.includes('data === "?"'),
159
+ "? key toggles help",
160
+ );
161
+
89
162
  console.log("\n=== Overlay: Export Key Interception ===");
90
163
 
91
164
  assertTrue(
@@ -106,13 +179,18 @@ assertTrue(
106
179
  console.log("\n=== Overlay: Footer ===");
107
180
 
108
181
  assertTrue(
109
- overlaySrc.includes("Tab/Shift+Tab/1-7"),
110
- "footer hint shows Tab, Shift+Tab, and 1-7 tab range",
182
+ overlaySrc.includes("1-9,0"),
183
+ "footer hint shows 1-9,0 tab range",
184
+ );
185
+
186
+ assertTrue(
187
+ overlaySrc.includes("PgUp/PgDn"),
188
+ "footer hint mentions PgUp/PgDn",
111
189
  );
112
190
 
113
191
  assertTrue(
114
- overlaySrc.includes("/ filter"),
115
- "footer hint mentions filter",
192
+ overlaySrc.includes("? help"),
193
+ "footer hint mentions ? for help",
116
194
  );
117
195
 
118
196
  console.log("\n=== Overlay: Scroll Offsets ===");