oh-my-codex 0.21.0 → 0.21.2

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 (346) hide show
  1. package/Cargo.toml +1 -1
  2. package/README.md +4 -2
  3. package/dist/cli/__tests__/detached-launch-diagnostics-3578.test.d.ts +2 -0
  4. package/dist/cli/__tests__/detached-launch-diagnostics-3578.test.d.ts.map +1 -0
  5. package/dist/cli/__tests__/detached-launch-diagnostics-3578.test.js +592 -0
  6. package/dist/cli/__tests__/detached-launch-diagnostics-3578.test.js.map +1 -0
  7. package/dist/cli/__tests__/detached-leader-teardown.test.js +270 -33
  8. package/dist/cli/__tests__/detached-leader-teardown.test.js.map +1 -1
  9. package/dist/cli/__tests__/doctor-warning-copy.test.js +133 -5
  10. package/dist/cli/__tests__/doctor-warning-copy.test.js.map +1 -1
  11. package/dist/cli/__tests__/index.test.js +543 -2
  12. package/dist/cli/__tests__/index.test.js.map +1 -1
  13. package/dist/cli/__tests__/issue-windows-cancel-identity.test.d.ts +2 -0
  14. package/dist/cli/__tests__/issue-windows-cancel-identity.test.d.ts.map +1 -0
  15. package/dist/cli/__tests__/issue-windows-cancel-identity.test.js +17 -0
  16. package/dist/cli/__tests__/issue-windows-cancel-identity.test.js.map +1 -0
  17. package/dist/cli/__tests__/launch-fallback.test.js +15 -3
  18. package/dist/cli/__tests__/launch-fallback.test.js.map +1 -1
  19. package/dist/cli/__tests__/package-bin-contract.test.js +20 -0
  20. package/dist/cli/__tests__/package-bin-contract.test.js.map +1 -1
  21. package/dist/cli/__tests__/plugin-cache-stale-lock.test.d.ts +2 -0
  22. package/dist/cli/__tests__/plugin-cache-stale-lock.test.d.ts.map +1 -0
  23. package/dist/cli/__tests__/plugin-cache-stale-lock.test.js +76 -0
  24. package/dist/cli/__tests__/plugin-cache-stale-lock.test.js.map +1 -0
  25. package/dist/cli/__tests__/plugin-cache-symlink-provenance-3552.test.d.ts +2 -0
  26. package/dist/cli/__tests__/plugin-cache-symlink-provenance-3552.test.d.ts.map +1 -0
  27. package/dist/cli/__tests__/plugin-cache-symlink-provenance-3552.test.js +1662 -0
  28. package/dist/cli/__tests__/plugin-cache-symlink-provenance-3552.test.js.map +1 -0
  29. package/dist/cli/__tests__/plugin-launcher-provenance-3558.test.d.ts +2 -0
  30. package/dist/cli/__tests__/plugin-launcher-provenance-3558.test.d.ts.map +1 -0
  31. package/dist/cli/__tests__/plugin-launcher-provenance-3558.test.js +522 -0
  32. package/dist/cli/__tests__/plugin-launcher-provenance-3558.test.js.map +1 -0
  33. package/dist/cli/__tests__/ralplan-advisory.test.d.ts +2 -0
  34. package/dist/cli/__tests__/ralplan-advisory.test.d.ts.map +1 -0
  35. package/dist/cli/__tests__/ralplan-advisory.test.js +301 -0
  36. package/dist/cli/__tests__/ralplan-advisory.test.js.map +1 -0
  37. package/dist/cli/__tests__/ralplan.test.js +39 -0
  38. package/dist/cli/__tests__/ralplan.test.js.map +1 -1
  39. package/dist/cli/__tests__/resume.test.js +81 -6
  40. package/dist/cli/__tests__/resume.test.js.map +1 -1
  41. package/dist/cli/__tests__/session-scoped-runtime.test.js +423 -4
  42. package/dist/cli/__tests__/session-scoped-runtime.test.js.map +1 -1
  43. package/dist/cli/__tests__/setup-install-mode.test.js +60 -3
  44. package/dist/cli/__tests__/setup-install-mode.test.js.map +1 -1
  45. package/dist/cli/__tests__/setup-refresh.test.js +9 -0
  46. package/dist/cli/__tests__/setup-refresh.test.js.map +1 -1
  47. package/dist/cli/__tests__/sparkshell-cli.test.js +4 -0
  48. package/dist/cli/__tests__/sparkshell-cli.test.js.map +1 -1
  49. package/dist/cli/__tests__/ultragoal.test.js +71 -0
  50. package/dist/cli/__tests__/ultragoal.test.js.map +1 -1
  51. package/dist/cli/__tests__/windows-popup-loop-contract.test.js +30 -4
  52. package/dist/cli/__tests__/windows-popup-loop-contract.test.js.map +1 -1
  53. package/dist/cli/doctor.d.ts.map +1 -1
  54. package/dist/cli/doctor.js +57 -8
  55. package/dist/cli/doctor.js.map +1 -1
  56. package/dist/cli/index.d.ts +113 -7
  57. package/dist/cli/index.d.ts.map +1 -1
  58. package/dist/cli/index.js +1850 -185
  59. package/dist/cli/index.js.map +1 -1
  60. package/dist/cli/native-assets.d.ts +2 -1
  61. package/dist/cli/native-assets.d.ts.map +1 -1
  62. package/dist/cli/native-assets.js +7 -7
  63. package/dist/cli/native-assets.js.map +1 -1
  64. package/dist/cli/plugin-marketplace.d.ts +89 -4
  65. package/dist/cli/plugin-marketplace.d.ts.map +1 -1
  66. package/dist/cli/plugin-marketplace.js +2135 -118
  67. package/dist/cli/plugin-marketplace.js.map +1 -1
  68. package/dist/cli/ralplan.d.ts +2 -1
  69. package/dist/cli/ralplan.d.ts.map +1 -1
  70. package/dist/cli/ralplan.js +149 -9
  71. package/dist/cli/ralplan.js.map +1 -1
  72. package/dist/cli/setup.d.ts.map +1 -1
  73. package/dist/cli/setup.js +7 -1
  74. package/dist/cli/setup.js.map +1 -1
  75. package/dist/cli/sparkshell.d.ts.map +1 -1
  76. package/dist/cli/sparkshell.js +9 -10
  77. package/dist/cli/sparkshell.js.map +1 -1
  78. package/dist/cli/update-worker.js +9 -0
  79. package/dist/cli/update-worker.js.map +1 -1
  80. package/dist/cli/update.d.ts +1 -0
  81. package/dist/cli/update.d.ts.map +1 -1
  82. package/dist/cli/update.js +9 -0
  83. package/dist/cli/update.js.map +1 -1
  84. package/dist/config/__tests__/generator-idempotent.test.js +118 -0
  85. package/dist/config/__tests__/generator-idempotent.test.js.map +1 -1
  86. package/dist/config/generator.d.ts.map +1 -1
  87. package/dist/config/generator.js +74 -4
  88. package/dist/config/generator.js.map +1 -1
  89. package/dist/hooks/__tests__/keyword-detector.test.js +74 -0
  90. package/dist/hooks/__tests__/keyword-detector.test.js.map +1 -1
  91. package/dist/hooks/__tests__/ralplan-advisory-keyword.test.d.ts +2 -0
  92. package/dist/hooks/__tests__/ralplan-advisory-keyword.test.d.ts.map +1 -0
  93. package/dist/hooks/__tests__/ralplan-advisory-keyword.test.js +250 -0
  94. package/dist/hooks/__tests__/ralplan-advisory-keyword.test.js.map +1 -0
  95. package/dist/hooks/__tests__/session.test.js +10 -1
  96. package/dist/hooks/__tests__/session.test.js.map +1 -1
  97. package/dist/hooks/keyword-detector.d.ts +8 -1
  98. package/dist/hooks/keyword-detector.d.ts.map +1 -1
  99. package/dist/hooks/keyword-detector.js +130 -9
  100. package/dist/hooks/keyword-detector.js.map +1 -1
  101. package/dist/hooks/session.d.ts +5 -0
  102. package/dist/hooks/session.d.ts.map +1 -1
  103. package/dist/hooks/session.js +17 -3
  104. package/dist/hooks/session.js.map +1 -1
  105. package/dist/hud/__tests__/index.test.js +16 -1
  106. package/dist/hud/__tests__/index.test.js.map +1 -1
  107. package/dist/hud/__tests__/reconcile.test.js +134 -7
  108. package/dist/hud/__tests__/reconcile.test.js.map +1 -1
  109. package/dist/hud/__tests__/render.test.js +57 -0
  110. package/dist/hud/__tests__/render.test.js.map +1 -1
  111. package/dist/hud/__tests__/session-attached.test.d.ts +2 -0
  112. package/dist/hud/__tests__/session-attached.test.d.ts.map +1 -0
  113. package/dist/hud/__tests__/session-attached.test.js +82 -0
  114. package/dist/hud/__tests__/session-attached.test.js.map +1 -0
  115. package/dist/hud/__tests__/state.test.js +94 -2
  116. package/dist/hud/__tests__/state.test.js.map +1 -1
  117. package/dist/hud/__tests__/tmux-split-realtmux.test.js +169 -2
  118. package/dist/hud/__tests__/tmux-split-realtmux.test.js.map +1 -1
  119. package/dist/hud/__tests__/tmux.test.js +104 -22
  120. package/dist/hud/__tests__/tmux.test.js.map +1 -1
  121. package/dist/hud/__tests__/types.test.js +9 -0
  122. package/dist/hud/__tests__/types.test.js.map +1 -1
  123. package/dist/hud/__tests__/watch-detached.test.d.ts +2 -0
  124. package/dist/hud/__tests__/watch-detached.test.d.ts.map +1 -0
  125. package/dist/hud/__tests__/watch-detached.test.js +383 -0
  126. package/dist/hud/__tests__/watch-detached.test.js.map +1 -0
  127. package/dist/hud/__tests__/watch-realtmux.test.d.ts +2 -0
  128. package/dist/hud/__tests__/watch-realtmux.test.d.ts.map +1 -0
  129. package/dist/hud/__tests__/watch-realtmux.test.js +322 -0
  130. package/dist/hud/__tests__/watch-realtmux.test.js.map +1 -0
  131. package/dist/hud/index.d.ts +3 -0
  132. package/dist/hud/index.d.ts.map +1 -1
  133. package/dist/hud/index.js +98 -20
  134. package/dist/hud/index.js.map +1 -1
  135. package/dist/hud/reconcile.d.ts.map +1 -1
  136. package/dist/hud/reconcile.js +68 -24
  137. package/dist/hud/reconcile.js.map +1 -1
  138. package/dist/hud/render.d.ts.map +1 -1
  139. package/dist/hud/render.js +20 -0
  140. package/dist/hud/render.js.map +1 -1
  141. package/dist/hud/session-attached.d.ts +15 -0
  142. package/dist/hud/session-attached.d.ts.map +1 -0
  143. package/dist/hud/session-attached.js +47 -0
  144. package/dist/hud/session-attached.js.map +1 -0
  145. package/dist/hud/state.d.ts +9 -1
  146. package/dist/hud/state.d.ts.map +1 -1
  147. package/dist/hud/state.js +140 -3
  148. package/dist/hud/state.js.map +1 -1
  149. package/dist/hud/tmux.d.ts +4 -0
  150. package/dist/hud/tmux.d.ts.map +1 -1
  151. package/dist/hud/tmux.js +86 -23
  152. package/dist/hud/tmux.js.map +1 -1
  153. package/dist/hud/types.d.ts +20 -0
  154. package/dist/hud/types.d.ts.map +1 -1
  155. package/dist/hud/types.js +3 -0
  156. package/dist/hud/types.js.map +1 -1
  157. package/dist/modes/base.d.ts +15 -2
  158. package/dist/modes/base.d.ts.map +1 -1
  159. package/dist/modes/base.js +105 -16
  160. package/dist/modes/base.js.map +1 -1
  161. package/dist/question/autopilot-wait.js +2 -2
  162. package/dist/question/autopilot-wait.js.map +1 -1
  163. package/dist/question/deep-interview.js +2 -2
  164. package/dist/question/deep-interview.js.map +1 -1
  165. package/dist/ralplan/__tests__/advisory-activation.test.d.ts +2 -0
  166. package/dist/ralplan/__tests__/advisory-activation.test.d.ts.map +1 -0
  167. package/dist/ralplan/__tests__/advisory-activation.test.js +700 -0
  168. package/dist/ralplan/__tests__/advisory-activation.test.js.map +1 -0
  169. package/dist/ralplan/__tests__/advisory-detached-transition.test.d.ts +2 -0
  170. package/dist/ralplan/__tests__/advisory-detached-transition.test.d.ts.map +1 -0
  171. package/dist/ralplan/__tests__/advisory-detached-transition.test.js +88 -0
  172. package/dist/ralplan/__tests__/advisory-detached-transition.test.js.map +1 -0
  173. package/dist/ralplan/__tests__/advisory.test.d.ts +2 -0
  174. package/dist/ralplan/__tests__/advisory.test.d.ts.map +1 -0
  175. package/dist/ralplan/__tests__/advisory.test.js +1087 -0
  176. package/dist/ralplan/__tests__/advisory.test.js.map +1 -0
  177. package/dist/ralplan/__tests__/runtime.test.js +416 -7
  178. package/dist/ralplan/__tests__/runtime.test.js.map +1 -1
  179. package/dist/ralplan/advisory-activation-verifier.d.ts +19 -0
  180. package/dist/ralplan/advisory-activation-verifier.d.ts.map +1 -0
  181. package/dist/ralplan/advisory-activation-verifier.js +77 -0
  182. package/dist/ralplan/advisory-activation-verifier.js.map +1 -0
  183. package/dist/ralplan/advisory-activation.d.ts +34 -0
  184. package/dist/ralplan/advisory-activation.d.ts.map +1 -0
  185. package/dist/ralplan/advisory-activation.js +205 -0
  186. package/dist/ralplan/advisory-activation.js.map +1 -0
  187. package/dist/ralplan/advisory-contract.d.ts +103 -0
  188. package/dist/ralplan/advisory-contract.d.ts.map +1 -0
  189. package/dist/ralplan/advisory-contract.js +83 -0
  190. package/dist/ralplan/advisory-contract.js.map +1 -0
  191. package/dist/ralplan/advisory-detached-transition.d.ts +11 -0
  192. package/dist/ralplan/advisory-detached-transition.d.ts.map +1 -0
  193. package/dist/ralplan/advisory-detached-transition.js +21 -0
  194. package/dist/ralplan/advisory-detached-transition.js.map +1 -0
  195. package/dist/ralplan/advisory-evidence.d.ts +91 -0
  196. package/dist/ralplan/advisory-evidence.d.ts.map +1 -0
  197. package/dist/ralplan/advisory-evidence.js +393 -0
  198. package/dist/ralplan/advisory-evidence.js.map +1 -0
  199. package/dist/ralplan/advisory-lifecycle-validation.d.ts +11 -0
  200. package/dist/ralplan/advisory-lifecycle-validation.d.ts.map +1 -0
  201. package/dist/ralplan/advisory-lifecycle-validation.js +72 -0
  202. package/dist/ralplan/advisory-lifecycle-validation.js.map +1 -0
  203. package/dist/ralplan/advisory-postconditions.d.ts +3 -0
  204. package/dist/ralplan/advisory-postconditions.d.ts.map +1 -0
  205. package/dist/ralplan/advisory-postconditions.js +33 -0
  206. package/dist/ralplan/advisory-postconditions.js.map +1 -0
  207. package/dist/ralplan/advisory-recovery-journal.d.ts +56 -0
  208. package/dist/ralplan/advisory-recovery-journal.d.ts.map +1 -0
  209. package/dist/ralplan/advisory-recovery-journal.js +136 -0
  210. package/dist/ralplan/advisory-recovery-journal.js.map +1 -0
  211. package/dist/ralplan/advisory-storage.d.ts +24 -0
  212. package/dist/ralplan/advisory-storage.d.ts.map +1 -0
  213. package/dist/ralplan/advisory-storage.js +106 -0
  214. package/dist/ralplan/advisory-storage.js.map +1 -0
  215. package/dist/ralplan/advisory.d.ts +99 -0
  216. package/dist/ralplan/advisory.d.ts.map +1 -0
  217. package/dist/ralplan/advisory.js +914 -0
  218. package/dist/ralplan/advisory.js.map +1 -0
  219. package/dist/ralplan/documented-leader-preflight.d.ts +8 -0
  220. package/dist/ralplan/documented-leader-preflight.d.ts.map +1 -1
  221. package/dist/ralplan/documented-leader-preflight.js +60 -2
  222. package/dist/ralplan/documented-leader-preflight.js.map +1 -1
  223. package/dist/ralplan/runtime-advisory-lifecycle.d.ts +74 -0
  224. package/dist/ralplan/runtime-advisory-lifecycle.d.ts.map +1 -0
  225. package/dist/ralplan/runtime-advisory-lifecycle.js +352 -0
  226. package/dist/ralplan/runtime-advisory-lifecycle.js.map +1 -0
  227. package/dist/ralplan/runtime-contract.d.ts +126 -0
  228. package/dist/ralplan/runtime-contract.d.ts.map +1 -0
  229. package/dist/ralplan/runtime-contract.js +2 -0
  230. package/dist/ralplan/runtime-contract.js.map +1 -0
  231. package/dist/ralplan/runtime.d.ts +6 -109
  232. package/dist/ralplan/runtime.d.ts.map +1 -1
  233. package/dist/ralplan/runtime.js +174 -56
  234. package/dist/ralplan/runtime.js.map +1 -1
  235. package/dist/scripts/__tests__/postinstall.test.js +26 -0
  236. package/dist/scripts/__tests__/postinstall.test.js.map +1 -1
  237. package/dist/scripts/__tests__/ralplan-advisory-hook.test.d.ts +2 -0
  238. package/dist/scripts/__tests__/ralplan-advisory-hook.test.d.ts.map +1 -0
  239. package/dist/scripts/__tests__/ralplan-advisory-hook.test.js +299 -0
  240. package/dist/scripts/__tests__/ralplan-advisory-hook.test.js.map +1 -0
  241. package/dist/scripts/__tests__/smoke-packed-install.test.js +102 -8
  242. package/dist/scripts/__tests__/smoke-packed-install.test.js.map +1 -1
  243. package/dist/scripts/codex-native-hook.d.ts +20 -0
  244. package/dist/scripts/codex-native-hook.d.ts.map +1 -1
  245. package/dist/scripts/codex-native-hook.js +226 -15
  246. package/dist/scripts/codex-native-hook.js.map +1 -1
  247. package/dist/scripts/postinstall.d.ts +7 -0
  248. package/dist/scripts/postinstall.d.ts.map +1 -1
  249. package/dist/scripts/postinstall.js +40 -0
  250. package/dist/scripts/postinstall.js.map +1 -1
  251. package/dist/scripts/smoke-packed-install.d.ts +21 -5
  252. package/dist/scripts/smoke-packed-install.d.ts.map +1 -1
  253. package/dist/scripts/smoke-packed-install.js +157 -57
  254. package/dist/scripts/smoke-packed-install.js.map +1 -1
  255. package/dist/state/__tests__/mode-binding-lease.test.d.ts +2 -0
  256. package/dist/state/__tests__/mode-binding-lease.test.d.ts.map +1 -0
  257. package/dist/state/__tests__/mode-binding-lease.test.js +498 -0
  258. package/dist/state/__tests__/mode-binding-lease.test.js.map +1 -0
  259. package/dist/state/__tests__/operations.test.js +1 -0
  260. package/dist/state/__tests__/operations.test.js.map +1 -1
  261. package/dist/state/__tests__/pinned-atomic-file.test.d.ts +2 -0
  262. package/dist/state/__tests__/pinned-atomic-file.test.d.ts.map +1 -0
  263. package/dist/state/__tests__/pinned-atomic-file.test.js +438 -0
  264. package/dist/state/__tests__/pinned-atomic-file.test.js.map +1 -0
  265. package/dist/state/__tests__/skill-active-exact-session-transaction.test.d.ts +2 -0
  266. package/dist/state/__tests__/skill-active-exact-session-transaction.test.d.ts.map +1 -0
  267. package/dist/state/__tests__/skill-active-exact-session-transaction.test.js +179 -0
  268. package/dist/state/__tests__/skill-active-exact-session-transaction.test.js.map +1 -0
  269. package/dist/state/__tests__/skill-active.test.js +29 -1
  270. package/dist/state/__tests__/skill-active.test.js.map +1 -1
  271. package/dist/state/mode-binding-lease-helper.d.ts +2 -0
  272. package/dist/state/mode-binding-lease-helper.d.ts.map +1 -0
  273. package/dist/state/mode-binding-lease-helper.js +623 -0
  274. package/dist/state/mode-binding-lease-helper.js.map +1 -0
  275. package/dist/state/mode-binding-lease.d.ts +25 -0
  276. package/dist/state/mode-binding-lease.d.ts.map +1 -0
  277. package/dist/state/mode-binding-lease.js +380 -0
  278. package/dist/state/mode-binding-lease.js.map +1 -0
  279. package/dist/state/operations.d.ts +29 -1
  280. package/dist/state/operations.d.ts.map +1 -1
  281. package/dist/state/operations.js +203 -122
  282. package/dist/state/operations.js.map +1 -1
  283. package/dist/state/pinned-atomic-file-darwin-client.d.ts +34 -0
  284. package/dist/state/pinned-atomic-file-darwin-client.d.ts.map +1 -0
  285. package/dist/state/pinned-atomic-file-darwin-client.js +174 -0
  286. package/dist/state/pinned-atomic-file-darwin-client.js.map +1 -0
  287. package/dist/state/pinned-atomic-file-darwin-helper.d.ts +2 -0
  288. package/dist/state/pinned-atomic-file-darwin-helper.d.ts.map +1 -0
  289. package/dist/state/pinned-atomic-file-darwin-helper.js +275 -0
  290. package/dist/state/pinned-atomic-file-darwin-helper.js.map +1 -0
  291. package/dist/state/pinned-atomic-file-darwin-janitor.d.ts +2 -0
  292. package/dist/state/pinned-atomic-file-darwin-janitor.d.ts.map +1 -0
  293. package/dist/state/pinned-atomic-file-darwin-janitor.js +272 -0
  294. package/dist/state/pinned-atomic-file-darwin-janitor.js.map +1 -0
  295. package/dist/state/pinned-atomic-file.d.ts +29 -0
  296. package/dist/state/pinned-atomic-file.d.ts.map +1 -0
  297. package/dist/state/pinned-atomic-file.js +536 -0
  298. package/dist/state/pinned-atomic-file.js.map +1 -0
  299. package/dist/state/process-identity.d.ts +30 -0
  300. package/dist/state/process-identity.d.ts.map +1 -0
  301. package/dist/state/process-identity.js +99 -0
  302. package/dist/state/process-identity.js.map +1 -0
  303. package/dist/state/skill-active.d.ts +18 -1
  304. package/dist/state/skill-active.d.ts.map +1 -1
  305. package/dist/state/skill-active.js +82 -5
  306. package/dist/state/skill-active.js.map +1 -1
  307. package/dist/state/workflow-transition-reconcile.js +1 -1
  308. package/dist/state/workflow-transition-reconcile.js.map +1 -1
  309. package/dist/team/__tests__/tmux-session.test.js +109 -0
  310. package/dist/team/__tests__/tmux-session.test.js.map +1 -1
  311. package/dist/team/tmux-session.d.ts.map +1 -1
  312. package/dist/team/tmux-session.js +10 -1
  313. package/dist/team/tmux-session.js.map +1 -1
  314. package/dist/utils/__tests__/file-durability.test.js +20 -0
  315. package/dist/utils/__tests__/file-durability.test.js.map +1 -1
  316. package/dist/utils/file-durability.d.ts +1 -1
  317. package/dist/utils/file-durability.d.ts.map +1 -1
  318. package/dist/utils/file-durability.js.map +1 -1
  319. package/dist/verification/__tests__/ci-rust-gates.test.js +12 -4
  320. package/dist/verification/__tests__/ci-rust-gates.test.js.map +1 -1
  321. package/dist/verification/__tests__/ci-trusted-publish.test.d.ts +2 -0
  322. package/dist/verification/__tests__/ci-trusted-publish.test.d.ts.map +1 -0
  323. package/dist/verification/__tests__/ci-trusted-publish.test.js +205 -0
  324. package/dist/verification/__tests__/ci-trusted-publish.test.js.map +1 -0
  325. package/dist/verification/__tests__/explore-harness-release-workflow.test.js +10 -5
  326. package/dist/verification/__tests__/explore-harness-release-workflow.test.js.map +1 -1
  327. package/dist/verification/__tests__/publish-npm-manual-retired.test.d.ts +2 -0
  328. package/dist/verification/__tests__/publish-npm-manual-retired.test.d.ts.map +1 -0
  329. package/dist/verification/__tests__/publish-npm-manual-retired.test.js +22 -0
  330. package/dist/verification/__tests__/publish-npm-manual-retired.test.js.map +1 -0
  331. package/package.json +1 -1
  332. package/plugins/oh-my-codex/.codex-plugin/plugin.json +1 -1
  333. package/plugins/oh-my-codex/skills/doctor/SKILL.md +1 -1
  334. package/plugins/oh-my-codex/skills/omx-setup/SKILL.md +1 -1
  335. package/plugins/oh-my-codex/skills/ralplan/SKILL.md +10 -1
  336. package/plugins/oh-my-codex/skills/team/SKILL.md +2 -0
  337. package/skills/doctor/SKILL.md +1 -1
  338. package/skills/omx-setup/SKILL.md +1 -1
  339. package/skills/ralplan/SKILL.md +10 -1
  340. package/skills/team/SKILL.md +2 -0
  341. package/src/scripts/__tests__/postinstall.test.ts +28 -0
  342. package/src/scripts/__tests__/ralplan-advisory-hook.test.ts +320 -0
  343. package/src/scripts/__tests__/smoke-packed-install.test.ts +120 -7
  344. package/src/scripts/codex-native-hook.ts +220 -10
  345. package/src/scripts/postinstall.ts +46 -0
  346. package/src/scripts/smoke-packed-install.ts +175 -70
