@agentskit/harness 0.9.0 → 0.11.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.
- package/CHANGELOG.md +42 -0
- package/README.md +1 -1
- package/capabilities/public-surface.json +153 -80
- package/dist/cli.js +1000 -180
- package/dist/cli.js.map +1 -1
- package/dist/index.d.ts +340 -57
- package/dist/index.js +837 -120
- package/dist/index.js.map +1 -1
- package/docs/ADR-0003-doc-bridge-context-binding.md +10 -3
- package/docs/ADR-0030-loop-event-bus-orchestration-hooks.md +54 -0
- package/docs/ADR-0031-loop-observability.md +36 -0
- package/docs/LOOP.md +94 -2
- package/docs/MODULE-BOUNDARIES.md +4 -0
- package/loop.config.example.yaml +24 -1
- package/package.json +2 -2
- package/release/manifest.json +2 -2
- package/release/notes.md +6 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,47 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [0.11.0] - 2026-09-13
|
|
4
|
+
|
|
5
|
+
- **Read-only loop observability**: added `ak-harness loop observe` plus the public `runObservability` and
|
|
6
|
+
`assessObservability` APIs. The report combines doctor/debrief/event-log data with Orca terminal/worktree
|
|
7
|
+
inspection and exposes queue, delivery, machine, provider, memory, cache, review, fix-round, lead-time, and
|
|
8
|
+
observed-token metrics.
|
|
9
|
+
- **Deterministic anomaly detection**: flags connected terminals without output, active claims without
|
|
10
|
+
`delivery.json`, finalized dirty worktrees, ready queues with idle slots but no recent dispatch, and stalled
|
|
11
|
+
in-flight workers/reviews. `--precheck` returns scheduler-friendly exit codes without mutating state.
|
|
12
|
+
- **Operator documentation and coverage**: added ADR-0031, module-boundary documentation, and focused regression
|
|
13
|
+
tests for the observability rules.
|
|
14
|
+
|
|
15
|
+
## [0.10.0] - 2026-09-12
|
|
16
|
+
|
|
17
|
+
Closes the gaps found comparing this harness against LangChain's "custom agent harness" article. The structural
|
|
18
|
+
difference stands: this harness orchestrates opaque external CLI agents, so a model/tool-loop middleware isn't
|
|
19
|
+
possible here — every item below targets the orchestration layer this loop actually controls (see ADR-0030).
|
|
20
|
+
|
|
21
|
+
- **Local event bus + orchestration lifecycle hooks**: `plugins.modules` (local `.mjs` files, empty by default)
|
|
22
|
+
loaded once per `tick`/`deliver`, each getting `src/loop/event-bus.ts`'s bus to subscribe to loop events live
|
|
23
|
+
and to `beforeDispatch`/`afterDispatch`/`beforeReview`/`afterReview`/`beforeMerge`/`afterMerge`/`onPause`/
|
|
24
|
+
`onEscalate` — a `before*` hook can return `{ block: true, reason }` to stop the action. `loop doctor` gained a
|
|
25
|
+
`plugins.modules` check.
|
|
26
|
+
- **PII/secret scanning**: `security.pii.enabled` (default false) scans issue text before it enters the
|
|
27
|
+
orchestrator prompt and the worker brief for PII-shaped patterns (email, common API-key prefixes, phone,
|
|
28
|
+
card-number-shaped digits); `security.pii.action` is `redact` (default when enabled), `warn`, or `block`.
|
|
29
|
+
- **Cost/time circuit breakers** for an in-flight dispatch, since the loop cannot count a worker CLI's own
|
|
30
|
+
model/tool calls: `delivery.maxDispatchMinutes` (hard wall-clock ceiling) and `resilience.maxUsageDeltaPercent`
|
|
31
|
+
(stops a dispatch whose provider's remaining Orca usage dropped past the threshold since it was sent out).
|
|
32
|
+
`dispatch.json` now records `initialRemainingPercent`. Either trip stops the issue like a stuck worker.
|
|
33
|
+
- **Human-approval merge gate**: `delivery.merge.requireHumanApproval` (default false) holds a clean, green-checks
|
|
34
|
+
PR until a human approves it on GitHub (`reviewDecision: 'APPROVED'`, already fetched with every PR snapshot).
|
|
35
|
+
- **MCP allowlist doctor check**: `loop doctor` validates the default-deny `mcp.allowTools` bridge wiring when
|
|
36
|
+
`mcp.enabled` — MCP stays adapter-only and read-only per ADR-0028, so this checks the allow/deny plumbing, not a
|
|
37
|
+
live connection to an MCP server.
|
|
38
|
+
- **Dynamic outcome progress**: the brief documents an optional `progress.json` convention
|
|
39
|
+
(`{"o1": "done", "o2": "in-progress"}`) a worker can write at its worktree root; `loop debrief` shows
|
|
40
|
+
`N/M outcome(s) done` per in-flight issue when present (`src/loop/progress.ts`, best-effort, never required).
|
|
41
|
+
- **Secret-shaped filename guardrail**: `delivery.secretFilePatterns` (default covers `.env`, `*.pem`, `*.key`,
|
|
42
|
+
`id_rsa`, `credentials.json`, …) extends the existing `selfEditPaths` hold — a PR touching a matching filename is
|
|
43
|
+
held, never reviewed or merged, in both the normal dispatch path and GitHub label intake.
|
|
44
|
+
|
|
3
45
|
## [0.9.0] - 2026-09-12
|
|
4
46
|
|
|
5
47
|
- **Failure-classification fix**: `classifyProviderFailure` now recognises real Claude/Codex/Grok usage-limit phrasing ("You've hit your session limit", "usage limit reached", "credit balance is too low", "spend limit reached", "temporarily limiting requests", "Overloaded") as `quota` instead of falling through to `other`, and `extractResetsAt` parses a relative (`resets in 3h`) or clock-time (`resets 10:40pm`) reset out of the message. A code-review exit is classified the same way, marking the reviewer's provider (not the review-CLI transport id) cooling down instead of retrying every tick. Root cause of a 2026-09-11/12 pilot bug: 19 unclassified `contract.failed` retries across 4 issues and 12 incomplete reviews over 7h with no cooldown ever recorded.
|
package/README.md
CHANGED
|
@@ -605,7 +605,7 @@ Releases are published by `.github/workflows/release-harness.yml` after a merge
|
|
|
605
605
|
or require an `NPM_TOKEN`. Configure the npm trusted publisher once for
|
|
606
606
|
`AgentsKit-io/harness`, workflow `release-harness.yml`, and package
|
|
607
607
|
`@agentskit/harness`; version changes remain the release trigger.
|
|
608
|
-
The
|
|
608
|
+
The current release candidate checklist and explicit blockers live in
|
|
609
609
|
[`release/manifest.json`](release/manifest.json) and
|
|
610
610
|
[`release/notes.md`](release/notes.md).
|
|
611
611
|
|