@miller-tech/uap 1.179.2 → 1.179.4
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/dist/.tsbuildinfo +1 -1
- package/dist/cli/deliver.d.ts +1 -31
- package/dist/cli/deliver.d.ts.map +1 -1
- package/dist/cli/deliver.js +18 -62
- package/dist/cli/deliver.js.map +1 -1
- package/dist/delivery/await-run.d.ts +56 -0
- package/dist/delivery/await-run.d.ts.map +1 -1
- package/dist/delivery/await-run.js +99 -6
- package/dist/delivery/await-run.js.map +1 -1
- package/dist/delivery/heartbeat.d.ts +41 -0
- package/dist/delivery/heartbeat.d.ts.map +1 -0
- package/dist/delivery/heartbeat.js +106 -0
- package/dist/delivery/heartbeat.js.map +1 -0
- package/dist/mcp-router/tools/deliver.d.ts.map +1 -1
- package/dist/mcp-router/tools/deliver.js +7 -2
- package/dist/mcp-router/tools/deliver.js.map +1 -1
- package/docs/guides/DELIVER.md +12 -1
- package/docs/reference/CLI.md +40 -0
- package/package.json +2 -1
- package/src/policies/enforcers/__pycache__/_common.cpython-312.pyc +0 -0
- package/src/policies/enforcers/delivery_enforcement.py +63 -0
- package/src/policies/enforcers/enforcement_infra_protect.py +268 -7
- package/src/policies/schemas/policies/delivery-enforcement.md +19 -1
- package/src/policies/schemas/policies/enforcement-infra-protect.md +47 -3
- package/templates/hooks/__pycache__/deliver_autoroute.cpython-312.pyc +0 -0
- package/tools/agents/scripts/__pycache__/toolcall_path_normalizer.cpython-312.pyc +0 -0
|
@@ -92,11 +92,67 @@ export interface AwaitResult {
|
|
|
92
92
|
run?: RunSummary;
|
|
93
93
|
/** False when the run had to be guessed rather than matched to the holder. */
|
|
94
94
|
attributed?: boolean;
|
|
95
|
+
/**
|
|
96
|
+
* Evidence that the run is MOVING, set whenever the wait gave up on a live
|
|
97
|
+
* run. See FollowProgress — this is the field that makes a repeated poll
|
|
98
|
+
* informative rather than identical.
|
|
99
|
+
*/
|
|
100
|
+
progress?: FollowProgress;
|
|
95
101
|
/** Human/model-facing explanation. Always set. */
|
|
96
102
|
reason: string;
|
|
97
103
|
/** What the caller should do next. Always set. */
|
|
98
104
|
nextStep: string;
|
|
99
105
|
}
|
|
106
|
+
/**
|
|
107
|
+
* What a caller needs to tell "slow but working" from "stuck".
|
|
108
|
+
*
|
|
109
|
+
* THE GAP THIS CLOSES
|
|
110
|
+
* A follow that times out used to answer with elapsed-wait only — the same
|
|
111
|
+
* sentence every time, and an UNCONDITIONAL claim that "the run is healthy"
|
|
112
|
+
* which nothing had checked. Three identical answers look exactly like a hung
|
|
113
|
+
* process, so a caller with no way to see movement concludes the run is wedged.
|
|
114
|
+
*
|
|
115
|
+
* Observed live (2026-07-31, octopus_invaders_v3, qwen on opencode): the model
|
|
116
|
+
* followed three times, got three identical "STILL RUNNING after 45s" replies,
|
|
117
|
+
* and then killed the run — six times in one hour, each kill discarding work the
|
|
118
|
+
* run had already finished. Closing the kill ROUTES is a separate change; this
|
|
119
|
+
* closes the REASON it reached for them. A gate that refuses without answering
|
|
120
|
+
* the question just moves the loop somewhere else.
|
|
121
|
+
*
|
|
122
|
+
* Every field here is a fact the caller can DIFF across consecutive polls:
|
|
123
|
+
* `heartbeatAgeSec` falling, `phase` advancing, `run.updatedAt` moving. The
|
|
124
|
+
* health verdict is derived from the heartbeat rather than asserted, so a run
|
|
125
|
+
* that really has stopped is reported as stopped.
|
|
126
|
+
*/
|
|
127
|
+
export interface FollowProgress {
|
|
128
|
+
/** Seconds since the run's own start (not since this wait began). */
|
|
129
|
+
runElapsedSec?: number;
|
|
130
|
+
/**
|
|
131
|
+
* Seconds since the mission last stamped `.uap/deliver.heartbeat`, or null
|
|
132
|
+
* when it has not stamped one yet (starting up). THE liveness signal.
|
|
133
|
+
*/
|
|
134
|
+
heartbeatAgeSec: number | null;
|
|
135
|
+
/** The wedge threshold this verdict was measured against. */
|
|
136
|
+
wedgeAfterSec: number;
|
|
137
|
+
/** 1-based phase position, when the mission is decomposed. */
|
|
138
|
+
phase?: string;
|
|
139
|
+
/**
|
|
140
|
+
* 'starting' — alive, no heartbeat yet.
|
|
141
|
+
* 'active' — heartbeat within the wedge window.
|
|
142
|
+
* 'wedged' — alive but silent past the wedge window.
|
|
143
|
+
*
|
|
144
|
+
* Deliberately 'active', NOT 'advancing'. The heartbeat is stamped on every
|
|
145
|
+
* executor TOOL CALL, not only on completed turns, so a run spinning in a
|
|
146
|
+
* tool-call loop — an attractor loop, an error loop, a read-forever recon
|
|
147
|
+
* loop, all of which this project has hit — stamps a fresh heartbeat forever
|
|
148
|
+
* while achieving nothing. This field can honestly say the process is doing
|
|
149
|
+
* something; it cannot say the mission is getting closer, and a label that
|
|
150
|
+
* claimed otherwise would be the same unmeasured assertion this projection
|
|
151
|
+
* exists to remove. Cross-check `phase` and `run.updatedAt`, which only move
|
|
152
|
+
* when a turn or phase actually completes.
|
|
153
|
+
*/
|
|
154
|
+
health: 'starting' | 'active' | 'wedged';
|
|
155
|
+
}
|
|
100
156
|
/**
|
|
101
157
|
* A status answer, not a state dump.
|
|
102
158
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"await-run.d.ts","sourceRoot":"","sources":["../../src/delivery/await-run.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AAIH,OAAO,EAAY,KAAK,eAAe,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"await-run.d.ts","sourceRoot":"","sources":["../../src/delivery/await-run.ts"],"names":[],"mappings":"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"}
|
|
@@ -43,6 +43,7 @@
|
|
|
43
43
|
import { existsSync, readFileSync } from 'fs';
|
|
44
44
|
import { join } from 'path';
|
|
45
45
|
import { listRuns } from './run-state.js';
|
|
46
|
+
import { heartbeatAgeS, wedgeTimeoutS } from './heartbeat.js';
|
|
46
47
|
/** Default poll interval — fast enough to feel immediate, idle enough to ignore. */
|
|
47
48
|
const DEFAULT_POLL_MS = 2000;
|
|
48
49
|
/**
|
|
@@ -62,6 +63,59 @@ const DEFAULT_POLL_MS = 2000;
|
|
|
62
63
|
* the first attempt at this fix and it punished the caller that was not broken.
|
|
63
64
|
*/
|
|
64
65
|
export const FOLLOW_CLIENT_POLL_SEC = 45;
|
|
66
|
+
function describeProgress(projectRoot, run) {
|
|
67
|
+
const ageS = heartbeatAgeS(projectRoot);
|
|
68
|
+
const wedgeAfterSec = wedgeTimeoutS();
|
|
69
|
+
const startedMs = run?.createdAt ? Date.parse(run.createdAt) : NaN;
|
|
70
|
+
const phase = run?.phaseIndex !== undefined && run?.phases?.length
|
|
71
|
+
? `${run.phaseIndex + 1}/${run.phases.length}`
|
|
72
|
+
: undefined;
|
|
73
|
+
// OMITTED rather than clamped when the delta is negative (a future or planted
|
|
74
|
+
// createdAt). Clamping would pin the field at exactly 0 on every poll, and a
|
|
75
|
+
// field frozen at 0 reads as "not moving" — the very inference that produced
|
|
76
|
+
// the six kills. An absent field says "unknown"; a present one that lies is
|
|
77
|
+
// worse than none.
|
|
78
|
+
const elapsedMs = Date.now() - startedMs;
|
|
79
|
+
const runElapsedSec = Number.isFinite(startedMs) && elapsedMs >= 0 ? Math.round(elapsedMs / 1000) : undefined;
|
|
80
|
+
// A missing heartbeat means 'starting' only while the run is YOUNG. Treating
|
|
81
|
+
// it as 'starting' unconditionally would report an hour-old run as still
|
|
82
|
+
// starting up — the same unmeasured adjective as the "the run is healthy" this
|
|
83
|
+
// projection replaced, just in a new coat. It would also CONTRADICT the lock
|
|
84
|
+
// path, which calls the identical state (no heartbeat, old) abandoned and
|
|
85
|
+
// reclaimable; two readers of one file disagreeing is what heartbeat.ts exists
|
|
86
|
+
// to prevent. Falling back to the run's own age keeps them consistent.
|
|
87
|
+
const silentForSec = ageS ?? runElapsedSec;
|
|
88
|
+
const health = silentForSec === undefined
|
|
89
|
+
? 'starting'
|
|
90
|
+
: silentForSec > wedgeAfterSec
|
|
91
|
+
? 'wedged'
|
|
92
|
+
: ageS === null
|
|
93
|
+
? 'starting'
|
|
94
|
+
: 'active';
|
|
95
|
+
return {
|
|
96
|
+
...(runElapsedSec !== undefined ? { runElapsedSec } : {}),
|
|
97
|
+
heartbeatAgeSec: ageS,
|
|
98
|
+
wedgeAfterSec,
|
|
99
|
+
...(phase ? { phase } : {}),
|
|
100
|
+
// `updatedAt` is NOT repeated here: RunSummary already ships it on the same
|
|
101
|
+
// result object, and a projection whose purpose is diffable facts must not
|
|
102
|
+
// publish one fact twice — a caller comparing run.updatedAt on one poll and
|
|
103
|
+
// progress.updatedAt on the next is comparing nothing.
|
|
104
|
+
health,
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
/** One line of evidence, so the prose carries the same facts as the struct. */
|
|
108
|
+
function progressSentence(p) {
|
|
109
|
+
const bits = [];
|
|
110
|
+
if (p.runElapsedSec !== undefined)
|
|
111
|
+
bits.push(`running for ${p.runElapsedSec}s`);
|
|
112
|
+
bits.push(p.heartbeatAgeSec === null
|
|
113
|
+
? 'no heartbeat yet'
|
|
114
|
+
: `last activity ${p.heartbeatAgeSec}s ago`);
|
|
115
|
+
if (p.phase)
|
|
116
|
+
bits.push(`phase ${p.phase}`);
|
|
117
|
+
return bits.join(', ');
|
|
118
|
+
}
|
|
65
119
|
function summarize(run) {
|
|
66
120
|
return {
|
|
67
121
|
runId: run.runId,
|
|
@@ -218,6 +272,11 @@ export async function awaitInFlightDeliver(projectRoot, opts) {
|
|
|
218
272
|
delivered: false,
|
|
219
273
|
holderChanged: true,
|
|
220
274
|
holderPid: holder.pid,
|
|
275
|
+
// This branch also gives up on a LIVE run and also tells the caller to
|
|
276
|
+
// poll again, so it needs the same evidence — without it, repeated
|
|
277
|
+
// reclaims produce byte-identical replies on the one path that is
|
|
278
|
+
// actually describing instability.
|
|
279
|
+
progress: describeProgress(projectRoot),
|
|
221
280
|
reason: `The deliver run being followed (pid ${holder.pid}) was replaced by another (pid ${now.pid}) — ` +
|
|
222
281
|
'the lock was reclaimed or the run handed over.',
|
|
223
282
|
nextStep: 'Do NOT start another run. Call deliver again with follow:true to attach to the current one.',
|
|
@@ -226,20 +285,54 @@ export async function awaitInFlightDeliver(projectRoot, opts) {
|
|
|
226
285
|
const elapsed = Date.now() - startedAt;
|
|
227
286
|
if (elapsed >= opts.timeoutMs) {
|
|
228
287
|
const { run, attributed } = runForHolder(projectRoot, holder.pid, isAlive);
|
|
288
|
+
const progress = describeProgress(projectRoot, attributed ? (run ?? undefined) : undefined);
|
|
289
|
+
// The old message asserted "the run is healthy" unconditionally, which
|
|
290
|
+
// nothing had checked — so it was a claim, not an answer, and it was
|
|
291
|
+
// wrong precisely when it mattered. Derive it from the heartbeat instead,
|
|
292
|
+
// and hand back the numbers so a caller can watch them move.
|
|
293
|
+
const evidence = progressSentence(progress);
|
|
229
294
|
return {
|
|
230
295
|
followed: false,
|
|
231
296
|
delivered: false,
|
|
232
297
|
timedOut: true,
|
|
233
298
|
holderPid: holder.pid,
|
|
234
299
|
runId: attributed ? run?.runId : undefined,
|
|
235
|
-
|
|
300
|
+
// Gated like runId and run: publishing a GUESSED run's status while
|
|
301
|
+
// withholding its id hands the caller a fact about someone else's
|
|
302
|
+
// mission with nothing to notice the mismatch by.
|
|
303
|
+
status: attributed ? run?.status : undefined,
|
|
236
304
|
run: run && attributed ? summarize(run) : undefined,
|
|
237
305
|
attributed,
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
306
|
+
progress,
|
|
307
|
+
reason: `The deliver run (pid ${holder.pid}) is STILL RUNNING after ${Math.round(opts.timeoutMs / 1000)}s ` +
|
|
308
|
+
`of waiting — ${evidence}. It has not failed: this wait gave up, the mission did not.` +
|
|
309
|
+
(progress.health === 'wedged'
|
|
310
|
+
? ` WARNING: it has been silent for longer than the ${progress.wedgeAfterSec}s wedge` +
|
|
311
|
+
' timeout, so it may be stuck rather than slow.'
|
|
312
|
+
: ''),
|
|
313
|
+
nextStep: progress.health === 'wedged'
|
|
314
|
+
? // "Relaunch and it will be reclaimed" is true ONLY of a lock
|
|
315
|
+
// holder: acquireDeliverLock reclaims a wedged holder, but it
|
|
316
|
+
// only looks at all when a lock FILE exists. A resumed run never
|
|
317
|
+
// takes the lock, so the same advice there hands the relaunch a
|
|
318
|
+
// free lock and puts a SECOND mission on the same tree —
|
|
319
|
+
// precisely the fan-out this module exists to prevent. The
|
|
320
|
+
// remedy has to follow the holder, not the health.
|
|
321
|
+
holder.source === 'lock'
|
|
322
|
+
? 'Do NOT kill it — a wedged LOCK holder is reclaimed automatically: start the ' +
|
|
323
|
+
'mission again and the new run takes the lock from it. Killing it by hand ' +
|
|
324
|
+
'discards the work it already finished and leaves the lock behind.'
|
|
325
|
+
: 'Do NOT kill it, and do NOT relaunch: this holder is a RESUMED run, which holds ' +
|
|
326
|
+
'no lock, so a new run would not reclaim it — it would execute concurrently on ' +
|
|
327
|
+
'the same tree. Keep following, and if it never recovers, raise it with the ' +
|
|
328
|
+
'operator rather than starting or killing anything.'
|
|
329
|
+
: 'This is the NORMAL answer for a mission that takes longer than one poll. Call deliver ' +
|
|
330
|
+
'again with follow:true to keep waiting, and compare heartbeatAgeSec against this reply ' +
|
|
331
|
+
'to watch it move (also phase and the run\'s updatedAt when present — they advance only ' +
|
|
332
|
+
'when a turn or phase actually completes). From the MCP tool these are under ' +
|
|
333
|
+
'result.progress and result.run; from `uap deliver --json` they are top-level. Do NOT ' +
|
|
334
|
+
'kill the deliver process, do NOT change any gate or enforcement setting, and do NOT ' +
|
|
335
|
+
'start another run.',
|
|
243
336
|
};
|
|
244
337
|
}
|
|
245
338
|
opts.onTick?.(elapsed, holder.pid);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"await-run.js","sourceRoot":"","sources":["../../src/delivery/await-run.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AAEH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAC9C,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,QAAQ,EAAwB,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"await-run.js","sourceRoot":"","sources":["../../src/delivery/await-run.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Default wedge timeout (seconds). Override with UAP_DELIVER_WEDGE_TIMEOUT.
|
|
3
|
+
* Deliberately generous (30 min): the heartbeat only advances between
|
|
4
|
+
* convergence iterations, and one turn on a slow local model (generation + the
|
|
5
|
+
* full gate ladder) can legitimately take many minutes. The timeout must sit
|
|
6
|
+
* comfortably above the worst-case single-turn latency so a healthy-but-slow
|
|
7
|
+
* run is never mistaken for a wedged one and reclaimed out from under itself.
|
|
8
|
+
*/
|
|
9
|
+
export declare const DEFAULT_WEDGE_TIMEOUT_S = 1800;
|
|
10
|
+
/** Resolve the wedge timeout in seconds (env override, else the default). */
|
|
11
|
+
export declare function wedgeTimeoutS(): number;
|
|
12
|
+
/**
|
|
13
|
+
* Stamp the current epoch-seconds into `.uap/deliver.heartbeat`, ATOMICALLY
|
|
14
|
+
* (write a temp file then rename over the target). A plain truncate-in-place
|
|
15
|
+
* write leaves the file momentarily empty, and a concurrent reader would parse
|
|
16
|
+
* `""` as 0 (epoch 1970) and wrongly conclude the holder is wedged. Best-effort.
|
|
17
|
+
*/
|
|
18
|
+
export declare function updateDeliverHeartbeat(projectRoot: string): void;
|
|
19
|
+
/**
|
|
20
|
+
* Read the heartbeat epoch-seconds, or null if absent/unreadable/non-positive.
|
|
21
|
+
* Rejecting non-positive values guards against a torn read (empty file parses
|
|
22
|
+
* to 0) being treated as a real 1970 timestamp.
|
|
23
|
+
*/
|
|
24
|
+
export declare function readDeliverHeartbeat(projectRoot: string): number | null;
|
|
25
|
+
/**
|
|
26
|
+
* Age of the heartbeat in seconds, or null when there is none to age.
|
|
27
|
+
*
|
|
28
|
+
* This is the only signal that separates "slow but working" from "stuck", which
|
|
29
|
+
* is the distinction a caller polling a long run actually needs. A negative age
|
|
30
|
+
* (clock skew, or a holder on another machine) is clamped to 0 rather than
|
|
31
|
+
* reported as a future timestamp.
|
|
32
|
+
*/
|
|
33
|
+
export declare function heartbeatAgeS(projectRoot: string, nowS?: number): number | null;
|
|
34
|
+
/**
|
|
35
|
+
* True when the lock holder is alive but WEDGED — its heartbeat is older than
|
|
36
|
+
* the wedge timeout. A MISSING heartbeat is not wedged (the holder may be
|
|
37
|
+
* starting up), so this returns false in that case and the caller keeps
|
|
38
|
+
* deferring to PID-liveness.
|
|
39
|
+
*/
|
|
40
|
+
export declare function isDeliverHolderWedged(projectRoot: string, nowS?: number): boolean;
|
|
41
|
+
//# sourceMappingURL=heartbeat.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"heartbeat.d.ts","sourceRoot":"","sources":["../../src/delivery/heartbeat.ts"],"names":[],"mappings":"AA6BA;;;;;;;GAOG;AACH,eAAO,MAAM,uBAAuB,OAAO,CAAC;AAE5C,6EAA6E;AAC7E,wBAAgB,aAAa,IAAI,MAAM,CAItC;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAWhE;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAKvE;AAED;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAC3B,WAAW,EAAE,MAAM,EACnB,IAAI,GAAE,MAAsC,GAC3C,MAAM,GAAG,IAAI,CAIf;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CACnC,WAAW,EAAE,MAAM,EACnB,IAAI,GAAE,MAAsC,GAC3C,OAAO,CAQT"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The deliver heartbeat: one integer, and the two questions asked of it.
|
|
3
|
+
*
|
|
4
|
+
* WHY THIS IS ITS OWN MODULE
|
|
5
|
+
* These helpers lived in `src/cli/deliver.ts`, which imports `await-run.ts` —
|
|
6
|
+
* so `await-run.ts` could not import them back without a cycle. Follow now
|
|
7
|
+
* needs the heartbeat to answer "is this run MOVING", and the alternative was a
|
|
8
|
+
* second inline parser of the same file. That is the shape that already bit this
|
|
9
|
+
* project: `acquireDeliverLock` judged the holder by PID-liveness alone, and
|
|
10
|
+
* after a PID wrap an eleven-day-old lock named an unrelated live process, so
|
|
11
|
+
* every later deliver in that project deferred forever (see the reasoning on
|
|
12
|
+
* `isDeliverLockAbandoned` in src/cli/deliver.ts).
|
|
13
|
+
*
|
|
14
|
+
* One reader, one meaning — but note this is NOT yet true across the whole
|
|
15
|
+
* system, and claiming otherwise would be the same unmeasured assurance this
|
|
16
|
+
* work exists to remove. Two other readers of these files remain:
|
|
17
|
+
* `delivery_enforcement.py` still judges the lock with a bare `os.kill(pid, 0)`
|
|
18
|
+
* and no heartbeat check, and `deliver_autoroute.py` reads the heartbeat with
|
|
19
|
+
* its own copy of the wedge threshold (kept equal to DEFAULT_WEDGE_TIMEOUT_S
|
|
20
|
+
* below by a parity test — it defaulted to 600 against this file's 1800 until
|
|
21
|
+
* 2026-07-31, so the two disagreed for any heartbeat aged 600-1800s).
|
|
22
|
+
*
|
|
23
|
+
* THE CONTRACT (language-agnostic — `.claude/hooks/deliver_autoroute.py` reads
|
|
24
|
+
* it too): `.uap/deliver.heartbeat` holds a single unix-epoch-seconds integer,
|
|
25
|
+
* rewritten each convergence iteration and on each executor tool call.
|
|
26
|
+
*/
|
|
27
|
+
import { mkdirSync, openSync, writeSync, closeSync, renameSync, readFileSync } from 'fs';
|
|
28
|
+
import { join } from 'path';
|
|
29
|
+
/**
|
|
30
|
+
* Default wedge timeout (seconds). Override with UAP_DELIVER_WEDGE_TIMEOUT.
|
|
31
|
+
* Deliberately generous (30 min): the heartbeat only advances between
|
|
32
|
+
* convergence iterations, and one turn on a slow local model (generation + the
|
|
33
|
+
* full gate ladder) can legitimately take many minutes. The timeout must sit
|
|
34
|
+
* comfortably above the worst-case single-turn latency so a healthy-but-slow
|
|
35
|
+
* run is never mistaken for a wedged one and reclaimed out from under itself.
|
|
36
|
+
*/
|
|
37
|
+
export const DEFAULT_WEDGE_TIMEOUT_S = 1800;
|
|
38
|
+
/** Resolve the wedge timeout in seconds (env override, else the default). */
|
|
39
|
+
export function wedgeTimeoutS() {
|
|
40
|
+
const raw = process.env.UAP_DELIVER_WEDGE_TIMEOUT;
|
|
41
|
+
const n = raw !== undefined ? Number(raw) : NaN;
|
|
42
|
+
return Number.isFinite(n) && n > 0 ? n : DEFAULT_WEDGE_TIMEOUT_S;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Stamp the current epoch-seconds into `.uap/deliver.heartbeat`, ATOMICALLY
|
|
46
|
+
* (write a temp file then rename over the target). A plain truncate-in-place
|
|
47
|
+
* write leaves the file momentarily empty, and a concurrent reader would parse
|
|
48
|
+
* `""` as 0 (epoch 1970) and wrongly conclude the holder is wedged. Best-effort.
|
|
49
|
+
*/
|
|
50
|
+
export function updateDeliverHeartbeat(projectRoot) {
|
|
51
|
+
try {
|
|
52
|
+
const dir = join(projectRoot, '.uap');
|
|
53
|
+
mkdirSync(dir, { recursive: true });
|
|
54
|
+
const hbPath = join(dir, 'deliver.heartbeat');
|
|
55
|
+
const tmp = `${hbPath}.${process.pid}.tmp`;
|
|
56
|
+
const fd = openSync(tmp, 'w');
|
|
57
|
+
writeSync(fd, String(Math.floor(Date.now() / 1000)));
|
|
58
|
+
closeSync(fd);
|
|
59
|
+
renameSync(tmp, hbPath);
|
|
60
|
+
}
|
|
61
|
+
catch { /* non-fatal — lock path falls back to PID-liveness only */ }
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Read the heartbeat epoch-seconds, or null if absent/unreadable/non-positive.
|
|
65
|
+
* Rejecting non-positive values guards against a torn read (empty file parses
|
|
66
|
+
* to 0) being treated as a real 1970 timestamp.
|
|
67
|
+
*/
|
|
68
|
+
export function readDeliverHeartbeat(projectRoot) {
|
|
69
|
+
try {
|
|
70
|
+
const v = Number(readFileSync(join(projectRoot, '.uap', 'deliver.heartbeat'), 'utf8').trim());
|
|
71
|
+
return Number.isFinite(v) && v > 0 ? v : null;
|
|
72
|
+
}
|
|
73
|
+
catch {
|
|
74
|
+
return null;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Age of the heartbeat in seconds, or null when there is none to age.
|
|
79
|
+
*
|
|
80
|
+
* This is the only signal that separates "slow but working" from "stuck", which
|
|
81
|
+
* is the distinction a caller polling a long run actually needs. A negative age
|
|
82
|
+
* (clock skew, or a holder on another machine) is clamped to 0 rather than
|
|
83
|
+
* reported as a future timestamp.
|
|
84
|
+
*/
|
|
85
|
+
export function heartbeatAgeS(projectRoot, nowS = Math.floor(Date.now() / 1000)) {
|
|
86
|
+
const hb = readDeliverHeartbeat(projectRoot);
|
|
87
|
+
if (hb === null)
|
|
88
|
+
return null;
|
|
89
|
+
return Math.max(0, nowS - hb);
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* True when the lock holder is alive but WEDGED — its heartbeat is older than
|
|
93
|
+
* the wedge timeout. A MISSING heartbeat is not wedged (the holder may be
|
|
94
|
+
* starting up), so this returns false in that case and the caller keeps
|
|
95
|
+
* deferring to PID-liveness.
|
|
96
|
+
*/
|
|
97
|
+
export function isDeliverHolderWedged(projectRoot, nowS = Math.floor(Date.now() / 1000)) {
|
|
98
|
+
// Routed through heartbeatAgeS rather than recomputing `nowS - hb`, so the
|
|
99
|
+
// verdict FOLLOW reports and the decision the LOCK makes are provably the
|
|
100
|
+
// same predicate with the same skew policy. Two functions in this file
|
|
101
|
+
// computing "wedged" slightly differently is the divergence this module was
|
|
102
|
+
// created to prevent, one level down.
|
|
103
|
+
const age = heartbeatAgeS(projectRoot, nowS);
|
|
104
|
+
return age !== null && age > wedgeTimeoutS();
|
|
105
|
+
}
|
|
106
|
+
//# sourceMappingURL=heartbeat.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"heartbeat.js","sourceRoot":"","sources":["../../src/delivery/heartbeat.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AACzF,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAE5B;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,IAAI,CAAC;AAE5C,6EAA6E;AAC7E,MAAM,UAAU,aAAa;IAC3B,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC;IAClD,MAAM,CAAC,GAAG,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IAChD,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,uBAAuB,CAAC;AACnE,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,sBAAsB,CAAC,WAAmB;IACxD,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;QACtC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACpC,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,mBAAmB,CAAC,CAAC;QAC9C,MAAM,GAAG,GAAG,GAAG,MAAM,IAAI,OAAO,CAAC,GAAG,MAAM,CAAC;QAC3C,MAAM,EAAE,GAAG,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QAC9B,SAAS,CAAC,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACrD,SAAS,CAAC,EAAE,CAAC,CAAC;QACd,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAC1B,CAAC;IAAC,MAAM,CAAC,CAAC,2DAA2D,CAAC,CAAC;AACzE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAAC,WAAmB;IACtD,IAAI,CAAC;QACH,MAAM,CAAC,GAAG,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,EAAE,mBAAmB,CAAC,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QAC9F,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAChD,CAAC;IAAC,MAAM,CAAC;QAAC,OAAO,IAAI,CAAC;IAAC,CAAC;AAC1B,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,aAAa,CAC3B,WAAmB,EACnB,OAAe,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;IAE5C,MAAM,EAAE,GAAG,oBAAoB,CAAC,WAAW,CAAC,CAAC;IAC7C,IAAI,EAAE,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAC7B,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;AAChC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,qBAAqB,CACnC,WAAmB,EACnB,OAAe,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;IAE5C,2EAA2E;IAC3E,0EAA0E;IAC1E,uEAAuE;IACvE,4EAA4E;IAC5E,sCAAsC;IACtC,MAAM,GAAG,GAAG,aAAa,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;IAC7C,OAAO,GAAG,KAAK,IAAI,IAAI,GAAG,GAAG,aAAa,EAAE,CAAC;AAC/C,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deliver.d.ts","sourceRoot":"","sources":["../../../src/mcp-router/tools/deliver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AASH,MAAM,WAAW,WAAW;IAC1B,4EAA4E;IAC5E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,yDAAyD;IACzD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iFAAiF;IACjF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,oDAAoD;IACpD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,sEAAsE;IACtE,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,oDAAoD;IACpD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;OAIG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,0EAA0E;IAC1E,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,4EAA4E;IAC5E,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,iFAAiF;IACjF,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,6DAA6D;IAC7D,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,gFAAgF;IAChF,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,kDAAkD;IAClD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,8DAA8D;IAC9D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,iFAAiF;IACjF,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"deliver.d.ts","sourceRoot":"","sources":["../../../src/mcp-router/tools/deliver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AASH,MAAM,WAAW,WAAW;IAC1B,4EAA4E;IAC5E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,yDAAyD;IACzD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iFAAiF;IACjF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,oDAAoD;IACpD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,sEAAsE;IACtE,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,oDAAoD;IACpD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;OAIG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,0EAA0E;IAC1E,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,4EAA4E;IAC5E,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,iFAAiF;IACjF,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,6DAA6D;IAC7D,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,gFAAgF;IAChF,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,kDAAkD;IAClD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,8DAA8D;IAC9D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,iFAAiF;IACjF,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8GnC,CAAC;AA2DF;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAyBvD;AAsBD,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,EAAE,OAAO,CAAC;IAChB,yFAAyF;IACzF,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,gEAAgE;IAChE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;;;;OAOG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;;GAIG;AACH;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,EACZ,CAAC,EAAE,WAAW,GACb,MAAM,EAAE,CAyCV;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,aAAa,CAAC,CAqMvE;AAED,mEAAmE;AACnE,wBAAgB,yBAAyB,IAAI,MAAM,CAElD"}
|
|
@@ -78,8 +78,13 @@ Best for: implement a feature, fix a bug across files, refactor with tests. Not
|
|
|
78
78
|
'This is the correct response to a timed-out deliver call or an alreadyRunning result — it starts ' +
|
|
79
79
|
'nothing, and needs NO instruction — omit it, do not restate the mission. ' +
|
|
80
80
|
'It returns within about a minute either way and SUCCEEDS (ok:true) whatever it finds: if the ' +
|
|
81
|
-
'mission is still going you get "STILL RUNNING" in `note`, which is NOT a failure —
|
|
82
|
-
'
|
|
81
|
+
'mission is still going you get "STILL RUNNING" in `note`, which is NOT a failure — call follow ' +
|
|
82
|
+
'again. Do not take that on trust: `result.progress.health` reports "starting", "active" or ' +
|
|
83
|
+
'"wedged", DERIVED from how recently the run stamped its heartbeat, and ' +
|
|
84
|
+
'`result.progress.heartbeatAgeSec` / `.phase` are the numbers behind it — compare them across ' +
|
|
85
|
+
'polls to watch the run move. (This used to assert the run was HEALTHY unconditionally, which ' +
|
|
86
|
+
'nothing had checked; three identical replies then read as a hung process and the run got ' +
|
|
87
|
+
'killed.) It does not mean the tool is stuck: ' +
|
|
83
88
|
'do not kill the deliver ' +
|
|
84
89
|
'process, do not change any enforcement setting, do not start a second run. Prefer this over ' +
|
|
85
90
|
'sleeping in a shell. Do not use resume for this: resume CONTINUES a run and would start a second ' +
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deliver.js","sourceRoot":"","sources":["../../../src/mcp-router/tools/deliver.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"deliver.js","sourceRoot":"","sources":["../../../src/mcp-router/tools/deliver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,MAAM,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,IAAI,CAAC;AACxD,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AA+C3D,MAAM,CAAC,MAAM,uBAAuB,GAAG;IACrC,IAAI,EAAE,SAAS;IACf,WAAW,EAAE;;;;;;;;+IAQgI;IAC7I,WAAW,EAAE;QACX,IAAI,EAAE,QAAiB;QACvB,UAAU,EAAE;YACV,WAAW,EAAE;gBACX,IAAI,EAAE,QAAQ;gBACd,oEAAoE;gBACpE,oEAAoE;gBAEpE,WAAW,EAAE,wHAAwH;aACtI;YACD,WAAW,EAAE;gBACX,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,oFAAoF;aAClG;YACD,QAAQ,EAAE;gBACR,IAAI,EAAE,QAAQ;gBACd,WAAW,EACT,mLAAmL;aACtL;YACD,OAAO,EAAE;gBACP,IAAI,EAAE,SAAS;gBACf,WAAW,EACT,+JAA+J;aAClK;YACD,KAAK,EAAE;gBACL,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,6DAA6D;aAC3E;YACD,MAAM,EAAE;gBACN,IAAI,EAAE,SAAS;gBACf,WAAW,EAAE,4FAA4F;gBACzG,OAAO,EAAE,KAAK;aACf;YACD,MAAM,EAAE;gBACN,IAAI,EAAE,SAAS;gBACf,WAAW,EACT,mGAAmG;oBACnG,mGAAmG;oBACnG,2EAA2E;oBAC3E,+FAA+F;oBAC/F,iGAAiG;oBACjG,6FAA6F;oBAC7F,yEAAyE;oBACzE,+FAA+F;oBAC/F,+FAA+F;oBAC/F,2FAA2F;oBAC3F,+CAA+C;oBAC/C,0BAA0B;oBAC1B,8FAA8F;oBAC9F,mGAAmG;oBACnG,qBAAqB;aACxB;YACD,UAAU,EAAE;gBACV,uEAAuE;gBACvE,oEAAoE;gBAEpE,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,+CAA+C;aAC7D;YACD,UAAU,EAAE;gBACV,IAAI,EAAE,SAAS;gBACf,WAAW,EAAE,6IAA6I;aAC3J;YACD,cAAc,EAAE;gBACd,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,4EAA4E;aAC1F;YACD,QAAQ,EAAE;gBACR,IAAI,EAAE,SAAS;gBACf,WAAW,EAAE,gGAAgG;aAC9G;YACD,UAAU,EAAE;gBACV,IAAI,EAAE,SAAS;gBACf,WAAW,EAAE,uFAAuF;aACrG;YACD,cAAc,EAAE;gBACd,IAAI,EAAE,SAAS;gBACf,WAAW,EAAE,4FAA4F;aAC1G;YACD,OAAO,EAAE;gBACP,IAAI,EAAE,QAAQ;gBACd,WAAW,EACT,6GAA6G;aAChH;YACD,MAAM,EAAE;gBACN,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,yDAAyD;aACvE;YACD,SAAS,EAAE;gBACT,IAAI,EAAE,SAAS;gBACf,WAAW,EAAE,4HAA4H;aAC1I;SACF;QACD,8EAA8E;QAC9E,0EAA0E;QAC1E,6EAA6E;QAC7E,2EAA2E;QAC3E,uEAAuE;KACxE;CACF,CAAC;AAEF,MAAM,eAAe,GAAG,EAAE,CAAC;AAC3B,MAAM,mBAAmB,GAAG,IAAI,CAAC;AACjC,4EAA4E;AAC5E,sEAAsE;AACtE,uDAAuD;AACvD,MAAM,eAAe,GAAG,KAAK,CAAC;AAC9B,MAAM,gBAAgB,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;AAEzC;;;;;;GAMG;AACH,SAAS,oBAAoB,CAAC,WAAoB;IAChD,IAAI,QAAgB,CAAC;IACrB,IAAI,CAAC;QACH,QAAQ,GAAG,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IACrF,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,KAAK,EAAE,uCAAuC,EAAE,CAAC;IAC5D,CAAC;IACD,IAAI,CAAC,WAAW;QAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;IAC5C,IAAI,IAAY,CAAC;IACjB,IAAI,CAAC;QACH,IAAI,GAAG,YAAY,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC;IAC5C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,KAAK,EAAE,4BAA4B,EAAE,CAAC;IACjD,CAAC;IACD,IAAI,IAAI,KAAK,QAAQ,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,GAAG,GAAG,CAAC,EAAE,CAAC;QAC1D,OAAO,EAAE,KAAK,EAAE,+EAA+E,EAAE,CAAC;IACpG,CAAC;IACD,IAAI,CAAC;QACH,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE;YAAE,OAAO,EAAE,KAAK,EAAE,gCAAgC,EAAE,CAAC;IACxF,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,KAAK,EAAE,+BAA+B,EAAE,CAAC;IACpD,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AACxB,CAAC;AAED;+EAC+E;AAC/E,SAAS,aAAa;IACpB,MAAM,GAAG,GAAsB,EAAE,CAAC;IAClC,MAAM,IAAI,GAAG,CAAC,CAAS,EAAQ,EAAE;QAC/B,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,SAAS;YAAE,GAAG,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAC5D,CAAC,CAAC;IACF,IAAI,CAAC,MAAM,CAAC,CAAC;IACb,IAAI,CAAC,MAAM,CAAC,CAAC;IACb,IAAI,CAAC,cAAc,CAAC,CAAC;IACrB,mDAAmD;IACnD,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACzC,IAAI,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,YAAY,CAAC;YAAE,GAAG,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAClF,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,MAAc;IAC5C,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACjC,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,GAAG;YAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC7C,MAAM,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;IAC5B,CAAC;IACD,KAAK,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5C,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7C,CAAC;QAAC,MAAM,CAAC;YACP,8BAA8B;QAChC,CAAC;IACH,CAAC;IACD,+DAA+D;IAC/D,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;IACtC,IAAI,CAAC,EAAE,CAAC;QACN,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1B,CAAC;QAAC,MAAM,CAAC;YACP,aAAa;QACf,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;wEAEwE;AACxE,SAAS,eAAe;IACtB,MAAM,IAAI,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IACrD,MAAM,UAAU,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC;IAChE,IAAI,GAAG,GAAG,IAAI,CAAC;IACf,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3B,IAAI,UAAU,CAAC,OAAO,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC,EAAE,CAAC;YAC7C,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC;YACvD,MAAM;QACR,CAAC;QACD,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;QAC5B,IAAI,MAAM,KAAK,GAAG;YAAE,MAAM;QAC1B,GAAG,GAAG,MAAM,CAAC;IACf,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,UAAU;QAAE,IAAI,UAAU,CAAC,CAAC,CAAC;YAAE,OAAO,CAAC,CAAC;IACxD,OAAO,IAAI,CAAC;AACd,CAAC;AAqBD;;;;GAIG;AACH;;;;;;;;GAQG;AACH,MAAM,UAAU,mBAAmB,CACjC,GAAW,EACX,IAAY,EACZ,CAAc;IAEd,MAAM,OAAO,GAAG,CAAC,GAAG,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;IAC3C,IAAI,CAAC,CAAC,MAAM;QAAE,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACxC,OAAO,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC,CAAC,mCAAmC;IACzE,yEAAyE;IACzE,0EAA0E;IAC1E,6EAA6E;IAC7E,4EAA4E;IAC5E,IAAI,CAAC,CAAC,OAAO,KAAK,IAAI,IAAI,CAAC,CAAC,QAAQ,KAAK,SAAS;QAAE,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;IACpG,IAAI,CAAC,CAAC,KAAK;QAAE,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;IAC9C,IAAI,CAAC,CAAC,UAAU;QAAE,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAC/C,IAAI,CAAC,CAAC,cAAc;QAAE,OAAO,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC,CAAC,cAAc,CAAC,CAAC;IAC1E,IAAI,CAAC,CAAC,QAAQ;QAAE,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAC3C,IAAI,CAAC,CAAC,UAAU;QAAE,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAC/C,IAAI,CAAC,CAAC,cAAc,KAAK,KAAK;QAAE,OAAO,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;IACrE,IAAI,CAAC,CAAC,OAAO,KAAK,IAAI,IAAI,CAAC,CAAC,OAAO,KAAK,SAAS;QAAE,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IAChG,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;QACb,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAC5B,2EAA2E;QAC3E,4EAA4E;QAC5E,2EAA2E;QAC3E,mDAAmD;QACnD,EAAE;QACF,8EAA8E;QAC9E,0EAA0E;QAC1E,8EAA8E;QAC9E,wEAAwE;QACxE,8EAA8E;QAC9E,4EAA4E;QAC5E,+CAA+C;QAC/C,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CACxB,sBAAsB,EACtB,CAAC,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,sBAAsB,CAChG,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,iBAAiB,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;IAClE,CAAC;IACD,IAAI,CAAC,CAAC,MAAM;QAAE,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;IACjD,IAAI,CAAC,CAAC,SAAS,KAAK,IAAI;QAAE,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IACtD,IAAI,CAAC,CAAC,SAAS,KAAK,KAAK;QAAE,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAC1D,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC;IACxC,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,IAAiB;IAC7C,yEAAyE;IACzE,4CAA4C;IAC5C,MAAM,EACJ,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,GAAG,KAAK,EAAE,UAAU,EACrE,cAAc,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,GAAG,KAAK,GAChD,GAAG,IAAI,CAAC;IAET,4EAA4E;IAC5E,8DAA8D;IAC9D,EAAE;IACF,8EAA8E;IAC9E,2EAA2E;IAC3E,6EAA6E;IAC7E,2EAA2E;IAC3E,IAAI,CAAC,CAAC,WAAW,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;QAChE,OAAO,OAAO,CAAC,OAAO,CAAC;YACrB,EAAE,EAAE,KAAK;YACT,MAAM;YACN,KAAK,EAAE,sGAAsG;SAC9G,CAAC,CAAC;IACL,CAAC;IACD,IAAI,QAAQ,KAAK,SAAS,IAAI,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,QAAQ,GAAG,CAAC,IAAI,QAAQ,GAAG,eAAe,CAAC,EAAE,CAAC;QAC1G,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,iCAAiC,eAAe,EAAE,EAAE,CAAC,CAAC;IAC3G,CAAC;IACD,IAAI,UAAU,KAAK,SAAS,IAAI,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,UAAU,IAAI,CAAC,CAAC,EAAE,CAAC;QAClF,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,6CAA6C,EAAE,CAAC,CAAC;IACtG,CAAC;IACD,IAAI,KAAK,KAAK,SAAS,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QAC5D,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,iCAAiC,EAAE,CAAC,CAAC;IAC1F,CAAC;IACD,IAAI,cAAc,KAAK,SAAS,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC;QAC9E,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,0CAA0C,EAAE,CAAC,CAAC;IACnG,CAAC;IACD,IAAI,OAAO,KAAK,SAAS,IAAI,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,OAAO,GAAG,CAAC,IAAI,OAAO,GAAG,EAAE,CAAC,EAAE,CAAC;QACzF,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,iCAAiC,EAAE,CAAC,CAAC;IAC1F,CAAC;IACD,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,QAAQ,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC;QACzE,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,yCAAyC,EAAE,CAAC,CAAC;IAClG,CAAC;IAED,MAAM,OAAO,GAAG,oBAAoB,CAAC,WAAW,CAAC,CAAC;IAClD,IAAI,OAAO,IAAI,OAAO,EAAE,CAAC;QACvB,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;IACtE,CAAC;IACD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAE1B,MAAM,GAAG,GAAG,eAAe,EAAE,CAAC;IAC9B,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,yCAAyC,EAAE,CAAC,CAAC;IAClG,CAAC;IAED,0EAA0E;IAC1E,wEAAwE;IACxE,8CAA8C;IAC9C,MAAM,OAAO,GAAG,mBAAmB,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IAErD,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,eAAe,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,IAAI,mBAAmB,CAAC,CAAC,GAAG,IAAI,CAAC;IAEnG,OAAO,IAAI,OAAO,CAAgB,CAAC,cAAc,EAAE,EAAE;QACnD,QAAQ,CACN,OAAO,CAAC,QAAQ,EAChB,OAAO,EACP,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,gBAAgB,EAAE,GAAG,EAAE,aAAa,EAAE,EAAE,EACpF,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE;YACd,mEAAmE;YACnE,iEAAiE;YACjE,MAAM,CAAC,GAAG,GAA4D,CAAC;YACvE,MAAM,QAAQ,GAAG,CAAC,IAAI,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YAC9D,MAAM,MAAM,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;YAEvC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;gBAClB,MAAM,GAAG,GAAG,CAAC,CAAC,IAAI,KAAK,mCAAmC;oBACxD,CAAC,CAAC,2BAA2B,gBAAgB,QAAQ;oBACrD,CAAC,CAAC,2BAA2B,SAAS,GAAG,IAAI,GAAG,CAAC;gBACnD,cAAc,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;gBAClE,OAAO;YACT,CAAC;YACD,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;gBACzB,uEAAuE;gBACvE,uEAAuE;gBACvE,iEAAiE;gBACjE,2DAA2D;gBAC3D,cAAc,CAAC;oBACb,EAAE,EAAE,KAAK;oBACT,MAAM;oBACN,QAAQ;oBACR,KAAK,EACH,4FAA4F;wBAC5F,qHAAqH;oBACvH,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC;iBAC5B,CAAC,CAAC;gBACH,OAAO;YACT,CAAC;YACD,kEAAkE;YAClE,iEAAiE;YACjE,MAAM,CAAC,GAAG,MAMT,CAAC;YACF,sEAAsE;YACtE,wEAAwE;YACxE,uEAAuE;YACvE,oEAAoE;YACpE,uDAAuD;YACvD,IAAI,CAAC,CAAC,cAAc,KAAK,IAAI,EAAE,CAAC;gBAC9B,cAAc,CAAC;oBACb,EAAE,EAAE,KAAK;oBACT,MAAM;oBACN,QAAQ;oBACR,KAAK,EACH,uDAAuD;wBACvD,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,EAAE,wCAAwC;wBACrF,CAAC,CAAC,CAAC,QAAQ;4BACT,oFAAoF,CAAC;oBACzF,MAAM,EAAE,MAAM;iBACf,CAAC,CAAC;gBACH,OAAO;YACT,CAAC;YACD,wEAAwE;YACxE,gEAAgE;YAChE,yEAAyE;YACzE,wBAAwB;YACxB,0EAA0E;YAC1E,2EAA2E;YAC3E,0EAA0E;YAC1E,uEAAuE;YACvE,mBAAmB;YACnB,MAAM,EAAE,GAAG,MAQV,CAAC;YACF,sEAAsE;YACtE,EAAE;YACF,0EAA0E;YAC1E,uEAAuE;YACvE,wEAAwE;YACxE,sEAAsE;YACtE,wEAAwE;YACxE,wEAAwE;YACxE,yEAAyE;YACzE,2CAA2C;YAC3C,EAAE;YACF,uEAAuE;YACvE,2EAA2E;YAC3E,4BAA4B;YAC5B,IAAI,EAAE,CAAC,QAAQ,KAAK,IAAI,IAAI,EAAE,CAAC,eAAe,KAAK,IAAI,IAAI,EAAE,CAAC,aAAa,KAAK,IAAI,EAAE,CAAC;gBACrF,cAAc,CAAC;oBACb,EAAE,EAAE,IAAI;oBACR,MAAM;oBACN,QAAQ;oBACR,IAAI,EAAE,GAAG,EAAE,CAAC,MAAM,IAAI,iBAAiB,IAAI,EAAE,CAAC,QAAQ,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE;oBACrE,MAAM,EAAE,MAAM;iBACf,CAAC,CAAC;gBACH,OAAO;YACT,CAAC;YACD,wEAAwE;YACxE,yEAAyE;YACzE,4CAA4C;YAC5C,IAAI,EAAE,CAAC,QAAQ,KAAK,IAAI,IAAI,EAAE,CAAC,SAAS,KAAK,KAAK,EAAE,CAAC;gBACnD,cAAc,CAAC;oBACb,EAAE,EAAE,KAAK;oBACT,MAAM;oBACN,QAAQ;oBACR,KAAK,EAAE,GAAG,EAAE,CAAC,MAAM,IAAI,kCAAkC,IAAI,EAAE,CAAC,QAAQ,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE;oBACvF,MAAM,EAAE,MAAM;iBACf,CAAC,CAAC;gBACH,OAAO;YACT,CAAC;YACD,MAAM,EAAE,GAAG,MAA8E,CAAC;YAC1F,IAAI,EAAE,CAAC,eAAe,KAAK,IAAI,EAAE,CAAC;gBAChC,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC3E,cAAc,CAAC;oBACb,EAAE,EAAE,KAAK;oBACT,MAAM;oBACN,QAAQ;oBACR,KAAK,EACH,wDAAwD;wBACxD,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,qBAAqB,CAAC;wBAC7D,gDAAgD;oBAClD,MAAM,EAAE,MAAM;iBACf,CAAC,CAAC;gBACH,OAAO;YACT,CAAC;YACD,MAAM,EAAE,GAAG,OAAO,CAAC,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,gBAAgB,KAAK,IAAI,CAAC,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC;YACtG,cAAc,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QAC3D,CAAC,CACF,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED,mEAAmE;AACnE,MAAM,UAAU,yBAAyB;IACvC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACvE,CAAC"}
|
package/docs/guides/DELIVER.md
CHANGED
|
@@ -63,7 +63,18 @@ For a mission too large to hold in one context, `deliver` scales down the contex
|
|
|
63
63
|
|
|
64
64
|
**Scaffold-then-fill** (on by default in phased runs; `UAP_DELIVER_SCAFFOLD=0` disables): a large phase is split into a **scaffold** phase that emits the compiling skeleton (complete public signatures, wired imports/exports, stub bodies — build/typecheck must pass) and a **fill** phase that implements the logic *without changing any signature*. The skeleton keeps the build green while the details land.
|
|
65
65
|
|
|
66
|
-
Interrupted a long run? **`--resume <id|latest>`** picks up a durable run from `.uap/deliver-runs` where it left off
|
|
66
|
+
Interrupted a long run? **`--resume <id|latest>`** picks up a durable run from `.uap/deliver-runs` where it left off — but only one that has actually **stopped**.
|
|
67
|
+
|
|
68
|
+
A mission outlives the tool call that launched it, so a caller whose own timeout
|
|
69
|
+
fired is looking at a run that is still going, not a stopped one. **Do not resume
|
|
70
|
+
a live run**: resume *continues* a mission rather than attaching to it, and
|
|
71
|
+
`latest` resolves to the running one, so it starts a second copy on the same
|
|
72
|
+
tree. Follow it instead with **`uap deliver --await-run`** (or the `deliver` tool
|
|
73
|
+
with `follow:true`), which takes no lock and starts nothing. Each poll reports
|
|
74
|
+
`progress.health` — `starting` / `active` / `wedged`, derived from the run's
|
|
75
|
+
heartbeat — plus `heartbeatAgeSec` and `phase`, so consecutive polls show whether
|
|
76
|
+
it is moving. See [CLI.md](../reference/CLI.md#deliver) for the flags and exit
|
|
77
|
+
codes.
|
|
67
78
|
|
|
68
79
|
---
|
|
69
80
|
|
package/docs/reference/CLI.md
CHANGED
|
@@ -383,6 +383,46 @@ uap deliver <instruction...> [options]
|
|
|
383
383
|
| `--ceiling <n>` | Hard turn ceiling for until-delivered (1-50, default 30) |
|
|
384
384
|
| `--dry-run` | Show detected gates and plan without calling the model |
|
|
385
385
|
| `--json` | Emit JSON result |
|
|
386
|
+
| `--await-run` | Attach to the run already in flight and report its outcome. Read-only: takes no lock, writes no run state, starts nothing |
|
|
387
|
+
| `--await-timeout <sec>` | Budget for `--await-run` (default 900, max 14400). An MCP caller is clamped to at most 45s — just under a client's ~60s request timeout |
|
|
388
|
+
| `--resume <id>` | CONTINUE a stopped run. Not the same as following: resuming a **live** run starts a second copy of it |
|
|
389
|
+
| `--pending [file]` | Replay the edit intents the delivery gate recorded (`.uap/pending-deliver.jsonl`) by exact anchor — no model — then run the gates once |
|
|
390
|
+
|
|
391
|
+
A mission outlives the tool call that launched it, so a caller whose own timeout
|
|
392
|
+
fires mid-run follows it rather than relaunching:
|
|
393
|
+
|
|
394
|
+
```bash
|
|
395
|
+
uap deliver --await-run # blocks until the run ends (900s default)
|
|
396
|
+
uap deliver --await-run --await-timeout 45 # one poll, then report and return
|
|
397
|
+
```
|
|
398
|
+
|
|
399
|
+
Exit codes for `--await-run` are distinct because three of the four outcomes are
|
|
400
|
+
not failures: **0** delivered · **1** the mission ended badly · **3** nothing was
|
|
401
|
+
running (go ahead and launch) · **4** still running — the wait gave up, the
|
|
402
|
+
mission did not.
|
|
403
|
+
|
|
404
|
+
A `4` carries a `progress` object so consecutive polls can be compared. Always
|
|
405
|
+
present: `heartbeatAgeSec`, `wedgeAfterSec`, `health`. Present only when the run
|
|
406
|
+
could be attributed to the lock holder: `runElapsedSec`, `phase`.
|
|
407
|
+
|
|
408
|
+
`health` is derived from how recently the run stamped its heartbeat, never
|
|
409
|
+
asserted:
|
|
410
|
+
|
|
411
|
+
- `"starting"` — it holds the lock but has not stamped a heartbeat yet.
|
|
412
|
+
- `"active"` — it stamped within `wedgeAfterSec`. Note this means the process is
|
|
413
|
+
*doing something*, not that the mission is getting closer: the heartbeat is
|
|
414
|
+
stamped on every executor tool call, so a run spinning in a tool-call loop
|
|
415
|
+
stays `"active"`. Cross-check `phase` and the run's `updatedAt`, which only
|
|
416
|
+
move when a turn or phase completes.
|
|
417
|
+
- `"wedged"` — silent past `UAP_DELIVER_WEDGE_TIMEOUT` (default 1800s, shared
|
|
418
|
+
with the autoroute hook) and may be stuck.
|
|
419
|
+
|
|
420
|
+
A wedged **lock** holder is reclaimed by the next launch. A resumed run holds no
|
|
421
|
+
lock, so relaunching there does not reclaim it — it starts a second mission on
|
|
422
|
+
the same tree; keep following instead. Never kill a deliver run by hand: that
|
|
423
|
+
discards the work it already finished and leaves the lock behind. If a run
|
|
424
|
+
genuinely must stop, use the dashboard's Cancel control, which writes a
|
|
425
|
+
cooperative stop-file and marks the run interrupted so `--resume` can pick it up.
|
|
386
426
|
|
|
387
427
|
```bash
|
|
388
428
|
uap deliver "add a /healthz endpoint with a test" --gates build,test
|
package/package.json
CHANGED
|
Binary file
|