agentic-engineering-harness 0.5.1 → 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 (50) hide show
  1. package/README.md +157 -216
  2. package/dist/agents/config.js +2 -0
  3. package/dist/agents/config.js.map +1 -1
  4. package/dist/audit/intent.d.ts +20 -0
  5. package/dist/audit/intent.js +42 -0
  6. package/dist/audit/intent.js.map +1 -0
  7. package/dist/audit/run.d.ts +46 -0
  8. package/dist/audit/run.js +147 -0
  9. package/dist/audit/run.js.map +1 -0
  10. package/dist/cli.js +1 -1
  11. package/dist/core/config.js +6 -2
  12. package/dist/core/config.js.map +1 -1
  13. package/dist/core/controlPlane.js +1 -1
  14. package/dist/core/controlPlane.js.map +1 -1
  15. package/dist/core/init.js +3 -3
  16. package/dist/core/init.js.map +1 -1
  17. package/dist/core/types.d.ts +20 -0
  18. package/dist/entry.js +112 -3
  19. package/dist/entry.js.map +1 -1
  20. package/dist/issues/intake.d.ts +1 -1
  21. package/dist/paseo/capabilities.d.ts +24 -0
  22. package/dist/paseo/capabilities.js +104 -0
  23. package/dist/paseo/capabilities.js.map +1 -0
  24. package/dist/paseo/context.d.ts +45 -0
  25. package/dist/paseo/context.js +153 -0
  26. package/dist/paseo/context.js.map +1 -0
  27. package/dist/paseo/start.d.ts +10 -2
  28. package/dist/paseo/start.js +56 -73
  29. package/dist/paseo/start.js.map +1 -1
  30. package/dist/spec/openspec.d.ts +28 -0
  31. package/dist/spec/openspec.js +179 -0
  32. package/dist/spec/openspec.js.map +1 -0
  33. package/dist/toolchain/resolve.js +3 -0
  34. package/dist/toolchain/resolve.js.map +1 -1
  35. package/dist/workers/paseo.js +53 -19
  36. package/dist/workers/paseo.js.map +1 -1
  37. package/docs/PASEO.md +56 -4
  38. package/docs/V0.5.2.md +180 -0
  39. package/docs/V0.6.md +148 -0
  40. package/package.json +3 -3
  41. package/presets/agents/orchestration.jsonc +37 -0
  42. package/schemas/project.schema.json +13 -2
  43. package/skills/engineering-workflow/SKILL.md +110 -86
  44. package/skills/openspec-authoring/SKILL.md +26 -0
  45. package/skills/paseo-orchestration/SKILL.md +38 -0
  46. package/templates/AGENTS.md +36 -17
  47. package/templates/agents.source.jsonc +1 -1
  48. package/templates/openspec-config.yaml +24 -0
  49. package/templates/project.yaml +11 -2
  50. package/templates/toolchain.yaml +11 -1
@@ -3,14 +3,18 @@ import { loadResolvedAgentTopology } from "../agents/config.js";
3
3
  import type { HarnessProjectConfig } from "../core/types.js";
4
4
  import { setupToolchain } from "../toolchain/setup.js";
5
5
  import { commandExists, runProcess } from "../utils/process.js";
6
- export declare const PASEO_BOOTSTRAP_VERSION = 1;
6
+ import { detectPaseoCapabilities } from "./capabilities.js";
7
+ export declare const PASEO_BOOTSTRAP_VERSION = 3;
8
+ export type PaseoSessionPolicy = "fresh-on-start" | "reuse-compatible" | "resume-explicit";
7
9
  export interface PaseoStartOptions {
8
10
  autoSetup?: boolean;
9
11
  webUi?: boolean;
10
12
  forceNew?: boolean;
13
+ resume?: boolean;
11
14
  leadAgent?: string;
12
15
  title?: string;
13
16
  aehCommand?: string;
17
+ handoffPath?: string;
14
18
  }
