oh-my-codex 0.18.8 → 0.18.10

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 (221) hide show
  1. package/Cargo.lock +12 -12
  2. package/Cargo.toml +1 -1
  3. package/README.md +4 -0
  4. package/dist/autopilot/__tests__/deep-interview-gate.test.d.ts +2 -0
  5. package/dist/autopilot/__tests__/deep-interview-gate.test.d.ts.map +1 -0
  6. package/dist/autopilot/__tests__/deep-interview-gate.test.js +215 -0
  7. package/dist/autopilot/__tests__/deep-interview-gate.test.js.map +1 -0
  8. package/dist/autopilot/__tests__/fsm.test.js +3 -0
  9. package/dist/autopilot/__tests__/fsm.test.js.map +1 -1
  10. package/dist/autopilot/__tests__/ralplan-gate.test.js +148 -0
  11. package/dist/autopilot/__tests__/ralplan-gate.test.js.map +1 -1
  12. package/dist/autopilot/deep-interview-gate.d.ts.map +1 -1
  13. package/dist/autopilot/deep-interview-gate.js +140 -0
  14. package/dist/autopilot/deep-interview-gate.js.map +1 -1
  15. package/dist/autopilot/fsm.js +2 -2
  16. package/dist/autopilot/fsm.js.map +1 -1
  17. package/dist/cli/__tests__/auth.test.js +37 -2
  18. package/dist/cli/__tests__/auth.test.js.map +1 -1
  19. package/dist/cli/__tests__/codex-feature-probe.test.d.ts +2 -0
  20. package/dist/cli/__tests__/codex-feature-probe.test.d.ts.map +1 -0
  21. package/dist/cli/__tests__/codex-feature-probe.test.js +46 -0
  22. package/dist/cli/__tests__/codex-feature-probe.test.js.map +1 -0
  23. package/dist/cli/__tests__/codex-plugin-layout.test.js +1 -1
  24. package/dist/cli/__tests__/codex-plugin-layout.test.js.map +1 -1
  25. package/dist/cli/__tests__/doctor-warning-copy.test.js +2 -0
  26. package/dist/cli/__tests__/doctor-warning-copy.test.js.map +1 -1
  27. package/dist/cli/__tests__/index.test.js +288 -6
  28. package/dist/cli/__tests__/index.test.js.map +1 -1
  29. package/dist/cli/__tests__/launch-fallback.test.js +19 -5
  30. package/dist/cli/__tests__/launch-fallback.test.js.map +1 -1
  31. package/dist/cli/__tests__/package-bin-contract.test.js +39 -10
  32. package/dist/cli/__tests__/package-bin-contract.test.js.map +1 -1
  33. package/dist/cli/__tests__/question.test.js +26 -9
  34. package/dist/cli/__tests__/question.test.js.map +1 -1
  35. package/dist/cli/__tests__/resume.test.js +50 -1
  36. package/dist/cli/__tests__/resume.test.js.map +1 -1
  37. package/dist/cli/__tests__/setup-refresh.test.js +6 -2
  38. package/dist/cli/__tests__/setup-refresh.test.js.map +1 -1
  39. package/dist/cli/__tests__/sparkshell-packaging.test.js +45 -2
  40. package/dist/cli/__tests__/sparkshell-packaging.test.js.map +1 -1
  41. package/dist/cli/__tests__/team-decompose.test.js +10 -5
  42. package/dist/cli/__tests__/team-decompose.test.js.map +1 -1
  43. package/dist/cli/__tests__/team.test.js +45 -1
  44. package/dist/cli/__tests__/team.test.js.map +1 -1
  45. package/dist/cli/__tests__/ultragoal.test.js +75 -0
  46. package/dist/cli/__tests__/ultragoal.test.js.map +1 -1
  47. package/dist/cli/__tests__/update.test.js +214 -17
  48. package/dist/cli/__tests__/update.test.js.map +1 -1
  49. package/dist/cli/__tests__/windows-popup-loop-contract.test.js +1 -1
  50. package/dist/cli/auth.d.ts.map +1 -1
  51. package/dist/cli/auth.js +25 -1
  52. package/dist/cli/auth.js.map +1 -1
  53. package/dist/cli/codex-feature-probe.d.ts +5 -2
  54. package/dist/cli/codex-feature-probe.d.ts.map +1 -1
  55. package/dist/cli/codex-feature-probe.js +25 -9
  56. package/dist/cli/codex-feature-probe.js.map +1 -1
  57. package/dist/cli/index.d.ts +39 -5
  58. package/dist/cli/index.d.ts.map +1 -1
  59. package/dist/cli/index.js +184 -101
  60. package/dist/cli/index.js.map +1 -1
  61. package/dist/cli/setup.d.ts.map +1 -1
  62. package/dist/cli/setup.js +9 -1
  63. package/dist/cli/setup.js.map +1 -1
  64. package/dist/cli/team.d.ts +4 -0
  65. package/dist/cli/team.d.ts.map +1 -1
  66. package/dist/cli/team.js +43 -4
  67. package/dist/cli/team.js.map +1 -1
  68. package/dist/cli/ultragoal.d.ts.map +1 -1
  69. package/dist/cli/ultragoal.js +29 -0
  70. package/dist/cli/ultragoal.js.map +1 -1
  71. package/dist/cli/update.d.ts +20 -3
  72. package/dist/cli/update.d.ts.map +1 -1
  73. package/dist/cli/update.js +265 -23
  74. package/dist/cli/update.js.map +1 -1
  75. package/dist/cli/version.d.ts.map +1 -1
  76. package/dist/cli/version.js +5 -9
  77. package/dist/cli/version.js.map +1 -1
  78. package/dist/compat/__tests__/doctor-contract.test.js +12 -1
  79. package/dist/compat/__tests__/doctor-contract.test.js.map +1 -1
  80. package/dist/hooks/__tests__/agents-overlay.test.js +1 -0
  81. package/dist/hooks/__tests__/agents-overlay.test.js.map +1 -1
  82. package/dist/hooks/__tests__/autopilot-skill-contract.test.js +15 -0
  83. package/dist/hooks/__tests__/autopilot-skill-contract.test.js.map +1 -1
  84. package/dist/hooks/__tests__/code-review-skill-contract.test.js +7 -3
  85. package/dist/hooks/__tests__/code-review-skill-contract.test.js.map +1 -1
  86. package/dist/hooks/__tests__/deep-interview-contract.test.js +46 -1
  87. package/dist/hooks/__tests__/deep-interview-contract.test.js.map +1 -1
  88. package/dist/hooks/__tests__/skill-guidance-contract.test.js +14 -5
  89. package/dist/hooks/__tests__/skill-guidance-contract.test.js.map +1 -1
  90. package/dist/hooks/agents-overlay.d.ts.map +1 -1
  91. package/dist/hooks/agents-overlay.js +2 -1
  92. package/dist/hooks/agents-overlay.js.map +1 -1
  93. package/dist/hooks/extensibility/__tests__/plugin-runner.test.js +112 -1
  94. package/dist/hooks/extensibility/__tests__/plugin-runner.test.js.map +1 -1
  95. package/dist/hooks/extensibility/plugin-runner-stdin.d.ts +2 -0
  96. package/dist/hooks/extensibility/plugin-runner-stdin.d.ts.map +1 -0
  97. package/dist/hooks/extensibility/plugin-runner-stdin.js +16 -0
  98. package/dist/hooks/extensibility/plugin-runner-stdin.js.map +1 -0
  99. package/dist/hooks/extensibility/plugin-runner.js +2 -4
  100. package/dist/hooks/extensibility/plugin-runner.js.map +1 -1
  101. package/dist/hud/__tests__/index.test.js +23 -2
  102. package/dist/hud/__tests__/index.test.js.map +1 -1
  103. package/dist/hud/__tests__/reconcile.test.js +387 -0
  104. package/dist/hud/__tests__/reconcile.test.js.map +1 -1
  105. package/dist/hud/__tests__/state.test.js +28 -0
  106. package/dist/hud/__tests__/state.test.js.map +1 -1
  107. package/dist/hud/__tests__/tmux.test.js +118 -7
  108. package/dist/hud/__tests__/tmux.test.js.map +1 -1
  109. package/dist/hud/index.d.ts +6 -1
  110. package/dist/hud/index.d.ts.map +1 -1
  111. package/dist/hud/index.js +12 -3
  112. package/dist/hud/index.js.map +1 -1
  113. package/dist/hud/reconcile.d.ts +6 -2
  114. package/dist/hud/reconcile.d.ts.map +1 -1
  115. package/dist/hud/reconcile.js +58 -28
  116. package/dist/hud/reconcile.js.map +1 -1
  117. package/dist/hud/state.d.ts.map +1 -1
  118. package/dist/hud/state.js +4 -18
  119. package/dist/hud/state.js.map +1 -1
  120. package/dist/hud/tmux.d.ts +14 -1
  121. package/dist/hud/tmux.d.ts.map +1 -1
  122. package/dist/hud/tmux.js +129 -15
  123. package/dist/hud/tmux.js.map +1 -1
  124. package/dist/question/__tests__/renderer.test.js +566 -1
  125. package/dist/question/__tests__/renderer.test.js.map +1 -1
  126. package/dist/question/renderer.d.ts +9 -1
  127. package/dist/question/renderer.d.ts.map +1 -1
  128. package/dist/question/renderer.js +246 -70
  129. package/dist/question/renderer.js.map +1 -1
  130. package/dist/ralplan/consensus-gate.js +9 -1
  131. package/dist/ralplan/consensus-gate.js.map +1 -1
  132. package/dist/scripts/__tests__/codex-native-hook.test.js +322 -15
  133. package/dist/scripts/__tests__/codex-native-hook.test.js.map +1 -1
  134. package/dist/scripts/__tests__/run-test-files.test.js +115 -1
  135. package/dist/scripts/__tests__/run-test-files.test.js.map +1 -1
  136. package/dist/scripts/codex-native-hook.d.ts.map +1 -1
  137. package/dist/scripts/codex-native-hook.js +94 -20
  138. package/dist/scripts/codex-native-hook.js.map +1 -1
  139. package/dist/scripts/notify-hook/team-worker-stop.d.ts.map +1 -1
  140. package/dist/scripts/notify-hook/team-worker-stop.js +54 -21
  141. package/dist/scripts/notify-hook/team-worker-stop.js.map +1 -1
  142. package/dist/scripts/run-test-files.js +218 -160
  143. package/dist/scripts/run-test-files.js.map +1 -1
  144. package/dist/state/__tests__/operations.test.js +463 -0
  145. package/dist/state/__tests__/operations.test.js.map +1 -1
  146. package/dist/team/__tests__/delivery-log.test.js +18 -0
  147. package/dist/team/__tests__/delivery-log.test.js.map +1 -1
  148. package/dist/team/__tests__/runtime.test.js +48 -0
  149. package/dist/team/__tests__/runtime.test.js.map +1 -1
  150. package/dist/team/__tests__/tmux-session.test.js +107 -0
  151. package/dist/team/__tests__/tmux-session.test.js.map +1 -1
  152. package/dist/team/__tests__/tmux-test-fixture.d.ts.map +1 -1
  153. package/dist/team/__tests__/tmux-test-fixture.js +14 -2
  154. package/dist/team/__tests__/tmux-test-fixture.js.map +1 -1
  155. package/dist/team/__tests__/tmux-test-fixture.test.js +1 -0
  156. package/dist/team/__tests__/tmux-test-fixture.test.js.map +1 -1
  157. package/dist/team/__tests__/worker-bootstrap.test.js +54 -1
  158. package/dist/team/__tests__/worker-bootstrap.test.js.map +1 -1
  159. package/dist/team/delivery-log.d.ts +1 -1
  160. package/dist/team/delivery-log.d.ts.map +1 -1
  161. package/dist/team/delivery-log.js.map +1 -1
  162. package/dist/team/repo-aware-decomposition.d.ts +4 -0
  163. package/dist/team/repo-aware-decomposition.d.ts.map +1 -1
  164. package/dist/team/repo-aware-decomposition.js.map +1 -1
  165. package/dist/team/runtime.d.ts.map +1 -1
  166. package/dist/team/runtime.js +78 -9
  167. package/dist/team/runtime.js.map +1 -1
  168. package/dist/team/tmux-session.d.ts +1 -0
  169. package/dist/team/tmux-session.d.ts.map +1 -1
  170. package/dist/team/tmux-session.js +16 -5
  171. package/dist/team/tmux-session.js.map +1 -1
  172. package/dist/team/ultragoal-context.d.ts +12 -0
  173. package/dist/team/ultragoal-context.d.ts.map +1 -1
  174. package/dist/team/ultragoal-context.js +32 -8
  175. package/dist/team/ultragoal-context.js.map +1 -1
  176. package/dist/utils/__tests__/paths.test.js +23 -0
  177. package/dist/utils/__tests__/paths.test.js.map +1 -1
  178. package/dist/utils/__tests__/platform-command.test.js +16 -1
  179. package/dist/utils/__tests__/platform-command.test.js.map +1 -1
  180. package/dist/utils/__tests__/version.test.d.ts +2 -0
  181. package/dist/utils/__tests__/version.test.d.ts.map +1 -0
  182. package/dist/utils/__tests__/version.test.js +51 -0
  183. package/dist/utils/__tests__/version.test.js.map +1 -0
  184. package/dist/utils/paths.d.ts +8 -1
  185. package/dist/utils/paths.d.ts.map +1 -1
  186. package/dist/utils/paths.js +20 -6
  187. package/dist/utils/paths.js.map +1 -1
  188. package/dist/utils/platform-command.d.ts +9 -0
  189. package/dist/utils/platform-command.d.ts.map +1 -1
  190. package/dist/utils/platform-command.js +15 -0
  191. package/dist/utils/platform-command.js.map +1 -1
  192. package/dist/utils/toml.d.ts +4 -0
  193. package/dist/utils/toml.d.ts.map +1 -0
  194. package/dist/utils/toml.js +75 -0
  195. package/dist/utils/toml.js.map +1 -0
  196. package/dist/utils/version.d.ts +7 -0
  197. package/dist/utils/version.d.ts.map +1 -0
  198. package/dist/utils/version.js +67 -0
  199. package/dist/utils/version.js.map +1 -0
  200. package/dist/verification/__tests__/ci-rust-gates.test.js +8 -0
  201. package/dist/verification/__tests__/ci-rust-gates.test.js.map +1 -1
  202. package/dist/verification/__tests__/dev-merge-issue-close-workflow.test.js +16 -2
  203. package/dist/verification/__tests__/dev-merge-issue-close-workflow.test.js.map +1 -1
  204. package/package.json +4 -3
  205. package/plugins/oh-my-codex/.codex-plugin/plugin.json +1 -1
  206. package/plugins/oh-my-codex/skills/autopilot/SKILL.md +3 -0
  207. package/plugins/oh-my-codex/skills/code-review/SKILL.md +2 -2
  208. package/plugins/oh-my-codex/skills/deep-interview/SKILL.md +85 -11
  209. package/plugins/oh-my-codex/skills/ultrawork/SKILL.md +32 -17
  210. package/skills/autopilot/SKILL.md +3 -0
  211. package/skills/code-review/SKILL.md +2 -2
  212. package/skills/deep-interview/SKILL.md +85 -11
  213. package/skills/ultrawork/SKILL.md +32 -17
  214. package/src/scripts/__tests__/codex-native-hook.test.ts +391 -26
  215. package/src/scripts/__tests__/run-test-files.test.ts +138 -2
  216. package/src/scripts/codex-native-hook.ts +99 -17
  217. package/src/scripts/notify-hook/team-worker-stop.ts +58 -18
  218. package/src/scripts/prepare-build.js +83 -0
  219. package/src/scripts/run-test-files.ts +229 -150
  220. package/templates/AGENTS.md +40 -199
  221. package/src/scripts/postinstall-bootstrap.js +0 -23
