agentic-engineering-harness 0.6.6 → 0.6.8

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.
@@ -4,10 +4,10 @@ import { reconcileHarnessAssets } from "../core/assets.js";
4
4
  import type { HarnessProjectConfig } from "../core/types.js";
5
5
  import { setupToolchain } from "../toolchain/setup.js";
6
6
  import { commandExists, runProcess } from "../utils/process.js";
7
- import { detectPaseoCapabilities } from "./capabilities.js";
7
+ import { detectPaseoDaemonCapabilities } from "./capabilities.js";
8
8
  import { launchManagedPaseoAgent, probeManagedPaseoAgent } from "./runtime.js";
9
9
  import type { PaseoSdkAgentOptions } from "./sdk.js";
10
- export declare const PASEO_BOOTSTRAP_VERSION = 6;
10
+ export declare const PASEO_BOOTSTRAP_VERSION = 7;
11
11
  export type PaseoSessionPolicy = "fresh-on-start" | "reuse-compatible" | "resume-explicit";
12
12
  export interface PaseoStartOptions {
13
13
  autoSetup?: boolean;
@@ -55,7 +55,7 @@ interface PaseoStartDeps {
55
55
  commandExists: typeof commandExists;
56
56
  setupToolchain: typeof setupToolchain;
57
57
  loadTopology: typeof loadResolvedAgentTopology;
58
- detectCapabilities: typeof detectPaseoCapabilities;
58
+ detectCapabilities: typeof detectPaseoDaemonCapabilities;
59
59
  launchAgent: typeof launchManagedPaseoAgent;
60
60
  probeAgent: typeof probeManagedPaseoAgent;
61
61
  reconcileAssets?: typeof reconcileHarnessAssets;
@@ -6,10 +6,19 @@ 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
8
  import { VERSION } from "../version.js";
9
- import { detectPaseoCapabilities, isRecoverableDaemonStatus } from "./capabilities.js";
9
+ import { detectPaseoDaemonCapabilities, isRecoverableDaemonStatus } from "./capabilities.js";
10
10
  import { launchManagedPaseoAgent, probeManagedPaseoAgent } from "./runtime.js";
11
- export const PASEO_BOOTSTRAP_VERSION = 6;
12
- 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
+ };
13
22
  export async function startPaseoHarness(root, config, options = {}, deps = DEFAULT_DEPS) {
14
23
  const projectRoot = path.resolve(root);
15
24
  await (deps.reconcileAssets ?? reconcileHarnessAssets)(projectRoot);
@@ -20,7 +29,8 @@ export async function startPaseoHarness(root, config, options = {}, deps = DEFAU
20
29
  const stateFile = path.join(stateDir, "lead-session.json");
21
30
  const bootstrapFile = path.join(stateDir, "lead-bootstrap.md");
22
31
  const sessionPolicy = settings?.sessionPolicy ?? "fresh-on-start";
23
- const reuseRequested = options.resume === true || (sessionPolicy === "reuse-compatible" && options.forceNew !== true);
32
+ const reuseRequested = options.resume === true ||
33
+ (sessionPolicy === "reuse-compatible" && options.forceNew !== true);
24
34
  const topology = await deps.loadTopology(projectRoot, config, config.agents?.activeProfile);
25
35
  const leadName = resolveLeadAgent(topology, options.leadAgent ?? settings?.leadAgent);
26
36
  const selection = executionSelectionForAgent(topology, leadName);
@@ -31,23 +41,40 @@ export async function startPaseoHarness(root, config, options = {}, deps = DEFAU
31
41
  clearToolchainEnvCache();
32
42
  }
33
43
  const missingAfter = await missingCommands(projectRoot, ["paseo", runtimeCommand], deps);
34
- if (missingAfter.length)
44
+ if (missingAfter.length) {
35
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
+ }
36
47
  const capabilities = await deps.detectCapabilities(projectRoot, deps.run);
37
48
  let daemonStarted = false;
38
- const daemonStatusCommand = capabilities.daemonJson ? "paseo daemon status --json" : "paseo daemon status";
39
- 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
+ });
40
56
  if (daemonStatus.exitCode !== 0) {
41
- if (isRecoverableDaemonStatus(daemonStatus))
42
- 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
+ }
43
62
  const startCommand = webUi ? "paseo daemon start --web-ui" : "paseo daemon start";
44
- const daemonStart = await deps.run(startCommand, { cwd: projectRoot, timeoutMs: 60_000 });
45
- if (daemonStart.exitCode !== 0)
63
+ const daemonStart = await deps.run(startCommand, {
64
+ cwd: projectRoot,
65
+ timeoutMs: 60_000
66
+ });
67
+ if (daemonStart.exitCode !== 0) {
46
68
  throw new Error(`Failed to start Paseo daemon: ${diagnostic(daemonStart)}`);
69
+ }
47
70
  daemonStarted = true;
48
- daemonStatus = await deps.run(daemonStatusCommand, { cwd: projectRoot, timeoutMs: 30_000 });
49
- if (daemonStatus.exitCode !== 0)
71
+ daemonStatus = await deps.run(daemonStatusCommand, {
72
+ cwd: projectRoot,
73
+ timeoutMs: 30_000
74
+ });
75
+ if (daemonStatus.exitCode !== 0) {
50
76
  throw new Error(`Paseo daemon did not become ready after startup: ${diagnostic(daemonStatus)}`);
77
+ }
51
78
  }
