@with-logic/elwood 0.1.1 → 0.1.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 (118) hide show
  1. package/CHANGELOG.md +17 -3
  2. package/CONTRIBUTING.md +104 -0
  3. package/README.md +23 -17
  4. package/SECURITY.md +42 -0
  5. package/dist/claude/model-picker.d.ts.map +1 -1
  6. package/dist/claude/model-picker.js +4 -3
  7. package/dist/claude/model-picker.js.map +1 -1
  8. package/dist/claude/model-switch-confirmation.js +9 -1
  9. package/dist/claude/model-switch-confirmation.js.map +1 -1
  10. package/dist/claude/screen-table.js +1 -1
  11. package/dist/claude/screen-table.js.map +1 -1
  12. package/dist/claude/session/build.d.ts.map +1 -1
  13. package/dist/claude/session/build.js +3 -0
  14. package/dist/claude/session/build.js.map +1 -1
  15. package/dist/claude/session/start-or-resume.js +1 -0
  16. package/dist/claude/session/start-or-resume.js.map +1 -1
  17. package/dist/cli/interactive/spawn.d.ts.map +1 -1
  18. package/dist/cli/interactive/spawn.js +30 -9
  19. package/dist/cli/interactive/spawn.js.map +1 -1
  20. package/dist/cli/models/index.d.ts.map +1 -1
  21. package/dist/cli/models/index.js +6 -3
  22. package/dist/cli/models/index.js.map +1 -1
  23. package/dist/cli/request/layers.d.ts +2 -0
  24. package/dist/cli/request/layers.d.ts.map +1 -1
  25. package/dist/cli/request/layers.js +9 -5
  26. package/dist/cli/request/layers.js.map +1 -1
  27. package/dist/cli/sessions/index.d.ts +9 -2
  28. package/dist/cli/sessions/index.d.ts.map +1 -1
  29. package/dist/cli/sessions/index.js +2 -6
  30. package/dist/cli/sessions/index.js.map +1 -1
  31. package/dist/cli/sessions/settings.d.ts +11 -0
  32. package/dist/cli/sessions/settings.d.ts.map +1 -0
  33. package/dist/cli/sessions/settings.js +26 -0
  34. package/dist/cli/sessions/settings.js.map +1 -0
  35. package/dist/codex/model-picker.d.ts.map +1 -1
  36. package/dist/codex/model-picker.js +3 -2
  37. package/dist/codex/model-picker.js.map +1 -1
  38. package/dist/codex/session/build.d.ts.map +1 -1
  39. package/dist/codex/session/build.js +5 -7
  40. package/dist/codex/session/build.js.map +1 -1
  41. package/dist/codex/session/start-or-resume.js +1 -0
  42. package/dist/codex/session/start-or-resume.js.map +1 -1
  43. package/dist/core/input/index.d.ts.map +1 -1
  44. package/dist/core/input/index.js +15 -3
  45. package/dist/core/input/index.js.map +1 -1
  46. package/dist/core/models/input.d.ts +3 -0
  47. package/dist/core/models/input.d.ts.map +1 -0
  48. package/dist/core/models/input.js +9 -0
  49. package/dist/core/models/input.js.map +1 -0
  50. package/dist/core/models/picker.d.ts +2 -1
  51. package/dist/core/models/picker.d.ts.map +1 -1
  52. package/dist/core/models/picker.js +6 -5
  53. package/dist/core/models/picker.js.map +1 -1
  54. package/dist/core/models/tui-screen.d.ts +1 -1
  55. package/dist/core/models/tui-screen.d.ts.map +1 -1
  56. package/dist/core/models/tui-screen.js +26 -3
  57. package/dist/core/models/tui-screen.js.map +1 -1
  58. package/dist/runtime/session/base.d.ts.map +1 -1
  59. package/dist/runtime/session/base.js +4 -1
  60. package/dist/runtime/session/base.js.map +1 -1
  61. package/dist/runtime/session/commands.d.ts +2 -1
  62. package/dist/runtime/session/commands.d.ts.map +1 -1
  63. package/dist/runtime/session/commands.js +10 -4
  64. package/dist/runtime/session/commands.js.map +1 -1
  65. package/dist/runtime/session/lifecycle.d.ts +3 -4
  66. package/dist/runtime/session/lifecycle.d.ts.map +1 -1
  67. package/dist/runtime/session/lifecycle.js +6 -5
  68. package/dist/runtime/session/lifecycle.js.map +1 -1
  69. package/dist/state/directories.d.ts +4 -0
  70. package/dist/state/directories.d.ts.map +1 -0
  71. package/dist/state/directories.js +41 -0
  72. package/dist/state/directories.js.map +1 -0
  73. package/dist/state/files.d.ts.map +1 -1
  74. package/dist/state/files.js +25 -11
  75. package/dist/state/files.js.map +1 -1
  76. package/dist/state/private-session.d.ts.map +1 -1
  77. package/dist/state/private-session.js +2 -0
  78. package/dist/state/private-session.js.map +1 -1
  79. package/dist/state/store.d.ts.map +1 -1
  80. package/dist/state/store.js +7 -1
  81. package/dist/state/store.js.map +1 -1
  82. package/docs/cli-behavior.md +1 -1
  83. package/docs/codex/cli.md +57 -0
  84. package/docs/codex/config.md +47 -0
  85. package/docs/codex/hooks.md +70 -0
  86. package/examples/README.md +56 -0
  87. package/examples/full.ts +113 -0
  88. package/examples/minimal.ts +15 -0
  89. package/examples/stream.ts +39 -0
  90. package/examples/support.ts +71 -0
  91. package/package.json +10 -5
  92. package/prd/01-overview.md +21 -0
  93. package/prd/02-goals.md +47 -0
  94. package/prd/03-terminology.md +32 -0
  95. package/prd/04-architecture.md +121 -0
  96. package/prd/05-api/5.1-starting-claude.md +108 -0
  97. package/prd/05-api/5.2-resuming-claude.md +86 -0
  98. package/prd/05-api/5.3-claude-session-api.md +658 -0
  99. package/prd/05-api/5.4-events.md +145 -0
  100. package/prd/05-api/5.5-starting-codex.md +106 -0
  101. package/prd/05-api/5.6-resuming-codex.md +48 -0
  102. package/prd/05-api/5.7-codex-session-api.md +425 -0
  103. package/prd/05-api/5.8-session-api.md +122 -0
  104. package/prd/05-api/5.9-loops.md +170 -0
  105. package/prd/05-api/README.md +19 -0
  106. package/prd/06-claude-hook-bridge.md +164 -0
  107. package/prd/07-claude-policy.md +15 -0
  108. package/prd/07a-codex-hook-bridge.md +76 -0
  109. package/prd/08-state.md +127 -0
  110. package/prd/09-lifecycle.md +222 -0
  111. package/prd/10-errors.md +55 -0
  112. package/prd/11-test-app.md +53 -0
  113. package/prd/12-e2e.md +23 -0
  114. package/prd/12a-cli.md +375 -0
  115. package/prd/13-latitude.md +12 -0
  116. package/prd/14-conformance.md +333 -0
  117. package/prd/15-open-notes.md +8 -0
  118. package/prd/README.md +45 -0
