@miller-tech/uap 1.191.0 → 1.193.0
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 +25 -0
- package/dist/cli/deliver.d.ts.map +1 -1
- package/dist/cli/deliver.js +59 -3
- package/dist/cli/deliver.js.map +1 -1
- package/dist/delivery/deletion-notice.d.ts +51 -0
- package/dist/delivery/deletion-notice.d.ts.map +1 -0
- package/dist/delivery/deletion-notice.js +119 -0
- package/dist/delivery/deletion-notice.js.map +1 -0
- package/dist/mcp-router/server.d.ts +11 -0
- package/dist/mcp-router/server.d.ts.map +1 -1
- package/dist/mcp-router/server.js +31 -1
- package/dist/mcp-router/server.js.map +1 -1
- package/package.json +1 -1
- package/src/policies/enforcers/__pycache__/_common.cpython-312.pyc +0 -0
- package/templates/hooks/__pycache__/deliver_autoroute.cpython-312.pyc +0 -0
- package/tools/agents/scripts/__pycache__/toolcall_path_normalizer.cpython-312.pyc +0 -0
package/dist/cli/deliver.d.ts
CHANGED
|
@@ -130,6 +130,31 @@ export declare function bestKeepFastScore(gateResults: Array<{
|
|
|
130
130
|
passed: boolean;
|
|
131
131
|
}>, fastRungIds: Set<string>): number | null;
|
|
132
132
|
export { resolveAcceptanceVerdict } from '../delivery/mission-acceptance.js';
|
|
133
|
+
/**
|
|
134
|
+
* The follow budget to use when the caller named none.
|
|
135
|
+
*
|
|
136
|
+
* The 900s default above is right for the caller it describes — a human at a
|
|
137
|
+
* terminal, or a CI step — and the note is right that making it short globally
|
|
138
|
+
* was the wrong layer. What it does not cover is the caller that appeared
|
|
139
|
+
* since: an AGENT shelling out to `uap deliver --await-run` from a bash tool.
|
|
140
|
+
* That caller has a request timeout exactly like the MCP one, but it is not the
|
|
141
|
+
* MCP layer, so it got the long default and was killed mid-wait every time.
|
|
142
|
+
*
|
|
143
|
+
* Measured over 24h on 2026-08-10: thirteen waiting invocations from a bash
|
|
144
|
+
* tool, TEN of them with a tool budget of 300s against this 900s default —
|
|
145
|
+
* guaranteed to be cut short. The model read every one as "the deliver tool
|
|
146
|
+
* keeps timing out" and went looking for other ways through, which is the loop.
|
|
147
|
+
* The MCP tool itself never timed out once in the same window (max 48s).
|
|
148
|
+
*
|
|
149
|
+
* Discriminating on a TTY would not work: CI is not a TTY either and genuinely
|
|
150
|
+
* wants the long block. The question is "does my caller give up on me", and
|
|
151
|
+
* this repo already answers it — `resolveOwnerPid` walks the process ancestry
|
|
152
|
+
* for an agent client, which is how a detached run knows whose session it
|
|
153
|
+
* belongs to. Same question, same answer, one implementation.
|
|
154
|
+
*
|
|
155
|
+
* An explicit --await-timeout always wins over this.
|
|
156
|
+
*/
|
|
157
|
+
export declare function defaultAwaitBudgetSec(ownerPid?: () => number | undefined): number;
|
|
133
158
|
import type { AutoPlan } from '../delivery/auto-optimizer.js';
|
|
134
159
|
export interface DeliverOptions {
|
|
135
160
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deliver.d.ts","sourceRoot":"","sources":["../../src/cli/deliver.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AA2BH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"deliver.d.ts","sourceRoot":"","sources":["../../src/cli/deliver.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/deliver.js
CHANGED
|
@@ -27,8 +27,9 @@ import { applyPendingIntents } from '../delivery/pending-intents.js';
|
|
|
27
27
|
import { runAcceptanceGate } from '../delivery/acceptance-judge.js';
|
|
28
28
|
import { buildMissionAcceptanceGate, resolveAcceptanceVerdict } from '../delivery/mission-acceptance.js';
|
|
29
29
|
import { createSpecRegistry } from '../delivery/spec-registry.js';
|
|
30
|
-
import { guardAgainstOwnerExit } from '../delivery/orphan-guard.js';
|
|
30
|
+
import { guardAgainstOwnerExit, resolveOwnerPid } from '../delivery/orphan-guard.js';
|
|
31
31
|
import { findRepoRoot, formatScopeNotice, unreachablePaths } from '../delivery/scope-notice.js';
|
|
32
|
+
import { deletionTargets, formatDeletionNotice } from '../delivery/deletion-notice.js';
|
|
32
33
|
/**
|
|
33
34
|
* Decide how deliver establishes its convergence target when (or whether) the
|
|
34
35
|
* project exposes objective gates. PURE — unit-tested. See call site for the
|
|
@@ -185,7 +186,7 @@ function cfgRawEarlyForUvFactory(projectRoot) {
|
|
|
185
186
|
}
|
|
186
187
|
import { resolveSessionTokenBudget, sessionWorkingBudget, discoverModelContextWindow } from '../delivery/context-budget.js';
|
|
187
188
|
import { preflightProject, formatPreflightFailure } from '../delivery/project-preflight.js';
|
|
188
|
-
import { awaitInFlightDeliver } from '../delivery/await-run.js';
|
|
189
|
+
import { awaitInFlightDeliver, FOLLOW_CLIENT_POLL_SEC } from '../delivery/await-run.js';
|
|
189
190
|
/**
|
|
190
191
|
* Follow-mode budget when the caller names none, and its ceiling (seconds).
|
|
191
192
|
*
|
|
@@ -199,6 +200,38 @@ import { awaitInFlightDeliver } from '../delivery/await-run.js';
|
|
|
199
200
|
* every terminal and CI caller at 45s to fix a limit that only one client has.
|
|
200
201
|
*/
|
|
201
202
|
const AWAIT_DEFAULT_BUDGET_SEC = 900;
|
|
203
|
+
/**
|
|
204
|
+
* The follow budget to use when the caller named none.
|
|
205
|
+
*
|
|
206
|
+
* The 900s default above is right for the caller it describes — a human at a
|
|
207
|
+
* terminal, or a CI step — and the note is right that making it short globally
|
|
208
|
+
* was the wrong layer. What it does not cover is the caller that appeared
|
|
209
|
+
* since: an AGENT shelling out to `uap deliver --await-run` from a bash tool.
|
|
210
|
+
* That caller has a request timeout exactly like the MCP one, but it is not the
|
|
211
|
+
* MCP layer, so it got the long default and was killed mid-wait every time.
|
|
212
|
+
*
|
|
213
|
+
* Measured over 24h on 2026-08-10: thirteen waiting invocations from a bash
|
|
214
|
+
* tool, TEN of them with a tool budget of 300s against this 900s default —
|
|
215
|
+
* guaranteed to be cut short. The model read every one as "the deliver tool
|
|
216
|
+
* keeps timing out" and went looking for other ways through, which is the loop.
|
|
217
|
+
* The MCP tool itself never timed out once in the same window (max 48s).
|
|
218
|
+
*
|
|
219
|
+
* Discriminating on a TTY would not work: CI is not a TTY either and genuinely
|
|
220
|
+
* wants the long block. The question is "does my caller give up on me", and
|
|
221
|
+
* this repo already answers it — `resolveOwnerPid` walks the process ancestry
|
|
222
|
+
* for an agent client, which is how a detached run knows whose session it
|
|
223
|
+
* belongs to. Same question, same answer, one implementation.
|
|
224
|
+
*
|
|
225
|
+
* An explicit --await-timeout always wins over this.
|
|
226
|
+
*/
|
|
227
|
+
export function defaultAwaitBudgetSec(ownerPid = resolveOwnerPid) {
|
|
228
|
+
try {
|
|
229
|
+
return ownerPid() !== undefined ? FOLLOW_CLIENT_POLL_SEC : AWAIT_DEFAULT_BUDGET_SEC;
|
|
230
|
+
}
|
|
231
|
+
catch {
|
|
232
|
+
return AWAIT_DEFAULT_BUDGET_SEC; // unknowable: keep the long-standing default
|
|
233
|
+
}
|
|
234
|
+
}
|
|
202
235
|
const AWAIT_MAX_BUDGET_SEC = 14_400;
|
|
203
236
|
import { resolveFidelity } from '../delivery/fidelity.js';
|
|
204
237
|
import { installRunExitRecorder } from '../delivery/run-exit.js';
|
|
@@ -957,7 +990,7 @@ export async function deliverCommand(instruction, options) {
|
|
|
957
990
|
const rawBudget = Number(options.awaitTimeout ?? 0);
|
|
958
991
|
const budgetSec = Number.isFinite(rawBudget) && rawBudget > 0
|
|
959
992
|
? Math.min(rawBudget, AWAIT_MAX_BUDGET_SEC)
|
|
960
|
-
:
|
|
993
|
+
: defaultAwaitBudgetSec();
|
|
961
994
|
const budgetMs = Math.max(1, budgetSec) * 1000;
|
|
962
995
|
let lastTickBucket = 0;
|
|
963
996
|
const outcome = await awaitInFlightDeliver(followRoot, {
|
|
@@ -2478,6 +2511,29 @@ async function runDeliver(instruction, options) {
|
|
|
2478
2511
|
catch {
|
|
2479
2512
|
/* scope detection is advisory */
|
|
2480
2513
|
}
|
|
2514
|
+
// Say up front when the task asks for files to be DELETED. There is no delete
|
|
2515
|
+
// tool and no shell by default, so the only move left to the model is to
|
|
2516
|
+
// overwrite the file with a stub — which half-works, and that is the damage:
|
|
2517
|
+
// a small file is replaced successfully and the build breaks on the missing
|
|
2518
|
+
// module, while a large one is refused as gutting and the job ends half-done.
|
|
2519
|
+
// Observed live on 2026-08-10 at 20% of gates after 435s.
|
|
2520
|
+
// Fail-soft: an aid, never a blocker.
|
|
2521
|
+
try {
|
|
2522
|
+
const notice = formatDeletionNotice(deletionTargets(instruction, projectRoot));
|
|
2523
|
+
if (notice) {
|
|
2524
|
+
loopConfig.acceptanceContract = [loopConfig.acceptanceContract, notice]
|
|
2525
|
+
.filter((s) => Boolean(s && s.trim()))
|
|
2526
|
+
.join('\n\n');
|
|
2527
|
+
console.log(chalk.yellow(` deletion: ${notice.split('\n')[0]}`));
|
|
2528
|
+
for (const line of notice.split('\n').slice(1)) {
|
|
2529
|
+
if (line.startsWith(' - '))
|
|
2530
|
+
console.log(chalk.yellow(` deletion: ${line.trim()}`));
|
|
2531
|
+
}
|
|
2532
|
+
}
|
|
2533
|
+
}
|
|
2534
|
+
catch {
|
|
2535
|
+
/* deletion detection is advisory */
|
|
2536
|
+
}
|
|
2481
2537
|
const runState = {
|
|
2482
2538
|
runId,
|
|
2483
2539
|
instruction,
|