@jstn-sdk/rcs 0.1.0 → 0.1.1

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 (1736) hide show
  1. package/README.md +142 -102
  2. package/dist/agents/definitions.d.ts.map +1 -1
  3. package/dist/agents/definitions.js +0 -101
  4. package/dist/agents/definitions.js.map +1 -1
  5. package/dist/blueprint/runtime.d.ts +52 -0
  6. package/dist/blueprint/runtime.d.ts.map +1 -0
  7. package/dist/{ralplan → blueprint}/runtime.js +19 -19
  8. package/dist/blueprint/runtime.js.map +1 -0
  9. package/dist/catalog/reader.d.ts.map +1 -1
  10. package/dist/catalog/reader.js +8 -2
  11. package/dist/catalog/reader.js.map +1 -1
  12. package/dist/catalog/schema.js +1 -1
  13. package/dist/catalog/schema.js.map +1 -1
  14. package/dist/cli/forge.d.ts +17 -0
  15. package/dist/cli/{ralph.d.ts.map → forge.d.ts.map} +1 -1
  16. package/dist/cli/{ralph.js → forge.js} +82 -82
  17. package/dist/cli/{ralph.js.map → forge.js.map} +1 -1
  18. package/dist/cli/index.d.ts +1 -1
  19. package/dist/cli/index.js +15 -15
  20. package/dist/cli/setup.d.ts.map +1 -1
  21. package/dist/cli/setup.js +2 -3
  22. package/dist/cli/setup.js.map +1 -1
  23. package/dist/cli/star-prompt.js +2 -2
  24. package/dist/cli/star-prompt.js.map +1 -1
  25. package/dist/cli/state.js +1 -1
  26. package/dist/cli/team.d.ts.map +1 -1
  27. package/dist/cli/team.js +3 -2
  28. package/dist/cli/team.js.map +1 -1
  29. package/dist/cli/tmux-hook.d.ts.map +1 -1
  30. package/dist/cli/tmux-hook.js +9 -1
  31. package/dist/cli/tmux-hook.js.map +1 -1
  32. package/dist/config/generator.d.ts +1 -1
  33. package/dist/config/generator.d.ts.map +1 -1
  34. package/dist/config/generator.js +1 -1
  35. package/dist/config/generator.js.map +1 -1
  36. package/dist/forge/contract.d.ts +17 -0
  37. package/dist/{ralph → forge}/contract.d.ts.map +1 -1
  38. package/dist/{ralph → forge}/contract.js +16 -16
  39. package/dist/{ralph → forge}/contract.js.map +1 -1
  40. package/dist/{ralph → forge}/persistence.d.ts +5 -5
  41. package/dist/{ralph → forge}/persistence.d.ts.map +1 -1
  42. package/dist/{ralph → forge}/persistence.js +7 -6
  43. package/dist/forge/persistence.js.map +1 -0
  44. package/dist/hooks/agents-overlay.d.ts +1 -1
  45. package/dist/hooks/agents-overlay.d.ts.map +1 -1
  46. package/dist/hooks/agents-overlay.js +37 -31
  47. package/dist/hooks/agents-overlay.js.map +1 -1
  48. package/dist/hooks/extensibility/dispatcher.d.ts.map +1 -1
  49. package/dist/hooks/extensibility/dispatcher.js +82 -14
  50. package/dist/hooks/extensibility/dispatcher.js.map +1 -1
  51. package/dist/hooks/keyword-detector.d.ts +8 -8
  52. package/dist/hooks/keyword-detector.d.ts.map +1 -1
  53. package/dist/hooks/keyword-detector.js +94 -64
  54. package/dist/hooks/keyword-detector.js.map +1 -1
  55. package/dist/hooks/keyword-registry.d.ts.map +1 -1
  56. package/dist/hooks/keyword-registry.js +9 -11
  57. package/dist/hooks/keyword-registry.js.map +1 -1
  58. package/dist/hooks/prompt-guidance-contract.d.ts.map +1 -1
  59. package/dist/hooks/prompt-guidance-contract.js +10 -21
  60. package/dist/hooks/prompt-guidance-contract.js.map +1 -1
  61. package/dist/hooks/task-size-detector.js +2 -2
  62. package/dist/hooks/task-size-detector.js.map +1 -1
  63. package/dist/hooks/triage-state.d.ts +1 -1
  64. package/dist/hooks/triage-state.js +1 -1
  65. package/dist/hud/colors.d.ts +2 -2
  66. package/dist/hud/colors.js +2 -2
  67. package/dist/hud/render.js +21 -21
  68. package/dist/hud/render.js.map +1 -1
  69. package/dist/hud/state.d.ts +3 -3
  70. package/dist/hud/state.d.ts.map +1 -1
  71. package/dist/hud/state.js +18 -15
  72. package/dist/hud/state.js.map +1 -1
  73. package/dist/hud/types.d.ts +6 -6
  74. package/dist/hud/types.d.ts.map +1 -1
  75. package/dist/mcp/bootstrap.d.ts.map +1 -1
  76. package/dist/mcp/bootstrap.js +36 -2
  77. package/dist/mcp/bootstrap.js.map +1 -1
  78. package/dist/mcp/state-paths.d.ts +1 -0
  79. package/dist/mcp/state-paths.d.ts.map +1 -1
  80. package/dist/mcp/state-paths.js +4 -1
  81. package/dist/mcp/state-paths.js.map +1 -1
  82. package/dist/mcp/state-server.d.ts +4 -4
  83. package/dist/mcp/state-server.js +2 -2
  84. package/dist/mcp/state-server.js.map +1 -1
  85. package/dist/modes/base.d.ts +2 -2
  86. package/dist/modes/base.d.ts.map +1 -1
  87. package/dist/modes/base.js +29 -26
  88. package/dist/modes/base.js.map +1 -1
  89. package/dist/notifications/reply-listener.d.ts.map +1 -1
  90. package/dist/notifications/reply-listener.js +7 -1
  91. package/dist/notifications/reply-listener.js.map +1 -1
  92. package/dist/notifications/tmux.d.ts.map +1 -1
  93. package/dist/notifications/tmux.js +39 -6
  94. package/dist/notifications/tmux.js.map +1 -1
  95. package/dist/pipeline/index.d.ts +7 -6
  96. package/dist/pipeline/index.d.ts.map +1 -1
  97. package/dist/pipeline/index.js +5 -4
  98. package/dist/pipeline/index.js.map +1 -1
  99. package/dist/pipeline/orchestrator.d.ts +5 -5
  100. package/dist/pipeline/orchestrator.js +25 -25
  101. package/dist/pipeline/orchestrator.js.map +1 -1
  102. package/dist/pipeline/stages/blueprint.d.ts +25 -0
  103. package/dist/pipeline/stages/blueprint.d.ts.map +1 -0
  104. package/dist/pipeline/stages/{ralplan.js → blueprint.js} +16 -16
  105. package/dist/pipeline/stages/blueprint.js.map +1 -0
  106. package/dist/pipeline/stages/code-review.d.ts +2 -2
  107. package/dist/pipeline/stages/code-review.js +6 -6
  108. package/dist/pipeline/stages/code-review.js.map +1 -1
  109. package/dist/pipeline/stages/forge-verify.d.ts +50 -0
  110. package/dist/pipeline/stages/forge-verify.d.ts.map +1 -0
  111. package/dist/pipeline/stages/{ralph-verify.js → forge-verify.js} +21 -24
  112. package/dist/pipeline/stages/forge-verify.js.map +1 -0
  113. package/dist/pipeline/stages/team-exec.d.ts +1 -1
  114. package/dist/pipeline/stages/team-exec.js +19 -19
  115. package/dist/pipeline/stages/team-exec.js.map +1 -1
  116. package/dist/pipeline/types.d.ts +12 -12
  117. package/dist/pipeline/types.d.ts.map +1 -1
  118. package/dist/pipeline/types.js +1 -1
  119. package/dist/planning/artifacts.d.ts +3 -4
  120. package/dist/planning/artifacts.d.ts.map +1 -1
  121. package/dist/planning/artifacts.js +2 -3
  122. package/dist/planning/artifacts.js.map +1 -1
  123. package/dist/question/policy.js +1 -1
  124. package/dist/runtime/bridge.d.ts.map +1 -1
  125. package/dist/runtime/bridge.js +70 -13
  126. package/dist/runtime/bridge.js.map +1 -1
  127. package/dist/scripts/codex-native-hook.js +30 -30
  128. package/dist/scripts/codex-native-hook.js.map +1 -1
  129. package/dist/scripts/eval/eval-cross-server-party-flow.d.ts +3 -0
  130. package/dist/scripts/eval/eval-cross-server-party-flow.d.ts.map +1 -0
  131. package/dist/scripts/eval/eval-cross-server-party-flow.js +12 -0
  132. package/dist/scripts/eval/eval-cross-server-party-flow.js.map +1 -0
  133. package/dist/scripts/eval/eval-gui-onboarding-clarity.d.ts +3 -0
  134. package/dist/scripts/eval/eval-gui-onboarding-clarity.d.ts.map +1 -0
  135. package/dist/scripts/eval/eval-gui-onboarding-clarity.js +17 -0
  136. package/dist/scripts/eval/eval-gui-onboarding-clarity.js.map +1 -0
  137. package/dist/scripts/eval/eval-liveops-reward-loop-balance.d.ts +3 -0
  138. package/dist/scripts/eval/eval-liveops-reward-loop-balance.d.ts.map +1 -0
  139. package/dist/scripts/eval/eval-liveops-reward-loop-balance.js +12 -0
  140. package/dist/scripts/eval/eval-liveops-reward-loop-balance.js.map +1 -0
  141. package/dist/scripts/eval/eval-profile-datastore-recovery.d.ts +3 -0
  142. package/dist/scripts/eval/eval-profile-datastore-recovery.d.ts.map +1 -0
  143. package/dist/scripts/eval/eval-profile-datastore-recovery.js +17 -0
  144. package/dist/scripts/eval/eval-profile-datastore-recovery.js.map +1 -0
  145. package/dist/scripts/eval/eval-remote-contract-hardening.d.ts +3 -0
  146. package/dist/scripts/eval/eval-remote-contract-hardening.d.ts.map +1 -0
  147. package/dist/scripts/eval/eval-remote-contract-hardening.js +17 -0
  148. package/dist/scripts/eval/eval-remote-contract-hardening.js.map +1 -0
  149. package/dist/scripts/notify-fallback-watcher.js +140 -139
  150. package/dist/scripts/notify-fallback-watcher.js.map +1 -1
  151. package/dist/scripts/notify-hook/forge-session-resume.d.ts +23 -0
  152. package/dist/scripts/notify-hook/{ralph-session-resume.d.ts.map → forge-session-resume.d.ts.map} +1 -1
  153. package/dist/scripts/notify-hook/{ralph-session-resume.js → forge-session-resume.js} +37 -36
  154. package/dist/scripts/notify-hook/{ralph-session-resume.js.map → forge-session-resume.js.map} +1 -1
  155. package/dist/scripts/notify-hook/team-dispatch.d.ts.map +1 -1
  156. package/dist/scripts/notify-hook/team-dispatch.js +34 -4
  157. package/dist/scripts/notify-hook/team-dispatch.js.map +1 -1
  158. package/dist/scripts/notify-hook/visual-verdict.js +3 -3
  159. package/dist/scripts/notify-hook.js +9 -9
  160. package/dist/scripts/run-test-files.js +1 -1
  161. package/dist/scripts/run-test-files.js.map +1 -1
  162. package/dist/scripts/surface-taxonomy.d.ts +23 -0
  163. package/dist/scripts/surface-taxonomy.d.ts.map +1 -0
  164. package/dist/scripts/surface-taxonomy.js +271 -0
  165. package/dist/scripts/surface-taxonomy.js.map +1 -0
  166. package/dist/scripts/sync-plugin-mirror.d.ts.map +1 -1
  167. package/dist/scripts/sync-plugin-mirror.js +5 -4
  168. package/dist/scripts/sync-plugin-mirror.js.map +1 -1
  169. package/dist/scripts/tmux-hook-engine.d.ts +1 -1
  170. package/dist/scripts/tmux-hook-engine.d.ts.map +1 -1
  171. package/dist/scripts/tmux-hook-engine.js +29 -20
  172. package/dist/scripts/tmux-hook-engine.js.map +1 -1
  173. package/dist/state/operations.d.ts +1 -1
  174. package/dist/state/operations.d.ts.map +1 -1
  175. package/dist/state/operations.js +18 -18
  176. package/dist/state/operations.js.map +1 -1
  177. package/dist/state/skill-active.d.ts +13 -1
  178. package/dist/state/skill-active.d.ts.map +1 -1
  179. package/dist/state/skill-active.js +38 -17
  180. package/dist/state/skill-active.js.map +1 -1
  181. package/dist/state/workflow-transition.d.ts +6 -5
  182. package/dist/state/workflow-transition.d.ts.map +1 -1
  183. package/dist/state/workflow-transition.js +27 -15
  184. package/dist/state/workflow-transition.js.map +1 -1
  185. package/dist/team/contracts.d.ts +1 -1
  186. package/dist/team/contracts.js +2 -2
  187. package/dist/team/followup-planner.d.ts +2 -2
  188. package/dist/team/followup-planner.d.ts.map +1 -1
  189. package/dist/team/followup-planner.js +16 -14
  190. package/dist/team/followup-planner.js.map +1 -1
  191. package/dist/team/idle-nudge.d.ts.map +1 -1
  192. package/dist/team/idle-nudge.js +3 -2
  193. package/dist/team/idle-nudge.js.map +1 -1
  194. package/dist/team/leader-activity.js +1 -1
  195. package/dist/team/model-contract.d.ts.map +1 -1
  196. package/dist/team/model-contract.js +4 -1
  197. package/dist/team/model-contract.js.map +1 -1
  198. package/dist/team/orchestrator.js +4 -4
  199. package/dist/team/orchestrator.js.map +1 -1
  200. package/dist/team/role-router.js +3 -3
  201. package/dist/team/role-router.js.map +1 -1
  202. package/dist/team/state/dispatch.d.ts.map +1 -1
  203. package/dist/team/state/dispatch.js +4 -1
  204. package/dist/team/state/dispatch.js.map +1 -1
  205. package/dist/team/tmux-session.d.ts +4 -0
  206. package/dist/team/tmux-session.d.ts.map +1 -1
  207. package/dist/team/tmux-session.js +42 -9
  208. package/dist/team/tmux-session.js.map +1 -1
  209. package/dist/team/worktree.d.ts +1 -1
  210. package/dist/utils/platform-command.d.ts.map +1 -1
  211. package/dist/utils/platform-command.js +9 -0
  212. package/dist/utils/platform-command.js.map +1 -1
  213. package/dist/verification/verifier.d.ts +1 -1
  214. package/dist/verification/verifier.js +2 -2
  215. package/docs/STATE_MODEL.md +24 -24
  216. package/docs/agents.html +8 -16
  217. package/docs/archive/README.md +15 -0
  218. package/docs/{prompt-migration-changelog.md → archive/prompt-migration-changelog.md} +0 -11
  219. package/docs/{release-body-0.9.0.md → archive/release-body-0.9.0.md} +6 -24
  220. package/docs/{release-body-0.9.1.md → archive/release-body-0.9.1.md} +3 -3
  221. package/docs/codex-native-hooks.md +4 -4
  222. package/docs/contracts/forge-cancel-contract.md +20 -0
  223. package/docs/contracts/forge-state-contract.md +52 -0
  224. package/docs/contracts/multi-state-transition-contract.md +5 -5
  225. package/docs/contracts/multi-state-transition-review.md +3 -3
  226. package/docs/contracts/repo-aware-team-dag-decomposition.md +1 -1
  227. package/docs/contracts/rust-runtime-thin-adapter-contract.md +1 -1
  228. package/docs/contracts/team-startup-dispatch-latency.md +1 -1
  229. package/docs/getting-started.html +6 -1
  230. package/docs/guidance-schema.md +6 -3
  231. package/docs/index.html +55 -4
  232. package/docs/integrations.html +4 -3
  233. package/docs/issues/team-forge-followup-team.md +38 -0
  234. package/docs/openclaw-integration.md +2 -2
  235. package/docs/prompt-guidance-contract.md +11 -11
  236. package/docs/prs/{dev-deprecate-team-ralph.md → dev-deprecate-team-forge.md} +27 -27
  237. package/docs/prs/{dev-fix-ralph-live-pane-invariant.md → dev-fix-forge-live-pane-invariant.md} +7 -7
  238. package/docs/prs/{dev-team-ralph-workflow-positioning.md → dev-team-forge-workflow-positioning.md} +7 -7
  239. package/docs/qa/forge-persistence-gate.md +20 -0
  240. package/docs/qa/rust-runtime-thin-adapter-gate.md +31 -40
  241. package/docs/readme/README.de.md +13 -0
  242. package/docs/readme/README.el.md +13 -0
  243. package/docs/readme/README.es.md +13 -0
  244. package/docs/readme/README.fr.md +13 -0
  245. package/docs/readme/README.it.md +13 -0
  246. package/docs/readme/README.ja.md +13 -0
  247. package/docs/readme/README.ko.md +13 -0
  248. package/docs/readme/README.pl.md +13 -0
  249. package/docs/readme/README.pt.md +13 -0
  250. package/docs/readme/README.ru.md +13 -0
  251. package/docs/readme/README.tr.md +13 -0
  252. package/docs/readme/README.uk.md +13 -0
  253. package/docs/readme/README.vi.md +13 -0
  254. package/docs/readme/README.zh-TW.md +13 -0
  255. package/docs/readme/README.zh.md +13 -0
  256. package/docs/readme/rcs-cover.svg +75 -0
  257. package/docs/reference/canonical-vocabulary.md +106 -0
  258. package/docs/reference/forge-parity-matrix.md +26 -0
  259. package/docs/reference/forge-upstream-baseline.md +32 -0
  260. package/docs/reference/rcs-config-schema-routing.md +5 -5
  261. package/docs/reference/roblox-pre-action-protocol.md +4 -0
  262. package/docs/reference/roblox-taxonomy-migration-plan.md +46 -0
  263. package/docs/reference/roblox-workspace-standard.md +83 -0
  264. package/docs/reference/robloxstudio-mcp-compatibility.md +117 -0
  265. package/docs/reference/semantic-design-system.md +110 -0
  266. package/docs/reference/surface-map.md +131 -0
  267. package/docs/reference/team-allocation-rebalance-policy.md +1 -1
  268. package/docs/release-notes-v0.1.0.md +1 -1
  269. package/docs/release-notes-v0.1.1.md +49 -0
  270. package/docs/reports/open-prs-dev-readiness-2026-04-09.md +2 -2
  271. package/docs/shared/agent-tiers.md +3 -3
  272. package/docs/skills.html +10 -12
  273. package/docs/troubleshooting.md +1 -1
  274. package/package.json +20 -13
  275. package/plugins/roblox-ai-os-creator-skills/.codex-plugin/plugin.json +1 -1
  276. package/plugins/roblox-ai-os-creator-skills/docs/reference/roblox-pre-action-protocol.md +4 -0
  277. package/plugins/roblox-ai-os-creator-skills/skills/ai-slop-cleaner/SKILL.md +14 -7
  278. package/plugins/roblox-ai-os-creator-skills/skills/analyze/SKILL.md +9 -2
  279. package/plugins/roblox-ai-os-creator-skills/skills/ask-claude/SKILL.md +7 -0
  280. package/plugins/roblox-ai-os-creator-skills/skills/ask-gemini/SKILL.md +7 -0
  281. package/plugins/roblox-ai-os-creator-skills/skills/autoforge/SKILL.md +7 -0
  282. package/plugins/roblox-ai-os-creator-skills/skills/autopilot/SKILL.md +48 -41
  283. package/plugins/roblox-ai-os-creator-skills/skills/autoresearch/SKILL.md +8 -1
  284. package/plugins/roblox-ai-os-creator-skills/skills/blueprint/SKILL.md +227 -9
  285. package/plugins/roblox-ai-os-creator-skills/skills/blueprint-loop/SKILL.md +7 -0
  286. package/plugins/roblox-ai-os-creator-skills/skills/blueprint-psych/SKILL.md +7 -0
  287. package/plugins/roblox-ai-os-creator-skills/skills/blueprint-retention/SKILL.md +7 -0
  288. package/plugins/roblox-ai-os-creator-skills/skills/blueprint-social/SKILL.md +7 -0
  289. package/plugins/roblox-ai-os-creator-skills/skills/brief/SKILL.md +7 -0
  290. package/plugins/roblox-ai-os-creator-skills/skills/brief-audience/SKILL.md +7 -0
  291. package/plugins/roblox-ai-os-creator-skills/skills/brief-motivation/SKILL.md +7 -0
  292. package/plugins/roblox-ai-os-creator-skills/skills/cancel/SKILL.md +59 -52
  293. package/plugins/roblox-ai-os-creator-skills/skills/code-review/SKILL.md +30 -24
  294. package/plugins/roblox-ai-os-creator-skills/skills/configure-notifications/SKILL.md +7 -0
  295. package/plugins/roblox-ai-os-creator-skills/skills/crew/SKILL.md +7 -0
  296. package/plugins/roblox-ai-os-creator-skills/skills/deep-interview/SKILL.md +25 -18
  297. package/plugins/roblox-ai-os-creator-skills/skills/doctor/SKILL.md +7 -0
  298. package/plugins/roblox-ai-os-creator-skills/skills/forge/SKILL.md +174 -11
  299. package/plugins/roblox-ai-os-creator-skills/skills/forge-community/SKILL.md +7 -0
  300. package/plugins/roblox-ai-os-creator-skills/skills/forge-daily-loop/SKILL.md +7 -0
  301. package/plugins/roblox-ai-os-creator-skills/skills/forge-event-loop/SKILL.md +7 -0
  302. package/plugins/roblox-ai-os-creator-skills/skills/forge-fomo/SKILL.md +7 -0
  303. package/plugins/roblox-ai-os-creator-skills/skills/forge-mastery/SKILL.md +7 -0
  304. package/plugins/roblox-ai-os-creator-skills/skills/forge-progression/SKILL.md +7 -0
  305. package/plugins/roblox-ai-os-creator-skills/skills/forge-reward-loop/SKILL.md +7 -0
  306. package/plugins/roblox-ai-os-creator-skills/skills/forge-status/SKILL.md +7 -0
  307. package/plugins/roblox-ai-os-creator-skills/skills/help/SKILL.md +8 -1
  308. package/plugins/roblox-ai-os-creator-skills/skills/hud/SKILL.md +16 -9
  309. package/plugins/roblox-ai-os-creator-skills/skills/note/SKILL.md +8 -1
  310. package/plugins/roblox-ai-os-creator-skills/skills/pipeline/SKILL.md +18 -11
  311. package/plugins/roblox-ai-os-creator-skills/skills/plan/SKILL.md +36 -29
  312. package/plugins/roblox-ai-os-creator-skills/skills/rcs-setup/SKILL.md +8 -1
  313. package/plugins/roblox-ai-os-creator-skills/skills/security-review/SKILL.md +120 -236
  314. package/plugins/roblox-ai-os-creator-skills/skills/skill/SKILL.md +20 -13
  315. package/plugins/roblox-ai-os-creator-skills/skills/team/SKILL.md +17 -11
  316. package/plugins/roblox-ai-os-creator-skills/skills/trace/SKILL.md +7 -0
  317. package/plugins/roblox-ai-os-creator-skills/skills/ultraqa/SKILL.md +10 -3
  318. package/plugins/roblox-ai-os-creator-skills/skills/ultrawork/SKILL.md +19 -12
  319. package/plugins/roblox-ai-os-creator-skills/skills/{visual-ralph → visual-forge}/SKILL.md +36 -27
  320. package/plugins/roblox-ai-os-creator-skills/skills/visual-verdict/SKILL.md +9 -2
  321. package/plugins/roblox-ai-os-creator-skills/skills/wiki/SKILL.md +10 -3
  322. package/plugins/roblox-ai-os-creator-skills/skills/worker/SKILL.md +16 -7
  323. package/plugins/roblox-ai-os-creator-skills/templates/roblox/pre-action-plan.md +1 -0
  324. package/prompts/analyst.md +7 -0
  325. package/prompts/architect.md +11 -4
  326. package/prompts/build-fixer.md +7 -0
  327. package/prompts/code-reviewer.md +9 -2
  328. package/prompts/code-simplifier.md +4 -0
  329. package/prompts/critic.md +13 -6
  330. package/prompts/debugger.md +8 -1
  331. package/prompts/dependency-expert.md +8 -1
  332. package/prompts/designer.md +20 -10
  333. package/prompts/executor.md +7 -0
  334. package/prompts/explore-harness.md +7 -0
  335. package/prompts/explore.md +7 -0
  336. package/prompts/git-master.md +8 -1
  337. package/prompts/planner.md +10 -3
  338. package/prompts/researcher.md +7 -0
  339. package/prompts/security-reviewer.md +76 -92
  340. package/prompts/sisyphus-lite.md +7 -0
  341. package/prompts/team-executor.md +7 -0
  342. package/prompts/team-orchestrator.md +9 -2
  343. package/prompts/test-engineer.md +11 -3
  344. package/prompts/verifier.md +7 -0
  345. package/prompts/vision.md +9 -2
  346. package/prompts/writer.md +11 -4
  347. package/skills/.agents/skills/roblox-animations/SKILL.md +220 -0
  348. package/skills/.agents/skills/roblox-datastores/SKILL.md +219 -0
  349. package/skills/.agents/skills/roblox-gui/SKILL.md +192 -0
  350. package/skills/.agents/skills/roblox-monetization/SKILL.md +208 -0
  351. package/skills/.agents/skills/roblox-performance/SKILL.md +230 -0
  352. package/skills/.agents/skills/roblox-remote-events/SKILL.md +199 -0
  353. package/skills/.agents/skills/roblox-security/SKILL.md +236 -0
  354. package/skills/ai-slop-cleaner/SKILL.md +14 -7
  355. package/skills/analyze/SKILL.md +9 -2
  356. package/skills/ask-claude/SKILL.md +7 -0
  357. package/skills/ask-gemini/SKILL.md +7 -0
  358. package/skills/autoforge/SKILL.md +7 -0
  359. package/skills/autopilot/SKILL.md +48 -41
  360. package/skills/autoresearch/SKILL.md +8 -1
  361. package/skills/blueprint/SKILL.md +227 -9
  362. package/skills/blueprint-loop/SKILL.md +7 -0
  363. package/skills/blueprint-psych/SKILL.md +7 -0
  364. package/skills/blueprint-retention/SKILL.md +7 -0
  365. package/skills/blueprint-social/SKILL.md +7 -0
  366. package/skills/brief/SKILL.md +7 -0
  367. package/skills/brief-audience/SKILL.md +7 -0
  368. package/skills/brief-motivation/SKILL.md +7 -0
  369. package/skills/build-fix/SKILL.md +9 -2
  370. package/skills/cancel/SKILL.md +59 -52
  371. package/skills/code-review/SKILL.md +30 -24
  372. package/skills/configure-notifications/SKILL.md +7 -0
  373. package/skills/crew/SKILL.md +7 -0
  374. package/skills/deep-interview/SKILL.md +25 -18
  375. package/skills/deepsearch/SKILL.md +7 -0
  376. package/skills/doctor/SKILL.md +7 -0
  377. package/skills/ecomode/SKILL.md +9 -2
  378. package/skills/forge/SKILL.md +174 -11
  379. package/skills/forge-community/SKILL.md +7 -0
  380. package/skills/forge-daily-loop/SKILL.md +7 -0
  381. package/skills/forge-event-loop/SKILL.md +7 -0
  382. package/skills/forge-fomo/SKILL.md +7 -0
  383. package/skills/{ralph-init → forge-init}/SKILL.md +20 -13
  384. package/skills/forge-mastery/SKILL.md +7 -0
  385. package/skills/forge-progression/SKILL.md +7 -0
  386. package/skills/forge-reward-loop/SKILL.md +7 -0
  387. package/skills/forge-status/SKILL.md +7 -0
  388. package/skills/git-master/SKILL.md +7 -0
  389. package/skills/help/SKILL.md +8 -1
  390. package/skills/hud/SKILL.md +16 -9
  391. package/skills/note/SKILL.md +8 -1
  392. package/skills/pipeline/SKILL.md +18 -11
  393. package/skills/plan/SKILL.md +36 -29
  394. package/skills/rcs-setup/SKILL.md +8 -1
  395. package/skills/review/SKILL.md +7 -0
  396. package/skills/security-review/SKILL.md +120 -236
  397. package/skills/skill/SKILL.md +20 -13
  398. package/skills/skills-lock.json +47 -0
  399. package/skills/swarm/SKILL.md +8 -1
  400. package/skills/tdd/SKILL.md +7 -0
  401. package/skills/team/SKILL.md +17 -11
  402. package/skills/trace/SKILL.md +7 -0
  403. package/skills/ultraqa/SKILL.md +10 -3
  404. package/skills/ultrawork/SKILL.md +19 -12
  405. package/skills/{visual-ralph → visual-forge}/SKILL.md +36 -27
  406. package/skills/visual-verdict/SKILL.md +9 -2
  407. package/skills/web-clone/SKILL.md +14 -7
  408. package/skills/wiki/SKILL.md +10 -3
  409. package/skills/worker/SKILL.md +16 -7
  410. package/src/scripts/__tests__/codex-native-hook.test.ts +386 -319
  411. package/src/scripts/__tests__/run-test-files.test.ts +6 -4
  412. package/src/scripts/__tests__/verify-native-agents.test.ts +16 -16
  413. package/src/scripts/codex-native-hook.ts +34 -34
  414. package/src/scripts/eval/eval-cross-server-party-flow.ts +14 -0
  415. package/src/scripts/eval/eval-gui-onboarding-clarity.ts +20 -0
  416. package/src/scripts/eval/eval-liveops-reward-loop-balance.ts +14 -0
  417. package/src/scripts/eval/eval-profile-datastore-recovery.ts +20 -0
  418. package/src/scripts/eval/eval-remote-contract-hardening.ts +20 -0
  419. package/src/scripts/notify-fallback-watcher.ts +147 -146
  420. package/src/scripts/notify-hook/__tests__/team-worker-posttooluse.test.ts +24 -10
  421. package/src/scripts/notify-hook/{ralph-session-resume.ts → forge-session-resume.ts} +45 -43
  422. package/src/scripts/notify-hook/team-dispatch.ts +31 -4
  423. package/src/scripts/notify-hook/visual-verdict.ts +3 -3
  424. package/src/scripts/notify-hook.ts +10 -10
  425. package/src/scripts/run-test-files.ts +1 -1
  426. package/src/scripts/surface-taxonomy.ts +316 -0
  427. package/src/scripts/sync-plugin-mirror.ts +5 -4
  428. package/src/scripts/tmux-hook-engine.ts +31 -19
  429. package/templates/AGENTS.md +24 -15
  430. package/templates/catalog-manifest.json +5 -88
  431. package/templates/roblox/pre-action-plan.md +1 -0
  432. package/templates/roblox/robloxstudio-mcp.codex.json +18 -0
  433. package/templates/roblox/robloxstudio-mcp.windows.json +22 -0
  434. package/dist/adapt/__tests__/foundation.test.d.ts +0 -2
  435. package/dist/adapt/__tests__/foundation.test.d.ts.map +0 -1
  436. package/dist/adapt/__tests__/foundation.test.js +0 -171
  437. package/dist/adapt/__tests__/foundation.test.js.map +0 -1
  438. package/dist/adapt/__tests__/hermes.test.d.ts +0 -2
  439. package/dist/adapt/__tests__/hermes.test.d.ts.map +0 -1
  440. package/dist/adapt/__tests__/hermes.test.js +0 -137
  441. package/dist/adapt/__tests__/hermes.test.js.map +0 -1
  442. package/dist/agents/__tests__/definitions.test.d.ts +0 -2
  443. package/dist/agents/__tests__/definitions.test.d.ts.map +0 -1
  444. package/dist/agents/__tests__/definitions.test.js +0 -62
  445. package/dist/agents/__tests__/definitions.test.js.map +0 -1
  446. package/dist/agents/__tests__/native-config.test.d.ts +0 -2
  447. package/dist/agents/__tests__/native-config.test.d.ts.map +0 -1
  448. package/dist/agents/__tests__/native-config.test.js +0 -278
  449. package/dist/agents/__tests__/native-config.test.js.map +0 -1
  450. package/dist/autoresearch/__tests__/contracts.test.d.ts +0 -2
  451. package/dist/autoresearch/__tests__/contracts.test.d.ts.map +0 -1
  452. package/dist/autoresearch/__tests__/contracts.test.js +0 -127
  453. package/dist/autoresearch/__tests__/contracts.test.js.map +0 -1
  454. package/dist/autoresearch/__tests__/runtime-parity-extra.test.d.ts +0 -2
  455. package/dist/autoresearch/__tests__/runtime-parity-extra.test.d.ts.map +0 -1
  456. package/dist/autoresearch/__tests__/runtime-parity-extra.test.js +0 -356
  457. package/dist/autoresearch/__tests__/runtime-parity-extra.test.js.map +0 -1
  458. package/dist/autoresearch/__tests__/runtime.test.d.ts +0 -2
  459. package/dist/autoresearch/__tests__/runtime.test.d.ts.map +0 -1
  460. package/dist/autoresearch/__tests__/runtime.test.js +0 -218
  461. package/dist/autoresearch/__tests__/runtime.test.js.map +0 -1
  462. package/dist/autoresearch/__tests__/skill-validation.test.d.ts +0 -2
  463. package/dist/autoresearch/__tests__/skill-validation.test.d.ts.map +0 -1
  464. package/dist/autoresearch/__tests__/skill-validation.test.js +0 -91
  465. package/dist/autoresearch/__tests__/skill-validation.test.js.map +0 -1
  466. package/dist/catalog/__tests__/generator.test.d.ts +0 -2
  467. package/dist/catalog/__tests__/generator.test.d.ts.map +0 -1
  468. package/dist/catalog/__tests__/generator.test.js +0 -49
  469. package/dist/catalog/__tests__/generator.test.js.map +0 -1
  470. package/dist/catalog/__tests__/plugin-bundle-ssot.test.d.ts +0 -2
  471. package/dist/catalog/__tests__/plugin-bundle-ssot.test.d.ts.map +0 -1
  472. package/dist/catalog/__tests__/plugin-bundle-ssot.test.js +0 -83
  473. package/dist/catalog/__tests__/plugin-bundle-ssot.test.js.map +0 -1
  474. package/dist/catalog/__tests__/schema.test.d.ts +0 -2
  475. package/dist/catalog/__tests__/schema.test.d.ts.map +0 -1
  476. package/dist/catalog/__tests__/schema.test.js +0 -91
  477. package/dist/catalog/__tests__/schema.test.js.map +0 -1
  478. package/dist/cli/__tests__/adapt-help.test.d.ts +0 -2
  479. package/dist/cli/__tests__/adapt-help.test.d.ts.map +0 -1
  480. package/dist/cli/__tests__/adapt-help.test.js +0 -37
  481. package/dist/cli/__tests__/adapt-help.test.js.map +0 -1
  482. package/dist/cli/__tests__/adapt.test.d.ts +0 -2
  483. package/dist/cli/__tests__/adapt.test.d.ts.map +0 -1
  484. package/dist/cli/__tests__/adapt.test.js +0 -62
  485. package/dist/cli/__tests__/adapt.test.js.map +0 -1
  486. package/dist/cli/__tests__/agents-init.test.d.ts +0 -2
  487. package/dist/cli/__tests__/agents-init.test.d.ts.map +0 -1
  488. package/dist/cli/__tests__/agents-init.test.js +0 -184
  489. package/dist/cli/__tests__/agents-init.test.js.map +0 -1
  490. package/dist/cli/__tests__/agents.test.d.ts +0 -2
  491. package/dist/cli/__tests__/agents.test.d.ts.map +0 -1
  492. package/dist/cli/__tests__/agents.test.js +0 -137
  493. package/dist/cli/__tests__/agents.test.js.map +0 -1
  494. package/dist/cli/__tests__/ask.test.d.ts +0 -2
  495. package/dist/cli/__tests__/ask.test.d.ts.map +0 -1
  496. package/dist/cli/__tests__/ask.test.js +0 -265
  497. package/dist/cli/__tests__/ask.test.js.map +0 -1
  498. package/dist/cli/__tests__/autoresearch-guided.test.d.ts +0 -2
  499. package/dist/cli/__tests__/autoresearch-guided.test.d.ts.map +0 -1
  500. package/dist/cli/__tests__/autoresearch-guided.test.js +0 -365
  501. package/dist/cli/__tests__/autoresearch-guided.test.js.map +0 -1
  502. package/dist/cli/__tests__/autoresearch.test.d.ts +0 -2
  503. package/dist/cli/__tests__/autoresearch.test.d.ts.map +0 -1
  504. package/dist/cli/__tests__/autoresearch.test.js +0 -203
  505. package/dist/cli/__tests__/autoresearch.test.js.map +0 -1
  506. package/dist/cli/__tests__/catalog-contract.test.d.ts +0 -2
  507. package/dist/cli/__tests__/catalog-contract.test.d.ts.map +0 -1
  508. package/dist/cli/__tests__/catalog-contract.test.js +0 -18
  509. package/dist/cli/__tests__/catalog-contract.test.js.map +0 -1
  510. package/dist/cli/__tests__/cleanup.test.d.ts +0 -2
  511. package/dist/cli/__tests__/cleanup.test.d.ts.map +0 -1
  512. package/dist/cli/__tests__/cleanup.test.js +0 -419
  513. package/dist/cli/__tests__/cleanup.test.js.map +0 -1
  514. package/dist/cli/__tests__/codex-plugin-layout.test.d.ts +0 -2
  515. package/dist/cli/__tests__/codex-plugin-layout.test.d.ts.map +0 -1
  516. package/dist/cli/__tests__/codex-plugin-layout.test.js +0 -210
  517. package/dist/cli/__tests__/codex-plugin-layout.test.js.map +0 -1
  518. package/dist/cli/__tests__/doctor-context-window-warning.test.d.ts +0 -2
  519. package/dist/cli/__tests__/doctor-context-window-warning.test.d.ts.map +0 -1
  520. package/dist/cli/__tests__/doctor-context-window-warning.test.js +0 -122
  521. package/dist/cli/__tests__/doctor-context-window-warning.test.js.map +0 -1
  522. package/dist/cli/__tests__/doctor-invalid-config.test.d.ts +0 -2
  523. package/dist/cli/__tests__/doctor-invalid-config.test.d.ts.map +0 -1
  524. package/dist/cli/__tests__/doctor-invalid-config.test.js +0 -52
  525. package/dist/cli/__tests__/doctor-invalid-config.test.js.map +0 -1
  526. package/dist/cli/__tests__/doctor-team.test.d.ts +0 -2
  527. package/dist/cli/__tests__/doctor-team.test.d.ts.map +0 -1
  528. package/dist/cli/__tests__/doctor-team.test.js +0 -299
  529. package/dist/cli/__tests__/doctor-team.test.js.map +0 -1
  530. package/dist/cli/__tests__/doctor-warning-copy.test.d.ts +0 -2
  531. package/dist/cli/__tests__/doctor-warning-copy.test.d.ts.map +0 -1
  532. package/dist/cli/__tests__/doctor-warning-copy.test.js +0 -438
  533. package/dist/cli/__tests__/doctor-warning-copy.test.js.map +0 -1
  534. package/dist/cli/__tests__/error-handling-warnings.test.d.ts +0 -2
  535. package/dist/cli/__tests__/error-handling-warnings.test.d.ts.map +0 -1
  536. package/dist/cli/__tests__/error-handling-warnings.test.js +0 -52
  537. package/dist/cli/__tests__/error-handling-warnings.test.js.map +0 -1
  538. package/dist/cli/__tests__/exec.test.d.ts +0 -2
  539. package/dist/cli/__tests__/exec.test.d.ts.map +0 -1
  540. package/dist/cli/__tests__/exec.test.js +0 -213
  541. package/dist/cli/__tests__/exec.test.js.map +0 -1
  542. package/dist/cli/__tests__/explore-windows-diagnostics.test.d.ts +0 -2
  543. package/dist/cli/__tests__/explore-windows-diagnostics.test.d.ts.map +0 -1
  544. package/dist/cli/__tests__/explore-windows-diagnostics.test.js +0 -17
  545. package/dist/cli/__tests__/explore-windows-diagnostics.test.js.map +0 -1
  546. package/dist/cli/__tests__/explore.test.d.ts +0 -2
  547. package/dist/cli/__tests__/explore.test.d.ts.map +0 -1
  548. package/dist/cli/__tests__/explore.test.js +0 -1090
  549. package/dist/cli/__tests__/explore.test.js.map +0 -1
  550. package/dist/cli/__tests__/hooks.test.d.ts +0 -2
  551. package/dist/cli/__tests__/hooks.test.d.ts.map +0 -1
  552. package/dist/cli/__tests__/hooks.test.js +0 -55
  553. package/dist/cli/__tests__/hooks.test.js.map +0 -1
  554. package/dist/cli/__tests__/index.test.d.ts +0 -2
  555. package/dist/cli/__tests__/index.test.d.ts.map +0 -1
  556. package/dist/cli/__tests__/index.test.js +0 -2259
  557. package/dist/cli/__tests__/index.test.js.map +0 -1
  558. package/dist/cli/__tests__/launch-fallback.test.d.ts +0 -2
  559. package/dist/cli/__tests__/launch-fallback.test.d.ts.map +0 -1
  560. package/dist/cli/__tests__/launch-fallback.test.js +0 -661
  561. package/dist/cli/__tests__/launch-fallback.test.js.map +0 -1
  562. package/dist/cli/__tests__/lifecycle-notifications.test.d.ts +0 -2
  563. package/dist/cli/__tests__/lifecycle-notifications.test.d.ts.map +0 -1
  564. package/dist/cli/__tests__/lifecycle-notifications.test.js +0 -48
  565. package/dist/cli/__tests__/lifecycle-notifications.test.js.map +0 -1
  566. package/dist/cli/__tests__/list.test.d.ts +0 -2
  567. package/dist/cli/__tests__/list.test.d.ts.map +0 -1
  568. package/dist/cli/__tests__/list.test.js +0 -38
  569. package/dist/cli/__tests__/list.test.js.map +0 -1
  570. package/dist/cli/__tests__/mcp-parity.test.d.ts +0 -2
  571. package/dist/cli/__tests__/mcp-parity.test.d.ts.map +0 -1
  572. package/dist/cli/__tests__/mcp-parity.test.js +0 -228
  573. package/dist/cli/__tests__/mcp-parity.test.js.map +0 -1
  574. package/dist/cli/__tests__/mcp-serve.test.d.ts +0 -2
  575. package/dist/cli/__tests__/mcp-serve.test.d.ts.map +0 -1
  576. package/dist/cli/__tests__/mcp-serve.test.js +0 -64
  577. package/dist/cli/__tests__/mcp-serve.test.js.map +0 -1
  578. package/dist/cli/__tests__/native-assets.test.d.ts +0 -2
  579. package/dist/cli/__tests__/native-assets.test.d.ts.map +0 -1
  580. package/dist/cli/__tests__/native-assets.test.js +0 -308
  581. package/dist/cli/__tests__/native-assets.test.js.map +0 -1
  582. package/dist/cli/__tests__/native-hook-dispatch-contract.test.d.ts +0 -2
  583. package/dist/cli/__tests__/native-hook-dispatch-contract.test.d.ts.map +0 -1
  584. package/dist/cli/__tests__/native-hook-dispatch-contract.test.js +0 -11
  585. package/dist/cli/__tests__/native-hook-dispatch-contract.test.js.map +0 -1
  586. package/dist/cli/__tests__/nested-help-routing.test.d.ts +0 -2
  587. package/dist/cli/__tests__/nested-help-routing.test.d.ts.map +0 -1
  588. package/dist/cli/__tests__/nested-help-routing.test.js +0 -96
  589. package/dist/cli/__tests__/nested-help-routing.test.js.map +0 -1
  590. package/dist/cli/__tests__/package-bin-contract.test.d.ts +0 -2
  591. package/dist/cli/__tests__/package-bin-contract.test.d.ts.map +0 -1
  592. package/dist/cli/__tests__/package-bin-contract.test.js +0 -177
  593. package/dist/cli/__tests__/package-bin-contract.test.js.map +0 -1
  594. package/dist/cli/__tests__/packaged-explore-harness-lock.d.ts +0 -3
  595. package/dist/cli/__tests__/packaged-explore-harness-lock.d.ts.map +0 -1
  596. package/dist/cli/__tests__/packaged-explore-harness-lock.js +0 -67
  597. package/dist/cli/__tests__/packaged-explore-harness-lock.js.map +0 -1
  598. package/dist/cli/__tests__/packaged-script-resolution.test.d.ts +0 -2
  599. package/dist/cli/__tests__/packaged-script-resolution.test.d.ts.map +0 -1
  600. package/dist/cli/__tests__/packaged-script-resolution.test.js +0 -19
  601. package/dist/cli/__tests__/packaged-script-resolution.test.js.map +0 -1
  602. package/dist/cli/__tests__/prompt-skill-sanitization.test.d.ts +0 -2
  603. package/dist/cli/__tests__/prompt-skill-sanitization.test.d.ts.map +0 -1
  604. package/dist/cli/__tests__/prompt-skill-sanitization.test.js +0 -48
  605. package/dist/cli/__tests__/prompt-skill-sanitization.test.js.map +0 -1
  606. package/dist/cli/__tests__/question.test.d.ts +0 -2
  607. package/dist/cli/__tests__/question.test.d.ts.map +0 -1
  608. package/dist/cli/__tests__/question.test.js +0 -633
  609. package/dist/cli/__tests__/question.test.js.map +0 -1
  610. package/dist/cli/__tests__/ralph-deslop-contract.test.d.ts +0 -2
  611. package/dist/cli/__tests__/ralph-deslop-contract.test.d.ts.map +0 -1
  612. package/dist/cli/__tests__/ralph-deslop-contract.test.js +0 -28
  613. package/dist/cli/__tests__/ralph-deslop-contract.test.js.map +0 -1
  614. package/dist/cli/__tests__/ralph-prd-deep-interview.test.d.ts +0 -2
  615. package/dist/cli/__tests__/ralph-prd-deep-interview.test.d.ts.map +0 -1
  616. package/dist/cli/__tests__/ralph-prd-deep-interview.test.js +0 -24
  617. package/dist/cli/__tests__/ralph-prd-deep-interview.test.js.map +0 -1
  618. package/dist/cli/__tests__/ralph-prd-smoke.test.d.ts +0 -2
  619. package/dist/cli/__tests__/ralph-prd-smoke.test.d.ts.map +0 -1
  620. package/dist/cli/__tests__/ralph-prd-smoke.test.js +0 -167
  621. package/dist/cli/__tests__/ralph-prd-smoke.test.js.map +0 -1
  622. package/dist/cli/__tests__/ralph.test.d.ts +0 -2
  623. package/dist/cli/__tests__/ralph.test.d.ts.map +0 -1
  624. package/dist/cli/__tests__/ralph.test.js +0 -256
  625. package/dist/cli/__tests__/ralph.test.js.map +0 -1
  626. package/dist/cli/__tests__/resume.test.d.ts +0 -2
  627. package/dist/cli/__tests__/resume.test.d.ts.map +0 -1
  628. package/dist/cli/__tests__/resume.test.js +0 -84
  629. package/dist/cli/__tests__/resume.test.js.map +0 -1
  630. package/dist/cli/__tests__/session-scoped-runtime.test.d.ts +0 -2
  631. package/dist/cli/__tests__/session-scoped-runtime.test.d.ts.map +0 -1
  632. package/dist/cli/__tests__/session-scoped-runtime.test.js +0 -146
  633. package/dist/cli/__tests__/session-scoped-runtime.test.js.map +0 -1
  634. package/dist/cli/__tests__/session-search-help.test.d.ts +0 -2
  635. package/dist/cli/__tests__/session-search-help.test.d.ts.map +0 -1
  636. package/dist/cli/__tests__/session-search-help.test.js +0 -76
  637. package/dist/cli/__tests__/session-search-help.test.js.map +0 -1
  638. package/dist/cli/__tests__/session-search.test.d.ts +0 -2
  639. package/dist/cli/__tests__/session-search.test.d.ts.map +0 -1
  640. package/dist/cli/__tests__/session-search.test.js +0 -77
  641. package/dist/cli/__tests__/session-search.test.js.map +0 -1
  642. package/dist/cli/__tests__/setup-agents-overwrite.test.d.ts +0 -2
  643. package/dist/cli/__tests__/setup-agents-overwrite.test.d.ts.map +0 -1
  644. package/dist/cli/__tests__/setup-agents-overwrite.test.js +0 -457
  645. package/dist/cli/__tests__/setup-agents-overwrite.test.js.map +0 -1
  646. package/dist/cli/__tests__/setup-gh-star.test.d.ts +0 -2
  647. package/dist/cli/__tests__/setup-gh-star.test.d.ts.map +0 -1
  648. package/dist/cli/__tests__/setup-gh-star.test.js +0 -67
  649. package/dist/cli/__tests__/setup-gh-star.test.js.map +0 -1
  650. package/dist/cli/__tests__/setup-hooks-shared-ownership.test.d.ts +0 -2
  651. package/dist/cli/__tests__/setup-hooks-shared-ownership.test.d.ts.map +0 -1
  652. package/dist/cli/__tests__/setup-hooks-shared-ownership.test.js +0 -189
  653. package/dist/cli/__tests__/setup-hooks-shared-ownership.test.js.map +0 -1
  654. package/dist/cli/__tests__/setup-install-mode.test.d.ts +0 -2
  655. package/dist/cli/__tests__/setup-install-mode.test.d.ts.map +0 -1
  656. package/dist/cli/__tests__/setup-install-mode.test.js +0 -873
  657. package/dist/cli/__tests__/setup-install-mode.test.js.map +0 -1
  658. package/dist/cli/__tests__/setup-prompts-overwrite.test.d.ts +0 -2
  659. package/dist/cli/__tests__/setup-prompts-overwrite.test.d.ts.map +0 -1
  660. package/dist/cli/__tests__/setup-prompts-overwrite.test.js +0 -191
  661. package/dist/cli/__tests__/setup-prompts-overwrite.test.js.map +0 -1
  662. package/dist/cli/__tests__/setup-refresh.test.d.ts +0 -2
  663. package/dist/cli/__tests__/setup-refresh.test.d.ts.map +0 -1
  664. package/dist/cli/__tests__/setup-refresh.test.js +0 -591
  665. package/dist/cli/__tests__/setup-refresh.test.js.map +0 -1
  666. package/dist/cli/__tests__/setup-scope.test.d.ts +0 -2
  667. package/dist/cli/__tests__/setup-scope.test.d.ts.map +0 -1
  668. package/dist/cli/__tests__/setup-scope.test.js +0 -340
  669. package/dist/cli/__tests__/setup-scope.test.js.map +0 -1
  670. package/dist/cli/__tests__/setup-skill-validation.test.d.ts +0 -2
  671. package/dist/cli/__tests__/setup-skill-validation.test.d.ts.map +0 -1
  672. package/dist/cli/__tests__/setup-skill-validation.test.js +0 -44
  673. package/dist/cli/__tests__/setup-skill-validation.test.js.map +0 -1
  674. package/dist/cli/__tests__/setup-skills-overwrite.test.d.ts +0 -2
  675. package/dist/cli/__tests__/setup-skills-overwrite.test.d.ts.map +0 -1
  676. package/dist/cli/__tests__/setup-skills-overwrite.test.js +0 -295
  677. package/dist/cli/__tests__/setup-skills-overwrite.test.js.map +0 -1
  678. package/dist/cli/__tests__/sidecar.test.d.ts +0 -2
  679. package/dist/cli/__tests__/sidecar.test.d.ts.map +0 -1
  680. package/dist/cli/__tests__/sidecar.test.js +0 -24
  681. package/dist/cli/__tests__/sidecar.test.js.map +0 -1
  682. package/dist/cli/__tests__/sparkshell-cli.test.d.ts +0 -2
  683. package/dist/cli/__tests__/sparkshell-cli.test.d.ts.map +0 -1
  684. package/dist/cli/__tests__/sparkshell-cli.test.js +0 -400
  685. package/dist/cli/__tests__/sparkshell-cli.test.js.map +0 -1
  686. package/dist/cli/__tests__/sparkshell-packaging.test.d.ts +0 -2
  687. package/dist/cli/__tests__/sparkshell-packaging.test.d.ts.map +0 -1
  688. package/dist/cli/__tests__/sparkshell-packaging.test.js +0 -74
  689. package/dist/cli/__tests__/sparkshell-packaging.test.js.map +0 -1
  690. package/dist/cli/__tests__/star-prompt.test.d.ts +0 -2
  691. package/dist/cli/__tests__/star-prompt.test.d.ts.map +0 -1
  692. package/dist/cli/__tests__/star-prompt.test.js +0 -172
  693. package/dist/cli/__tests__/star-prompt.test.js.map +0 -1
  694. package/dist/cli/__tests__/state.test.d.ts +0 -2
  695. package/dist/cli/__tests__/state.test.d.ts.map +0 -1
  696. package/dist/cli/__tests__/state.test.js +0 -46
  697. package/dist/cli/__tests__/state.test.js.map +0 -1
  698. package/dist/cli/__tests__/team-decompose.test.d.ts +0 -2
  699. package/dist/cli/__tests__/team-decompose.test.d.ts.map +0 -1
  700. package/dist/cli/__tests__/team-decompose.test.js +0 -133
  701. package/dist/cli/__tests__/team-decompose.test.js.map +0 -1
  702. package/dist/cli/__tests__/team.test.d.ts +0 -2
  703. package/dist/cli/__tests__/team.test.d.ts.map +0 -1
  704. package/dist/cli/__tests__/team.test.js +0 -1820
  705. package/dist/cli/__tests__/team.test.js.map +0 -1
  706. package/dist/cli/__tests__/uninstall.test.d.ts +0 -2
  707. package/dist/cli/__tests__/uninstall.test.d.ts.map +0 -1
  708. package/dist/cli/__tests__/uninstall.test.js +0 -766
  709. package/dist/cli/__tests__/uninstall.test.js.map +0 -1
  710. package/dist/cli/__tests__/update.test.d.ts +0 -2
  711. package/dist/cli/__tests__/update.test.d.ts.map +0 -1
  712. package/dist/cli/__tests__/update.test.js +0 -589
  713. package/dist/cli/__tests__/update.test.js.map +0 -1
  714. package/dist/cli/__tests__/version-sync-contract.test.d.ts +0 -2
  715. package/dist/cli/__tests__/version-sync-contract.test.d.ts.map +0 -1
  716. package/dist/cli/__tests__/version-sync-contract.test.js +0 -41
  717. package/dist/cli/__tests__/version-sync-contract.test.js.map +0 -1
  718. package/dist/cli/__tests__/version.test.d.ts +0 -2
  719. package/dist/cli/__tests__/version.test.d.ts.map +0 -1
  720. package/dist/cli/__tests__/version.test.js +0 -21
  721. package/dist/cli/__tests__/version.test.js.map +0 -1
  722. package/dist/cli/__tests__/windows-popup-loop-contract.test.d.ts +0 -2
  723. package/dist/cli/__tests__/windows-popup-loop-contract.test.d.ts.map +0 -1
  724. package/dist/cli/__tests__/windows-popup-loop-contract.test.js +0 -31
  725. package/dist/cli/__tests__/windows-popup-loop-contract.test.js.map +0 -1
  726. package/dist/cli/ralph.d.ts +0 -17
  727. package/dist/compat/__tests__/doctor-contract.test.d.ts +0 -2
  728. package/dist/compat/__tests__/doctor-contract.test.d.ts.map +0 -1
  729. package/dist/compat/__tests__/doctor-contract.test.js +0 -108
  730. package/dist/compat/__tests__/doctor-contract.test.js.map +0 -1
  731. package/dist/compat/__tests__/rust-runtime-compat.test.d.ts +0 -2
  732. package/dist/compat/__tests__/rust-runtime-compat.test.d.ts.map +0 -1
  733. package/dist/compat/__tests__/rust-runtime-compat.test.js +0 -218
  734. package/dist/compat/__tests__/rust-runtime-compat.test.js.map +0 -1
  735. package/dist/config/__tests__/codex-hooks.test.d.ts +0 -2
  736. package/dist/config/__tests__/codex-hooks.test.d.ts.map +0 -1
  737. package/dist/config/__tests__/codex-hooks.test.js +0 -77
  738. package/dist/config/__tests__/codex-hooks.test.js.map +0 -1
  739. package/dist/config/__tests__/generator-idempotent.test.d.ts +0 -2
  740. package/dist/config/__tests__/generator-idempotent.test.d.ts.map +0 -1
  741. package/dist/config/__tests__/generator-idempotent.test.js +0 -882
  742. package/dist/config/__tests__/generator-idempotent.test.js.map +0 -1
  743. package/dist/config/__tests__/generator-notify.test.d.ts +0 -2
  744. package/dist/config/__tests__/generator-notify.test.d.ts.map +0 -1
  745. package/dist/config/__tests__/generator-notify.test.js +0 -343
  746. package/dist/config/__tests__/generator-notify.test.js.map +0 -1
  747. package/dist/config/__tests__/generator-status-line-presets.test.d.ts +0 -2
  748. package/dist/config/__tests__/generator-status-line-presets.test.d.ts.map +0 -1
  749. package/dist/config/__tests__/generator-status-line-presets.test.js +0 -203
  750. package/dist/config/__tests__/generator-status-line-presets.test.js.map +0 -1
  751. package/dist/config/__tests__/mcp-registry.test.d.ts +0 -2
  752. package/dist/config/__tests__/mcp-registry.test.d.ts.map +0 -1
  753. package/dist/config/__tests__/mcp-registry.test.js +0 -190
  754. package/dist/config/__tests__/mcp-registry.test.js.map +0 -1
  755. package/dist/config/__tests__/models.test.d.ts +0 -2
  756. package/dist/config/__tests__/models.test.d.ts.map +0 -1
  757. package/dist/config/__tests__/models.test.js +0 -224
  758. package/dist/config/__tests__/models.test.js.map +0 -1
  759. package/dist/config/__tests__/wiki-config-contract.test.d.ts +0 -2
  760. package/dist/config/__tests__/wiki-config-contract.test.d.ts.map +0 -1
  761. package/dist/config/__tests__/wiki-config-contract.test.js +0 -19
  762. package/dist/config/__tests__/wiki-config-contract.test.js.map +0 -1
  763. package/dist/document-refresh/__tests__/enforcer.test.d.ts +0 -2
  764. package/dist/document-refresh/__tests__/enforcer.test.d.ts.map +0 -1
  765. package/dist/document-refresh/__tests__/enforcer.test.js +0 -128
  766. package/dist/document-refresh/__tests__/enforcer.test.js.map +0 -1
  767. package/dist/hooks/__tests__/agents-overlay.test.d.ts +0 -8
  768. package/dist/hooks/__tests__/agents-overlay.test.d.ts.map +0 -1
  769. package/dist/hooks/__tests__/agents-overlay.test.js +0 -644
  770. package/dist/hooks/__tests__/agents-overlay.test.js.map +0 -1
  771. package/dist/hooks/__tests__/analyze-routing-contract.test.d.ts +0 -2
  772. package/dist/hooks/__tests__/analyze-routing-contract.test.d.ts.map +0 -1
  773. package/dist/hooks/__tests__/analyze-routing-contract.test.js +0 -45
  774. package/dist/hooks/__tests__/analyze-routing-contract.test.js.map +0 -1
  775. package/dist/hooks/__tests__/analyze-skill-contract.test.d.ts +0 -2
  776. package/dist/hooks/__tests__/analyze-skill-contract.test.d.ts.map +0 -1
  777. package/dist/hooks/__tests__/analyze-skill-contract.test.js +0 -48
  778. package/dist/hooks/__tests__/analyze-skill-contract.test.js.map +0 -1
  779. package/dist/hooks/__tests__/anti-slop-workflow.test.d.ts +0 -2
  780. package/dist/hooks/__tests__/anti-slop-workflow.test.d.ts.map +0 -1
  781. package/dist/hooks/__tests__/anti-slop-workflow.test.js +0 -146
  782. package/dist/hooks/__tests__/anti-slop-workflow.test.js.map +0 -1
  783. package/dist/hooks/__tests__/autopilot-skill-contract.test.d.ts +0 -2
  784. package/dist/hooks/__tests__/autopilot-skill-contract.test.d.ts.map +0 -1
  785. package/dist/hooks/__tests__/autopilot-skill-contract.test.js +0 -37
  786. package/dist/hooks/__tests__/autopilot-skill-contract.test.js.map +0 -1
  787. package/dist/hooks/__tests__/clawhip-event-contract.test.d.ts +0 -2
  788. package/dist/hooks/__tests__/clawhip-event-contract.test.d.ts.map +0 -1
  789. package/dist/hooks/__tests__/clawhip-event-contract.test.js +0 -37
  790. package/dist/hooks/__tests__/clawhip-event-contract.test.js.map +0 -1
  791. package/dist/hooks/__tests__/code-review-skill-contract.test.d.ts +0 -2
  792. package/dist/hooks/__tests__/code-review-skill-contract.test.d.ts.map +0 -1
  793. package/dist/hooks/__tests__/code-review-skill-contract.test.js +0 -56
  794. package/dist/hooks/__tests__/code-review-skill-contract.test.js.map +0 -1
  795. package/dist/hooks/__tests__/codebase-map.test.d.ts +0 -8
  796. package/dist/hooks/__tests__/codebase-map.test.d.ts.map +0 -1
  797. package/dist/hooks/__tests__/codebase-map.test.js +0 -218
  798. package/dist/hooks/__tests__/codebase-map.test.js.map +0 -1
  799. package/dist/hooks/__tests__/consensus-execution-handoff.test.d.ts +0 -18
  800. package/dist/hooks/__tests__/consensus-execution-handoff.test.d.ts.map +0 -1
  801. package/dist/hooks/__tests__/consensus-execution-handoff.test.js +0 -234
  802. package/dist/hooks/__tests__/consensus-execution-handoff.test.js.map +0 -1
  803. package/dist/hooks/__tests__/debugger-log-recency-contract.test.d.ts +0 -2
  804. package/dist/hooks/__tests__/debugger-log-recency-contract.test.d.ts.map +0 -1
  805. package/dist/hooks/__tests__/debugger-log-recency-contract.test.js +0 -20
  806. package/dist/hooks/__tests__/debugger-log-recency-contract.test.js.map +0 -1
  807. package/dist/hooks/__tests__/deep-interview-contract.test.d.ts +0 -2
  808. package/dist/hooks/__tests__/deep-interview-contract.test.d.ts.map +0 -1
  809. package/dist/hooks/__tests__/deep-interview-contract.test.js +0 -213
  810. package/dist/hooks/__tests__/deep-interview-contract.test.js.map +0 -1
  811. package/dist/hooks/__tests__/explicit-terminal-stop-docs-contract.test.d.ts +0 -2
  812. package/dist/hooks/__tests__/explicit-terminal-stop-docs-contract.test.d.ts.map +0 -1
  813. package/dist/hooks/__tests__/explicit-terminal-stop-docs-contract.test.js +0 -43
  814. package/dist/hooks/__tests__/explicit-terminal-stop-docs-contract.test.js.map +0 -1
  815. package/dist/hooks/__tests__/explicit-terminal-stop-model-docs-contract.test.d.ts +0 -2
  816. package/dist/hooks/__tests__/explicit-terminal-stop-model-docs-contract.test.d.ts.map +0 -1
  817. package/dist/hooks/__tests__/explicit-terminal-stop-model-docs-contract.test.js +0 -38
  818. package/dist/hooks/__tests__/explicit-terminal-stop-model-docs-contract.test.js.map +0 -1
  819. package/dist/hooks/__tests__/explore-routing.test.d.ts +0 -2
  820. package/dist/hooks/__tests__/explore-routing.test.d.ts.map +0 -1
  821. package/dist/hooks/__tests__/explore-routing.test.js +0 -43
  822. package/dist/hooks/__tests__/explore-routing.test.js.map +0 -1
  823. package/dist/hooks/__tests__/explore-sparkshell-guidance-contract.test.d.ts +0 -2
  824. package/dist/hooks/__tests__/explore-sparkshell-guidance-contract.test.d.ts.map +0 -1
  825. package/dist/hooks/__tests__/explore-sparkshell-guidance-contract.test.js +0 -69
  826. package/dist/hooks/__tests__/explore-sparkshell-guidance-contract.test.js.map +0 -1
  827. package/dist/hooks/__tests__/keyword-detector.test.d.ts +0 -2
  828. package/dist/hooks/__tests__/keyword-detector.test.d.ts.map +0 -1
  829. package/dist/hooks/__tests__/keyword-detector.test.js +0 -1716
  830. package/dist/hooks/__tests__/keyword-detector.test.js.map +0 -1
  831. package/dist/hooks/__tests__/notify-fallback-watcher.test.d.ts +0 -2
  832. package/dist/hooks/__tests__/notify-fallback-watcher.test.d.ts.map +0 -1
  833. package/dist/hooks/__tests__/notify-fallback-watcher.test.js +0 -3898
  834. package/dist/hooks/__tests__/notify-fallback-watcher.test.js.map +0 -1
  835. package/dist/hooks/__tests__/notify-hook-all-workers-idle.test.d.ts +0 -2
  836. package/dist/hooks/__tests__/notify-hook-all-workers-idle.test.d.ts.map +0 -1
  837. package/dist/hooks/__tests__/notify-hook-all-workers-idle.test.js +0 -786
  838. package/dist/hooks/__tests__/notify-hook-all-workers-idle.test.js.map +0 -1
  839. package/dist/hooks/__tests__/notify-hook-auto-nudge.test.d.ts +0 -2
  840. package/dist/hooks/__tests__/notify-hook-auto-nudge.test.d.ts.map +0 -1
  841. package/dist/hooks/__tests__/notify-hook-auto-nudge.test.js +0 -2397
  842. package/dist/hooks/__tests__/notify-hook-auto-nudge.test.js.map +0 -1
  843. package/dist/hooks/__tests__/notify-hook-cross-worktree-heartbeat.test.d.ts +0 -2
  844. package/dist/hooks/__tests__/notify-hook-cross-worktree-heartbeat.test.d.ts.map +0 -1
  845. package/dist/hooks/__tests__/notify-hook-cross-worktree-heartbeat.test.js +0 -160
  846. package/dist/hooks/__tests__/notify-hook-cross-worktree-heartbeat.test.js.map +0 -1
  847. package/dist/hooks/__tests__/notify-hook-managed-tmux.test.d.ts +0 -2
  848. package/dist/hooks/__tests__/notify-hook-managed-tmux.test.d.ts.map +0 -1
  849. package/dist/hooks/__tests__/notify-hook-managed-tmux.test.js +0 -1178
  850. package/dist/hooks/__tests__/notify-hook-managed-tmux.test.js.map +0 -1
  851. package/dist/hooks/__tests__/notify-hook-modules.test.d.ts +0 -9
  852. package/dist/hooks/__tests__/notify-hook-modules.test.d.ts.map +0 -1
  853. package/dist/hooks/__tests__/notify-hook-modules.test.js +0 -529
  854. package/dist/hooks/__tests__/notify-hook-modules.test.js.map +0 -1
  855. package/dist/hooks/__tests__/notify-hook-native-dispatch-contract.test.d.ts +0 -2
  856. package/dist/hooks/__tests__/notify-hook-native-dispatch-contract.test.d.ts.map +0 -1
  857. package/dist/hooks/__tests__/notify-hook-native-dispatch-contract.test.js +0 -14
  858. package/dist/hooks/__tests__/notify-hook-native-dispatch-contract.test.js.map +0 -1
  859. package/dist/hooks/__tests__/notify-hook-ralph-resume.test.d.ts +0 -2
  860. package/dist/hooks/__tests__/notify-hook-ralph-resume.test.d.ts.map +0 -1
  861. package/dist/hooks/__tests__/notify-hook-ralph-resume.test.js +0 -682
  862. package/dist/hooks/__tests__/notify-hook-ralph-resume.test.js.map +0 -1
  863. package/dist/hooks/__tests__/notify-hook-regression-205.test.d.ts +0 -9
  864. package/dist/hooks/__tests__/notify-hook-regression-205.test.d.ts.map +0 -1
  865. package/dist/hooks/__tests__/notify-hook-regression-205.test.js +0 -255
  866. package/dist/hooks/__tests__/notify-hook-regression-205.test.js.map +0 -1
  867. package/dist/hooks/__tests__/notify-hook-session-idle-dedupe.test.d.ts +0 -2
  868. package/dist/hooks/__tests__/notify-hook-session-idle-dedupe.test.d.ts.map +0 -1
  869. package/dist/hooks/__tests__/notify-hook-session-idle-dedupe.test.js +0 -162
  870. package/dist/hooks/__tests__/notify-hook-session-idle-dedupe.test.js.map +0 -1
  871. package/dist/hooks/__tests__/notify-hook-session-scope.test.d.ts +0 -2
  872. package/dist/hooks/__tests__/notify-hook-session-scope.test.d.ts.map +0 -1
  873. package/dist/hooks/__tests__/notify-hook-session-scope.test.js +0 -301
  874. package/dist/hooks/__tests__/notify-hook-session-scope.test.js.map +0 -1
  875. package/dist/hooks/__tests__/notify-hook-team-dispatch.test.d.ts +0 -2
  876. package/dist/hooks/__tests__/notify-hook-team-dispatch.test.d.ts.map +0 -1
  877. package/dist/hooks/__tests__/notify-hook-team-dispatch.test.js +0 -1510
  878. package/dist/hooks/__tests__/notify-hook-team-dispatch.test.js.map +0 -1
  879. package/dist/hooks/__tests__/notify-hook-team-leader-nudge.test.d.ts +0 -2
  880. package/dist/hooks/__tests__/notify-hook-team-leader-nudge.test.d.ts.map +0 -1
  881. package/dist/hooks/__tests__/notify-hook-team-leader-nudge.test.js +0 -2879
  882. package/dist/hooks/__tests__/notify-hook-team-leader-nudge.test.js.map +0 -1
  883. package/dist/hooks/__tests__/notify-hook-team-tmux-guard.test.d.ts +0 -2
  884. package/dist/hooks/__tests__/notify-hook-team-tmux-guard.test.d.ts.map +0 -1
  885. package/dist/hooks/__tests__/notify-hook-team-tmux-guard.test.js +0 -228
  886. package/dist/hooks/__tests__/notify-hook-team-tmux-guard.test.js.map +0 -1
  887. package/dist/hooks/__tests__/notify-hook-team-worker-fail-closed.test.d.ts +0 -2
  888. package/dist/hooks/__tests__/notify-hook-team-worker-fail-closed.test.d.ts.map +0 -1
  889. package/dist/hooks/__tests__/notify-hook-team-worker-fail-closed.test.js +0 -35
  890. package/dist/hooks/__tests__/notify-hook-team-worker-fail-closed.test.js.map +0 -1
  891. package/dist/hooks/__tests__/notify-hook-tmux-heal.test.d.ts +0 -2
  892. package/dist/hooks/__tests__/notify-hook-tmux-heal.test.d.ts.map +0 -1
  893. package/dist/hooks/__tests__/notify-hook-tmux-heal.test.js +0 -1589
  894. package/dist/hooks/__tests__/notify-hook-tmux-heal.test.js.map +0 -1
  895. package/dist/hooks/__tests__/notify-hook-tmux-scrollback.test.d.ts +0 -10
  896. package/dist/hooks/__tests__/notify-hook-tmux-scrollback.test.d.ts.map +0 -1
  897. package/dist/hooks/__tests__/notify-hook-tmux-scrollback.test.js +0 -0
  898. package/dist/hooks/__tests__/notify-hook-tmux-scrollback.test.js.map +0 -1
  899. package/dist/hooks/__tests__/notify-hook-visual-verdict.test.d.ts +0 -11
  900. package/dist/hooks/__tests__/notify-hook-visual-verdict.test.d.ts.map +0 -1
  901. package/dist/hooks/__tests__/notify-hook-visual-verdict.test.js +0 -266
  902. package/dist/hooks/__tests__/notify-hook-visual-verdict.test.js.map +0 -1
  903. package/dist/hooks/__tests__/notify-hook-worker-idle.test.d.ts +0 -2
  904. package/dist/hooks/__tests__/notify-hook-worker-idle.test.d.ts.map +0 -1
  905. package/dist/hooks/__tests__/notify-hook-worker-idle.test.js +0 -895
  906. package/dist/hooks/__tests__/notify-hook-worker-idle.test.js.map +0 -1
  907. package/dist/hooks/__tests__/openclaw-setup-contract.test.d.ts +0 -2
  908. package/dist/hooks/__tests__/openclaw-setup-contract.test.d.ts.map +0 -1
  909. package/dist/hooks/__tests__/openclaw-setup-contract.test.js +0 -61
  910. package/dist/hooks/__tests__/openclaw-setup-contract.test.js.map +0 -1
  911. package/dist/hooks/__tests__/pre-context-gate-skills.test.d.ts +0 -2
  912. package/dist/hooks/__tests__/pre-context-gate-skills.test.d.ts.map +0 -1
  913. package/dist/hooks/__tests__/pre-context-gate-skills.test.js +0 -40
  914. package/dist/hooks/__tests__/pre-context-gate-skills.test.js.map +0 -1
  915. package/dist/hooks/__tests__/prompt-guidance-catalog.test.d.ts +0 -2
  916. package/dist/hooks/__tests__/prompt-guidance-catalog.test.d.ts.map +0 -1
  917. package/dist/hooks/__tests__/prompt-guidance-catalog.test.js +0 -11
  918. package/dist/hooks/__tests__/prompt-guidance-catalog.test.js.map +0 -1
  919. package/dist/hooks/__tests__/prompt-guidance-contract.test.d.ts +0 -2
  920. package/dist/hooks/__tests__/prompt-guidance-contract.test.d.ts.map +0 -1
  921. package/dist/hooks/__tests__/prompt-guidance-contract.test.js +0 -38
  922. package/dist/hooks/__tests__/prompt-guidance-contract.test.js.map +0 -1
  923. package/dist/hooks/__tests__/prompt-guidance-fragments.test.d.ts +0 -2
  924. package/dist/hooks/__tests__/prompt-guidance-fragments.test.d.ts.map +0 -1
  925. package/dist/hooks/__tests__/prompt-guidance-fragments.test.js +0 -48
  926. package/dist/hooks/__tests__/prompt-guidance-fragments.test.js.map +0 -1
  927. package/dist/hooks/__tests__/prompt-guidance-scenarios.test.d.ts +0 -2
  928. package/dist/hooks/__tests__/prompt-guidance-scenarios.test.d.ts.map +0 -1
  929. package/dist/hooks/__tests__/prompt-guidance-scenarios.test.js +0 -11
  930. package/dist/hooks/__tests__/prompt-guidance-scenarios.test.js.map +0 -1
  931. package/dist/hooks/__tests__/prompt-guidance-test-helpers.d.ts +0 -5
  932. package/dist/hooks/__tests__/prompt-guidance-test-helpers.d.ts.map +0 -1
  933. package/dist/hooks/__tests__/prompt-guidance-test-helpers.js +0 -34
  934. package/dist/hooks/__tests__/prompt-guidance-test-helpers.js.map +0 -1
  935. package/dist/hooks/__tests__/prompt-guidance-wave-two.test.d.ts +0 -2
  936. package/dist/hooks/__tests__/prompt-guidance-wave-two.test.d.ts.map +0 -1
  937. package/dist/hooks/__tests__/prompt-guidance-wave-two.test.js +0 -65
  938. package/dist/hooks/__tests__/prompt-guidance-wave-two.test.js.map +0 -1
  939. package/dist/hooks/__tests__/prompt-orchestration-boundary.test.d.ts +0 -2
  940. package/dist/hooks/__tests__/prompt-orchestration-boundary.test.d.ts.map +0 -1
  941. package/dist/hooks/__tests__/prompt-orchestration-boundary.test.js +0 -38
  942. package/dist/hooks/__tests__/prompt-orchestration-boundary.test.js.map +0 -1
  943. package/dist/hooks/__tests__/prompt-refactor-contract.test.d.ts +0 -2
  944. package/dist/hooks/__tests__/prompt-refactor-contract.test.d.ts.map +0 -1
  945. package/dist/hooks/__tests__/prompt-refactor-contract.test.js +0 -22
  946. package/dist/hooks/__tests__/prompt-refactor-contract.test.js.map +0 -1
  947. package/dist/hooks/__tests__/prompt-team-routing.test.d.ts +0 -2
  948. package/dist/hooks/__tests__/prompt-team-routing.test.d.ts.map +0 -1
  949. package/dist/hooks/__tests__/prompt-team-routing.test.js +0 -49
  950. package/dist/hooks/__tests__/prompt-team-routing.test.js.map +0 -1
  951. package/dist/hooks/__tests__/session.test.d.ts +0 -2
  952. package/dist/hooks/__tests__/session.test.d.ts.map +0 -1
  953. package/dist/hooks/__tests__/session.test.js +0 -322
  954. package/dist/hooks/__tests__/session.test.js.map +0 -1
  955. package/dist/hooks/__tests__/skill-guidance-contract.test.d.ts +0 -2
  956. package/dist/hooks/__tests__/skill-guidance-contract.test.d.ts.map +0 -1
  957. package/dist/hooks/__tests__/skill-guidance-contract.test.js +0 -29
  958. package/dist/hooks/__tests__/skill-guidance-contract.test.js.map +0 -1
  959. package/dist/hooks/__tests__/task-size-detector.test.d.ts +0 -2
  960. package/dist/hooks/__tests__/task-size-detector.test.d.ts.map +0 -1
  961. package/dist/hooks/__tests__/task-size-detector.test.js +0 -330
  962. package/dist/hooks/__tests__/task-size-detector.test.js.map +0 -1
  963. package/dist/hooks/__tests__/team-runtime-gating-docs-contract.test.d.ts +0 -2
  964. package/dist/hooks/__tests__/team-runtime-gating-docs-contract.test.d.ts.map +0 -1
  965. package/dist/hooks/__tests__/team-runtime-gating-docs-contract.test.js +0 -28
  966. package/dist/hooks/__tests__/team-runtime-gating-docs-contract.test.js.map +0 -1
  967. package/dist/hooks/__tests__/tmux-hook-engine-types-sync.test.d.ts +0 -2
  968. package/dist/hooks/__tests__/tmux-hook-engine-types-sync.test.d.ts.map +0 -1
  969. package/dist/hooks/__tests__/tmux-hook-engine-types-sync.test.js +0 -24
  970. package/dist/hooks/__tests__/tmux-hook-engine-types-sync.test.js.map +0 -1
  971. package/dist/hooks/__tests__/tmux-hook-engine.test.d.ts +0 -2
  972. package/dist/hooks/__tests__/tmux-hook-engine.test.d.ts.map +0 -1
  973. package/dist/hooks/__tests__/tmux-hook-engine.test.js +0 -403
  974. package/dist/hooks/__tests__/tmux-hook-engine.test.js.map +0 -1
  975. package/dist/hooks/__tests__/triage-config.test.d.ts +0 -2
  976. package/dist/hooks/__tests__/triage-config.test.d.ts.map +0 -1
  977. package/dist/hooks/__tests__/triage-config.test.js +0 -211
  978. package/dist/hooks/__tests__/triage-config.test.js.map +0 -1
  979. package/dist/hooks/__tests__/triage-heuristic.test.d.ts +0 -2
  980. package/dist/hooks/__tests__/triage-heuristic.test.d.ts.map +0 -1
  981. package/dist/hooks/__tests__/triage-heuristic.test.js +0 -285
  982. package/dist/hooks/__tests__/triage-heuristic.test.js.map +0 -1
  983. package/dist/hooks/__tests__/triage-state.test.d.ts +0 -2
  984. package/dist/hooks/__tests__/triage-state.test.d.ts.map +0 -1
  985. package/dist/hooks/__tests__/triage-state.test.js +0 -426
  986. package/dist/hooks/__tests__/triage-state.test.js.map +0 -1
  987. package/dist/hooks/__tests__/visual-ralph-skill.test.d.ts +0 -2
  988. package/dist/hooks/__tests__/visual-ralph-skill.test.d.ts.map +0 -1
  989. package/dist/hooks/__tests__/visual-ralph-skill.test.js +0 -44
  990. package/dist/hooks/__tests__/visual-ralph-skill.test.js.map +0 -1
  991. package/dist/hooks/__tests__/visual-verdict-loop.test.d.ts +0 -2
  992. package/dist/hooks/__tests__/visual-verdict-loop.test.d.ts.map +0 -1
  993. package/dist/hooks/__tests__/visual-verdict-loop.test.js +0 -35
  994. package/dist/hooks/__tests__/visual-verdict-loop.test.js.map +0 -1
  995. package/dist/hooks/__tests__/wiki-docs-contract.test.d.ts +0 -2
  996. package/dist/hooks/__tests__/wiki-docs-contract.test.d.ts.map +0 -1
  997. package/dist/hooks/__tests__/wiki-docs-contract.test.js +0 -34
  998. package/dist/hooks/__tests__/wiki-docs-contract.test.js.map +0 -1
  999. package/dist/hooks/code-simplifier/__tests__/index.test.d.ts +0 -2
  1000. package/dist/hooks/code-simplifier/__tests__/index.test.d.ts.map +0 -1
  1001. package/dist/hooks/code-simplifier/__tests__/index.test.js +0 -187
  1002. package/dist/hooks/code-simplifier/__tests__/index.test.js.map +0 -1
  1003. package/dist/hooks/extensibility/__tests__/dispatcher.test.d.ts +0 -2
  1004. package/dist/hooks/extensibility/__tests__/dispatcher.test.d.ts.map +0 -1
  1005. package/dist/hooks/extensibility/__tests__/dispatcher.test.js +0 -242
  1006. package/dist/hooks/extensibility/__tests__/dispatcher.test.js.map +0 -1
  1007. package/dist/hooks/extensibility/__tests__/events.test.d.ts +0 -2
  1008. package/dist/hooks/extensibility/__tests__/events.test.d.ts.map +0 -1
  1009. package/dist/hooks/extensibility/__tests__/events.test.js +0 -125
  1010. package/dist/hooks/extensibility/__tests__/events.test.js.map +0 -1
  1011. package/dist/hooks/extensibility/__tests__/example-hook-plugins.test.d.ts +0 -2
  1012. package/dist/hooks/extensibility/__tests__/example-hook-plugins.test.d.ts.map +0 -1
  1013. package/dist/hooks/extensibility/__tests__/example-hook-plugins.test.js +0 -153
  1014. package/dist/hooks/extensibility/__tests__/example-hook-plugins.test.js.map +0 -1
  1015. package/dist/hooks/extensibility/__tests__/loader.test.d.ts +0 -2
  1016. package/dist/hooks/extensibility/__tests__/loader.test.d.ts.map +0 -1
  1017. package/dist/hooks/extensibility/__tests__/loader.test.js +0 -254
  1018. package/dist/hooks/extensibility/__tests__/loader.test.js.map +0 -1
  1019. package/dist/hooks/extensibility/__tests__/logging.test.d.ts +0 -2
  1020. package/dist/hooks/extensibility/__tests__/logging.test.d.ts.map +0 -1
  1021. package/dist/hooks/extensibility/__tests__/logging.test.js +0 -74
  1022. package/dist/hooks/extensibility/__tests__/logging.test.js.map +0 -1
  1023. package/dist/hooks/extensibility/__tests__/plugin-runner.test.d.ts +0 -2
  1024. package/dist/hooks/extensibility/__tests__/plugin-runner.test.d.ts.map +0 -1
  1025. package/dist/hooks/extensibility/__tests__/plugin-runner.test.js +0 -202
  1026. package/dist/hooks/extensibility/__tests__/plugin-runner.test.js.map +0 -1
  1027. package/dist/hooks/extensibility/__tests__/runtime.test.d.ts +0 -2
  1028. package/dist/hooks/extensibility/__tests__/runtime.test.d.ts.map +0 -1
  1029. package/dist/hooks/extensibility/__tests__/runtime.test.js +0 -198
  1030. package/dist/hooks/extensibility/__tests__/runtime.test.js.map +0 -1
  1031. package/dist/hooks/extensibility/__tests__/sdk-public-surface.test.d.ts +0 -2
  1032. package/dist/hooks/extensibility/__tests__/sdk-public-surface.test.d.ts.map +0 -1
  1033. package/dist/hooks/extensibility/__tests__/sdk-public-surface.test.js +0 -32
  1034. package/dist/hooks/extensibility/__tests__/sdk-public-surface.test.js.map +0 -1
  1035. package/dist/hooks/extensibility/__tests__/sdk.test.d.ts +0 -2
  1036. package/dist/hooks/extensibility/__tests__/sdk.test.d.ts.map +0 -1
  1037. package/dist/hooks/extensibility/__tests__/sdk.test.js +0 -479
  1038. package/dist/hooks/extensibility/__tests__/sdk.test.js.map +0 -1
  1039. package/dist/hud/__tests__/authority.test.d.ts +0 -2
  1040. package/dist/hud/__tests__/authority.test.d.ts.map +0 -1
  1041. package/dist/hud/__tests__/authority.test.js +0 -56
  1042. package/dist/hud/__tests__/authority.test.js.map +0 -1
  1043. package/dist/hud/__tests__/colors.test.d.ts +0 -2
  1044. package/dist/hud/__tests__/colors.test.d.ts.map +0 -1
  1045. package/dist/hud/__tests__/colors.test.js +0 -92
  1046. package/dist/hud/__tests__/colors.test.js.map +0 -1
  1047. package/dist/hud/__tests__/hud-tmux-injection.test.d.ts +0 -10
  1048. package/dist/hud/__tests__/hud-tmux-injection.test.d.ts.map +0 -1
  1049. package/dist/hud/__tests__/hud-tmux-injection.test.js +0 -150
  1050. package/dist/hud/__tests__/hud-tmux-injection.test.js.map +0 -1
  1051. package/dist/hud/__tests__/index.test.d.ts +0 -2
  1052. package/dist/hud/__tests__/index.test.d.ts.map +0 -1
  1053. package/dist/hud/__tests__/index.test.js +0 -180
  1054. package/dist/hud/__tests__/index.test.js.map +0 -1
  1055. package/dist/hud/__tests__/reconcile.test.d.ts +0 -2
  1056. package/dist/hud/__tests__/reconcile.test.d.ts.map +0 -1
  1057. package/dist/hud/__tests__/reconcile.test.js +0 -125
  1058. package/dist/hud/__tests__/reconcile.test.js.map +0 -1
  1059. package/dist/hud/__tests__/render.test.d.ts +0 -2
  1060. package/dist/hud/__tests__/render.test.d.ts.map +0 -1
  1061. package/dist/hud/__tests__/render.test.js +0 -573
  1062. package/dist/hud/__tests__/render.test.js.map +0 -1
  1063. package/dist/hud/__tests__/state.test.d.ts +0 -2
  1064. package/dist/hud/__tests__/state.test.d.ts.map +0 -1
  1065. package/dist/hud/__tests__/state.test.js +0 -618
  1066. package/dist/hud/__tests__/state.test.js.map +0 -1
  1067. package/dist/hud/__tests__/types.test.d.ts +0 -2
  1068. package/dist/hud/__tests__/types.test.d.ts.map +0 -1
  1069. package/dist/hud/__tests__/types.test.js +0 -79
  1070. package/dist/hud/__tests__/types.test.js.map +0 -1
  1071. package/dist/hud/__tests__/watch.test.d.ts +0 -2
  1072. package/dist/hud/__tests__/watch.test.d.ts.map +0 -1
  1073. package/dist/hud/__tests__/watch.test.js +0 -63
  1074. package/dist/hud/__tests__/watch.test.js.map +0 -1
  1075. package/dist/mcp/__tests__/bootstrap.test.d.ts +0 -2
  1076. package/dist/mcp/__tests__/bootstrap.test.d.ts.map +0 -1
  1077. package/dist/mcp/__tests__/bootstrap.test.js +0 -207
  1078. package/dist/mcp/__tests__/bootstrap.test.js.map +0 -1
  1079. package/dist/mcp/__tests__/code-intel-server.test.d.ts +0 -2
  1080. package/dist/mcp/__tests__/code-intel-server.test.d.ts.map +0 -1
  1081. package/dist/mcp/__tests__/code-intel-server.test.js +0 -70
  1082. package/dist/mcp/__tests__/code-intel-server.test.js.map +0 -1
  1083. package/dist/mcp/__tests__/memory-server.test.d.ts +0 -2
  1084. package/dist/mcp/__tests__/memory-server.test.d.ts.map +0 -1
  1085. package/dist/mcp/__tests__/memory-server.test.js +0 -36
  1086. package/dist/mcp/__tests__/memory-server.test.js.map +0 -1
  1087. package/dist/mcp/__tests__/memory-validation.test.d.ts +0 -2
  1088. package/dist/mcp/__tests__/memory-validation.test.d.ts.map +0 -1
  1089. package/dist/mcp/__tests__/memory-validation.test.js +0 -29
  1090. package/dist/mcp/__tests__/memory-validation.test.js.map +0 -1
  1091. package/dist/mcp/__tests__/path-traversal.test.d.ts +0 -2
  1092. package/dist/mcp/__tests__/path-traversal.test.d.ts.map +0 -1
  1093. package/dist/mcp/__tests__/path-traversal.test.js +0 -83
  1094. package/dist/mcp/__tests__/path-traversal.test.js.map +0 -1
  1095. package/dist/mcp/__tests__/server-lifecycle.test.d.ts +0 -2
  1096. package/dist/mcp/__tests__/server-lifecycle.test.d.ts.map +0 -1
  1097. package/dist/mcp/__tests__/server-lifecycle.test.js +0 -260
  1098. package/dist/mcp/__tests__/server-lifecycle.test.js.map +0 -1
  1099. package/dist/mcp/__tests__/state-paths.test.d.ts +0 -2
  1100. package/dist/mcp/__tests__/state-paths.test.d.ts.map +0 -1
  1101. package/dist/mcp/__tests__/state-paths.test.js +0 -209
  1102. package/dist/mcp/__tests__/state-paths.test.js.map +0 -1
  1103. package/dist/mcp/__tests__/state-server-ralph-phase.test.d.ts +0 -2
  1104. package/dist/mcp/__tests__/state-server-ralph-phase.test.d.ts.map +0 -1
  1105. package/dist/mcp/__tests__/state-server-ralph-phase.test.js +0 -109
  1106. package/dist/mcp/__tests__/state-server-ralph-phase.test.js.map +0 -1
  1107. package/dist/mcp/__tests__/state-server-schema.test.d.ts +0 -2
  1108. package/dist/mcp/__tests__/state-server-schema.test.d.ts.map +0 -1
  1109. package/dist/mcp/__tests__/state-server-schema.test.js +0 -29
  1110. package/dist/mcp/__tests__/state-server-schema.test.js.map +0 -1
  1111. package/dist/mcp/__tests__/state-server-team-tools.test.d.ts +0 -2
  1112. package/dist/mcp/__tests__/state-server-team-tools.test.d.ts.map +0 -1
  1113. package/dist/mcp/__tests__/state-server-team-tools.test.js +0 -35
  1114. package/dist/mcp/__tests__/state-server-team-tools.test.js.map +0 -1
  1115. package/dist/mcp/__tests__/state-server.test.d.ts +0 -2
  1116. package/dist/mcp/__tests__/state-server.test.d.ts.map +0 -1
  1117. package/dist/mcp/__tests__/state-server.test.js +0 -965
  1118. package/dist/mcp/__tests__/state-server.test.js.map +0 -1
  1119. package/dist/mcp/__tests__/trace-server.test.d.ts +0 -2
  1120. package/dist/mcp/__tests__/trace-server.test.d.ts.map +0 -1
  1121. package/dist/mcp/__tests__/trace-server.test.js +0 -119
  1122. package/dist/mcp/__tests__/trace-server.test.js.map +0 -1
  1123. package/dist/mcp/__tests__/wiki-server.test.d.ts +0 -2
  1124. package/dist/mcp/__tests__/wiki-server.test.d.ts.map +0 -1
  1125. package/dist/mcp/__tests__/wiki-server.test.js +0 -30
  1126. package/dist/mcp/__tests__/wiki-server.test.js.map +0 -1
  1127. package/dist/modes/__tests__/base-autoresearch-contract.test.d.ts +0 -2
  1128. package/dist/modes/__tests__/base-autoresearch-contract.test.d.ts.map +0 -1
  1129. package/dist/modes/__tests__/base-autoresearch-contract.test.js +0 -123
  1130. package/dist/modes/__tests__/base-autoresearch-contract.test.js.map +0 -1
  1131. package/dist/modes/__tests__/base-multi-state-compat.test.d.ts +0 -2
  1132. package/dist/modes/__tests__/base-multi-state-compat.test.d.ts.map +0 -1
  1133. package/dist/modes/__tests__/base-multi-state-compat.test.js +0 -38
  1134. package/dist/modes/__tests__/base-multi-state-compat.test.js.map +0 -1
  1135. package/dist/modes/__tests__/base-ralph-contract.test.d.ts +0 -2
  1136. package/dist/modes/__tests__/base-ralph-contract.test.d.ts.map +0 -1
  1137. package/dist/modes/__tests__/base-ralph-contract.test.js +0 -64
  1138. package/dist/modes/__tests__/base-ralph-contract.test.js.map +0 -1
  1139. package/dist/modes/__tests__/base-session-scope.test.d.ts +0 -2
  1140. package/dist/modes/__tests__/base-session-scope.test.d.ts.map +0 -1
  1141. package/dist/modes/__tests__/base-session-scope.test.js +0 -98
  1142. package/dist/modes/__tests__/base-session-scope.test.js.map +0 -1
  1143. package/dist/modes/__tests__/base-tmux-pane.test.d.ts +0 -2
  1144. package/dist/modes/__tests__/base-tmux-pane.test.d.ts.map +0 -1
  1145. package/dist/modes/__tests__/base-tmux-pane.test.js +0 -39
  1146. package/dist/modes/__tests__/base-tmux-pane.test.js.map +0 -1
  1147. package/dist/notifications/__tests__/config.test.d.ts +0 -2
  1148. package/dist/notifications/__tests__/config.test.d.ts.map +0 -1
  1149. package/dist/notifications/__tests__/config.test.js +0 -269
  1150. package/dist/notifications/__tests__/config.test.js.map +0 -1
  1151. package/dist/notifications/__tests__/custom-alias-enablement.test.d.ts +0 -2
  1152. package/dist/notifications/__tests__/custom-alias-enablement.test.d.ts.map +0 -1
  1153. package/dist/notifications/__tests__/custom-alias-enablement.test.js +0 -84
  1154. package/dist/notifications/__tests__/custom-alias-enablement.test.js.map +0 -1
  1155. package/dist/notifications/__tests__/dispatch-cooldown.test.d.ts +0 -5
  1156. package/dist/notifications/__tests__/dispatch-cooldown.test.d.ts.map +0 -1
  1157. package/dist/notifications/__tests__/dispatch-cooldown.test.js +0 -100
  1158. package/dist/notifications/__tests__/dispatch-cooldown.test.js.map +0 -1
  1159. package/dist/notifications/__tests__/dispatcher.test.d.ts +0 -2
  1160. package/dist/notifications/__tests__/dispatcher.test.d.ts.map +0 -1
  1161. package/dist/notifications/__tests__/dispatcher.test.js +0 -202
  1162. package/dist/notifications/__tests__/dispatcher.test.js.map +0 -1
  1163. package/dist/notifications/__tests__/formatter.test.d.ts +0 -2
  1164. package/dist/notifications/__tests__/formatter.test.d.ts.map +0 -1
  1165. package/dist/notifications/__tests__/formatter.test.js +0 -270
  1166. package/dist/notifications/__tests__/formatter.test.js.map +0 -1
  1167. package/dist/notifications/__tests__/hook-config.test.d.ts +0 -5
  1168. package/dist/notifications/__tests__/hook-config.test.d.ts.map +0 -1
  1169. package/dist/notifications/__tests__/hook-config.test.js +0 -139
  1170. package/dist/notifications/__tests__/hook-config.test.js.map +0 -1
  1171. package/dist/notifications/__tests__/idle-cooldown.test.d.ts +0 -5
  1172. package/dist/notifications/__tests__/idle-cooldown.test.d.ts.map +0 -1
  1173. package/dist/notifications/__tests__/idle-cooldown.test.js +0 -209
  1174. package/dist/notifications/__tests__/idle-cooldown.test.js.map +0 -1
  1175. package/dist/notifications/__tests__/index.test.d.ts +0 -2
  1176. package/dist/notifications/__tests__/index.test.d.ts.map +0 -1
  1177. package/dist/notifications/__tests__/index.test.js +0 -188
  1178. package/dist/notifications/__tests__/index.test.js.map +0 -1
  1179. package/dist/notifications/__tests__/lifecycle-dedupe.test.d.ts +0 -2
  1180. package/dist/notifications/__tests__/lifecycle-dedupe.test.d.ts.map +0 -1
  1181. package/dist/notifications/__tests__/lifecycle-dedupe.test.js +0 -86
  1182. package/dist/notifications/__tests__/lifecycle-dedupe.test.js.map +0 -1
  1183. package/dist/notifications/__tests__/notifier.test.d.ts +0 -2
  1184. package/dist/notifications/__tests__/notifier.test.d.ts.map +0 -1
  1185. package/dist/notifications/__tests__/notifier.test.js +0 -239
  1186. package/dist/notifications/__tests__/notifier.test.js.map +0 -1
  1187. package/dist/notifications/__tests__/profiles.test.d.ts +0 -2
  1188. package/dist/notifications/__tests__/profiles.test.d.ts.map +0 -1
  1189. package/dist/notifications/__tests__/profiles.test.js +0 -404
  1190. package/dist/notifications/__tests__/profiles.test.js.map +0 -1
  1191. package/dist/notifications/__tests__/reply-config.test.d.ts +0 -2
  1192. package/dist/notifications/__tests__/reply-config.test.d.ts.map +0 -1
  1193. package/dist/notifications/__tests__/reply-config.test.js +0 -79
  1194. package/dist/notifications/__tests__/reply-config.test.js.map +0 -1
  1195. package/dist/notifications/__tests__/reply-listener.test.d.ts +0 -2
  1196. package/dist/notifications/__tests__/reply-listener.test.d.ts.map +0 -1
  1197. package/dist/notifications/__tests__/reply-listener.test.js +0 -723
  1198. package/dist/notifications/__tests__/reply-listener.test.js.map +0 -1
  1199. package/dist/notifications/__tests__/session-idle-tail-dedupe.test.d.ts +0 -2
  1200. package/dist/notifications/__tests__/session-idle-tail-dedupe.test.d.ts.map +0 -1
  1201. package/dist/notifications/__tests__/session-idle-tail-dedupe.test.js +0 -93
  1202. package/dist/notifications/__tests__/session-idle-tail-dedupe.test.js.map +0 -1
  1203. package/dist/notifications/__tests__/session-registry.test.d.ts +0 -2
  1204. package/dist/notifications/__tests__/session-registry.test.d.ts.map +0 -1
  1205. package/dist/notifications/__tests__/session-registry.test.js +0 -234
  1206. package/dist/notifications/__tests__/session-registry.test.js.map +0 -1
  1207. package/dist/notifications/__tests__/session-status.test.d.ts +0 -2
  1208. package/dist/notifications/__tests__/session-status.test.d.ts.map +0 -1
  1209. package/dist/notifications/__tests__/session-status.test.js +0 -249
  1210. package/dist/notifications/__tests__/session-status.test.js.map +0 -1
  1211. package/dist/notifications/__tests__/temp-mode.test.d.ts +0 -2
  1212. package/dist/notifications/__tests__/temp-mode.test.d.ts.map +0 -1
  1213. package/dist/notifications/__tests__/temp-mode.test.js +0 -172
  1214. package/dist/notifications/__tests__/temp-mode.test.js.map +0 -1
  1215. package/dist/notifications/__tests__/template-engine.test.d.ts +0 -5
  1216. package/dist/notifications/__tests__/template-engine.test.d.ts.map +0 -1
  1217. package/dist/notifications/__tests__/template-engine.test.js +0 -158
  1218. package/dist/notifications/__tests__/template-engine.test.js.map +0 -1
  1219. package/dist/notifications/__tests__/tmux-detector.test.d.ts +0 -2
  1220. package/dist/notifications/__tests__/tmux-detector.test.d.ts.map +0 -1
  1221. package/dist/notifications/__tests__/tmux-detector.test.js +0 -208
  1222. package/dist/notifications/__tests__/tmux-detector.test.js.map +0 -1
  1223. package/dist/notifications/__tests__/tmux.test.d.ts +0 -2
  1224. package/dist/notifications/__tests__/tmux.test.d.ts.map +0 -1
  1225. package/dist/notifications/__tests__/tmux.test.js +0 -285
  1226. package/dist/notifications/__tests__/tmux.test.js.map +0 -1
  1227. package/dist/notifications/__tests__/verbosity.test.d.ts +0 -2
  1228. package/dist/notifications/__tests__/verbosity.test.d.ts.map +0 -1
  1229. package/dist/notifications/__tests__/verbosity.test.js +0 -237
  1230. package/dist/notifications/__tests__/verbosity.test.js.map +0 -1
  1231. package/dist/openclaw/__tests__/config.test.d.ts +0 -6
  1232. package/dist/openclaw/__tests__/config.test.d.ts.map +0 -1
  1233. package/dist/openclaw/__tests__/config.test.js +0 -344
  1234. package/dist/openclaw/__tests__/config.test.js.map +0 -1
  1235. package/dist/openclaw/__tests__/dispatcher.test.d.ts +0 -5
  1236. package/dist/openclaw/__tests__/dispatcher.test.d.ts.map +0 -1
  1237. package/dist/openclaw/__tests__/dispatcher.test.js +0 -169
  1238. package/dist/openclaw/__tests__/dispatcher.test.js.map +0 -1
  1239. package/dist/openclaw/__tests__/index.test.d.ts +0 -6
  1240. package/dist/openclaw/__tests__/index.test.d.ts.map +0 -1
  1241. package/dist/openclaw/__tests__/index.test.js +0 -382
  1242. package/dist/openclaw/__tests__/index.test.js.map +0 -1
  1243. package/dist/pipeline/__tests__/orchestrator.test.d.ts +0 -2
  1244. package/dist/pipeline/__tests__/orchestrator.test.d.ts.map +0 -1
  1245. package/dist/pipeline/__tests__/orchestrator.test.js +0 -505
  1246. package/dist/pipeline/__tests__/orchestrator.test.js.map +0 -1
  1247. package/dist/pipeline/__tests__/stages.test.d.ts +0 -2
  1248. package/dist/pipeline/__tests__/stages.test.d.ts.map +0 -1
  1249. package/dist/pipeline/__tests__/stages.test.js +0 -754
  1250. package/dist/pipeline/__tests__/stages.test.js.map +0 -1
  1251. package/dist/pipeline/stages/ralph-verify.d.ts +0 -53
  1252. package/dist/pipeline/stages/ralph-verify.d.ts.map +0 -1
  1253. package/dist/pipeline/stages/ralph-verify.js.map +0 -1
  1254. package/dist/pipeline/stages/ralplan.d.ts +0 -25
  1255. package/dist/pipeline/stages/ralplan.d.ts.map +0 -1
  1256. package/dist/pipeline/stages/ralplan.js.map +0 -1
  1257. package/dist/planning/__tests__/artifacts.test.d.ts +0 -2
  1258. package/dist/planning/__tests__/artifacts.test.d.ts.map +0 -1
  1259. package/dist/planning/__tests__/artifacts.test.js +0 -544
  1260. package/dist/planning/__tests__/artifacts.test.js.map +0 -1
  1261. package/dist/question/__tests__/client.test.d.ts +0 -2
  1262. package/dist/question/__tests__/client.test.d.ts.map +0 -1
  1263. package/dist/question/__tests__/client.test.js +0 -90
  1264. package/dist/question/__tests__/client.test.js.map +0 -1
  1265. package/dist/question/__tests__/deep-interview.test.d.ts +0 -2
  1266. package/dist/question/__tests__/deep-interview.test.d.ts.map +0 -1
  1267. package/dist/question/__tests__/deep-interview.test.js +0 -209
  1268. package/dist/question/__tests__/deep-interview.test.js.map +0 -1
  1269. package/dist/question/__tests__/policy.test.d.ts +0 -2
  1270. package/dist/question/__tests__/policy.test.d.ts.map +0 -1
  1271. package/dist/question/__tests__/policy.test.js +0 -107
  1272. package/dist/question/__tests__/policy.test.js.map +0 -1
  1273. package/dist/question/__tests__/renderer.test.d.ts +0 -2
  1274. package/dist/question/__tests__/renderer.test.d.ts.map +0 -1
  1275. package/dist/question/__tests__/renderer.test.js +0 -707
  1276. package/dist/question/__tests__/renderer.test.js.map +0 -1
  1277. package/dist/question/__tests__/state.test.d.ts +0 -2
  1278. package/dist/question/__tests__/state.test.d.ts.map +0 -1
  1279. package/dist/question/__tests__/state.test.js +0 -102
  1280. package/dist/question/__tests__/state.test.js.map +0 -1
  1281. package/dist/question/__tests__/types.test.d.ts +0 -2
  1282. package/dist/question/__tests__/types.test.d.ts.map +0 -1
  1283. package/dist/question/__tests__/types.test.js +0 -65
  1284. package/dist/question/__tests__/types.test.js.map +0 -1
  1285. package/dist/question/__tests__/ui.test.d.ts +0 -2
  1286. package/dist/question/__tests__/ui.test.d.ts.map +0 -1
  1287. package/dist/question/__tests__/ui.test.js +0 -446
  1288. package/dist/question/__tests__/ui.test.js.map +0 -1
  1289. package/dist/ralph/__tests__/persistence.test.d.ts +0 -2
  1290. package/dist/ralph/__tests__/persistence.test.d.ts.map +0 -1
  1291. package/dist/ralph/__tests__/persistence.test.js +0 -116
  1292. package/dist/ralph/__tests__/persistence.test.js.map +0 -1
  1293. package/dist/ralph/contract.d.ts +0 -17
  1294. package/dist/ralph/persistence.js.map +0 -1
  1295. package/dist/ralplan/__tests__/runtime.test.d.ts +0 -2
  1296. package/dist/ralplan/__tests__/runtime.test.d.ts.map +0 -1
  1297. package/dist/ralplan/__tests__/runtime.test.js +0 -165
  1298. package/dist/ralplan/__tests__/runtime.test.js.map +0 -1
  1299. package/dist/ralplan/runtime.d.ts +0 -52
  1300. package/dist/ralplan/runtime.d.ts.map +0 -1
  1301. package/dist/ralplan/runtime.js.map +0 -1
  1302. package/dist/runtime/__tests__/bridge.test.d.ts +0 -2
  1303. package/dist/runtime/__tests__/bridge.test.d.ts.map +0 -1
  1304. package/dist/runtime/__tests__/bridge.test.js +0 -194
  1305. package/dist/runtime/__tests__/bridge.test.js.map +0 -1
  1306. package/dist/runtime/__tests__/run-loop.test.d.ts +0 -2
  1307. package/dist/runtime/__tests__/run-loop.test.d.ts.map +0 -1
  1308. package/dist/runtime/__tests__/run-loop.test.js +0 -35
  1309. package/dist/runtime/__tests__/run-loop.test.js.map +0 -1
  1310. package/dist/runtime/__tests__/run-outcome.test.d.ts +0 -2
  1311. package/dist/runtime/__tests__/run-outcome.test.d.ts.map +0 -1
  1312. package/dist/runtime/__tests__/run-outcome.test.js +0 -102
  1313. package/dist/runtime/__tests__/run-outcome.test.js.map +0 -1
  1314. package/dist/runtime/__tests__/run-state.test.d.ts +0 -2
  1315. package/dist/runtime/__tests__/run-state.test.d.ts.map +0 -1
  1316. package/dist/runtime/__tests__/run-state.test.js +0 -37
  1317. package/dist/runtime/__tests__/run-state.test.js.map +0 -1
  1318. package/dist/scripts/__tests__/codex-native-hook.test.d.ts +0 -2
  1319. package/dist/scripts/__tests__/codex-native-hook.test.d.ts.map +0 -1
  1320. package/dist/scripts/__tests__/codex-native-hook.test.js +0 -6788
  1321. package/dist/scripts/__tests__/codex-native-hook.test.js.map +0 -1
  1322. package/dist/scripts/__tests__/generate-release-body.test.d.ts +0 -2
  1323. package/dist/scripts/__tests__/generate-release-body.test.d.ts.map +0 -1
  1324. package/dist/scripts/__tests__/generate-release-body.test.js +0 -233
  1325. package/dist/scripts/__tests__/generate-release-body.test.js.map +0 -1
  1326. package/dist/scripts/__tests__/hook-derived-watcher.test.d.ts +0 -2
  1327. package/dist/scripts/__tests__/hook-derived-watcher.test.d.ts.map +0 -1
  1328. package/dist/scripts/__tests__/hook-derived-watcher.test.js +0 -195
  1329. package/dist/scripts/__tests__/hook-derived-watcher.test.js.map +0 -1
  1330. package/dist/scripts/__tests__/postinstall.test.d.ts +0 -2
  1331. package/dist/scripts/__tests__/postinstall.test.d.ts.map +0 -1
  1332. package/dist/scripts/__tests__/postinstall.test.js +0 -92
  1333. package/dist/scripts/__tests__/postinstall.test.js.map +0 -1
  1334. package/dist/scripts/__tests__/prompt-inventory.test.d.ts +0 -2
  1335. package/dist/scripts/__tests__/prompt-inventory.test.d.ts.map +0 -1
  1336. package/dist/scripts/__tests__/prompt-inventory.test.js +0 -56
  1337. package/dist/scripts/__tests__/prompt-inventory.test.js.map +0 -1
  1338. package/dist/scripts/__tests__/run-test-files.test.d.ts +0 -2
  1339. package/dist/scripts/__tests__/run-test-files.test.d.ts.map +0 -1
  1340. package/dist/scripts/__tests__/run-test-files.test.js +0 -62
  1341. package/dist/scripts/__tests__/run-test-files.test.js.map +0 -1
  1342. package/dist/scripts/__tests__/smoke-packed-install.test.d.ts +0 -2
  1343. package/dist/scripts/__tests__/smoke-packed-install.test.d.ts.map +0 -1
  1344. package/dist/scripts/__tests__/smoke-packed-install.test.js +0 -135
  1345. package/dist/scripts/__tests__/smoke-packed-install.test.js.map +0 -1
  1346. package/dist/scripts/__tests__/test-reply-listener-live.test.d.ts +0 -2
  1347. package/dist/scripts/__tests__/test-reply-listener-live.test.d.ts.map +0 -1
  1348. package/dist/scripts/__tests__/test-reply-listener-live.test.js +0 -82
  1349. package/dist/scripts/__tests__/test-reply-listener-live.test.js.map +0 -1
  1350. package/dist/scripts/__tests__/verify-native-agents.test.d.ts +0 -2
  1351. package/dist/scripts/__tests__/verify-native-agents.test.d.ts.map +0 -1
  1352. package/dist/scripts/__tests__/verify-native-agents.test.js +0 -166
  1353. package/dist/scripts/__tests__/verify-native-agents.test.js.map +0 -1
  1354. package/dist/scripts/eval/eval-candidate-handoff.d.ts +0 -2
  1355. package/dist/scripts/eval/eval-candidate-handoff.d.ts.map +0 -1
  1356. package/dist/scripts/eval/eval-candidate-handoff.js +0 -11
  1357. package/dist/scripts/eval/eval-candidate-handoff.js.map +0 -1
  1358. package/dist/scripts/eval/eval-cli-discoverability.d.ts +0 -3
  1359. package/dist/scripts/eval/eval-cli-discoverability.d.ts.map +0 -1
  1360. package/dist/scripts/eval/eval-cli-discoverability.js +0 -37
  1361. package/dist/scripts/eval/eval-cli-discoverability.js.map +0 -1
  1362. package/dist/scripts/eval/eval-fresh-run-tagging.d.ts +0 -2
  1363. package/dist/scripts/eval/eval-fresh-run-tagging.d.ts.map +0 -1
  1364. package/dist/scripts/eval/eval-fresh-run-tagging.js +0 -11
  1365. package/dist/scripts/eval/eval-fresh-run-tagging.js.map +0 -1
  1366. package/dist/scripts/eval/eval-help-consistency.d.ts +0 -2
  1367. package/dist/scripts/eval/eval-help-consistency.d.ts.map +0 -1
  1368. package/dist/scripts/eval/eval-help-consistency.js +0 -12
  1369. package/dist/scripts/eval/eval-help-consistency.js.map +0 -1
  1370. package/dist/scripts/eval/eval-in-action-cat-shellout-demo.d.ts +0 -2
  1371. package/dist/scripts/eval/eval-in-action-cat-shellout-demo.d.ts.map +0 -1
  1372. package/dist/scripts/eval/eval-in-action-cat-shellout-demo.js +0 -31
  1373. package/dist/scripts/eval/eval-in-action-cat-shellout-demo.js.map +0 -1
  1374. package/dist/scripts/eval/eval-parity-smoke.d.ts +0 -2
  1375. package/dist/scripts/eval/eval-parity-smoke.d.ts.map +0 -1
  1376. package/dist/scripts/eval/eval-parity-smoke.js +0 -23
  1377. package/dist/scripts/eval/eval-parity-smoke.js.map +0 -1
  1378. package/dist/scripts/eval/eval-parity-sweep.d.ts +0 -2
  1379. package/dist/scripts/eval/eval-parity-sweep.d.ts.map +0 -1
  1380. package/dist/scripts/eval/eval-parity-sweep.js +0 -29
  1381. package/dist/scripts/eval/eval-parity-sweep.js.map +0 -1
  1382. package/dist/scripts/eval/eval-resume-dirty-guard.d.ts +0 -2
  1383. package/dist/scripts/eval/eval-resume-dirty-guard.d.ts.map +0 -1
  1384. package/dist/scripts/eval/eval-resume-dirty-guard.js +0 -11
  1385. package/dist/scripts/eval/eval-resume-dirty-guard.js.map +0 -1
  1386. package/dist/scripts/eval/eval-security-path-traversal.d.ts +0 -3
  1387. package/dist/scripts/eval/eval-security-path-traversal.d.ts.map +0 -1
  1388. package/dist/scripts/eval/eval-security-path-traversal.js +0 -35
  1389. package/dist/scripts/eval/eval-security-path-traversal.js.map +0 -1
  1390. package/dist/scripts/notify-hook/__tests__/operational-events.test.d.ts +0 -2
  1391. package/dist/scripts/notify-hook/__tests__/operational-events.test.d.ts.map +0 -1
  1392. package/dist/scripts/notify-hook/__tests__/operational-events.test.js +0 -24
  1393. package/dist/scripts/notify-hook/__tests__/operational-events.test.js.map +0 -1
  1394. package/dist/scripts/notify-hook/__tests__/team-worker-posttooluse.test.d.ts +0 -2
  1395. package/dist/scripts/notify-hook/__tests__/team-worker-posttooluse.test.d.ts.map +0 -1
  1396. package/dist/scripts/notify-hook/__tests__/team-worker-posttooluse.test.js +0 -153
  1397. package/dist/scripts/notify-hook/__tests__/team-worker-posttooluse.test.js.map +0 -1
  1398. package/dist/scripts/notify-hook/ralph-session-resume.d.ts +0 -22
  1399. package/dist/session-history/__tests__/search.test.d.ts +0 -2
  1400. package/dist/session-history/__tests__/search.test.d.ts.map +0 -1
  1401. package/dist/session-history/__tests__/search.test.js +0 -150
  1402. package/dist/session-history/__tests__/search.test.js.map +0 -1
  1403. package/dist/sidecar/__tests__/boundary.test.d.ts +0 -2
  1404. package/dist/sidecar/__tests__/boundary.test.d.ts.map +0 -1
  1405. package/dist/sidecar/__tests__/boundary.test.js +0 -48
  1406. package/dist/sidecar/__tests__/boundary.test.js.map +0 -1
  1407. package/dist/sidecar/__tests__/collector.test.d.ts +0 -2
  1408. package/dist/sidecar/__tests__/collector.test.d.ts.map +0 -1
  1409. package/dist/sidecar/__tests__/collector.test.js +0 -162
  1410. package/dist/sidecar/__tests__/collector.test.js.map +0 -1
  1411. package/dist/sidecar/__tests__/render.test.d.ts +0 -2
  1412. package/dist/sidecar/__tests__/render.test.d.ts.map +0 -1
  1413. package/dist/sidecar/__tests__/render.test.js +0 -67
  1414. package/dist/sidecar/__tests__/render.test.js.map +0 -1
  1415. package/dist/sidecar/__tests__/tmux.test.d.ts +0 -2
  1416. package/dist/sidecar/__tests__/tmux.test.d.ts.map +0 -1
  1417. package/dist/sidecar/__tests__/tmux.test.js +0 -30
  1418. package/dist/sidecar/__tests__/tmux.test.js.map +0 -1
  1419. package/dist/sidecar/__tests__/watch.test.d.ts +0 -2
  1420. package/dist/sidecar/__tests__/watch.test.d.ts.map +0 -1
  1421. package/dist/sidecar/__tests__/watch.test.js +0 -42
  1422. package/dist/sidecar/__tests__/watch.test.js.map +0 -1
  1423. package/dist/state/__tests__/mode-state-context.test.d.ts +0 -2
  1424. package/dist/state/__tests__/mode-state-context.test.d.ts.map +0 -1
  1425. package/dist/state/__tests__/mode-state-context.test.js +0 -35
  1426. package/dist/state/__tests__/mode-state-context.test.js.map +0 -1
  1427. package/dist/state/__tests__/operations-ralph-phase.test.d.ts +0 -2
  1428. package/dist/state/__tests__/operations-ralph-phase.test.d.ts.map +0 -1
  1429. package/dist/state/__tests__/operations-ralph-phase.test.js +0 -103
  1430. package/dist/state/__tests__/operations-ralph-phase.test.js.map +0 -1
  1431. package/dist/state/__tests__/operations.test.d.ts +0 -2
  1432. package/dist/state/__tests__/operations.test.d.ts.map +0 -1
  1433. package/dist/state/__tests__/operations.test.js +0 -439
  1434. package/dist/state/__tests__/operations.test.js.map +0 -1
  1435. package/dist/state/__tests__/path-traversal.test.d.ts +0 -2
  1436. package/dist/state/__tests__/path-traversal.test.d.ts.map +0 -1
  1437. package/dist/state/__tests__/path-traversal.test.js +0 -49
  1438. package/dist/state/__tests__/path-traversal.test.js.map +0 -1
  1439. package/dist/state/__tests__/skill-active.test.d.ts +0 -2
  1440. package/dist/state/__tests__/skill-active.test.d.ts.map +0 -1
  1441. package/dist/state/__tests__/skill-active.test.js +0 -160
  1442. package/dist/state/__tests__/skill-active.test.js.map +0 -1
  1443. package/dist/state/__tests__/workflow-transition.test.d.ts +0 -2
  1444. package/dist/state/__tests__/workflow-transition.test.d.ts.map +0 -1
  1445. package/dist/state/__tests__/workflow-transition.test.js +0 -77
  1446. package/dist/state/__tests__/workflow-transition.test.js.map +0 -1
  1447. package/dist/subagents/__tests__/tracker.test.d.ts +0 -2
  1448. package/dist/subagents/__tests__/tracker.test.d.ts.map +0 -1
  1449. package/dist/subagents/__tests__/tracker.test.js +0 -47
  1450. package/dist/subagents/__tests__/tracker.test.js.map +0 -1
  1451. package/dist/team/__tests__/allocation-policy.test.d.ts +0 -2
  1452. package/dist/team/__tests__/allocation-policy.test.d.ts.map +0 -1
  1453. package/dist/team/__tests__/allocation-policy.test.js +0 -111
  1454. package/dist/team/__tests__/allocation-policy.test.js.map +0 -1
  1455. package/dist/team/__tests__/api-interop.test.d.ts +0 -2
  1456. package/dist/team/__tests__/api-interop.test.d.ts.map +0 -1
  1457. package/dist/team/__tests__/api-interop.test.js +0 -2262
  1458. package/dist/team/__tests__/api-interop.test.js.map +0 -1
  1459. package/dist/team/__tests__/commit-hygiene.test.d.ts +0 -2
  1460. package/dist/team/__tests__/commit-hygiene.test.d.ts.map +0 -1
  1461. package/dist/team/__tests__/commit-hygiene.test.js +0 -93
  1462. package/dist/team/__tests__/commit-hygiene.test.js.map +0 -1
  1463. package/dist/team/__tests__/cross-rebase-smoke.test.d.ts +0 -2
  1464. package/dist/team/__tests__/cross-rebase-smoke.test.d.ts.map +0 -1
  1465. package/dist/team/__tests__/cross-rebase-smoke.test.js +0 -161
  1466. package/dist/team/__tests__/cross-rebase-smoke.test.js.map +0 -1
  1467. package/dist/team/__tests__/current-task-baseline.test.d.ts +0 -2
  1468. package/dist/team/__tests__/current-task-baseline.test.d.ts.map +0 -1
  1469. package/dist/team/__tests__/current-task-baseline.test.js +0 -87
  1470. package/dist/team/__tests__/current-task-baseline.test.js.map +0 -1
  1471. package/dist/team/__tests__/delegation-policy.test.d.ts +0 -2
  1472. package/dist/team/__tests__/delegation-policy.test.d.ts.map +0 -1
  1473. package/dist/team/__tests__/delegation-policy.test.js +0 -69
  1474. package/dist/team/__tests__/delegation-policy.test.js.map +0 -1
  1475. package/dist/team/__tests__/delivery-e2e-smoke.test.d.ts +0 -2
  1476. package/dist/team/__tests__/delivery-e2e-smoke.test.d.ts.map +0 -1
  1477. package/dist/team/__tests__/delivery-e2e-smoke.test.js +0 -679
  1478. package/dist/team/__tests__/delivery-e2e-smoke.test.js.map +0 -1
  1479. package/dist/team/__tests__/events.test.d.ts +0 -2
  1480. package/dist/team/__tests__/events.test.d.ts.map +0 -1
  1481. package/dist/team/__tests__/events.test.js +0 -313
  1482. package/dist/team/__tests__/events.test.js.map +0 -1
  1483. package/dist/team/__tests__/followup-planner.test.d.ts +0 -2
  1484. package/dist/team/__tests__/followup-planner.test.d.ts.map +0 -1
  1485. package/dist/team/__tests__/followup-planner.test.js +0 -84
  1486. package/dist/team/__tests__/followup-planner.test.js.map +0 -1
  1487. package/dist/team/__tests__/hardening-e2e.test.d.ts +0 -2
  1488. package/dist/team/__tests__/hardening-e2e.test.d.ts.map +0 -1
  1489. package/dist/team/__tests__/hardening-e2e.test.js +0 -98
  1490. package/dist/team/__tests__/hardening-e2e.test.js.map +0 -1
  1491. package/dist/team/__tests__/hook-primary-e2e-contract.test.d.ts +0 -2
  1492. package/dist/team/__tests__/hook-primary-e2e-contract.test.d.ts.map +0 -1
  1493. package/dist/team/__tests__/hook-primary-e2e-contract.test.js +0 -78
  1494. package/dist/team/__tests__/hook-primary-e2e-contract.test.js.map +0 -1
  1495. package/dist/team/__tests__/idle-nudge.test.d.ts +0 -2
  1496. package/dist/team/__tests__/idle-nudge.test.d.ts.map +0 -1
  1497. package/dist/team/__tests__/idle-nudge.test.js +0 -230
  1498. package/dist/team/__tests__/idle-nudge.test.js.map +0 -1
  1499. package/dist/team/__tests__/leader-activity.test.d.ts +0 -2
  1500. package/dist/team/__tests__/leader-activity.test.d.ts.map +0 -1
  1501. package/dist/team/__tests__/leader-activity.test.js +0 -261
  1502. package/dist/team/__tests__/leader-activity.test.js.map +0 -1
  1503. package/dist/team/__tests__/mcp-comm.test.d.ts +0 -2
  1504. package/dist/team/__tests__/mcp-comm.test.d.ts.map +0 -1
  1505. package/dist/team/__tests__/mcp-comm.test.js +0 -289
  1506. package/dist/team/__tests__/mcp-comm.test.js.map +0 -1
  1507. package/dist/team/__tests__/model-contract.test.d.ts +0 -2
  1508. package/dist/team/__tests__/model-contract.test.d.ts.map +0 -1
  1509. package/dist/team/__tests__/model-contract.test.js +0 -171
  1510. package/dist/team/__tests__/model-contract.test.js.map +0 -1
  1511. package/dist/team/__tests__/orchestrator.test.d.ts +0 -2
  1512. package/dist/team/__tests__/orchestrator.test.d.ts.map +0 -1
  1513. package/dist/team/__tests__/orchestrator.test.js +0 -111
  1514. package/dist/team/__tests__/orchestrator.test.js.map +0 -1
  1515. package/dist/team/__tests__/phase-controller.test.d.ts +0 -2
  1516. package/dist/team/__tests__/phase-controller.test.d.ts.map +0 -1
  1517. package/dist/team/__tests__/phase-controller.test.js +0 -50
  1518. package/dist/team/__tests__/phase-controller.test.js.map +0 -1
  1519. package/dist/team/__tests__/rebalance-policy.test.d.ts +0 -2
  1520. package/dist/team/__tests__/rebalance-policy.test.d.ts.map +0 -1
  1521. package/dist/team/__tests__/rebalance-policy.test.js +0 -168
  1522. package/dist/team/__tests__/rebalance-policy.test.js.map +0 -1
  1523. package/dist/team/__tests__/repo-aware-decomposition.test.d.ts +0 -2
  1524. package/dist/team/__tests__/repo-aware-decomposition.test.d.ts.map +0 -1
  1525. package/dist/team/__tests__/repo-aware-decomposition.test.js +0 -136
  1526. package/dist/team/__tests__/repo-aware-decomposition.test.js.map +0 -1
  1527. package/dist/team/__tests__/role-router.test.d.ts +0 -2
  1528. package/dist/team/__tests__/role-router.test.d.ts.map +0 -1
  1529. package/dist/team/__tests__/role-router.test.js +0 -263
  1530. package/dist/team/__tests__/role-router.test.js.map +0 -1
  1531. package/dist/team/__tests__/runtime-cli.test.d.ts +0 -2
  1532. package/dist/team/__tests__/runtime-cli.test.d.ts.map +0 -1
  1533. package/dist/team/__tests__/runtime-cli.test.js +0 -304
  1534. package/dist/team/__tests__/runtime-cli.test.js.map +0 -1
  1535. package/dist/team/__tests__/runtime.test.d.ts +0 -2
  1536. package/dist/team/__tests__/runtime.test.d.ts.map +0 -1
  1537. package/dist/team/__tests__/runtime.test.js +0 -5734
  1538. package/dist/team/__tests__/runtime.test.js.map +0 -1
  1539. package/dist/team/__tests__/scaling.test.d.ts +0 -2
  1540. package/dist/team/__tests__/scaling.test.d.ts.map +0 -1
  1541. package/dist/team/__tests__/scaling.test.js +0 -1005
  1542. package/dist/team/__tests__/scaling.test.js.map +0 -1
  1543. package/dist/team/__tests__/shutdown-fallback.test.d.ts +0 -2
  1544. package/dist/team/__tests__/shutdown-fallback.test.d.ts.map +0 -1
  1545. package/dist/team/__tests__/shutdown-fallback.test.js +0 -125
  1546. package/dist/team/__tests__/shutdown-fallback.test.js.map +0 -1
  1547. package/dist/team/__tests__/state-root.test.d.ts +0 -2
  1548. package/dist/team/__tests__/state-root.test.d.ts.map +0 -1
  1549. package/dist/team/__tests__/state-root.test.js +0 -195
  1550. package/dist/team/__tests__/state-root.test.js.map +0 -1
  1551. package/dist/team/__tests__/state.test.d.ts +0 -2
  1552. package/dist/team/__tests__/state.test.d.ts.map +0 -1
  1553. package/dist/team/__tests__/state.test.js +0 -1859
  1554. package/dist/team/__tests__/state.test.js.map +0 -1
  1555. package/dist/team/__tests__/team-identity.test.d.ts +0 -2
  1556. package/dist/team/__tests__/team-identity.test.d.ts.map +0 -1
  1557. package/dist/team/__tests__/team-identity.test.js +0 -166
  1558. package/dist/team/__tests__/team-identity.test.js.map +0 -1
  1559. package/dist/team/__tests__/team-ops-contract.test.d.ts +0 -2
  1560. package/dist/team/__tests__/team-ops-contract.test.d.ts.map +0 -1
  1561. package/dist/team/__tests__/team-ops-contract.test.js +0 -96
  1562. package/dist/team/__tests__/team-ops-contract.test.js.map +0 -1
  1563. package/dist/team/__tests__/tmux-claude-workers-demo.test.d.ts +0 -2
  1564. package/dist/team/__tests__/tmux-claude-workers-demo.test.d.ts.map +0 -1
  1565. package/dist/team/__tests__/tmux-claude-workers-demo.test.js +0 -191
  1566. package/dist/team/__tests__/tmux-claude-workers-demo.test.js.map +0 -1
  1567. package/dist/team/__tests__/tmux-session.test.d.ts +0 -2
  1568. package/dist/team/__tests__/tmux-session.test.d.ts.map +0 -1
  1569. package/dist/team/__tests__/tmux-session.test.js +0 -3785
  1570. package/dist/team/__tests__/tmux-session.test.js.map +0 -1
  1571. package/dist/team/__tests__/tmux-test-fixture.d.ts +0 -20
  1572. package/dist/team/__tests__/tmux-test-fixture.d.ts.map +0 -1
  1573. package/dist/team/__tests__/tmux-test-fixture.js +0 -152
  1574. package/dist/team/__tests__/tmux-test-fixture.js.map +0 -1
  1575. package/dist/team/__tests__/tmux-test-fixture.test.d.ts +0 -2
  1576. package/dist/team/__tests__/tmux-test-fixture.test.d.ts.map +0 -1
  1577. package/dist/team/__tests__/tmux-test-fixture.test.js +0 -113
  1578. package/dist/team/__tests__/tmux-test-fixture.test.js.map +0 -1
  1579. package/dist/team/__tests__/worker-bootstrap.test.d.ts +0 -2
  1580. package/dist/team/__tests__/worker-bootstrap.test.d.ts.map +0 -1
  1581. package/dist/team/__tests__/worker-bootstrap.test.js +0 -685
  1582. package/dist/team/__tests__/worker-bootstrap.test.js.map +0 -1
  1583. package/dist/team/__tests__/worker-runtime-identity.test.d.ts +0 -2
  1584. package/dist/team/__tests__/worker-runtime-identity.test.d.ts.map +0 -1
  1585. package/dist/team/__tests__/worker-runtime-identity.test.js +0 -250
  1586. package/dist/team/__tests__/worker-runtime-identity.test.js.map +0 -1
  1587. package/dist/team/__tests__/worktree.test.d.ts +0 -2
  1588. package/dist/team/__tests__/worktree.test.d.ts.map +0 -1
  1589. package/dist/team/__tests__/worktree.test.js +0 -317
  1590. package/dist/team/__tests__/worktree.test.js.map +0 -1
  1591. package/dist/utils/__tests__/agents-md.test.d.ts +0 -2
  1592. package/dist/utils/__tests__/agents-md.test.d.ts.map +0 -1
  1593. package/dist/utils/__tests__/agents-md.test.js +0 -52
  1594. package/dist/utils/__tests__/agents-md.test.js.map +0 -1
  1595. package/dist/utils/__tests__/agents-model-table.test.d.ts +0 -2
  1596. package/dist/utils/__tests__/agents-model-table.test.d.ts.map +0 -1
  1597. package/dist/utils/__tests__/agents-model-table.test.js +0 -104
  1598. package/dist/utils/__tests__/agents-model-table.test.js.map +0 -1
  1599. package/dist/utils/__tests__/dep-versions.test.d.ts +0 -2
  1600. package/dist/utils/__tests__/dep-versions.test.d.ts.map +0 -1
  1601. package/dist/utils/__tests__/dep-versions.test.js +0 -46
  1602. package/dist/utils/__tests__/dep-versions.test.js.map +0 -1
  1603. package/dist/utils/__tests__/package.test.d.ts +0 -2
  1604. package/dist/utils/__tests__/package.test.d.ts.map +0 -1
  1605. package/dist/utils/__tests__/package.test.js +0 -21
  1606. package/dist/utils/__tests__/package.test.js.map +0 -1
  1607. package/dist/utils/__tests__/paths.test.d.ts +0 -2
  1608. package/dist/utils/__tests__/paths.test.d.ts.map +0 -1
  1609. package/dist/utils/__tests__/paths.test.js +0 -541
  1610. package/dist/utils/__tests__/paths.test.js.map +0 -1
  1611. package/dist/utils/__tests__/platform-command.test.d.ts +0 -2
  1612. package/dist/utils/__tests__/platform-command.test.d.ts.map +0 -1
  1613. package/dist/utils/__tests__/platform-command.test.js +0 -410
  1614. package/dist/utils/__tests__/platform-command.test.js.map +0 -1
  1615. package/dist/utils/__tests__/repo-deps.test.d.ts +0 -2
  1616. package/dist/utils/__tests__/repo-deps.test.d.ts.map +0 -1
  1617. package/dist/utils/__tests__/repo-deps.test.js +0 -71
  1618. package/dist/utils/__tests__/repo-deps.test.js.map +0 -1
  1619. package/dist/verification/__tests__/ci-rust-gates.test.d.ts +0 -2
  1620. package/dist/verification/__tests__/ci-rust-gates.test.d.ts.map +0 -1
  1621. package/dist/verification/__tests__/ci-rust-gates.test.js +0 -89
  1622. package/dist/verification/__tests__/ci-rust-gates.test.js.map +0 -1
  1623. package/dist/verification/__tests__/dev-merge-issue-close-workflow.test.d.ts +0 -2
  1624. package/dist/verification/__tests__/dev-merge-issue-close-workflow.test.d.ts.map +0 -1
  1625. package/dist/verification/__tests__/dev-merge-issue-close-workflow.test.js +0 -54
  1626. package/dist/verification/__tests__/dev-merge-issue-close-workflow.test.js.map +0 -1
  1627. package/dist/verification/__tests__/explore-harness-release-workflow.test.d.ts +0 -2
  1628. package/dist/verification/__tests__/explore-harness-release-workflow.test.d.ts.map +0 -1
  1629. package/dist/verification/__tests__/explore-harness-release-workflow.test.js +0 -73
  1630. package/dist/verification/__tests__/explore-harness-release-workflow.test.js.map +0 -1
  1631. package/dist/verification/__tests__/native-release-manifest.test.d.ts +0 -2
  1632. package/dist/verification/__tests__/native-release-manifest.test.d.ts.map +0 -1
  1633. package/dist/verification/__tests__/native-release-manifest.test.js +0 -80
  1634. package/dist/verification/__tests__/native-release-manifest.test.js.map +0 -1
  1635. package/dist/verification/__tests__/pr-check-workflow.test.d.ts +0 -2
  1636. package/dist/verification/__tests__/pr-check-workflow.test.d.ts.map +0 -1
  1637. package/dist/verification/__tests__/pr-check-workflow.test.js +0 -27
  1638. package/dist/verification/__tests__/pr-check-workflow.test.js.map +0 -1
  1639. package/dist/verification/__tests__/ralph-persistence-gate.test.d.ts +0 -2
  1640. package/dist/verification/__tests__/ralph-persistence-gate.test.d.ts.map +0 -1
  1641. package/dist/verification/__tests__/ralph-persistence-gate.test.js +0 -55
  1642. package/dist/verification/__tests__/ralph-persistence-gate.test.js.map +0 -1
  1643. package/dist/verification/__tests__/rust-runtime-thin-adapter-gate.test.d.ts +0 -2
  1644. package/dist/verification/__tests__/rust-runtime-thin-adapter-gate.test.d.ts.map +0 -1
  1645. package/dist/verification/__tests__/rust-runtime-thin-adapter-gate.test.js +0 -32
  1646. package/dist/verification/__tests__/rust-runtime-thin-adapter-gate.test.js.map +0 -1
  1647. package/dist/verification/__tests__/verifier.test.d.ts +0 -2
  1648. package/dist/verification/__tests__/verifier.test.d.ts.map +0 -1
  1649. package/dist/verification/__tests__/verifier.test.js +0 -113
  1650. package/dist/verification/__tests__/verifier.test.js.map +0 -1
  1651. package/dist/visual/__tests__/verdict.test.d.ts +0 -2
  1652. package/dist/visual/__tests__/verdict.test.d.ts.map +0 -1
  1653. package/dist/visual/__tests__/verdict.test.js +0 -81
  1654. package/dist/visual/__tests__/verdict.test.js.map +0 -1
  1655. package/dist/wiki/__tests__/cjk-tokenize.test.d.ts +0 -12
  1656. package/dist/wiki/__tests__/cjk-tokenize.test.d.ts.map +0 -1
  1657. package/dist/wiki/__tests__/cjk-tokenize.test.js +0 -139
  1658. package/dist/wiki/__tests__/cjk-tokenize.test.js.map +0 -1
  1659. package/dist/wiki/__tests__/crlf-parse.test.d.ts +0 -2
  1660. package/dist/wiki/__tests__/crlf-parse.test.d.ts.map +0 -1
  1661. package/dist/wiki/__tests__/crlf-parse.test.js +0 -24
  1662. package/dist/wiki/__tests__/crlf-parse.test.js.map +0 -1
  1663. package/dist/wiki/__tests__/escape-newline.test.d.ts +0 -2
  1664. package/dist/wiki/__tests__/escape-newline.test.d.ts.map +0 -1
  1665. package/dist/wiki/__tests__/escape-newline.test.js +0 -45
  1666. package/dist/wiki/__tests__/escape-newline.test.js.map +0 -1
  1667. package/dist/wiki/__tests__/ingest.test.d.ts +0 -5
  1668. package/dist/wiki/__tests__/ingest.test.d.ts.map +0 -1
  1669. package/dist/wiki/__tests__/ingest.test.js +0 -181
  1670. package/dist/wiki/__tests__/ingest.test.js.map +0 -1
  1671. package/dist/wiki/__tests__/lint.test.d.ts +0 -5
  1672. package/dist/wiki/__tests__/lint.test.d.ts.map +0 -1
  1673. package/dist/wiki/__tests__/lint.test.js +0 -163
  1674. package/dist/wiki/__tests__/lint.test.js.map +0 -1
  1675. package/dist/wiki/__tests__/query.test.d.ts +0 -5
  1676. package/dist/wiki/__tests__/query.test.d.ts.map +0 -1
  1677. package/dist/wiki/__tests__/query.test.js +0 -141
  1678. package/dist/wiki/__tests__/query.test.js.map +0 -1
  1679. package/dist/wiki/__tests__/reserved-file-guard.test.d.ts +0 -2
  1680. package/dist/wiki/__tests__/reserved-file-guard.test.d.ts.map +0 -1
  1681. package/dist/wiki/__tests__/reserved-file-guard.test.js +0 -44
  1682. package/dist/wiki/__tests__/reserved-file-guard.test.js.map +0 -1
  1683. package/dist/wiki/__tests__/session-hooks.test.d.ts +0 -5
  1684. package/dist/wiki/__tests__/session-hooks.test.d.ts.map +0 -1
  1685. package/dist/wiki/__tests__/session-hooks.test.js +0 -36
  1686. package/dist/wiki/__tests__/session-hooks.test.js.map +0 -1
  1687. package/dist/wiki/__tests__/slug-nonascii.test.d.ts +0 -2
  1688. package/dist/wiki/__tests__/slug-nonascii.test.d.ts.map +0 -1
  1689. package/dist/wiki/__tests__/slug-nonascii.test.js +0 -30
  1690. package/dist/wiki/__tests__/slug-nonascii.test.js.map +0 -1
  1691. package/dist/wiki/__tests__/storage.test.d.ts +0 -5
  1692. package/dist/wiki/__tests__/storage.test.d.ts.map +0 -1
  1693. package/dist/wiki/__tests__/storage.test.js +0 -278
  1694. package/dist/wiki/__tests__/storage.test.js.map +0 -1
  1695. package/dist/wiki/__tests__/test-helpers.d.ts +0 -31
  1696. package/dist/wiki/__tests__/test-helpers.d.ts.map +0 -1
  1697. package/dist/wiki/__tests__/test-helpers.js +0 -108
  1698. package/dist/wiki/__tests__/test-helpers.js.map +0 -1
  1699. package/docs/contracts/ralph-cancel-contract.md +0 -23
  1700. package/docs/contracts/ralph-state-contract.md +0 -95
  1701. package/docs/issues/team-ralph-followup-team.md +0 -38
  1702. package/docs/qa/ralph-persistence-gate.md +0 -59
  1703. package/docs/reference/ralph-parity-matrix.md +0 -25
  1704. package/docs/reference/ralph-upstream-baseline.md +0 -34
  1705. package/plugins/roblox-ai-os-creator-skills/skills/ralph/SKILL.md +0 -269
  1706. package/plugins/roblox-ai-os-creator-skills/skills/ralplan/SKILL.md +0 -162
  1707. package/prompts/api-reviewer.md +0 -113
  1708. package/prompts/information-architect.md +0 -226
  1709. package/prompts/performance-reviewer.md +0 -109
  1710. package/prompts/product-analyst.md +0 -304
  1711. package/prompts/product-manager.md +0 -245
  1712. package/prompts/qa-tester.md +0 -124
  1713. package/prompts/quality-reviewer.md +0 -123
  1714. package/prompts/quality-strategist.md +0 -274
  1715. package/prompts/style-reviewer.md +0 -102
  1716. package/prompts/ux-researcher.md +0 -327
  1717. package/skills/frontend-ui-ux/SKILL.md +0 -34
  1718. package/skills/ralph/SKILL.md +0 -269
  1719. package/skills/ralplan/SKILL.md +0 -162
  1720. package/src/scripts/eval/eval-adaptive-sort-optimization.py +0 -24
  1721. package/src/scripts/eval/eval-candidate-handoff.ts +0 -8
  1722. package/src/scripts/eval/eval-cli-discoverability.ts +0 -40
  1723. package/src/scripts/eval/eval-fresh-run-tagging.ts +0 -8
  1724. package/src/scripts/eval/eval-help-consistency.ts +0 -11
  1725. package/src/scripts/eval/eval-in-action-cat-shellout-demo.ts +0 -31
  1726. package/src/scripts/eval/eval-ml-kaggle-model-optimization.py +0 -29
  1727. package/src/scripts/eval/eval-noisy-bayesopt-highdim.py +0 -44
  1728. package/src/scripts/eval/eval-noisy-latent-subspace-discovery.py +0 -44
  1729. package/src/scripts/eval/eval-parity-smoke.ts +0 -20
  1730. package/src/scripts/eval/eval-parity-sweep.ts +0 -26
  1731. package/src/scripts/eval/eval-resume-dirty-guard.ts +0 -8
  1732. package/src/scripts/eval/eval-security-path-traversal.ts +0 -38
  1733. package/src/scripts/run-autoresearch-showcase.sh +0 -75
  1734. /package/docs/{migration-mainline-post-v0.4.4.md → archive/migration-mainline-post-v0.4.4.md} +0 -0
  1735. /package/docs/{qa-plan-0.4.2.md → archive/qa-plan-0.4.2.md} +0 -0
  1736. /package/docs/{qa-report-0.4.2.md → archive/qa-report-0.4.2.md} +0 -0
