agentic-engineering-harness 0.6.5 → 0.6.7
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 +22 -1
- package/dist/main.js +62 -0
- package/dist/main.js.map +1 -1
- package/dist/operations/controller.d.ts +3 -1
- package/dist/operations/controller.js +165 -31
- package/dist/operations/controller.js.map +1 -1
- package/dist/operations/interactive.d.ts +5 -0
- package/dist/operations/interactive.js +45 -0
- package/dist/operations/interactive.js.map +1 -0
- package/dist/operations/mcp.js +19 -1
- package/dist/operations/mcp.js.map +1 -1
- package/dist/operations/state.d.ts +11 -0
- package/dist/operations/state.js +69 -13
- package/dist/operations/state.js.map +1 -1
- package/dist/paseo/capabilities.d.ts +14 -2
- package/dist/paseo/capabilities.js +46 -14
- package/dist/paseo/capabilities.js.map +1 -1
- package/dist/paseo/context.d.ts +11 -2
- package/dist/paseo/context.js +118 -81
- package/dist/paseo/context.js.map +1 -1
- package/dist/paseo/native.d.ts +63 -0
- package/dist/paseo/native.js +549 -0
- package/dist/paseo/native.js.map +1 -0
- package/dist/paseo/runtime.d.ts +9 -1
- package/dist/paseo/runtime.js +348 -57
- package/dist/paseo/runtime.js.map +1 -1
- package/dist/paseo/start.d.ts +8 -4
- package/dist/paseo/start.js +166 -41
- package/dist/paseo/start.js.map +1 -1
- package/dist/paseo/trace.d.ts +12 -0
- package/dist/paseo/trace.js +26 -0
- package/dist/paseo/trace.js.map +1 -0
- package/dist/runtime/invocation.d.ts +10 -0
- package/dist/runtime/invocation.js +51 -0
- package/dist/runtime/invocation.js.map +1 -0
- package/docs/PASEO_NATIVE.md +181 -0
- package/package.json +5 -3
- package/scripts/link-self-bin.mjs +36 -0
- package/skills/engineering-workflow/SKILL.md +5 -1
- package/skills/paseo-orchestration/SKILL.md +33 -5
package/dist/paseo/start.js
CHANGED
|
@@ -5,10 +5,20 @@ import { executionSelectionForAgent } from "../agents/routing.js";
|
|
|
5
5
|
import { reconcileHarnessAssets } from "../core/assets.js";
|
|
6
6
|
import { setupToolchain } from "../toolchain/setup.js";
|
|
7
7
|
import { clearToolchainEnvCache, commandExists, runProcess } from "../utils/process.js";
|
|
8
|
-
import {
|
|
8
|
+
import { VERSION } from "../version.js";
|
|
9
|
+
import { detectPaseoDaemonCapabilities, isRecoverableDaemonStatus } from "./capabilities.js";
|
|
9
10
|
import { launchManagedPaseoAgent, probeManagedPaseoAgent } from "./runtime.js";
|
|
10
|
-
export const PASEO_BOOTSTRAP_VERSION =
|
|
11
|
-
const DEFAULT_DEPS = {
|
|
11
|
+
export const PASEO_BOOTSTRAP_VERSION = 7;
|
|
12
|
+
const DEFAULT_DEPS = {
|
|
13
|
+
run: runProcess,
|
|
14
|
+
commandExists,
|
|
15
|
+
setupToolchain,
|
|
16
|
+
loadTopology: loadResolvedAgentTopology,
|
|
17
|
+
detectCapabilities: detectPaseoDaemonCapabilities,
|
|
18
|
+
launchAgent: launchManagedPaseoAgent,
|
|
19
|
+
probeAgent: probeManagedPaseoAgent,
|
|
20
|
+
reconcileAssets: reconcileHarnessAssets
|
|
21
|
+
};
|
|
12
22
|
export async function startPaseoHarness(root, config, options = {}, deps = DEFAULT_DEPS) {
|
|
13
23
|
const projectRoot = path.resolve(root);
|
|
14
24
|
await (deps.reconcileAssets ?? reconcileHarnessAssets)(projectRoot);
|
|
@@ -19,7 +29,8 @@ export async function startPaseoHarness(root, config, options = {}, deps = DEFAU
|
|
|
19
29
|
const stateFile = path.join(stateDir, "lead-session.json");
|
|
20
30
|
const bootstrapFile = path.join(stateDir, "lead-bootstrap.md");
|
|
21
31
|
const sessionPolicy = settings?.sessionPolicy ?? "fresh-on-start";
|
|
22
|
-
const reuseRequested = options.resume === true ||
|
|
32
|
+
const reuseRequested = options.resume === true ||
|
|
33
|
+
(sessionPolicy === "reuse-compatible" && options.forceNew !== true);
|
|
23
34
|
const topology = await deps.loadTopology(projectRoot, config, config.agents?.activeProfile);
|
|
24
35
|
const leadName = resolveLeadAgent(topology, options.leadAgent ?? settings?.leadAgent);
|
|
25
36
|
const selection = executionSelectionForAgent(topology, leadName);
|
|
@@ -30,23 +41,40 @@ export async function startPaseoHarness(root, config, options = {}, deps = DEFAU
|
|
|
30
41
|
clearToolchainEnvCache();
|
|
31
42
|
}
|
|
32
43
|
const missingAfter = await missingCommands(projectRoot, ["paseo", runtimeCommand], deps);
|
|
33
|
-
if (missingAfter.length)
|
|
44
|
+
if (missingAfter.length) {
|
|
34
45
|
throw new Error(`aeh start cannot launch Paseo because these managed commands are unavailable: ${missingAfter.join(", ")}. Run aeh setup or provide the required host prerequisite/credential.`);
|
|
46
|
+
}
|
|
35
47
|
const capabilities = await deps.detectCapabilities(projectRoot, deps.run);
|
|
36
48
|
let daemonStarted = false;
|
|
37
|
-
const daemonStatusCommand = capabilities.daemonJson
|
|
38
|
-
|
|
49
|
+
const daemonStatusCommand = capabilities.daemonJson
|
|
50
|
+
? "paseo daemon status --json"
|
|
51
|
+
: "paseo daemon status";
|
|
52
|
+
let daemonStatus = await deps.run(daemonStatusCommand, {
|
|
53
|
+
cwd: projectRoot,
|
|
54
|
+
timeoutMs: 30_000
|
|
55
|
+
});
|
|
39
56
|
if (daemonStatus.exitCode !== 0) {
|
|
40
|
-
if (isRecoverableDaemonStatus(daemonStatus))
|
|
41
|
-
await deps
|
|
57
|
+
if (isRecoverableDaemonStatus(daemonStatus)) {
|
|
58
|
+
await deps
|
|
59
|
+
.run("paseo daemon stop", { cwd: projectRoot, timeoutMs: 30_000 })
|
|
60
|
+
.catch(() => undefined);
|
|
61
|
+
}
|
|
42
62
|
const startCommand = webUi ? "paseo daemon start --web-ui" : "paseo daemon start";
|
|
43
|
-
const daemonStart = await deps.run(startCommand, {
|
|
44
|
-
|
|
63
|
+
const daemonStart = await deps.run(startCommand, {
|
|
64
|
+
cwd: projectRoot,
|
|
65
|
+
timeoutMs: 60_000
|
|
66
|
+
});
|
|
67
|
+
if (daemonStart.exitCode !== 0) {
|
|
45
68
|
throw new Error(`Failed to start Paseo daemon: ${diagnostic(daemonStart)}`);
|
|
69
|
+
}
|
|
46
70
|
daemonStarted = true;
|
|
47
|
-
daemonStatus = await deps.run(daemonStatusCommand, {
|
|
48
|
-
|
|
71
|
+
daemonStatus = await deps.run(daemonStatusCommand, {
|
|
72
|
+
cwd: projectRoot,
|
|
73
|
+
timeoutMs: 30_000
|
|
74
|
+
});
|
|
75
|
+
if (daemonStatus.exitCode !== 0) {
|
|
49
76
|
throw new Error(`Paseo daemon did not become ready after startup: ${diagnostic(daemonStatus)}`);
|
|
77
|
+
}
|
|
50
78
|
}
|
|
51
79
|
const provider = selection.paseoProvider;
|
|
52
80
|
const model = paseoModel(selection);
|
|
@@ -57,20 +85,49 @@ export async function startPaseoHarness(root, config, options = {}, deps = DEFAU
|
|
|
57
85
|
await fs.mkdir(stateDir, { recursive: true });
|
|
58
86
|
await fs.writeFile(bootstrapFile, `${bootstrap}\n`);
|
|
59
87
|
const previous = await loadState(stateFile);
|
|
60
|
-
if (!options.forceNew &&
|
|
61
|
-
|
|
62
|
-
|
|
88
|
+
if (!options.forceNew &&
|
|
89
|
+
reuseRequested &&
|
|
90
|
+
!options.handoffPath &&
|
|
91
|
+
previous &&
|
|
92
|
+
compatibleState(previous, {
|
|
93
|
+
projectRoot,
|
|
94
|
+
leadName,
|
|
95
|
+
provider,
|
|
96
|
+
model,
|
|
97
|
+
title,
|
|
98
|
+
aehCommand
|
|
99
|
+
})) {
|
|
100
|
+
if (await deps.probeAgent(projectRoot, previous.agentId)) {
|
|
101
|
+
return {
|
|
102
|
+
daemonStarted,
|
|
103
|
+
session: "reused",
|
|
104
|
+
agentId: previous.agentId,
|
|
105
|
+
title: previous.title,
|
|
106
|
+
leadAgent: previous.leadAgent,
|
|
107
|
+
provider: previous.provider,
|
|
108
|
+
model: previous.model,
|
|
109
|
+
aehVersion: VERSION,
|
|
110
|
+
aehCommand,
|
|
111
|
+
stateFile,
|
|
112
|
+
bootstrapFile,
|
|
113
|
+
paseoVersion: capabilities.version
|
|
114
|
+
};
|
|
115
|
+
}
|
|
63
116
|
}
|
|
64
117
|
const generation = (previous?.generation ?? 0) + 1;
|
|
65
118
|
const labels = {
|
|
66
119
|
"aeh.project": config.project.name,
|
|
67
120
|
"aeh.kind": "lead",
|
|
68
121
|
"aeh.role": leadName,
|
|
69
|
-
"aeh.generation": String(generation)
|
|
122
|
+
"aeh.generation": String(generation),
|
|
123
|
+
"aeh.version": VERSION,
|
|
124
|
+
"aeh.bootstrap": String(PASEO_BOOTSTRAP_VERSION)
|
|
70
125
|
};
|
|
71
126
|
if (options.handoffPath)
|
|
72
127
|
labels["aeh.handoff"] = options.handoffPath;
|
|
73
|
-
const operationControl = preferPaseoTools
|
|
128
|
+
const operationControl = preferPaseoTools
|
|
129
|
+
? buildAehControlMcp(aehCommand, projectRoot)
|
|
130
|
+
: {};
|
|
74
131
|
const launch = await deps.launchAgent(projectRoot, {
|
|
75
132
|
cwd: projectRoot,
|
|
76
133
|
title,
|
|
@@ -82,12 +139,42 @@ export async function startPaseoHarness(root, config, options = {}, deps = DEFAU
|
|
|
82
139
|
timeoutSeconds: 300,
|
|
83
140
|
...operationControl
|
|
84
141
|
});
|
|
85
|
-
if (launch.exitCode !== 0 || !launch.id)
|
|
142
|
+
if (launch.exitCode !== 0 || !launch.id) {
|
|
86
143
|
throw new Error(`Failed to create AEH lead in Paseo${capabilities.version ? ` ${capabilities.version}` : ""}: ${launch.stderr || launch.stdout || `exit code ${launch.exitCode}`}`);
|
|
144
|
+
}
|
|
87
145
|
const agentId = launch.id;
|
|
88
|
-
const state = {
|
|
146
|
+
const state = {
|
|
147
|
+
version: 2,
|
|
148
|
+
bootstrapVersion: PASEO_BOOTSTRAP_VERSION,
|
|
149
|
+
aehVersion: VERSION,
|
|
150
|
+
aehCommand,
|
|
151
|
+
projectRoot,
|
|
152
|
+
projectName: config.project.name,
|
|
153
|
+
agentId,
|
|
154
|
+
title,
|
|
155
|
+
leadAgent: leadName,
|
|
156
|
+
provider,
|
|
157
|
+
model,
|
|
158
|
+
createdAt: new Date().toISOString(),
|
|
159
|
+
generation,
|
|
160
|
+
handoffPath: options.handoffPath
|
|
161
|
+
};
|
|
89
162
|
await fs.writeFile(stateFile, `${JSON.stringify(state, null, 2)}\n`);
|
|
90
|
-
return {
|
|
163
|
+
return {
|
|
164
|
+
daemonStarted,
|
|
165
|
+
session: "created",
|
|
166
|
+
agentId,
|
|
167
|
+
title,
|
|
168
|
+
leadAgent: leadName,
|
|
169
|
+
provider,
|
|
170
|
+
model,
|
|
171
|
+
aehVersion: VERSION,
|
|
172
|
+
aehCommand,
|
|
173
|
+
stateFile,
|
|
174
|
+
bootstrapFile,
|
|
175
|
+
paseoVersion: capabilities.version,
|
|
176
|
+
transport: launch.transport
|
|
177
|
+
};
|
|
91
178
|
}
|
|
92
179
|
export function buildAehControlMcp(aehCommand, projectRoot) {
|
|
93
180
|
const argv = parseCommandVector(aehCommand);
|
|
@@ -95,7 +182,13 @@ export function buildAehControlMcp(aehCommand, projectRoot) {
|
|
|
95
182
|
return {};
|
|
96
183
|
const [command, ...baseArgs] = argv;
|
|
97
184
|
const server = "aeh-control";
|
|
98
|
-
const tools = [
|
|
185
|
+
const tools = [
|
|
186
|
+
"aeh_operation_start_audit",
|
|
187
|
+
"aeh_operation_start_run",
|
|
188
|
+
"aeh_operation_status",
|
|
189
|
+
"aeh_operation_cancel",
|
|
190
|
+
"aeh_context_status"
|
|
191
|
+
];
|
|
99
192
|
return {
|
|
100
193
|
mcpServers: {
|
|
101
194
|
[server]: {
|
|
@@ -126,25 +219,30 @@ export function parseCommandVector(value) {
|
|
|
126
219
|
return undefined;
|
|
127
220
|
}
|
|
128
221
|
}
|
|
129
|
-
if (!/^[A-Za-z0-9_./:@+-]+(?:\s+[A-Za-z0-9_./:@+-]+)*$/.test(trimmed))
|
|
222
|
+
if (!/^[A-Za-z0-9_./:@+-]+(?:\s+[A-Za-z0-9_./:@+-]+)*$/.test(trimmed)) {
|
|
130
223
|
return undefined;
|
|
224
|
+
}
|
|
131
225
|
return trimmed.split(/\s+/);
|
|
132
226
|
}
|
|
133
227
|
export function buildPaseoLeadBootstrap(projectName, projectRoot, aehCommand, preferPaseoTools = true, handoffPath) {
|
|
134
|
-
const handoff = handoffPath
|
|
135
|
-
|
|
228
|
+
const handoff = handoffPath
|
|
229
|
+
? `\n\nThis lead was created by proactive context rotation. Before the next engineering action, read the deterministic handoff artifact ${JSON.stringify(handoffPath)} and the sealed/run/audit/operation/delivery artifacts it references. Durable artifacts are authoritative; do not ask the previous lead to replay its conversation.`
|
|
230
|
+
: "";
|
|
231
|
+
return `AEH thin-lead Paseo bootstrap v${PASEO_BOOTSTRAP_VERSION}; AEH runtime v${VERSION}.
|
|
136
232
|
|
|
137
233
|
You are the top-level engineering lead for project ${JSON.stringify(projectName)} at ${JSON.stringify(projectRoot)}. A normal \`aeh start\` creates a fresh lead; explicit resume is opt-in.${handoff}
|
|
138
234
|
|
|
235
|
+
Your exact AEH runtime invocation is \`${aehCommand}\`. This invocation and runtime version are part of the durable lead identity. Do not replace it with another global, cached, npx or guessed AEH executable.
|
|
236
|
+
|
|
139
237
|
Before engineering work, read AGENTS.md and .harness/skills/engineering-workflow/SKILL.md when present. Those instructions plus the resolved AEH agent topology are authoritative for available roles, charters, permissions, routing and delegation. Do not maintain or invent a separate role map in conversational context.
|
|
140
238
|
|
|
141
239
|
Every engineering operation must enter through AEH, including read-only audits. Only purely informational questions may bypass. Whenever the workflow says \`aeh\`, invoke exactly: \`${aehCommand}\`.
|
|
142
240
|
|
|
143
241
|
Remain a thin ORCHESTRATOR: preserve user intent, make semantic/risk decisions, delegate bounded operations through the authoritative topology, monitor deterministic state and perform final semantic acceptance. Follow engineering-workflow end-to-end for intent classification, AUDIT, QUICK/SPEC triage, OpenSpec authoring, sealed execution, recovery, validation and delivery rather than reproducing those procedures here.
|
|
144
242
|
|
|
145
|
-
${preferPaseoTools ? `When running inside Paseo, use the paseo-orchestration skill and injected native/MCP tools for conversational delegation and /paseo-handoff for responsibility transfer. The managed lead receives the exact project-locked aeh-control MCP when its AEH invocation can be represented safely; prefer those detached operation tools for long AUDIT/RUN workflows, then use short \`${aehCommand} operation ...\` commands only as fallback. AEH's external controller may create independent top-level Paseo agents for Harness-owned work; AEH operation/run/task labels, not Paseo parentage, define workflow ownership.` : `Use AEH's configured Paseo adapter for delegation and lifecycle control.`}
|
|
243
|
+
${preferPaseoTools ? `When running inside Paseo, use the paseo-orchestration skill and injected native/MCP tools for conversational delegation and /paseo-handoff for responsibility transfer. The managed lead receives the exact project-locked aeh-control MCP when its AEH invocation can be represented safely; prefer those detached operation tools for long AUDIT/RUN workflows, then use short \`${aehCommand} operation ...\` commands only as fallback. Never intentionally use synchronous \`${aehCommand} audit\` or \`${aehCommand} run\` for long managed-lead work; AEH will auto-promote standard forms to detached operations as a deterministic safety net. AEH's external controller may create independent top-level Paseo agents for Harness-owned work; AEH operation/run/task labels, not Paseo parentage, define workflow ownership.` : `Use AEH's configured Paseo adapter for delegation and lifecycle control.`}
|
|
146
244
|
|
|
147
|
-
Before non-trivial work, inspect context pressure
|
|
245
|
+
Before non-trivial work and again at completed-turn boundaries, inspect context pressure. Prefer the injected \`aeh_context_status\` tool, which reads the current Paseo AgentSnapshot and applies AEH's deterministic thresholds without shell/log parsing. Use \`${aehCommand} context guard --agent "$PASEO_AGENT_ID"\` only as a non-interactive/compatibility fallback. Honor HANDOFF_REQUIRED/HARD_HANDOFF and stop the old lead when a replacement is created. NO_USAGE_YET is normal before the provider emits usage; USAGE_UNAVAILABLE means pressure cannot be measured and should increase delegation rather than inventing a ratio.
|
|
148
246
|
|
|
149
247
|
The compiled AEH TaskContract/SDD plus seal are normative during implementation. OpenSpec is authoring provenance before freeze, not a competing runtime authority. Do not perform broad repository operations directly when a bounded Harness operation or configured agent owns them.
|
|
150
248
|
|
|
@@ -153,28 +251,55 @@ This bootstrap is session configuration, not a user task. Do not emit an initial
|
|
|
153
251
|
export function resolveLeadAgent(topology, configured) {
|
|
154
252
|
if (configured) {
|
|
155
253
|
const selected = topology.agents[configured];
|
|
156
|
-
if (!selected || selected.disabled)
|
|
254
|
+
if (!selected || selected.disabled) {
|
|
157
255
|
throw new Error(`Configured interactive lead agent '${configured}' is unavailable.`);
|
|
256
|
+
}
|
|
158
257
|
return configured;
|
|
159
258
|
}
|
|
160
259
|
if (topology.agents.lead && !topology.agents.lead.disabled)
|
|
161
260
|
return "lead";
|
|
162
261
|
const orchestrator = Object.values(topology.agents).find((agent) => agent.role === "orchestrator" && !agent.disabled);
|
|
163
|
-
if (!orchestrator)
|
|
262
|
+
if (!orchestrator) {
|
|
164
263
|
throw new Error("aeh start requires an enabled orchestrator/lead agent in the resolved topology.");
|
|
264
|
+
}
|
|
165
265
|
return orchestrator.name;
|
|
166
266
|
}
|
|
167
|
-
function runtimeExecutable(topology, leadName) {
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
function
|
|
172
|
-
|
|
173
|
-
|
|
267
|
+
function runtimeExecutable(topology, leadName) {
|
|
268
|
+
const runtime = topology.agents[leadName].runtime;
|
|
269
|
+
return runtime.command?.trim().split(/\s+/, 1)[0] || runtime.adapter;
|
|
270
|
+
}
|
|
271
|
+
async function missingCommands(root, commands, deps) {
|
|
272
|
+
const result = [];
|
|
273
|
+
for (const command of [...new Set(commands.filter(Boolean))]) {
|
|
274
|
+
if (!(await deps.commandExists(command, root)))
|
|
275
|
+
result.push(command);
|
|
276
|
+
}
|
|
277
|
+
return result;
|
|
278
|
+
}
|
|
279
|
+
function paseoModel(selection) {
|
|
280
|
+
return selection.runtimeAdapter === "codex" ? selection.modelName : selection.modelId;
|
|
281
|
+
}
|
|
282
|
+
async function loadState(file) {
|
|
283
|
+
try {
|
|
284
|
+
return JSON.parse(await fs.readFile(file, "utf8"));
|
|
285
|
+
}
|
|
286
|
+
catch {
|
|
287
|
+
return undefined;
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
function compatibleState(state, expected) {
|
|
291
|
+
return (state.version === 2 &&
|
|
292
|
+
state.bootstrapVersion === PASEO_BOOTSTRAP_VERSION &&
|
|
293
|
+
state.aehVersion === VERSION &&
|
|
294
|
+
state.aehCommand === expected.aehCommand &&
|
|
295
|
+
state.projectRoot === expected.projectRoot &&
|
|
296
|
+
state.leadAgent === expected.leadName &&
|
|
297
|
+
state.provider === expected.provider &&
|
|
298
|
+
state.model === expected.model &&
|
|
299
|
+
state.title === expected.title);
|
|
300
|
+
}
|
|
301
|
+
function diagnostic(result) {
|
|
302
|
+
return [result.stderr.trim(), result.stdout.trim()].filter(Boolean).join("\n") ||
|
|
303
|
+
`exit code ${result.exitCode}`;
|
|
174
304
|
}
|
|
175
|
-
catch {
|
|
176
|
-
return undefined;
|
|
177
|
-
} }
|
|
178
|
-
function compatibleState(state, expected) { return state.version === 1 && state.bootstrapVersion === PASEO_BOOTSTRAP_VERSION && state.projectRoot === expected.projectRoot && state.leadAgent === expected.leadName && state.provider === expected.provider && state.model === expected.model && state.title === expected.title; }
|
|
179
|
-
function diagnostic(result) { return [result.stderr.trim(), result.stdout.trim()].filter(Boolean).join("\n") || `exit code ${result.exitCode}`; }
|
|
180
305
|
//# sourceMappingURL=start.js.map
|
package/dist/paseo/start.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"start.js","sourceRoot":"","sources":["../../src/paseo/start.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"start.js","sourceRoot":"","sources":["../../src/paseo/start.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export interface PaseoTraceRecord {
|
|
2
|
+
at: string;
|
|
3
|
+
name: string;
|
|
4
|
+
attributes: Record<string, unknown>;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Paseo integration traces are always persisted locally because they are
|
|
8
|
+
* operational evidence, even when OTLP export is disabled. When Harness
|
|
9
|
+
* telemetry is configured the same event is also sent through the normal
|
|
10
|
+
* recordEvent/OTLP path.
|
|
11
|
+
*/
|
|
12
|
+
export declare function recordPaseoTrace(root: string, name: string, attributes?: Record<string, unknown>): Promise<void>;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import fs from "node:fs/promises";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { loadProjectConfig } from "../core/config.js";
|
|
4
|
+
import { recordEvent } from "../telemetry/events.js";
|
|
5
|
+
/**
|
|
6
|
+
* Paseo integration traces are always persisted locally because they are
|
|
7
|
+
* operational evidence, even when OTLP export is disabled. When Harness
|
|
8
|
+
* telemetry is configured the same event is also sent through the normal
|
|
9
|
+
* recordEvent/OTLP path.
|
|
10
|
+
*/
|
|
11
|
+
export async function recordPaseoTrace(root, name, attributes = {}) {
|
|
12
|
+
const eventName = name.startsWith("harness.paseo.") ? name : `harness.paseo.${name}`;
|
|
13
|
+
const record = { at: new Date().toISOString(), name: eventName, attributes };
|
|
14
|
+
const file = path.resolve(root, ".harness/telemetry/paseo.ndjson");
|
|
15
|
+
await fs.mkdir(path.dirname(file), { recursive: true });
|
|
16
|
+
await fs.appendFile(file, `${JSON.stringify(record)}\n`);
|
|
17
|
+
let config;
|
|
18
|
+
try {
|
|
19
|
+
config = await loadProjectConfig(root);
|
|
20
|
+
}
|
|
21
|
+
catch {
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
await recordEvent(root, config, eventName, attributes);
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=trace.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trace.js","sourceRoot":"","sources":["../../src/paseo/trace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAQrD;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,IAAY,EACZ,IAAY,EACZ,aAAsC,EAAE;IAExC,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,iBAAiB,IAAI,EAAE,CAAC;IACrF,MAAM,MAAM,GAAqB,EAAE,EAAE,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC;IAC/F,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,iCAAiC,CAAC,CAAC;IACnE,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACxD,MAAM,EAAE,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAEzD,IAAI,MAAM,CAAC;IACX,IAAI,CAAC;QAAC,MAAM,GAAG,MAAM,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAAC,CAAC;IAC/C,MAAM,CAAC;QAAC,OAAO;IAAC,CAAC;IACjB,MAAM,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;AACzD,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export interface SelfCheckoutRuntimePlan {
|
|
2
|
+
selfCheckout: boolean;
|
|
3
|
+
currentEntry: string;
|
|
4
|
+
localEntry: string;
|
|
5
|
+
localEntryReady: boolean;
|
|
6
|
+
shouldRelaunch: boolean;
|
|
7
|
+
checkoutVersion?: string;
|
|
8
|
+
}
|
|
9
|
+
export declare function planSelfCheckoutRuntime(root: string, currentEntry: string): Promise<SelfCheckoutRuntimePlan>;
|
|
10
|
+
export declare function resolveStartProjectRoot(argv: string[], cwd?: string): string;
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import fs from "node:fs/promises";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
export async function planSelfCheckoutRuntime(root, currentEntry) {
|
|
4
|
+
const projectRoot = path.resolve(root);
|
|
5
|
+
const resolvedEntry = path.resolve(currentEntry);
|
|
6
|
+
const localEntry = path.resolve(projectRoot, "dist/main.js");
|
|
7
|
+
const manifest = await readManifest(projectRoot);
|
|
8
|
+
const selfCheckout = manifest?.name === "agentic-engineering-harness";
|
|
9
|
+
const localEntryReady = await exists(localEntry);
|
|
10
|
+
return {
|
|
11
|
+
selfCheckout,
|
|
12
|
+
currentEntry: resolvedEntry,
|
|
13
|
+
localEntry,
|
|
14
|
+
localEntryReady,
|
|
15
|
+
shouldRelaunch: selfCheckout && resolvedEntry !== localEntry,
|
|
16
|
+
checkoutVersion: typeof manifest?.version === "string" ? manifest.version : undefined
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
export function resolveStartProjectRoot(argv, cwd = process.cwd()) {
|
|
20
|
+
const valueOptions = new Set(["lead", "title"]);
|
|
21
|
+
const positional = [];
|
|
22
|
+
for (let index = 0; index < argv.length; index += 1) {
|
|
23
|
+
const token = argv[index];
|
|
24
|
+
if (!token.startsWith("--")) {
|
|
25
|
+
positional.push(token);
|
|
26
|
+
continue;
|
|
27
|
+
}
|
|
28
|
+
const name = token.slice(2);
|
|
29
|
+
if (valueOptions.has(name))
|
|
30
|
+
index += 1;
|
|
31
|
+
}
|
|
32
|
+
return path.resolve(cwd, positional[0] ?? ".");
|
|
33
|
+
}
|
|
34
|
+
async function readManifest(root) {
|
|
35
|
+
try {
|
|
36
|
+
return JSON.parse(await fs.readFile(path.resolve(root, "package.json"), "utf8"));
|
|
37
|
+
}
|
|
38
|
+
catch {
|
|
39
|
+
return undefined;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
async function exists(file) {
|
|
43
|
+
try {
|
|
44
|
+
await fs.access(file);
|
|
45
|
+
return true;
|
|
46
|
+
}
|
|
47
|
+
catch {
|
|
48
|
+
return false;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=invocation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"invocation.js","sourceRoot":"","sources":["../../src/runtime/invocation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAW7B,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAAC,IAAY,EAAE,YAAoB;IAC9E,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACvC,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IACjD,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;IAC7D,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,WAAW,CAAC,CAAC;IACjD,MAAM,YAAY,GAAG,QAAQ,EAAE,IAAI,KAAK,6BAA6B,CAAC;IACtE,MAAM,eAAe,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC;IACjD,OAAO;QACL,YAAY;QACZ,YAAY,EAAE,aAAa;QAC3B,UAAU;QACV,eAAe;QACf,cAAc,EAAE,YAAY,IAAI,aAAa,KAAK,UAAU;QAC5D,eAAe,EAAE,OAAO,QAAQ,EAAE,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS;KACtF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,IAAc,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE;IACzE,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAChD,MAAM,UAAU,GAAa,EAAE,CAAC;IAChC,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACpD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1B,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YAC5B,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACvB,SAAS;QACX,CAAC;QACD,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC5B,IAAI,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,KAAK,IAAI,CAAC,CAAC;IACzC,CAAC;IACD,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC;AACjD,CAAC;AAED,KAAK,UAAU,YAAY,CAAC,IAAY;IACtC,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,cAAc,CAAC,EAAE,MAAM,CAAC,CAA4B,CAAC;IAC9G,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,KAAK,UAAU,MAAM,CAAC,IAAY;IAChC,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACtB,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
# Paseo-native integration contract
|
|
2
|
+
|
|
3
|
+
AEH treats Paseo as the authority for agent runtime state and generic agent orchestration, while AEH remains the authority for engineering policy and deterministic acceptance.
|
|
4
|
+
|
|
5
|
+
## Authority split
|
|
6
|
+
|
|
7
|
+
| Concern | Authority | Preferred surface |
|
|
8
|
+
| --- | --- | --- |
|
|
9
|
+
| Agent creation/session lifecycle | Paseo | `@getpaseo/client` |
|
|
10
|
+
| Agent current state | Paseo | `agents.ref(id).refetch()` |
|
|
11
|
+
| Agent context-window usage | Paseo/provider | `AgentSnapshot.lastUsage` |
|
|
12
|
+
| Provider/model availability | Paseo | provider snapshot/listModels/diagnostic |
|
|
13
|
+
| Generic create/send/status/activity tools | Paseo | injected native/MCP Paseo tools |
|
|
14
|
+
| AUDIT/RUN operation state | AEH | `aeh-control` / operation state |
|
|
15
|
+
| Context thresholds and handoff policy | AEH | `aeh_context_status` / `context guard` |
|
|
16
|
+
| SDD, contracts, seals, validation | AEH | deterministic Harness core |
|
|
17
|
+
| Quality convergence/acceptance | AEH | deterministic Harness core |
|
|
18
|
+
|
|
19
|
+
Do not copy generic Paseo lifecycle tools into `aeh-control`. The AEH MCP exists only for AEH-specific controller and policy semantics.
|
|
20
|
+
|
|
21
|
+
## Context pressure
|
|
22
|
+
|
|
23
|
+
Paseo v0.3.1 exposes canonical context-window fields in `AgentUsage`:
|
|
24
|
+
|
|
25
|
+
```text
|
|
26
|
+
contextWindowUsedTokens
|
|
27
|
+
contextWindowMaxTokens
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
AEH reads them from the full agent snapshot. It does **not** derive context pressure from `inputTokens`, `outputTokens`, `totalTokens`, log text or compact agent-list metadata.
|
|
31
|
+
|
|
32
|
+
States:
|
|
33
|
+
|
|
34
|
+
```text
|
|
35
|
+
NO_USAGE_YET
|
|
36
|
+
snapshot exists but the provider has not emitted lastUsage yet
|
|
37
|
+
|
|
38
|
+
USAGE_UNAVAILABLE
|
|
39
|
+
snapshot/usage exists but canonical context-window fields are unavailable
|
|
40
|
+
|
|
41
|
+
OK
|
|
42
|
+
ratio < pressureThreshold (default 70%)
|
|
43
|
+
|
|
44
|
+
PRESSURE
|
|
45
|
+
pressureThreshold <= ratio < handoffThreshold (default 70–80%)
|
|
46
|
+
|
|
47
|
+
HANDOFF_REQUIRED
|
|
48
|
+
handoffThreshold <= ratio < hardHandoffThreshold (default 80–90%)
|
|
49
|
+
|
|
50
|
+
HARD_HANDOFF
|
|
51
|
+
ratio >= hardHandoffThreshold (default 90%)
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
Managed leads receive the preapproved `aeh_context_status` tool. `aeh context guard --agent ...` remains the CLI compatibility/non-interactive surface and owns handoff-artifact/rotation side effects.
|
|
55
|
+
|
|
56
|
+
## Event-driven completion
|
|
57
|
+
|
|
58
|
+
Agent waiting is:
|
|
59
|
+
|
|
60
|
+
```text
|
|
61
|
+
subscribe(agent_update)
|
|
62
|
+
|
|
|
63
|
+
+--> refetch current snapshot
|
|
64
|
+
|
|
|
65
|
+
+--> updates trigger refetch
|
|
66
|
+
|
|
|
67
|
+
`--> terminal state -> read recent timeline -> complete
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
Subscription is installed **before** the first refetch so a transition cannot fall between the snapshot and listener setup. A freshly observed `idle` state is not treated as completion until the wait has observed activity/update evidence, avoiding a send/wait race.
|
|
71
|
+
|
|
72
|
+
Fallback order:
|
|
73
|
+
|
|
74
|
+
```text
|
|
75
|
+
Paseo SDK subscription
|
|
76
|
+
↓ unavailable
|
|
77
|
+
public SDK wait compatibility
|
|
78
|
+
↓ unavailable
|
|
79
|
+
Paseo CLI wait/log compatibility
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
The selected path is emitted in Paseo integration traces.
|
|
83
|
+
|
|
84
|
+
## Provider/model preflight
|
|
85
|
+
|
|
86
|
+
Before creating or materializing an agent, AEH attempts a public-SDK preflight:
|
|
87
|
+
|
|
88
|
+
1. read the provider snapshot for the target cwd;
|
|
89
|
+
2. reject explicitly disabled/error/unavailable providers;
|
|
90
|
+
3. use the snapshot model catalog when available;
|
|
91
|
+
4. otherwise call `listModels(provider, { cwd })`;
|
|
92
|
+
5. when provider/model discovery fails, obtain a provider diagnostic where supported;
|
|
93
|
+
6. fail before `createAgent` when the catalog authoritatively excludes the requested model;
|
|
94
|
+
7. if the installed SDK does not expose provider preflight APIs, record `provider.preflight.skipped` and let agent creation remain authoritative.
|
|
95
|
+
|
|
96
|
+
AEH does not force provider refreshes on every launch. Paseo owns snapshot caching and explicit refresh semantics.
|
|
97
|
+
|
|
98
|
+
## Intentional CLI parity gaps (P2)
|
|
99
|
+
|
|
100
|
+
CLI usage is not forbidden when the public SDK lacks required semantics. It must be narrow and traced.
|
|
101
|
+
|
|
102
|
+
### Operation workspace creation
|
|
103
|
+
|
|
104
|
+
AEH currently uses:
|
|
105
|
+
|
|
106
|
+
```text
|
|
107
|
+
paseo workspace create --isolation local --path ... --title ... --json
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
because the Paseo v0.3.1 public SDK workspace create surface does not expose equivalent isolation/title controls. This workspace is orchestration grouping only; it is not a Git delivery worktree.
|
|
111
|
+
|
|
112
|
+
Trace events:
|
|
113
|
+
|
|
114
|
+
```text
|
|
115
|
+
harness.paseo.workspace.cli.required
|
|
116
|
+
harness.paseo.workspace.cli.created
|
|
117
|
+
harness.paseo.workspace.cli.error
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
### External controller cleanup
|
|
121
|
+
|
|
122
|
+
The external deterministic controller may stop agents with the supported Paseo CLI because the public v0.3.1 agent handle does not expose the cancel/kill parity needed for operation cleanup. AEH deliberately does not import internal `DaemonClient` APIs.
|
|
123
|
+
|
|
124
|
+
Trace events:
|
|
125
|
+
|
|
126
|
+
```text
|
|
127
|
+
harness.paseo.cleanup.cli.required
|
|
128
|
+
harness.paseo.cleanup.cli.stop
|
|
129
|
+
harness.paseo.cleanup.cli.error
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
These two gaps should be removed when the public SDK reaches parity.
|
|
133
|
+
|
|
134
|
+
## Integration traces
|
|
135
|
+
|
|
136
|
+
Paseo integration events are always persisted locally to:
|
|
137
|
+
|
|
138
|
+
```text
|
|
139
|
+
.harness/telemetry/paseo.ndjson
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
When normal Harness telemetry is enabled, the same event is also emitted through `recordEvent` and the configured OTLP path.
|
|
143
|
+
|
|
144
|
+
Representative events:
|
|
145
|
+
|
|
146
|
+
```text
|
|
147
|
+
harness.paseo.provider.preflight
|
|
148
|
+
harness.paseo.provider.preflight.skipped
|
|
149
|
+
harness.paseo.agent.launch
|
|
150
|
+
harness.paseo.agent.materialize
|
|
151
|
+
harness.paseo.agent.dispatch
|
|
152
|
+
harness.paseo.agent.snapshot
|
|
153
|
+
harness.paseo.agent.wait
|
|
154
|
+
harness.paseo.agent.wait.completed
|
|
155
|
+
harness.paseo.agent.wait.fallback
|
|
156
|
+
harness.paseo.context.status
|
|
157
|
+
harness.paseo.context.handoff
|
|
158
|
+
harness.paseo.fallback.cli
|
|
159
|
+
harness.paseo.workspace.cli.*
|
|
160
|
+
harness.paseo.cleanup.cli.*
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
A useful trace answers:
|
|
164
|
+
|
|
165
|
+
- which transport was selected (`sdk` or `cli`);
|
|
166
|
+
- which observation source was used (`subscription`, snapshot, sdk-wait, cli-wait);
|
|
167
|
+
- whether a fallback was exceptional or an intentional SDK parity gap;
|
|
168
|
+
- why the fallback occurred;
|
|
169
|
+
- the associated agent/operation/provider/model/workspace;
|
|
170
|
+
- the relevant duration/status/error when applicable.
|
|
171
|
+
|
|
172
|
+
## Migration rule
|
|
173
|
+
|
|
174
|
+
When Paseo adds public SDK parity for a CLI-only operation:
|
|
175
|
+
|
|
176
|
+
1. add the public SDK path;
|
|
177
|
+
2. make it primary;
|
|
178
|
+
3. retain CLI only as version-negotiated compatibility if still necessary;
|
|
179
|
+
4. add a regression proving SDK use;
|
|
180
|
+
5. keep a fallback trace until the compatibility floor makes CLI removable;
|
|
181
|
+
6. remove any capability inference based on parsing help text when it no longer serves a compatibility path.
|