oh-my-copilot 5.0.0 → 5.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1428) hide show
  1. package/.claude-plugin/marketplace.json +4 -4
  2. package/.claude-plugin/plugin.json +16 -1
  3. package/README.md +15 -4
  4. package/agents/debugger.md +9 -1
  5. package/agents/explore.md +3 -1
  6. package/bridge/__pycache__/gyoshu_bridge.cpython-312.pyc +0 -0
  7. package/bridge/claude-md-coordinator.cjs +2 -2
  8. package/bridge/cli.cjs +35962 -26371
  9. package/bridge/mcp-server.cjs +3025 -1333
  10. package/bridge/runtime-cli.cjs +20794 -16157
  11. package/bridge/team-bridge.cjs +2074 -587
  12. package/bridge/team-mcp.cjs +22008 -12937
  13. package/bridge/team.js +16235 -10694
  14. package/copilot/agents/analyst.md +120 -0
  15. package/copilot/agents/architect.md +129 -0
  16. package/copilot/agents/code-reviewer.md +242 -0
  17. package/copilot/agents/code-simplifier.md +92 -0
  18. package/copilot/agents/critic.md +280 -0
  19. package/copilot/agents/debugger.md +158 -0
  20. package/copilot/agents/designer.md +117 -0
  21. package/copilot/agents/devils-advocate.md +221 -0
  22. package/copilot/agents/document-specialist.md +77 -0
  23. package/copilot/agents/executor.md +121 -0
  24. package/copilot/agents/explore.md +120 -0
  25. package/copilot/agents/git-master.md +95 -0
  26. package/copilot/agents/planner.md +140 -0
  27. package/copilot/agents/qa-tester.md +101 -0
  28. package/copilot/agents/scientist.md +95 -0
  29. package/copilot/agents/security-reviewer.md +191 -0
  30. package/copilot/agents/test-engineer.md +126 -0
  31. package/copilot/agents/tracer.md +168 -0
  32. package/copilot/agents/verifier.md +114 -0
  33. package/copilot/agents/writer.md +91 -0
  34. package/copilot/hooks.json +381 -0
  35. package/dist/__tests__/auto-slash-aliases.test.js +2 -2
  36. package/dist/__tests__/auto-slash-aliases.test.js.map +1 -1
  37. package/dist/__tests__/auto-slash-live-data-security.test.js +4 -4
  38. package/dist/__tests__/auto-slash-live-data-security.test.js.map +1 -1
  39. package/dist/__tests__/auto-update.test.js +16 -16
  40. package/dist/__tests__/auto-update.test.js.map +1 -1
  41. package/dist/__tests__/bounded-git-timeout-parity.test.js +2 -0
  42. package/dist/__tests__/bounded-git-timeout-parity.test.js.map +1 -1
  43. package/dist/__tests__/cli-config-stop-callback.test.js +3 -3
  44. package/dist/__tests__/cli-config-stop-callback.test.js.map +1 -1
  45. package/dist/__tests__/cli-notify-profile.test.js +1 -1
  46. package/dist/__tests__/cli-notify-profile.test.js.map +1 -1
  47. package/dist/__tests__/config-dir.test.js +88 -36
  48. package/dist/__tests__/config-dir.test.js.map +1 -1
  49. package/dist/__tests__/config-worker-permissions.test.d.ts +2 -0
  50. package/dist/__tests__/config-worker-permissions.test.d.ts.map +1 -0
  51. package/dist/__tests__/config-worker-permissions.test.js +99 -0
  52. package/dist/__tests__/config-worker-permissions.test.js.map +1 -0
  53. package/dist/__tests__/consolidation-contracts.test.js +7 -1
  54. package/dist/__tests__/consolidation-contracts.test.js.map +1 -1
  55. package/dist/__tests__/context-bloat-2577.test.js.map +1 -1
  56. package/dist/__tests__/copilot-agents-manifest.test.d.ts +2 -0
  57. package/dist/__tests__/copilot-agents-manifest.test.d.ts.map +1 -0
  58. package/dist/__tests__/copilot-agents-manifest.test.js +162 -0
  59. package/dist/__tests__/copilot-agents-manifest.test.js.map +1 -0
  60. package/dist/__tests__/copilot-config-dir-alias.test.d.ts +2 -0
  61. package/dist/__tests__/copilot-config-dir-alias.test.d.ts.map +1 -0
  62. package/dist/__tests__/copilot-config-dir-alias.test.js +13 -0
  63. package/dist/__tests__/copilot-config-dir-alias.test.js.map +1 -0
  64. package/dist/__tests__/copilot-hook-adapter.test.d.ts +2 -0
  65. package/dist/__tests__/copilot-hook-adapter.test.d.ts.map +1 -0
  66. package/dist/__tests__/copilot-hook-adapter.test.js +385 -0
  67. package/dist/__tests__/copilot-hook-adapter.test.js.map +1 -0
  68. package/dist/__tests__/copilot-hooks-manifest.test.d.ts +2 -0
  69. package/dist/__tests__/copilot-hooks-manifest.test.d.ts.map +1 -0
  70. package/dist/__tests__/copilot-hooks-manifest.test.js +201 -0
  71. package/dist/__tests__/copilot-hooks-manifest.test.js.map +1 -0
  72. package/dist/__tests__/delegation-enforcement-levels.test.js +47 -16
  73. package/dist/__tests__/delegation-enforcement-levels.test.js.map +1 -1
  74. package/dist/__tests__/directory-context-injector-registration.test.d.ts +2 -0
  75. package/dist/__tests__/directory-context-injector-registration.test.d.ts.map +1 -0
  76. package/dist/__tests__/directory-context-injector-registration.test.js +79 -0
  77. package/dist/__tests__/directory-context-injector-registration.test.js.map +1 -0
  78. package/dist/__tests__/doctor-conflicts.test.js +71 -16
  79. package/dist/__tests__/doctor-conflicts.test.js.map +1 -1
  80. package/dist/__tests__/doctor-legacy-config-dir.test.d.ts +2 -0
  81. package/dist/__tests__/doctor-legacy-config-dir.test.d.ts.map +1 -0
  82. package/dist/__tests__/doctor-legacy-config-dir.test.js +45 -0
  83. package/dist/__tests__/doctor-legacy-config-dir.test.js.map +1 -0
  84. package/dist/__tests__/doctor-node-on-path.test.d.ts +2 -0
  85. package/dist/__tests__/doctor-node-on-path.test.d.ts.map +1 -0
  86. package/dist/__tests__/doctor-node-on-path.test.js +63 -0
  87. package/dist/__tests__/doctor-node-on-path.test.js.map +1 -0
  88. package/dist/__tests__/hook-command-normalizer.test.js +4 -4
  89. package/dist/__tests__/hook-command-normalizer.test.js.map +1 -1
  90. package/dist/__tests__/hooks-command-escaping.test.js +2 -2
  91. package/dist/__tests__/hooks-command-escaping.test.js.map +1 -1
  92. package/dist/__tests__/hooks.test.js +44 -0
  93. package/dist/__tests__/hooks.test.js.map +1 -1
  94. package/dist/__tests__/host-detection.test.js +28 -8
  95. package/dist/__tests__/host-detection.test.js.map +1 -1
  96. package/dist/__tests__/hud/cli-diagnostic.test.js +1 -0
  97. package/dist/__tests__/hud/cli-diagnostic.test.js.map +1 -1
  98. package/dist/__tests__/hud/labels.test.js +4 -4
  99. package/dist/__tests__/hud/labels.test.js.map +1 -1
  100. package/dist/__tests__/hud/model.test.js +22 -0
  101. package/dist/__tests__/hud/model.test.js.map +1 -1
  102. package/dist/__tests__/hud/update-hint.test.d.ts +2 -0
  103. package/dist/__tests__/hud/update-hint.test.d.ts.map +1 -0
  104. package/dist/__tests__/hud/update-hint.test.js +120 -0
  105. package/dist/__tests__/hud/update-hint.test.js.map +1 -0
  106. package/dist/__tests__/hud/usage-api-header-fallback.test.d.ts +2 -0
  107. package/dist/__tests__/hud/usage-api-header-fallback.test.d.ts.map +1 -0
  108. package/dist/__tests__/hud/usage-api-header-fallback.test.js +70 -0
  109. package/dist/__tests__/hud/usage-api-header-fallback.test.js.map +1 -0
  110. package/dist/__tests__/hud/usage-api-lock.test.js +6 -6
  111. package/dist/__tests__/hud/usage-api-lock.test.js.map +1 -1
  112. package/dist/__tests__/hud/usage-api-stale.test.js +6 -6
  113. package/dist/__tests__/hud/usage-api-stale.test.js.map +1 -1
  114. package/dist/__tests__/hud/usage-api.test.js +84 -6
  115. package/dist/__tests__/hud/usage-api.test.js.map +1 -1
  116. package/dist/__tests__/hud/watch-mode-init.test.js +171 -22
  117. package/dist/__tests__/hud/watch-mode-init.test.js.map +1 -1
  118. package/dist/__tests__/hud-cache-wrapper.test.js +453 -5
  119. package/dist/__tests__/hud-cache-wrapper.test.js.map +1 -1
  120. package/dist/__tests__/hud-marketplace-resolution.test.js +10 -10
  121. package/dist/__tests__/hud-marketplace-resolution.test.js.map +1 -1
  122. package/dist/__tests__/hud-windows.test.js +1 -1
  123. package/dist/__tests__/hud-windows.test.js.map +1 -1
  124. package/dist/__tests__/installer-hooks-merge.test.js +3 -3
  125. package/dist/__tests__/installer-hooks-merge.test.js.map +1 -1
  126. package/dist/__tests__/installer-hud-skip.test.js +8 -8
  127. package/dist/__tests__/installer-hud-skip.test.js.map +1 -1
  128. package/dist/__tests__/installer-mcp-config.test.js +2 -2
  129. package/dist/__tests__/installer-mcp-config.test.js.map +1 -1
  130. package/dist/__tests__/installer-omc-reference.test.js +4 -4
  131. package/dist/__tests__/installer-omc-reference.test.js.map +1 -1
  132. package/dist/__tests__/installer-plugin-agents.test.js +4 -4
  133. package/dist/__tests__/installer-plugin-agents.test.js.map +1 -1
  134. package/dist/__tests__/installer-version-guard.test.js +2 -2
  135. package/dist/__tests__/installer-version-guard.test.js.map +1 -1
  136. package/dist/__tests__/installer.test.js +8 -8
  137. package/dist/__tests__/installer.test.js.map +1 -1
  138. package/dist/__tests__/keyword-detector-echo-guard.test.js +2 -2
  139. package/dist/__tests__/keyword-detector-echo-guard.test.js.map +1 -1
  140. package/dist/__tests__/keyword-detector-script.test.js +50 -6
  141. package/dist/__tests__/keyword-detector-script.test.js.map +1 -1
  142. package/dist/__tests__/live-data.test.js +4 -0
  143. package/dist/__tests__/live-data.test.js.map +1 -1
  144. package/dist/__tests__/manual-compact-command.test.js +4 -4
  145. package/dist/__tests__/manual-compact-command.test.js.map +1 -1
  146. package/dist/__tests__/notepad.test.js +61 -0
  147. package/dist/__tests__/notepad.test.js.map +1 -1
  148. package/dist/__tests__/npm-package-bin-surface.test.js +3 -2
  149. package/dist/__tests__/npm-package-bin-surface.test.js.map +1 -1
  150. package/dist/__tests__/package-dir-resolution-regression.test.js +13 -6
  151. package/dist/__tests__/package-dir-resolution-regression.test.js.map +1 -1
  152. package/dist/__tests__/plugin-setup-deps.test.js +137 -50
  153. package/dist/__tests__/plugin-setup-deps.test.js.map +1 -1
  154. package/dist/__tests__/plugin-shipping-surface.test.js +61 -0
  155. package/dist/__tests__/plugin-shipping-surface.test.js.map +1 -1
  156. package/dist/__tests__/plugin-skill-budget.test.js +7 -1
  157. package/dist/__tests__/plugin-skill-budget.test.js.map +1 -1
  158. package/dist/__tests__/post-tool-rules-injector.test.js +42 -12
  159. package/dist/__tests__/post-tool-rules-injector.test.js.map +1 -1
  160. package/dist/__tests__/pre-tool-enforcer-jev-wiring.test.d.ts +2 -0
  161. package/dist/__tests__/pre-tool-enforcer-jev-wiring.test.d.ts.map +1 -0
  162. package/dist/__tests__/pre-tool-enforcer-jev-wiring.test.js +136 -0
  163. package/dist/__tests__/pre-tool-enforcer-jev-wiring.test.js.map +1 -0
  164. package/dist/__tests__/pre-tool-enforcer.test.js +180 -4
  165. package/dist/__tests__/pre-tool-enforcer.test.js.map +1 -1
  166. package/dist/__tests__/preemptive-compaction-hook.test.js +44 -7
  167. package/dist/__tests__/preemptive-compaction-hook.test.js.map +1 -1
  168. package/dist/__tests__/project-memory-posttool.test.d.ts +2 -0
  169. package/dist/__tests__/project-memory-posttool.test.d.ts.map +1 -0
  170. package/dist/__tests__/project-memory-posttool.test.js +84 -0
  171. package/dist/__tests__/project-memory-posttool.test.js.map +1 -0
  172. package/dist/__tests__/rate-limit-wait/daemon-bootstrap.test.js +2 -2
  173. package/dist/__tests__/rate-limit-wait/daemon-bootstrap.test.js.map +1 -1
  174. package/dist/__tests__/rate-limit-wait/integration.test.js +3 -3
  175. package/dist/__tests__/rate-limit-wait/integration.test.js.map +1 -1
  176. package/dist/__tests__/rate-limit-wait/pane-fresh-capture.test.js +0 -1
  177. package/dist/__tests__/rate-limit-wait/pane-fresh-capture.test.js.map +1 -1
  178. package/dist/__tests__/read-budget-preflight.test.d.ts +2 -0
  179. package/dist/__tests__/read-budget-preflight.test.d.ts.map +1 -0
  180. package/dist/__tests__/read-budget-preflight.test.js +142 -0
  181. package/dist/__tests__/read-budget-preflight.test.js.map +1 -0
  182. package/dist/__tests__/release-boundary.test.js +32 -2
  183. package/dist/__tests__/release-boundary.test.js.map +1 -1
  184. package/dist/__tests__/release-guidance.test.js +10 -0
  185. package/dist/__tests__/release-guidance.test.js.map +1 -1
  186. package/dist/__tests__/repair-plugin-cache-script.test.js +10 -9
  187. package/dist/__tests__/repair-plugin-cache-script.test.js.map +1 -1
  188. package/dist/__tests__/resolve-transcript-path.test.js +10 -10
  189. package/dist/__tests__/resolve-transcript-path.test.js.map +1 -1
  190. package/dist/__tests__/run-cjs-generic-timeout.test.js +146 -12
  191. package/dist/__tests__/run-cjs-generic-timeout.test.js.map +1 -1
  192. package/dist/__tests__/run-cjs-graceful-fallback.test.js +86 -14
  193. package/dist/__tests__/run-cjs-graceful-fallback.test.js.map +1 -1
  194. package/dist/__tests__/run-cjs-windows-stdio-contract.test.d.ts +2 -0
  195. package/dist/__tests__/run-cjs-windows-stdio-contract.test.d.ts.map +1 -0
  196. package/dist/__tests__/run-cjs-windows-stdio-contract.test.js +841 -0
  197. package/dist/__tests__/run-cjs-windows-stdio-contract.test.js.map +1 -0
  198. package/dist/__tests__/run-cjs-worker-skip-guard.test.d.ts +2 -0
  199. package/dist/__tests__/run-cjs-worker-skip-guard.test.d.ts.map +1 -0
  200. package/dist/__tests__/run-cjs-worker-skip-guard.test.js +75 -0
  201. package/dist/__tests__/run-cjs-worker-skip-guard.test.js.map +1 -0
  202. package/dist/__tests__/session-end-process-exit.test.js +82 -21
  203. package/dist/__tests__/session-end-process-exit.test.js.map +1 -1
  204. package/dist/__tests__/session-friction-report.test.js +2 -2
  205. package/dist/__tests__/session-friction-report.test.js.map +1 -1
  206. package/dist/__tests__/session-history-search.test.js +90 -7
  207. package/dist/__tests__/session-history-search.test.js.map +1 -1
  208. package/dist/__tests__/session-start-background-output.test.js +1 -1
  209. package/dist/__tests__/session-start-background-output.test.js.map +1 -1
  210. package/dist/__tests__/session-start-cache-cleanup.test.js +9 -9
  211. package/dist/__tests__/session-start-cache-cleanup.test.js.map +1 -1
  212. package/dist/__tests__/session-start-context-budget.test.d.ts +2 -0
  213. package/dist/__tests__/session-start-context-budget.test.d.ts.map +1 -0
  214. package/dist/__tests__/session-start-context-budget.test.js +84 -0
  215. package/dist/__tests__/session-start-context-budget.test.js.map +1 -0
  216. package/dist/__tests__/session-start-script-context.test.js +4 -4
  217. package/dist/__tests__/session-start-script-context.test.js.map +1 -1
  218. package/dist/__tests__/session-start-timeout-cleanup.test.js +11 -7
  219. package/dist/__tests__/session-start-timeout-cleanup.test.js.map +1 -1
  220. package/dist/__tests__/session-start-update-check.test.d.ts +2 -0
  221. package/dist/__tests__/session-start-update-check.test.d.ts.map +1 -0
  222. package/dist/__tests__/session-start-update-check.test.js +69 -0
  223. package/dist/__tests__/session-start-update-check.test.js.map +1 -0
  224. package/dist/__tests__/session-start-update-refresh.test.d.ts +2 -0
  225. package/dist/__tests__/session-start-update-refresh.test.d.ts.map +1 -0
  226. package/dist/__tests__/session-start-update-refresh.test.js +179 -0
  227. package/dist/__tests__/session-start-update-refresh.test.js.map +1 -0
  228. package/dist/__tests__/setup/clear-copilot-home.d.ts +2 -0
  229. package/dist/__tests__/setup/clear-copilot-home.d.ts.map +1 -0
  230. package/dist/__tests__/setup/clear-copilot-home.js +5 -0
  231. package/dist/__tests__/setup/clear-copilot-home.js.map +1 -0
  232. package/dist/__tests__/setup-claude-md-script.test.js +105 -21
  233. package/dist/__tests__/setup-claude-md-script.test.js.map +1 -1
  234. package/dist/__tests__/setup-contracts-regression.test.d.ts +2 -2
  235. package/dist/__tests__/setup-contracts-regression.test.js +49 -43
  236. package/dist/__tests__/setup-contracts-regression.test.js.map +1 -1
  237. package/dist/__tests__/setup-lifecycle-node.test.js +5 -5
  238. package/dist/__tests__/setup-lifecycle-node.test.js.map +1 -1
  239. package/dist/__tests__/setup-progress-script.test.js +3 -3
  240. package/dist/__tests__/setup-progress-script.test.js.map +1 -1
  241. package/dist/__tests__/shared-memory.test.js +8 -8
  242. package/dist/__tests__/shared-memory.test.js.map +1 -1
  243. package/dist/__tests__/shipyard-seed-locale.test.d.ts +2 -0
  244. package/dist/__tests__/shipyard-seed-locale.test.d.ts.map +1 -0
  245. package/dist/__tests__/shipyard-seed-locale.test.js +213 -0
  246. package/dist/__tests__/shipyard-seed-locale.test.js.map +1 -0
  247. package/dist/__tests__/shipyard-skills.test.d.ts +2 -0
  248. package/dist/__tests__/shipyard-skills.test.d.ts.map +1 -0
  249. package/dist/__tests__/shipyard-skills.test.js +797 -0
  250. package/dist/__tests__/shipyard-skills.test.js.map +1 -0
  251. package/dist/__tests__/skill-entitlements-cross-surface.test.js +4 -4
  252. package/dist/__tests__/skill-entitlements-cross-surface.test.js.map +1 -1
  253. package/dist/__tests__/skill-injector-script.test.js +3 -0
  254. package/dist/__tests__/skill-injector-script.test.js.map +1 -1
  255. package/dist/__tests__/skills-frontmatter-regression.test.js +65 -0
  256. package/dist/__tests__/skills-frontmatter-regression.test.js.map +1 -1
  257. package/dist/__tests__/skills.test.js +58 -20
  258. package/dist/__tests__/skills.test.js.map +1 -1
  259. package/dist/__tests__/smoke-pipeline-edge.test.js +1 -0
  260. package/dist/__tests__/smoke-pipeline-edge.test.js.map +1 -1
  261. package/dist/__tests__/state-root-resolution.test.js +78 -2
  262. package/dist/__tests__/state-root-resolution.test.js.map +1 -1
  263. package/dist/__tests__/team-server-validation.test.js +7 -3
  264. package/dist/__tests__/team-server-validation.test.js.map +1 -1
  265. package/dist/__tests__/tier0-contracts.test.js +0 -4
  266. package/dist/__tests__/tier0-contracts.test.js.map +1 -1
  267. package/dist/__tests__/tier0-docs-consistency.test.js +6 -2
  268. package/dist/__tests__/tier0-docs-consistency.test.js.map +1 -1
  269. package/dist/__tests__/trusted-publishing-contract.test.js +16 -11
  270. package/dist/__tests__/trusted-publishing-contract.test.js.map +1 -1
  271. package/dist/__tests__/update-check-path.test.js +4 -4
  272. package/dist/__tests__/update-check-path.test.js.map +1 -1
  273. package/dist/__tests__/user-skill-compat.test.js +4 -4
  274. package/dist/__tests__/user-skill-compat.test.js.map +1 -1
  275. package/dist/__tests__/windows-prompt-hook-runner.test.js +63 -9
  276. package/dist/__tests__/windows-prompt-hook-runner.test.js.map +1 -1
  277. package/dist/__tests__/workflow-profile-activation-script.test.js +13 -7
  278. package/dist/__tests__/workflow-profile-activation-script.test.js.map +1 -1
  279. package/dist/alias-retirement/__tests__/registry.test.js +16 -3
  280. package/dist/alias-retirement/__tests__/registry.test.js.map +1 -1
  281. package/dist/cli/__tests__/ask.test.js +2 -1
  282. package/dist/cli/__tests__/ask.test.js.map +1 -1
  283. package/dist/cli/__tests__/autoresearch-guided.test.js +34 -0
  284. package/dist/cli/__tests__/autoresearch-guided.test.js.map +1 -1
  285. package/dist/cli/__tests__/autoresearch-setup-session.test.js +21 -1
  286. package/dist/cli/__tests__/autoresearch-setup-session.test.js.map +1 -1
  287. package/dist/cli/__tests__/hud-watch.test.js +55 -2
  288. package/dist/cli/__tests__/hud-watch.test.js.map +1 -1
  289. package/dist/cli/__tests__/launch-secure-transport.test.d.ts +2 -0
  290. package/dist/cli/__tests__/launch-secure-transport.test.d.ts.map +1 -0
  291. package/dist/cli/__tests__/launch-secure-transport.test.js +58 -0
  292. package/dist/cli/__tests__/launch-secure-transport.test.js.map +1 -0
  293. package/dist/cli/__tests__/launch.test.js +767 -94
  294. package/dist/cli/__tests__/launch.test.js.map +1 -1
  295. package/dist/cli/__tests__/lookout-cli.test.d.ts +7 -0
  296. package/dist/cli/__tests__/lookout-cli.test.d.ts.map +1 -0
  297. package/dist/cli/__tests__/lookout-cli.test.js +118 -0
  298. package/dist/cli/__tests__/lookout-cli.test.js.map +1 -0
  299. package/dist/cli/__tests__/plugin-dir-capture.test.js +5 -4
  300. package/dist/cli/__tests__/plugin-dir-capture.test.js.map +1 -1
  301. package/dist/cli/__tests__/self-improve-paths.test.js +7 -4
  302. package/dist/cli/__tests__/self-improve-paths.test.js.map +1 -1
  303. package/dist/cli/__tests__/session-search.test.js +2 -2
  304. package/dist/cli/__tests__/session-search.test.js.map +1 -1
  305. package/dist/cli/__tests__/team-runtime-boundary.test.js +41 -0
  306. package/dist/cli/__tests__/team-runtime-boundary.test.js.map +1 -1
  307. package/dist/cli/__tests__/team-status-worktree.test.js +4 -0
  308. package/dist/cli/__tests__/team-status-worktree.test.js.map +1 -1
  309. package/dist/cli/__tests__/team.test.js +633 -186
  310. package/dist/cli/__tests__/team.test.js.map +1 -1
  311. package/dist/cli/__tests__/tmux-env-forward.integration.test.d.ts +3 -2
  312. package/dist/cli/__tests__/tmux-env-forward.integration.test.d.ts.map +1 -1
  313. package/dist/cli/__tests__/tmux-env-forward.integration.test.js +59 -17
  314. package/dist/cli/__tests__/tmux-env-forward.integration.test.js.map +1 -1
  315. package/dist/cli/__tests__/tmux-utils.test.js +140 -4
  316. package/dist/cli/__tests__/tmux-utils.test.js.map +1 -1
  317. package/dist/cli/autoresearch-guided.d.ts.map +1 -1
  318. package/dist/cli/autoresearch-guided.js +10 -4
  319. package/dist/cli/autoresearch-guided.js.map +1 -1
  320. package/dist/cli/autoresearch-setup-session.d.ts.map +1 -1
  321. package/dist/cli/autoresearch-setup-session.js +4 -2
  322. package/dist/cli/autoresearch-setup-session.js.map +1 -1
  323. package/dist/cli/checkpoint.d.ts +16 -0
  324. package/dist/cli/checkpoint.d.ts.map +1 -0
  325. package/dist/cli/checkpoint.js +79 -0
  326. package/dist/cli/checkpoint.js.map +1 -0
  327. package/dist/cli/commands/__tests__/doctor-team-routing.test.js +12 -0
  328. package/dist/cli/commands/__tests__/doctor-team-routing.test.js.map +1 -1
  329. package/dist/cli/commands/__tests__/team-role-shorthand.test.js +145 -1
  330. package/dist/cli/commands/__tests__/team-role-shorthand.test.js.map +1 -1
  331. package/dist/cli/commands/__tests__/team.test.js +98 -2
  332. package/dist/cli/commands/__tests__/team.test.js.map +1 -1
  333. package/dist/cli/commands/doctor-conflicts.d.ts +7 -0
  334. package/dist/cli/commands/doctor-conflicts.d.ts.map +1 -1
  335. package/dist/cli/commands/doctor-conflicts.js +86 -8
  336. package/dist/cli/commands/doctor-conflicts.js.map +1 -1
  337. package/dist/cli/commands/doctor-team-routing.d.ts.map +1 -1
  338. package/dist/cli/commands/doctor-team-routing.js +4 -3
  339. package/dist/cli/commands/doctor-team-routing.js.map +1 -1
  340. package/dist/cli/commands/team.d.ts +1 -1
  341. package/dist/cli/commands/team.d.ts.map +1 -1
  342. package/dist/cli/commands/team.js +201 -89
  343. package/dist/cli/commands/team.js.map +1 -1
  344. package/dist/cli/graph.d.ts.map +1 -1
  345. package/dist/cli/graph.js +127 -3
  346. package/dist/cli/graph.js.map +1 -1
  347. package/dist/cli/hud-watch.d.ts +3 -0
  348. package/dist/cli/hud-watch.d.ts.map +1 -1
  349. package/dist/cli/hud-watch.js +14 -0
  350. package/dist/cli/hud-watch.js.map +1 -1
  351. package/dist/cli/index.d.ts.map +1 -1
  352. package/dist/cli/index.js +25 -7
  353. package/dist/cli/index.js.map +1 -1
  354. package/dist/cli/interop.d.ts.map +1 -1
  355. package/dist/cli/interop.js +3 -1
  356. package/dist/cli/interop.js.map +1 -1
  357. package/dist/cli/launch.d.ts +53 -6
  358. package/dist/cli/launch.d.ts.map +1 -1
  359. package/dist/cli/launch.js +446 -97
  360. package/dist/cli/launch.js.map +1 -1
  361. package/dist/cli/lookout.d.ts +19 -0
  362. package/dist/cli/lookout.d.ts.map +1 -0
  363. package/dist/cli/lookout.js +111 -0
  364. package/dist/cli/lookout.js.map +1 -0
  365. package/dist/cli/team.d.ts +2 -0
  366. package/dist/cli/team.d.ts.map +1 -1
  367. package/dist/cli/team.js +469 -177
  368. package/dist/cli/team.js.map +1 -1
  369. package/dist/cli/tmux-utils.d.ts +4 -2
  370. package/dist/cli/tmux-utils.d.ts.map +1 -1
  371. package/dist/cli/tmux-utils.js +55 -8
  372. package/dist/cli/tmux-utils.js.map +1 -1
  373. package/dist/config/__tests__/loader.test.js +39 -1
  374. package/dist/config/__tests__/loader.test.js.map +1 -1
  375. package/dist/config/loader.d.ts +6 -0
  376. package/dist/config/loader.d.ts.map +1 -1
  377. package/dist/config/loader.js +75 -15
  378. package/dist/config/loader.js.map +1 -1
  379. package/dist/features/__tests__/checkpoint.test.d.ts +6 -0
  380. package/dist/features/__tests__/checkpoint.test.d.ts.map +1 -0
  381. package/dist/features/__tests__/checkpoint.test.js +113 -0
  382. package/dist/features/__tests__/checkpoint.test.js.map +1 -0
  383. package/dist/features/__tests__/jev-model-routing.test.d.ts +10 -0
  384. package/dist/features/__tests__/jev-model-routing.test.d.ts.map +1 -0
  385. package/dist/features/__tests__/jev-model-routing.test.js +170 -0
  386. package/dist/features/__tests__/jev-model-routing.test.js.map +1 -0
  387. package/dist/features/__tests__/jev-slop-warning.test.d.ts +2 -0
  388. package/dist/features/__tests__/jev-slop-warning.test.d.ts.map +1 -0
  389. package/dist/features/__tests__/jev-slop-warning.test.js +150 -0
  390. package/dist/features/__tests__/jev-slop-warning.test.js.map +1 -0
  391. package/dist/features/auto-update.d.ts +3 -1
  392. package/dist/features/auto-update.d.ts.map +1 -1
  393. package/dist/features/auto-update.js +9 -7
  394. package/dist/features/auto-update.js.map +1 -1
  395. package/dist/features/builtin-skills/skills.js +1 -1
  396. package/dist/features/builtin-skills/skills.js.map +1 -1
  397. package/dist/features/checkpoint/index.d.ts +50 -0
  398. package/dist/features/checkpoint/index.d.ts.map +1 -0
  399. package/dist/features/checkpoint/index.js +170 -0
  400. package/dist/features/checkpoint/index.js.map +1 -0
  401. package/dist/features/delegation-enforcer.d.ts.map +1 -1
  402. package/dist/features/delegation-enforcer.js +5 -0
  403. package/dist/features/delegation-enforcer.js.map +1 -1
  404. package/dist/features/index.d.ts +2 -1
  405. package/dist/features/index.d.ts.map +1 -1
  406. package/dist/features/index.js +4 -1
  407. package/dist/features/index.js.map +1 -1
  408. package/dist/features/jev-model-routing.d.ts +28 -0
  409. package/dist/features/jev-model-routing.d.ts.map +1 -0
  410. package/dist/features/jev-model-routing.js +37 -0
  411. package/dist/features/jev-model-routing.js.map +1 -0
  412. package/dist/features/jev-slop-warning.d.ts +32 -0
  413. package/dist/features/jev-slop-warning.d.ts.map +1 -0
  414. package/dist/features/jev-slop-warning.js +33 -0
  415. package/dist/features/jev-slop-warning.js.map +1 -0
  416. package/dist/features/lookout/__tests__/lookout-workspace.test.d.ts +3 -0
  417. package/dist/features/lookout/__tests__/lookout-workspace.test.d.ts.map +1 -0
  418. package/dist/features/lookout/__tests__/lookout-workspace.test.js +203 -0
  419. package/dist/features/lookout/__tests__/lookout-workspace.test.js.map +1 -0
  420. package/dist/features/lookout/__tests__/lookout.test.d.ts +11 -0
  421. package/dist/features/lookout/__tests__/lookout.test.d.ts.map +1 -0
  422. package/dist/features/lookout/__tests__/lookout.test.js +769 -0
  423. package/dist/features/lookout/__tests__/lookout.test.js.map +1 -0
  424. package/dist/features/lookout/command-parser.d.ts +20 -0
  425. package/dist/features/lookout/command-parser.d.ts.map +1 -0
  426. package/dist/features/lookout/command-parser.js +815 -0
  427. package/dist/features/lookout/command-parser.js.map +1 -0
  428. package/dist/features/lookout/index.d.ts +54 -0
  429. package/dist/features/lookout/index.d.ts.map +1 -0
  430. package/dist/features/lookout/index.js +566 -0
  431. package/dist/features/lookout/index.js.map +1 -0
  432. package/dist/features/lookout/substitution-parser.d.ts +11 -0
  433. package/dist/features/lookout/substitution-parser.d.ts.map +1 -0
  434. package/dist/features/lookout/substitution-parser.js +157 -0
  435. package/dist/features/lookout/substitution-parser.js.map +1 -0
  436. package/dist/features/lookout/test-artifact-parser.d.ts +7 -0
  437. package/dist/features/lookout/test-artifact-parser.d.ts.map +1 -0
  438. package/dist/features/lookout/test-artifact-parser.js +106 -0
  439. package/dist/features/lookout/test-artifact-parser.js.map +1 -0
  440. package/dist/features/lookout/types.d.ts +33 -0
  441. package/dist/features/lookout/types.d.ts.map +1 -0
  442. package/dist/features/lookout/types.js +10 -0
  443. package/dist/features/lookout/types.js.map +1 -0
  444. package/dist/features/lookout/workspace.d.ts +7 -0
  445. package/dist/features/lookout/workspace.d.ts.map +1 -0
  446. package/dist/features/lookout/workspace.js +140 -0
  447. package/dist/features/lookout/workspace.js.map +1 -0
  448. package/dist/features/lookout/wrapper-parser.d.ts +4 -0
  449. package/dist/features/lookout/wrapper-parser.d.ts.map +1 -0
  450. package/dist/features/lookout/wrapper-parser.js +15 -0
  451. package/dist/features/lookout/wrapper-parser.js.map +1 -0
  452. package/dist/features/notepad-wisdom/__tests__/extractor.test.d.ts +2 -0
  453. package/dist/features/notepad-wisdom/__tests__/extractor.test.d.ts.map +1 -0
  454. package/dist/features/notepad-wisdom/__tests__/extractor.test.js +17 -0
  455. package/dist/features/notepad-wisdom/__tests__/extractor.test.js.map +1 -0
  456. package/dist/features/notepad-wisdom/extractor.js +1 -1
  457. package/dist/features/notepad-wisdom/extractor.js.map +1 -1
  458. package/dist/features/rate-limit-wait/daemon.js +1 -1
  459. package/dist/features/rate-limit-wait/daemon.js.map +1 -1
  460. package/dist/features/session-history-search/index.d.ts +8 -2
  461. package/dist/features/session-history-search/index.d.ts.map +1 -1
  462. package/dist/features/session-history-search/index.js +86 -25
  463. package/dist/features/session-history-search/index.js.map +1 -1
  464. package/dist/graph/__tests__/runtime/cli.test.js +7 -8
  465. package/dist/graph/__tests__/runtime/cli.test.js.map +1 -1
  466. package/dist/graph/__tests__/runtime/e2e-crash-recovery.test.js +3 -3
  467. package/dist/graph/__tests__/runtime/e2e-crash-recovery.test.js.map +1 -1
  468. package/dist/graph/__tests__/runtime/fence.test.js +4 -4
  469. package/dist/graph/__tests__/runtime/fence.test.js.map +1 -1
  470. package/dist/graph/__tests__/runtime/journal-epoch.test.js +2 -2
  471. package/dist/graph/__tests__/runtime/journal-epoch.test.js.map +1 -1
  472. package/dist/graph/__tests__/runtime/journal.test.js +2 -2
  473. package/dist/graph/__tests__/runtime/journal.test.js.map +1 -1
  474. package/dist/graph/__tests__/runtime/native-contained-fs.test.d.ts +2 -0
  475. package/dist/graph/__tests__/runtime/native-contained-fs.test.d.ts.map +1 -0
  476. package/dist/graph/__tests__/runtime/native-contained-fs.test.js +117 -0
  477. package/dist/graph/__tests__/runtime/native-contained-fs.test.js.map +1 -0
  478. package/dist/graph/__tests__/runtime/regression-matrix.test.js +2 -2
  479. package/dist/graph/__tests__/runtime/regression-matrix.test.js.map +1 -1
  480. package/dist/graph/__tests__/runtime/remote-approval.test.d.ts +6 -0
  481. package/dist/graph/__tests__/runtime/remote-approval.test.d.ts.map +1 -0
  482. package/dist/graph/__tests__/runtime/remote-approval.test.js +298 -0
  483. package/dist/graph/__tests__/runtime/remote-approval.test.js.map +1 -0
  484. package/dist/graph/__tests__/runtime/run-dir.test.js +13 -7
  485. package/dist/graph/__tests__/runtime/run-dir.test.js.map +1 -1
  486. package/dist/graph/__tests__/runtime/runner.test.js +2 -2
  487. package/dist/graph/__tests__/runtime/runner.test.js.map +1 -1
  488. package/dist/graph/__tests__/runtime/safe-fs.test.js +156 -29
  489. package/dist/graph/__tests__/runtime/safe-fs.test.js.map +1 -1
  490. package/dist/graph/__tests__/runtime/store.test.js +2 -2
  491. package/dist/graph/__tests__/runtime/store.test.js.map +1 -1
  492. package/dist/graph/runtime/contained-fd.d.ts +28 -0
  493. package/dist/graph/runtime/contained-fd.d.ts.map +1 -0
  494. package/dist/graph/runtime/contained-fd.js +72 -0
  495. package/dist/graph/runtime/contained-fd.js.map +1 -0
  496. package/dist/graph/runtime/executors/command.d.ts.map +1 -1
  497. package/dist/graph/runtime/executors/command.js +1 -2
  498. package/dist/graph/runtime/executors/command.js.map +1 -1
  499. package/dist/graph/runtime/fence.d.ts +0 -1
  500. package/dist/graph/runtime/fence.d.ts.map +1 -1
  501. package/dist/graph/runtime/fence.js +59 -64
  502. package/dist/graph/runtime/fence.js.map +1 -1
  503. package/dist/graph/runtime/journal.d.ts.map +1 -1
  504. package/dist/graph/runtime/journal.js +4 -3
  505. package/dist/graph/runtime/journal.js.map +1 -1
  506. package/dist/graph/runtime/native-contained-fs.d.ts +26 -0
  507. package/dist/graph/runtime/native-contained-fs.d.ts.map +1 -0
  508. package/dist/graph/runtime/native-contained-fs.js +32 -0
  509. package/dist/graph/runtime/native-contained-fs.js.map +1 -0
  510. package/dist/graph/runtime/remote-approval.d.ts +97 -0
  511. package/dist/graph/runtime/remote-approval.d.ts.map +1 -0
  512. package/dist/graph/runtime/remote-approval.js +271 -0
  513. package/dist/graph/runtime/remote-approval.js.map +1 -0
  514. package/dist/graph/runtime/run-dir.d.ts +13 -1
  515. package/dist/graph/runtime/run-dir.d.ts.map +1 -1
  516. package/dist/graph/runtime/run-dir.js +41 -15
  517. package/dist/graph/runtime/run-dir.js.map +1 -1
  518. package/dist/graph/runtime/runner.js +3 -3
  519. package/dist/graph/runtime/runner.js.map +1 -1
  520. package/dist/graph/runtime/safe-fs.d.ts +31 -1
  521. package/dist/graph/runtime/safe-fs.d.ts.map +1 -1
  522. package/dist/graph/runtime/safe-fs.js +173 -9
  523. package/dist/graph/runtime/safe-fs.js.map +1 -1
  524. package/dist/graph/runtime/store.js +3 -3
  525. package/dist/graph/runtime/store.js.map +1 -1
  526. package/dist/graph/schema.d.ts +36 -36
  527. package/dist/hooks/__tests__/background-process-guard.test.js +1 -1
  528. package/dist/hooks/__tests__/background-process-guard.test.js.map +1 -1
  529. package/dist/hooks/__tests__/pre-tool-use-template-source-ext.test.js +494 -11
  530. package/dist/hooks/__tests__/pre-tool-use-template-source-ext.test.js.map +1 -1
  531. package/dist/hooks/__tests__/workflow-drift-guard-script.test.js +1 -1
  532. package/dist/hooks/__tests__/workflow-drift-guard-script.test.js.map +1 -1
  533. package/dist/hooks/auto-slash-command/executor.js +4 -4
  534. package/dist/hooks/auto-slash-command/executor.js.map +1 -1
  535. package/dist/hooks/autopilot/__tests__/cancel.test.js +23 -3
  536. package/dist/hooks/autopilot/__tests__/cancel.test.js.map +1 -1
  537. package/dist/hooks/autopilot/__tests__/pipeline.test.js +14 -0
  538. package/dist/hooks/autopilot/__tests__/pipeline.test.js.map +1 -1
  539. package/dist/hooks/autopilot/__tests__/workflow-integrity.test.js +3 -3
  540. package/dist/hooks/autopilot/__tests__/workflow-integrity.test.js.map +1 -1
  541. package/dist/hooks/autopilot/adapters/execution-adapter.js +1 -1
  542. package/dist/hooks/autopilot/adapters/execution-adapter.js.map +1 -1
  543. package/dist/hooks/autopilot/cancel.js +1 -1
  544. package/dist/hooks/autopilot/cancel.js.map +1 -1
  545. package/dist/hooks/autopilot/named-workflow-resume-validator.d.ts +1 -1
  546. package/dist/hooks/autopilot/named-workflow-resume-validator.js +1 -1
  547. package/dist/hooks/autopilot/pipeline-types.d.ts +1 -1
  548. package/dist/hooks/autopilot/pipeline-types.d.ts.map +1 -1
  549. package/dist/hooks/autopilot/pipeline-types.js.map +1 -1
  550. package/dist/hooks/bridge.d.ts.map +1 -1
  551. package/dist/hooks/bridge.js +28 -5
  552. package/dist/hooks/bridge.js.map +1 -1
  553. package/dist/hooks/code-simplifier/__tests__/jev-trigger-shadow.test.d.ts +2 -0
  554. package/dist/hooks/code-simplifier/__tests__/jev-trigger-shadow.test.d.ts.map +1 -0
  555. package/dist/hooks/code-simplifier/__tests__/jev-trigger-shadow.test.js +181 -0
  556. package/dist/hooks/code-simplifier/__tests__/jev-trigger-shadow.test.js.map +1 -0
  557. package/dist/hooks/code-simplifier/index.d.ts.map +1 -1
  558. package/dist/hooks/code-simplifier/index.js +10 -0
  559. package/dist/hooks/code-simplifier/index.js.map +1 -1
  560. package/dist/hooks/code-simplifier/jev-shadow.d.ts +38 -0
  561. package/dist/hooks/code-simplifier/jev-shadow.d.ts.map +1 -0
  562. package/dist/hooks/code-simplifier/jev-shadow.js +45 -0
  563. package/dist/hooks/code-simplifier/jev-shadow.js.map +1 -0
  564. package/dist/hooks/factcheck/__tests__/config-tokens.test.d.ts +2 -0
  565. package/dist/hooks/factcheck/__tests__/config-tokens.test.d.ts.map +1 -0
  566. package/dist/hooks/factcheck/__tests__/config-tokens.test.js +13 -0
  567. package/dist/hooks/factcheck/__tests__/config-tokens.test.js.map +1 -0
  568. package/dist/hooks/factcheck/config.d.ts +3 -2
  569. package/dist/hooks/factcheck/config.d.ts.map +1 -1
  570. package/dist/hooks/factcheck/config.js +5 -4
  571. package/dist/hooks/factcheck/config.js.map +1 -1
  572. package/dist/hooks/jev/__tests__/client.test.d.ts +2 -0
  573. package/dist/hooks/jev/__tests__/client.test.d.ts.map +1 -0
  574. package/dist/hooks/jev/__tests__/client.test.js +114 -0
  575. package/dist/hooks/jev/__tests__/client.test.js.map +1 -0
  576. package/dist/hooks/jev/__tests__/points-wire-shape.test.d.ts +2 -0
  577. package/dist/hooks/jev/__tests__/points-wire-shape.test.d.ts.map +1 -0
  578. package/dist/hooks/jev/__tests__/points-wire-shape.test.js +72 -0
  579. package/dist/hooks/jev/__tests__/points-wire-shape.test.js.map +1 -0
  580. package/dist/hooks/jev/__tests__/resolver.test.d.ts +2 -0
  581. package/dist/hooks/jev/__tests__/resolver.test.d.ts.map +1 -0
  582. package/dist/hooks/jev/__tests__/resolver.test.js +340 -0
  583. package/dist/hooks/jev/__tests__/resolver.test.js.map +1 -0
  584. package/dist/hooks/jev/client.d.ts +39 -0
  585. package/dist/hooks/jev/client.d.ts.map +1 -0
  586. package/dist/hooks/jev/client.js +91 -0
  587. package/dist/hooks/jev/client.js.map +1 -0
  588. package/dist/hooks/jev/config.d.ts +66 -0
  589. package/dist/hooks/jev/config.d.ts.map +1 -0
  590. package/dist/hooks/jev/config.js +124 -0
  591. package/dist/hooks/jev/config.js.map +1 -0
  592. package/dist/hooks/jev/index.d.ts +12 -0
  593. package/dist/hooks/jev/index.d.ts.map +1 -0
  594. package/dist/hooks/jev/index.js +12 -0
  595. package/dist/hooks/jev/index.js.map +1 -0
  596. package/dist/hooks/jev/points.d.ts +55 -0
  597. package/dist/hooks/jev/points.d.ts.map +1 -0
  598. package/dist/hooks/jev/points.js +230 -0
  599. package/dist/hooks/jev/points.js.map +1 -0
  600. package/dist/hooks/jev/resolver.d.ts +47 -0
  601. package/dist/hooks/jev/resolver.d.ts.map +1 -0
  602. package/dist/hooks/jev/resolver.js +162 -0
  603. package/dist/hooks/jev/resolver.js.map +1 -0
  604. package/dist/hooks/jev/types.d.ts +58 -0
  605. package/dist/hooks/jev/types.d.ts.map +1 -0
  606. package/dist/hooks/jev/types.js +8 -0
  607. package/dist/hooks/jev/types.js.map +1 -0
  608. package/dist/hooks/keyword-detector/__tests__/jev-shadow.test.d.ts +2 -0
  609. package/dist/hooks/keyword-detector/__tests__/jev-shadow.test.d.ts.map +1 -0
  610. package/dist/hooks/keyword-detector/__tests__/jev-shadow.test.js +131 -0
  611. package/dist/hooks/keyword-detector/__tests__/jev-shadow.test.js.map +1 -0
  612. package/dist/hooks/keyword-detector/index.d.ts +6 -0
  613. package/dist/hooks/keyword-detector/index.d.ts.map +1 -1
  614. package/dist/hooks/keyword-detector/index.js +4 -2
  615. package/dist/hooks/keyword-detector/index.js.map +1 -1
  616. package/dist/hooks/keyword-detector/jev-shadow.d.ts +27 -0
  617. package/dist/hooks/keyword-detector/jev-shadow.d.ts.map +1 -0
  618. package/dist/hooks/keyword-detector/jev-shadow.js +47 -0
  619. package/dist/hooks/keyword-detector/jev-shadow.js.map +1 -0
  620. package/dist/hooks/learner/__tests__/jev-extraction-shadow.test.d.ts +2 -0
  621. package/dist/hooks/learner/__tests__/jev-extraction-shadow.test.d.ts.map +1 -0
  622. package/dist/hooks/learner/__tests__/jev-extraction-shadow.test.js +150 -0
  623. package/dist/hooks/learner/__tests__/jev-extraction-shadow.test.js.map +1 -0
  624. package/dist/hooks/learner/detection-hook.d.ts.map +1 -1
  625. package/dist/hooks/learner/detection-hook.js +5 -0
  626. package/dist/hooks/learner/detection-hook.js.map +1 -1
  627. package/dist/hooks/learner/jev-shadow.d.ts +22 -0
  628. package/dist/hooks/learner/jev-shadow.d.ts.map +1 -0
  629. package/dist/hooks/learner/jev-shadow.js +32 -0
  630. package/dist/hooks/learner/jev-shadow.js.map +1 -0
  631. package/dist/hooks/mode-registry/__tests__/session-isolation.test.js +4 -2
  632. package/dist/hooks/mode-registry/__tests__/session-isolation.test.js.map +1 -1
  633. package/dist/hooks/mode-registry/index.js +8 -8
  634. package/dist/hooks/mode-registry/index.js.map +1 -1
  635. package/dist/hooks/notepad/index.d.ts.map +1 -1
  636. package/dist/hooks/notepad/index.js +9 -2
  637. package/dist/hooks/notepad/index.js.map +1 -1
  638. package/dist/hooks/omc-orchestrator/constants.d.ts +1 -1
  639. package/dist/hooks/omc-orchestrator/constants.d.ts.map +1 -1
  640. package/dist/hooks/omc-orchestrator/constants.js +1 -1
  641. package/dist/hooks/omc-orchestrator/index.d.ts +1 -0
  642. package/dist/hooks/omc-orchestrator/index.d.ts.map +1 -1
  643. package/dist/hooks/omc-orchestrator/index.js +133 -15
  644. package/dist/hooks/omc-orchestrator/index.js.map +1 -1
  645. package/dist/hooks/permission-handler/__tests__/index.test.js +83 -1
  646. package/dist/hooks/permission-handler/__tests__/index.test.js.map +1 -1
  647. package/dist/hooks/permission-handler/index.d.ts.map +1 -1
  648. package/dist/hooks/permission-handler/index.js +47 -22
  649. package/dist/hooks/permission-handler/index.js.map +1 -1
  650. package/dist/hooks/persistent-mode/__tests__/cancel-race.test.js +29 -1
  651. package/dist/hooks/persistent-mode/__tests__/cancel-race.test.js.map +1 -1
  652. package/dist/hooks/persistent-mode/__tests__/jev-loop-continuation-shadow.test.d.ts +2 -0
  653. package/dist/hooks/persistent-mode/__tests__/jev-loop-continuation-shadow.test.d.ts.map +1 -0
  654. package/dist/hooks/persistent-mode/__tests__/jev-loop-continuation-shadow.test.js +131 -0
  655. package/dist/hooks/persistent-mode/__tests__/jev-loop-continuation-shadow.test.js.map +1 -0
  656. package/dist/hooks/persistent-mode/__tests__/ralph-verification-flow.test.js +4 -4
  657. package/dist/hooks/persistent-mode/__tests__/ralph-verification-flow.test.js.map +1 -1
  658. package/dist/hooks/persistent-mode/__tests__/tool-error.test.js +4 -2
  659. package/dist/hooks/persistent-mode/__tests__/tool-error.test.js.map +1 -1
  660. package/dist/hooks/persistent-mode/__tests__/ultragoal-persistence.test.js +2 -2
  661. package/dist/hooks/persistent-mode/__tests__/ultragoal-persistence.test.js.map +1 -1
  662. package/dist/hooks/persistent-mode/index.d.ts.map +1 -1
  663. package/dist/hooks/persistent-mode/index.js +35 -2
  664. package/dist/hooks/persistent-mode/index.js.map +1 -1
  665. package/dist/hooks/persistent-mode/jev-shadow.d.ts +33 -0
  666. package/dist/hooks/persistent-mode/jev-shadow.d.ts.map +1 -0
  667. package/dist/hooks/persistent-mode/jev-shadow.js +63 -0
  668. package/dist/hooks/persistent-mode/jev-shadow.js.map +1 -0
  669. package/dist/hooks/persistent-mode/session-isolation.test.js +2 -1
  670. package/dist/hooks/persistent-mode/session-isolation.test.js.map +1 -1
  671. package/dist/hooks/pre-compact/restore.d.ts.map +1 -1
  672. package/dist/hooks/pre-compact/restore.js.map +1 -1
  673. package/dist/hooks/preemptive-compaction/__tests__/jev-shadow.test.d.ts +2 -0
  674. package/dist/hooks/preemptive-compaction/__tests__/jev-shadow.test.d.ts.map +1 -0
  675. package/dist/hooks/preemptive-compaction/__tests__/jev-shadow.test.js +179 -0
  676. package/dist/hooks/preemptive-compaction/__tests__/jev-shadow.test.js.map +1 -0
  677. package/dist/hooks/preemptive-compaction/index.d.ts.map +1 -1
  678. package/dist/hooks/preemptive-compaction/index.js +26 -0
  679. package/dist/hooks/preemptive-compaction/index.js.map +1 -1
  680. package/dist/hooks/preemptive-compaction/jev-shadow.d.ts +42 -0
  681. package/dist/hooks/preemptive-compaction/jev-shadow.d.ts.map +1 -0
  682. package/dist/hooks/preemptive-compaction/jev-shadow.js +39 -0
  683. package/dist/hooks/preemptive-compaction/jev-shadow.js.map +1 -0
  684. package/dist/hooks/preemptive-compaction/types.d.ts +2 -0
  685. package/dist/hooks/preemptive-compaction/types.d.ts.map +1 -1
  686. package/dist/hooks/ralph/__tests__/jev-verdict-shadow.test.d.ts +2 -0
  687. package/dist/hooks/ralph/__tests__/jev-verdict-shadow.test.d.ts.map +1 -0
  688. package/dist/hooks/ralph/__tests__/jev-verdict-shadow.test.js +144 -0
  689. package/dist/hooks/ralph/__tests__/jev-verdict-shadow.test.js.map +1 -0
  690. package/dist/hooks/ralph/jev-shadow.d.ts +35 -0
  691. package/dist/hooks/ralph/jev-shadow.d.ts.map +1 -0
  692. package/dist/hooks/ralph/jev-shadow.js +37 -0
  693. package/dist/hooks/ralph/jev-shadow.js.map +1 -0
  694. package/dist/hooks/ralph/loop.d.ts.map +1 -1
  695. package/dist/hooks/ralph/loop.js.map +1 -1
  696. package/dist/hooks/rules-injector/finder.d.ts +2 -2
  697. package/dist/hooks/rules-injector/finder.js +2 -2
  698. package/dist/hooks/rules-injector/finder.test.d.ts +1 -1
  699. package/dist/hooks/rules-injector/finder.test.js +6 -6
  700. package/dist/hooks/rules-injector/finder.test.js.map +1 -1
  701. package/dist/hooks/rules-injector/index.d.ts +1 -1
  702. package/dist/hooks/rules-injector/index.js +1 -1
  703. package/dist/hooks/self-improve/__tests__/session-isolation.test.js +4 -4
  704. package/dist/hooks/self-improve/__tests__/session-isolation.test.js.map +1 -1
  705. package/dist/hooks/session-end/__tests__/action-runner.test.js +1 -1
  706. package/dist/hooks/session-end/__tests__/action-runner.test.js.map +1 -1
  707. package/dist/hooks/session-end/__tests__/cleanup-manifest.test.js +44 -3
  708. package/dist/hooks/session-end/__tests__/cleanup-manifest.test.js.map +1 -1
  709. package/dist/hooks/session-end/__tests__/duplicate-notifications.test.js +4 -0
  710. package/dist/hooks/session-end/__tests__/duplicate-notifications.test.js.map +1 -1
  711. package/dist/hooks/session-end/__tests__/openclaw-session-end.test.js +1 -0
  712. package/dist/hooks/session-end/__tests__/openclaw-session-end.test.js.map +1 -1
  713. package/dist/hooks/session-end/__tests__/session-end-bridge-cleanup.test.js +2 -0
  714. package/dist/hooks/session-end/__tests__/session-end-bridge-cleanup.test.js.map +1 -1
  715. package/dist/hooks/session-end/__tests__/session-end-timeout.test.js +13 -3
  716. package/dist/hooks/session-end/__tests__/session-end-timeout.test.js.map +1 -1
  717. package/dist/hooks/session-end/__tests__/team-cleanup.test.js +186 -33
  718. package/dist/hooks/session-end/__tests__/team-cleanup.test.js.map +1 -1
  719. package/dist/hooks/session-end/__tests__/worker.test.js +9 -0
  720. package/dist/hooks/session-end/__tests__/worker.test.js.map +1 -1
  721. package/dist/hooks/session-end/action-runner.js +9 -3
  722. package/dist/hooks/session-end/action-runner.js.map +1 -1
  723. package/dist/hooks/session-end/cleanup-manifest.d.ts +23 -1
  724. package/dist/hooks/session-end/cleanup-manifest.d.ts.map +1 -1
  725. package/dist/hooks/session-end/cleanup-manifest.js +21 -4
  726. package/dist/hooks/session-end/cleanup-manifest.js.map +1 -1
  727. package/dist/hooks/session-end/foreground-bootstrap.d.ts +22 -0
  728. package/dist/hooks/session-end/foreground-bootstrap.d.ts.map +1 -0
  729. package/dist/hooks/session-end/foreground-bootstrap.js +23 -0
  730. package/dist/hooks/session-end/foreground-bootstrap.js.map +1 -0
  731. package/dist/hooks/session-end/index.d.ts +2 -0
  732. package/dist/hooks/session-end/index.d.ts.map +1 -1
  733. package/dist/hooks/session-end/index.js +116 -59
  734. package/dist/hooks/session-end/index.js.map +1 -1
  735. package/dist/hooks/session-end/worker.d.ts +2 -2
  736. package/dist/hooks/session-end/worker.d.ts.map +1 -1
  737. package/dist/hooks/session-end/worker.js +50 -17
  738. package/dist/hooks/session-end/worker.js.map +1 -1
  739. package/dist/hooks/setup/__tests__/stdin-symlink.test.js +7 -7
  740. package/dist/hooks/setup/__tests__/stdin-symlink.test.js.map +1 -1
  741. package/dist/hooks/setup/__tests__/windows-patch.test.js +12 -12
  742. package/dist/hooks/setup/__tests__/windows-patch.test.js.map +1 -1
  743. package/dist/hooks/setup/index.d.ts +7 -3
  744. package/dist/hooks/setup/index.d.ts.map +1 -1
  745. package/dist/hooks/setup/index.js +14 -7
  746. package/dist/hooks/setup/index.js.map +1 -1
  747. package/dist/hooks/skill-bridge.cjs +372 -21
  748. package/dist/hooks/subagent-tracker/__tests__/flow-tracer.test.js +8 -0
  749. package/dist/hooks/subagent-tracker/__tests__/flow-tracer.test.js.map +1 -1
  750. package/dist/hooks/subagent-tracker/__tests__/index.test.js +6 -0
  751. package/dist/hooks/subagent-tracker/__tests__/index.test.js.map +1 -1
  752. package/dist/hooks/subagent-tracker/__tests__/session-replay.test.js +8 -0
  753. package/dist/hooks/subagent-tracker/__tests__/session-replay.test.js.map +1 -1
  754. package/dist/hooks/subagent-tracker/__tests__/worktree-evidence.test.js +4 -4
  755. package/dist/hooks/subagent-tracker/__tests__/worktree-evidence.test.js.map +1 -1
  756. package/dist/hooks/task-size-detector/__tests__/jev-shadow.test.d.ts +2 -0
  757. package/dist/hooks/task-size-detector/__tests__/jev-shadow.test.d.ts.map +1 -0
  758. package/dist/hooks/task-size-detector/__tests__/jev-shadow.test.js +120 -0
  759. package/dist/hooks/task-size-detector/__tests__/jev-shadow.test.js.map +1 -0
  760. package/dist/hooks/task-size-detector/jev-shadow.d.ts +26 -0
  761. package/dist/hooks/task-size-detector/jev-shadow.d.ts.map +1 -0
  762. package/dist/hooks/task-size-detector/jev-shadow.js +32 -0
  763. package/dist/hooks/task-size-detector/jev-shadow.js.map +1 -0
  764. package/dist/hooks/team-dispatch-hook.d.ts.map +1 -1
  765. package/dist/hooks/team-dispatch-hook.js +0 -7
  766. package/dist/hooks/team-dispatch-hook.js.map +1 -1
  767. package/dist/hooks/todo-continuation/index.d.ts +2 -1
  768. package/dist/hooks/todo-continuation/index.d.ts.map +1 -1
  769. package/dist/hooks/todo-continuation/index.js +3 -2
  770. package/dist/hooks/todo-continuation/index.js.map +1 -1
  771. package/dist/hooks/wiki/__tests__/session-hooks.test.js +9 -9
  772. package/dist/hooks/wiki/__tests__/session-hooks.test.js.map +1 -1
  773. package/dist/hud/elements/model.d.ts.map +1 -1
  774. package/dist/hud/elements/model.js +4 -2
  775. package/dist/hud/elements/model.js.map +1 -1
  776. package/dist/hud/elements/update-hint.d.ts +22 -0
  777. package/dist/hud/elements/update-hint.d.ts.map +1 -0
  778. package/dist/hud/elements/update-hint.js +29 -0
  779. package/dist/hud/elements/update-hint.js.map +1 -0
  780. package/dist/hud/index.d.ts +0 -4
  781. package/dist/hud/index.d.ts.map +1 -1
  782. package/dist/hud/index.js +47 -8
  783. package/dist/hud/index.js.map +1 -1
  784. package/dist/hud/render.d.ts.map +1 -1
  785. package/dist/hud/render.js +17 -0
  786. package/dist/hud/render.js.map +1 -1
  787. package/dist/hud/types.d.ts +7 -1
  788. package/dist/hud/types.d.ts.map +1 -1
  789. package/dist/hud/types.js +3 -3
  790. package/dist/hud/types.js.map +1 -1
  791. package/dist/hud/usage-api.d.ts +8 -0
  792. package/dist/hud/usage-api.d.ts.map +1 -1
  793. package/dist/hud/usage-api.js +182 -20
  794. package/dist/hud/usage-api.js.map +1 -1
  795. package/dist/index.d.ts +4 -2
  796. package/dist/index.d.ts.map +1 -1
  797. package/dist/index.js +4 -2
  798. package/dist/index.js.map +1 -1
  799. package/dist/installer/__tests__/bundled-skill-sync.test.d.ts +2 -0
  800. package/dist/installer/__tests__/bundled-skill-sync.test.d.ts.map +1 -0
  801. package/dist/installer/__tests__/bundled-skill-sync.test.js +119 -0
  802. package/dist/installer/__tests__/bundled-skill-sync.test.js.map +1 -0
  803. package/dist/installer/__tests__/claude-md-target-resolution.test.js +4 -4
  804. package/dist/installer/__tests__/claude-md-target-resolution.test.js.map +1 -1
  805. package/dist/installer/__tests__/claude-md-transaction.test.js +16 -13
  806. package/dist/installer/__tests__/claude-md-transaction.test.js.map +1 -1
  807. package/dist/installer/__tests__/has-enabled-omc-plugin.test.js +1 -1
  808. package/dist/installer/__tests__/has-enabled-omc-plugin.test.js.map +1 -1
  809. package/dist/installer/__tests__/hook-command-portability.test.d.ts +1 -1
  810. package/dist/installer/__tests__/hook-command-portability.test.js +14 -14
  811. package/dist/installer/__tests__/hook-command-portability.test.js.map +1 -1
  812. package/dist/installer/__tests__/hook-templates.test.js +133 -25
  813. package/dist/installer/__tests__/hook-templates.test.js.map +1 -1
  814. package/dist/installer/__tests__/hud-cache-wrapper.test.js +33 -8
  815. package/dist/installer/__tests__/hud-cache-wrapper.test.js.map +1 -1
  816. package/dist/installer/__tests__/hud-wrapper-env.test.js +9 -9
  817. package/dist/installer/__tests__/hud-wrapper-env.test.js.map +1 -1
  818. package/dist/installer/__tests__/mcp-registry.test.js +1 -1
  819. package/dist/installer/__tests__/mcp-registry.test.js.map +1 -1
  820. package/dist/installer/__tests__/plugin-cache-sync.test.js +13 -13
  821. package/dist/installer/__tests__/plugin-cache-sync.test.js.map +1 -1
  822. package/dist/installer/__tests__/plugin-dir-mode-e2e.test.d.ts +1 -1
  823. package/dist/installer/__tests__/plugin-dir-mode-e2e.test.js +3 -3
  824. package/dist/installer/__tests__/plugin-dir-mode-e2e.test.js.map +1 -1
  825. package/dist/installer/__tests__/plugin-dir-mode.test.d.ts +1 -1
  826. package/dist/installer/__tests__/plugin-dir-mode.test.js +2 -2
  827. package/dist/installer/__tests__/plugin-dir-mode.test.js.map +1 -1
  828. package/dist/installer/__tests__/safe-installer.test.js +5 -5
  829. package/dist/installer/__tests__/safe-installer.test.js.map +1 -1
  830. package/dist/installer/__tests__/settings-race.test.js +1 -1
  831. package/dist/installer/__tests__/settings-race.test.js.map +1 -1
  832. package/dist/installer/__tests__/stale-cleanup.test.js +16 -16
  833. package/dist/installer/__tests__/stale-cleanup.test.js.map +1 -1
  834. package/dist/installer/__tests__/standalone-hook-reconcile.test.js +40 -12
  835. package/dist/installer/__tests__/standalone-hook-reconcile.test.js.map +1 -1
  836. package/dist/installer/__tests__/standalone-state-lock-bridge.test.d.ts +2 -0
  837. package/dist/installer/__tests__/standalone-state-lock-bridge.test.d.ts.map +1 -0
  838. package/dist/installer/__tests__/standalone-state-lock-bridge.test.js +105 -0
  839. package/dist/installer/__tests__/standalone-state-lock-bridge.test.js.map +1 -0
  840. package/dist/installer/__tests__/user-skill-compat.test.js +4 -4
  841. package/dist/installer/__tests__/user-skill-compat.test.js.map +1 -1
  842. package/dist/installer/hooks.js +1 -1
  843. package/dist/installer/hooks.js.map +1 -1
  844. package/dist/installer/index.d.ts +3 -0
  845. package/dist/installer/index.d.ts.map +1 -1
  846. package/dist/installer/index.js +150 -29
  847. package/dist/installer/index.js.map +1 -1
  848. package/dist/lib/__tests__/atomic-write.test.js +75 -86
  849. package/dist/lib/__tests__/atomic-write.test.js.map +1 -1
  850. package/dist/lib/__tests__/mode-state-io.test.js +65 -47
  851. package/dist/lib/__tests__/mode-state-io.test.js.map +1 -1
  852. package/dist/lib/__tests__/mode-state-lock.test.d.ts +2 -0
  853. package/dist/lib/__tests__/mode-state-lock.test.d.ts.map +1 -0
  854. package/dist/lib/__tests__/mode-state-lock.test.js +242 -0
  855. package/dist/lib/__tests__/mode-state-lock.test.js.map +1 -0
  856. package/dist/lib/__tests__/sync-publication-short-write.test.js +36 -5
  857. package/dist/lib/__tests__/sync-publication-short-write.test.js.map +1 -1
  858. package/dist/lib/__tests__/worktree-paths-bare-container.test.d.ts +2 -0
  859. package/dist/lib/__tests__/worktree-paths-bare-container.test.d.ts.map +1 -0
  860. package/dist/lib/__tests__/worktree-paths-bare-container.test.js +99 -0
  861. package/dist/lib/__tests__/worktree-paths-bare-container.test.js.map +1 -0
  862. package/dist/lib/__tests__/worktree-paths-foreign-root.test.js +5 -5
  863. package/dist/lib/__tests__/worktree-paths-foreign-root.test.js.map +1 -1
  864. package/dist/lib/__tests__/worktree-paths-git-probe-failclosed.test.js +3 -3
  865. package/dist/lib/__tests__/worktree-paths-git-probe-failclosed.test.js.map +1 -1
  866. package/dist/lib/__tests__/worktree-paths-git-probe-locale.test.d.ts +2 -0
  867. package/dist/lib/__tests__/worktree-paths-git-probe-locale.test.d.ts.map +1 -0
  868. package/dist/lib/__tests__/worktree-paths-git-probe-locale.test.js +66 -0
  869. package/dist/lib/__tests__/worktree-paths-git-probe-locale.test.js.map +1 -0
  870. package/dist/lib/__tests__/worktree-paths-git-timeout.test.d.ts +2 -0
  871. package/dist/lib/__tests__/worktree-paths-git-timeout.test.d.ts.map +1 -0
  872. package/dist/lib/__tests__/worktree-paths-git-timeout.test.js +118 -0
  873. package/dist/lib/__tests__/worktree-paths-git-timeout.test.js.map +1 -0
  874. package/dist/lib/__tests__/worktree-paths-nongit-anchor.test.js +11 -9
  875. package/dist/lib/__tests__/worktree-paths-nongit-anchor.test.js.map +1 -1
  876. package/dist/lib/__tests__/worktree-paths-split-warning.test.d.ts +2 -0
  877. package/dist/lib/__tests__/worktree-paths-split-warning.test.d.ts.map +1 -0
  878. package/dist/lib/__tests__/worktree-paths-split-warning.test.js +247 -0
  879. package/dist/lib/__tests__/worktree-paths-split-warning.test.js.map +1 -0
  880. package/dist/lib/__tests__/worktree-paths-toplevel-cache.test.d.ts +2 -0
  881. package/dist/lib/__tests__/worktree-paths-toplevel-cache.test.d.ts.map +1 -0
  882. package/dist/lib/__tests__/worktree-paths-toplevel-cache.test.js +457 -0
  883. package/dist/lib/__tests__/worktree-paths-toplevel-cache.test.js.map +1 -0
  884. package/dist/lib/atomic-write.d.ts +12 -2
  885. package/dist/lib/atomic-write.d.ts.map +1 -1
  886. package/dist/lib/atomic-write.js +45 -35
  887. package/dist/lib/atomic-write.js.map +1 -1
  888. package/dist/lib/mode-state-io.d.ts +8 -1
  889. package/dist/lib/mode-state-io.d.ts.map +1 -1
  890. package/dist/lib/mode-state-io.js +926 -448
  891. package/dist/lib/mode-state-io.js.map +1 -1
  892. package/dist/lib/shared-memory.d.ts +1 -1
  893. package/dist/lib/shared-memory.js +1 -1
  894. package/dist/lib/worktree-paths.d.ts +23 -7
  895. package/dist/lib/worktree-paths.d.ts.map +1 -1
  896. package/dist/lib/worktree-paths.js +487 -31
  897. package/dist/lib/worktree-paths.js.map +1 -1
  898. package/dist/mcp/__tests__/team-cleanup.test.d.ts +1 -1
  899. package/dist/mcp/__tests__/team-cleanup.test.js +211 -110
  900. package/dist/mcp/__tests__/team-cleanup.test.js.map +1 -1
  901. package/dist/mcp/__tests__/team-server-artifact-convergence.test.js +1155 -41
  902. package/dist/mcp/__tests__/team-server-artifact-convergence.test.js.map +1 -1
  903. package/dist/mcp/team-job-convergence.d.ts +20 -6
  904. package/dist/mcp/team-job-convergence.d.ts.map +1 -1
  905. package/dist/mcp/team-job-convergence.js +150 -49
  906. package/dist/mcp/team-job-convergence.js.map +1 -1
  907. package/dist/mcp/team-server.d.ts +6 -4
  908. package/dist/mcp/team-server.d.ts.map +1 -1
  909. package/dist/mcp/team-server.js +629 -207
  910. package/dist/mcp/team-server.js.map +1 -1
  911. package/dist/notifications/__tests__/approval-reply.test.d.ts +6 -0
  912. package/dist/notifications/__tests__/approval-reply.test.d.ts.map +1 -0
  913. package/dist/notifications/__tests__/approval-reply.test.js +71 -0
  914. package/dist/notifications/__tests__/approval-reply.test.js.map +1 -0
  915. package/dist/notifications/config.d.ts.map +1 -1
  916. package/dist/notifications/config.js +3 -0
  917. package/dist/notifications/config.js.map +1 -1
  918. package/dist/notifications/formatter.d.ts +5 -0
  919. package/dist/notifications/formatter.d.ts.map +1 -1
  920. package/dist/notifications/formatter.js +21 -0
  921. package/dist/notifications/formatter.js.map +1 -1
  922. package/dist/notifications/hook-config-types.d.ts +1 -0
  923. package/dist/notifications/hook-config-types.d.ts.map +1 -1
  924. package/dist/notifications/index.d.ts.map +1 -1
  925. package/dist/notifications/index.js +7 -2
  926. package/dist/notifications/index.js.map +1 -1
  927. package/dist/notifications/reply-listener.d.ts +12 -0
  928. package/dist/notifications/reply-listener.d.ts.map +1 -1
  929. package/dist/notifications/reply-listener.js +135 -0
  930. package/dist/notifications/reply-listener.js.map +1 -1
  931. package/dist/notifications/session-registry.d.ts +6 -0
  932. package/dist/notifications/session-registry.d.ts.map +1 -1
  933. package/dist/notifications/session-registry.js.map +1 -1
  934. package/dist/notifications/template-engine.d.ts.map +1 -1
  935. package/dist/notifications/template-engine.js +3 -0
  936. package/dist/notifications/template-engine.js.map +1 -1
  937. package/dist/notifications/types.d.ts +11 -1
  938. package/dist/notifications/types.d.ts.map +1 -1
  939. package/dist/platform/__tests__/process-utils-identity.test.js +24 -2
  940. package/dist/platform/__tests__/process-utils-identity.test.js.map +1 -1
  941. package/dist/platform/executable-resolution.d.ts.map +1 -1
  942. package/dist/platform/executable-resolution.js +17 -2
  943. package/dist/platform/executable-resolution.js.map +1 -1
  944. package/dist/platform/process-utils.js +1 -1
  945. package/dist/platform/process-utils.js.map +1 -1
  946. package/dist/shared/types.d.ts +7 -2
  947. package/dist/shared/types.d.ts.map +1 -1
  948. package/dist/shared/types.js.map +1 -1
  949. package/dist/skills/__tests__/mingw-escape.test.js +1 -1
  950. package/dist/skills/__tests__/mingw-escape.test.js.map +1 -1
  951. package/dist/skills/__tests__/omc-doctor-skill.test.js +9 -7
  952. package/dist/skills/__tests__/omc-doctor-skill.test.js.map +1 -1
  953. package/dist/skills/__tests__/skill-config-dir.test.d.ts +2 -2
  954. package/dist/skills/__tests__/skill-config-dir.test.js +17 -17
  955. package/dist/skills/__tests__/skill-config-dir.test.js.map +1 -1
  956. package/dist/team/__tests__/api-interop.cleanup.test.js +137 -23
  957. package/dist/team/__tests__/api-interop.cleanup.test.js.map +1 -1
  958. package/dist/team/__tests__/api-interop.cwd-resolution.test.js +89 -45
  959. package/dist/team/__tests__/api-interop.cwd-resolution.test.js.map +1 -1
  960. package/dist/team/__tests__/api-interop.dispatch.test.js +56 -12
  961. package/dist/team/__tests__/api-interop.dispatch.test.js.map +1 -1
  962. package/dist/team/__tests__/auto-cleanup.test.js +4 -4
  963. package/dist/team/__tests__/auto-cleanup.test.js.map +1 -1
  964. package/dist/team/__tests__/auto-merge.perf.test.js +2 -4
  965. package/dist/team/__tests__/auto-merge.perf.test.js.map +1 -1
  966. package/dist/team/__tests__/behavior-snapshot.test.js +8 -1
  967. package/dist/team/__tests__/behavior-snapshot.test.js.map +1 -1
  968. package/dist/team/__tests__/bridge-entry.guardrails.test.js +1 -1
  969. package/dist/team/__tests__/bridge-entry.guardrails.test.js.map +1 -1
  970. package/dist/team/__tests__/bridge-entry.test.js +1 -1
  971. package/dist/team/__tests__/bridge-entry.test.js.map +1 -1
  972. package/dist/team/__tests__/bridge-integration.test.js +4 -4
  973. package/dist/team/__tests__/bridge-integration.test.js.map +1 -1
  974. package/dist/team/__tests__/cli-detection.test.js +39 -0
  975. package/dist/team/__tests__/cli-detection.test.js.map +1 -1
  976. package/dist/team/__tests__/critic-cli-worker.integration.test.js +16 -3
  977. package/dist/team/__tests__/critic-cli-worker.integration.test.js.map +1 -1
  978. package/dist/team/__tests__/governance-enforcement.test.js +42 -2
  979. package/dist/team/__tests__/governance-enforcement.test.js.map +1 -1
  980. package/dist/team/__tests__/idle-nudge.test.d.ts +1 -0
  981. package/dist/team/__tests__/idle-nudge.test.d.ts.map +1 -1
  982. package/dist/team/__tests__/idle-nudge.test.js +124 -27
  983. package/dist/team/__tests__/idle-nudge.test.js.map +1 -1
  984. package/dist/team/__tests__/mailbox-notification-guard.test.js +219 -6
  985. package/dist/team/__tests__/mailbox-notification-guard.test.js.map +1 -1
  986. package/dist/team/__tests__/mcp-comm.mailbox-notification.test.js +49 -3
  987. package/dist/team/__tests__/mcp-comm.mailbox-notification.test.js.map +1 -1
  988. package/dist/team/__tests__/merge-orchestrator.test.js +22 -15
  989. package/dist/team/__tests__/merge-orchestrator.test.js.map +1 -1
  990. package/dist/team/__tests__/message-router.test.js +4 -4
  991. package/dist/team/__tests__/message-router.test.js.map +1 -1
  992. package/dist/team/__tests__/model-contract.test.js +141 -13
  993. package/dist/team/__tests__/model-contract.test.js.map +1 -1
  994. package/dist/team/__tests__/psmux-adapter.test.d.ts +2 -0
  995. package/dist/team/__tests__/psmux-adapter.test.d.ts.map +1 -0
  996. package/dist/team/__tests__/psmux-adapter.test.js +188 -0
  997. package/dist/team/__tests__/psmux-adapter.test.js.map +1 -0
  998. package/dist/team/__tests__/recovery-finalization-concurrency.test.js +69 -5
  999. package/dist/team/__tests__/recovery-finalization-concurrency.test.js.map +1 -1
  1000. package/dist/team/__tests__/recovery-owner-finalization.test.js +2 -0
  1001. package/dist/team/__tests__/recovery-owner-finalization.test.js.map +1 -1
  1002. package/dist/team/__tests__/recovery-pane-rollback.test.js +450 -206
  1003. package/dist/team/__tests__/recovery-pane-rollback.test.js.map +1 -1
  1004. package/dist/team/__tests__/recovery-public-api.test.js +70 -15
  1005. package/dist/team/__tests__/recovery-public-api.test.js.map +1 -1
  1006. package/dist/team/__tests__/recovery-request-store.test.js +11 -2
  1007. package/dist/team/__tests__/recovery-request-store.test.js.map +1 -1
  1008. package/dist/team/__tests__/recovery-saga.test.js +16 -1
  1009. package/dist/team/__tests__/recovery-saga.test.js.map +1 -1
  1010. package/dist/team/__tests__/resolved-routing-snapshot.test.js +33 -2
  1011. package/dist/team/__tests__/resolved-routing-snapshot.test.js.map +1 -1
  1012. package/dist/team/__tests__/runtime-cli.test.js +310 -197
  1013. package/dist/team/__tests__/runtime-cli.test.js.map +1 -1
  1014. package/dist/team/__tests__/runtime-done-recovery.test.js +64 -74
  1015. package/dist/team/__tests__/runtime-done-recovery.test.js.map +1 -1
  1016. package/dist/team/__tests__/runtime-owner-busy.test.js +351 -57
  1017. package/dist/team/__tests__/runtime-owner-busy.test.js.map +1 -1
  1018. package/dist/team/__tests__/runtime-owner-client.test.js +153 -49
  1019. package/dist/team/__tests__/runtime-owner-client.test.js.map +1 -1
  1020. package/dist/team/__tests__/runtime-prompt-mode.test.js +29 -16
  1021. package/dist/team/__tests__/runtime-prompt-mode.test.js.map +1 -1
  1022. package/dist/team/__tests__/runtime-storage-boundary.test.d.ts +2 -0
  1023. package/dist/team/__tests__/runtime-storage-boundary.test.d.ts.map +1 -0
  1024. package/dist/team/__tests__/runtime-storage-boundary.test.js +409 -0
  1025. package/dist/team/__tests__/runtime-storage-boundary.test.js.map +1 -0
  1026. package/dist/team/__tests__/runtime-v2-role-routing.test.js +613 -72
  1027. package/dist/team/__tests__/runtime-v2-role-routing.test.js.map +1 -1
  1028. package/dist/team/__tests__/runtime-v2.cursor-routing.test.js +6 -10
  1029. package/dist/team/__tests__/runtime-v2.cursor-routing.test.js.map +1 -1
  1030. package/dist/team/__tests__/runtime-v2.dispatch.test.js +2425 -209
  1031. package/dist/team/__tests__/runtime-v2.dispatch.test.js.map +1 -1
  1032. package/dist/team/__tests__/runtime-v2.explicit-provider-routing.test.js +3 -9
  1033. package/dist/team/__tests__/runtime-v2.explicit-provider-routing.test.js.map +1 -1
  1034. package/dist/team/__tests__/runtime-v2.gemini-preflight.test.js +296 -3
  1035. package/dist/team/__tests__/runtime-v2.gemini-preflight.test.js.map +1 -1
  1036. package/dist/team/__tests__/runtime-v2.monitor.test.js +174 -13
  1037. package/dist/team/__tests__/runtime-v2.monitor.test.js.map +1 -1
  1038. package/dist/team/__tests__/runtime-v2.permission-lines.test.d.ts +2 -0
  1039. package/dist/team/__tests__/runtime-v2.permission-lines.test.d.ts.map +1 -0
  1040. package/dist/team/__tests__/runtime-v2.permission-lines.test.js +42 -0
  1041. package/dist/team/__tests__/runtime-v2.permission-lines.test.js.map +1 -0
  1042. package/dist/team/__tests__/runtime-v2.shutdown-interruption.test.d.ts +2 -0
  1043. package/dist/team/__tests__/runtime-v2.shutdown-interruption.test.d.ts.map +1 -0
  1044. package/dist/team/__tests__/runtime-v2.shutdown-interruption.test.js +875 -0
  1045. package/dist/team/__tests__/runtime-v2.shutdown-interruption.test.js.map +1 -0
  1046. package/dist/team/__tests__/runtime-v2.shutdown-pane-cleanup.test.js +115 -60
  1047. package/dist/team/__tests__/runtime-v2.shutdown-pane-cleanup.test.js.map +1 -1
  1048. package/dist/team/__tests__/runtime-v2.shutdown.test.js +551 -52
  1049. package/dist/team/__tests__/runtime-v2.shutdown.test.js.map +1 -1
  1050. package/dist/team/__tests__/runtime-watchdog-retry.test.js +125 -369
  1051. package/dist/team/__tests__/runtime-watchdog-retry.test.js.map +1 -1
  1052. package/dist/team/__tests__/runtime.test.js +54 -3
  1053. package/dist/team/__tests__/runtime.test.js.map +1 -1
  1054. package/dist/team/__tests__/scaling-launch-config.test.js +278 -52
  1055. package/dist/team/__tests__/scaling-launch-config.test.js.map +1 -1
  1056. package/dist/team/__tests__/scaling.test.js +394 -39
  1057. package/dist/team/__tests__/scaling.test.js.map +1 -1
  1058. package/dist/team/__tests__/split-pane-cleanup-evidence.test.js.map +1 -1
  1059. package/dist/team/__tests__/stage-router.test.js +54 -1
  1060. package/dist/team/__tests__/stage-router.test.js.map +1 -1
  1061. package/dist/team/__tests__/startup-claim-error.test.d.ts +2 -0
  1062. package/dist/team/__tests__/startup-claim-error.test.d.ts.map +1 -0
  1063. package/dist/team/__tests__/startup-claim-error.test.js +73 -0
  1064. package/dist/team/__tests__/startup-claim-error.test.js.map +1 -0
  1065. package/dist/team/__tests__/task-recovery-checkpoint.test.js +2 -1
  1066. package/dist/team/__tests__/task-recovery-checkpoint.test.js.map +1 -1
  1067. package/dist/team/__tests__/task-storage-integrity.test.d.ts +2 -0
  1068. package/dist/team/__tests__/task-storage-integrity.test.d.ts.map +1 -0
  1069. package/dist/team/__tests__/task-storage-integrity.test.js +590 -0
  1070. package/dist/team/__tests__/task-storage-integrity.test.js.map +1 -0
  1071. package/dist/team/__tests__/team-config-revision-lock.test.js +250 -4
  1072. package/dist/team/__tests__/team-config-revision-lock.test.js.map +1 -1
  1073. package/dist/team/__tests__/team-instance.test.d.ts +2 -0
  1074. package/dist/team/__tests__/team-instance.test.d.ts.map +1 -0
  1075. package/dist/team/__tests__/team-instance.test.js +367 -0
  1076. package/dist/team/__tests__/team-instance.test.js.map +1 -0
  1077. package/dist/team/__tests__/team-owner-epoch.test.js +80 -1
  1078. package/dist/team/__tests__/team-owner-epoch.test.js.map +1 -1
  1079. package/dist/team/__tests__/team-state-reader.test.js +50 -1
  1080. package/dist/team/__tests__/team-state-reader.test.js.map +1 -1
  1081. package/dist/team/__tests__/teardown-invariant.test.js +20 -2
  1082. package/dist/team/__tests__/teardown-invariant.test.js.map +1 -1
  1083. package/dist/team/__tests__/tmux-session-liveness.test.js +4 -0
  1084. package/dist/team/__tests__/tmux-session-liveness.test.js.map +1 -1
  1085. package/dist/team/__tests__/tmux-session.create-team.test.js +497 -65
  1086. package/dist/team/__tests__/tmux-session.create-team.test.js.map +1 -1
  1087. package/dist/team/__tests__/tmux-session.kill-team-session.test.js +255 -60
  1088. package/dist/team/__tests__/tmux-session.kill-team-session.test.js.map +1 -1
  1089. package/dist/team/__tests__/tmux-session.psmux.test.d.ts +2 -0
  1090. package/dist/team/__tests__/tmux-session.psmux.test.d.ts.map +1 -0
  1091. package/dist/team/__tests__/tmux-session.psmux.test.js +394 -0
  1092. package/dist/team/__tests__/tmux-session.psmux.test.js.map +1 -0
  1093. package/dist/team/__tests__/tmux-session.spawn.test.js +113 -30
  1094. package/dist/team/__tests__/tmux-session.spawn.test.js.map +1 -1
  1095. package/dist/team/__tests__/tmux-session.startup.test.js +395 -26
  1096. package/dist/team/__tests__/tmux-session.startup.test.js.map +1 -1
  1097. package/dist/team/__tests__/tmux-session.target-membership.test.js +181 -28
  1098. package/dist/team/__tests__/tmux-session.target-membership.test.js.map +1 -1
  1099. package/dist/team/__tests__/tmux-session.test.js +325 -50
  1100. package/dist/team/__tests__/tmux-session.test.js.map +1 -1
  1101. package/dist/team/__tests__/worker-activation-gate.test.js +15 -9
  1102. package/dist/team/__tests__/worker-activation-gate.test.js.map +1 -1
  1103. package/dist/team/__tests__/worker-bootstrap.test.js +9 -1
  1104. package/dist/team/__tests__/worker-bootstrap.test.js.map +1 -1
  1105. package/dist/team/__tests__/worker-launch-ack.test.js +1792 -74
  1106. package/dist/team/__tests__/worker-launch-ack.test.js.map +1 -1
  1107. package/dist/team/__tests__/worker-launch-posix-transport.test.js +266 -42
  1108. package/dist/team/__tests__/worker-launch-posix-transport.test.js.map +1 -1
  1109. package/dist/team/__tests__/worker-launch-wrapper-posix.test.d.ts +10 -0
  1110. package/dist/team/__tests__/worker-launch-wrapper-posix.test.d.ts.map +1 -0
  1111. package/dist/team/__tests__/worker-launch-wrapper-posix.test.js +191 -0
  1112. package/dist/team/__tests__/worker-launch-wrapper-posix.test.js.map +1 -0
  1113. package/dist/team/__tests__/worktree-runtime-e2e.test.js.map +1 -1
  1114. package/dist/team/api-interop.d.ts.map +1 -1
  1115. package/dist/team/api-interop.js +33 -29
  1116. package/dist/team/api-interop.js.map +1 -1
  1117. package/dist/team/bridge-entry.js +3 -3
  1118. package/dist/team/bridge-entry.js.map +1 -1
  1119. package/dist/team/idle-nudge.d.ts +27 -4
  1120. package/dist/team/idle-nudge.d.ts.map +1 -1
  1121. package/dist/team/idle-nudge.js +59 -9
  1122. package/dist/team/idle-nudge.js.map +1 -1
  1123. package/dist/team/index.d.ts +3 -3
  1124. package/dist/team/index.d.ts.map +1 -1
  1125. package/dist/team/index.js +2 -2
  1126. package/dist/team/index.js.map +1 -1
  1127. package/dist/team/mailbox-notification-guard.d.ts +14 -2
  1128. package/dist/team/mailbox-notification-guard.d.ts.map +1 -1
  1129. package/dist/team/mailbox-notification-guard.js +72 -1
  1130. package/dist/team/mailbox-notification-guard.js.map +1 -1
  1131. package/dist/team/mcp-team-bridge.d.ts.map +1 -1
  1132. package/dist/team/mcp-team-bridge.js +0 -8
  1133. package/dist/team/mcp-team-bridge.js.map +1 -1
  1134. package/dist/team/merge-orchestrator.d.ts.map +1 -1
  1135. package/dist/team/merge-orchestrator.js +49 -0
  1136. package/dist/team/merge-orchestrator.js.map +1 -1
  1137. package/dist/team/model-contract.d.ts +35 -0
  1138. package/dist/team/model-contract.d.ts.map +1 -1
  1139. package/dist/team/model-contract.js +136 -9
  1140. package/dist/team/model-contract.js.map +1 -1
  1141. package/dist/team/monitor.d.ts +25 -5
  1142. package/dist/team/monitor.d.ts.map +1 -1
  1143. package/dist/team/monitor.js +271 -91
  1144. package/dist/team/monitor.js.map +1 -1
  1145. package/dist/team/pane-readiness.d.ts.map +1 -1
  1146. package/dist/team/pane-readiness.js +4 -1
  1147. package/dist/team/pane-readiness.js.map +1 -1
  1148. package/dist/team/psmux-adapter.d.ts +73 -0
  1149. package/dist/team/psmux-adapter.d.ts.map +1 -0
  1150. package/dist/team/psmux-adapter.js +219 -0
  1151. package/dist/team/psmux-adapter.js.map +1 -0
  1152. package/dist/team/recovery-request-store.d.ts +4 -0
  1153. package/dist/team/recovery-request-store.d.ts.map +1 -1
  1154. package/dist/team/recovery-request-store.js +16 -4
  1155. package/dist/team/recovery-request-store.js.map +1 -1
  1156. package/dist/team/recovery-saga.d.ts +7 -0
  1157. package/dist/team/recovery-saga.d.ts.map +1 -1
  1158. package/dist/team/recovery-saga.js +4 -1
  1159. package/dist/team/recovery-saga.js.map +1 -1
  1160. package/dist/team/runtime-cli.d.ts +36 -22
  1161. package/dist/team/runtime-cli.d.ts.map +1 -1
  1162. package/dist/team/runtime-cli.js +491 -354
  1163. package/dist/team/runtime-cli.js.map +1 -1
  1164. package/dist/team/runtime-owner-client.d.ts +6 -1
  1165. package/dist/team/runtime-owner-client.d.ts.map +1 -1
  1166. package/dist/team/runtime-owner-client.js +230 -78
  1167. package/dist/team/runtime-owner-client.js.map +1 -1
  1168. package/dist/team/runtime-v2.d.ts +62 -16
  1169. package/dist/team/runtime-v2.d.ts.map +1 -1
  1170. package/dist/team/runtime-v2.js +2171 -850
  1171. package/dist/team/runtime-v2.js.map +1 -1
  1172. package/dist/team/runtime.d.ts +20 -33
  1173. package/dist/team/runtime.d.ts.map +1 -1
  1174. package/dist/team/runtime.js +115 -780
  1175. package/dist/team/runtime.js.map +1 -1
  1176. package/dist/team/scaling.d.ts +1 -1
  1177. package/dist/team/scaling.d.ts.map +1 -1
  1178. package/dist/team/scaling.js +501 -183
  1179. package/dist/team/scaling.js.map +1 -1
  1180. package/dist/team/stage-router.d.ts +1 -1
  1181. package/dist/team/stage-router.d.ts.map +1 -1
  1182. package/dist/team/stage-router.js +25 -17
  1183. package/dist/team/stage-router.js.map +1 -1
  1184. package/dist/team/state/tasks.d.ts +23 -3
  1185. package/dist/team/state/tasks.d.ts.map +1 -1
  1186. package/dist/team/state/tasks.js +234 -52
  1187. package/dist/team/state/tasks.js.map +1 -1
  1188. package/dist/team/state-paths.d.ts +57 -0
  1189. package/dist/team/state-paths.d.ts.map +1 -1
  1190. package/dist/team/state-paths.js +176 -1
  1191. package/dist/team/state-paths.js.map +1 -1
  1192. package/dist/team/team-instance.d.ts +71 -0
  1193. package/dist/team/team-instance.d.ts.map +1 -0
  1194. package/dist/team/team-instance.js +863 -0
  1195. package/dist/team/team-instance.js.map +1 -0
  1196. package/dist/team/team-ops.d.ts +13 -1
  1197. package/dist/team/team-ops.d.ts.map +1 -1
  1198. package/dist/team/team-ops.js +328 -36
  1199. package/dist/team/team-ops.js.map +1 -1
  1200. package/dist/team/team-owner-epoch.d.ts +21 -0
  1201. package/dist/team/team-owner-epoch.d.ts.map +1 -1
  1202. package/dist/team/team-owner-epoch.js +128 -9
  1203. package/dist/team/team-owner-epoch.js.map +1 -1
  1204. package/dist/team/team-state-reader.d.ts.map +1 -1
  1205. package/dist/team/team-state-reader.js +8 -2
  1206. package/dist/team/team-state-reader.js.map +1 -1
  1207. package/dist/team/tmux-session.d.ts +150 -23
  1208. package/dist/team/tmux-session.d.ts.map +1 -1
  1209. package/dist/team/tmux-session.js +1837 -260
  1210. package/dist/team/tmux-session.js.map +1 -1
  1211. package/dist/team/types.d.ts +141 -2
  1212. package/dist/team/types.d.ts.map +1 -1
  1213. package/dist/team/types.js +34 -0
  1214. package/dist/team/types.js.map +1 -1
  1215. package/dist/team/worker-activation-gate.d.ts.map +1 -1
  1216. package/dist/team/worker-activation-gate.js +14 -12
  1217. package/dist/team/worker-activation-gate.js.map +1 -1
  1218. package/dist/team/worker-bootstrap.d.ts +2 -0
  1219. package/dist/team/worker-bootstrap.d.ts.map +1 -1
  1220. package/dist/team/worker-bootstrap.js +25 -5
  1221. package/dist/team/worker-bootstrap.js.map +1 -1
  1222. package/dist/team/worker-launch-ack.d.ts +33 -1
  1223. package/dist/team/worker-launch-ack.d.ts.map +1 -1
  1224. package/dist/team/worker-launch-ack.js +996 -158
  1225. package/dist/team/worker-launch-ack.js.map +1 -1
  1226. package/dist/tools/__tests__/cancel-integration.test.js +99 -21
  1227. package/dist/tools/__tests__/cancel-integration.test.js.map +1 -1
  1228. package/dist/tools/__tests__/state-tools-nongit-ownership.test.js +2 -2
  1229. package/dist/tools/__tests__/state-tools-nongit-ownership.test.js.map +1 -1
  1230. package/dist/tools/__tests__/state-tools.test.js +927 -6
  1231. package/dist/tools/__tests__/state-tools.test.js.map +1 -1
  1232. package/dist/tools/__tests__/wiki-tools-direct-dist-failclosed.test.js +20 -1
  1233. package/dist/tools/__tests__/wiki-tools-direct-dist-failclosed.test.js.map +1 -1
  1234. package/dist/tools/__tests__/wiki-tools-git-probe-failclosed.test.js +4 -1
  1235. package/dist/tools/__tests__/wiki-tools-git-probe-failclosed.test.js.map +1 -1
  1236. package/dist/tools/ast-tools.d.ts.map +1 -1
  1237. package/dist/tools/ast-tools.js +7 -2
  1238. package/dist/tools/ast-tools.js.map +1 -1
  1239. package/dist/tools/diagnostics/__tests__/lsp-aggregator.test.js +159 -6
  1240. package/dist/tools/diagnostics/__tests__/lsp-aggregator.test.js.map +1 -1
  1241. package/dist/tools/diagnostics/lsp-aggregator.d.ts +1 -0
  1242. package/dist/tools/diagnostics/lsp-aggregator.d.ts.map +1 -1
  1243. package/dist/tools/diagnostics/lsp-aggregator.js +58 -32
  1244. package/dist/tools/diagnostics/lsp-aggregator.js.map +1 -1
  1245. package/dist/tools/lsp/__tests__/client-document-lifecycle.test.d.ts +2 -0
  1246. package/dist/tools/lsp/__tests__/client-document-lifecycle.test.d.ts.map +1 -0
  1247. package/dist/tools/lsp/__tests__/client-document-lifecycle.test.js +585 -0
  1248. package/dist/tools/lsp/__tests__/client-document-lifecycle.test.js.map +1 -0
  1249. package/dist/tools/lsp/__tests__/client-handle-data.test.js +5 -2
  1250. package/dist/tools/lsp/__tests__/client-handle-data.test.js.map +1 -1
  1251. package/dist/tools/lsp/client.d.ts +39 -1
  1252. package/dist/tools/lsp/client.d.ts.map +1 -1
  1253. package/dist/tools/lsp/client.js +542 -89
  1254. package/dist/tools/lsp/client.js.map +1 -1
  1255. package/dist/tools/skills-tools.js +1 -1
  1256. package/dist/tools/skills-tools.js.map +1 -1
  1257. package/dist/tools/state-tools.d.ts.map +1 -1
  1258. package/dist/tools/state-tools.js +459 -459
  1259. package/dist/tools/state-tools.js.map +1 -1
  1260. package/dist/utils/__tests__/cache-occupancy.test.js +61 -3
  1261. package/dist/utils/__tests__/cache-occupancy.test.js.map +1 -1
  1262. package/dist/utils/cache-occupancy.d.ts +12 -2
  1263. package/dist/utils/cache-occupancy.d.ts.map +1 -1
  1264. package/dist/utils/cache-occupancy.js +46 -6
  1265. package/dist/utils/cache-occupancy.js.map +1 -1
  1266. package/dist/utils/config-dir.d.ts +4 -4
  1267. package/dist/utils/config-dir.js +5 -5
  1268. package/dist/utils/config-dir.js.map +1 -1
  1269. package/dist/utils/host-detection.d.ts +2 -4
  1270. package/dist/utils/host-detection.d.ts.map +1 -1
  1271. package/dist/utils/host-detection.js +4 -7
  1272. package/dist/utils/host-detection.js.map +1 -1
  1273. package/dist/utils/host-signal.d.ts +19 -0
  1274. package/dist/utils/host-signal.d.ts.map +1 -0
  1275. package/dist/utils/host-signal.js +24 -0
  1276. package/dist/utils/host-signal.js.map +1 -0
  1277. package/dist/workflow/__tests__/alias-resolver.test.js +8 -6
  1278. package/dist/workflow/__tests__/alias-resolver.test.js.map +1 -1
  1279. package/dist/workflow/__tests__/projections.test.js +8 -4
  1280. package/dist/workflow/__tests__/projections.test.js.map +1 -1
  1281. package/dist/workflow/__tests__/registry.test.js +12 -3
  1282. package/dist/workflow/__tests__/registry.test.js.map +1 -1
  1283. package/dist/workflow/registry.d.ts.map +1 -1
  1284. package/dist/workflow/registry.js +16 -1
  1285. package/dist/workflow/registry.js.map +1 -1
  1286. package/docs/ARCHITECTURE.md +57 -31
  1287. package/docs/CLAUDE.md +2 -2
  1288. package/docs/COMPATIBILITY.md +6 -0
  1289. package/docs/FEATURES.md +61 -0
  1290. package/docs/GETTING-STARTED.md +31 -25
  1291. package/docs/HOOKS.md +107 -28
  1292. package/docs/MIGRATION.md +261 -1
  1293. package/docs/PERFORMANCE-MONITORING.md +1 -1
  1294. package/docs/REFERENCE.md +209 -29
  1295. package/docs/TEAM-WORKTREE-MODE.md +3 -1
  1296. package/docs/TOOLS.md +9 -3
  1297. package/docs/adr/03665-jev-degradation-contract.md +3 -0
  1298. package/docs/adr/03671-script-side-judgment-channel.md +37 -0
  1299. package/docs/adr/03672-env-activated-active-mode.md +3 -0
  1300. package/docs/business/README.md +6 -0
  1301. package/docs/copilot-instructions.md +1 -1
  1302. package/docs/graph-contained-filesystem.md +77 -0
  1303. package/docs/issues/issue-3668-ralph-namespace.md +3 -3
  1304. package/docs/issues/issue-3669-jev-judgment-points.md +103 -0
  1305. package/docs/shared/features.md +4 -2
  1306. package/docs/shipyard.md +140 -0
  1307. package/docs/standards/architecture.md +6 -0
  1308. package/docs/standards/data.md +4 -0
  1309. package/docs/standards/process.md +5 -0
  1310. package/hooks/hooks.json +36 -26
  1311. package/native/contained-fs.c +292 -0
  1312. package/package.json +15 -7
  1313. package/plugin.json +23 -0
  1314. package/scripts/budget-guard.mjs +217 -0
  1315. package/scripts/build-bridge-entry.mjs +5 -0
  1316. package/scripts/build-contained-fs.mjs +38 -0
  1317. package/scripts/build-generated-artifact-authorization.mjs +100 -0
  1318. package/scripts/build-mcp-server.mjs +5 -0
  1319. package/scripts/build-runtime-cli.mjs +7 -0
  1320. package/scripts/build-team-server.mjs +7 -0
  1321. package/scripts/ci/check-multirepo-paths.mjs +2 -2
  1322. package/scripts/code-simplifier.mjs +18 -0
  1323. package/scripts/copilot/build-agents.mjs +173 -0
  1324. package/scripts/copilot/build-hooks.mjs +128 -0
  1325. package/scripts/generate-inventory-graph.mjs +13 -4
  1326. package/scripts/jev-eval.mjs +257 -0
  1327. package/scripts/jev-resolve.mjs +245 -0
  1328. package/scripts/keyword-detector.mjs +120 -18
  1329. package/scripts/lib/atomic-write.mjs +27 -445
  1330. package/scripts/lib/bounded-git-timeout.mjs +3 -2
  1331. package/scripts/lib/cache-occupancy.mjs +50 -7
  1332. package/scripts/lib/config-dir.cjs +2 -2
  1333. package/scripts/lib/config-dir.mjs +2 -2
  1334. package/scripts/lib/config-dir.sh +2 -1
  1335. package/scripts/lib/copilot-hook-adapter.cjs +325 -0
  1336. package/scripts/lib/enforcement-log.mjs +46 -0
  1337. package/scripts/lib/hook-command-normalizer.mjs +34 -12
  1338. package/scripts/lib/hud-cache-wrapper.sh +192 -17
  1339. package/scripts/lib/hud-wrapper-template.txt +1 -1
  1340. package/scripts/lib/jev-shadow.mjs +49 -0
  1341. package/scripts/lib/pre-tool-enforcer-preflight.mjs +10 -3
  1342. package/scripts/lib/read-budget-preflight.mjs +410 -0
  1343. package/scripts/lib/state-lock.mjs +750 -0
  1344. package/scripts/lib/state-root.cjs +9 -3
  1345. package/scripts/lib/state-root.mjs +34 -4
  1346. package/scripts/lib/workflow-profile-runtime.mjs +1 -1
  1347. package/scripts/persistent-mode.mjs +157 -18
  1348. package/scripts/plugin-setup.mjs +66 -18
  1349. package/scripts/plugin-shipping-surface.mjs +35 -3
  1350. package/scripts/post-tool-directory-context-injector.mjs +115 -0
  1351. package/scripts/post-tool-rules-injector.mjs +5 -5
  1352. package/scripts/post-tool-verifier.mjs +97 -21
  1353. package/scripts/pre-tool-enforcer.mjs +118 -2
  1354. package/scripts/project-memory-posttool.mjs +33 -25
  1355. package/scripts/release-boundary.mjs +14 -0
  1356. package/scripts/release.ts +29 -16
  1357. package/scripts/repair-plugin-cache.mjs +1 -1
  1358. package/scripts/run-provider-advisor.js +14 -0
  1359. package/scripts/run.cjs +600 -71
  1360. package/scripts/session-end.mjs +3 -7
  1361. package/scripts/session-start.mjs +201 -39
  1362. package/scripts/setup-claude-md.sh +36 -5
  1363. package/scripts/setup-progress.mjs +1 -1
  1364. package/scripts/shipyard-audit.mjs +322 -0
  1365. package/scripts/sync-version.sh +9 -1
  1366. package/scripts/uninstall.sh +37 -37
  1367. package/scripts/verify-graph-contained-fs.mjs +202 -0
  1368. package/skills/AGENTS.md +54 -14
  1369. package/skills/agent-doc-discipline/SKILL.md +54 -0
  1370. package/skills/architecture-survey/SKILL.md +59 -0
  1371. package/skills/ask-navigator/SKILL.md +143 -0
  1372. package/skills/cancel/SKILL.md +288 -299
  1373. package/skills/configure-notifications/SKILL.md +11 -11
  1374. package/skills/debug/SKILL.md +3 -0
  1375. package/skills/deep-interview/SKILL.md +16 -4
  1376. package/skills/deepinit/SKILL.md +47 -24
  1377. package/skills/diagram/SKILL.md +125 -0
  1378. package/skills/drydock/SKILL.md +381 -0
  1379. package/skills/harbor/SKILL.md +169 -0
  1380. package/skills/hud/SKILL.md +10 -10
  1381. package/skills/intent/SKILL.md +95 -0
  1382. package/skills/launch/SKILL.md +185 -0
  1383. package/skills/loft/SKILL.md +70 -0
  1384. package/skills/map/SKILL.md +73 -0
  1385. package/skills/minimal-code-discipline/SKILL.md +59 -0
  1386. package/skills/minimal-prose-discipline/SKILL.md +73 -0
  1387. package/skills/omc-ado-auto-review/SKILL.md +1 -4
  1388. package/skills/omc-ado-review/SKILL.md +1 -4
  1389. package/skills/omc-ado-setup/SKILL.md +1 -4
  1390. package/skills/omc-ado-sprint/SKILL.md +1 -4
  1391. package/skills/omc-ado-triage/SKILL.md +1 -4
  1392. package/skills/omc-doctor/SKILL.md +32 -27
  1393. package/skills/omc-gh-auto-review/SKILL.md +1 -4
  1394. package/skills/omc-gh-project/SKILL.md +1 -4
  1395. package/skills/omc-gh-review/SKILL.md +1 -4
  1396. package/skills/omc-gh-setup/SKILL.md +1 -4
  1397. package/skills/omc-gh-triage/SKILL.md +1 -4
  1398. package/skills/omc-setup/SKILL.md +2 -2
  1399. package/skills/omc-setup/phases/02-configure.md +7 -6
  1400. package/skills/omc-setup/phases/03-integrations.md +7 -7
  1401. package/skills/omc-setup/phases/04-welcome.md +2 -2
  1402. package/skills/pr/SKILL.md +66 -0
  1403. package/skills/refit/SKILL.md +46 -0
  1404. package/skills/review/SKILL.md +9 -0
  1405. package/skills/skill/SKILL.md +7 -7
  1406. package/skills/skillify/SKILL.md +1 -1
  1407. package/skills/tdd/SKILL.md +33 -0
  1408. package/skills/team/SKILL.md +84 -81
  1409. package/templates/hooks/keyword-detector.mjs +24 -10
  1410. package/templates/hooks/lib/atomic-write.mjs +27 -445
  1411. package/templates/hooks/lib/bounded-git-timeout.mjs +3 -2
  1412. package/templates/hooks/lib/cache-occupancy.mjs +36 -7
  1413. package/templates/hooks/lib/config-dir.mjs +2 -2
  1414. package/templates/hooks/lib/state-lock.mjs +4 -0
  1415. package/templates/hooks/lib/state-root.mjs +34 -4
  1416. package/templates/hooks/lib/workflow-profile-runtime.mjs +1 -1
  1417. package/templates/hooks/persistent-mode.mjs +59 -17
  1418. package/templates/hooks/pre-tool-use.mjs +1213 -51
  1419. package/templates/hooks/session-start.mjs +190 -25
  1420. package/dist/__tests__/safe-command-approver.test.d.ts +0 -2
  1421. package/dist/__tests__/safe-command-approver.test.d.ts.map +0 -1
  1422. package/dist/__tests__/safe-command-approver.test.js +0 -103
  1423. package/dist/__tests__/safe-command-approver.test.js.map +0 -1
  1424. package/dist/installer/permissions.d.ts +0 -9
  1425. package/dist/installer/permissions.d.ts.map +0 -1
  1426. package/dist/installer/permissions.js +0 -59
  1427. package/dist/installer/permissions.js.map +0 -1
  1428. package/scripts/safe-command-approver.mjs +0 -156