@@ -76,6 +76,8 @@ export interface SkillActiveState {
76
76
  transition_error?: string;
77
77
  transition_message?: string;
78
78
  transition_messages?: string[];
79
+ workflow_variant?: 'advisory';
80
+ advisory_generation_id?: string;
79
81
  requested_skills?: string[];
80
82
  deferred_skills?: string[];
81
83
  [key: string]: unknown;
@@ -94,6 +96,10 @@ export interface RecordSkillActivationInput {
94
96
  resolvedPromptTurnContext?: ResolvedPromptTurnContext;
95
97
  onProvenanceRejected?: (diagnostic: PromptDiagnosticDescriptor) => void | Promise<void>;
96
98
  }
99
+ interface RecordSkillActivationDependencies {
100
+ advisoryActivationFailpoint?: (name: 'rollover_intent' | 'rollover_activation' | 'rollover_pointer' | 'intent_committed') => void | Promise<void>;
101
+ advisoryAfterModeBindingFailpoint?: () => void | Promise<void>;
102
+ }
97
103
  export interface DeepInterviewModeStatePersistenceInput {
98
104
  sessionId?: string;
99
105
  threadId?: string;
@@ -128,7 +134,7 @@ export declare function classifyKeywordInput(text: string): KeywordInputClassifi
128
134
  export declare function detectKeywords(text: string): KeywordMatch[];
129
135
  /** Get the first match in classification order. */
130
136
  export declare function detectPrimaryKeyword(text: string): KeywordMatch | null;
131
- export declare function recordSkillActivation(input: RecordSkillActivationInput): Promise<SkillActiveState | null>;
137
+ export declare function recordSkillActivation(input: RecordSkillActivationInput, dependencies?: RecordSkillActivationDependencies): Promise<SkillActiveState | null>;
132
138
  /**
133
139
  * Options for task-size-aware keyword filtering
134
140
  */
@@ -152,4 +158,5 @@ export declare function getAllKeywordsWithSizeCheck(text: string, options?: Task
152
158
  taskSizeResult: TaskSizeResult | null;
153
159
  suppressedKeywords: string[];
154
160
  };
161
+ export {};
155
162
  //# sourceMappingURL=keyword-detector.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"keyword-detector.d.ts","sourceRoot":"","sources":["../../src/hooks/keyword-detector.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"keyword-detector.d.ts","sourceRoot":"","sources":["../../src/hooks/keyword-detector.ts"],"names":[],"mappings":"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"}
@@ -27,6 +27,8 @@ import { buildDeepInterviewConfigStateFields, resolveDeepInterviewRuntimeConfig,
27
27
  import { inferTerminalLifecycleOutcome } from '../runtime/run-outcome.js';
28
28
  import { resolveAutopilotPlannerRouting } from '../autopilot/planner-routing.js';
29
29
  import { isAutopilotSuccessfulTerminalState, } from '../autopilot/completion-gate.js';
30
+ import { isDirectRalplanAdvisoryInvocation, parseRalplanAdvisoryInvocation, readCurrentRalplanAdvisory } from '../ralplan/advisory.js';
31
+ import { activateOrResumeRalplanAdvisory } from '../ralplan/advisory-activation.js';
30
32
  import { preflightSelectedTargetOwner, extractSelectedTargetOwnerEvidence, } from './prompt-session-provenance.js';
31
33
  /** Stable diagnostic precedence for explicit candidates. */
32
34
  export const KEYWORD_INERT_DIAGNOSTIC_ORDER = Object.freeze([
@@ -313,6 +315,23 @@ function buildActiveSkills(state) {
313
315
  turn_id: state.turn_id,
314
316
  }];
315
317
  }
318
+ function listPromptVisibleEntries(previous, sessionId) {
319
+ const entries = listActiveSkills(previous ?? {});
320
+ const requestedSessionId = safeString(sessionId).trim();
321
+ const outerSessionId = safeString(previous?.session_id).trim();
322
+ const visible = requestedSessionId
323
+ ? entries.filter((entry) => {
324
+ const entrySessionId = safeString(entry.session_id).trim();
325
+ return entrySessionId === requestedSessionId
326
+ || (entrySessionId.length === 0 && outerSessionId === requestedSessionId);
327
+ })
328
+ : entries.filter((entry) => safeString(entry.session_id).trim().length === 0);
329
+ return visible;
330
+ }
331
+ function isAdvisoryRalplanEntry(entry, previous) {
332
+ return entry.skill === 'ralplan'
333
+ && (entry.workflow_variant === 'advisory' || previous?.workflow_variant === 'advisory');
334
+ }
316
335
  async function readExistingDeepInterviewState(statePath) {
317
336
  try {
318
337
  const raw = await readFile(statePath, 'utf-8');
@@ -363,7 +382,7 @@ export async function persistDeepInterviewModeState(stateDir, nextSkill, nowIso,
363
382
  ...(nextSkill.input_lock ? { input_lock: nextSkill.input_lock } : {}),
364
383
  ...(nextQuestionEnforcement ? { question_enforcement: nextQuestionEnforcement } : {}),
365
384
  }, { nowIso });
366
- await writeStateFile(statePath, JSON.stringify(nextState, null, 2));
385
+ await writeStateFile(statePath, JSON.stringify(nextState, null, 2), stateDir);
367
386
  return;
368
387
  }
369
388
  const hadActiveDeepInterview = previousSkill?.skill === 'deep-interview' && previousSkill.active === true;
@@ -391,7 +410,7 @@ export async function persistDeepInterviewModeState(stateDir, nextSkill, nowIso,
391
410
  }
392
411
  : {}),
393
412
  };
394
- await writeStateFile(statePath, JSON.stringify(nextState, null, 2));
413
+ await writeStateFile(statePath, JSON.stringify(nextState, null, 2), stateDir);
395
414
  }