package/CHANGELOG.md CHANGED
@@ -7,11 +7,25 @@ and doc tweaks are omitted. The format follows
7
7
  [Keep a Changelog](https://keepachangelog.com); this project is pre-1.0, so
8
8
  everything lands under **Unreleased** until the first tagged release.
9
9
 
10
- Observable behavior is specified in `PRD.md`; the conformance criteria that
11
- back each entry are listed in PRD.md §14.
10
+ Observable behavior is specified in `prd/`; the conformance criteria that
11
+ back each entry are listed in `prd/14-conformance.md`.
12
12
 
13
13
  ## [Unreleased]
14
14
 
15
+ ## [0.1.2] - 2026-09-13
16
+
17
+ - Preserve the inherited PATH when an interactive login shell exits successfully
18
+ without returning the PATH probe.
19
+
20
+ - Keep permission dialogs blocking across cursor movement and hold slash-command
21
+ input and recovery Enter while a decision is pending; cancel expired picker submissions.
22
+ - Reject planted state-directory and generated-file links before permission changes or writes.
23
+ - Forward `highTrust` on start-or-resume, wait for model-discovery readiness,
24
+ and resolve session listings independently of agent-specific environment defaults.
25
+ - Align foreground interactive launches with login-shell agent detection.
26
+ - Correct trust and IPC-persistence documentation, include linked package references,
27
+ and revalidate mutable website sprites using fresh URLs for previously cached clients.
28
+
15
29
  ## [0.1.1]
16
30
 
17
31
  First usable public release.
@@ -61,7 +75,7 @@ version to install.
61
75
  `{"type":"models"}` document of `AgentModelOption` rows. The adapters' launch
62
76
  flag mapping now lives in shared `claudeLaunchArguments`/`codexLaunchArguments`
63
77
  builders so interactive and headless launches cannot drift. (§12A.7–§12A.10,
64
- C-CLI-21 through C-CLI-24)
78
+ C-CLI-23 through C-CLI-26)
65
79
 
66
80
  - Claude Code and Codex CLI adapters that run the real interactive CLI in a
67
81
  PTY, launched through the user's login shell, and observe it through a
@@ -0,0 +1,104 @@
1
+ # Contributing
2
+
3
+ Thanks for helping with Elwood. This project is spec-first: `prd/` is the
4
+ contract for observable behavior, and `CLAUDE.md` (also linked as `AGENTS.md`)
5
+ is the implementation guide for anyone, human or AI, changing code. Read both
6
+ before opening a pull request.
7
+
8
+ ## Requirements
9
+
10
+ - macOS (the only supported platform for v0.1; the unit suite also runs on
11
+ Linux).
12
+ - Node.js 24 or newer. `.node-version` pins the major version for version
13
+ managers.
14
+ - For end-to-end tests: an installed and authenticated Claude Code and/or
15
+ Codex CLI.
16
+
17
+ ## Setup and checks
18
+
19
+ ```sh
20
+ npm install
21
+ npm run check
22
+ ```
23
+
24
+ `npm run check` is the merge gate. It runs, in order:
25
+
26
+ 1. `npm run build` (emits `dist/`, which the CLI tests and `npm link` need),
27
+ 2. `tsc --noEmit`,
28
+ 3. `biome check .`,
29
+ 4. `scripts/check-lines.ts` (every code file at or below 200 lines),
30
+ 5. `vitest run --coverage` with 100% line, branch, function, and statement
31
+ coverage.
32
+
33
+ Useful narrower commands:
34
+
35
+ ```sh
36
+ npm run typecheck
37
+ npm run lint # or npm run lint:fix
38
+ npx vitest run tests/unit/some-file.test.ts
39
+ npm run test:e2e # real Claude/Codex sessions; uses model quota
40
+ ```
41
+
42
+ The e2e suite skips any test whose agent CLI is not installed. It starts real
43
+ sessions in temporary directories and answers workspace trust prompts for those
44
+ directories automatically.
45
+
46
+ ## Making a change
47
+
48
+ 1. If the change is observable by a user, an API consumer, or a second
49
+ implementation (commands, flags, events, output shapes, config, state,
50
+ errors, defaults, limits, security guarantees, conformance criteria), update
51
+ `prd/` first.
52
+ 2. Implement the smallest matching slice in `src/`.
53
+ 3. Add or update tests in `tests/`. Conformance tests name their criterion in
54
+ the title, for example `C-CLI-03 resume rejects --cwd`.
55
+ 4. If the change is consumer-facing, add a bullet to `CHANGELOG.md` under
56
+ `## [Unreleased]`.
57
+ 5. If the real Claude or Codex CLI taught you something a unit test could not,
58
+ record it in `docs/cli-behavior.md`.
59
+ 6. Run `npm run check`.
60
+
61
+ ## Pull requests
62
+
63
+ - Keep pull requests small and focused on one change.
64
+ - Do not include secrets, access tokens, credentials, or private data in
65
+ issues, tests, logs, screenshots, or fixtures.
66
+ - Describe what changed and why. If the change touches readiness, turn
67
+ detection, trust prompts, resume, or input paths, say how you verified it
68
+ against the real CLI.
69
+
70
+ ## Local test apps
71
+
72
+ Two maintainer tools exercise the library interactively:
73
+
74
+ ```sh
75
+ # Terminal smoke app, Claude by default.
76
+ npm run dev:app -- --cwd /path/to/project
77
+ npm run dev:app -- --agent codex --cwd /path/to/project
78
+ npm run dev:app -- --cwd /path/to/project --resume <elwoodSessionId>
79
+
80
+ # Browser debugger on http://localhost:4317 with an xterm.js mirror and a
81
+ # structured event inspector.
82
+ npm run dev:web
83
+ ```
84
+
85
+ They live under `dev/`, outside `src/`, and are not part of the published
86
+ package. They are development utilities, so they are typechecked and linted
87
+ like everything else but are excluded from the coverage gate.
88
+
89
+ ## Repository map
90
+
91
+ | Path | Purpose |
92
+ |---|---|
93
+ | `prd/` | Source of truth for behavior and conformance criteria (one file per section). |
94
+ | `src/index.ts` | Public package exports. |
95
+ | `src/core/` | Adapter-neutral session machinery: control queue, status detection, turns, loops, images, warnings. |
96
+ | `src/runtime/` | Shared session base class, startup checks, teardown, and test seams. |
97
+ | `src/claude/`, `src/codex/` | The two adapters: launch, hooks, transcripts, validation. |
98
+ | `src/cli/` | The `elwood` executable. |
99
+ | `src/state/` | Session records and private sidecar files. |
100
+ | `src/bridge/` | Local hook bridge server and generated bridge script. |
101
+ | `src/terminal/`, `src/pty/` | Headless xterm.js model and node-pty adapter. |
102
+ | `dev/` | Local terminal and browser dev apps (not published, not coverage-gated). |
103
+ | `tests/` | Unit, conformance, and e2e suites. |
104
+ | `docs/` | Guides and the record of empirically learned CLI behavior. |
package/README.md CHANGED
@@ -48,7 +48,7 @@ transcripts the CLI already provides.
48
48
  - **Two ways in.** A TypeScript library for applications, and an `elwood`
49
49
  command for shell scripts and pipelines.
50
50
 
51
- `PRD.md` is the source of truth for observable behavior. If this README, the
51
+ [`prd/`](prd/README.md) is the source of truth for observable behavior. If this README, the
52
52
  tests, or the implementation disagree with the PRD, the PRD wins.
