agentic-engineering-harness 0.8.2 → 0.8.4
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 +2 -0
- package/dist/agents/outputContracts.js +1 -1
- package/dist/agents/outputContracts.js.map +1 -1
- package/dist/agents/parallelism.js +3 -2
- package/dist/agents/parallelism.js.map +1 -1
- package/dist/agents/permissions.js +1 -1
- package/dist/agents/permissions.js.map +1 -1
- package/dist/agents/waveExecutor.js +25 -15
- package/dist/agents/waveExecutor.js.map +1 -1
- package/dist/audit/intentDecision.d.ts +1 -1
- package/dist/certification/adapters.d.ts +4 -0
- package/dist/certification/adapters.js +17 -0
- package/dist/certification/adapters.js.map +1 -0
- package/dist/certification/artifacts.d.ts +3 -0
- package/dist/certification/artifacts.js +18 -0
- package/dist/certification/artifacts.js.map +1 -0
- package/dist/certification/bootstrap.d.ts +33 -0
- package/dist/certification/bootstrap.js +138 -0
- package/dist/certification/bootstrap.js.map +1 -0
- package/dist/certification/codex.d.ts +26 -0
- package/dist/certification/codex.js +125 -0
- package/dist/certification/codex.js.map +1 -0
- package/dist/certification/core.d.ts +15 -0
- package/dist/certification/core.js +300 -0
- package/dist/certification/core.js.map +1 -0
- package/dist/certification/index.d.ts +9 -0
- package/dist/certification/index.js +10 -0
- package/dist/certification/index.js.map +1 -0
- package/dist/certification/oracle.d.ts +11 -0
- package/dist/certification/oracle.js +29 -0
- package/dist/certification/oracle.js.map +1 -0
- package/dist/certification/policy.d.ts +3 -0
- package/dist/certification/policy.js +59 -0
- package/dist/certification/policy.js.map +1 -0
- package/dist/certification/provider.d.ts +27 -0
- package/dist/certification/provider.js +170 -0
- package/dist/certification/provider.js.map +1 -0
- package/dist/certification/types.d.ts +234 -0
- package/dist/certification/types.js +2 -0
- package/dist/certification/types.js.map +1 -0
- package/dist/cli.js +27 -0
- package/dist/cli.js.map +1 -1
- package/dist/context/budget.d.ts +20 -0
- package/dist/context/budget.js +39 -0
- package/dist/context/budget.js.map +1 -1
- package/dist/context/gateway.d.ts +1 -0
- package/dist/context/gateway.js +13 -5
- package/dist/context/gateway.js.map +1 -1
- package/dist/context/projectors/index.d.ts +1 -0
- package/dist/context/projectors/index.js +1 -0
- package/dist/context/projectors/index.js.map +1 -1
- package/dist/context/projectors/informational.d.ts +48 -0
- package/dist/context/projectors/informational.js +154 -0
- package/dist/context/projectors/informational.js.map +1 -0
- package/dist/context/repository/map.js +1 -1
- package/dist/context/repository/map.js.map +1 -1
- package/dist/context/retrieval/persisted.d.ts +3 -2
- package/dist/context/retrieval/persisted.js +23 -7
- package/dist/context/retrieval/persisted.js.map +1 -1
- package/dist/context/retrieval/server.js +7 -4
- package/dist/context/retrieval/server.js.map +1 -1
- package/dist/core/config.js +14 -0
- package/dist/core/config.js.map +1 -1
- package/dist/core/controlPlane.d.ts +1 -0
- package/dist/core/controlPlane.js +12 -0
- package/dist/core/controlPlane.js.map +1 -1
- package/dist/core/git.d.ts +12 -2
- package/dist/core/git.js +31 -5
- package/dist/core/git.js.map +1 -1
- package/dist/core/run.d.ts +2 -0
- package/dist/core/run.js +3 -2
- package/dist/core/run.js.map +1 -1
- package/dist/core/sdd.js +1 -1
- package/dist/core/sdd.js.map +1 -1
- package/dist/core/seal.js +4 -3
- package/dist/core/seal.js.map +1 -1
- package/dist/core/types.d.ts +24 -0
- package/dist/core/verify.js +7 -3
- package/dist/core/verify.js.map +1 -1
- package/dist/distributed/queue.js +24 -6
- package/dist/distributed/queue.js.map +1 -1
- package/dist/distributed/types.d.ts +1 -0
- package/dist/distributed/worker.d.ts +6 -1
- package/dist/distributed/worker.js +25 -6
- package/dist/distributed/worker.js.map +1 -1
- package/dist/evals/fullStack.js +6 -2
- package/dist/evals/fullStack.js.map +1 -1
- package/dist/evidence/graph.js +2 -2
- package/dist/evidence/graph.js.map +1 -1
- package/dist/informational/answer.d.ts +23 -7
- package/dist/informational/answer.js +104 -34
- package/dist/informational/answer.js.map +1 -1
- package/dist/informational/evidence.d.ts +47 -0
- package/dist/informational/evidence.js +228 -0
- package/dist/informational/evidence.js.map +1 -0
- package/dist/metrics/usage.js +8 -0
- package/dist/metrics/usage.js.map +1 -1
- package/dist/operations/change.d.ts +4 -0
- package/dist/operations/change.js +34 -11
- package/dist/operations/change.js.map +1 -1
- package/dist/operations/changeHandoff.d.ts +4 -0
- package/dist/operations/changeHandoff.js +2 -2
- package/dist/operations/changeHandoff.js.map +1 -1
- package/dist/operations/completion.js +38 -27
- package/dist/operations/completion.js.map +1 -1
- package/dist/operations/controller.js +142 -10
- package/dist/operations/controller.js.map +1 -1
- package/dist/operations/evidence.d.ts +2 -0
- package/dist/operations/evidence.js.map +1 -1
- package/dist/operations/livenessV2.js +14 -12
- package/dist/operations/livenessV2.js.map +1 -1
- package/dist/operations/mcp.js +16 -0
- package/dist/operations/mcp.js.map +1 -1
- package/dist/operations/monitorProcess.js +11 -1
- package/dist/operations/monitorProcess.js.map +1 -1
- package/dist/operations/state.d.ts +2 -0
- package/dist/operations/state.js +31 -8
- package/dist/operations/state.js.map +1 -1
- package/dist/operations/supervisor.js +11 -2
- package/dist/operations/supervisor.js.map +1 -1
- package/dist/paseo/capabilities.js +0 -2
- package/dist/paseo/capabilities.js.map +1 -1
- package/dist/paseo/launchSpec.js +5 -3
- package/dist/paseo/launchSpec.js.map +1 -1
- package/dist/paseo/runtime.d.ts +1 -1
- package/dist/paseo/runtime.js +1 -1
- package/dist/paseo/runtime.js.map +1 -1
- package/dist/paseo/runtimeCore.d.ts +4 -0
- package/dist/paseo/runtimeCore.js +27 -2
- package/dist/paseo/runtimeCore.js.map +1 -1
- package/dist/paseo/sdk.d.ts +8 -0
- package/dist/paseo/sdk.js +85 -17
- package/dist/paseo/sdk.js.map +1 -1
- package/dist/paseo/start.js +3 -2
- package/dist/paseo/start.js.map +1 -1
- package/dist/providers/engram.js +7 -3
- package/dist/providers/engram.js.map +1 -1
- package/dist/security/sandbox.d.ts +1 -0
- package/dist/security/sandbox.js +20 -2
- package/dist/security/sandbox.js.map +1 -1
- package/dist/utils/process.d.ts +10 -0
- package/dist/utils/process.js +171 -6
- package/dist/utils/process.js.map +1 -1
- package/dist/utils/repositoryPath.d.ts +4 -0
- package/dist/utils/repositoryPath.js +23 -0
- package/dist/utils/repositoryPath.js.map +1 -0
- package/dist/validators/external.js +7 -1
- package/dist/validators/external.js.map +1 -1
- package/dist/validators/opa.js +2 -2
- package/dist/validators/quickAcceptance.d.ts +7 -0
- package/dist/validators/quickAcceptance.js +40 -0
- package/dist/validators/quickAcceptance.js.map +1 -0
- package/dist/workers/agentPrompt.js +247 -32
- package/dist/workers/agentPrompt.js.map +1 -1
- package/dist/workers/direct.js +9 -10
- package/dist/workers/direct.js.map +1 -1
- package/dist/workers/directProcess.d.ts +19 -0
- package/dist/workers/directProcess.js +147 -0
- package/dist/workers/directProcess.js.map +1 -0
- package/dist/workers/podman.js +2 -2
- package/dist/workers/podman.js.map +1 -1
- package/dist/workers/resultCommit.js +1 -1
- package/dist/workers/resultCommit.js.map +1 -1
- package/dist/workers/resultGateway.d.ts +27 -2
- package/dist/workers/resultGateway.js +64 -11
- package/dist/workers/resultGateway.js.map +1 -1
- package/docs/CERTIFICATION.md +31 -0
- package/docs/CONTEXT_EFFICIENCY.md +30 -0
- package/package.json +2 -2
- package/schemas/project.schema.json +1 -0
- package/templates/project.yaml +10 -0
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# AEH Certification Core
|
|
2
|
+
|
|
3
|
+
AEH certification is a runtime-agnostic quality boundary. `CertificationCore` accepts a `CandidateRevision`, a frozen `CertificationPolicy`, and an independent deterministic `CertificationOracle`. It emits one of:
|
|
4
|
+
|
|
5
|
+
```text
|
|
6
|
+
ACCEPTED
|
|
7
|
+
REPAIR_REQUIRED
|
|
8
|
+
HUMAN_REQUIRED
|
|
9
|
+
PARTIAL
|
|
10
|
+
BLOCKED
|
|
11
|
+
NOT_TESTED
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
Capability reports contain separate `contract` and `modelE2E` lanes. A deterministic contract PASS with a blocked or untested model lane is `PARTIAL`, never a full PASS. A campaign requiring model execution is accepted only when the provider receipt proves startup and the oracle verifies model-produced journey evidence.
|
|
15
|
+
|
|
16
|
+
External actors can propose or repair a candidate, but their claimed verdicts never become acceptance evidence. Provider execution is behind `AgentProvider`; the initial `CodexAgentProvider` is a bootstrap adapter and is not part of certification policy or oracle semantics.
|
|
17
|
+
|
|
18
|
+
The bootstrap lane packs the current checkout, installs that pack into a disposable fixture with lifecycle scripts disabled, and evaluates it with an argv-based deterministic command oracle:
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
aeh certification self-dogfood <fixture> \
|
|
22
|
+
--check node \
|
|
23
|
+
--check-args '["-e","process.exit(0)"]' \
|
|
24
|
+
--prompt "Run the fixture task"
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
The Codex adapter resolves installed CLI capabilities from `codex exec --help`, uses `-c model_reasoning_effort="high"` when the CLI does not expose a reasoning flag, and records requested/effective configuration plus the Codex thread identifier. It uses a temporary controlled `HOME`/`CODEX_HOME` containing only the copied Codex auth file and generated model configuration; the fixture does not receive the host HOME tree.
|
|
28
|
+
|
|
29
|
+
The provider boundary filters ambient environment variables, rejects recursive certification, bounds output and time, and terminates process groups on timeout or output overflow. Direct execution does not enforce OS-level network isolation. Reports therefore record `networkPolicy.requested`, `networkPolicy.enforced`, and `networkPolicy.enforcement`; a policy requiring isolation blocks when the direct transport cannot enforce it.
|
|
30
|
+
|
|
31
|
+
Reports from the CLI are persisted under `.aeh-test-results/certification/<certification-id>.json` with the packed candidate SHA-256 and package identity. Temporary candidate paths remain diagnostic only.
|
|
@@ -50,6 +50,36 @@ Budgets are role- and phase-aware. New projects default to `enforce`; `observe`
|
|
|
50
50
|
|
|
51
51
|
Envelopes carry operation, agent, phase, budget, fragment projections, allowed retrieval IDs and a provenance hash. Large bodies are persisted as `.harness/context/<operation>/...raw`; envelopes contain references and compact content, not lifecycle authority.
|
|
52
52
|
|
|
53
|
+
### Informational fast path
|
|
54
|
+
|
|
55
|
+
Repository-grounded explanations use the same separation without creating an
|
|
56
|
+
engineering operation. `aeh_informational_context` selects a bounded set of
|
|
57
|
+
repository files and returns claims, summaries, direct repository-relative
|
|
58
|
+
source refs, provenance and payload estimates. It does not write evidence,
|
|
59
|
+
telemetry, operations, contracts or other `.harness` artifacts. Source bodies
|
|
60
|
+
are not placed in `structuredContent` or replayed in `human`. The lead can call
|
|
61
|
+
`aeh_informational_evidence` for one explicit
|
|
62
|
+
`repo://...#sha256=<chunk>&file-sha256=<file>&range=<start>-<end>` reference
|
|
63
|
+
when a summary is insufficient. A later bounded range can be requested by
|
|
64
|
+
adding `&read=<start>-<end>` while retaining the original selected chunk and
|
|
65
|
+
file identity. Retrieval verifies the whole file with a streaming hash and
|
|
66
|
+
the selected chunk, retains only bounded returned bytes, and carries the
|
|
67
|
+
requested excerpt once while structured metadata remains compact. Stale,
|
|
68
|
+
forged, traversal and repository-escape references fail explicitly. Legacy
|
|
69
|
+
range-only refs remain readable but cannot authorize a later range.
|
|
70
|
+
|
|
71
|
+
Informational defaults are centralized at an 8K target, 12K soft limit and 15K
|
|
72
|
+
exceptional limit, with eight source candidates, a 4KB per-source initial read
|
|
73
|
+
limit and a 20KB total initial read limit. Projection and deduplication run
|
|
74
|
+
before injection. Telemetry names the quantities it can actually measure:
|
|
75
|
+
`rawEvidenceTokens`, `legacyPayloadTokens`, `projectedPayloadTokens`,
|
|
76
|
+
`informationalPayloadTokens` and `duplicatePayloadTokensAvoided`. These are
|
|
77
|
+
deterministic estimates of repository evidence and serialized payloads; they
|
|
78
|
+
are not claims about actual lead-provider token usage. Source-code strings such
|
|
79
|
+
as PASS/FAIL/WARN/security/uncertainty are summarized as implementation text,
|
|
80
|
+
not promoted to verified runtime findings. Typed validation artifacts retain
|
|
81
|
+
their separate authoritative evidence path.
|
|
82
|
+
|
|
53
83
|
## Runtime and troubleshooting
|
|
54
84
|
|
|
55
85
|
Run `aeh doctor` after `aeh init --setup`. Doctor reports the gateway,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "agentic-engineering-harness",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.4",
|
|
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": {
|
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
"test:system-all": "npm run build && vitest run tests/system && AEH_RELIABILITY_SUITES=system AEH_RELIABILITY_REQUIRE_COMPLETE=1 tsx scripts/generate-reliability-report.ts",
|
|
35
35
|
"reliability:report": "tsx scripts/generate-reliability-report.ts",
|
|
36
36
|
"typecheck": "tsc -p tsconfig.json --noEmit",
|
|
37
|
-
"check": "npm run typecheck && npm
|
|
37
|
+
"check": "npm run typecheck && npm run build && npm test",
|
|
38
38
|
"release:check": "npm run check && npm pack --dry-run",
|
|
39
39
|
"release:resolve": "node scripts/release-version.mjs"
|
|
40
40
|
},
|
|
@@ -69,6 +69,7 @@
|
|
|
69
69
|
"security": { "type": "object", "properties": { "sandbox": { "type": "object", "properties": { "provider": { "type": "string" }, "required": { "type": "boolean" }, "image": { "type": "string" }, "imageDigest": { "type": "string" }, "network": { "type": "boolean" }, "extraArgs": { "type": "array", "items": { "type": "string" } }, "readOnlyRoot": { "type": "boolean" }, "ephemeralHome": { "type": "boolean" }, "noNewPrivileges": { "type": "boolean" }, "capDropAll": { "type": "boolean" }, "pidsLimit": { "type": "integer", "minimum": 1 }, "memory": { "type": "string" }, "cpus": { "type": "number", "exclusiveMinimum": 0 }, "tmpfs": { "type": "array", "items": { "type": "string" } }, "forceForRisks": { "type": "array", "items": { "enum": ["low", "medium", "high"] } }, "environmentAllowlist": { "type": "array", "items": { "type": "string" } }, "credentialEnvAllowlist": { "type": "array", "items": { "type": "string" } } } }, "tools": { "type": "array", "items": { "type": "string" } } } },
|
|
70
70
|
"telemetry": { "type": "object" },
|
|
71
71
|
"evals": { "type": "object", "properties": { "corpusDir": { "type": "string" }, "resultsDir": { "type": "string" }, "workspacesDir": { "type": "string" }, "defaultRuns": { "type": "integer", "minimum": 1 }, "confidenceLevel": { "type": "number", "exclusiveMinimum": 0, "exclusiveMaximum": 1 } } },
|
|
72
|
+
"certification": { "type": "object", "properties": { "enabled": { "type": "boolean" }, "policyPath": { "type": "string" }, "provider": { "type": "string" }, "fixtureRoot": { "type": "string" }, "requireSandbox": { "type": "boolean" }, "maxAttempts": { "type": "integer", "minimum": 0 }, "maxDurationMs": { "type": "integer", "minimum": 1 }, "maxCostUsd": { "type": "number", "minimum": 0 }, "maxTotalTokens": { "type": "integer", "minimum": 0 } } },
|
|
72
73
|
"provenance": { "type": "object", "properties": { "outputDir": { "type": "string" }, "buildType": { "type": "string" }, "cosignKey": { "type": "string" }, "required": { "type": "boolean" }, "sbom": { "type": "object", "properties": { "required": { "type": "boolean" }, "command": { "type": "string" } } }, "signing": { "type": "object", "properties": { "required": { "type": "boolean" }, "key": { "type": "string" } } }, "verification": { "type": "object", "properties": { "required": { "type": "boolean" }, "publicKey": { "type": "string" } } } } }
|
|
73
74
|
},
|
|
74
75
|
"$defs": {
|
package/templates/project.yaml
CHANGED
|
@@ -202,6 +202,8 @@ context:
|
|
|
202
202
|
default:
|
|
203
203
|
inputTokens: 16000
|
|
204
204
|
agents:
|
|
205
|
+
lead:
|
|
206
|
+
inputTokens: 12000
|
|
205
207
|
explorer:
|
|
206
208
|
inputTokens: 12000
|
|
207
209
|
planner:
|
|
@@ -214,6 +216,14 @@ context:
|
|
|
214
216
|
inputTokens: 14000
|
|
215
217
|
operation-supervisor:
|
|
216
218
|
inputTokens: 1500
|
|
219
|
+
informational:
|
|
220
|
+
targetTokens: 8000
|
|
221
|
+
softLimitTokens: 12000
|
|
222
|
+
exceptionalTokens: 15000
|
|
223
|
+
maxSources: 8
|
|
224
|
+
sourceSummaryTokens: 96
|
|
225
|
+
maxInitialBytesPerSource: 4000
|
|
226
|
+
maxInitialBytesTotal: 20000
|
|
217
227
|
repositoryMap:
|
|
218
228
|
enabled: true
|
|
219
229
|
tokenBudget: 2000
|