oh-my-codex 0.14.0 → 0.14.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 (185) hide show
  1. package/Cargo.lock +5 -5
  2. package/Cargo.toml +1 -1
  3. package/README.md +14 -8
  4. package/crates/omx-explore/src/main.rs +94 -1
  5. package/crates/omx-sparkshell/src/codex_bridge.rs +59 -12
  6. package/crates/omx-sparkshell/tests/execution.rs +48 -0
  7. package/dist/cli/__tests__/explore.test.js +33 -1
  8. package/dist/cli/__tests__/explore.test.js.map +1 -1
  9. package/dist/cli/__tests__/index.test.js +11 -2
  10. package/dist/cli/__tests__/index.test.js.map +1 -1
  11. package/dist/cli/__tests__/package-bin-contract.test.js +5 -0
  12. package/dist/cli/__tests__/package-bin-contract.test.js.map +1 -1
  13. package/dist/cli/__tests__/question.test.js +139 -25
  14. package/dist/cli/__tests__/question.test.js.map +1 -1
  15. package/dist/cli/__tests__/session-scoped-runtime.test.js +30 -0
  16. package/dist/cli/__tests__/session-scoped-runtime.test.js.map +1 -1
  17. package/dist/cli/__tests__/setup-agents-overwrite.test.js +32 -7
  18. package/dist/cli/__tests__/setup-agents-overwrite.test.js.map +1 -1
  19. package/dist/cli/__tests__/setup-refresh.test.js +8 -6
  20. package/dist/cli/__tests__/setup-refresh.test.js.map +1 -1
  21. package/dist/cli/__tests__/sparkshell-cli.test.js +23 -0
  22. package/dist/cli/__tests__/sparkshell-cli.test.js.map +1 -1
  23. package/dist/cli/__tests__/uninstall.test.js +65 -5
  24. package/dist/cli/__tests__/uninstall.test.js.map +1 -1
  25. package/dist/cli/__tests__/update.test.js +360 -26
  26. package/dist/cli/__tests__/update.test.js.map +1 -1
  27. package/dist/cli/explore.d.ts.map +1 -1
  28. package/dist/cli/explore.js +18 -3
  29. package/dist/cli/explore.js.map +1 -1
  30. package/dist/cli/index.d.ts +2 -1
  31. package/dist/cli/index.d.ts.map +1 -1
  32. package/dist/cli/index.js +7 -2
  33. package/dist/cli/index.js.map +1 -1
  34. package/dist/cli/setup.d.ts.map +1 -1
  35. package/dist/cli/setup.js +25 -3
  36. package/dist/cli/setup.js.map +1 -1
  37. package/dist/cli/sparkshell.d.ts.map +1 -1
  38. package/dist/cli/sparkshell.js +11 -1
  39. package/dist/cli/sparkshell.js.map +1 -1
  40. package/dist/cli/team.d.ts.map +1 -1
  41. package/dist/cli/team.js +159 -394
  42. package/dist/cli/team.js.map +1 -1
  43. package/dist/cli/uninstall.d.ts.map +1 -1
  44. package/dist/cli/uninstall.js +3 -1
  45. package/dist/cli/uninstall.js.map +1 -1
  46. package/dist/cli/update.d.ts +37 -9
  47. package/dist/cli/update.d.ts.map +1 -1
  48. package/dist/cli/update.js +204 -26
  49. package/dist/cli/update.js.map +1 -1
  50. package/dist/config/__tests__/generator-idempotent.test.js +51 -14
  51. package/dist/config/__tests__/generator-idempotent.test.js.map +1 -1
  52. package/dist/config/__tests__/generator-notify.test.js +35 -10
  53. package/dist/config/__tests__/generator-notify.test.js.map +1 -1
  54. package/dist/config/generator.d.ts +1 -0
  55. package/dist/config/generator.d.ts.map +1 -1
  56. package/dist/config/generator.js +61 -7
  57. package/dist/config/generator.js.map +1 -1
  58. package/dist/hooks/__tests__/code-review-skill-contract.test.d.ts +2 -0
  59. package/dist/hooks/__tests__/code-review-skill-contract.test.d.ts.map +1 -0
  60. package/dist/hooks/__tests__/code-review-skill-contract.test.js +56 -0
  61. package/dist/hooks/__tests__/code-review-skill-contract.test.js.map +1 -0
  62. package/dist/hooks/__tests__/deep-interview-contract.test.js +31 -0
  63. package/dist/hooks/__tests__/deep-interview-contract.test.js.map +1 -1
  64. package/dist/hooks/__tests__/explicit-terminal-stop-docs-contract.test.d.ts +2 -0
  65. package/dist/hooks/__tests__/explicit-terminal-stop-docs-contract.test.d.ts.map +1 -0
  66. package/dist/hooks/__tests__/explicit-terminal-stop-docs-contract.test.js +43 -0
  67. package/dist/hooks/__tests__/explicit-terminal-stop-docs-contract.test.js.map +1 -0
  68. package/dist/hooks/__tests__/explicit-terminal-stop-model-docs-contract.test.d.ts +2 -0
  69. package/dist/hooks/__tests__/explicit-terminal-stop-model-docs-contract.test.d.ts.map +1 -0
  70. package/dist/hooks/__tests__/explicit-terminal-stop-model-docs-contract.test.js +38 -0
  71. package/dist/hooks/__tests__/explicit-terminal-stop-model-docs-contract.test.js.map +1 -0
  72. package/dist/hooks/__tests__/keyword-detector.test.js +108 -0
  73. package/dist/hooks/__tests__/keyword-detector.test.js.map +1 -1
  74. package/dist/hooks/__tests__/prompt-guidance-test-helpers.d.ts.map +1 -1
  75. package/dist/hooks/__tests__/prompt-guidance-test-helpers.js +16 -1
  76. package/dist/hooks/__tests__/prompt-guidance-test-helpers.js.map +1 -1
  77. package/dist/hooks/keyword-detector.d.ts.map +1 -1
  78. package/dist/hooks/keyword-detector.js +34 -8
  79. package/dist/hooks/keyword-detector.js.map +1 -1
  80. package/dist/mcp/__tests__/bootstrap.test.js +7 -25
  81. package/dist/mcp/__tests__/bootstrap.test.js.map +1 -1
  82. package/dist/mcp/__tests__/server-lifecycle.test.js +60 -0
  83. package/dist/mcp/__tests__/server-lifecycle.test.js.map +1 -1
  84. package/dist/mcp/__tests__/state-server.test.js +177 -0
  85. package/dist/mcp/__tests__/state-server.test.js.map +1 -1
  86. package/dist/mcp/bootstrap.d.ts.map +1 -1
  87. package/dist/mcp/bootstrap.js +36 -18
  88. package/dist/mcp/bootstrap.js.map +1 -1
  89. package/dist/mcp/state-server.d.ts +17 -0
  90. package/dist/mcp/state-server.d.ts.map +1 -1
  91. package/dist/mcp/state-server.js +55 -1
  92. package/dist/mcp/state-server.js.map +1 -1
  93. package/dist/notifications/__tests__/index.test.js +0 -3
  94. package/dist/notifications/__tests__/index.test.js.map +1 -1
  95. package/dist/notifications/__tests__/session-status.test.js +90 -0
  96. package/dist/notifications/__tests__/session-status.test.js.map +1 -1
  97. package/dist/notifications/session-status.d.ts +2 -0
  98. package/dist/notifications/session-status.d.ts.map +1 -1
  99. package/dist/notifications/session-status.js +19 -4
  100. package/dist/notifications/session-status.js.map +1 -1
  101. package/dist/question/__tests__/deep-interview.test.js +44 -0
  102. package/dist/question/__tests__/deep-interview.test.js.map +1 -1
  103. package/dist/question/__tests__/renderer.test.js +192 -12
  104. package/dist/question/__tests__/renderer.test.js.map +1 -1
  105. package/dist/question/__tests__/state.test.js +21 -1
  106. package/dist/question/__tests__/state.test.js.map +1 -1
  107. package/dist/question/deep-interview.d.ts +3 -0
  108. package/dist/question/deep-interview.d.ts.map +1 -1
  109. package/dist/question/deep-interview.js +18 -1
  110. package/dist/question/deep-interview.js.map +1 -1
  111. package/dist/question/renderer.d.ts +4 -2
  112. package/dist/question/renderer.d.ts.map +1 -1
  113. package/dist/question/renderer.js +87 -18
  114. package/dist/question/renderer.js.map +1 -1
  115. package/dist/runtime/__tests__/run-outcome.test.js +38 -0
  116. package/dist/runtime/__tests__/run-outcome.test.js.map +1 -1
  117. package/dist/runtime/__tests__/run-state.test.d.ts +2 -0
  118. package/dist/runtime/__tests__/run-state.test.d.ts.map +1 -0
  119. package/dist/runtime/__tests__/run-state.test.js +37 -0
  120. package/dist/runtime/__tests__/run-state.test.js.map +1 -0
  121. package/dist/runtime/run-loop.d.ts +5 -1
  122. package/dist/runtime/run-loop.d.ts.map +1 -1
  123. package/dist/runtime/run-loop.js +8 -3
  124. package/dist/runtime/run-loop.js.map +1 -1
  125. package/dist/runtime/run-outcome.d.ts +18 -0
  126. package/dist/runtime/run-outcome.d.ts.map +1 -1
  127. package/dist/runtime/run-outcome.js +156 -7
  128. package/dist/runtime/run-outcome.js.map +1 -1
  129. package/dist/runtime/run-state.d.ts +5 -1
  130. package/dist/runtime/run-state.d.ts.map +1 -1
  131. package/dist/runtime/run-state.js +13 -3
  132. package/dist/runtime/run-state.js.map +1 -1
  133. package/dist/runtime/terminal-lifecycle.d.ts +11 -0
  134. package/dist/runtime/terminal-lifecycle.d.ts.map +1 -0
  135. package/dist/runtime/terminal-lifecycle.js +52 -0
  136. package/dist/runtime/terminal-lifecycle.js.map +1 -0
  137. package/dist/scripts/__tests__/codex-native-hook.test.js +370 -56
  138. package/dist/scripts/__tests__/codex-native-hook.test.js.map +1 -1
  139. package/dist/scripts/__tests__/postinstall.test.d.ts +2 -0
  140. package/dist/scripts/__tests__/postinstall.test.d.ts.map +1 -0
  141. package/dist/scripts/__tests__/postinstall.test.js +178 -0
  142. package/dist/scripts/__tests__/postinstall.test.js.map +1 -0
  143. package/dist/scripts/codex-native-hook.d.ts +1 -0
  144. package/dist/scripts/codex-native-hook.d.ts.map +1 -1
  145. package/dist/scripts/codex-native-hook.js +115 -56
  146. package/dist/scripts/codex-native-hook.js.map +1 -1
  147. package/dist/scripts/postinstall.d.ts +22 -0
  148. package/dist/scripts/postinstall.d.ts.map +1 -0
  149. package/dist/scripts/postinstall.js +105 -0
  150. package/dist/scripts/postinstall.js.map +1 -0
  151. package/dist/state/__tests__/operations.test.js +60 -0
  152. package/dist/state/__tests__/operations.test.js.map +1 -1
  153. package/dist/state/operations.d.ts.map +1 -1
  154. package/dist/state/operations.js +18 -1
  155. package/dist/state/operations.js.map +1 -1
  156. package/dist/team/__tests__/role-router.test.js +6 -0
  157. package/dist/team/__tests__/role-router.test.js.map +1 -1
  158. package/dist/team/__tests__/runtime.test.js +108 -2
  159. package/dist/team/__tests__/runtime.test.js.map +1 -1
  160. package/dist/team/runtime.d.ts.map +1 -1
  161. package/dist/team/runtime.js +18 -4
  162. package/dist/team/runtime.js.map +1 -1
  163. package/dist/utils/__tests__/dep-versions.test.js +25 -8
  164. package/dist/utils/__tests__/dep-versions.test.js.map +1 -1
  165. package/dist/utils/__tests__/paths.test.js +45 -0
  166. package/dist/utils/__tests__/paths.test.js.map +1 -1
  167. package/dist/utils/paths.d.ts +2 -0
  168. package/dist/utils/paths.d.ts.map +1 -1
  169. package/dist/utils/paths.js +22 -7
  170. package/dist/utils/paths.js.map +1 -1
  171. package/dist/verification/__tests__/ci-rust-gates.test.js +1 -1
  172. package/dist/verification/__tests__/ci-rust-gates.test.js.map +1 -1
  173. package/package.json +3 -2
  174. package/prompts/architect.md +4 -0
  175. package/prompts/code-reviewer.md +3 -0
  176. package/skills/code-review/SKILL.md +94 -28
  177. package/skills/deep-interview/SKILL.md +91 -0
  178. package/src/scripts/__tests__/codex-native-hook.test.ts +468 -64
  179. package/src/scripts/__tests__/postinstall.test.ts +210 -0
  180. package/src/scripts/codex-native-hook.ts +136 -53
  181. package/src/scripts/postinstall-bootstrap.js +23 -0
  182. package/src/scripts/postinstall.ts +161 -0
  183. package/templates/AGENTS.md +1 -1
  184. package/templates/model-instructions/explore-lightweight-AGENTS.md +11 -0
  185. package/templates/model-instructions/sparkshell-lightweight-AGENTS.md +10 -0