package/scripts/run.cjs CHANGED
@@ -9,7 +9,8 @@
9
9
  */
10
10
 
11
11
  const { spawn, spawnSync } = require('child_process');
12
- const { existsSync, readFileSync, realpathSync } = require('fs');
12
+ const { PassThrough, Writable } = require('stream');
13
+ const { existsSync, readFileSync, realpathSync, writeSync } = require('fs');
13
14
  const path = require('path');
14
15
  const { join, basename, dirname } = path;
15
16
  const { pathToFileURL } = require('url');
@@ -107,36 +108,80 @@ function isDebugHooksEnabled() {
107
108
  process.env.OMC_DEBUG === 'true';
108
109
  }
109
110
 
110
- function resolveTimeoutCushionMs(manifestTimeoutMs, hookEvent) {
111
- if (hookEvent !== 'UserPromptSubmit') return TIMEOUT_CUSHION_MS;
112
- const promptCushion = Math.floor(manifestTimeoutMs * 0.2);
113
- return Math.min(3000, Math.max(1000, promptCushion));
111
+ const POSIX_TIMEOUT_CUSHION_MS = 500;
112
+ const WINDOWS_TIMEOUT_CUSHION_MS = 1500;
113
+ const MAX_DECLARED_GENERIC_TIMEOUT_MS = 60000;
114
+ const WINDOWS_REAP_TIMEOUT_MS = 400;
115
+ const PROTOCOL_STDIO_SETTLE_MS = 150;
116
+ // Empty source→tap→writer pipelines identify leaked descendant handles after
117
+ // the leader exits. Legitimate buffered bytes are exempt from this idle bound.
118
+ const PROTOCOL_SOURCE_IDLE_MS = 80;
119
+ const MIN_HOOK_INNER_FRACTION = 0.5;
120
+ const MIN_HOOK_INNER_MS = 400;
121
+ // Observed Windows supervisor→hook→grandchild cold start in hosted CI (361–559ms).
122
+ const WINDOWS_GENERIC_STARTUP_MS = 600;
123
+ // Must match scripts/lib/bounded-git-timeout.mjs.
124
+ const NESTED_OPERATION_TIMEOUT_MS = 2000;
125
+ const NESTED_OPERATION_MARGIN_MS = 200;
126
+ const NESTED_INNER_FLOOR_MS = NESTED_OPERATION_TIMEOUT_MS + NESTED_OPERATION_MARGIN_MS + WINDOWS_GENERIC_STARTUP_MS;
127
+ const TIMEOUT_CUSHION_MS = POSIX_TIMEOUT_CUSHION_MS;
128
+ const DEFAULT_GENERIC_TIMEOUT_MS = MAX_DECLARED_GENERIC_TIMEOUT_MS - POSIX_TIMEOUT_CUSHION_MS;
129
+
130
+ function platformTimeoutCushionMs(platform = process.platform) {
131
+ return platform === 'win32' ? WINDOWS_TIMEOUT_CUSHION_MS : POSIX_TIMEOUT_CUSHION_MS;
114
132
  }
115
133
 
116
- const TIMEOUT_CUSHION_MS = 500;
117
- // = max declared manifest budget (60000ms, setup-maintenance) minus the 500ms cushion; applied ONLY when manifest resolution is null so long legit hooks are not prematurely reaped.
118
- const DEFAULT_GENERIC_TIMEOUT_MS = 59500;
134
+ function desiredTimeoutCushionMs(manifestTimeoutMs, hookEvent, platform = process.platform) {
135
+ const base = platformTimeoutCushionMs(platform);
136
+ if (hookEvent !== 'UserPromptSubmit') return base;
137
+ const promptCushion = Math.floor(manifestTimeoutMs * 0.2);
138
+ return Math.min(3000, Math.max(base, 1000, promptCushion));
139
+ }
119
140
 
141
+ function resolveTimeoutCushionMs(manifestTimeoutMs, hookEvent, platform = process.platform) {
142
+ const desired = desiredTimeoutCushionMs(manifestTimeoutMs, hookEvent, platform);
143
+ if (platform === 'win32' && hookEvent !== 'UserPromptSubmit' && manifestTimeoutMs <= 3000) {
144
+ // Preserve the historical 500ms outer allowance for short hooks. It
145
+ // covers the 400ms Windows reap plus the 80ms protocol-idle close while
146
+ // leaving a 3s hook its prior 2500ms inner budget for shipped 2000ms Git
147
+ // and lock operations.
148
+ return Math.min(500, Math.max(1, manifestTimeoutMs - 1));
149
+ }
150
+ const fractionalInner = Math.max(MIN_HOOK_INNER_MS, Math.floor(manifestTimeoutMs * MIN_HOOK_INNER_FRACTION));
151
+ const canFitNestedFloor = manifestTimeoutMs - POSIX_TIMEOUT_CUSHION_MS >= NESTED_INNER_FLOOR_MS;
152
+ const minInner = Math.min(
153
+ Math.max(1, manifestTimeoutMs - 1),
154
+ canFitNestedFloor ? Math.max(fractionalInner, NESTED_INNER_FLOOR_MS) : fractionalInner,
155
+ );
156
+ const maxCushion = Math.max(1, manifestTimeoutMs - minInner);
157
+ return Math.min(desired, maxCushion);
158
+ }
120
159
 
121
- function resolveInnerTimeoutMs(manifestHook) {
160
+ function resolveInnerTimeoutMs(manifestHook, platform = process.platform) {
122
161
  if (!manifestHook) return null;
123
- return Math.max(1, manifestHook.timeoutMs - resolveTimeoutCushionMs(manifestHook.timeoutMs, manifestHook.event));
162
+ return Math.max(1, manifestHook.timeoutMs - resolveTimeoutCushionMs(manifestHook.timeoutMs, manifestHook.event, platform));
124
163
  }
125
164
 
126
- // Call only after resolveWorkerTarget has verified an exact canonical trusted prompt target.
127
- function resolveTrustedPromptWorkerTimeoutMs(targetPath, manifestHook, trustedPluginRoot) {
165
+ // Call only after resolveWorkerTarget has verified an exact canonical trusted target.
166
+ const TRUSTED_WORKER_HOOKS = new Map([
167
+ ['keyword-detector.mjs', { event: 'UserPromptSubmit', timeoutCapMs: 8000 }],
168
+ ['skill-injector.mjs', { event: 'UserPromptSubmit', timeoutCapMs: 12000 }],
169
+ ['pre-tool-enforcer.mjs', { event: 'PreToolUse' }],
170
+ ['post-tool-verifier.mjs', { event: 'PostToolUse' }],
171
+ ['project-memory-posttool.mjs', { event: 'PostToolUse' }],
172
+ ['post-tool-rules-injector.mjs', { event: 'PostToolUse' }],
173
+ ]);
174
+
175
+ function resolveTrustedWorkerTimeoutMs(targetPath, manifestHook) {
128
176
  const calculatedTimeoutMs = resolveInnerTimeoutMs(manifestHook);
129
- const canonicalTarget = normalizedComparisonPath(targetPath);
130
- const capsByCanonicalTarget = new Map([
131
- [normalizedComparisonPath(join(trustedPluginRoot, 'scripts', 'keyword-detector.mjs')), 8000],
132
- [normalizedComparisonPath(join(trustedPluginRoot, 'scripts', 'skill-injector.mjs')), 12000],
133
- ]);
134
- const capMs = capsByCanonicalTarget.get(canonicalTarget);
177
+ const capMs = TRUSTED_WORKER_HOOKS.get(basename(targetPath))?.timeoutCapMs;
135
178
  return capMs ? Math.min(calculatedTimeoutMs, capMs) : calculatedTimeoutMs;
136
179
  }
137
180
 
138
- function resolveGenericTimeoutMs(manifestHook) {
139
- return manifestHook ? resolveInnerTimeoutMs(manifestHook) : DEFAULT_GENERIC_TIMEOUT_MS;
181
+ function resolveGenericTimeoutMs(manifestHook, platform = process.platform) {
182
+ return manifestHook
183
+ ? resolveInnerTimeoutMs(manifestHook, platform)
184
+ : MAX_DECLARED_GENERIC_TIMEOUT_MS - platformTimeoutCushionMs(platform);
140
185
  }
141
186
 
142
187
  function resolveHookTimeoutMsFromRoot(pluginRoot, targetPath, extraArgs) {
@@ -193,12 +238,14 @@ function resolveWorkerTarget(resolution, extraArgs) {
193
238
  const canonicalTarget = normalizedComparisonPath(resolution.targetPath);
194
239
  if (!isContainedBy(canonicalRoot, canonicalTarget)) return null;
195
240
 
196
- const expectedTargets = ['keyword-detector.mjs', 'skill-injector.mjs']
197
- .map(script => normalizedComparisonPath(join(trustedRoot, 'scripts', script)));
198
- if (!expectedTargets.includes(canonicalTarget)) return null;
241
+ const scriptName = basename(resolution.targetPath);
242
+ const trustedHook = TRUSTED_WORKER_HOOKS.get(scriptName);
243
+ if (!trustedHook) return null;
244
+ const expectedTarget = normalizedComparisonPath(join(trustedRoot, 'scripts', scriptName));
245
+ if (canonicalTarget !== expectedTarget) return null;
199
246
 
200
247
  const manifestHook = resolveHookTimeoutMsFromRoot(trustedRoot, resolution.targetPath, []);
201
- if (manifestHook?.event !== 'UserPromptSubmit') return null;
248
+ if (manifestHook?.event !== trustedHook.event) return null;
202
249
  return manifestHook;
203
250
  } catch {
204
251
  return null;
@@ -223,11 +270,13 @@ function resolveTrustedSessionEndTarget(resolution, extraArgs) {
223
270
  }
224
271
 
225
272
 
226
- function writeTimeoutDiagnostic(targetPath, manifestHook, timeoutMs) {
273
+ function writeTimeoutDiagnostic(targetPath, manifestHook, timeoutMs, sink) {
227
274
  const message = `[run.cjs] Hook ${basename(targetPath)} timed out after ${timeoutMs}ms; exiting fail-open.\n`;
228
275
  if (manifestHook?.event !== 'UserPromptSubmit' || isDebugHooksEnabled()) {
229
- process.stderr.write(message);
276
+ if (sink) return sink.write(process.stderr, Buffer.from(message));
277
+ try { process.stderr.write(message); } catch { /* protocol dest may already be closed */ }
230
278
  }
279
+ return Promise.resolve();
231
280
  }
232
281
 
233
282
  function captureProcessStartIdentity(pid) {
@@ -268,16 +317,34 @@ function processIdentityMatches(pid, expectedIdentity) {
268
317
  return captureProcessStartIdentity(pid) === expectedIdentity;
269
318
  }
270
319
 
320
+ function leaderPresence(pid, expectedIdentity) {
321
+ try {
322
+ process.kill(pid, 0);
323
+ } catch (error) {
324
+ return error && error.code === 'ESRCH' ? 'absent' : 'unknown';
325
+ }
326
+ if (!expectedIdentity) return 'alive';
327
+ return captureProcessStartIdentity(pid) === expectedIdentity ? 'alive' : 'mismatch';
328
+ }
329
+
271
330
  function reapTree(child, childIdentity) {
272
- // Identity-safe reap: verify the PID still belongs to the child we spawned
273
- // before killing its process group. If the PID was reused by the OS after
274
- // the child exited, processIdentityMatches returns false and we skip the
275
- // kill entirely, relying on child.unref() for fail-open exit.
276
- if (childIdentity && !processIdentityMatches(child.pid, childIdentity)) return;
331
+ // Identity-safe reap: only signal a live PID we spawned, or a confirmed-dead
332
+ // detached leader's leftover process group. A live identity mismatch is PID
333
+ // reuse — fail closed. Unknown (EPERM/identity-read failure) also fail closed.
334
+ if (!Number.isInteger(child.pid) || child.pid <= 0) return;
335
+ const presence = leaderPresence(child.pid, childIdentity);
336
+ if (presence === 'mismatch' || presence === 'unknown') return;
337
+ if (presence === 'absent') {
338
+ if (process.platform === 'win32') return;
339
+ try { process.kill(-child.pid, 'SIGKILL'); } catch { /* group already empty */ }
340
+ return;
341
+ }
277
342
  if (process.platform === 'win32') {
278
- // Fire-and-forget: a slow, denied, or missing taskkill must not block the
279
- // runner past the outer hooks.json budget. The runner still exits fail-open
280
- // via child.unref() on the timeout path; taskkill reaps the tree best-effort.
343
+ // Protocol stdout/stderr are owned by run.cjs pipes, so a descendant that
344
+ // outlives this process cannot retain Claude Code's handles (#3920).
345
+ // Do not spawnSync here: Node waits for the killer even after its timeout,
346
+ // which can hold the runner past the declared host fuse. Fire-and-forget
347
+ // taskkill with stdio ignored after protocol detach is the fail-open path.
281
348
  try {
282
349
  const killer = spawn('taskkill', ['/T', '/F', '/PID', String(child.pid)], {
283
350
  windowsHide: true,
@@ -310,7 +377,310 @@ function resolveGenericChildCommand(targetPath, extraArgs, platform = process.pl
310
377
  : [targetPath, ...extraArgs];
311
378
  }
312
379
 
380
+ function resolveGenericChildStdio(platform = process.platform) {
381
+ // stdin inherit: hook JSON payload from Claude Code.
382
+ // stdout/stderr pipe: run.cjs owns the protocol handles so a descendant that
383
+ // outlives the runner cannot keep Claude Code blocked on EOF (#3920).
384
+ // ipc: Windows supervisor parent-death reap.
385
+ return platform === 'win32'
386
+ ? ['inherit', 'pipe', 'pipe', 'ipc']
387
+ : ['inherit', 'pipe', 'pipe'];
388
+ }
389
+
390
+ function isClosedDestinationError(error) {
391
+ const code = error && error.code;
392
+ return code === 'EPIPE' || code === 'ERR_STREAM_DESTROYED' || code === 'ERR_STREAM_WRITE_AFTER_END';
393
+ }
394
+
395
+
396
+ let processDestGuardsInstalled = false;
397
+ function ensureProcessDestGuards() {
398
+ if (processDestGuardsInstalled) return;
399
+ processDestGuardsInstalled = true;
400
+ const guard = (error) => {
401
+ if (isClosedDestinationError(error)) return;
402
+ try {
403
+ writeSync(2, `[run.cjs] protocol stream error: ${error.code || error.message}\n`);
404
+ } catch { /* both destinations dead */ }
405
+ };
406
+ process.stdout.on('error', guard);
407
+ process.stderr.on('error', guard);
408
+ }
409
+
410
+ function createProtocolSink(hooks = {}) {
411
+ const destinations = {
412
+ stdout: hooks.stdout || process.stdout,
413
+ stderr: hooks.stderr || process.stderr,
414
+ };
415
+ const discarded = { stdout: false, stderr: false };
416
+ const closedDest = { stdout: false, stderr: false };
417
+ const bindings = { stdout: [], stderr: [] };
418
+ const discardedSources = { stdout: [], stderr: [] };
419
+ let installed = false;
420
+ let pendingWrites = 0;
421
+ let uninstallRequested = false;
422
+ const onStdoutError = (error) => handleDestError('stdout', destinations.stdout, error);
423
+ const onStderrError = (error) => handleDestError('stderr', destinations.stderr, error);
424
+
425
+ function teardownChannel(name) {
426
+ discarded[name] = true;
427
+ const snapshot = bindings[name];
428
+ bindings[name] = [];
429
+ for (const binding of snapshot) {
430
+ try { binding.source.unpipe(binding.tap); } catch { /* already unpiped */ }
431
+ try { binding.tap.unpipe(binding.writer); } catch { /* already unpiped */ }
432
+ try { binding.tap.destroy(); } catch { /* already destroyed */ }
433
+ try { binding.writer.destroy(); } catch { /* already destroyed */ }
434
+ }
435
+ if (typeof hooks.beforeSourceDestroy === 'function') hooks.beforeSourceDestroy();
436
+ for (const binding of snapshot) {
437
+ try { binding.source.destroy(); } catch { /* already destroyed */ }
438
+ }
439
+ }
440
+
441
+ function discardChannel(name) {
442
+ discarded[name] = true;
443
+ const snapshot = bindings[name];
444
+ bindings[name] = [];
445
+ for (const binding of snapshot) {
446
+ try { binding.source.unpipe(binding.tap); } catch { /* already unpiped */ }
447
+ try { binding.tap.unpipe(binding.writer); } catch { /* already unpiped */ }
448
+ try { binding.tap.destroy(); } catch { /* already destroyed */ }
449
+ try { binding.writer.destroy(); } catch { /* already destroyed */ }
450
+ discardedSources[name].push(binding.source);
451
+ try { binding.source.resume(); } catch { /* already flowing or destroyed */ }
452
+ }
453
+ }
454
+
455
+ function destroyDiscardedSources() {
456
+ for (const name of ['stdout', 'stderr']) {
457
+ const sources = discardedSources[name];
458
+ discardedSources[name] = [];
459
+ for (const source of sources) {
460
+ try { source.destroy(); } catch { /* already destroyed */ }
461
+ }
462
+ }
463
+ }
464
+
465
+ function handleDestError(name, dest, error) {
466
+ if (discarded[name]) return;
467
+ if (isClosedDestinationError(error)) closedDest[name] = true;
468
+ // Close only the failed protocol channel first. Keep its child pipe
469
+ // draining while the sibling channel remains available; reaping here can
470
+ // race sibling bytes that the hook has not written yet.
471
+ discardChannel(name);
472
+ if (typeof hooks.onDestinationClose === 'function') hooks.onDestinationClose(name);
473
+ if (!isClosedDestinationError(error) && name === 'stdout') {
474
+ void write(process.stderr, Buffer.from(`[run.cjs] protocol stream error: ${error.code || error.message}\n`));
475
+ }
476
+ }
477
+
478
+ function install() {
479
+ ensureProcessDestGuards();
480
+ if (installed) return;
481
+ installed = true;
482
+ destinations.stdout.on('error', onStdoutError);
483
+ destinations.stderr.on('error', onStderrError);
484
+ }
485
+
486
+ function flushUninstall() {
487
+ if (!uninstallRequested || pendingWrites > 0 || !installed) return;
488
+ installed = false;
489
+ destinations.stdout.removeListener('error', onStdoutError);
490
+ destinations.stderr.removeListener('error', onStderrError);
491
+ // Process-lifetime closed-dest guards remain so a late write callback
492
+ // EPIPE after finish() cannot crash the runner.
493
+ }
494
+
495
+ function uninstall() {
496
+ uninstallRequested = true;
497
+ flushUninstall();
498
+ }
499
+
500
+ function abandonOutputs() {
501
+ teardownChannel('stdout');
502
+ teardownChannel('stderr');
503
+ destroyDiscardedSources();
504
+ }
505
+
506
+ function closeDestinations() {
507
+ for (const dest of [destinations.stdout, destinations.stderr]) {
508
+ try { dest.destroy(); } catch { /* already closed */ }
509
+ }
510
+ }
511
+
512
+ function write(dest, data) {
513
+ install();
514
+ const name = dest === destinations.stderr ? 'stderr' : 'stdout';
515
+ if (discarded[name] || !dest || dest.destroyed || !dest.writable) return Promise.resolve();
516
+ if (dest.writableNeedDrain) {
517
+ discarded[name] = true;
518
+ return Promise.resolve();
519
+ }
520
+ pendingWrites += 1;
521
+ return new Promise((resolve) => {
522
+ let settled = false;
523
+ const done = () => {
524
+ if (settled) return;
525
+ settled = true;
526
+ resolve();
527
+ };
528
+ const completeWrite = (error) => {
529
+ if (writeCompleted) {
530
+ if (error) handleDestError(name, dest, error);
531
+ return;
532
+ }
533
+ writeCompleted = true;
534
+ pendingWrites = Math.max(0, pendingWrites - 1);
535
+ if (error) handleDestError(name, dest, error);
536
+ clearTimeout(timer);
537
+ done();
538
+ flushUninstall();
539
+ };
540
+ let writeCompleted = false;
541
+ const timer = setTimeout(done, PROTOCOL_STDIO_SETTLE_MS);
542
+ try {
543
+ const ok = dest.write(data, (error) => completeWrite(error));
544
+ if (!ok) completeWrite();
545
+ } catch (error) {
546
+ completeWrite(error);
547
+ }
548
+ });
549
+ }
550
+
551
+ function attachChild(child) {
552
+ install();
553
+ const bind = (source, dest, name) => {
554
+ if (!source) return;
555
+ const tap = new PassThrough();
556
+ const binding = {
557
+ source,
558
+ tap,
559
+ dest,
560
+ writer: null,
561
+ completed: false,
562
+ lastProgressAt: Date.now(),
563
+ };
564
+ const writer = new Writable({
565
+ write(chunk, _encoding, callback) {
566
+ let offset = 0;
567
+ const writeNext = () => {
568
+ if (discarded[name] || !dest || dest.destroyed || !dest.writable) {
569
+ callback();
570
+ return;
571
+ }
572
+ if (offset >= chunk.length) {
573
+ callback();
574
+ return;
575
+ }
576
+ const end = Math.min(offset + 1024, chunk.length);
577
+ const slice = chunk.subarray(offset, end);
578
+ offset = end;
579
+ try {
580
+ dest.write(slice, (error) => {
581
+ if (error) {
582
+ handleDestError(name, dest, error);
583
+ callback();
584
+ return;
585
+ }
586
+ binding.lastProgressAt = Date.now();
587
+ writeNext();
588
+ });
589
+ } catch (error) {
590
+ handleDestError(name, dest, error);
591
+ callback();
592
+ }
593
+ };
594
+ writeNext();
595
+ },
596
+ });
597
+ binding.writer = writer;
598
+ bindings[name].push(binding);
599
+ source.on('data', () => { binding.lastProgressAt = Date.now(); });
600
+ source.pipe(tap);
601
+ tap.pipe(writer);
602
+ tap.on('error', (error) => handleDestError(name, dest, error));
603
+ writer.on('finish', () => { binding.completed = true; });
604
+ writer.on('error', (error) => handleDestError(name, dest, error));
605
+ };
606
+ bind(child.stdout, destinations.stdout, 'stdout');
607
+ bind(child.stderr, destinations.stderr, 'stderr');
608
+ }
609
+
610
+ function settleOutputs(timeoutMs, idleMs = PROTOCOL_SOURCE_IDLE_MS, reapIdleSources = true) {
611
+ const active = [...bindings.stdout, ...bindings.stderr];
612
+ if (active.length === 0) return Promise.resolve(true);
613
+ const deadline = Date.now() + Math.max(1, timeoutMs);
614
+ return new Promise(resolve => {
615
+ let settled = false;
616
+ const finish = (complete) => {
617
+ if (settled) return;
618
+ settled = true;
619
+ clearInterval(timer);
620
+ resolve(complete);
621
+ };
622
+ const inspect = () => {
623
+ if (Date.now() >= deadline) {
624
+ abandonOutputs();
625
+ finish(false);
626
+ return;
627
+ }
628
+ if (active.every(binding => (binding.completed && !binding.dest.writableNeedDrain) || binding.writer.destroyed)) {
629
+ finish(true);
630
+ return;
631
+ }
632
+ if (!reapIdleSources) return;
633
+ const now = Date.now();
634
+ for (const binding of active) {
635
+ if (binding.completed || binding.writer.destroyed) continue;
636
+ if (now - binding.lastProgressAt < idleMs) continue;
637
+ const sourceEnded = binding.source.readableEnded || binding.source.destroyed;
638
+ const bufferedBytes = binding.source.readableLength + binding.tap.readableLength +
639
+ binding.writer.writableLength + (binding.dest.writableLength || 0);
640
+ // An open source with an empty pipeline after the leader exited is a
641
+ // leaked descendant handle. Buffered bytes, by contrast, are valid
642
+ // protocol output and retain the remaining declared hook budget.
643
+ if (!sourceEnded && bufferedBytes === 0) {
644
+ teardownChannel(binding.dest === process.stderr ? 'stderr' : 'stdout');
645
+ }
646
+ }
647
+ };
648
+ const timer = setInterval(inspect, Math.max(5, Math.floor(idleMs / 4)));
649
+ inspect();
650
+ });
651
+ }
652
+
653
+ return {
654
+ install,
655
+ uninstall,
656
+ write,
657
+ attachChild,
658
+ settleOutputs,
659
+ abandonOutputs,
660
+ closeDestinations,
661
+ hasClosedDestination: () => closedDest.stdout || closedDest.stderr,
662
+ };
663
+ }
664
+
665
+ function detachProtocolStdio(child) {
666
+ if (!child) return;
667
+ for (const [stream, dest] of [[child.stdout, process.stdout], [child.stderr, process.stderr]]) {
668
+ if (!stream) continue;
669
+ try { stream.unpipe(dest); } catch { /* already detached */ }
670
+ try {
671
+ if (typeof stream.pause === 'function') stream.pause();
672
+ const destWritable = dest && !dest.destroyed && dest.writable && !dest.writableNeedDrain;
673
+ if (typeof stream.read === 'function' && destWritable) {
674
+ let chunk;
675
+ while ((chunk = stream.read()) !== null) dest.write(chunk);
676
+ }
677
+ } catch { /* remaining buffered bytes are best-effort */ }
678
+ try { stream.destroy(); } catch { /* already destroyed */ }
679
+ }
680
+ }
681
+
313
682
  function releaseGenericChild(child) {
683
+ detachProtocolStdio(child);
314
684
  try {
315
685
  if (child.connected) child.disconnect();
316
686
  } catch {
@@ -351,13 +721,75 @@ function superviseGenericChild(targetPath, extraArgs) {
351
721
  child.once('error', () => finish(0));
352
722
  }
353
723
 
354
-
355
- function runGenericChild(targetPath, extraArgs, timeoutMs, manifestHook) {
724
+ function runGenericChild(targetPath, extraArgs, timeoutMs, manifestHook, options = {}) {
725
+ let child;
726
+ let childIdentity = null;
727
+ let reaped = false;
728
+ const reapOnce = () => {
729
+ if (reaped || !child) return;
730
+ reaped = true;
731
+ reapTree(child, childIdentity);
732
+ };
733
+ let destinationClosed = false;
734
+ let startClosedDestinationCleanup = () => {};
735
+ const sink = createProtocolSink({
736
+ stdout: options.stdout,
737
+ stderr: options.stderr,
738
+ beforeSourceDestroy: reapOnce,
739
+ onDestinationClose: () => {
740
+ destinationClosed = true;
741
+ startClosedDestinationCleanup();
742
+ },
743
+ });
744
+ sink.install();
356
745
  return new Promise(resolve => {
746
+ const protocolDeadline = Date.now() + timeoutMs;
357
747
  let terminal = false;
748
+ let settling = false;
358
749
  let timer;
359
- const child = spawn(process.execPath, resolveGenericChildCommand(targetPath, extraArgs), {
360
- stdio: process.platform === 'win32' ? ['inherit', 'inherit', 'inherit', 'ipc'] : 'inherit',
750
+ let closeCleanupStarted = false;
751
+ let closeCleanupTimer;
752
+ const closeGraceMs = Math.min(timeoutMs, WINDOWS_GENERIC_STARTUP_MS + PROTOCOL_STDIO_SETTLE_MS);
753
+ let detachHandlers = () => {};
754
+ const finish = (status) => {
755
+ if (closeCleanupTimer) {
756
+ clearTimeout(closeCleanupTimer);
757
+ closeCleanupTimer = undefined;
758
+ }
759
+ sink.uninstall();
760
+ resolve(status);
761
+ };
762
+ const finishClosedDestination = () => {
763
+ if (terminal) return;
764
+ terminal = true;
765
+ settling = false;
766
+ if (closeCleanupTimer) {
767
+ clearTimeout(closeCleanupTimer);
768
+ closeCleanupTimer = undefined;
769
+ }
770
+ detachHandlers();
771
+ reapOnce();
772
+ sink.abandonOutputs();
773
+ detachProtocolStdio(child);
774
+ releaseGenericChild(child);
775
+ finish(0);
776
+ };
777
+ startClosedDestinationCleanup = () => {
778
+ if (closeCleanupStarted || terminal) return;
779
+ closeCleanupStarted = true;
780
+ closeCleanupTimer = setTimeout(finishClosedDestination, closeGraceMs);
781
+ if (settling) return;
782
+ settling = true;
783
+ // Do not apply the leaked-descendant idle heuristic while the leader may
784
+ // still be cold-starting. The close timer provides the bounded fallback;
785
+ // normal post-exit settling retains the 80ms orphan detection.
786
+ void sink.settleOutputs(closeGraceMs, PROTOCOL_SOURCE_IDLE_MS, false).then(() => {
787
+ settling = false;
788
+ finishClosedDestination();
789
+ });
790
+ };
791
+ child = spawn(process.execPath, resolveGenericChildCommand(targetPath, extraArgs), {
792
+ stdio: resolveGenericChildStdio(),
361
793
  env: {
362
794
  ...process.env,
363
795
  OMC_SESSION_OWNER_PID: process.env.OMC_SESSION_OWNER_PID || String(process.ppid),
@@ -365,57 +797,89 @@ function runGenericChild(targetPath, extraArgs, timeoutMs, manifestHook) {
365
797
  windowsHide: true,
366
798
  detached: true,
367
799
  });
368
- // Capture the durable start identity immediately so reapTree can reject
369
- // a PID that was reused after the child exited.
370
- const childIdentity = child.pid ? captureProcessStartIdentity(child.pid) : null;
800
+ sink.attachChild(child);
801
+ childIdentity = child.pid ? captureProcessStartIdentity(child.pid) : null;
371
802
 
372
803
  // The generic child is detached into its own process group (POSIX). If the
373
804
  // runner is terminated or cancelled BEFORE the inner timer fires (outer
374
805
  // hooks.json timeout, Ctrl-C, parent kill), reap the tree so the detached
375
806
  // hook cannot be orphaned — the exact failure class #3493 must not leave open.
376
- const detachHandlers = () => {
807
+ detachHandlers = () => {
377
808
  clearTimeout(timer);
378
809
  for (const signal of RUNNER_TERMINATION_SIGNALS) process.off(signal, onRunnerSignal);
379
810
  process.off('exit', onRunnerExit);
380
811
  };
381
812
  function onRunnerSignal() {
382
- if (terminal) return;
813
+ if (terminal && !settling) return;
383
814
  terminal = true;
815
+ settling = false;
384
816
  detachHandlers();
385
- reapTree(child, childIdentity);
817
+ reapOnce();
818
+ sink.abandonOutputs();
819
+ detachProtocolStdio(child);
820
+ sink.uninstall();
386
821
  process.exit(0);
387
822
  }
388
823
  function onRunnerExit() {
389
- if (terminal) return;
824
+ if (terminal && !settling) return;
390
825
  terminal = true;
391
- reapTree(child, childIdentity);
826
+ settling = false;
827
+ reapOnce();
828
+ sink.abandonOutputs();
829
+ detachProtocolStdio(child);
392
830
  }
393
831
 
394
832
  timer = setTimeout(() => {
395
833
  if (terminal) return;
396
834
  terminal = true;
397
835
  detachHandlers();
398
- reapTree(child, childIdentity);
399
- // The runner MUST exit fail-open even if the tree reap did not (or could
400
- // not) complete — the core #3493 symptom is run.cjs parents living for
401
- // tens of minutes. Closing the Windows IPC channel also tells the
402
- // supervisor to reap the hook tree if taskkill did not complete.
403
- releaseGenericChild(child);
404
- writeTimeoutDiagnostic(targetPath, manifestHook, timeoutMs);
405
- resolve(0);
836
+ reapOnce();
837
+ void writeTimeoutDiagnostic(targetPath, manifestHook, timeoutMs, sink).finally(() => {
838
+ sink.abandonOutputs();
839
+ detachProtocolStdio(child);
840
+ releaseGenericChild(child);
841
+ if (require.main === module) {
842
+ sink.closeDestinations();
843
+ }
844
+ finish(0);
845
+ });
406
846
  }, timeoutMs);
407
847
 
408
848
  child.once('exit', (code) => {
409
849
  if (terminal) return;
410
- terminal = true;
411
- detachHandlers();
412
- resolve(typeof code === 'number' ? code : 0);
850
+ if (destinationClosed) return;
851
+ settling = true;
852
+ clearTimeout(timer);
853
+ // Drain then close even on a clean hook exit. A detached descendant that
854
+ // inherited the child's stdout/stderr keeps the pipe readableEnded=false;
855
+ // leaving the forwarders attached would pin process.stdout and wedge EOF
856
+ // (#3920 success-path hang, outer harness timeout 124).
857
+ const remainingProtocolMs = Math.max(1, protocolDeadline - Date.now());
858
+ void sink.settleOutputs(remainingProtocolMs).then((complete) => {
859
+ settling = false;
860
+ if (terminal) return;
861
+ if (destinationClosed) {
862
+ finishClosedDestination();
863
+ return;
864
+ }
865
+ detachHandlers();
866
+ reapOnce();
867
+ if (!complete && require.main === module) {
868
+ sink.closeDestinations();
869
+ releaseGenericChild(child);
870
+ return process.exit(1);
871
+ }
872
+ releaseGenericChild(child);
873
+ const childStatus = typeof code === 'number' ? code : 0;
874
+ finish(complete ? (sink.hasClosedDestination() ? 0 : childStatus) : 1);
875
+ });
413
876
  });
414
877
  child.once('error', () => {
415
878
  if (terminal) return;
416
879
  terminal = true;
417
880
  detachHandlers();
418
- resolve(0);
881
+ detachProtocolStdio(child);
882
+ finish(0);
419
883
  });
420
884
 
421
885
  for (const signal of RUNNER_TERMINATION_SIGNALS) process.on(signal, onRunnerSignal);
@@ -423,6 +887,49 @@ function runGenericChild(targetPath, extraArgs, timeoutMs, manifestHook) {
423
887
  });
424
888
  }
425
889
 
890
+ // A Worker created with `stdin: true` owns a stdio MessagePort that stays
891
+ // referenced until its stdin reaches EOF, and the parent cannot release it from
892
+ // the outside: ending or destroying `worker.stdin` leaves the worker-side
893
+ // readable open, so the worker never exits. A hook that returns before touching
894
+ // stdin — every `OMC_SKIP_HOOKS` / `DISABLE_OMC=1` early return — therefore
895
+ // idled until the manifest budget expired and was reported as a bogus timeout
896
+ // while the payload sat unread (#4086).
897
+ //
898
+ // This bootstrap runs the hook unchanged and, once its module evaluation has
899
+ // settled, resumes stdin only when the hook provably never looked at it: not
900
+ // flowing and no reader attached. Resuming drains the already-delivered payload
901
+ // to EOF, which releases the port; destroying the stream instead would break
902
+ // the EOF path and pin the worker forever. A hook that does read stdin attaches
903
+ // its listeners synchronously inside `main()` before its first await, so it is
904
+ // always observed as a consumer and keeps the untouched behaviour. Only
905
+ // 'data'/'readable' count as a reader: Node attaches its own internal 'end'
906
+ // listener to a worker stdin.
907
+ //
908
+ // `process.argv[1]` is restored to the hook path so entry guards of the form
909
+ // `import.meta.url === pathToFileURL(process.argv[1]).href` still fire.
910
+ const WORKER_STDIN_BOOTSTRAP = `
911
+ const { workerData } = require('node:worker_threads');
912
+ const { fileURLToPath } = require('node:url');
913
+ const targetUrl = workerData.omcWorkerTarget;
914
+ process.argv[1] = fileURLToPath(targetUrl);
915
+ function drainUnreadStdin() {
916
+ const stdin = process.stdin;
917
+ if (!stdin || stdin.destroyed || stdin.readableEnded) return;
918
+ if (stdin.readableFlowing === true) return;
919
+ if (stdin.listenerCount('data') > 0 || stdin.listenerCount('readable') > 0) return;
920
+ try { stdin.resume(); } catch { /* already closed */ }
921
+ }
922
+ import(targetUrl).then(
923
+ () => { setImmediate(drainUnreadStdin); },
924
+ (error) => {
925
+ setImmediate(() => {
926
+ drainUnreadStdin();
927
+ throw error;
928
+ });
929
+ },
930
+ );
931
+ `;
932
+
426
933
  async function runWorker(targetPath, manifestHook, timeoutMs) {
427
934
  let worker;
428
935
  let terminal = false;
@@ -430,6 +937,8 @@ async function runWorker(targetPath, manifestHook, timeoutMs) {
430
937
  let discardOutput = false;
431
938
  const stdout = [];
432
939
  const stderr = [];
940
+ const sink = createProtocolSink();
941
+ sink.install();
433
942
 
434
943
  const cleanupInput = () => {
435
944
  if (!worker) return;
@@ -439,15 +948,12 @@ async function runWorker(targetPath, manifestHook, timeoutMs) {
439
948
  const waitForOutputEnd = stream => stream.readableEnded
440
949
  ? Promise.resolve()
441
950
  : new Promise(resolve => stream.once('end', resolve));
442
- const writeBuffer = (stream, buffer) => new Promise(resolve => {
443
- stream.write(buffer, () => resolve());
444
- });
445
951
  const forwardBuffers = async (workerError) => {
446
- if (stdout.length) await writeBuffer(process.stdout, Buffer.concat(stdout));
447
- if (stderr.length) await writeBuffer(process.stderr, Buffer.concat(stderr));
952
+ if (stdout.length) await sink.write(process.stdout, Buffer.concat(stdout));
953
+ if (stderr.length) await sink.write(process.stderr, Buffer.concat(stderr));
448
954
  if (workerError) {
449
955
  const diagnostic = workerError.stack || workerError.message || String(workerError);
450
- await writeBuffer(process.stderr, Buffer.from(`${diagnostic}\n`));
956
+ await sink.write(process.stderr, Buffer.from(`${diagnostic}\n`));
451
957
  }
452
958
  };
453
959
  const waitForWorkerOutput = () => Promise.all([
@@ -464,6 +970,7 @@ async function runWorker(targetPath, manifestHook, timeoutMs) {
464
970
  cleanupInput();
465
971
  if (worker) await waitForWorkerOutput();
466
972
  await forwardBuffers(workerError);
973
+ sink.uninstall();
467
974
  resolve(status);
468
975
  };
469
976
 
@@ -477,16 +984,19 @@ async function runWorker(targetPath, manifestHook, timeoutMs) {
477
984
  } catch {
478
985
  // Termination is best-effort; the hook must still fail open.
479
986
  }
480
- writeTimeoutDiagnostic(targetPath, manifestHook, timeoutMs);
987
+ await writeTimeoutDiagnostic(targetPath, manifestHook, timeoutMs, sink);
988
+ sink.uninstall();
481
989
  resolve(0);
482
990
  }, timeoutMs);
483
991
 
484
992
  try {
485
- worker = new Worker(pathToFileURL(targetPath), {
993
+ worker = new Worker(WORKER_STDIN_BOOTSTRAP, {
994
+ eval: true,
486
995
  stdin: true,
487
996
  stdout: true,
488
997
  stderr: true,
489
998
  env: process.env,
999
+ workerData: { omcWorkerTarget: pathToFileURL(targetPath).href },
490
1000
  });
491
1001
  if (process.stdin.readableEnded) worker.stdin.end();
492
1002
  else process.stdin.pipe(worker.stdin);
@@ -508,6 +1018,7 @@ async function runWorker(targetPath, manifestHook, timeoutMs) {
508
1018
  }
509
1019
 
510
1020
  if (require.main === module) {
1021
+ ensureProcessDestGuards();
511
1022
  const target = process.argv[2];
512
1023
  if (target === '--generic-child-supervisor') {
513
1024
  const supervisedTarget = process.argv[3];
@@ -523,19 +1034,22 @@ if (require.main === module) {
523
1034
  const extraArgs = process.argv.slice(3);
524
1035
  const workerManifestHook = resolveWorkerTarget(resolution, extraArgs);
525
1036
  if (workerManifestHook) {
526
- const workerTimeoutMs = resolveTrustedPromptWorkerTimeoutMs(resolution.targetPath, workerManifestHook, resolution.trustedPluginRoot);
1037
+ const workerTimeoutMs = resolveTrustedWorkerTimeoutMs(resolution.targetPath, workerManifestHook);
527
1038
  runWorker(resolution.targetPath, workerManifestHook, workerTimeoutMs).then(status => {
528
1039
  process.exitCode = status;
529
1040
  });
530
1041
  } else {
531
1042
  const sessionEndManifestHook = resolveTrustedSessionEndTarget(resolution, extraArgs);
532
1043
  if (sessionEndManifestHook) {
1044
+ // The shipped foreground budget stays 300ms unconditionally; only the
1045
+ // test harness may widen it, and only under NODE_ENV=test.
533
1046
  const requestedTestTimeout = process.env.NODE_ENV === 'test'
534
1047
  ? Number(process.env.OMC_SESSION_END_TEST_FOREGROUND_TIMEOUT_MS)
535
1048
  : NaN;
536
- const timeoutMs = Number.isFinite(requestedTestTimeout) && requestedTestTimeout > 0
537
- ? Math.min(resolveGenericTimeoutMs(sessionEndManifestHook), requestedTestTimeout)
538
- : Math.min(resolveGenericTimeoutMs(sessionEndManifestHook), 300);
1049
+ const budgetMs = Number.isFinite(requestedTestTimeout) && requestedTestTimeout > 0
1050
+ ? requestedTestTimeout
1051
+ : 300;
1052
+ const timeoutMs = Math.min(resolveGenericTimeoutMs(sessionEndManifestHook), budgetMs);
539
1053
  runWorker(resolution.targetPath, sessionEndManifestHook, timeoutMs).then(status => {
540
1054
  process.exitCode = status;
541
1055
  });
@@ -553,13 +1067,28 @@ if (require.main === module) {
553
1067
 
554
1068
  module.exports = {
555
1069
  resolveInnerTimeoutMs,
556
- resolveTrustedPromptWorkerTimeoutMs,
1070
+ resolveTrustedWorkerTimeoutMs,
557
1071
  resolveWorkerTarget,
558
1072
  resolveHookTimeoutMs,
559
1073
  resolveGenericTimeoutMs,
1074
+ resolveTimeoutCushionMs,
1075
+ desiredTimeoutCushionMs,
1076
+ platformTimeoutCushionMs,
560
1077
  runGenericChild,
561
1078
  resolveGenericChildCommand,
1079
+ resolveGenericChildStdio,
562
1080
  releaseGenericChild,
1081
+ isClosedDestinationError,
563
1082
  DEFAULT_GENERIC_TIMEOUT_MS,
1083
+ TIMEOUT_CUSHION_MS,
1084
+ WINDOWS_TIMEOUT_CUSHION_MS,
1085
+ WINDOWS_REAP_TIMEOUT_MS,
1086
+ MIN_HOOK_INNER_MS,
1087
+ MIN_HOOK_INNER_FRACTION,
1088
+ WINDOWS_GENERIC_STARTUP_MS,
1089
+ NESTED_OPERATION_TIMEOUT_MS,
1090
+ NESTED_OPERATION_MARGIN_MS,
1091
+ NESTED_INNER_FLOOR_MS,
1092
+ MAX_DECLARED_GENERIC_TIMEOUT_MS,
564
1093
  resolveTrustedSessionEndTarget,
565
1094
  };