@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,93 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pure ordinary-dispatch gate. The caller owns every Store/terminal read and
|
|
3
|
+
* supplies only the facts observed at the existing preflight boundary.
|
|
4
|
+
*/
|
|
5
|
+
export declare function isActiveTerminalDispatchStatus(status: unknown): boolean;
|
|
6
|
+
export declare function isRecoverableTerminalDispatchStatus(status: unknown): boolean;
|
|
7
|
+
export type TerminalDispatchReceiptStatus = "submitted" | "enter_dispatched" | "agent_accepted";
|
|
8
|
+
export interface TerminalDispatchLedgerFacts {
|
|
9
|
+
readonly status?: string;
|
|
10
|
+
readonly lifecycle: boolean;
|
|
11
|
+
readonly transitionId?: string;
|
|
12
|
+
readonly ownerConversationId?: string;
|
|
13
|
+
}
|
|
14
|
+
export interface TerminalDispatchOwnerFacts {
|
|
15
|
+
readonly conversationId: string;
|
|
16
|
+
readonly status: string;
|
|
17
|
+
readonly released: boolean;
|
|
18
|
+
readonly continuingSameTurn: boolean;
|
|
19
|
+
readonly exactReplay: boolean;
|
|
20
|
+
}
|
|
21
|
+
export interface TerminalDispatchPreflightFacts {
|
|
22
|
+
readonly ledger: TerminalDispatchLedgerFacts;
|
|
23
|
+
readonly owner?: TerminalDispatchOwnerFacts;
|
|
24
|
+
}
|
|
25
|
+
export type TerminalDispatchPreflightPlan = {
|
|
26
|
+
action: "proceed";
|
|
27
|
+
basis: "no_blocking_dispatch" | "released_owner" | "continuing_same_turn";
|
|
28
|
+
} | {
|
|
29
|
+
action: "reject";
|
|
30
|
+
reason: "unresolved_lifecycle" | "terminal_level_dispatch" | "owner_unavailable" | "active_owner";
|
|
31
|
+
status?: string;
|
|
32
|
+
transitionId?: string;
|
|
33
|
+
ownerConversationId?: string;
|
|
34
|
+
ownerStatus?: string;
|
|
35
|
+
} | {
|
|
36
|
+
action: "replay";
|
|
37
|
+
proofLevel: "submitted" | "enter_dispatched" | "agent_accepted";
|
|
38
|
+
};
|
|
39
|
+
export interface TerminalDispatchReplayAcceptance {
|
|
40
|
+
readonly accepted: boolean;
|
|
41
|
+
readonly invalid: boolean;
|
|
42
|
+
}
|
|
43
|
+
export type TerminalDispatchLedgerAuthority = "absent" | "unreadable" | "resolved" | "stale_process_incarnation" | "inactive_status" | "active";
|
|
44
|
+
export type TerminalDispatchOwnerAuthority = "unavailable" | "released" | "terminal_mismatch" | "generation_mismatch" | "current";
|
|
45
|
+
export declare function decideTerminalDispatchOwnership(ledger: TerminalDispatchLedgerAuthority, owner?: TerminalDispatchOwnerAuthority): {
|
|
46
|
+
state: "conflict";
|
|
47
|
+
code: "ledger_unreadable";
|
|
48
|
+
basis?: undefined;
|
|
49
|
+
} | {
|
|
50
|
+
state: "none";
|
|
51
|
+
basis: "absent" | "inactive_status" | "resolved" | "stale_process_incarnation";
|
|
52
|
+
code?: undefined;
|
|
53
|
+
} | {
|
|
54
|
+
state: "needs_owner";
|
|
55
|
+
basis?: undefined;
|
|
56
|
+
code?: undefined;
|
|
57
|
+
} | {
|
|
58
|
+
readonly state: "conflict";
|
|
59
|
+
readonly code: "owner_unavailable";
|
|
60
|
+
basis?: undefined;
|
|
61
|
+
} | {
|
|
62
|
+
state: "none";
|
|
63
|
+
basis: "released_owner";
|
|
64
|
+
code?: undefined;
|
|
65
|
+
} | {
|
|
66
|
+
basis?: undefined;
|
|
67
|
+
state: "conflict";
|
|
68
|
+
code: "owner_terminal_mismatch";
|
|
69
|
+
} | {
|
|
70
|
+
basis?: undefined;
|
|
71
|
+
state: "current";
|
|
72
|
+
code?: undefined;
|
|
73
|
+
} | {
|
|
74
|
+
basis?: undefined;
|
|
75
|
+
state: "conflict";
|
|
76
|
+
code: "owner_generation_mismatch";
|
|
77
|
+
};
|
|
78
|
+
export { decideTerminalSendAuthority, type TerminalSendAuthority, type TerminalSendAuthorityFacts } from "./terminal-action-projection.js";
|
|
79
|
+
/**
|
|
80
|
+
* Preserve the legacy lazy Store read: only an ordinary active receipt status
|
|
81
|
+
* reaches owner loading, and an unresolved lifecycle ledger wins first.
|
|
82
|
+
*/
|
|
83
|
+
export declare function terminalDispatchPreflightRequiresOwner(ledger: TerminalDispatchLedgerFacts): boolean;
|
|
84
|
+
/**
|
|
85
|
+
* Reduce already-observed dispatch facts to one side-effect-free next action.
|
|
86
|
+
* Error wording, output envelopes and replay receipt construction remain in
|
|
87
|
+
* the CLI compatibility shell.
|
|
88
|
+
*/
|
|
89
|
+
export declare function decideTerminalDispatchPreflight(facts: TerminalDispatchPreflightFacts): TerminalDispatchPreflightPlan;
|
|
90
|
+
export declare function decideTerminalDispatchReplayAcceptance({ delivered, submissionOutcome }: {
|
|
91
|
+
delivered: boolean;
|
|
92
|
+
submissionOutcome: string;
|
|
93
|
+
}): TerminalDispatchReplayAcceptance;
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pure ordinary-dispatch gate. The caller owns every Store/terminal read and
|
|
3
|
+
* supplies only the facts observed at the existing preflight boundary.
|
|
4
|
+
*/
|
|
5
|
+
const TERMINAL_LEVEL_BLOCKING_STATUSES = new Set([
|
|
6
|
+
"prepared",
|
|
7
|
+
"text_injected",
|
|
8
|
+
"dispatching",
|
|
9
|
+
"uncertain",
|
|
10
|
+
"not_accepted"
|
|
11
|
+
]);
|
|
12
|
+
export function isActiveTerminalDispatchStatus(status) {
|
|
13
|
+
return typeof status === "string" && (TERMINAL_LEVEL_BLOCKING_STATUSES.has(status) ||
|
|
14
|
+
terminalDispatchReceiptStatus(status) !== undefined);
|
|
15
|
+
}
|
|
16
|
+
export function isRecoverableTerminalDispatchStatus(status) {
|
|
17
|
+
return status === "verified" || isActiveTerminalDispatchStatus(status);
|
|
18
|
+
}
|
|
19
|
+
export function decideTerminalDispatchOwnership(ledger, owner) {
|
|
20
|
+
if (ledger === "unreadable") {
|
|
21
|
+
return { state: "conflict", code: "ledger_unreadable" };
|
|
22
|
+
}
|
|
23
|
+
if (ledger !== "active")
|
|
24
|
+
return { state: "none", basis: ledger };
|
|
25
|
+
if (!owner)
|
|
26
|
+
return { state: "needs_owner" };
|
|
27
|
+
if (owner === "unavailable") {
|
|
28
|
+
return { state: "conflict", code: "owner_unavailable" };
|
|
29
|
+
}
|
|
30
|
+
if (owner === "released") {
|
|
31
|
+
return { state: "none", basis: "released_owner" };
|
|
32
|
+
}
|
|
33
|
+
if (owner === "terminal_mismatch") {
|
|
34
|
+
return {
|
|
35
|
+
state: "conflict",
|
|
36
|
+
code: "owner_terminal_mismatch"
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
return owner === "current"
|
|
40
|
+
? { state: "current" }
|
|
41
|
+
: {
|
|
42
|
+
state: "conflict",
|
|
43
|
+
code: "owner_generation_mismatch"
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
export { decideTerminalSendAuthority } from "./terminal-action-projection.js";
|
|
47
|
+
/**
|
|
48
|
+
* Preserve the legacy lazy Store read: only an ordinary active receipt status
|
|
49
|
+
* reaches owner loading, and an unresolved lifecycle ledger wins first.
|
|
50
|
+
*/
|
|
51
|
+
export function terminalDispatchPreflightRequiresOwner(ledger) {
|
|
52
|
+
return !(ledger.lifecycle && ledger.status !== "resolved") && terminalDispatchReceiptStatus(ledger.status) !== undefined;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Reduce already-observed dispatch facts to one side-effect-free next action.
|
|
56
|
+
* Error wording, output envelopes and replay receipt construction remain in
|
|
57
|
+
* the CLI compatibility shell.
|
|
58
|
+
*/
|
|
59
|
+
export function decideTerminalDispatchPreflight(facts) {
|
|
60
|
+
const { ledger } = facts;
|
|
61
|
+
if (ledger.lifecycle && ledger.status !== "resolved") {
|
|
62
|
+
return {
|
|
63
|
+
action: "reject",
|
|
64
|
+
reason: "unresolved_lifecycle",
|
|
65
|
+
status: ledger.status,
|
|
66
|
+
transitionId: ledger.transitionId
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
if (TERMINAL_LEVEL_BLOCKING_STATUSES.has(ledger.status ?? "")) {
|
|
70
|
+
return {
|
|
71
|
+
action: "reject",
|
|
72
|
+
reason: "terminal_level_dispatch",
|
|
73
|
+
status: ledger.status,
|
|
74
|
+
ownerConversationId: ledger.ownerConversationId
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
const receiptStatus = terminalDispatchReceiptStatus(ledger.status);
|
|
78
|
+
if (!receiptStatus) {
|
|
79
|
+
return { action: "proceed", basis: "no_blocking_dispatch" };
|
|
80
|
+
}
|
|
81
|
+
const owner = facts.owner;
|
|
82
|
+
if (!owner) {
|
|
83
|
+
return {
|
|
84
|
+
action: "reject",
|
|
85
|
+
reason: "owner_unavailable",
|
|
86
|
+
status: ledger.status
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
if (owner.released) {
|
|
90
|
+
return { action: "proceed", basis: "released_owner" };
|
|
91
|
+
}
|
|
92
|
+
if (owner.continuingSameTurn) {
|
|
93
|
+
return { action: "proceed", basis: "continuing_same_turn" };
|
|
94
|
+
}
|
|
95
|
+
if (owner.exactReplay) {
|
|
96
|
+
return {
|
|
97
|
+
action: "replay",
|
|
98
|
+
proofLevel: receiptStatus
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
return {
|
|
102
|
+
action: "reject",
|
|
103
|
+
reason: "active_owner",
|
|
104
|
+
status: ledger.status,
|
|
105
|
+
ownerConversationId: owner.conversationId,
|
|
106
|
+
ownerStatus: owner.status
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
function terminalDispatchReceiptStatus(status) {
|
|
110
|
+
return status === "submitted" ||
|
|
111
|
+
status === "enter_dispatched" ||
|
|
112
|
+
status === "agent_accepted"
|
|
113
|
+
? status
|
|
114
|
+
: undefined;
|
|
115
|
+
}
|
|
116
|
+
export function decideTerminalDispatchReplayAcceptance({ delivered, submissionOutcome }) {
|
|
117
|
+
return {
|
|
118
|
+
accepted: delivered,
|
|
119
|
+
invalid: submissionOutcome === "uncertain"
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
//# sourceMappingURL=terminal-dispatch-policy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"terminal-dispatch-policy.js","sourceRoot":"","sources":["../../src/terminal-dispatch-policy.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { type AgentMessage, type Conversation, type Executor } from "./protocol.js";
|
|
2
|
+
import type { TerminalControlRef } from "./terminal-agent-adapter.js";
|
|
3
|
+
import type { RecordedTerminalZeroInputAbort, TerminalDispatchAcceptance } from "./terminal-dispatch-application.js";
|
|
4
|
+
import type { terminalSubmissionReplayReceipt } from "./terminal-dispatch-receipt.js";
|
|
5
|
+
type ReplayReceipt = ReturnType<typeof terminalSubmissionReplayReceipt>;
|
|
6
|
+
export interface TerminalDispatchPresentationContext {
|
|
7
|
+
message: AgentMessage;
|
|
8
|
+
executor: Executor;
|
|
9
|
+
terminalControl: TerminalControlRef;
|
|
10
|
+
}
|
|
11
|
+
export interface TerminalDispatchPresentationPorts {
|
|
12
|
+
write(value: Record<string, unknown>): void;
|
|
13
|
+
budget(conversation: Conversation): unknown;
|
|
14
|
+
nextAction(input: Readonly<{
|
|
15
|
+
conversationId: string;
|
|
16
|
+
sessionId: string;
|
|
17
|
+
turnId: string;
|
|
18
|
+
source: "terminal_control";
|
|
19
|
+
callbackExpected: boolean;
|
|
20
|
+
}>): unknown;
|
|
21
|
+
summarize(value: unknown): unknown;
|
|
22
|
+
}
|
|
23
|
+
export interface OpenClawYieldNextActionInput {
|
|
24
|
+
conversationId: string;
|
|
25
|
+
sessionId: string;
|
|
26
|
+
turnId: string;
|
|
27
|
+
source: "terminal_control";
|
|
28
|
+
callbackExpected: boolean;
|
|
29
|
+
}
|
|
30
|
+
export declare function openClawYieldNextAction({ conversationId, sessionId, turnId, source, callbackExpected }: OpenClawYieldNextActionInput): {
|
|
31
|
+
action: "yield";
|
|
32
|
+
reason: string;
|
|
33
|
+
source: "terminal_control";
|
|
34
|
+
conversation_id: string;
|
|
35
|
+
session_id: string;
|
|
36
|
+
turn_id: string;
|
|
37
|
+
callback_expected: boolean;
|
|
38
|
+
do_not: string;
|
|
39
|
+
expected_callback: string;
|
|
40
|
+
};
|
|
41
|
+
export declare function presentTerminalDispatchReplay(input: Readonly<{
|
|
42
|
+
owner: Conversation;
|
|
43
|
+
receipt: ReplayReceipt;
|
|
44
|
+
accepted: boolean;
|
|
45
|
+
acceptanceInvalid: boolean;
|
|
46
|
+
receiptConversationId: string;
|
|
47
|
+
receiptMessageId: string;
|
|
48
|
+
callbackExpected: boolean;
|
|
49
|
+
}>, context: TerminalDispatchPresentationContext, ports: TerminalDispatchPresentationPorts): void;
|
|
50
|
+
export declare function presentTerminalZeroInputAbort(failure: RecordedTerminalZeroInputAbort, context: TerminalDispatchPresentationContext, ports: TerminalDispatchPresentationPorts, monitorPid?: number | null): void;
|
|
51
|
+
export declare function presentTerminalIdentityFailure(conversation: Conversation, reason: string, context: TerminalDispatchPresentationContext, ports: TerminalDispatchPresentationPorts, monitorPid?: number | null): void;
|
|
52
|
+
export declare function presentTerminalUncertain(input: Readonly<{
|
|
53
|
+
conversation: Conversation;
|
|
54
|
+
stalledConversationIds: readonly string[];
|
|
55
|
+
textInjected: boolean;
|
|
56
|
+
enterDispatched: boolean;
|
|
57
|
+
monitorPid?: number | null;
|
|
58
|
+
}>, context: TerminalDispatchPresentationContext, ports: TerminalDispatchPresentationPorts): void;
|
|
59
|
+
export declare function presentTerminalCompleted(input: Readonly<{
|
|
60
|
+
conversation: Conversation;
|
|
61
|
+
acceptance?: TerminalDispatchAcceptance;
|
|
62
|
+
monitorPid?: number | null;
|
|
63
|
+
bookkeepingWarning?: string;
|
|
64
|
+
}>, context: TerminalDispatchPresentationContext, ports: TerminalDispatchPresentationPorts): void;
|
|
65
|
+
export {};
|
|
@@ -0,0 +1,258 @@
|
|
|
1
|
+
import { sessionIdForConversation, turnIdForConversation } from "./protocol.js";
|
|
2
|
+
import { isRecord } from "./value-guards.js";
|
|
3
|
+
export function openClawYieldNextAction({ conversationId, sessionId, turnId, source, callbackExpected }) {
|
|
4
|
+
const callbackText = callbackExpected
|
|
5
|
+
? "The coding agent should report completion, questions, or errors through the existing Agent Knock Knock callback for this conversation."
|
|
6
|
+
: "No AKK-managed callback is registered for this raw terminal-controlled id; do not wait synchronously. Use AKK status/list later or attach/create an AKK conversation when callback delivery is required.";
|
|
7
|
+
return {
|
|
8
|
+
action: "yield",
|
|
9
|
+
reason: "The requested agent work was handed off asynchronously. End this OpenClaw turn now instead of waiting, polling, or treating the send as a synchronous agent result.",
|
|
10
|
+
source,
|
|
11
|
+
conversation_id: conversationId,
|
|
12
|
+
session_id: sessionId,
|
|
13
|
+
turn_id: turnId,
|
|
14
|
+
callback_expected: callbackExpected,
|
|
15
|
+
do_not: "Do not inspect event logs, process lists, terminal screens, files, stdout, or stderr while waiting unless the user explicitly asks for status.",
|
|
16
|
+
expected_callback: callbackText
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
export function presentTerminalDispatchReplay(input, context, ports) {
|
|
20
|
+
const sessionId = sessionIdForConversation(input.owner);
|
|
21
|
+
const turnId = turnIdForConversation(input.owner);
|
|
22
|
+
ports.write({
|
|
23
|
+
session_id: sessionId,
|
|
24
|
+
turn_id: turnId,
|
|
25
|
+
conversation: input.owner,
|
|
26
|
+
message: {
|
|
27
|
+
...context.message,
|
|
28
|
+
id: input.receiptMessageId,
|
|
29
|
+
conversation_id: input.receiptConversationId,
|
|
30
|
+
session_id: sessionId,
|
|
31
|
+
turn_id: turnId,
|
|
32
|
+
metadata: {
|
|
33
|
+
...(isRecord(context.message.metadata)
|
|
34
|
+
? context.message.metadata
|
|
35
|
+
: {}),
|
|
36
|
+
task_id: input.receiptConversationId,
|
|
37
|
+
session_id: sessionId,
|
|
38
|
+
turn_id: turnId
|
|
39
|
+
}
|
|
40
|
+
},
|
|
41
|
+
delivered: input.receipt.delivered,
|
|
42
|
+
status: input.receipt.status,
|
|
43
|
+
submission_outcome: input.receipt.submission_outcome,
|
|
44
|
+
background: true,
|
|
45
|
+
callback_expected: input.callbackExpected,
|
|
46
|
+
terminal_control: context.terminalControl,
|
|
47
|
+
executor: context.executor,
|
|
48
|
+
replayed: input.receipt.replayed,
|
|
49
|
+
delivery_receipt: input.receipt.delivery_receipt,
|
|
50
|
+
...(input.receipt.do_not_retry
|
|
51
|
+
? { do_not_retry: input.receipt.do_not_retry }
|
|
52
|
+
: {}),
|
|
53
|
+
reason: input.accepted
|
|
54
|
+
? "AKK replayed the durable native acceptance receipt for an identical active terminal request and did not send terminal input again."
|
|
55
|
+
: input.acceptanceInvalid
|
|
56
|
+
? `AKK refused to replay an invalid native acceptance receipt (${input.receipt.evidence_error ?? "evidence validation failed"}); no terminal input was sent.`
|
|
57
|
+
: "AKK replayed the original transport-level receipt without upgrading it to native acceptance and did not send terminal input again.",
|
|
58
|
+
openclaw_next_action: input.accepted
|
|
59
|
+
? ports.nextAction({
|
|
60
|
+
conversationId: input.receiptConversationId,
|
|
61
|
+
sessionId,
|
|
62
|
+
turnId,
|
|
63
|
+
source: "terminal_control",
|
|
64
|
+
callbackExpected: input.callbackExpected
|
|
65
|
+
})
|
|
66
|
+
: {
|
|
67
|
+
action: "inspect",
|
|
68
|
+
conversation_id: input.receiptConversationId,
|
|
69
|
+
session_id: sessionId,
|
|
70
|
+
turn_id: turnId,
|
|
71
|
+
do_not_retry: true,
|
|
72
|
+
reason: input.acceptanceInvalid
|
|
73
|
+
? "The stored native acceptance evidence is invalid; inspect and explicitly close this Turn."
|
|
74
|
+
: "Only terminal transport is proven; wait for native acceptance or inspect the shared pane."
|
|
75
|
+
}
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
function zeroInputText(failure) {
|
|
79
|
+
const setup = failure.outcome.failureKind === "setup";
|
|
80
|
+
const blocker = failure.outcome.disposition === "inspect"
|
|
81
|
+
? failure.outcome.blocker
|
|
82
|
+
: undefined;
|
|
83
|
+
if (failure.outcome.safeToRetry) {
|
|
84
|
+
return setup
|
|
85
|
+
? {
|
|
86
|
+
reason: "AKK failed before terminal input; this terminal submission was not sent and may be retried.",
|
|
87
|
+
nextReason: "The failure occurred before any terminal input."
|
|
88
|
+
}
|
|
89
|
+
: {
|
|
90
|
+
reason: "AKK proved that terminal input never started; this submission may be retried.",
|
|
91
|
+
nextReason: "The terminal transport failed before any input operation succeeded."
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
if (!setup) {
|
|
95
|
+
return {
|
|
96
|
+
reason: "AKK proved terminal input never started but could not make every abort receipt and Session rollback durable; inspect before retrying.",
|
|
97
|
+
nextReason: "The pre-input failure could not be fully reconciled in durable state."
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
return blocker === "dispatch_ledger_restore"
|
|
101
|
+
? {
|
|
102
|
+
reason: "AKK failed before terminal input but could not restore the terminal dispatch ledger; inspect and close the conversation before retrying.",
|
|
103
|
+
nextReason: "The terminal ledger could not be restored automatically."
|
|
104
|
+
}
|
|
105
|
+
: blocker === "raw_attach_rollback"
|
|
106
|
+
? {
|
|
107
|
+
reason: "AKK failed before terminal input but could not detach the provisional raw-attach Session; inspect its exact binding before retrying.",
|
|
108
|
+
nextReason: "The provisional raw-attach Session could not be detached automatically."
|
|
109
|
+
}
|
|
110
|
+
: {
|
|
111
|
+
reason: "AKK failed before terminal input but could not persist the aborted receipt; inspect the conversation before retrying.",
|
|
112
|
+
nextReason: "The aborted receipt could not be made durable."
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
export function presentTerminalZeroInputAbort(failure, context, ports, monitorPid) {
|
|
116
|
+
const { reportedConversation, receiptConversation } = failure;
|
|
117
|
+
const text = zeroInputText(failure);
|
|
118
|
+
ports.write({
|
|
119
|
+
session_id: sessionIdForConversation(receiptConversation),
|
|
120
|
+
turn_id: turnIdForConversation(receiptConversation),
|
|
121
|
+
conversation: reportedConversation,
|
|
122
|
+
message: context.message,
|
|
123
|
+
delivered: false,
|
|
124
|
+
status: "submission_aborted",
|
|
125
|
+
submission_outcome: "aborted",
|
|
126
|
+
background: true,
|
|
127
|
+
callback_expected: false,
|
|
128
|
+
terminal_control: context.terminalControl,
|
|
129
|
+
monitor_pid: monitorPid ?? null,
|
|
130
|
+
executor: context.executor,
|
|
131
|
+
safe_to_retry: failure.outcome.safeToRetry,
|
|
132
|
+
do_not_retry: !failure.outcome.safeToRetry,
|
|
133
|
+
reason: text.reason,
|
|
134
|
+
openclaw_next_action: {
|
|
135
|
+
action: failure.outcome.safeToRetry ? "retry" : "inspect",
|
|
136
|
+
conversation_id: receiptConversation.conversation_id,
|
|
137
|
+
session_id: sessionIdForConversation(reportedConversation),
|
|
138
|
+
turn_id: turnIdForConversation(reportedConversation),
|
|
139
|
+
safe_to_retry: failure.outcome.safeToRetry,
|
|
140
|
+
do_not_retry: !failure.outcome.safeToRetry,
|
|
141
|
+
reason: text.nextReason
|
|
142
|
+
}
|
|
143
|
+
});
|
|
144
|
+
}
|
|
145
|
+
export function presentTerminalIdentityFailure(conversation, reason, context, ports, monitorPid) {
|
|
146
|
+
ports.write({
|
|
147
|
+
session_id: sessionIdForConversation(conversation),
|
|
148
|
+
turn_id: turnIdForConversation(conversation),
|
|
149
|
+
conversation,
|
|
150
|
+
message: context.message,
|
|
151
|
+
delivered: false,
|
|
152
|
+
status: "submission_uncertain",
|
|
153
|
+
submission_outcome: "uncertain",
|
|
154
|
+
background: true,
|
|
155
|
+
callback_expected: false,
|
|
156
|
+
terminal_control: context.terminalControl,
|
|
157
|
+
monitor_pid: monitorPid ?? null,
|
|
158
|
+
executor: context.executor,
|
|
159
|
+
delivery_receipt: "enter_dispatched",
|
|
160
|
+
do_not_retry: true,
|
|
161
|
+
reason,
|
|
162
|
+
openclaw_next_action: {
|
|
163
|
+
action: "inspect",
|
|
164
|
+
conversation_id: conversation.conversation_id,
|
|
165
|
+
session_id: sessionIdForConversation(conversation),
|
|
166
|
+
turn_id: turnIdForConversation(conversation),
|
|
167
|
+
do_not_retry: true,
|
|
168
|
+
reason: "The input was submitted, but AKK could not fence later side effects to an exact native session. Inspect the pane and close this Turn before continuing."
|
|
169
|
+
}
|
|
170
|
+
});
|
|
171
|
+
}
|
|
172
|
+
export function presentTerminalUncertain(input, context, ports) {
|
|
173
|
+
ports.write({
|
|
174
|
+
session_id: sessionIdForConversation(input.conversation),
|
|
175
|
+
turn_id: turnIdForConversation(input.conversation),
|
|
176
|
+
conversation: input.conversation,
|
|
177
|
+
message: context.message,
|
|
178
|
+
delivered: false,
|
|
179
|
+
status: "submission_uncertain",
|
|
180
|
+
submission_outcome: "uncertain",
|
|
181
|
+
background: true,
|
|
182
|
+
callback_expected: Boolean(input.conversation.gateway_method),
|
|
183
|
+
terminal_control: context.terminalControl,
|
|
184
|
+
monitor_pid: input.monitorPid ?? null,
|
|
185
|
+
executor: context.executor,
|
|
186
|
+
do_not_retry: true,
|
|
187
|
+
stalled_conversation_ids: input.stalledConversationIds,
|
|
188
|
+
reason: input.enterDispatched
|
|
189
|
+
? "AKK dispatched Enter but native acceptance or its exact identity became uncertain. Do not retry automatically; inspect this conversation and pane."
|
|
190
|
+
: input.textInjected
|
|
191
|
+
? "AKK injected text but could not prove that Enter was dispatched. Do not retry automatically; inspect this conversation and pane."
|
|
192
|
+
: "AKK could not prove that terminal input remained untouched. Inspect this conversation before retrying.",
|
|
193
|
+
openclaw_next_action: {
|
|
194
|
+
action: "inspect",
|
|
195
|
+
conversation_id: input.conversation.conversation_id,
|
|
196
|
+
session_id: sessionIdForConversation(input.conversation),
|
|
197
|
+
turn_id: turnIdForConversation(input.conversation),
|
|
198
|
+
do_not_retry: true,
|
|
199
|
+
reason: "The terminal submission outcome is uncertain. Inspect AKK status and the shared terminal pane before deciding whether to close or continue."
|
|
200
|
+
}
|
|
201
|
+
});
|
|
202
|
+
}
|
|
203
|
+
export function presentTerminalCompleted(input, context, ports) {
|
|
204
|
+
const outcome = input.acceptance?.outcome;
|
|
205
|
+
const accepted = outcome === "agent_accepted";
|
|
206
|
+
const pending = outcome === "pending_acceptance";
|
|
207
|
+
ports.write({
|
|
208
|
+
session_id: sessionIdForConversation(input.conversation),
|
|
209
|
+
turn_id: turnIdForConversation(input.conversation),
|
|
210
|
+
conversation: input.conversation,
|
|
211
|
+
message: context.message,
|
|
212
|
+
delivered: accepted,
|
|
213
|
+
status: accepted
|
|
214
|
+
? "async_pending"
|
|
215
|
+
: pending
|
|
216
|
+
? "submission_pending_acceptance"
|
|
217
|
+
: outcome === "not_accepted"
|
|
218
|
+
? "submission_not_accepted"
|
|
219
|
+
: "submission_uncertain",
|
|
220
|
+
submission_outcome: outcome,
|
|
221
|
+
background: true,
|
|
222
|
+
callback_expected: Boolean(input.conversation.gateway_method && (accepted || pending)),
|
|
223
|
+
terminal_control: context.terminalControl,
|
|
224
|
+
monitor_pid: input.monitorPid ?? null,
|
|
225
|
+
executor: context.executor,
|
|
226
|
+
budget: ports.budget(input.conversation),
|
|
227
|
+
delivery_receipt: accepted
|
|
228
|
+
? "agent_accepted"
|
|
229
|
+
: pending
|
|
230
|
+
? "enter_dispatched"
|
|
231
|
+
: outcome,
|
|
232
|
+
...(!accepted ? { do_not_retry: true } : {}),
|
|
233
|
+
...(input.bookkeepingWarning
|
|
234
|
+
? { bookkeeping_warning: ports.summarize(input.bookkeepingWarning) }
|
|
235
|
+
: {}),
|
|
236
|
+
openclaw_next_action: accepted
|
|
237
|
+
? ports.nextAction({
|
|
238
|
+
conversationId: input.conversation.conversation_id,
|
|
239
|
+
sessionId: sessionIdForConversation(input.conversation),
|
|
240
|
+
turnId: turnIdForConversation(input.conversation),
|
|
241
|
+
source: "terminal_control",
|
|
242
|
+
callbackExpected: Boolean(input.conversation.gateway_method)
|
|
243
|
+
})
|
|
244
|
+
: {
|
|
245
|
+
action: pending ? "wait_for_acceptance" : "inspect",
|
|
246
|
+
conversation_id: input.conversation.conversation_id,
|
|
247
|
+
session_id: sessionIdForConversation(input.conversation),
|
|
248
|
+
turn_id: turnIdForConversation(input.conversation),
|
|
249
|
+
do_not_retry: true,
|
|
250
|
+
reason: pending
|
|
251
|
+
? "Terminal transport is proven and the background monitor is still waiting for native acceptance."
|
|
252
|
+
: outcome === "not_accepted"
|
|
253
|
+
? "The exact draft is still present; inspect the composer and do not send a duplicate."
|
|
254
|
+
: "Native acceptance evidence became uncertain; inspect the shared pane."
|
|
255
|
+
}
|
|
256
|
+
});
|
|
257
|
+
}
|
|
258
|
+
//# sourceMappingURL=terminal-dispatch-presenter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"terminal-dispatch-presenter.js","sourceRoot":"","sources":["../../src/terminal-dispatch-presenter.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,wBAAwB,EACxB,qBAAqB,EAItB,MAAM,eAAe,CAAC;AAQvB,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AA+B7C,MAAM,UAAU,uBAAuB,CAAC,EACtC,cAAc,EACd,SAAS,EACT,MAAM,EACN,MAAM,EACN,gBAAgB,EACa;IAC7B,MAAM,YAAY,GAAG,gBAAgB;QACnC,CAAC,CAAC,wIAAwI;QAC1I,CAAC,CAAC,0MAA0M,CAAC;IAC/M,OAAO;QACL,MAAM,EAAE,OAAgB;QACxB,MAAM,EACJ,qKAAqK;QACvK,MAAM;QACN,eAAe,EAAE,cAAc;QAC/B,UAAU,EAAE,SAAS;QACrB,OAAO,EAAE,MAAM;QACf,iBAAiB,EAAE,gBAAgB;QACnC,MAAM,EACJ,gJAAgJ;QAClJ,iBAAiB,EAAE,YAAY;KAChC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,6BAA6B,CAC3C,KAQE,EACF,OAA4C,EAC5C,KAAwC;IAExC,MAAM,SAAS,GAAG,wBAAwB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACxD,MAAM,MAAM,GAAG,qBAAqB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAClD,KAAK,CAAC,KAAK,CAAC;QACV,UAAU,EAAE,SAAS;QACrB,OAAO,EAAE,MAAM;QACf,YAAY,EAAE,KAAK,CAAC,KAAK;QACzB,OAAO,EAAE;YACP,GAAG,OAAO,CAAC,OAAO;YAClB,EAAE,EAAE,KAAK,CAAC,gBAAgB;YAC1B,eAAe,EAAE,KAAK,CAAC,qBAAqB;YAC5C,UAAU,EAAE,SAAS;YACrB,OAAO,EAAE,MAAM;YACf,QAAQ,EAAE;gBACR,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC;oBACpC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ;oBAC1B,CAAC,CAAC,EAAE,CAAC;gBACP,OAAO,EAAE,KAAK,CAAC,qBAAqB;gBACpC,UAAU,EAAE,SAAS;gBACrB,OAAO,EAAE,MAAM;aAChB;SACF;QACD,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,SAAS;QAClC,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM;QAC5B,kBAAkB,EAAE,KAAK,CAAC,OAAO,CAAC,kBAAkB;QACpD,UAAU,EAAE,IAAI;QAChB,iBAAiB,EAAE,KAAK,CAAC,gBAAgB;QACzC,gBAAgB,EAAE,OAAO,CAAC,eAAe;QACzC,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC,QAAQ;QAChC,gBAAgB,EAAE,KAAK,CAAC,OAAO,CAAC,gBAAgB;QAChD,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY;YAC5B,CAAC,CAAC,EAAE,YAAY,EAAE,KAAK,CAAC,OAAO,CAAC,YAAY,EAAE;YAC9C,CAAC,CAAC,EAAE,CAAC;QACP,MAAM,EAAE,KAAK,CAAC,QAAQ;YACpB,CAAC,CAAC,oIAAoI;YACtI,CAAC,CAAC,KAAK,CAAC,iBAAiB;gBACvB,CAAC,CAAC,+DAA+D,KAAK,CAAC,OAAO,CAAC,cAAc,IAAI,4BAA4B,gCAAgC;gBAC7J,CAAC,CAAC,oIAAoI;QAC1I,oBAAoB,EAAE,KAAK,CAAC,QAAQ;YAClC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC;gBACf,cAAc,EAAE,KAAK,CAAC,qBAAqB;gBAC3C,SAAS;gBACT,MAAM;gBACN,MAAM,EAAE,kBAAkB;gBAC1B,gBAAgB,EAAE,KAAK,CAAC,gBAAgB;aACzC,CAAC;YACJ,CAAC,CAAC;gBACE,MAAM,EAAE,SAAS;gBACjB,eAAe,EAAE,KAAK,CAAC,qBAAqB;gBAC5C,UAAU,EAAE,SAAS;gBACrB,OAAO,EAAE,MAAM;gBACf,YAAY,EAAE,IAAI;gBAClB,MAAM,EAAE,KAAK,CAAC,iBAAiB;oBAC7B,CAAC,CAAC,2FAA2F;oBAC7F,CAAC,CAAC,2FAA2F;aAChG;KACN,CAAC,CAAC;AACL,CAAC;AAED,SAAS,aAAa,CACpB,OAAuC;IAEvC,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,WAAW,KAAK,OAAO,CAAC;IACtD,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,WAAW,KAAK,SAAS;QACvD,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO;QACzB,CAAC,CAAC,SAAS,CAAC;IACd,IAAI,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;QAChC,OAAO,KAAK;YACV,CAAC,CAAC;gBACE,MAAM,EAAE,6FAA6F;gBACrG,UAAU,EAAE,iDAAiD;aAC9D;YACH,CAAC,CAAC;gBACE,MAAM,EAAE,+EAA+E;gBACvF,UAAU,EACR,qEAAqE;aACxE,CAAC;IACR,CAAC;IACD,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO;YACL,MAAM,EAAE,uIAAuI;YAC/I,UAAU,EACR,uEAAuE;SAC1E,CAAC;IACJ,CAAC;IACD,OAAO,OAAO,KAAK,yBAAyB;QAC1C,CAAC,CAAC;YACE,MAAM,EAAE,0IAA0I;YAClJ,UAAU,EAAE,0DAA0D;SACvE;QACH,CAAC,CAAC,OAAO,KAAK,qBAAqB;YACjC,CAAC,CAAC;gBACE,MAAM,EAAE,sIAAsI;gBAC9I,UAAU,EACR,yEAAyE;aAC5E;YACH,CAAC,CAAC;gBACE,MAAM,EAAE,uHAAuH;gBAC/H,UAAU,EAAE,gDAAgD;aAC7D,CAAC;AACV,CAAC;AAED,MAAM,UAAU,6BAA6B,CAC3C,OAAuC,EACvC,OAA4C,EAC5C,KAAwC,EACxC,UAA0B;IAE1B,MAAM,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,GAAG,OAAO,CAAC;IAC9D,MAAM,IAAI,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;IACpC,KAAK,CAAC,KAAK,CAAC;QACV,UAAU,EAAE,wBAAwB,CAAC,mBAAmB,CAAC;QACzD,OAAO,EAAE,qBAAqB,CAAC,mBAAmB,CAAC;QACnD,YAAY,EAAE,oBAAoB;QAClC,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,SAAS,EAAE,KAAK;QAChB,MAAM,EAAE,oBAAoB;QAC5B,kBAAkB,EAAE,SAAS;QAC7B,UAAU,EAAE,IAAI;QAChB,iBAAiB,EAAE,KAAK;QACxB,gBAAgB,EAAE,OAAO,CAAC,eAAe;QACzC,WAAW,EAAE,UAAU,IAAI,IAAI;QAC/B,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,aAAa,EAAE,OAAO,CAAC,OAAO,CAAC,WAAW;QAC1C,YAAY,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW;QAC1C,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,oBAAoB,EAAE;YACpB,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS;YACzD,eAAe,EAAE,mBAAmB,CAAC,eAAe;YACpD,UAAU,EAAE,wBAAwB,CAAC,oBAAoB,CAAC;YAC1D,OAAO,EAAE,qBAAqB,CAAC,oBAAoB,CAAC;YACpD,aAAa,EAAE,OAAO,CAAC,OAAO,CAAC,WAAW;YAC1C,YAAY,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW;YAC1C,MAAM,EAAE,IAAI,CAAC,UAAU;SACxB;KACF,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,8BAA8B,CAC5C,YAA0B,EAC1B,MAAc,EACd,OAA4C,EAC5C,KAAwC,EACxC,UAA0B;IAE1B,KAAK,CAAC,KAAK,CAAC;QACV,UAAU,EAAE,wBAAwB,CAAC,YAAY,CAAC;QAClD,OAAO,EAAE,qBAAqB,CAAC,YAAY,CAAC;QAC5C,YAAY;QACZ,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,SAAS,EAAE,KAAK;QAChB,MAAM,EAAE,sBAAsB;QAC9B,kBAAkB,EAAE,WAAW;QAC/B,UAAU,EAAE,IAAI;QAChB,iBAAiB,EAAE,KAAK;QACxB,gBAAgB,EAAE,OAAO,CAAC,eAAe;QACzC,WAAW,EAAE,UAAU,IAAI,IAAI;QAC/B,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,gBAAgB,EAAE,kBAAkB;QACpC,YAAY,EAAE,IAAI;QAClB,MAAM;QACN,oBAAoB,EAAE;YACpB,MAAM,EAAE,SAAS;YACjB,eAAe,EAAE,YAAY,CAAC,eAAe;YAC7C,UAAU,EAAE,wBAAwB,CAAC,YAAY,CAAC;YAClD,OAAO,EAAE,qBAAqB,CAAC,YAAY,CAAC;YAC5C,YAAY,EAAE,IAAI;YAClB,MAAM,EACJ,yJAAyJ;SAC5J;KACF,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,wBAAwB,CACtC,KAME,EACF,OAA4C,EAC5C,KAAwC;IAExC,KAAK,CAAC,KAAK,CAAC;QACV,UAAU,EAAE,wBAAwB,CAAC,KAAK,CAAC,YAAY,CAAC;QACxD,OAAO,EAAE,qBAAqB,CAAC,KAAK,CAAC,YAAY,CAAC;QAClD,YAAY,EAAE,KAAK,CAAC,YAAY;QAChC,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,SAAS,EAAE,KAAK;QAChB,MAAM,EAAE,sBAAsB;QAC9B,kBAAkB,EAAE,WAAW;QAC/B,UAAU,EAAE,IAAI;QAChB,iBAAiB,EAAE,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,cAAc,CAAC;QAC7D,gBAAgB,EAAE,OAAO,CAAC,eAAe;QACzC,WAAW,EAAE,KAAK,CAAC,UAAU,IAAI,IAAI;QACrC,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,YAAY,EAAE,IAAI;QAClB,wBAAwB,EAAE,KAAK,CAAC,sBAAsB;QACtD,MAAM,EAAE,KAAK,CAAC,eAAe;YAC3B,CAAC,CAAC,oJAAoJ;YACtJ,CAAC,CAAC,KAAK,CAAC,YAAY;gBAClB,CAAC,CAAC,kIAAkI;gBACpI,CAAC,CAAC,wGAAwG;QAC9G,oBAAoB,EAAE;YACpB,MAAM,EAAE,SAAS;YACjB,eAAe,EAAE,KAAK,CAAC,YAAY,CAAC,eAAe;YACnD,UAAU,EAAE,wBAAwB,CAAC,KAAK,CAAC,YAAY,CAAC;YACxD,OAAO,EAAE,qBAAqB,CAAC,KAAK,CAAC,YAAY,CAAC;YAClD,YAAY,EAAE,IAAI;YAClB,MAAM,EACJ,6IAA6I;SAChJ;KACF,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,wBAAwB,CACtC,KAKE,EACF,OAA4C,EAC5C,KAAwC;IAExC,MAAM,OAAO,GAAG,KAAK,CAAC,UAAU,EAAE,OAAO,CAAC;IAC1C,MAAM,QAAQ,GAAG,OAAO,KAAK,gBAAgB,CAAC;IAC9C,MAAM,OAAO,GAAG,OAAO,KAAK,oBAAoB,CAAC;IACjD,KAAK,CAAC,KAAK,CAAC;QACV,UAAU,EAAE,wBAAwB,CAAC,KAAK,CAAC,YAAY,CAAC;QACxD,OAAO,EAAE,qBAAqB,CAAC,KAAK,CAAC,YAAY,CAAC;QAClD,YAAY,EAAE,KAAK,CAAC,YAAY;QAChC,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,SAAS,EAAE,QAAQ;QACnB,MAAM,EAAE,QAAQ;YACd,CAAC,CAAC,eAAe;YACjB,CAAC,CAAC,OAAO;gBACP,CAAC,CAAC,+BAA+B;gBACjC,CAAC,CAAC,OAAO,KAAK,cAAc;oBAC1B,CAAC,CAAC,yBAAyB;oBAC3B,CAAC,CAAC,sBAAsB;QAC9B,kBAAkB,EAAE,OAAO;QAC3B,UAAU,EAAE,IAAI;QAChB,iBAAiB,EAAE,OAAO,CACxB,KAAK,CAAC,YAAY,CAAC,cAAc,IAAI,CAAC,QAAQ,IAAI,OAAO,CAAC,CAC3D;QACD,gBAAgB,EAAE,OAAO,CAAC,eAAe;QACzC,WAAW,EAAE,KAAK,CAAC,UAAU,IAAI,IAAI;QACrC,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC;QACxC,gBAAgB,EAAE,QAAQ;YACxB,CAAC,CAAC,gBAAgB;YAClB,CAAC,CAAC,OAAO;gBACP,CAAC,CAAC,kBAAkB;gBACpB,CAAC,CAAC,OAAO;QACb,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5C,GAAG,CAAC,KAAK,CAAC,kBAAkB;YAC1B,CAAC,CAAC,EAAE,mBAAmB,EAAE,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,kBAAkB,CAAC,EAAE;YACpE,CAAC,CAAC,EAAE,CAAC;QACP,oBAAoB,EAAE,QAAQ;YAC5B,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC;gBACf,cAAc,EAAE,KAAK,CAAC,YAAY,CAAC,eAAe;gBAClD,SAAS,EAAE,wBAAwB,CAAC,KAAK,CAAC,YAAY,CAAC;gBACvD,MAAM,EAAE,qBAAqB,CAAC,KAAK,CAAC,YAAY,CAAC;gBACjD,MAAM,EAAE,kBAAkB;gBAC1B,gBAAgB,EAAE,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,cAAc,CAAC;aAC7D,CAAC;YACJ,CAAC,CAAC;gBACE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,SAAS;gBACnD,eAAe,EAAE,KAAK,CAAC,YAAY,CAAC,eAAe;gBACnD,UAAU,EAAE,wBAAwB,CAAC,KAAK,CAAC,YAAY,CAAC;gBACxD,OAAO,EAAE,qBAAqB,CAAC,KAAK,CAAC,YAAY,CAAC;gBAClD,YAAY,EAAE,IAAI;gBAClB,MAAM,EAAE,OAAO;oBACb,CAAC,CAAC,iGAAiG;oBACnG,CAAC,CAAC,OAAO,KAAK,cAAc;wBAC1B,CAAC,CAAC,qFAAqF;wBACvF,CAAC,CAAC,uEAAuE;aAC9E;KACN,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { type Conversation } from "./protocol.js";
|
|
2
|
+
import type { TerminalControlRef } from "./terminal-agent-adapter.js";
|
|
3
|
+
import type { TerminalOrdinaryDispatchStatus } from "./terminal-dispatch-ledger-codec.js";
|
|
4
|
+
import { terminalBridgeSubmission, type TerminalSubmissionAcceptanceEvidence } from "./terminal-submission-facts.js";
|
|
5
|
+
import { type UnknownRecord } from "./value-guards.js";
|
|
6
|
+
export interface TerminalBridgeStateInput {
|
|
7
|
+
conversation: Conversation;
|
|
8
|
+
message: {
|
|
9
|
+
id: string;
|
|
10
|
+
};
|
|
11
|
+
requestText: string;
|
|
12
|
+
startedAt: string;
|
|
13
|
+
agentTimeoutMinutes: number;
|
|
14
|
+
agentHardTimeoutMinutes: number;
|
|
15
|
+
monitorLockVersion: number;
|
|
16
|
+
preSendScreenFingerprint?: string;
|
|
17
|
+
codexRolloutAcceptanceAnchor?: unknown;
|
|
18
|
+
claudeTranscriptAnchor?: unknown;
|
|
19
|
+
claudeHome?: string;
|
|
20
|
+
}
|
|
21
|
+
export interface TerminalBridgeSubmissionMutation {
|
|
22
|
+
conversation: Conversation;
|
|
23
|
+
messageId: string;
|
|
24
|
+
messageType?: "task" | "answer";
|
|
25
|
+
messageBody?: string;
|
|
26
|
+
requestText: string;
|
|
27
|
+
status: TerminalOrdinaryDispatchStatus;
|
|
28
|
+
preparedAt: string;
|
|
29
|
+
textInjectedAt?: string;
|
|
30
|
+
enterDispatchedAt?: string;
|
|
31
|
+
agentAcceptedAt?: string;
|
|
32
|
+
notAcceptedAt?: string;
|
|
33
|
+
submittedAt?: string;
|
|
34
|
+
uncertainAt?: string;
|
|
35
|
+
abortedAt?: string;
|
|
36
|
+
error?: string;
|
|
37
|
+
acceptanceEvidence?: TerminalSubmissionAcceptanceEvidence;
|
|
38
|
+
lastProvenStage?: "prepared" | "text_injected" | "enter_dispatched" | "agent_accepted";
|
|
39
|
+
safeToRetry?: boolean;
|
|
40
|
+
}
|
|
41
|
+
export interface TerminalBridgeSubmissionContext {
|
|
42
|
+
dispatcherPid: number;
|
|
43
|
+
storeDir?: string;
|
|
44
|
+
terminalControl?: TerminalControlRef;
|
|
45
|
+
}
|
|
46
|
+
export declare function withTerminalBridgeState({ conversation, message, requestText, startedAt, agentTimeoutMinutes, agentHardTimeoutMinutes, monitorLockVersion, preSendScreenFingerprint, codexRolloutAcceptanceAnchor, claudeTranscriptAnchor, claudeHome }: TerminalBridgeStateInput): Conversation;
|
|
47
|
+
export declare function applyTerminalBridgeSubmission(mutation: TerminalBridgeSubmissionMutation, context: TerminalBridgeSubmissionContext): Conversation;
|
|
48
|
+
export declare function terminalAcceptanceEvidenceForConversation(conversation: Conversation, requestText: string, evidence: unknown): TerminalSubmissionAcceptanceEvidence;
|
|
49
|
+
export declare function terminalAcceptanceEvidenceExpectation(conversation: Conversation, requestText: string): {
|
|
50
|
+
source: TerminalSubmissionAcceptanceEvidence["source"];
|
|
51
|
+
nativeThreadId: string;
|
|
52
|
+
requestHash: string;
|
|
53
|
+
};
|
|
54
|
+
export declare function terminalSubmissionReplayReceipt(options: {
|
|
55
|
+
proofLevel: "submitted" | "enter_dispatched" | "agent_accepted";
|
|
56
|
+
evidence?: unknown;
|
|
57
|
+
expected: {
|
|
58
|
+
source: TerminalSubmissionAcceptanceEvidence["source"];
|
|
59
|
+
nativeThreadId: string;
|
|
60
|
+
requestHash: string;
|
|
61
|
+
};
|
|
62
|
+
}): {
|
|
63
|
+
replayed: true;
|
|
64
|
+
delivered: boolean;
|
|
65
|
+
status: "async_pending" | "submission_pending_acceptance" | "submission_uncertain";
|
|
66
|
+
submission_outcome: "agent_accepted" | "pending_acceptance" | "uncertain";
|
|
67
|
+
delivery_receipt: "agent_accepted" | "enter_dispatched" | "submitted";
|
|
68
|
+
do_not_retry?: true;
|
|
69
|
+
evidence_error?: string;
|
|
70
|
+
};
|
|
71
|
+
export declare function terminalBridgeRequestFingerprint(value: unknown): string | undefined;
|
|
72
|
+
export declare function terminalDispatchTextSummary(text: unknown, maxLength?: number): {
|
|
73
|
+
length: number;
|
|
74
|
+
preview?: string;
|
|
75
|
+
};
|
|
76
|
+
export declare function terminalBridgeEnabled(conversation: unknown): boolean;
|
|
77
|
+
export { terminalBridgeSubmission };
|
|
78
|
+
export declare function terminalBridgeSubmissionReceipts(conversation: Conversation): UnknownRecord[];
|
|
79
|
+
export declare function unresolvedTerminalBridgeSubmission(conversation: Conversation): UnknownRecord | undefined;
|