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.
Files changed (40) hide show
  1. package/README.md +22 -1
  2. package/dist/main.js +62 -0
  3. package/dist/main.js.map +1 -1
  4. package/dist/operations/controller.d.ts +3 -1
  5. package/dist/operations/controller.js +165 -31
  6. package/dist/operations/controller.js.map +1 -1
  7. package/dist/operations/interactive.d.ts +5 -0
  8. package/dist/operations/interactive.js +45 -0
  9. package/dist/operations/interactive.js.map +1 -0
  10. package/dist/operations/mcp.js +19 -1
  11. package/dist/operations/mcp.js.map +1 -1
  12. package/dist/operations/state.d.ts +11 -0
  13. package/dist/operations/state.js +69 -13
  14. package/dist/operations/state.js.map +1 -1
  15. package/dist/paseo/capabilities.d.ts +14 -2
  16. package/dist/paseo/capabilities.js +46 -14
  17. package/dist/paseo/capabilities.js.map +1 -1
  18. package/dist/paseo/context.d.ts +11 -2
  19. package/dist/paseo/context.js +118 -81
  20. package/dist/paseo/context.js.map +1 -1
  21. package/dist/paseo/native.d.ts +63 -0
  22. package/dist/paseo/native.js +549 -0
  23. package/dist/paseo/native.js.map +1 -0
  24. package/dist/paseo/runtime.d.ts +9 -1
  25. package/dist/paseo/runtime.js +348 -57
  26. package/dist/paseo/runtime.js.map +1 -1
  27. package/dist/paseo/start.d.ts +8 -4
  28. package/dist/paseo/start.js +166 -41
  29. package/dist/paseo/start.js.map +1 -1
  30. package/dist/paseo/trace.d.ts +12 -0
  31. package/dist/paseo/trace.js +26 -0
  32. package/dist/paseo/trace.js.map +1 -0
  33. package/dist/runtime/invocation.d.ts +10 -0
  34. package/dist/runtime/invocation.js +51 -0
  35. package/dist/runtime/invocation.js.map +1 -0
  36. package/docs/PASEO_NATIVE.md +181 -0
  37. package/package.json +5 -3
  38. package/scripts/link-self-bin.mjs +36 -0
  39. package/skills/engineering-workflow/SKILL.md +5 -1
  40. package/skills/paseo-orchestration/SKILL.md +33 -5
@@ -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 { detectPaseoCapabilities, isRecoverableDaemonStatus } from "./capabilities.js";
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 = 5;
11
- const DEFAULT_DEPS = { run: runProcess, commandExists, setupToolchain, loadTopology: loadResolvedAgentTopology, detectCapabilities: detectPaseoCapabilities, launchAgent: launchManagedPaseoAgent, probeAgent: probeManagedPaseoAgent, reconcileAssets: reconcileHarnessAssets };
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 || (sessionPolicy === "reuse-compatible" && options.forceNew !== 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 ? "paseo daemon status --json" : "paseo daemon status";
38
- let daemonStatus = await deps.run(daemonStatusCommand, { cwd: projectRoot, timeoutMs: 30_000 });
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.run("paseo daemon stop", { cwd: projectRoot, timeoutMs: 30_000 }).catch(() => undefined);
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, { cwd: projectRoot, timeoutMs: 60_000 });
44
- if (daemonStart.exitCode !== 0)
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, { cwd: projectRoot, timeoutMs: 30_000 });
48
- if (daemonStatus.exitCode !== 0)
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 && reuseRequested && !options.handoffPath && previous && compatibleState(previous, { projectRoot, leadName, provider, model, title })) {
61
- if (await deps.probeAgent(projectRoot, previous.agentId))
62
- return { daemonStarted, session: "reused", agentId: previous.agentId, title: previous.title, leadAgent: previous.leadAgent, provider: previous.provider, model: previous.model, stateFile, bootstrapFile, paseoVersion: capabilities.version };
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 ? buildAehControlMcp(aehCommand, projectRoot) : {};
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 = { version: 1, bootstrapVersion: PASEO_BOOTSTRAP_VERSION, projectRoot, projectName: config.project.name, agentId, title, leadAgent: leadName, provider, model, createdAt: new Date().toISOString(), generation, handoffPath: options.handoffPath };
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 { daemonStarted, session: "created", agentId, title, leadAgent: leadName, provider, model, stateFile, bootstrapFile, paseoVersion: capabilities.version, transport: launch.transport };
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 = ["aeh_operation_start_audit", "aeh_operation_start_run", "aeh_operation_status", "aeh_operation_cancel"];
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 ? `\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.` : "";
135
- return `AEH thin-lead Paseo bootstrap v${PASEO_BOOTSTRAP_VERSION}.
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 through Paseo status when exposed or run \`${aehCommand} context guard --agent "$PASEO_AGENT_ID"\`. Honor HANDOFF_REQUIRED/HARD_HANDOFF and stop the old lead when a replacement is created.
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) { const runtime = topology.agents[leadName].runtime; return runtime.command?.trim().split(/\s+/, 1)[0] || runtime.adapter; }
168
- async function missingCommands(root, commands, deps) { const result = []; for (const command of [...new Set(commands.filter(Boolean))])
169
- if (!(await deps.commandExists(command, root)))
170
- result.push(command); return result; }
171
- function paseoModel(selection) { return selection.runtimeAdapter === "codex" ? selection.modelName : selection.modelId; }
172
- async function loadState(file) { try {
173
- return JSON.parse(await fs.readFile(file, "utf8"));
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
@@ -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.