oh-my-codex 0.13.2 → 0.14.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 (296) hide show
  1. package/Cargo.lock +5 -5
  2. package/Cargo.toml +1 -1
  3. package/dist/autoresearch/__tests__/skill-validation.test.d.ts +2 -0
  4. package/dist/autoresearch/__tests__/skill-validation.test.d.ts.map +1 -0
  5. package/dist/autoresearch/__tests__/skill-validation.test.js +91 -0
  6. package/dist/autoresearch/__tests__/skill-validation.test.js.map +1 -0
  7. package/dist/autoresearch/skill-validation.d.ts +13 -0
  8. package/dist/autoresearch/skill-validation.d.ts.map +1 -0
  9. package/dist/autoresearch/skill-validation.js +165 -0
  10. package/dist/autoresearch/skill-validation.js.map +1 -0
  11. package/dist/catalog/__tests__/schema.test.js +6 -0
  12. package/dist/catalog/__tests__/schema.test.js.map +1 -1
  13. package/dist/cli/__tests__/autoresearch-guided.test.js +236 -273
  14. package/dist/cli/__tests__/autoresearch-guided.test.js.map +1 -1
  15. package/dist/cli/__tests__/autoresearch.test.js +64 -653
  16. package/dist/cli/__tests__/autoresearch.test.js.map +1 -1
  17. package/dist/cli/__tests__/index.test.js +7 -0
  18. package/dist/cli/__tests__/index.test.js.map +1 -1
  19. package/dist/cli/__tests__/nested-help-routing.test.js +2 -1
  20. package/dist/cli/__tests__/nested-help-routing.test.js.map +1 -1
  21. package/dist/cli/__tests__/question.test.d.ts +2 -0
  22. package/dist/cli/__tests__/question.test.d.ts.map +1 -0
  23. package/dist/cli/__tests__/question.test.js +113 -0
  24. package/dist/cli/__tests__/question.test.js.map +1 -0
  25. package/dist/cli/__tests__/session-search-help.test.js +1 -1
  26. package/dist/cli/__tests__/session-search-help.test.js.map +1 -1
  27. package/dist/cli/__tests__/setup-skills-overwrite.test.js +2 -0
  28. package/dist/cli/__tests__/setup-skills-overwrite.test.js.map +1 -1
  29. package/dist/cli/autoresearch-guided.d.ts +24 -7
  30. package/dist/cli/autoresearch-guided.d.ts.map +1 -1
  31. package/dist/cli/autoresearch-guided.js +189 -130
  32. package/dist/cli/autoresearch-guided.js.map +1 -1
  33. package/dist/cli/autoresearch.d.ts +3 -2
  34. package/dist/cli/autoresearch.d.ts.map +1 -1
  35. package/dist/cli/autoresearch.js +29 -305
  36. package/dist/cli/autoresearch.js.map +1 -1
  37. package/dist/cli/doctor.d.ts.map +1 -1
  38. package/dist/cli/doctor.js +43 -0
  39. package/dist/cli/doctor.js.map +1 -1
  40. package/dist/cli/index.d.ts +1 -1
  41. package/dist/cli/index.d.ts.map +1 -1
  42. package/dist/cli/index.js +8 -1
  43. package/dist/cli/index.js.map +1 -1
  44. package/dist/cli/question.d.ts +3 -0
  45. package/dist/cli/question.d.ts.map +1 -0
  46. package/dist/cli/question.js +182 -0
  47. package/dist/cli/question.js.map +1 -0
  48. package/dist/hooks/__tests__/analyze-routing-contract.test.js +22 -13
  49. package/dist/hooks/__tests__/analyze-routing-contract.test.js.map +1 -1
  50. package/dist/hooks/__tests__/anti-slop-workflow.test.js +3 -3
  51. package/dist/hooks/__tests__/anti-slop-workflow.test.js.map +1 -1
  52. package/dist/hooks/__tests__/debugger-log-recency-contract.test.js +2 -2
  53. package/dist/hooks/__tests__/debugger-log-recency-contract.test.js.map +1 -1
  54. package/dist/hooks/__tests__/deep-interview-contract.test.js +22 -5
  55. package/dist/hooks/__tests__/deep-interview-contract.test.js.map +1 -1
  56. package/dist/hooks/__tests__/explore-sparkshell-guidance-contract.test.js +2 -2
  57. package/dist/hooks/__tests__/explore-sparkshell-guidance-contract.test.js.map +1 -1
  58. package/dist/hooks/__tests__/keyword-detector.test.js +308 -17
  59. package/dist/hooks/__tests__/keyword-detector.test.js.map +1 -1
  60. package/dist/hooks/__tests__/notify-fallback-watcher.test.js +570 -2
  61. package/dist/hooks/__tests__/notify-fallback-watcher.test.js.map +1 -1
  62. package/dist/hooks/__tests__/notify-hook-auto-nudge.test.js +717 -16
  63. package/dist/hooks/__tests__/notify-hook-auto-nudge.test.js.map +1 -1
  64. package/dist/hooks/__tests__/notify-hook-cross-worktree-heartbeat.test.js +25 -0
  65. package/dist/hooks/__tests__/notify-hook-cross-worktree-heartbeat.test.js.map +1 -1
  66. package/dist/hooks/__tests__/notify-hook-managed-tmux.test.js +894 -1
  67. package/dist/hooks/__tests__/notify-hook-managed-tmux.test.js.map +1 -1
  68. package/dist/hooks/__tests__/notify-hook-ralph-resume.test.js +34 -0
  69. package/dist/hooks/__tests__/notify-hook-ralph-resume.test.js.map +1 -1
  70. package/dist/hooks/__tests__/notify-hook-tmux-heal.test.js +132 -0
  71. package/dist/hooks/__tests__/notify-hook-tmux-heal.test.js.map +1 -1
  72. package/dist/hooks/__tests__/prompt-guidance-contract.test.js +22 -4
  73. package/dist/hooks/__tests__/prompt-guidance-contract.test.js.map +1 -1
  74. package/dist/hooks/__tests__/prompt-guidance-fragments.test.js +4 -2
  75. package/dist/hooks/__tests__/prompt-guidance-fragments.test.js.map +1 -1
  76. package/dist/hooks/__tests__/prompt-guidance-test-helpers.d.ts +1 -0
  77. package/dist/hooks/__tests__/prompt-guidance-test-helpers.d.ts.map +1 -1
  78. package/dist/hooks/__tests__/prompt-guidance-test-helpers.js +4 -1
  79. package/dist/hooks/__tests__/prompt-guidance-test-helpers.js.map +1 -1
  80. package/dist/hooks/__tests__/prompt-guidance-wave-two.test.js +28 -0
  81. package/dist/hooks/__tests__/prompt-guidance-wave-two.test.js.map +1 -1
  82. package/dist/hooks/__tests__/prompt-orchestration-boundary.test.js +5 -4
  83. package/dist/hooks/__tests__/prompt-orchestration-boundary.test.js.map +1 -1
  84. package/dist/hooks/__tests__/prompt-team-routing.test.js +2 -2
  85. package/dist/hooks/__tests__/prompt-team-routing.test.js.map +1 -1
  86. package/dist/hooks/__tests__/triage-config.test.d.ts +2 -0
  87. package/dist/hooks/__tests__/triage-config.test.d.ts.map +1 -0
  88. package/dist/hooks/__tests__/triage-config.test.js +211 -0
  89. package/dist/hooks/__tests__/triage-config.test.js.map +1 -0
  90. package/dist/hooks/__tests__/triage-heuristic.test.d.ts +2 -0
  91. package/dist/hooks/__tests__/triage-heuristic.test.d.ts.map +1 -0
  92. package/dist/hooks/__tests__/triage-heuristic.test.js +230 -0
  93. package/dist/hooks/__tests__/triage-heuristic.test.js.map +1 -0
  94. package/dist/hooks/__tests__/triage-state.test.d.ts +2 -0
  95. package/dist/hooks/__tests__/triage-state.test.d.ts.map +1 -0
  96. package/dist/hooks/__tests__/triage-state.test.js +426 -0
  97. package/dist/hooks/__tests__/triage-state.test.js.map +1 -0
  98. package/dist/hooks/keyword-detector.d.ts +26 -7
  99. package/dist/hooks/keyword-detector.d.ts.map +1 -1
  100. package/dist/hooks/keyword-detector.js +97 -26
  101. package/dist/hooks/keyword-detector.js.map +1 -1
  102. package/dist/hooks/keyword-registry.d.ts.map +1 -1
  103. package/dist/hooks/keyword-registry.js +16 -9
  104. package/dist/hooks/keyword-registry.js.map +1 -1
  105. package/dist/hooks/prompt-guidance-contract.d.ts.map +1 -1
  106. package/dist/hooks/prompt-guidance-contract.js +28 -1
  107. package/dist/hooks/prompt-guidance-contract.js.map +1 -1
  108. package/dist/hooks/triage-config.d.ts +33 -0
  109. package/dist/hooks/triage-config.d.ts.map +1 -0
  110. package/dist/hooks/triage-config.js +87 -0
  111. package/dist/hooks/triage-config.js.map +1 -0
  112. package/dist/hooks/triage-heuristic.d.ts +20 -0
  113. package/dist/hooks/triage-heuristic.d.ts.map +1 -0
  114. package/dist/hooks/triage-heuristic.js +210 -0
  115. package/dist/hooks/triage-heuristic.js.map +1 -0
  116. package/dist/hooks/triage-state.d.ts +63 -0
  117. package/dist/hooks/triage-state.d.ts.map +1 -0
  118. package/dist/hooks/triage-state.js +138 -0
  119. package/dist/hooks/triage-state.js.map +1 -0
  120. package/dist/hud/__tests__/reconcile.test.js +20 -0
  121. package/dist/hud/__tests__/reconcile.test.js.map +1 -1
  122. package/dist/hud/reconcile.d.ts +1 -0
  123. package/dist/hud/reconcile.d.ts.map +1 -1
  124. package/dist/hud/reconcile.js +2 -1
  125. package/dist/hud/reconcile.js.map +1 -1
  126. package/dist/mcp/__tests__/state-server.test.js +1 -0
  127. package/dist/mcp/__tests__/state-server.test.js.map +1 -1
  128. package/dist/mcp/state-server.d.ts +8 -0
  129. package/dist/mcp/state-server.d.ts.map +1 -1
  130. package/dist/mcp/state-server.js +4 -0
  131. package/dist/mcp/state-server.js.map +1 -1
  132. package/dist/modes/__tests__/base-ralph-contract.test.js +15 -0
  133. package/dist/modes/__tests__/base-ralph-contract.test.js.map +1 -1
  134. package/dist/modes/base.d.ts +1 -0
  135. package/dist/modes/base.d.ts.map +1 -1
  136. package/dist/modes/base.js +22 -6
  137. package/dist/modes/base.js.map +1 -1
  138. package/dist/notifications/__tests__/index.test.js +78 -0
  139. package/dist/notifications/__tests__/index.test.js.map +1 -1
  140. package/dist/notifications/index.d.ts.map +1 -1
  141. package/dist/notifications/index.js +39 -22
  142. package/dist/notifications/index.js.map +1 -1
  143. package/dist/openclaw/index.d.ts +5 -3
  144. package/dist/openclaw/index.d.ts.map +1 -1
  145. package/dist/openclaw/index.js +5 -3
  146. package/dist/openclaw/index.js.map +1 -1
  147. package/dist/question/__tests__/client.test.d.ts +2 -0
  148. package/dist/question/__tests__/client.test.d.ts.map +1 -0
  149. package/dist/question/__tests__/client.test.js +70 -0
  150. package/dist/question/__tests__/client.test.js.map +1 -0
  151. package/dist/question/__tests__/deep-interview.test.d.ts +2 -0
  152. package/dist/question/__tests__/deep-interview.test.d.ts.map +1 -0
  153. package/dist/question/__tests__/deep-interview.test.js +108 -0
  154. package/dist/question/__tests__/deep-interview.test.js.map +1 -0
  155. package/dist/question/__tests__/policy.test.d.ts +2 -0
  156. package/dist/question/__tests__/policy.test.d.ts.map +1 -0
  157. package/dist/question/__tests__/policy.test.js +107 -0
  158. package/dist/question/__tests__/policy.test.js.map +1 -0
  159. package/dist/question/__tests__/renderer.test.d.ts +2 -0
  160. package/dist/question/__tests__/renderer.test.d.ts.map +1 -0
  161. package/dist/question/__tests__/renderer.test.js +88 -0
  162. package/dist/question/__tests__/renderer.test.js.map +1 -0
  163. package/dist/question/__tests__/state.test.d.ts +2 -0
  164. package/dist/question/__tests__/state.test.d.ts.map +1 -0
  165. package/dist/question/__tests__/state.test.js +55 -0
  166. package/dist/question/__tests__/state.test.js.map +1 -0
  167. package/dist/question/__tests__/types.test.d.ts +2 -0
  168. package/dist/question/__tests__/types.test.d.ts.map +1 -0
  169. package/dist/question/__tests__/types.test.js +44 -0
  170. package/dist/question/__tests__/types.test.js.map +1 -0
  171. package/dist/question/__tests__/ui.test.d.ts +2 -0
  172. package/dist/question/__tests__/ui.test.d.ts.map +1 -0
  173. package/dist/question/__tests__/ui.test.js +169 -0
  174. package/dist/question/__tests__/ui.test.js.map +1 -0
  175. package/dist/question/client.d.ts +54 -0
  176. package/dist/question/client.d.ts.map +1 -0
  177. package/dist/question/client.js +77 -0
  178. package/dist/question/client.js.map +1 -0
  179. package/dist/question/deep-interview.d.ts +27 -0
  180. package/dist/question/deep-interview.d.ts.map +1 -0
  181. package/dist/question/deep-interview.js +101 -0
  182. package/dist/question/deep-interview.js.map +1 -0
  183. package/dist/question/policy.d.ts +18 -0
  184. package/dist/question/policy.d.ts.map +1 -0
  185. package/dist/question/policy.js +77 -0
  186. package/dist/question/policy.js.map +1 -0
  187. package/dist/question/renderer.d.ts +18 -0
  188. package/dist/question/renderer.d.ts.map +1 -0
  189. package/dist/question/renderer.js +128 -0
  190. package/dist/question/renderer.js.map +1 -0
  191. package/dist/question/state.d.ts +19 -0
  192. package/dist/question/state.d.ts.map +1 -0
  193. package/dist/question/state.js +108 -0
  194. package/dist/question/state.js.map +1 -0
  195. package/dist/question/types.d.ts +66 -0
  196. package/dist/question/types.d.ts.map +1 -0
  197. package/dist/question/types.js +82 -0
  198. package/dist/question/types.js.map +1 -0
  199. package/dist/question/ui.d.ts +38 -0
  200. package/dist/question/ui.d.ts.map +1 -0
  201. package/dist/question/ui.js +321 -0
  202. package/dist/question/ui.js.map +1 -0
  203. package/dist/ralph/contract.d.ts +1 -1
  204. package/dist/ralph/contract.d.ts.map +1 -1
  205. package/dist/ralph/contract.js +4 -1
  206. package/dist/ralph/contract.js.map +1 -1
  207. package/dist/ralplan/runtime.js +1 -1
  208. package/dist/ralplan/runtime.js.map +1 -1
  209. package/dist/runtime/__tests__/run-loop.test.d.ts +2 -0
  210. package/dist/runtime/__tests__/run-loop.test.d.ts.map +1 -0
  211. package/dist/runtime/__tests__/run-loop.test.js +35 -0
  212. package/dist/runtime/__tests__/run-loop.test.js.map +1 -0
  213. package/dist/runtime/__tests__/run-outcome.test.d.ts +2 -0
  214. package/dist/runtime/__tests__/run-outcome.test.d.ts.map +1 -0
  215. package/dist/runtime/__tests__/run-outcome.test.js +64 -0
  216. package/dist/runtime/__tests__/run-outcome.test.js.map +1 -0
  217. package/dist/runtime/run-loop.d.ts +41 -0
  218. package/dist/runtime/run-loop.d.ts.map +1 -0
  219. package/dist/runtime/run-loop.js +46 -0
  220. package/dist/runtime/run-loop.js.map +1 -0
  221. package/dist/runtime/run-outcome.d.ts +28 -0
  222. package/dist/runtime/run-outcome.d.ts.map +1 -0
  223. package/dist/runtime/run-outcome.js +136 -0
  224. package/dist/runtime/run-outcome.js.map +1 -0
  225. package/dist/runtime/run-state.d.ts +36 -0
  226. package/dist/runtime/run-state.d.ts.map +1 -0
  227. package/dist/runtime/run-state.js +110 -0
  228. package/dist/runtime/run-state.js.map +1 -0
  229. package/dist/scripts/__tests__/codex-native-hook.test.js +1128 -85
  230. package/dist/scripts/__tests__/codex-native-hook.test.js.map +1 -1
  231. package/dist/scripts/codex-native-hook.d.ts +2 -0
  232. package/dist/scripts/codex-native-hook.d.ts.map +1 -1
  233. package/dist/scripts/codex-native-hook.js +199 -11
  234. package/dist/scripts/codex-native-hook.js.map +1 -1
  235. package/dist/scripts/notify-fallback-watcher.js +81 -2
  236. package/dist/scripts/notify-fallback-watcher.js.map +1 -1
  237. package/dist/scripts/notify-hook/auto-nudge.d.ts +27 -0
  238. package/dist/scripts/notify-hook/auto-nudge.d.ts.map +1 -1
  239. package/dist/scripts/notify-hook/auto-nudge.js +83 -20
  240. package/dist/scripts/notify-hook/auto-nudge.js.map +1 -1
  241. package/dist/scripts/notify-hook/managed-tmux.d.ts.map +1 -1
  242. package/dist/scripts/notify-hook/managed-tmux.js +64 -38
  243. package/dist/scripts/notify-hook/managed-tmux.js.map +1 -1
  244. package/dist/scripts/notify-hook/ralph-session-resume.js +1 -1
  245. package/dist/scripts/notify-hook/ralph-session-resume.js.map +1 -1
  246. package/dist/scripts/notify-hook.js +15 -5
  247. package/dist/scripts/notify-hook.js.map +1 -1
  248. package/dist/scripts/sync-prompt-guidance-fragments.js +5 -0
  249. package/dist/scripts/sync-prompt-guidance-fragments.js.map +1 -1
  250. package/dist/state/__tests__/operations-ralph-phase.test.js +21 -0
  251. package/dist/state/__tests__/operations-ralph-phase.test.js.map +1 -1
  252. package/dist/state/__tests__/workflow-transition.test.js +11 -0
  253. package/dist/state/__tests__/workflow-transition.test.js.map +1 -1
  254. package/dist/state/operations.d.ts.map +1 -1
  255. package/dist/state/operations.js +15 -0
  256. package/dist/state/operations.js.map +1 -1
  257. package/dist/state/workflow-transition-reconcile.d.ts.map +1 -1
  258. package/dist/state/workflow-transition-reconcile.js +14 -1
  259. package/dist/state/workflow-transition-reconcile.js.map +1 -1
  260. package/dist/state/workflow-transition.d.ts.map +1 -1
  261. package/dist/state/workflow-transition.js +3 -1
  262. package/dist/state/workflow-transition.js.map +1 -1
  263. package/dist/team/__tests__/followup-planner.test.js +15 -0
  264. package/dist/team/__tests__/followup-planner.test.js.map +1 -1
  265. package/dist/team/__tests__/role-router.test.js +41 -0
  266. package/dist/team/__tests__/role-router.test.js.map +1 -1
  267. package/dist/team/followup-planner.d.ts.map +1 -1
  268. package/dist/team/followup-planner.js +31 -9
  269. package/dist/team/followup-planner.js.map +1 -1
  270. package/dist/team/role-router.d.ts.map +1 -1
  271. package/dist/team/role-router.js +73 -0
  272. package/dist/team/role-router.js.map +1 -1
  273. package/package.json +3 -2
  274. package/prompts/dependency-expert.md +3 -0
  275. package/prompts/executor.md +5 -0
  276. package/prompts/explore.md +2 -0
  277. package/prompts/planner.md +5 -0
  278. package/prompts/product-analyst.md +8 -8
  279. package/prompts/researcher.md +78 -30
  280. package/prompts/verifier.md +4 -0
  281. package/skills/autoresearch/SKILL.md +68 -0
  282. package/skills/deep-interview/SKILL.md +10 -9
  283. package/skills/help/SKILL.md +3 -1
  284. package/skills/ralplan/SKILL.md +1 -0
  285. package/skills/team/SKILL.md +1 -0
  286. package/skills/ultrawork/SKILL.md +1 -0
  287. package/src/scripts/__tests__/codex-native-hook.test.ts +1495 -188
  288. package/src/scripts/codex-native-hook.ts +235 -19
  289. package/src/scripts/notify-fallback-watcher.ts +92 -2
  290. package/src/scripts/notify-hook/auto-nudge.ts +89 -20
  291. package/src/scripts/notify-hook/managed-tmux.ts +70 -31
  292. package/src/scripts/notify-hook/ralph-session-resume.ts +1 -1
  293. package/src/scripts/notify-hook.ts +23 -5
  294. package/src/scripts/sync-prompt-guidance-fragments.ts +4 -0
  295. package/templates/AGENTS.md +48 -37
  296. package/templates/catalog-manifest.json +7 -0
