@miller-tech/uap 1.174.1 → 1.175.1
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/bin/cli.js +4 -0
- package/dist/bin/cli.js.map +1 -1
- package/dist/cli/deliver.d.ts +4 -0
- package/dist/cli/deliver.d.ts.map +1 -1
- package/dist/cli/deliver.js +91 -5
- package/dist/cli/deliver.js.map +1 -1
- package/dist/delivery/await-run.d.ts +165 -0
- package/dist/delivery/await-run.d.ts.map +1 -0
- package/dist/delivery/await-run.js +260 -0
- package/dist/delivery/await-run.js.map +1 -0
- package/dist/mcp-router/tools/deliver.d.ts +20 -0
- package/dist/mcp-router/tools/deliver.d.ts.map +1 -1
- package/dist/mcp-router/tools/deliver.js +104 -34
- package/dist/mcp-router/tools/deliver.js.map +1 -1
- package/package.json +1 -1
- package/src/policies/enforcers/__pycache__/_common.cpython-312.pyc +0 -0
- package/src/policies/enforcers/delivery_enforcement.py +3 -1
- package/templates/hooks/__pycache__/deliver_autoroute.cpython-312.pyc +0 -0
- package/tools/agents/scripts/__pycache__/toolcall_path_normalizer.cpython-312.pyc +0 -0
|
@@ -0,0 +1,260 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Attach to a deliver run that is already in flight, and report its result.
|
|
3
|
+
*
|
|
4
|
+
* THE GAP THIS CLOSES
|
|
5
|
+
* A deliver mission outlives the tool call that started it — that is deliberate,
|
|
6
|
+
* and the detach banner says so. But a caller whose own tool timeout fired
|
|
7
|
+
* mid-mission had no way back to its run:
|
|
8
|
+
*
|
|
9
|
+
* - launching again hits the single-flight guard and is skipped;
|
|
10
|
+
* - `--resume` is not "follow", it is "continue". It deliberately does NOT take
|
|
11
|
+
* the lock, and `latest` resolves the most-recently-updated non-delivered
|
|
12
|
+
* run — which, while a holder is alive, is the LIVE one. So resuming a
|
|
13
|
+
* running mission starts a second copy of it on the same runId: precisely
|
|
14
|
+
* the fan-out the lock exists to prevent.
|
|
15
|
+
*
|
|
16
|
+
* Observed live (opencode, 2026-07-30): with `delivery.enforcement: block` the
|
|
17
|
+
* model could not write directly, deliver blocked past its client's tool
|
|
18
|
+
* timeout, and it spent 63 requests in ten minutes alternating between a refused
|
|
19
|
+
* write, a "timed out" deliver, and `pkill -9 -f 'cli.js deliver'`. Every door
|
|
20
|
+
* was shut: it could not write, could not wait, and could not follow.
|
|
21
|
+
*
|
|
22
|
+
* WHAT THIS IS
|
|
23
|
+
* A read-only wait. It takes no lock, writes no run state, and starts nothing —
|
|
24
|
+
* it watches the holder until it exits, then reports that run's final state.
|
|
25
|
+
*
|
|
26
|
+
* WHAT COUNTS AS "IN FLIGHT" (and why the lock alone is not enough)
|
|
27
|
+
* A resumed run never acquires the lock, so a lock-only probe reports "nothing
|
|
28
|
+
* in flight" for a live resumed mission — and the caller, told to start
|
|
29
|
+
* normally, then launches a SECOND concurrent run against the same tree. Since
|
|
30
|
+
* the guidance this harness hands a timed-out caller used to be "use resume",
|
|
31
|
+
* resumed runs are exactly the population most likely to be in flight when
|
|
32
|
+
* someone follows. Liveness therefore falls back to run state: a run marked
|
|
33
|
+
* running whose recorded pid is alive is in flight, lock or no lock.
|
|
34
|
+
*
|
|
35
|
+
* WHY THE HOLDER'S IDENTITY IS (pid, stamp) AND IS RE-READ
|
|
36
|
+
* A pid alone is not an identity. Missions spawn thousands of subprocesses, so a
|
|
37
|
+
* recycled pid would keep this loop reporting "still running" about a mission
|
|
38
|
+
* that finished; and `acquireDeliverLock` can RECLAIM the lock from a holder
|
|
39
|
+
* that is alive but wedged, after which the pid being watched is no longer the
|
|
40
|
+
* mission in flight. The lock file already carries an ISO stamp after `|`; using
|
|
41
|
+
* it turns "is that pid alive" into "is that same holder still there".
|
|
42
|
+
*/
|
|
43
|
+
import { existsSync, readFileSync } from 'fs';
|
|
44
|
+
import { join } from 'path';
|
|
45
|
+
import { listRuns } from './run-state.js';
|
|
46
|
+
/** Default poll interval — fast enough to feel immediate, idle enough to ignore. */
|
|
47
|
+
const DEFAULT_POLL_MS = 2000;
|
|
48
|
+
/**
|
|
49
|
+
* How long a follow should wait when the caller is an MCP CLIENT (seconds).
|
|
50
|
+
*
|
|
51
|
+
* The binding constraint is the client's request timeout, not the server's
|
|
52
|
+
* patience — and only the MCP layer knows its caller has one. Measured on the
|
|
53
|
+
* live client (opencode, 2026-07-30): a tool call is abandoned after 62s, which
|
|
54
|
+
* is the MCP SDK's 60s default request timeout plus start-up. A follow budget
|
|
55
|
+
* above that is killed before it can answer — reproducing the exact
|
|
56
|
+
* kill-vs-failure ambiguity follow exists to remove — and strands a process
|
|
57
|
+
* waiting on a question nobody is listening for (observed: a 1620s follow,
|
|
58
|
+
* orphaned, while the model fell back to `sleep 180 && cat`).
|
|
59
|
+
*
|
|
60
|
+
* This is deliberately NOT the CLI's default. A human at a terminal, or a CI
|
|
61
|
+
* step, has no such limit and should get a long block; capping THEM at 45s was
|
|
62
|
+
* the first attempt at this fix and it punished the caller that was not broken.
|
|
63
|
+
*/
|
|
64
|
+
export const FOLLOW_CLIENT_POLL_SEC = 45;
|
|
65
|
+
function summarize(run) {
|
|
66
|
+
return {
|
|
67
|
+
runId: run.runId,
|
|
68
|
+
status: run.status,
|
|
69
|
+
updatedAt: run.updatedAt,
|
|
70
|
+
...(run.phaseIndex !== undefined ? { phaseIndex: run.phaseIndex } : {}),
|
|
71
|
+
...(run.phases ? { phaseCount: run.phases.length } : {}),
|
|
72
|
+
...(run.runnerKind ? { runnerKind: run.runnerKind } : {}),
|
|
73
|
+
...(run.exit ? { exit: run.exit } : {}),
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
function livePid(pid) {
|
|
77
|
+
try {
|
|
78
|
+
process.kill(pid, 0);
|
|
79
|
+
return true;
|
|
80
|
+
}
|
|
81
|
+
catch (e) {
|
|
82
|
+
// EPERM means it exists and is not ours — still alive.
|
|
83
|
+
return e.code === 'EPERM';
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* The lock holder, or null.
|
|
88
|
+
*
|
|
89
|
+
* The pid is validated rather than trusted: the lock file is writable by any
|
|
90
|
+
* local process and this value reaches a model-facing message.
|
|
91
|
+
*/
|
|
92
|
+
export function lockHolder(projectRoot) {
|
|
93
|
+
const lockPath = join(projectRoot, '.uap', 'deliver.lock');
|
|
94
|
+
if (!existsSync(lockPath))
|
|
95
|
+
return null;
|
|
96
|
+
try {
|
|
97
|
+
const [rawPid = '', rawStamp = ''] = readFileSync(lockPath, 'utf8').split('|');
|
|
98
|
+
const pid = rawPid.trim();
|
|
99
|
+
if (!/^\d{1,10}$/.test(pid) || Number(pid) <= 0)
|
|
100
|
+
return null;
|
|
101
|
+
return { pid: Number(pid), stamp: rawStamp.trim().slice(0, 64), source: 'lock' };
|
|
102
|
+
}
|
|
103
|
+
catch {
|
|
104
|
+
return null;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
/** Back-compat helper: just the pid. */
|
|
108
|
+
export function lockHolderPid(projectRoot) {
|
|
109
|
+
return lockHolder(projectRoot)?.pid ?? null;
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Whoever is running a mission here: the lock holder, else a live resumed run.
|
|
113
|
+
*
|
|
114
|
+
* The run-state fallback is what makes follow work for `--resume`, which never
|
|
115
|
+
* takes the lock.
|
|
116
|
+
*/
|
|
117
|
+
export function currentHolder(projectRoot, isAlive = livePid) {
|
|
118
|
+
const locked = lockHolder(projectRoot);
|
|
119
|
+
if (locked && isAlive(locked.pid))
|
|
120
|
+
return locked;
|
|
121
|
+
for (const run of listRuns(projectRoot)) {
|
|
122
|
+
if (run.status === 'running' && typeof run.pid === 'number' && isAlive(run.pid)) {
|
|
123
|
+
return { pid: run.pid, stamp: run.updatedAt ?? '', source: 'run-state', runId: run.runId };
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
return null;
|
|
127
|
+
}
|
|
128
|
+
function sameHolder(a, b) {
|
|
129
|
+
return b !== null && a.pid === b.pid && a.stamp === b.stamp && a.source === b.source;
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* The run owned by `pid`, and whether it could actually be attributed.
|
|
133
|
+
*
|
|
134
|
+
* The exact-pid match is the only confident answer. Falling back to "the newest
|
|
135
|
+
* run marked running" is tempting and wrong on its own: interrupted runs keep
|
|
136
|
+
* `status: 'running'` deliberately, so a directory that accumulates (33 entries
|
|
137
|
+
* on the project this was built for) usually holds several — and the lock is
|
|
138
|
+
* taken long before run state carrying a pid is written, so a follow that
|
|
139
|
+
* arrives in that window would confidently name an OLDER mission's runId and
|
|
140
|
+
* tell the caller to resume it. The fallback is therefore restricted to runs
|
|
141
|
+
* that could plausibly be the holder's: no recorded pid, or a dead one.
|
|
142
|
+
*/
|
|
143
|
+
export function runForHolder(projectRoot, pid, isAlive = livePid) {
|
|
144
|
+
const runs = listRuns(projectRoot);
|
|
145
|
+
const exact = runs.find((r) => r.pid === pid);
|
|
146
|
+
if (exact)
|
|
147
|
+
return { run: exact, attributed: true };
|
|
148
|
+
const plausible = runs.find((r) => r.status === 'running' && (typeof r.pid !== 'number' || !isAlive(r.pid)));
|
|
149
|
+
return { run: plausible ?? null, attributed: false };
|
|
150
|
+
}
|
|
151
|
+
/** The most recent run, for reporting a mission that ended just before we looked. */
|
|
152
|
+
function mostRecentRun(projectRoot) {
|
|
153
|
+
return listRuns(projectRoot)[0] ?? null;
|
|
154
|
+
}
|
|
155
|
+
function terminalOutcome(run, holderPid, attributed, justEnded) {
|
|
156
|
+
// A process killed mid-run leaves 'running' behind — that IS the resumable
|
|
157
|
+
// state, and it is the one case where naming resume is correct, because the
|
|
158
|
+
// holder is provably gone and continuing cannot fork a live mission.
|
|
159
|
+
const stale = run.status === 'running';
|
|
160
|
+
const who = holderPid !== undefined ? ` (pid ${holderPid})` : '';
|
|
161
|
+
return {
|
|
162
|
+
followed: true,
|
|
163
|
+
delivered: run.status === 'delivered',
|
|
164
|
+
holderPid,
|
|
165
|
+
runId: run.runId,
|
|
166
|
+
status: run.status,
|
|
167
|
+
run: summarize(run),
|
|
168
|
+
attributed,
|
|
169
|
+
reason: stale
|
|
170
|
+
? `The deliver run${who} exited without recording a final status — it was interrupted.`
|
|
171
|
+
: `The deliver run${who} ${justEnded ? 'finished' : 'had already finished'} with status '${run.status}'.` +
|
|
172
|
+
(attributed ? '' : ' (Matched by run state rather than by process id — verify the run id below is the one you meant.)'),
|
|
173
|
+
nextStep: stale
|
|
174
|
+
? `The mission is interrupted, not lost. Continue it with resume:'${run.runId}' — safe now that the holder is gone.`
|
|
175
|
+
: run.status === 'delivered'
|
|
176
|
+
? 'The mission completed. Inspect the result; no further deliver call is needed.'
|
|
177
|
+
: `The mission ended '${run.status}'. Read its output before deciding: continue it with resume:'${run.runId}', or start a new mission if the goal changed.`,
|
|
178
|
+
};
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* Wait for the in-flight deliver to finish, then report its outcome.
|
|
182
|
+
*
|
|
183
|
+
* Never throws for the ordinary outcomes — "nothing running", "still running
|
|
184
|
+
* when the budget expired" and "the holder changed" are results, not errors,
|
|
185
|
+
* because the caller is a tool whose next move depends on telling them apart.
|
|
186
|
+
*/
|
|
187
|
+
export async function awaitInFlightDeliver(projectRoot, opts) {
|
|
188
|
+
const isAlive = opts.isAlive ?? livePid;
|
|
189
|
+
const pollMs = Math.max(50, opts.pollMs ?? DEFAULT_POLL_MS);
|
|
190
|
+
const sleep = opts.sleep ?? ((ms) => new Promise((r) => setTimeout(r, ms)));
|
|
191
|
+
const holder = currentHolder(projectRoot, isAlive);
|
|
192
|
+
if (holder === null) {
|
|
193
|
+
// Nothing is running NOW — but a mission that finished moments ago is the
|
|
194
|
+
// common case for this call (the caller's tool timeout fired, it called
|
|
195
|
+
// back). Reporting "nothing ever happened, start the mission normally"
|
|
196
|
+
// there sends it to re-run work that is already done.
|
|
197
|
+
const recent = mostRecentRun(projectRoot);
|
|
198
|
+
if (recent)
|
|
199
|
+
return terminalOutcome(recent, undefined, true, false);
|
|
200
|
+
return {
|
|
201
|
+
followed: false,
|
|
202
|
+
delivered: false,
|
|
203
|
+
nothingInFlight: true,
|
|
204
|
+
reason: 'No deliver run is in flight for this project, and no previous run was found.',
|
|
205
|
+
nextStep: 'Nothing to follow. Start the mission normally — a fresh deliver call will acquire the lock.',
|
|
206
|
+
};
|
|
207
|
+
}
|
|
208
|
+
const startedAt = Date.now();
|
|
209
|
+
for (;;) {
|
|
210
|
+
const now = currentHolder(projectRoot, isAlive);
|
|
211
|
+
if (now === null)
|
|
212
|
+
break; // finished
|
|
213
|
+
if (!sameHolder(holder, now)) {
|
|
214
|
+
// Reclaim, handoff, or a recycled pid. Following the wrong mission and
|
|
215
|
+
// reporting on it confidently is worse than saying the ground moved.
|
|
216
|
+
return {
|
|
217
|
+
followed: false,
|
|
218
|
+
delivered: false,
|
|
219
|
+
holderChanged: true,
|
|
220
|
+
holderPid: holder.pid,
|
|
221
|
+
reason: `The deliver run being followed (pid ${holder.pid}) was replaced by another (pid ${now.pid}) — ` +
|
|
222
|
+
'the lock was reclaimed or the run handed over.',
|
|
223
|
+
nextStep: 'Do NOT start another run. Call deliver again with follow:true to attach to the current one.',
|
|
224
|
+
};
|
|
225
|
+
}
|
|
226
|
+
const elapsed = Date.now() - startedAt;
|
|
227
|
+
if (elapsed >= opts.timeoutMs) {
|
|
228
|
+
const { run, attributed } = runForHolder(projectRoot, holder.pid, isAlive);
|
|
229
|
+
return {
|
|
230
|
+
followed: false,
|
|
231
|
+
delivered: false,
|
|
232
|
+
timedOut: true,
|
|
233
|
+
holderPid: holder.pid,
|
|
234
|
+
runId: attributed ? run?.runId : undefined,
|
|
235
|
+
status: run?.status,
|
|
236
|
+
run: run && attributed ? summarize(run) : undefined,
|
|
237
|
+
attributed,
|
|
238
|
+
reason: `The deliver run (pid ${holder.pid}) is STILL RUNNING after ${Math.round(opts.timeoutMs / 1000)}s. ` +
|
|
239
|
+
'It has not failed — this wait gave up, the mission did not.',
|
|
240
|
+
nextStep: 'Do NOT start another run. Call deliver again with follow:true to keep waiting, ' +
|
|
241
|
+
'or leave it and check back later.',
|
|
242
|
+
};
|
|
243
|
+
}
|
|
244
|
+
opts.onTick?.(elapsed, holder.pid);
|
|
245
|
+
await sleep(Math.min(pollMs, Math.max(1, opts.timeoutMs - elapsed)));
|
|
246
|
+
}
|
|
247
|
+
const { run, attributed } = runForHolder(projectRoot, holder.pid, isAlive);
|
|
248
|
+
if (!run) {
|
|
249
|
+
return {
|
|
250
|
+
followed: true,
|
|
251
|
+
delivered: false,
|
|
252
|
+
holderPid: holder.pid,
|
|
253
|
+
attributed: false,
|
|
254
|
+
reason: `The deliver run (pid ${holder.pid}) finished, but no run state could be read for it.`,
|
|
255
|
+
nextStep: 'Inspect the project to see what landed before deciding whether to run deliver again.',
|
|
256
|
+
};
|
|
257
|
+
}
|
|
258
|
+
return terminalOutcome(run, holder.pid, attributed, true);
|
|
259
|
+
}
|
|
260
|
+
//# sourceMappingURL=await-run.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"await-run.js","sourceRoot":"","sources":["../../src/delivery/await-run.ts"],"names":[],"mappings":"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"}
|
|
@@ -46,6 +46,12 @@ export interface DeliverArgs {
|
|
|
46
46
|
dryRun?: boolean;
|
|
47
47
|
/** Hard wall-clock cap in seconds (default 1800) */
|
|
48
48
|
timeoutSec?: number;
|
|
49
|
+
/**
|
|
50
|
+
* Follow the run already in flight for this project instead of starting one.
|
|
51
|
+
* Use this after a timed-out deliver call, or whenever a launch reports
|
|
52
|
+
* alreadyRunning. Read-only: it starts nothing and takes no lock.
|
|
53
|
+
*/
|
|
54
|
+
follow?: boolean;
|
|
49
55
|
/** Judge spec behavioral completeness (LLM) after objective gates pass */
|
|
50
56
|
acceptance?: boolean;
|
|
51
57
|
/** Separate evaluator model preset (generator never grades its own work) */
|
|
@@ -94,6 +100,10 @@ export declare const DELIVER_TOOL_DEFINITION: {
|
|
|
94
100
|
description: string;
|
|
95
101
|
default: boolean;
|
|
96
102
|
};
|
|
103
|
+
follow: {
|
|
104
|
+
type: string;
|
|
105
|
+
description: string;
|
|
106
|
+
};
|
|
97
107
|
timeoutSec: {
|
|
98
108
|
type: string;
|
|
99
109
|
description: string;
|
|
@@ -155,6 +165,16 @@ export interface DeliverResult {
|
|
|
155
165
|
* Validation mirrors the CLI; everything else (complexity auto-optimization,
|
|
156
166
|
* aids, gates, test protection) is handled by deliver itself.
|
|
157
167
|
*/
|
|
168
|
+
/**
|
|
169
|
+
* Build the argv for the deliver CLI. Extracted so the flag decisions are
|
|
170
|
+
* testable directly.
|
|
171
|
+
*
|
|
172
|
+
* They were not: `follow`'s budget is the difference between a wait that returns
|
|
173
|
+
* an answer and one the client kills, and the only test that touched it passed an
|
|
174
|
+
* explicit timeoutSec — so it exercised the branch that was NOT the default and
|
|
175
|
+
* asserted nothing about the flag either way.
|
|
176
|
+
*/
|
|
177
|
+
export declare function buildDeliverCliArgs(cli: string, root: string, a: DeliverArgs): string[];
|
|
158
178
|
export declare function handleDeliver(args: DeliverArgs): Promise<DeliverResult>;
|
|
159
179
|
/** Rough token estimate for the tool definition (router stats). */
|
|
160
180
|
export declare function estimateDeliverToolTokens(): number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deliver.d.ts","sourceRoot":"","sources":["../../../src/mcp-router/tools/deliver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;
|
|
1
|
+
{"version":3,"file":"deliver.d.ts","sourceRoot":"","sources":["../../../src/mcp-router/tools/deliver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AASH,MAAM,WAAW,WAAW;IAC1B,2CAA2C;IAC3C,WAAW,EAAE,MAAM,CAAC;IACpB,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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8FnC,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;CAChB;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,CAyKvE;AAED,mEAAmE;AACnE,wBAAgB,yBAAyB,IAAI,MAAM,CAElD"}
|
|
@@ -29,6 +29,7 @@ import { execFile } from 'child_process';
|
|
|
29
29
|
import { fileURLToPath } from 'url';
|
|
30
30
|
import { dirname, resolve, sep } from 'path';
|
|
31
31
|
import { existsSync, realpathSync, statSync } from 'fs';
|
|
32
|
+
import { FOLLOW_CLIENT_POLL_SEC } from '../../delivery/await-run.js';
|
|
32
33
|
import { isValidRunId } from '../../delivery/run-state.js';
|
|
33
34
|
export const DELIVER_TOOL_DEFINITION = {
|
|
34
35
|
name: 'deliver',
|
|
@@ -38,7 +39,7 @@ Route any substantive coding/delivery task here instead of editing by hand when
|
|
|
38
39
|
|
|
39
40
|
Use dryRun:true first to see the complexity classification and plan (fast, no model calls). Then call without dryRun to actually deliver.
|
|
40
41
|
|
|
41
|
-
Long missions: runs are DURABLE —
|
|
42
|
+
Long missions: runs are DURABLE and DETACHED — the mission outlives this tool call. If the call times out mid-mission the run is still going: call again with follow:true to wait for it and get its result. Do NOT use resume for that — resume CONTINUES a run and, on one that is still live, starts a second copy of it. Use resume only to pick up a run that has actually stopped. Leave maxTurns/ceiling unset (epics + until-delivered self-manage turns); pass a larger timeoutSec for platform-scale work.
|
|
42
43
|
|
|
43
44
|
Best for: implement a feature, fix a bug across files, refactor with tests. Not for: trivial one-line edits, pure questions, or non-code docs.`,
|
|
44
45
|
inputSchema: {
|
|
@@ -69,7 +70,18 @@ Best for: implement a feature, fix a bug across files, refactor with tests. Not
|
|
|
69
70
|
description: 'If true, only classify complexity and show the plan (fast, no model calls). Default false.',
|
|
70
71
|
default: false,
|
|
71
72
|
},
|
|
73
|
+
follow: {
|
|
74
|
+
type: 'boolean',
|
|
75
|
+
description: 'Wait for the deliver run already in flight and return its result, instead of starting a new one. ' +
|
|
76
|
+
'This is the correct response to a timed-out deliver call or an alreadyRunning result — it starts ' +
|
|
77
|
+
'nothing. It returns within about a minute either way: if the mission is still going you get ' +
|
|
78
|
+
'"STILL RUNNING", which is NOT a failure — just call it again to keep waiting. Prefer that over ' +
|
|
79
|
+
'sleeping in a shell. Do not use resume for this: resume CONTINUES a run and would start a second ' +
|
|
80
|
+
'copy of a live one.',
|
|
81
|
+
},
|
|
72
82
|
timeoutSec: {
|
|
83
|
+
// Documented here because the parameter is overloaded and a model that
|
|
84
|
+
// raises it expecting a longer FOLLOW gets a longer launch instead.
|
|
73
85
|
type: 'number',
|
|
74
86
|
description: 'Hard wall-clock cap in seconds (default 1800)',
|
|
75
87
|
},
|
|
@@ -232,8 +244,70 @@ function resolveCliEntry() {
|
|
|
232
244
|
* Validation mirrors the CLI; everything else (complexity auto-optimization,
|
|
233
245
|
* aids, gates, test protection) is handled by deliver itself.
|
|
234
246
|
*/
|
|
247
|
+
/**
|
|
248
|
+
* Build the argv for the deliver CLI. Extracted so the flag decisions are
|
|
249
|
+
* testable directly.
|
|
250
|
+
*
|
|
251
|
+
* They were not: `follow`'s budget is the difference between a wait that returns
|
|
252
|
+
* an answer and one the client kills, and the only test that touched it passed an
|
|
253
|
+
* explicit timeoutSec — so it exercised the branch that was NOT the default and
|
|
254
|
+
* asserted nothing about the flag either way.
|
|
255
|
+
*/
|
|
256
|
+
export function buildDeliverCliArgs(cli, root, a) {
|
|
257
|
+
const cliArgs = [cli, 'deliver', '--json'];
|
|
258
|
+
if (a.dryRun)
|
|
259
|
+
cliArgs.push('--dry-run');
|
|
260
|
+
cliArgs.push('--project-root', root); // always explicit (confined above)
|
|
261
|
+
// Turn caps are forwarded ONLY under an explicit hardCap: the CLI treats
|
|
262
|
+
// --max-turns/--a.ceiling as hard stops, and LLM clients copy small example
|
|
263
|
+
// numbers into every call — which killed platform-scale missions at turn 20.
|
|
264
|
+
// Flagless, deliver's epics + until-delivered machinery self-manages turns.
|
|
265
|
+
if (a.hardCap === true && a.maxTurns !== undefined)
|
|
266
|
+
cliArgs.push('--max-turns', String(a.maxTurns));
|
|
267
|
+
if (a.model)
|
|
268
|
+
cliArgs.push('--a.model', a.model);
|
|
269
|
+
if (a.acceptance)
|
|
270
|
+
cliArgs.push('--a.acceptance');
|
|
271
|
+
if (a.evaluatorModel)
|
|
272
|
+
cliArgs.push('--evaluator-a.model', a.evaluatorModel);
|
|
273
|
+
if (a.escalate)
|
|
274
|
+
cliArgs.push('--a.escalate');
|
|
275
|
+
if (a.coordinate)
|
|
276
|
+
cliArgs.push('--a.coordinate');
|
|
277
|
+
if (a.untilDelivered === false)
|
|
278
|
+
cliArgs.push('--no-until-delivered');
|
|
279
|
+
if (a.hardCap === true && a.ceiling !== undefined)
|
|
280
|
+
cliArgs.push('--a.ceiling', String(a.ceiling));
|
|
281
|
+
if (a.follow) {
|
|
282
|
+
cliArgs.push('--await-run');
|
|
283
|
+
// ALWAYS explicit, and always short. This is the only layer that knows the
|
|
284
|
+
// caller is a client with a request timeout (~60s), so it is the layer that
|
|
285
|
+
// must size the wait — leaving it to the CLI default capped every terminal
|
|
286
|
+
// and CI caller instead, which is the wrong trade.
|
|
287
|
+
//
|
|
288
|
+
// Clamped even when the caller names a bigger a.timeoutSec. That parameter is
|
|
289
|
+
// overloaded: it is the LAUNCH kill-timeout, whose description advertises
|
|
290
|
+
// 1800 and whose sibling text invites "a larger a.timeoutSec for platform-scale
|
|
291
|
+
// work". A a.model following that advice with follow:true would ask for a
|
|
292
|
+
// 1620s wait and re-create the original incident verbatim — no answer, and an
|
|
293
|
+
// orphaned process. Blocking longer than the client will wait is never what
|
|
294
|
+
// the caller wants; calling a.follow again is.
|
|
295
|
+
const followSec = Math.min(FOLLOW_CLIENT_POLL_SEC, a.timeoutSec !== undefined ? Math.max(1, Math.floor(a.timeoutSec) - 1) : FOLLOW_CLIENT_POLL_SEC);
|
|
296
|
+
cliArgs.push('--await-timeout', String(Math.max(1, followSec)));
|
|
297
|
+
}
|
|
298
|
+
if (a.resume)
|
|
299
|
+
cliArgs.push('--a.resume', a.resume);
|
|
300
|
+
if (a.decompose === true)
|
|
301
|
+
cliArgs.push('--a.decompose');
|
|
302
|
+
if (a.decompose === false)
|
|
303
|
+
cliArgs.push('--no-a.decompose');
|
|
304
|
+
cliArgs.push('--', a.instruction ?? '');
|
|
305
|
+
return cliArgs;
|
|
306
|
+
}
|
|
235
307
|
export function handleDeliver(args) {
|
|
236
|
-
|
|
308
|
+
// Only what the VALIDATION and the subprocess call still need — the flag
|
|
309
|
+
// decisions moved into buildDeliverCliArgs.
|
|
310
|
+
const { instruction, projectRoot, maxTurns, model, dryRun = false, timeoutSec, evaluatorModel, ceiling, resume, } = args;
|
|
237
311
|
if ((!instruction || !instruction.trim()) && !resume) {
|
|
238
312
|
return Promise.resolve({ ok: false, dryRun, error: 'instruction is required (or pass resume)' });
|
|
239
313
|
}
|
|
@@ -267,37 +341,7 @@ export function handleDeliver(args) {
|
|
|
267
341
|
// Options FIRST, then `--`, then the (client-controlled) instruction as a
|
|
268
342
|
// pure operand — so a leading-dash instruction can't smuggle flags like
|
|
269
343
|
// --endpoint / --deploy / --no-protect-tests.
|
|
270
|
-
const cliArgs =
|
|
271
|
-
if (dryRun)
|
|
272
|
-
cliArgs.push('--dry-run');
|
|
273
|
-
cliArgs.push('--project-root', root); // always explicit (confined above)
|
|
274
|
-
// Turn caps are forwarded ONLY under an explicit hardCap: the CLI treats
|
|
275
|
-
// --max-turns/--ceiling as hard stops, and LLM clients copy small example
|
|
276
|
-
// numbers into every call — which killed platform-scale missions at turn 20.
|
|
277
|
-
// Flagless, deliver's epics + until-delivered machinery self-manages turns.
|
|
278
|
-
if (hardCap === true && maxTurns !== undefined)
|
|
279
|
-
cliArgs.push('--max-turns', String(maxTurns));
|
|
280
|
-
if (model)
|
|
281
|
-
cliArgs.push('--model', model);
|
|
282
|
-
if (acceptance)
|
|
283
|
-
cliArgs.push('--acceptance');
|
|
284
|
-
if (evaluatorModel)
|
|
285
|
-
cliArgs.push('--evaluator-model', evaluatorModel);
|
|
286
|
-
if (escalate)
|
|
287
|
-
cliArgs.push('--escalate');
|
|
288
|
-
if (coordinate)
|
|
289
|
-
cliArgs.push('--coordinate');
|
|
290
|
-
if (untilDelivered === false)
|
|
291
|
-
cliArgs.push('--no-until-delivered');
|
|
292
|
-
if (hardCap === true && ceiling !== undefined)
|
|
293
|
-
cliArgs.push('--ceiling', String(ceiling));
|
|
294
|
-
if (resume)
|
|
295
|
-
cliArgs.push('--resume', resume);
|
|
296
|
-
if (decompose === true)
|
|
297
|
-
cliArgs.push('--decompose');
|
|
298
|
-
if (decompose === false)
|
|
299
|
-
cliArgs.push('--no-decompose');
|
|
300
|
-
cliArgs.push('--', instruction ?? '');
|
|
344
|
+
const cliArgs = buildDeliverCliArgs(cli, root, args);
|
|
301
345
|
const timeoutMs = Math.min(MAX_TIMEOUT_SEC, Math.max(1, timeoutSec ?? DEFAULT_TIMEOUT_SEC)) * 1000;
|
|
302
346
|
return new Promise((resolvePromise) => {
|
|
303
347
|
execFile(process.execPath, cliArgs, { cwd: root, timeout: timeoutMs, maxBuffer: MAX_OUTPUT_BYTES, env: buildChildEnv() }, (err, stdout) => {
|
|
@@ -323,7 +367,7 @@ export function handleDeliver(args) {
|
|
|
323
367
|
dryRun,
|
|
324
368
|
exitCode,
|
|
325
369
|
error: 'deliver produced no JSON result (its --json contract was not honoured on this exit path). ' +
|
|
326
|
-
'Do NOT relaunch blindly:
|
|
370
|
+
'Do NOT relaunch blindly: call deliver with follow:true to see whether a run is already in progress and wait for it.',
|
|
327
371
|
result: stdout.slice(-2000),
|
|
328
372
|
});
|
|
329
373
|
return;
|
|
@@ -353,6 +397,32 @@ export function handleDeliver(args) {
|
|
|
353
397
|
// with NO `error` at all, leaving the actionable text buried in
|
|
354
398
|
// `result.blockers` — in a shape whose own contract says `error` is what
|
|
355
399
|
// a caller reads first.
|
|
400
|
+
// Follow outcomes: timedOut / nothingInFlight / holderChanged all resolve
|
|
401
|
+
// success:false, so without this they fall through with NO `error` and the
|
|
402
|
+
// carefully-worded "it has NOT failed, do not relaunch" text stays buried
|
|
403
|
+
// in `result` — the exact gap fixed twice above for alreadyRunning and
|
|
404
|
+
// preflightFailed.
|
|
405
|
+
const fo = parsed;
|
|
406
|
+
if (fo.timedOut === true || fo.nothingInFlight === true || fo.holderChanged === true) {
|
|
407
|
+
resolvePromise({
|
|
408
|
+
ok: false,
|
|
409
|
+
dryRun,
|
|
410
|
+
exitCode,
|
|
411
|
+
error: `${fo.reason ?? 'follow did not complete'} ${fo.nextStep ?? ''}`.trim(),
|
|
412
|
+
result: parsed,
|
|
413
|
+
});
|
|
414
|
+
return;
|
|
415
|
+
}
|
|
416
|
+
if (fo.followed === true && fo.delivered === false) {
|
|
417
|
+
resolvePromise({
|
|
418
|
+
ok: false,
|
|
419
|
+
dryRun,
|
|
420
|
+
exitCode,
|
|
421
|
+
error: `${fo.reason ?? 'the followed run did not succeed'} ${fo.nextStep ?? ''}`.trim(),
|
|
422
|
+
result: parsed,
|
|
423
|
+
});
|
|
424
|
+
return;
|
|
425
|
+
}
|
|
356
426
|
const pf = parsed;
|
|
357
427
|
if (pf.preflightFailed === true) {
|
|
358
428
|
const blockers = Array.isArray(pf.blockers) ? pf.blockers.map(String) : [];
|
|
@@ -1 +1 @@
|
|
|
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,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAyC3D,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,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,UAAU,EAAE;gBACV,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,QAAQ,EAAE,CAAC,aAAa,CAAC;KAC1B;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;AAYD;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,IAAiB;IAC7C,MAAM,EACJ,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,KAAK,EAAE,UAAU,EAC9E,UAAU,EAAE,cAAc,EAAE,QAAQ,EAAE,UAAU,EAAE,cAAc,EAAE,OAAO,EACzE,MAAM,EAAE,SAAS,GAClB,GAAG,IAAI,CAAC;IAET,IAAI,CAAC,CAAC,WAAW,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;QACrD,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,0CAA0C,EAAE,CAAC,CAAC;IACnG,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,CAAC,GAAG,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;IAC3C,IAAI,MAAM;QAAE,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACtC,OAAO,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC,CAAC,mCAAmC;IACzE,yEAAyE;IACzE,0EAA0E;IAC1E,6EAA6E;IAC7E,4EAA4E;IAC5E,IAAI,OAAO,KAAK,IAAI,IAAI,QAAQ,KAAK,SAAS;QAAE,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC9F,IAAI,KAAK;QAAE,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IAC1C,IAAI,UAAU;QAAE,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAC7C,IAAI,cAAc;QAAE,OAAO,CAAC,IAAI,CAAC,mBAAmB,EAAE,cAAc,CAAC,CAAC;IACtE,IAAI,QAAQ;QAAE,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACzC,IAAI,UAAU;QAAE,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAC7C,IAAI,cAAc,KAAK,KAAK;QAAE,OAAO,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;IACnE,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,SAAS;QAAE,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;IAC1F,IAAI,MAAM;QAAE,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IAC7C,IAAI,SAAS,KAAK,IAAI;QAAE,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IACpD,IAAI,SAAS,KAAK,KAAK;QAAE,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IACxD,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,IAAI,EAAE,CAAC,CAAC;IAEtC,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,8GAA8G;oBAChH,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,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"}
|
|
1
|
+
{"version":3,"file":"deliver.js","sourceRoot":"","sources":["../../../src/mcp-router/tools/deliver.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
Binary file
|
|
@@ -468,7 +468,9 @@ def main() -> None:
|
|
|
468
468
|
False,
|
|
469
469
|
f"WAIT: a `uap deliver` run (pid {holder}) is ALREADY in progress for this project and is "
|
|
470
470
|
f"changing the code — do NOT edit '{rel_posix}', and do NOT re-run tests on it yet. "
|
|
471
|
-
"Let that run finish
|
|
471
|
+
"Let that run finish — follow it with `uap deliver --await-run`, which waits for it "
|
|
472
|
+
"and reports its result without starting anything. Do NOT use --resume on a live run: "
|
|
473
|
+
"resume CONTINUES a mission and would start a second copy of this one. THEN re-verify. "
|
|
472
474
|
"Launching or editing now only conflicts with the in-flight run.",
|
|
473
475
|
route="wait",
|
|
474
476
|
deliverHint="",
|
|
Binary file
|