52
79
  const provider = selection.paseoProvider;
53
80
  const model = paseoModel(selection);
@@ -58,9 +85,33 @@ export async function startPaseoHarness(root, config, options = {}, deps = DEFAU
58
85
  await fs.mkdir(stateDir, { recursive: true });
59
86
  await fs.writeFile(bootstrapFile, `${bootstrap}\n`);
60
87
  const previous = await loadState(stateFile);
61
- if (!options.forceNew && reuseRequested && !options.handoffPath && previous && compatibleState(previous, { projectRoot, leadName, provider, model, title, aehCommand })) {
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
+ })) {
62
100
  if (await deps.probeAgent(projectRoot, previous.agentId)) {
63
- return { daemonStarted, session: "reused", agentId: previous.agentId, title: previous.title, leadAgent: previous.leadAgent, provider: previous.provider, model: previous.model, aehVersion: VERSION, aehCommand, stateFile, bootstrapFile, paseoVersion: capabilities.version };
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
+ };
64
115
  }
65
116
  }
66
117
  const generation = (previous?.generation ?? 0) + 1;
@@ -74,7 +125,9 @@ export async function startPaseoHarness(root, config, options = {}, deps = DEFAU
74
125
  };
75
126
  if (options.handoffPath)
76
127
  labels["aeh.handoff"] = options.handoffPath;
77
- const operationControl = preferPaseoTools ? buildAehControlMcp(aehCommand, projectRoot) : {};
128
+ const operationControl = preferPaseoTools
129
+ ? buildAehControlMcp(aehCommand, projectRoot)
130
+ : {};
78
131
  const launch = await deps.launchAgent(projectRoot, {
79
132
  cwd: projectRoot,
80
133
  title,
@@ -86,12 +139,42 @@ export async function startPaseoHarness(root, config, options = {}, deps = DEFAU
86
139
  timeoutSeconds: 300,
87
140
  ...operationControl
88
141
  });
89
- if (launch.exitCode !== 0 || !launch.id)
142
+ if (launch.exitCode !== 0 || !launch.id) {
90
143
  throw new Error(`Failed to create AEH lead in Paseo${capabilities.version ? ` ${capabilities.version}` : ""}: ${launch.stderr || launch.stdout || `exit code ${launch.exitCode}`}`);
144
+ }
91
145
  const agentId = launch.id;
92
- const state = { version: 2, bootstrapVersion: PASEO_BOOTSTRAP_VERSION, aehVersion: VERSION, aehCommand, 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
+ };
93
162
  await fs.writeFile(stateFile, `${JSON.stringify(state, null, 2)}\n`);
94
- return { daemonStarted, session: "created", agentId, title, leadAgent: leadName, provider, model, aehVersion: VERSION, aehCommand, 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
+ };
95
178
  }
