@miller-tech/uap 1.161.24 → 1.162.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/cli/deliver.d.ts +31 -0
- package/dist/cli/deliver.d.ts.map +1 -1
- package/dist/cli/deliver.js +164 -9
- package/dist/cli/deliver.js.map +1 -1
- package/dist/delivery/agentic-executor.d.ts +18 -0
- package/dist/delivery/agentic-executor.d.ts.map +1 -1
- package/dist/delivery/agentic-executor.js +33 -0
- package/dist/delivery/agentic-executor.js.map +1 -1
- package/dist/delivery/epic-controller.d.ts +16 -0
- package/dist/delivery/epic-controller.d.ts.map +1 -1
- package/dist/delivery/epic-controller.js +26 -0
- package/dist/delivery/epic-controller.js.map +1 -1
- package/dist/delivery/epic-mission.d.ts +8 -0
- package/dist/delivery/epic-mission.d.ts.map +1 -1
- package/dist/delivery/epic-mission.js +10 -1
- package/dist/delivery/epic-mission.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/templates/hooks/deliver_autoroute.py +47 -4
- package/tools/agents/scripts/__pycache__/toolcall_path_normalizer.cpython-312.pyc +0 -0
- package/tools/agents/tests/test_deliver_autoroute.py +53 -0
|
@@ -69,6 +69,7 @@ export interface EpicControllerConfig {
|
|
|
69
69
|
attempt: number;
|
|
70
70
|
priorSummaries: string[];
|
|
71
71
|
lastFailure?: string;
|
|
72
|
+
contract?: string;
|
|
72
73
|
}) => Promise<EpicRunResult>;
|
|
73
74
|
/**
|
|
74
75
|
* Confirm an epic actually meets its acceptance criteria (gate/judge). When
|
|
@@ -76,6 +77,21 @@ export interface EpicControllerConfig {
|
|
|
76
77
|
* treated as "not accepted" so the controller retries rather than wedging.
|
|
77
78
|
*/
|
|
78
79
|
checkAcceptance?: (epic: Epic, result: EpicRunResult) => boolean | Promise<boolean>;
|
|
80
|
+
/**
|
|
81
|
+
* P1 contract-first: return the frozen shared contract (module APIs, the
|
|
82
|
+
* CONFIG shape, event names, the verify contract) that ALL epics must conform
|
|
83
|
+
* to — VERBATIM, not a lossy summary. Injected into every epic's ctx.contract
|
|
84
|
+
* so fresh-context epics agree on ONE contract instead of each re-inventing it
|
|
85
|
+
* (the octopus CONFIG/`Audio` divergence). Null until it exists. Fail-soft.
|
|
86
|
+
*/
|
|
87
|
+
readContract?: () => string | null;
|
|
88
|
+
/**
|
|
89
|
+
* P1 contract-lint: after an epic delivers AND passes acceptance, verify its
|
|
90
|
+
* output CONFORMS to the shared contract. A NON-EMPTY violations list fails
|
|
91
|
+
* the epic so it re-runs with the violations fed back — catching divergence at
|
|
92
|
+
* the epic boundary. Fail-soft: a throw is treated as no violations.
|
|
93
|
+
*/
|
|
94
|
+
contractLint?: (epic: Epic, result: EpicRunResult, contract: string) => string[] | Promise<string[]>;
|
|
79
95
|
/** Max fresh-session attempts per epic before it is declared failed. Default 3. */
|
|
80
96
|
maxAttemptsPerEpic?: number;
|
|
81
97
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"epic-controller.d.ts","sourceRoot":"","sources":["../../src/delivery/epic-controller.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAGpD;sEACsE;AACtE,MAAM,MAAM,IAAI,GAAG,aAAa,CAAC;AAEjC,+CAA+C;AAC/C,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,iFAAiF;IACjF,OAAO,EAAE,MAAM,CAAC;IAChB,+CAA+C;IAC/C,KAAK,EAAE,MAAM,CAAC;IACd;;;;;OAKG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;6EACyE;IACzE,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,6EAA6E;AAC7E,MAAM,WAAW,WAAW;IAC1B;gEAC4D;IAC5D,aAAa,EAAE,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,oBAAoB;IACnC,sFAAsF;IACtF,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,IAAI,EAAE,CAAC;IACd;;;;;OAKG;IACH,OAAO,EAAE,CACP,IAAI,EAAE,IAAI,EACV,GAAG,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,MAAM,EAAE,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,
|
|
1
|
+
{"version":3,"file":"epic-controller.d.ts","sourceRoot":"","sources":["../../src/delivery/epic-controller.ts"],"names":[],"mappings":"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"}
|
|
@@ -103,10 +103,21 @@ export async function runEpics(config) {
|
|
|
103
103
|
while (attempts < maxAttempts && !accepted) {
|
|
104
104
|
attempts++;
|
|
105
105
|
process.env.UAP_EPIC_PRIOR_CHANGES = priorEpicChanged || anyAttemptChanged ? '1' : '0';
|
|
106
|
+
// P1: carry the frozen shared contract VERBATIM into the fresh session so
|
|
107
|
+
// this epic conforms to the same module APIs / CONFIG shape as the others.
|
|
108
|
+
// Fail-soft like every other injected seam.
|
|
109
|
+
let contract;
|
|
110
|
+
try {
|
|
111
|
+
contract = config.readContract?.() ?? undefined;
|
|
112
|
+
}
|
|
113
|
+
catch {
|
|
114
|
+
contract = undefined;
|
|
115
|
+
}
|
|
106
116
|
const result = await config.runEpic(epic, {
|
|
107
117
|
attempt: attempts,
|
|
108
118
|
priorSummaries: [...priorSummaries],
|
|
109
119
|
lastFailure,
|
|
120
|
+
contract,
|
|
110
121
|
});
|
|
111
122
|
if (result.changedTree)
|
|
112
123
|
anyAttemptChanged = true;
|
|
@@ -123,6 +134,21 @@ export async function runEpics(config) {
|
|
|
123
134
|
ok = false; // fail-soft: unverifiable ⇒ not accepted ⇒ retry
|
|
124
135
|
}
|
|
125
136
|
}
|
|
137
|
+
// P1 contract-lint: even an accepted epic must CONFORM to the shared
|
|
138
|
+
// contract, or the assembled whole won't integrate. Violations fail
|
|
139
|
+
// the epic so it re-runs against the contract.
|
|
140
|
+
if (ok && contract && config.contractLint) {
|
|
141
|
+
try {
|
|
142
|
+
const violations = await config.contractLint(epic, result, contract);
|
|
143
|
+
if (violations.length > 0) {
|
|
144
|
+
ok = false;
|
|
145
|
+
result.summary += ` [contract violations: ${violations.slice(0, 5).join('; ')}]`;
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
catch {
|
|
149
|
+
/* fail-soft: a broken linter never blocks a real delivery */
|
|
150
|
+
}
|
|
151
|
+
}
|
|
126
152
|
accepted = ok;
|
|
127
153
|
}
|
|
128
154
|
if (!accepted) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"epic-controller.js","sourceRoot":"","sources":["../../src/delivery/epic-controller.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAGH,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"epic-controller.js","sourceRoot":"","sources":["../../src/delivery/epic-controller.ts"],"names":[],"mappings":"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"}
|
|
@@ -105,6 +105,14 @@ export interface EpicMissionDeps {
|
|
|
105
105
|
}) => void;
|
|
106
106
|
/** Currently locked contract files (read view, refreshed per use). */
|
|
107
107
|
lockedContracts: () => string[];
|
|
108
|
+
/**
|
|
109
|
+
* P1: read the CONTENTS of the currently-locked contract files, concatenated,
|
|
110
|
+
* for verbatim injection into every later epic's prompt. The existing
|
|
111
|
+
* mechanism only names the locked paths and relies on the model to read them;
|
|
112
|
+
* injecting the actual signatures is what stops fresh-context epics from
|
|
113
|
+
* re-inventing a divergent CONFIG shape / module API. Null when none locked.
|
|
114
|
+
*/
|
|
115
|
+
readContractFiles?: () => string | null;
|
|
108
116
|
/** Lock an accepted contracts epic's files; returns what was newly locked. */
|
|
109
117
|
lockContracts: (files: string[]) => string[];
|
|
110
118
|
/** Epic-controller tuning (caller resolves env). */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"epic-mission.d.ts","sourceRoot":"","sources":["../../src/delivery/epic-mission.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"epic-mission.d.ts","sourceRoot":"","sources":["../../src/delivery/epic-mission.ts"],"names":[],"mappings":"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"}
|
|
@@ -160,6 +160,8 @@ export async function runEpicMission(deps) {
|
|
|
160
160
|
initialPriorSummaries: deps.initialPriorSummaries,
|
|
161
161
|
initialDone: deps.initialDone,
|
|
162
162
|
onProgress: deps.persistCompleted,
|
|
163
|
+
// P1: carry the locked contract files' CONTENTS verbatim into every epic.
|
|
164
|
+
...(deps.readContractFiles ? { readContract: deps.readContractFiles } : {}),
|
|
163
165
|
// Re-decompose a failed epic into sub-epics. Fires on context-budget
|
|
164
166
|
// exhaustion (rail auto-size) and, under splitOnAnyFailure, on any
|
|
165
167
|
// exhausted-attempts failure (auto-escalation). Always provided so the
|
|
@@ -254,8 +256,15 @@ export async function runEpicMission(deps) {
|
|
|
254
256
|
: fillsScaffold
|
|
255
257
|
? '\n\nThis is a FILL epic: the skeleton already exists with correct signatures. IMPLEMENT the stub bodies (todo!()/NotImplementedError/TODO throws) — do NOT change any existing signature, rename anything, or restructure modules. When you finish, no stub markers should remain in the files this epic fills.'
|
|
256
258
|
: '';
|
|
259
|
+
// P1: inject the locked contracts VERBATIM (signatures, CONFIG shape) so a
|
|
260
|
+
// fresh-context epic builds against the EXACT shared surface rather than
|
|
261
|
+
// re-inventing a divergent one. Skipped for the contracts epic itself
|
|
262
|
+
// (it is authoring them) and capped so the prompt stays bounded.
|
|
263
|
+
const contractBody = !epic.contracts && ctx.contract
|
|
264
|
+
? `\n\nSHARED CONTRACT — the locked contract files, VERBATIM. Build against these EXACT names, shapes and signatures; do NOT invent different ones:\n${ctx.contract.slice(0, 6000)}`
|
|
265
|
+
: '';
|
|
257
266
|
const scoped = `OVERALL MISSION (context): ${deps.instruction.slice(0, 300)}\n\n` +
|
|
258
|
-
`EPIC — ${epic.title}:\n${epic.goal}${priors}${retry}${contractsNote}${scaffoldNote}\n\n` +
|
|
267
|
+
`EPIC — ${epic.title}:\n${epic.goal}${priors}${retry}${contractsNote}${scaffoldNote}${contractBody}\n\n` +
|
|
259
268
|
'Deliver ONLY this epic. All gates must pass at the end.';
|
|
260
269
|
note(`▶ epic ${epic.id} (attempt ${ctx.attempt}): ${epic.title}`);
|
|
261
270
|
// Grade the epic's DELIVERABLE, not the process prompt: the scoped
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"epic-mission.js","sourceRoot":"","sources":["../../src/delivery/epic-mission.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"epic-mission.js","sourceRoot":"","sources":["../../src/delivery/epic-mission.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
Binary file
|
|
Binary file
|
|
@@ -73,8 +73,12 @@ def _autoroute_enabled() -> bool:
|
|
|
73
73
|
|
|
74
74
|
|
|
75
75
|
def decide(out: dict, tool: str, args: dict, autoroute_on: bool, seen_files: set,
|
|
76
|
-
replay_on: bool = True) -> dict:
|
|
77
|
-
"""Pure decision: what message to show, whether to spawn, and the intent.
|
|
76
|
+
replay_on: bool = True, deliver_inflight: bool = False) -> dict:
|
|
77
|
+
"""Pure decision: what message to show, whether to spawn, and the intent.
|
|
78
|
+
|
|
79
|
+
P0 single-flight: when `deliver_inflight` is true (a live, non-wedged
|
|
80
|
+
`uap deliver` already holds the project lock), never spawn a duplicate —
|
|
81
|
+
the intent is still recorded so the running mission can pick it up."""
|
|
78
82
|
reason = out.get("reason", "")
|
|
79
83
|
route = out.get("route")
|
|
80
84
|
hint = out.get("deliverHint") or ""
|
|
@@ -161,12 +165,16 @@ def decide(out: dict, tool: str, args: dict, autoroute_on: bool, seen_files: set
|
|
|
161
165
|
# fall back to the model-spawn autoroute (UAP_DELIVER_PENDING_REPLAY=off).
|
|
162
166
|
unseen = bool(dedup_key and dedup_key not in seen_files)
|
|
163
167
|
replay = bool(replayable and replay_on and unseen)
|
|
164
|
-
|
|
168
|
+
# P0 single-flight: a live, non-wedged deliver already owns this project —
|
|
169
|
+
# do NOT spawn another (the pile-up of stuck duplicate runs came from here).
|
|
170
|
+
spawn = bool(autoroute_on and not replay and hint and unseen and not deliver_inflight)
|
|
165
171
|
message = reason
|
|
166
172
|
if replay:
|
|
167
173
|
message = reason + " [intent recorded to .uap/pending-deliver.jsonl — auto-applying to disk via deterministic `uap deliver --pending` replay]"
|
|
168
174
|
elif spawn:
|
|
169
175
|
message = reason + " [auto-routed to `uap deliver` — running in the background]"
|
|
176
|
+
elif deliver_inflight and hint and unseen:
|
|
177
|
+
message = reason + " [a `uap deliver` run is already in progress for this project — NOT spawning a duplicate; intent recorded to .uap/pending-deliver.jsonl for it to pick up]"
|
|
170
178
|
elif dedup_key and dedup_key in seen_files and (replayable or autoroute_on):
|
|
171
179
|
message = reason + " [already auto-routed/applied for this change — see .uap/autoroute.log / pending-deliver.jsonl]"
|
|
172
180
|
elif file_path:
|
|
@@ -224,6 +232,40 @@ def _pid_alive(pid: int) -> bool:
|
|
|
224
232
|
return False
|
|
225
233
|
|
|
226
234
|
|
|
235
|
+
def _deliver_wedge_timeout() -> int:
|
|
236
|
+
raw = os.environ.get("UAP_DELIVER_WEDGE_TIMEOUT")
|
|
237
|
+
try:
|
|
238
|
+
if raw is not None:
|
|
239
|
+
v = int(float(raw))
|
|
240
|
+
if v > 0:
|
|
241
|
+
return v
|
|
242
|
+
except Exception:
|
|
243
|
+
pass
|
|
244
|
+
return 600
|
|
245
|
+
|
|
246
|
+
|
|
247
|
+
def _deliver_inflight(root: Path) -> bool:
|
|
248
|
+
"""True when a `uap deliver` run already holds the project lock and is NOT
|
|
249
|
+
wedged (P0 single-flight). Shared contract with src/cli/deliver.ts:
|
|
250
|
+
`.uap/deliver.lock` first field = holder PID; `.uap/deliver.heartbeat` =
|
|
251
|
+
unix-epoch seconds refreshed each turn. A live holder with a fresh (or
|
|
252
|
+
missing/starting) heartbeat is inflight; a live holder whose heartbeat is
|
|
253
|
+
older than the wedge timeout is treated as dead so autoroute may proceed."""
|
|
254
|
+
try:
|
|
255
|
+
pid = int((root / UAP_DIR / "deliver.lock").read_text().split("|")[0].strip())
|
|
256
|
+
except Exception:
|
|
257
|
+
return False
|
|
258
|
+
if not _pid_alive(pid):
|
|
259
|
+
return False
|
|
260
|
+
try:
|
|
261
|
+
hb = int((root / UAP_DIR / "deliver.heartbeat").read_text().strip())
|
|
262
|
+
if (int(time.time()) - hb) > _deliver_wedge_timeout():
|
|
263
|
+
return False # wedged holder — not really inflight
|
|
264
|
+
except Exception:
|
|
265
|
+
pass # no/unreadable heartbeat -> a live PID counts as inflight
|
|
266
|
+
return True
|
|
267
|
+
|
|
268
|
+
|
|
227
269
|
def _acquire_slot(root: Path) -> bool:
|
|
228
270
|
"""One in-flight autoroute deliver per repo: a lockfile holding the child
|
|
229
271
|
pid. Stale locks (dead pid) are reclaimed. Best-effort; failure = no slot."""
|
|
@@ -398,7 +440,8 @@ def main() -> None:
|
|
|
398
440
|
args = {}
|
|
399
441
|
|
|
400
442
|
root = Path(ns.root)
|
|
401
|
-
d = decide(out, ns.tool, args, _autoroute_enabled(), _load_seen(root), _replay_enabled()
|
|
443
|
+
d = decide(out, ns.tool, args, _autoroute_enabled(), _load_seen(root), _replay_enabled(),
|
|
444
|
+
_deliver_inflight(root))
|
|
402
445
|
|
|
403
446
|
if d["intent"] is not None:
|
|
404
447
|
try:
|
|
Binary file
|
|
@@ -232,5 +232,58 @@ class CoherentMissionRouteTest(unittest.TestCase):
|
|
|
232
232
|
self.assertEqual(mod._recover_mission(Path(td)), "")
|
|
233
233
|
|
|
234
234
|
|
|
235
|
+
class DeliverSingleFlightTest(unittest.TestCase):
|
|
236
|
+
"""P0: autoroute must NOT spawn a duplicate when a live deliver is inflight."""
|
|
237
|
+
|
|
238
|
+
def _root(self) -> Path:
|
|
239
|
+
d = tempfile.mkdtemp()
|
|
240
|
+
(Path(d) / ".uap").mkdir(parents=True, exist_ok=True)
|
|
241
|
+
return Path(d)
|
|
242
|
+
|
|
243
|
+
def test_no_lock_is_not_inflight(self):
|
|
244
|
+
self.assertFalse(mod._deliver_inflight(self._root()))
|
|
245
|
+
|
|
246
|
+
def test_live_lock_fresh_heartbeat_is_inflight(self):
|
|
247
|
+
import time
|
|
248
|
+
r = self._root()
|
|
249
|
+
(r / ".uap" / "deliver.lock").write_text(f"{os.getppid()}|now") # live foreign pid
|
|
250
|
+
(r / ".uap" / "deliver.heartbeat").write_text(str(int(time.time())))
|
|
251
|
+
self.assertTrue(mod._deliver_inflight(r))
|
|
252
|
+
|
|
253
|
+
def test_live_lock_missing_heartbeat_is_inflight(self):
|
|
254
|
+
# Documented branch: a live holder with NO heartbeat yet (just starting
|
|
255
|
+
# up) counts as inflight so a duplicate is not spawned during startup.
|
|
256
|
+
r = self._root()
|
|
257
|
+
(r / ".uap" / "deliver.lock").write_text(f"{os.getppid()}|now") # no heartbeat file
|
|
258
|
+
self.assertTrue(mod._deliver_inflight(r))
|
|
259
|
+
|
|
260
|
+
def test_live_lock_corrupt_heartbeat_is_inflight(self):
|
|
261
|
+
# A non-integer heartbeat is unreadable -> fall through to live-PID = inflight.
|
|
262
|
+
r = self._root()
|
|
263
|
+
(r / ".uap" / "deliver.lock").write_text(f"{os.getppid()}|now")
|
|
264
|
+
(r / ".uap" / "deliver.heartbeat").write_text("not-a-number")
|
|
265
|
+
self.assertTrue(mod._deliver_inflight(r))
|
|
266
|
+
|
|
267
|
+
def test_live_lock_stale_heartbeat_is_not_inflight(self):
|
|
268
|
+
import time
|
|
269
|
+
r = self._root()
|
|
270
|
+
(r / ".uap" / "deliver.lock").write_text(f"{os.getppid()}|now")
|
|
271
|
+
(r / ".uap" / "deliver.heartbeat").write_text(str(int(time.time()) - 700)) # wedged
|
|
272
|
+
self.assertFalse(mod._deliver_inflight(r))
|
|
273
|
+
|
|
274
|
+
def test_dead_pid_lock_is_not_inflight(self):
|
|
275
|
+
r = self._root()
|
|
276
|
+
(r / ".uap" / "deliver.lock").write_text("2147483646|old") # not a live pid
|
|
277
|
+
self.assertFalse(mod._deliver_inflight(r))
|
|
278
|
+
|
|
279
|
+
def test_decide_suppresses_spawn_when_inflight(self):
|
|
280
|
+
# replay_on=False forces the model-spawn path; inflight must still block it.
|
|
281
|
+
spawned = mod.decide(BLOCK_OUT, "Write", ARGS, True, set(), False, False)
|
|
282
|
+
self.assertTrue(spawned["spawn"])
|
|
283
|
+
held = mod.decide(BLOCK_OUT, "Write", ARGS, True, set(), False, True)
|
|
284
|
+
self.assertFalse(held["spawn"])
|
|
285
|
+
self.assertIn("already in progress", held["message"])
|
|
286
|
+
|
|
287
|
+
|
|
235
288
|
if __name__ == "__main__":
|
|
236
289
|
unittest.main()
|