halfcycle 0.4.18 → 0.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -9,6 +9,7 @@ halfcycle_pt_skip() {
9
9
  case $hc_t in [0-9]*[.,][0-9][0-9][0-9]*) ;; *) return 1 ;; esac
10
10
  hc_pt_live_text= hc_pt_live_sid= hc_pt_live_agent= hc_pt_live_dir=
11
11
  hc_pt_own_file= hc_pt_own_agent_id= hc_pt_own_tool_use_id=
12
+ halfcycle_pt_agent "$@" || return 1
12
13
  halfcycle_pt_quiet || return 1
13
14
  halfcycle_pt_live || return 1
14
15
  halfcycle_pt_own_copy || return 1
@@ -17,6 +18,12 @@ halfcycle_pt_skip() {
17
18
  halfcycle_pt_own_write "$hc_t"
18
19
  return 0
19
20
  }
21
+ halfcycle_pt_agent() {
22
+ hc_pt_agent=
23
+ [ "$#" -le 2 ] && return 0
24
+ [ "$#" -eq 4 ] && [ "$3" = --agent ] && [ "$4" = codex ] && { hc_pt_agent=codex; return 0; }
25
+ return 1
26
+ }
20
27
  halfcycle_pt_own_read() {
21
28
  local LC_ALL=C hc_val hc_dir hc_re='^[A-Za-z0-9_-]{1,128}$'
22
29
  halfcycle_pt_string tool_name || return 1
@@ -152,6 +159,11 @@ halfcycle_pt_quiet_input() {
152
159
  case $hc_input in *$'\xe2\x84\xaa'*) return 1 ;; esac
153
160
  halfcycle_pt_string tool_name || return 1
154
161
  hc_tool=$hc_val
162
+ case ${hc_pt_agent:-} in
163
+ '') ;;
164
+ codex) case $hc_tool in Bash) ;; *) return 1 ;; esac ;;
165
+ *) return 1 ;;
166
+ esac
155
167
  case $hc_input in *'"tool_input":{'*) ;; *) return 1 ;; esac
156
168
  halfcycle_pt_once '"tool_input"' || return 1
157
169
  case $hc_tool in
@@ -18,7 +18,7 @@
18
18
  *
19
19
  * INV-001: Node builtins and modules inside this package only.
20
20
  */
21
- import { type ClaudeVersionProbeDeps } from './claude-version-probe.js';
21
+ import { type ClaudeVersionProbeDeps, type CodexVersionProbeDeps } from './claude-version-probe.js';
22
22
  import { type BannerContent } from './banner.js';
23
23
  /**
24
24
  * The brand's front door.
@@ -57,11 +57,21 @@ export declare function bundleVersion(): string | undefined;
57
57
  * call rather than depending on this actually running on Windows.
58
58
  */
59
59
  export declare function claudeCodeVersion(deps?: ClaudeVersionProbeDeps): string | undefined;
60
+ /**
61
+ * The locally installed Codex version, or `undefined` — Codex's own twin of
62
+ * `claudeCodeVersion` (`codex-install-target` AC6, T-16). Same reasoning: `codex` missing
63
+ * from PATH is ordinary, not a fault, so a desktop-only developer sees one fewer row
64
+ * rather than a warning. Goes through `probeCodexVersion` (`claude-version-probe.ts`),
65
+ * which runs `codex.cmd` through `cmd.exe` on Windows.
66
+ */
67
+ export declare function codexVersion(deps?: CodexVersionProbeDeps): string | undefined;
60
68
  /** Everything the fact collector is allowed to reach outside itself, so a test can hand it
61
69
  * a world instead of standing in one. */