96
179
  export function buildAehControlMcp(aehCommand, projectRoot) {
97
180
  const argv = parseCommandVector(aehCommand);
@@ -99,7 +182,13 @@ export function buildAehControlMcp(aehCommand, projectRoot) {
99
182
  return {};
100
183
  const [command, ...baseArgs] = argv;
101
184
  const server = "aeh-control";
102
- 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
+ ];
103
192
  return {
104
193
  mcpServers: {
105
194
  [server]: {
@@ -130,12 +219,15 @@ export function parseCommandVector(value) {
130
219
  return undefined;
131
220
  }
132
221
  }
133
- 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)) {
134
223
  return undefined;
224
+ }
135
225
  return trimmed.split(/\s+/);
136
226
  }
137
227
  export function buildPaseoLeadBootstrap(projectName, projectRoot, aehCommand, preferPaseoTools = true, handoffPath) {
138
- 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.` : "";
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
+ : "";
139
231
  return `AEH thin-lead Paseo bootstrap v${PASEO_BOOTSTRAP_VERSION}; AEH runtime v${VERSION}.
140
232
 
141
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}
@@ -150,7 +242,7 @@ Remain a thin ORCHESTRATOR: preserve user intent, make semantic/risk decisions,
150
242
 
151
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.`}
152
244
 
153
- 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.
154
246
 
155
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.
156
248
 
@@ -159,28 +251,55 @@ This bootstrap is session configuration, not a user task. Do not emit an initial
159
251
  export function resolveLeadAgent(topology, configured) {
160
252
  if (configured) {
161
253
  const selected = topology.agents[configured];
162
- if (!selected || selected.disabled)
254
+ if (!selected || selected.disabled) {
163
255
  throw new Error(`Configured interactive lead agent '${configured}' is unavailable.`);
256
+ }
164
257
  return configured;
165
258
  }
166
259
  if (topology.agents.lead && !topology.agents.lead.disabled)
167
260
  return "lead";
168
261
  const orchestrator = Object.values(topology.agents).find((agent) => agent.role === "orchestrator" && !agent.disabled);
169
- if (!orchestrator)
262
+ if (!orchestrator) {
170
263
  throw new Error("aeh start requires an enabled orchestrator/lead agent in the resolved topology.");
264
+ }
171
265
  return orchestrator.name;
172
266
  }
173
- function runtimeExecutable(topology, leadName) { const runtime = topology.agents[leadName].runtime; return runtime.command?.trim().split(/\s+/, 1)[0] || runtime.adapter; }
174
- async function missingCommands(root, commands, deps) { const result = []; for (const command of [...new Set(commands.filter(Boolean))])
175
- if (!(await deps.commandExists(command, root)))
176
- result.push(command); return result; }
177
- function paseoModel(selection) { return selection.runtimeAdapter === "codex" ? selection.modelName : selection.modelId; }
178
- async function loadState(file) { try {
179
- 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}`;
180
304
  }
