agentic-engineering-harness 0.4.16 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (104) hide show
  1. package/README.md +159 -189
  2. package/dist/agents/config.js +2 -0
  3. package/dist/agents/config.js.map +1 -1
  4. package/dist/agents/outputContracts.d.ts +1 -0
  5. package/dist/agents/outputContracts.js +12 -0
  6. package/dist/agents/outputContracts.js.map +1 -1
  7. package/dist/agents/parallelism.d.ts +1 -0
  8. package/dist/agents/parallelism.js +101 -14
  9. package/dist/agents/parallelism.js.map +1 -1
  10. package/dist/agents/structuredOutput.js +16 -4
  11. package/dist/agents/structuredOutput.js.map +1 -1
  12. package/dist/agents/waveExecutor.d.ts +41 -0
  13. package/dist/agents/waveExecutor.js +208 -0
  14. package/dist/agents/waveExecutor.js.map +1 -0
  15. package/dist/audit/intent.d.ts +20 -0
  16. package/dist/audit/intent.js +42 -0
  17. package/dist/audit/intent.js.map +1 -0
  18. package/dist/audit/run.d.ts +46 -0
  19. package/dist/audit/run.js +147 -0
  20. package/dist/audit/run.js.map +1 -0
  21. package/dist/cli.js +1 -1
  22. package/dist/cli.js.map +1 -1
  23. package/dist/core/config.js +28 -7
  24. package/dist/core/config.js.map +1 -1
  25. package/dist/core/controlPlane.d.ts +30 -0
  26. package/dist/core/controlPlane.js +131 -0
  27. package/dist/core/controlPlane.js.map +1 -0
  28. package/dist/core/init.js +13 -5
  29. package/dist/core/init.js.map +1 -1
  30. package/dist/core/run.d.ts +21 -0
  31. package/dist/core/run.js +104 -41
  32. package/dist/core/run.js.map +1 -1
  33. package/dist/core/types.d.ts +103 -1
  34. package/dist/distributed/queue.d.ts +11 -0
  35. package/dist/distributed/queue.js +140 -0
  36. package/dist/distributed/queue.js.map +1 -0
  37. package/dist/distributed/types.d.ts +34 -0
  38. package/dist/distributed/types.js +2 -0
  39. package/dist/distributed/types.js.map +1 -0
  40. package/dist/distributed/worker.d.ts +21 -0
  41. package/dist/distributed/worker.js +111 -0
  42. package/dist/distributed/worker.js.map +1 -0
  43. package/dist/entry.js +219 -46
  44. package/dist/entry.js.map +1 -1
  45. package/dist/evals/runner.js +2 -2
  46. package/dist/evals/runner.js.map +1 -1
  47. package/dist/evals/statistics.d.ts +38 -0
  48. package/dist/evals/statistics.js +88 -0
  49. package/dist/evals/statistics.js.map +1 -0
  50. package/dist/evidence/graph.d.ts +48 -0
  51. package/dist/evidence/graph.js +94 -0
  52. package/dist/evidence/graph.js.map +1 -0
  53. package/dist/issues/intake.d.ts +1 -1
  54. package/dist/mcp/benchmark.d.ts +24 -0
  55. package/dist/mcp/benchmark.js +82 -0
  56. package/dist/mcp/benchmark.js.map +1 -0
  57. package/dist/paseo/capabilities.d.ts +24 -0
  58. package/dist/paseo/capabilities.js +104 -0
  59. package/dist/paseo/capabilities.js.map +1 -0
  60. package/dist/paseo/context.d.ts +45 -0
  61. package/dist/paseo/context.js +153 -0
  62. package/dist/paseo/context.js.map +1 -0
  63. package/dist/paseo/start.d.ts +55 -0
  64. package/dist/paseo/start.js +138 -0
  65. package/dist/paseo/start.js.map +1 -0
  66. package/dist/policy/bundles.d.ts +27 -0
  67. package/dist/policy/bundles.js +129 -0
  68. package/dist/policy/bundles.js.map +1 -0
  69. package/dist/security/sandbox.d.ts +12 -0
  70. package/dist/security/sandbox.js +64 -0
  71. package/dist/security/sandbox.js.map +1 -0
  72. package/dist/spec/openspec.d.ts +28 -0
  73. package/dist/spec/openspec.js +179 -0
  74. package/dist/spec/openspec.js.map +1 -0
  75. package/dist/toolchain/resolve.js +54 -90
  76. package/dist/toolchain/resolve.js.map +1 -1
  77. package/dist/utils/process.d.ts +1 -0
  78. package/dist/utils/process.js +6 -1
  79. package/dist/utils/process.js.map +1 -1
  80. package/dist/validators/graphify.js +28 -6
  81. package/dist/validators/graphify.js.map +1 -1
  82. package/dist/workers/agentPrompt.d.ts +6 -1
  83. package/dist/workers/agentPrompt.js +118 -34
  84. package/dist/workers/agentPrompt.js.map +1 -1
  85. package/dist/workers/paseo.js +53 -19
  86. package/dist/workers/paseo.js.map +1 -1
  87. package/dist/workers/podman.js +30 -8
  88. package/dist/workers/podman.js.map +1 -1
  89. package/docs/PASEO.md +56 -4
  90. package/docs/V0.5.1.md +129 -0
  91. package/docs/V0.5.2.md +180 -0
  92. package/docs/V0.5.md +116 -0
  93. package/docs/V0.6.md +148 -0
  94. package/package.json +3 -3
  95. package/presets/agents/orchestration.jsonc +37 -0
  96. package/schemas/project.schema.json +38 -8
  97. package/skills/engineering-workflow/SKILL.md +113 -81
  98. package/skills/openspec-authoring/SKILL.md +26 -0
  99. package/skills/paseo-orchestration/SKILL.md +38 -0
  100. package/templates/AGENTS.md +40 -15
  101. package/templates/agents.source.jsonc +1 -1
  102. package/templates/openspec-config.yaml +24 -0
  103. package/templates/project.yaml +79 -1
  104. package/templates/toolchain.yaml +19 -2
