@miller-tech/uap 1.30.0 → 1.31.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/README.md +119 -2
- package/dist/.tsbuildinfo +1 -1
- package/dist/bin/cli.js +6 -0
- package/dist/bin/cli.js.map +1 -1
- package/dist/cli/deliver.d.ts +12 -0
- package/dist/cli/deliver.d.ts.map +1 -1
- package/dist/cli/deliver.js +144 -9
- package/dist/cli/deliver.js.map +1 -1
- package/dist/coordination/deploy-batcher.d.ts.map +1 -1
- package/dist/coordination/deploy-batcher.js +9 -3
- package/dist/coordination/deploy-batcher.js.map +1 -1
- package/dist/delivery/applier.d.ts.map +1 -1
- package/dist/delivery/applier.js +4 -0
- package/dist/delivery/applier.js.map +1 -1
- package/dist/delivery/convergence-loop.d.ts +7 -0
- package/dist/delivery/convergence-loop.d.ts.map +1 -1
- package/dist/delivery/convergence-loop.js +42 -0
- package/dist/delivery/convergence-loop.js.map +1 -1
- package/dist/delivery/halo-trace.d.ts +29 -0
- package/dist/delivery/halo-trace.d.ts.map +1 -0
- package/dist/delivery/halo-trace.js +88 -0
- package/dist/delivery/halo-trace.js.map +1 -0
- package/dist/delivery/ideation.d.ts +36 -0
- package/dist/delivery/ideation.d.ts.map +1 -0
- package/dist/delivery/ideation.js +109 -0
- package/dist/delivery/ideation.js.map +1 -0
- package/dist/delivery/index.d.ts +4 -1
- package/dist/delivery/index.d.ts.map +1 -1
- package/dist/delivery/index.js +4 -1
- package/dist/delivery/index.js.map +1 -1
- package/dist/delivery/run-coordinator.d.ts +48 -0
- package/dist/delivery/run-coordinator.d.ts.map +1 -0
- package/dist/delivery/run-coordinator.js +132 -0
- package/dist/delivery/run-coordinator.js.map +1 -0
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/delivery/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EACL,eAAe,EACf,oBAAoB,EACpB,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EACtB,KAAK,cAAc,EACnB,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EACvB,KAAK,eAAe,EACpB,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,WAAW,EAChB,KAAK,gBAAgB,EACrB,KAAK,aAAa,EAClB,KAAK,aAAa,GACnB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,0BAA0B,EAC1B,uBAAuB,EACvB,KAAK,oBAAoB,EACzB,KAAK,gBAAgB,EACrB,KAAK,oBAAoB,EACzB,KAAK,cAAc,GACpB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,qBAAqB,EACrB,iBAAiB,EACjB,eAAe,EACf,eAAe,EACf,mBAAmB,EACnB,yBAAyB,EACzB,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,iBAAiB,EACtB,KAAK,uBAAuB,GAC7B,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,gBAAgB,EAChB,sBAAsB,EACtB,cAAc,EACd,KAAK,eAAe,EACpB,KAAK,iBAAiB,EACtB,KAAK,cAAc,EACnB,KAAK,YAAY,GAClB,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,gBAAgB,EAChB,WAAW,EACX,KAAK,KAAK,EACV,KAAK,cAAc,EACnB,KAAK,YAAY,GAClB,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,iBAAiB,EACjB,YAAY,EACZ,KAAK,MAAM,EACX,KAAK,QAAQ,EACb,KAAK,aAAa,GACnB,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,WAAW,EACX,SAAS,EACT,OAAO,EACP,cAAc,EACd,KAAK,QAAQ,EACb,KAAK,UAAU,EACf,KAAK,iBAAiB,EACtB,KAAK,YAAY,EACjB,KAAK,aAAa,GACnB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,eAAe,EACf,2BAA2B,EAC3B,eAAe,EACf,KAAK,OAAO,EACZ,KAAK,WAAW,EAChB,KAAK,SAAS,EACd,KAAK,eAAe,GACrB,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,kBAAkB,EAAE,KAAK,yBAAyB,EAAE,MAAM,mCAAmC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/delivery/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EACL,eAAe,EACf,qBAAqB,EACrB,oBAAoB,EACpB,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EACtB,KAAK,cAAc,EACnB,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EACvB,KAAK,eAAe,EACpB,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,WAAW,EAChB,KAAK,gBAAgB,EACrB,KAAK,aAAa,EAClB,KAAK,aAAa,GACnB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,0BAA0B,EAC1B,uBAAuB,EACvB,KAAK,oBAAoB,EACzB,KAAK,gBAAgB,EACrB,KAAK,oBAAoB,EACzB,KAAK,cAAc,GACpB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,qBAAqB,EACrB,iBAAiB,EACjB,eAAe,EACf,eAAe,EACf,mBAAmB,EACnB,yBAAyB,EACzB,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,iBAAiB,EACtB,KAAK,uBAAuB,GAC7B,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,gBAAgB,EAChB,sBAAsB,EACtB,cAAc,EACd,KAAK,eAAe,EACpB,KAAK,iBAAiB,EACtB,KAAK,cAAc,EACnB,KAAK,YAAY,GAClB,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,gBAAgB,EAChB,WAAW,EACX,KAAK,KAAK,EACV,KAAK,cAAc,EACnB,KAAK,YAAY,GAClB,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,iBAAiB,EACjB,YAAY,EACZ,KAAK,MAAM,EACX,KAAK,QAAQ,EACb,KAAK,aAAa,GACnB,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,WAAW,EACX,SAAS,EACT,OAAO,EACP,cAAc,EACd,KAAK,QAAQ,EACb,KAAK,UAAU,EACf,KAAK,iBAAiB,EACtB,KAAK,YAAY,EACjB,KAAK,aAAa,GACnB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,eAAe,EACf,2BAA2B,EAC3B,eAAe,EACf,KAAK,OAAO,EACZ,KAAK,WAAW,EAChB,KAAK,SAAS,EACd,KAAK,eAAe,GACrB,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,qBAAqB,EACrB,cAAc,EACd,cAAc,EACd,KAAK,eAAe,GACrB,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,wBAAwB,EACxB,KAAK,kBAAkB,EACvB,KAAK,yBAAyB,GAC/B,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,oBAAoB,EACpB,mBAAmB,EACnB,KAAK,cAAc,EACnB,KAAK,qBAAqB,GAC3B,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,kBAAkB,EAAE,KAAK,yBAAyB,EAAE,MAAM,mCAAmC,CAAC"}
|
package/dist/delivery/index.js
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* iterations against the project's real completion gates until delivery
|
|
6
6
|
* is achieved.
|
|
7
7
|
*/
|
|
8
|
-
export { ConvergenceLoop, defaultPromptBuilder, } from './convergence-loop.js';
|
|
8
|
+
export { ConvergenceLoop, composeIterationHooks, defaultPromptBuilder, } from './convergence-loop.js';
|
|
9
9
|
export { createEscalationController, defaultEscalationLadder, } from './escalation.js';
|
|
10
10
|
export { InMemoryPracticeStore, FilePracticeStore, extractKeywords, distillPractice, defaultPracticePath, retrievePracticesSemantic, } from './practice.js';
|
|
11
11
|
export { exploreAndCommit, DEFAULT_STRATEGY_SEEDS, MAX_CANDIDATES, } from './explorer.js';
|
|
@@ -13,5 +13,8 @@ export { createModelJudge, extractJson, } from './judge.js';
|
|
|
13
13
|
export { createModelCritic, parseFixList, } from './critic.js';
|
|
14
14
|
export { detectRungs, runLadder, runRung, formatFeedback, } from './verifier-ladder.js';
|
|
15
15
|
export { applyFileBlocks, applyFileBlocksWithRollback, parseFileBlocks, } from './applier.js';
|
|
16
|
+
export { generateStrategySeeds, parseSeedArray, seedsFromIdeas, } from './ideation.js';
|
|
17
|
+
export { createHaloDeliveryTracer, } from './halo-trace.js';
|
|
18
|
+
export { createRunCoordinator, collectAppliedFiles, } from './run-coordinator.js';
|
|
16
19
|
export { OpenAICompatClient } from '../models/openai-compat-client.js';
|
|
17
20
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/delivery/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EACL,eAAe,EACf,oBAAoB,GAarB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,0BAA0B,EAC1B,uBAAuB,GAKxB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,qBAAqB,EACrB,iBAAiB,EACjB,eAAe,EACf,eAAe,EACf,mBAAmB,EACnB,yBAAyB,GAM1B,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,gBAAgB,EAChB,sBAAsB,EACtB,cAAc,GAKf,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,gBAAgB,EAChB,WAAW,GAIZ,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,iBAAiB,EACjB,YAAY,GAIb,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,WAAW,EACX,SAAS,EACT,OAAO,EACP,cAAc,GAMf,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,eAAe,EACf,2BAA2B,EAC3B,eAAe,GAKhB,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,kBAAkB,EAAkC,MAAM,mCAAmC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/delivery/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EACL,eAAe,EACf,qBAAqB,EACrB,oBAAoB,GAarB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,0BAA0B,EAC1B,uBAAuB,GAKxB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,qBAAqB,EACrB,iBAAiB,EACjB,eAAe,EACf,eAAe,EACf,mBAAmB,EACnB,yBAAyB,GAM1B,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,gBAAgB,EAChB,sBAAsB,EACtB,cAAc,GAKf,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,gBAAgB,EAChB,WAAW,GAIZ,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,iBAAiB,EACjB,YAAY,GAIb,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,WAAW,EACX,SAAS,EACT,OAAO,EACP,cAAc,GAMf,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,eAAe,EACf,2BAA2B,EAC3B,eAAe,GAKhB,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,qBAAqB,EACrB,cAAc,EACd,cAAc,GAEf,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,wBAAwB,GAGzB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,oBAAoB,EACpB,mBAAmB,GAGpB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,kBAAkB,EAAkC,MAAM,mCAAmC,CAAC"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Delivery Run Coordinator — `uap agent` + `uap deploy` integration
|
|
3
|
+
*
|
|
4
|
+
* Makes a delivery run a first-class citizen of the multi-agent coordination
|
|
5
|
+
* layer:
|
|
6
|
+
*
|
|
7
|
+
* - registers an ephemeral agent for the run (visible in `uap agent status`)
|
|
8
|
+
* - announces work intent on the project root (overlap detection warns
|
|
9
|
+
* other agents — and this run — about concurrent edits)
|
|
10
|
+
* - heartbeats every loop turn so the run never shows as stale
|
|
11
|
+
* - marks work complete and deregisters when the loop finishes
|
|
12
|
+
* - on success, can queue a commit of the applied files into the deploy
|
|
13
|
+
* batcher (`uap deploy status` / `uap deploy flush`)
|
|
14
|
+
*
|
|
15
|
+
* Everything is fail-soft via lazy imports: a missing/locked coordination DB
|
|
16
|
+
* degrades to a no-op coordinator rather than blocking delivery.
|
|
17
|
+
*/
|
|
18
|
+
import type { DeliveryResult, IterationRecord } from './convergence-loop.js';
|
|
19
|
+
export interface RunCoordinator {
|
|
20
|
+
/** Agent id registered for this run; null when coordination is degraded. */
|
|
21
|
+
readonly agentId: string | null;
|
|
22
|
+
/** Overlap warnings returned by the work announcement (may be empty). */
|
|
23
|
+
readonly overlapWarnings: string[];
|
|
24
|
+
/** Heartbeat + status update per loop turn (wire into onIteration). */
|
|
25
|
+
onIteration(record: IterationRecord): void;
|
|
26
|
+
/** Complete the announced work and deregister the agent. */
|
|
27
|
+
finish(result: DeliveryResult): Promise<void>;
|
|
28
|
+
/** Queue a commit of the run's applied files into the deploy batcher. */
|
|
29
|
+
queueDeploy(result: DeliveryResult, message: string): Promise<number | null>;
|
|
30
|
+
}
|
|
31
|
+
export interface RunCoordinatorOptions {
|
|
32
|
+
instruction: string;
|
|
33
|
+
projectRoot: string;
|
|
34
|
+
modelId: string;
|
|
35
|
+
/** Estimated minutes for the announcement (default 15) */
|
|
36
|
+
estimatedMinutes?: number;
|
|
37
|
+
/** Coordination DB override (tests); defaults to the shared coordination DB */
|
|
38
|
+
dbPath?: string;
|
|
39
|
+
}
|
|
40
|
+
/** All files the loop applied across its iteration history, deduplicated. */
|
|
41
|
+
export declare function collectAppliedFiles(result: DeliveryResult): string[];
|
|
42
|
+
/**
|
|
43
|
+
* Register this delivery run with the coordination service and announce its
|
|
44
|
+
* work. Returns a no-op coordinator when the coordination layer is
|
|
45
|
+
* unavailable — delivery must never fail because coordination did.
|
|
46
|
+
*/
|
|
47
|
+
export declare function createRunCoordinator(options: RunCoordinatorOptions): Promise<RunCoordinator>;
|
|
48
|
+
//# sourceMappingURL=run-coordinator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-coordinator.d.ts","sourceRoot":"","sources":["../../src/delivery/run-coordinator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAE7E,MAAM,WAAW,cAAc;IAC7B,4EAA4E;IAC5E,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,yEAAyE;IACzE,QAAQ,CAAC,eAAe,EAAE,MAAM,EAAE,CAAC;IACnC,uEAAuE;IACvE,WAAW,CAAC,MAAM,EAAE,eAAe,GAAG,IAAI,CAAC;IAC3C,4DAA4D;IAC5D,MAAM,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9C,yEAAyE;IACzE,WAAW,CAAC,MAAM,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;CAC9E;AAED,MAAM,WAAW,qBAAqB;IACpC,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,0DAA0D;IAC1D,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,+EAA+E;IAC/E,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAUD,6EAA6E;AAC7E,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,EAAE,CAMpE;AAED;;;;GAIG;AACH,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,qBAAqB,GAC7B,OAAO,CAAC,cAAc,CAAC,CA+FzB"}
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Delivery Run Coordinator — `uap agent` + `uap deploy` integration
|
|
3
|
+
*
|
|
4
|
+
* Makes a delivery run a first-class citizen of the multi-agent coordination
|
|
5
|
+
* layer:
|
|
6
|
+
*
|
|
7
|
+
* - registers an ephemeral agent for the run (visible in `uap agent status`)
|
|
8
|
+
* - announces work intent on the project root (overlap detection warns
|
|
9
|
+
* other agents — and this run — about concurrent edits)
|
|
10
|
+
* - heartbeats every loop turn so the run never shows as stale
|
|
11
|
+
* - marks work complete and deregisters when the loop finishes
|
|
12
|
+
* - on success, can queue a commit of the applied files into the deploy
|
|
13
|
+
* batcher (`uap deploy status` / `uap deploy flush`)
|
|
14
|
+
*
|
|
15
|
+
* Everything is fail-soft via lazy imports: a missing/locked coordination DB
|
|
16
|
+
* degrades to a no-op coordinator rather than blocking delivery.
|
|
17
|
+
*/
|
|
18
|
+
const NOOP = {
|
|
19
|
+
agentId: null,
|
|
20
|
+
overlapWarnings: [],
|
|
21
|
+
onIteration: () => undefined,
|
|
22
|
+
finish: async () => undefined,
|
|
23
|
+
queueDeploy: async () => null,
|
|
24
|
+
};
|
|
25
|
+
/** All files the loop applied across its iteration history, deduplicated. */
|
|
26
|
+
export function collectAppliedFiles(result) {
|
|
27
|
+
const files = new Set();
|
|
28
|
+
for (const record of result.history) {
|
|
29
|
+
for (const f of record.filesApplied)
|
|
30
|
+
files.add(f);
|
|
31
|
+
}
|
|
32
|
+
return [...files];
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Register this delivery run with the coordination service and announce its
|
|
36
|
+
* work. Returns a no-op coordinator when the coordination layer is
|
|
37
|
+
* unavailable — delivery must never fail because coordination did.
|
|
38
|
+
*/
|
|
39
|
+
export async function createRunCoordinator(options) {
|
|
40
|
+
let registeredId = null;
|
|
41
|
+
let registeredService = null;
|
|
42
|
+
try {
|
|
43
|
+
const { CoordinationService } = await import('../coordination/service.js');
|
|
44
|
+
const service = new CoordinationService(options.dbPath ? { dbPath: options.dbPath } : {});
|
|
45
|
+
const agentId = service.register(`uap-deliver-${options.modelId}`, [
|
|
46
|
+
'delivery',
|
|
47
|
+
'convergence-loop',
|
|
48
|
+
]);
|
|
49
|
+
registeredId = agentId;
|
|
50
|
+
registeredService = service;
|
|
51
|
+
service.updateStatus(agentId, 'active', options.instruction.slice(0, 200));
|
|
52
|
+
const { overlaps } = service.announceWork(agentId, options.projectRoot, 'editing', {
|
|
53
|
+
description: `uap deliver: ${options.instruction.slice(0, 200)}`,
|
|
54
|
+
estimatedMinutes: options.estimatedMinutes ?? 15,
|
|
55
|
+
});
|
|
56
|
+
const overlapWarnings = overlaps.map((o) => {
|
|
57
|
+
const who = o.agents.map((a) => `${a.name} (${a.intentType})`).join(', ');
|
|
58
|
+
return `${o.resource}: ${who} — ${o.conflictRisk} risk. ${o.suggestion}`;
|
|
59
|
+
});
|
|
60
|
+
// A single loop turn (model call + full gate run) routinely exceeds the
|
|
61
|
+
// stale-agent cutoff, so heartbeat on a timer too — not just per turn —
|
|
62
|
+
// or concurrent cleanup would mark this run stale mid-turn. unref() so
|
|
63
|
+
// the timer never keeps the process alive.
|
|
64
|
+
const heartbeatTimer = setInterval(() => {
|
|
65
|
+
try {
|
|
66
|
+
service.heartbeat(agentId);
|
|
67
|
+
}
|
|
68
|
+
catch {
|
|
69
|
+
// Heartbeat is best-effort
|
|
70
|
+
}
|
|
71
|
+
}, 30_000);
|
|
72
|
+
heartbeatTimer.unref?.();
|
|
73
|
+
return {
|
|
74
|
+
agentId,
|
|
75
|
+
overlapWarnings,
|
|
76
|
+
onIteration(record) {
|
|
77
|
+
try {
|
|
78
|
+
service.heartbeat(agentId);
|
|
79
|
+
service.updateStatus(agentId, 'active', `turn ${record.turn}: ${Math.round(record.score * 100)}% of gates`);
|
|
80
|
+
}
|
|
81
|
+
catch {
|
|
82
|
+
// Heartbeat is best-effort
|
|
83
|
+
}
|
|
84
|
+
},
|
|
85
|
+
async finish(result) {
|
|
86
|
+
clearInterval(heartbeatTimer);
|
|
87
|
+
try {
|
|
88
|
+
service.completeWork(agentId, options.projectRoot);
|
|
89
|
+
service.updateStatus(agentId, 'completed', result.success ? `delivered in ${result.turns} turn(s)` : 'not delivered');
|
|
90
|
+
service.deregister(agentId);
|
|
91
|
+
}
|
|
92
|
+
catch {
|
|
93
|
+
// Cleanup is best-effort
|
|
94
|
+
}
|
|
95
|
+
},
|
|
96
|
+
async queueDeploy(result, message) {
|
|
97
|
+
if (!result.success)
|
|
98
|
+
return null;
|
|
99
|
+
try {
|
|
100
|
+
const { DeployBatcher } = await import('../coordination/deploy-batcher.js');
|
|
101
|
+
const batcher = new DeployBatcher(options.dbPath ? { dbPath: options.dbPath } : {});
|
|
102
|
+
const files = collectAppliedFiles(result);
|
|
103
|
+
if (files.length === 0)
|
|
104
|
+
return null;
|
|
105
|
+
return await batcher.queue(agentId, 'commit', options.projectRoot, {
|
|
106
|
+
message,
|
|
107
|
+
files,
|
|
108
|
+
cwd: options.projectRoot,
|
|
109
|
+
source: 'uap-deliver',
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
catch {
|
|
113
|
+
return null;
|
|
114
|
+
}
|
|
115
|
+
},
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
catch {
|
|
119
|
+
// If registration succeeded but a later step threw, don't leak an
|
|
120
|
+
// 'active' phantom agent into the registry.
|
|
121
|
+
if (registeredId && registeredService) {
|
|
122
|
+
try {
|
|
123
|
+
registeredService.deregister(registeredId);
|
|
124
|
+
}
|
|
125
|
+
catch {
|
|
126
|
+
// best-effort
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
return NOOP;
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
//# sourceMappingURL=run-coordinator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-coordinator.js","sourceRoot":"","sources":["../../src/delivery/run-coordinator.ts"],"names":[],"mappings":"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"}
|