@scotthuang/agent-knock-knock 0.12.11 → 0.12.13
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 +40 -0
- package/README.md +43 -30
- package/dist/src/approval-policy.d.ts +11 -2
- package/dist/src/approval-policy.js +33 -7
- package/dist/src/approval-policy.js.map +1 -1
- package/dist/src/callback-cli-adapter.d.ts +47 -0
- package/dist/src/callback-cli-adapter.js +156 -0
- package/dist/src/callback-cli-adapter.js.map +1 -0
- package/dist/src/callback-outbox-policy.d.ts +95 -0
- package/dist/src/callback-outbox-policy.js +149 -0
- package/dist/src/callback-outbox-policy.js.map +1 -0
- package/dist/src/callback-outbox-service.d.ts +247 -0
- package/dist/src/callback-outbox-service.js +1053 -0
- package/dist/src/callback-outbox-service.js.map +1 -0
- package/dist/src/callback-outbox-settlement.d.ts +54 -0
- package/dist/src/callback-outbox-settlement.js +241 -0
- package/dist/src/callback-outbox-settlement.js.map +1 -0
- package/dist/src/canonical-json.d.ts +1 -0
- package/dist/src/canonical-json.js +14 -0
- package/dist/src/canonical-json.js.map +1 -0
- package/dist/src/claude-lifecycle-compatibility.js +15 -0
- package/dist/src/claude-lifecycle-compatibility.js.map +1 -1
- package/dist/src/claude-local-transcript-provider.d.ts +82 -1
- package/dist/src/claude-local-transcript-provider.js +873 -23
- package/dist/src/claude-local-transcript-provider.js.map +1 -1
- package/dist/src/cli-command-runtime.d.ts +14 -0
- package/dist/src/cli-command-runtime.js +164 -0
- package/dist/src/cli-command-runtime.js.map +1 -0
- package/dist/src/cli-core.d.ts +4 -42
- package/dist/src/cli-core.js +958 -28684
- package/dist/src/cli-core.js.map +1 -1
- package/dist/src/cli-runtime-context.d.ts +57 -0
- package/dist/src/cli-runtime-context.js +118 -0
- package/dist/src/cli-runtime-context.js.map +1 -0
- package/dist/src/codex-lifecycle-compatibility.js +2 -1
- package/dist/src/codex-lifecycle-compatibility.js.map +1 -1
- package/dist/src/codex-local-session-provider.d.ts +18 -0
- package/dist/src/codex-local-session-provider.js +67 -0
- package/dist/src/codex-local-session-provider.js.map +1 -1
- package/dist/src/codex-session-provider.js +1 -3
- package/dist/src/codex-session-provider.js.map +1 -1
- package/dist/src/conversation-trace.d.ts +30 -0
- package/dist/src/conversation-trace.js +185 -0
- package/dist/src/conversation-trace.js.map +1 -0
- package/dist/src/deferred-foreground-application-service.d.ts +84 -0
- package/dist/src/deferred-foreground-application-service.js +742 -0
- package/dist/src/deferred-foreground-application-service.js.map +1 -0
- package/dist/src/deferred-foreground-authority-cli-adapter.d.ts +78 -0
- package/dist/src/deferred-foreground-authority-cli-adapter.js +795 -0
- package/dist/src/deferred-foreground-authority-cli-adapter.js.map +1 -0
- package/dist/src/deferred-foreground-boundary.d.ts +61 -0
- package/dist/src/deferred-foreground-boundary.js +2 -0
- package/dist/src/deferred-foreground-boundary.js.map +1 -0
- package/dist/src/deferred-foreground-capability.d.ts +4 -0
- package/dist/src/deferred-foreground-capability.js +184 -0
- package/dist/src/deferred-foreground-capability.js.map +1 -0
- package/dist/src/deferred-foreground-preparation-cli-adapter.d.ts +53 -0
- package/dist/src/deferred-foreground-preparation-cli-adapter.js +210 -0
- package/dist/src/deferred-foreground-preparation-cli-adapter.js.map +1 -0
- package/dist/src/deferred-foreground-preparation-service.d.ts +72 -0
- package/dist/src/deferred-foreground-preparation-service.js +179 -0
- package/dist/src/deferred-foreground-preparation-service.js.map +1 -0
- package/dist/src/deferred-foreground-recovery-cli-adapter.d.ts +139 -0
- package/dist/src/deferred-foreground-recovery-cli-adapter.js +1125 -0
- package/dist/src/deferred-foreground-recovery-cli-adapter.js.map +1 -0
- package/dist/src/deferred-foreground-recovery-service.d.ts +48 -0
- package/dist/src/deferred-foreground-recovery-service.js +91 -0
- package/dist/src/deferred-foreground-recovery-service.js.map +1 -0
- package/dist/src/deferred-foreground-transfer-policy.d.ts +2 -0
- package/dist/src/deferred-foreground-transfer-policy.js +10 -0
- package/dist/src/deferred-foreground-transfer-policy.js.map +1 -0
- package/dist/src/deferred-foreground-transfer.js +46 -105
- package/dist/src/deferred-foreground-transfer.js.map +1 -1
- package/dist/src/doctor-capabilities.d.ts +9 -0
- package/dist/src/doctor-capabilities.js +22 -0
- package/dist/src/doctor-capabilities.js.map +1 -1
- package/dist/src/durable-json-file.d.ts +22 -0
- package/dist/src/durable-json-file.js +127 -0
- package/dist/src/durable-json-file.js.map +1 -0
- package/dist/src/file-lock-cli-adapter.d.ts +43 -0
- package/dist/src/file-lock-cli-adapter.js +150 -0
- package/dist/src/file-lock-cli-adapter.js.map +1 -0
- package/dist/src/herdr-terminal-control-provider.js +1 -3
- package/dist/src/herdr-terminal-control-provider.js.map +1 -1
- package/dist/src/install-doctor-command-adapter.d.ts +17 -0
- package/dist/src/install-doctor-command-adapter.js +225 -0
- package/dist/src/install-doctor-command-adapter.js.map +1 -0
- package/dist/src/live-lifecycle-evidence.js +76 -46
- package/dist/src/live-lifecycle-evidence.js.map +1 -1
- package/dist/src/live-lifecycle-smoke.js +74 -50
- package/dist/src/live-lifecycle-smoke.js.map +1 -1
- package/dist/src/managed-session.d.ts +2 -0
- package/dist/src/managed-session.js +24 -0
- package/dist/src/managed-session.js.map +1 -1
- package/dist/src/managed-turn-recovery-service.d.ts +86 -0
- package/dist/src/managed-turn-recovery-service.js +145 -0
- package/dist/src/managed-turn-recovery-service.js.map +1 -0
- package/dist/src/mutation-transaction.d.ts +48 -0
- package/dist/src/mutation-transaction.js +73 -0
- package/dist/src/mutation-transaction.js.map +1 -0
- package/dist/src/native-thread-lifecycle-cli-adapter.d.ts +154 -0
- package/dist/src/native-thread-lifecycle-cli-adapter.js +786 -0
- package/dist/src/native-thread-lifecycle-cli-adapter.js.map +1 -0
- package/dist/src/native-thread-lifecycle-ledger-cli-adapter.d.ts +25 -0
- package/dist/src/native-thread-lifecycle-ledger-cli-adapter.js +50 -0
- package/dist/src/native-thread-lifecycle-ledger-cli-adapter.js.map +1 -0
- package/dist/src/native-thread-lifecycle-query-service.d.ts +75 -0
- package/dist/src/native-thread-lifecycle-query-service.js +297 -0
- package/dist/src/native-thread-lifecycle-query-service.js.map +1 -0
- package/dist/src/native-thread-lifecycle-recovery-adapter.d.ts +45 -0
- package/dist/src/native-thread-lifecycle-recovery-adapter.js +154 -0
- package/dist/src/native-thread-lifecycle-recovery-adapter.js.map +1 -0
- package/dist/src/native-thread-lifecycle-recovery-service.d.ts +211 -0
- package/dist/src/native-thread-lifecycle-recovery-service.js +1093 -0
- package/dist/src/native-thread-lifecycle-recovery-service.js.map +1 -0
- package/dist/src/native-thread-resume-snapshot-policy.d.ts +73 -0
- package/dist/src/native-thread-resume-snapshot-policy.js +218 -0
- package/dist/src/native-thread-resume-snapshot-policy.js.map +1 -0
- package/dist/src/native-thread-resume-snapshot.d.ts +3 -61
- package/dist/src/native-thread-resume-snapshot.js +2 -143
- package/dist/src/native-thread-resume-snapshot.js.map +1 -1
- package/dist/src/native-thread-transition-application.d.ts +147 -0
- package/dist/src/native-thread-transition-application.js +974 -0
- package/dist/src/native-thread-transition-application.js.map +1 -0
- package/dist/src/native-thread-transition-policy.d.ts +127 -0
- package/dist/src/native-thread-transition-policy.js +154 -0
- package/dist/src/native-thread-transition-policy.js.map +1 -0
- package/dist/src/native-thread-transition-resource-adapter.d.ts +12 -0
- package/dist/src/native-thread-transition-resource-adapter.js +44 -0
- package/dist/src/native-thread-transition-resource-adapter.js.map +1 -0
- package/dist/src/native-thread-transition-settlement-service.d.ts +94 -0
- package/dist/src/native-thread-transition-settlement-service.js +134 -0
- package/dist/src/native-thread-transition-settlement-service.js.map +1 -0
- package/dist/src/native-thread-transition-verification-adapter.d.ts +62 -0
- package/dist/src/native-thread-transition-verification-adapter.js +451 -0
- package/dist/src/native-thread-transition-verification-adapter.js.map +1 -0
- package/dist/src/openclaw-callback-transport.d.ts +69 -0
- package/dist/src/openclaw-callback-transport.js +583 -0
- package/dist/src/openclaw-callback-transport.js.map +1 -0
- package/dist/src/openclaw-plugin-callback-adapter.d.ts +1 -0
- package/dist/src/openclaw-plugin-callback-adapter.js +423 -0
- package/dist/src/openclaw-plugin-callback-adapter.js.map +1 -0
- package/dist/src/openclaw-plugin-command-adapter.d.ts +16 -0
- package/dist/src/openclaw-plugin-command-adapter.js +1868 -0
- package/dist/src/openclaw-plugin-command-adapter.js.map +1 -0
- package/dist/src/openclaw-plugin-helpers.d.ts +27 -4
- package/dist/src/openclaw-plugin-helpers.js +356 -81
- package/dist/src/openclaw-plugin-helpers.js.map +1 -1
- package/dist/src/openclaw-plugin-schemas.d.ts +358 -0
- package/dist/src/openclaw-plugin-schemas.js +366 -0
- package/dist/src/openclaw-plugin-schemas.js.map +1 -0
- package/dist/src/openclaw-plugin-supervisor.d.ts +6 -0
- package/dist/src/openclaw-plugin-supervisor.js +123 -0
- package/dist/src/openclaw-plugin-supervisor.js.map +1 -0
- package/dist/src/openclaw-plugin.js +7 -2212
- package/dist/src/openclaw-plugin.js.map +1 -1
- package/dist/src/openclaw-private-authority-offers.d.ts +22 -0
- package/dist/src/openclaw-private-authority-offers.js +177 -0
- package/dist/src/openclaw-private-authority-offers.js.map +1 -0
- package/dist/src/protocol.d.ts +5 -0
- package/dist/src/protocol.js +59 -3
- package/dist/src/protocol.js.map +1 -1
- package/dist/src/session-store.d.ts +1 -0
- package/dist/src/session-store.js +84 -106
- package/dist/src/session-store.js.map +1 -1
- package/dist/src/store.d.ts +1 -0
- package/dist/src/store.js +5 -2
- package/dist/src/store.js.map +1 -1
- package/dist/src/terminal-acceptance-application-service.d.ts +65 -0
- package/dist/src/terminal-acceptance-application-service.js +63 -0
- package/dist/src/terminal-acceptance-application-service.js.map +1 -0
- package/dist/src/terminal-acceptance-cli-adapter.d.ts +210 -0
- package/dist/src/terminal-acceptance-cli-adapter.js +957 -0
- package/dist/src/terminal-acceptance-cli-adapter.js.map +1 -0
- package/dist/src/terminal-action-projection.d.ts +309 -0
- package/dist/src/terminal-action-projection.js +376 -0
- package/dist/src/terminal-action-projection.js.map +1 -0
- package/dist/src/terminal-agent-bridge.d.ts +3 -0
- package/dist/src/terminal-agent-bridge.js +29 -8
- package/dist/src/terminal-agent-bridge.js.map +1 -1
- package/dist/src/terminal-authority-policy.d.ts +141 -0
- package/dist/src/terminal-authority-policy.js +367 -0
- package/dist/src/terminal-authority-policy.js.map +1 -0
- package/dist/src/terminal-binding-authority.d.ts +118 -0
- package/dist/src/terminal-binding-authority.js +245 -0
- package/dist/src/terminal-binding-authority.js.map +1 -0
- package/dist/src/terminal-binding-reconciliation-service.d.ts +75 -0
- package/dist/src/terminal-binding-reconciliation-service.js +73 -0
- package/dist/src/terminal-binding-reconciliation-service.js.map +1 -0
- package/dist/src/terminal-command-cli-adapter.d.ts +380 -0
- package/dist/src/terminal-command-cli-adapter.js +3288 -0
- package/dist/src/terminal-command-cli-adapter.js.map +1 -0
- package/dist/src/terminal-control-ref.d.ts +4 -0
- package/dist/src/terminal-control-ref.js +11 -8
- package/dist/src/terminal-control-ref.js.map +1 -1
- package/dist/src/terminal-delegate-cli-adapter.d.ts +41 -0
- package/dist/src/terminal-delegate-cli-adapter.js +242 -0
- package/dist/src/terminal-delegate-cli-adapter.js.map +1 -0
- package/dist/src/terminal-dispatch-abort.d.ts +22 -0
- package/dist/src/terminal-dispatch-abort.js +30 -0
- package/dist/src/terminal-dispatch-abort.js.map +1 -0
- package/dist/src/terminal-dispatch-application.d.ts +115 -0
- package/dist/src/terminal-dispatch-application.js +478 -0
- package/dist/src/terminal-dispatch-application.js.map +1 -0
- package/dist/src/terminal-dispatch-capability.d.ts +63 -0
- package/dist/src/terminal-dispatch-capability.js +133 -0
- package/dist/src/terminal-dispatch-capability.js.map +1 -0
- package/dist/src/terminal-dispatch-completion-cli-adapter.d.ts +22 -0
- package/dist/src/terminal-dispatch-completion-cli-adapter.js +96 -0
- package/dist/src/terminal-dispatch-completion-cli-adapter.js.map +1 -0
- package/dist/src/terminal-dispatch-composition.d.ts +79 -0
- package/dist/src/terminal-dispatch-composition.js +2 -0
- package/dist/src/terminal-dispatch-composition.js.map +1 -0
- package/dist/src/terminal-dispatch-execution.d.ts +290 -0
- package/dist/src/terminal-dispatch-execution.js +916 -0
- package/dist/src/terminal-dispatch-execution.js.map +1 -0
- package/dist/src/terminal-dispatch-ledger-codec.d.ts +110 -0
- package/dist/src/terminal-dispatch-ledger-codec.js +399 -0
- package/dist/src/terminal-dispatch-ledger-codec.js.map +1 -0
- package/dist/src/terminal-dispatch-policy.d.ts +93 -0
- package/dist/src/terminal-dispatch-policy.js +122 -0
- package/dist/src/terminal-dispatch-policy.js.map +1 -0
- package/dist/src/terminal-dispatch-presenter.d.ts +65 -0
- package/dist/src/terminal-dispatch-presenter.js +258 -0
- package/dist/src/terminal-dispatch-presenter.js.map +1 -0
- package/dist/src/terminal-dispatch-receipt.d.ts +79 -0
- package/dist/src/terminal-dispatch-receipt.js +314 -0
- package/dist/src/terminal-dispatch-receipt.js.map +1 -0
- package/dist/src/terminal-dispatch-recovery-cli-adapter.d.ts +132 -0
- package/dist/src/terminal-dispatch-recovery-cli-adapter.js +1330 -0
- package/dist/src/terminal-dispatch-recovery-cli-adapter.js.map +1 -0
- package/dist/src/terminal-dispatch-recovery-service.d.ts +271 -0
- package/dist/src/terminal-dispatch-recovery-service.js +374 -0
- package/dist/src/terminal-dispatch-recovery-service.js.map +1 -0
- package/dist/src/terminal-dispatch-repository-cli-adapter.d.ts +35 -0
- package/dist/src/terminal-dispatch-repository-cli-adapter.js +483 -0
- package/dist/src/terminal-dispatch-repository-cli-adapter.js.map +1 -0
- package/dist/src/terminal-handoff-application-service.d.ts +7 -0
- package/dist/src/terminal-handoff-application-service.js +18 -0
- package/dist/src/terminal-handoff-application-service.js.map +1 -0
- package/dist/src/terminal-handoff-cli-adapter.d.ts +229 -0
- package/dist/src/terminal-handoff-cli-adapter.js +1389 -0
- package/dist/src/terminal-handoff-cli-adapter.js.map +1 -0
- package/dist/src/terminal-handoff-facts.d.ts +12 -0
- package/dist/src/terminal-handoff-facts.js +16 -0
- package/dist/src/terminal-handoff-facts.js.map +1 -0
- package/dist/src/terminal-identity-authority-cli-adapter.d.ts +318 -0
- package/dist/src/terminal-identity-authority-cli-adapter.js +1072 -0
- package/dist/src/terminal-identity-authority-cli-adapter.js.map +1 -0
- package/dist/src/terminal-identity-authority-service.d.ts +48 -0
- package/dist/src/terminal-identity-authority-service.js +45 -0
- package/dist/src/terminal-identity-authority-service.js.map +1 -0
- package/dist/src/terminal-list-cli-adapter.d.ts +274 -0
- package/dist/src/terminal-list-cli-adapter.js +2444 -0
- package/dist/src/terminal-list-cli-adapter.js.map +1 -0
- package/dist/src/terminal-list-renderer.d.ts +34 -0
- package/dist/src/terminal-list-renderer.js +643 -0
- package/dist/src/terminal-list-renderer.js.map +1 -0
- package/dist/src/terminal-maintenance-cli-adapter.d.ts +102 -0
- package/dist/src/terminal-maintenance-cli-adapter.js +1059 -0
- package/dist/src/terminal-maintenance-cli-adapter.js.map +1 -0
- package/dist/src/terminal-monitor-application-service.d.ts +275 -0
- package/dist/src/terminal-monitor-application-service.js +982 -0
- package/dist/src/terminal-monitor-application-service.js.map +1 -0
- package/dist/src/terminal-monitor-cli-adapter.d.ts +130 -0
- package/dist/src/terminal-monitor-cli-adapter.js +442 -0
- package/dist/src/terminal-monitor-cli-adapter.js.map +1 -0
- package/dist/src/terminal-monitor-decision-policy.d.ts +98 -0
- package/dist/src/terminal-monitor-decision-policy.js +246 -0
- package/dist/src/terminal-monitor-decision-policy.js.map +1 -0
- package/dist/src/terminal-monitor-launch-plan.d.ts +45 -0
- package/dist/src/terminal-monitor-launch-plan.js +94 -0
- package/dist/src/terminal-monitor-launch-plan.js.map +1 -0
- package/dist/src/terminal-monitor-ownership-policy.d.ts +31 -0
- package/dist/src/terminal-monitor-ownership-policy.js +64 -0
- package/dist/src/terminal-monitor-ownership-policy.js.map +1 -0
- package/dist/src/terminal-monitor-poll-policy.d.ts +48 -0
- package/dist/src/terminal-monitor-poll-policy.js +67 -0
- package/dist/src/terminal-monitor-poll-policy.js.map +1 -0
- package/dist/src/terminal-monitor-reconciliation-eligibility.d.ts +53 -0
- package/dist/src/terminal-monitor-reconciliation-eligibility.js +114 -0
- package/dist/src/terminal-monitor-reconciliation-eligibility.js.map +1 -0
- package/dist/src/terminal-monitor-state-cli-adapter.d.ts +106 -0
- package/dist/src/terminal-monitor-state-cli-adapter.js +1492 -0
- package/dist/src/terminal-monitor-state-cli-adapter.js.map +1 -0
- package/dist/src/terminal-monitor-state-reconciliation-service.d.ts +87 -0
- package/dist/src/terminal-monitor-state-reconciliation-service.js +106 -0
- package/dist/src/terminal-monitor-state-reconciliation-service.js.map +1 -0
- package/dist/src/terminal-monitor-supervision-cli-adapter.d.ts +122 -0
- package/dist/src/terminal-monitor-supervision-cli-adapter.js +685 -0
- package/dist/src/terminal-monitor-supervision-cli-adapter.js.map +1 -0
- package/dist/src/terminal-process-facts.d.ts +2 -0
- package/dist/src/terminal-process-facts.js +19 -0
- package/dist/src/terminal-process-facts.js.map +1 -0
- package/dist/src/terminal-process-source.d.ts +6 -4
- package/dist/src/terminal-process-source.js +25 -20
- package/dist/src/terminal-process-source.js.map +1 -1
- package/dist/src/terminal-runtime-cli-adapter.d.ts +80 -0
- package/dist/src/terminal-runtime-cli-adapter.js +488 -0
- package/dist/src/terminal-runtime-cli-adapter.js.map +1 -0
- package/dist/src/terminal-scoped-approval-authority.d.ts +62 -0
- package/dist/src/terminal-scoped-approval-authority.js +281 -0
- package/dist/src/terminal-scoped-approval-authority.js.map +1 -0
- package/dist/src/terminal-selector-projection-service.d.ts +26 -0
- package/dist/src/terminal-selector-projection-service.js +81 -0
- package/dist/src/terminal-selector-projection-service.js.map +1 -0
- package/dist/src/terminal-status-cli-adapter.d.ts +126 -0
- package/dist/src/terminal-status-cli-adapter.js +577 -0
- package/dist/src/terminal-status-cli-adapter.js.map +1 -0
- package/dist/src/terminal-status-facts.d.ts +56 -0
- package/dist/src/terminal-status-facts.js +199 -0
- package/dist/src/terminal-status-facts.js.map +1 -0
- package/dist/src/terminal-submission-acceptance.d.ts +62 -145
- package/dist/src/terminal-submission-acceptance.js +555 -222
- package/dist/src/terminal-submission-acceptance.js.map +1 -1
- package/dist/src/terminal-submission-facts.d.ts +123 -0
- package/dist/src/terminal-submission-facts.js +205 -0
- package/dist/src/terminal-submission-facts.js.map +1 -0
- package/dist/src/terminal-turn-binding-authority-cli-adapter.d.ts +14 -0
- package/dist/src/terminal-turn-binding-authority-cli-adapter.js +90 -0
- package/dist/src/terminal-turn-binding-authority-cli-adapter.js.map +1 -0
- package/dist/src/terminal-watch-callback-cli-adapter.d.ts +20 -0
- package/dist/src/terminal-watch-callback-cli-adapter.js +55 -0
- package/dist/src/terminal-watch-callback-cli-adapter.js.map +1 -0
- package/dist/src/terminal-watch-cli-adapter.d.ts +64 -0
- package/dist/src/terminal-watch-cli-adapter.js +508 -0
- package/dist/src/terminal-watch-cli-adapter.js.map +1 -0
- package/dist/src/terminal-watch-service.d.ts +97 -0
- package/dist/src/terminal-watch-service.js +714 -0
- package/dist/src/terminal-watch-service.js.map +1 -0
- package/dist/src/terminal-watch-store.d.ts +149 -0
- package/dist/src/terminal-watch-store.js +861 -0
- package/dist/src/terminal-watch-store.js.map +1 -0
- package/dist/src/value-guards.d.ts +4 -0
- package/dist/src/value-guards.js +12 -0
- package/dist/src/value-guards.js.map +1 -0
- package/dist/src/verified-dead-agent-policy.d.ts +192 -0
- package/dist/src/verified-dead-agent-policy.js +262 -0
- package/dist/src/verified-dead-agent-policy.js.map +1 -0
- package/docs/quickstart-herdr.md +8 -0
- package/docs/quickstart-tmux.md +33 -6
- package/openclaw.plugin.json +11 -3
- package/package.json +3 -1
- package/templates/openclaw-skills/agent-knock-knock/SKILL.md +58 -40
|
@@ -0,0 +1,376 @@
|
|
|
1
|
+
import { managedSessionBindingToken } from "./managed-session.js";
|
|
2
|
+
import { isSessionSendBlockingStatus, sessionIdForConversation } from "./protocol.js";
|
|
3
|
+
/** Canonical send authority used by list projection and fresh mutation prep. */
|
|
4
|
+
export function decideTerminalSendAuthority(facts) {
|
|
5
|
+
if (facts.ownership === "current")
|
|
6
|
+
return { mode: "current" };
|
|
7
|
+
const verifiedEmpty = facts.verifiedEmpty ??
|
|
8
|
+
facts.verifiedEmptyToken !== undefined;
|
|
9
|
+
const externalHandoff = facts.externalHandoff ??
|
|
10
|
+
facts.externalToken !== undefined;
|
|
11
|
+
const deferred = facts.deferred ?? facts.deferredToken !== undefined;
|
|
12
|
+
const conflictMode = verifiedEmpty
|
|
13
|
+
? { mode: "verified_empty", token: facts.verifiedEmptyToken }
|
|
14
|
+
: externalHandoff
|
|
15
|
+
? { mode: "external_handoff", token: facts.externalToken }
|
|
16
|
+
: deferred
|
|
17
|
+
? { mode: "deferred", token: facts.deferredToken }
|
|
18
|
+
: undefined;
|
|
19
|
+
if (facts.ownership === "conflict") {
|
|
20
|
+
return conflictMode ?? { mode: "conflict" };
|
|
21
|
+
}
|
|
22
|
+
if (deferred)
|
|
23
|
+
return { mode: "deferred", token: facts.deferredToken };
|
|
24
|
+
return facts.managedSendSessionId
|
|
25
|
+
? { mode: "managed", sessionId: facts.managedSendSessionId }
|
|
26
|
+
: { mode: "raw" };
|
|
27
|
+
}
|
|
28
|
+
export function decideTerminalSessionAuthorityConflict({ unresolvedSessionClaims, conflictingBoundSessionClaims, matchingSessions }) {
|
|
29
|
+
if (unresolvedSessionClaims.length > 0) {
|
|
30
|
+
return {
|
|
31
|
+
reason: "a first-class managed Session has an unresolved lifecycle binding on this terminal",
|
|
32
|
+
session_ids: unresolvedSessionClaims.map((session) => session.session_id),
|
|
33
|
+
binding_statuses: unresolvedSessionClaims.map((session) => session.status),
|
|
34
|
+
transition_ids: unresolvedSessionClaims.map((session) => session.last_transition_id ?? null),
|
|
35
|
+
recovery: "use only the lifecycle recovery action listed for this terminal"
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
if (conflictingBoundSessionClaims.length === 1) {
|
|
39
|
+
return singleBindingConflict(conflictingBoundSessionClaims[0]);
|
|
40
|
+
}
|
|
41
|
+
if (conflictingBoundSessionClaims.length > 1) {
|
|
42
|
+
return {
|
|
43
|
+
kind: "ambiguous_bound_claims",
|
|
44
|
+
reason: "multiple non-exact bound managed Sessions claim the same live terminal",
|
|
45
|
+
session_ids: conflictingBoundSessionClaims.map(({ session }) => session.session_id),
|
|
46
|
+
recovery: "inspect Session state; AKK will not reconcile ambiguous claims"
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
if (matchingSessions.length > 1) {
|
|
50
|
+
return {
|
|
51
|
+
reason: "multiple first-class managed Sessions claim the same live terminal binding",
|
|
52
|
+
session_ids: matchingSessions.map((session) => session.session_id),
|
|
53
|
+
recovery: "inspect Session state before performing a side effect"
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
return undefined;
|
|
57
|
+
}
|
|
58
|
+
function singleBindingConflict(claim) {
|
|
59
|
+
const { session, kind } = claim;
|
|
60
|
+
return {
|
|
61
|
+
kind,
|
|
62
|
+
reason: kind === "provisional_orphan"
|
|
63
|
+
? "a failed raw attach left a bound Session without an authoritative native-thread identity"
|
|
64
|
+
: kind === "live_external_thread_change"
|
|
65
|
+
? "the live coding-agent thread changed outside AKK while its previous Session binding remained bound"
|
|
66
|
+
: "the live terminal no longer matches a bound managed Session and the process relationship is unverifiable",
|
|
67
|
+
session_ids: [session.session_id],
|
|
68
|
+
binding_ids: [session.binding?.binding_id ?? null],
|
|
69
|
+
session_revisions: [session.revision ?? null],
|
|
70
|
+
recovery: kind === "unverifiable"
|
|
71
|
+
? "inspect the terminal and Session identity; AKK cannot safely reconcile an unverifiable binding"
|
|
72
|
+
: "use only the exact reconcile_binding action listed for this terminal"
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Terminal Watch is only for work started outside AKK. A durable blocking
|
|
77
|
+
* Turn wins even when its dispatch ledger is temporarily absent, while a
|
|
78
|
+
* current or conflicted dispatch owner must also fail closed.
|
|
79
|
+
*/
|
|
80
|
+
export function decideTerminalWatchExternalTaskAuthority({ blockingTurn, dispatchOwnership }) {
|
|
81
|
+
if (blockingTurn) {
|
|
82
|
+
return { state: "managed_turn", conversation: blockingTurn };
|
|
83
|
+
}
|
|
84
|
+
if (dispatchOwnership.state === "current") {
|
|
85
|
+
return {
|
|
86
|
+
state: "managed_turn",
|
|
87
|
+
conversation: dispatchOwnership.conversation
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
if (dispatchOwnership.state === "conflict") {
|
|
91
|
+
return {
|
|
92
|
+
state: "dispatch_conflict",
|
|
93
|
+
conflict: dispatchOwnership.conflict
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
return { state: "external_task" };
|
|
97
|
+
}
|
|
98
|
+
export function applySessionAuthorityToDispatch({ localOwnership, sessionAuthorityConflict, authoritativeSession, dispatchOwnerMismatch }) {
|
|
99
|
+
if (sessionAuthorityConflict) {
|
|
100
|
+
return { state: "conflict", conflict: sessionAuthorityConflict };
|
|
101
|
+
}
|
|
102
|
+
if (localOwnership.state === "current" && authoritativeSession &&
|
|
103
|
+
dispatchOwnerMismatch) {
|
|
104
|
+
return {
|
|
105
|
+
state: "conflict",
|
|
106
|
+
conflict: {
|
|
107
|
+
reason: "the current dispatch Turn and first-class Session binding disagree",
|
|
108
|
+
owner_session_id: dispatchOwnerMismatch.ownerSessionId,
|
|
109
|
+
bound_session_id: authoritativeSession.session_id,
|
|
110
|
+
recovery: "inspect Session and Turn state before performing a side effect"
|
|
111
|
+
}
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
return localOwnership;
|
|
115
|
+
}
|
|
116
|
+
export function compareManagedConversationRecency(left, right) {
|
|
117
|
+
const leftTime = Date.parse(String(left.updated_at ?? left.created_at ?? ""));
|
|
118
|
+
const rightTime = Date.parse(String(right.updated_at ?? right.created_at ?? ""));
|
|
119
|
+
if (Number.isFinite(leftTime) && Number.isFinite(rightTime) &&
|
|
120
|
+
leftTime !== rightTime)
|
|
121
|
+
return rightTime - leftTime;
|
|
122
|
+
if (Number.isFinite(leftTime) !== Number.isFinite(rightTime)) {
|
|
123
|
+
return Number.isFinite(leftTime) ? -1 : 1;
|
|
124
|
+
}
|
|
125
|
+
return left.conversation_id.localeCompare(right.conversation_id);
|
|
126
|
+
}
|
|
127
|
+
export function decideManagedTerminalAssociation({ allRelated, displayedRelated, authoritativeSession, sessionAuthorityRequired, currentOwner }) {
|
|
128
|
+
if (currentOwner && !allRelated.some((conversation) => conversation.conversation_id === currentOwner.conversation_id))
|
|
129
|
+
allRelated.push(currentOwner);
|
|
130
|
+
const sessionIds = new Set(allRelated.map((conversation) => sessionIdForConversation(conversation)));
|
|
131
|
+
const legacySessionId = [...displayedRelated]
|
|
132
|
+
.sort(compareManagedConversationRecency)
|
|
133
|
+
.map((conversation) => sessionIdForConversation(conversation))[0] ??
|
|
134
|
+
[...allRelated]
|
|
135
|
+
.sort(compareManagedConversationRecency)
|
|
136
|
+
.map((conversation) => sessionIdForConversation(conversation))[0];
|
|
137
|
+
const managedSessionId = authoritativeSession?.session_id ??
|
|
138
|
+
(!sessionAuthorityRequired
|
|
139
|
+
? currentOwner
|
|
140
|
+
? sessionIdForConversation(currentOwner)
|
|
141
|
+
: legacySessionId
|
|
142
|
+
: undefined);
|
|
143
|
+
const historySessionId = managedSessionId ?? legacySessionId;
|
|
144
|
+
return {
|
|
145
|
+
managedSessionId,
|
|
146
|
+
historySessionId,
|
|
147
|
+
sessionIds,
|
|
148
|
+
sessionAllRelated: historySessionId
|
|
149
|
+
? allRelated.filter((conversation) => sessionIdForConversation(conversation) === historySessionId)
|
|
150
|
+
: [],
|
|
151
|
+
sessionDisplayedRelated: historySessionId
|
|
152
|
+
? displayedRelated.filter((conversation) => sessionIdForConversation(conversation) === historySessionId)
|
|
153
|
+
: []
|
|
154
|
+
};
|
|
155
|
+
}
|
|
156
|
+
export function selectManagedTerminalHistory({ displayedRelated, currentConversationId, hasCurrentTurn, includeAll }) {
|
|
157
|
+
const sorted = [...displayedRelated]
|
|
158
|
+
.filter((conversation) => conversation.conversation_id !== currentConversationId)
|
|
159
|
+
.sort(compareManagedConversationRecency);
|
|
160
|
+
const recentConversation = hasCurrentTurn ? undefined : sorted[0];
|
|
161
|
+
return {
|
|
162
|
+
recentConversation,
|
|
163
|
+
historyConversations: includeAll
|
|
164
|
+
? sorted.filter((conversation) => conversation.conversation_id !== recentConversation?.conversation_id)
|
|
165
|
+
: []
|
|
166
|
+
};
|
|
167
|
+
}
|
|
168
|
+
export function managedTurnNeedsAttention(facts) {
|
|
169
|
+
return isSessionSendBlockingStatus(facts.status) ||
|
|
170
|
+
["pending", "failed"].includes(facts.callbackDeliveryStatus ?? "");
|
|
171
|
+
}
|
|
172
|
+
export function projectTerminalDispatchConflict(facts) {
|
|
173
|
+
return {
|
|
174
|
+
reason: facts.reason,
|
|
175
|
+
dispatch_status: facts.dispatchStatus,
|
|
176
|
+
owner_conversation_id: facts.ownerConversationId,
|
|
177
|
+
message_id: facts.messageId,
|
|
178
|
+
recovery: "inspect the shared terminal pane and explicitly resolve the current dispatch before performing a side effect"
|
|
179
|
+
};
|
|
180
|
+
}
|
|
181
|
+
export function decideLocalTerminalDispatchOwnership(facts) {
|
|
182
|
+
if (facts.localOwner) {
|
|
183
|
+
if (!facts.localOwnerMatchesLiveTerminal) {
|
|
184
|
+
return {
|
|
185
|
+
state: "conflict",
|
|
186
|
+
conflict: {
|
|
187
|
+
reason: "the terminal dispatch owner no longer matches the live coding-agent process identity or workspace",
|
|
188
|
+
owner_conversation_id: facts.ledgerOwnerId,
|
|
189
|
+
recovery: "inspect the shared terminal pane and explicitly resolve the stale dispatch before performing a side effect"
|
|
190
|
+
}
|
|
191
|
+
};
|
|
192
|
+
}
|
|
193
|
+
return { state: "current", conversation: facts.localOwner };
|
|
194
|
+
}
|
|
195
|
+
return {
|
|
196
|
+
state: "conflict",
|
|
197
|
+
conflict: {
|
|
198
|
+
reason: "the terminal dispatch owner belongs to another AKK store or is not supported by this list view",
|
|
199
|
+
owner_conversation_id: facts.ledgerOwnerId,
|
|
200
|
+
recovery: "inspect the shared terminal pane and use the AKK store that owns the current dispatch"
|
|
201
|
+
}
|
|
202
|
+
};
|
|
203
|
+
}
|
|
204
|
+
export function selectTerminalAvailableActions({ ownership, currentActions, sessionAwareRawActions, nonOwnerRawActions, authoritativeSendAction, reconcileBindingAction, terminalScopedApprovalAction, isAction = (value) => Boolean(value) }) {
|
|
205
|
+
const base = ownership === "current"
|
|
206
|
+
? currentActions
|
|
207
|
+
: ownership === "conflict"
|
|
208
|
+
? {
|
|
209
|
+
...safeConflictActions(sessionAwareRawActions, isAction),
|
|
210
|
+
...(authoritativeSendAction ? { send: authoritativeSendAction } : {}),
|
|
211
|
+
...(reconcileBindingAction
|
|
212
|
+
? { reconcile_binding: reconcileBindingAction }
|
|
213
|
+
: {})
|
|
214
|
+
}
|
|
215
|
+
: {
|
|
216
|
+
...nonOwnerRawActions,
|
|
217
|
+
...(authoritativeSendAction ? { send: authoritativeSendAction } : {})
|
|
218
|
+
};
|
|
219
|
+
return terminalScopedApprovalAction
|
|
220
|
+
? { ...base, approve: terminalScopedApprovalAction }
|
|
221
|
+
: base;
|
|
222
|
+
}
|
|
223
|
+
function safeConflictActions(actions, isAction) {
|
|
224
|
+
return {
|
|
225
|
+
...(isAction(actions.status) ? { status: actions.status } : {}),
|
|
226
|
+
...(isAction(actions.close) ? { close: actions.close } : {})
|
|
227
|
+
};
|
|
228
|
+
}
|
|
229
|
+
export function nonOwnerTerminalActions(actions, facts) {
|
|
230
|
+
if (!facts.hasAuthoritativeSession)
|
|
231
|
+
return actions;
|
|
232
|
+
const next = {};
|
|
233
|
+
for (const name of Object.keys(actions)) {
|
|
234
|
+
if (name !== "approve" &&
|
|
235
|
+
!(facts.rolloutBackedCodexSession && name === "send"))
|
|
236
|
+
next[name] = actions[name];
|
|
237
|
+
}
|
|
238
|
+
return next;
|
|
239
|
+
}
|
|
240
|
+
export function projectTerminalManagement({ managedSessionId, managedSessionShortRef, currentTurn, recentTurn, sessionAllRelatedCount, hiddenTurnCount, sessionCount, authoritativeSession, history }) {
|
|
241
|
+
return {
|
|
242
|
+
session_id: managedSessionId ?? null,
|
|
243
|
+
session_short_ref: managedSessionShortRef,
|
|
244
|
+
current_turn: currentTurn ?? null,
|
|
245
|
+
recent_turn: recentTurn ?? null,
|
|
246
|
+
turn_count: sessionAllRelatedCount,
|
|
247
|
+
hidden_turn_count: hiddenTurnCount,
|
|
248
|
+
session_count: sessionCount,
|
|
249
|
+
...(authoritativeSession ? managedBindingProjection(authoritativeSession) : {}),
|
|
250
|
+
...(history ? { history } : {})
|
|
251
|
+
};
|
|
252
|
+
}
|
|
253
|
+
function managedBindingProjection(session) {
|
|
254
|
+
return {
|
|
255
|
+
binding_status: session.status,
|
|
256
|
+
binding_id: session.binding?.binding_id ?? null,
|
|
257
|
+
binding_generation: session.binding?.generation ?? null,
|
|
258
|
+
native_thread_id: session.binding?.native_thread_id ?? null,
|
|
259
|
+
binding_token: managedSessionBindingToken(session)
|
|
260
|
+
};
|
|
261
|
+
}
|
|
262
|
+
export function authoritativeTerminalIdentity(session) {
|
|
263
|
+
const binding = session?.binding;
|
|
264
|
+
return binding?.native_thread_id && session
|
|
265
|
+
? {
|
|
266
|
+
native_agent_session_id: binding.native_thread_id,
|
|
267
|
+
native_agent_process_uuid: binding.native_process.process_uuid,
|
|
268
|
+
native_agent_process_birth: binding.native_process.process_birth,
|
|
269
|
+
native_agent_rollout: binding.native_process.rollout,
|
|
270
|
+
native_agent_identity_evidence: binding.native_process.evidence,
|
|
271
|
+
lifecycle_binding_token: managedSessionBindingToken(session)
|
|
272
|
+
}
|
|
273
|
+
: {};
|
|
274
|
+
}
|
|
275
|
+
export function projectPublicManagementConflict({ conflict, verifiedEmptyToken, deferredToken, explicitlyAbandonedPredecessor }) {
|
|
276
|
+
if (!conflict)
|
|
277
|
+
return undefined;
|
|
278
|
+
if (verifiedEmptyToken) {
|
|
279
|
+
return {
|
|
280
|
+
...conflict,
|
|
281
|
+
kind: "verified_empty_native_session",
|
|
282
|
+
reason: "the previously bound Codex rollout is conclusively closed while the same terminal process is at an exact empty prompt",
|
|
283
|
+
recovery: "use only the exact snapshot-bound send action listed for this terminal"
|
|
284
|
+
};
|
|
285
|
+
}
|
|
286
|
+
if (deferredToken && explicitlyAbandonedPredecessor) {
|
|
287
|
+
return {
|
|
288
|
+
...conflict,
|
|
289
|
+
kind: "explicitly_abandoned_predecessor_adoptable",
|
|
290
|
+
reason: "the explicitly abandoned Codex predecessor rollout is no longer open and the current exact rollout inventory is unclaimed",
|
|
291
|
+
recovery: "use only the exact snapshot-bound follow-current send action listed for this terminal"
|
|
292
|
+
};
|
|
293
|
+
}
|
|
294
|
+
return conflict;
|
|
295
|
+
}
|
|
296
|
+
export function projectHandoffPresentation(facts) {
|
|
297
|
+
const external = facts.externalHandoffDetected
|
|
298
|
+
? {
|
|
299
|
+
handoff_state: facts.externalHandoffAdoptable
|
|
300
|
+
? "external_handoff_adoptable"
|
|
301
|
+
: "external_handoff_blocked",
|
|
302
|
+
...(handoffBlockedReason(facts)
|
|
303
|
+
? { handoff_blocked_reason: handoffBlockedReason(facts) }
|
|
304
|
+
: {})
|
|
305
|
+
}
|
|
306
|
+
: {};
|
|
307
|
+
return facts.verifiedEmptyToken
|
|
308
|
+
? { ...external, handoff_state: "verified_empty_native_session_adoptable" }
|
|
309
|
+
: external;
|
|
310
|
+
}
|
|
311
|
+
function handoffBlockedReason(facts) {
|
|
312
|
+
if (facts.recoveryBlockingTurnCount > 0) {
|
|
313
|
+
return "the terminal has unresolved managed Turn state; use only a listed blocking_turns recovery action";
|
|
314
|
+
}
|
|
315
|
+
if (facts.hasHandoffDecision) {
|
|
316
|
+
return "the source Session has one active Turn; use only the snapshot-bound handoff_decision after explicit confirmation";
|
|
317
|
+
}
|
|
318
|
+
if (facts.sourceBlockingTurnCount > 0) {
|
|
319
|
+
return "the conflicting source Session has unresolved Turn state but no snapshot-bound handoff decision is currently safe; inspect the conflict and refresh";
|
|
320
|
+
}
|
|
321
|
+
return facts.automatedInputComposerReady
|
|
322
|
+
? undefined
|
|
323
|
+
: "the current terminal composer is not an exact empty idle frame";
|
|
324
|
+
}
|
|
325
|
+
export function projectReconcileBindingAction(facts) {
|
|
326
|
+
return {
|
|
327
|
+
tool: "agent_knock_knock_reconcile_binding",
|
|
328
|
+
arguments: {
|
|
329
|
+
terminal_id: facts.terminalId,
|
|
330
|
+
conflicting_session_id: facts.conflictingSession.session_id,
|
|
331
|
+
expected_session_revision: facts.conflictingSessionRevision,
|
|
332
|
+
expected_binding_token: managedSessionBindingToken(facts.conflictingSession),
|
|
333
|
+
expected_terminal_token: facts.expectedTerminalToken
|
|
334
|
+
},
|
|
335
|
+
requires_user_intent: true
|
|
336
|
+
};
|
|
337
|
+
}
|
|
338
|
+
export function projectHandoffDecision(facts) {
|
|
339
|
+
return {
|
|
340
|
+
kind: "active_turn_requires_decision",
|
|
341
|
+
source_session_id: facts.sourceSessionId,
|
|
342
|
+
source_turn_id: facts.sourceTurnId,
|
|
343
|
+
live_native_thread_id: facts.liveNativeThreadId,
|
|
344
|
+
choices: {
|
|
345
|
+
take_over_current: {
|
|
346
|
+
action: {
|
|
347
|
+
tool: "agent_knock_knock_close",
|
|
348
|
+
arguments: {
|
|
349
|
+
turn_id: facts.actionTurnId ?? facts.sourceTurnId,
|
|
350
|
+
reason: "superseded_by_human_context_switch",
|
|
351
|
+
expected_handoff_token: facts.handoffDecisionToken
|
|
352
|
+
},
|
|
353
|
+
requires_explicit_user_confirmation: true
|
|
354
|
+
},
|
|
355
|
+
after: "refresh list and use its follow-current send"
|
|
356
|
+
},
|
|
357
|
+
keep_source: {
|
|
358
|
+
effect: "no Store or terminal mutation",
|
|
359
|
+
after: "restore source native thread in the Codex/Claude TUI, then refresh list"
|
|
360
|
+
}
|
|
361
|
+
}
|
|
362
|
+
};
|
|
363
|
+
}
|
|
364
|
+
export function projectBlockingTurn(facts) {
|
|
365
|
+
return {
|
|
366
|
+
session_id: facts.sessionId,
|
|
367
|
+
turn_id: facts.turnId,
|
|
368
|
+
status: facts.status,
|
|
369
|
+
recovery_action: {
|
|
370
|
+
tool: "agent_knock_knock_close",
|
|
371
|
+
arguments: { turn_id: facts.recoveryTurnId ?? facts.turnId },
|
|
372
|
+
requires_explicit_user_confirmation: true
|
|
373
|
+
}
|
|
374
|
+
};
|
|
375
|
+
}
|
|
376
|
+
//# sourceMappingURL=terminal-action-projection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"terminal-action-projection.js","sourceRoot":"","sources":["../../src/terminal-action-projection.ts"],"names":[],"mappings":"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"}
|
|
@@ -376,6 +376,9 @@ export declare function isExactClaudeIdleComposer(screen: string): boolean;
|
|
|
376
376
|
* name before the same exact-frame proof was reused by lifecycle handoff.
|
|
377
377
|
*/
|
|
378
378
|
export declare function isExactClaudeNativeInspectionIdleComposer(screen: string): boolean;
|
|
379
|
+
export declare function exactCodexReadyStyledComposerCapture(screen: string): {
|
|
380
|
+
digest: string;
|
|
381
|
+
} | undefined;
|
|
379
382
|
export declare function terminalApprovalFingerprint(agent: ExecutorKind, terminalControl: TerminalControlRef, inspection: TerminalScreenInspection, options?: {
|
|
380
383
|
screen?: string;
|
|
381
384
|
runtime?: TerminalRuntimeIdentity;
|
|
@@ -2,7 +2,7 @@ import { createHash } from "node:crypto";
|
|
|
2
2
|
import { formatTerminalConversationId, parseTerminalConversationId, terminalControlCapabilitiesForAdapter } from "./terminal-agent-adapter.js";
|
|
3
3
|
import { enrichActiveProcessesWithTerminalControl, TerminalControlInputNotSentError } from "./terminal-control-provider.js";
|
|
4
4
|
import { hasCanonicalTerminalEndpoint, sameTerminalControlIncarnation, terminalEndpointFromControlRef, terminalEndpointIdentityKey } from "./terminal-control-ref.js";
|
|
5
|
-
// Verified Codex profiles through 0.
|
|
5
|
+
// Verified Codex profiles through 0.148.0 keep Enter in paste/newline mode for
|
|
6
6
|
// 120ms after burst input. Cross that boundary rather than landing on it, and
|
|
7
7
|
// also require observable composer stability instead of treating this delay
|
|
8
8
|
// alone as acceptance.
|
|
@@ -26,6 +26,10 @@ const CODEX_NATIVE_STATUS_POPUP_BY_PROFILE = {
|
|
|
26
26
|
"codex-tui-0.147.0": [
|
|
27
27
|
" /status show current session configuration and token usage",
|
|
28
28
|
" /statusline configure which items appear in the status line"
|
|
29
|
+
],
|
|
30
|
+
"codex-tui-0.148.0": [
|
|
31
|
+
" /status show current session configuration and token usage",
|
|
32
|
+
" /statusline configure which items appear in the status line"
|
|
29
33
|
]
|
|
30
34
|
};
|
|
31
35
|
// Codex's verified `/status` profiles are exercised against its canonical
|
|
@@ -36,7 +40,8 @@ const CODEX_NATIVE_STATUS_POPUP_BY_PROFILE = {
|
|
|
36
40
|
const CODEX_NATIVE_STATUS_MIN_VIEWPORT_BY_PROFILE = {
|
|
37
41
|
"codex-tui-0.146.0": 80,
|
|
38
42
|
"codex-tui-0.146.1": 80,
|
|
39
|
-
"codex-tui-0.147.0": 80
|
|
43
|
+
"codex-tui-0.147.0": 80,
|
|
44
|
+
"codex-tui-0.148.0": 80
|
|
40
45
|
};
|
|
41
46
|
const CLAUDE_NATIVE_STATUS_POPUP_BY_PROFILE = {
|
|
42
47
|
"claude-code-2.1.218-native-status": [
|
|
@@ -50,8 +55,28 @@ const CLAUDE_NATIVE_STATUS_POPUP_BY_PROFILE = {
|
|
|
50
55
|
"/statusline Set up Claude Code's status line UI",
|
|
51
56
|
"/ide Manage IDE integrations and show status",
|
|
52
57
|
"/usage Show session cost, plan usage, and activity stats"
|
|
58
|
+
],
|
|
59
|
+
"claude-code-2.1.237-native-status": [
|
|
60
|
+
"/status Show Claude Code status including version, model, account, API connectivity, and tool statuses",
|
|
61
|
+
"/statusline Set up Claude Code's status line UI",
|
|
62
|
+
"/ide Manage IDE integrations and show status",
|
|
63
|
+
"/usage Show session cost, plan usage, and activity stats"
|
|
53
64
|
]
|
|
54
65
|
};
|
|
66
|
+
const CLAUDE_NATIVE_STATUS_SETTLE_BY_PROFILE = {
|
|
67
|
+
"claude-code-2.1.218-native-status": {
|
|
68
|
+
minimumStableMs: 80,
|
|
69
|
+
maximumSettleMs: 2_000
|
|
70
|
+
},
|
|
71
|
+
"claude-code-2.1.226-native-status": {
|
|
72
|
+
minimumStableMs: 80,
|
|
73
|
+
maximumSettleMs: 5_000
|
|
74
|
+
},
|
|
75
|
+
"claude-code-2.1.237-native-status": {
|
|
76
|
+
minimumStableMs: 80,
|
|
77
|
+
maximumSettleMs: 5_000
|
|
78
|
+
}
|
|
79
|
+
};
|
|
55
80
|
const CODEX_LARGE_PASTE_CHAR_THRESHOLD = 1_000;
|
|
56
81
|
/** A terminal send failed at a boundary that proves input never started. */
|
|
57
82
|
export class TerminalInputNotStartedError extends Error {
|
|
@@ -1471,11 +1496,7 @@ function assertClosedStatusInspectionPlan(adapter, terminalControl, plan) {
|
|
|
1471
1496
|
CLAUDE_NATIVE_STATUS_POPUP_BY_PROFILE[plan.behaviorProfile] !== undefined;
|
|
1472
1497
|
const expectedSettle = codexProfile
|
|
1473
1498
|
? { minimumStableMs: CODEX_PASTE_ENTER_SETTLE_MS, maximumSettleMs: 2_000 }
|
|
1474
|
-
: plan.behaviorProfile
|
|
1475
|
-
? { minimumStableMs: 80, maximumSettleMs: 2_000 }
|
|
1476
|
-
: plan.behaviorProfile === "claude-code-2.1.226-native-status"
|
|
1477
|
-
? { minimumStableMs: 80, maximumSettleMs: 5_000 }
|
|
1478
|
-
: undefined;
|
|
1499
|
+
: CLAUDE_NATIVE_STATUS_SETTLE_BY_PROFILE[plan.behaviorProfile];
|
|
1479
1500
|
const exactPresentation = codexProfile
|
|
1480
1501
|
? plan.expectedResult.presentation === "inline" &&
|
|
1481
1502
|
plan.expectedResult.dismissal === undefined &&
|
|
@@ -1697,7 +1718,7 @@ function bareDigestFromNativeInspectionScreenFingerprint(fingerprint) {
|
|
|
1697
1718
|
function stripTerminalEscapeSequences(value) {
|
|
1698
1719
|
return value.replace(/\x1B(?:\[[0-?]*[ -/]*[@-~]|\][^\x07]*(?:\x07|\x1B\\))/gu, "");
|
|
1699
1720
|
}
|
|
1700
|
-
function exactCodexReadyStyledComposerCapture(screen) {
|
|
1721
|
+
export function exactCodexReadyStyledComposerCapture(screen) {
|
|
1701
1722
|
const lines = screen.replace(/\r\n?/gu, "\n").split("\n");
|
|
1702
1723
|
while (lines.length > 0 &&
|
|
1703
1724
|
stripTerminalEscapeSequences(lines.at(-1) ?? "").trim().length === 0) {
|