15
19
  export interface PaseoLeadState {
16
20
  version: 1;
@@ -23,6 +27,8 @@ export interface PaseoLeadState {
23
27
  provider: string;
24
28
  model: string;
25
29
  createdAt: string;
30
+ generation?: number;
31
+ handoffPath?: string;
26
32
  }
27
33
  export interface PaseoStartResult {
28
34
  daemonStarted: boolean;
@@ -34,14 +40,16 @@ export interface PaseoStartResult {
34
40
  model: string;
35
41
  stateFile: string;
36
42
  bootstrapFile: string;
43
+ paseoVersion?: string;
37
44
  }
38
45
  interface PaseoStartDeps {
39
46
  run: typeof runProcess;
40
47
  commandExists: typeof commandExists;
41
48
  setupToolchain: typeof setupToolchain;
42
49
  loadTopology: typeof loadResolvedAgentTopology;
50
+ detectCapabilities: typeof detectPaseoCapabilities;
43
51
  }
44
52
  export declare function startPaseoHarness(root: string, config: HarnessProjectConfig, options?: PaseoStartOptions, deps?: PaseoStartDeps): Promise<PaseoStartResult>;
45
- export declare function buildPaseoLeadBootstrap(projectName: string, projectRoot: string, aehCommand: string): string;
53
+ export declare function buildPaseoLeadBootstrap(projectName: string, projectRoot: string, aehCommand: string, preferPaseoTools?: boolean, handoffPath?: string): string;
46
54
  export declare function resolveLeadAgent(topology: ResolvedAgentTopology, configured?: string): string;
47
55
  export {};
@@ -4,26 +4,21 @@ import { loadResolvedAgentTopology } from "../agents/config.js";
4
4
  import { executionSelectionForAgent } from "../agents/routing.js";
5
5
  import { setupToolchain } from "../toolchain/setup.js";
6
6
  import { clearToolchainEnvCache, commandExists, runProcess } from "../utils/process.js";
7
- export const PASEO_BOOTSTRAP_VERSION = 1;
8
- const DEFAULT_DEPS = {
9
- run: runProcess,
10
- commandExists,
11
- setupToolchain,
12
- loadTopology: loadResolvedAgentTopology
13
- };
7
+ import { buildPaseoBackgroundRunCommand, detectPaseoCapabilities, extractPaseoAgentId, isRecoverableDaemonStatus } from "./capabilities.js";
8
+ export const PASEO_BOOTSTRAP_VERSION = 3;
9
+ const DEFAULT_DEPS = { run: runProcess, commandExists, setupToolchain, loadTopology: loadResolvedAgentTopology, detectCapabilities: detectPaseoCapabilities };
14
10
  export async function startPaseoHarness(root, config, options = {}, deps = DEFAULT_DEPS) {
15
11
  const projectRoot = path.resolve(root);
16
12
  const settings = config.orchestration?.interactive;
17
13
  const autoSetup = options.autoSetup ?? settings?.autoSetup ?? true;
18
14
  const webUi = options.webUi ?? settings?.webUi ?? true;
19
- const forceNew = options.forceNew ?? false;
20
- const reuseSession = settings?.reuseSession ?? true;
21
15
  const stateDir = path.resolve(projectRoot, settings?.stateDir ?? ".harness/paseo");
22
16
  const stateFile = path.join(stateDir, "lead-session.json");
23
17
  const bootstrapFile = path.join(stateDir, "lead-bootstrap.md");
18
+ const sessionPolicy = settings?.sessionPolicy ?? "fresh-on-start";
19
+ const reuseRequested = options.resume === true || (sessionPolicy === "reuse-compatible" && options.forceNew !== true);
24
20
  const topology = await deps.loadTopology(projectRoot, config, config.agents?.activeProfile);
25
21
  const leadName = resolveLeadAgent(topology, options.leadAgent ?? settings?.leadAgent);
26
- const lead = topology.agents[leadName];
27
22
  const selection = executionSelectionForAgent(topology, leadName);
28
23
  const runtimeCommand = runtimeExecutable(topology, leadName);
29
24
  const missingBefore = await missingCommands(projectRoot, ["paseo", runtimeCommand], deps);
@@ -34,87 +29,83 @@ export async function startPaseoHarness(root, config, options = {}, deps = DEFAU
34
29
  const missingAfter = await missingCommands(projectRoot, ["paseo", runtimeCommand], deps);
35
30
  if (missingAfter.length)
36
31
  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.`);
32
+ const capabilities = await deps.detectCapabilities(projectRoot, deps.run);
37
33
  let daemonStarted = false;
38
- const daemonStatus = await deps.run("paseo daemon status --json", { cwd: projectRoot, timeoutMs: 30_000 });
34
+ const daemonStatusCommand = capabilities.daemonJson ? "paseo daemon status --json" : "paseo daemon status";
35
+ let daemonStatus = await deps.run(daemonStatusCommand, { cwd: projectRoot, timeoutMs: 30_000 });
39
36
  if (daemonStatus.exitCode !== 0) {
37
+ if (isRecoverableDaemonStatus(daemonStatus))
38
+ await deps.run("paseo daemon stop", { cwd: projectRoot, timeoutMs: 30_000 }).catch(() => undefined);
40
39
  const startCommand = webUi ? "paseo daemon start --web-ui" : "paseo daemon start";
41
40
  const daemonStart = await deps.run(startCommand, { cwd: projectRoot, timeoutMs: 60_000 });
42
41
  if (daemonStart.exitCode !== 0)
43
42
  throw new Error(`Failed to start Paseo daemon: ${diagnostic(daemonStart)}`);
44
43
  daemonStarted = true;
45
- const verify = await deps.run("paseo daemon status --json", { cwd: projectRoot, timeoutMs: 30_000 });
46
- if (verify.exitCode !== 0)
47
- throw new Error(`Paseo daemon did not become ready after startup: ${diagnostic(verify)}`);
44
+ daemonStatus = await deps.run(daemonStatusCommand, { cwd: projectRoot, timeoutMs: 30_000 });
45
+ if (daemonStatus.exitCode !== 0)
46
+ throw new Error(`Paseo daemon did not become ready after startup: ${diagnostic(daemonStatus)}`);
48
47
  }
49
48
  const provider = selection.paseoProvider;
50
49
  const model = paseoModel(selection);
51
50
  const title = options.title ?? settings?.title ?? `AEH Lead · ${config.project.name}`;
52
51
  const aehCommand = options.aehCommand ?? "aeh";
53
- const bootstrap = buildPaseoLeadBootstrap(config.project.name, projectRoot, aehCommand);
52
+ const bootstrap = buildPaseoLeadBootstrap(config.project.name, projectRoot, aehCommand, settings?.usePaseoTools !== false, options.handoffPath);
54
53
  await fs.mkdir(stateDir, { recursive: true });
55
54
  await fs.writeFile(bootstrapFile, `${bootstrap}\n`);
56
- if (!forceNew && reuseSession) {
57
- const existing = await loadState(stateFile);
58
- if (existing && compatibleState(existing, { projectRoot, leadName, provider, model, title })) {
59
- const probe = await deps.run(`paseo logs ${quote(existing.agentId)} --tail 1`, { cwd: projectRoot, timeoutMs: 30_000 });
60
- if (probe.exitCode === 0)
61
- return { daemonStarted, session: "reused", agentId: existing.agentId, title: existing.title, leadAgent: existing.leadAgent, provider: existing.provider, model: existing.model, stateFile, bootstrapFile };
62
- }
55
+ const previous = await loadState(stateFile);
56
+ if (!options.forceNew && reuseRequested && !options.handoffPath && previous && compatibleState(previous, { projectRoot, leadName, provider, model, title })) {
57
+ const probe = await deps.run(`paseo logs ${quote(previous.agentId)} --tail 1`, { cwd: projectRoot, timeoutMs: 30_000 });
58
+ if (probe.exitCode === 0)
59
+ return { daemonStarted, session: "reused", agentId: previous.agentId, title: previous.title, leadAgent: previous.leadAgent, provider: previous.provider, model: previous.model, stateFile, bootstrapFile, paseoVersion: capabilities.version };
63
60
  }
64
- const launch = await deps.run([
65
- "paseo run --background --quiet",
66
- `--title ${quote(title)}`,
67
- `--provider ${quote(provider)}`,
68
- `--model ${quote(model)}`,
69
- quote(bootstrap)
70
- ].join(" "), { cwd: projectRoot, timeoutMs: 60_000 });
61
+ const launchCommand = buildPaseoBackgroundRunCommand({ title, provider, model, prompt: bootstrap }, capabilities);
62
+ const launch = await deps.run(launchCommand, { cwd: projectRoot, timeoutMs: 60_000 });
71
63
  if (launch.exitCode !== 0)
72
- throw new Error(`Failed to create persistent AEH lead in Paseo: ${diagnostic(launch)}`);
73
- const agentId = extractAgentId(launch.stdout);
64
+ throw new Error(`Failed to create AEH lead in Paseo${capabilities.version ? ` ${capabilities.version}` : ""}: ${diagnostic(launch)}`);
65
+ const agentId = extractPaseoAgentId(launch.stdout);
74
66
  if (!agentId)
75
67
  throw new Error(`Paseo created no parseable agent id. Output: ${launch.stdout.trim() || "<empty>"}`);
76
68
  const wait = await deps.run(`paseo wait ${quote(agentId)} --timeout 300`, { cwd: projectRoot, timeoutMs: 330_000 });
77
69
  if (wait.exitCode !== 0)
78
70
  throw new Error(`AEH lead bootstrap did not complete successfully: ${diagnostic(wait)}`);
79
- const state = {
80
- version: 1,
81
- bootstrapVersion: PASEO_BOOTSTRAP_VERSION,
82
- projectRoot,
83
- projectName: config.project.name,
84
- agentId,
85
- title,
86
- leadAgent: leadName,
87
- provider,
88
- model,
89
- createdAt: new Date().toISOString()
90
- };
71
+ const state = { version: 1, bootstrapVersion: PASEO_BOOTSTRAP_VERSION, projectRoot, projectName: config.project.name, agentId, title, leadAgent: leadName, provider, model, createdAt: new Date().toISOString(), generation: (previous?.generation ?? 0) + 1, handoffPath: options.handoffPath };
91
72
  await fs.writeFile(stateFile, `${JSON.stringify(state, null, 2)}\n`);
92
- return { daemonStarted, session: "created", agentId, title, leadAgent: leadName, provider, model, stateFile, bootstrapFile };
73
+ return { daemonStarted, session: "created", agentId, title, leadAgent: leadName, provider, model, stateFile, bootstrapFile, paseoVersion: capabilities.version };
93
74
  }
94
- export function buildPaseoLeadBootstrap(projectName, projectRoot, aehCommand) {
95
- return `AEH persistent Paseo lead bootstrap v${PASEO_BOOTSTRAP_VERSION}.
75
+ export function buildPaseoLeadBootstrap(projectName, projectRoot, aehCommand, preferPaseoTools = true, handoffPath) {
76
+ const handoff = handoffPath ? `\n\nThis lead was created by proactive context rotation. Before handling the next engineering action, read the deterministic handoff artifact ${JSON.stringify(handoffPath)} and every sealed/run/audit/delivery artifact it references. Treat that durable state as authoritative; do not ask the previous lead to replay its conversation. Preserve the same active user goal unless the handoff records a true ambiguity.` : "";
77
+ return `AEH thin-lead Paseo bootstrap v${PASEO_BOOTSTRAP_VERSION}.
96
78
 
97
- You are the persistent top-level engineering lead for project ${JSON.stringify(projectName)} at ${JSON.stringify(projectRoot)}. This instruction governs every later user message in this Paseo conversation.
79
+ You are the top-level engineering lead for project ${JSON.stringify(projectName)} at ${JSON.stringify(projectRoot)}. This instruction governs every later user message in this Paseo conversation. This lead is intentionally short-lived: a normal \`aeh start\` creates a fresh lead; explicit resume is opt-in.${handoff}
98
80
 
99
- Before handling repository-changing work, read AGENTS.md and .harness/skills/engineering-workflow/SKILL.md when present. Treat every natural-language request that could modify the repository as input to the Agentic Engineering Harness workflow. The user must not have to mention AEH, QUICK, SPEC, SDD, TaskContract, validators, reviewers, Graphify, workers, or any Harness command.
81
+ Before engineering work, read AGENTS.md and .harness/skills/engineering-workflow/SKILL.md when present. 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}\`.
100
82
 
101
- Whenever the workflow skill says \`aeh\`, invoke the Harness through this command on this machine: \`${aehCommand}\`.
83
+ You are an ORCHESTRATOR, not the repository operator. Your responsibilities are: preserve user intent, choose/delegate workflow roles, resolve genuine ambiguity, monitor deterministic state, and perform final semantic acceptance. Do not spend your context doing broad repository exploration, package installation, daemon debugging, specification authoring, implementation, or raw log analysis when a bounded agent/Harness operation can own it.
102
84
 
103
- Required behavior for mutating engineering requests:
104
- 1. inspect repository context and automatically build triage evidence;
105
- 2. run deterministic QUICK/SPEC triage and obey the result without manual downgrade;
106
- 3. create/validate the QuickContract or complete SDD/TaskContract as required;
107
- 4. seal normative inputs before implementation;
108
- 5. invoke the Harness run so routed workers, planner waves, deterministic validators, evidence graph, review convergence, remediation/escalation and lead acceptance execute under the frozen control plane;
109
- 6. never implement directly as a shortcut around Harness execution;
110
- 7. keep implementation/tool/review failures autonomous unless the Harness reaches a true human-on-exception state;
111
- 8. surface concise progress and final acceptance/delivery state to the user.
85
+ Delegation policy:
86
+ - repository discovery/evidence -> explorer;
87
+ - toolchain, doctor, agents-check or Paseo daemon/provider recovery -> environment-manager;
88
+ - non-trivial triage/decomposition -> planner;
89
+ - SPEC authoring -> spec-manager using OpenSpec, never write proposal/spec/design/tasks yourself;
90
+ - implementation, validation and reviews -> AEH/Harness-selected workers.
112
91
 
113
- Read-only questions may be answered directly, but must not mutate repository state. Existing GitHub issue requests must use the issue-driven Harness path. If a QUICK request discovers architecture/security/schema/public-API/cross-module or otherwise unsafe scope, escalate it to SPEC rather than broadening QUICK.
92
+ ${preferPaseoTools ? `Prefer Paseo's injected native/MCP orchestration tools (create_agent, send_agent_prompt, get_agent_status, get_agent_activity, cancel_agent/archive_agent) and load /paseo when exact syntax is needed. Use /paseo-handoff for responsibility transfer. Do not shell out to hand-written paseo run loops from this lead. AEH's CLI adapter is only a compatibility fallback.` : `Use AEH's configured Paseo adapter for delegation; do not hand-write shell orchestration loops.`}
114
93
 
115
- You remain the parent Paseo session. Harness-spawned agents are workers/subagents, not replacements for this lead. Do not ask the user to choose the internal workflow.
94
+ For every non-trivial user request:
95
+ 1. check context pressure with Paseo status if exposed, or \`${aehCommand} context guard --agent "$PASEO_AGENT_ID"\`. At 70% stop exploratory work. At 80% AEH automatically creates a deterministic handoff artifact and, when possible, rotates the persisted lead to a fresh Paseo agent; if the command reports rotatedAgentId, tell the user to continue in that fresh lead and stop this lead. At 90% no further engineering work is allowed in the old lead. Do not compact-and-continue after HANDOFF_REQUIRED/HARD_HANDOFF;
96
+ 2. classify INFORMATIONAL | AUDIT | CHANGE using \`${aehCommand} intent\` when not trivially informational;
97
+ 3. for AUDIT, invoke \`${aehCommand} audit\`; do not perform an ad-hoc review;
98
+ 4. for CHANGE, delegate discovery to explorer and planning/triage evidence to planner. Feed only their compact structured evidence into deterministic \`${aehCommand} triage\`;
99
+ 5. QUICK: create/validate/run the bounded QuickContract. Do not broaden QUICK;
100
+ 6. SPEC: delegate to spec-manager. spec-manager owns OpenSpec artifacts and returns a compiled/validated AEH SDD/TaskContract. The lead must not author those files. Then invoke the sealed AEH run;
101
+ 7. if execution reports environment/tool failure, delegate recovery to environment-manager and retry the same sealed operation after deterministic readiness. Do not personally run sequences of npm/git/Paseo diagnostic shells;
102
+ 8. surface only concise state transitions, true human-on-exception decisions, and final audit/acceptance/delivery state.
116
103
 
117
- Initialize this role now by reading the project entry instructions. Do not start an engineering change until the user supplies one. When initialization is complete, respond with exactly: AEH READY`;
104
+ Existing GitHub issue requests use the issue-driven AEH path. A later request to fix audit findings must reuse .harness/audits/latest.json as evidence for a new CHANGE. Security, architecture, schema, public API and cross-module changes still escalate to SPEC.
105
+
106
+ The compiled AEH TaskContract/SDD plus seal are normative during implementation. OpenSpec is an authoring source before freeze, not a competing runtime authority. Harness workers/subagents do not replace this lead unless an explicit context handoff rotates responsibility.
107
+
108
+ Initialize this role now by reading only the project entry instructions needed to understand these rules. Do not run doctor/setup or inspect the repository broadly during bootstrap. When initialization is complete, respond with exactly: AEH READY`;
118
109
  }
119
110
  export function resolveLeadAgent(topology, configured) {
120
111
  if (configured) {
@@ -130,19 +121,11 @@ export function resolveLeadAgent(topology, configured) {
130
121
  throw new Error("aeh start requires an enabled orchestrator/lead agent in the resolved topology.");
131
122
  return orchestrator.name;
132
123
  }
133
- function runtimeExecutable(topology, leadName) {
134
- const runtime = topology.agents[leadName].runtime;
135
- return runtime.command?.trim().split(/\s+/, 1)[0] || runtime.adapter;
136
- }
137
- async function missingCommands(root, commands, deps) {
138
- const result = [];
139
- for (const command of [...new Set(commands.filter(Boolean))])
140
- if (!(await deps.commandExists(command, root)))
141
- result.push(command);
142
- return result;
143
- }
124
+ function runtimeExecutable(topology, leadName) { const runtime = topology.agents[leadName].runtime; return runtime.command?.trim().split(/\s+/, 1)[0] || runtime.adapter; }
125
+ async function missingCommands(root, commands, deps) { const result = []; for (const command of [...new Set(commands.filter(Boolean))])
126
+ if (!(await deps.commandExists(command, root)))
127
+ result.push(command); return result; }
144
128
  function paseoModel(selection) { return selection.runtimeAdapter === "codex" ? selection.modelName : selection.modelId; }
145
- function extractAgentId(stdout) { return stdout.split(/\r?\n/).map((line) => line.trim()).filter(Boolean).at(-1); }
146
129
  async function loadState(file) { try {
147
130
  return JSON.parse(await fs.readFile(file, "utf8"));
148
131
  }
@@ -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,28 @@
1
+ import type { HarnessProjectConfig } from "../core/types.js";
2
+ import { runProcess } from "../utils/process.js";
3
+ export interface OpenSpecAuthoringConfig {
4
+ provider?: "openspec" | "native" | string;
5
+ schema?: string;
6
+ managerAgent?: string;
7
+ }
8
+ export interface OpenSpecPreparedChange {
9
+ taskId: string;
10
+ changeName: string;
11
+ directory: string;
12
+ created: boolean;
13
+ schema: string;
14
+ managerAgent: string;
15
+ }
16
+ export interface OpenSpecCompileResult {
17
+ taskId: string;
18
+ changeName: string;
19
+ sddDirectory: string;
20
+ contractPath: string;
21
+ requirements: string[];
22
+ sourceSha256: string;
23
+ validatorId: string;
24
+ }
25
+ export declare function openSpecAuthoringConfig(config: HarnessProjectConfig): Required<Pick<OpenSpecAuthoringConfig, "provider" | "schema" | "managerAgent">>;
26
+ export declare function openSpecChangeName(taskId: string): string;
27
+ export declare function prepareOpenSpecChange(root: string, config: HarnessProjectConfig, taskId: string, title: string, run?: typeof runProcess): Promise<OpenSpecPreparedChange>;
28
+ export declare function compileOpenSpecChange(root: string, config: HarnessProjectConfig, taskId: string, title: string, changeName?: string, run?: typeof runProcess): Promise<OpenSpecCompileResult>;
@@ -0,0 +1,179 @@
1
+ import crypto from "node:crypto";
2
+ import fs from "node:fs/promises";
3
+ import path from "node:path";
4
+ import YAML from "yaml";
5
+ import { getCurrentBranch } from "../core/git.js";
6
+ import { runProcess } from "../utils/process.js";
7
+ export function openSpecAuthoringConfig(config) {
8
+ const authoring = config.sdd?.authoring;
9
+ return { provider: authoring?.provider ?? "openspec", schema: authoring?.schema ?? "spec-driven", managerAgent: authoring?.managerAgent ?? "spec-manager" };
10
+ }
11
+ export function openSpecChangeName(taskId) {
12
+ const normalized = taskId.trim().toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/^-+|-+$/g, "").replace(/-+/g, "-");
13
+ if (!normalized)
14
+ throw new Error("Task id cannot be converted to a valid OpenSpec change name.");
15
+ return normalized;
16
+ }
17
+ export async function prepareOpenSpecChange(root, config, taskId, title, run = runProcess) {
18
+ const settings = openSpecAuthoringConfig(config);
19
+ if (settings.provider !== "openspec")
20
+ throw new Error(`Configured SDD authoring provider is '${settings.provider}', not openspec.`);
21
+ const changeName = openSpecChangeName(taskId);
22
+ const directory = path.join(root, "openspec", "changes", changeName);
23
+ let created = false;
24
+ try {
25
+ await fs.access(directory);
26
+ }
27
+ catch {
28
+ const command = `openspec new change ${quote(changeName)} --schema ${quote(settings.schema)} --description ${quote(title)} --json`;
29
+ const result = await run(command, { cwd: root, timeoutMs: 60_000, env: { OPENSPEC_NO_ANIMATION: "1", OPENSPEC_NO_UPDATE_CHECK: "1" } });
30
+ if (result.exitCode !== 0)
31
+ throw new Error(`OpenSpec failed to create change '${changeName}': ${result.stderr || result.stdout}`);
32
+ created = true;
33
+ }
34
+ return { taskId, changeName, directory, created, schema: settings.schema, managerAgent: settings.managerAgent };
35
+ }
36
+ export async function compileOpenSpecChange(root, config, taskId, title, changeName = openSpecChangeName(taskId), run = runProcess) {
37
+ const changeDir = path.join(root, "openspec", "changes", changeName);
38
+ const validation = await run(`openspec validate ${quote(changeName)} --strict --json`, { cwd: root, timeoutMs: 60_000, env: { OPENSPEC_NO_ANIMATION: "1", OPENSPEC_NO_UPDATE_CHECK: "1" } });
39
+ if (validation.exitCode !== 0)
40
+ throw new Error(`OpenSpec change '${changeName}' is not valid and cannot be compiled into AEH normative artifacts: ${validation.stderr || validation.stdout}`);
41
+ const proposal = await readOptional(path.join(changeDir, "proposal.md"));
42
+ const design = await readOptional(path.join(changeDir, "design.md"));
43
+ const tasksMarkdown = await readOptional(path.join(changeDir, "tasks.md"));
44
+ if (!proposal.trim())
45
+ throw new Error(`OpenSpec change '${changeName}' has no proposal.md.`);
46
+ if (!tasksMarkdown.trim())
47
+ throw new Error(`OpenSpec change '${changeName}' has no tasks.md.`);
48
+ const specFiles = await collectMarkdown(path.join(changeDir, "specs"));
49
+ const specDocuments = await Promise.all(specFiles.map(async (file) => ({ file, content: await fs.readFile(file, "utf8") })));
50
+ const parsed = parseRequirements(specDocuments);
51
+ const requirementSources = parsed.length ? parsed : [{ title: "Preserve approved behavior", body: approvedOutcome(proposal), scenarios: [{ title: "Approved change preserves observable behavior", given: "the current behavior is covered by deterministic validation", when: "the approved OpenSpec change is implemented", then: "observable behavior remains compatible except where the proposal explicitly requires change" }] }];
52
+ const ids = requirementSources.map((_, index) => `${taskId}-R${index + 1}`);
53
+ const requirementValidation = await resolveRequirementValidation(root, config);
54
+ const specsDir = config.sdd?.specsDir ?? "specs";
55
+ const sddDir = path.join(root, specsDir, "changes", taskId);
56
+ await fs.mkdir(sddDir, { recursive: true });
57
+ const proposalOut = `${proposal.trim()}\n\n## AEH requirement mapping\n\n${requirementSources.map((item, index) => `- ${ids[index]} — ${item.title}`).join("\n")}\n\n> Authored with OpenSpec change \`${changeName}\`; compiled deterministically into AEH normative artifacts.\n`;
58
+ const specOut = [`# Specification: ${title}`, "", "## Requirements", "", ...requirementSources.flatMap((item, index) => [`### ${ids[index]} — ${item.title}`, "", item.body.trim() || item.title, ""]), "## OpenSpec provenance", "", `- Change: \`${changeName}\``, `- Source files: ${specDocuments.map((item) => `\`${relative(root, item.file)}\``).join(", ") || "proposal-only refactor/tooling change"}`, ""].join("\n");
59
+ const designOut = `${(design.trim() || `# Design: ${title}\n\nOpenSpec did not require a separate design artifact for this change.`)}\n\n## AEH requirement mapping\n\n${requirementSources.map((item, index) => `- ${ids[index]} — ${item.title}`).join("\n")}\n`;
60
+ const tasks = parseTasks(tasksMarkdown, ids, requirementSources.map((item) => item.title));
61
+ const acceptance = buildAcceptanceFeature(taskId, title, ids, requirementSources);
62
+ await Promise.all([
63
+ fs.writeFile(path.join(sddDir, "proposal.md"), proposalOut),
64
+ fs.writeFile(path.join(sddDir, "spec.md"), specOut),
65
+ fs.writeFile(path.join(sddDir, "design.md"), designOut),
66
+ fs.writeFile(path.join(sddDir, "tasks.yaml"), YAML.stringify({ version: 1, task: taskId, items: tasks })),
67
+ fs.writeFile(path.join(sddDir, "acceptance.feature"), acceptance)
68
+ ]);
69
+ const originatingBranch = await getCurrentBranch(root);
70
+ const contractsDir = path.join(root, config.sdd?.contractsDir ?? ".harness/contracts");
71
+ await fs.mkdir(contractsDir, { recursive: true });
72
+ const contractPath = path.join(contractsDir, `${taskId}.yaml`);
73
+ const sourceSha256 = await hashOpenSpecChange(changeDir);
74
+ const contract = {
75
+ version: 1,
76
+ task: { id: taskId, title },
77
+ source: { proposal: relative(root, path.join(sddDir, "proposal.md")), spec: relative(root, path.join(sddDir, "spec.md")), design: relative(root, path.join(sddDir, "design.md")), tasks: relative(root, path.join(sddDir, "tasks.yaml")), acceptance: relative(root, path.join(sddDir, "acceptance.feature")) },
78
+ authoring: { provider: "openspec", change: changeName, sourceSha256 },
79
+ git: { baseRef: config.validation?.baseRef ?? "main", ...(originatingBranch ? { originatingBranch } : {}) },
80
+ scope: { allowed: ["**"], forbidden: [], frozen: [] },
81
+ routing: { intent: "implement", domains: [], risk: "medium" },
82
+ requirements: ids.map((id, index) => ({ id, description: requirementSources[index].title, validators: [requirementValidation.id] })),
83
+ constraints: { breakingApiChanges: false, newDependencies: false, schemaChanges: false },
84
+ repair: { maxAttempts: config.orchestration?.worker?.maxRepairAttempts ?? 2 },
85
+ ...(requirementValidation.command ? { verification: { commands: [requirementValidation.command] } } : {})
86
+ };
87
+ await fs.writeFile(contractPath, YAML.stringify(contract));
88
+ return { taskId, changeName, sddDirectory: sddDir, contractPath, requirements: ids, sourceSha256, validatorId: requirementValidation.id };
89
+ }
90
+ function parseRequirements(documents) {
91
+ const result = [];
92
+ for (const document of documents) {
93
+ const requirementMatches = [...document.content.matchAll(/^###\s+Requirement:\s*(.+?)\s*$/gim)];
94
+ for (let index = 0; index < requirementMatches.length; index += 1) {
95
+ const match = requirementMatches[index];
96
+ const start = (match.index ?? 0) + match[0].length;
97
+ const end = requirementMatches[index + 1]?.index ?? document.content.length;
98
+ const section = document.content.slice(start, end).trim();
99
+ result.push({ title: match[1].trim(), body: section.replace(/^####\s+Scenario:[\s\S]*$/im, "").trim(), scenarios: parseScenarios(section) });
100
+ }
101
+ }
102
+ return result;
103
+ }
104
+ function parseScenarios(section) {
105
+ const matches = [...section.matchAll(/^####\s+Scenario:\s*(.+?)\s*$/gim)];
106
+ return matches.map((match, index) => { const start = (match.index ?? 0) + match[0].length; const end = matches[index + 1]?.index ?? section.length; const body = section.slice(start, end); return { title: match[1].trim(), given: bullet(body, "GIVEN"), when: bullet(body, "WHEN"), then: bullet(body, "THEN") }; });
107
+ }
108
+ function bullet(body, keyword) { return body.match(new RegExp(`^-\\s*\\*\\*${keyword}\\*\\*\\s*(.+)$`, "im"))?.[1]?.trim(); }
109
+ function parseTasks(markdown, requirementIds, titles) {
110
+ const matches = [...markdown.matchAll(/^\s*-\s*\[( |x|X)\]\s*(.+?)\s*$/gm)];
111
+ if (!matches.length)
112
+ return requirementIds.map((id, index) => ({ id: index + 1, title: `Implement ${titles[index]}`, status: "pending", requirements: [id] }));
113
+ return matches.map((match, index) => ({ id: index + 1, title: match[2].trim(), status: /x/i.test(match[1]) ? "done" : "pending", requirements: [...requirementIds] }));
114
+ }
115
+ function buildAcceptanceFeature(taskId, title, ids, requirements) {
116
+ const lines = [`@${taskId}`, `Feature: ${title}`, ""];
117
+ requirements.forEach((requirement, index) => {
118
+ const scenarios = requirement.scenarios.length ? requirement.scenarios : [{ title: requirement.title, given: "the repository is in the sealed pre-change state", when: "the approved change is implemented", then: requirement.body.trim().split(/\r?\n/).find(Boolean) ?? requirement.title }];
119
+ lines.push(` Rule: ${requirement.title}`, "");
120
+ scenarios.forEach((scenario) => { lines.push(` @${ids[index]}`, ` Scenario: ${scenario.title}`, ` Given ${scenario.given ?? "the relevant preconditions from the approved specification hold"}`, ` When ${scenario.when ?? "the approved behavior is exercised"}`, ` Then ${scenario.then ?? requirement.title}`, ""); });
121
+ });
122
+ return `${lines.join("\n")}\n`;
123
+ }
124
+ async function resolveRequirementValidation(root, config) {
125
+ const preferredIds = ["test", "typecheck", "build"];
126
+ for (const id of preferredIds) {
127
+ const command = (config.validation?.commands ?? []).find((item) => item.id === id && item.required !== false);
128
+ if (command)
129
+ return { id };
130
+ const validator = (config.validation?.validators ?? []).find((item) => item.id === id && item.required !== false);
131
+ if (validator)
132
+ return { id };
133
+ }
134
+ const validator = config.validation?.validators?.find((item) => item.required !== false);
135
+ if (validator)
136
+ return { id: validator.id };
137
+ const command = config.validation?.commands?.find((item) => item.required !== false);
138
+ if (command)
139
+ return { id: command.id };
140
+ const packageJson = await readPackageJson(root);
141
+ const scripts = packageJson?.scripts ?? {};
142
+ for (const id of preferredIds) {
143
+ if (typeof scripts[id] === "string" && scripts[id].trim())
144
+ return { id, command: { id, command: id === "test" ? "npm test" : `npm run ${id}`, required: true, timeoutSeconds: 900 } };
145
+ }
146
+ const rootFiles = await fs.readdir(root).catch(() => []);
147
+ if (rootFiles.some((name) => name.endsWith(".sln") || name.endsWith(".slnx") || name.endsWith(".csproj")) || rootFiles.includes("global.json"))
148
+ return { id: "test", command: { id: "test", command: "dotnet test", required: true, timeoutSeconds: 1200 } };
149
+ throw new Error("OpenSpec compilation requires deterministic requirement validation. Configure validation.commands/validators or provide a project test/typecheck/build script (or a .NET solution/project) before compiling the SPEC.");
150
+ }
151
+ async function readPackageJson(root) { try {
152
+ return JSON.parse(await fs.readFile(path.join(root, "package.json"), "utf8"));
153
+ }
154
+ catch {
155
+ return undefined;
156
+ } }
157
+ function approvedOutcome(proposal) { const outcome = proposal.match(/##\s+(?:Desired outcome|Why|What Changes)\s*\n([\s\S]*?)(?=\n##\s|$)/i)?.[1]?.trim(); return outcome || proposal.trim(); }
158
+ async function collectMarkdown(dir) { const result = []; async function visit(current) { const entries = await fs.readdir(current, { withFileTypes: true }).catch(() => []); for (const entry of entries) {
159
+ const full = path.join(current, entry.name);
160
+ if (entry.isDirectory())
161
+ await visit(full);
162
+ else if (entry.isFile() && entry.name.endsWith(".md"))
163
+ result.push(full);
164
+ } } await visit(dir); return result.sort(); }
165
+ async function hashOpenSpecChange(dir) { const hash = crypto.createHash("sha256"); for (const file of await collectAllFiles(dir)) {
166
+ hash.update(relative(dir, file));
167
+ hash.update(await fs.readFile(file));
168
+ } return hash.digest("hex"); }
169
+ async function collectAllFiles(dir) { const result = []; async function visit(current) { const entries = await fs.readdir(current, { withFileTypes: true }).catch(() => []); for (const entry of entries) {
170
+ const full = path.join(current, entry.name);
171
+ if (entry.isDirectory())
172
+ await visit(full);
173
+ else if (entry.isFile())
174
+ result.push(full);
175
+ } } await visit(dir); return result.sort(); }
176
+ async function readOptional(file) { return fs.readFile(file, "utf8").catch(() => ""); }
177
+ function relative(root, file) { return path.relative(root, file).replaceAll("\\", "/"); }
178
+ function quote(value) { return `'${value.replaceAll("'", "'\\''")}'`; }
179
+ //# sourceMappingURL=openspec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openspec.js","sourceRoot":"","sources":["../../src/spec/openspec.ts"],"names":[],"mappings":"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"}
@@ -47,6 +47,9 @@ async function activeCapabilities(root, project) {
47
47
  result.add("delivery:paseo");
48
48
  if (project.delivery?.github?.enabled)
49
49
  result.add("delivery:github");
50
+ const authoringProvider = project.sdd?.authoring?.provider ?? "openspec";
51
+ if (authoringProvider && authoringProvider !== "native")
52
+ result.add(`spec-authoring:${authoringProvider}`);
50
53
  if (project.memory?.provider)
51
54
  result.add(`memory:${project.memory.provider}`);
52
55
  if (project.codeIntelligence?.provider)
@@ -1 +1 @@
1
- {"version":3,"file":"resolve.js","sourceRoot":"","sources":["../../src/toolchain/resolve.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"resolve.js","sourceRoot":"","sources":["../../src/toolchain/resolve.ts"],"names":[],"mappings":"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"}