package/Cargo.lock CHANGED
@@ -14,9 +14,9 @@ dependencies = [
14
14
 
15
15
  [[package]]
16
16
  name = "itoa"
17
- version = "1.0.17"
17
+ version = "1.0.18"
18
18
  source = "registry+https://github.com/rust-lang/crates.io-index"
19
- checksum = "92ecc6618181def0457392ccd0ee51198e065e016d1d527a7ac1b6dc7c1f09d2"
19
+ checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682"
20
20
 
21
21
  [[package]]
22
22
  name = "libc"
@@ -26,13 +26,13 @@ checksum = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66"
26
26
 
27
27
  [[package]]
28
28
  name = "memchr"
29
- version = "2.8.0"
29
+ version = "2.8.1"
30
30
  source = "registry+https://github.com/rust-lang/crates.io-index"
31
- checksum = "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79"
31
+ checksum = "6b947ae49db0d222b1dbc6b113ce7248a3fc3a6ca21b696717bfc000ba4484d8"
32
32
 
33
33
  [[package]]
34
34
  name = "omx-api"
35
- version = "0.18.8"
35
+ version = "0.18.10"
36
36
  dependencies = [
37
37
  "serde",
38
38
  "serde_json",
@@ -40,14 +40,14 @@ dependencies = [
40
40
 
41
41
  [[package]]
42
42
  name = "omx-explore-harness"
43
- version = "0.18.8"
43
+ version = "0.18.10"
44
44
  dependencies = [
45
45
  "libc",
46
46
  ]
47
47
 
48
48
  [[package]]
49
49
  name = "omx-mux"
50
- version = "0.18.8"
50
+ version = "0.18.10"
51
51
  dependencies = [
52
52
  "serde",
53
53
  "serde_json",
@@ -55,7 +55,7 @@ dependencies = [
55
55
 
56
56
  [[package]]
57
57
  name = "omx-runtime"
58
- version = "0.18.8"
58
+ version = "0.18.10"
59
59
  dependencies = [
60
60
  "omx-mux",
61
61
  "omx-runtime-core",
@@ -64,7 +64,7 @@ dependencies = [
64
64
 
65
65
  [[package]]
66
66
  name = "omx-runtime-core"
67
- version = "0.18.8"
67
+ version = "0.18.10"
68
68
  dependencies = [
69
69
  "fs2",
70
70
  "serde",
@@ -73,7 +73,7 @@ dependencies = [
73
73
 
74
74
  [[package]]
75
75
  name = "omx-sparkshell"
76
- version = "0.18.8"
76
+ version = "0.18.10"
77
77
  dependencies = [
78
78
  "omx-mux",
79
79
  ]
@@ -128,9 +128,9 @@ dependencies = [
128
128
 
129
129
  [[package]]
130
130
  name = "serde_json"
131
- version = "1.0.149"
131
+ version = "1.0.150"
132
132
  source = "registry+https://github.com/rust-lang/crates.io-index"
133
- checksum = "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86"
133
+ checksum = "e8014e44b4736ed0538adeecded0fce2a272f22dc9578a7eb6b2d9993c74cfb9"
134
134
  dependencies = [
135
135
  "itoa",
136
136
  "memchr",
package/Cargo.toml CHANGED
@@ -11,7 +11,7 @@ resolver = "2"
11
11
 
12
12
  [workspace.package]
13
13
 
14
- version = "0.18.8"
14
+ version = "0.18.10"
15
15
 
16
16
  edition = "2021"
17
17
  rust-version = "1.73"
package/README.md CHANGED
@@ -285,6 +285,10 @@ These are useful, but they are not the main onboarding path.
285
285
 
286
286
  Use the team runtime when you specifically need durable tmux/worktree coordination, not as the default way to begin using OMX. In Codex App or plain outside-tmux sessions, treat `omx team` as a tmux-runtime shell surface rather than a directly available in-app workflow; launch OMX CLI from shell first if you actually want team execution.
287
287
 
288
+ When Team runs inside an Ultragoal story, Ultragoal remains leader-owned state: workers report checkpoint-ready evidence upward instead of mutating `.omx/ultragoal` directly. Team startup tolerates stale or malformed Ultragoal artifacts for unrelated work, but explicitly Ultragoal-linked Team launches stay fail-closed. Team startup also writes `.omx/state/team/<team-name>/preflight-context.json` so large Team runs can be resumed after compaction with the original task, worker split, Ultragoal context, and verification checklist.
289
+
290
+ For very small atomic work, Team may cap implicit fanout to one worker and print an over-orchestration warning; pass an explicit worker count only when the extra coordination cost is intentional.
291
+
288
292
  ```bash
289
293
  omx team 3:executor "fix the failing tests with verification"
290
294
  omx team status <team-name>
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=deep-interview-gate.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deep-interview-gate.test.d.ts","sourceRoot":"","sources":["../../../src/autopilot/__tests__/deep-interview-gate.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,215 @@
1
+ import assert from 'node:assert/strict';
2
+ import { describe, it } from 'node:test';
3
+ import { canAdvanceAutopilotDeepInterviewToRalplan } from '../deep-interview-gate.js';
4
+ function validExecutionContract(stride) {
5
+ const perStride = {
6
+ task: {
7
+ allow_task_shrink: true,
8
+ acceptance_coverage_scope: 'task',
9
+ shrink_policy: 'allowed',
10
+ completion_unit: 'One focused task',
11
+ stop_condition: 'Stop after that task is implemented and verified',
12
+ },
13
+ deliverable: {
14
+ allow_task_shrink: false,
15
+ acceptance_coverage_scope: 'deliverable',
16
+ shrink_policy: 'ask_before_shrink',
17
+ completion_unit: 'The named deliverable',
18
+ stop_condition: 'Stop after the deliverable is complete and verified',
19
+ },
20
+ milestone: {
21
+ allow_task_shrink: false,
22
+ acceptance_coverage_scope: 'milestone',
23
+ shrink_policy: 'deny_unless_blocked',
24
+ completion_unit: 'The approved milestone',
25
+ stop_condition: 'Stop after the milestone is complete unless blocked',
26
+ },
27
+ };
28
+ return {
29
+ version: 1,
30
+ execution_stride: stride,
31
+ source: 'deep-interview',
32
+ selected_by: 'user',
33
+ ...perStride[stride],
34
+ };
35
+ }
36
+ describe('autopilot deep-interview gate execution contract', () => {
37
+ it('falls back to persisted contract state when nextState is partial', async () => {
38
+ const persistedState = {
39
+ current_phase: 'deep-interview',
40
+ state: {
41
+ deep_interview_gate: {
42
+ status: 'complete',
43
+ rationale: 'Persisted gate and contract are ready for ralplan.',
44
+ },
45
+ handoff_artifacts: {
46
+ deep_interview: {
47
+ summary: 'Persisted handoff contract is canonical.',
48
+ execution_contract_required: true,
49
+ execution_contract: validExecutionContract('milestone'),
50
+ },
51
+ },
52
+ },
53
+ };
54
+ const decision = await canAdvanceAutopilotDeepInterviewToRalplan({
55
+ cwd: process.cwd(),
56
+ currentState: persistedState,
57
+ nextState: {
58
+ active: true,
59
+ current_phase: 'ralplan',
60
+ },
61
+ });
62
+ assert.equal(decision.allowed, true);
63
+ assert.equal(decision.reason, 'record-backed deep-interview completion gate');
64
+ });
65
+ it('rejects an invalid contract explicitly supplied by nextState before persisted fallback', async () => {
66
+ const persistedState = {
67
+ current_phase: 'deep-interview',
68
+ state: {
69
+ deep_interview_gate: {
70
+ status: 'complete',
71
+ rationale: 'Persisted gate and contract are ready for ralplan.',
72
+ },
73
+ handoff_artifacts: {
74
+ deep_interview: {
75
+ summary: 'Persisted handoff contract is canonical.',
76
+ execution_contract_required: true,
77
+ execution_contract: validExecutionContract('milestone'),
78
+ },
79
+ },
80
+ },
81
+ };
82
+ const decision = await canAdvanceAutopilotDeepInterviewToRalplan({
83
+ cwd: process.cwd(),
84
+ currentState: persistedState,
85
+ nextState: {
86
+ active: true,
87
+ current_phase: 'ralplan',
88
+ execution_contract: {
89
+ ...validExecutionContract('milestone'),
90
+ shrink_policy: 'allowed',
91
+ },
92
+ },
93
+ });
94
+ assert.equal(decision.allowed, false);
95
+ assert.match(decision.reason, /execution_contract/i);
96
+ assert.equal(decision.evidence?.execution_contract_status, 'invalid');
97
+ });
98
+ it('rejects a placeholder contract explicitly supplied by nextState before persisted fallback', async () => {
99
+ const persistedState = {
100
+ current_phase: 'deep-interview',
101
+ state: {
102
+ deep_interview_gate: {
103
+ status: 'complete',
104
+ rationale: 'Persisted gate and contract are ready for ralplan.',
105
+ },
106
+ handoff_artifacts: {
107
+ deep_interview: {
108
+ summary: 'Persisted handoff contract is canonical.',
109
+ execution_contract_required: true,
110
+ execution_contract: validExecutionContract('milestone'),
111
+ },
112
+ },
113
+ },
114
+ };
115
+ const decision = await canAdvanceAutopilotDeepInterviewToRalplan({
116
+ cwd: process.cwd(),
117
+ currentState: persistedState,
118
+ nextState: {
119
+ active: true,
120
+ current_phase: 'ralplan',
121
+ execution_contract: {},
122
+ },
123
+ });
124
+ assert.equal(decision.allowed, false);
125
+ assert.match(decision.reason, /execution_contract/i);
126
+ assert.equal(decision.evidence?.execution_contract_status, 'invalid');
127
+ });
128
+ it('rejects a non-object contract explicitly supplied by nextState before persisted fallback', async () => {
129
+ const persistedState = {
130
+ current_phase: 'deep-interview',
131
+ state: {
132
+ deep_interview_gate: {
133
+ status: 'complete',
134
+ rationale: 'Persisted gate and contract are ready for ralplan.',
135
+ },
136
+ handoff_artifacts: {
137
+ deep_interview: {
138
+ summary: 'Persisted handoff contract is canonical.',
139
+ execution_contract_required: true,
140
+ execution_contract: validExecutionContract('milestone'),
141
+ },
142
+ },
143
+ },
144
+ };
145
+ const decision = await canAdvanceAutopilotDeepInterviewToRalplan({
146
+ cwd: process.cwd(),
147
+ currentState: persistedState,
148
+ nextState: {
149
+ active: true,
150
+ current_phase: 'ralplan',
151
+ execution_contract: 'placeholder',
152
+ },
153
+ });
154
+ assert.equal(decision.allowed, false);
155
+ assert.match(decision.reason, /execution_contract/i);
156
+ assert.equal(decision.evidence?.execution_contract_status, 'invalid');
157
+ });
158
+ it('rejects a non-object handoff-local contract before compatibility fallback', async () => {
159
+ const decision = await canAdvanceAutopilotDeepInterviewToRalplan({
160
+ cwd: process.cwd(),
161
+ currentState: {
162
+ current_phase: 'deep-interview',
163
+ execution_contract: validExecutionContract('deliverable'),
164
+ state: {
165
+ deep_interview_gate: {
166
+ status: 'complete',
167
+ rationale: 'Compatibility direct contract is available.',
168
+ },
169
+ handoff_artifacts: {
170
+ deep_interview: {
171
+ summary: 'Handoff-local malformed contract must fail before direct fallback.',
172
+ execution_contract_required: true,
173
+ execution_contract: [],
174
+ },
175
+ },
176
+ },
177
+ },
178
+ nextState: {
179
+ active: true,
180
+ current_phase: 'ralplan',
181
+ },
182
+ });
183
+ assert.equal(decision.allowed, false);
184
+ assert.match(decision.reason, /execution_contract/i);
185
+ assert.equal(decision.evidence?.execution_contract_status, 'invalid');
186
+ });
187
+ it('allows a direct compatibility contract to satisfy a handoff required marker', async () => {
188
+ const decision = await canAdvanceAutopilotDeepInterviewToRalplan({
189
+ cwd: process.cwd(),
190
+ currentState: {
191
+ current_phase: 'deep-interview',
192
+ execution_contract: validExecutionContract('deliverable'),
193
+ state: {
194
+ deep_interview_gate: {
195
+ status: 'complete',
196
+ rationale: 'Compatibility direct contract is available.',
197
+ },
198
+ handoff_artifacts: {
199
+ deep_interview: {
200
+ summary: 'Marker is canonical; contract came from a compatibility location.',
201
+ execution_contract_required: true,
202
+ },
203
+ },
204
+ },
205
+ },
206
+ nextState: {
207
+ active: true,
208
+ current_phase: 'ralplan',
209
+ },
210
+ });
211
+ assert.equal(decision.allowed, true);
212
+ assert.equal(decision.reason, 'record-backed deep-interview completion gate');
213
+ });
214
+ });
215
+ //# sourceMappingURL=deep-interview-gate.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deep-interview-gate.test.js","sourceRoot":"","sources":["../../../src/autopilot/__tests__/deep-interview-gate.test.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,oBAAoB,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,WAAW,CAAC;AAEzC,OAAO,EAAE,yCAAyC,EAAE,MAAM,2BAA2B,CAAC;AAEtF,SAAS,sBAAsB,CAAC,MAA4C;IAC1E,MAAM,SAAS,GAAG;QAChB,IAAI,EAAE;YACJ,iBAAiB,EAAE,IAAI;YACvB,yBAAyB,EAAE,MAAM;YACjC,aAAa,EAAE,SAAS;YACxB,eAAe,EAAE,kBAAkB;YACnC,cAAc,EAAE,kDAAkD;SACnE;QACD,WAAW,EAAE;YACX,iBAAiB,EAAE,KAAK;YACxB,yBAAyB,EAAE,aAAa;YACxC,aAAa,EAAE,mBAAmB;YAClC,eAAe,EAAE,uBAAuB;YACxC,cAAc,EAAE,qDAAqD;SACtE;QACD,SAAS,EAAE;YACT,iBAAiB,EAAE,KAAK;YACxB,yBAAyB,EAAE,WAAW;YACtC,aAAa,EAAE,qBAAqB;YACpC,eAAe,EAAE,wBAAwB;YACzC,cAAc,EAAE,qDAAqD;SACtE;KACO,CAAC;IAEX,OAAO;QACL,OAAO,EAAE,CAAC;QACV,gBAAgB,EAAE,MAAM;QACxB,MAAM,EAAE,gBAAgB;QACxB,WAAW,EAAE,MAAM;QACnB,GAAG,SAAS,CAAC,MAAM,CAAC;KACrB,CAAC;AACJ,CAAC;AAED,QAAQ,CAAC,kDAAkD,EAAE,GAAG,EAAE;IAChE,EAAE,CAAC,kEAAkE,EAAE,KAAK,IAAI,EAAE;QAChF,MAAM,cAAc,GAAG;YACrB,aAAa,EAAE,gBAAgB;YAC/B,KAAK,EAAE;gBACL,mBAAmB,EAAE;oBACnB,MAAM,EAAE,UAAU;oBAClB,SAAS,EAAE,oDAAoD;iBAChE;gBACD,iBAAiB,EAAE;oBACjB,cAAc,EAAE;wBACd,OAAO,EAAE,0CAA0C;wBACnD,2BAA2B,EAAE,IAAI;wBACjC,kBAAkB,EAAE,sBAAsB,CAAC,WAAW,CAAC;qBACxD;iBACF;aACF;SACF,CAAC;QAEF,MAAM,QAAQ,GAAG,MAAM,yCAAyC,CAAC;YAC/D,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE;YAClB,YAAY,EAAE,cAAc;YAC5B,SAAS,EAAE;gBACT,MAAM,EAAE,IAAI;gBACZ,aAAa,EAAE,SAAS;aACzB;SACF,CAAC,CAAC;QAEH,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QACrC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,8CAA8C,CAAC,CAAC;IAChF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wFAAwF,EAAE,KAAK,IAAI,EAAE;QACtG,MAAM,cAAc,GAAG;YACrB,aAAa,EAAE,gBAAgB;YAC/B,KAAK,EAAE;gBACL,mBAAmB,EAAE;oBACnB,MAAM,EAAE,UAAU;oBAClB,SAAS,EAAE,oDAAoD;iBAChE;gBACD,iBAAiB,EAAE;oBACjB,cAAc,EAAE;wBACd,OAAO,EAAE,0CAA0C;wBACnD,2BAA2B,EAAE,IAAI;wBACjC,kBAAkB,EAAE,sBAAsB,CAAC,WAAW,CAAC;qBACxD;iBACF;aACF;SACF,CAAC;QAEF,MAAM,QAAQ,GAAG,MAAM,yCAAyC,CAAC;YAC/D,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE;YAClB,YAAY,EAAE,cAAc;YAC5B,SAAS,EAAE;gBACT,MAAM,EAAE,IAAI;gBACZ,aAAa,EAAE,SAAS;gBACxB,kBAAkB,EAAE;oBAClB,GAAG,sBAAsB,CAAC,WAAW,CAAC;oBACtC,aAAa,EAAE,SAAS;iBACzB;aACF;SACF,CAAC,CAAC;QAEH,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QACtC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;QACrD,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,EAAE,yBAAyB,EAAE,SAAS,CAAC,CAAC;IACxE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2FAA2F,EAAE,KAAK,IAAI,EAAE;QACzG,MAAM,cAAc,GAAG;YACrB,aAAa,EAAE,gBAAgB;YAC/B,KAAK,EAAE;gBACL,mBAAmB,EAAE;oBACnB,MAAM,EAAE,UAAU;oBAClB,SAAS,EAAE,oDAAoD;iBAChE;gBACD,iBAAiB,EAAE;oBACjB,cAAc,EAAE;wBACd,OAAO,EAAE,0CAA0C;wBACnD,2BAA2B,EAAE,IAAI;wBACjC,kBAAkB,EAAE,sBAAsB,CAAC,WAAW,CAAC;qBACxD;iBACF;aACF;SACF,CAAC;QAEF,MAAM,QAAQ,GAAG,MAAM,yCAAyC,CAAC;YAC/D,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE;YAClB,YAAY,EAAE,cAAc;YAC5B,SAAS,EAAE;gBACT,MAAM,EAAE,IAAI;gBACZ,aAAa,EAAE,SAAS;gBACxB,kBAAkB,EAAE,EAAE;aACvB;SACF,CAAC,CAAC;QAEH,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QACtC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;QACrD,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,EAAE,yBAAyB,EAAE,SAAS,CAAC,CAAC;IACxE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0FAA0F,EAAE,KAAK,IAAI,EAAE;QACxG,MAAM,cAAc,GAAG;YACrB,aAAa,EAAE,gBAAgB;YAC/B,KAAK,EAAE;gBACL,mBAAmB,EAAE;oBACnB,MAAM,EAAE,UAAU;oBAClB,SAAS,EAAE,oDAAoD;iBAChE;gBACD,iBAAiB,EAAE;oBACjB,cAAc,EAAE;wBACd,OAAO,EAAE,0CAA0C;wBACnD,2BAA2B,EAAE,IAAI;wBACjC,kBAAkB,EAAE,sBAAsB,CAAC,WAAW,CAAC;qBACxD;iBACF;aACF;SACF,CAAC;QAEF,MAAM,QAAQ,GAAG,MAAM,yCAAyC,CAAC;YAC/D,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE;YAClB,YAAY,EAAE,cAAc;YAC5B,SAAS,EAAE;gBACT,MAAM,EAAE,IAAI;gBACZ,aAAa,EAAE,SAAS;gBACxB,kBAAkB,EAAE,aAAa;aAClC;SACF,CAAC,CAAC;QAEH,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QACtC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;QACrD,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,EAAE,yBAAyB,EAAE,SAAS,CAAC,CAAC;IACxE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2EAA2E,EAAE,KAAK,IAAI,EAAE;QACzF,MAAM,QAAQ,GAAG,MAAM,yCAAyC,CAAC;YAC/D,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE;YAClB,YAAY,EAAE;gBACZ,aAAa,EAAE,gBAAgB;gBAC/B,kBAAkB,EAAE,sBAAsB,CAAC,aAAa,CAAC;gBACzD,KAAK,EAAE;oBACL,mBAAmB,EAAE;wBACnB,MAAM,EAAE,UAAU;wBAClB,SAAS,EAAE,6CAA6C;qBACzD;oBACD,iBAAiB,EAAE;wBACjB,cAAc,EAAE;4BACd,OAAO,EAAE,oEAAoE;4BAC7E,2BAA2B,EAAE,IAAI;4BACjC,kBAAkB,EAAE,EAAE;yBACvB;qBACF;iBACF;aACF;YACD,SAAS,EAAE;gBACT,MAAM,EAAE,IAAI;gBACZ,aAAa,EAAE,SAAS;aACzB;SACF,CAAC,CAAC;QAEH,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QACtC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;QACrD,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,EAAE,yBAAyB,EAAE,SAAS,CAAC,CAAC;IACxE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6EAA6E,EAAE,KAAK,IAAI,EAAE;QAC3F,MAAM,QAAQ,GAAG,MAAM,yCAAyC,CAAC;YAC/D,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE;YAClB,YAAY,EAAE;gBACZ,aAAa,EAAE,gBAAgB;gBAC/B,kBAAkB,EAAE,sBAAsB,CAAC,aAAa,CAAC;gBACzD,KAAK,EAAE;oBACL,mBAAmB,EAAE;wBACnB,MAAM,EAAE,UAAU;wBAClB,SAAS,EAAE,6CAA6C;qBACzD;oBACD,iBAAiB,EAAE;wBACjB,cAAc,EAAE;4BACd,OAAO,EAAE,mEAAmE;4BAC5E,2BAA2B,EAAE,IAAI;yBAClC;qBACF;iBACF;aACF;YACD,SAAS,EAAE;gBACT,MAAM,EAAE,IAAI;gBACZ,aAAa,EAAE,SAAS;aACzB;SACF,CAAC,CAAC;QAEH,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QACrC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,8CAA8C,CAAC,CAAC;IAChF,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -9,6 +9,9 @@ describe('autopilot supervisor FSM helpers', () => {
9
9
  assert.equal(normalizeAutopilotPhase('ralph'), 'ralph');
10
10
  assert.equal(normalizeAutopilotPhase('completed'), 'complete');
11
11
  assert.equal(normalizeAutopilotPhase('planning'), 'ralplan');
12
+ assert.equal(normalizeAutopilotPhase('replan'), 'ralplan');
13
+ assert.equal(normalizeAutopilotPhase('autopilot:ralplan'), 'ralplan');
14
+ assert.equal(normalizeAutopilotPhase('autopilot:replan'), 'ralplan');
12
15
  });
13
16
  it('derives child-stage labels only from Autopilot supervisor state', () => {
14
17
  const autopilotState = {
@@ -1 +1 @@
1
- {"version":3,"file":"fsm.test.js","sourceRoot":"","sources":["../../../src/autopilot/__tests__/fsm.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fsm.test.js","sourceRoot":"","sources":["../../../src/autopilot/__tests__/fsm.test.ts"],"names":[],"mappings":"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"}
@@ -12,6 +12,10 @@ describe('autopilot ralplan gate', () => {
12
12
  const trackingPath = subagentTrackingPath(cwd);
13
13
  try {
14
14
  await mkdir(join(trackingPath, '..'), { recursive: true });
15
+ await writeFile(join(cwd, '.omx', 'state', 'session.json'), JSON.stringify({
16
+ session_id: sessionId,
17
+ native_session_id: 'thread-leader',
18
+ }, null, 2));
15
19
  await writeFile(trackingPath, JSON.stringify({
16
20
  schemaVersion: 1,
17
21
  sessions: {
@@ -75,5 +79,149 @@ describe('autopilot ralplan gate', () => {
75
79
  await rm(cwd, { recursive: true, force: true });
76
80
  }
77
81
  });
82
+ it('accepts fresh native review evidence when tracker leader id aliases a subagent lane', async () => {
83
+ const cwd = await mkdtemp(join(tmpdir(), 'omx-autopilot-ralplan-fresh-subagent-alias-'));
84
+ const sessionId = 'sess-autopilot-fresh-subagent-alias';
85
+ const trackingPath = subagentTrackingPath(cwd);
86
+ try {
87
+ await mkdir(join(trackingPath, '..'), { recursive: true });
88
+ await writeFile(trackingPath, JSON.stringify({
89
+ schemaVersion: 1,
90
+ sessions: {
91
+ [sessionId]: {
92
+ session_id: sessionId,
93
+ leader_thread_id: 'thread-architect',
94
+ updated_at: '2026-05-28T18:35:10.000Z',
95
+ threads: {
96
+ 'thread-architect': {
97
+ thread_id: 'thread-architect',
98
+ kind: 'subagent',
99
+ first_seen_at: '2026-05-28T18:34:51.000Z',
100
+ last_seen_at: '2026-05-28T18:34:51.000Z',
101
+ turn_count: 1,
102
+ mode: 'architect',
103
+ },
104
+ 'thread-critic': {
105
+ thread_id: 'thread-critic',
106
+ kind: 'subagent',
107
+ first_seen_at: '2026-05-28T18:35:10.000Z',
108
+ last_seen_at: '2026-05-28T18:35:10.000Z',
109
+ turn_count: 1,
110
+ mode: 'critic',
111
+ },
112
+ },
113
+ },
114
+ },
115
+ }, null, 2));
116
+ const state = {
117
+ current_phase: 'ralplan',
118
+ handoff_artifacts: {
119
+ ralplan_consensus_gate: {
120
+ complete: true,
121
+ sequence: ['architect-review', 'critic-review'],
122
+ ralplan_architect_review: {
123
+ agent_role: 'architect',
124
+ provenance_kind: 'native_subagent',
125
+ verdict: 'approve',
126
+ session_id: sessionId,
127
+ thread_id: 'thread-architect',
128
+ artifact_path: '.omx/artifacts/architect.md',
129
+ tracker_path: '.omx/state/subagent-tracking.json',
130
+ completed_at: '2026-05-28T18:34:51.000Z',
131
+ },
132
+ ralplan_critic_review: {
133
+ agent_role: 'critic',
134
+ provenance_kind: 'native_subagent',
135
+ verdict: 'approve',
136
+ session_id: sessionId,
137
+ thread_id: 'thread-critic',
138
+ artifact_path: '.omx/artifacts/critic.md',
139
+ tracker_path: '.omx/state/subagent-tracking.json',
140
+ completed_at: '2026-05-28T18:35:10.000Z',
141
+ },
142
+ },
143
+ },
144
+ };
145
+ const decision = canAdvanceAutopilotRalplanToUltragoal({ cwd, sessionId, currentState: state });
146
+ assert.equal(decision.allowed, true);
147
+ assert.equal(decision.evidence?.blockedReason, null);
148
+ }
149
+ finally {
150
+ await rm(cwd, { recursive: true, force: true });
151
+ }
152
+ });
153
+ it('rejects native review evidence from the current native session leader', async () => {
154
+ const cwd = await mkdtemp(join(tmpdir(), 'omx-autopilot-ralplan-native-leader-'));
155
+ const sessionId = 'sess-autopilot-native-leader';
156
+ const trackingPath = subagentTrackingPath(cwd);
157
+ try {
158
+ await mkdir(join(trackingPath, '..'), { recursive: true });
159
+ await writeFile(join(cwd, '.omx', 'state', 'session.json'), JSON.stringify({
160
+ session_id: sessionId,
161
+ native_session_id: 'thread-leader',
162
+ }, null, 2));
163
+ await writeFile(trackingPath, JSON.stringify({
164
+ schemaVersion: 1,
165
+ sessions: {
166
+ [sessionId]: {
167
+ session_id: sessionId,
168
+ leader_thread_id: 'thread-leader',
169
+ updated_at: '2026-05-28T18:35:10.000Z',
170
+ threads: {
171
+ 'thread-leader': {
172
+ thread_id: 'thread-leader',
173
+ kind: 'subagent',
174
+ first_seen_at: '2026-05-28T18:34:51.000Z',
175
+ last_seen_at: '2026-05-28T18:34:51.000Z',
176
+ turn_count: 2,
177
+ },
178
+ 'thread-critic': {
179
+ thread_id: 'thread-critic',
180
+ kind: 'subagent',
181
+ first_seen_at: '2026-05-28T18:35:10.000Z',
182
+ last_seen_at: '2026-05-28T18:35:10.000Z',
183
+ turn_count: 1,
184
+ },
185
+ },
186
+ },
187
+ },
188
+ }, null, 2));
189
+ const state = {
190
+ current_phase: 'ralplan',
191
+ handoff_artifacts: {
192
+ ralplan_consensus_gate: {
193
+ complete: true,
194
+ sequence: ['architect-review', 'critic-review'],
195
+ ralplan_architect_review: {
196
+ agent_role: 'architect',
197
+ provenance_kind: 'native_subagent',
198
+ verdict: 'approve',
199
+ session_id: sessionId,
200
+ thread_id: 'thread-leader',
201
+ artifact_path: '.omx/artifacts/architect.md',
202
+ tracker_path: '.omx/state/subagent-tracking.json',
203
+ completed_at: '2026-05-28T18:34:51.000Z',
204
+ },
205
+ ralplan_critic_review: {
206
+ agent_role: 'critic',
207
+ provenance_kind: 'native_subagent',
208
+ verdict: 'approve',
209
+ session_id: sessionId,
210
+ thread_id: 'thread-critic',
211
+ artifact_path: '.omx/artifacts/critic.md',
212
+ tracker_path: '.omx/state/subagent-tracking.json',
213
+ completed_at: '2026-05-28T18:35:10.000Z',
214
+ },
215
+ },
216
+ },
217
+ };
218
+ const decision = canAdvanceAutopilotRalplanToUltragoal({ cwd, sessionId, currentState: state });
219
+ assert.equal(decision.allowed, false);
220
+ assert.match(buildAutopilotRalplanUltragoalGateError(decision), /architect tracker thread thread-leader is the session leader/);
221
+ }
222
+ finally {
223
+ await rm(cwd, { recursive: true, force: true });
224
+ }
225
+ });
78
226
  });
79
227
  //# sourceMappingURL=ralplan-gate.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ralplan-gate.test.js","sourceRoot":"","sources":["../../../src/autopilot/__tests__/ralplan-gate.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ralplan-gate.test.js","sourceRoot":"","sources":["../../../src/autopilot/__tests__/ralplan-gate.test.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"deep-interview-gate.d.ts","sourceRoot":"","sources":["../../src/autopilot/deep-interview-gate.ts"],"names":[],"mappings":"AAIA,KAAK,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAE1C,MAAM,WAAW,sCAAsC;IACrD,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,UAAU,GAAG,IAAI,CAAC;IACjC,SAAS,CAAC,EAAE,UAAU,GAAG,IAAI,CAAC;IAC9B,kBAAkB,CAAC,EAAE,UAAU,GAAG,IAAI,CAAC;CACxC;AAED,MAAM,WAAW,yCAAyC;IACxD,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,UAAU,CAAC;CACvB;AA4PD,wBAAsB,yCAAyC,CAC7D,KAAK,EAAE,sCAAsC,GAC5C,OAAO,CAAC,yCAAyC,CAAC,CAoDpD;AAED,wBAAgB,2CAA2C,CACzD,QAAQ,EAAE,yCAAyC,GAClD,MAAM,CAER"}
1
+ {"version":3,"file":"deep-interview-gate.d.ts","sourceRoot":"","sources":["../../src/autopilot/deep-interview-gate.ts"],"names":[],"mappings":"AAIA,KAAK,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAI1C,MAAM,WAAW,sCAAsC;IACrD,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,UAAU,GAAG,IAAI,CAAC;IACjC,SAAS,CAAC,EAAE,UAAU,GAAG,IAAI,CAAC;IAC9B,kBAAkB,CAAC,EAAE,UAAU,GAAG,IAAI,CAAC;CACxC;AAED,MAAM,WAAW,yCAAyC;IACxD,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,UAAU,CAAC;CACvB;AA+YD,wBAAsB,yCAAyC,CAC7D,KAAK,EAAE,sCAAsC,GAC5C,OAAO,CAAC,yCAAyC,CAAC,CA+DpD;AAED,wBAAgB,2CAA2C,CACzD,QAAQ,EAAE,yCAAyC,GAClD,MAAM,CAER"}