@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,48 @@
|
|
|
1
|
+
export interface TerminalMonitorPollState {
|
|
2
|
+
previousScreenFingerprint: string | undefined;
|
|
3
|
+
previousDurableFingerprint?: string;
|
|
4
|
+
previousCompletionFingerprint?: string;
|
|
5
|
+
}
|
|
6
|
+
export interface TerminalMonitorActivityPollInput {
|
|
7
|
+
state: TerminalMonitorPollState;
|
|
8
|
+
activityState?: string;
|
|
9
|
+
activityReason?: string;
|
|
10
|
+
screenFingerprint?: string;
|
|
11
|
+
durableFingerprint?: string;
|
|
12
|
+
}
|
|
13
|
+
export interface TerminalMonitorActivityPollDecision {
|
|
14
|
+
state: TerminalMonitorPollState;
|
|
15
|
+
screenChanged: boolean;
|
|
16
|
+
durableChanged: boolean;
|
|
17
|
+
activityReasons: string[];
|
|
18
|
+
activityReason?: string;
|
|
19
|
+
}
|
|
20
|
+
export declare function reduceTerminalMonitorActivityPoll(input: TerminalMonitorActivityPollInput): TerminalMonitorActivityPollDecision;
|
|
21
|
+
export interface TerminalMonitorCompletionPollInput {
|
|
22
|
+
state: TerminalMonitorPollState;
|
|
23
|
+
completionPresent: boolean;
|
|
24
|
+
completionFingerprint?: string;
|
|
25
|
+
}
|
|
26
|
+
export interface TerminalMonitorCompletionPollDecision {
|
|
27
|
+
state: TerminalMonitorPollState;
|
|
28
|
+
completionStable: boolean;
|
|
29
|
+
checkVerifiedDeadAgent: boolean;
|
|
30
|
+
}
|
|
31
|
+
export declare function reduceTerminalMonitorCompletionPoll(input: TerminalMonitorCompletionPollInput): TerminalMonitorCompletionPollDecision;
|
|
32
|
+
export type TerminalMonitorTimeoutDecision = {
|
|
33
|
+
kind: "none";
|
|
34
|
+
} | {
|
|
35
|
+
kind: "hard";
|
|
36
|
+
deadlineAtMs: number;
|
|
37
|
+
} | {
|
|
38
|
+
kind: "inactivity";
|
|
39
|
+
deadlineAtMs: number;
|
|
40
|
+
};
|
|
41
|
+
export interface TerminalMonitorTimeoutInput {
|
|
42
|
+
nowMs: number;
|
|
43
|
+
taskStartedAtMs: number;
|
|
44
|
+
lastActivityAtMs: number;
|
|
45
|
+
hardTimeoutMinutes?: number;
|
|
46
|
+
inactivityTimeoutMinutes?: number;
|
|
47
|
+
}
|
|
48
|
+
export declare function decideTerminalMonitorTimeout(input: TerminalMonitorTimeoutInput): TerminalMonitorTimeoutDecision;
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
export function reduceTerminalMonitorActivityPoll(input) {
|
|
2
|
+
const screenChanged = input.state.previousScreenFingerprint !== undefined &&
|
|
3
|
+
input.screenFingerprint !== undefined &&
|
|
4
|
+
input.screenFingerprint !== input.state.previousScreenFingerprint;
|
|
5
|
+
const durableChanged = input.durableFingerprint !== undefined &&
|
|
6
|
+
input.durableFingerprint !== input.state.previousDurableFingerprint;
|
|
7
|
+
const activityReasons = [
|
|
8
|
+
input.activityState === "working" ? input.activityReason : undefined,
|
|
9
|
+
screenChanged ? "terminal screen changed" : undefined,
|
|
10
|
+
durableChanged ? "durable completion evidence changed" : undefined
|
|
11
|
+
].filter((value) => Boolean(value));
|
|
12
|
+
return {
|
|
13
|
+
state: {
|
|
14
|
+
...input.state,
|
|
15
|
+
previousScreenFingerprint: input.screenFingerprint,
|
|
16
|
+
previousDurableFingerprint: input.durableFingerprint
|
|
17
|
+
},
|
|
18
|
+
screenChanged,
|
|
19
|
+
durableChanged,
|
|
20
|
+
activityReasons,
|
|
21
|
+
...(activityReasons.length > 0
|
|
22
|
+
? { activityReason: activityReasons.join("; ") }
|
|
23
|
+
: {})
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
export function reduceTerminalMonitorCompletionPoll(input) {
|
|
27
|
+
return {
|
|
28
|
+
state: {
|
|
29
|
+
...input.state,
|
|
30
|
+
previousCompletionFingerprint: input.completionFingerprint
|
|
31
|
+
},
|
|
32
|
+
completionStable: input.completionPresent &&
|
|
33
|
+
input.completionFingerprint !== undefined &&
|
|
34
|
+
input.completionFingerprint ===
|
|
35
|
+
input.state.previousCompletionFingerprint,
|
|
36
|
+
checkVerifiedDeadAgent: !input.completionPresent
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
function enabledTimeoutMs(startedAtMs, timeoutMinutes) {
|
|
40
|
+
if (timeoutMinutes === undefined ||
|
|
41
|
+
!Number.isFinite(timeoutMinutes) ||
|
|
42
|
+
timeoutMinutes <= 0) {
|
|
43
|
+
return undefined;
|
|
44
|
+
}
|
|
45
|
+
const timeoutMs = timeoutMinutes * 60 * 1000;
|
|
46
|
+
return {
|
|
47
|
+
deadlineAtMs: startedAtMs + timeoutMs,
|
|
48
|
+
timeoutMs
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
export function decideTerminalMonitorTimeout(input) {
|
|
52
|
+
const hardTimeout = enabledTimeoutMs(input.taskStartedAtMs, input.hardTimeoutMinutes);
|
|
53
|
+
if (hardTimeout !== undefined &&
|
|
54
|
+
input.nowMs - input.taskStartedAtMs >= hardTimeout.timeoutMs) {
|
|
55
|
+
return { kind: "hard", deadlineAtMs: hardTimeout.deadlineAtMs };
|
|
56
|
+
}
|
|
57
|
+
const inactivityTimeout = enabledTimeoutMs(input.lastActivityAtMs, input.inactivityTimeoutMinutes);
|
|
58
|
+
if (inactivityTimeout !== undefined &&
|
|
59
|
+
input.nowMs - input.lastActivityAtMs >= inactivityTimeout.timeoutMs) {
|
|
60
|
+
return {
|
|
61
|
+
kind: "inactivity",
|
|
62
|
+
deadlineAtMs: inactivityTimeout.deadlineAtMs
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
return { kind: "none" };
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=terminal-monitor-poll-policy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"terminal-monitor-poll-policy.js","sourceRoot":"","sources":["../../src/terminal-monitor-poll-policy.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import type { DeferredForegroundTransfer } from "./deferred-foreground-transfer.js";
|
|
2
|
+
import { type Conversation } from "./protocol.js";
|
|
3
|
+
import type { TerminalControlRef, TerminalRuntimeIdentity } from "./terminal-agent-adapter.js";
|
|
4
|
+
type JsonRecord = Record<string, unknown>;
|
|
5
|
+
export type TerminalMonitorEligibilityRequest = {
|
|
6
|
+
kind: "control";
|
|
7
|
+
nativeTakeover: JsonRecord;
|
|
8
|
+
} | {
|
|
9
|
+
kind: "dispatch";
|
|
10
|
+
terminalControl: TerminalControlRef;
|
|
11
|
+
} | {
|
|
12
|
+
kind: "store";
|
|
13
|
+
} | {
|
|
14
|
+
kind: "runtime";
|
|
15
|
+
terminalControl: TerminalControlRef;
|
|
16
|
+
} | {
|
|
17
|
+
kind: "deferred";
|
|
18
|
+
storeDir: string;
|
|
19
|
+
transferId: string;
|
|
20
|
+
};
|
|
21
|
+
export type TerminalMonitorEligibilityObservation = {
|
|
22
|
+
kind: "control";
|
|
23
|
+
terminalControl?: TerminalControlRef;
|
|
24
|
+
} | {
|
|
25
|
+
kind: "dispatch";
|
|
26
|
+
ledger?: JsonRecord;
|
|
27
|
+
} | {
|
|
28
|
+
kind: "store";
|
|
29
|
+
storeDir?: string;
|
|
30
|
+
} | {
|
|
31
|
+
kind: "runtime";
|
|
32
|
+
runtime: TerminalRuntimeIdentity;
|
|
33
|
+
} | {
|
|
34
|
+
kind: "deferred";
|
|
35
|
+
transfer: DeferredForegroundTransfer;
|
|
36
|
+
};
|
|
37
|
+
export type TerminalMonitorEligibility = {
|
|
38
|
+
eligible: false;
|
|
39
|
+
reason: string;
|
|
40
|
+
} | {
|
|
41
|
+
eligible: true;
|
|
42
|
+
nativeTakeover: JsonRecord;
|
|
43
|
+
terminalMessageId: string;
|
|
44
|
+
terminalControl: TerminalControlRef;
|
|
45
|
+
runtime: TerminalRuntimeIdentity;
|
|
46
|
+
inactivityTimeoutMinutes: number;
|
|
47
|
+
hardTimeoutMinutes: number;
|
|
48
|
+
inactivityDeadlineAtMs: number;
|
|
49
|
+
hardDeadlineAtMs: number;
|
|
50
|
+
};
|
|
51
|
+
/** Pure staged eligibility; callers perform only the observations yielded. */
|
|
52
|
+
export declare function terminalMonitorReconciliationEligibility(conversation: Conversation): Generator<TerminalMonitorEligibilityRequest, TerminalMonitorEligibility, TerminalMonitorEligibilityObservation>;
|
|
53
|
+
export {};
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import path from "node:path";
|
|
2
|
+
import { isFinalDeferredForegroundTransferStatus } from "./deferred-foreground-transfer-policy.js";
|
|
3
|
+
import { isWaitingForAgentStatus, sessionIdForConversation, turnIdForConversation } from "./protocol.js";
|
|
4
|
+
import { terminalControlEvidenceMatches } from "./terminal-control-ref.js";
|
|
5
|
+
import { sameCanonicalStatePath } from "./terminal-dispatch-ledger-codec.js";
|
|
6
|
+
import { validTerminalMonitorTimestampMs as validTimestampMs } from "./terminal-monitor-decision-policy.js";
|
|
7
|
+
import { terminalBridgeSubmission, validateCodexRolloutAcceptanceAnchor } from "./terminal-submission-facts.js";
|
|
8
|
+
import { isRecord, nonBlankString } from "./value-guards.js";
|
|
9
|
+
/** Pure staged eligibility; callers perform only the observations yielded. */
|
|
10
|
+
export function* terminalMonitorReconciliationEligibility(conversation) {
|
|
11
|
+
const nativeTakeover = isRecord(conversation.native_session_takeover)
|
|
12
|
+
? conversation.native_session_takeover
|
|
13
|
+
: undefined;
|
|
14
|
+
if (nativeTakeover?.terminal_bridge !== true) {
|
|
15
|
+
return ineligible("not_terminal_bridge");
|
|
16
|
+
}
|
|
17
|
+
if (!isWaitingForAgentStatus(conversation.status)) {
|
|
18
|
+
return ineligible(`conversation_status_${String(conversation.status ?? "missing")}`);
|
|
19
|
+
}
|
|
20
|
+
const terminalMessageId = nonBlankString(nativeTakeover.terminal_bridge_message_id);
|
|
21
|
+
const control = expectObservation("control", yield { kind: "control", nativeTakeover });
|
|
22
|
+
const terminalControl = control.terminalControl;
|
|
23
|
+
if (!terminalMessageId || !terminalControl) {
|
|
24
|
+
return ineligible("terminal_bridge_identity_missing");
|
|
25
|
+
}
|
|
26
|
+
const dispatch = expectObservation("dispatch", yield { kind: "dispatch", terminalControl });
|
|
27
|
+
const ledger = dispatch.ledger;
|
|
28
|
+
const statePath = nonBlankString(conversation.state_path);
|
|
29
|
+
const dispatchStore = expectObservation("store", yield { kind: "store" });
|
|
30
|
+
const bindingId = nonBlankString(conversation.terminal_binding_id);
|
|
31
|
+
const bindingGeneration = Number(conversation.terminal_binding_generation);
|
|
32
|
+
if (!ledger ||
|
|
33
|
+
nonBlankString(ledger.message_id) !== terminalMessageId ||
|
|
34
|
+
!terminalControlEvidenceMatches(ledger.terminal_endpoint !== undefined
|
|
35
|
+
? ledger.terminal_endpoint
|
|
36
|
+
: ledger.terminal_control, terminalControl) ||
|
|
37
|
+
nonBlankString(ledger.conversation_id) !== conversation.conversation_id ||
|
|
38
|
+
nonBlankString(ledger.session_id) !== sessionIdForConversation(conversation) ||
|
|
39
|
+
nonBlankString(ledger.turn_id) !== turnIdForConversation(conversation) ||
|
|
40
|
+
!statePath || !sameCanonicalStatePath(ledger.state_path, statePath) ||
|
|
41
|
+
!dispatchStore.storeDir ||
|
|
42
|
+
path.resolve(nonBlankString(ledger.store_dir) ?? "") !==
|
|
43
|
+
path.resolve(dispatchStore.storeDir) ||
|
|
44
|
+
(bindingId !== undefined && nonBlankString(ledger.binding_id) !== bindingId) ||
|
|
45
|
+
(Number.isSafeInteger(bindingGeneration) &&
|
|
46
|
+
Number(ledger.binding_generation) !== bindingGeneration) ||
|
|
47
|
+
!["prepared", "text_injected", "enter_dispatched", "agent_accepted", "submitted"]
|
|
48
|
+
.includes(String(ledger.status))) {
|
|
49
|
+
return ineligible(`terminal_dispatch_${String(ledger?.status ?? "missing_or_generation_replaced")}`);
|
|
50
|
+
}
|
|
51
|
+
const submission = terminalBridgeSubmission(conversation);
|
|
52
|
+
if (submission &&
|
|
53
|
+
nonBlankString(submission.message_id) === terminalMessageId &&
|
|
54
|
+
["not_accepted", "uncertain", "aborted"].includes(String(submission.status))) {
|
|
55
|
+
return ineligible(`terminal_submission_${submission.status}`);
|
|
56
|
+
}
|
|
57
|
+
const runtimeObservation = expectObservation("runtime", yield { kind: "runtime", terminalControl });
|
|
58
|
+
const runtime = runtimeObservation.runtime;
|
|
59
|
+
if (!Number.isInteger(runtime.pid) || Number(runtime.pid) <= 0 ||
|
|
60
|
+
!nonBlankString(runtime.cwd)) {
|
|
61
|
+
return ineligible("terminal_agent_identity_missing");
|
|
62
|
+
}
|
|
63
|
+
const deferredStore = expectObservation("store", yield { kind: "store" });
|
|
64
|
+
const transferId = nonBlankString(nativeTakeover.deferred_foreground_transfer_id);
|
|
65
|
+
if (deferredStore.storeDir && transferId) {
|
|
66
|
+
const deferred = expectObservation("deferred", yield {
|
|
67
|
+
kind: "deferred", storeDir: deferredStore.storeDir, transferId
|
|
68
|
+
});
|
|
69
|
+
const transfer = deferred.transfer;
|
|
70
|
+
if (!isFinalDeferredForegroundTransferStatus(transfer.status) && (validateCodexRolloutAcceptanceAnchor(nativeTakeover.codex_rollout_acceptance_anchor)?.version !== 3 ||
|
|
71
|
+
transfer.status !== "dispatch_started" ||
|
|
72
|
+
submission?.status !== "enter_dispatched" ||
|
|
73
|
+
transfer.turn_id !== turnIdForConversation(conversation) ||
|
|
74
|
+
transfer.message_id !== terminalMessageId ||
|
|
75
|
+
transfer.target_session_id !== sessionIdForConversation(conversation))) {
|
|
76
|
+
return ineligible(`deferred_foreground_transfer_${transfer.status}`);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
const inactivityTimeoutMinutes = Number(nativeTakeover.terminal_bridge_inactivity_timeout_minutes);
|
|
80
|
+
const hardTimeoutMinutes = Number(nativeTakeover.terminal_bridge_hard_timeout_minutes);
|
|
81
|
+
const startedAtMs = validTimestampMs(nativeTakeover.terminal_bridge_started_at);
|
|
82
|
+
const lastActivityAtMs = validTimestampMs(nativeTakeover.terminal_bridge_last_activity_at);
|
|
83
|
+
const inactivityDeadlineAtMs = validTimestampMs(nativeTakeover.terminal_bridge_inactivity_deadline_at);
|
|
84
|
+
const hardDeadlineAtMs = validTimestampMs(nativeTakeover.terminal_bridge_hard_deadline_at);
|
|
85
|
+
if (!Number.isFinite(inactivityTimeoutMinutes) ||
|
|
86
|
+
inactivityTimeoutMinutes <= 0 ||
|
|
87
|
+
!Number.isFinite(hardTimeoutMinutes) ||
|
|
88
|
+
hardTimeoutMinutes <= 0 ||
|
|
89
|
+
startedAtMs === undefined ||
|
|
90
|
+
lastActivityAtMs === undefined ||
|
|
91
|
+
inactivityDeadlineAtMs === undefined ||
|
|
92
|
+
hardDeadlineAtMs === undefined) {
|
|
93
|
+
return ineligible("terminal_bridge_deadline_metadata_missing");
|
|
94
|
+
}
|
|
95
|
+
return {
|
|
96
|
+
eligible: true,
|
|
97
|
+
nativeTakeover,
|
|
98
|
+
terminalMessageId,
|
|
99
|
+
terminalControl,
|
|
100
|
+
runtime,
|
|
101
|
+
inactivityTimeoutMinutes,
|
|
102
|
+
hardTimeoutMinutes,
|
|
103
|
+
inactivityDeadlineAtMs,
|
|
104
|
+
hardDeadlineAtMs
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
const ineligible = (reason) => ({ eligible: false, reason });
|
|
108
|
+
function expectObservation(kind, observation) {
|
|
109
|
+
if (observation === undefined || observation.kind !== kind) {
|
|
110
|
+
throw new Error(`terminal monitor eligibility expected ${kind} observation`);
|
|
111
|
+
}
|
|
112
|
+
return observation;
|
|
113
|
+
}
|
|
114
|
+
//# sourceMappingURL=terminal-monitor-reconciliation-eligibility.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"terminal-monitor-reconciliation-eligibility.js","sourceRoot":"","sources":["../../src/terminal-monitor-reconciliation-eligibility.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import { type Conversation } from "./protocol.js";
|
|
2
|
+
import { type TerminalControlRef } from "./terminal-agent-adapter.js";
|
|
3
|
+
import { type TerminalAgentBridge } from "./terminal-agent-bridge.js";
|
|
4
|
+
import { type TerminalMonitorDeferralPorts } from "./terminal-monitor-application-service.js";
|
|
5
|
+
import { type TerminalMonitorEligibility } from "./terminal-monitor-reconciliation-eligibility.js";
|
|
6
|
+
import { type TerminalMonitorStatePaths, type TerminalMonitorStateReconciliation } from "./terminal-monitor-state-reconciliation-service.js";
|
|
7
|
+
import type { TerminalDispatchRepositoryCliAdapter } from "./terminal-dispatch-repository-cli-adapter.js";
|
|
8
|
+
import type { TerminalDispatchRecoveryCliFacade } from "./terminal-dispatch-recovery-cli-adapter.js";
|
|
9
|
+
import type { TerminalAcceptanceCliFacade } from "./terminal-acceptance-cli-adapter.js";
|
|
10
|
+
import type { TerminalHandoffCliFacade } from "./terminal-handoff-cli-adapter.js";
|
|
11
|
+
import type { createTerminalIdentityAuthorityCliAdapter } from "./terminal-identity-authority-cli-adapter.js";
|
|
12
|
+
import type { CallbackCliFacade } from "./callback-cli-adapter.js";
|
|
13
|
+
type MonitorCliOptions = Record<string, unknown>;
|
|
14
|
+
type IdentityAuthority = ReturnType<typeof createTerminalIdentityAuthorityCliAdapter>;
|
|
15
|
+
export interface TerminalMonitorStateCliDependencies {
|
|
16
|
+
dispatch: {
|
|
17
|
+
repository: TerminalDispatchRepositoryCliAdapter;
|
|
18
|
+
recovery: TerminalDispatchRecoveryCliFacade;
|
|
19
|
+
};
|
|
20
|
+
acceptance: Pick<TerminalAcceptanceCliFacade, "markUncertain" | "reconcileMonitor" | "recoverVirgin" | "storeDirForConversation">;
|
|
21
|
+
authority: {
|
|
22
|
+
identity: Pick<IdentityAuthority, "migrateLegacyTerminalAgentIdentity" | "terminalRuntimeIdentityForConversation" | "terminalDurableRequestForConversation">;
|
|
23
|
+
handoff: Pick<TerminalHandoffCliFacade, "recoverDeferredCodexForegroundTransferBeforeMutation">;
|
|
24
|
+
assertBindingCurrent(conversation: Conversation, operation: string): void;
|
|
25
|
+
terminalControlForConversation(conversation: Conversation): TerminalControlRef | undefined;
|
|
26
|
+
createBridge(options: MonitorCliOptions): TerminalAgentBridge;
|
|
27
|
+
};
|
|
28
|
+
callbacks: Pick<CallbackCliFacade, "reconcileDelivery" | "prepareApprovalNotification" | "runPrepared" | "emitPreparedResult" | "deliverGatewayMethod" | "deliverChatSend">;
|
|
29
|
+
runtime: {
|
|
30
|
+
isProcessAlive(pid: number): boolean;
|
|
31
|
+
storeDir(options: MonitorCliOptions): string;
|
|
32
|
+
print(value: Record<string, unknown>): void;
|
|
33
|
+
bindingSuperseded(error: unknown): {
|
|
34
|
+
code: string;
|
|
35
|
+
message: string;
|
|
36
|
+
} | undefined;
|
|
37
|
+
approvalTtlMs: number;
|
|
38
|
+
callbackRetryLimit: number;
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
export interface TerminalMonitorStateCliAdapter {
|
|
42
|
+
runService(input: {
|
|
43
|
+
options: MonitorCliOptions;
|
|
44
|
+
statePath: string;
|
|
45
|
+
logPath: string;
|
|
46
|
+
initialConversation: Conversation;
|
|
47
|
+
expectedTerminalMessageId: string;
|
|
48
|
+
lifecycle: {
|
|
49
|
+
startedRecorded: boolean;
|
|
50
|
+
};
|
|
51
|
+
configuration(): {
|
|
52
|
+
pollIntervalMs: number;
|
|
53
|
+
timeoutMinutes: number;
|
|
54
|
+
hardTimeoutMinutes: number;
|
|
55
|
+
};
|
|
56
|
+
terminalBridge(): TerminalAgentBridge;
|
|
57
|
+
}): Promise<void>;
|
|
58
|
+
deferralPorts(paths: TerminalMonitorStatePaths): TerminalMonitorDeferralPorts;
|
|
59
|
+
reconcileCollateral(storeDir: string, conversationId?: string): Promise<TerminalBridgeCollateralStallReconciliation>;
|
|
60
|
+
stallOther(input: {
|
|
61
|
+
storeDir: string;
|
|
62
|
+
terminalControl: TerminalControlRef;
|
|
63
|
+
currentConversationId: string;
|
|
64
|
+
uncertainMessageId: string;
|
|
65
|
+
}): string[];
|
|
66
|
+
statePaths(listed: Conversation, storeDir: string): TerminalMonitorStatePaths;
|
|
67
|
+
reconcileState(input: {
|
|
68
|
+
options: MonitorCliOptions;
|
|
69
|
+
storeDir: string;
|
|
70
|
+
listed: Conversation;
|
|
71
|
+
paths: TerminalMonitorStatePaths;
|
|
72
|
+
includeCallbackRecovery: boolean;
|
|
73
|
+
}): Promise<TerminalMonitorStateReconciliation>;
|
|
74
|
+
eligibility(conversation: Conversation): TerminalMonitorEligibility;
|
|
75
|
+
prepareLaunch(input: {
|
|
76
|
+
statePath: string;
|
|
77
|
+
expectedMessageId: string;
|
|
78
|
+
requireWaitingForAgentStatus?: boolean;
|
|
79
|
+
activeOwner(statePath: string, terminalMessageId: string): {
|
|
80
|
+
ownerPid?: number;
|
|
81
|
+
} | undefined;
|
|
82
|
+
monitorLockVersion: number;
|
|
83
|
+
}): TerminalMonitorLaunchPreparation;
|
|
84
|
+
}
|
|
85
|
+
export type TerminalMonitorLaunchPreparation = {
|
|
86
|
+
prepared: false;
|
|
87
|
+
alreadyRunning: boolean;
|
|
88
|
+
reason: string;
|
|
89
|
+
ownerPid?: number;
|
|
90
|
+
} | {
|
|
91
|
+
prepared: true;
|
|
92
|
+
conversation: Conversation;
|
|
93
|
+
terminalControl: TerminalControlRef;
|
|
94
|
+
inactivityTimeoutMinutes: number;
|
|
95
|
+
hardTimeoutMinutes: number;
|
|
96
|
+
};
|
|
97
|
+
interface TerminalBridgeCollateralStallReconciliation {
|
|
98
|
+
checked: number;
|
|
99
|
+
repaired: number;
|
|
100
|
+
skipped: number;
|
|
101
|
+
errors: string[];
|
|
102
|
+
items: Record<string, unknown>[];
|
|
103
|
+
}
|
|
104
|
+
/** Invocation-local monitor state and reconciliation CLI boundary. */
|
|
105
|
+
export declare function createTerminalMonitorStateCliAdapter(dependencies: TerminalMonitorStateCliDependencies): TerminalMonitorStateCliAdapter;
|
|
106
|
+
export {};
|