agentic-engineering-harness 0.6.13 → 0.6.15
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/agents/outputContracts.d.ts +44 -1
- package/dist/agents/outputContracts.js +12 -2
- package/dist/agents/outputContracts.js.map +1 -1
- package/dist/agents/reviewLifecycle.js +54 -14
- package/dist/agents/reviewLifecycle.js.map +1 -1
- package/dist/agents/waveExecutor.d.ts +2 -13
- package/dist/audit/run.d.ts +7 -0
- package/dist/audit/run.js +198 -32
- package/dist/audit/run.js.map +1 -1
- package/dist/core/run.js +103 -28
- package/dist/core/run.js.map +1 -1
- package/dist/main.js +95 -29
- package/dist/main.js.map +1 -1
- package/dist/operations/artifacts.d.ts +13 -0
- package/dist/operations/artifacts.js +45 -0
- package/dist/operations/artifacts.js.map +1 -0
- package/dist/operations/change.d.ts +11 -0
- package/dist/operations/change.js +144 -0
- package/dist/operations/change.js.map +1 -0
- package/dist/operations/completion.d.ts +4 -1
- package/dist/operations/completion.js +69 -89
- package/dist/operations/completion.js.map +1 -1
- package/dist/operations/controller.d.ts +8 -5
- package/dist/operations/controller.js +270 -131
- package/dist/operations/controller.js.map +1 -1
- package/dist/operations/leadBinding.d.ts +2 -0
- package/dist/operations/leadBinding.js +22 -0
- package/dist/operations/leadBinding.js.map +1 -0
- package/dist/operations/liveness.d.ts +1 -0
- package/dist/operations/liveness.js +2 -0
- package/dist/operations/liveness.js.map +1 -0
- package/dist/operations/livenessV2.d.ts +34 -0
- package/dist/operations/livenessV2.js +339 -0
- package/dist/operations/livenessV2.js.map +1 -0
- package/dist/operations/mcp.d.ts +1 -0
- package/dist/operations/mcp.js +84 -57
- package/dist/operations/mcp.js.map +1 -1
- package/dist/operations/monitorProcess.d.ts +8 -0
- package/dist/operations/monitorProcess.js +33 -0
- package/dist/operations/monitorProcess.js.map +1 -0
- package/dist/operations/portfolio.d.ts +35 -0
- package/dist/operations/portfolio.js +158 -0
- package/dist/operations/portfolio.js.map +1 -0
- package/dist/operations/state.d.ts +174 -17
- package/dist/operations/state.js +178 -163
- package/dist/operations/state.js.map +1 -1
- package/dist/operations/supervisor.d.ts +38 -0
- package/dist/operations/supervisor.js +248 -0
- package/dist/operations/supervisor.js.map +1 -0
- package/dist/operations/wakeBudget.d.ts +15 -0
- package/dist/operations/wakeBudget.js +142 -0
- package/dist/operations/wakeBudget.js.map +1 -0
- package/dist/paseo/launchSpec.d.ts +4 -0
- package/dist/paseo/launchSpec.js +31 -37
- package/dist/paseo/launchSpec.js.map +1 -1
- package/dist/paseo/sdk.d.ts +5 -0
- package/dist/paseo/sdk.js +35 -87
- package/dist/paseo/sdk.js.map +1 -1
- package/dist/paseo/start.d.ts +1 -1
- package/dist/paseo/start.js +38 -87
- package/dist/paseo/start.js.map +1 -1
- package/dist/workers/agentPrompt.d.ts +2 -0
- package/dist/workers/agentPrompt.js +135 -190
- package/dist/workers/agentPrompt.js.map +1 -1
- package/docs/OPERATION_SUPERVISION.md +198 -0
- package/package.json +1 -1
- package/presets/agents/orchestration.jsonc +14 -4
- package/skills/engineering-workflow/SKILL.md +149 -104
package/dist/operations/mcp.js
CHANGED
|
@@ -8,62 +8,64 @@ import { PASEO_BOOTSTRAP_VERSION } from "../paseo/start.js";
|
|
|
8
8
|
import { recordPaseoTrace } from "../paseo/trace.js";
|
|
9
9
|
import { VERSION } from "../version.js";
|
|
10
10
|
import { cancelOperation, startDetachedOperation } from "./controller.js";
|
|
11
|
-
import {
|
|
11
|
+
import { rebindActiveOperationsToLead } from "./leadBinding.js";
|
|
12
|
+
import { spawnOperationMonitor } from "./monitorProcess.js";
|
|
13
|
+
import { loadOperationPortfolio } from "./portfolio.js";
|
|
14
|
+
import { acknowledgeOperationLead, loadOperation } from "./state.js";
|
|
12
15
|
const tools = [
|
|
13
16
|
{
|
|
14
17
|
name: "aeh_operation_start_audit",
|
|
15
|
-
description: "Start a detached
|
|
18
|
+
description: "Start a detached supervised AEH AUDIT. Reviewers are children of an operation supervisor; durable OperationRecord revisions and a detached watchdog keep the initiating lead reachable without busy-polling.",
|
|
16
19
|
inputSchema: {
|
|
17
20
|
type: "object",
|
|
18
21
|
properties: {
|
|
19
|
-
request: { type: "string" },
|
|
20
|
-
|
|
21
|
-
domains: { type: "array", items: { type: "string" } },
|
|
22
|
-
risk: { type: "string", enum: ["low", "medium", "high"] },
|
|
23
|
-
reviewers: { type: "array", items: { type: "string" } }
|
|
22
|
+
request: { type: "string" }, files: { type: "array", items: { type: "string" } }, domains: { type: "array", items: { type: "string" } },
|
|
23
|
+
risk: { type: "string", enum: ["low", "medium", "high"] }, reviewers: { type: "array", items: { type: "string" } }
|
|
24
24
|
},
|
|
25
|
-
required: ["request"],
|
|
26
|
-
additionalProperties: false
|
|
25
|
+
required: ["request"], additionalProperties: false
|
|
27
26
|
}
|
|
28
27
|
},
|
|
29
28
|
{
|
|
30
29
|
name: "aeh_operation_start_run",
|
|
31
|
-
description: "Start detached execution of an already prepared/sealed AEH task
|
|
30
|
+
description: "Start detached supervised execution of an already prepared/sealed AEH task. Planner waves, implementation, review/remediation and delivery share one durable OperationRecord and supervisor lineage.",
|
|
32
31
|
inputSchema: {
|
|
33
32
|
type: "object",
|
|
34
|
-
properties: { taskId: { type: "string" }, profile: { type: "string" } },
|
|
35
|
-
required: ["taskId"],
|
|
36
|
-
additionalProperties: false
|
|
33
|
+
properties: { taskId: { type: "string" }, profile: { type: "string" }, priority: { type: "number", minimum: 0, maximum: 100 } },
|
|
34
|
+
required: ["taskId"], additionalProperties: false
|
|
37
35
|
}
|
|
38
36
|
},
|
|
39
37
|
{
|
|
40
|
-
name: "
|
|
41
|
-
description: "
|
|
38
|
+
name: "aeh_operation_start_change",
|
|
39
|
+
description: "Start a durable CHANGE operation before discovery/triage. AEH keeps explorer/planner/SPEC authoring/QUICK or SPEC implementation/review/delivery in one operation lineage and isolated mutating workspace.",
|
|
42
40
|
inputSchema: {
|
|
43
41
|
type: "object",
|
|
44
|
-
properties: {
|
|
45
|
-
|
|
46
|
-
|
|
42
|
+
properties: {
|
|
43
|
+
request: { type: "string" }, title: { type: "string" }, taskId: { type: "string" }, files: { type: "array", items: { type: "string" } },
|
|
44
|
+
domains: { type: "array", items: { type: "string" } }, acceptance: { type: "array", items: { type: "string" } },
|
|
45
|
+
risk: { type: "string", enum: ["low", "medium", "high"] }, profile: { type: "string" }, priority: { type: "number", minimum: 0, maximum: 100 }
|
|
46
|
+
},
|
|
47
|
+
required: ["request"], additionalProperties: false
|
|
47
48
|
}
|
|
48
49
|
},
|
|
50
|
+
{
|
|
51
|
+
name: "aeh_operation_status",
|
|
52
|
+
description: "Read the authoritative durable OperationRecord including revision, stages, participant progress, supervisor generations and result. When called by the currently bound lead, this consumes and acknowledges the exact revision returned. Use for diagnostics/recovery; normal liveness is event/watchdog driven.",
|
|
53
|
+
inputSchema: { type: "object", properties: { operationId: { type: "string" } }, required: ["operationId"], additionalProperties: false }
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
name: "aeh_operation_portfolio",
|
|
57
|
+
description: "Read the compact project operation portfolio used by the thin lead to manage multiple concurrent supervised operations without multiplexing child timelines.",
|
|
58
|
+
inputSchema: { type: "object", properties: {}, additionalProperties: false }
|
|
59
|
+
},
|
|
49
60
|
{
|
|
50
61
|
name: "aeh_operation_cancel",
|
|
51
|
-
description: "Cancel
|
|
52
|
-
inputSchema: {
|
|
53
|
-
type: "object",
|
|
54
|
-
properties: { operationId: { type: "string" } },
|
|
55
|
-
required: ["operationId"],
|
|
56
|
-
additionalProperties: false
|
|
57
|
-
}
|
|
62
|
+
description: "Cancel an AEH operation and persist authoritative CANCELLED state. The detached liveness monitor owns eventual lead continuation/recovery.",
|
|
63
|
+
inputSchema: { type: "object", properties: { operationId: { type: "string" } }, required: ["operationId"], additionalProperties: false }
|
|
58
64
|
},
|
|
59
65
|
{
|
|
60
66
|
name: "aeh_context_status",
|
|
61
|
-
description: "Read the managed lead's
|
|
62
|
-
inputSchema: {
|
|
63
|
-
type: "object",
|
|
64
|
-
properties: { agentId: { type: "string" } },
|
|
65
|
-
additionalProperties: false
|
|
66
|
-
}
|
|
67
|
+
description: "Read the managed lead's canonical Paseo AgentSnapshot context usage. No agentId is required for a normal managed lead; durable lead-session identity is used when the MCP host does not propagate PASEO_AGENT_ID.",
|
|
68
|
+
inputSchema: { type: "object", properties: { agentId: { type: "string" } }, additionalProperties: false }
|
|
67
69
|
}
|
|
68
70
|
];
|
|
69
71
|
export async function serveOperationMcp() {
|
|
@@ -93,7 +95,7 @@ async function handle(request) {
|
|
|
93
95
|
return {
|
|
94
96
|
protocolVersion: typeof request.params?.protocolVersion === "string" ? request.params.protocolVersion : "2025-06-18",
|
|
95
97
|
capabilities: { tools: {} },
|
|
96
|
-
serverInfo: { name: "aeh-operation-controller", version: "
|
|
98
|
+
serverInfo: { name: "aeh-operation-controller", version: "4" }
|
|
97
99
|
};
|
|
98
100
|
}
|
|
99
101
|
if (request.method === "ping")
|
|
@@ -109,45 +111,68 @@ async function callTool(params) {
|
|
|
109
111
|
const args = object(params.arguments);
|
|
110
112
|
const root = controlRoot();
|
|
111
113
|
if (name === "aeh_operation_start_audit") {
|
|
112
|
-
const identity = await resolveContextAgentIdentity(root);
|
|
113
114
|
const payload = {
|
|
114
|
-
request: string(args.request, "request"),
|
|
115
|
-
files: stringArray(args.files),
|
|
116
|
-
domains: stringArray(args.domains),
|
|
117
|
-
risk: risk(args.risk),
|
|
118
|
-
reviewers: stringArray(args.reviewers)
|
|
115
|
+
request: string(args.request, "request"), files: stringArray(args.files), domains: stringArray(args.domains), risk: risk(args.risk), reviewers: stringArray(args.reviewers)
|
|
119
116
|
};
|
|
120
|
-
await
|
|
121
|
-
return toolResult(await startDetachedOperation(root, "audit", payload, {
|
|
122
|
-
nodeExecutable: process.execPath,
|
|
123
|
-
entryFile: path.resolve(process.argv[1]),
|
|
124
|
-
completionAgentId: identity.agentId,
|
|
125
|
-
completionSource: identity.source
|
|
126
|
-
}));
|
|
117
|
+
return toolResult(await startManagedOperation(root, "audit", payload));
|
|
127
118
|
}
|
|
128
119
|
if (name === "aeh_operation_start_run") {
|
|
129
|
-
const
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
return toolResult(await
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
120
|
+
const payload = {
|
|
121
|
+
taskId: string(args.taskId, "taskId"), profile: optionalString(args.profile), priority: priority(args.priority)
|
|
122
|
+
};
|
|
123
|
+
return toolResult(await startManagedOperation(root, "run", payload));
|
|
124
|
+
}
|
|
125
|
+
if (name === "aeh_operation_start_change") {
|
|
126
|
+
const payload = {
|
|
127
|
+
request: string(args.request, "request"), title: optionalString(args.title), taskId: optionalString(args.taskId), files: stringArray(args.files),
|
|
128
|
+
domains: stringArray(args.domains), acceptance: stringArray(args.acceptance), risk: risk(args.risk), profile: optionalString(args.profile), priority: priority(args.priority)
|
|
129
|
+
};
|
|
130
|
+
return toolResult(await startManagedOperation(root, "change", payload));
|
|
138
131
|
}
|
|
139
132
|
if (name === "aeh_operation_status")
|
|
140
|
-
return toolResult(await
|
|
133
|
+
return toolResult(await readOperationStatus(root, string(args.operationId, "operationId")));
|
|
134
|
+
if (name === "aeh_operation_portfolio") {
|
|
135
|
+
const config = await loadProjectConfig(root);
|
|
136
|
+
return toolResult(await loadOperationPortfolio(root, config.project.name));
|
|
137
|
+
}
|
|
141
138
|
if (name === "aeh_operation_cancel")
|
|
142
139
|
return toolResult(await cancelOperation(root, string(args.operationId, "operationId")));
|
|
143
140
|
if (name === "aeh_context_status") {
|
|
144
141
|
const identity = await resolveContextAgentIdentity(root, optionalString(args.agentId));
|
|
145
142
|
await recordPaseoTrace(root, "context.identity", { agentId: identity.agentId, source: identity.source });
|
|
146
143
|
const config = await loadProjectConfig(root);
|
|
144
|
+
await rebindActiveOperationsToLead(root, config, identity.agentId, identity.source).catch(() => undefined);
|
|
147
145
|
return toolResult(await statusLeadContext(root, config, identity.agentId));
|
|
148
146
|
}
|
|
149
147
|
throw new Error(`Unknown AEH operation tool '${name}'.`);
|
|
150
148
|
}
|
|
149
|
+
export async function readOperationStatus(root, operationId, env = process.env) {
|
|
150
|
+
const operation = await loadOperation(root, operationId);
|
|
151
|
+
const identity = await resolveContextAgentIdentity(root, undefined, env).catch(() => undefined);
|
|
152
|
+
if (!identity || !operation.lead || identity.agentId !== operation.lead.agentId)
|
|
153
|
+
return operation;
|
|
154
|
+
const boundedAgent = env.AEH_MANAGED_AGENT === "1" && env.AEH_INTERACTIVE_LEAD !== "1";
|
|
155
|
+
if (boundedAgent)
|
|
156
|
+
return operation;
|
|
157
|
+
return acknowledgeOperationLead(root, operationId, operation.revision, "operation-status");
|
|
158
|
+
}
|
|
159
|
+
async function startManagedOperation(root, kind, payload) {
|
|
160
|
+
const identity = await resolveContextAgentIdentity(root);
|
|
161
|
+
const config = await loadProjectConfig(root);
|
|
162
|
+
await rebindActiveOperationsToLead(root, config, identity.agentId, identity.source);
|
|
163
|
+
await recordPaseoTrace(root, "operation.lead.target", { kind, agentId: identity.agentId, source: identity.source });
|
|
164
|
+
const record = await startDetachedOperation(root, kind, payload, {
|
|
165
|
+
nodeExecutable: process.execPath,
|
|
166
|
+
entryFile: path.resolve(process.argv[1]),
|
|
167
|
+
completionAgentId: identity.agentId,
|
|
168
|
+
completionSource: identity.source
|
|
169
|
+
});
|
|
170
|
+
await spawnOperationMonitor(root, record, {
|
|
171
|
+
nodeExecutable: process.execPath,
|
|
172
|
+
entryFile: path.resolve(process.argv[1])
|
|
173
|
+
});
|
|
174
|
+
return record;
|
|
175
|
+
}
|
|
151
176
|
export async function resolveContextAgentIdentity(root, explicitAgentId, env = process.env) {
|
|
152
177
|
const explicit = optionalString(explicitAgentId);
|
|
153
178
|
if (explicit)
|
|
@@ -186,9 +211,8 @@ export async function resolveContextAgentIdentity(root, explicitAgentId, env = p
|
|
|
186
211
|
mismatches.push(`project ${projectName ?? "missing"} != ${config.project.name}`);
|
|
187
212
|
if (!agentId)
|
|
188
213
|
mismatches.push("agentId is missing");
|
|
189
|
-
if (mismatches.length)
|
|
214
|
+
if (mismatches.length)
|
|
190
215
|
throw new Error(`AEH refused incompatible durable lead state at ${stateFile}: ${mismatches.join("; ")}. Start a fresh managed lead with aeh start or pass agentId explicitly for diagnostics.`);
|
|
191
|
-
}
|
|
192
216
|
return { agentId: agentId, source: "lead-state" };
|
|
193
217
|
}
|
|
194
218
|
function controlRoot() { return path.resolve(process.env.AEH_CONTROL_ROOT?.trim() || process.cwd()); }
|
|
@@ -204,4 +228,7 @@ function stringArray(value) { if (value === undefined)
|
|
|
204
228
|
function risk(value) { if (value === undefined)
|
|
205
229
|
return undefined; if (value === "low" || value === "medium" || value === "high")
|
|
206
230
|
return value; throw new Error("risk must be low, medium or high."); }
|
|
231
|
+
function priority(value) { if (value === undefined)
|
|
232
|
+
return undefined; if (typeof value !== "number" || !Number.isFinite(value) || value < 0 || value > 100)
|
|
233
|
+
throw new Error("priority must be a number from 0 to 100."); return Math.round(value); }
|
|
207
234
|
//# sourceMappingURL=mcp.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../src/operations/mcp.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../src/operations/mcp.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { spawn } from "node:child_process";
|
|
2
|
+
import { type OperationRecordV2 } from "./state.js";
|
|
3
|
+
export interface SpawnOperationMonitorOptions {
|
|
4
|
+
nodeExecutable: string;
|
|
5
|
+
entryFile: string;
|
|
6
|
+
spawnProcess?: typeof spawn;
|
|
7
|
+
}
|
|
8
|
+
export declare function spawnOperationMonitor(root: string, operation: OperationRecordV2, options: SpawnOperationMonitorOptions): Promise<number | undefined>;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { spawn } from "node:child_process";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import process from "node:process";
|
|
4
|
+
import { loadOperation, patchOperationMetadata } from "./state.js";
|
|
5
|
+
export async function spawnOperationMonitor(root, operation, options) {
|
|
6
|
+
const absoluteRoot = path.resolve(root);
|
|
7
|
+
const spawnProcess = options.spawnProcess ?? spawn;
|
|
8
|
+
let child;
|
|
9
|
+
try {
|
|
10
|
+
child = spawnProcess(options.nodeExecutable, [options.entryFile, "operation", "monitor", operation.id, absoluteRoot], {
|
|
11
|
+
cwd: absoluteRoot,
|
|
12
|
+
detached: true,
|
|
13
|
+
stdio: "ignore",
|
|
14
|
+
env: {
|
|
15
|
+
...process.env,
|
|
16
|
+
AEH_CONTROL_ROOT: absoluteRoot,
|
|
17
|
+
AEH_OPERATION_ID: operation.id,
|
|
18
|
+
AEH_OPERATION_KIND: operation.kind
|
|
19
|
+
}
|
|
20
|
+
});
|
|
21
|
+
child.unref();
|
|
22
|
+
return child.pid;
|
|
23
|
+
}
|
|
24
|
+
catch (error) {
|
|
25
|
+
const current = await loadOperation(absoluteRoot, operation.id).catch(() => operation);
|
|
26
|
+
const warning = `liveness monitor: ${error instanceof Error ? error.message : String(error)}`;
|
|
27
|
+
await patchOperationMetadata(absoluteRoot, operation.id, {
|
|
28
|
+
cleanupWarnings: [...new Set([...(current.cleanupWarnings ?? []), warning])]
|
|
29
|
+
}).catch(() => undefined);
|
|
30
|
+
return undefined;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=monitorProcess.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"monitorProcess.js","sourceRoot":"","sources":["../../src/operations/monitorProcess.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAqB,MAAM,oBAAoB,CAAC;AAC9D,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,OAAO,MAAM,cAAc,CAAC;AACnC,OAAO,EAAE,aAAa,EAAE,sBAAsB,EAA0B,MAAM,YAAY,CAAC;AAQ3F,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,IAAY,EACZ,SAA4B,EAC5B,OAAqC;IAErC,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACxC,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY,IAAI,KAAK,CAAC;IACnD,IAAI,KAAmB,CAAC;IACxB,IAAI,CAAC;QACH,KAAK,GAAG,YAAY,CAClB,OAAO,CAAC,cAAc,EACtB,CAAC,OAAO,CAAC,SAAS,EAAE,WAAW,EAAE,SAAS,EAAE,SAAS,CAAC,EAAE,EAAE,YAAY,CAAC,EACvE;YACE,GAAG,EAAE,YAAY;YACjB,QAAQ,EAAE,IAAI;YACd,KAAK,EAAE,QAAQ;YACf,GAAG,EAAE;gBACH,GAAG,OAAO,CAAC,GAAG;gBACd,gBAAgB,EAAE,YAAY;gBAC9B,gBAAgB,EAAE,SAAS,CAAC,EAAE;gBAC9B,kBAAkB,EAAE,SAAS,CAAC,IAAI;aACnC;SACF,CACF,CAAC;QACF,KAAK,CAAC,KAAK,EAAE,CAAC;QACd,OAAO,KAAK,CAAC,GAAG,CAAC;IACnB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,YAAY,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QACvF,MAAM,OAAO,GAAG,qBAAqB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;QAC9F,MAAM,sBAAsB,CAAC,YAAY,EAAE,SAAS,CAAC,EAAE,EAAE;YACvD,eAAe,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,eAAe,IAAI,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;SAC7E,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QAC1B,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { HarnessProjectConfig } from "../core/types.js";
|
|
2
|
+
import type { OperationRecordV2, OperationStatus } from "./state.js";
|
|
3
|
+
export interface OperationPortfolioEntry {
|
|
4
|
+
operationId: string;
|
|
5
|
+
kind: string;
|
|
6
|
+
status: OperationStatus;
|
|
7
|
+
phase: string;
|
|
8
|
+
workspaceId?: string;
|
|
9
|
+
supervisorAgentId?: string;
|
|
10
|
+
supervisorGeneration?: number;
|
|
11
|
+
revision: number;
|
|
12
|
+
acknowledgedRevision: number;
|
|
13
|
+
priority: number;
|
|
14
|
+
updatedAt: string;
|
|
15
|
+
}
|
|
16
|
+
export interface OperationPortfolio {
|
|
17
|
+
version: 1;
|
|
18
|
+
project: string;
|
|
19
|
+
leadAgentId?: string;
|
|
20
|
+
leadGeneration: number;
|
|
21
|
+
updatedAt: string;
|
|
22
|
+
operations: Record<string, OperationPortfolioEntry>;
|
|
23
|
+
}
|
|
24
|
+
export interface OperationConcurrencyPolicy {
|
|
25
|
+
maxActiveOperations: number;
|
|
26
|
+
maxActiveAgents: number;
|
|
27
|
+
maxAgentsPerOperation: number;
|
|
28
|
+
maxProviderAgents: Record<string, number>;
|
|
29
|
+
}
|
|
30
|
+
export declare function operationPortfolioFile(root: string): string;
|
|
31
|
+
export declare function loadOperationPortfolio(root: string, project?: string): Promise<OperationPortfolio>;
|
|
32
|
+
export declare function syncOperationPortfolio(root: string, project: string, operation: OperationRecordV2): Promise<OperationPortfolio>;
|
|
33
|
+
export declare function bindPortfolioLead(root: string, project: string, agentId: string, generation?: number): Promise<OperationPortfolio>;
|
|
34
|
+
export declare function operationConcurrencyPolicy(config: HarnessProjectConfig): OperationConcurrencyPolicy;
|
|
35
|
+
export declare function assertOperationCapacity(root: string, config: HarnessProjectConfig, requestedPriority?: number): Promise<void>;
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
import fs from "node:fs/promises";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { activeOperationSupervisor } from "./state.js";
|
|
4
|
+
const DEFAULT_POLICY = {
|
|
5
|
+
maxActiveOperations: 5, maxActiveAgents: 16, maxAgentsPerOperation: 8, maxProviderAgents: { codex: 4, opencode: 8 }
|
|
6
|
+
};
|
|
7
|
+
const LOCK_RETRY_MS = 20;
|
|
8
|
+
const LOCK_TIMEOUT_MS = 10_000;
|
|
9
|
+
const STALE_LOCK_MS = 30_000;
|
|
10
|
+
export function operationPortfolioFile(root) { return path.resolve(root, ".harness/operations/portfolio.json"); }
|
|
11
|
+
export async function loadOperationPortfolio(root, project = "unknown") {
|
|
12
|
+
return readPortfolio(operationPortfolioFile(root), project);
|
|
13
|
+
}
|
|
14
|
+
export async function syncOperationPortfolio(root, project, operation) {
|
|
15
|
+
return mutatePortfolio(root, project, (current) => {
|
|
16
|
+
const supervisor = activeOperationSupervisor(operation);
|
|
17
|
+
return {
|
|
18
|
+
...current,
|
|
19
|
+
project,
|
|
20
|
+
leadAgentId: operation.lead?.agentId ?? current.leadAgentId,
|
|
21
|
+
leadGeneration: Math.max(current.leadGeneration, operation.lead?.generation ?? 0),
|
|
22
|
+
updatedAt: new Date().toISOString(),
|
|
23
|
+
operations: {
|
|
24
|
+
...current.operations,
|
|
25
|
+
[operation.id]: {
|
|
26
|
+
operationId: operation.id, kind: operation.kind, status: operation.status, phase: operation.phase,
|
|
27
|
+
workspaceId: operation.workspaceId, supervisorAgentId: supervisor?.agentId, supervisorGeneration: supervisor?.generation,
|
|
28
|
+
revision: operation.revision,
|
|
29
|
+
acknowledgedRevision: operation.lead?.acknowledgedRevision ?? operation.notification.lastLeadWakeRevision,
|
|
30
|
+
priority: operation.intent?.priority ?? 50,
|
|
31
|
+
updatedAt: operation.updatedAt
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
export async function bindPortfolioLead(root, project, agentId, generation) {
|
|
38
|
+
return mutatePortfolio(root, project, (current) => ({
|
|
39
|
+
...current, project, leadAgentId: agentId,
|
|
40
|
+
leadGeneration: generation ?? current.leadGeneration + 1,
|
|
41
|
+
updatedAt: new Date().toISOString()
|
|
42
|
+
}));
|
|
43
|
+
}
|
|
44
|
+
export function operationConcurrencyPolicy(config) {
|
|
45
|
+
const orchestration = config.orchestration;
|
|
46
|
+
const configured = orchestration?.operations?.concurrency;
|
|
47
|
+
return {
|
|
48
|
+
maxActiveOperations: positive(configured?.maxActiveOperations, DEFAULT_POLICY.maxActiveOperations),
|
|
49
|
+
maxActiveAgents: positive(configured?.maxActiveAgents, DEFAULT_POLICY.maxActiveAgents),
|
|
50
|
+
maxAgentsPerOperation: positive(configured?.maxAgentsPerOperation, DEFAULT_POLICY.maxAgentsPerOperation),
|
|
51
|
+
maxProviderAgents: { ...DEFAULT_POLICY.maxProviderAgents, ...(configured?.maxProviderAgents ?? {}) }
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
export async function assertOperationCapacity(root, config, requestedPriority = 50) {
|
|
55
|
+
const file = operationPortfolioFile(root);
|
|
56
|
+
const policy = operationConcurrencyPolicy(config);
|
|
57
|
+
await fs.mkdir(path.dirname(file), { recursive: true });
|
|
58
|
+
await withPortfolioLock(file, async () => {
|
|
59
|
+
const portfolio = await readPortfolio(file, config.project.name);
|
|
60
|
+
const active = Object.values(portfolio.operations).filter((item) => item.status === "QUEUED" || item.status === "RUNNING");
|
|
61
|
+
if (active.length < policy.maxActiveOperations)
|
|
62
|
+
return;
|
|
63
|
+
const lowest = active.reduce((min, item) => Math.min(min, item.priority), Number.POSITIVE_INFINITY);
|
|
64
|
+
throw new Error(`AEH_OPERATION_CAPACITY: ${active.length} active operations already consume the configured lead/project limit ${policy.maxActiveOperations}. Requested priority=${requestedPriority}; current lowest priority=${Number.isFinite(lowest) ? lowest : "n/a"}. Wait, cancel, or raise the configured orchestration.operations.concurrency.maxActiveOperations limit.`);
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
async function mutatePortfolio(root, project, mutate) {
|
|
68
|
+
const file = operationPortfolioFile(root);
|
|
69
|
+
await fs.mkdir(path.dirname(file), { recursive: true });
|
|
70
|
+
return withPortfolioLock(file, async () => {
|
|
71
|
+
// Atomic rename alone does not prevent lost updates: multiple operation
|
|
72
|
+
// controllers must serialize the complete read-modify-write transaction.
|
|
73
|
+
const current = await readPortfolio(file, project);
|
|
74
|
+
const next = mutate(current);
|
|
75
|
+
await persistUnlocked(file, next);
|
|
76
|
+
return next;
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
async function readPortfolio(file, project) {
|
|
80
|
+
try {
|
|
81
|
+
const value = JSON.parse(await fs.readFile(file, "utf8"));
|
|
82
|
+
if (value.version !== 1 || !value.operations)
|
|
83
|
+
throw new Error("invalid portfolio record");
|
|
84
|
+
return value;
|
|
85
|
+
}
|
|
86
|
+
catch (error) {
|
|
87
|
+
if (!isMissing(error))
|
|
88
|
+
throw error;
|
|
89
|
+
return { version: 1, project, leadGeneration: 0, updatedAt: new Date().toISOString(), operations: {} };
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
async function persistUnlocked(file, portfolio) {
|
|
93
|
+
const temp = `${file}.${process.pid}.${Math.random().toString(36).slice(2)}.tmp`;
|
|
94
|
+
await fs.writeFile(temp, `${JSON.stringify(portfolio, null, 2)}\n`);
|
|
95
|
+
try {
|
|
96
|
+
await fs.rename(temp, file);
|
|
97
|
+
}
|
|
98
|
+
finally {
|
|
99
|
+
await fs.rm(temp, { force: true }).catch(() => undefined);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
async function withPortfolioLock(file, action) {
|
|
103
|
+
const lock = `${file}.lock`;
|
|
104
|
+
const deadline = Date.now() + LOCK_TIMEOUT_MS;
|
|
105
|
+
for (;;) {
|
|
106
|
+
let handle;
|
|
107
|
+
try {
|
|
108
|
+
handle = await fs.open(lock, "wx");
|
|
109
|
+
try {
|
|
110
|
+
await handle.writeFile(`${process.pid}\n`);
|
|
111
|
+
return await action();
|
|
112
|
+
}
|
|
113
|
+
finally {
|
|
114
|
+
await handle.close().catch(() => undefined);
|
|
115
|
+
await fs.rm(lock, { force: true }).catch(() => undefined);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
catch (error) {
|
|
119
|
+
if (handle) {
|
|
120
|
+
await handle.close().catch(() => undefined);
|
|
121
|
+
await fs.rm(lock, { force: true }).catch(() => undefined);
|
|
122
|
+
throw error;
|
|
123
|
+
}
|
|
124
|
+
if (!isAlreadyExists(error))
|
|
125
|
+
throw error;
|
|
126
|
+
if (await canRecoverLock(lock)) {
|
|
127
|
+
await fs.rm(lock, { force: true }).catch(() => undefined);
|
|
128
|
+
continue;
|
|
129
|
+
}
|
|
130
|
+
if (Date.now() >= deadline)
|
|
131
|
+
throw new Error(`Timed out acquiring operation portfolio lock for ${path.basename(file)}.`);
|
|
132
|
+
await new Promise((resolve) => setTimeout(resolve, LOCK_RETRY_MS));
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
async function canRecoverLock(lock) {
|
|
137
|
+
try {
|
|
138
|
+
const [rawPid, stat] = await Promise.all([fs.readFile(lock, "utf8").catch(() => ""), fs.stat(lock)]);
|
|
139
|
+
const ownerPid = Number.parseInt(rawPid.trim(), 10);
|
|
140
|
+
if (Number.isInteger(ownerPid) && ownerPid > 0 && !processAlive(ownerPid))
|
|
141
|
+
return true;
|
|
142
|
+
return Date.now() - stat.mtimeMs > STALE_LOCK_MS;
|
|
143
|
+
}
|
|
144
|
+
catch {
|
|
145
|
+
return true;
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
function processAlive(pid) { try {
|
|
149
|
+
process.kill(pid, 0);
|
|
150
|
+
return true;
|
|
151
|
+
}
|
|
152
|
+
catch {
|
|
153
|
+
return false;
|
|
154
|
+
} }
|
|
155
|
+
function positive(value, fallback) { return typeof value === "number" && Number.isFinite(value) && value > 0 ? Math.floor(value) : fallback; }
|
|
156
|
+
function isMissing(error) { return Boolean(error && typeof error === "object" && "code" in error && error.code === "ENOENT"); }
|
|
157
|
+
function isAlreadyExists(error) { return Boolean(error && typeof error === "object" && "code" in error && error.code === "EEXIST"); }
|
|
158
|
+
//# sourceMappingURL=portfolio.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"portfolio.js","sourceRoot":"","sources":["../../src/operations/portfolio.ts"],"names":[],"mappings":"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"}
|