62
70
  export interface FactProbes {
63
71
  readonly bundleVersion: () => string | undefined;
64
72
  readonly claudeCodeVersion: () => string | undefined;
73
+ /** Beside `claudeCodeVersion` (`codex-install-target` AC6): the `Codex` row. */
74
+ readonly codexVersion: () => string | undefined;
65
75
  readonly projectName: (dir: string) => string | undefined;
66
76
  readonly commitCount: (dir: string) => number | null;
67
77
  readonly installedVersion: (dir: string) => string | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"banner-facts.d.ts","sourceRoot":"","sources":["../src/banner-facts.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAQH,OAAO,EAA0B,KAAK,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AAChG,OAAO,EAAkB,KAAK,aAAa,EAAmB,MAAM,aAAa,CAAC;AAElF;;;;;;;;;GASG;AACH,eAAO,MAAM,SAAS,iBAAiB,CAAC;AAExC;;;;;;GAMG;AACH,eAAO,MAAM,OAAO,EAAE,SAAS,MAAM,EAGpC,CAAC;AAEF,uFAAuF;AACvF,eAAO,MAAM,cAAc,EAAE,SAAS,MAAM,EAI3C,CAAC;AAEF,iFAAiF;AACjF,wBAAgB,aAAa,IAAI,MAAM,GAAG,SAAS,CAOlD;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,GAAE,sBAA2B,GAAG,MAAM,GAAG,SAAS,CAEvF;AAED;0CAC0C;AAC1C,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,aAAa,EAAE,MAAM,MAAM,GAAG,SAAS,CAAC;IACjD,QAAQ,CAAC,iBAAiB,EAAE,MAAM,MAAM,GAAG,SAAS,CAAC;IACrD,QAAQ,CAAC,WAAW,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;IAC1D,QAAQ,CAAC,WAAW,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;IACrD,QAAQ,CAAC,gBAAgB,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;IAC/D,4EAA4E;IAC5E,QAAQ,CAAC,WAAW,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,KAAK,MAAM,GAAG,SAAS,CAAC;CACtE;AAED,2FAA2F;AAC3F,eAAO,MAAM,WAAW,EAAE,UAqCzB,CAAC;AAQF;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,oBAAoB,CAClC,UAAU,EAAE,MAAM,EAClB,GAAG,GAAE,MAAM,CAAC,UAAwB,EACpC,MAAM,GAAE,UAAwB,GAC/B,aAAa,CAsCf"}
1
+ {"version":3,"file":"banner-facts.d.ts","sourceRoot":"","sources":["../src/banner-facts.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAQH,OAAO,EAGL,KAAK,sBAAsB,EAC3B,KAAK,qBAAqB,EAC3B,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAkB,KAAK,aAAa,EAAmB,MAAM,aAAa,CAAC;AAElF;;;;;;;;;GASG;AACH,eAAO,MAAM,SAAS,iBAAiB,CAAC;AAExC;;;;;;GAMG;AACH,eAAO,MAAM,OAAO,EAAE,SAAS,MAAM,EAGpC,CAAC;AAEF,uFAAuF;AACvF,eAAO,MAAM,cAAc,EAAE,SAAS,MAAM,EAI3C,CAAC;AAEF,iFAAiF;AACjF,wBAAgB,aAAa,IAAI,MAAM,GAAG,SAAS,CAOlD;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,GAAE,sBAA2B,GAAG,MAAM,GAAG,SAAS,CAEvF;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,IAAI,GAAE,qBAA0B,GAAG,MAAM,GAAG,SAAS,CAEjF;AAED;0CAC0C;AAC1C,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,aAAa,EAAE,MAAM,MAAM,GAAG,SAAS,CAAC;IACjD,QAAQ,CAAC,iBAAiB,EAAE,MAAM,MAAM,GAAG,SAAS,CAAC;IACrD,gFAAgF;IAChF,QAAQ,CAAC,YAAY,EAAE,MAAM,MAAM,GAAG,SAAS,CAAC;IAChD,QAAQ,CAAC,WAAW,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;IAC1D,QAAQ,CAAC,WAAW,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;IACrD,QAAQ,CAAC,gBAAgB,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;IAC/D,4EAA4E;IAC5E,QAAQ,CAAC,WAAW,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,KAAK,MAAM,GAAG,SAAS,CAAC;CACtE;AAED,2FAA2F;AAC3F,eAAO,MAAM,WAAW,EAAE,UAsCzB,CAAC;AAQF;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,oBAAoB,CAClC,UAAU,EAAE,MAAM,EAClB,GAAG,GAAE,MAAM,CAAC,UAAwB,EACpC,MAAM,GAAE,UAAwB,GAC/B,aAAa,CAyCf"}
package/dist/bin.js CHANGED
File without changes
@@ -2,13 +2,12 @@
2
2
  * `npx halfcycle@latest check-tasks <phase> [--with-task-list] [--repo <root>]`
3
3
  * (`collision-free-parallel-work` AC3; `checks-as-work-lands` AC3, AC6).
4
4
  *
5
- * OFFLINE, ALWAYS. This verb reads at most two files on the person's own machine —
6
- * `docs/build-records/task-plan.json` and, with `--with-task-list`,
7
- * `docs/build-records/build-tasks.json` — and nothing else. It opens no credential
5
+ * OFFLINE, ALWAYS. This verb reads at most three files on the person's own machine —
6
+ * `docs/build-records/task-plan.json`, `docs/system.json` when it is there, and, with
7
+ * `--with-task-list`, `docs/build-records/build-tasks.json` — and nothing else. It opens no credential
8
8
  * file, makes no network call, and needs no sign-in. Everything it prints comes from
9
9
  * `checkTaskPlan` (`@halfcycle/core`), which is pure: this module's whole job is
10
- * reading the two files, handing them to that function, and printing what it
11
- * returns.
10
+ * reading the files, handing them to that function, and printing what it returns.
12
11
  *
13
12
  * ONE HOME FOR THE PLAN'S SHAPE AND ITS RULES (INV-003): `taskPlanSchema`,
14
13
  * `taskListFileSchema`, `checkTaskPlan` and every line it prints live in
@@ -28,8 +27,20 @@
28
27
  * otherwise clean plan. A plan file in the same state is always a hard failure (exit
29
28
  * 2), because the plan is this verb's one required input.
30
29
  *
31
- * SHIPS TO CLIENT DISK inside the CLI (INV-001: Node builtins, `@halfcycle/core`
32
- * only — no network, so no `@halfcycle/events` and no `fetch`). Every string here is
30
+ * THE SYSTEM DESCRIPTION NAMES THE PARTS (O7, `collision-free-parallel-work` as
31
+ * amended 2026-10-30). When `docs/system.json` is there, it is read and checked by
32
+ * the system verb's own reader and check (`readDescriptionFile`,
33
+ * `checkSystemDescription`), never a second parser, and its part ids go to
34
+ * `checkTaskPlan`, which asks every build task to name the parts it builds. No file,
35
+ * no rule: there is nothing to name. A file that is there but unreadable, not JSON,
36
+ * or that fails its own check stops the run with exit 2, naming the file and each
37
+ * problem, exactly as an unparsable plan does: a plan cannot be checked against a
38
+ * description that is broken, and passing it silently would let through the very
39
+ * plan this rule exists to catch.
40
+ *
41
+ * SHIPS TO CLIENT DISK inside the CLI (INV-001: Node builtins, `@halfcycle/core` and
42
+ * `@halfcycle/events` only, the latter for the description's path and check; no
43
+ * network and no `fetch`). Every string here is
33
44
  * a sentence a person reads in their own terminal, so none names an internal
34
45
  * register, a route, or this project's own tooling; no comment sits beside an
35
46
  * object member.
@@ -57,14 +68,15 @@ export interface CheckTasksRun {
57
68
  readonly exitCode: number;
58
69
  }
59
70
  /**
60
- * The whole verb. Reads `docs/build-records/task-plan.json` under `repoRoot`, and,
61
- * with `withTaskList`, `docs/build-records/build-tasks.json`; hands both to
71
+ * The whole verb. Reads `docs/build-records/task-plan.json` under `repoRoot`,
72
+ * `docs/system.json` when it is there, and, with `withTaskList`,
73
+ * `docs/build-records/build-tasks.json`; hands them to
62
74
  * `checkTaskPlan` and prints its lines, one per line, in the order it returns them,
63
75
  * or `checkTaskPlan`'s own clear line when there is nothing to report. Never throws.
64
76
  *
65
77
  * Exit 0 when nothing refuses, 1 when anything does, 2 when the plan file is
66
- * missing or either file cannot be read or parsed as JSON or does not match the
67
- * shape this tool reads (naming which file, and where). A missing task list is not
78
+ * missing or any file it reads cannot be read or parsed as JSON or does not match
79
+ * the shape this tool reads (naming which file, and where). A missing task list is not
68
80
  * an error (see the module header) and never changes the exit code on its own.
69
81
  */
70
82
  export declare function runCheckTasks(repoRoot: string, phase: string, withTaskList: boolean): CheckTasksRun;
@@ -1 +1 @@
1
- {"version":3,"file":"check-tasks.d.ts","sourceRoot":"","sources":["../src/check-tasks.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AAgBH,kFAAkF;AAClF,eAAO,MAAM,iBAAiB,gFAAgF,CAAC;AAE/G;;;;GAIG;AACH,MAAM,MAAM,cAAc,GACtB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,GAChF;IAAE,EAAE,EAAE,KAAK,CAAA;CAAE,CAAC;AAElB,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,cAAc,CAuB3E;AA2CD,sCAAsC;AACtC,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,OAAO,GAAG,aAAa,CA4BnG"}
1
+ {"version":3,"file":"check-tasks.d.ts","sourceRoot":"","sources":["../src/check-tasks.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AAkBH,kFAAkF;AAClF,eAAO,MAAM,iBAAiB,gFAAgF,CAAC;AAE/G;;;;GAIG;AACH,MAAM,MAAM,cAAc,GACtB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,GAChF;IAAE,EAAE,EAAE,KAAK,CAAA;CAAE,CAAC;AAElB,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,cAAc,CAuB3E;AA8ED,sCAAsC;AACtC,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,OAAO,GAAG,aAAa,CAqCnG"}
@@ -1,5 +1,6 @@
1
1
  /**
2
- * ONE PLACE THAT KNOWS HOW TO ASK THE SHELL FOR CLAUDE CODE'S VERSION.
2
+ * ONE PLACE THAT KNOWS HOW TO ASK THE SHELL FOR A CLI'S VERSION — Claude Code's and,
3
+ * since `codex-install-target` AC6 (T-16), Codex's.
3
4
  *
4
5
  * `reportClaudeCodeVersion` (`bin.ts`) and `claudeCodeVersion` (`banner-facts.ts`) each used
5
6
  * to call `execFileSync('claude', ['--version'], …)` directly. On Windows, an npm install of
@@ -12,11 +13,21 @@
12
13
  * Windows: `/d` skips AutoRun scripts, `/s` lets the quoted command string carry its own
13
14
  * quoting, and `windowsVerbatimArguments: true` stops Node adding a second layer of quoting
14
15
  * on top of the one already in the argument. Elsewhere (`win32` excluded) this is exactly the
15
- * call it always was.
16
+ * call it always was. Codex's own install puts `codex.cmd` on Windows PATH (M4), the same
17
+ * shape, so `probeCodexVersion` runs it through `cmd.exe` the same way.
16
18
  *
17
19
  * `platform` and `exec` are both injectable so a test can drive the `win32` arm from a
18
20
  * non-Windows CI runner and assert the literal command and arguments, rather than depending
19
- * on the host actually being Windows with Claude Code installed.
21
+ * on the host actually being Windows with Claude Code or Codex installed.
22
+ *
23
+ * ONE SHARED EXEC, TWO PARSERS. `execVersionCommand` below is the generalised form —
24
+ * `probeClaudeCodeVersion`'s own call is byte-for-byte what it always was, so its existing
25
+ * tests pass unchanged (`codex-install-target` AC6: "the `claude` probe's tests pass
26
+ * unchanged"). Codex's output shape is narrower than Claude Code's loose
27
+ * `/(\d+\.\d+\.\d+)/`: `codex --version` prints `codex-cli 0.166.0` (M4, recorded
28
+ * 2026-10-31), so `probeCodexVersion` anchors on `^codex-cli ` rather than matching any
29
+ * dotted triple anywhere in the output — a stray version number elsewhere in a future
30
+ * Codex banner must not be mistaken for the CLI's own.
20
31
  *
21
32
  * INV-001: Node builtins only.
22
33
  */
@@ -34,6 +45,8 @@ export interface ClaudeVersionProbeDeps {
34
45
  /** Defaults to the real `execFileSync`. Inject to assert the call without a shell. */
35
46
  readonly exec?: ClaudeVersionExec;
36
47
  }
48
+ /** Same shape, same deps — `probeCodexVersion` takes the identical injectable seam. */
49
+ export type CodexVersionProbeDeps = ClaudeVersionProbeDeps;
37
50
  /**
38
51
  * Runs `claude --version` for the given platform and returns the parsed `x.y.z`, or
39
52
  * `undefined` for anything that stops that from working: `claude` not on PATH, no answer
@@ -41,6 +54,17 @@ export interface ClaudeVersionProbeDeps {
41
54
  * callers' degradation (say nothing) depends on that.
42
55
  */
43
56
  export declare function probeClaudeCodeVersion(timeoutMs: number, deps?: ClaudeVersionProbeDeps): string | undefined;
57
+ /**
58
+ * Runs `codex --version` for the given platform and returns the parsed `x.y.z`, or
59
+ * `undefined` for anything that stops that from working: `codex` not on PATH, no answer
60
+ * inside `timeoutMs`, or output that does not start `codex-cli <x.y.z>` (`codex-install-
61
+ * target` AC6, M4: Codex prints `codex-cli 0.166.0` and exits 0; the parser is the first
62
+ * group of `^codex-cli (\d+\.\d+\.\d+)` on stdout — anything else gives no row and no
63
+ * line). Never throws — every caller's degradation (say nothing) depends on that. On
64
+ * Windows this runs through `cmd.exe /d /s /c "codex --version"`, so `codex.cmd`
65
+ * answers, the same way `probeClaudeCodeVersion` reaches `claude.cmd`.
66
+ */
67
+ export declare function probeCodexVersion(timeoutMs: number, deps?: CodexVersionProbeDeps): string | undefined;
44
68
  /** The four install methods `npx halfcycle`'s own download page names, and the one
45
69
  * command that upgrades each. */
46
70
  export type ClaudeInstallMethod = 'winget' | 'npm' | 'brew' | 'native';
@@ -1 +1 @@
1
- {"version":3,"file":"claude-version-probe.d.ts","sourceRoot":"","sources":["../src/claude-version-probe.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAMH;0DAC0D;AAC1D,MAAM,MAAM,iBAAiB,GAAG,CAC9B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,OAAO,EAAE;IACP,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;IACtD,QAAQ,CAAC,wBAAwB,CAAC,EAAE,OAAO,CAAC;CAC7C,KACE,MAAM,CAAC;AAEZ,MAAM,WAAW,sBAAsB;IACrC,oFAAoF;IACpF,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC;IACpC,sFAAsF;IACtF,QAAQ,CAAC,IAAI,CAAC,EAAE,iBAAiB,CAAC;CACnC;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,GAAE,sBAA2B,GAAG,MAAM,GAAG,SAAS,CAqB/G;AAMD;kCACkC;AAClC,MAAM,MAAM,mBAAmB,GAAG,QAAQ,GAAG,KAAK,GAAG,MAAM,GAAG,QAAQ,CAAC;AAEvE,eAAO,MAAM,wBAAwB,mCAAmC,CAAC;AAEzE,eAAO,MAAM,gBAAgB,EAAE,QAAQ,CAAC,MAAM,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAK1E,CAAC;AAyBF,MAAM,WAAW,uBAAuB;IACtC,iCAAiC;IACjC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACjC,sCAAsC;IACtC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC;IACpC,iGAAiG;IACjG,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;IAC5C;sDACkD;IAClD,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;CAC9C;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,4BAA4B,CAAC,IAAI,GAAE,uBAA4B,GAAG,mBAAmB,GAAG,SAAS,CAwBhH"}
1
+ {"version":3,"file":"claude-version-probe.d.ts","sourceRoot":"","sources":["../src/claude-version-probe.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAMH;0DAC0D;AAC1D,MAAM,MAAM,iBAAiB,GAAG,CAC9B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,OAAO,EAAE;IACP,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;IACtD,QAAQ,CAAC,wBAAwB,CAAC,EAAE,OAAO,CAAC;CAC7C,KACE,MAAM,CAAC;AAEZ,MAAM,WAAW,sBAAsB;IACrC,oFAAoF;IACpF,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC;IACpC,sFAAsF;IACtF,QAAQ,CAAC,IAAI,CAAC,EAAE,iBAAiB,CAAC;CACnC;AAED,uFAAuF;AACvF,MAAM,MAAM,qBAAqB,GAAG,sBAAsB,CAAC;AA6B3D;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,GAAE,sBAA2B,GAAG,MAAM,GAAG,SAAS,CAG/G;AAED;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,GAAE,qBAA0B,GAAG,MAAM,GAAG,SAAS,CAGzG;AAMD;kCACkC;AAClC,MAAM,MAAM,mBAAmB,GAAG,QAAQ,GAAG,KAAK,GAAG,MAAM,GAAG,QAAQ,CAAC;AAEvE,eAAO,MAAM,wBAAwB,mCAAmC,CAAC;AAEzE,eAAO,MAAM,gBAAgB,EAAE,QAAQ,CAAC,MAAM,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAK1E,CAAC;AAyBF,MAAM,WAAW,uBAAuB;IACtC,iCAAiC;IACjC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACjC,sCAAsC;IACtC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC;IACpC,iGAAiG;IACjG,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;IAC5C;sDACkD;IAClD,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;CAC9C;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,4BAA4B,CAAC,IAAI,GAAE,uBAA4B,GAAG,mBAAmB,GAAG,SAAS,CAwBhH"}