@scotthuang/agent-knock-knock 0.12.12 → 0.12.14
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 +40 -27
- 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 +9 -6
- package/dist/src/callback-cli-adapter.js +119 -30
- package/dist/src/callback-cli-adapter.js.map +1 -1
- package/dist/src/callback-outbox-policy.d.ts +39 -0
- package/dist/src/callback-outbox-policy.js +163 -6
- package/dist/src/callback-outbox-policy.js.map +1 -1
- package/dist/src/callback-outbox-service.d.ts +28 -1
- package/dist/src/callback-outbox-service.js +413 -82
- package/dist/src/callback-outbox-service.js.map +1 -1
- package/dist/src/callback-outbox-settlement.d.ts +14 -1
- package/dist/src/callback-outbox-settlement.js +151 -30
- package/dist/src/callback-outbox-settlement.js.map +1 -1
- package/dist/src/callback-route-authority.d.ts +59 -0
- package/dist/src/callback-route-authority.js +123 -0
- package/dist/src/callback-route-authority.js.map +1 -0
- package/dist/src/callback-transport.d.ts +134 -0
- package/dist/src/callback-transport.js +256 -0
- package/dist/src/callback-transport.js.map +1 -0
- package/dist/src/claude-local-transcript-provider.d.ts +81 -0
- package/dist/src/claude-local-transcript-provider.js +854 -18
- package/dist/src/claude-local-transcript-provider.js.map +1 -1
- package/dist/src/cli-core.js +102 -4
- package/dist/src/cli-core.js.map +1 -1
- package/dist/src/codex-lifecycle-compatibility.js +2 -1
- package/dist/src/codex-lifecycle-compatibility.js.map +1 -1
- package/dist/src/deferred-foreground-application-service.d.ts +18 -0
- package/dist/src/deferred-foreground-application-service.js +72 -0
- package/dist/src/deferred-foreground-application-service.js.map +1 -1
- package/dist/src/deferred-foreground-authority-cli-adapter.js +92 -20
- package/dist/src/deferred-foreground-authority-cli-adapter.js.map +1 -1
- package/dist/src/deferred-foreground-recovery-cli-adapter.d.ts +1 -1
- package/dist/src/deferred-foreground-recovery-cli-adapter.js +108 -37
- package/dist/src/deferred-foreground-recovery-cli-adapter.js.map +1 -1
- package/dist/src/deferred-foreground-recovery-service.d.ts +1 -1
- package/dist/src/deferred-foreground-recovery-service.js +10 -3
- package/dist/src/deferred-foreground-recovery-service.js.map +1 -1
- package/dist/src/deferred-foreground-transfer-policy.d.ts +1 -1
- package/dist/src/deferred-foreground-transfer-policy.js +3 -2
- package/dist/src/deferred-foreground-transfer-policy.js.map +1 -1
- package/dist/src/deferred-foreground-transfer.d.ts +17 -1
- package/dist/src/deferred-foreground-transfer.js +247 -39
- package/dist/src/deferred-foreground-transfer.js.map +1 -1
- package/dist/src/deferred-foreground-user-close.d.ts +18 -0
- package/dist/src/deferred-foreground-user-close.js +180 -0
- package/dist/src/deferred-foreground-user-close.js.map +1 -0
- package/dist/src/openclaw-callback-transport.d.ts +9 -1
- package/dist/src/openclaw-callback-transport.js +404 -11
- package/dist/src/openclaw-callback-transport.js.map +1 -1
- package/dist/src/openclaw-managed-callback-cli-adapter.d.ts +23 -0
- package/dist/src/openclaw-managed-callback-cli-adapter.js +77 -0
- package/dist/src/openclaw-managed-callback-cli-adapter.js.map +1 -0
- package/dist/src/openclaw-plugin-callback-adapter.js +96 -14
- package/dist/src/openclaw-plugin-callback-adapter.js.map +1 -1
- package/dist/src/openclaw-plugin-command-adapter.js +547 -109
- package/dist/src/openclaw-plugin-command-adapter.js.map +1 -1
- package/dist/src/openclaw-plugin-helpers.d.ts +27 -4
- package/dist/src/openclaw-plugin-helpers.js +317 -44
- package/dist/src/openclaw-plugin-helpers.js.map +1 -1
- package/dist/src/openclaw-plugin-schemas.d.ts +61 -66
- package/dist/src/openclaw-plugin-schemas.js +87 -91
- package/dist/src/openclaw-plugin-schemas.js.map +1 -1
- package/dist/src/openclaw-plugin-supervisor.js +48 -10
- package/dist/src/openclaw-plugin-supervisor.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 +3 -0
- package/dist/src/protocol.js +4 -0
- package/dist/src/protocol.js.map +1 -1
- package/dist/src/store.d.ts +10 -0
- package/dist/src/store.js +82 -2
- package/dist/src/store.js.map +1 -1
- package/dist/src/terminal-acceptance-cli-adapter.d.ts +2 -0
- package/dist/src/terminal-acceptance-cli-adapter.js +62 -12
- package/dist/src/terminal-acceptance-cli-adapter.js.map +1 -1
- package/dist/src/terminal-action-projection.d.ts +19 -2
- package/dist/src/terminal-action-projection.js +27 -5
- package/dist/src/terminal-action-projection.js.map +1 -1
- package/dist/src/terminal-agent-bridge.d.ts +82 -0
- package/dist/src/terminal-agent-bridge.js +539 -111
- package/dist/src/terminal-agent-bridge.js.map +1 -1
- package/dist/src/terminal-command-cli-adapter.d.ts +14 -0
- package/dist/src/terminal-command-cli-adapter.js +2435 -150
- package/dist/src/terminal-command-cli-adapter.js.map +1 -1
- package/dist/src/terminal-dispatch-application.d.ts +4 -1
- package/dist/src/terminal-dispatch-application.js +11 -2
- package/dist/src/terminal-dispatch-application.js.map +1 -1
- package/dist/src/terminal-dispatch-execution.js +3 -1
- package/dist/src/terminal-dispatch-execution.js.map +1 -1
- package/dist/src/terminal-dispatch-ledger-codec.d.ts +3 -0
- package/dist/src/terminal-dispatch-ledger-codec.js +46 -19
- package/dist/src/terminal-dispatch-ledger-codec.js.map +1 -1
- package/dist/src/terminal-dispatch-presenter.js +5 -3
- package/dist/src/terminal-dispatch-presenter.js.map +1 -1
- package/dist/src/terminal-dispatch-receipt.d.ts +3 -0
- package/dist/src/terminal-dispatch-receipt.js +15 -1
- package/dist/src/terminal-dispatch-receipt.js.map +1 -1
- package/dist/src/terminal-dispatch-recovery-cli-adapter.js +68 -7
- package/dist/src/terminal-dispatch-recovery-cli-adapter.js.map +1 -1
- package/dist/src/terminal-dispatch-recovery-service.d.ts +2 -0
- package/dist/src/terminal-dispatch-recovery-service.js +9 -0
- package/dist/src/terminal-dispatch-recovery-service.js.map +1 -1
- package/dist/src/terminal-dispatch-repository-cli-adapter.js +305 -79
- package/dist/src/terminal-dispatch-repository-cli-adapter.js.map +1 -1
- package/dist/src/terminal-identity-authority-cli-adapter.d.ts +2 -0
- package/dist/src/terminal-identity-authority-cli-adapter.js +30 -27
- package/dist/src/terminal-identity-authority-cli-adapter.js.map +1 -1
- package/dist/src/terminal-list-cli-adapter.d.ts +32 -7
- package/dist/src/terminal-list-cli-adapter.js +335 -98
- package/dist/src/terminal-list-cli-adapter.js.map +1 -1
- package/dist/src/terminal-list-renderer.d.ts +11 -1
- package/dist/src/terminal-list-renderer.js +328 -132
- package/dist/src/terminal-list-renderer.js.map +1 -1
- package/dist/src/terminal-maintenance-cli-adapter.js +253 -326
- package/dist/src/terminal-maintenance-cli-adapter.js.map +1 -1
- package/dist/src/terminal-monitor-application-service.d.ts +5 -0
- package/dist/src/terminal-monitor-application-service.js +5 -0
- package/dist/src/terminal-monitor-application-service.js.map +1 -1
- package/dist/src/terminal-monitor-cli-adapter.d.ts +25 -1
- package/dist/src/terminal-monitor-cli-adapter.js +171 -28
- package/dist/src/terminal-monitor-cli-adapter.js.map +1 -1
- package/dist/src/terminal-monitor-reconciliation-eligibility.d.ts +1 -1
- package/dist/src/terminal-monitor-reconciliation-eligibility.js +220 -32
- package/dist/src/terminal-monitor-reconciliation-eligibility.js.map +1 -1
- package/dist/src/terminal-monitor-state-cli-adapter.d.ts +1 -1
- package/dist/src/terminal-monitor-state-cli-adapter.js +814 -162
- package/dist/src/terminal-monitor-state-cli-adapter.js.map +1 -1
- package/dist/src/terminal-monitor-state-reconciliation-service.d.ts +2 -1
- package/dist/src/terminal-monitor-state-reconciliation-service.js +12 -0
- package/dist/src/terminal-monitor-state-reconciliation-service.js.map +1 -1
- package/dist/src/terminal-monitor-supervision-cli-adapter.d.ts +2 -0
- package/dist/src/terminal-monitor-supervision-cli-adapter.js +31 -11
- package/dist/src/terminal-monitor-supervision-cli-adapter.js.map +1 -1
- package/dist/src/terminal-status-cli-adapter.d.ts +11 -0
- package/dist/src/terminal-status-cli-adapter.js +119 -35
- package/dist/src/terminal-status-cli-adapter.js.map +1 -1
- package/dist/src/terminal-submission-acceptance.d.ts +60 -1
- package/dist/src/terminal-submission-acceptance.js +613 -0
- package/dist/src/terminal-submission-acceptance.js.map +1 -1
- package/dist/src/terminal-submission-retry-service.d.ts +114 -0
- package/dist/src/terminal-submission-retry-service.js +589 -0
- package/dist/src/terminal-submission-retry-service.js.map +1 -0
- package/dist/src/terminal-watch-callback-cli-adapter.d.ts +28 -0
- package/dist/src/terminal-watch-callback-cli-adapter.js +94 -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 +532 -0
- package/dist/src/terminal-watch-cli-adapter.js.map +1 -0
- package/dist/src/terminal-watch-service.d.ts +102 -0
- package/dist/src/terminal-watch-service.js +883 -0
- package/dist/src/terminal-watch-service.js.map +1 -0
- package/dist/src/terminal-watch-store.d.ts +172 -0
- package/dist/src/terminal-watch-store.js +1019 -0
- package/dist/src/terminal-watch-store.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 +1 -1
- package/templates/openclaw-skills/agent-knock-knock/SKILL.md +61 -40
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
import { AsyncLocalStorage } from "node:async_hooks";
|
|
3
3
|
import path from "node:path";
|
|
4
4
|
import { createCallbackOutboxService } from "./callback-outbox-service.js";
|
|
5
|
-
import {
|
|
5
|
+
import { parseCallbackAttemptOutcome } from "./callback-transport.js";
|
|
6
6
|
import { budgetAction } from "./protocol.js";
|
|
7
|
-
import { redactString } from "./runtime-log.js";
|
|
8
7
|
import { appendEvent, assertStoreWriterCompatible, loadState, logPathForStatePath, messageEvent, pathsForConversationDir, saveState } from "./store.js";
|
|
9
|
-
import {
|
|
8
|
+
import { nonBlankString, recordValue } from "./value-guards.js";
|
|
9
|
+
import { expandHome, writeCliJson } from "./cli-command-runtime.js";
|
|
10
10
|
import { cliEnv, cliExit, cliNow, cliNowMs, cliPid, cliRuntimeLog, cliSleepSync } from "./cli-runtime-context.js";
|
|
11
11
|
const callbackCliContext = new AsyncLocalStorage();
|
|
12
12
|
function callbackRuntime() {
|
|
@@ -58,6 +58,118 @@ function runCallbackTransaction(options) {
|
|
|
58
58
|
});
|
|
59
59
|
return runPreparedCallback(prepared);
|
|
60
60
|
}
|
|
61
|
+
function deliverCallbackViaTransport(input) {
|
|
62
|
+
const runtime = callbackRuntime();
|
|
63
|
+
let resolved;
|
|
64
|
+
try {
|
|
65
|
+
resolved = runtime.delivery.resolve(input);
|
|
66
|
+
}
|
|
67
|
+
catch {
|
|
68
|
+
return callbackDeliveryOutcome(undefined, {
|
|
69
|
+
disposition: "permanent_failure",
|
|
70
|
+
error_code: "callback_route_resolution_failed"
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
let acceptedCheckpoint;
|
|
74
|
+
let invalidCheckpoint = false;
|
|
75
|
+
const reportCheckpoint = (value) => {
|
|
76
|
+
let outcome;
|
|
77
|
+
try {
|
|
78
|
+
outcome = parseCallbackAttemptOutcome(value);
|
|
79
|
+
}
|
|
80
|
+
catch {
|
|
81
|
+
invalidCheckpoint = true;
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
const delivery = callbackDeliveryOutcome(resolved.route, outcome);
|
|
85
|
+
if (outcome.disposition === "accepted") {
|
|
86
|
+
acceptedCheckpoint = outcome;
|
|
87
|
+
input.onAccepted?.(delivery);
|
|
88
|
+
}
|
|
89
|
+
input.onProgress?.({
|
|
90
|
+
stage: "transport_checkpoint",
|
|
91
|
+
...delivery
|
|
92
|
+
});
|
|
93
|
+
};
|
|
94
|
+
let value;
|
|
95
|
+
try {
|
|
96
|
+
value = runtime.delivery.transport.deliver({
|
|
97
|
+
...resolved,
|
|
98
|
+
reportCheckpoint
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
catch {
|
|
102
|
+
return callbackDeliveryOutcome(resolved.route, acceptedCheckpoint ?? callbackTransportContractViolation());
|
|
103
|
+
}
|
|
104
|
+
let outcome;
|
|
105
|
+
try {
|
|
106
|
+
outcome = parseCallbackAttemptOutcome(value);
|
|
107
|
+
}
|
|
108
|
+
catch {
|
|
109
|
+
outcome = acceptedCheckpoint ?? callbackTransportContractViolation();
|
|
110
|
+
}
|
|
111
|
+
if (acceptedCheckpoint && outcome.disposition !== "accepted") {
|
|
112
|
+
outcome = acceptedCheckpoint;
|
|
113
|
+
}
|
|
114
|
+
else if (invalidCheckpoint && outcome.disposition !== "accepted") {
|
|
115
|
+
outcome = callbackTransportContractViolation();
|
|
116
|
+
}
|
|
117
|
+
return callbackDeliveryOutcome(resolved.route, outcome);
|
|
118
|
+
}
|
|
119
|
+
function callbackTransportContractViolation() {
|
|
120
|
+
return {
|
|
121
|
+
disposition: "uncertain",
|
|
122
|
+
error_code: "callback_transport_contract_violation",
|
|
123
|
+
observed_at: cliNow().toISOString()
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
function callbackDeliveryOutcome(route, outcome) {
|
|
127
|
+
const legacyDelivery = legacyCallbackDelivery(outcome);
|
|
128
|
+
if (legacyDelivery) {
|
|
129
|
+
return { ...legacyDelivery, attempt_outcome: outcome };
|
|
130
|
+
}
|
|
131
|
+
const accepted = outcome.disposition === "accepted";
|
|
132
|
+
const uncertain = outcome.disposition === "uncertain";
|
|
133
|
+
const errorCode = accepted ? undefined : outcome.error_code;
|
|
134
|
+
const injectionStatus = outcomeEvidenceString(outcome, "injection_status") ?? (accepted ? "accepted" : uncertain ? "uncertain" : "failed");
|
|
135
|
+
const wakeStatus = outcomeEvidenceString(outcome, "wake_status") ??
|
|
136
|
+
(accepted ? "not_required" : "not_attempted");
|
|
137
|
+
return {
|
|
138
|
+
kind: outcomeEvidenceString(outcome, "delivery_kind") ??
|
|
139
|
+
route?.transport ?? "callback_transport",
|
|
140
|
+
injection: {
|
|
141
|
+
status: injectionStatus,
|
|
142
|
+
...(accepted
|
|
143
|
+
? {
|
|
144
|
+
accepted_at: outcome.accepted_at
|
|
145
|
+
}
|
|
146
|
+
: { error_code: errorCode })
|
|
147
|
+
},
|
|
148
|
+
wake: {
|
|
149
|
+
status: wakeStatus
|
|
150
|
+
},
|
|
151
|
+
attempt_outcome: outcome
|
|
152
|
+
};
|
|
153
|
+
}
|
|
154
|
+
function legacyCallbackDelivery(outcome) {
|
|
155
|
+
const value = recordValue(outcome.evidence?.legacy_delivery);
|
|
156
|
+
const kind = nonBlankString(value?.kind);
|
|
157
|
+
const injection = recordValue(value?.injection);
|
|
158
|
+
const wake = recordValue(value?.wake);
|
|
159
|
+
const runObservation = recordValue(value?.run_observation);
|
|
160
|
+
if (!kind || !injection || !wake)
|
|
161
|
+
return undefined;
|
|
162
|
+
return {
|
|
163
|
+
kind,
|
|
164
|
+
injection,
|
|
165
|
+
wake,
|
|
166
|
+
...(runObservation ? { run_observation: runObservation } : {})
|
|
167
|
+
};
|
|
168
|
+
}
|
|
169
|
+
function outcomeEvidenceString(outcome, field) {
|
|
170
|
+
const value = outcome.evidence?.[field];
|
|
171
|
+
return typeof value === "string" && value.trim() ? value : undefined;
|
|
172
|
+
}
|
|
61
173
|
function callbackOutboxService() {
|
|
62
174
|
const runtime = callbackRuntime();
|
|
63
175
|
return createCallbackOutboxService({
|
|
@@ -76,6 +188,7 @@ function callbackOutboxService() {
|
|
|
76
188
|
releaseState();
|
|
77
189
|
}
|
|
78
190
|
},
|
|
191
|
+
withWriter: runtime.state.withWriter,
|
|
79
192
|
storeDirForStatePath: callbackStoreDir, logPathForStatePath
|
|
80
193
|
},
|
|
81
194
|
authority: runtime.authority,
|
|
@@ -90,7 +203,7 @@ function callbackOutboxService() {
|
|
|
90
203
|
}
|
|
91
204
|
}
|
|
92
205
|
},
|
|
93
|
-
delivery: { deliver:
|
|
206
|
+
delivery: { deliver: deliverCallbackViaTransport,
|
|
94
207
|
runTransaction: runCallbackTransaction }
|
|
95
208
|
});
|
|
96
209
|
}
|
|
@@ -114,29 +227,6 @@ function runPreparedCallback(prepared, { emit = true } = {}) {
|
|
|
114
227
|
emitPreparedCallbackResult(result);
|
|
115
228
|
return result;
|
|
116
229
|
}
|
|
117
|
-
function recordCallbackProcessDelivery(observation) {
|
|
118
|
-
const { logPath, conversation, message, event, runtimeEvent, delivery } = observation;
|
|
119
|
-
const detail = observation.detail ?? {};
|
|
120
|
-
appendEvent(logPath, {
|
|
121
|
-
ts: cliNow().toISOString(), conversation_id: conversation.conversation_id,
|
|
122
|
-
event, from: message.from, to: "openclaw", round: message.round, ...detail,
|
|
123
|
-
status: delivery.status, stdout: redactString(delivery.stdout),
|
|
124
|
-
stderr: redactString(delivery.stderr)
|
|
125
|
-
});
|
|
126
|
-
cliRuntimeLog("info", runtimeEvent, {
|
|
127
|
-
conversation_id: conversation.conversation_id, ...detail,
|
|
128
|
-
status: delivery.status,
|
|
129
|
-
failure_kind: callbackRuntime().runtime.classifyProcessFailure(delivery),
|
|
130
|
-
stdout: callbackRuntime().runtime.textSummary(delivery.stdout),
|
|
131
|
-
stderr: callbackRuntime().runtime.textSummary(delivery.stderr)
|
|
132
|
-
});
|
|
133
|
-
}
|
|
134
|
-
function openClawCallbackTransport() {
|
|
135
|
-
return createOpenClawCallbackTransport({
|
|
136
|
-
now: cliNow, environment: cliEnv, redactConversation: redactCliOutput,
|
|
137
|
-
recordCallbackProcessDelivery
|
|
138
|
-
});
|
|
139
|
-
}
|
|
140
230
|
export function createCallbackCliFacade(dependencies) {
|
|
141
231
|
const call = (operation) => callbackCliContext.run(dependencies, operation);
|
|
142
232
|
return Object.freeze({
|
|
@@ -146,11 +236,10 @@ export function createCallbackCliFacade(dependencies) {
|
|
|
146
236
|
reconcileDelivery: (input) => call(() => callbackOutboxService().reconcileDelivery(input)),
|
|
147
237
|
runRetryMonitor: (input) => call(() => callbackOutboxService().runRetryMonitor(input)),
|
|
148
238
|
prepareApprovalNotification: (input) => call(() => callbackOutboxService().prepareApprovalNotification(input)),
|
|
239
|
+
prepareStallNotification: (input) => call(() => callbackOutboxService().prepareStallNotification(input)),
|
|
149
240
|
prepareTerminalCompletion: (input) => call(() => callbackOutboxService().prepareTerminalCompletion(input)),
|
|
150
241
|
runPrepared: (prepared, options) => call(() => runPreparedCallback(prepared, options)),
|
|
151
|
-
emitPreparedResult: (result) => call(() => emitPreparedCallbackResult(result))
|
|
152
|
-
deliverGatewayMethod: (input) => call(() => openClawCallbackTransport().deliverGatewayMethod(input)),
|
|
153
|
-
deliverChatSend: (input) => call(() => openClawCallbackTransport().deliverChatSend(input))
|
|
242
|
+
emitPreparedResult: (result) => call(() => emitPreparedCallbackResult(result))
|
|
154
243
|
});
|
|
155
244
|
}
|
|
156
245
|
//# sourceMappingURL=callback-cli-adapter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"callback-cli-adapter.js","sourceRoot":"","sources":["../../src/callback-cli-adapter.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EACL,2BAA2B,
|
|
1
|
+
{"version":3,"file":"callback-cli-adapter.js","sourceRoot":"","sources":["../../src/callback-cli-adapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,13 @@
|
|
|
1
1
|
import type { AgentMessage, Conversation } from "./protocol.js";
|
|
2
|
+
import { type CallbackAttemptOutcome, type CallbackEnvelopeV1, type CallbackRouteV1, type CallbackTransportAttemptV1 } from "./callback-transport.js";
|
|
3
|
+
export type { CallbackAttemptOutcome, CallbackEnvelopeV1, CallbackRouteV1 } from "./callback-transport.js";
|
|
2
4
|
export interface CallbackDeliveryOutcome {
|
|
3
5
|
kind: string;
|
|
4
6
|
injection: Record<string, unknown>;
|
|
5
7
|
wake: Record<string, unknown>;
|
|
6
8
|
run_observation?: Record<string, unknown>;
|
|
9
|
+
/** Generic evidence written alongside the legacy OpenClaw shape. */
|
|
10
|
+
attempt_outcome?: CallbackAttemptOutcome;
|
|
7
11
|
}
|
|
8
12
|
export interface CallbackProcessFailureObservation {
|
|
9
13
|
status?: number | null;
|
|
@@ -13,8 +17,28 @@ export interface CallbackProcessFailureObservation {
|
|
|
13
17
|
message?: string;
|
|
14
18
|
};
|
|
15
19
|
}
|
|
20
|
+
/**
|
|
21
|
+
* Fence an advisory outbox when its underlying Turn moves on. Accepted
|
|
22
|
+
* transport evidence is retained for settlement; only unaccepted work is
|
|
23
|
+
* superseded so a late retry cannot notify the previous lifecycle phase.
|
|
24
|
+
*/
|
|
25
|
+
export declare function supersedeCallbackNotificationDelivery(conversation: Conversation, input: {
|
|
26
|
+
at: string;
|
|
27
|
+
reason: string;
|
|
28
|
+
}): Conversation;
|
|
29
|
+
/**
|
|
30
|
+
* Explicit Close releases AKK's management of the Turn. Fence both durable
|
|
31
|
+
* callback lanes unless the host has already accepted the transport. A
|
|
32
|
+
* transport-start marker is retained as audit evidence, but never authorizes a
|
|
33
|
+
* retry after Close.
|
|
34
|
+
*/
|
|
35
|
+
export declare function supersedeUnacceptedCallbackDeliveries(conversation: Conversation, input: {
|
|
36
|
+
at: string;
|
|
37
|
+
reason: string;
|
|
38
|
+
}): Conversation;
|
|
16
39
|
export declare function classifyCallbackProcessFailure(result: CallbackProcessFailureObservation): string | undefined;
|
|
17
40
|
export interface CallbackDeliveryOptions {
|
|
41
|
+
callbackRoute?: CallbackRouteV1;
|
|
18
42
|
gatewayMethod?: string;
|
|
19
43
|
openclawBin?: string;
|
|
20
44
|
gatewayUrl?: string;
|
|
@@ -28,6 +52,10 @@ export interface DeliverCallbackInput {
|
|
|
28
52
|
logPath: string;
|
|
29
53
|
conversation: Conversation;
|
|
30
54
|
message: AgentMessage;
|
|
55
|
+
/** Immutable prepared outbox claim crossing the transport boundary. */
|
|
56
|
+
attempt: CallbackTransportAttemptV1;
|
|
57
|
+
route?: CallbackRouteV1;
|
|
58
|
+
envelope?: CallbackEnvelopeV1;
|
|
31
59
|
onProgress?: (progress: Record<string, unknown>) => void;
|
|
32
60
|
onAccepted?: (outcome: CallbackDeliveryOutcome) => void;
|
|
33
61
|
}
|
|
@@ -43,6 +71,14 @@ export type CallbackRetryDisposition = {
|
|
|
43
71
|
} | {
|
|
44
72
|
state: "accepted";
|
|
45
73
|
attempt: number;
|
|
74
|
+
} | {
|
|
75
|
+
state: "permanent_failure";
|
|
76
|
+
attempt: number;
|
|
77
|
+
reason: string;
|
|
78
|
+
} | {
|
|
79
|
+
state: "uncertain";
|
|
80
|
+
attempt: number;
|
|
81
|
+
reason: string;
|
|
46
82
|
} | {
|
|
47
83
|
state: "exhausted";
|
|
48
84
|
attempt: number;
|
|
@@ -61,6 +97,7 @@ export type CallbackRetryPolicyState = {
|
|
|
61
97
|
effective_lease_expires_at_ms?: number;
|
|
62
98
|
persisted_lease_expires_at?: string;
|
|
63
99
|
next_attempt_at?: string;
|
|
100
|
+
transport_started_without_outcome?: true;
|
|
64
101
|
} | {
|
|
65
102
|
phase: "observe_clock";
|
|
66
103
|
attempt: number;
|
|
@@ -68,6 +105,7 @@ export type CallbackRetryPolicyState = {
|
|
|
68
105
|
effective_lease_expires_at_ms: number;
|
|
69
106
|
persisted_lease_expires_at?: string;
|
|
70
107
|
next_attempt_at?: string;
|
|
108
|
+
transport_started_without_outcome?: true;
|
|
71
109
|
};
|
|
72
110
|
export type CallbackRetryObservation = {
|
|
73
111
|
kind: "process_alive";
|
|
@@ -93,3 +131,4 @@ export declare function beginCallbackRetryPolicy(callbackDelivery: unknown, limi
|
|
|
93
131
|
*/
|
|
94
132
|
export declare function reduceCallbackRetryPolicy(state: CallbackRetryPolicyState, observation: CallbackRetryObservation): CallbackRetryPolicyState;
|
|
95
133
|
export declare function callbackDeliveryHasAcceptedTransport(callbackDelivery: unknown): boolean;
|
|
134
|
+
export declare function callbackDeliveryAttemptOutcome(callbackDelivery: unknown): CallbackAttemptOutcome | undefined;
|
|
@@ -1,4 +1,67 @@
|
|
|
1
1
|
import { nonBlankString as stringValue, recordValue } from "./value-guards.js";
|
|
2
|
+
import { parseCallbackAttemptOutcome } from "./callback-transport.js";
|
|
3
|
+
/**
|
|
4
|
+
* Fence an advisory outbox when its underlying Turn moves on. Accepted
|
|
5
|
+
* transport evidence is retained for settlement; only unaccepted work is
|
|
6
|
+
* superseded so a late retry cannot notify the previous lifecycle phase.
|
|
7
|
+
*/
|
|
8
|
+
export function supersedeCallbackNotificationDelivery(conversation, input) {
|
|
9
|
+
const delivery = recordValue(conversation.callback_notification_delivery);
|
|
10
|
+
if (!delivery ||
|
|
11
|
+
!["pending", "failed"].includes(String(delivery.status ?? "")) ||
|
|
12
|
+
callbackDeliveryHasAcceptedTransport(delivery)) {
|
|
13
|
+
return conversation;
|
|
14
|
+
}
|
|
15
|
+
return {
|
|
16
|
+
...conversation,
|
|
17
|
+
callback_notification_delivery: {
|
|
18
|
+
...delivery,
|
|
19
|
+
status: "superseded",
|
|
20
|
+
superseded_at: input.at,
|
|
21
|
+
superseded_reason: input.reason,
|
|
22
|
+
attempt_pid: undefined,
|
|
23
|
+
attempt_lease_expires_at: undefined,
|
|
24
|
+
retry_monitor_pid: undefined,
|
|
25
|
+
next_attempt_at: undefined,
|
|
26
|
+
updated_at: input.at
|
|
27
|
+
}
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Explicit Close releases AKK's management of the Turn. Fence both durable
|
|
32
|
+
* callback lanes unless the host has already accepted the transport. A
|
|
33
|
+
* transport-start marker is retained as audit evidence, but never authorizes a
|
|
34
|
+
* retry after Close.
|
|
35
|
+
*/
|
|
36
|
+
export function supersedeUnacceptedCallbackDeliveries(conversation, input) {
|
|
37
|
+
let next = conversation;
|
|
38
|
+
for (const field of [
|
|
39
|
+
"callback_delivery",
|
|
40
|
+
"callback_notification_delivery"
|
|
41
|
+
]) {
|
|
42
|
+
const delivery = recordValue(next[field]);
|
|
43
|
+
if (!delivery ||
|
|
44
|
+
!["pending", "failed"].includes(String(delivery.status ?? "")) ||
|
|
45
|
+
callbackDeliveryHasAcceptedTransport(delivery)) {
|
|
46
|
+
continue;
|
|
47
|
+
}
|
|
48
|
+
next = {
|
|
49
|
+
...next,
|
|
50
|
+
[field]: {
|
|
51
|
+
...delivery,
|
|
52
|
+
status: "superseded",
|
|
53
|
+
superseded_at: input.at,
|
|
54
|
+
superseded_reason: input.reason,
|
|
55
|
+
attempt_pid: undefined,
|
|
56
|
+
attempt_lease_expires_at: undefined,
|
|
57
|
+
retry_monitor_pid: undefined,
|
|
58
|
+
next_attempt_at: undefined,
|
|
59
|
+
updated_at: input.at
|
|
60
|
+
}
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
return next;
|
|
64
|
+
}
|
|
2
65
|
export function classifyCallbackProcessFailure(result) {
|
|
3
66
|
const status = result.status ?? 0;
|
|
4
67
|
const combined = [
|
|
@@ -55,9 +118,49 @@ export function beginCallbackRetryPolicy(callbackDelivery, limits) {
|
|
|
55
118
|
reason: "no pending or failed callback outbox is available"
|
|
56
119
|
});
|
|
57
120
|
}
|
|
121
|
+
const attemptOutcome = callbackAttemptOutcomeEvidence(delivery);
|
|
122
|
+
if (attemptOutcome.kind === "invalid") {
|
|
123
|
+
return decided({
|
|
124
|
+
state: "unavailable",
|
|
125
|
+
attempt,
|
|
126
|
+
reason: attemptOutcome.reason
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
if (attemptOutcome.kind === "present") {
|
|
130
|
+
if (attemptOutcome.outcome.disposition === "accepted") {
|
|
131
|
+
return decided({ state: "accepted", attempt });
|
|
132
|
+
}
|
|
133
|
+
if (attemptOutcome.outcome.disposition === "permanent_failure") {
|
|
134
|
+
return decided({
|
|
135
|
+
state: "permanent_failure",
|
|
136
|
+
attempt,
|
|
137
|
+
reason: attemptOutcome.outcome.error_code
|
|
138
|
+
});
|
|
139
|
+
}
|
|
140
|
+
if (attemptOutcome.outcome.disposition === "uncertain") {
|
|
141
|
+
return decided({
|
|
142
|
+
state: "uncertain",
|
|
143
|
+
attempt,
|
|
144
|
+
reason: attemptOutcome.outcome.error_code
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
}
|
|
58
148
|
if (callbackDeliveryHasAcceptedTransport(delivery)) {
|
|
59
149
|
return decided({ state: "accepted", attempt });
|
|
60
150
|
}
|
|
151
|
+
const hasTransportStart = Object.hasOwn(delivery, "transport_started_at");
|
|
152
|
+
const transportStartedAt = stringValue(delivery.transport_started_at);
|
|
153
|
+
if (hasTransportStart &&
|
|
154
|
+
(!transportStartedAt || !Number.isFinite(Date.parse(transportStartedAt)))) {
|
|
155
|
+
return decided({
|
|
156
|
+
state: "unavailable",
|
|
157
|
+
attempt,
|
|
158
|
+
reason: "callback outbox has invalid transport-start evidence"
|
|
159
|
+
});
|
|
160
|
+
}
|
|
161
|
+
const transportStartedWithoutOutcome = Boolean(transportStartedAt &&
|
|
162
|
+
!(attemptOutcome.kind === "present" &&
|
|
163
|
+
attemptOutcome.outcome.disposition === "retryable_failure"));
|
|
61
164
|
if (!Number.isSafeInteger(attemptValue) || attemptValue < 1) {
|
|
62
165
|
return decided({
|
|
63
166
|
state: "unavailable",
|
|
@@ -69,14 +172,18 @@ export function beginCallbackRetryPolicy(callbackDelivery, limits) {
|
|
|
69
172
|
return decided({ state: "exhausted", attempt });
|
|
70
173
|
}
|
|
71
174
|
if (delivery.status === "failed") {
|
|
72
|
-
return
|
|
175
|
+
return transportStartedWithoutOutcome
|
|
176
|
+
? uncertainTransportStart(attempt)
|
|
177
|
+
: decided({ state: "retryable", attempt });
|
|
73
178
|
}
|
|
74
179
|
const attemptPidValue = Number(delivery.attempt_pid);
|
|
75
180
|
const attemptPid = Number.isSafeInteger(attemptPidValue) && attemptPidValue > 0
|
|
76
181
|
? attemptPidValue
|
|
77
182
|
: undefined;
|
|
78
183
|
if (attemptPid === undefined) {
|
|
79
|
-
return
|
|
184
|
+
return transportStartedWithoutOutcome
|
|
185
|
+
? uncertainTransportStart(attempt)
|
|
186
|
+
: decided({ state: "retryable", attempt });
|
|
80
187
|
}
|
|
81
188
|
const persistedLeaseExpiresAt = stringValue(delivery.attempt_lease_expires_at);
|
|
82
189
|
const leaseExpiresAtMs = validTimestampMs(persistedLeaseExpiresAt);
|
|
@@ -90,7 +197,10 @@ export function beginCallbackRetryPolicy(callbackDelivery, limits) {
|
|
|
90
197
|
? undefined
|
|
91
198
|
: legacyLastAttemptAtMs + limits.attemptLeaseMs),
|
|
92
199
|
persisted_lease_expires_at: persistedLeaseExpiresAt,
|
|
93
|
-
next_attempt_at: stringValue(delivery.next_attempt_at)
|
|
200
|
+
next_attempt_at: stringValue(delivery.next_attempt_at),
|
|
201
|
+
...(transportStartedWithoutOutcome
|
|
202
|
+
? { transport_started_without_outcome: true }
|
|
203
|
+
: {})
|
|
94
204
|
};
|
|
95
205
|
}
|
|
96
206
|
/**
|
|
@@ -107,7 +217,9 @@ export function reduceCallbackRetryPolicy(state, observation) {
|
|
|
107
217
|
throw new Error("callback retry policy requires a process observation");
|
|
108
218
|
}
|
|
109
219
|
if (!observation.alive || state.effective_lease_expires_at_ms === undefined) {
|
|
110
|
-
return
|
|
220
|
+
return state.transport_started_without_outcome
|
|
221
|
+
? uncertainTransportStart(state.attempt)
|
|
222
|
+
: decided({ state: "retryable", attempt: state.attempt });
|
|
111
223
|
}
|
|
112
224
|
return {
|
|
113
225
|
phase: "observe_clock",
|
|
@@ -115,7 +227,10 @@ export function reduceCallbackRetryPolicy(state, observation) {
|
|
|
115
227
|
attempt_pid: state.attempt_pid,
|
|
116
228
|
effective_lease_expires_at_ms: state.effective_lease_expires_at_ms,
|
|
117
229
|
persisted_lease_expires_at: state.persisted_lease_expires_at,
|
|
118
|
-
next_attempt_at: state.next_attempt_at
|
|
230
|
+
next_attempt_at: state.next_attempt_at,
|
|
231
|
+
...(state.transport_started_without_outcome
|
|
232
|
+
? { transport_started_without_outcome: true }
|
|
233
|
+
: {})
|
|
119
234
|
};
|
|
120
235
|
}
|
|
121
236
|
if (observation.kind !== "clock") {
|
|
@@ -131,14 +246,56 @@ export function reduceCallbackRetryPolicy(state, observation) {
|
|
|
131
246
|
next_attempt_at: state.next_attempt_at
|
|
132
247
|
});
|
|
133
248
|
}
|
|
134
|
-
return
|
|
249
|
+
return state.transport_started_without_outcome
|
|
250
|
+
? uncertainTransportStart(state.attempt)
|
|
251
|
+
: decided({ state: "retryable", attempt: state.attempt });
|
|
252
|
+
}
|
|
253
|
+
function uncertainTransportStart(attempt) {
|
|
254
|
+
return decided({
|
|
255
|
+
state: "uncertain",
|
|
256
|
+
attempt,
|
|
257
|
+
reason: "callback transport started without a durable final outcome"
|
|
258
|
+
});
|
|
135
259
|
}
|
|
136
260
|
export function callbackDeliveryHasAcceptedTransport(callbackDelivery) {
|
|
137
261
|
const delivery = recordValue(callbackDelivery);
|
|
262
|
+
const attemptOutcome = callbackAttemptOutcomeEvidence(delivery);
|
|
263
|
+
if (attemptOutcome.kind === "invalid") {
|
|
264
|
+
return false;
|
|
265
|
+
}
|
|
266
|
+
if (attemptOutcome.kind === "present" &&
|
|
267
|
+
attemptOutcome.outcome.disposition === "accepted") {
|
|
268
|
+
return true;
|
|
269
|
+
}
|
|
138
270
|
const injection = recordValue(delivery?.injection);
|
|
139
271
|
const wake = recordValue(delivery?.wake);
|
|
140
272
|
return injection?.status === "accepted" || wake?.status === "accepted";
|
|
141
273
|
}
|
|
274
|
+
export function callbackDeliveryAttemptOutcome(callbackDelivery) {
|
|
275
|
+
const delivery = recordValue(callbackDelivery);
|
|
276
|
+
if (!delivery || !Object.hasOwn(delivery, "attempt_outcome")) {
|
|
277
|
+
return undefined;
|
|
278
|
+
}
|
|
279
|
+
return parseCallbackAttemptOutcome(delivery.attempt_outcome);
|
|
280
|
+
}
|
|
281
|
+
function callbackAttemptOutcomeEvidence(delivery) {
|
|
282
|
+
if (!delivery || !Object.hasOwn(delivery, "attempt_outcome")) {
|
|
283
|
+
return { kind: "missing" };
|
|
284
|
+
}
|
|
285
|
+
try {
|
|
286
|
+
return {
|
|
287
|
+
kind: "present",
|
|
288
|
+
outcome: parseCallbackAttemptOutcome(delivery.attempt_outcome)
|
|
289
|
+
};
|
|
290
|
+
}
|
|
291
|
+
catch (error) {
|
|
292
|
+
return {
|
|
293
|
+
kind: "invalid",
|
|
294
|
+
reason: "callback outbox has invalid attempt outcome: " +
|
|
295
|
+
(error instanceof Error ? error.message : String(error))
|
|
296
|
+
};
|
|
297
|
+
}
|
|
298
|
+
}
|
|
142
299
|
function decided(disposition) {
|
|
143
300
|
return { phase: "decided", disposition };
|
|
144
301
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"callback-outbox-policy.js","sourceRoot":"","sources":["../../src/callback-outbox-policy.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,IAAI,WAAW,EAC7B,WAAW,EACZ,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"callback-outbox-policy.js","sourceRoot":"","sources":["../../src/callback-outbox-policy.ts"],"names":[],"mappings":"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"}
|