@@ -1,1589 +0,0 @@
1
- import { describe, it } from 'node:test';
2
- import assert from 'node:assert/strict';
3
- import { spawnSync } from 'node:child_process';
4
- import { chmod, mkdtemp, mkdir, readFile, rm, symlink, writeFile } from 'node:fs/promises';
5
- import { readFileSync } from 'node:fs';
6
- import { tmpdir } from 'node:os';
7
- import { join } from 'node:path';
8
- import { buildTmuxSessionName } from '../../cli/index.js';
9
- import { handleTmuxInjection, resolvePaneTarget } from '../../scripts/notify-hook/tmux-injection.js';
10
- const NOTIFY_HOOK_SCRIPT = new URL('../../../dist/scripts/notify-hook.js', import.meta.url);
11
- async function withTempWorkingDir(run) {
12
- const cwd = await mkdtemp(join(tmpdir(), 'rcs-notify-tmux-heal-'));
13
- try {
14
- await run(cwd);
15
- }
16
- finally {
17
- await rm(cwd, { recursive: true, force: true });
18
- }
19
- }
20
- async function writeJson(path, value) {
21
- await writeFile(path, JSON.stringify(value, null, 2));
22
- }
23
- async function readJson(path) {
24
- return JSON.parse(await readFile(path, 'utf-8'));
25
- }
26
- function withPatchedEnv(patch, run) {
27
- const managedKeys = new Set([
28
- ...Object.keys(patch),
29
- 'CODEX_HOME',
30
- 'RCS_SESSION_ID',
31
- 'RCS_RUNTIME_BRIDGE',
32
- 'RCS_NOTIFY_FALLBACK',
33
- 'RCS_NOTIFY_FALLBACK_AUTO_NUDGE_STALL_MS',
34
- 'RCS_HOOK_CONFIG',
35
- 'RCS_NOTIFY_PROFILE',
36
- 'RCS_NOTIFY_VERBOSITY',
37
- 'RCS_TEAM_WORKER',
38
- 'RCS_TEAM_STATE_ROOT',
39
- 'RCS_TEAM_LEADER_CWD',
40
- 'RCS_MODEL_INSTRUCTIONS_FILE',
41
- 'TMUX',
42
- 'TMUX_PANE',
43
- ]);
44
- const previous = new Map();
45
- for (const key of managedKeys) {
46
- previous.set(key, process.env[key]);
47
- if (Object.prototype.hasOwnProperty.call(patch, key))
48
- process.env[key] = patch[key];
49
- else
50
- delete process.env[key];
51
- }
52
- return run().finally(() => {
53
- for (const [key, value] of previous) {
54
- if (typeof value === 'string')
55
- process.env[key] = value;
56
- else
57
- delete process.env[key];
58
- }
59
- });
60
- }
61
- function readLinuxStartTicks(pid) {
62
- try {
63
- const stat = readFileSync(`/proc/${pid}/stat`, 'utf-8');
64
- const commandEnd = stat.lastIndexOf(')');
65
- if (commandEnd === -1)
66
- return null;
67
- const remainder = stat.slice(commandEnd + 1).trim();
68
- const fields = remainder.split(/\s+/);
69
- if (fields.length <= 19)
70
- return null;
71
- const startTicks = Number(fields[19]);
72
- return Number.isFinite(startTicks) ? startTicks : null;
73
- }
74
- catch {
75
- return null;
76
- }
77
- }
78
- function readLinuxCmdline(pid) {
79
- try {
80
- const raw = readFileSync(`/proc/${pid}/cmdline`);
81
- const text = raw.toString('utf-8').replace(/\0+/g, ' ').trim();
82
- return text.length > 0 ? text : null;
83
- }
84
- catch {
85
- return null;
86
- }
87
- }
88
- async function writeManagedSessionState(stateDir, cwd, sessionId) {
89
- await writeJson(join(stateDir, 'session.json'), {
90
- session_id: sessionId,
91
- started_at: new Date().toISOString(),
92
- cwd,
93
- pid: process.pid,
94
- platform: process.platform,
95
- pid_start_ticks: readLinuxStartTicks(process.pid),
96
- pid_cmdline: readLinuxCmdline(process.pid),
97
- });
98
- }
99
- describe('notify-hook tmux target healing', () => {
100
- it('falls back to global mode state when scoped session has no allowed active mode', async () => {
101
- await withTempWorkingDir(async (cwd) => {
102
- const rcsDir = join(cwd, '.rcs');
103
- const stateDir = join(rcsDir, 'state');
104
- const logsDir = join(rcsDir, 'logs');
105
- const sessionId = 'rcs-abc123';
106
- const sessionStateDir = join(stateDir, 'sessions', sessionId);
107
- const fakeBinDir = join(cwd, 'fake-bin');
108
- const fakeTmuxPath = join(fakeBinDir, 'tmux');
109
- const managedSessionName = buildTmuxSessionName(cwd, sessionId);
110
- const configPath = join(rcsDir, 'tmux-hook.json');
111
- const hookStatePath = join(stateDir, 'tmux-hook-state.json');
112
- await mkdir(sessionStateDir, { recursive: true });
113
- await mkdir(logsDir, { recursive: true });
114
- await mkdir(fakeBinDir, { recursive: true });
115
- await writeManagedSessionState(stateDir, cwd, sessionId);
116
- await writeJson(join(sessionStateDir, 'team-state.json'), { active: true, current_phase: 'team-exec' });
117
- await writeJson(join(stateDir, 'ralph-state.json'), { active: true, iteration: 0 });
118
- await writeJson(configPath, {
119
- enabled: true,
120
- target: { type: 'pane', value: '%42' },
121
- allowed_modes: ['ralph'],
122
- cooldown_ms: 0,
123
- max_injections_per_session: 10,
124
- prompt_template: 'Continue [RCS_TMUX_INJECT]',
125
- marker: '[RCS_TMUX_INJECT]',
126
- dry_run: false,
127
- log_level: 'debug',
128
- });
129
- const fakeTmux = `#!/usr/bin/env bash
130
- set -eu
131
- cmd="$1"
132
- shift || true
133
- if [[ "$cmd" == "display-message" ]]; then
134
- target=""
135
- format=""
136
- while (($#)); do
137
- case "$1" in
138
- -p) shift ;;
139
- -t) target="$2"; shift 2 ;;
140
- *) format="$1"; shift ;;
141
- esac
142
- done
143
- if [[ "$format" == "#{pane_id}" && "$target" == "%42" ]]; then
144
- echo "%42"
145
- exit 0
146
- fi
147
- if [[ "$format" == "#{pane_current_command}" && "$target" == "%42" ]]; then
148
- echo "codex"
149
- exit 0
150
- fi
151
- if [[ "$format" == "#S" && "$target" == "%42" ]]; then
152
- echo "${managedSessionName}"
153
- exit 0
154
- fi
155
- if [[ "$format" == "#{pane_in_mode}" && "$target" == "%42" ]]; then
156
- echo "0"
157
- exit 0
158
- fi
159
- echo "bad display target: $target / $format" >&2
160
- exit 1
161
- fi
162
- if [[ "$cmd" == "send-keys" ]]; then
163
- exit 0
164
- fi
165
- echo "unsupported cmd: $cmd" >&2
166
- exit 1
167
- `;
168
- await writeFile(fakeTmuxPath, fakeTmux);
169
- await chmod(fakeTmuxPath, 0o755);
170
- const payload = {
171
- cwd,
172
- type: 'agent-turn-complete',
173
- session_id: sessionId,
174
- 'thread-id': 'thread-test-global-fallback',
175
- 'turn-id': 'turn-test-global-fallback',
176
- 'input-messages': ['no marker here'],
177
- 'last-assistant-message': 'output',
178
- };
179
- const previousPath = process.env.PATH;
180
- const previousTeamWorker = process.env.RCS_TEAM_WORKER;
181
- try {
182
- process.env.PATH = `${fakeBinDir}:${process.env.PATH || ''}`;
183
- process.env.RCS_TEAM_WORKER = '';
184
- delete process.env.TMUX_PANE;
185
- await handleTmuxInjection({ payload, cwd, stateDir, logsDir });
186
- }
187
- finally {
188
- if (typeof previousPath === 'string')
189
- process.env.PATH = previousPath;
190
- else
191
- delete process.env.PATH;
192
- if (typeof previousTeamWorker === 'string')
193
- process.env.RCS_TEAM_WORKER = previousTeamWorker;
194
- else
195
- delete process.env.RCS_TEAM_WORKER;
196
- }
197
- const hookState = await readJson(hookStatePath);
198
- assert.equal(hookState.last_reason, 'injection_sent');
199
- assert.equal(hookState.total_injections, 1);
200
- });
201
- });
202
- it('does not revive a legacy root Ralph fallback when canonical skill state excludes Ralph', async () => {
203
- await withTempWorkingDir(async (cwd) => {
204
- const rcsDir = join(cwd, '.rcs');
205
- const stateDir = join(rcsDir, 'state');
206
- const logsDir = join(rcsDir, 'logs');
207
- const sessionId = 'rcs-abc123';
208
- const sessionStateDir = join(stateDir, 'sessions', sessionId);
209
- const configPath = join(rcsDir, 'tmux-hook.json');
210
- const hookStatePath = join(stateDir, 'tmux-hook-state.json');
211
- const sessionStatePath = join(stateDir, 'session.json');
212
- const fakeBinDir = join(cwd, 'fake-bin');
213
- const fakeTmuxPath = join(fakeBinDir, 'tmux');
214
- const tmuxLogPath = join(cwd, 'tmux.log');
215
- const managedSessionName = buildTmuxSessionName(cwd, sessionId);
216
- await mkdir(sessionStateDir, { recursive: true });
217
- await mkdir(logsDir, { recursive: true });
218
- await mkdir(fakeBinDir, { recursive: true });
219
- await writeManagedSessionState(stateDir, cwd, sessionId);
220
- const canonicalSessionState = JSON.parse(await readFile(sessionStatePath, 'utf-8'));
221
- await writeJson(join(stateDir, 'ralph-state.json'), { active: true, iteration: 0, tmux_pane_id: '%42' });
222
- await writeJson(join(sessionStateDir, 'skill-active-state.json'), {
223
- version: 1,
224
- active: true,
225
- skill: 'ralplan',
226
- phase: 'planning',
227
- session_id: sessionId,
228
- active_skills: [
229
- { skill: 'ralplan', phase: 'planning', active: true, session_id: sessionId },
230
- ],
231
- });
232
- await writeJson(configPath, {
233
- enabled: true,
234
- target: { type: 'pane', value: '%42' },
235
- allowed_modes: ['ralph'],
236
- cooldown_ms: 0,
237
- max_injections_per_session: 10,
238
- prompt_template: 'Continue [RCS_TMUX_INJECT]',
239
- marker: '[RCS_TMUX_INJECT]',
240
- dry_run: false,
241
- log_level: 'debug',
242
- });
243
- const fakeTmux = `#!/usr/bin/env bash
244
- set -eu
245
- echo "$@" >> "${tmuxLogPath}"
246
- cmd="$1"
247
- shift || true
248
- if [[ "$cmd" == "display-message" ]]; then
249
- target=""
250
- format=""
251
- while (($#)); do
252
- case "$1" in
253
- -p) shift ;;
254
- -t) target="$2"; shift 2 ;;
255
- *) format="$1"; shift ;;
256
- esac
257
- done
258
- if [[ "$format" == "#{pane_id}" && "$target" == "%42" ]]; then
259
- echo "%42"
260
- exit 0
261
- fi
262
- if [[ "$format" == "#{pane_current_command}" && "$target" == "%42" ]]; then
263
- echo "codex"
264
- exit 0
265
- fi
266
- if [[ "$format" == "#{pane_start_command}" && "$target" == "%42" ]]; then
267
- echo "codex --model gpt-5"
268
- exit 0
269
- fi
270
- if [[ "$format" == "#{pane_current_path}" && "$target" == "%42" ]]; then
271
- echo "${cwd}"
272
- exit 0
273
- fi
274
- if [[ "$format" == "#{pane_in_mode}" && "$target" == "%42" ]]; then
275
- echo "0"
276
- exit 0
277
- fi
278
- if [[ "$format" == "#S" && "$target" == "%42" ]]; then
279
- echo "${managedSessionName}"
280
- exit 0
281
- fi
282
- fi
283
- if [[ "$cmd" == "send-keys" ]]; then
284
- exit 0
285
- fi
286
- echo "unsupported tmux call: $cmd $*" >&2
287
- exit 1
288
- `;
289
- await writeFile(fakeTmuxPath, fakeTmux);
290
- await chmod(fakeTmuxPath, 0o755);
291
- const payload = {
292
- cwd,
293
- type: 'agent-turn-complete',
294
- session_id: sessionId,
295
- 'thread-id': 'thread-test-canonical-excludes-ralph',
296
- 'turn-id': 'turn-test-canonical-excludes-ralph',
297
- 'input-messages': ['no marker here'],
298
- 'last-assistant-message': 'output',
299
- };
300
- const previousPath = process.env.PATH;
301
- const previousTeamWorker = process.env.RCS_TEAM_WORKER;
302
- try {
303
- process.env.PATH = `${fakeBinDir}:${process.env.PATH || ''}`;
304
- process.env.RCS_TEAM_WORKER = '';
305
- await handleTmuxInjection({ payload, cwd, stateDir, logsDir });
306
- }
307
- finally {
308
- if (typeof previousPath === 'string')
309
- process.env.PATH = previousPath;
310
- else
311
- delete process.env.PATH;
312
- if (typeof previousTeamWorker === 'string')
313
- process.env.RCS_TEAM_WORKER = previousTeamWorker;
314
- else
315
- delete process.env.RCS_TEAM_WORKER;
316
- }
317
- const hookState = await readJson(hookStatePath);
318
- assert.equal(hookState.total_injections, 0);
319
- assert.equal(hookState.last_reason, 'mode_not_allowed');
320
- const persistedSessionState = JSON.parse(await readFile(sessionStatePath, 'utf-8'));
321
- assert.equal(persistedSessionState.session_id, canonicalSessionState.session_id);
322
- const tmuxLog = await readFile(tmuxLogPath, 'utf-8').catch(() => '');
323
- assert.doesNotMatch(tmuxLog, /send-keys -t %42 -l/, 'legacy root Ralph state should not trigger a Ralph nudge when canonical skill state excludes Ralph');
324
- });
325
- });
326
- it('falls back to current tmux pane and heals stale session target', async () => {
327
- await withTempWorkingDir(async (cwd) => {
328
- const rcsDir = join(cwd, '.rcs');
329
- const stateDir = join(rcsDir, 'state');
330
- const logsDir = join(rcsDir, 'logs');
331
- const sessionId = 'rcs-abc123';
332
- const sessionStateDir = join(stateDir, 'sessions', sessionId);
333
- const fakeBinDir = join(cwd, 'fake-bin');
334
- const fakeTmuxPath = join(fakeBinDir, 'tmux');
335
- const managedSessionName = buildTmuxSessionName(cwd, sessionId);
336
- const configPath = join(rcsDir, 'tmux-hook.json');
337
- const hookStatePath = join(stateDir, 'tmux-hook-state.json');
338
- await mkdir(sessionStateDir, { recursive: true });
339
- await mkdir(logsDir, { recursive: true });
340
- await mkdir(fakeBinDir, { recursive: true });
341
- await writeManagedSessionState(stateDir, cwd, sessionId);
342
- await writeJson(join(sessionStateDir, 'ralph-state.json'), { active: true, iteration: 0 });
343
- await writeJson(configPath, {
344
- enabled: true,
345
- target: { type: 'session', value: sessionId },
346
- allowed_modes: ['ralph'],
347
- cooldown_ms: 0,
348
- max_injections_per_session: 10,
349
- prompt_template: 'Continue [RCS_TMUX_INJECT]',
350
- marker: '[RCS_TMUX_INJECT]',
351
- dry_run: false,
352
- log_level: 'debug',
353
- });
354
- const fakeTmux = `#!/usr/bin/env bash
355
- set -eu
356
- cmd="$1"
357
- shift || true
358
- if [[ "$cmd" == "list-panes" ]]; then
359
- target=""
360
- while (($#)); do
361
- case "$1" in
362
- -t) target="$2"; shift 2 ;;
363
- *) shift ;;
364
- esac
365
- done
366
- if [[ "$target" == "${managedSessionName}" ]]; then
367
- echo "%42 1"
368
- exit 0
369
- fi
370
- echo "can't find session: $target" >&2
371
- exit 1
372
- fi
373
- if [[ "$cmd" == "display-message" ]]; then
374
- target=""
375
- format=""
376
- while (($#)); do
377
- case "$1" in
378
- -p) shift ;;
379
- -t) target="$2"; shift 2 ;;
380
- *) format="$1"; shift ;;
381
- esac
382
- done
383
- if [[ "$format" == "#{pane_id}" && "$target" == "%42" ]]; then
384
- echo "%42"
385
- exit 0
386
- fi
387
- if [[ "$format" == "#{pane_current_command}" && "$target" == "%42" ]]; then
388
- echo "codex"
389
- exit 0
390
- fi
391
- if [[ "$format" == "#{pane_start_command}" && "$target" == "%42" ]]; then
392
- echo "codex"
393
- exit 0
394
- fi
395
- if [[ "$format" == "#{pane_current_path}" && "$target" == "%42" ]]; then
396
- echo "${cwd}"
397
- exit 0
398
- fi
399
- if [[ "$format" == "#{pane_current_command}" && "$target" == "%42" ]]; then
400
- echo "codex"
401
- exit 0
402
- fi
403
- if [[ "$format" == "#{pane_start_command}" && "$target" == "%42" ]]; then
404
- echo "codex"
405
- exit 0
406
- fi
407
- if [[ "$format" == "#S" && "$target" == "%42" ]]; then
408
- echo "${managedSessionName}"
409
- exit 0
410
- fi
411
- echo "bad display target: $target / $format" >&2
412
- exit 1
413
- fi
414
- if [[ "$cmd" == "send-keys" ]]; then
415
- exit 0
416
- fi
417
- echo "unsupported cmd: $cmd" >&2
418
- exit 1
419
- `;
420
- await writeFile(fakeTmuxPath, fakeTmux);
421
- await chmod(fakeTmuxPath, 0o755);
422
- const payload = {
423
- cwd,
424
- type: 'agent-turn-complete',
425
- session_id: sessionId,
426
- 'thread-id': 'thread-test',
427
- 'turn-id': 'turn-test',
428
- 'input-messages': ['no marker here'],
429
- 'last-assistant-message': 'output',
430
- };
431
- const previousPath = process.env.PATH;
432
- const previousTeamWorker = process.env.RCS_TEAM_WORKER;
433
- const previousTmuxPane = process.env.TMUX_PANE;
434
- try {
435
- process.env.PATH = `${fakeBinDir}:${process.env.PATH || ''}`;
436
- process.env.RCS_TEAM_WORKER = '';
437
- process.env.TMUX_PANE = '%42';
438
- await handleTmuxInjection({ payload, cwd, stateDir, logsDir });
439
- }
440
- finally {
441
- if (typeof previousPath === 'string')
442
- process.env.PATH = previousPath;
443
- else
444
- delete process.env.PATH;
445
- if (typeof previousTeamWorker === 'string')
446
- process.env.RCS_TEAM_WORKER = previousTeamWorker;
447
- else
448
- delete process.env.RCS_TEAM_WORKER;
449
- if (typeof previousTmuxPane === 'string')
450
- process.env.TMUX_PANE = previousTmuxPane;
451
- else
452
- delete process.env.TMUX_PANE;
453
- }
454
- const hookState = await readJson(hookStatePath);
455
- assert.equal(hookState.last_reason, 'injection_sent');
456
- assert.equal(hookState.total_injections, 1);
457
- const healedConfig = await readJson(configPath);
458
- assert.equal(healedConfig.target.type, 'pane');
459
- assert.equal(healedConfig.target.value, '%42');
460
- });
461
- });
462
- it('prefers the session tagged with the current RCS instance over stale pane config', async () => {
463
- await withTempWorkingDir(async (cwd) => {
464
- const rcsDir = join(cwd, '.rcs');
465
- const stateDir = join(rcsDir, 'state');
466
- const logsDir = join(rcsDir, 'logs');
467
- const sessionId = 'rcs-tagged-instance';
468
- const sessionStateDir = join(stateDir, 'sessions', sessionId);
469
- const fakeBinDir = join(cwd, 'fake-bin');
470
- const fakeTmuxPath = join(fakeBinDir, 'tmux');
471
- const managedSessionName = buildTmuxSessionName(cwd, sessionId);
472
- const wrongSessionName = 'other-rcs-session';
473
- const configPath = join(rcsDir, 'tmux-hook.json');
474
- const hookStatePath = join(stateDir, 'tmux-hook-state.json');
475
- await mkdir(sessionStateDir, { recursive: true });
476
- await mkdir(logsDir, { recursive: true });
477
- await mkdir(fakeBinDir, { recursive: true });
478
- await writeManagedSessionState(stateDir, cwd, sessionId);
479
- await writeJson(join(sessionStateDir, 'ralph-state.json'), { active: true, iteration: 0 });
480
- await writeJson(configPath, {
481
- enabled: true,
482
- target: { type: 'pane', value: '%42' },
483
- allowed_modes: ['ralph'],
484
- cooldown_ms: 0,
485
- max_injections_per_session: 10,
486
- prompt_template: 'Continue [RCS_TMUX_INJECT]',
487
- marker: '[RCS_TMUX_INJECT]',
488
- dry_run: false,
489
- log_level: 'debug',
490
- });
491
- const fakeTmux = `#!/usr/bin/env bash
492
- set -eu
493
- cmd="$1"
494
- shift || true
495
- if [[ "$cmd" == "list-sessions" ]]; then
496
- printf "%s\t%s\n" "${wrongSessionName}" "rcs-other"
497
- printf "%s\t%s\n" "${managedSessionName}" "${sessionId}"
498
- exit 0
499
- fi
500
- if [[ "$cmd" == "list-panes" ]]; then
501
- target=""
502
- while (($#)); do
503
- case "$1" in
504
- -t) target="$2"; shift 2 ;;
505
- *) shift ;;
506
- esac
507
- done
508
- if [[ "$target" == "${managedSessionName}" ]]; then
509
- printf "%%99\t1\tcodex\tcodex\n"
510
- exit 0
511
- fi
512
- exit 1
513
- fi
514
- if [[ "$cmd" == "show-option" ]]; then
515
- target=""
516
- while (($#)); do
517
- case "$1" in
518
- -t) target="$2"; shift 2 ;;
519
- *) shift ;;
520
- esac
521
- done
522
- if [[ "$target" == "${managedSessionName}" ]]; then
523
- echo "${sessionId}"
524
- exit 0
525
- fi
526
- if [[ "$target" == "${wrongSessionName}" ]]; then
527
- echo "rcs-other"
528
- exit 0
529
- fi
530
- exit 1
531
- fi
532
- if [[ "$cmd" == "display-message" ]]; then
533
- target=""
534
- format=""
535
- while (($#)); do
536
- case "$1" in
537
- -p) shift ;;
538
- -t) target="$2"; shift 2 ;;
539
- *) format="$1"; shift ;;
540
- esac
541
- done
542
- if [[ "$format" == "#{pane_id}" && "$target" == "%99" ]]; then echo "%99"; exit 0; fi
543
- if [[ "$format" == "#{pane_current_path}" && "$target" == "%99" ]]; then echo "${cwd}"; exit 0; fi
544
- if [[ "$format" == "#{pane_start_command}" && "$target" == "%99" ]]; then echo "codex"; exit 0; fi
545
- if [[ "$format" == "#{pane_current_command}" && "$target" == "%99" ]]; then echo "codex"; exit 0; fi
546
- if [[ "$format" == "#{pane_in_mode}" && "$target" == "%99" ]]; then echo "0"; exit 0; fi
547
- if [[ "$format" == "#S" && "$target" == "%99" ]]; then echo "${managedSessionName}"; exit 0; fi
548
- if [[ "$format" == "#{pane_id}" && "$target" == "%42" ]]; then echo "%42"; exit 0; fi
549
- if [[ "$format" == "#S" && "$target" == "%42" ]]; then echo "${wrongSessionName}"; exit 0; fi
550
- exit 1
551
- fi
552
- if [[ "$cmd" == "send-keys" ]]; then
553
- [[ "$*" == *"%99"* ]]
554
- exit $?
555
- fi
556
- echo "unsupported cmd: $cmd" >&2
557
- exit 1
558
- `;
559
- await writeFile(fakeTmuxPath, fakeTmux);
560
- await chmod(fakeTmuxPath, 0o755);
561
- const payload = {
562
- cwd,
563
- type: 'agent-turn-complete',
564
- session_id: sessionId,
565
- 'thread-id': 'thread-tagged-instance',
566
- 'turn-id': 'turn-tagged-instance',
567
- 'input-messages': ['no marker here'],
568
- 'last-assistant-message': 'output',
569
- };
570
- const result = spawnSync(process.execPath, [NOTIFY_HOOK_SCRIPT.pathname, JSON.stringify(payload)], {
571
- encoding: 'utf8',
572
- env: {
573
- ...process.env,
574
- PATH: `${fakeBinDir}:${process.env.PATH || ''}`,
575
- RCS_TEAM_WORKER: '',
576
- },
577
- });
578
- assert.equal(result.status, 0, `notify-hook failed: ${result.stderr || result.stdout}`);
579
- const hookState = await readJson(hookStatePath);
580
- assert.equal(hookState.last_reason, 'injection_sent');
581
- assert.equal(hookState.total_injections, 1);
582
- const healedConfig = await readJson(configPath);
583
- assert.equal(healedConfig.target.type, 'pane');
584
- assert.equal(healedConfig.target.value, '%99');
585
- });
586
- });
587
- it('skips injection when a static pane belongs to another tagged RCS instance', async () => {
588
- await withTempWorkingDir(async (cwd) => {
589
- const rcsDir = join(cwd, '.rcs');
590
- const stateDir = join(rcsDir, 'state');
591
- const logsDir = join(rcsDir, 'logs');
592
- const sessionId = 'rcs-current-instance';
593
- const sessionStateDir = join(stateDir, 'sessions', sessionId);
594
- const fakeBinDir = join(cwd, 'fake-bin');
595
- const fakeTmuxPath = join(fakeBinDir, 'tmux');
596
- const wrongSessionName = 'wrong-tagged-session';
597
- const configPath = join(rcsDir, 'tmux-hook.json');
598
- const hookStatePath = join(stateDir, 'tmux-hook-state.json');
599
- await mkdir(sessionStateDir, { recursive: true });
600
- await mkdir(logsDir, { recursive: true });
601
- await mkdir(fakeBinDir, { recursive: true });
602
- await writeManagedSessionState(stateDir, cwd, sessionId);
603
- await writeJson(join(sessionStateDir, 'ralph-state.json'), { active: true, iteration: 0 });
604
- await writeJson(configPath, {
605
- enabled: true,
606
- target: { type: 'pane', value: '%42' },
607
- allowed_modes: ['ralph'],
608
- cooldown_ms: 0,
609
- max_injections_per_session: 10,
610
- prompt_template: 'Continue [RCS_TMUX_INJECT]',
611
- marker: '[RCS_TMUX_INJECT]',
612
- dry_run: false,
613
- log_level: 'debug',
614
- });
615
- const fakeTmux = `#!/usr/bin/env bash
616
- set -eu
617
- cmd="$1"
618
- shift || true
619
- if [[ "$cmd" == "list-sessions" ]]; then
620
- printf "%s\t%s\n" "${wrongSessionName}" "rcs-other-instance"
621
- exit 0
622
- fi
623
- if [[ "$cmd" == "show-option" ]]; then
624
- echo "rcs-other-instance"
625
- exit 0
626
- fi
627
- if [[ "$cmd" == "display-message" ]]; then
628
- target=""
629
- format=""
630
- while (($#)); do
631
- case "$1" in
632
- -p) shift ;;
633
- -t) target="$2"; shift 2 ;;
634
- *) format="$1"; shift ;;
635
- esac
636
- done
637
- if [[ "$format" == "#{pane_id}" && "$target" == "%42" ]]; then echo "%42"; exit 0; fi
638
- if [[ "$format" == "#{pane_current_path}" && "$target" == "%42" ]]; then echo "${cwd}"; exit 0; fi
639
- if [[ "$format" == "#{pane_start_command}" && "$target" == "%42" ]]; then echo "codex"; exit 0; fi
640
- if [[ "$format" == "#{pane_current_command}" && "$target" == "%42" ]]; then echo "codex"; exit 0; fi
641
- if [[ "$format" == "#S" && "$target" == "%42" ]]; then echo "${wrongSessionName}"; exit 0; fi
642
- exit 1
643
- fi
644
- if [[ "$cmd" == "send-keys" ]]; then
645
- echo "send-keys must not run" >&2
646
- exit 1
647
- fi
648
- echo "unsupported cmd: $cmd" >&2
649
- exit 1
650
- `;
651
- await writeFile(fakeTmuxPath, fakeTmux);
652
- await chmod(fakeTmuxPath, 0o755);
653
- const payload = {
654
- cwd,
655
- type: 'agent-turn-complete',
656
- session_id: sessionId,
657
- 'thread-id': 'thread-wrong-instance',
658
- 'turn-id': 'turn-wrong-instance',
659
- 'input-messages': ['no marker here'],
660
- 'last-assistant-message': 'output',
661
- };
662
- const result = spawnSync(process.execPath, [NOTIFY_HOOK_SCRIPT.pathname, JSON.stringify(payload)], {
663
- encoding: 'utf8',
664
- env: {
665
- ...process.env,
666
- PATH: `${fakeBinDir}:${process.env.PATH || ''}`,
667
- RCS_TEAM_WORKER: '',
668
- },
669
- });
670
- assert.equal(result.status, 0, `notify-hook failed: ${result.stderr || result.stdout}`);
671
- const hookState = await readJson(hookStatePath);
672
- assert.equal(hookState.last_reason, 'pane_instance_mismatch');
673
- assert.equal(hookState.total_injections, 0);
674
- });
675
- });
676
- it('skips injection when fallback pane cwd does not match hook cwd', async () => {
677
- await withTempWorkingDir(async (cwd) => {
678
- const rcsDir = join(cwd, '.rcs');
679
- const stateDir = join(rcsDir, 'state');
680
- const logsDir = join(rcsDir, 'logs');
681
- const sessionId = 'rcs-abc123';
682
- const sessionStateDir = join(stateDir, 'sessions', sessionId);
683
- const fakeBinDir = join(cwd, 'fake-bin');
684
- const fakeTmuxPath = join(fakeBinDir, 'tmux');
685
- const managedSessionName = buildTmuxSessionName(cwd, sessionId);
686
- const configPath = join(rcsDir, 'tmux-hook.json');
687
- const hookStatePath = join(stateDir, 'tmux-hook-state.json');
688
- await mkdir(sessionStateDir, { recursive: true });
689
- await mkdir(logsDir, { recursive: true });
690
- await mkdir(fakeBinDir, { recursive: true });
691
- await writeManagedSessionState(stateDir, cwd, sessionId);
692
- await writeJson(join(sessionStateDir, 'ralph-state.json'), { active: true, iteration: 0 });
693
- await writeJson(configPath, {
694
- enabled: true,
695
- target: { type: 'session', value: sessionId },
696
- allowed_modes: ['ralph'],
697
- cooldown_ms: 0,
698
- max_injections_per_session: 10,
699
- prompt_template: 'Continue [RCS_TMUX_INJECT]',
700
- marker: '[RCS_TMUX_INJECT]',
701
- dry_run: false,
702
- log_level: 'debug',
703
- });
704
- const fakeTmux = `#!/usr/bin/env bash
705
- set -eu
706
- cmd="$1"
707
- shift || true
708
- if [[ "$cmd" == "list-panes" ]]; then
709
- target=""
710
- while (($#)); do
711
- case "$1" in
712
- -t) target="$2"; shift 2 ;;
713
- *) shift ;;
714
- esac
715
- done
716
- if [[ "$target" == "${managedSessionName}" ]]; then
717
- echo "%42 1"
718
- exit 0
719
- fi
720
- echo "can't find session: $target" >&2
721
- exit 1
722
- fi
723
- if [[ "$cmd" == "display-message" ]]; then
724
- target=""
725
- format=""
726
- while (($#)); do
727
- case "$1" in
728
- -p) shift ;;
729
- -t) target="$2"; shift 2 ;;
730
- *) format="$1"; shift ;;
731
- esac
732
- done
733
- if [[ "$format" == "#{pane_id}" && "$target" == "%42" ]]; then
734
- echo "%42"
735
- exit 0
736
- fi
737
- if [[ "$format" == "#{pane_current_command}" && "$target" == "%42" ]]; then
738
- echo "codex"
739
- exit 0
740
- fi
741
- if [[ "$format" == "#{pane_start_command}" && "$target" == "%42" ]]; then
742
- echo "codex"
743
- exit 0
744
- fi
745
- if [[ "$format" == "#{pane_current_path}" && "$target" == "%42" ]]; then
746
- echo "/tmp/not-the-hook-cwd"
747
- exit 0
748
- fi
749
- if [[ "$format" == "#{pane_current_command}" && "$target" == "%42" ]]; then
750
- echo "codex"
751
- exit 0
752
- fi
753
- if [[ "$format" == "#{pane_start_command}" && "$target" == "%42" ]]; then
754
- echo "codex"
755
- exit 0
756
- fi
757
- if [[ "$format" == "#S" && "$target" == "%42" ]]; then
758
- echo "${managedSessionName}"
759
- exit 0
760
- fi
761
- echo "bad display target: $target / $format" >&2
762
- exit 1
763
- fi
764
- if [[ "$cmd" == "send-keys" ]]; then
765
- exit 0
766
- fi
767
- echo "unsupported cmd: $cmd" >&2
768
- exit 1
769
- `;
770
- await writeFile(fakeTmuxPath, fakeTmux);
771
- await chmod(fakeTmuxPath, 0o755);
772
- const payload = {
773
- cwd,
774
- type: 'agent-turn-complete',
775
- session_id: sessionId,
776
- 'thread-id': 'thread-test-2',
777
- 'turn-id': 'turn-test-2',
778
- 'input-messages': ['no marker here'],
779
- 'last-assistant-message': 'output',
780
- };
781
- const previousPath = process.env.PATH;
782
- const previousTeamWorker = process.env.RCS_TEAM_WORKER;
783
- const previousTmuxPane = process.env.TMUX_PANE;
784
- try {
785
- process.env.PATH = `${fakeBinDir}:${process.env.PATH || ''}`;
786
- process.env.RCS_TEAM_WORKER = '';
787
- process.env.TMUX_PANE = '%42';
788
- await handleTmuxInjection({ payload, cwd, stateDir, logsDir });
789
- }
790
- finally {
791
- if (typeof previousPath === 'string')
792
- process.env.PATH = previousPath;
793
- else
794
- delete process.env.PATH;
795
- if (typeof previousTeamWorker === 'string')
796
- process.env.RCS_TEAM_WORKER = previousTeamWorker;
797
- else
798
- delete process.env.RCS_TEAM_WORKER;
799
- if (typeof previousTmuxPane === 'string')
800
- process.env.TMUX_PANE = previousTmuxPane;
801
- else
802
- delete process.env.TMUX_PANE;
803
- }
804
- const hookState = await readJson(hookStatePath);
805
- assert.equal(hookState.last_reason, 'pane_cwd_mismatch');
806
- assert.equal(hookState.total_injections, 0);
807
- });
808
- });
809
- it('accepts alias and canonical twin paths when resolving managed pane ownership', async () => {
810
- await withTempWorkingDir(async (cwd) => {
811
- const aliasCwd = `${cwd}-alias`;
812
- const rcsDir = join(cwd, '.rcs');
813
- const stateDir = join(rcsDir, 'state');
814
- const sessionId = 'rcs-abc123';
815
- const fakeBinDir = join(cwd, 'fake-bin');
816
- const fakeTmuxPath = join(fakeBinDir, 'tmux');
817
- const managedSessionName = buildTmuxSessionName(cwd, sessionId);
818
- await mkdir(stateDir, { recursive: true });
819
- await mkdir(fakeBinDir, { recursive: true });
820
- await symlink(cwd, aliasCwd, process.platform === 'win32' ? 'junction' : 'dir');
821
- await writeManagedSessionState(stateDir, cwd, sessionId);
822
- const fakeTmux = `#!/usr/bin/env bash
823
- set -eu
824
- cmd="$1"
825
- shift || true
826
- if [[ "$cmd" == "display-message" ]]; then
827
- target=""
828
- format=""
829
- while (($#)); do
830
- case "$1" in
831
- -p) shift ;;
832
- -t) target="$2"; shift 2 ;;
833
- *) format="$1"; shift ;;
834
- esac
835
- done
836
- if [[ "$target" == "%42" && "$format" == "#{pane_id}" ]]; then
837
- echo "%42"
838
- exit 0
839
- fi
840
- if [[ "$target" == "%42" && "$format" == "#{pane_start_command}" ]]; then
841
- echo "codex --model gpt-5"
842
- exit 0
843
- fi
844
- if [[ "$target" == "%42" && "$format" == "#{pane_current_command}" ]]; then
845
- echo "codex"
846
- exit 0
847
- fi
848
- if [[ "$target" == "%42" && "$format" == "#{pane_current_path}" ]]; then
849
- echo "${cwd}"
850
- exit 0
851
- fi
852
- if [[ "$target" == "%42" && "$format" == "#S" ]]; then
853
- echo "${managedSessionName}"
854
- exit 0
855
- fi
856
- fi
857
- echo "unsupported tmux call: $cmd $*" >&2
858
- exit 1
859
- `;
860
- await writeFile(fakeTmuxPath, fakeTmux);
861
- await chmod(fakeTmuxPath, 0o755);
862
- const previousPath = process.env.PATH;
863
- const previousTeamWorker = process.env.RCS_TEAM_WORKER;
864
- const previousTmux = process.env.TMUX;
865
- const previousTmuxPane = process.env.TMUX_PANE;
866
- try {
867
- process.env.PATH = `${fakeBinDir}:${process.env.PATH || ''}`;
868
- process.env.RCS_TEAM_WORKER = '';
869
- delete process.env.TMUX;
870
- delete process.env.TMUX_PANE;
871
- const resolution = await resolvePaneTarget({ type: 'pane', value: '%42' }, aliasCwd, '', aliasCwd, { session_id: sessionId });
872
- assert.equal(resolution.paneTarget, '%42');
873
- assert.equal(resolution.reason, 'explicit_pane_target');
874
- assert.equal(resolution.matched_session, managedSessionName);
875
- }
876
- finally {
877
- if (typeof previousPath === 'string')
878
- process.env.PATH = previousPath;
879
- else
880
- delete process.env.PATH;
881
- if (typeof previousTeamWorker === 'string')
882
- process.env.RCS_TEAM_WORKER = previousTeamWorker;
883
- else
884
- delete process.env.RCS_TEAM_WORKER;
885
- if (typeof previousTmux === 'string')
886
- process.env.TMUX = previousTmux;
887
- else
888
- delete process.env.TMUX;
889
- if (typeof previousTmuxPane === 'string')
890
- process.env.TMUX_PANE = previousTmuxPane;
891
- else
892
- delete process.env.TMUX_PANE;
893
- await rm(aliasCwd, { recursive: true, force: true });
894
- }
895
- });
896
- });
897
- it('resolves the explicit managed session target without shared-cwd guessing', async () => {
898
- await withTempWorkingDir(async (cwd) => {
899
- const rcsDir = join(cwd, '.rcs');
900
- const stateDir = join(rcsDir, 'state');
901
- const logsDir = join(rcsDir, 'logs');
902
- const sessionId = 'rcs-abc123';
903
- const sessionStateDir = join(stateDir, 'sessions', sessionId);
904
- const fakeBinDir = join(cwd, 'fake-bin');
905
- const fakeTmuxPath = join(fakeBinDir, 'tmux');
906
- const managedSessionName = buildTmuxSessionName(cwd, sessionId);
907
- const configPath = join(rcsDir, 'tmux-hook.json');
908
- const hookStatePath = join(stateDir, 'tmux-hook-state.json');
909
- await mkdir(sessionStateDir, { recursive: true });
910
- await mkdir(logsDir, { recursive: true });
911
- await mkdir(fakeBinDir, { recursive: true });
912
- await writeManagedSessionState(stateDir, cwd, sessionId);
913
- await writeJson(join(sessionStateDir, 'ralph-state.json'), { active: true, iteration: 0 });
914
- await writeJson(configPath, {
915
- enabled: true,
916
- target: { type: 'session', value: sessionId },
917
- allowed_modes: ['ralph'],
918
- cooldown_ms: 0,
919
- max_injections_per_session: 10,
920
- prompt_template: 'Continue [RCS_TMUX_INJECT]',
921
- marker: '[RCS_TMUX_INJECT]',
922
- dry_run: false,
923
- log_level: 'debug',
924
- });
925
- const fakeTmux = `#!/usr/bin/env bash
926
- set -eu
927
- cmd="$1"
928
- shift || true
929
- if [[ "$cmd" == "list-panes" ]]; then
930
- all=false
931
- target=""
932
- while (($#)); do
933
- case "$1" in
934
- -a) all=true; shift ;;
935
- -t) target="$2"; shift 2 ;;
936
- -F) shift 2 ;;
937
- *) shift ;;
938
- esac
939
- done
940
- if [[ "$all" == "true" ]]; then
941
- echo "%42\t${cwd}\t1\tdevsess"
942
- exit 0
943
- fi
944
- if [[ "$target" == "${managedSessionName}" ]]; then
945
- echo "%42 1"
946
- exit 0
947
- fi
948
- echo "can't find session: $target" >&2
949
- exit 1
950
- fi
951
- if [[ "$cmd" == "display-message" ]]; then
952
- target=""
953
- format=""
954
- while (($#)); do
955
- case "$1" in
956
- -p) shift ;;
957
- -t) target="$2"; shift 2 ;;
958
- *) format="$1"; shift ;;
959
- esac
960
- done
961
- if [[ "$format" == "#{pane_id}" && "$target" == "%42" ]]; then
962
- echo "%42"
963
- exit 0
964
- fi
965
- if [[ "$format" == "#S" && "$target" == "%42" ]]; then
966
- echo "${managedSessionName}"
967
- exit 0
968
- fi
969
- if [[ "$format" == "#{pane_current_path}" && "$target" == "%42" ]]; then
970
- echo "${cwd}"
971
- exit 0
972
- fi
973
- echo "bad display target: $target / $format" >&2
974
- exit 1
975
- fi
976
- if [[ "$cmd" == "send-keys" ]]; then
977
- exit 0
978
- fi
979
- echo "unsupported cmd: $cmd" >&2
980
- exit 1
981
- `;
982
- await writeFile(fakeTmuxPath, fakeTmux);
983
- await chmod(fakeTmuxPath, 0o755);
984
- const payload = {
985
- cwd,
986
- type: 'agent-turn-complete',
987
- session_id: sessionId,
988
- 'thread-id': 'thread-test-3',
989
- 'turn-id': 'turn-test-3',
990
- 'input-messages': ['no marker here'],
991
- 'last-assistant-message': 'output',
992
- };
993
- const previousPath = process.env.PATH;
994
- const previousTeamWorker = process.env.RCS_TEAM_WORKER;
995
- try {
996
- process.env.PATH = `${fakeBinDir}:${process.env.PATH || ''}`;
997
- process.env.RCS_TEAM_WORKER = '';
998
- delete process.env.TMUX_PANE;
999
- await handleTmuxInjection({ payload, cwd, stateDir, logsDir });
1000
- }
1001
- finally {
1002
- if (typeof previousPath === 'string')
1003
- process.env.PATH = previousPath;
1004
- else
1005
- delete process.env.PATH;
1006
- if (typeof previousTeamWorker === 'string')
1007
- process.env.RCS_TEAM_WORKER = previousTeamWorker;
1008
- else
1009
- delete process.env.RCS_TEAM_WORKER;
1010
- }
1011
- const hookState = await readJson(hookStatePath);
1012
- assert.equal(hookState.last_reason, 'injection_sent');
1013
- assert.equal(hookState.total_injections, 1);
1014
- });
1015
- });
1016
- it('heals a stale HUD pane target back to the canonical codex pane', async () => {
1017
- await withTempWorkingDir(async (cwd) => {
1018
- const rcsDir = join(cwd, '.rcs');
1019
- const stateDir = join(rcsDir, 'state');
1020
- const logsDir = join(rcsDir, 'logs');
1021
- const sessionId = 'rcs-hud-stale';
1022
- const sessionStateDir = join(stateDir, 'sessions', sessionId);
1023
- const fakeBinDir = join(cwd, 'fake-bin');
1024
- const fakeTmuxPath = join(fakeBinDir, 'tmux');
1025
- const managedSessionName = buildTmuxSessionName(cwd, sessionId);
1026
- const configPath = join(rcsDir, 'tmux-hook.json');
1027
- const hookStatePath = join(stateDir, 'tmux-hook-state.json');
1028
- await mkdir(sessionStateDir, { recursive: true });
1029
- await mkdir(logsDir, { recursive: true });
1030
- await mkdir(fakeBinDir, { recursive: true });
1031
- await writeManagedSessionState(stateDir, cwd, sessionId);
1032
- await writeJson(join(sessionStateDir, 'ralph-state.json'), { active: true, iteration: 0 });
1033
- await writeJson(configPath, {
1034
- enabled: true,
1035
- target: { type: 'pane', value: '%77' },
1036
- allowed_modes: ['ralph'],
1037
- cooldown_ms: 0,
1038
- max_injections_per_session: 10,
1039
- prompt_template: 'Continue [RCS_TMUX_INJECT]',
1040
- marker: '[RCS_TMUX_INJECT]',
1041
- dry_run: false,
1042
- log_level: 'debug',
1043
- });
1044
- const fakeTmux = `#!/usr/bin/env bash
1045
- set -eu
1046
- cmd="$1"
1047
- shift || true
1048
- if [[ "$cmd" == "display-message" ]]; then
1049
- target=""
1050
- format=""
1051
- while (($#)); do
1052
- case "$1" in
1053
- -p) shift ;;
1054
- -t) target="$2"; shift 2 ;;
1055
- *) format="$1"; shift ;;
1056
- esac
1057
- done
1058
- if [[ "$format" == "#{pane_current_command}" && "$target" == "%99" ]]; then
1059
- echo "node"
1060
- exit 0
1061
- fi
1062
- if [[ "$format" == "#{pane_id}" && "$target" == "%77" ]]; then
1063
- echo "%77"
1064
- exit 0
1065
- fi
1066
- if [[ "$format" == "#{pane_start_command}" && "$target" == "%77" ]]; then
1067
- echo "node dist/cli/rcs.js hud --watch"
1068
- exit 0
1069
- fi
1070
- if [[ "$format" == "#S" && "$target" == "%77" ]]; then
1071
- echo "${managedSessionName}"
1072
- exit 0
1073
- fi
1074
- if [[ "$format" == "#{pane_current_path}" && "$target" == "%99" ]]; then
1075
- echo "${cwd}"
1076
- exit 0
1077
- fi
1078
- if [[ "$format" == "#{pane_start_command}" && "$target" == "%99" ]]; then
1079
- echo "codex"
1080
- exit 0
1081
- fi
1082
- if [[ "$format" == "#S" && "$target" == "%99" ]]; then
1083
- echo "${managedSessionName}"
1084
- exit 0
1085
- fi
1086
- if [[ "$format" == "#{pane_in_mode}" && "$target" == "%99" ]]; then
1087
- echo "0"
1088
- exit 0
1089
- fi
1090
- exit 1
1091
- fi
1092
- if [[ "$cmd" == "list-panes" ]]; then
1093
- target=""
1094
- while (($#)); do
1095
- case "$1" in
1096
- -t) target="$2"; shift 2 ;;
1097
- *) shift ;;
1098
- esac
1099
- done
1100
- if [[ "$target" == "${managedSessionName}" ]]; then
1101
- printf "%%77\t1\tnode\tnode dist/cli/rcs.js hud --watch\n%%99\t0\tcodex\tcodex\n"
1102
- exit 0
1103
- fi
1104
- exit 1
1105
- fi
1106
- if [[ "$cmd" == "send-keys" ]]; then
1107
- exit 0
1108
- fi
1109
- exit 1
1110
- `;
1111
- await writeFile(fakeTmuxPath, fakeTmux);
1112
- await chmod(fakeTmuxPath, 0o755);
1113
- const payload = {
1114
- cwd,
1115
- type: 'agent-turn-complete',
1116
- session_id: sessionId,
1117
- 'thread-id': 'thread-test-hud-heal',
1118
- 'turn-id': 'turn-test-hud-heal',
1119
- 'input-messages': ['no marker here'],
1120
- 'last-assistant-message': 'output',
1121
- };
1122
- const previousPath = process.env.PATH;
1123
- const previousTeamWorker = process.env.RCS_TEAM_WORKER;
1124
- const previousTmuxPane = process.env.TMUX_PANE;
1125
- try {
1126
- process.env.PATH = `${fakeBinDir}:${process.env.PATH || ''}`;
1127
- process.env.RCS_TEAM_WORKER = '';
1128
- process.env.TMUX_PANE = '%99';
1129
- await handleTmuxInjection({ payload, cwd, stateDir, logsDir });
1130
- }
1131
- finally {
1132
- if (typeof previousPath === 'string')
1133
- process.env.PATH = previousPath;
1134
- else
1135
- delete process.env.PATH;
1136
- if (typeof previousTeamWorker === 'string')
1137
- process.env.RCS_TEAM_WORKER = previousTeamWorker;
1138
- else
1139
- delete process.env.RCS_TEAM_WORKER;
1140
- if (typeof previousTmuxPane === 'string')
1141
- process.env.TMUX_PANE = previousTmuxPane;
1142
- else
1143
- delete process.env.TMUX_PANE;
1144
- }
1145
- const hookState = await readJson(hookStatePath);
1146
- assert.equal(hookState.last_reason, 'injection_sent');
1147
- assert.equal(hookState.last_target, '%99');
1148
- const healedConfig = await readJson(configPath);
1149
- assert.equal(healedConfig.target.type, 'pane');
1150
- assert.equal(healedConfig.target.value, '%99');
1151
- });
1152
- });
1153
- it('prefers active mode state tmux_pane_id when present', async () => {
1154
- await withTempWorkingDir(async (cwd) => {
1155
- const rcsDir = join(cwd, '.rcs');
1156
- const stateDir = join(rcsDir, 'state');
1157
- const logsDir = join(rcsDir, 'logs');
1158
- const sessionId = 'rcs-abc123';
1159
- const sessionStateDir = join(stateDir, 'sessions', sessionId);
1160
- const fakeBinDir = join(cwd, 'fake-bin');
1161
- const fakeTmuxPath = join(fakeBinDir, 'tmux');
1162
- const managedSessionName = buildTmuxSessionName(cwd, sessionId);
1163
- const configPath = join(rcsDir, 'tmux-hook.json');
1164
- const hookStatePath = join(stateDir, 'tmux-hook-state.json');
1165
- await mkdir(sessionStateDir, { recursive: true });
1166
- await mkdir(logsDir, { recursive: true });
1167
- await mkdir(fakeBinDir, { recursive: true });
1168
- await writeManagedSessionState(stateDir, cwd, sessionId);
1169
- await writeJson(join(sessionStateDir, 'ralph-state.json'), {
1170
- active: true,
1171
- iteration: 0,
1172
- tmux_pane_id: '%99',
1173
- });
1174
- await writeJson(configPath, {
1175
- enabled: true,
1176
- target: { type: 'session', value: 'nonexistent-session' },
1177
- allowed_modes: ['ralph'],
1178
- cooldown_ms: 0,
1179
- max_injections_per_session: 10,
1180
- prompt_template: 'Continue [RCS_TMUX_INJECT]',
1181
- marker: '[RCS_TMUX_INJECT]',
1182
- dry_run: false,
1183
- log_level: 'debug',
1184
- });
1185
- const fakeTmux = `#!/usr/bin/env bash
1186
- set -eu
1187
- cmd="$1"
1188
- shift || true
1189
- if [[ "$cmd" == "display-message" ]]; then
1190
- target=""
1191
- format=""
1192
- while (($#)); do
1193
- case "$1" in
1194
- -p) shift ;;
1195
- -t) target="$2"; shift 2 ;;
1196
- *) format="$1"; shift ;;
1197
- esac
1198
- done
1199
- if [[ "$format" == "#{pane_id}" && "$target" == "%99" ]]; then
1200
- echo "%99"
1201
- exit 0
1202
- fi
1203
- if [[ "$format" == "#{pane_current_path}" && "$target" == "%99" ]]; then
1204
- echo "${cwd}"
1205
- exit 0
1206
- fi
1207
- if [[ "$format" == "#S" && "$target" == "%99" ]]; then
1208
- echo "${managedSessionName}"
1209
- exit 0
1210
- fi
1211
- echo "bad display target: $target / $format" >&2
1212
- exit 1
1213
- fi
1214
- if [[ "$cmd" == "list-panes" ]]; then
1215
- echo "can't find session" >&2
1216
- exit 1
1217
- fi
1218
- if [[ "$cmd" == "send-keys" ]]; then
1219
- exit 0
1220
- fi
1221
- echo "unsupported cmd: $cmd" >&2
1222
- exit 1
1223
- `;
1224
- await writeFile(fakeTmuxPath, fakeTmux);
1225
- await chmod(fakeTmuxPath, 0o755);
1226
- const payload = {
1227
- cwd,
1228
- type: 'agent-turn-complete',
1229
- session_id: sessionId,
1230
- 'thread-id': 'thread-test-4',
1231
- 'turn-id': 'turn-test-4',
1232
- 'input-messages': ['no marker here'],
1233
- 'last-assistant-message': 'output',
1234
- };
1235
- const previousPath = process.env.PATH;
1236
- const previousTeamWorker = process.env.RCS_TEAM_WORKER;
1237
- try {
1238
- process.env.PATH = `${fakeBinDir}:${process.env.PATH || ''}`;
1239
- process.env.RCS_TEAM_WORKER = '';
1240
- delete process.env.TMUX_PANE;
1241
- await handleTmuxInjection({ payload, cwd, stateDir, logsDir });
1242
- }
1243
- finally {
1244
- if (typeof previousPath === 'string')
1245
- process.env.PATH = previousPath;
1246
- else
1247
- delete process.env.PATH;
1248
- if (typeof previousTeamWorker === 'string')
1249
- process.env.RCS_TEAM_WORKER = previousTeamWorker;
1250
- else
1251
- delete process.env.RCS_TEAM_WORKER;
1252
- }
1253
- const hookState = await readJson(hookStatePath);
1254
- assert.equal(hookState.last_reason, 'injection_sent');
1255
- assert.equal(hookState.total_injections, 1);
1256
- const healedConfig = await readJson(configPath);
1257
- assert.equal(healedConfig.target.type, 'pane');
1258
- assert.equal(healedConfig.target.value, '%99');
1259
- });
1260
- });
1261
- it('does not heal the repo-scoped target when a preGuard skip returns early', async () => {
1262
- await withTempWorkingDir(async (cwd) => {
1263
- const rcsDir = join(cwd, '.rcs');
1264
- const stateDir = join(rcsDir, 'state');
1265
- const logsDir = join(rcsDir, 'logs');
1266
- const sessionId = 'rcs-preguard-heal';
1267
- const sessionStateDir = join(stateDir, 'sessions', sessionId);
1268
- const fakeBinDir = join(cwd, 'fake-bin');
1269
- const fakeTmuxPath = join(fakeBinDir, 'tmux');
1270
- const managedSessionName = buildTmuxSessionName(cwd, sessionId);
1271
- const configPath = join(rcsDir, 'tmux-hook.json');
1272
- const hookStatePath = join(stateDir, 'tmux-hook-state.json');
1273
- await mkdir(sessionStateDir, { recursive: true });
1274
- await mkdir(logsDir, { recursive: true });
1275
- await mkdir(fakeBinDir, { recursive: true });
1276
- await writeManagedSessionState(stateDir, cwd, sessionId);
1277
- await writeJson(join(sessionStateDir, 'ralph-state.json'), {
1278
- active: true,
1279
- iteration: 0,
1280
- tmux_pane_id: '%99',
1281
- });
1282
- await writeJson(configPath, {
1283
- enabled: true,
1284
- target: { type: 'session', value: 'nonexistent-session' },
1285
- allowed_modes: ['ralph'],
1286
- cooldown_ms: 0,
1287
- max_injections_per_session: 10,
1288
- prompt_template: 'Continue [RCS_TMUX_INJECT]',
1289
- marker: '[RCS_TMUX_INJECT]',
1290
- dry_run: false,
1291
- log_level: 'debug',
1292
- });
1293
- const fakeTmux = `#!/usr/bin/env bash
1294
- set -eu
1295
- cmd="$1"
1296
- shift || true
1297
- if [[ "$cmd" == "display-message" ]]; then
1298
- target=""
1299
- format=""
1300
- while (($#)); do
1301
- case "$1" in
1302
- -p) shift ;;
1303
- -t) target="$2"; shift 2 ;;
1304
- *) format="$1"; shift ;;
1305
- esac
1306
- done
1307
- if [[ "$format" == "#{pane_id}" && "$target" == "%99" ]]; then
1308
- echo "%99"
1309
- exit 0
1310
- fi
1311
- if [[ "$format" == "#{pane_current_path}" && "$target" == "%99" ]]; then
1312
- echo "${cwd}"
1313
- exit 0
1314
- fi
1315
- if [[ "$format" == "#S" && "$target" == "%99" ]]; then
1316
- echo "${managedSessionName}"
1317
- exit 0
1318
- fi
1319
- echo "bad display target: $target / $format" >&2
1320
- exit 1
1321
- fi
1322
- if [[ "$cmd" == "list-panes" ]]; then
1323
- echo "can't find session" >&2
1324
- exit 1
1325
- fi
1326
- if [[ "$cmd" == "send-keys" ]]; then
1327
- echo "unexpected send-keys" >&2
1328
- exit 1
1329
- fi
1330
- echo "unsupported cmd: $cmd" >&2
1331
- exit 1
1332
- `;
1333
- await writeFile(fakeTmuxPath, fakeTmux);
1334
- await chmod(fakeTmuxPath, 0o755);
1335
- const payload = {
1336
- cwd,
1337
- type: 'agent-turn-complete',
1338
- session_id: sessionId,
1339
- 'thread-id': 'thread-test-preguard-heal',
1340
- 'turn-id': 'turn-test-preguard-heal',
1341
- 'input-messages': ['already contains [RCS_TMUX_INJECT] marker'],
1342
- 'last-assistant-message': 'output',
1343
- };
1344
- await withPatchedEnv({
1345
- PATH: `${fakeBinDir}:${process.env.PATH || ''}`,
1346
- RCS_TEAM_WORKER: '',
1347
- }, async () => {
1348
- await handleTmuxInjection({ payload, cwd, stateDir, logsDir });
1349
- });
1350
- const hookState = await readJson(hookStatePath);
1351
- assert.equal(hookState.last_reason, 'loop_guard_input_marker');
1352
- assert.equal(hookState.total_injections, 0);
1353
- const healedConfig = await readJson(configPath);
1354
- assert.equal(healedConfig.target.type, 'session');
1355
- assert.equal(healedConfig.target.value, 'nonexistent-session');
1356
- });
1357
- });
1358
- it('prefers scoped active mode state over global mode state for tmux pane selection', async () => {
1359
- await withTempWorkingDir(async (cwd) => {
1360
- const rcsDir = join(cwd, '.rcs');
1361
- const stateDir = join(rcsDir, 'state');
1362
- const logsDir = join(rcsDir, 'logs');
1363
- const sessionId = 'rcs-abc123';
1364
- const sessionStateDir = join(stateDir, 'sessions', sessionId);
1365
- const fakeBinDir = join(cwd, 'fake-bin');
1366
- const fakeTmuxPath = join(fakeBinDir, 'tmux');
1367
- const managedSessionName = buildTmuxSessionName(cwd, sessionId);
1368
- const configPath = join(rcsDir, 'tmux-hook.json');
1369
- const hookStatePath = join(stateDir, 'tmux-hook-state.json');
1370
- await mkdir(sessionStateDir, { recursive: true });
1371
- await mkdir(logsDir, { recursive: true });
1372
- await mkdir(fakeBinDir, { recursive: true });
1373
- await writeManagedSessionState(stateDir, cwd, sessionId);
1374
- await writeJson(join(sessionStateDir, 'ralph-state.json'), {
1375
- active: true,
1376
- iteration: 0,
1377
- tmux_pane_id: '%99',
1378
- });
1379
- await writeJson(join(stateDir, 'ralph-state.json'), {
1380
- active: true,
1381
- iteration: 100,
1382
- tmux_pane_id: '%55',
1383
- });
1384
- await writeJson(configPath, {
1385
- enabled: true,
1386
- target: { type: 'session', value: 'nonexistent-session' },
1387
- allowed_modes: ['ralph'],
1388
- cooldown_ms: 0,
1389
- max_injections_per_session: 10,
1390
- prompt_template: 'Continue [RCS_TMUX_INJECT]',
1391
- marker: '[RCS_TMUX_INJECT]',
1392
- dry_run: false,
1393
- log_level: 'debug',
1394
- });
1395
- const fakeTmux = `#!/usr/bin/env bash
1396
- set -eu
1397
- cmd="$1"
1398
- shift || true
1399
- if [[ "$cmd" == "display-message" ]]; then
1400
- target=""
1401
- format=""
1402
- while (($#)); do
1403
- case "$1" in
1404
- -p) shift ;;
1405
- -t) target="$2"; shift 2 ;;
1406
- *) format="$1"; shift ;;
1407
- esac
1408
- done
1409
- if [[ "$format" == "#{pane_id}" && "$target" == "%99" ]]; then
1410
- echo "%99"
1411
- exit 0
1412
- fi
1413
- if [[ "$format" == "#{pane_current_path}" && "$target" == "%99" ]]; then
1414
- echo "${cwd}"
1415
- exit 0
1416
- fi
1417
- if [[ "$format" == "#S" && "$target" == "%99" ]]; then
1418
- echo "${managedSessionName}"
1419
- exit 0
1420
- fi
1421
- if [[ "$format" == "#{pane_current_command}" && "$target" == "%99" ]]; then
1422
- echo "codex"
1423
- exit 0
1424
- fi
1425
- if [[ "$format" == "#{pane_in_mode}" && "$target" == "%99" ]]; then
1426
- echo "0"
1427
- exit 0
1428
- fi
1429
- echo "bad display target: $target / $format" >&2
1430
- exit 1
1431
- fi
1432
- if [[ "$cmd" == "list-panes" ]]; then
1433
- echo "can't find session" >&2
1434
- exit 1
1435
- fi
1436
- if [[ "$cmd" == "send-keys" ]]; then
1437
- exit 0
1438
- fi
1439
- echo "unsupported cmd: $cmd" >&2
1440
- exit 1
1441
- `;
1442
- await writeFile(fakeTmuxPath, fakeTmux);
1443
- await chmod(fakeTmuxPath, 0o755);
1444
- const payload = {
1445
- cwd,
1446
- type: 'agent-turn-complete',
1447
- session_id: sessionId,
1448
- 'thread-id': 'thread-test-scoped-pane-precedence',
1449
- 'turn-id': 'turn-test-scoped-pane-precedence',
1450
- 'input-messages': ['no marker here'],
1451
- 'last-assistant-message': 'output',
1452
- };
1453
- const previousPath = process.env.PATH;
1454
- const previousTeamWorker = process.env.RCS_TEAM_WORKER;
1455
- try {
1456
- process.env.PATH = `${fakeBinDir}:${process.env.PATH || ''}`;
1457
- process.env.RCS_TEAM_WORKER = '';
1458
- delete process.env.TMUX_PANE;
1459
- await handleTmuxInjection({ payload, cwd, stateDir, logsDir });
1460
- }
1461
- finally {
1462
- if (typeof previousPath === 'string')
1463
- process.env.PATH = previousPath;
1464
- else
1465
- delete process.env.PATH;
1466
- if (typeof previousTeamWorker === 'string')
1467
- process.env.RCS_TEAM_WORKER = previousTeamWorker;
1468
- else
1469
- delete process.env.RCS_TEAM_WORKER;
1470
- }
1471
- const hookState = await readJson(hookStatePath);
1472
- assert.equal(hookState.last_reason, 'injection_sent');
1473
- assert.equal(hookState.total_injections, 1);
1474
- const healedConfig = await readJson(configPath);
1475
- assert.equal(healedConfig.target.type, 'pane');
1476
- assert.equal(healedConfig.target.value, '%99');
1477
- });
1478
- });
1479
- it('skips injection when the resolved pane is still busy', async () => {
1480
- await withTempWorkingDir(async (cwd) => {
1481
- const rcsDir = join(cwd, '.rcs');
1482
- const stateDir = join(rcsDir, 'state');
1483
- const logsDir = join(rcsDir, 'logs');
1484
- const sessionId = 'rcs-busy-pane';
1485
- const sessionStateDir = join(stateDir, 'sessions', sessionId);
1486
- const fakeBinDir = join(cwd, 'fake-bin');
1487
- const fakeTmuxPath = join(fakeBinDir, 'tmux');
1488
- const managedSessionName = buildTmuxSessionName(cwd, sessionId);
1489
- const configPath = join(rcsDir, 'tmux-hook.json');
1490
- const hookStatePath = join(stateDir, 'tmux-hook-state.json');
1491
- await mkdir(sessionStateDir, { recursive: true });
1492
- await mkdir(logsDir, { recursive: true });
1493
- await mkdir(fakeBinDir, { recursive: true });
1494
- await writeManagedSessionState(stateDir, cwd, sessionId);
1495
- await writeJson(join(sessionStateDir, 'ralph-state.json'), { active: true, iteration: 0, tmux_pane_id: '%42' });
1496
- await writeJson(configPath, {
1497
- enabled: true,
1498
- target: { type: 'pane', value: '%42' },
1499
- allowed_modes: ['ralph'],
1500
- cooldown_ms: 0,
1501
- max_injections_per_session: 10,
1502
- prompt_template: 'Continue [RCS_TMUX_INJECT]',
1503
- marker: '[RCS_TMUX_INJECT]',
1504
- dry_run: false,
1505
- log_level: 'debug',
1506
- });
1507
- const fakeTmux = `#!/usr/bin/env bash
1508
- set -eu
1509
- cmd="$1"
1510
- shift || true
1511
- if [[ "$cmd" == "display-message" ]]; then
1512
- target=""
1513
- format=""
1514
- while (($#)); do
1515
- case "$1" in
1516
- -p) shift ;;
1517
- -t) target="$2"; shift 2 ;;
1518
- *) format="$1"; shift ;;
1519
- esac
1520
- done
1521
- if [[ "$format" == "#{pane_id}" && "$target" == "%42" ]]; then
1522
- echo "%42"
1523
- exit 0
1524
- fi
1525
- if [[ "$format" == "#{pane_current_command}" && "$target" == "%42" ]]; then
1526
- echo "codex"
1527
- exit 0
1528
- fi
1529
- if [[ "$format" == "#S" && "$target" == "%42" ]]; then
1530
- echo "${managedSessionName}"
1531
- exit 0
1532
- fi
1533
- if [[ "$format" == "#{pane_in_mode}" && "$target" == "%42" ]]; then
1534
- echo "0"
1535
- exit 0
1536
- fi
1537
- echo "bad display target: $target / $format" >&2
1538
- exit 1
1539
- fi
1540
- if [[ "$cmd" == "capture-pane" ]]; then
1541
- cat <<'EOF'
1542
- Working...
1543
- • Running tests (3m 12s • esc to interrupt)
1544
- EOF
1545
- exit 0
1546
- fi
1547
- if [[ "$cmd" == "send-keys" ]]; then
1548
- echo "unexpected send-keys" >&2
1549
- exit 1
1550
- fi
1551
- echo "unsupported cmd: $cmd" >&2
1552
- exit 1
1553
- `;
1554
- await writeFile(fakeTmuxPath, fakeTmux);
1555
- await chmod(fakeTmuxPath, 0o755);
1556
- const payload = {
1557
- cwd,
1558
- type: 'agent-turn-complete',
1559
- session_id: sessionId,
1560
- 'thread-id': 'thread-test-busy-pane',
1561
- 'turn-id': 'turn-test-busy-pane',
1562
- 'input-messages': ['no marker here'],
1563
- 'last-assistant-message': 'output',
1564
- };
1565
- const previousPath = process.env.PATH;
1566
- const previousTeamWorker = process.env.RCS_TEAM_WORKER;
1567
- try {
1568
- process.env.PATH = `${fakeBinDir}:${process.env.PATH || ''}`;
1569
- process.env.RCS_TEAM_WORKER = '';
1570
- delete process.env.TMUX_PANE;
1571
- await handleTmuxInjection({ payload, cwd, stateDir, logsDir });
1572
- }
1573
- finally {
1574
- if (typeof previousPath === 'string')
1575
- process.env.PATH = previousPath;
1576
- else
1577
- delete process.env.PATH;
1578
- if (typeof previousTeamWorker === 'string')
1579
- process.env.RCS_TEAM_WORKER = previousTeamWorker;
1580
- else
1581
- delete process.env.RCS_TEAM_WORKER;
1582
- }
1583
- const hookState = await readJson(hookStatePath);
1584
- assert.equal(hookState.last_reason, 'pane_has_active_task');
1585
- assert.equal(hookState.total_injections ?? 0, 0);
1586
- });
1587
- });
1588
- });
1589
- //# sourceMappingURL=notify-hook-tmux-heal.test.js.map