@@ -1,3 +1,8 @@
1
1
  import type { AgentExecutionSelection } from "../agents/types.js";
2
2
  import type { HarnessProjectConfig, TaskContract, WorkerSession } from "../core/types.js";
3
- export declare function executeAgentPrompt(root: string, config: HarnessProjectConfig, contract: TaskContract, selection: AgentExecutionSelection, prompt: string): Promise<WorkerSession>;
3
+ export interface AgentPromptOptions {
4
+ outputContract?: string;
5
+ resumeSessionId?: string;
6
+ }
7
+ export declare function executeAgentPrompt(root: string, config: HarnessProjectConfig, contract: TaskContract, selection: AgentExecutionSelection, prompt: string, options?: AgentPromptOptions): Promise<WorkerSession>;
8
+ export declare function resumeAgentPrompt(root: string, config: HarnessProjectConfig, contract: TaskContract, selection: AgentExecutionSelection, previous: WorkerSession, prompt: string, options?: Omit<AgentPromptOptions, "resumeSessionId">): Promise<WorkerSession>;
@@ -1,22 +1,51 @@
1
+ import fs from "node:fs/promises";
2
+ import os from "node:os";
1
3
  import path from "node:path";
4
+ import { outputJsonSchema } from "../agents/outputContracts.js";
2
5
  import { buildOpenCodeRuntimeConfig } from "../agents/permissions.js";
6
+ import { loadFrozenSkillContext } from "../core/controlPlane.js";
3
7
  import { deliveryWorkspaceId } from "../delivery/handoff.js";
8
+ import { allowedSandboxEnvironment, hardenedPodmanArgs, sandboxImage } from "../security/sandbox.js";
4
9
  import { runProcess } from "../utils/process.js";
