@scotthuang/agent-knock-knock 0.12.13 → 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 +18 -0
- package/README.md +5 -5
- 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/cli-core.js +17 -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 +2 -1
- 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 +244 -35
- 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 +4 -1
- package/dist/src/openclaw-callback-transport.js +403 -10
- 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-command-adapter.js +28 -31
- package/dist/src/openclaw-plugin-command-adapter.js.map +1 -1
- package/dist/src/openclaw-plugin-helpers.js +8 -0
- package/dist/src/openclaw-plugin-helpers.js.map +1 -1
- package/dist/src/openclaw-plugin-schemas.d.ts +20 -1
- package/dist/src/openclaw-plugin-schemas.js +26 -2
- package/dist/src/openclaw-plugin-schemas.js.map +1 -1
- 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 +9 -0
- package/dist/src/store.js +79 -1
- 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 +1 -2
- package/dist/src/terminal-action-projection.js +4 -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 +9 -0
- package/dist/src/terminal-command-cli-adapter.js +2130 -5
- 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-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 +1 -0
- package/dist/src/terminal-list-cli-adapter.js +50 -31
- package/dist/src/terminal-list-cli-adapter.js.map +1 -1
- package/dist/src/terminal-list-renderer.d.ts +9 -1
- package/dist/src/terminal-list-renderer.js +219 -98
- 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 +170 -27
- 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 +808 -147
- 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 +1 -0
- package/dist/src/terminal-status-cli-adapter.js +30 -28
- package/dist/src/terminal-status-cli-adapter.js.map +1 -1
- package/dist/src/terminal-submission-acceptance.js +78 -25
- 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 +10 -2
- package/dist/src/terminal-watch-callback-cli-adapter.js +76 -37
- package/dist/src/terminal-watch-callback-cli-adapter.js.map +1 -1
- package/dist/src/terminal-watch-cli-adapter.js +41 -17
- package/dist/src/terminal-watch-cli-adapter.js.map +1 -1
- package/dist/src/terminal-watch-service.d.ts +11 -6
- package/dist/src/terminal-watch-service.js +210 -41
- package/dist/src/terminal-watch-service.js.map +1 -1
- package/dist/src/terminal-watch-store.d.ts +23 -0
- package/dist/src/terminal-watch-store.js +162 -4
- package/dist/src/terminal-watch-store.js.map +1 -1
- package/docs/quickstart-tmux.md +1 -1
- package/package.json +1 -1
- package/templates/openclaw-skills/agent-knock-knock/SKILL.md +8 -5
|
@@ -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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"}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { type AgentMessage, type Actor, type Conversation } from "./protocol.js";
|
|
2
2
|
import type { TerminalCompletionEvidence, TerminalControlRef } from "./terminal-agent-adapter.js";
|
|
3
3
|
import type { CallbackDeliveryOptions, CallbackDeliveryOutcome, CallbackRetryDisposition, DeliverCallbackInput } from "./callback-outbox-policy.js";
|
|
4
|
+
import { type CallbackOutboxLane } from "./callback-outbox-settlement.js";
|
|
4
5
|
import type { TranscriptEvent } from "./transcript.js";
|
|
6
|
+
import { type CallbackEnvelopeV1, type CallbackRouteV1 } from "./callback-transport.js";
|
|
5
7
|
export interface CallbackPreparationOptions extends CallbackDeliveryOptions {
|
|
6
8
|
statePath: string;
|
|
7
9
|
messageJson?: string;
|
|
@@ -16,6 +18,8 @@ export interface CallbackPreparationOptions extends CallbackDeliveryOptions {
|
|
|
16
18
|
recoverMissingOutbox?: boolean;
|
|
17
19
|
recoverTerminalCompletion?: boolean;
|
|
18
20
|
retryPending?: boolean;
|
|
21
|
+
/** Internal durable lane; ordinary callbacks use the lifecycle lane. */
|
|
22
|
+
callbackOutboxLane?: CallbackOutboxLane;
|
|
19
23
|
}
|
|
20
24
|
export interface PrepareCallbackOutboxInput {
|
|
21
25
|
options: CallbackPreparationOptions;
|
|
@@ -35,6 +39,9 @@ export interface PreparedCallbackDelivery extends PreparedCallbackBase {
|
|
|
35
39
|
logPath: string;
|
|
36
40
|
deliveryAttempt: number;
|
|
37
41
|
deliveryAttemptId: string;
|
|
42
|
+
callbackOutboxLane: CallbackOutboxLane;
|
|
43
|
+
callbackRoute?: CallbackRouteV1;
|
|
44
|
+
callbackEnvelope?: CallbackEnvelopeV1;
|
|
38
45
|
}
|
|
39
46
|
export type PreparedCallback = PreparedCallbackWithoutDelivery | PreparedCallbackDelivery;
|
|
40
47
|
export interface CallbackExecutionResult {
|
|
@@ -48,10 +55,12 @@ export interface CallbackDeliveryReconciliationInput {
|
|
|
48
55
|
statePath: string;
|
|
49
56
|
logPath: string;
|
|
50
57
|
delayMs?: unknown;
|
|
58
|
+
callbackOutboxLane?: CallbackOutboxLane;
|
|
51
59
|
}
|
|
52
60
|
export interface CallbackRetryMonitorInput {
|
|
53
61
|
statePath: string;
|
|
54
62
|
initialDelayMs?: unknown;
|
|
63
|
+
callbackOutboxLane?: CallbackOutboxLane;
|
|
55
64
|
}
|
|
56
65
|
export interface RetryCallbackInput {
|
|
57
66
|
options: CallbackPreparationOptions;
|
|
@@ -89,6 +98,13 @@ export interface ApprovalNotificationPreparationInput {
|
|
|
89
98
|
metadata: Record<string, unknown>;
|
|
90
99
|
recoverMissingOutbox?: boolean;
|
|
91
100
|
}
|
|
101
|
+
export interface StallNotificationPreparationInput {
|
|
102
|
+
options: CallbackPreparationOptions;
|
|
103
|
+
statePath: string;
|
|
104
|
+
logPath: string;
|
|
105
|
+
conversation: Conversation;
|
|
106
|
+
message: AgentMessage;
|
|
107
|
+
}
|
|
92
108
|
export interface CallbackOutboxServicePorts {
|
|
93
109
|
state: {
|
|
94
110
|
load(statePath: string): Conversation;
|
|
@@ -98,6 +114,7 @@ export interface CallbackOutboxServicePorts {
|
|
|
98
114
|
appendMessage(logPath: string, message: AgentMessage): void;
|
|
99
115
|
assertWriterCompatible(storeDir: string): void;
|
|
100
116
|
withTransaction<Result>(statePath: string, operation: () => Result): Result;
|
|
117
|
+
withWriter<Result>(storeDir: string, operation: () => Result): Result;
|
|
101
118
|
storeDirForStatePath(statePath: string): string;
|
|
102
119
|
logPathForStatePath(statePath: string): string;
|
|
103
120
|
};
|
|
@@ -119,6 +136,7 @@ export interface CallbackOutboxServicePorts {
|
|
|
119
136
|
startMonitor(input: {
|
|
120
137
|
statePath: string;
|
|
121
138
|
delayMs: number;
|
|
139
|
+
callbackOutboxLane?: CallbackOutboxLane;
|
|
122
140
|
}): {
|
|
123
141
|
pid?: number | null;
|
|
124
142
|
};
|
|
@@ -148,7 +166,7 @@ export declare function resolveCallbackGatewayRoute(...candidates: CallbackGatew
|
|
|
148
166
|
gatewayUrl: string | undefined;
|
|
149
167
|
token: string;
|
|
150
168
|
} | {
|
|
151
|
-
gatewayUrl: undefined;
|
|
169
|
+
gatewayUrl: string | undefined;
|
|
152
170
|
token: undefined;
|
|
153
171
|
};
|
|
154
172
|
export declare function createCallbackOutboxService(ports: CallbackOutboxServicePorts): {
|
|
@@ -222,6 +240,15 @@ export declare function createCallbackOutboxService(ports: CallbackOutboxService
|
|
|
222
240
|
callbackMessage: AgentMessage;
|
|
223
241
|
prepared: PreparedCallback;
|
|
224
242
|
};
|
|
243
|
+
prepareStallNotification: (input: StallNotificationPreparationInput) => {
|
|
244
|
+
prepared?: undefined;
|
|
245
|
+
callbackMessage: AgentMessage;
|
|
246
|
+
delivered: false;
|
|
247
|
+
} | {
|
|
248
|
+
delivered?: undefined;
|
|
249
|
+
callbackMessage: AgentMessage;
|
|
250
|
+
prepared: PreparedCallback;
|
|
251
|
+
};
|
|
225
252
|
prepareTerminalCompletion: (input: TerminalCompletionPreparationInput) => {
|
|
226
253
|
claimed: true;
|
|
227
254
|
conversation: Conversation;
|