@scotthuang/agent-knock-knock 0.16.0 → 0.16.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.
- package/CHANGELOG.md +10 -0
- package/connectors/deepseek-harness/README.md +25 -11
- package/connectors/pi/README.md +22 -11
- package/dist/src/claude-managed-send-route.d.ts +2 -0
- package/dist/src/claude-managed-send-route.js +14 -0
- package/dist/src/claude-managed-send-route.js.map +1 -1
- package/dist/src/claude-terminal-agent-observation.d.ts +2 -0
- package/dist/src/claude-terminal-agent-observation.js +18 -1
- package/dist/src/claude-terminal-agent-observation.js.map +1 -1
- package/dist/src/claude-terminal-registry-observation.d.ts +12 -0
- package/dist/src/claude-terminal-registry-observation.js +32 -0
- package/dist/src/claude-terminal-registry-observation.js.map +1 -1
- package/dist/src/claude-user-explicit-input-proof.d.ts +9 -0
- package/dist/src/claude-user-explicit-input-proof.js +90 -0
- package/dist/src/claude-user-explicit-input-proof.js.map +1 -0
- package/dist/src/cli-core.js +1 -0
- package/dist/src/cli-core.js.map +1 -1
- package/dist/src/conversation-list.d.ts +3 -3
- package/dist/src/conversation-list.js +22 -9
- package/dist/src/conversation-list.js.map +1 -1
- package/dist/src/conversation-usage-guidance.d.ts +4 -0
- package/dist/src/conversation-usage-guidance.js +240 -0
- package/dist/src/conversation-usage-guidance.js.map +1 -0
- package/dist/src/semantic-tool-descriptions.js +17 -11
- package/dist/src/semantic-tool-descriptions.js.map +1 -1
- package/dist/src/semantic-tool-list-budget.js +2 -1
- package/dist/src/semantic-tool-list-budget.js.map +1 -1
- package/dist/src/semantic-tool-list-projection.d.ts +2 -2
- package/dist/src/semantic-tool-list-projection.js +10 -8
- package/dist/src/semantic-tool-list-projection.js.map +1 -1
- package/dist/src/semantic-tool-private-authority.js +13 -1
- package/dist/src/semantic-tool-private-authority.js.map +1 -1
- package/dist/src/semantic-tool-schemas.js +10 -6
- package/dist/src/semantic-tool-schemas.js.map +1 -1
- package/dist/src/terminal-action-contracts.js +28 -15
- package/dist/src/terminal-action-contracts.js.map +1 -1
- package/dist/src/terminal-agent-bridge.js +8 -11
- package/dist/src/terminal-agent-bridge.js.map +1 -1
- package/dist/src/terminal-composer-classifier.d.ts +1 -0
- package/dist/src/terminal-composer-classifier.js +7 -32
- package/dist/src/terminal-composer-classifier.js.map +1 -1
- package/dist/src/terminal-dispatch-execution.d.ts +4 -1
- package/dist/src/terminal-dispatch-execution.js +3 -2
- package/dist/src/terminal-dispatch-execution.js.map +1 -1
- package/dist/src/terminal-list-cli-adapter.d.ts +6 -0
- package/dist/src/terminal-list-cli-adapter.js +34 -17
- package/dist/src/terminal-list-cli-adapter.js.map +1 -1
- package/dist/src/terminal-list-facts.d.ts +5 -0
- package/dist/src/terminal-list-facts.js.map +1 -1
- package/dist/src/terminal-list-inventory.d.ts +1 -0
- package/dist/src/terminal-list-inventory.js +1 -0
- package/dist/src/terminal-list-inventory.js.map +1 -1
- package/dist/src/terminal-list-native-identity-recheck.d.ts +35 -0
- package/dist/src/terminal-list-native-identity-recheck.js +76 -0
- package/dist/src/terminal-list-native-identity-recheck.js.map +1 -0
- package/dist/src/terminal-monitor-decision-policy.d.ts +1 -1
- package/dist/src/terminal-permission-control-list-projection.d.ts +1 -1
- package/dist/src/terminal-runtime-cli-adapter.d.ts +1 -0
- package/dist/src/terminal-runtime-cli-adapter.js +4 -1
- package/dist/src/terminal-runtime-cli-adapter.js.map +1 -1
- package/dist/src/terminal-user-explicit-send-clear.d.ts +6 -12
- package/dist/src/terminal-user-explicit-send-clear.js +43 -64
- package/dist/src/terminal-user-explicit-send-clear.js.map +1 -1
- package/dist/src/terminal-user-explicit-send-policy.js +1 -0
- package/dist/src/terminal-user-explicit-send-policy.js.map +1 -1
- package/docs/bidirectional-agent-protocol.md +1 -1
- package/docs/claude-2.1.285-compatibility.md +72 -10
- package/docs/claude-cli-direct.md +57 -1
- package/docs/list-output.md +97 -1
- package/docs/operator-guide.md +81 -9
- package/docs/quickstart-herdr.md +1 -1
- package/docs/quickstart-tmux.md +5 -3
- package/docs/testing.md +1 -4
- package/package.json +1 -1
- package/templates/openclaw-skills/agent-knock-knock/SKILL.md +19 -7
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,15 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.16.1 / Pi 0.1.0-poc.9 / DeepSeek Harness 0.1.0-rc.12 — 2026-10-27
|
|
4
|
+
|
|
5
|
+
- Explain what each List entry can do, why input or monitoring is unavailable, and the applicable next step. Derive bounded usage guidance from current action offers, capabilities, activity and blockers; preserve it in compact and shortened rows without changing the overall Host response budget.
|
|
6
|
+
- Recheck unresolved Claude native identities once per List scan with a fresh reader snapshot. Explain verified foreground-window evidence separately from background workers and independently offered physical terminal input. Matching project directories or registry entries do not establish native task ownership or authorize input.
|
|
7
|
+
- Preserve an executable `terminal_user_explicit` Send on an explicitly selected terminal even when native identity is unresolved. Keep private authority, process identity and Store fences internal; native acceptance and completion remain unproven on this route. Ordinary managed failures never silently downgrade, and uncertain input is not replayed.
|
|
8
|
+
- Refuse Claude physical Send before input when a visible draft, occupied native stash, active foreground turn or unrecognized footer makes the Composer unsafe. Recognize the Claude 2.1.295 footer and inline `new task? /clear … · › stashed` notification. A shell count or empty prompt alone does not prove foreground completion.
|
|
9
|
+
- Remove the destructive sentinel/stash/erase preparation. After a fresh empty-Composer check, use at most one non-destructive `Ctrl+S` restore probe; stop without task text or Enter if content appears or the probe is uncertain, leaving the restored draft for manual handling. Do not clean up after task text or Enter. This is not an atomic keyboard lock or a guarantee against simultaneous human input or an unprocessed restore key; see the Claude compatibility notes.
|
|
10
|
+
- Advance the action contract to **35**; retain compact List projection **v4**, Store writer protocol **11**, public request parameters and ordinary managed Send behavior. Update recovery guidance and synchronized Skills.
|
|
11
|
+
- Release Pi **0.1.0-poc.9** and DeepSeek Harness **0.1.0-rc.12** with exact core **0.16.1** dependencies. Core remains on `latest`; both connectors remain on `next`, with unchanged Host compatibility requirements.
|
|
12
|
+
|
|
3
13
|
## 0.16.0 / Pi 0.1.0-poc.8 / DeepSeek Harness 0.1.0-rc.11 — 2026-10-26
|
|
4
14
|
|
|
5
15
|
- Separate native-thread Store authority recovery (`transfer_store_authority`) from managed Session binding reconciliation (`reconcile_binding`), and expose the applicable recovery action consistently on native and terminal rows. Keep the runtime ledger globally shared so different Hosts cannot independently claim the same native thread; record absolute Store identity, Host identity, owner PID, process start identity and instance nonce.
|
|
@@ -13,13 +13,14 @@ tests, lockfile, bundle manifest, and connector-specific release tag.
|
|
|
13
13
|
|
|
14
14
|
## Compatibility
|
|
15
15
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
16
|
+
Connector **0.1.0-rc.12** pins AKK **0.16.1** in its package and lockfile,
|
|
17
|
+
adding state-derived List guidance and a bounded Claude identity recheck. It
|
|
18
|
+
exposes that runtime's 27 semantic tools, including Codex CLI backend and
|
|
19
|
+
Desktop operations when the selected conversation advertises them. `list`
|
|
20
|
+
returns current discoverable conversations; `watches` separately returns recent
|
|
20
21
|
monitoring records (24 hours by default), plus active or unresolved records.
|
|
21
|
-
A newer root checkout does not silently replace this pinned dependency.
|
|
22
|
-
|
|
22
|
+
A newer root checkout does not silently replace this pinned dependency. This
|
|
23
|
+
prerelease uses the `next` dist-tag.
|
|
23
24
|
|
|
24
25
|
The development baseline is DeepSeek Harness **0.2.1-rc.2** with Cordis
|
|
25
26
|
**4.0.5**. This is a release candidate, not a stable release; as checked on
|
|
@@ -77,7 +78,7 @@ can select an older `latest` build.
|
|
|
77
78
|
DSH `0.2.1-rc.2` requires connector `0.1.0-rc.6` or a later release that
|
|
78
79
|
explicitly supports that Host. Connector `0.1.0-rc.5` does not support this RC.
|
|
79
80
|
Use `next`, or pin
|
|
80
|
-
`@scotthuang/agent-knock-knock-deepseek-harness@0.1.0-rc.
|
|
81
|
+
`@scotthuang/agent-knock-knock-deepseek-harness@0.1.0-rc.12`.
|
|
81
82
|
|
|
82
83
|
```sh
|
|
83
84
|
dsh plugin --profile web add @scotthuang/agent-knock-knock-deepseek-harness@next
|
|
@@ -366,7 +367,7 @@ exact reviewed version:
|
|
|
366
367
|
|
|
367
368
|
```sh
|
|
368
369
|
dsh plugin --profile web add @scotthuang/agent-knock-knock-deepseek-harness@next
|
|
369
|
-
dsh plugin --profile web add @scotthuang/agent-knock-knock-deepseek-harness@0.1.0-rc.
|
|
370
|
+
dsh plugin --profile web add @scotthuang/agent-knock-knock-deepseek-harness@0.1.0-rc.12
|
|
370
371
|
```
|
|
371
372
|
|
|
372
373
|
Restart the Web Host after either operation. The connector pins the exact AKK
|
|
@@ -394,7 +395,7 @@ dsh plugin --profile web add "file:$(pwd -P)/connectors/deepseek-harness"
|
|
|
394
395
|
```
|
|
395
396
|
|
|
396
397
|
Restart `dsh web` after installation. The child package currently installs and
|
|
397
|
-
tests against its pinned AKK runtime `0.16.
|
|
398
|
+
tests against its pinned AKK runtime `0.16.1`; building the current repository
|
|
398
399
|
root does not silently replace that dependency. Before core publication, test
|
|
399
400
|
the candidate core tarball in isolation as described in the
|
|
400
401
|
[coordinated release policy](../../CONTRIBUTING.md#coordinated-package-releases);
|
|
@@ -405,6 +406,19 @@ compatibility review rather than an implicit local link.
|
|
|
405
406
|
|
|
406
407
|
## Tests and release status
|
|
407
408
|
|
|
409
|
+
Connector **`0.1.0-rc.12`** pins AKK **`0.16.1`** and its synchronized Skill.
|
|
410
|
+
List adds bounded guidance derived from each conversation's current state and
|
|
411
|
+
a single read-only recheck for unresolved Claude identity. Claude physical
|
|
412
|
+
fallback requires an empty recognized Composer, no visible stash and no active
|
|
413
|
+
or unproven foreground turn. A single empty-Composer restore probe stops if it
|
|
414
|
+
reveals content; no sentinel or draft-deletion transaction runs. Shared
|
|
415
|
+
notification/footer stash layouts are covered by fixtures, not a new live DSH
|
|
416
|
+
acceptance claim. Managed Send, Codex routing, Store writer protocol **11** and
|
|
417
|
+
List projection **v4** remain unchanged; action contract advances to **35**.
|
|
418
|
+
The DSH Host/peer policy, independent Store and callback ownership remain
|
|
419
|
+
unchanged. This dependency refresh does not repeat the historical live-model
|
|
420
|
+
or external-channel delivery acceptance below. It remains on npm `next`.
|
|
421
|
+
|
|
408
422
|
Connector **`0.1.0-rc.11`** pins exact AKK **`0.16.0`** and bundles
|
|
409
423
|
its synchronized Skill. Core separates managed binding reconciliation from
|
|
410
424
|
native Store authority transfer, records Store owner process identities, and
|
|
@@ -467,7 +481,7 @@ npm run pack:check
|
|
|
467
481
|
|
|
468
482
|
These commands typecheck the connector, run its fast wiring/profile/IPC/schema
|
|
469
483
|
tests, and inspect the package tarball. They do not publish anything. The
|
|
470
|
-
`0.1.0-rc.
|
|
484
|
+
`0.1.0-rc.12` lockfile uses the published DeepSeek Harness `0.2.1-rc.2`
|
|
471
485
|
SDK packages and Cordis `4.0.5`. Its real ToolRuntime regression checks
|
|
472
486
|
canonical result rendering, exact Agent ownership, typed questionnaire payloads,
|
|
473
487
|
and rejection before dispatch when targets are ambiguous or stale. This is
|
|
@@ -512,7 +526,7 @@ gate to both connectors. Their package versions are validated independently.
|
|
|
512
526
|
Publishing additionally requires both explicit flags:
|
|
513
527
|
|
|
514
528
|
```sh
|
|
515
|
-
npm run release:check -- --publish --confirm-version 0.1.0-rc.
|
|
529
|
+
npm run release:check -- --publish --confirm-version 0.1.0-rc.12
|
|
516
530
|
```
|
|
517
531
|
|
|
518
532
|
Prereleases use npm tag `next`; stable versions use `latest`. Repository tags
|
package/connectors/pi/README.md
CHANGED
|
@@ -12,13 +12,13 @@ socket.
|
|
|
12
12
|
|
|
13
13
|
## Status and compatibility
|
|
14
14
|
|
|
15
|
-
|
|
16
|
-
Desktop,
|
|
15
|
+
Connector **0.1.0-poc.9** pins AKK **0.16.1**, including CLI direct
|
|
16
|
+
connections, Codex Desktop, Recovery, state-derived List guidance and a bounded
|
|
17
|
+
Claude identity recheck. Its generated Skill and registered tools are verified
|
|
17
18
|
against that exact core package at startup. See the [root compatibility
|
|
18
19
|
summary](../../README.md#compatibility) for the coding-agent versions and
|
|
19
20
|
operation-specific limits. Updating AKK core elsewhere does not update this
|
|
20
|
-
connector's pinned dependency.
|
|
21
|
-
and uses the `next` dist-tag.
|
|
21
|
+
connector's pinned dependency. This prerelease uses the `next` dist-tag.
|
|
22
22
|
|
|
23
23
|
This is a POC prerelease distributed on npm as
|
|
24
24
|
`@scotthuang/agent-knock-knock-pi`. Prereleases use the `next` dist-tag;
|
|
@@ -34,8 +34,7 @@ The current compatibility contract is intentionally exact:
|
|
|
34
34
|
supported older runtime, installed from the official
|
|
35
35
|
`@earendil-works/pi-coding-agent` package.
|
|
36
36
|
- Node.js `22.19.0` or newer.
|
|
37
|
-
- AKK `0.16.
|
|
38
|
-
`npm ci` in `connectors/pi` installs that exact AKK runtime; a different
|
|
37
|
+
- AKK `0.16.1`, pinned by this connector's package and lockfile. A different
|
|
39
38
|
version at the repository root is not substituted automatically. Before core
|
|
40
39
|
publication, test its candidate tarball in isolation under the
|
|
41
40
|
[coordinated release policy](../../CONTRIBUTING.md#coordinated-package-releases).
|
|
@@ -87,8 +86,8 @@ pi list
|
|
|
87
86
|
```
|
|
88
87
|
|
|
89
88
|
Using `next` follows compatible Pi connector prereleases. To pin this exact
|
|
90
|
-
|
|
91
|
-
`npm:@scotthuang/agent-knock-knock-pi@0.1.0-poc.
|
|
89
|
+
core `0.16.1` connector, install
|
|
90
|
+
`npm:@scotthuang/agent-knock-knock-pi@0.1.0-poc.9`; exact versions are pinned
|
|
92
91
|
and are not advanced by Pi's bulk update command.
|
|
93
92
|
|
|
94
93
|
### 4. Start Pi
|
|
@@ -453,7 +452,7 @@ Harness independently; it does not require their package versions to match.
|
|
|
453
452
|
Publishing Pi additionally requires explicit version confirmation:
|
|
454
453
|
|
|
455
454
|
```sh
|
|
456
|
-
npm run release:check -- --publish --confirm-version 0.1.0-poc.
|
|
455
|
+
npm run release:check -- --publish --confirm-version 0.1.0-poc.9
|
|
457
456
|
```
|
|
458
457
|
|
|
459
458
|
Prereleases use npm tag `next`; stable versions use `latest`. Tags and GitHub
|
|
@@ -503,6 +502,18 @@ a presentation change, not evidence that a candidate is disconnected, and it
|
|
|
503
502
|
does not change Send routing or callback ownership. Sole empty conversations
|
|
504
503
|
and exact frontend associations remain visible.
|
|
505
504
|
|
|
505
|
+
Connector **`0.1.0-poc.9`** pins AKK **`0.16.1`** and its synchronized Skill.
|
|
506
|
+
List adds bounded guidance derived from each conversation's current state and
|
|
507
|
+
a single read-only recheck for unresolved Claude identity. Claude physical
|
|
508
|
+
fallback requires an empty recognized Composer, no visible stash and no active
|
|
509
|
+
or unproven foreground turn. A single empty-Composer restore probe stops if it
|
|
510
|
+
reveals content; no sentinel or draft-deletion transaction runs. Shared
|
|
511
|
+
notification/footer stash layouts are covered by fixtures, not a new live Pi
|
|
512
|
+
acceptance claim. Managed Send, Codex routing, Store writer protocol **11** and
|
|
513
|
+
List projection **v4** remain unchanged; action contract advances to **35**.
|
|
514
|
+
Pi Host compatibility and callback ownership are unchanged. No new live-model
|
|
515
|
+
or external-channel delivery result is claimed; this connector remains on `next`.
|
|
516
|
+
|
|
506
517
|
Connector **`0.1.0-poc.8`** pins exact AKK **`0.16.0`** and bundles
|
|
507
518
|
its synchronized Skill. Core separates managed binding reconciliation from
|
|
508
519
|
native Store authority transfer, records Store owner process identities, and
|
|
@@ -536,8 +547,8 @@ or external-channel delivery run.
|
|
|
536
547
|
|
|
537
548
|
These are POC acceptance results, not a promise of compatibility with every
|
|
538
549
|
future Pi, Codex, Claude Code, tmux, or Herdr release. Version
|
|
539
|
-
`0.1.0-poc.
|
|
540
|
-
its publication is coordinated with core `0.16.
|
|
550
|
+
`0.1.0-poc.9` is an npm prerelease distributed through the `next` dist-tag;
|
|
551
|
+
its publication is coordinated with core `0.16.1` and the DSH connector.
|
|
541
552
|
ClawHub publication remains a separate channel.
|
|
542
553
|
|
|
543
554
|
## Deliberate POC limits
|
|
@@ -10,6 +10,8 @@ export type ClaudeManagedSendRoute = {
|
|
|
10
10
|
};
|
|
11
11
|
/** Preserve physical proof while applying Store eligibility from that scan's public action projection. */
|
|
12
12
|
export declare function withClaudeManagedSendAuthority(raw: Row, projected: Row | undefined, writable: boolean): Row;
|
|
13
|
+
/** A current physical offer already includes process, input-owner and questionnaire checks. */
|
|
14
|
+
export declare function claudeUserExplicitTerminalSendOffer(row: Row): Row | undefined;
|
|
13
15
|
/** The physical Send token remains required; managed execution must never fall back to an unmanaged send. */
|
|
14
16
|
export declare function claudeManagedTerminalSendBlockReason(row: Row): string | undefined;
|
|
15
17
|
/** Absence permits native Send. A discovered physical counterpart with conflicting identity or state does not. */
|
|
@@ -18,6 +18,20 @@ function controlledClaudeTerminal(row) {
|
|
|
18
18
|
&& parseTerminalConversationId(String(row.id))?.agent === "claude"
|
|
19
19
|
&& Array.isArray(control?.capabilities) && control.capabilities.includes("send_keys");
|
|
20
20
|
}
|
|
21
|
+
/** A current physical offer already includes process, input-owner and questionnaire checks. */
|
|
22
|
+
export function claudeUserExplicitTerminalSendOffer(row) {
|
|
23
|
+
const approval = recordValue(row.approval_state);
|
|
24
|
+
const authority = recordValue(row.native_store_authority);
|
|
25
|
+
if (!controlledClaudeTerminal(row) || approval?.scanned !== true || approval.blocked !== false
|
|
26
|
+
|| recordValue(row.physical_send_readiness)?.ready === false
|
|
27
|
+
|| ["conflict", "transferring"].includes(String(authority?.state)))
|
|
28
|
+
return undefined;
|
|
29
|
+
const send = recordValue(recordValue(row.available_actions)?.send);
|
|
30
|
+
const args = recordValue(send?.arguments);
|
|
31
|
+
return send?.tool === "agent_knock_knock_send" && send.scope === "terminal_user_explicit"
|
|
32
|
+
&& (args?.selector ?? args?.terminal_id) === row.id && nonBlankString(args?.expected_terminal_token)
|
|
33
|
+
? send : undefined;
|
|
34
|
+
}
|
|
21
35
|
/** The physical Send token remains required; managed execution must never fall back to an unmanaged send. */
|
|
22
36
|
export function claudeManagedTerminalSendBlockReason(row) {
|
|
23
37
|
if (!controlledClaudeTerminal(row))
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claude-managed-send-route.js","sourceRoot":"","sources":["../../src/claude-managed-send-route.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,+BAA+B,EAAE,MAAM,6BAA6B,CAAC;AAC9E,OAAO,EAAE,mBAAmB,EAAE,MAAM,2CAA2C,CAAC;AAChF,OAAO,EAAE,2BAA2B,EAAE,MAAM,6BAA6B,CAAC;AAC1E,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAMhE,0GAA0G;AAC1G,MAAM,UAAU,8BAA8B,CAAC,GAAQ,EAAE,SAA0B,EAAE,QAAiB;IACpG,MAAM,iBAAiB,GAAG,WAAW,CAAC,SAAS,EAAE,sBAAsB,CAAC,EAAE,mBAAmB,KAAK,IAAI,CAAC;IACvG,MAAM,OAAO,GAAG,CAAC,SAAS,IAAI,CAAC,iBAAiB,IAAI,CAAC,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;WACxH,OAAO,CAAC,SAAS,CAAC,mBAAmB,IAAI,SAAS,CAAC,sBAAsB,CAAC,CAAC,CAAC;IACjF,MAAM,SAAS,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,wBAAwB,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,wBAAwB,CAAC;SACjI,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,GAAG,CAAC,KAAK,SAAS,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,SAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACrF,OAAO,EAAE,GAAG,GAAG,EAAE,GAAG,SAAS,EAAE,iBAAiB,EAAE,SAAS,EAAE,iBAAiB,IAAI,EAAE;QAClF,GAAG,CAAC,GAAG,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,6BAA6B,EAAE,GAAG,CAAC,6BAA6B,KAAK,IAAI,IAAI,QAAQ,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;AAC/I,CAAC;AAED,SAAS,wBAAwB,CAAC,GAAQ;IACxC,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAClD,OAAO,GAAG,CAAC,KAAK,KAAK,QAAQ,IAAI,GAAG,CAAC,aAAa,KAAK,QAAQ;WAC1D,2BAA2B,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,KAAK,QAAQ;WAC/D,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,YAAY,CAAC,IAAI,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;AAC1F,CAAC;AAED,6GAA6G;AAC7G,MAAM,UAAU,oCAAoC,CAAC,GAAQ;IAC3D,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC;QAAE,OAAO,8BAA8B,CAAC;IAC1E,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;IACpE,IAAI,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,CAAC,qBAAqB,CAAC,KAAK,UAAU;WAC7D,CAAC,cAAc,CAAC,GAAG,CAAC,uBAAuB,CAAC;QAAE,OAAO,8BAA8B,CAAC;IACzF,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IACjD,IAAI,GAAG,CAAC,cAAc,KAAK,MAAM,IAAI,QAAQ,EAAE,OAAO,KAAK,IAAI,IAAI,QAAQ,CAAC,OAAO,KAAK,KAAK;QAAE,OAAO,0BAA0B,CAAC;IACjI,IAAI,GAAG,CAAC,6BAA6B,KAAK,IAAI;QAAE,OAAO,mCAAmC,CAAC;IAC3F,MAAM,IAAI,GAAG,WAAW,CAAC,WAAW,CAAC,GAAG,CAAC,iBAAiB,CAAC,EAAE,IAAI,CAAC,CAAC;IACnE,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAC1C,IAAI,IAAI,EAAE,IAAI,KAAK,wBAAwB,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,uBAAuB,CAAC;QAAE,OAAO,2BAA2B,CAAC;IAClI,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,kHAAkH;AAClH,MAAM,UAAU,sBAAsB,CAAC,QAAgB,EAAE,SAAyB;IAChF,MAAM,MAAM,GAAG,+BAA+B,CAAC,QAAQ,CAAC,CAAC;IACzD,MAAM,UAAU,GAAG,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,MAAM,CAAC,GAAG,IAAI,wBAAwB,CAAC,GAAG,CAAC,CAAC,CAAC;IACpG,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;IACvD,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,6BAA6B,EAAE,CAAC;IAC/F,MAAM,QAAQ,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;IAC/B,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,CAAC;QAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,4BAA4B,EAAE,CAAC;IAC/G,MAAM,MAAM,GAAG,oCAAoC,CAAC,QAAQ,CAAC,CAAC;IAC9D,OAAO,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC;AAC9E,CAAC"}
|
|
1
|
+
{"version":3,"file":"claude-managed-send-route.js","sourceRoot":"","sources":["../../src/claude-managed-send-route.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,5 +10,7 @@ export interface ClaudeTerminalAgentObservation {
|
|
|
10
10
|
export declare function claudeTerminalObservationFailure(result: ClaudeTerminalAgentObservation): string;
|
|
11
11
|
/** Static fixtures never gain registry authority from caller-supplied metadata. */
|
|
12
12
|
export declare function normalizeClaudeAgentRows(rows: readonly unknown[]): ClaudeAgentRow[];
|
|
13
|
+
/** Unknown and conflicting roots keep generic guidance; this never bypasses reader authority. */
|
|
14
|
+
export declare function claudeTerminalWindowRole(options: Readonly<Record<string, unknown>>, pid: number, cwd?: string): "background_view" | undefined;
|
|
13
15
|
/** Never infer a session directory from the reader's install layout. */
|
|
14
16
|
export declare function readClaudeTerminalAgents(options: Readonly<Record<string, unknown>>): ClaudeTerminalAgentObservation;
|
|
@@ -5,7 +5,7 @@ import { spawnSync } from "node:child_process";
|
|
|
5
5
|
import { resolveExecutable } from "./cli-command-runtime.js";
|
|
6
6
|
import { cliEnv, cliRuntimeLog } from "./cli-runtime-context.js";
|
|
7
7
|
import { claudeReaderConfiguration, claudeReaderDiagnostic, claudeReaderNextAction } from "./claude-reader-configuration.js";
|
|
8
|
-
import { observeClaudeTerminalRegistry } from "./claude-terminal-registry-observation.js";
|
|
8
|
+
import { observeClaudeTerminalRegistry, observeClaudeTerminalWindow } from "./claude-terminal-registry-observation.js";
|
|
9
9
|
import { isRecord, nonBlankString } from "./value-guards.js";
|
|
10
10
|
export function claudeTerminalObservationFailure(result) {
|
|
11
11
|
const reader = result.reader ? `; reader=${JSON.stringify(result.reader.executable)} source=${result.reader.source}` : "";
|
|
@@ -35,6 +35,23 @@ function canonicalRoot(root) {
|
|
|
35
35
|
return root;
|
|
36
36
|
}
|
|
37
37
|
}
|
|
38
|
+
/** Unknown and conflicting roots keep generic guidance; this never bypasses reader authority. */
|
|
39
|
+
export function claudeTerminalWindowRole(options, pid, cwd) {
|
|
40
|
+
if (["processesJson", "terminalsJson", "terminalScreensJson", "claudeAgentsJson"]
|
|
41
|
+
.some(key => options[key] !== undefined))
|
|
42
|
+
return undefined;
|
|
43
|
+
try {
|
|
44
|
+
const roots = [...new Set(claudeReaderConfiguration(options).configDirs.map(canonicalRoot))];
|
|
45
|
+
const observations = roots.map(configDir => observeClaudeTerminalWindow({ configDir, pid, cwd }));
|
|
46
|
+
if (observations.some(observation => observation.state === "invalid"))
|
|
47
|
+
return undefined;
|
|
48
|
+
const verified = observations.filter(observation => observation.state === "verified");
|
|
49
|
+
return verified.length === 1 && verified[0].role === "background_view" ? "background_view" : undefined;
|
|
50
|
+
}
|
|
51
|
+
catch {
|
|
52
|
+
return undefined;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
38
55
|
function resolveReader(reader) {
|
|
39
56
|
try {
|
|
40
57
|
const executable = resolveExecutable(reader);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claude-terminal-agent-observation.js","sourceRoot":"","sources":["../../src/claude-terminal-agent-observation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,yBAAyB,EAAE,sBAAsB,EAAE,sBAAsB,EACnD,MAAM,kCAAkC,CAAC;AACxE,OAAO,EAAE,6BAA6B,EAAE,MAAM,2CAA2C,CAAC;
|
|
1
|
+
{"version":3,"file":"claude-terminal-agent-observation.js","sourceRoot":"","sources":["../../src/claude-terminal-agent-observation.ts"],"names":[],"mappings":"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"}
|
|
@@ -21,6 +21,18 @@ export type ClaudeTerminalRegistryObservation = {
|
|
|
21
21
|
state: "invalid";
|
|
22
22
|
reason: "invalid_identity" | "unsafe_metadata" | "invalid_registry" | "conflicting_rows" | "registry_mismatch" | "process_changed" | "registry_unavailable";
|
|
23
23
|
};
|
|
24
|
+
export type ClaudeTerminalWindowObservation = {
|
|
25
|
+
state: "verified";
|
|
26
|
+
role: "background_view" | "ordinary";
|
|
27
|
+
} | Exclude<ClaudeTerminalRegistryObservation, {
|
|
28
|
+
state: "verified";
|
|
29
|
+
}>;
|
|
30
|
+
/** Foreground display evidence only: never returns a session, job, socket or send authority. */
|
|
31
|
+
export declare function observeClaudeTerminalWindow(input: {
|
|
32
|
+
configDir: string;
|
|
33
|
+
pid: number;
|
|
34
|
+
cwd?: string;
|
|
35
|
+
}): ClaudeTerminalWindowObservation;
|
|
24
36
|
/** Read-only version/root evidence; this does not verify a native socket or authorize sending. */
|
|
25
37
|
export declare function observeClaudeTerminalRegistry(input: {
|
|
26
38
|
configDir: string;
|
|
@@ -97,6 +97,38 @@ function assertCurrentProcess(identity) {
|
|
|
97
97
|
throw new RegistryError("process_changed");
|
|
98
98
|
}
|
|
99
99
|
}
|
|
100
|
+
function verifiedWindowRole(registry, pid, cwd) {
|
|
101
|
+
if (registry.pid !== pid || registry.kind !== "interactive" || !absolute(registry.cwd)
|
|
102
|
+
|| realpathSync(registry.cwd) !== realpathSync(cwd)
|
|
103
|
+
|| (registry.pidDomain !== undefined && registry.pidDomain !== process.platform)) {
|
|
104
|
+
throw new RegistryError("registry_mismatch");
|
|
105
|
+
}
|
|
106
|
+
const processStart = typeof registry.procStart === "string" ? registry.procStart.trim().replace(/\s+/gu, " ") : "";
|
|
107
|
+
assertCurrentProcess({ pid, processStart });
|
|
108
|
+
if (registry.parkedJobId !== undefined && (!statusShape(registry.parkedJobId)
|
|
109
|
+
|| !registry.parkedJobId.trim()))
|
|
110
|
+
throw new RegistryError("invalid_registry");
|
|
111
|
+
return registry.parkedJobId === undefined ? "ordinary" : "background_view";
|
|
112
|
+
}
|
|
113
|
+
/** Foreground display evidence only: never returns a session, job, socket or send authority. */
|
|
114
|
+
export function observeClaudeTerminalWindow(input) {
|
|
115
|
+
if (!absolute(input.configDir) || !Number.isSafeInteger(input.pid) || input.pid < 1 || !absolute(input.cwd)) {
|
|
116
|
+
return { state: "invalid", reason: "invalid_identity" };
|
|
117
|
+
}
|
|
118
|
+
try {
|
|
119
|
+
const registry = readRegistry(realpathSync(input.configDir), input.pid);
|
|
120
|
+
return { state: "verified", role: verifiedWindowRole(registry, input.pid, input.cwd) };
|
|
121
|
+
}
|
|
122
|
+
catch (error) {
|
|
123
|
+
if (error instanceof RegistryError)
|
|
124
|
+
return { state: "invalid", reason: error.reason };
|
|
125
|
+
if (error instanceof SyntaxError)
|
|
126
|
+
return { state: "invalid", reason: "invalid_registry" };
|
|
127
|
+
if (error?.code === "ENOENT")
|
|
128
|
+
return { state: "absent" };
|
|
129
|
+
return { state: "invalid", reason: "registry_unavailable" };
|
|
130
|
+
}
|
|
131
|
+
}
|
|
100
132
|
/** Read-only version/root evidence; this does not verify a native socket or authorize sending. */
|
|
101
133
|
export function observeClaudeTerminalRegistry(input) {
|
|
102
134
|
if (!absolute(input.configDir) || !Number.isSafeInteger(input.pid) || input.pid < 1) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claude-terminal-registry-observation.js","sourceRoot":"","sources":["../../src/claude-terminal-registry-observation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAc,MAAM,SAAS,CAAC;AACnH,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,4BAA4B,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"claude-terminal-registry-observation.js","sourceRoot":"","sources":["../../src/claude-terminal-registry-observation.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export interface ClaudeUserExplicitReadiness {
|
|
2
|
+
readonly ready: boolean;
|
|
3
|
+
readonly reason?: "foreground_running" | "foreground_unproven" | "composer_not_empty" | "composer_unrecognized" | "footer_unrecognized" | "stash_not_empty" | "cleanup_marker_present";
|
|
4
|
+
readonly message?: string;
|
|
5
|
+
}
|
|
6
|
+
/** Physical Claude input proof only. Managed input and Codex retain their own policies. */
|
|
7
|
+
export declare function claudeUserExplicitReadiness(screen: string | undefined, options?: {
|
|
8
|
+
allowDraft?: boolean;
|
|
9
|
+
}): ClaudeUserExplicitReadiness;
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { exactClaudeComposerFrame, stripTerminalEscapeSequences } from "./terminal-native-inspection-proof.js";
|
|
2
|
+
const STASH_BADGE_SUFFIX = /›\s+stashed\s*$/u;
|
|
3
|
+
const CLEAR_HINT = /^\s*(?:Draft restored\s*·\s*)?new task\? \/clear to save \d+(?:\.\d)?[kmbt]? tokens\s*$/u;
|
|
4
|
+
const STASH = /\s+(?:Draft restored\s*·\s*)?› stashed\s*$/u;
|
|
5
|
+
const AUXILIARY = /^(?:(?:Draft restored\s*·\s*)?› stashed|[●○◐◉]\s+(?:low|medium|high|xhigh|max|ultracode)\s*·\s*\/effort)$/iu;
|
|
6
|
+
const MODE = /^(?:[⏵⏴⏸]{1,2}\s+(?:manual mode|auto mode|accept edits|bypass permissions|plan mode|don't ask) on(?:\s+\(shift\+tab to cycle\))?|\? for shortcuts)$/u;
|
|
7
|
+
const HINT = /^(?:\? for shortcuts|[1-9]\d* shells?|esc to interrupt|← for (?:agents|ag…)|(?:↓ to manage|\(↓ to manage\)))$/u;
|
|
8
|
+
// Native 2.1.295 spinner frames include the middle dot and reduced-motion dot.
|
|
9
|
+
const SPINNER = /^\s*[·✢✳✶✻✽●✣✤✥✦✧]\s+.+(?:…|\.\.\.)(?:\s+\([^)]*\))?\s*$/u;
|
|
10
|
+
const COMPLETED = /^\s*[·✢✳✶✻✽●✣✤✥✦✧]\s+(?:Baked|Brewed|Churned|Cogitated|Cooked|Crunched|Sautéed|Worked) for \d+(?:\.\d+)?(?:ms|s|m|h)(?: \d+(?:\.\d+)?(?:ms|s|m|h))*(?: · done \d{1,2}:\d{2}(?:[ \u202f]+[AP]M)?)?(?: · [1-9]\d* shells? still running)?\s*$/u;
|
|
11
|
+
/** Closed native vocabulary; joining wrapped rows never licenses unknown text. */
|
|
12
|
+
function knownFooter(lines) {
|
|
13
|
+
const rows = lines.map(line => line.trim()).filter(line => !AUXILIARY.test(line));
|
|
14
|
+
if (rows.length === 0)
|
|
15
|
+
return true;
|
|
16
|
+
if (rows.length > 4)
|
|
17
|
+
return false;
|
|
18
|
+
const footer = rows.join(" ").replace(STASH, "").replace(/\s+Debug\s*$/u, "")
|
|
19
|
+
.replace(STASH, "").replace(/\s+/gu, " ").trim();
|
|
20
|
+
const [mode, ...hints] = footer.split(/\s*·\s*/u);
|
|
21
|
+
return MODE.test(mode ?? "") && hints.every(hint => HINT.test(hint));
|
|
22
|
+
}
|
|
23
|
+
/** Footer esc can outlive foreground work; it is not, by itself, idle evidence. */
|
|
24
|
+
function foregroundFailure(lines, interruptHint) {
|
|
25
|
+
const tail = lines.filter(line => line.trim()).slice(-12);
|
|
26
|
+
const spinner = tail.reduce((last, line, index) => SPINNER.test(line) ? index : last, -1);
|
|
27
|
+
const completed = tail.reduce((last, line, index) => COMPLETED.test(line) ? index : last, -1);
|
|
28
|
+
const afterSpinner = tail.slice(spinner + 1).map(line => line.trim()).join(" ").replace(/\s+/gu, " ");
|
|
29
|
+
const currentSpinner = spinner > completed && (afterSpinner === "" ||
|
|
30
|
+
/^⎿ Tip: Use \/btw to ask a quick side question without interrupting Claude['’]s current work$/u.test(afterSpinner));
|
|
31
|
+
if (currentSpinner)
|
|
32
|
+
return {
|
|
33
|
+
ready: false, reason: "foreground_running",
|
|
34
|
+
message: "Claude is still running its foreground turn; wait for it to finish, then refresh and retry. No task text was sent."
|
|
35
|
+
};
|
|
36
|
+
const unresolvedSpinner = spinner > completed && !tail.slice(spinner + 1).some(line => /^\s*[⏺❯]\s+\S/u.test(line));
|
|
37
|
+
if (unresolvedSpinner || interruptHint && (completed < 0 || completed !== tail.length - 1))
|
|
38
|
+
return {
|
|
39
|
+
ready: false, reason: "foreground_unproven",
|
|
40
|
+
message: "Claude shows an interrupt hint or an unrecognized working-status layout, but the current foreground turn has no visible completion proof. Background shell counts alone do not prove it idle; wait for the turn to finish and retry."
|
|
41
|
+
};
|
|
42
|
+
return undefined;
|
|
43
|
+
}
|
|
44
|
+
/** Physical Claude input proof only. Managed input and Codex retain their own policies. */
|
|
45
|
+
export function claudeUserExplicitReadiness(screen, options = {}) {
|
|
46
|
+
const frame = exactClaudeComposerFrame(stripTerminalEscapeSequences(screen ?? ""));
|
|
47
|
+
if (!frame || !/^\s*❯(?:\s|$)/u.test(frame.composerRows[0] ?? ""))
|
|
48
|
+
return {
|
|
49
|
+
ready: false, reason: "composer_unrecognized",
|
|
50
|
+
message: "Claude main Composer frame is missing or clipped; return to the complete main prompt and retry."
|
|
51
|
+
};
|
|
52
|
+
// The toast describes a past pop; the stash badge describes the current slot.
|
|
53
|
+
// Native hints (including /clear) can precede the badge on the same row.
|
|
54
|
+
// Check the suffix in either current location before validating other footer text.
|
|
55
|
+
// Its absence is not proof: Claude can hide its notification area.
|
|
56
|
+
const currentBody = frame.lines.slice(0, frame.openIndex).filter(line => line.trim());
|
|
57
|
+
const aboveComposer = currentBody.at(-1) ?? "";
|
|
58
|
+
if ([aboveComposer, ...frame.trailing].some(line => STASH_BADGE_SUFFIX.test(line)))
|
|
59
|
+
return {
|
|
60
|
+
ready: false, reason: "stash_not_empty",
|
|
61
|
+
message: "This window has a stashed draft. Before retrying, restore or clear it yourself in the window. " +
|
|
62
|
+
"Wait until Claude is idle; with an empty input box, press Ctrl+S once to restore it and save any wanted text. " +
|
|
63
|
+
"AKK cannot identify the hidden contents. If you see [AKK replacing current draft ...], it may be an earlier AKK cleanup marker: " +
|
|
64
|
+
"remove only that marker (Ctrl+E then Ctrl+U if it is the entire single-line input), preserve any other text, and do not submit the marker. Empty the input box, refresh List, and retry. No task text was sent."
|
|
65
|
+
};
|
|
66
|
+
if (!knownFooter(frame.trailing))
|
|
67
|
+
return {
|
|
68
|
+
ready: false, reason: "footer_unrecognized",
|
|
69
|
+
message: "Claude main Composer is visible, but its footer contains an unknown or unsupported component. Return to the native main prompt; if it persists, report the footer layout. Task text was not sent."
|
|
70
|
+
};
|
|
71
|
+
// A contextual /clear notification is not foreground work or completion proof.
|
|
72
|
+
// Remove only the nearest exact native hint; retain real spinners and unknown text.
|
|
73
|
+
const activity = foregroundFailure(CLEAR_HINT.test(aboveComposer) ? currentBody.slice(0, -1) : currentBody, /\besc\s+to\s+interrupt\b/u.test(frame.trailing.join(" ")));
|
|
74
|
+
if (activity)
|
|
75
|
+
return activity;
|
|
76
|
+
if (frame.composerRows.some(line => /\[AKK replacing current draft(?:\s|\])/u.test(line)))
|
|
77
|
+
return {
|
|
78
|
+
ready: false, reason: "cleanup_marker_present",
|
|
79
|
+
message: "The input box contains an AKK-style cleanup marker, possibly left by an earlier failed Send. " +
|
|
80
|
+
"Do not press Enter on it. Remove only [AKK replacing current draft ...] (Ctrl+E then Ctrl+U if it is the entire single-line input), save any other text, " +
|
|
81
|
+
"then empty the input box, refresh List, and retry. AKK has not deleted anything or sent task text."
|
|
82
|
+
};
|
|
83
|
+
if (!options.allowDraft && (frame.composerRows.length !== 1 || !/^\s*❯\s*$/u.test(frame.composerRows[0])))
|
|
84
|
+
return {
|
|
85
|
+
ready: false, reason: "composer_not_empty",
|
|
86
|
+
message: "Claude main Composer contains a draft; preserve or clear it yourself before retrying. AKK did not replace the draft or submit task text."
|
|
87
|
+
};
|
|
88
|
+
return { ready: true };
|
|
89
|
+
}
|
|
90
|
+
//# sourceMappingURL=claude-user-explicit-input-proof.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claude-user-explicit-input-proof.js","sourceRoot":"","sources":["../../src/claude-user-explicit-input-proof.ts"],"names":[],"mappings":"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"}
|
package/dist/src/cli-core.js
CHANGED
|
@@ -849,6 +849,7 @@ const terminalListCliFacade = createTerminalListCliFacade({
|
|
|
849
849
|
},
|
|
850
850
|
discovery: {
|
|
851
851
|
localCodexList: localCodexListForCli,
|
|
852
|
+
loadClaudeAgentRows, observeClaudeWindowRole: (options, pid, cwd) => terminalRuntime(options).observeClaudeWindowRole(pid, cwd),
|
|
852
853
|
agentVersionForRunningProcess,
|
|
853
854
|
codexLatentClearResumeObservation,
|
|
854
855
|
codexManagedIdentityResolutionContext,
|