@@ -0,0 +1,230 @@
1
+ import { describe, it } from 'node:test';
2
+ import assert from 'node:assert/strict';
3
+ import { performance } from 'node:perf_hooks';
4
+ import { triagePrompt } from '../triage-heuristic.js';
5
+ // ---------------------------------------------------------------------------
6
+ // Helpers
7
+ // ---------------------------------------------------------------------------
8
+ function assertLane(prompt, lane) {
9
+ const result = triagePrompt(prompt);
10
+ assert.equal(result.lane, lane, `prompt="${prompt}" expected lane=${lane} got lane=${result.lane} (reason=${result.reason})`);
11
+ }
12
+ function assertLightDestination(prompt, destination) {
13
+ const result = triagePrompt(prompt);
14
+ assert.equal(result.lane, 'LIGHT', `prompt="${prompt}" expected LIGHT got ${result.lane} (reason=${result.reason})`);
15
+ assert.equal(result.destination, destination, `prompt="${prompt}" expected destination=${destination} got ${result.destination}`);
16
+ }
17
+ // ---------------------------------------------------------------------------
18
+ // Canonical corpus (also used for performance benchmark)
19
+ // ---------------------------------------------------------------------------
20
+ const CANONICAL_CORPUS = [
21
+ // PASS — trivial
22
+ 'hi',
23
+ 'thanks',
24
+ 'yes',
25
+ '',
26
+ ' ',
27
+ 'fix the thing',
28
+ 'make it better',
29
+ // PASS — opt-out
30
+ 'add dark mode toggle to the settings page, but just chat about it',
31
+ 'make the button blue, no workflow',
32
+ 'implement soft delete, don\'t route',
33
+ 'refactor auth, plain answer only',
34
+ 'explain this but talk through it',
35
+ // LIGHT/explore
36
+ 'explain this function',
37
+ 'what does this error mean',
38
+ 'where is auth implemented',
39
+ // LIGHT/executor
40
+ 'fix typo in src/foo.ts',
41
+ 'add null check to line 42',
42
+ 'rename function processFoo in src/bar.ts',
43
+ // LIGHT/designer
44
+ 'make the button blue',
45
+ 'style this page',
46
+ 'adjust spacing on the settings panel',
47
+ 'redesign the settings page layout',
48
+ // HEAVY
49
+ 'add dark mode toggle to the settings page',
50
+ 'implement soft delete across the ORM layer',
51
+ 'refactor the auth flow to use session cookies',
52
+ 'redesign the auth flow',
53
+ 'redesign the deployment pipeline',
54
+ ];
55
+ // ---------------------------------------------------------------------------
56
+ // 1. PASS cases
57
+ // ---------------------------------------------------------------------------
58
+ describe('triagePrompt — PASS (trivial acknowledgements)', () => {
59
+ const trivialCases = ['hi', 'thanks', 'yes'];
60
+ for (const prompt of trivialCases) {
61
+ it(`routes "${prompt}" to PASS`, () => {
62
+ assertLane(prompt, 'PASS');
63
+ });
64
+ }
65
+ it('routes empty string to PASS', () => {
66
+ assertLane('', 'PASS');
67
+ });
68
+ it('routes whitespace-only string to PASS', () => {
69
+ assertLane(' ', 'PASS');
70
+ });
71
+ it('routes "fix the thing" (too short / vague) to PASS', () => {
72
+ assertLane('fix the thing', 'PASS');
73
+ });
74
+ it('routes "make it better" (too short / vague) to PASS', () => {
75
+ assertLane('make it better', 'PASS');
76
+ });
77
+ });
78
+ describe('triagePrompt — PASS (explicit opt-out phrases)', () => {
79
+ it('routes HEAVY-shaped prompt with "just chat" to PASS', () => {
80
+ assertLane('add dark mode toggle to the settings page, but just chat about it', 'PASS');
81
+ });
82
+ it('routes "no workflow" opt-out to PASS', () => {
83
+ assertLane('make the button blue, no workflow', 'PASS');
84
+ });
85
+ it('routes "don\'t route" opt-out to PASS', () => {
86
+ assertLane("implement soft delete, don't route", 'PASS');
87
+ });
88
+ it('routes "plain answer only" to PASS', () => {
89
+ assertLane('refactor auth, plain answer only', 'PASS');
90
+ });
91
+ it('routes "talk through it" to PASS', () => {
92
+ assertLane('explain this but talk through it', 'PASS');
93
+ });
94
+ });
95
+ // ---------------------------------------------------------------------------
96
+ // 2. LIGHT / explore
97
+ // ---------------------------------------------------------------------------
98
+ describe('triagePrompt — LIGHT/explore', () => {
99
+ it('routes "explain this function" to explore', () => {
100
+ assertLightDestination('explain this function', 'explore');
101
+ });
102
+ it('routes "what does this error mean" to explore', () => {
103
+ assertLightDestination('what does this error mean', 'explore');
104
+ });
105
+ it('routes "where is auth implemented" to explore', () => {
106
+ assertLightDestination('where is auth implemented', 'explore');
107
+ });
108
+ });
109
+ // ---------------------------------------------------------------------------
110
+ // 3. LIGHT / executor (anchored edits)
111
+ // ---------------------------------------------------------------------------
112
+ describe('triagePrompt — LIGHT/executor (anchored edits)', () => {
113
+ it('routes "fix typo in src/foo.ts" to executor', () => {
114
+ assertLightDestination('fix typo in src/foo.ts', 'executor');
115
+ });
116
+ it('routes "add null check to line 42" to executor', () => {
117
+ assertLightDestination('add null check to line 42', 'executor');
118
+ });
119
+ it('routes "rename function processFoo in src/bar.ts" to executor', () => {
120
+ assertLightDestination('rename function processFoo in src/bar.ts', 'executor');
121
+ });
122
+ });
123
+ // ---------------------------------------------------------------------------
124
+ // 4. LIGHT / designer
125
+ // ---------------------------------------------------------------------------
126
+ describe('triagePrompt — LIGHT/designer', () => {
127
+ it('routes "make the button blue" to designer', () => {
128
+ assertLightDestination('make the button blue', 'designer');
129
+ });
130
+ it('routes "style this page" to designer', () => {
131
+ assertLightDestination('style this page', 'designer');
132
+ });
133
+ it('routes "adjust spacing on the settings panel" to designer', () => {
134
+ assertLightDestination('adjust spacing on the settings panel', 'designer');
135
+ });
136
+ it('routes visual redesign prompts to designer', () => {
137
+ assertLightDestination('redesign the settings page layout', 'designer');
138
+ });
139
+ });
140
+ // ---------------------------------------------------------------------------
141
+ // 5. HEAVY
142
+ // ---------------------------------------------------------------------------
143
+ describe('triagePrompt — HEAVY', () => {
144
+ it('routes "add dark mode toggle to the settings page" to HEAVY', () => {
145
+ assertLane('add dark mode toggle to the settings page', 'HEAVY');
146
+ });
147
+ it('routes "implement soft delete across the ORM layer" to HEAVY', () => {
148
+ assertLane('implement soft delete across the ORM layer', 'HEAVY');
149
+ });
150
+ it('routes "refactor the auth flow to use session cookies" to HEAVY', () => {
151
+ assertLane('refactor the auth flow to use session cookies', 'HEAVY');
152
+ });
153
+ it('does not route non-visual auth redesign prompts to LIGHT/designer', () => {
154
+ const result = triagePrompt('redesign the auth flow');
155
+ assert.equal(result.lane, 'HEAVY', `expected HEAVY got ${result.lane} (reason=${result.reason})`);
156
+ assert.equal(result.destination, 'autopilot');
157
+ });
158
+ it('routes mixed auth page flow redesign prompts to HEAVY instead of designer', () => {
159
+ const result = triagePrompt('redesign the auth page flow');
160
+ assert.equal(result.lane, 'HEAVY', `expected HEAVY got ${result.lane} (reason=${result.reason})`);
161
+ assert.equal(result.destination, 'autopilot');
162
+ });
163
+ it('does not route non-visual deployment redesign prompts to LIGHT/designer', () => {
164
+ const result = triagePrompt('redesign the deployment pipeline');
165
+ assert.equal(result.lane, 'HEAVY', `expected HEAVY got ${result.lane} (reason=${result.reason})`);
166
+ assert.equal(result.destination, 'autopilot');
167
+ });
168
+ it('sets destination=autopilot for HEAVY decisions', () => {
169
+ const result = triagePrompt('add dark mode toggle to the settings page');
170
+ assert.equal(result.destination, 'autopilot', `expected destination=autopilot got ${result.destination}`);
171
+ });
172
+ });
173
+ // ---------------------------------------------------------------------------
174
+ // 6. Punctuation / casing regression
175
+ // ---------------------------------------------------------------------------
176
+ describe('triagePrompt — punctuation and casing regression', () => {
177
+ it('"EXPLAIN this function" → LIGHT/explore (all-caps)', () => {
178
+ assertLightDestination('EXPLAIN this function', 'explore');
179
+ });
180
+ it('"Explain This Function." → LIGHT/explore (title case + period)', () => {
181
+ assertLightDestination('Explain This Function.', 'explore');
182
+ });
183
+ it('"FIX TYPO IN src/foo.ts" → LIGHT/executor (all-caps)', () => {
184
+ assertLightDestination('FIX TYPO IN src/foo.ts', 'executor');
185
+ });
186
+ it('"Add Dark Mode Toggle To The Settings Page!" → HEAVY (title case + exclamation)', () => {
187
+ assertLane('Add Dark Mode Toggle To The Settings Page!', 'HEAVY');
188
+ });
189
+ });
190
+ // ---------------------------------------------------------------------------
191
+ // 7. Determinism / purity proof
192
+ // ---------------------------------------------------------------------------
193
+ describe('triagePrompt — determinism', () => {
194
+ it('returns identical results across 1000 calls for the same input', () => {
195
+ const prompt = 'add dark mode toggle to the settings page';
196
+ const first = triagePrompt(prompt);
197
+ for (let i = 1; i < 1000; i++) {
198
+ const result = triagePrompt(prompt);
199
+ assert.equal(result.lane, first.lane, `non-deterministic: call ${i} returned lane=${result.lane}, first was ${first.lane}`);
200
+ assert.equal(result.destination, first.destination, `non-deterministic: call ${i} returned destination=${result.destination}, first was ${first.destination}`);
201
+ assert.equal(result.reason, first.reason, `non-deterministic: call ${i} returned reason=${result.reason}, first was ${first.reason}`);
202
+ }
203
+ });
204
+ });
205
+ // ---------------------------------------------------------------------------
206
+ // 8. Performance benchmark (soft assertion — avg < 1 ms per call)
207
+ // ---------------------------------------------------------------------------
208
+ describe('triagePrompt — performance benchmark', () => {
209
+ it('classifies the full canonical corpus 1000x with avg < 1 ms per call', () => {
210
+ const N = 1000;
211
+ const corpusLength = CANONICAL_CORPUS.length;
212
+ const totalCalls = N * corpusLength;
213
+ // Warm-up pass (avoid JIT cold-start skewing results)
214
+ for (const prompt of CANONICAL_CORPUS) {
215
+ triagePrompt(prompt);
216
+ }
217
+ const start = performance.now();
218
+ for (let i = 0; i < N; i++) {
219
+ for (const prompt of CANONICAL_CORPUS) {
220
+ triagePrompt(prompt);
221
+ }
222
+ }
223
+ const elapsed = performance.now() - start;
224
+ const avgPerCall = elapsed / totalCalls;
225
+ console.log(`[triage-heuristic benchmark] ${totalCalls} calls in ${elapsed.toFixed(2)} ms` +
226
+ ` — avg ${avgPerCall.toFixed(4)} ms/call (corpus size: ${corpusLength})`);
227
+ assert.ok(avgPerCall < 1.0, `avg per call ${avgPerCall.toFixed(4)} ms exceeded 1 ms soft bound (total: ${elapsed.toFixed(2)} ms over ${totalCalls} calls)`);
228
+ });
229
+ });
230
+ //# sourceMappingURL=triage-heuristic.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"triage-heuristic.test.js","sourceRoot":"","sources":["../../../src/hooks/__tests__/triage-heuristic.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=triage-state.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"triage-state.test.d.ts","sourceRoot":"","sources":["../../../src/hooks/__tests__/triage-state.test.ts"],"names":[],"mappings":""}