396
415
  function resolveSeedStateFilePath(stateDir, mode, sessionId, scope = 'session') {
397
416
  if (scope !== 'root' && sessionId?.trim()) {
@@ -468,6 +487,54 @@ async function persistStatefulSkillSeedState(stateDir, nextSkill, nowIso, previo
468
487
  if (config.mode === 'deep-interview') {
469
488
  Object.assign(baseState, buildDeepInterviewConfigStateFields(nextSkill.deep_interview_config));
470
489
  }
490
+ const advisoryInvocation = config.mode === 'ralplan'
491
+ && isDirectRalplanAdvisoryInvocation(activationText);
492
+ if (config.mode === 'ralplan' && advisoryInvocation) {
493
+ const sessionId = safeString(nextSkill.session_id).trim();
494
+ const rootThreadId = safeString(nextSkill.thread_id).trim();
495
+ const activationTurnId = safeString(nextSkill.turn_id).trim();
496
+ if (!sessionId || !rootThreadId || !activationTurnId)
497
+ throw new Error('ralplan_advisory_canonical_turn_identity_required');
498
+ const prior = await readCurrentRalplanAdvisory(sourceCwd, sessionId);
499
+ const pendingRecovery = prior?.corruption === 'rollover_pending_admin'
500
+ || prior?.corruption === 'current_missing_with_advisory_state';
501
+ if (prior?.corruption && !pendingRecovery)
502
+ throw new Error(`ralplan_advisory_${prior.corruption}`);
503
+ const activated = await activateOrResumeRalplanAdvisory({
504
+ cwd: sourceCwd, sessionId, rootThreadId, activationTurnId,
505
+ producer: 'native', threadKind: options.advisoryThreadKind ?? 'unknown',
506
+ ...(prior?.activation?.generation_id ? { predecessorGenerationId: prior.activation.generation_id } : {}),
507
+ nowIso, prompt: activationText,
508
+ failpoint: async (checkpoint) => {
509
+ if (checkpoint === 'after_intent' && !pendingRecovery) {
510
+ await options.advisoryActivationFailpoint?.('rollover_intent');
511
+ }
512
+ if (checkpoint === 'after_mode')
513
+ await options.advisoryAfterModeBindingFailpoint?.();
514
+ if (checkpoint === 'intent_committed')
515
+ await options.advisoryActivationFailpoint?.('intent_committed');
516
+ },
517
+ });
518
+ const activation = activated.activation;
519
+ baseState.workflow_variant = 'advisory';
520
+ baseState.advisory_generation_id = activation.generation_id;
521
+ baseState.execution_handoff_authorized = false;
522
+ baseState.host_verified = false;
523
+ baseState.ralplan_consensus_gate = { complete: false };
524
+ }
525
+ if (baseState.workflow_variant === 'advisory') {
526
+ const advisoryGenerationId = safeString(baseState.advisory_generation_id);
527
+ return {
528
+ ...nextSkill,
529
+ initialized_mode: config.mode,
530
+ initialized_state_path: relativePath,
531
+ workflow_variant: 'advisory',
532
+ advisory_generation_id: advisoryGenerationId,
533
+ active_skills: nextSkill.active_skills?.map((entry) => (entry.skill === 'ralplan' && entry.session_id === nextSkill.session_id
534
+ ? { ...entry, workflow_variant: 'advisory', advisory_generation_id: advisoryGenerationId }
535
+ : entry)),
536
+ };
537
+ }
471
538
  if (config.mode === 'autopilot') {
472
539
  const reusableModeState = preserveExistingModeState ? existingModeState : null;
473
540
  const existingStateRaw = (reusableModeState?.state && typeof reusableModeState.state === 'object')
@@ -550,11 +617,15 @@ async function persistStatefulSkillSeedState(stateDir, nextSkill, nowIso, previo
550
617
  };
551
618
  }
552
619
  await mkdir(dirname(absolutePath), { recursive: true });
553
- await writeStateFile(absolutePath, JSON.stringify(baseState, null, 2));
620
+ await writeStateFile(absolutePath, JSON.stringify(baseState, null, 2), stateDir);
554
621
  return {
555
622
  ...nextSkill,
556
623
  initialized_mode: config.mode,
557
624
  initialized_state_path: relativePath,
625
+ ...(baseState.workflow_variant === 'advisory' ? {
626
+ workflow_variant: 'advisory',
627
+ advisory_generation_id: safeString(baseState.advisory_generation_id),
628
+ } : {}),
558
629
  };
559
630
  }
560
631
  function escapeRegex(text) {
@@ -664,6 +735,23 @@ const EXPLICIT_TOKEN_BOUNDARY_PUNCTUATION = /[,;؛!?:؟)\]}"'”’»›」』
664
735
  const DIRECTIVE_PUNCTUATION = /[,;؛:!?؟?、،]/u;
665
736
  const CLAUSE_BOUNDARY_PUNCTUATION = /[,;؛.!?؟?。!?:،、\r\n\u2013\u2014\u2028\u2029]/u;
666
737
  const LOGICAL_SENTENCE_BOUNDARY_PUNCTUATION = /[;؛.!?؟?。!?]/u;
738
+ // Unicode regex matching can case-fold compatibility characters such as the
739
+ // Kelvin sign (K) into ASCII K. Explicit skill invocations are intentionally
740
+ // ASCII-only: confusable continuations must remain inert rather than routing a
741
+ // near-miss token to a workflow.
742
+ function isAsciiExplicitToken(token) {
743
+ if (token.length === 0)
744
+ return false;
745
+ for (let index = 0; index < token.length; index += 1) {
746
+ const code = token.charCodeAt(index);
747
+ const isAsciiLetter = (code >= 0x41 && code <= 0x5A) || (code >= 0x61 && code <= 0x7A);
748
+ const isAsciiDigit = code >= 0x30 && code <= 0x39;
749
+ if (index === 0 ? !isAsciiLetter : !(isAsciiLetter || isAsciiDigit || code === 0x5F || code === 0x2D)) {
750
+ return false;
751
+ }
752
+ }
753
+ return true;
754
+ }
667
755
  function asciiCaseWordPattern(word) {
668
756
  return [...word].map((character) => `[${character.toUpperCase()}${character.toLowerCase()}]`).join('');
669
757
  }
@@ -1954,6 +2042,7 @@ function scanExplicitCandidates(text) {
1954
2042
  const initialEnd = canonicalEnd ?? start + 1;
1955
2043
  const end = maximalExplicitTokenEnd(text, initialEnd);
1956
2044
  const rawKeyword = text.slice(start, end);
2045
+ const rawToken = rawKeyword.replace(/^\$(?:(?:[Oo][Hh]-[Mm][Yy]-[Cc][Oo][Dd][Ee][Xx]):)?/u, '');
1957
2046
  dollarScanner.lastIndex = Math.max(end, start + 1);
1958
2047
  const reasons = new Set();
1959
2048
  for (const reason of STRUCTURAL_INERT_DIAGNOSTICS) {
@@ -1962,8 +2051,14 @@ function scanExplicitCandidates(text) {
1962
2051
  }
1963
2052
  if (hasOddImmediateBackslashes(text, start))
1964
2053
  reasons.add('escaped');
1965
- const canonicalToken = canonicalEnd === end ? (canonicalMatch?.[1] ?? '').toLowerCase() : '';
1966
- const normalizedToken = canonicalToken || rawKeyword.replace(/^\$(?:(?:[Oo][Hh]-[Mm][Yy]-[Cc][Oo][Dd][Ee][Xx]):)?/u, '').toLowerCase();
2054
+ const capturedToken = canonicalMatch?.[1] ?? '';
2055
+ const canonicalToken = canonicalEnd === end && isAsciiExplicitToken(rawToken)
2056
+ ? capturedToken.toLowerCase()
2057
+ : '';
2058
+ // Do not case-fold malformed/non-ASCII candidates. Besides bypassing the
2059
+ // explicit-skill lookup, folding them here would still route compatibility
2060
+ // characters (for example K) through the removed-skill sunset resolver.
2061
+ const normalizedToken = canonicalToken || rawToken;
1967
2062
  const definition = canonicalToken ? getExplicitSkillDefinition(canonicalToken) : undefined;
1968
2063
  candidates.push({
1969
2064
  rawKeyword,
@@ -2783,7 +2878,7 @@ export function classifyKeywordInput(text) {
2783
2878
  continue;
2784
2879
  if (isNegativeExplicitMention(candidate, postposedNegations))
2785
2880
  continue;
2786
- if (candidate.skill !== null)
2881
+ if (candidate.skill !== null || !isAsciiExplicitToken(candidate.normalizedToken))
2787
2882
  continue;
2788
2883
  const info = getRemovedSkillInfo(candidate.normalizedToken);
2789
2884
  if (!info)
@@ -3079,7 +3174,7 @@ async function preflightKeywordTargetState(stateDir, sessionId, context, nowIso)
3079
3174
  }
3080
3175
  return preflightSelectedTargetOwner(context, evidence, 'native', nowIso);
3081
3176
  }
3082
- export async function recordSkillActivation(input) {
3177
+ export async function recordSkillActivation(input, dependencies = {}) {
3083
3178
  const classification = input.classification ?? classifyKeywordInput(input.text);
3084
3179
  if (classification.originalText !== input.text) {
3085
3180
  throw new Error('Keyword input classification text does not match activation text');
@@ -3089,6 +3184,11 @@ export async function recordSkillActivation(input) {
3089
3184
  return null;
3090
3185
  if (resolvedPromptTurnContext && input.sessionId !== resolvedPromptTurnContext.authorization.targetSessionId)
3091
3186
  return null;
3187
+ const authenticatedRootPrompt = resolvedPromptTurnContext?.status === 'authorized'
3188
+ && resolvedPromptTurnContext.authorization.targetRelation !== 'explicit-independent'
3189
+ && resolvedPromptTurnContext.authorization.thread.kind === 'root-or-drift';
3190
+ if (isDirectRalplanAdvisoryInvocation(input.text) && !authenticatedRootPrompt)
3191
+ return null;
3092
3192
  const suppressRootMutation = resolvedPromptTurnContext?.authorization.globalSideEffects === 'suppress';
3093
3193
  const provenanceOwnerCodexSessionId = resolvedPromptTurnContext?.authorization.ownerCodexSessionId;
3094
3194
  const applyProvenanceOwner = (state) => (provenanceOwnerCodexSessionId
@@ -3143,6 +3243,12 @@ export async function recordSkillActivation(input) {
3143
3243
  const match = resolveContinuationKeywordMatch(input.text, previous, detectPrimaryKeywordForTeamMode(classification, teamMode.enabled), classification);
3144
3244
  if (!match)
3145
3245
  return null;
3246
+ const advisoryInvocation = parseRalplanAdvisoryInvocation(input.text);
3247
+ if (advisoryInvocation === 'invalid'
3248
+ || (advisoryInvocation === 'valid'
3249
+ && (match.skill !== 'ralplan' || classification.matches.some((candidate) => candidate.skill !== 'ralplan')))) {
3250
+ return null;
3251
+ }
3146
3252
  const hadDeepInterviewLock = previous?.skill === 'deep-interview' && previous?.input_lock?.active === true;
3147
3253
  const matches = filterMatchesForTeamMode(classification.matches, teamMode.enabled);
3148
3254
  const hasCancelIntent = matches.some((entry) => entry.skill === 'cancel');
@@ -3167,6 +3273,8 @@ export async function recordSkillActivation(input) {
3167
3273
  await persistDeepInterviewModeState(input.stateDir, applyProvenanceOwner(state), nowIso, previous, input);
3168
3274
  }
3169
3275
  catch (error) {
3276
+ if (isDirectRalplanAdvisoryInvocation(input.text))
3277
+ throw error;
3170
3278
  console.warn('[omx] warning: failed to persist keyword activation state', error);
3171
3279
  }
3172
3280
  return applyProvenanceOwner(state);
@@ -3185,7 +3293,9 @@ export async function recordSkillActivation(input) {
3185
3293
  return null;
3186
3294
  const preserveActivatedAt = sameSkill && !matchedModeTerminal && (sameKeyword || sameSkillContinuation);
3187
3295
  const previousEntries = listActiveSkills(previous ?? {});
3188
- const previousWorkflowEntries = previousEntries.filter((entry) => (isTrackedWorkflowMode(entry.skill)
3296
+ const visibleEntries = listPromptVisibleEntries(previous, input.sessionId);
3297
+ const protectedAdvisoryEntries = visibleEntries.filter((entry) => isAdvisoryRalplanEntry(entry, previous));
3298
+ const previousWorkflowEntries = visibleEntries.filter((entry) => !isAdvisoryRalplanEntry(entry, previous)).filter((entry) => (isTrackedWorkflowMode(entry.skill)
3189
3299
  && (input.allowSecondaryAutopilot !== false || entry.skill !== 'autopilot' || entry.skill === match.skill)
3190
3300
  && (!input.sessionId
3191
3301
  || !safeString(entry.session_id).trim()
@@ -3358,7 +3468,7 @@ export async function recordSkillActivation(input) {
3358
3468
  session_id: input.sessionId,
3359
3469
  thread_id: input.threadId,
3360
3470
  turn_id: input.turnId,
3361
- active_skills: nextWorkflowEntries,
3471
+ active_skills: [...protectedAdvisoryEntries, ...nextWorkflowEntries],
3362
3472
  ...(transitionMessages[0] ? { transition_message: transitionMessages[0] } : {}),
3363
3473
  ...(transitionMessages.length > 0 ? { transition_messages: [...new Set(transitionMessages)] } : {}),
3364
3474
  ...(requestedWorkflowSkills.length > 1 ? { requested_skills: requestedWorkflowSkills } : {}),
@@ -3381,12 +3491,18 @@ export async function recordSkillActivation(input) {
3381
3491
  }, nowIso, previous, input.text, sourceCwd, {
3382
3492
  activeContinuation: requestedEntry.skill === 'autopilot' && sameSkillContinuation,
3383
3493
  forceSessionScope: suppressRootMutation,
3494
+ advisoryActivationFailpoint: dependencies.advisoryActivationFailpoint,
3495
+ advisoryAfterModeBindingFailpoint: dependencies.advisoryAfterModeBindingFailpoint,
3496
+ advisoryThreadKind: authenticatedRootPrompt ? 'root-or-drift' : 'unknown',
3384
3497
  });
3385
3498
  if (requestedEntry.skill === workflowState.skill) {
3386
3499
  nextState = {
3387
3500
  ...ownedWorkflowState,
3388
3501
  initialized_mode: seeded.initialized_mode,
3389
3502
  initialized_state_path: seeded.initialized_state_path,
3503
+ ...(seeded.active_skills ? { active_skills: seeded.active_skills } : {}),
3504
+ ...(seeded.workflow_variant ? { workflow_variant: seeded.workflow_variant } : {}),
3505
+ ...(seeded.advisory_generation_id ? { advisory_generation_id: seeded.advisory_generation_id } : {}),
3390
3506
  };
3391
3507
  }
3392
3508
  }
@@ -3397,6 +3513,8 @@ export async function recordSkillActivation(input) {
3397
3513
  return nextState;
3398
3514
  }
3399
3515
  catch (error) {
3516
+ if (isDirectRalplanAdvisoryInvocation(input.text))
3517
+ throw error;
3400
3518
  console.warn('[omx] warning: failed to persist keyword activation state', error);
3401
3519
  }
3402
3520
  return workflowState;
@@ -3431,6 +3549,9 @@ export async function recordSkillActivation(input) {
3431
3549
  const nextState = await persistStatefulSkillSeedState(input.stateDir, ownedState, nowIso, previous, input.text, sourceCwd, {
3432
3550
  activeContinuation: match.skill === 'autopilot' && sameSkillContinuation,
3433
3551
  forceSessionScope: suppressRootMutation,
3552
+ advisoryActivationFailpoint: dependencies.advisoryActivationFailpoint,
3553
+ advisoryAfterModeBindingFailpoint: dependencies.advisoryAfterModeBindingFailpoint,
3554
+ advisoryThreadKind: authenticatedRootPrompt ? 'root-or-drift' : 'unknown',
3434
3555
  });
3435
3556
  const ownedNextState = applyProvenanceOwner(nextState);
3436
3557
  ownedNextState.active_skills = buildActiveSkills(ownedNextState);