53
53
 
54
54
  ## Requirements
@@ -95,9 +95,10 @@ for await (const event of session.stream("Run the test suite and report failures
95
95
  await session.close();
96
96
  ```
97
97
 
98
- `CodexSession` has the same shape. `autotrust: true` lets Elwood answer the
99
- CLI's workspace trust prompt for `cwd` on your behalf; leave it off when a human
100
- should make that decision. There is no default turn timeout; pass
98
+ `CodexSession` has the same shape. `autotrust: true` lets Elwood answer its
99
+ allowlisted workspace and extension trust prompts on your behalf; see
100
+ [Security and privacy](#security-and-privacy) for the full scope. Leave it off
101
+ when a human should make those decisions. There is no default turn timeout; pass
101
102
  `send(prompt, { timeoutMs })` (a `TurnOptions` field) to bound one turn.
102
103
 
103
104
  ## Quickstart: CLI
@@ -277,8 +278,8 @@ statuses and error documents.
277
278
  ### Trust and security
278
279
 
279
280
  Headless mode is non-interactive. With the default `--trust`, Elwood answers only
280
- its allowlisted workspace-directory and extension trust dialogs (plus the
281
- Elwood-owned Codex hook trust needed for operation). `--no-trust` disables the
281
+ its allowlisted workspace-directory and extension trust dialogs. Codex hook
282
+ trust is bypassed session-wide, including hooks beyond Elwood’s own hooks. `--no-trust` disables the
282
283
  workspace/extension approvals. Any other recognized dialog fails safely as
283
284
  `blocked_prompt` instead of hanging or guessing.
284
285
 
@@ -453,10 +454,13 @@ immediate; both are safe after the process has already exited.
453
454
 
454
455
  ## Security and privacy
455
456
 
456
- - Elwood answers only a narrow allowlist of prompts: workspace trust (opt-in via
457
- `autotrust`), Codex hook-trust and update dialogs, and Claude's browser-tools
458
- onboarding. Any other dialog leaves the session `blocked` for a human; the
459
- CLI fails such runs as `blocked_prompt`.
457
+ - With `autotrust`, Elwood answers allowlisted workspace, skill/plugin/MCP,
458
+ and Claude bypass-permissions acceptance dialogs. The library defaults to
459
+ `autotrust: false`; the CLI defaults to `--trust`. Codex hook trust is bypassed
460
+ for the entire launched session even without autotrust. Codex update dialogs
461
+ are skipped, and Claude browser-tools onboarding is dismissed. Other recognized
462
+ dialogs leave the session `blocked` for a human; the CLI fails such runs as
463
+ `blocked_prompt`.
460
464
  - `--high-trust` (library `highTrust: true`) is the agent-neutral "never ask"
461
465
  switch: Claude `bypassPermissions`, or Codex `danger-full-access` with
462
466
  approval policy `never`. It removes the agent's own guardrails, so point it
@@ -468,9 +472,11 @@ immediate; both are safe after the process has already exited.
468
472
  - The persisted session record holds schema version, `elwoodSessionId`,
469
473
  adapter, `cwd`, and per-adapter resume state. Loop definitions are the only
470
474
  persisted prompt text, in an owner-only `0600` sidecar.
471
- - Prompts, terminal output, hook payloads, hook responses, transcripts,
472
- warnings, bridge tokens, and socket paths are never persisted. Tokens are
473
- minted fresh on every start and never trusted from disk.
475
+ - Elwood does not persist ordinary prompts, terminal output, hook payloads,
476
+ hook responses, transcripts, or warnings. Fresh bridge tokens and socket paths
477
+ are embedded in generated owner-only bridge scripts (`0600`), but excluded
478
+ from session records and never read back as credentials on resume. `teardown()`
479
+ removes these scripts; `stop()` preserves them with the session's runtime files.
474
480
  - Hook bridge traffic stays on local IPC with a per-session token and an 8 MiB
475
481
  request cap.
476
482
  - Elwood does not modify the user's global agent configuration. Claude gets
@@ -524,13 +530,13 @@ immediate; both are safe after the process has already exited.
524
530
  and hooks.
525
531
  - [examples/README.md](examples/README.md): runnable minimal, streaming, and
526
532
  low-level examples.
527
- - [PRD.md](PRD.md): the behavior specification and conformance criteria.
533
+ - [prd/](prd/README.md): the behavior specification and conformance criteria.
528
534
  - [CHANGELOG.md](CHANGELOG.md): consumer-facing changes.
529
- - [site/](site/): the landing page and the generated documentation site.
535
+ - [site/](https://github.com/with-logic/elwood/tree/main/site): the landing page and the generated documentation site.
530
536
 
531
537
  ## The website
532
538
 
533
- [`site/`](site/) is the landing page and the generated documentation site,
539
+ [`site/`](https://github.com/with-logic/elwood/tree/main/site) is the landing page and the generated documentation site,
534
540
  deployed to Vercel from this repository and served at [elwood.bot](https://elwood.bot). It is a static site with no framework
535
541
  and no build step: HTML, CSS, ES modules, and the robot's sprite sheets.
536
542
 
@@ -539,7 +545,7 @@ cd site && python3 -m http.server 8766 --bind 127.0.0.1
539
545
  ```
540
546
 
541
547
  The documentation page is generated from Markdown sources in
542
- [`site/docs/guide/`](site/docs/guide/) and reads the CLI's help text out of
548
+ [`site/docs/guide/`](https://github.com/with-logic/elwood/tree/main/site/docs/guide) and reads the CLI's help text out of
543
549
  `src/cli/help.ts`, so the published flag reference cannot drift from the code:
544
550
 
545
551
  ```sh
package/SECURITY.md ADDED
@@ -0,0 +1,42 @@
1
+ # Security Policy
2
+
3
+ Elwood drives interactive agent CLIs (Claude Code and Codex) inside real
4
+ terminal sessions, answers a narrow allowlist of their trust prompts on behalf
5
+ of the embedding application, and can drive Claude's `/login` recovery flow.
6
+ Bugs in those paths can change the security posture of the wrapped agent, so we
7
+ treat them as security issues.
8
+
9
+ ## Reporting a vulnerability
10
+
11
+ Please do not open a public issue for a suspected vulnerability. Use GitHub's
12
+ private vulnerability reporting for this repository ("Report a vulnerability"
13
+ under the Security tab). Include the Elwood version, the agent CLI and version,
14
+ the operating system, and a minimal reproduction.
15
+
16
+ We aim to acknowledge reports within five business days.
17
+
18
+ ## Scope
19
+
20
+ In scope:
21
+
22
+ - Elwood answering a prompt it should not have answered, or submitting input
23
+ into a dialog it should have treated as blocking.
24
+ - Leakage of bridge tokens, hook payloads, terminal contents, or other secrets
25
+ into persisted state, warnings, structured CLI output, or logs.
26
+ - Escapes from the session-scoped settings and configuration Elwood generates
27
+ (for example, mutating a user's global agent configuration when the
28
+ documentation says it will not).
29
+ - Unsafe filesystem handling in Elwood-owned state: symlink following,
30
+ permission checks, or non-atomic writes.
31
+ - Command construction that could execute attacker-controlled input.
32
+
33
+ Out of scope:
34
+
35
+ - Behavior of the wrapped agents themselves. Report those to Anthropic or
36
+ OpenAI.
37
+ - Actions an agent takes inside a workspace you asked it to work in with the
38
+ permissions you granted it.
39
+
40
+ ## Supported versions
41
+
42
+ Only the latest release receives security fixes.
@@ -1 +1 @@
1
- {"version":3,"file":"model-picker.d.ts","sourceRoot":"","sources":["../../src/claude/model-picker.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAYhE,eAAO,MAAM,iBAAiB,EAAE,eAqC/B,CAAC"}
1
+ {"version":3,"file":"model-picker.d.ts","sourceRoot":"","sources":["../../src/claude/model-picker.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAYhE,eAAO,MAAM,iBAAiB,EAAE,eAsC/B,CAAC"}
@@ -2,6 +2,7 @@
2
2
  * Claude /model picker automation spec.
3
3
  * Implements PRD §5.3, C-API-23, and C-API-24.
4
4
  */
5
+ import { sendPickerInput } from "../core/models/input.js";
5
6
  import { claudeModelPickerHeader, parseClaudeModelPicker } from "../core/models/rows.js";
6
7
  import { waitForScreen } from "../core/models/tui-screen.js";
7
8
  import { isClaudeIdleComposer, parseClaudeSwitchConfirmation, } from "./model-switch-confirmation.js";
@@ -15,16 +16,16 @@ export const claudeModelPicker = {
15
16
  // "s" applies for this session only. Enter or a number key would save the
16
17
  // selection as the user's default for new sessions, which §4.5 forbids.
17
18
  apply: async (io, timeoutMs) => {
18
- await io.terminal.sendInput("s");
19
+ await sendPickerInput(io, "s", (text) => claudeModelPickerHeader.test(text));
19
20
  const next = await waitForScreen(io.terminal, (text) => cacheConfirmationWithCursor(text) || isClaudeIdleComposer(text), timeoutMs, "claude model switch confirmation or idle composer");
20
21
  const confirmation = parseClaudeSwitchConfirmation(next);
21
22
  if (confirmation?.isCacheWarning === true) {
22
23
  const delta = confirmation.affirmativeIndex - confirmation.selectedIndex;
23
24
  const key = delta > 0 ? arrowDown : arrowUp;
24
25
  for (let step = 0; step < Math.abs(delta); step += 1)
25
- await io.terminal.sendInput(key);
26
+ await sendPickerInput(io, key, cacheConfirmationWithCursor, true);
26
27
  await waitForScreen(io.terminal, affirmativeCacheConfirmation, timeoutMs, "active Claude cache confirmation before apply");
27
- await io.terminal.sendInput(enterKey);
28
+ await sendPickerInput(io, enterKey, affirmativeCacheConfirmation, true);
28
29
  }
29
30
  await waitForScreen(io.terminal, (text) => isClaudeIdleComposer(text) &&
30
31
  parseClaudeSwitchConfirmation(text) === undefined &&
@@ -1 +1 @@
1
- {"version":3,"file":"model-picker.js","sourceRoot":"","sources":["../../src/claude/model-picker.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AACzF,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EACL,oBAAoB,EACpB,6BAA6B,GAC9B,MAAM,gCAAgC,CAAC;AAExC,MAAM,QAAQ,GAAG,IAAI,CAAC;AACtB,MAAM,SAAS,GAAG,UAAU,CAAC;AAC7B,MAAM,OAAO,GAAG,UAAU,CAAC;AAE3B,MAAM,CAAC,MAAM,iBAAiB,GAAoB;IAChD,KAAK,EAAE,QAAQ;IACf,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC;IACpD,KAAK,EAAE,sBAAsB;IAC7B,0EAA0E;IAC1E,wEAAwE;IACxE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE;QAC7B,MAAM,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QACjC,MAAM,IAAI,GAAG,MAAM,aAAa,CAC9B,EAAE,CAAC,QAAQ,EACX,CAAC,IAAI,EAAE,EAAE,CAAC,2BAA2B,CAAC,IAAI,CAAC,IAAI,oBAAoB,CAAC,IAAI,CAAC,EACzE,SAAS,EACT,mDAAmD,CACpD,CAAC;QACF,MAAM,YAAY,GAAG,6BAA6B,CAAC,IAAI,CAAC,CAAC;QACzD,IAAI,YAAY,EAAE,cAAc,KAAK,IAAI,EAAE,CAAC;YAC1C,MAAM,KAAK,GAAG,YAAY,CAAC,gBAAgB,GAAG,YAAY,CAAC,aAAa,CAAC;YACzE,MAAM,GAAG,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC;YAC5C,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,IAAI,IAAI,CAAC;gBAAE,MAAM,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;YACvF,MAAM,aAAa,CACjB,EAAE,CAAC,QAAQ,EACX,4BAA4B,EAC5B,SAAS,EACT,+CAA+C,CAChD,CAAC;YACF,MAAM,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QACxC,CAAC;QACD,MAAM,aAAa,CACjB,EAAE,CAAC,QAAQ,EACX,CAAC,IAAI,EAAE,EAAE,CACP,oBAAoB,CAAC,IAAI,CAAC;YAC1B,6BAA6B,CAAC,IAAI,CAAC,KAAK,SAAS;YACjD,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,EACrC,SAAS,EACT,yCAAyC,CAC1C,CAAC;IACJ,CAAC;CACF,CAAC;AAEF,SAAS,2BAA2B,CAAC,IAAY;IAC/C,MAAM,YAAY,GAAG,6BAA6B,CAAC,IAAI,CAAC,CAAC;IACzD,OAAO,YAAY,EAAE,cAAc,KAAK,IAAI,IAAI,YAAY,CAAC,aAAa,IAAI,CAAC,CAAC;AAClF,CAAC;AAED,SAAS,4BAA4B,CAAC,IAAY;IAChD,MAAM,YAAY,GAAG,6BAA6B,CAAC,IAAI,CAAC,CAAC;IACzD,OAAO,CACL,YAAY,EAAE,cAAc,KAAK,IAAI;QACrC,YAAY,CAAC,aAAa,KAAK,YAAY,CAAC,gBAAgB,CAC7D,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"model-picker.js","sourceRoot":"","sources":["../../src/claude/model-picker.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE1D,OAAO,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AACzF,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EACL,oBAAoB,EACpB,6BAA6B,GAC9B,MAAM,gCAAgC,CAAC;AAExC,MAAM,QAAQ,GAAG,IAAI,CAAC;AACtB,MAAM,SAAS,GAAG,UAAU,CAAC;AAC7B,MAAM,OAAO,GAAG,UAAU,CAAC;AAE3B,MAAM,CAAC,MAAM,iBAAiB,GAAoB;IAChD,KAAK,EAAE,QAAQ;IACf,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC;IACpD,KAAK,EAAE,sBAAsB;IAC7B,0EAA0E;IAC1E,wEAAwE;IACxE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE;QAC7B,MAAM,eAAe,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAC7E,MAAM,IAAI,GAAG,MAAM,aAAa,CAC9B,EAAE,CAAC,QAAQ,EACX,CAAC,IAAI,EAAE,EAAE,CAAC,2BAA2B,CAAC,IAAI,CAAC,IAAI,oBAAoB,CAAC,IAAI,CAAC,EACzE,SAAS,EACT,mDAAmD,CACpD,CAAC;QACF,MAAM,YAAY,GAAG,6BAA6B,CAAC,IAAI,CAAC,CAAC;QACzD,IAAI,YAAY,EAAE,cAAc,KAAK,IAAI,EAAE,CAAC;YAC1C,MAAM,KAAK,GAAG,YAAY,CAAC,gBAAgB,GAAG,YAAY,CAAC,aAAa,CAAC;YACzE,MAAM,GAAG,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC;YAC5C,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,IAAI,IAAI,CAAC;gBAClD,MAAM,eAAe,CAAC,EAAE,EAAE,GAAG,EAAE,2BAA2B,EAAE,IAAI,CAAC,CAAC;YACpE,MAAM,aAAa,CACjB,EAAE,CAAC,QAAQ,EACX,4BAA4B,EAC5B,SAAS,EACT,+CAA+C,CAChD,CAAC;YACF,MAAM,eAAe,CAAC,EAAE,EAAE,QAAQ,EAAE,4BAA4B,EAAE,IAAI,CAAC,CAAC;QAC1E,CAAC;QACD,MAAM,aAAa,CACjB,EAAE,CAAC,QAAQ,EACX,CAAC,IAAI,EAAE,EAAE,CACP,oBAAoB,CAAC,IAAI,CAAC;YAC1B,6BAA6B,CAAC,IAAI,CAAC,KAAK,SAAS;YACjD,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,EACrC,SAAS,EACT,yCAAyC,CAC1C,CAAC;IACJ,CAAC;CACF,CAAC;AAEF,SAAS,2BAA2B,CAAC,IAAY;IAC/C,MAAM,YAAY,GAAG,6BAA6B,CAAC,IAAI,CAAC,CAAC;IACzD,OAAO,YAAY,EAAE,cAAc,KAAK,IAAI,IAAI,YAAY,CAAC,aAAa,IAAI,CAAC,CAAC;AAClF,CAAC;AAED,SAAS,4BAA4B,CAAC,IAAY;IAChD,MAAM,YAAY,GAAG,6BAA6B,CAAC,IAAI,CAAC,CAAC;IACzD,OAAO,CACL,YAAY,EAAE,cAAc,KAAK,IAAI;QACrC,YAAY,CAAC,aAAa,KAAK,YAAY,CAAC,gBAAgB,CAC7D,CAAC;AACJ,CAAC"}
@@ -42,7 +42,15 @@ function switchDialogRegion(text) {
42
42
  }
43
43
  if (latest === undefined)
44
44
  return undefined;
45
- return { subject: latest.subject, text: lines.slice(latest.index).join("\n") };
45
+ const region = lines.slice(latest.index);
46
+ const lastOption = region.findLastIndex((line) => optionPattern.test(line));
47
+ // A later dialog can lack a switch title. Its question/options must not inherit
48
+ // the earlier cache warning's authority merely because they share a viewport.
49
+ const footer = /^\s*(?:Enter to confirm|Esc to cancel)(?:\s*[·•]\s*(?:Enter to confirm|Esc to cancel))*\s*$/i;
50
+ if (region.slice(lastOption + 1).some((line) => line.trim() !== "" && !footer.test(line))) {
51
+ return undefined;
52
+ }
53
+ return { subject: latest.subject, text: region.join("\n") };
46
54
  }
47
55
  function switchOptions(text) {
48
56
  const options = text.split("\n").flatMap((line) => {
@@ -1 +1 @@
1
- {"version":3,"file":"model-switch-confirmation.js","sourceRoot":"","sources":["../../src/claude/model-switch-confirmation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"model-switch-confirmation.js","sourceRoot":"","sources":["../../src/claude/model-switch-confirmation.ts"],"names":[],"mappings":"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"}
@@ -39,7 +39,7 @@ export const claudeScreenFactTable = {
39
39
  {
40
40
  id: "claude-permission-dialog",
41
41
  fact: "blocking_prompt_visible",
42
- all: [/Do you want to .+\?/i, /^\s*❯\s*1\.\s*Yes/im, /Esc to cancel/i],
42
+ all: [/Do you want to [^?]+\?/i, /^\s*(?:❯\s*)?1\.\s*Yes/im, /Esc to cancel/i],
43
43
  },
44
44
  {
45
45
  id: "claude-model-switch-confirmation",
@@ -1 +1 @@
1
- {"version":3,"file":"screen-table.js","sourceRoot":"","sources":["../../src/claude/screen-table.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,EAAE,0BAA0B,EAAE,MAAM,gCAAgC,CAAC;AAE5E;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAoB;IACpD,KAAK,EAAE,QAAQ;IACf,eAAe,EAAE,gBAAgB;IACjC,KAAK,EAAE;QACL,EAAE,EAAE,EAAE,wBAAwB,EAAE,IAAI,EAAE,kBAAkB,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE;QAC3E,EAAE,EAAE,EAAE,uBAAuB,EAAE,IAAI,EAAE,iBAAiB,EAAE,GAAG,EAAE,CAAC,mBAAmB,CAAC,EAAE;QACpF;YACE,EAAE,EAAE,sBAAsB;YAC1B,IAAI,EAAE,iBAAiB;YACvB,MAAM,EAAE,OAAO;YACf,GAAG,EAAE,CAAC,UAAU,CAAC;SAClB;QACD,EAAE,EAAE,EAAE,yBAAyB,EAAE,IAAI,EAAE,4BAA4B,EAAE,GAAG,EAAE,CAAC,iBAAiB,CAAC,EAAE;QAC/F;YACE,EAAE,EAAE,0BAA0B;YAC9B,IAAI,EAAE,yBAAyB;YAC/B,GAAG,EAAE,CAAC,sBAAsB,EAAE,qBAAqB,EAAE,gBAAgB,CAAC;SACvE;QACD;YACE,EAAE,EAAE,kCAAkC;YACtC,IAAI,EAAE,yBAAyB;YAC/B,KAAK,EAAE,0BAA0B;SAClC;KACF;CACF,CAAC;AAEF,+EAA+E;AAC/E,MAAM,UAAU,mCAAmC,CAAC,SAAkB;IACpE,OAAO,sBAAsB,CAAC,qBAAqB,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;AAC5E,CAAC"}
1
+ {"version":3,"file":"screen-table.js","sourceRoot":"","sources":["../../src/claude/screen-table.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,EAAE,0BAA0B,EAAE,MAAM,gCAAgC,CAAC;AAE5E;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAoB;IACpD,KAAK,EAAE,QAAQ;IACf,eAAe,EAAE,gBAAgB;IACjC,KAAK,EAAE;QACL,EAAE,EAAE,EAAE,wBAAwB,EAAE,IAAI,EAAE,kBAAkB,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE;QAC3E,EAAE,EAAE,EAAE,uBAAuB,EAAE,IAAI,EAAE,iBAAiB,EAAE,GAAG,EAAE,CAAC,mBAAmB,CAAC,EAAE;QACpF;YACE,EAAE,EAAE,sBAAsB;YAC1B,IAAI,EAAE,iBAAiB;YACvB,MAAM,EAAE,OAAO;YACf,GAAG,EAAE,CAAC,UAAU,CAAC;SAClB;QACD,EAAE,EAAE,EAAE,yBAAyB,EAAE,IAAI,EAAE,4BAA4B,EAAE,GAAG,EAAE,CAAC,iBAAiB,CAAC,EAAE;QAC/F;YACE,EAAE,EAAE,0BAA0B;YAC9B,IAAI,EAAE,yBAAyB;YAC/B,GAAG,EAAE,CAAC,yBAAyB,EAAE,0BAA0B,EAAE,gBAAgB,CAAC;SAC/E;QACD;YACE,EAAE,EAAE,kCAAkC;YACtC,IAAI,EAAE,yBAAyB;YAC/B,KAAK,EAAE,0BAA0B;SAClC;KACF;CACF,CAAC;AAEF,+EAA+E;AAC/E,MAAM,UAAU,mCAAmC,CAAC,SAAkB;IACpE,OAAO,sBAAsB,CAAC,qBAAqB,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;AAC5E,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../../src/claude/session/build.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAkB,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAQ9E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EAAE,KAAK,aAAa,EAAsB,MAAM,sBAAsB,CAAC;AAE9E,OAAO,EAAE,KAAK,sBAAsB,EAAkB,MAAM,iBAAiB,CAAC;AAK9E,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAUlD,MAAM,MAAM,uBAAuB,GAAG;IACpC,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IAC/B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC;IACjC,QAAQ,CAAC,OAAO,EAAE,kBAAkB,CAAC;IACrC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,gBAAgB,EAAE,sBAAsB,GAAG,SAAS,CAAC;CAC/D,CAAC;AAEF,wBAAsB,kBAAkB,CACtC,KAAK,EAAE,uBAAuB,GAC7B,OAAO,CAAC,iBAAiB,CAAC,CAkJ5B"}
1
+ {"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../../src/claude/session/build.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAkB,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAQ9E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EAAE,KAAK,aAAa,EAAsB,MAAM,sBAAsB,CAAC;AAE9E,OAAO,EAAE,KAAK,sBAAsB,EAAkB,MAAM,iBAAiB,CAAC;AAK9E,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAUlD,MAAM,MAAM,uBAAuB,GAAG;IACpC,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IAC/B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC;IACjC,QAAQ,CAAC,OAAO,EAAE,kBAAkB,CAAC;IACrC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,gBAAgB,EAAE,sBAAsB,GAAG,SAAS,CAAC;CAC/D,CAAC;AAEF,wBAAsB,kBAAkB,CACtC,KAAK,EAAE,uBAAuB,GAC7B,OAAO,CAAC,iBAAiB,CAAC,CAoJ5B"}
@@ -111,6 +111,7 @@ export async function buildClaudeSession(input) {
111
111
  // Hook-backed readiness + deadline fallback; on resume the first composer also marks ready (C-API-28).
112
112
  ready.armDeadline();
113
113
  const reading = observeRenderedFrame(observers, frame, session);
114
+ active.inputBlocking = reading.facts.blocking_prompt_visible;
114
115
  observeReadinessFrame(reading.facts); // blocking gate + resume-composer mark
115
116
  // Surface a mid-session login-expiry banner once (C-CLAUDE-18); no-op pre-readiness.
116
117
  session?.noteLoginExpiry(frame.text);
@@ -135,6 +136,8 @@ export async function buildClaudeSession(input) {
135
136
  // Release the startup buffer once the check settles (§9.4).
136
137
  await assertStartupThenRelease("claude", startupOutput, () => startupExit);
137
138
  active.submitEvidence("startup_usable");
139
+ if (active.inputBlocking)
140
+ active.submitEvidence("blocking_prompt_shown");
138
141
  }, { before: beforeCleanup, pty, bridge, terminal, after: () => transcriptWatcher.stop() });
139
142
  // Open buffered startup warnings after return so synchronous subscribers see them (C-API-14).
140
143
  if (preflightWarning !== undefined) {
@@ -1 +1 @@
1
- {"version":3,"file":"build.js","sourceRoot":"","sources":["../../../src/claude/session/build.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"build.js","sourceRoot":"","sources":["../../../src/claude/session/build.ts"],"names":[],"mappings":"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"}
@@ -24,6 +24,7 @@ function resumeOptions(elwoodSessionId, start) {
24
24
  tools: start.tools,
25
25
  autoupdate: start.autoupdate,
26
26
  autotrust: start.autotrust,
27
+ highTrust: start.highTrust,
27
28
  hookTimeoutMs: start.hookTimeoutMs,
28
29
  strictVersionCheck: start.strictVersionCheck,
29
30
  });
@@ -1 +1 @@
1
- {"version":3,"file":"start-or-resume.js","sourceRoot":"","sources":["../../../src/claude/session/start-or-resume.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAA4B,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAExF,OAAO,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEzC,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAM3C,MAAM,UAAU,mBAAmB,CACjC,OAAmC;IAEnC,MAAM,EAAE,eAAe,EAAE,GAAG,YAAY,EAAE,GAAG,OAAO,CAAC;IACrD,OAAO,aAAa,CAClB,eAAe,EACf,CAAC,EAAE,EAAE,EAAE,CAAC,YAAY,CAAC,aAAa,CAAC,EAAE,EAAE,YAAY,CAAC,CAAC,EACrD,GAAG,EAAE,CAAC,WAAW,CAAC,YAAY,CAAC,CAChC,CAAC;AACJ,CAAC;AAED,kFAAkF;AAClF,4EAA4E;AAC5E,SAAS,aAAa,CAAC,eAAuB,EAAE,KAAyB;IACvE,MAAM,SAAS,GAAG,OAAO,CAAuD;QAC9E,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,eAAe,EAAE,KAAK,CAAC,eAAe;QACtC,cAAc,EAAE,KAAK,CAAC,cAAc;QACpC,YAAY,EAAE,KAAK,CAAC,YAAY;QAChC,eAAe,EAAE,KAAK,CAAC,eAAe;QACtC,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,aAAa,EAAE,KAAK,CAAC,aAAa;QAClC,kBAAkB,EAAE,KAAK,CAAC,kBAAkB;KAC7C,CAAC,CAAC;IACH,OAAO,EAAE,eAAe,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,GAAG,SAAS,EAAE,CAAC;AAC3D,CAAC"}
1
+ {"version":3,"file":"start-or-resume.js","sourceRoot":"","sources":["../../../src/claude/session/start-or-resume.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAA4B,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAExF,OAAO,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEzC,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAM3C,MAAM,UAAU,mBAAmB,CACjC,OAAmC;IAEnC,MAAM,EAAE,eAAe,EAAE,GAAG,YAAY,EAAE,GAAG,OAAO,CAAC;IACrD,OAAO,aAAa,CAClB,eAAe,EACf,CAAC,EAAE,EAAE,EAAE,CAAC,YAAY,CAAC,aAAa,CAAC,EAAE,EAAE,YAAY,CAAC,CAAC,EACrD,GAAG,EAAE,CAAC,WAAW,CAAC,YAAY,CAAC,CAChC,CAAC;AACJ,CAAC;AAED,kFAAkF;AAClF,4EAA4E;AAC5E,SAAS,aAAa,CAAC,eAAuB,EAAE,KAAyB;IACvE,MAAM,SAAS,GAAG,OAAO,CAAuD;QAC9E,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,eAAe,EAAE,KAAK,CAAC,eAAe;QACtC,cAAc,EAAE,KAAK,CAAC,cAAc;QACpC,YAAY,EAAE,KAAK,CAAC,YAAY;QAChC,eAAe,EAAE,KAAK,CAAC,eAAe;QACtC,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,aAAa,EAAE,KAAK,CAAC,aAAa;QAClC,kBAAkB,EAAE,KAAK,CAAC,kBAAkB;KAC7C,CAAC,CAAC;IACH,OAAO,EAAE,eAAe,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,GAAG,SAAS,EAAE,CAAC;AAC3D,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"spawn.d.ts","sourceRoot":"","sources":["../../../src/cli/interactive/spawn.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAE5C,MAAM,MAAM,iBAAiB,GAAG;IAC9B,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,0EAA0E;AAC1E,MAAM,MAAM,kBAAkB,GAAG,CAAC,MAAM,EAAE,iBAAiB,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;AAEhF,eAAO,MAAM,qBAAqB,EAAE,kBAShC,CAAC;AAEL,kFAAkF;AAClF,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,OAAO,GAAG,IAAI,GAAG,MAAM,CAIrF"}
1
+ {"version":3,"file":"spawn.d.ts","sourceRoot":"","sources":["../../../src/cli/interactive/spawn.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAE5C,MAAM,MAAM,iBAAiB,GAAG;IAC9B,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,0EAA0E;AAC1E,MAAM,MAAM,kBAAkB,GAAG,CAAC,MAAM,EAAE,iBAAiB,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;AAEhF,eAAO,MAAM,qBAAqB,EAAE,kBAanC,CAAC;AAEF,kFAAkF;AAClF,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,OAAO,GAAG,IAAI,GAAG,MAAM,CAIrF"}
@@ -3,18 +3,24 @@
3
3
  * observation, the agent's own exit status.
4
4
  * Implements PRD §12A.9 and C-CLI-25.
5
5
  */
6
- import { spawn } from "node:child_process";
6
+ import { execFile, spawn } from "node:child_process";
7
7
  import { constants } from "node:os";
8
8
  import { causeDetails, elwoodError, errnoCode } from "../../core/errors.js";
9
- export const spawnInteractiveAgent = (launch) => new Promise((resolve, reject) => {
10
- const child = spawn(launch.command, launch.args, {
11
- cwd: launch.cwd,
12
- env: process.env,
13
- stdio: "inherit",
9
+ import { probeShellCommand, userShell } from "../../runtime/shell.js";
10
+ export const spawnInteractiveAgent = async (launch) => {
11
+ const path = await loginShellPath().catch((error) => {
12
+ throw spawnFailure(launch, error);
14
13
  });
15
- child.once("error", (error) => reject(spawnFailure(launch, error)));
16
- child.once("exit", (code, signal) => resolve(exitStatus(code, signal)));
17
- });
14
+ return new Promise((resolve, reject) => {
15
+ const child = spawn(launch.command, launch.args, {
16
+ cwd: launch.cwd,
17
+ env: { ...process.env, PATH: path },
18
+ stdio: "inherit",
19
+ });
20
+ child.once("error", (error) => reject(spawnFailure(launch, error)));
21
+ child.once("exit", (code, signal) => resolve(exitStatus(code, signal)));
22
+ });
23
+ };
18
24
  /** A signal-terminated agent maps to the shell convention 128 + signal number. */
19
25
  export function exitStatus(code, signal) {
20
26
  if (code !== null)
@@ -29,4 +35,19 @@ function spawnFailure(launch, error) {
29
35
  ? `The ${launch.command} command is not available on PATH.`
30
36
  : `Could not start ${launch.command} in the foreground.`, causeDetails(error));
31
37
  }
38
+ /** Match detection PATH without inserting a shell between terminal signals and the agent. */
39
+ function loginShellPath() {
40
+ return new Promise((resolve, reject) => {
41
+ // NUL framing separates the exported PATH from incidental shell-startup stdout.
42
+ execFile(userShell(), probeShellCommand("printf '\\0%s\\0' \"$PATH\""), { timeout: 10_000 }, (error, stdout) => {
43
+ if (error)
44
+ reject(error);
45
+ else {
46
+ const parts = stdout.split("\u0000");
47
+ // Early-exiting shell startup can succeed without running the probe.
48
+ resolve(parts.length >= 3 ? parts.at(-2) : process.env["PATH"]);
49
+ }
50
+ });
51
+ });
52
+ }
32
53
  //# sourceMappingURL=spawn.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"spawn.js","sourceRoot":"","sources":["../../../src/cli/interactive/spawn.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAa5E,MAAM,CAAC,MAAM,qBAAqB,GAAuB,CAAC,MAAM,EAAE,EAAE,CAClE,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;IAC9B,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,EAAE;QAC/C,GAAG,EAAE,MAAM,CAAC,GAAG;QACf,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,KAAK,EAAE,SAAS;KACjB,CAAC,CAAC;IACH,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IACpE,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;AAC1E,CAAC,CAAC,CAAC;AAEL,kFAAkF;AAClF,MAAM,UAAU,UAAU,CAAC,IAAmB,EAAE,MAA6B;IAC3E,IAAI,IAAI,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAC/B,MAAM,MAAM,GAAG,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACvE,OAAO,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,MAAM,CAAC;AACjD,CAAC;AAED,SAAS,YAAY,CAAC,MAAyB,EAAE,KAAc;IAC7D,MAAM,OAAO,GAAG,SAAS,CAAC,KAAK,CAAC,KAAK,QAAQ,CAAC;IAC9C,MAAM,IAAI,GAAG,GAAG,MAAM,CAAC,KAAK,IAAI,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,cAAc,EAAW,CAAC;IAClF,OAAO,WAAW,CAChB,IAAI,EACJ,OAAO;QACL,CAAC,CAAC,OAAO,MAAM,CAAC,OAAO,oCAAoC;QAC3D,CAAC,CAAC,mBAAmB,MAAM,CAAC,OAAO,qBAAqB,EAC1D,YAAY,CAAC,KAAK,CAAC,CACpB,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"spawn.js","sourceRoot":"","sources":["../../../src/cli/interactive/spawn.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cli/models/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAgB,KAAK,iBAAiB,EAAE,KAAK,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAMnG,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAIvD,MAAM,MAAM,eAAe,GAAG;IAC5B,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC;IACjC,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC;CAClC,CAAC;AACF,MAAM,MAAM,yBAAyB,GAAG;IACtC,QAAQ,CAAC,OAAO,EAAE,eAAe,CAAC;IAClC,QAAQ,CAAC,KAAK,CAAC,EAAE,iBAAiB,CAAC;CACpC,CAAC;AAEF,wBAAsB,aAAa,CACjC,OAAO,EAAE,mBAAmB,EAC5B,OAAO,EAAE,gBAAgB,EACzB,EAAE,EAAE,eAAe,EACnB,YAAY,EAAE,yBAAyB,GACtC,OAAO,CAAC,MAAM,CAAC,CA6CjB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cli/models/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAgB,KAAK,iBAAiB,EAAE,KAAK,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAMnG,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAIvD,MAAM,MAAM,eAAe,GAAG;IAC5B,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC;IACjC,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC;CAClC,CAAC;AACF,MAAM,MAAM,yBAAyB,GAAG;IACtC,QAAQ,CAAC,OAAO,EAAE,eAAe,CAAC;IAClC,QAAQ,CAAC,KAAK,CAAC,EAAE,iBAAiB,CAAC;CACpC,CAAC;AAEF,wBAAsB,aAAa,CACjC,OAAO,EAAE,mBAAmB,EAC5B,OAAO,EAAE,gBAAgB,EACzB,EAAE,EAAE,eAAe,EACnB,YAAY,EAAE,yBAAyB,GACtC,OAAO,CAAC,MAAM,CAAC,CAkDjB"}
@@ -29,9 +29,12 @@ export async function executeModels(request, session, io, dependencies) {
29
29
  lifecycle.beginLaunch();
30
30
  const started = await lifecycle.race(session.start());
31
31
  if (started.completed) {
32
- const listed = await lifecycle.race(started.value.listModels());
33
- if (listed.completed)
34
- models = listed.value;
32
+ const ready = await lifecycle.race(started.value.waitForStatus((status) => status === "ready"));
33
+ if (ready.completed) {
34
+ const listed = await lifecycle.race(started.value.listModels());
35
+ if (listed.completed)
36
+ models = listed.value;
37
+ }
35
38
  }
36
39
  }
37
40
  catch (error) {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cli/models/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cli/models/index.ts"],"names":[],"mappings":"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"}
@@ -27,4 +27,6 @@ export declare function explicitAdapterOptions(parsed: ParsedRunCommand, env: En
27
27
  readonly claudeOptionsExplicit: boolean;
28
28
  readonly codexOptionsExplicit: boolean;
29
29
  };
30
+ /** Resolve the state path without selecting or validating any agent (C-CLI-24). */
31
+ export declare function resolveStateSetting(parsed: ParsedRunCommand, env: EnvSettings, config: CliConfig, configPath: string, context: LayerContext): SourcedValue<string>;
30
32
  //# sourceMappingURL=layers.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"layers.d.ts","sourceRoot":"","sources":["../../../src/cli/request/layers.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/D,OAAO,EAAsB,KAAK,YAAY,EAAW,MAAM,cAAc,CAAC;AAC9E,OAAO,EAAE,KAAK,WAAW,EAA8B,MAAM,aAAa,CAAC;AAE3E,MAAM,MAAM,eAAe,GAAG;IAC5B,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC;IACvC,oGAAoG;IACpG,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC;IACxC,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC;IACvC,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC;IACrC,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC;IACtC,oEAAoE;IACpE,QAAQ,CAAC,GAAG,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC;CACpC,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC;IAC3D,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF,wBAAgB,eAAe,CAC7B,MAAM,EAAE,gBAAgB,EACxB,GAAG,EAAE,WAAW,EAChB,MAAM,EAAE,SAAS,EACjB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,YAAY,EACrB,QAAQ,EAAE,OAAO,GAChB,eAAe,CA4CjB;AAYD,wFAAwF;AACxF,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,gBAAgB,EACxB,GAAG,EAAE,WAAW,GACf;IAAE,QAAQ,CAAC,qBAAqB,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,oBAAoB,EAAE,OAAO,CAAA;CAAE,CAUrF"}
1
+ {"version":3,"file":"layers.d.ts","sourceRoot":"","sources":["../../../src/cli/request/layers.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/D,OAAO,EAAsB,KAAK,YAAY,EAAW,MAAM,cAAc,CAAC;AAC9E,OAAO,EAAE,KAAK,WAAW,EAA8B,MAAM,aAAa,CAAC;AAE3E,MAAM,MAAM,eAAe,GAAG;IAC5B,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC;IACvC,oGAAoG;IACpG,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC;IACxC,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC;IACvC,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC;IACrC,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC;IACtC,oEAAoE;IACpE,QAAQ,CAAC,GAAG,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC;CACpC,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC;IAC3D,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF,wBAAgB,eAAe,CAC7B,MAAM,EAAE,gBAAgB,EACxB,GAAG,EAAE,WAAW,EAChB,MAAM,EAAE,SAAS,EACjB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,YAAY,EACrB,QAAQ,EAAE,OAAO,GAChB,eAAe,CAgCjB;AAYD,wFAAwF;AACxF,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,gBAAgB,EACxB,GAAG,EAAE,WAAW,GACf;IAAE,QAAQ,CAAC,qBAAqB,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,oBAAoB,EAAE,OAAO,CAAA;CAAE,CAUrF;AAED,mFAAmF;AACnF,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,gBAAgB,EACxB,GAAG,EAAE,WAAW,EAChB,MAAM,EAAE,SAAS,EACjB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,YAAY,GACpB,YAAY,CAAC,MAAM,CAAC,CActB"}
@@ -10,14 +10,10 @@ import { nonBlank, optionalNonBlank } from "./values.js";
10
10
  export function layeredSettings(parsed, env, config, configPath, context, resuming) {
11
11
  const flags = parsed.flags;
12
12
  const key = (name) => configKey(configPath, name);
13
- const stateLocation = resolveStateLocation(context.env, context.homeDir);
14
- const state = layered(sourced(flags.stateDir, "--state-dir"), sourced(env.stateDir, "ELWOOD_STATE_DIR"), sourced(config.stateDir, key("stateDir")), sourced(stateLocation.path, stateLocation.source));
15
13
  const persona = layered(sourced(flags.persona, "--persona"), sourced(env.persona, "ELWOOD_PERSONA"), sourced(resuming ? undefined : config.persona, key("persona")), sourced(undefined, "unset"));
16
14
  return {
17
15
  timeout: layered(sourced(flags.timeout, "--timeout"), sourced(env.timeout, "ELWOOD_TIMEOUT"), sourced(config.timeout, key("timeout")), sourced(undefined, "built-in")),
18
- stateDir: sourced(state.source === stateLocation.source
19
- ? state.value
20
- : resolve(context.invocationCwd, nonBlank(state.value, "stateDir")), state.source),
16
+ stateDir: resolveStateSetting(parsed, env, config, configPath, context),
21
17
  persona: sourced(optionalNonBlank(persona.value, "persona"), persona.source),
22
18
  model: layered(sourced(flags.model, "--model"), sourced(env.model, "ELWOOD_MODEL"), sourced(undefined, "unset"), sourced(undefined, "unset")),
23
19
  effort: layered(sourced(flags.reasoningEffort, "--reasoning-effort"), sourced(env.reasoningEffort, "ELWOOD_REASONING_EFFORT"), sourced(undefined, "unset"), sourced(undefined, "unset")),
@@ -41,4 +37,12 @@ export function explicitAdapterOptions(parsed, env) {
41
37
  env.codexApprovalPolicy !== undefined,
42
38
  };
43
39
  }
40
+ /** Resolve the state path without selecting or validating any agent (C-CLI-24). */
41
+ export function resolveStateSetting(parsed, env, config, configPath, context) {
42
+ const stateLocation = resolveStateLocation(context.env, context.homeDir);
43
+ const state = layered(sourced(parsed.flags.stateDir, "--state-dir"), sourced(env.stateDir, "ELWOOD_STATE_DIR"), sourced(config.stateDir, configKey(configPath, "stateDir")), sourced(stateLocation.path, stateLocation.source));
44
+ return sourced(state.source === stateLocation.source
45
+ ? state.value
46
+ : resolve(context.invocationCwd, nonBlank(state.value, "stateDir")), state.source);
47
+ }
44
48
  //# sourceMappingURL=layers.js.map