5
- export async function executeAgentPrompt(root, config, contract, selection, prompt) {
10
+ export async function executeAgentPrompt(root, config, contract, selection, prompt, options = {}) {
6
11
  const transport = selection.transport === "inherit" ? (config.orchestration?.provider ?? "none") : selection.transport;
7
- const effectivePrompt = withAgentCharter(selection, prompt);
12
+ const frozenSkills = await loadFrozenSkillContext(root, config, contract.task.id, selection.skills ?? []);
13
+ const effectivePrompt = withAgentCharter(selection, prompt, frozenSkills);
8
14
  if (transport === "paseo")
9
- return executeViaPaseo(root, config, contract, selection, effectivePrompt);
15
+ return executeViaPaseo(root, config, contract, selection, effectivePrompt, options);
10
16
  if (transport === "direct")
11
- return executeDirect(root, config, selection, effectivePrompt);
17
+ return executeDirect(root, config, selection, effectivePrompt, options);
12
18
  if (transport === "podman")
13
- return executePodman(root, config, contract, selection, effectivePrompt);
19
+ return executePodman(root, config, contract, selection, effectivePrompt, options);
14
20
  throw new Error(`Unsupported agent prompt transport: ${transport}`);
15
21
  }
16
- async function executeViaPaseo(root, config, contract, selection, prompt) {
22
+ export async function resumeAgentPrompt(root, config, contract, selection, previous, prompt, options = {}) {
23
+ if (!previous.id)
24
+ return executeAgentPrompt(root, config, contract, selection, prompt, options);
25
+ return executeAgentPrompt(root, config, contract, selection, prompt, { ...options, resumeSessionId: previous.id });
26
+ }
27
+ async function executeViaPaseo(root, config, contract, selection, prompt, options) {
28
+ if (options.resumeSessionId) {
29
+ const send = await runProcess(`paseo send ${quote(options.resumeSessionId)} ${quote(prompt)}`, { cwd: root, timeoutMs: 60_000 });
30
+ if (send.exitCode !== 0)
31
+ return { ...session(selection, send.exitCode, send.stdout, send.stderr), id: options.resumeSessionId };
32
+ const timeout = config.orchestration?.worker?.timeoutSeconds ?? 1800;
33
+ const wait = await runProcess(`paseo wait ${quote(options.resumeSessionId)} --timeout ${timeout}`, { cwd: root, timeoutMs: (timeout + 30) * 1000 });
34
+ const logs = await runProcess(`paseo logs ${quote(options.resumeSessionId)} --tail 200`, { cwd: root, timeoutMs: 60_000 });
35
+ return { ...session(selection, wait.exitCode, logs.stdout || wait.stdout, [wait.stderr, logs.stderr].filter(Boolean).join("\n")), id: options.resumeSessionId };
36
+ }
17
37
  const model = selection.runtimeAdapter === "codex" ? selection.modelName : selection.modelId;
18
38
  const title = `${config.orchestration?.worker?.titlePrefix ?? "aeh"}-${contract.task.id}-${selection.logicalAgent}`;
19
39
  const workspaceId = await deliveryWorkspaceId(root, config, contract.task.id);
40
+ const schema = options.outputContract ? outputJsonSchema(options.outputContract) : undefined;
41
+ if (schema) {
42
+ const parts = ["paseo run --quiet", `--title ${quote(title)}`, `--provider ${quote(selection.paseoProvider)}`, `--model ${quote(model)}`, `--output-schema ${quote(JSON.stringify(schema))}`];
43
+ if (workspaceId)
44
+ parts.push(`--workspace ${quote(workspaceId)}`);
45
+ parts.push(quote(prompt));
46
+ const result = await runProcess(parts.join(" "), { cwd: root, timeoutMs: (config.orchestration?.worker?.timeoutSeconds ?? 1800) * 1000 });
47
+ return session(selection, result.exitCode, result.stdout, result.stderr);
48
+ }
20
49
  const parts = ["paseo run --background --quiet", `--title ${quote(title)}`, `--provider ${quote(selection.paseoProvider)}`, `--model ${quote(model)}`];
21
50
  if (workspaceId)
22
51
  parts.push(`--workspace ${quote(workspaceId)}`);
@@ -32,53 +61,108 @@ async function executeViaPaseo(root, config, contract, selection, prompt) {
32
61
  const logs = await runProcess(`paseo logs ${quote(id)} --tail 200`, { cwd: root, timeoutMs: 60_000 });
33
62
  return { ...session(selection, wait.exitCode, logs.stdout || wait.stdout, [wait.stderr, logs.stderr].filter(Boolean).join("\n")), id };
34
63
  }
35
- async function executeDirect(root, config, selection, prompt) {
36
- let command;
37
- let env;
64
+ async function executeDirect(root, config, selection, prompt, options) {
38
65
  if (selection.runtimeAdapter === "opencode") {
39
66
  const args = ["opencode", "run", "--auto", "--format", "json", "--model", selection.modelId];
67
+ if (options.resumeSessionId)
68
+ args.push("--session", options.resumeSessionId);
40
69
  if (selection.variant)
41
70
  args.push("--variant", selection.variant);
42
71
  if (selection.nativeAgent)
43
72
  args.push("--agent", selection.nativeAgent);
44
73
  args.push(...selection.args, prompt);
45
- command = args.map(quote).join(" ");
46
- env = { OPENCODE_CONFIG_CONTENT: JSON.stringify(buildOpenCodeRuntimeConfig(selection, config)) };
74
+ const env = { OPENCODE_CONFIG_CONTENT: JSON.stringify(buildOpenCodeRuntimeConfig(selection, config)) };
75
+ const result = await runProcess(args.map(quote).join(" "), { cwd: root, timeoutMs: (config.orchestration?.worker?.timeoutSeconds ?? 1800) * 1000, env });
76
+ return { ...session(selection, result.exitCode, result.stdout, result.stderr), id: options.resumeSessionId ?? extractSessionId(result.stdout) };
77
+ }
78
+ if (selection.runtimeAdapter === "codex")
79
+ return executeCodex(root, config, selection, prompt, options);
80
+ throw new Error(`No direct runtime adapter for ${selection.runtimeAdapter}`);
81
+ }
82
+ async function executeCodex(root, config, selection, prompt, options) {
83
+ const schema = options.outputContract ? outputJsonSchema(options.outputContract) : undefined;
84
+ const temp = schema ? await fs.mkdtemp(path.join(os.tmpdir(), "aeh-codex-schema-")) : undefined;
85
+ try {
86
+ const schemaFile = temp ? path.join(temp, "schema.json") : undefined;
87
+ const outputFile = temp ? path.join(temp, "output.json") : undefined;
88
+ if (schemaFile)
89
+ await fs.writeFile(schemaFile, `${JSON.stringify(schema, null, 2)}\n`);
90
+ const args = options.resumeSessionId ? ["codex", "exec", "resume", options.resumeSessionId, "--json", "--model", selection.modelName] : ["codex", "exec", "--json", "--model", selection.modelName];
91
+ if (schemaFile && outputFile)
92
+ args.push("--output-schema", schemaFile, "-o", outputFile);
93
+ args.push(...selection.args, prompt);
94
+ const result = await runProcess(args.map(quote).join(" "), { cwd: root, timeoutMs: (config.orchestration?.worker?.timeoutSeconds ?? 1800) * 1000 });
95
+ let stdout = result.stdout;
96
+ if (outputFile) {
97
+ try {
98
+ stdout = await fs.readFile(outputFile, "utf8");
99
+ }
100
+ catch { /* event stream remains diagnostic fallback */ }
101
+ }
102
+ const id = options.resumeSessionId ?? extractSessionId(result.stdout);
103
+ return { ...session(selection, result.exitCode, stdout, [result.stderr, outputFile ? `CODEX_EVENT_STREAM:\n${result.stdout}` : ""].filter(Boolean).join("\n")), id };
104
+ }
105
+ finally {
106
+ if (temp)
107
+ await fs.rm(temp, { recursive: true, force: true });
47
108
  }
48
- else if (selection.runtimeAdapter === "codex")
49
- command = ["codex", "exec", "--json", "--model", selection.modelName, ...selection.args, prompt].map(quote).join(" ");
50
- else
51
- throw new Error(`No direct runtime adapter for ${selection.runtimeAdapter}`);
52
- const result = await runProcess(command, { cwd: root, timeoutMs: (config.orchestration?.worker?.timeoutSeconds ?? 1800) * 1000, env });
53
- return session(selection, result.exitCode, result.stdout, result.stderr);
54
109
  }
55
- async function executePodman(root, config, contract, selection, prompt) {
56
- const image = config.security?.sandbox?.image;
57
- if (!image)
58
- throw new Error("security.sandbox.image is required for Podman agent execution.");
110
+ async function executePodman(root, config, contract, selection, prompt, options) {
59
111
  if (selection.runtimeAdapter !== "opencode")
60
112
  throw new Error(`Podman prompt execution currently supports OpenCode; selected ${selection.runtimeAdapter}.`);
113
+ if (options.resumeSessionId)
114
+ throw new Error("Ephemeral hardened Podman sessions cannot resume a host agent session without an explicit persisted session volume.");
61
115
  const writable = selection.permissions.write === "allow";
62
- const mounts = [`-v ${quote(`${root}:/workspace:${writable ? "rw" : "ro"}`)}`];
116
+ const args = ["podman", "run", ...hardenedPodmanArgs(config, selection, writable)];
117
+ args.push("-v", `${root}:/workspace:${writable ? "rw" : "ro"}`);
63
118
  if (writable)
64
119
  for (const relative of sealedArtifacts(config, contract))
65
- mounts.push(`-v ${quote(`${path.resolve(root, relative)}:/workspace/${relative}:ro`)}`);
66
- const network = config.security?.sandbox?.network === false || selection.permissions.network === "deny" ? "--network none" : "";
120
+ args.push("-v", `${path.resolve(root, relative)}:/workspace/${relative}:ro`);
67
121
  const runtimeConfig = JSON.stringify(buildOpenCodeRuntimeConfig(selection, config));
68
- const args = ["opencode", "run", "--auto", "--format", "json", "--model", selection.modelId];
122
+ args.push("-e", `OPENCODE_CONFIG_CONTENT=${runtimeConfig}`);
123
+ for (const [name, value] of Object.entries(allowedSandboxEnvironment(config)))
124
+ args.push("-e", `${name}=${value}`);
125
+ args.push(sandboxImage(config), "sh", "-lc");
126
+ const runtimeArgs = ["opencode", "run", "--auto", "--format", "json", "--model", selection.modelId];
69
127
  if (selection.variant)
70
- args.push("--variant", selection.variant);
128
+ runtimeArgs.push("--variant", selection.variant);
71
129
  if (selection.nativeAgent)
72
- args.push("--agent", selection.nativeAgent);
73
- args.push(...selection.args, prompt);
74
- const inner = `cd /workspace && ${args.map(quote).join(" ")}`;
75
- const extra = (config.security?.sandbox?.extraArgs ?? []).map(quote).join(" ");
76
- const command = `podman run --rm -i --userns=keep-id ${network} -e ${quote(`OPENCODE_CONFIG_CONTENT=${runtimeConfig}`)} ${extra} ${mounts.join(" ")} ${quote(image)} sh -lc ${quote(inner)}`;
77
- const result = await runProcess(command, { cwd: root, timeoutMs: (config.orchestration?.worker?.timeoutSeconds ?? 1800) * 1000 });
78
- return session(selection, result.exitCode, result.stdout, result.stderr);
130
+ runtimeArgs.push("--agent", selection.nativeAgent);
131
+ runtimeArgs.push(...selection.args, prompt);
132
+ args.push(`cd /workspace && ${runtimeArgs.map(quote).join(" ")}`);
133
+ const result = await runProcess(args.map(quote).join(" "), { cwd: root, timeoutMs: (config.orchestration?.worker?.timeoutSeconds ?? 1800) * 1000 });
134
+ return { ...session(selection, result.exitCode, result.stdout, result.stderr), id: extractSessionId(result.stdout) };
79
135
  }
80
- function withAgentCharter(selection, prompt) { return selection.description ? `Agent charter for ${selection.logicalAgent}:\n${selection.description}\n\n${prompt}` : prompt; }
136
+ function withAgentCharter(selection, prompt, frozenSkills) { const sections = [selection.description ? `Agent charter for ${selection.logicalAgent}:\n${selection.description}` : undefined, frozenSkills ? `Frozen control-plane skill context (authoritative for this run):\n${frozenSkills}` : undefined, prompt].filter(Boolean); return sections.join("\n\n"); }
81
137
  function session(selection, exitCode, stdout, stderr) { return { provider: selection.runtimeAdapter, model: selection.modelName, logicalAgent: selection.logicalAgent, nativeAgent: selection.nativeAgent, runtime: selection.runtimeName, profile: selection.profile, exitCode, stdout, stderr }; }
82
138
  function sealedArtifacts(config, contract) { const dir = config.sdd?.contractsDir ?? ".harness/contracts"; return [...new Set([`${dir}/${contract.task.id}.yaml`, `.harness/seals/${contract.task.id}.json`, ...Object.values(contract.source ?? {}).filter((value) => Boolean(value))])]; }
139
+ function extractSessionId(text) { for (const line of text.split(/\r?\n/)) {
140
+ let value;
141
+ try {
142
+ value = JSON.parse(line);
143
+ }
144
+ catch {
145
+ continue;
146
+ }
147
+ const found = findSessionId(value);
148
+ if (found)
149
+ return found;
150
+ } return undefined; }
151
+ function findSessionId(value) { if (!value || typeof value !== "object")
152
+ return undefined; if (Array.isArray(value)) {
153
+ for (const item of value) {
154
+ const found = findSessionId(item);
155
+ if (found)
156
+ return found;
157
+ }
158
+ return undefined;
159
+ } const object = value; for (const key of ["thread_id", "session_id", "sessionID", "sessionId", "threadId"])
160
+ if (typeof object[key] === "string")
161
+ return object[key]; const kind = String(object.type ?? object.event ?? "").toLowerCase(); if ((kind.includes("thread") || kind.includes("session")) && typeof object.id === "string")
162
+ return object.id; for (const child of Object.values(object)) {
163
+ const found = findSessionId(child);
164
+ if (found)
165
+ return found;
166
+ } return undefined; }
83
167
  function quote(value) { return `'${value.replaceAll("'", "'\\''")}'`; }
84
168
  //# sourceMappingURL=agentPrompt.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"agentPrompt.js","sourceRoot":"","sources":["../../src/workers/agentPrompt.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agentPrompt.js","sourceRoot":"","sources":["../../src/workers/agentPrompt.ts"],"names":[],"mappings":"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"}
@@ -1,29 +1,63 @@
1
1
  import { validateExecutionCapabilities } from "../agents/permissions.js";
2
2
  import { deliveryWorkspaceId } from "../delivery/handoff.js";
3
+ import { detectPaseoCapabilities, buildPaseoBackgroundRunCommand, extractPaseoAgentId } from "../paseo/capabilities.js";
3
4
  import { commandExists, runProcess } from "../utils/process.js";
4
5
  import { buildRepairPrompt, buildWorkerPrompt } from "./prompt.js";
5
6
  export class PaseoWorkerExecutor {
6
7
  name = "paseo";
7
- async doctor(root, _config, selection) { const ok = await commandExists("paseo", root); if (!ok)
8
- return { ok: false, message: "Paseo CLI not found." }; if (selection) {
9
- const issues = validateExecutionCapabilities(selection, "paseo");
10
- if (issues.length)
11
- return { ok: false, message: issues.join("; ") };
12
- } return { ok: true, message: "Paseo CLI detected." }; }
8
+ async doctor(root, _config, selection) {
9
+ const ok = await commandExists("paseo", root);
10
+ if (!ok)
11
+ return { ok: false, message: "Paseo CLI not found." };
12
+ if (selection) {
13
+ const issues = validateExecutionCapabilities(selection, "paseo");
14
+ if (issues.length)
15
+ return { ok: false, message: issues.join("; ") };
16
+ }
17
+ try {
18
+ const caps = await detectPaseoCapabilities(root);
19
+ if (!caps.background)
20
+ return { ok: false, message: `Installed Paseo${caps.version ? ` ${caps.version}` : ""} does not advertise background runs required by the CLI fallback.` };
21
+ return { ok: true, message: `Paseo CLI detected${caps.version ? ` (${caps.version})` : ""}; launch flags negotiated dynamically.` };
22
+ }
23
+ catch (error) {
24
+ return { ok: false, message: `Paseo capability probe failed: ${String(error)}` };
25
+ }
26
+ }
13
27
  async start(root, config, contract, selection) { return this.launch(root, config, contract, buildWorkerPrompt(contract, selection), selection); }
14
- async repair(root, config, contract, session, packet, selection) { if (session.id && (!selection || session.logicalAgent === selection.logicalAgent)) {
15
- const send = await runProcess(`paseo send ${quote(session.id)} --no-wait ${quote(buildRepairPrompt(packet))}`, { cwd: root, timeoutMs: 60_000 });
16
- if (send.exitCode !== 0)
17
- throw new Error(`Paseo failed to send repair prompt: ${send.stderr || send.stdout}`);
18
- return this.waitAndCollect(root, config, session);
19
- } return this.launch(root, config, contract, `${buildWorkerPrompt(contract, selection)}\n\n${buildRepairPrompt(packet)}`, selection); }
20
- async launch(root, config, contract, prompt, selection) { const worker = config.orchestration?.worker; const provider = selection?.paseoProvider ?? worker?.provider ?? "opencode"; const model = selection ? (selection.runtimeAdapter === "codex" ? selection.modelName : selection.modelId) : worker?.model; const title = `${worker?.titlePrefix ?? "aeh"}-${contract.task.id}-${selection?.logicalAgent ?? "worker"}`; const workspaceId = await deliveryWorkspaceId(root, config, contract.task.id); const parts = ["paseo run --background --quiet", `--title ${quote(title)}`, `--provider ${quote(provider)}`]; if (workspaceId)
21
- parts.push(`--workspace ${quote(workspaceId)}`); if (model)
22
- parts.push(`--model ${quote(model)}`); parts.push(quote(prompt)); const launch = await runProcess(parts.join(" "), { cwd: root, timeoutMs: 60_000 }); if (launch.exitCode !== 0)
23
- throw new Error(`Paseo failed to launch worker: ${launch.stderr || launch.stdout}`); const id = launch.stdout.split(/\r?\n/).map((line) => line.trim()).filter(Boolean).at(-1); if (!id)
24
- throw new Error("Paseo returned no agent id for the background worker."); return this.waitAndCollect(root, config, { id, provider, model, logicalAgent: selection?.logicalAgent, nativeAgent: selection?.nativeAgent, runtime: selection?.runtimeName, profile: selection?.profile, exitCode: 0, stdout: launch.stdout, stderr: "" }); }
25
- async waitAndCollect(root, config, session) { const timeout = config.orchestration?.worker?.timeoutSeconds ?? 1800; const wait = await runProcess(`paseo wait ${quote(session.id)} --timeout ${timeout}`, { cwd: root, timeoutMs: (timeout + 30) * 1000 }); if (wait.exitCode !== 0)
26
- return { ...session, exitCode: wait.exitCode, stderr: wait.stderr || wait.stdout }; const logs = await runProcess(`paseo logs ${quote(session.id)} --tail 30`, { cwd: root, timeoutMs: 60_000 }); return { ...session, exitCode: 0, stdout: logs.stdout || wait.stdout || session.stdout, stderr: [session.stderr, wait.stderr, logs.stderr].filter(Boolean).join("\n") }; }
28
+ async repair(root, config, contract, session, packet, selection) {
29
+ if (session.id && (!selection || session.logicalAgent === selection.logicalAgent)) {
30
+ const send = await runProcess(`paseo send ${quote(session.id)} --no-wait ${quote(buildRepairPrompt(packet))}`, { cwd: root, timeoutMs: 60_000 });
31
+ if (send.exitCode !== 0)
32
+ throw new Error(`Paseo failed to send repair prompt: ${send.stderr || send.stdout}`);
33
+ return this.waitAndCollect(root, config, session);
34
+ }
35
+ return this.launch(root, config, contract, `${buildWorkerPrompt(contract, selection)}\n\n${buildRepairPrompt(packet)}`, selection);
36
+ }
37
+ async launch(root, config, contract, prompt, selection) {
38
+ const worker = config.orchestration?.worker;
39
+ const provider = selection?.paseoProvider ?? worker?.provider ?? "opencode";
40
+ const model = selection ? (selection.runtimeAdapter === "codex" ? selection.modelName : selection.modelId) : worker?.model;
41
+ const title = `${worker?.titlePrefix ?? "aeh"}-${contract.task.id}-${selection?.logicalAgent ?? "worker"}`;
42
+ const workspaceId = await deliveryWorkspaceId(root, config, contract.task.id);
43
+ const capabilities = await detectPaseoCapabilities(root);
44
+ const command = buildPaseoBackgroundRunCommand({ title, provider, model, workspaceId, prompt }, capabilities);
45
+ const launch = await runProcess(command, { cwd: root, timeoutMs: 60_000 });
46
+ if (launch.exitCode !== 0)
47
+ throw new Error(`Paseo failed to launch worker${capabilities.version ? ` with ${capabilities.version}` : ""}: ${launch.stderr || launch.stdout}`);
48
+ const id = extractPaseoAgentId(launch.stdout);
49
+ if (!id)
50
+ throw new Error("Paseo returned no parseable agent id for the background worker.");
51
+ return this.waitAndCollect(root, config, { id, provider, model, logicalAgent: selection?.logicalAgent, nativeAgent: selection?.nativeAgent, runtime: selection?.runtimeName, profile: selection?.profile, exitCode: 0, stdout: launch.stdout, stderr: "" });
52
+ }
53
+ async waitAndCollect(root, config, session) {
54
+ const timeout = config.orchestration?.worker?.timeoutSeconds ?? 1800;
55
+ const wait = await runProcess(`paseo wait ${quote(session.id)} --timeout ${timeout}`, { cwd: root, timeoutMs: (timeout + 30) * 1000 });
56
+ if (wait.exitCode !== 0)
57
+ return { ...session, exitCode: wait.exitCode, stderr: wait.stderr || wait.stdout };
58
+ const logs = await runProcess(`paseo logs ${quote(session.id)} --tail 30`, { cwd: root, timeoutMs: 60_000 });
59
+ return { ...session, exitCode: 0, stdout: logs.stdout || wait.stdout || session.stdout, stderr: [session.stderr, wait.stderr, logs.stderr].filter(Boolean).join("\n") };
60
+ }
27
61
  }
28
62
  function quote(value) { return `'${value.replaceAll("'", "'\\''")}'`; }
29
63
  //# sourceMappingURL=paseo.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"paseo.js","sourceRoot":"","sources":["../../src/workers/paseo.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"paseo.js","sourceRoot":"","sources":["../../src/workers/paseo.ts"],"names":[],"mappings":"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"}
@@ -1,22 +1,44 @@
1
1
  import path from "node:path";
2
2
  import { buildOpenCodeRuntimeConfig } from "../agents/permissions.js";
3
+ import { allowedSandboxEnvironment, hardenedPodmanArgs, sandboxImage } from "../security/sandbox.js";
3
4
  import { commandExists, runProcess } from "../utils/process.js";
4
5
  import { buildRepairPrompt, buildWorkerPrompt } from "./prompt.js";
5
6
  export class PodmanWorkerExecutor {
6
7
  name = "podman";
7
8
  async doctor(root, config) { const ok = await commandExists("podman", root); if (!ok)
8
9
  return { ok: false, message: "Podman CLI not found." }; if (!config.security?.sandbox?.image)
9
- return { ok: false, message: "security.sandbox.image is required for Podman worker execution." }; return { ok: true, message: "Podman worker sandbox configured." }; }
10
+ return { ok: false, message: "security.sandbox.image is required for Podman worker execution." }; return { ok: true, message: "Hardened Podman worker sandbox configured." }; }
10
11
  async start(root, config, contract, selection) { return this.run(root, config, contract, buildWorkerPrompt(contract, selection), selection); }
11
12
  async repair(root, config, contract, _session, packet, selection) { return this.run(root, config, contract, `${buildWorkerPrompt(contract, selection)}\n\n${buildRepairPrompt(packet)}`, selection); }
12
- async run(root, config, contract, prompt, selection) { const sandbox = config.security?.sandbox; const image = sandbox?.image; if (!image)
13
- throw new Error("Podman image is not configured."); const runtime = selection?.runtimeAdapter ?? "opencode"; if (runtime !== "opencode")
14
- throw new Error(`Podman executor currently supports OpenCode runtime; selected ${runtime}.`); const model = selection?.modelId ?? config.orchestration?.worker?.model; const mounts = [`-v ${quote(`${root}:/workspace:rw`)}`]; for (const relative of sealedArtifacts(config, contract))
15
- mounts.push(`-v ${quote(`${path.resolve(root, relative)}:/workspace/${relative}:ro`)}`); const network = sandbox?.network === false ? "--network none" : ""; const extra = (sandbox?.extraArgs ?? []).map(quote).join(" "); const runtimeConfig = selection ? JSON.stringify(buildOpenCodeRuntimeConfig(selection, config)) : undefined; const envArg = runtimeConfig ? `-e ${quote(`OPENCODE_CONFIG_CONTENT=${runtimeConfig}`)}` : ""; const args = ["opencode", "run", "--auto"]; if (model)
16
- args.push("--model", model); if (selection?.variant)
17
- args.push("--variant", selection.variant); if (selection?.nativeAgent)
18
- args.push("--agent", selection.nativeAgent); args.push(...(selection?.args ?? []), prompt); const inner = `cd /workspace && ${args.map(quote).join(" ")}`; const command = `podman run --rm -i --userns=keep-id ${network} ${envArg} ${extra} ${mounts.join(" ")} ${quote(image)} sh -lc ${quote(inner)}`; const timeout = config.orchestration?.worker?.timeoutSeconds ?? 1800; const result = await runProcess(command, { cwd: root, timeoutMs: timeout * 1000 }); return { provider: runtime, model: selection?.modelName ?? model, logicalAgent: selection?.logicalAgent, nativeAgent: selection?.nativeAgent, runtime: selection?.runtimeName, profile: selection?.profile, exitCode: result.exitCode, stdout: result.stdout, stderr: result.stderr }; }
13
+ async run(root, config, contract, prompt, selection) {
14
+ const runtime = selection?.runtimeAdapter ?? "opencode";
15
+ if (runtime !== "opencode")
16
+ throw new Error(`Podman executor currently supports OpenCode runtime; selected ${runtime}.`);
17
+ const model = selection?.modelId ?? config.orchestration?.worker?.model;
18
+ const fallback = selection ?? legacySelection(model);
19
+ const podmanArgs = hardenedPodmanArgs(config, fallback, true);
20
+ const args = ["podman", "run", ...podmanArgs, "-v", `${root}:/workspace:rw`];
21
+ for (const relative of sealedArtifacts(config, contract))
22
+ args.push("-v", `${path.resolve(root, relative)}:/workspace/${relative}:ro`);
23
+ if (selection)
24
+ args.push("-e", `OPENCODE_CONFIG_CONTENT=${JSON.stringify(buildOpenCodeRuntimeConfig(selection, config))}`);
25
+ for (const [name, value] of Object.entries(allowedSandboxEnvironment(config)))
26
+ args.push("-e", `${name}=${value}`);
27
+ const runtimeArgs = ["opencode", "run", "--auto", "--format", "json"];
28
+ if (model)
29
+ runtimeArgs.push("--model", model);
30
+ if (selection?.variant)
31
+ runtimeArgs.push("--variant", selection.variant);
32
+ if (selection?.nativeAgent)
33
+ runtimeArgs.push("--agent", selection.nativeAgent);
34
+ runtimeArgs.push(...(selection?.args ?? []), prompt);
35
+ args.push(sandboxImage(config), "sh", "-lc", `cd /workspace && ${runtimeArgs.map(quote).join(" ")}`);
36
+ const timeout = config.orchestration?.worker?.timeoutSeconds ?? 1800;
37
+ const result = await runProcess(args.map(quote).join(" "), { cwd: root, timeoutMs: timeout * 1000 });
38
+ return { provider: runtime, model: selection?.modelName ?? model, logicalAgent: selection?.logicalAgent, nativeAgent: selection?.nativeAgent, runtime: selection?.runtimeName, profile: selection?.profile, exitCode: result.exitCode, stdout: result.stdout, stderr: result.stderr };
39
+ }
19
40
  }
41
+ function legacySelection(model) { return { logicalAgent: "legacy-worker", role: "implementer", profile: "legacy", domains: ["*"], runtimeName: "opencode", runtimeAdapter: "opencode", paseoProvider: "opencode", modelAlias: "legacy", modelProvider: model?.split("/")[0] ?? "opencode", modelName: model?.split("/").at(-1) ?? "default", modelId: model ?? "opencode/default", transport: "podman", permissions: { read: "allow", write: "allow", shell: "allow", network: "ask", delegate: "deny", review: "deny", validate: "allow", gitWrite: "deny" }, skills: [], mcps: [], args: [], runtimeCapabilities: { modelSelection: true, sessions: false, structuredOutput: false } }; }
20
42
  function sealedArtifacts(config, contract) { const contractsDir = config.sdd?.contractsDir ?? ".harness/contracts"; return [...new Set([`${contractsDir}/${contract.task.id}.yaml`, `.harness/seals/${contract.task.id}.json`, ...Object.values(contract.source ?? {}).filter((value) => Boolean(value))])]; }
21
43
  function quote(value) { return `'${value.replaceAll("'", "'\\''")}'`; }
22
44
  //# sourceMappingURL=podman.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"podman.js","sourceRoot":"","sources":["../../src/workers/podman.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"podman.js","sourceRoot":"","sources":["../../src/workers/podman.ts"],"names":[],"mappings":"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"}
package/docs/PASEO.md CHANGED
@@ -1,9 +1,61 @@
1
1
  # Paseo Integration
2
2
 
3
- Paseo is the default orchestration control plane because an existing lead agent can spawn an OpenCode subagent in the same workspace and keep controlling it remotely.
3
+ Paseo is AEH's default interactive orchestration surface. In v0.6 the design intentionally separates **agent-local orchestration** from the **external deterministic Harness adapter**.
4
4
 
5
- The executor uses the scriptable flow `paseo run --background --quiet`, `paseo wait`, `paseo logs`, and `paseo send` for repairs. When the lead itself is a Paseo agent, Paseo supplies parent/workspace defaults automatically.
5
+ ## Conversational lead
6
6
 
7
- The lead remains responsible for architecture and final semantic review. Paseo is an execution/control primitive, not the source of engineering truth.
7
+ When the lead is running inside Paseo and Paseo exposes its orchestration tools, prefer the native/MCP control surface:
8
8
 
9
- For a directly container-isolated worker, configure `orchestration.provider: podman`. This trades Paseo child-session visibility for stronger process isolation. Advanced setups can instead configure a Paseo custom provider binary/wrapper around a containerized OpenCode CLI.
9
+ - create a bounded agent;
10
+ - send follow-up prompts;
11
+ - inspect agent status/activity;
12
+ - cancel/archive/update agent lifecycle;
13
+ - use `/paseo` for the current tool reference;
14
+ - use `/paseo-handoff` when responsibility moves to a fresh agent.
15
+
16
+ This keeps the lead as an orchestrator and avoids filling its context with hand-written shell control loops. Committee/advisor skills are advisory reasoning only; deterministic AEH validation remains authoritative.
17
+
18
+ ## External AEH fallback
19
+
20
+ AEH itself is an external Node control-plane process and cannot assume access to tools injected only into an agent conversation. Therefore it retains a CLI adapter for deterministic launches, waits, logs and repair prompts.
21
+
22
+ The adapter no longer hard-codes a specific Paseo CLI surface. Before launch it probes:
23
+
24
+ ```text
25
+ paseo --version
26
+ paseo run --help
27
+ paseo daemon status --help
28
+ ```
29
+
30
+ and conditionally uses JSON/quiet/background flags only when supported. This permits older Paseo installations to fail with a precise capability error rather than because AEH blindly passed a newer flag.
31
+
32
+ Recognized stale/unreachable daemon states are recovered by stop/start + readiness verification before launching a lead/worker.
33
+
34
+ ## Session policy
35
+
36
+ Default:
37
+
38
+ ```yaml
39
+ orchestration:
40
+ interactive:
41
+ sessionPolicy: fresh-on-start
42
+ ```
43
+
44
+ ```bash
45
+ aeh start # fresh lead
46
+ aeh start --resume # explicit compatible reuse
47
+ ```
48
+
49
+ Workspaces and durable AEH state remain reusable even though normal conversational context starts clean.
50
+
51
+ ## Context rotation
52
+
53
+ Default pressure policy is 70/80/90 percent. `aeh context guard` consumes a context ratio only when Paseo exposes a usable field; AEH does not guess.
54
+
55
+ At the handoff threshold it writes a deterministic `.harness/paseo/handoffs/*.json` artifact. From a managed Paseo lead it also creates the replacement lead automatically and bootstraps it from the handoff artifact and referenced sealed/run/audit/delivery state. The old lead stops engineering work rather than compacting and continuing normally.
56
+
57
+ ## Trust boundary
58
+
59
+ Paseo owns communication/process/session lifecycle. It is not normative engineering truth. AEH TaskContracts, seals, deterministic reports, evidence graphs and quality gates continue to decide acceptance.
60
+
61
+ For stronger direct process isolation configure Podman sandboxing where appropriate; Paseo orchestration and worker sandboxing remain separate policy axes.