@@ -1,9 +1,10 @@
1
1
  import { describe, it } from 'node:test';
2
2
  import assert from 'node:assert/strict';
3
- import { mkdtemp, rm } from 'node:fs/promises';
4
- import { join } from 'node:path';
3
+ import { mkdir, mkdtemp, readFile, rm, writeFile } from 'node:fs/promises';
4
+ import { dirname, join } from 'node:path';
5
5
  import { tmpdir } from 'node:os';
6
- import { isNewerVersion, maybeCheckAndPromptUpdate, shouldCheckForUpdates, } from '../update.js';
6
+ import { isInstallVersionBump, isNewerVersion, maybeCheckAndPromptUpdate, readUserInstallStamp, resolveInstalledCliEntry, runImmediateUpdate, shouldCheckForUpdates, spawnInstalledSetupRefresh, writeUserInstallStamp, } from '../update.js';
7
+ const PACKAGE_NAME = 'oh-my-codex';
7
8
  describe('isNewerVersion', () => {
8
9
  it('returns true when latest has higher major', () => {
9
10
  assert.equal(isNewerVersion('1.0.0', '2.0.0'), true);
@@ -61,11 +62,43 @@ describe('shouldCheckForUpdates', () => {
61
62
  });
62
63
  it('respects custom interval', () => {
63
64
  const now = Date.now();
64
- const customInterval = 60 * 1000; // 1 min
65
- const recentCheck = new Date(now - 30 * 1000).toISOString(); // 30s ago
65
+ const customInterval = 60 * 1000;
66
+ const recentCheck = new Date(now - 30 * 1000).toISOString();
66
67
  assert.equal(shouldCheckForUpdates(now, { last_checked_at: recentCheck }, customInterval), false);
67
68
  });
68
69
  });
70
+ describe('install stamp helpers', () => {
71
+ it('treats missing prior stamp as a version bump', () => {
72
+ assert.equal(isInstallVersionBump('0.14.0', null), true);
73
+ });
74
+ it('treats matching installed_version as not a bump', () => {
75
+ assert.equal(isInstallVersionBump('0.14.0', {
76
+ installed_version: '0.14.0',
77
+ setup_completed_version: '0.14.0',
78
+ updated_at: '2026-04-20T00:00:00.000Z',
79
+ }), false);
80
+ });
81
+ it('writes and reads the user-scope install stamp schema', async () => {
82
+ const root = await mkdtemp(join(tmpdir(), 'omx-install-stamp-'));
83
+ const stampPath = join(root, '.codex', '.omx', 'install-state.json');
84
+ try {
85
+ await writeUserInstallStamp({
86
+ installed_version: '0.14.0',
87
+ setup_completed_version: '0.14.0',
88
+ updated_at: '2026-04-20T00:00:00.000Z',
89
+ }, stampPath);
90
+ const parsed = await readUserInstallStamp(stampPath);
91
+ assert.deepEqual(parsed, {
92
+ installed_version: '0.14.0',
93
+ setup_completed_version: '0.14.0',
94
+ updated_at: '2026-04-20T00:00:00.000Z',
95
+ });
96
+ }
97
+ finally {
98
+ await rm(root, { recursive: true, force: true });
99
+ }
100
+ });
101
+ });
69
102
  describe('maybeCheckAndPromptUpdate', () => {
70
103
  async function withInteractiveTty(run) {
71
104
  const originalStdinTty = process.stdin.isTTY;
@@ -96,7 +129,7 @@ describe('maybeCheckAndPromptUpdate', () => {
96
129
  const cwd = await mkdtemp(join(tmpdir(), 'omx-update-'));
97
130
  const originalLog = console.log;
98
131
  const prompts = [];
99
- const setupCalls = [];
132
+ const setupRefreshCalls = [];
100
133
  console.log = (...args) => {
101
134
  prompts.push(args.map((arg) => String(arg)).join(' '));
102
135
  };
@@ -107,12 +140,13 @@ describe('maybeCheckAndPromptUpdate', () => {
107
140
  fetchLatestVersion: async () => '0.9.0',
108
141
  askYesNo: async () => true,
109
142
  runGlobalUpdate: () => ({ ok: true, stderr: '' }),
110
- setup: async (options) => {
111
- setupCalls.push(options ?? {});
143
+ runSetupRefresh: async (refreshCwd) => {
144
+ setupRefreshCalls.push(refreshCwd);
145
+ return { ok: true, stderr: '' };
112
146
  },
113
147
  });
114
148
  });
115
- assert.deepEqual(setupCalls, [{}]);
149
+ assert.deepEqual(setupRefreshCalls, [cwd]);
116
150
  assert.match(prompts.join('\n'), /Updated to v0\.9\.0/);
117
151
  }
118
152
  finally {
@@ -122,7 +156,7 @@ describe('maybeCheckAndPromptUpdate', () => {
122
156
  });
123
157
  it('preserves local config semantics by avoiding force setup during auto-update', async () => {
124
158
  const cwd = await mkdtemp(join(tmpdir(), 'omx-update-'));
125
- let receivedOptions;
159
+ const receivedCwds = [];
126
160
  try {
127
161
  await withInteractiveTty(async () => {
128
162
  await maybeCheckAndPromptUpdate(cwd, {
@@ -130,15 +164,13 @@ describe('maybeCheckAndPromptUpdate', () => {
130
164
  fetchLatestVersion: async () => '0.13.1',
131
165
  askYesNo: async () => true,
132
166
  runGlobalUpdate: () => ({ ok: true, stderr: '' }),
133
- setup: async (options) => {
134
- receivedOptions = options ?? {};
167
+ runSetupRefresh: async (refreshCwd) => {
168
+ receivedCwds.push(refreshCwd);
169
+ return { ok: true, stderr: '' };
135
170
  },
136
171
  });
137
172
  });
138
- assert.deepEqual(receivedOptions, {});
139
- assert.equal(typeof receivedOptions === 'object' &&
140
- receivedOptions !== null &&
141
- 'force' in receivedOptions, false);
173
+ assert.deepEqual(receivedCwds, [cwd]);
142
174
  }
143
175
  finally {
144
176
  await rm(cwd, { recursive: true, force: true });
@@ -147,7 +179,7 @@ describe('maybeCheckAndPromptUpdate', () => {
147
179
  it('does not update or refresh setup when the prompt is declined', async () => {
148
180
  const cwd = await mkdtemp(join(tmpdir(), 'omx-update-'));
149
181
  let updateAttempts = 0;
150
- let setupCalls = 0;
182
+ let setupRefreshCalls = 0;
151
183
  try {
152
184
  await withInteractiveTty(async () => {
153
185
  await maybeCheckAndPromptUpdate(cwd, {
@@ -158,13 +190,14 @@ describe('maybeCheckAndPromptUpdate', () => {
158
190
  updateAttempts += 1;
159
191
  return { ok: true, stderr: '' };
160
192
  },
161
- setup: async () => {
162
- setupCalls += 1;
193
+ runSetupRefresh: async () => {
194
+ setupRefreshCalls += 1;
195
+ return { ok: true, stderr: '' };
163
196
  },
164
197
  });
165
198
  });
166
199
  assert.equal(updateAttempts, 0);
167
- assert.equal(setupCalls, 0);
200
+ assert.equal(setupRefreshCalls, 0);
168
201
  }
169
202
  finally {
170
203
  await rm(cwd, { recursive: true, force: true });
@@ -174,7 +207,7 @@ describe('maybeCheckAndPromptUpdate', () => {
174
207
  const cwd = await mkdtemp(join(tmpdir(), 'omx-update-'));
175
208
  const originalLog = console.log;
176
209
  const logs = [];
177
- let setupCalls = 0;
210
+ let setupRefreshCalls = 0;
178
211
  console.log = (...args) => {
179
212
  logs.push(args.map((arg) => String(arg)).join(' '));
180
213
  };
@@ -185,12 +218,13 @@ describe('maybeCheckAndPromptUpdate', () => {
185
218
  fetchLatestVersion: async () => '0.9.0',
186
219
  askYesNo: async () => true,
187
220
  runGlobalUpdate: () => ({ ok: false, stderr: 'npm exited 1' }),
188
- setup: async () => {
189
- setupCalls += 1;
221
+ runSetupRefresh: async () => {
222
+ setupRefreshCalls += 1;
223
+ return { ok: true, stderr: '' };
190
224
  },
191
225
  });
192
226
  });
193
- assert.equal(setupCalls, 0);
227
+ assert.equal(setupRefreshCalls, 0);
194
228
  assert.match(logs.join('\n'), /Update failed\. Run manually: npm install -g oh-my-codex@latest/);
195
229
  }
196
230
  finally {
@@ -215,8 +249,8 @@ describe('maybeCheckAndPromptUpdate', () => {
215
249
  updateAttempts += 1;
216
250
  return { ok: true, stderr: '' };
217
251
  },
218
- setup: async () => {
219
- throw new Error('setup should not run when already up to date');
252
+ runSetupRefresh: async () => {
253
+ throw new Error('setup refresh should not run when already up to date');
220
254
  },
221
255
  });
222
256
  });
@@ -227,5 +261,305 @@ describe('maybeCheckAndPromptUpdate', () => {
227
261
  await rm(cwd, { recursive: true, force: true });
228
262
  }
229
263
  });
264
+ it('respects the passive launch-time cadence before checking npm', async () => {
265
+ const cwd = await mkdtemp(join(tmpdir(), 'omx-update-'));
266
+ const statePath = join(cwd, '.omx', 'state', 'update-check.json');
267
+ let latestCalls = 0;
268
+ try {
269
+ await mkdir(join(cwd, '.omx', 'state'), { recursive: true });
270
+ await writeFile(statePath, JSON.stringify({
271
+ last_checked_at: new Date().toISOString(),
272
+ last_seen_latest: '9.9.9',
273
+ }, null, 2));
274
+ await withInteractiveTty(async () => {
275
+ await maybeCheckAndPromptUpdate(cwd, {
276
+ fetchLatestVersion: async () => {
277
+ latestCalls += 1;
278
+ return '9.9.9';
279
+ },
280
+ getCurrentVersion: async () => '0.14.0',
281
+ });
282
+ });
283
+ assert.equal(latestCalls, 0);
284
+ }
285
+ finally {
286
+ await rm(cwd, { recursive: true, force: true });
287
+ }
288
+ });
289
+ });
290
+ describe('runImmediateUpdate', () => {
291
+ it('bypasses the passive cadence and updates immediately on explicit request', async () => {
292
+ const cwd = await mkdtemp(join(tmpdir(), 'omx-update-now-'));
293
+ const statePath = join(cwd, '.omx', 'state', 'update-check.json');
294
+ const stampPath = join(cwd, '.codex', '.omx', 'install-state.json');
295
+ const originalCodexHome = process.env.CODEX_HOME;
296
+ const originalLog = console.log;
297
+ const logs = [];
298
+ let setupCalls = 0;
299
+ const refreshCwds = [];
300
+ let updateCalls = 0;
301
+ let latestCalls = 0;
302
+ console.log = (...args) => {
303
+ logs.push(args.map((arg) => String(arg)).join(' '));
304
+ };
305
+ process.env.CODEX_HOME = join(cwd, '.codex');
306
+ try {
307
+ await mkdir(join(cwd, '.omx', 'state'), { recursive: true });
308
+ await writeFile(statePath, JSON.stringify({
309
+ last_checked_at: new Date().toISOString(),
310
+ last_seen_latest: '0.14.1',
311
+ }, null, 2));
312
+ const result = await runImmediateUpdate(cwd, {
313
+ getCurrentVersion: async () => '0.14.0',
314
+ fetchLatestVersion: async () => {
315
+ latestCalls += 1;
316
+ return '0.14.1';
317
+ },
318
+ runGlobalUpdate: () => {
319
+ updateCalls += 1;
320
+ return { ok: true, stderr: '' };
321
+ },
322
+ runSetupRefresh: async (refreshCwd) => {
323
+ setupCalls += 1;
324
+ refreshCwds.push(refreshCwd);
325
+ return { ok: true, stderr: '' };
326
+ },
327
+ });
328
+ assert.equal(result.status, 'updated');
329
+ assert.equal(latestCalls, 1);
330
+ assert.equal(updateCalls, 1);
331
+ assert.equal(setupCalls, 1);
332
+ assert.deepEqual(refreshCwds, [cwd]);
333
+ assert.match(logs.join('\n'), /Running: npm install -g oh-my-codex@latest/);
334
+ assert.match(logs.join('\n'), /Updated to v0\.14\.1/);
335
+ const stamp = JSON.parse(await readFile(stampPath, 'utf-8'));
336
+ assert.equal(stamp.installed_version, '0.14.1');
337
+ assert.equal(stamp.setup_completed_version, '0.14.1');
338
+ }
339
+ finally {
340
+ console.log = originalLog;
341
+ if (typeof originalCodexHome === 'string') {
342
+ process.env.CODEX_HOME = originalCodexHome;
343
+ }
344
+ else {
345
+ delete process.env.CODEX_HOME;
346
+ }
347
+ await rm(cwd, { recursive: true, force: true });
348
+ }
349
+ });
350
+ it('reports up-to-date status for explicit update when npm is already current', async () => {
351
+ const cwd = await mkdtemp(join(tmpdir(), 'omx-update-now-'));
352
+ const stampPath = join(cwd, '.codex', '.omx', 'install-state.json');
353
+ const originalCodexHome = process.env.CODEX_HOME;
354
+ const originalLog = console.log;
355
+ const logs = [];
356
+ let updateCalls = 0;
357
+ let refreshCalls = 0;
358
+ console.log = (...args) => {
359
+ logs.push(args.map((arg) => String(arg)).join(' '));
360
+ };
361
+ process.env.CODEX_HOME = join(cwd, '.codex');
362
+ try {
363
+ await writeUserInstallStamp({
364
+ installed_version: '0.14.0',
365
+ setup_completed_version: '0.14.0',
366
+ updated_at: '2026-04-20T00:00:00.000Z',
367
+ }, stampPath);
368
+ const result = await runImmediateUpdate(cwd, {
369
+ getCurrentVersion: async () => '0.14.0',
370
+ fetchLatestVersion: async () => '0.14.0',
371
+ runGlobalUpdate: () => {
372
+ updateCalls += 1;
373
+ return { ok: true, stderr: '' };
374
+ },
375
+ runSetupRefresh: async () => {
376
+ refreshCalls += 1;
377
+ return { ok: true, stderr: '' };
378
+ },
379
+ });
380
+ assert.equal(result.status, 'up-to-date');
381
+ assert.equal(updateCalls, 0);
382
+ assert.equal(refreshCalls, 0);
383
+ assert.match(logs.join('\n'), /already up to date \(v0\.14\.0\)/);
384
+ }
385
+ finally {
386
+ console.log = originalLog;
387
+ if (typeof originalCodexHome === 'string') {
388
+ process.env.CODEX_HOME = originalCodexHome;
389
+ }
390
+ else {
391
+ delete process.env.CODEX_HOME;
392
+ }
393
+ await rm(cwd, { recursive: true, force: true });
394
+ }
395
+ });
396
+ it('runs setup refresh for explicit update when current version matches but setup stamp is stale', async () => {
397
+ const cwd = await mkdtemp(join(tmpdir(), 'omx-update-now-'));
398
+ const stampPath = join(cwd, '.codex', '.omx', 'install-state.json');
399
+ const originalCodexHome = process.env.CODEX_HOME;
400
+ const originalLog = console.log;
401
+ const logs = [];
402
+ let refreshCalls = 0;
403
+ console.log = (...args) => {
404
+ logs.push(args.map((arg) => String(arg)).join(' '));
405
+ };
406
+ process.env.CODEX_HOME = join(cwd, '.codex');
407
+ try {
408
+ await writeUserInstallStamp({
409
+ installed_version: '0.14.0',
410
+ setup_completed_version: '0.13.9',
411
+ updated_at: '2026-04-20T00:00:00.000Z',
412
+ }, stampPath);
413
+ const result = await runImmediateUpdate(cwd, {
414
+ getCurrentVersion: async () => '0.14.0',
415
+ fetchLatestVersion: async () => '0.14.0',
416
+ runGlobalUpdate: () => {
417
+ throw new Error('global update should not run when already current');
418
+ },
419
+ runSetupRefresh: async () => {
420
+ refreshCalls += 1;
421
+ return { ok: true, stderr: '' };
422
+ },
423
+ });
424
+ assert.equal(result.status, 'up-to-date');
425
+ assert.equal(refreshCalls, 1);
426
+ assert.match(logs.join('\n'), /Running setup refresh/);
427
+ assert.match(logs.join('\n'), /Setup refresh completed for v0\.14\.0/);
428
+ const stamp = JSON.parse(await readFile(stampPath, 'utf-8'));
429
+ assert.equal(stamp.installed_version, '0.14.0');
430
+ assert.equal(stamp.setup_completed_version, '0.14.0');
431
+ }
432
+ finally {
433
+ console.log = originalLog;
434
+ if (typeof originalCodexHome === 'string') {
435
+ process.env.CODEX_HOME = originalCodexHome;
436
+ }
437
+ else {
438
+ delete process.env.CODEX_HOME;
439
+ }
440
+ await rm(cwd, { recursive: true, force: true });
441
+ }
442
+ });
443
+ it('continues explicit update when update-check state cannot be written', async () => {
444
+ const cwd = await mkdtemp(join(tmpdir(), 'omx-update-now-'));
445
+ const originalLog = console.log;
446
+ const logs = [];
447
+ let updateCalls = 0;
448
+ let refreshCalls = 0;
449
+ console.log = (...args) => {
450
+ logs.push(args.map((arg) => String(arg)).join(' '));
451
+ };
452
+ try {
453
+ const result = await runImmediateUpdate(cwd, {
454
+ getCurrentVersion: async () => '0.14.0',
455
+ fetchLatestVersion: async () => '0.14.1',
456
+ writeUpdateState: async () => {
457
+ throw new Error('EACCES');
458
+ },
459
+ runGlobalUpdate: () => {
460
+ updateCalls += 1;
461
+ return { ok: true, stderr: '' };
462
+ },
463
+ runSetupRefresh: async () => {
464
+ refreshCalls += 1;
465
+ return { ok: true, stderr: '' };
466
+ },
467
+ });
468
+ assert.equal(result.status, 'updated');
469
+ assert.equal(updateCalls, 1);
470
+ assert.equal(refreshCalls, 1);
471
+ assert.match(logs.join('\n'), /Updated to v0\.14\.1/);
472
+ }
473
+ finally {
474
+ console.log = originalLog;
475
+ await rm(cwd, { recursive: true, force: true });
476
+ }
477
+ });
478
+ it('fails without writing the success stamp when the fresh setup handoff fails', async () => {
479
+ const cwd = await mkdtemp(join(tmpdir(), 'omx-update-now-'));
480
+ const stampPath = join(cwd, '.codex', '.omx', 'install-state.json');
481
+ const originalCodexHome = process.env.CODEX_HOME;
482
+ const originalLog = console.log;
483
+ const logs = [];
484
+ let refreshCalls = 0;
485
+ console.log = (...args) => {
486
+ logs.push(args.map((arg) => String(arg)).join(' '));
487
+ };
488
+ process.env.CODEX_HOME = join(cwd, '.codex');
489
+ try {
490
+ const result = await runImmediateUpdate(cwd, {
491
+ getCurrentVersion: async () => '0.14.0',
492
+ fetchLatestVersion: async () => '0.14.1',
493
+ runGlobalUpdate: () => ({ ok: true, stderr: '' }),
494
+ runSetupRefresh: async () => {
495
+ refreshCalls += 1;
496
+ return { ok: false, stderr: 'updated setup exited 17' };
497
+ },
498
+ });
499
+ assert.equal(result.status, 'failed');
500
+ assert.equal(refreshCalls, 1);
501
+ assert.match(logs.join('\n'), /Update installed, but the setup refresh failed/);
502
+ await assert.rejects(readFile(stampPath, 'utf-8'));
503
+ }
504
+ finally {
505
+ console.log = originalLog;
506
+ if (typeof originalCodexHome === 'string') {
507
+ process.env.CODEX_HOME = originalCodexHome;
508
+ }
509
+ else {
510
+ delete process.env.CODEX_HOME;
511
+ }
512
+ await rm(cwd, { recursive: true, force: true });
513
+ }
514
+ });
515
+ });
516
+ describe('post-update setup refresh handoff', () => {
517
+ it('uses the installed package bin entry when resolving the refreshed CLI', async () => {
518
+ const cwd = await mkdtemp(join(tmpdir(), 'omx-update-bin-contract-'));
519
+ const globalRoot = join(cwd, 'global-root');
520
+ const packageRoot = join(globalRoot, PACKAGE_NAME);
521
+ const cliRelativePath = join('dist', 'custom', 'omx-entry.js');
522
+ const cliEntry = join(packageRoot, cliRelativePath);
523
+ try {
524
+ await mkdir(dirname(cliEntry), { recursive: true });
525
+ await writeFile(join(packageRoot, 'package.json'), JSON.stringify({ name: PACKAGE_NAME, version: '0.14.1', bin: { omx: cliRelativePath } }, null, 2));
526
+ await writeFile(cliEntry, '#!/usr/bin/env node\n');
527
+ assert.equal(await resolveInstalledCliEntry(globalRoot), cliEntry);
528
+ }
529
+ finally {
530
+ await rm(cwd, { recursive: true, force: true });
531
+ }
532
+ });
533
+ it('falls back to the current published CLI layout when package metadata is unavailable', async () => {
534
+ const cwd = await mkdtemp(join(tmpdir(), 'omx-update-bin-fallback-'));
535
+ const globalRoot = join(cwd, 'global-root');
536
+ const cliEntry = join(globalRoot, PACKAGE_NAME, 'dist', 'cli', 'omx.js');
537
+ try {
538
+ await mkdir(dirname(cliEntry), { recursive: true });
539
+ await writeFile(cliEntry, '#!/usr/bin/env node\n');
540
+ assert.equal(await resolveInstalledCliEntry(globalRoot), cliEntry);
541
+ }
542
+ finally {
543
+ await rm(cwd, { recursive: true, force: true });
544
+ }
545
+ });
546
+ it('returns null when neither package bin nor fallback CLI entry exists', async () => {
547
+ const cwd = await mkdtemp(join(tmpdir(), 'omx-update-bin-missing-'));
548
+ try {
549
+ assert.equal(await resolveInstalledCliEntry(join(cwd, 'global-root')), null);
550
+ }
551
+ finally {
552
+ await rm(cwd, { recursive: true, force: true });
553
+ }
554
+ });
555
+ it('does not impose a timeout on the interactive setup refresh handoff', () => {
556
+ let receivedTimeout = Symbol('unset');
557
+ const result = spawnInstalledSetupRefresh('/tmp/omx.js', '/tmp/project', ((_command, _args, options) => {
558
+ receivedTimeout = options?.timeout;
559
+ return { status: 0, error: undefined };
560
+ }));
561
+ assert.equal(result.ok, true);
562
+ assert.equal(receivedTimeout, undefined);
563
+ });
230
564
  });
231
565
  //# sourceMappingURL=update.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"update.test.js","sourceRoot":"","sources":["../../../src/cli/__tests__/update.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"update.test.js","sourceRoot":"","sources":["../../../src/cli/__tests__/update.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,MAAM,MAAM,oBAAoB,CAAC;AACxC,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC3E,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EACL,oBAAoB,EACpB,cAAc,EACd,yBAAyB,EACzB,oBAAoB,EACpB,wBAAwB,EACxB,kBAAkB,EAClB,qBAAqB,EACrB,0BAA0B,EAC1B,qBAAqB,GACtB,MAAM,cAAc,CAAC;AAEtB,MAAM,YAAY,GAAG,aAAa,CAAC;AAEnC,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;IAC9B,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;QACnD,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;QACnD,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;QACnD,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;QAC/C,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,KAAK,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;QAC7C,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,KAAK,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;QACnD,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,SAAS,EAAE,OAAO,CAAC,EAAE,KAAK,CAAC,CAAC;IAC1D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;QAClD,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,KAAK,CAAC,CAAC;IAC1D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6BAA6B,EAAE,GAAG,EAAE;QACrC,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,IAAI,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8DAA8D,EAAE,GAAG,EAAE;QACtE,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,KAAK,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;IACrC,MAAM,WAAW,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,MAAM;IAE/C,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;QACzC,MAAM,CAAC,KAAK,CAAC,qBAAqB,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;IAC9D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;QACtD,MAAM,CAAC,KAAK,CAAC,qBAAqB,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,EAAW,CAAC,EAAE,IAAI,CAAC,CAAC;IACrE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;QACtD,MAAM,CAAC,KAAK,CAAC,qBAAqB,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,EAAE,eAAe,EAAE,YAAY,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;IAC3F,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;QACpD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,MAAM,WAAW,GAAG,IAAI,IAAI,CAAC,GAAG,GAAG,WAAW,GAAG,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;QACrE,MAAM,CAAC,KAAK,CAAC,qBAAqB,CAAC,GAAG,EAAE,EAAE,eAAe,EAAE,WAAW,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;IACpF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oCAAoC,EAAE,GAAG,EAAE;QAC5C,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,MAAM,QAAQ,GAAG,IAAI,IAAI,CAAC,GAAG,GAAG,WAAW,GAAG,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;QAClE,MAAM,CAAC,KAAK,CAAC,qBAAqB,CAAC,GAAG,EAAE,EAAE,eAAe,EAAE,QAAQ,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;IAChF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gDAAgD,EAAE,GAAG,EAAE;QACxD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,MAAM,UAAU,GAAG,IAAI,IAAI,CAAC,GAAG,GAAG,WAAW,CAAC,CAAC,WAAW,EAAE,CAAC;QAC7D,MAAM,CAAC,KAAK,CAAC,qBAAqB,CAAC,GAAG,EAAE,EAAE,eAAe,EAAE,UAAU,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;IAClF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0BAA0B,EAAE,GAAG,EAAE;QAClC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,MAAM,cAAc,GAAG,EAAE,GAAG,IAAI,CAAC;QACjC,MAAM,WAAW,GAAG,IAAI,IAAI,CAAC,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;QAC5D,MAAM,CAAC,KAAK,CAAC,qBAAqB,CAAC,GAAG,EAAE,EAAE,eAAe,EAAE,WAAW,EAAE,EAAE,cAAc,CAAC,EAAE,KAAK,CAAC,CAAC;IACpG,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;IACrC,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;QACtD,MAAM,CAAC,KAAK,CAAC,oBAAoB,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;QACzD,MAAM,CAAC,KAAK,CACV,oBAAoB,CAAC,QAAQ,EAAE;YAC7B,iBAAiB,EAAE,QAAQ;YAC3B,uBAAuB,EAAE,QAAQ;YACjC,UAAU,EAAE,0BAA0B;SACvC,CAAC,EACF,KAAK,CACN,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sDAAsD,EAAE,KAAK,IAAI,EAAE;QACpE,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,oBAAoB,CAAC,CAAC,CAAC;QACjE,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,oBAAoB,CAAC,CAAC;QAErE,IAAI,CAAC;YACH,MAAM,qBAAqB,CACzB;gBACE,iBAAiB,EAAE,QAAQ;gBAC3B,uBAAuB,EAAE,QAAQ;gBACjC,UAAU,EAAE,0BAA0B;aACvC,EACD,SAAS,CACV,CAAC;YAEF,MAAM,MAAM,GAAG,MAAM,oBAAoB,CAAC,SAAS,CAAC,CAAC;YACrD,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE;gBACvB,iBAAiB,EAAE,QAAQ;gBAC3B,uBAAuB,EAAE,QAAQ;gBACjC,UAAU,EAAE,0BAA0B;aACvC,CAAC,CAAC;QACL,CAAC;gBAAS,CAAC;YACT,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACnD,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,2BAA2B,EAAE,GAAG,EAAE;IACzC,KAAK,UAAU,kBAAkB,CAAC,GAAwB;QACxD,MAAM,gBAAgB,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC;QAC7C,MAAM,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;QAE/C,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE;YAC5C,YAAY,EAAE,IAAI;YAClB,KAAK,EAAE,IAAI;SACZ,CAAC,CAAC;QACH,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE;YAC7C,YAAY,EAAE,IAAI;YAClB,KAAK,EAAE,IAAI;SACZ,CAAC,CAAC;QAEH,IAAI,CAAC;YACH,MAAM,GAAG,EAAE,CAAC;QACd,CAAC;gBAAS,CAAC;YACT,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE;gBAC5C,YAAY,EAAE,IAAI;gBAClB,KAAK,EAAE,gBAAgB;aACxB,CAAC,CAAC;YACH,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE;gBAC7C,YAAY,EAAE,IAAI;gBAClB,KAAK,EAAE,iBAAiB;aACzB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,EAAE,CAAC,mDAAmD,EAAE,KAAK,IAAI,EAAE;QACjE,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,aAAa,CAAC,CAAC,CAAC;QACzD,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC;QAChC,MAAM,OAAO,GAAa,EAAE,CAAC;QAC7B,MAAM,iBAAiB,GAAa,EAAE,CAAC;QACvC,OAAO,CAAC,GAAG,GAAG,CAAC,GAAG,IAAe,EAAE,EAAE;YACnC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QACzD,CAAC,CAAC;QAEF,IAAI,CAAC;YACH,MAAM,kBAAkB,CAAC,KAAK,IAAI,EAAE;gBAClC,MAAM,yBAAyB,CAAC,GAAG,EAAE;oBACnC,iBAAiB,EAAE,KAAK,IAAI,EAAE,CAAC,OAAO;oBACtC,kBAAkB,EAAE,KAAK,IAAI,EAAE,CAAC,OAAO;oBACvC,QAAQ,EAAE,KAAK,IAAI,EAAE,CAAC,IAAI;oBAC1B,eAAe,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;oBACjD,eAAe,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE;wBACpC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;wBACnC,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;oBAClC,CAAC;iBACF,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;YAEH,MAAM,CAAC,SAAS,CAAC,iBAAiB,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;YAC3C,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,qBAAqB,CAAC,CAAC;QAC1D,CAAC;gBAAS,CAAC;YACT,OAAO,CAAC,GAAG,GAAG,WAAW,CAAC;YAC1B,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAClD,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6EAA6E,EAAE,KAAK,IAAI,EAAE;QAC3F,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,aAAa,CAAC,CAAC,CAAC;QACzD,MAAM,YAAY,GAAa,EAAE,CAAC;QAElC,IAAI,CAAC;YACH,MAAM,kBAAkB,CAAC,KAAK,IAAI,EAAE;gBAClC,MAAM,yBAAyB,CAAC,GAAG,EAAE;oBACnC,iBAAiB,EAAE,KAAK,IAAI,EAAE,CAAC,QAAQ;oBACvC,kBAAkB,EAAE,KAAK,IAAI,EAAE,CAAC,QAAQ;oBACxC,QAAQ,EAAE,KAAK,IAAI,EAAE,CAAC,IAAI;oBAC1B,eAAe,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;oBACjD,eAAe,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE;wBACpC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;wBAC9B,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;oBAClC,CAAC;iBACF,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;YAEH,MAAM,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QACxC,CAAC;gBAAS,CAAC;YACT,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAClD,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8DAA8D,EAAE,KAAK,IAAI,EAAE;QAC5E,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,aAAa,CAAC,CAAC,CAAC;QACzD,IAAI,cAAc,GAAG,CAAC,CAAC;QACvB,IAAI,iBAAiB,GAAG,CAAC,CAAC;QAE1B,IAAI,CAAC;YACH,MAAM,kBAAkB,CAAC,KAAK,IAAI,EAAE;gBAClC,MAAM,yBAAyB,CAAC,GAAG,EAAE;oBACnC,iBAAiB,EAAE,KAAK,IAAI,EAAE,CAAC,OAAO;oBACtC,kBAAkB,EAAE,KAAK,IAAI,EAAE,CAAC,OAAO;oBACvC,QAAQ,EAAE,KAAK,IAAI,EAAE,CAAC,KAAK;oBAC3B,eAAe,EAAE,GAAG,EAAE;wBACpB,cAAc,IAAI,CAAC,CAAC;wBACpB,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;oBAClC,CAAC;oBACD,eAAe,EAAE,KAAK,IAAI,EAAE;wBAC1B,iBAAiB,IAAI,CAAC,CAAC;wBACvB,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;oBAClC,CAAC;iBACF,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;YAEH,MAAM,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;YAChC,MAAM,CAAC,KAAK,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC;QACrC,CAAC;gBAAS,CAAC;YACT,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAClD,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qDAAqD,EAAE,KAAK,IAAI,EAAE;QACnE,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,aAAa,CAAC,CAAC,CAAC;QACzD,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC;QAChC,MAAM,IAAI,GAAa,EAAE,CAAC;QAC1B,IAAI,iBAAiB,GAAG,CAAC,CAAC;QAE1B,OAAO,CAAC,GAAG,GAAG,CAAC,GAAG,IAAe,EAAE,EAAE;YACnC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QACtD,CAAC,CAAC;QAEF,IAAI,CAAC;YACH,MAAM,kBAAkB,CAAC,KAAK,IAAI,EAAE;gBAClC,MAAM,yBAAyB,CAAC,GAAG,EAAE;oBACnC,iBAAiB,EAAE,KAAK,IAAI,EAAE,CAAC,OAAO;oBACtC,kBAAkB,EAAE,KAAK,IAAI,EAAE,CAAC,OAAO;oBACvC,QAAQ,EAAE,KAAK,IAAI,EAAE,CAAC,IAAI;oBAC1B,eAAe,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC;oBAC9D,eAAe,EAAE,KAAK,IAAI,EAAE;wBAC1B,iBAAiB,IAAI,CAAC,CAAC;wBACvB,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;oBAClC,CAAC;iBACF,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;YAEH,MAAM,CAAC,KAAK,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC;YACnC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,iEAAiE,CAAC,CAAC;QACnG,CAAC;gBAAS,CAAC;YACT,OAAO,CAAC,GAAG,GAAG,WAAW,CAAC;YAC1B,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAClD,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6DAA6D,EAAE,KAAK,IAAI,EAAE;QAC3E,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,aAAa,CAAC,CAAC,CAAC;QACzD,IAAI,WAAW,GAAG,CAAC,CAAC;QACpB,IAAI,cAAc,GAAG,CAAC,CAAC;QAEvB,IAAI,CAAC;YACH,MAAM,kBAAkB,CAAC,KAAK,IAAI,EAAE;gBAClC,MAAM,yBAAyB,CAAC,GAAG,EAAE;oBACnC,iBAAiB,EAAE,KAAK,IAAI,EAAE,CAAC,OAAO;oBACtC,kBAAkB,EAAE,KAAK,IAAI,EAAE,CAAC,OAAO;oBACvC,QAAQ,EAAE,KAAK,IAAI,EAAE;wBACnB,WAAW,IAAI,CAAC,CAAC;wBACjB,OAAO,IAAI,CAAC;oBACd,CAAC;oBACD,eAAe,EAAE,GAAG,EAAE;wBACpB,cAAc,IAAI,CAAC,CAAC;wBACpB,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;oBAClC,CAAC;oBACD,eAAe,EAAE,KAAK,IAAI,EAAE;wBAC1B,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;oBAC1E,CAAC;iBACF,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;YAEH,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;YAC7B,MAAM,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;QAClC,CAAC;gBAAS,CAAC;YACT,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAClD,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8DAA8D,EAAE,KAAK,IAAI,EAAE;QAC5E,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,aAAa,CAAC,CAAC,CAAC;QACzD,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,mBAAmB,CAAC,CAAC;QAClE,IAAI,WAAW,GAAG,CAAC,CAAC;QAEpB,IAAI,CAAC;YACH,MAAM,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAC7D,MAAM,SAAS,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC;gBACxC,eAAe,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBACzC,gBAAgB,EAAE,OAAO;aAC1B,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YAEb,MAAM,kBAAkB,CAAC,KAAK,IAAI,EAAE;gBAClC,MAAM,yBAAyB,CAAC,GAAG,EAAE;oBACnC,kBAAkB,EAAE,KAAK,IAAI,EAAE;wBAC7B,WAAW,IAAI,CAAC,CAAC;wBACjB,OAAO,OAAO,CAAC;oBACjB,CAAC;oBACD,iBAAiB,EAAE,KAAK,IAAI,EAAE,CAAC,QAAQ;iBACxC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;YAEH,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;QAC/B,CAAC;gBAAS,CAAC;YACT,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAClD,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;IAClC,EAAE,CAAC,0EAA0E,EAAE,KAAK,IAAI,EAAE;QACxF,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,iBAAiB,CAAC,CAAC,CAAC;QAC7D,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,mBAAmB,CAAC,CAAC;QAClE,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,oBAAoB,CAAC,CAAC;QACpE,MAAM,iBAAiB,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC;QACjD,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC;QAChC,MAAM,IAAI,GAAa,EAAE,CAAC;QAC1B,IAAI,UAAU,GAAG,CAAC,CAAC;QACnB,MAAM,WAAW,GAAa,EAAE,CAAC;QACjC,IAAI,WAAW,GAAG,CAAC,CAAC;QACpB,IAAI,WAAW,GAAG,CAAC,CAAC;QAEpB,OAAO,CAAC,GAAG,GAAG,CAAC,GAAG,IAAe,EAAE,EAAE;YACnC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QACtD,CAAC,CAAC;QAEF,OAAO,CAAC,GAAG,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QAE7C,IAAI,CAAC;YACH,MAAM,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAC7D,MAAM,SAAS,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC;gBACxC,eAAe,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBACzC,gBAAgB,EAAE,QAAQ;aAC3B,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YAEb,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC,GAAG,EAAE;gBAC3C,iBAAiB,EAAE,KAAK,IAAI,EAAE,CAAC,QAAQ;gBACvC,kBAAkB,EAAE,KAAK,IAAI,EAAE;oBAC7B,WAAW,IAAI,CAAC,CAAC;oBACjB,OAAO,QAAQ,CAAC;gBAClB,CAAC;gBACD,eAAe,EAAE,GAAG,EAAE;oBACpB,WAAW,IAAI,CAAC,CAAC;oBACjB,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;gBAClC,CAAC;gBACD,eAAe,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE;oBACpC,UAAU,IAAI,CAAC,CAAC;oBAChB,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;oBAC7B,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;gBAClC,CAAC;aACF,CAAC,CAAC;YAEH,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;YACvC,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;YAC7B,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;YAC7B,MAAM,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;YAC5B,MAAM,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;YACrC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,4CAA4C,CAAC,CAAC;YAC5E,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,sBAAsB,CAAC,CAAC;YAEtD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC,CAG1D,CAAC;YACF,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,iBAAiB,EAAE,QAAQ,CAAC,CAAC;YAChD,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,uBAAuB,EAAE,QAAQ,CAAC,CAAC;QACxD,CAAC;gBAAS,CAAC;YACT,OAAO,CAAC,GAAG,GAAG,WAAW,CAAC;YAC1B,IAAI,OAAO,iBAAiB,KAAK,QAAQ,EAAE,CAAC;gBAC1C,OAAO,CAAC,GAAG,CAAC,UAAU,GAAG,iBAAiB,CAAC;YAC7C,CAAC;iBAAM,CAAC;gBACN,OAAO,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC;YAChC,CAAC;YACD,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAClD,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2EAA2E,EAAE,KAAK,IAAI,EAAE;QACzF,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,iBAAiB,CAAC,CAAC,CAAC;QAC7D,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,oBAAoB,CAAC,CAAC;QACpE,MAAM,iBAAiB,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC;QACjD,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC;QAChC,MAAM,IAAI,GAAa,EAAE,CAAC;QAC1B,IAAI,WAAW,GAAG,CAAC,CAAC;QACpB,IAAI,YAAY,GAAG,CAAC,CAAC;QAErB,OAAO,CAAC,GAAG,GAAG,CAAC,GAAG,IAAe,EAAE,EAAE;YACnC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QACtD,CAAC,CAAC;QACF,OAAO,CAAC,GAAG,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QAE7C,IAAI,CAAC;YACH,MAAM,qBAAqB,CACzB;gBACE,iBAAiB,EAAE,QAAQ;gBAC3B,uBAAuB,EAAE,QAAQ;gBACjC,UAAU,EAAE,0BAA0B;aACvC,EACD,SAAS,CACV,CAAC;YAEF,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC,GAAG,EAAE;gBAC3C,iBAAiB,EAAE,KAAK,IAAI,EAAE,CAAC,QAAQ;gBACvC,kBAAkB,EAAE,KAAK,IAAI,EAAE,CAAC,QAAQ;gBACxC,eAAe,EAAE,GAAG,EAAE;oBACpB,WAAW,IAAI,CAAC,CAAC;oBACjB,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;gBAClC,CAAC;gBACD,eAAe,EAAE,KAAK,IAAI,EAAE;oBAC1B,YAAY,IAAI,CAAC,CAAC;oBAClB,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;gBAClC,CAAC;aACF,CAAC,CAAC;YAEH,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;YAC1C,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;YAC7B,MAAM,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;YAC9B,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,kCAAkC,CAAC,CAAC;QACpE,CAAC;gBAAS,CAAC;YACT,OAAO,CAAC,GAAG,GAAG,WAAW,CAAC;YAC1B,IAAI,OAAO,iBAAiB,KAAK,QAAQ,EAAE,CAAC;gBAC1C,OAAO,CAAC,GAAG,CAAC,UAAU,GAAG,iBAAiB,CAAC;YAC7C,CAAC;iBAAM,CAAC;gBACN,OAAO,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC;YAChC,CAAC;YACD,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAClD,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8FAA8F,EAAE,KAAK,IAAI,EAAE;QAC5G,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,iBAAiB,CAAC,CAAC,CAAC;QAC7D,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,oBAAoB,CAAC,CAAC;QACpE,MAAM,iBAAiB,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC;QACjD,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC;QAChC,MAAM,IAAI,GAAa,EAAE,CAAC;QAC1B,IAAI,YAAY,GAAG,CAAC,CAAC;QAErB,OAAO,CAAC,GAAG,GAAG,CAAC,GAAG,IAAe,EAAE,EAAE;YACnC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QACtD,CAAC,CAAC;QACF,OAAO,CAAC,GAAG,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QAE7C,IAAI,CAAC;YACH,MAAM,qBAAqB,CACzB;gBACE,iBAAiB,EAAE,QAAQ;gBAC3B,uBAAuB,EAAE,QAAQ;gBACjC,UAAU,EAAE,0BAA0B;aACvC,EACD,SAAS,CACV,CAAC;YAEF,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC,GAAG,EAAE;gBAC3C,iBAAiB,EAAE,KAAK,IAAI,EAAE,CAAC,QAAQ;gBACvC,kBAAkB,EAAE,KAAK,IAAI,EAAE,CAAC,QAAQ;gBACxC,eAAe,EAAE,GAAG,EAAE;oBACpB,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;gBACvE,CAAC;gBACD,eAAe,EAAE,KAAK,IAAI,EAAE;oBAC1B,YAAY,IAAI,CAAC,CAAC;oBAClB,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;gBAClC,CAAC;aACF,CAAC,CAAC;YAEH,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;YAC1C,MAAM,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;YAC9B,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,uBAAuB,CAAC,CAAC;YACvD,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,uCAAuC,CAAC,CAAC;YAEvE,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC,CAG1D,CAAC;YACF,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,iBAAiB,EAAE,QAAQ,CAAC,CAAC;YAChD,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,uBAAuB,EAAE,QAAQ,CAAC,CAAC;QACxD,CAAC;gBAAS,CAAC;YACT,OAAO,CAAC,GAAG,GAAG,WAAW,CAAC;YAC1B,IAAI,OAAO,iBAAiB,KAAK,QAAQ,EAAE,CAAC;gBAC1C,OAAO,CAAC,GAAG,CAAC,UAAU,GAAG,iBAAiB,CAAC;YAC7C,CAAC;iBAAM,CAAC;gBACN,OAAO,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC;YAChC,CAAC;YACD,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAClD,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qEAAqE,EAAE,KAAK,IAAI,EAAE;QACnF,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,iBAAiB,CAAC,CAAC,CAAC;QAC7D,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC;QAChC,MAAM,IAAI,GAAa,EAAE,CAAC;QAC1B,IAAI,WAAW,GAAG,CAAC,CAAC;QACpB,IAAI,YAAY,GAAG,CAAC,CAAC;QAErB,OAAO,CAAC,GAAG,GAAG,CAAC,GAAG,IAAe,EAAE,EAAE;YACnC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QACtD,CAAC,CAAC;QAEF,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC,GAAG,EAAE;gBAC3C,iBAAiB,EAAE,KAAK,IAAI,EAAE,CAAC,QAAQ;gBACvC,kBAAkB,EAAE,KAAK,IAAI,EAAE,CAAC,QAAQ;gBACxC,gBAAgB,EAAE,KAAK,IAAI,EAAE;oBAC3B,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC;gBAC5B,CAAC;gBACD,eAAe,EAAE,GAAG,EAAE;oBACpB,WAAW,IAAI,CAAC,CAAC;oBACjB,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;gBAClC,CAAC;gBACD,eAAe,EAAE,KAAK,IAAI,EAAE;oBAC1B,YAAY,IAAI,CAAC,CAAC;oBAClB,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;gBAClC,CAAC;aACF,CAAC,CAAC;YAEH,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;YACvC,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;YAC7B,MAAM,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;YAC9B,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,sBAAsB,CAAC,CAAC;QACxD,CAAC;gBAAS,CAAC;YACT,OAAO,CAAC,GAAG,GAAG,WAAW,CAAC;YAC1B,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAClD,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4EAA4E,EAAE,KAAK,IAAI,EAAE;QAC1F,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,iBAAiB,CAAC,CAAC,CAAC;QAC7D,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,oBAAoB,CAAC,CAAC;QACpE,MAAM,iBAAiB,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC;QACjD,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC;QAChC,MAAM,IAAI,GAAa,EAAE,CAAC;QAC1B,IAAI,YAAY,GAAG,CAAC,CAAC;QAErB,OAAO,CAAC,GAAG,GAAG,CAAC,GAAG,IAAe,EAAE,EAAE;YACnC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QACtD,CAAC,CAAC;QAEF,OAAO,CAAC,GAAG,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QAE7C,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC,GAAG,EAAE;gBAC3C,iBAAiB,EAAE,KAAK,IAAI,EAAE,CAAC,QAAQ;gBACvC,kBAAkB,EAAE,KAAK,IAAI,EAAE,CAAC,QAAQ;gBACxC,eAAe,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;gBACjD,eAAe,EAAE,KAAK,IAAI,EAAE;oBAC1B,YAAY,IAAI,CAAC,CAAC;oBAClB,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,yBAAyB,EAAE,CAAC;gBAC1D,CAAC;aACF,CAAC,CAAC;YAEH,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;YACtC,MAAM,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;YAC9B,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,gDAAgD,CAAC,CAAC;YAChF,MAAM,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC;QACrD,CAAC;gBAAS,CAAC;YACT,OAAO,CAAC,GAAG,GAAG,WAAW,CAAC;YAC1B,IAAI,OAAO,iBAAiB,KAAK,QAAQ,EAAE,CAAC;gBAC1C,OAAO,CAAC,GAAG,CAAC,UAAU,GAAG,iBAAiB,CAAC;YAC7C,CAAC;iBAAM,CAAC;gBACN,OAAO,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC;YAChC,CAAC;YACD,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAClD,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,mCAAmC,EAAE,GAAG,EAAE;IACjD,EAAE,CAAC,uEAAuE,EAAE,KAAK,IAAI,EAAE;QACrF,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,0BAA0B,CAAC,CAAC,CAAC;QACtE,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;QAC5C,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;QACnD,MAAM,eAAe,GAAG,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC;QAC/D,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;QAEpD,IAAI,CAAC;YACH,MAAM,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YACpD,MAAM,SAAS,CACb,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,EACjC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,eAAe,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAClG,CAAC;YACF,MAAM,SAAS,CAAC,QAAQ,EAAE,uBAAuB,CAAC,CAAC;YAEnD,MAAM,CAAC,KAAK,CAAC,MAAM,wBAAwB,CAAC,UAAU,CAAC,EAAE,QAAQ,CAAC,CAAC;QACrE,CAAC;gBAAS,CAAC;YACT,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAClD,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qFAAqF,EAAE,KAAK,IAAI,EAAE;QACnG,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,0BAA0B,CAAC,CAAC,CAAC;QACtE,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;QAC5C,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,EAAE,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;QAEzE,IAAI,CAAC;YACH,MAAM,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YACpD,MAAM,SAAS,CAAC,QAAQ,EAAE,uBAAuB,CAAC,CAAC;YAEnD,MAAM,CAAC,KAAK,CAAC,MAAM,wBAAwB,CAAC,UAAU,CAAC,EAAE,QAAQ,CAAC,CAAC;QACrE,CAAC;gBAAS,CAAC;YACT,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAClD,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qEAAqE,EAAE,KAAK,IAAI,EAAE;QACnF,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,yBAAyB,CAAC,CAAC,CAAC;QAErE,IAAI,CAAC;YACH,MAAM,CAAC,KAAK,CAAC,MAAM,wBAAwB,CAAC,IAAI,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;QAC/E,CAAC;gBAAS,CAAC;YACT,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAClD,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oEAAoE,EAAE,GAAG,EAAE;QAC5E,IAAI,eAAe,GAAY,MAAM,CAAC,OAAO,CAAC,CAAC;QAC/C,MAAM,MAAM,GAAG,0BAA0B,CACvC,aAAa,EACb,cAAc,EACd,CAAC,CAAC,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;YAC5B,eAAe,GAAG,OAAO,EAAE,OAAO,CAAC;YACnC,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;QACzC,CAAC,CAAkD,CACpD,CAAC;QAEF,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;QAC9B,MAAM,CAAC,KAAK,CAAC,eAAe,EAAE,SAAS,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"explore.d.ts","sourceRoot":"","sources":["../../src/cli/explore.ts"],"names":[],"mappings":"AAoBA,eAAO,MAAM,aAAa,QAGd,CAAC;AAIb,eAAO,MAAM,eAAe,oBAAyB,CAAC;AAKtD,MAAM,WAAW,iBAAiB;IAChC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,UAAU,qBAAqB;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB;AASD,wBAAgB,yCAAyC,CACvD,QAAQ,GAAE,MAAM,CAAC,QAA2B,EAC5C,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,MAAM,GAAG,SAAS,CAIpB;AAED,wBAAgB,oCAAoC,CAClD,QAAQ,GAAE,MAAM,CAAC,QAA2B,EAC5C,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,IAAI,CAGN;AAeD,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,MAAM,EAAE,cAAc,GAAG,aAAa,CAAC;CACxC;AA4CD,wBAAgB,iCAAiC,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAGrF;AAoCD,wBAAgB,6BAA6B,CAAC,MAAM,EAAE,MAAM,GAAG,sBAAsB,GAAG,SAAS,CAoChG;AAuBD,wBAAgB,gCAAgC,CAAC,QAAQ,GAAE,MAAM,CAAC,QAA2B,GAAG,MAAM,CAErG;AAED,wBAAgB,oCAAoC,CAClD,WAAW,SAAmB,EAC9B,QAAQ,GAAE,MAAM,CAAC,QAA2B,EAC5C,IAAI,sBAAe,GAClB,qBAAqB,GAAG,SAAS,CAgBnC;AAED,wBAAgB,8BAA8B,CAC5C,WAAW,SAAmB,EAC9B,QAAQ,GAAE,MAAM,CAAC,QAA2B,GAC3C,qBAAqB,GAAG,SAAS,CASnC;AAwBD,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,iBAAiB,CAkD3E;AAED,wBAAgB,4BAA4B,CAC1C,WAAW,SAAmB,EAC9B,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,qBAAqB,CAqBvB;AAED,wBAAsB,yCAAyC,CAC7D,WAAW,SAAmB,EAC9B,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,OAAO,CAAC,qBAAqB,CAAC,CA0BhC;AAED,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,MAAM,EACX,GAAG,GAAE,MAAM,CAAC,UAAwB,EACpC,WAAW,SAAmB,GAC7B,MAAM,EAAE,CAUV;AAED,wBAAsB,iBAAiB,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC,CAOlF;AAED,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA8ClE"}
1
+ {"version":3,"file":"explore.d.ts","sourceRoot":"","sources":["../../src/cli/explore.ts"],"names":[],"mappings":"AA4BA,eAAO,MAAM,aAAa,QAGd,CAAC;AAIb,eAAO,MAAM,eAAe,oBAAyB,CAAC;AAMtD,MAAM,WAAW,iBAAiB;IAChC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,UAAU,qBAAqB;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB;AASD,wBAAgB,yCAAyC,CACvD,QAAQ,GAAE,MAAM,CAAC,QAA2B,EAC5C,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,MAAM,GAAG,SAAS,CAIpB;AAED,wBAAgB,oCAAoC,CAClD,QAAQ,GAAE,MAAM,CAAC,QAA2B,EAC5C,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,IAAI,CAGN;AAeD,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,MAAM,EAAE,cAAc,GAAG,aAAa,CAAC;CACxC;AA4CD,wBAAgB,iCAAiC,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAGrF;AAoCD,wBAAgB,6BAA6B,CAAC,MAAM,EAAE,MAAM,GAAG,sBAAsB,GAAG,SAAS,CAoChG;AAuBD,wBAAgB,gCAAgC,CAAC,QAAQ,GAAE,MAAM,CAAC,QAA2B,GAAG,MAAM,CAErG;AAED,wBAAgB,oCAAoC,CAClD,WAAW,SAAmB,EAC9B,QAAQ,GAAE,MAAM,CAAC,QAA2B,EAC5C,IAAI,sBAAe,GAClB,qBAAqB,GAAG,SAAS,CAgBnC;AAED,wBAAgB,8BAA8B,CAC5C,WAAW,SAAmB,EAC9B,QAAQ,GAAE,MAAM,CAAC,QAA2B,GAC3C,qBAAqB,GAAG,SAAS,CASnC;AAwBD,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,iBAAiB,CAkD3E;AAED,wBAAgB,4BAA4B,CAC1C,WAAW,SAAmB,EAC9B,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,qBAAqB,CAqBvB;AAED,wBAAsB,yCAAyC,CAC7D,WAAW,SAAmB,EAC9B,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,OAAO,CAAC,qBAAqB,CAAC,CA0BhC;AAED,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,MAAM,EACX,GAAG,GAAE,MAAM,CAAC,UAAwB,EACpC,WAAW,SAAmB,GAC7B,MAAM,EAAE,CAwBV;AAED,wBAAsB,iBAAiB,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC,CAOlF;AAED,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA8ClE"}
@@ -4,7 +4,7 @@ import { existsSync, readFileSync } from 'fs';
4
4
  import { getPackageRoot } from '../utils/package.js';
5
5
  import { spawnPlatformCommandSync } from '../utils/platform-command.js';
6
6
  import { isSparkShellNativeCompatibilityFailure, resolveSparkShellBinaryPathWithHydration, runSparkShellBinary, } from './sparkshell.js';
7
- import { getMainDefaultModel, getSparkDefaultModel } from '../config/models.js';
7
+ import { DEFAULT_SPARK_MODEL, DEFAULT_STANDARD_MODEL, getEnvConfiguredSparkDefaultModel, getEnvConfiguredStandardDefaultModel, getSparkDefaultModel, getStandardDefaultModel, readConfiguredEnvOverrides, } from '../config/models.js';
8
8
  import { EXPLORE_BIN_ENV as EXPLORE_BIN_ENV_SHARED, hydrateNativeBinary, isRepositoryCheckout, resolveCachedNativeBinaryCandidatePaths, getPackageVersion, } from './native-assets.js';
9
9
  import { getWikiDir, queryWiki } from '../wiki/index.js';
10
10
  export const EXPLORE_USAGE = [
@@ -15,6 +15,7 @@ const PROMPT_FLAG = '--prompt';
15
15
  const PROMPT_FILE_FLAG = '--prompt-file';
16
16
  export const EXPLORE_BIN_ENV = EXPLORE_BIN_ENV_SHARED;
17
17
  const EXPLORE_SPARK_MODEL_ENV = 'OMX_EXPLORE_SPARK_MODEL';
18
+ const EXPLORE_INSTRUCTIONS_FILE_ENV = 'OMX_EXPLORE_MODEL_INSTRUCTIONS_FILE';
18
19
  const WINDOWS_BUILTIN_EXPLORE_HARNESS_REASON = 'the built-in explore harness is not ready on Windows because its allowlist runtime relies on POSIX sh/bash wrappers. Set OMX_EXPLORE_BIN to a compatible custom harness, prefer `omx sparkshell` for shell-native read-only lookups, or run `omx doctor` for readiness details.';
19
20
  export function getBuiltinExploreHarnessUnsupportedReason(platform = process.platform, env = process.env) {
20
21
  if (platform !== 'win32')
@@ -313,14 +314,28 @@ export async function resolveExploreHarnessCommandWithHydration(packageRoot = ge
313
314
  return resolveExploreHarnessCommand(packageRoot, env);
314
315
  }
315
316
  export function buildExploreHarnessArgs(prompt, cwd, env = process.env, packageRoot = getPackageRoot()) {
316
- const sparkModel = env[EXPLORE_SPARK_MODEL_ENV]?.trim() || getSparkDefaultModel();
317
+ const configuredEnvOverrides = readConfiguredEnvOverrides(env.CODEX_HOME);
318
+ const mergedEnv = {
319
+ ...configuredEnvOverrides,
320
+ ...env,
321
+ };
322
+ const sparkModel = mergedEnv[EXPLORE_SPARK_MODEL_ENV]?.trim()
323
+ || getEnvConfiguredSparkDefaultModel(mergedEnv, mergedEnv.CODEX_HOME)
324
+ || getSparkDefaultModel(mergedEnv.CODEX_HOME)
325
+ || DEFAULT_SPARK_MODEL;
326
+ const instructionsFile = mergedEnv[EXPLORE_INSTRUCTIONS_FILE_ENV]?.trim()
327
+ || join(packageRoot, 'templates', 'model-instructions', 'explore-lightweight-AGENTS.md');
328
+ const fallbackModel = getEnvConfiguredStandardDefaultModel(mergedEnv, mergedEnv.CODEX_HOME)
329
+ || getStandardDefaultModel(mergedEnv.CODEX_HOME)
330
+ || DEFAULT_STANDARD_MODEL;
317
331
  const promptWithWikiContext = buildExplorePromptWithWikiContext(prompt, cwd);
318
332
  return [
319
333
  '--cwd', cwd,
320
334
  '--prompt', promptWithWikiContext,
321
335
  '--prompt-file', join(packageRoot, 'prompts', 'explore-harness.md'),
336
+ '--instructions-file', instructionsFile,
322
337
  '--model-spark', sparkModel,
323
- '--model-fallback', getMainDefaultModel(),
338
+ '--model-fallback', fallbackModel,
324
339
  ];
325
340
  }
326
341
  export async function loadExplorePrompt(parsed) {