agentic-engineering-harness 0.6.4 → 0.6.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +98 -17
- package/dist/audit/run.d.ts +2 -0
- package/dist/audit/run.js +28 -15
- package/dist/audit/run.js.map +1 -1
- package/dist/core/init.js +9 -2
- package/dist/core/init.js.map +1 -1
- package/dist/core/types.d.ts +9 -0
- package/dist/main.d.ts +2 -0
- package/dist/main.js +204 -0
- package/dist/main.js.map +1 -0
- package/dist/operations/controller.d.ts +17 -0
- package/dist/operations/controller.js +198 -0
- package/dist/operations/controller.js.map +1 -0
- package/dist/operations/mcp.d.ts +1 -0
- package/dist/operations/mcp.js +129 -0
- package/dist/operations/mcp.js.map +1 -0
- package/dist/operations/state.d.ts +43 -0
- package/dist/operations/state.js +127 -0
- package/dist/operations/state.js.map +1 -0
- package/dist/paseo/launchSpec.d.ts +25 -0
- package/dist/paseo/launchSpec.js +69 -0
- package/dist/paseo/launchSpec.js.map +1 -0
- package/dist/paseo/runtime.d.ts +8 -1
- package/dist/paseo/runtime.js +66 -21
- package/dist/paseo/runtime.js.map +1 -1
- package/dist/paseo/sdk.d.ts +33 -12
- package/dist/paseo/sdk.js +122 -55
- package/dist/paseo/sdk.js.map +1 -1
- package/dist/paseo/start.d.ts +4 -1
- package/dist/paseo/start.js +49 -5
- package/dist/paseo/start.js.map +1 -1
- package/dist/telemetry/events.js +19 -0
- package/dist/telemetry/events.js.map +1 -1
- package/dist/workers/agentPrompt.d.ts +4 -0
- package/dist/workers/agentPrompt.js +110 -32
- package/dist/workers/agentPrompt.js.map +1 -1
- package/dist/workers/paseo.js +23 -26
- package/dist/workers/paseo.js.map +1 -1
- package/docs/PASEO.md +162 -27
- package/package.json +7 -5
- package/skills/engineering-workflow/SKILL.md +40 -16
- package/skills/paseo-orchestration/SKILL.md +18 -3
- package/templates/AGENTS.md +8 -6
package/package.json
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "agentic-engineering-harness",
|
|
3
|
-
"version": "0.6.
|
|
3
|
+
"version": "0.6.5",
|
|
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": {
|
|
7
|
-
"engineering-harness": "./dist/
|
|
8
|
-
"aeh": "./dist/
|
|
7
|
+
"engineering-harness": "./dist/main.js",
|
|
8
|
+
"aeh": "./dist/main.js"
|
|
9
9
|
},
|
|
10
10
|
"files": [
|
|
11
11
|
"dist",
|
|
@@ -17,8 +17,10 @@
|
|
|
17
17
|
"docs"
|
|
18
18
|
],
|
|
19
19
|
"scripts": {
|
|
20
|
-
"
|
|
21
|
-
"
|
|
20
|
+
"clean": "node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"",
|
|
21
|
+
"build": "npm run clean && tsc -p tsconfig.json",
|
|
22
|
+
"prepare": "npm run build",
|
|
23
|
+
"dev": "tsx src/main.ts",
|
|
22
24
|
"test": "vitest run",
|
|
23
25
|
"test:watch": "vitest",
|
|
24
26
|
"typecheck": "tsc -p tsconfig.json --noEmit",
|
|
@@ -25,16 +25,29 @@ Delegate everything else to the narrowest bounded role:
|
|
|
25
25
|
- SPEC authoring -> `spec-manager` using OpenSpec;
|
|
26
26
|
- implementation/validation/review -> Harness-selected workers.
|
|
27
27
|
|
|
28
|
-
Use the `paseo-orchestration` skill. Prefer injected Paseo tools (`create_agent`, `send_agent_prompt`, `get_agent_status`, `get_agent_activity`, lifecycle tools) and `/paseo-handoff`
|
|
28
|
+
Use the `paseo-orchestration` skill. Prefer injected Paseo tools (`create_agent`, `send_agent_prompt`, `get_agent_status`, `get_agent_activity`, lifecycle tools) and `/paseo-handoff` for bounded conversational delegation. For deterministic multi-agent AEH workflows, use the first-class operation controller rather than holding the lead inside a long shell process. AEH's Paseo CLI adapter is a compatibility fallback; do not create hand-written `paseo run` loops from the lead.
|
|
29
|
+
|
|
30
|
+
The AEH operation controller is deterministic infrastructure, not an LLM agent. Do not create a fake controller/session merely to make it visible in Paseo. Real LLM participants are materialized as independent top-level Paseo agents and are correlated through AEH operation/task labels.
|
|
29
31
|
|
|
30
32
|
## Persistent interactive entry
|
|
31
33
|
|
|
32
34
|
When the conversation was created by `aeh start`, its bootstrap is a standing instruction. Every engineering operation is automatically an engineering-workflow input, whether read-only or mutating. Only a purely informational question may bypass AEH.
|
|
33
35
|
|
|
34
|
-
A normal `aeh start` creates a fresh lead. `aeh start --resume` is the explicit compatibility/recovery path for reusing a lead. Do not assume old conversational context is normative; Git, sealed artifacts, AuditReports, run state and delivery state are the durable sources.
|
|
36
|
+
A normal `aeh start` creates a fresh lead. `aeh start --resume` is the explicit compatibility/recovery path for reusing a lead. Do not assume old conversational context is normative; Git, sealed artifacts, AuditReports, operation state, run state and delivery state are the durable sources.
|
|
35
37
|
|
|
36
38
|
The bootstrap may provide an exact AEH invocation. Use it whenever this skill writes `aeh`.
|
|
37
39
|
|
|
40
|
+
## Interactive operation boundary
|
|
41
|
+
|
|
42
|
+
Inside a managed Paseo lead, long deterministic workflows must be started detached:
|
|
43
|
+
|
|
44
|
+
- audit: `aeh operation start audit "<request>" ...`
|
|
45
|
+
- sealed task execution: `aeh operation start run <taskId> ...`
|
|
46
|
+
|
|
47
|
+
The start command must return promptly with an `operationId`. Report that identifier and the meaningful phase to the user instead of waiting in an interactive shell. Observe with `aeh operation status <operationId>` and, when useful, `aeh paseo agents --operation <operationId>`. Use `aeh operation wait` only when synchronous waiting is explicitly required by a non-interactive caller or bounded recovery flow. Cancel with `aeh operation cancel <operationId>` when the user requests cancellation.
|
|
48
|
+
|
|
49
|
+
Direct synchronous commands such as `aeh audit` and `aeh run` remain valid non-interactive/compatibility entrypoints, but a conversational Paseo lead should not use them for a long-running operation when the detached controller is available.
|
|
50
|
+
|
|
38
51
|
## Context pressure before broad work
|
|
39
52
|
|
|
40
53
|
Do not wait for model compaction as the normal context lifecycle.
|
|
@@ -44,14 +57,14 @@ Do not wait for model compaction as the normal context lifecycle.
|
|
|
44
57
|
- >=80%: proactive handoff to a fresh lead;
|
|
45
58
|
- >=90%: mandatory handoff before additional engineering work.
|
|
46
59
|
|
|
47
|
-
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.
|
|
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.
|
|
48
61
|
|
|
49
62
|
## Intent layer
|
|
50
63
|
|
|
51
64
|
Classify every request as:
|
|
52
65
|
|
|
53
66
|
- `INFORMATIONAL`: explanation/lookup only. May be answered directly and must remain non-mutating.
|
|
54
|
-
- `AUDIT`: read-only engineering review/validation/security/architecture/performance/quality/coverage/PR analysis. Must use
|
|
67
|
+
- `AUDIT`: read-only engineering review/validation/security/architecture/performance/quality/coverage/PR analysis. Must use the Harness audit path.
|
|
55
68
|
- `CHANGE`: implementation, fix, refactor, addition, removal, dependency/config update or other repository mutation. Must continue through deterministic QUICK/SPEC triage.
|
|
56
69
|
|
|
57
70
|
When not trivially informational, use `aeh intent` with compact evidence. Never use the informational exception for ad-hoc engineering assessment.
|
|
@@ -72,15 +85,16 @@ Do not invoke sudo or silently install unmanaged host prerequisites.
|
|
|
72
85
|
|
|
73
86
|
## AUDIT path
|
|
74
87
|
|
|
75
|
-
1.
|
|
76
|
-
2. AEH freezes the control plane
|
|
77
|
-
3.
|
|
78
|
-
4.
|
|
79
|
-
5.
|
|
88
|
+
1. From an interactive Paseo lead, invoke `aeh operation start audit "<request>"`, passing concrete file/domain/risk/reviewer hints when useful. Repository-wide scope is valid. A non-interactive caller may use synchronous `aeh audit`.
|
|
89
|
+
2. AEH freezes the control plane and materializes the selected read-only reviewers as visible Paseo agents before deterministic validation begins. The agents remain idle until validator evidence is ready.
|
|
90
|
+
3. AEH runs deterministic validators, classifies failures, dispatches the materialized reviewers with that evidence, deduplicates findings and calculates quality debt.
|
|
91
|
+
4. Validator failures remain evidence; do not reinterpret them as PASS.
|
|
92
|
+
5. Persisted reports under `.harness/audits/` and `.harness/operations/` are durable input for later remediation and recovery.
|
|
93
|
+
6. AUDIT never implements fixes. A later "fix these" is a new CHANGE using the AuditReport as evidence.
|
|
80
94
|
|
|
81
95
|
## Issue-driven CHANGE path
|
|
82
96
|
|
|
83
|
-
For an existing GitHub issue, use `aeh issue implement <number>`
|
|
97
|
+
For an existing GitHub issue, use the issue intake flow to freeze and derive the task. `aeh issue implement <number>` remains a synchronous compatibility shortcut. From an interactive lead, once the resulting QuickContract/TaskContract is validated and sealed, execute it through `aeh operation start run <taskId>`. AEH guards issue drift and reuses the issue-linked delivery state. Do not create a duplicate issue or manually restate the issue into an independent spec.
|
|
84
98
|
|
|
85
99
|
## Non-issue CHANGE discovery and triage
|
|
86
100
|
|
|
@@ -97,8 +111,8 @@ For a CHANGE classified QUICK:
|
|
|
97
111
|
|
|
98
112
|
1. Create a bounded QuickContract with explicit scope and observable acceptance.
|
|
99
113
|
2. `aeh quick validate <id>`.
|
|
100
|
-
3. `aeh run <id
|
|
101
|
-
4. Remain the parent lead; implementation and
|
|
114
|
+
3. From an interactive lead, start `aeh operation start run <id>`; use synchronous `aeh run <id>` only for non-interactive compatibility.
|
|
115
|
+
4. Remain the semantic parent lead; implementation, validation and review belong to AEH workers and the deterministic controller.
|
|
102
116
|
|
|
103
117
|
## SPEC path — OpenSpec authoring
|
|
104
118
|
|
|
@@ -109,14 +123,24 @@ The lead must not write proposal/spec/design/tasks/Gherkin itself.
|
|
|
109
123
|
3. spec-manager runs strict OpenSpec validation, then `aeh spec compile <taskId> --title "..." --change <change>`.
|
|
110
124
|
4. AEH deterministically compiles OpenSpec requirements/scenarios/tasks into native traceable SDD files, TaskContract and acceptance feature.
|
|
111
125
|
5. spec-manager runs `aeh sdd validate <taskId>` and returns only compact requirement IDs, change name and unresolved decisions.
|
|
112
|
-
6. The lead proceeds with normal seal/run
|
|
126
|
+
6. The lead proceeds with normal seal/handoff, then starts `aeh operation start run <taskId>` when interactive. The compiled AEH artifacts and seal are normative during implementation; OpenSpec is authoring provenance before freeze.
|
|
113
127
|
7. Do not use OpenSpec apply commands to implement product code. AEH owns implementation, validation, review convergence and delivery.
|
|
114
128
|
|
|
115
129
|
If OpenSpec cannot express a true product decision without guessing, return `REQUIRES_PRODUCT_DECISION`; otherwise author and validate autonomously.
|
|
116
130
|
|
|
131
|
+
## Operation observation
|
|
132
|
+
|
|
133
|
+
Use durable operation state for progress rather than narrating terminal silence:
|
|
134
|
+
|
|
135
|
+
- `aeh operation status <id>` -> controller status/phase/result/error;
|
|
136
|
+
- `aeh paseo agents --operation <id>` -> real LLM participants and their roles/phases;
|
|
137
|
+
- `aeh operation wait <id>` -> synchronous boundary only when necessary.
|
|
138
|
+
|
|
139
|
+
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
|
+
|
|
117
141
|
## Quality convergence and recovery
|
|
118
142
|
|
|
119
|
-
After a sealed
|
|
143
|
+
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.
|
|
120
144
|
|
|
121
145
|
Default acceptance remains: critical/high/medium = 0, low <= 3, DebtScore <= 3. Do not stop because an arbitrary remediation count elapsed.
|
|
122
146
|
|
|
@@ -133,8 +157,8 @@ Request human input only for:
|
|
|
133
157
|
|
|
134
158
|
## Self-modification
|
|
135
159
|
|
|
136
|
-
If the repository is AEH itself or the task changes topology, toolchain, skills, policies, validators or orchestration, the active
|
|
160
|
+
If the repository is AEH itself or the task changes topology, toolchain, skills, policies, validators or orchestration, the active operation remains governed by the frozen controller from operation start. New rules activate only on a later operation.
|
|
137
161
|
|
|
138
162
|
## User-facing communication
|
|
139
163
|
|
|
140
|
-
Keep status concise. Do not narrate every shell command or subagent read. Surface meaningful transitions such as `AUDIT`, `QUICK`, `SPEC`, spec validated,
|
|
164
|
+
Keep status concise. Do not narrate every shell command or subagent read. Surface meaningful transitions such as operation started, `AUDIT`, `QUICK`, `SPEC`, spec validated, deterministic blocker, quality convergence state, handoff, final acceptance/delivery. A useful update names the operation id and phase and, when relevant, the visible worker roles. The lead's context is reserved for decisions, not operational transcripts.
|
|
@@ -9,7 +9,7 @@ Use this skill whenever an AEH lead, planner or coordinator delegates work throu
|
|
|
9
9
|
|
|
10
10
|
## Preferred control surface
|
|
11
11
|
|
|
12
|
-
When Paseo tools are injected into the current agent, prefer them over shell commands:
|
|
12
|
+
When Paseo tools are injected into the current agent, prefer them over shell commands for bounded conversational delegation:
|
|
13
13
|
|
|
14
14
|
- `create_agent` for a bounded subagent;
|
|
15
15
|
- `send_agent_prompt` for follow-up work;
|
|
@@ -17,9 +17,24 @@ When Paseo tools are injected into the current agent, prefer them over shell com
|
|
|
17
17
|
- `cancel_agent` / `archive_agent` for lifecycle cleanup;
|
|
18
18
|
- `update_agent` / `set_agent_mode` for supported runtime changes.
|
|
19
19
|
|
|
20
|
+
When the optional AEH operation MCP server (`aeh operation mcp`) is injected, use its tools for long deterministic Harness workflows:
|
|
21
|
+
|
|
22
|
+
- `aeh_operation_start_audit`;
|
|
23
|
+
- `aeh_operation_start_run`;
|
|
24
|
+
- `aeh_operation_status`;
|
|
25
|
+
- `aeh_operation_cancel`.
|
|
26
|
+
|
|
27
|
+
These MCP tools call the same persistent detached operation controller as the CLI. They do not create a controller LLM agent. If the AEH MCP server is not injected, `aeh operation start/status/cancel` is the short non-blocking compatibility surface; do not replace it with a long synchronous `aeh audit`/`aeh run` from the conversational lead.
|
|
28
|
+
|
|
20
29
|
Load `/paseo` when the exact current Paseo surface is needed. Use `/paseo-handoff` when responsibility, not merely a subtask, should move to a fresh agent. `/paseo-committee` and `/paseo-advisor` are analysis-only escalation tools and must not replace deterministic AEH gates.
|
|
21
30
|
|
|
22
|
-
The Harness CLI/daemon adapter remains a deterministic
|
|
31
|
+
The Harness CLI/daemon adapter remains a deterministic compatibility path when native tools/SDK are unavailable. Do not hand-write `paseo run` shell loops from the lead unless AEH explicitly reports that it is using the CLI fallback.
|
|
32
|
+
|
|
33
|
+
## Visible execution graph
|
|
34
|
+
|
|
35
|
+
Real planner/reviewer/implementer/oracle sessions should be top-level Paseo agents labeled with their AEH operation/task/role. The deterministic operation controller remains outside the agent graph. Operation-local Paseo workspaces are grouping containers; delivery worktree workspaces are a separate Git-isolation concern.
|
|
36
|
+
|
|
37
|
+
Use `aeh paseo agents --operation <id>` (or Paseo's corresponding directory/status tools) to observe real participants without scraping terminal output.
|
|
23
38
|
|
|
24
39
|
## Lead discipline
|
|
25
40
|
|
|
@@ -35,4 +50,4 @@ Return compact structured summaries to the lead. Do not paste raw logs or entire
|
|
|
35
50
|
|
|
36
51
|
## Context pressure
|
|
37
52
|
|
|
38
|
-
Before broad engineering work, inspect the current agent status if Paseo exposes context usage. At the configured handoff threshold, create a deterministic AEH handoff artifact and use `/paseo-handoff` (preferred) or `create_agent` to continue in a fresh lead. Do not compact and continue as the normal path when AEH has declared `HANDOFF_REQUIRED` or `HARD_HANDOFF`.
|
|
53
|
+
Before broad engineering work, inspect the current agent status if Paseo exposes context usage. At the configured handoff threshold, create a deterministic AEH handoff artifact and use `/paseo-handoff` (preferred) or `create_agent` to continue in a fresh lead. Detached operations and their top-level workers remain valid across lead rotation. Do not compact and continue as the normal path when AEH has declared `HANDOFF_REQUIRED` or `HARD_HANDOFF`.
|
package/templates/AGENTS.md
CHANGED
|
@@ -14,7 +14,7 @@ Do not use the informational exception for an ad-hoc engineering review. `aeh st
|
|
|
14
14
|
|
|
15
15
|
## Lead agent — thin orchestrator
|
|
16
16
|
|
|
17
|
-
The lead owns user intent, high-level routing, true ambiguity and final semantic acceptance. It does **not** own routine repository exploration, environment repair, SDD authoring or
|
|
17
|
+
The lead owns user intent, high-level routing, true ambiguity and final semantic acceptance. It does **not** own routine repository exploration, environment repair, SDD authoring, implementation or a long-running controller shell.
|
|
18
18
|
|
|
19
19
|
Delegate by default:
|
|
20
20
|
|
|
@@ -24,18 +24,20 @@ Delegate by default:
|
|
|
24
24
|
- SPEC authoring -> `spec-manager` using OpenSpec;
|
|
25
25
|
- implementation/validation/review -> Harness-selected workers.
|
|
26
26
|
|
|
27
|
-
Prefer Paseo's injected orchestration tools and `/paseo-handoff`
|
|
27
|
+
Prefer Paseo's injected orchestration tools and `/paseo-handoff` for bounded conversational delegation. Long deterministic AUDIT/RUN workflows use the detached AEH operation controller. The controller is deterministic infrastructure, not an LLM agent; real planner/reviewer/worker sessions appear independently in Paseo and are correlated by AEH operation/task labels.
|
|
28
28
|
|
|
29
29
|
For engineering work:
|
|
30
30
|
|
|
31
31
|
1. Check context pressure before broad work. Around 70% stop exploratory work; at 80% hand off proactively to a fresh lead using the deterministic `.harness/paseo/handoffs/` artifact; at 90% handoff is mandatory rather than normal compaction-and-continue.
|
|
32
32
|
2. Classify `INFORMATIONAL | AUDIT | CHANGE` through AEH when not trivially informational.
|
|
33
|
-
3. AUDIT -> `aeh audit
|
|
33
|
+
3. Interactive AUDIT -> `aeh operation start audit "<request>"`; use `aeh operation status <id>` and `aeh paseo agents --operation <id>` for progress. Synchronous `aeh audit` remains a non-interactive compatibility path.
|
|
34
34
|
4. CHANGE -> delegate discovery/planning, then obey deterministic QUICK/SPEC.
|
|
35
|
-
5. QUICK -> bounded QuickContract
|
|
36
|
-
6. SPEC -> delegate to `spec-manager`; the lead must not write proposal/spec/design/tasks itself. OpenSpec is the authoring source, then `aeh spec compile` produces the traceable native AEH SDD/TaskContract used for sealing/execution
|
|
35
|
+
5. QUICK -> bounded QuickContract; interactive execution -> `aeh operation start run <taskId>`.
|
|
36
|
+
6. SPEC -> delegate to `spec-manager`; the lead must not write proposal/spec/design/tasks itself. OpenSpec is the authoring source, then `aeh spec compile` produces the traceable native AEH SDD/TaskContract used for sealing/execution; interactive execution then uses `aeh operation start run <taskId>`.
|
|
37
37
|
7. Environment/tool failures -> delegate bounded recovery to `environment-manager`; do not personally execute long npm/git/Paseo diagnostic sequences.
|
|
38
38
|
|
|
39
|
+
Operation-local Paseo workspaces are only UI/execution grouping. They do not imply a Git branch/worktree; delivery isolation remains a separate policy. Detached operations and their top-level agents survive lead context rotation.
|
|
40
|
+
|
|
39
41
|
After workers finish, use actual deterministic reports/evidence and the final semantic gate. Never accept work solely from a worker summary.
|
|
40
42
|
|
|
41
43
|
## Worker agent
|
|
@@ -55,7 +57,7 @@ If the plan conflicts with reality, report the blocker instead of silently redes
|
|
|
55
57
|
## Source-of-truth order
|
|
56
58
|
|
|
57
59
|
1. Current Git-versioned code and schemas.
|
|
58
|
-
2. Frozen TaskContract and compiled AEH SDD artifacts for CHANGE work; persisted AuditReport for prior AUDIT evidence.
|
|
60
|
+
2. Frozen TaskContract and compiled AEH SDD artifacts for CHANGE work; persisted AuditReport and operation record for prior AUDIT evidence.
|
|
59
61
|
3. OpenSpec source artifacts as pre-freeze authoring provenance.
|
|
60
62
|
4. ADRs and project policy.
|
|
61
63
|
5. Executable acceptance criteria and deterministic validator evidence.
|