181
- catch {
182
- return undefined;
183
- } }
184
- function compatibleState(state, expected) { return state.version === 2 && state.bootstrapVersion === PASEO_BOOTSTRAP_VERSION && state.aehVersion === VERSION && state.aehCommand === expected.aehCommand && state.projectRoot === expected.projectRoot && state.leadAgent === expected.leadName && state.provider === expected.provider && state.model === expected.model && state.title === expected.title; }
185
- function diagnostic(result) { return [result.stderr.trim(), result.stdout.trim()].filter(Boolean).join("\n") || `exit code ${result.exitCode}`; }
186
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,185 @@
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. A normal managed lead calls it without an `agentId`. AEH resolves the context target in strict order: explicit diagnostic `agentId`, host-provided `PASEO_AGENT_ID`, then the compatible project-local `lead-session.json` written by `aeh start`. The durable fallback respects configured `orchestration.interactive.stateDir` and validates the lead-state schema version, current bootstrap/runtime version, project root, project name and agent id before use. It fails closed on stale or mismatched state and never guesses by listing agents. The selected identity source is traced as `harness.paseo.context.identity`.
55
+
56
+ `aeh context guard --agent ...` remains the CLI compatibility/non-interactive surface and owns handoff-artifact/rotation side effects.
57
+
58
+ ## Event-driven completion
59
+
60
+ Agent waiting is:
61
+
62
+ ```text
63
+ subscribe(agent_update)
64
+ |
65
+ +--> refetch current snapshot
66
+ |
67
+ +--> updates trigger refetch
68
+ |
69
+ `--> terminal state -> read recent timeline -> complete
70
+ ```
71
+
72
+ 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.
73
+
74
+ Fallback order:
75
+
76
+ ```text
77
+ Paseo SDK subscription
78
+ ↓ unavailable
79
+ public SDK wait compatibility
80
+ ↓ unavailable
81
+ Paseo CLI wait/log compatibility
82
+ ```
83
+
84
+ The selected path is emitted in Paseo integration traces.
85
+
86
+ ## Provider/model preflight
87
+
88
+ Before creating or materializing an agent, AEH attempts a public-SDK preflight:
89
+
90
+ 1. read the provider snapshot for the target cwd;
91
+ 2. reject explicitly disabled/error/unavailable providers;
92
+ 3. use the snapshot model catalog when available;
93
+ 4. otherwise call `listModels(provider, { cwd })`;
94
+ 5. when provider/model discovery fails, obtain a provider diagnostic where supported;
95
+ 6. fail before `createAgent` when the catalog authoritatively excludes the requested model;
96
+ 7. if the installed SDK does not expose provider preflight APIs, record `provider.preflight.skipped` and let agent creation remain authoritative.
97
+
98
+ AEH does not force provider refreshes on every launch. Paseo owns snapshot caching and explicit refresh semantics.
99
+
100
+ ## Intentional CLI parity gaps (P2)
101
+
102
+ CLI usage is not forbidden when the public SDK lacks required semantics. It must be narrow and traced.
103
+
104
+ ### Operation workspace creation
105
+
106
+ AEH currently uses:
107
+
108
+ ```text
109
+ paseo workspace create --isolation local --path ... --title ... --json
110
+ ```
111
+
112
+ 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.
113
+
114
+ Trace events:
115
+
116
+ ```text
117
+ harness.paseo.workspace.cli.required
118
+ harness.paseo.workspace.cli.created
119
+ harness.paseo.workspace.cli.error
120
+ ```
121
+
122
+ ### External controller cleanup
123
+
124
+ 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.
125
+
126
+ Trace events:
127
+
128
+ ```text
129
+ harness.paseo.cleanup.cli.required
130
+ harness.paseo.cleanup.cli.stop
131
+ harness.paseo.cleanup.cli.error
132
+ ```
133
+
134
+ These two gaps should be removed when the public SDK reaches parity.
135
+
136
+ ## Integration traces
137
+
138
+ Paseo integration events are always persisted locally to:
139
+
140
+ ```text
141
+ .harness/telemetry/paseo.ndjson
142
+ ```
143
+
144
+ When normal Harness telemetry is enabled, the same event is also emitted through `recordEvent` and the configured OTLP path.
145
+
146
+ Representative events:
147
+
148
+ ```text
149
+ harness.paseo.provider.preflight
150
+ harness.paseo.provider.preflight.skipped
151
+ harness.paseo.agent.launch
152
+ harness.paseo.agent.materialize
153
+ harness.paseo.agent.dispatch
154
+ harness.paseo.agent.snapshot
155
+ harness.paseo.agent.wait
156
+ harness.paseo.agent.wait.completed
157
+ harness.paseo.agent.wait.fallback
158
+ harness.paseo.context.identity
159
+ harness.paseo.context.status
160
+ harness.paseo.context.handoff
161
+ harness.paseo.fallback.cli
162
+ harness.paseo.workspace.cli.*
163
+ harness.paseo.cleanup.cli.*
164
+ ```
165
+
166
+ A useful trace answers:
167
+
168
+ - which transport was selected (`sdk` or `cli`);
169
+ - which observation source was used (`subscription`, snapshot, sdk-wait, cli-wait);
170
+ - how the managed lead identity was resolved (`argument`, `environment`, `lead-state`);
171
+ - whether a fallback was exceptional or an intentional SDK parity gap;
172
+ - why the fallback occurred;
173
+ - the associated agent/operation/provider/model/workspace;
174
+ - the relevant duration/status/error when applicable.
175
+
176
+ ## Migration rule
177
+
178
+ When Paseo adds public SDK parity for a CLI-only operation:
179
+
180
+ 1. add the public SDK path;
181
+ 2. make it primary;
182
+ 3. retain CLI only as version-negotiated compatibility if still necessary;
183
+ 4. add a regression proving SDK use;
184
+ 5. keep a fallback trace until the compatibility floor makes CLI removable;
185
+ 6. remove any capability inference based on parsing help text when it no longer serves a compatibility path.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agentic-engineering-harness",
3
- "version": "0.6.6",
3
+ "version": "0.6.8",
4
4
  "description": "OSS-first engineering harness for deterministic, spec-driven, issue-driven, audit-governed and orchestration-first multi-agent software delivery.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -57,7 +57,9 @@ Do not wait for model compaction as the normal context lifecycle.
57
57
  - >=80%: proactive handoff to a fresh lead;
58
58
  - >=90%: mandatory handoff before additional engineering work.
59
59
 
60
- Use Paseo's current status/tool data when it exposes context usage, otherwise use `aeh context guard --agent "$PASEO_AGENT_ID"`. When AEH writes a `.harness/paseo/handoffs/*.json` artifact, use `/paseo-handoff` (preferred) or a fresh `create_agent`, point the new lead at that artifact and stop continuing the workflow in the old lead. Deterministic artifacts, not a prose replay of the whole chat, carry state across the handoff. Detached AEH operations and their top-level worker agents survive lead rotation.
60
+ In a managed lead, prefer the injected `aeh_context_status` tool before broad work and again after completed-turn boundaries. It reads the current Paseo AgentSnapshot and applies AEH's thresholds to the canonical `lastUsage.contextWindowUsedTokens/contextWindowMaxTokens` fields. `NO_USAGE_YET` means the provider has not emitted usage yet; `USAGE_UNAVAILABLE` means those canonical fields are unavailable. Never infer pressure from generic input/output token counters.
61
+
62
+ Use `aeh context guard --agent "$PASEO_AGENT_ID"` only as the non-interactive/compatibility fallback. When AEH writes a `.harness/paseo/handoffs/*.json` artifact, use `/paseo-handoff` (preferred) or a fresh `create_agent`, point the new lead at that artifact and stop continuing the workflow in the old lead. Deterministic artifacts, not a prose replay of the whole chat, carry state across the handoff. Detached AEH operations and their top-level worker agents survive lead rotation.
61
63
 
62
64
  ## Intent layer
63
65
 
@@ -138,6 +140,8 @@ Use durable operation state for progress rather than narrating terminal silence:
138
140
 
139
141
  Paseo workspaces used for operation grouping are local orchestration containers and do not imply Git branch/worktree delivery. Delivery workspaces remain a separate isolation decision and take precedence for workers when present.
140
142
 
143
+ Paseo lifecycle/provider/context integration decisions are recorded under `.harness/telemetry/paseo.ndjson`; normal telemetry/OTLP receives the same events when enabled. Use these traces to distinguish SDK-native paths, negotiated fallbacks and intentional public-SDK parity gaps rather than inferring behavior from terminal output.
144
+
141
145
  ## Quality convergence and recovery
142
146
 
143
147
  After a sealed operation starts, do not reimplement Harness state machines in the lead. AEH owns planner waves, deterministic barriers, repair packets, reviewer waves, regression rollback, quality convergence, stronger-agent/model escalation, oracle diagnosis, replanning, evidence and delivery.