@staix/agent-hub 0.12.32 → 0.12.34
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 +16 -0
- package/README.md +6 -5
- package/docs/agent-notes/adapters.md +7 -3
- package/docs/agent-notes/budget.md +5 -3
- package/docs/agent-notes/bus.md +2 -0
- package/docs/agent-notes/daemon.md +7 -5
- package/docs/agent-notes/tasks.md +3 -2
- package/docs/agent-notes/tests.md +2 -1
- package/docs/operations.md +48 -14
- package/docs/quickstart.md +5 -3
- package/docs/security.md +10 -2
- package/docs/smoke.md +1 -1
- package/docs/specs/2026-09-19-agent-hub-design.md +246 -4
- package/docs/specs/2026-09-20-upgrade-recovery-design.md +20 -0
- package/docs/verification/2026-10-18-0.12.33.md +42 -0
- package/docs/verification/2026-10-18-0.12.34.md +48 -0
- package/docs/verified.json +33 -19
- package/package.json +1 -1
- package/plugins/agent-hub/.claude-plugin/plugin.json +1 -1
- package/plugins/agent-hub/server.js +22882 -16496
- package/src/adapters/codex-appserver.ts +81 -11
- package/src/adapters/definitions/builtin-metadata.ts +101 -7
- package/src/adapters/definitions/native-cli-claude-launch.ts +90 -0
- package/src/adapters/definitions/native-cli-claude-setup.ts +80 -0
- package/src/adapters/definitions/native-cli-codex-launch.ts +14 -0
- package/src/adapters/definitions/native-cli-doctor.ts +46 -0
- package/src/adapters/definitions/native-cli-entry-claude.ts +52 -0
- package/src/adapters/definitions/native-cli-entry-codex.ts +26 -0
- package/src/adapters/definitions/native-cli-entry-jcode.ts +24 -0
- package/src/adapters/definitions/native-cli-entry-kimi.ts +52 -0
- package/src/adapters/definitions/native-cli-entry-local.ts +14 -0
- package/src/adapters/definitions/native-cli-entry-pi.ts +51 -0
- package/src/adapters/definitions/native-cli-entry-qwen.ts +20 -0
- package/src/adapters/definitions/native-cli-entry-types.ts +40 -0
- package/src/adapters/definitions/native-cli-entry.ts +19 -0
- package/src/adapters/definitions/native-cli-jcode-mcp.ts +58 -0
- package/src/adapters/definitions/native-cli-launch-common.ts +17 -0
- package/src/adapters/definitions/native-cli-pi.ts +33 -0
- package/src/adapters/definitions/native-cli-preview-claude.ts +37 -0
- package/src/adapters/definitions/native-cli-preview-codex.ts +20 -0
- package/src/adapters/definitions/native-cli-preview-common.ts +57 -0
- package/src/adapters/definitions/native-cli-preview-jcode.ts +20 -0
- package/src/adapters/definitions/native-cli-preview-kimi.ts +28 -0
- package/src/adapters/definitions/native-cli-preview-pi.ts +36 -0
- package/src/adapters/definitions/native-cli-preview-qwen.ts +22 -0
- package/src/adapters/definitions/native-cli-preview.ts +16 -0
- package/src/adapters/definitions/native-config-defaults.ts +19 -0
- package/src/adapters/definitions/native-config-policy.ts +35 -0
- package/src/adapters/definitions/native-context.ts +35 -0
- package/src/adapters/definitions/native-daemon-kimi.ts +5 -0
- package/src/adapters/definitions/native-daemon-policy.ts +18 -0
- package/src/adapters/definitions/native-display.ts +18 -0
- package/src/adapters/definitions/native-factories.ts +48 -0
- package/src/adapters/definitions/native-policy-aux.ts +130 -0
- package/src/adapters/definitions/native-quota.ts +29 -0
- package/src/adapters/definitions/native-recovery-continuity.ts +12 -0
- package/src/adapters/definitions/native-recovery.ts +88 -0
- package/src/adapters/definitions/qwen.ts +8 -4
- package/src/adapters/registry-types.ts +97 -10
- package/src/adapters/registry.ts +103 -3
- package/src/cli/console-state.ts +5 -5
- package/src/cli/identity.ts +6 -5
- package/src/cli/jcode-mcp.ts +2 -58
- package/src/cli/launch.ts +14 -100
- package/src/cli/main.ts +35 -272
- package/src/cli/output.ts +3 -2
- package/src/cli/preview.ts +14 -125
- package/src/cli/recovery-guidance.ts +17 -13
- package/src/cli/reset.ts +13 -1
- package/src/cli/setup.ts +2 -80
- package/src/cli/shell-quote.ts +3 -0
- package/src/cli/terminal-recovery.ts +17 -10
- package/src/cli/upgrade-interactive.ts +4 -2
- package/src/cli/upgrade-presentation.ts +11 -1
- package/src/cli/upgrade-restore-state.ts +2 -1
- package/src/cli/upgrade-runtime.ts +107 -146
- package/src/cli/upgrade.ts +10 -7
- package/src/hub/budget.ts +6 -30
- package/src/hub/bus.ts +133 -14
- package/src/hub/conductor.ts +8 -4
- package/src/hub/config-apply.ts +9 -13
- package/src/hub/config-reload.ts +7 -2
- package/src/hub/context-window.ts +3 -27
- package/src/hub/control-client.ts +1 -1
- package/src/hub/crash.ts +2 -35
- package/src/hub/daemon.ts +244 -241
- package/src/hub/deferred-hub.ts +60 -0
- package/src/hub/delivery-journal.ts +6 -0
- package/src/hub/execution-budget.ts +2 -1
- package/src/hub/hub-tools.ts +3 -3
- package/src/hub/peer-catalog.ts +4 -13
- package/src/hub/permission-mode.ts +9 -12
- package/src/hub/recovery-continuity.ts +6 -5
- package/src/hub/report.ts +9 -8
- package/src/hub/restart.ts +12 -1
- package/src/hub/roster.ts +6 -7
- package/src/hub/routing.ts +21 -10
- package/src/hub/settings.ts +6 -5
- package/src/hub/settled-roles.ts +1 -1
- package/src/hub/start-mode.ts +8 -6
- package/src/hub/tasks.ts +14 -11
- package/src/hub/tooling.ts +4 -60
- package/src/hub/ui.ts +3 -1
- package/src/memory/recall.ts +4 -5
- package/src/models/route/signals.ts +3 -1
- package/src/pi/launch.ts +2 -1
- package/src/ui/index.html +3 -2
- package/src/ui/office-model.ts +3 -1
- package/src/ui/peer-palette.ts +16 -6
- package/templates/routing.toml +2 -2
|
@@ -374,7 +374,7 @@ Assignment is a pure function of `routing.toml`, the task's signals and the peer
|
|
|
374
374
|
"skip_local"`, `pii = "local_only"`); `ahub route explain <id | --class <c> <title>>` runs the
|
|
375
375
|
same function and prints its trace: signals, every candidate with the reason it was kept
|
|
376
376
|
or skipped, owner, reviewer and route. `local` uses the class's `route` / `fixed_model` for a
|
|
377
|
-
task turn and `[local]` otherwise. Verification failure (tests fail, review `changes_requested`
|
|
377
|
+
task turn and `[local]` otherwise. Verification failure (tests fail, review `changes_requested` `tasks.escalate_after` times in a row, default 3, #488) escalates
|
|
378
378
|
the task to the next peer in `escalate_to`; Switchyard handles per-call escalation
|
|
379
379
|
inside a peer.
|
|
380
380
|
|
|
@@ -573,7 +573,7 @@ AGENTS.md, REVIEW.md
|
|
|
573
573
|
`end_turn`, never lost.
|
|
574
574
|
3. `[STATUS]` messages from one peer are batched into one digest per recipient.
|
|
575
575
|
4. A task proposed by Claude, accepted by Codex, marked done, is auto-routed to the
|
|
576
|
-
reviewer; `changes_requested`
|
|
576
|
+
reviewer; `tasks.escalate_after` consecutive `changes_requested` (default 3) escalate per `routing.toml`.
|
|
577
577
|
5. `ahub local` completes a `bulk_edit` task; OmniRoute log shows the request with the
|
|
578
578
|
per-peer token and `x-omniroute-provider: vllm`; `ahub route explain` shows the
|
|
579
579
|
chosen route.
|
|
@@ -3237,8 +3237,8 @@ The guard inventories AST comparisons, closed-list imports and vendor literals,
|
|
|
3237
3237
|
including inline dashboard scripts, under stable file/symbol scopes. Its reviewed
|
|
3238
3238
|
A1 baseline records the current source, rather than claiming the old A0 grep's
|
|
3239
3239
|
265 line matches equal AST node counts. A new group, count growth or stale entry
|
|
3240
|
-
fails; later phases may only shrink this baseline.
|
|
3241
|
-
resolver imports
|
|
3240
|
+
fails; later phases may only shrink this baseline. A1 originally exempted kind-aware comparisons from real, unshadowed registry
|
|
3241
|
+
resolver imports; the A2 amendment below counts them instead. Native adapter implementations and
|
|
3242
3242
|
explicit non-peer config semantics remain the narrow exceptions. Existing literal
|
|
3243
3243
|
catalog exports used by older recovery source probes are retained until their
|
|
3244
3244
|
replacement compatibility proof is available; a refactor must not silently make a
|
|
@@ -3260,3 +3260,245 @@ same scanner reports 428/172 on that main and 415/171 on the combined A1 source.
|
|
|
3260
3260
|
Every added or increased baseline entry matches that main-only delta; A1 still
|
|
3261
3261
|
removes thirteen sites and one group. This explicit reconciliation precedes the
|
|
3262
3262
|
first shipped baseline and does not permit later phases to grow it.
|
|
3263
|
+
|
|
3264
|
+
## Adapter registry A2 amendment (#451)
|
|
3265
|
+
|
|
3266
|
+
A2 counts native-name comparisons even when a trusted registry resolver supplies
|
|
3267
|
+
its left or right operand. These sites use the `kind-aware-comparison` inventory
|
|
3268
|
+
pattern and the same lexical file/symbol group as a raw comparison, including
|
|
3269
|
+
switch cases. Replacing a raw comparison with `kindOf` or `definitionOf(...).kind`
|
|
3270
|
+
therefore does not shrink a baseline group. Alias and shadowing checks remain in
|
|
3271
|
+
force. The pre-existing kind-aware preview site is counted explicitly; the A1
|
|
3272
|
+
source has 415 other sites plus that one site. A2 removes the transitional
|
|
3273
|
+
baseline by migrating policy, rather than by adding resolver exemptions.
|
|
3274
|
+
|
|
3275
|
+
Session metadata distinguishes native resume arguments from daemon startup
|
|
3276
|
+
restoration. `session.resumeById` means that recovery passes the verified native
|
|
3277
|
+
session id to the start command (Qwen). `session.restoreOnStart` means that the
|
|
3278
|
+
daemon restores recorded startup options before automatic startup (Pi). Neither
|
|
3279
|
+
flag proves that a conversation can be resumed or permits a fresh replacement.
|
|
3280
|
+
Crash recovery tests `resumeById` and uses `crashIdentity`; transport choice or the
|
|
3281
|
+
presence of a factory does not establish that capability.
|
|
3282
|
+
|
|
3283
|
+
A2 preserves literal `KNOWN_PEERS` and `OPTIONAL_PEERS` exports in
|
|
3284
|
+
`peer-catalog.ts` for released coordinators that inspect their source. The guard
|
|
3285
|
+
records these exact file/symbol exceptions separately with the reason
|
|
3286
|
+
"cross-release source probe", and tests their values against the typed registry
|
|
3287
|
+
catalog. The same exception preserves `start-mode.ts`'s literal `START_MODE_PEERS`, which released coordinators inspect before restoring Kimi headlessly. The three probes are counted separately (5 + 2 + 3 sites). The native vendor baseline is otherwise empty. A retained coordinator's
|
|
3288
|
+
existing source probe must accept the A2 target; no unsupported-target ceiling is
|
|
3289
|
+
introduced. ponytail: retire these compatibility literals only after a separately
|
|
3290
|
+
approved minimum supported upgrade source no longer reads them.
|
|
3291
|
+
|
|
3292
|
+
Native recovery hooks return read-only facts over the existing narrow DTOs.
|
|
3293
|
+
`zeroTurn({ stateDir, binding, phase })` reads Codex's existing event proof only
|
|
3294
|
+
for planning, and Claude's existing transcript absence only for attachment or
|
|
3295
|
+
verification. `restoreArgs(peer)` and `recoveryRefusal(peer)` are pure over the
|
|
3296
|
+
captured peer. `personFresh` and `missingEvidence` are policy data, not authority.
|
|
3297
|
+
`resumeArgv(binding, fresh)` returns the CLI tail; the coordinator supplies the
|
|
3298
|
+
interpreter, entrypoint and project prefix and retains all receipt, repair,
|
|
3299
|
+
waiver and unknown-state decisions. The restore oracle, supplemental matrix and
|
|
3300
|
+
transition code remain byte-unchanged.
|
|
3301
|
+
|
|
3302
|
+
Quota and context readers are pure normalizers:
|
|
3303
|
+
`QuotaReader.read(value: unknown): UsageWindow[]` and
|
|
3304
|
+
`ContextReader.read(value: unknown, sessionId: string, measuredAt: number): ContextReading`.
|
|
3305
|
+
They preserve the existing malformed-input results. The coordinator still binds
|
|
3306
|
+
transport generation, native session and measurement time before reporting.
|
|
3307
|
+
Palette data additionally carries optional `tone` and `ansi`, preserving the
|
|
3308
|
+
existing terminal palette and rendered CSS bytes.
|
|
3309
|
+
|
|
3310
|
+
P4 conformance is transport-specific. Delivery-only native drivers set busy
|
|
3311
|
+
synchronously at admission; pull-only WebSocket peers receive no unsolicited
|
|
3312
|
+
delivery or busy mutation; Claude push keeps its existing receipt/native-start
|
|
3313
|
+
busy contract. Native production behavior does not change to satisfy a generic
|
|
3314
|
+
conformance case. The kit also covers the existing generation fences, process
|
|
3315
|
+
groups, approvals, quota refusals, mode acknowledgement/timeout and recovery
|
|
3316
|
+
contracts for each applicable transport, with explicit unsupported outcomes.
|
|
3317
|
+
|
|
3318
|
+
`resumeArgv` accepts the existing `SessionRef` (session id/file, backend and model),
|
|
3319
|
+
which withholds terminal and launch identity from a pure argument formatter.
|
|
3320
|
+
`recoveryRefusal(peer, phase?: "plan" | "restore")` defaults to planning and keeps
|
|
3321
|
+
both existing phase-specific native messages. Fixed private compatibility data
|
|
3322
|
+
`legacyTargetSupport` and `legacyHeadlessArgv` name only the existing catalog or
|
|
3323
|
+
start-mode literal exports; their old read points and regexes are unchanged.
|
|
3324
|
+
|
|
3325
|
+
`start.daemonPort` is a closed, data-only engine tag (`codex-appserver`, `acp`,
|
|
3326
|
+
`owned-acp`, `pi-rpc`, `local-worker`), required when `start.create` exists. Unknown
|
|
3327
|
+
values are refused at registry load. Channel/pull definitions without a factory
|
|
3328
|
+
leave it absent. Typed registry-owned wrappers retain the existing `DaemonPorts`
|
|
3329
|
+
union; core selects the engine and retains lifecycle/authentication closures,
|
|
3330
|
+
while the definition factory remains the only native constructor.
|
|
3331
|
+
|
|
3332
|
+
The trusted CLI host may supply `LaunchContext.pi` using the existing Pi builder
|
|
3333
|
+
options, extension path and live bridge port/token. A redacted preview supplies
|
|
3334
|
+
only redacted placeholders; bridge tokens never reach previews, logs or events.
|
|
3335
|
+
`LaunchPlan.env` preserves Pi's existing child environment. Definitions never
|
|
3336
|
+
load daemon config or infer executable commands from environment text.
|
|
3337
|
+
`VersionContext` adds `observedVersion`, `nativeCommand` and `projectRoot` once:
|
|
3338
|
+
the host still performs each probe, while definitions validate or display it.
|
|
3339
|
+
`cli.authority` and `cli.personOnlyFlags` can only restrict existing authority;
|
|
3340
|
+
identity.ts stays authoritative and missing/unknown metadata retains today's
|
|
3341
|
+
rule. `start.passthrough` is data only. The MCP hook is a pure plan over the
|
|
3342
|
+
existing project/state/server-entrypoint/form tuple; every write, ordering fence
|
|
3343
|
+
and finally cleanup remains in the CLI host.
|
|
3344
|
+
|
|
3345
|
+
### A2 internal native host projections (2026-10-18)
|
|
3346
|
+
|
|
3347
|
+
The remaining AST inventory after the first A2 checkpoint has 260 policy sites in
|
|
3348
|
+
113 lexical groups. Native CLI entrypoints and previews, configuration validators,
|
|
3349
|
+
settings rows, plugin inventory and recovery presentation need explicit definition
|
|
3350
|
+
projections in addition to the original frozen transport factory hooks. These are
|
|
3351
|
+
moves of existing built-in policy, with the same host-owned effects, argv, ordering,
|
|
3352
|
+
errors, privacy, permission and timing fences. They add no instance support,
|
|
3353
|
+
capability or native behavior.
|
|
3354
|
+
|
|
3355
|
+
Private, statically imported built-in preview helpers implement the frozen
|
|
3356
|
+
`start.launch` / `publicLaunch` redaction path. They preserve current validation,
|
|
3357
|
+
JSON order and placeholders, and cannot execute a native process, connect to
|
|
3358
|
+
control, allocate runtime state or write authoritative state. They are not public
|
|
3359
|
+
`AdapterDefinition` / `NativeHooks` extension points; configuration cannot register
|
|
3360
|
+
a helper. Person CLI entrypoints are relocated into a fixed private built-in
|
|
3361
|
+
dispatcher for C1, without adding a public `cli.run` or `NativeHooks` callback.
|
|
3362
|
+
The dispatcher cannot load external modules or accept caller-selected callbacks;
|
|
3363
|
+
its typed context contains only the original CLI host operations. Identity,
|
|
3364
|
+
command access, live-test delegation, audit and project/lifecycle admission remain
|
|
3365
|
+
in the host before dispatch, and each moved body retains its native effects,
|
|
3366
|
+
ordering, errors, environment and cleanup. Doctor projections carry existing probe
|
|
3367
|
+
metadata; the host retains probe execution and output. Configuration projections receive the current validator vocabulary and
|
|
3368
|
+
return the existing schema/settings entries. Recovery projections carry the current
|
|
3369
|
+
crash plan, continuity decoder/bookmark and unrecorded-terminal classification.
|
|
3370
|
+
Reporting flags, tool classification, recall source and display tones are semantic
|
|
3371
|
+
data; a consumer must not replace raw comparisons with kind-name wrappers or
|
|
3372
|
+
constant aliases. Plugin inventory takes the existing home/cwd/env context and
|
|
3373
|
+
returns the existing typed Addon rows, correcting the unused string-array
|
|
3374
|
+
placeholder. Arbitrary daemon callbacks and caller-chosen executables, paths,
|
|
3375
|
+
permissions or policy remain forbidden. External module publication/validation is
|
|
3376
|
+
still A4 and must freeze its accepted subset separately.
|
|
3377
|
+
|
|
3378
|
+
Claude's channel is native-hook-driven: delivery insertion remains idle until an
|
|
3379
|
+
authenticated native-start observation. Its conformance case asserts that behavior;
|
|
3380
|
+
transport adapters retain the synchronous-busy requirement. Unsupported native
|
|
3381
|
+
quota or process ownership is an explicit applicability result, never synthetic
|
|
3382
|
+
success. Every applicable P4 behavior is exercised with the real adapter and fake
|
|
3383
|
+
transport, without changing existing assertions or claiming live-account evidence.
|
|
3384
|
+
|
|
3385
|
+
The P4 late-result probe exposed an existing Codex watchdog defect on the unchanged
|
|
3386
|
+
54e631d8 adapter: a completed agent message could refill the answer after watchdog
|
|
3387
|
+
invalidation, then its stale turn completion could broadcast it without its former
|
|
3388
|
+
audience. A2 repairs this intended generation fence in source. It discards answer
|
|
3389
|
+
notifications without an active turn and notifications naming an inactive turn,
|
|
3390
|
+
retains the legacy unknown-turn compatibility path, and clears expired deltas.
|
|
3391
|
+
The new probe keeps its strict no-message/needs-review assertions. Supported native
|
|
3392
|
+
RPC behavior, approvals, quota classification and existing tests stay unchanged.
|
|
3393
|
+
|
|
3394
|
+
The watchdog fence also covers acceptance before a queued `turn/started` report
|
|
3395
|
+
and unanswered hub `turn/start` RPCs. Cancelled named ids remain retired until their
|
|
3396
|
+
exact completion or session teardown; late acknowledgements cannot restore a
|
|
3397
|
+
cancelled audience or relabel uncertainty as `failed_safe`. Ordinary legacy
|
|
3398
|
+
unknown-id starts keep their fallback. After an invalidation with no provable
|
|
3399
|
+
native identity, unnamed lifecycle reports cannot be safely attributed: keep the
|
|
3400
|
+
peer offline and require a verified reattachment rather than guess a new turn.
|
|
3401
|
+
|
|
3402
|
+
### A2 daemon semantic projections (2026-10-18)
|
|
3403
|
+
|
|
3404
|
+
The daemon constructs every native driver through `start.create` and the fixed,
|
|
3405
|
+
transport-typed `DAEMON_PORTS` wrappers. Protocol lifecycle dispatch may select the
|
|
3406
|
+
actual engine; provider policy does not select an unrelated capability as an alias
|
|
3407
|
+
for a kind. Existing host callbacks retain their original effect authority,
|
|
3408
|
+
privacy, owner checks, ordering and timing.
|
|
3409
|
+
|
|
3410
|
+
The internal definitions additionally carry the existing start-only enable-switch
|
|
3411
|
+
membership rule, exclusive-start refusal, tool-refresh requirement, explicit
|
|
3412
|
+
headless-mode argument, attached-worker reconfiguration rule, dashboard start
|
|
3413
|
+
command and pure ACP argv builder. Attach metadata serializes recovery launch
|
|
3414
|
+
identity and carries the existing pull-only admission and status guidance.
|
|
3415
|
+
Permission status text is separate from the existing permission refusal text;
|
|
3416
|
+
`permission.trackUnattended` keeps native unattended ownership accounting distinct
|
|
3417
|
+
from protocol dispatch.
|
|
3418
|
+
Budget metadata names the soft-token reset on resume. Session metadata declares
|
|
3419
|
+
native conversation revert support; the host still checks the actual driver and
|
|
3420
|
+
latest turn and owns the pause while reverting. CLI metadata formats retained
|
|
3421
|
+
terminal and roster-return notices and supplies the existing preview argument
|
|
3422
|
+
tail. These fields only move native policy, preserving existing output bytes and
|
|
3423
|
+
behavior. The version hook consumes the already frozen `observedVersion` and peer
|
|
3424
|
+
fields; the daemon retains the bounded native transcript probe.
|
|
3425
|
+
|
|
3426
|
+
The doctor command consumes fixed built-in metadata and pure observed-value
|
|
3427
|
+
projections exported through the registry. Native tool order, plugin probe argv,
|
|
3428
|
+
optional roster checks, section/severity, recovery identity fields and legacy
|
|
3429
|
+
capture labels stay in the built-in implementation. The CLI retains every spawn,
|
|
3430
|
+
source-verification, connection, gateway and memory effect in its existing order
|
|
3431
|
+
and privacy boundary. This private data adds no public definition member,
|
|
3432
|
+
executable callback or configurable probe; unknown names retain their existing
|
|
3433
|
+
Hub/unknown classification.
|
|
3434
|
+
|
|
3435
|
+
A2 reanchors thirteen seeded mutants to the same moved semantic guards: explicit Pi
|
|
3436
|
+
roster precedence, supported roster keys, retained-terminal result text, Kimi TUI
|
|
3437
|
+
recovery refusal and admission cleanup, Qwen opt-in/session/crash resume, planning
|
|
3438
|
+
reservation support, active Kimi TUI settings floor, live headless Kimi watch,
|
|
3439
|
+
disabled Codex plugins and bounded
|
|
3440
|
+
regular-file tooling reads. Seed ids and test targets remain unchanged; the other
|
|
3441
|
+
406 seed objects remain byte-identical. The mutation pairs must still demonstrate
|
|
3442
|
+
green production behavior and failure with that guard removed.
|
|
3443
|
+
|
|
3444
|
+
The final A2 AST inventory is empty for core policy: zero sites and zero lexical
|
|
3445
|
+
groups. The reviewed policy baseline is explicitly `[]`; it is never generated
|
|
3446
|
+
from source during tests. Three cross-release literal probes remain separate
|
|
3447
|
+
(`KNOWN_PEERS` five, `OPTIONAL_PEERS` two, `START_MODE_PEERS` three). Precise
|
|
3448
|
+
screening-provider/lifecycle enum false positives remain scoped by file, symbol
|
|
3449
|
+
and AST shape; negative fixtures still catch vendor comparisons in those scopes.
|
|
3450
|
+
|
|
3451
|
+
Quota participation and execution-budget instrumentation are independent.
|
|
3452
|
+
`budget.quotaExempt` preserves native quota exemption while retaining `account`
|
|
3453
|
+
and instrumented execution limits: local sets it, Pi does not. Registered kinds
|
|
3454
|
+
without budget metadata remain quota-exempt; external ids retain manual quota
|
|
3455
|
+
accounting. The A1 named compatibility metadata export preserves its original
|
|
3456
|
+
wrapper plans and observable shape, while the registry consumes separate native
|
|
3457
|
+
runtime definitions. Native display constants retain reference identity; private
|
|
3458
|
+
stream tone selection does not add fields to that observable display object.
|
|
3459
|
+
|
|
3460
|
+
Configurable start-mode fallback reads the registered definition's default form,
|
|
3461
|
+
retaining explicit overrides and existing unknown-id behavior. The Kimi default
|
|
3462
|
+
mutant changes that native metadata from TUI to headless, so the original default
|
|
3463
|
+
assertion observes it directly; it does not remove a settings row or mutate the
|
|
3464
|
+
retained cross-release source literal.
|
|
3465
|
+
|
|
3466
|
+
A2 preserves the recovery tests' assertion contract while reconnecting their
|
|
3467
|
+
execution harnesses to production code. The Pi CLI parser harness imports its
|
|
3468
|
+
extracted pure parser rather than extracting a removed main.ts declaration.
|
|
3469
|
+
The reattach parser VM receives the real registry resolver, and the attachment
|
|
3470
|
+
wait VM receives the real exported session-field resolver. Every existing
|
|
3471
|
+
`expect` line in these three files remains byte-identical; no fallback, mock
|
|
3472
|
+
policy, weaker condition or changed expected result is introduced.
|
|
3473
|
+
|
|
3474
|
+
### A2 round-1 parity and capability-scope constraints
|
|
3475
|
+
|
|
3476
|
+
Quota handoff uses the registry's native platform projection, preserving exactly
|
|
3477
|
+
Claude, Codex, Kimi, Qwen and Jcode. The per-delivery `recallInjected` flag remains
|
|
3478
|
+
independent: adding Kimi/Jcode handoff platforms does not make their own sessions
|
|
3479
|
+
part of injected-platform exclusion.
|
|
3480
|
+
|
|
3481
|
+
Routing reads on-prem trust for PII admission. Legacy fixed-model/relay policy,
|
|
3482
|
+
local-allowed refusal text, context handling, preference tier, relay ordering and
|
|
3483
|
+
trace labels are native definition data. Host routing and task flow retain their
|
|
3484
|
+
existing policy calculations, messages and candidate ordering (including class
|
|
3485
|
+
fallback duplicates). This native routing data is not an external configuration
|
|
3486
|
+
surface.
|
|
3487
|
+
|
|
3488
|
+
Registry loading calls `assertNativeCapabilityScope` before publication. A
|
|
3489
|
+
non-builtin definition cannot declare `start.acpCommand`, `attach.admission`,
|
|
3490
|
+
`budget.resetSoftTokensOnResume`, `session.crashIdentity`, a `pi-rpc` daemon port,
|
|
3491
|
+
or the native `routing` policy block. Fixed builtin membership is object identity,
|
|
3492
|
+
not a caller-supplied kind name. Current consumers combine these fields with fixed-builtin assumptions or
|
|
3493
|
+
host-global native state; generic shapes are follow-up work before A3/A4 loading. Other ordinary ACP
|
|
3494
|
+
metadata remains valid.
|
|
3495
|
+
|
|
3496
|
+
The Qwen conductor refusal uses the original generic CLI text. Pi terminal
|
|
3497
|
+
observation reads only observed top-level/nested session-file metadata, never
|
|
3498
|
+
launch `args.sessionFile`. Pi TUI recovery bindings preserve the captured
|
|
3499
|
+
`CLAUDE_CONFIG_DIR` fallback while retaining Codex's `CODEX_HOME` selection.
|
|
3500
|
+
|
|
3501
|
+
The guard resolves immutable peer-id constant aliases and supplied-source
|
|
3502
|
+
import/reexport bindings through lexical symbols before classifying comparisons.
|
|
3503
|
+
Shadowed and unrelated bindings remain independent; named non-peer enum exceptions
|
|
3504
|
+
keep their exact scope. It performs no filesystem or package lookup.
|
|
@@ -849,3 +849,23 @@ Recovery authorization and the presentation parser share the pure
|
|
|
849
849
|
skipping the accepted one-shot presentation flags (`--json`, `--verbose`, `--color=<mode>`). Such flags never hide
|
|
850
850
|
person-only reattachment from agent or live-test refusal checks; normalization
|
|
851
851
|
confers no authority and unknown flags still fail the command parser.
|
|
852
|
+
|
|
853
|
+
|
|
854
|
+
## Recovery-held hub publication amendment (#478)
|
|
855
|
+
|
|
856
|
+
2026-10-18: Keep exact carried-queue integrity equality. Every checked prepare renewal carries the verified target features stored on the operation. Ordinary post-commit observational inspection stays free of pre-commit compatibility checks.
|
|
857
|
+
|
|
858
|
+
Only an authenticated recovery operation with verified target support opts into hub deferral; a bare bus delivery fence retains its existing queue admission and does not confer daemon operation authority. The bus accepts hub-originated, deliverable notices during recovery into optional `BusSnapshot.deferredHub`, persisted by the existing private delivery journal and restart snapshot. These originals are outside delivery queues and their integrity projection. The accepted audience and envelope metadata, including private marking, are captured without new text-writing paths. FYI and hop-dropped publications keep their existing record-only behavior. Withdrawal and role/feed revocation also cover deferred originals. Backlog retention counts them as accepted work.
|
|
859
|
+
|
|
860
|
+
A target advertises `recovery_deferred_hub` beside `task_cancel`. Before a commit to a target without that verified feature, the source materializes deferred originals into normal queues; expected integrity therefore verifies those rows normally. No old target is asked to preserve a field it cannot read.
|
|
861
|
+
|
|
862
|
+
Deferred restore validation refuses malformed, non-hub, duplicate or already-accepted ids with a typed recovery error. The FIFO is capped at 2048 originals; overflow refuses admission without dropping accepted work or releasing the hold. Each release transfers an original through normal publication and checkpoints its removal from the deferred FIFO together with its queued/seen state before delivery is allowed. A crash resumes from the journal, preserving id dedupe. Failed checkpoints leave the original pending and recovery held. A retry of an already archived release still completes the bus release; a later ordinary startup also completes durable pending publication. Abort and lease expiry retain their recovery ownership until pending publication can be checkpointed.
|
|
863
|
+
|
|
864
|
+
When no typed presentation cause exists, the human blocked screen shows only the existing sanitized first recorded error line, with controls removed and a 512-code-point cap. The action is uniform: resolve the recorded error, then resume or choose an offered action. Feature compatibility is a conditional option only, never classified from an error substring. JSON and piped rendering are unchanged.
|
|
865
|
+
|
|
866
|
+
|
|
867
|
+
### Deferred-notice edge paths (#478 review amendment)
|
|
868
|
+
|
|
869
|
+
An expired source lease retries a failed release checkpoint on a short timer; a vanished coordinator is not required to unstick the hold once storage recovers. Reset previews count deferred recipients as pending delivery ids, and stopped-runtime reset atomically records their discard audit and removes the originals without publication. Deferred records require their captured recipient array. Flush rollback restores only publication-owned state (affected queue arrays in place, deferred and seen ids, withdrawal bookkeeping and pending outcomes); it never reloads a live bus snapshot or changes its recovery mode, prefaces or independent pauses. Advisory nudges, like publication events, run after the checkpoint.
|
|
870
|
+
|
|
871
|
+
A corrupt deferred field still refuses daemon restore. Coordinator inspection catches only the typed deferred-corruption error, keeps independently verified stopped evidence, reports an unknown snapshot binding with a static blocker, and leaves person abort/stop-and-archive exits available. It never claims that the corrupt snapshot can be resumed, repairs it or exposes rejected content.
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# 0.12.33 release verification
|
|
2
|
+
|
|
3
|
+
This record covers release preparation and source review. It does not claim publication, installation, a running-hub restart or native/live acceptance.
|
|
4
|
+
|
|
5
|
+
## Candidate
|
|
6
|
+
|
|
7
|
+
Version 0.12.33, control protocol 16 (`src/hub/control-client.ts`), from merged main `fe53b272db455fd5b95b4a504e806a0a0625a26c`. The candidate includes the one PR merged since `v0.12.32`: #479 (issue #478). The exact first-party memory pin remains `@staix/agent-mem` 0.3.1.
|
|
8
|
+
|
|
9
|
+
- The upgrade runs with the target release's own coordinator (`bunx --package @staix/agent-hub@0.12.33 ahub upgrade`). An upgrade from 0.12.32 into 0.12.33 therefore already uses the fixed lease renewal and the deferred hub notices.
|
|
10
|
+
- #479 adds the target feature `recovery_deferred_hub` beside `task_cancel`. A target without it gets deferred notices in its ordinary queues before commit, so mixed-version upgrades keep exact queue verification.
|
|
11
|
+
- Still open: a real upgrade with a managed TUI and cancelled rows (#478), a real Orca upgrade exercising `ahub recovery reattach` (#463), the native real-terminal console settings leg (#439 AC5), installed managed-Pi #418 AC8 (#142) and #438 AC7.
|
|
12
|
+
|
|
13
|
+
## Document review
|
|
14
|
+
|
|
15
|
+
`node scripts/check-docs.mjs --require-fresh` reported 10 stale documents, all made stale by #479; editing `daemon.md` made an 11th, `docs/agent-notes/README.md`. Each was compared against the #479 source diff (`cf3026fe..fe53b272`). The limits and messages cited were checked in the source: `MAX_DEFERRED_HUB` is 2048 (`src/hub/deferred-hub.ts`), the blocked-screen cap is 512 code points and the label is `typed cause unknown` (`src/cli/upgrade-presentation.ts`), and the snapshot blocker message comes from `src/cli/upgrade-runtime.ts`. Version references were moved to 0.12.33 in the same pass. No document review is deferred.
|
|
16
|
+
|
|
17
|
+
| Document | Prior source stamp | Review result | Checked claims and correction |
|
|
18
|
+
| --- | --- | --- | --- |
|
|
19
|
+
| `README.md` | `cf3026feab218207f0c21b300552eada0d5be227` | corrected | Status 0.12.33; Jcode entry unchanged; the verification link and the open #478 live leg. `task_cancel` text still holds. |
|
|
20
|
+
| `docs/quickstart.md` | `cf3026feab218207f0c21b300552eada0d5be227` | corrected | `v0.12.33` install example and the upgrade section for the #478 fixes; reattach and resume text unchanged. |
|
|
21
|
+
| `docs/security.md` | `cf3026feab218207f0c21b300552eada0d5be227` | corrected | Blocked-screen recorded error passes the terminal sanitizer, controls stripped, capped; a corrupt snapshot is reported with a fixed message only. |
|
|
22
|
+
| `docs/operations.md` | `cf3026feab218207f0c21b300552eada0d5be227` | corrected | 0.12.33 header and upgrade examples; deferred hub notices during recovery and the downgrade path; the lease-expiry retry; the corrupt-snapshot blocker; the blocked-screen fallback; runtime reset discards deferred notices; features sent on lease renewal. |
|
|
23
|
+
| `docs/agent-notes/README.md` | `cf3026feab218207f0c21b300552eada0d5be227` | unchanged | Stale only because this pass edited `daemon.md`; the console exact-row navigation rule it explains is unchanged. |
|
|
24
|
+
| `docs/agent-notes/adapters.md` | `cf3026feab218207f0c21b300552eada0d5be227` | unchanged | #479 touched only recovery and bus wiring in `daemon.ts`; no adapter, spawn or approval rule changed. |
|
|
25
|
+
| `docs/agent-notes/budget.md` | `cf3026feab218207f0c21b300552eada0d5be227` | unchanged | Pause persistence and resume-notice order unchanged; "publish, then withdraw" holds, and withdraw now also covers deferred notices. |
|
|
26
|
+
| `docs/agent-notes/bus.md` | `cf3026feab218207f0c21b300552eada0d5be227` | corrected | Deferred notices stay outside queues and the integrity view, every pending-work read includes them, the cap refuses rather than drops; release checkpoints each move and a failed checkpoint restores only publication state. |
|
|
27
|
+
| `docs/agent-notes/daemon.md` | `cf3026feab218207f0c21b300552eada0d5be227` | corrected | Every prepare sends stored `targetFeatures`; when hub notices are deferred and the lease-expiry retry; `inspectRecovery` catches only `RecoveryDeferredHubError`; the `renderBlocked` fallback rule. |
|
|
28
|
+
| `docs/agent-notes/tasks.md` | `cf3026feab218207f0c21b300552eada0d5be227` | corrected | Role withdrawal finds unread requests through `bus.pendingEnvelopes`, which includes deferred notices. |
|
|
29
|
+
| `docs/agent-notes/tests.md` | `cf3026feab218207f0c21b300552eada0d5be227` | unchanged | The new tests follow the existing rules; `scripts/check.sh`, seeds and CI are unchanged. |
|
|
30
|
+
|
|
31
|
+
`AGENTS.md` area notes and `docs/verified.json` paths now include `src/hub/deferred-hub.ts` (bus and daemon) and `src/cli/reset.ts` (bus), the modules the new bus and daemon rules describe. A separate manifest commit restamps the reviewed documents against the reviewed source; it does not stamp itself. The release PR must use a merge commit, and committed freshness is rerun on main before tagging.
|
|
32
|
+
|
|
33
|
+
## Recorded checks
|
|
34
|
+
|
|
35
|
+
| PR | Final head | CI run |
|
|
36
|
+
| --- | --- | --- |
|
|
37
|
+
| [#479](https://github.com/STAIxBWLB/agent-hub/pull/479) | `e832901d10ab263e3887426534a6aebd3e8612ef` | [39085109057](https://github.com/STAIxBWLB/agent-hub/actions/runs/39085109057) |
|
|
38
|
+
|
|
39
|
+
Both OS check jobs, all four seeded shards and the `seeded guards` aggregate succeeded. The PR passed two OCR delegation review rounds by a Claude subagent: 21 of 21 files were accounted for, and the round-1 findings were fixed and verified at the final head. These prior PR gates do not replace the release candidate's own exact-head CI.
|
|
40
|
+
|
|
41
|
+
- Generated assets: `bun install --frozen-lockfile` and `bun run build` ran locally at `894350fa`. The only change to `plugins/agent-hub/server.js` and the plugin manifest is the version string 0.12.32 -> 0.12.33; the release PR's CI checks bundle freshness.
|
|
42
|
+
- The release PR's own exact-head CI and the release workflow's tag checks are recorded on the PR and the tag, not here.
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
# 0.12.34 release verification
|
|
2
|
+
|
|
3
|
+
This record covers release preparation and source review. It does not claim publication, installation, a running-hub restart or native/live acceptance.
|
|
4
|
+
|
|
5
|
+
## Candidate
|
|
6
|
+
|
|
7
|
+
Version 0.12.34, control protocol 16 (`src/hub/control-client.ts`), from merged main `f1c4140032d81f4840941a91137e9ab593349d9f`. The candidate includes the three PRs merged since `v0.12.33`: #487 (#451 A2), #491 (#488) and #492 (#485 S0). The exact first-party memory pin remains `@staix/agent-mem` 0.3.1.
|
|
8
|
+
|
|
9
|
+
- #451 A2 moves built-in native policy behind the adapter registry. Native behaviour is unchanged except the disclosed Codex watchdog fence: late results of a cancelled turn are dropped, and a cancellation without a verified native id takes Codex offline until reattach. The round-2 delta reviews (task #132 review note) diffed base and head probe output (permission, start, roster, palette, crash plans, launch env, previews, `routing.assign` over 3,840 inputs) and found no other difference. The registry guard baseline is `[]`.
|
|
10
|
+
- #488 replaces the fixed two-rejection escalation with `tasks.escalate_after` (default 3, live). Upgrading changes the default behaviour; `docs/quickstart.md` says how to keep two.
|
|
11
|
+
- #485 S0 protects `.agent`, `_agents`, `_agent`, `.gemini` and `.grok` like other agent configuration directories. Scoped grants under them now ask.
|
|
12
|
+
- Still open: live native clients, installed managed-Pi #418 AC8 (#142) and #438 AC7.
|
|
13
|
+
|
|
14
|
+
## Document review
|
|
15
|
+
|
|
16
|
+
`node scripts/check-docs.mjs --require-fresh` reported 14 stale documents. Each was compared with its covered source changes from its stamp to the candidate by two read-only reviews, one for the user documents and one for the agent notes. Symbols, paths and limits were checked in the source. No document review is deferred.
|
|
17
|
+
|
|
18
|
+
| Document | Review result | Checked claims and correction |
|
|
19
|
+
| --- | --- | --- |
|
|
20
|
+
| `README.md` | corrected | Status 0.12.34; the Jcode MCP entry is byte-identical (moved into a definition); the verification link and open legs. |
|
|
21
|
+
| `docs/quickstart.md` | corrected | `v0.12.34` install; the upgrade section for the escalation default (#488) and the new protected directories (#485). |
|
|
22
|
+
| `docs/operations.md` | corrected | 0.12.34 header, protocol 16 range and upgrade examples; escalation via `tasks.escalate_after`; the Claude ask-when-needed protected list; the Codex watchdog fence and offline latch. |
|
|
23
|
+
| `docs/security.md` | corrected | The protected agent configuration list and the #485 directories with their look-alike rule. |
|
|
24
|
+
| `docs/agent-notes/README.md` | unchanged | Background only; the console tone lookup change touches no rule. |
|
|
25
|
+
| `docs/agent-notes/adapters.md` | corrected | `session.zeroTurn` replaces `codexZeroTurn`; registry lists and cross-release literals; the empty guard baseline and alias resolution; native capability scope. Paths now include the registry guard test and baseline. |
|
|
26
|
+
| `docs/agent-notes/benchmarks.md` | unchanged | The Pi command now comes from its definition with the same value. |
|
|
27
|
+
| `docs/agent-notes/budget.md` | corrected | Context readers in `native-context.ts`; checkpoint requests keyed on `budget.checkpoint`; `QUOTA_HANDOFF_PLATFORMS`; quota exemption rules. Scope and paths include the moved readers and the registry. |
|
|
28
|
+
| `docs/agent-notes/bus.md` | unchanged | Bus, journal and deferred-hub sources are unchanged; daemon changes swap peer names for definition fields only. |
|
|
29
|
+
| `docs/agent-notes/daemon.md` | corrected | The registry's `KNOWN_PEERS`; the recovery literal probes; scope and paths include the moved recovery, policy, config and CLI definition modules. |
|
|
30
|
+
| `docs/agent-notes/local-worker.md` | unchanged | `grantablePath` and grant rules hold with the larger protected set. |
|
|
31
|
+
| `docs/agent-notes/models.md` | unchanged | Tool classification now reads `hooks.classifyTool` with the same result. |
|
|
32
|
+
| `docs/agent-notes/tasks.md` | corrected | The PII gate by `trust.onPrem`; `escalateAfter()` read per verdict. Paths include `builtin-metadata.ts` and `src/hub/bus.ts` (`pendingEnvelopes`, backlog #193). |
|
|
33
|
+
| `docs/agent-notes/tests.md` | corrected | Guard failures move policy into a definition, and the baseline stays `[]`; conformance records unsupported cases explicitly. |
|
|
34
|
+
|
|
35
|
+
`AGENTS.md` area notes list the new definition modules for Budget and Daemon and recovery. A separate manifest commit restamps the reviewed documents against the reviewed source; it does not stamp itself. The release PR must use a merge commit, and committed freshness is rerun on main before tagging.
|
|
36
|
+
|
|
37
|
+
## Recorded checks
|
|
38
|
+
|
|
39
|
+
| PR | Final head | CI run |
|
|
40
|
+
| --- | --- | --- |
|
|
41
|
+
| [#487](https://github.com/STAIxBWLB/agent-hub/pull/487) | `60e7f61fd9d6f3f0b15fe94d2baf69e32a504f97` | [39100633474](https://github.com/STAIxBWLB/agent-hub/actions/runs/39100633474) |
|
|
42
|
+
| [#491](https://github.com/STAIxBWLB/agent-hub/pull/491) | `4af794fadfb00d3357c9e3e8011513bff4669f8e` | [39103534833](https://github.com/STAIxBWLB/agent-hub/actions/runs/39103534833) |
|
|
43
|
+
| [#492](https://github.com/STAIxBWLB/agent-hub/pull/492) | `5895e3aa88a9b7f9f395680cb3818ba2ec942901` | [39105301256](https://github.com/STAIxBWLB/agent-hub/actions/runs/39105301256) |
|
|
44
|
+
|
|
45
|
+
Each PR passed an OCR delegation review by Claude subagents at its final head, and its exact-head CI passed on both OSes with all four seeded shards. #491's macOS job hit the known 20 s `checks.test.ts` flake once; only that job was re-run, and it passed. These prior PR gates do not replace the release candidate's own exact-head CI.
|
|
46
|
+
|
|
47
|
+
- Generated assets: `bun install --frozen-lockfile` and `bun run build` ran locally at `74899a40`. The only change to `plugins/agent-hub/server.js` and the plugin manifest is the version string 0.12.33 -> 0.12.34; the release PR's CI checks bundle freshness.
|
|
48
|
+
- The release PR's own exact-head CI and the release workflow's tag checks are recorded on the PR and the tag, not here.
|
package/docs/verified.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"schemaVersion": 1,
|
|
3
3
|
"documents": {
|
|
4
4
|
"README.md": {
|
|
5
|
-
"verifiedAgainst": "
|
|
5
|
+
"verifiedAgainst": "b91d2cacb80b58ec85fa4cf538cdb1f3ed6079cc",
|
|
6
6
|
"paths": [
|
|
7
7
|
"package.json",
|
|
8
8
|
"src/",
|
|
@@ -11,14 +11,14 @@
|
|
|
11
11
|
]
|
|
12
12
|
},
|
|
13
13
|
"docs/security.md": {
|
|
14
|
-
"verifiedAgainst": "
|
|
14
|
+
"verifiedAgainst": "c1c3bf1d5494f21847ae846e3ed030166ee20484",
|
|
15
15
|
"paths": [
|
|
16
16
|
"src/",
|
|
17
17
|
"templates/"
|
|
18
18
|
]
|
|
19
19
|
},
|
|
20
20
|
"docs/operations.md": {
|
|
21
|
-
"verifiedAgainst": "
|
|
21
|
+
"verifiedAgainst": "b91d2cacb80b58ec85fa4cf538cdb1f3ed6079cc",
|
|
22
22
|
"paths": [
|
|
23
23
|
"package.json",
|
|
24
24
|
"src/",
|
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
]
|
|
36
36
|
},
|
|
37
37
|
"docs/quickstart.md": {
|
|
38
|
-
"verifiedAgainst": "
|
|
38
|
+
"verifiedAgainst": "b91d2cacb80b58ec85fa4cf538cdb1f3ed6079cc",
|
|
39
39
|
"paths": [
|
|
40
40
|
"package.json",
|
|
41
41
|
"src/",
|
|
@@ -43,7 +43,7 @@
|
|
|
43
43
|
]
|
|
44
44
|
},
|
|
45
45
|
"docs/agent-notes/adapters.md": {
|
|
46
|
-
"verifiedAgainst": "
|
|
46
|
+
"verifiedAgainst": "c1c3bf1d5494f21847ae846e3ed030166ee20484",
|
|
47
47
|
"paths": [
|
|
48
48
|
"src/adapters/",
|
|
49
49
|
"src/pi/",
|
|
@@ -58,11 +58,13 @@
|
|
|
58
58
|
"src/cli/identity.ts",
|
|
59
59
|
"src/local/tools.ts",
|
|
60
60
|
"src/hub/start-mode.ts",
|
|
61
|
-
"src/hub/terminal-open.ts"
|
|
61
|
+
"src/hub/terminal-open.ts",
|
|
62
|
+
"test/registry-guard.test.ts",
|
|
63
|
+
"test/registry-guard.baseline.json"
|
|
62
64
|
]
|
|
63
65
|
},
|
|
64
66
|
"docs/agent-notes/benchmarks.md": {
|
|
65
|
-
"verifiedAgainst": "
|
|
67
|
+
"verifiedAgainst": "b91d2cacb80b58ec85fa4cf538cdb1f3ed6079cc",
|
|
66
68
|
"paths": [
|
|
67
69
|
"scripts/benchmarks/",
|
|
68
70
|
"test/benchmarks/",
|
|
@@ -74,7 +76,7 @@
|
|
|
74
76
|
]
|
|
75
77
|
},
|
|
76
78
|
"docs/agent-notes/budget.md": {
|
|
77
|
-
"verifiedAgainst": "
|
|
79
|
+
"verifiedAgainst": "b91d2cacb80b58ec85fa4cf538cdb1f3ed6079cc",
|
|
78
80
|
"paths": [
|
|
79
81
|
"src/hub/budget.ts",
|
|
80
82
|
"src/cli/statusline-tee.ts",
|
|
@@ -82,28 +84,34 @@
|
|
|
82
84
|
"src/hub/delivery-journal.ts",
|
|
83
85
|
"src/hub/restart.ts",
|
|
84
86
|
"src/hub/context-window.ts",
|
|
85
|
-
"src/hub/daemon.ts"
|
|
87
|
+
"src/hub/daemon.ts",
|
|
88
|
+
"src/adapters/definitions/native-quota.ts",
|
|
89
|
+
"src/adapters/definitions/native-context.ts",
|
|
90
|
+
"src/adapters/registry.ts"
|
|
86
91
|
]
|
|
87
92
|
},
|
|
88
93
|
"docs/agent-notes/bus.md": {
|
|
89
|
-
"verifiedAgainst": "
|
|
94
|
+
"verifiedAgainst": "b91d2cacb80b58ec85fa4cf538cdb1f3ed6079cc",
|
|
90
95
|
"paths": [
|
|
91
96
|
"src/hub/bus.ts",
|
|
92
97
|
"src/hub/envelope.ts",
|
|
93
98
|
"src/hub/limits.ts",
|
|
94
99
|
"src/hub/delivery-journal.ts",
|
|
100
|
+
"src/hub/deferred-hub.ts",
|
|
95
101
|
"src/hub/inference.ts",
|
|
96
102
|
"src/hub/daemon.ts",
|
|
97
|
-
"src/hub/supervision.ts"
|
|
103
|
+
"src/hub/supervision.ts",
|
|
104
|
+
"src/cli/reset.ts"
|
|
98
105
|
]
|
|
99
106
|
},
|
|
100
107
|
"docs/agent-notes/daemon.md": {
|
|
101
|
-
"verifiedAgainst": "
|
|
108
|
+
"verifiedAgainst": "b91d2cacb80b58ec85fa4cf538cdb1f3ed6079cc",
|
|
102
109
|
"paths": [
|
|
103
110
|
"src/hub/daemon.ts",
|
|
104
111
|
"src/hub/control-client.ts",
|
|
105
112
|
"src/adapters/claude-channel.ts",
|
|
106
113
|
"src/hub/restart.ts",
|
|
114
|
+
"src/hub/deferred-hub.ts",
|
|
107
115
|
"src/hub/recovery-store.ts",
|
|
108
116
|
"src/hub/snapshots.ts",
|
|
109
117
|
"src/hub/manager.ts",
|
|
@@ -135,11 +143,15 @@
|
|
|
135
143
|
"src/hub/config-reload.ts",
|
|
136
144
|
"src/hub/config-apply.ts",
|
|
137
145
|
"src/hub/recovery-continuity.ts",
|
|
138
|
-
"src/cli/recovery-presentation-options.ts"
|
|
146
|
+
"src/cli/recovery-presentation-options.ts",
|
|
147
|
+
"src/adapters/definitions/native-recovery*.ts",
|
|
148
|
+
"src/adapters/definitions/native-policy-aux.ts",
|
|
149
|
+
"src/adapters/definitions/native-config-*.ts",
|
|
150
|
+
"src/adapters/definitions/native-cli-*.ts"
|
|
139
151
|
]
|
|
140
152
|
},
|
|
141
153
|
"docs/agent-notes/local-worker.md": {
|
|
142
|
-
"verifiedAgainst": "
|
|
154
|
+
"verifiedAgainst": "b91d2cacb80b58ec85fa4cf538cdb1f3ed6079cc",
|
|
143
155
|
"paths": [
|
|
144
156
|
"src/adapters/local-worker.ts",
|
|
145
157
|
"src/local/",
|
|
@@ -150,7 +162,7 @@
|
|
|
150
162
|
]
|
|
151
163
|
},
|
|
152
164
|
"docs/agent-notes/models.md": {
|
|
153
|
-
"verifiedAgainst": "
|
|
165
|
+
"verifiedAgainst": "b91d2cacb80b58ec85fa4cf538cdb1f3ed6079cc",
|
|
154
166
|
"paths": [
|
|
155
167
|
"src/models/",
|
|
156
168
|
"src/hub/inference.ts",
|
|
@@ -159,7 +171,7 @@
|
|
|
159
171
|
]
|
|
160
172
|
},
|
|
161
173
|
"docs/agent-notes/tasks.md": {
|
|
162
|
-
"verifiedAgainst": "
|
|
174
|
+
"verifiedAgainst": "c1c3bf1d5494f21847ae846e3ed030166ee20484",
|
|
163
175
|
"paths": [
|
|
164
176
|
"src/hub/tasks.ts",
|
|
165
177
|
"src/hub/board.ts",
|
|
@@ -173,11 +185,13 @@
|
|
|
173
185
|
"src/hub/supervision.ts",
|
|
174
186
|
"src/hub/tool-refusal.ts",
|
|
175
187
|
"src/hub/daemon.ts",
|
|
176
|
-
"src/hub/settled-roles.ts"
|
|
188
|
+
"src/hub/settled-roles.ts",
|
|
189
|
+
"src/adapters/definitions/builtin-metadata.ts",
|
|
190
|
+
"src/hub/bus.ts"
|
|
177
191
|
]
|
|
178
192
|
},
|
|
179
193
|
"docs/agent-notes/tests.md": {
|
|
180
|
-
"verifiedAgainst": "
|
|
194
|
+
"verifiedAgainst": "b91d2cacb80b58ec85fa4cf538cdb1f3ed6079cc",
|
|
181
195
|
"paths": [
|
|
182
196
|
"test/",
|
|
183
197
|
"scripts/check.sh",
|
|
@@ -196,7 +210,7 @@
|
|
|
196
210
|
]
|
|
197
211
|
},
|
|
198
212
|
"docs/agent-notes/README.md": {
|
|
199
|
-
"verifiedAgainst": "
|
|
213
|
+
"verifiedAgainst": "b91d2cacb80b58ec85fa4cf538cdb1f3ed6079cc",
|
|
200
214
|
"paths": [
|
|
201
215
|
"src/cli/console-state.ts",
|
|
202
216
|
"src/cli/attention.ts",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "agent-hub",
|
|
3
|
-
"version": "0.12.
|
|
3
|
+
"version": "0.12.34",
|
|
4
4
|
"description": "Channel between Claude Code and the agent-hub daemon: peer messages from Codex, Kimi and the local worker arrive as channel events; hub_send replies.",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Young Joon Lee",
|