@zhivex-ai/harness 1.4.0 → 1.4.1
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 +29 -10
- package/README.md +7 -5
- package/SUPPORT.md +2 -2
- package/contracts/client-protocol-v1.schema.json +593 -0
- package/contracts/engine-api.json +156 -0
- package/contracts/public-api.json +12 -0
- package/contracts/stable-api-signatures.json +33 -33
- package/dist/acp-cli.js +54 -20
- package/dist/audit/index.d.ts +3 -0
- package/dist/audit/index.js +482 -0
- package/dist/audit/pack.d.ts +72 -0
- package/dist/audit-pack-e4vaq7np.js +532 -0
- package/dist/cli/arguments.d.ts +3 -1
- package/dist/cli/audit-pack.d.ts +24 -0
- package/dist/cli/cli-credentials.d.ts +6 -0
- package/dist/cli/cli-profiles.d.ts +4 -2
- package/dist/cli/node-engine.d.ts +2 -0
- package/dist/{cli-2h37qyvg.js → cli-1cf4dcnj.js} +245 -642
- package/dist/{cli-entry-w0hterjs.js → cli-entry-3s63zn4w.js} +40 -13
- package/dist/cli-entry-7f0cen32.js +9990 -0
- package/dist/cli-entry-a890x3kq.js +10348 -0
- package/dist/{cli-entry-20w6nh0k.js → cli-entry-hdtfef27.js} +439 -19
- package/dist/cli-entry-rgs6bxmy.js +484 -0
- package/dist/cli.js +27 -2
- package/dist/client/json-contracts.d.ts +4 -0
- package/dist/client/protocol.d.ts +133 -0
- package/dist/client/task-control-host.d.ts +400 -0
- package/dist/client/task-projection-host.d.ts +12 -0
- package/dist/client/task-projection.d.ts +168 -0
- package/dist/compat/code-support.js +28 -22
- package/dist/{config-qt69hkqj.js → config-r9fdhce6.js} +3 -3
- package/dist/{config-j9624t6t.js → config-vyajmksy.js} +1 -1
- package/dist/engine/acp.js +15 -11
- package/dist/engine/client.js +14 -10
- package/dist/engine/desktop-providers-v1.d.ts +2 -0
- package/dist/engine/desktop-providers-v1.js +23 -3
- package/dist/engine/desktop-state-v1.js +11 -8
- package/dist/engine/index.d.ts +3 -0
- package/dist/engine/index.js +101 -554
- package/dist/engine/mcp-stdio-v1.js +8 -6
- package/dist/engine/models.js +76 -4
- package/dist/engine/protocol.d.ts +2 -0
- package/dist/engine/protocol.js +110 -0
- package/dist/engine/service.js +15 -11
- package/dist/hostile-repository-demo.js +1095 -505
- package/dist/{index-937cb7y8.js → index-02pqtbbg.js} +559 -33
- package/dist/{index-pp474137.js → index-0zs2dz26.js} +766 -931
- package/dist/{index-8zjmnyw5.js → index-1265j7t2.js} +73 -6
- package/dist/index-4fx5f3k5.js +269 -0
- package/dist/{index-nmjdwd4p.js → index-4gt045j0.js} +109 -1
- package/dist/{index-6dft2vev.js → index-6599mpmy.js} +5 -3
- package/dist/{index-tfzta544.js → index-74kkpyqk.js} +9 -7
- package/dist/{index-61gthdz6.js → index-8sm2a1wa.js} +1 -1
- package/dist/index-c39197wq.js +552 -0
- package/dist/{index-5jhgatga.js → index-crta5wzv.js} +7 -6
- package/dist/{index-m34q25jj.js → index-d9zkmhz3.js} +143 -824
- package/dist/{index-pdmevfxv.js → index-dtb2c6ds.js} +5 -259
- package/dist/index-f6mqa5gk.js +1535 -0
- package/dist/index-j6zxnc8m.js +490 -0
- package/dist/{index-rkbf7dqg.js → index-mv8sb1ns.js} +5 -3
- package/dist/{index-xqxeypt5.js → index-mzydbzp8.js} +76 -4
- package/dist/{index-wg1sd3at.js → index-qfsrrnz6.js} +1 -1
- package/dist/{index-m82cfspw.js → index-sk3cap35.js} +877 -963
- package/dist/index-sstgcsr0.js +511 -0
- package/dist/index-wm9xeq1n.js +329 -0
- package/dist/index-xdbkcccf.js +719 -0
- package/dist/{index-s2k2edts.js → index-zxg4ve4j.js} +41 -1548
- package/dist/index.d.ts +3 -0
- package/dist/index.js +93 -77
- package/dist/internal/desktop/providers.d.ts +2 -0
- package/dist/models/catalog.d.ts +2 -0
- package/dist/persistence/sqlite-database.d.ts +1 -0
- package/dist/providers/azure-openai.d.ts +14 -0
- package/dist/providers/bedrock.d.ts +23 -0
- package/dist/providers/providers.d.ts +1 -1
- package/dist/runtime/durable-review-group.d.ts +33 -0
- package/dist/runtime/harness.d.ts +11 -0
- package/dist/runtime/run-interruption.d.ts +7 -0
- package/dist/runtime/shared-budget.d.ts +30 -0
- package/dist/runtime/task-continuity.d.ts +300 -77
- package/dist/service-cli.js +15 -11
- package/dist/{service-client-cli-fn54ev6w.js → service-client-cli-eqrdc9zq.js} +400 -305
- package/dist/verify-historical-migrations.js +1095 -505
- package/dist/zhx.js +27 -2
- package/docs/AUDIT_PACK.md +99 -0
- package/docs/AZURE_OPENAI.md +53 -0
- package/docs/BEDROCK.md +56 -0
- package/docs/CLI.md +15 -0
- package/docs/CLIENT_PROTOCOL.md +178 -0
- package/docs/CODE_RELEASE.md +31 -1
- package/docs/CODE_WEB_TASKS.md +116 -0
- package/docs/CONTEXT_ENGINEERING.md +59 -0
- package/docs/CREDENTIALS.md +21 -0
- package/docs/DURABLE_OPERATIONS.md +93 -1
- package/docs/ENGINE_API.md +5 -2
- package/docs/EXTENSIBILITY.md +2 -2
- package/docs/FIRST_USE.md +6 -6
- package/docs/MINIMUM_TASK_AUTHORITY.md +3 -3
- package/docs/PROJECT_MEMORY.md +1 -1
- package/docs/README.md +6 -1
- package/docs/STABILITY.md +3 -1
- package/docs/SUPPORT_MATRIX.md +1 -1
- package/docs/SUPPORT_MATRIX_1_1.md +1 -1
- package/docs/USAGE.md +3 -1
- package/docs/VERTEX.md +2 -2
- package/docs/WEB_LIMITS.md +4 -3
- package/docs/adr/0002-isolated-mcp-stdio.md +6 -3
- package/docs/support-matrix-1.1.json +3 -1
- package/docs/support-matrix.json +6 -4
- package/evaluations/code-task-ui.json +20 -0
- package/evaluations/representative-assembly-matrix.json +10 -1
- package/evaluations/task-projection.json +10 -0
- package/evaluations/task-recovery-lab.json +60 -0
- package/examples/README.md +3 -3
- package/package.json +23 -13
- package/dist/cli-entry-4ngptr62.js +0 -19900
- package/dist/index-m49jx72n.js +0 -220
|
@@ -451,3 +451,62 @@ unchanged; the model must issue a corrected request, and edits still require
|
|
|
451
451
|
current read evidence and approval.
|
|
452
452
|
|
|
453
453
|
Project memory is a separate kind of explicit operator context in the existing durable memory table. It is projected per request as untrusted data, with revision-based review and hard byte/entry budgets. It does not become project instructions or skills. See [Project memory](PROJECT_MEMORY.md).
|
|
454
|
+
|
|
455
|
+
### Semantic compaction with bounded subagents
|
|
456
|
+
|
|
457
|
+
When semantic compaction and subagents are enabled without a shared budget
|
|
458
|
+
coordinator, Harness uses serial tool execution. This follows the SDK's supported
|
|
459
|
+
combination and retains its rejection of paid compaction with uncoordinated
|
|
460
|
+
parallel children. Callers cannot enable that incompatible combination by setting
|
|
461
|
+
`toolExecution.parallel` alone. Other runs retain their existing scheduling.
|
|
462
|
+
|
|
463
|
+
Applications can opt in to a shared token pool through the Beta
|
|
464
|
+
`HarnessRunOptions.sharedBudget` option:
|
|
465
|
+
|
|
466
|
+
```ts
|
|
467
|
+
const result = await runHarness(harness, {
|
|
468
|
+
runId: "bounded-inspection-42",
|
|
469
|
+
prompt: "Inspect and review the API boundary."
|
|
470
|
+
}, {
|
|
471
|
+
sharedBudget: {
|
|
472
|
+
modelReservation: {
|
|
473
|
+
inputTokens: 20000, outputTokens: 1000, totalTokens: 21000
|
|
474
|
+
},
|
|
475
|
+
childModelReservation: {
|
|
476
|
+
inputTokens: 10000, outputTokens: 1000, totalTokens: 11000
|
|
477
|
+
}
|
|
478
|
+
}
|
|
479
|
+
});
|
|
480
|
+
```
|
|
481
|
+
|
|
482
|
+
These example reservations are host-owned conservative bounds for each request,
|
|
483
|
+
not recommended limits for every model or task. Choose them for the admitted
|
|
484
|
+
route and context. The SDK coordinator reuses the configured parent input,
|
|
485
|
+
output and total ceilings, atomically admitting primary calls, child lifetime
|
|
486
|
+
allocations and auxiliary compaction. Each child has an SDK subpool inside its
|
|
487
|
+
parent allocation. There is no second Harness token ledger. A child allocation
|
|
488
|
+
that cannot fit fails before its model dispatch; unused or unknown consumption
|
|
489
|
+
is not converted into a fresh allowance. An individual model request is capped
|
|
490
|
+
at the reserved output, and an estimated input request above its reservation is
|
|
491
|
+
rejected before transport. The estimator is not a provider tokenizer or a billing
|
|
492
|
+
guarantee; actual over-reservation receipts are recorded and rejected by the SDK
|
|
493
|
+
before tool execution. Unknown receipts keep their allocation held.
|
|
494
|
+
|
|
495
|
+
Child allocations must satisfy the SDK's component-sum contract. Under the
|
|
496
|
+
existing default child ceilings (30000 input, 8000 output, 36000 total), shared
|
|
497
|
+
execution narrows the input allocation to 28000. It preserves the 36000 total
|
|
498
|
+
and 8000 output authorization; it never increases the total to 38000. The narrowed
|
|
499
|
+
budget is visible in the child runtime manifest. Legacy execution retains its
|
|
500
|
+
configured child ceilings.
|
|
501
|
+
|
|
502
|
+
The option requires finite token limits and uses the Harness scope. A resumed
|
|
503
|
+
run must use its original reservation policy and complete SDK budget ledger;
|
|
504
|
+
changing the policy, opting an existing legacy run into a fresh pool or restoring
|
|
505
|
+
only a run snapshot fails closed. Supply the same option on approval resumes.
|
|
506
|
+
The SDK also prevents resuming a bound run without its coordinator. Unknown
|
|
507
|
+
compaction or reservation consumption still requires operational reconciliation;
|
|
508
|
+
this tranche does not add a reconciliation API or clear reservations automatically.
|
|
509
|
+
Qwen routes are excluded from this option until an output-cap route is certified.
|
|
510
|
+
It does not add a service/wire-protocol field or enable this token pool for
|
|
511
|
+
application-owned review groups. Monetary accounting and its existing output
|
|
512
|
+
clamp remain separate. No provider calls are required by the regression suite.
|
package/docs/CREDENTIALS.md
CHANGED
|
@@ -68,6 +68,27 @@ the console offers to use the saved destination for this session or cancel. It n
|
|
|
68
68
|
sends a managed key to an arbitrary shell-defined endpoint. Custom endpoints still
|
|
69
69
|
require explicit environment credentials.
|
|
70
70
|
|
|
71
|
+
## Amazon Bedrock
|
|
72
|
+
|
|
73
|
+
Converse does not store an API key. Set `AWS_REGION` or `AWS_DEFAULT_REGION` in
|
|
74
|
+
the launching environment and leave credentials to the AWS SDK default chain.
|
|
75
|
+
`AWS_PROFILE` selects a profile through that chain. The credentials screen
|
|
76
|
+
explains this and does not write a key.
|
|
77
|
+
|
|
78
|
+
`BEDROCK_RUNTIME=openai` requires an https `BEDROCK_OPENAI_BASE_URL`. The key
|
|
79
|
+
may be `BEDROCK_API_KEY` or `AWS_BEARER_TOKEN_BEDROCK` in the environment, or a
|
|
80
|
+
keychain/temporary `BEDROCK_API_KEY`. The base URL is not an override that
|
|
81
|
+
blocks a managed key. See [Bedrock](BEDROCK.md).
|
|
82
|
+
|
|
83
|
+
## Azure OpenAI
|
|
84
|
+
|
|
85
|
+
Set an https `AZURE_OPENAI_ENDPOINT` before saving a key. Optional
|
|
86
|
+
`AZURE_OPENAI_API_VERSION` and `AZURE_OPENAI_DEPLOYMENTS` stay in the
|
|
87
|
+
environment and are not written to the keychain. A managed
|
|
88
|
+
`AZURE_OPENAI_API_KEY` is allowed together with that endpoint. Published
|
|
89
|
+
`@zhivex-ai/azure-openai@0.7.8` accepts a token provider, and this route still
|
|
90
|
+
stores and sends the API key. See [Azure OpenAI](AZURE_OPENAI.md).
|
|
91
|
+
|
|
71
92
|
## Qwen interactive setup
|
|
72
93
|
|
|
73
94
|
Open `/credentials` → Qwen → save or temporary → Standard API or QwenCloud Token
|
|
@@ -70,7 +70,7 @@ Loading a run reconstructs its complete state for compatibility with approvals,
|
|
|
70
70
|
|
|
71
71
|
Logical backups contain hydrated history rather than database references, so restoration does not require the original artifact tables. Exports up to 64 MiB retain the legacy JSON format; larger exports use the versioned `ZHIVEX-STATE-SEGMENTS-1` transport with bounded frames, including split strings. RC13 reads both formats and verifies the same logical checksum before import. Older versions cannot read segmented exports. File I/O and checksum serialization are incremental; the public backup/import APIs still hydrate the complete logical bundle in memory. Segmented files have no aggregate 64 MiB ceiling. A state-limit failure records a bounded terminal diagnostic on the last durable checkpoint; the unsaved payload is not claimed as preserved. Use `/status` to inspect the failed run before `/continue`. Recovery retains tool journal receipts and never re-executes an operation itself.
|
|
72
72
|
|
|
73
|
-
The current
|
|
73
|
+
The current source pins Core 1.34.0 and Agents 1.11.0. New stores require no
|
|
74
74
|
conversion. Before upgrading an existing shared SDK store, stop its workers and
|
|
75
75
|
upgrade them together with a complete backup. Verified legacy runs retain their
|
|
76
76
|
physical keys and remain readable; new runs use canonical keys that distinguish
|
|
@@ -277,3 +277,95 @@ approvals, and provider per-request limits remain enforced. Stored numeric token
|
|
|
277
277
|
ceilings are inactive until `unlimitedTokens` is set back to `false`.
|
|
278
278
|
|
|
279
279
|
Next-version [project memory](PROJECT_MEMORY.md) reuses the existing SDK memory table and state export records. Historical state is not harvested into curated memory. Forget/clear remove current memory content, while backups, run histories and SQLite WAL retention remain separate. Older importers reject the new reserved memory key safely.
|
|
280
|
+
|
|
281
|
+
## Durable review groups (Beta)
|
|
282
|
+
|
|
283
|
+
`runHarnessReviewGroup` retains its ephemeral v1 contract. Applications can opt in
|
|
284
|
+
through `runHarnessDurableReviewGroup(harness, { groupId, prompt })`. The new API
|
|
285
|
+
uses the Harness scope, an application-owned root and a fixed roster of at most
|
|
286
|
+
two read-only explorer/reviewer members. This first implementation schedules
|
|
287
|
+
members serially. It requires a store with atomic idempotency claims, CAS saves
|
|
288
|
+
and fenced acquire/renew/release leases; the default SQLite backend supports them.
|
|
289
|
+
Custom stores must honor these contracts. No database schema migration is needed.
|
|
290
|
+
|
|
291
|
+
```ts
|
|
292
|
+
import {
|
|
293
|
+
runHarnessDurableReviewGroup,
|
|
294
|
+
inspectHarnessReviewGroup,
|
|
295
|
+
cancelHarnessReviewGroup
|
|
296
|
+
} from "@zhivex-ai/harness";
|
|
297
|
+
|
|
298
|
+
const result = await runHarnessDurableReviewGroup(harness, {
|
|
299
|
+
groupId: "review-request-42",
|
|
300
|
+
prompt: "Inspect the public API boundary."
|
|
301
|
+
});
|
|
302
|
+
const snapshot = await inspectHarnessReviewGroup(harness, result.groupId);
|
|
303
|
+
// Cancellation can be requested from another worker using the same scope/store.
|
|
304
|
+
const cancellation = await cancelHarnessReviewGroup(harness, result.groupId);
|
|
305
|
+
```
|
|
306
|
+
|
|
307
|
+
A repeated ID must have the same prompt, ordered profiles, scope and member
|
|
308
|
+
runtime bindings. A mismatch fails before a model request. Completed members
|
|
309
|
+
replay their durable receipts; an interrupted group resumes the original member
|
|
310
|
+
IDs. A concurrent caller receives a retryable state conflict while the group
|
|
311
|
+
worker lease is held. After a worker dies, wait for lease expiry before retrying.
|
|
312
|
+
Inspection reconstructs results without executing a member. Keep the complete
|
|
313
|
+
state store when backing up or restoring; deleting a root or member is not a
|
|
314
|
+
supported way to reset a request.
|
|
315
|
+
|
|
316
|
+
Execution statuses include `blocked`, `partial`, `waiting_approval`, `suspended`,
|
|
317
|
+
`timed_out`, `cancel_requested` and `cancelled`. `partial` means all members are
|
|
318
|
+
terminal and some completed while others did not. Completion describes execution;
|
|
319
|
+
existing evidence and acceptance contracts still determine acceptance. The root
|
|
320
|
+
is visible to ordinary run inspection; its SDK status maps `partial` to `failed`,
|
|
321
|
+
and `blocked` maps to `suspended`, with the richer value in `harnessReviewGroupStatusV1`. Use group inspection for
|
|
322
|
+
the full result. Approvals are not automatically resumed by this API.
|
|
323
|
+
|
|
324
|
+
Cancellation records intention under the same fenced root lease used for fresh
|
|
325
|
+
member admission. Each admission is recorded before claiming a child checkpoint.
|
|
326
|
+
Subsequent model requests also check the root before dispatch. Already admitted
|
|
327
|
+
requests can finish late; cancellation does not roll back an external effect.
|
|
328
|
+
Terminal children are preserved, and active children receive durable cancellation
|
|
329
|
+
requests. Inactive queued, approval or suspended checkpoints become cancelled.
|
|
330
|
+
Once the group worker sees an in-flight member return, a child left at
|
|
331
|
+
`cancel_requested` is settled to `cancelled` before the root snapshot is saved.
|
|
332
|
+
Inspection while that request is still in flight stays `cancel_requested`.
|
|
333
|
+
Confirmation requires every admitted child to have a terminal checkpoint. A cut
|
|
334
|
+
between recorded admission and child persistence remains `cancel_requested`
|
|
335
|
+
because the claim is uncertain; this tranche does not provide an automatic
|
|
336
|
+
reconciliation API for that cut. Repeated cancellation rechecks the fixed roster.
|
|
337
|
+
|
|
338
|
+
Generic cancellation of the root also closes group admission, but callers should
|
|
339
|
+
use the group cancellation API to preserve terminal member receipts; the SDK
|
|
340
|
+
's generic tree-cancellation semantics are unchanged.
|
|
341
|
+
|
|
342
|
+
This fence applies to the opt-in application-owned review group. It does not fix
|
|
343
|
+
the SDK's general parent/subagent admission and cancellation primitives. No
|
|
344
|
+
exactly-once guarantee for external effects, distributed scheduling or research
|
|
345
|
+
workflow acceptance is implied. Model tests use only offline mocks. Regressions
|
|
346
|
+
in `tests/durable-review-group.test.ts` cover repeated identity, interruption,
|
|
347
|
+
terminal preservation, concurrent callers and separate-process SQLite control.
|
|
348
|
+
|
|
349
|
+
Terminal replay reconciles the root's persisted status, member summaries and richer
|
|
350
|
+
group status before returning, including recovery after a cut following child
|
|
351
|
+
completion. Cancellation also reconciles its reconstructed projection. Internal
|
|
352
|
+
worker checkpoints are children of the group: they become `running` while leased,
|
|
353
|
+
`suspended` after an interrupted or blocked attempt, and terminal only after the
|
|
354
|
+
root's terminal projection is persisted. Recovery repairs an idle legacy worker
|
|
355
|
+
without taking ownership from a live worker. Default terminal cleanup can collect
|
|
356
|
+
finished groups and their workers; suspended coordination remains resumable.
|
|
357
|
+
|
|
358
|
+
New member records include an optional `checkpointed` marker, saved after the SDK
|
|
359
|
+
child claim and before request dispatch. If a previously persisted child disappears,
|
|
360
|
+
recovery blocks before transport and requires the complete backup. Existing records
|
|
361
|
+
without that marker remain readable; admitted members with missing receipts are
|
|
362
|
+
conservatively blocked. Admission and model dispatch also recheck receipt presence
|
|
363
|
+
under the root lock, so a stale caller snapshot cannot bypass the guard. Cleanup
|
|
364
|
+
while a group is active can remove an older terminal child's receipt and leave the
|
|
365
|
+
group blocked; it must not be used to reset or restart that child. Cancellation may
|
|
366
|
+
remain uncertain in this case. Retention deleting the entire group expires its
|
|
367
|
+
stored identity; no permanent deduplication beyond retained state is promised.
|
|
368
|
+
|
|
369
|
+
Groups modified by the checkpoint-marker fix require a current artifact. Older
|
|
370
|
+
artifacts with strict pre-marker schemas cannot read the additional marker;
|
|
371
|
+
downgrades require restoring a complete pre-upgrade backup.
|
package/docs/ENGINE_API.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# Engine API and Code integration
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
Harness 1.
|
|
3
|
+
The terminal-independent package entrypoints shipped in Harness 1.3.0 and remain
|
|
4
|
+
in published Harness 1.4.0 (npm `latest`). This checkout is Harness 1.4.1, pending publication. They are not present in Harness 1.2.0.
|
|
5
5
|
The protected workflow validated the exact stable tarball, live gates and
|
|
6
6
|
registry integrity/provenance; local candidate smoke remains contributor evidence. Do not install registry 1.2.0 and
|
|
7
7
|
expect the new entrypoints to exist.
|
|
@@ -18,6 +18,7 @@ expect the new entrypoints to exist.
|
|
|
18
18
|
| `@zhivex-ai/harness/code-support` | Named host helpers used by Code, including a read-only SQLite diagnostic projection | Node |
|
|
19
19
|
| `@zhivex-ai/harness/models` | Beta catalog schemas, bundled metadata, model selection and display helpers; no host loading | Browser or Node |
|
|
20
20
|
| `@zhivex-ai/harness/mcp/stdio/v1` | Experimental host admission, isolated MCP sessions, recovery and reconciliation; see [host flow](MCP_STDIO.md) | Node or Bun |
|
|
21
|
+
| `@zhivex-ai/harness/audit` | Experimental audit pack export and HMAC verification; see [audit pack](AUDIT_PACK.md) | Node |
|
|
21
22
|
| `@zhivex-ai/harness/desktop/v1/state` | Versioned host-only snapshot, validation, safe-file-read and lease handoff operations for Desktop updates | Node |
|
|
22
23
|
|
|
23
24
|
[`contracts/engine-api.json`](../contracts/engine-api.json) enumerates every named
|
|
@@ -208,6 +209,8 @@ Publishing Code requires a compatible Harness release, authenticated scope/name
|
|
|
208
209
|
verification and the release compatibility gates in
|
|
209
210
|
[ADR 0001](https://github.com/Zhivex/zhivex-harness/blob/main/docs/adr/0001-harness-code-public-boundary.md).
|
|
210
211
|
Local packing does not establish npm permissions or public availability.
|
|
212
|
+
The additive [task projection v1](CLIENT_PROTOCOL.md#task-projection-v1-har-hu-73) exposes existing task evidence through the client/service without moving execution or judgment into a renderer. `/protocol` exports its bounded schema and pure snapshot reducer.
|
|
213
|
+
|
|
211
214
|
## Experimental task acceptance contracts
|
|
212
215
|
|
|
213
216
|
`runHarness(host, input, { taskAcceptance })` accepts application-owned requirements
|
package/docs/EXTENSIBILITY.md
CHANGED
|
@@ -4,11 +4,11 @@ Zhivex Harness `0.11.x` combines governed external tools and bounded multi-agent
|
|
|
4
4
|
|
|
5
5
|
## Provider registry
|
|
6
6
|
|
|
7
|
-
Built-in registrations are Meta, Qwen, OpenAI, and
|
|
7
|
+
Built-in registrations are Meta, Qwen, OpenAI, Gemini, Anthropic, Vertex, Amazon Bedrock, and Azure OpenAI. Bedrock and Azure OpenAI are provisional and are not part of the default live certification cohort. Each registration owns its descriptor, default model, credential names, capability/support labels, factory, and declarative diagnostics. The registry never dynamically imports provider code or returns credential/endpoint values from diagnostics.
|
|
8
8
|
|
|
9
9
|
Library callers can use `DEFAULT_PROVIDER_REGISTRY`, `BUILTIN_PROVIDER_REGISTRATIONS`, `createProviderRegistry`, or `DEFAULT_PROVIDER_REGISTRY.extend(...)`, then pass the registry to `resolveHarnessConfig`, `createProviderModel`, provider diagnostics, or `createHarness({ providerRegistry })`. Registration IDs, environment-variable names, defaults, diagnostics, and factories are validated before they become selectable.
|
|
10
10
|
|
|
11
|
-
The coordinated stable SDK batch pins `@zhivex-ai/agents@1.11.0`, `@zhivex-ai/core@1.
|
|
11
|
+
The coordinated stable SDK batch pins `@zhivex-ai/agents@1.11.0`, `@zhivex-ai/core@1.34.0`, `@zhivex-ai/meta@0.2.9`, `@zhivex-ai/qwen@0.16.4`, `@zhivex-ai/openai@0.16.0`, `@zhivex-ai/gemini@0.13.0`, `@zhivex-ai/anthropic@0.14.0`, `@zhivex-ai/vertex@1.2.7`, `@zhivex-ai/bedrock@2.0.7`, and `@zhivex-ai/azure-openai@0.7.8`. Qwen 0.16.2 types malformed Responses tool arguments and malformed SSE events; Core 1.34.0 satisfies Agents, OpenAI and Vertex `^1.31.0`, Anthropic `^1.30.0`, Qwen `^1.29.0`, and the provisional Bedrock and Azure OpenAI `^1.34.0` ranges. These exact versions are pinned in the lockfile. Stable SDK publication does not replace Harness release-bound certification. Qwen `0.11.x` normalizes missing, placeholder, and continuation tool-call identifiers inside the adapter; Harness retains its deterministic provider-boundary normalizer as defense in depth until the exact candidate passes the complete release-bound representative matrix. A Core override keeps one runtime contract identity across every adapter, while Core `1.13.0` corrects compaction usage accounting and interaction-group retention. OpenAI `0.11.2` preserves synthetic assistant history in Responses, so the harness no longer requires its compaction transport or accounting workarounds.
|
|
12
12
|
|
|
13
13
|
OpenAI is based on the GPT-5.6 family: `gpt-5.6-luna` is the default, with `gpt-5.6-terra` and `gpt-5.6-sol` available through `--model`. Availability remains organization-dependent while the upstream family is in limited preview, and the adapter uses the Responses API by default.
|
|
14
14
|
|
package/docs/FIRST_USE.md
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
# First use
|
|
2
2
|
|
|
3
|
-
This guide targets stable `1.4.
|
|
3
|
+
This guide targets stable `1.4.1`, pending publication to npm `latest`. The versioned install commands below become available only after protected publication. npm `latest` remains stable 1.3.0 until that publication.
|
|
4
4
|
|
|
5
5
|
## Install and start
|
|
6
6
|
|
|
7
7
|
Install Node.js 22.13.0 or newer and Git. Then:
|
|
8
8
|
|
|
9
9
|
```sh
|
|
10
|
-
npm install -g @zhivex-ai/harness@1.4.
|
|
10
|
+
npm install -g @zhivex-ai/harness@1.4.1
|
|
11
11
|
cd /path/to/your/project
|
|
12
12
|
zhx
|
|
13
13
|
```
|
|
@@ -82,16 +82,16 @@ For command execution, configure [OCI isolation](EXECUTION_ENVIRONMENTS.md).
|
|
|
82
82
|
With Bun 1.4.0 or newer and a supported Node runtime:
|
|
83
83
|
|
|
84
84
|
```sh
|
|
85
|
-
bun add --global @zhivex-ai/harness@1.4.
|
|
85
|
+
bun add --global @zhivex-ai/harness@1.4.1
|
|
86
86
|
zhx
|
|
87
87
|
```
|
|
88
88
|
|
|
89
89
|
For a disposable version/help/environment check without a global installation:
|
|
90
90
|
|
|
91
91
|
```sh
|
|
92
|
-
bunx @zhivex-ai/harness@1.4.
|
|
93
|
-
bunx @zhivex-ai/harness@1.4.
|
|
94
|
-
bunx @zhivex-ai/harness@1.4.
|
|
92
|
+
bunx @zhivex-ai/harness@1.4.1 --version
|
|
93
|
+
bunx @zhivex-ai/harness@1.4.1 --help
|
|
94
|
+
bunx @zhivex-ai/harness@1.4.1 doctor
|
|
95
95
|
```
|
|
96
96
|
|
|
97
97
|
For source development, use the [contributor guide](https://github.com/Zhivex/zhivex-harness/blob/main/CONTRIBUTING.md).
|
|
@@ -52,10 +52,10 @@ dispatch/cap behavior, not provider billing guarantees or model quality.
|
|
|
52
52
|
|
|
53
53
|
| Route | Direct guided task | Verified wire cap and dispatch boundary |
|
|
54
54
|
| --- | --- | --- |
|
|
55
|
-
| Built-in OpenAI (`@zhivex-ai/openai` 0.
|
|
56
|
-
| Built-in Anthropic API key (`@zhivex-ai/anthropic` 0.
|
|
55
|
+
| Built-in OpenAI (`@zhivex-ai/openai` 0.16.0) | Supported | Responses `max_output_tokens`; Chat `max_tokens` without reasoning or `max_completion_tokens` with reasoning; `maxRetries=0`, `maxProviderRequests=1` |
|
|
56
|
+
| Built-in Anthropic API key (`@zhivex-ai/anthropic` 0.14.0) | Supported | Messages `max_tokens`; non-refreshable built-in credentials; `maxRetries=0` |
|
|
57
57
|
| Built-in Gemini (`@zhivex-ai/gemini` 0.13.0) | Supported | `generationConfig.maxOutputTokens`; `maxRetries=0` |
|
|
58
|
-
| Built-in Vertex (`@zhivex-ai/vertex` 1.2.
|
|
58
|
+
| Built-in Vertex (`@zhivex-ai/vertex` 1.2.7) | Supported | `generationConfig.maxOutputTokens`; real ADC callback, synthetic credential source in tests; `maxRetries=0` |
|
|
59
59
|
| Qwen (`@zhivex-ai/qwen` 0.16.4) | Blocked as Code primary | Explicit Chat-mode middleware tested with capped `max_tokens`; Code has no explicit mode selector and Responses rejects `maxTokens` |
|
|
60
60
|
| Meta | Blocked | Harness continuation fetch can replay a 400 response outside SDK retry admission |
|
|
61
61
|
| Injected/custom adapters, refreshable Anthropic OAuth | Blocked | No vetted transport provenance; OAuth transport can replay a 401 after refresh outside ordinary retry admission |
|
package/docs/PROJECT_MEMORY.md
CHANGED
|
@@ -7,7 +7,7 @@ generated automatically; hosts may submit a suggestion for operator review.
|
|
|
7
7
|
|
|
8
8
|
## CLI
|
|
9
9
|
|
|
10
|
-
Use `zhx` or `zhivex-code` with Harness 1.4.
|
|
10
|
+
Use `zhx` or `zhivex-code` with Harness 1.4.1 (Code 0.3.1), pending publication. Commands
|
|
11
11
|
print bounded JSON, including the selected workspace/scope hashes. Quote content
|
|
12
12
|
as one argument. Memory commands do not start a model or read credentials.
|
|
13
13
|
|
package/docs/README.md
CHANGED
|
@@ -9,6 +9,8 @@ Start with [First use](FIRST_USE.md). You only need `zhx` for everyday conversat
|
|
|
9
9
|
- [Usage reference](USAGE.md): scripts, providers and security boundaries.
|
|
10
10
|
- [Model catalog administration](MODEL_CATALOG.md): shared CLI/Desktop recommendations and remote distribution.
|
|
11
11
|
- [Anthropic direct API](ANTHROPIC.md): provisional setup and continuity contract.
|
|
12
|
+
- [Amazon Bedrock](BEDROCK.md): provisional Converse and OpenAI-compatible routes.
|
|
13
|
+
- [Azure OpenAI](AZURE_OPENAI.md): provisional endpoint, deployment, and API-key route.
|
|
12
14
|
- [Credentials](CREDENTIALS.md): system keychain, temporary keys and automation.
|
|
13
15
|
- [Project instructions and context](CONTEXT_ENGINEERING.md).
|
|
14
16
|
- [Execution environments](EXECUTION_ENVIRONMENTS.md): isolated command execution.
|
|
@@ -23,9 +25,12 @@ Start with [First use](FIRST_USE.md). You only need `zhx` for everyday conversat
|
|
|
23
25
|
- [CLI reference](CLI.md): command options, JSON/JSONL and exit codes.
|
|
24
26
|
- [Extensibility](EXTENSIBILITY.md): providers, MCP, routing and subagents.
|
|
25
27
|
- [API stability](STABILITY.md) and [deprecations](DEPRECATIONS.md).
|
|
26
|
-
- [Local service](LOCAL_SERVICE.md) and [client protocol](CLIENT_PROTOCOL.md).
|
|
28
|
+
- [Local service](LOCAL_SERVICE.md) and [client protocol](CLIENT_PROTOCOL.md), including the experimental [task evidence read](CLIENT_PROTOCOL.md#task-projection-v1-har-hu-73).
|
|
29
|
+
- [Code web tasks](CODE_WEB_TASKS.md): operator review and explicit snapshot acceptance before continuation.
|
|
30
|
+
- [Installed recovery laboratory](https://github.com/Zhivex/zhivex-harness/blob/main/docs/TASK_RECOVERY_LAB.md): contributor fixtures for the evidence read. The laboratory guide stays in the repository and is not part of the published package.
|
|
27
31
|
- [Experimental ACP text sessions](ACP.md) and [workspace checkpoint restoration](WORKSPACE_CHECKPOINTS.md).
|
|
28
32
|
- [Durable operations](DURABLE_OPERATIONS.md), [repository editing](REPOSITORY_EDITING.md) and [change envelopes](CHANGE_ENVELOPES.md).
|
|
33
|
+
- [Audit pack](AUDIT_PACK.md): experimental signed export of one run or guided task.
|
|
29
34
|
- [Threat model](THREAT_MODEL.md) and [public repository security](PUBLIC_SECURITY.md).
|
|
30
35
|
|
|
31
36
|
## Contribute and maintain
|
package/docs/STABILITY.md
CHANGED
|
@@ -18,6 +18,8 @@ Beta APIs may change in a minor with changelog and migration guidance. Experimen
|
|
|
18
18
|
|
|
19
19
|
The host-only `/mcp/stdio/v1` entry point and `CreateHarnessOptions.isolatedMcpSession` option are experimental additive capabilities. Workspace MCP configuration does not enable stdio; see [host admission and lifecycle](MCP_STDIO.md).
|
|
20
20
|
|
|
21
|
-
The semantic compactor, compaction recommendations, declarative tool policy (including `toolPolicyFile` and `--tool-policy`), progress monitor, ACP text-session adapter,
|
|
21
|
+
The semantic compactor, compaction recommendations, declarative tool policy (including `toolPolicyFile` and `--tool-policy`), progress monitor, ACP text-session adapter, workspace checkpoint restoration APIs, and the `@zhivex-ai/harness/audit` subpath are experimental. `export-audit` and `verify-audit` are additive CLI commands. Their `--out` and `--signing-key-file` flags stay outside `CLI_OPTION_NAMES` and `CLI_COMMAND_OPTION_CONTRACTS`, so the stable option tuple and command-option declaration do not change. See [audit pack](AUDIT_PACK.md). ACP implements the documented text-session subset; it does not claim full editor interoperability. Deterministic compaction and the existing client protocol remain available. See [tool policy semantics](TOOL_POLICY.md), [ACP limitations](ACP.md), [context behavior](CONTEXT_ENGINEERING.md), and [checkpoint constraints](WORKSPACE_CHECKPOINTS.md).
|
|
22
|
+
|
|
23
|
+
Task evidence reads (`task.get`, capability `task.projection.v1`) and operator task controls (`task.start`, `task.review`, `task.keep`, `task.revise`, `task.continue`, capability `task.control.v1`) are experimental additions on client protocol major 1. They do not change protocol version 1, existing command meanings, or the stable declaration signature baseline. The browser-safe projection schema and reducer are experimental exports of the existing `/protocol` entry. See [task projection](CLIENT_PROTOCOL.md#task-projection-v1-har-hu-73) and [task controls](CLIENT_PROTOCOL.md#task-controls-code-hu-05-experimental).
|
|
22
24
|
|
|
23
25
|
Before `1.0.0-rc.1`, maintainers classified every current runtime and type export as stable, beta, or experimental. The gate rejects unreviewed additions, removals, omissions, and membership in more than one tier so future stability changes remain deliberate. Root aliases remain available during 1.x; any future beta subpath must be additive until the next major release.
|
package/docs/SUPPORT_MATRIX.md
CHANGED
|
@@ -10,7 +10,7 @@ The machine-readable source is [`support-matrix.json`](./support-matrix.json). `
|
|
|
10
10
|
| OCI | Docker on Linux | — | Podman | managed remote sandbox |
|
|
11
11
|
| Target package manager | npm | Bun | pnpm, Yarn | — |
|
|
12
12
|
| MCP | bounded Streamable HTTP | — | broader remote implementations | stdio |
|
|
13
|
-
| Provider | Meta `muse-spark-1.
|
|
13
|
+
| Provider | Meta `muse-spark-1.3-contributor`, Qwen `qwen3.8-flash`, OpenAI `gpt-6-luna` | — | Gemini, Anthropic, Vertex (ADC), Amazon Bedrock, Azure OpenAI | undocumented providers |
|
|
14
14
|
|
|
15
15
|
Provider evidence is release-, account-, endpoint-, model-, and date-bound. A provider is supported for a release only when the exact candidate passes base, orchestration, routing, and model-directed execution gates. The table does not imply upstream feature parity.
|
|
16
16
|
|
|
@@ -10,7 +10,7 @@ The machine-readable source is [`support-matrix-1.1.json`](./support-matrix-1.1.
|
|
|
10
10
|
| OCI | Docker on Linux | — | Podman | managed remote sandbox |
|
|
11
11
|
| Target package manager | npm | Bun | pnpm, Yarn | — |
|
|
12
12
|
| MCP | bounded Streamable HTTP | — | broader remote implementations | stdio |
|
|
13
|
-
| Provider | Meta `muse-spark-1.3`, Qwen `qwen3.8-max`, OpenAI `gpt-6-luna` | — | Gemini | undocumented providers |
|
|
13
|
+
| Provider | Meta `muse-spark-1.3`, Qwen `qwen3.8-max`, OpenAI `gpt-6-luna` | — | Gemini, Amazon Bedrock, Azure OpenAI | undocumented providers |
|
|
14
14
|
|
|
15
15
|
Provider evidence is release-, account-, endpoint-, model-, and date-bound. A provider is supported for a release only when the exact candidate passes base, orchestration, routing, and model-directed execution gates. The table does not imply upstream feature parity.
|
|
16
16
|
|
package/docs/USAGE.md
CHANGED
|
@@ -149,8 +149,10 @@ zhivex-harness run --execution oci --oci-shell ask "use a reviewed shell pipelin
|
|
|
149
149
|
| Qwen | `qwen3.8-max` | `DASHSCOPE_API_KEY` or `QWEN_API_KEY` · RC.10 default; fresh release-bound certification pending. |
|
|
150
150
|
| OpenAI | `gpt-6-luna` | `OPENAI_API_KEY` · new default; fresh release-bound certification required |
|
|
151
151
|
| Gemini | `gemini-3.6-flash` | `GEMINI_API_KEY` or `GOOGLE_GENERATIVE_AI_API_KEY` · provisional until the harness live matrix passes |
|
|
152
|
+
| Amazon Bedrock | `anthropic.claude-haiku-5-5` | AWS credential chain plus `AWS_REGION` or `AWS_DEFAULT_REGION` · provisional; `BEDROCK_RUNTIME=openai` is a separate Tier A path and is not live-certified |
|
|
153
|
+
| Azure OpenAI | `gpt-5.4` | `AZURE_OPENAI_API_KEY` and https `AZURE_OPENAI_ENDPOINT` · provisional until the harness live matrix passes |
|
|
152
154
|
|
|
153
|
-
Override any model with `--model`. Optional provider overrides are `META_BASE_URL`, `QWEN_BASE_URL`, `QWEN_WORKSPACE_ID`, `QWEN_REGION`, `OPENAI_BASE_URL`, and `GEMINI_BASE_URL`. Non-credential transport settings are hash-bound to durable resumes without persisting their values.
|
|
155
|
+
Override any model with `--model`. Optional provider overrides are `META_BASE_URL`, `QWEN_BASE_URL`, `QWEN_WORKSPACE_ID`, `QWEN_REGION`, `OPENAI_BASE_URL`, and `GEMINI_BASE_URL`. Bedrock also reads `AWS_REGION`, `AWS_DEFAULT_REGION`, `AWS_PROFILE`, `BEDROCK_RUNTIME`, and `BEDROCK_OPENAI_BASE_URL`. Azure OpenAI also reads `AZURE_OPENAI_ENDPOINT`, `AZURE_OPENAI_API_VERSION`, and `AZURE_OPENAI_DEPLOYMENTS`. Non-credential transport settings are hash-bound to durable resumes without persisting their values.
|
|
154
156
|
|
|
155
157
|
The exact `v1.0.0` release passed protected base, delegation, routing and model-directed OCI gates for Meta, Qwen and OpenAI on 2026-09-20. The representative matrix passed 14/14 cases per provider on its authorized second attempt. Gemini remains provisional. See the [release evidence](https://github.com/Zhivex/zhivex-harness/blob/main/docs/LIVE_CERTIFICATION.md#current-public-status) for artifact identity and the preserved first-attempt failure. Controlled and official-SDK MCP interoperability are separate transport evidence. Credential detection and deterministic tests do not replace real provider certification.
|
|
156
158
|
|
package/docs/VERTEX.md
CHANGED
|
@@ -44,7 +44,7 @@ Errors expose bounded categories for authentication, permission, unavailable
|
|
|
44
44
|
model/route, rate limit and server failures. Raw Google payloads, token values,
|
|
45
45
|
credential paths and service-account identities are not retained in errors.
|
|
46
46
|
|
|
47
|
-
The integration pins `@zhivex-ai/vertex@1.
|
|
48
|
-
`google-auth-library@11.0
|
|
47
|
+
The integration pins `@zhivex-ai/vertex@1.2.7` with Core 1.34.0 and
|
|
48
|
+
`google-auth-library@11.1.0`. Deterministic tests exercise the installed SDK's
|
|
49
49
|
transport, streaming, signed continuation, approval/reopen and route mismatch.
|
|
50
50
|
They are not evidence of a live project, renewable ADC or IAM authorization.
|
package/docs/WEB_LIMITS.md
CHANGED
|
@@ -3,8 +3,9 @@
|
|
|
3
3
|
New interactive Web/terminal tasks have no accumulated spend, token, step,
|
|
4
4
|
tool-call or duration cap unless configured. This change uses the published SDK contract from
|
|
5
5
|
Zhivex/zhivex-ai-sdk PR 142 (Core/SDK 1.31.0, Agents 1.11.0). Direct Harness, Code
|
|
6
|
-
and
|
|
7
|
-
Provider package pins,
|
|
6
|
+
and the root Core override now pin Core 1.34.0; Agents stays 1.11.0.
|
|
7
|
+
Provider package pins are Anthropic 0.14.0, OpenAI 0.16.0 and Vertex 1.2.7.
|
|
8
|
+
Headless policies and release gates remain unchanged.
|
|
8
9
|
|
|
9
10
|
The Web header opens the approved gradual configuration modal. Next task settings
|
|
10
11
|
override project settings once, including an empty override. Project settings
|
|
@@ -21,7 +22,7 @@ Unsupported pricing tiers and unaccounted auxiliary usage make the estimate
|
|
|
21
22
|
unavailable. The price source is visible on the run. No money is reserved and this
|
|
22
23
|
is not a guaranteed financial cap.
|
|
23
24
|
|
|
24
|
-
**
|
|
25
|
+
**Notify** records a notice and lets the run continue. **Stop** requests the
|
|
25
26
|
existing active-run cancellation once, after observing the threshold. An in-flight
|
|
26
27
|
operation or final response can exceed it; completed work is not rolled back.
|
|
27
28
|
Consumption and durable effects remain recorded. Cancellation produces a cancelled
|
|
@@ -16,9 +16,12 @@ activate stdio, change configuration schema 1, or claim isolated execution passe
|
|
|
16
16
|
private workspace volume and optional read-only dependencies. Its adapter has
|
|
17
17
|
finite `run`/`runBatch`, not an interactive stdio process lease. All MCP is
|
|
18
18
|
currently rejected with OCI enforcement before discovery.
|
|
19
|
-
-
|
|
20
|
-
timeout/idempotency key, and an HTTP transport; no executable
|
|
21
|
-
found in
|
|
19
|
+
- At this proposal, installed `@zhivex-ai/core` 1.26.0 exposed `McpClient`, call
|
|
20
|
+
options with abort, timeout/idempotency key, and an HTTP transport; no executable
|
|
21
|
+
stdio factory was found in that dependency. The control-plane transport enum is
|
|
22
|
+
not an executor.
|
|
23
|
+
- The current pin is `@zhivex-ai/core` 1.34.0, which includes an experimental
|
|
24
|
+
stdio client. Harness still does not treat that factory as the OCI boundary.
|
|
22
25
|
|
|
23
26
|
MCP stdio uses UTF-8 newline-delimited JSON-RPC on stdin/stdout; stderr is a
|
|
24
27
|
separate diagnostic stream. Preserve message correlation and initialization.
|
|
@@ -24,6 +24,8 @@
|
|
|
24
24
|
{ "id": "provider-meta", "dimension": "provider", "target": "Meta muse-spark-1.3", "level": "supported", "evidence": ["docs/LIVE_CERTIFICATION.md", ".github/workflows/release.yml"] },
|
|
25
25
|
{ "id": "provider-qwen", "dimension": "provider", "target": "Qwen qwen3.8-max", "level": "supported", "evidence": ["docs/LIVE_CERTIFICATION.md", ".github/workflows/release.yml"] },
|
|
26
26
|
{ "id": "provider-openai", "dimension": "provider", "target": "OpenAI gpt-6-luna", "level": "supported", "evidence": ["docs/LIVE_CERTIFICATION.md", ".github/workflows/release.yml"] },
|
|
27
|
-
{ "id": "provider-gemini", "dimension": "provider", "target": "Gemini gemini-3.6-flash / 3.7-flash", "level": "provisional", "evidence": ["docs/LIVE_CERTIFICATION.md"] }
|
|
27
|
+
{ "id": "provider-gemini", "dimension": "provider", "target": "Gemini gemini-3.6-flash / 3.7-flash", "level": "provisional", "evidence": ["docs/LIVE_CERTIFICATION.md"] },
|
|
28
|
+
{ "id": "provider-bedrock", "dimension": "provider", "target": "Amazon Bedrock Converse / OpenAI-compatible runtime", "level": "provisional", "evidence": ["docs/BEDROCK.md", "tests/bedrock-provider.test.ts"] },
|
|
29
|
+
{ "id": "provider-azure-openai", "dimension": "provider", "target": "Azure OpenAI", "level": "provisional", "evidence": ["docs/AZURE_OPENAI.md", "tests/azure-openai-provider.test.ts"] }
|
|
28
30
|
]
|
|
29
31
|
}
|
package/docs/support-matrix.json
CHANGED
|
@@ -21,11 +21,13 @@
|
|
|
21
21
|
{ "id": "pm-yarn", "dimension": "target-package-manager", "target": "Yarn", "level": "provisional", "evidence": ["tests/package-manager.test.ts"] },
|
|
22
22
|
{ "id": "mcp-http", "dimension": "mcp-transport", "target": "bounded Streamable HTTP JSON-RPC", "level": "supported", "evidence": ["scripts/mcp-interoperability-smoke.ts", "scripts/mcp-official-sdk-smoke.ts"] },
|
|
23
23
|
{ "id": "mcp-stdio", "dimension": "mcp-transport", "target": "stdio", "level": "unsupported", "evidence": ["SUPPORT.md"] },
|
|
24
|
-
{ "id": "provider-meta", "dimension": "provider", "target": "Meta muse-spark-1.
|
|
25
|
-
{ "id": "provider-qwen", "dimension": "provider", "target": "Qwen qwen3.8-
|
|
26
|
-
{ "id": "provider-openai", "dimension": "provider", "target": "OpenAI gpt-
|
|
24
|
+
{ "id": "provider-meta", "dimension": "provider", "target": "Meta muse-spark-1.3-contributor", "level": "supported", "evidence": ["docs/LIVE_CERTIFICATION.md", "release-status.json"] },
|
|
25
|
+
{ "id": "provider-qwen", "dimension": "provider", "target": "Qwen qwen3.8-flash", "level": "supported", "evidence": ["docs/LIVE_CERTIFICATION.md", "release-status.json"] },
|
|
26
|
+
{ "id": "provider-openai", "dimension": "provider", "target": "OpenAI gpt-6-luna", "level": "supported", "evidence": ["docs/LIVE_CERTIFICATION.md", "release-status.json"] },
|
|
27
27
|
{ "id": "provider-vertex", "dimension": "provider", "target": "Google Cloud Vertex AI (ADC)", "level": "provisional", "evidence": ["docs/VERTEX.md", "tests/vertex-provider.test.ts", "tests/vertex-auth.test.ts"] },
|
|
28
28
|
{ "id": "provider-anthropic", "dimension": "provider", "target": "Anthropic direct API / claude-sonnet-5", "level": "provisional", "evidence": ["docs/ANTHROPIC.md"] },
|
|
29
|
-
{ "id": "provider-gemini", "dimension": "provider", "target": "Gemini gemini-3.6-flash / 3.7-flash", "level": "provisional", "evidence": ["docs/LIVE_CERTIFICATION.md"] }
|
|
29
|
+
{ "id": "provider-gemini", "dimension": "provider", "target": "Gemini gemini-3.6-flash / 3.7-flash", "level": "provisional", "evidence": ["docs/LIVE_CERTIFICATION.md"] },
|
|
30
|
+
{ "id": "provider-bedrock", "dimension": "provider", "target": "Amazon Bedrock Converse / OpenAI-compatible runtime", "level": "provisional", "evidence": ["docs/BEDROCK.md", "tests/bedrock-provider.test.ts"] },
|
|
31
|
+
{ "id": "provider-azure-openai", "dimension": "provider", "target": "Azure OpenAI", "level": "provisional", "evidence": ["docs/AZURE_OPENAI.md", "tests/azure-openai-provider.test.ts"] }
|
|
30
32
|
]
|
|
31
33
|
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": 1,
|
|
3
|
+
"story": "CODE-HU-05",
|
|
4
|
+
"scope": "automated installed UI/service/engine plus retained HU75 recovery laboratory",
|
|
5
|
+
"fixtureSha256": "473a9e2144b0042b1b46ef54f915de693045df89d6175bde42a3393d2b083263",
|
|
6
|
+
"browserScenarios": [
|
|
7
|
+
"normal-task-review-accept",
|
|
8
|
+
"reload-without-replay",
|
|
9
|
+
"two-tabs-obsolete-review-and-edit-back",
|
|
10
|
+
"corrected-task-explicit-continuation-double-click",
|
|
11
|
+
"workspace-switch-without-stale-evidence-or-replay",
|
|
12
|
+
"slow-cancel-unknown-usage-blocks-continuation",
|
|
13
|
+
"process-restart-handoff-without-transcript-or-replay"
|
|
14
|
+
],
|
|
15
|
+
"requiredEvidence": ["exact artifact binding before and after execution", "native check receipts", "desktop and mobile screenshots", "zero automatic effect replay", "retained unknown usage", "scripted operator acknowledgement separately labeled"],
|
|
16
|
+
"liveProvider": false,
|
|
17
|
+
"humanPilotPerformed": false,
|
|
18
|
+
"humanMinutes": null,
|
|
19
|
+
"realCostPerAcceptedTask": null
|
|
20
|
+
}
|
|
@@ -62,7 +62,8 @@
|
|
|
62
62
|
"v1.4.0-rc.6",
|
|
63
63
|
"v1.4.0-rc.7",
|
|
64
64
|
"v1.4.0-rc.8",
|
|
65
|
-
"v1.4.0"
|
|
65
|
+
"v1.4.0",
|
|
66
|
+
"v1.4.1"
|
|
66
67
|
],
|
|
67
68
|
"expectedModels": [
|
|
68
69
|
{
|
|
@@ -552,6 +553,14 @@
|
|
|
552
553
|
"qwen": "qwen3.8-flash",
|
|
553
554
|
"openai": "gpt-6-luna"
|
|
554
555
|
}
|
|
556
|
+
},
|
|
557
|
+
{
|
|
558
|
+
"releaseTag": "v1.4.1",
|
|
559
|
+
"models": {
|
|
560
|
+
"meta": "muse-spark-1.3-contributor",
|
|
561
|
+
"qwen": "qwen3.8-flash",
|
|
562
|
+
"openai": "gpt-6-luna"
|
|
563
|
+
}
|
|
555
564
|
}
|
|
556
565
|
],
|
|
557
566
|
"expectedCases": [
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": 1,
|
|
3
|
+
"story": "HAR-HU-73",
|
|
4
|
+
"lineage": "Restacked onto current main. Fixture identity is fixtureSha256, not a closed stack commit.",
|
|
5
|
+
"fixtureSha256": "473a9e2144b0042b1b46ef54f915de693045df89d6175bde42a3393d2b083263",
|
|
6
|
+
"installedScenarios": ["negotiation-version", "snapshot-read-only", "host-redaction", "duplicate-out-of-order", "artifact-scope", "cursor-expiry-replay", "paused-host-read", "restart-new-epoch", "artifact-drift", "legacy-budget"],
|
|
7
|
+
"excluded": ["CODE-05 UI", "live providers", "external pilot", "concurrent host takeover", "non-native execution", "semantic acceptance", "release"],
|
|
8
|
+
"fixtureSource": "HAR75 phase-one greeting oracle; unchanged bytes",
|
|
9
|
+
"runner": "scripts/task-recovery-lab-installed.mjs, optional sixth argument projection"
|
|
10
|
+
}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": 1,
|
|
3
|
+
"id": "HAR-HU-75-base-lab",
|
|
4
|
+
"scopeDecision": "HAR-HU-61",
|
|
5
|
+
"measurementConsumer": "HAR-HU-74 (not executed)",
|
|
6
|
+
"lineage": "Restacked onto current main with the task evidence read. Fixture identity is fixtureSha256, not a closed stack commit.",
|
|
7
|
+
"fixtureSha256": "473a9e2144b0042b1b46ef54f915de693045df89d6175bde42a3393d2b083263",
|
|
8
|
+
"installedScenarios": [
|
|
9
|
+
"failed-start",
|
|
10
|
+
"exhaustion-after-work",
|
|
11
|
+
"native-path-boundary",
|
|
12
|
+
"normal-control",
|
|
13
|
+
"contract-artifact-drift",
|
|
14
|
+
"obsolete-approval",
|
|
15
|
+
"concurrent-cancel-unknown-usage",
|
|
16
|
+
"concurrent-cancel-late-usage",
|
|
17
|
+
"disk-full-final-save",
|
|
18
|
+
"compaction-untrusted-evidence",
|
|
19
|
+
"crash-before-receipt",
|
|
20
|
+
"crash-after-receipt",
|
|
21
|
+
"service-disconnect"
|
|
22
|
+
],
|
|
23
|
+
"limits": {
|
|
24
|
+
"singleWriter": true,
|
|
25
|
+
"backend": "native",
|
|
26
|
+
"store": "sqlite",
|
|
27
|
+
"maxSteps": 16,
|
|
28
|
+
"maxToolCalls": 40,
|
|
29
|
+
"timeoutMs": 150000,
|
|
30
|
+
"inputTokens": 60000,
|
|
31
|
+
"outputTokens": 8192,
|
|
32
|
+
"totalTokens": 68192,
|
|
33
|
+
"liveProvider": false,
|
|
34
|
+
"humanMeasurement": false
|
|
35
|
+
},
|
|
36
|
+
"sourceRegressions": [
|
|
37
|
+
"tests/task-continuity.test.ts",
|
|
38
|
+
"tests/task-cancellation-host.test.ts",
|
|
39
|
+
"tests/task-cancellation-transport.test.ts",
|
|
40
|
+
"tests/task-budget-accounting.test.ts",
|
|
41
|
+
"tests/task-budget-compatibility.test.ts",
|
|
42
|
+
"tests/local-service.test.ts",
|
|
43
|
+
"tests/local-service-recovery.test.ts",
|
|
44
|
+
"tests/governance-report.test.ts",
|
|
45
|
+
"tests/governance-context.test.ts",
|
|
46
|
+
"tests/tool-policy-paths.test.ts",
|
|
47
|
+
"tests/security.test.ts"
|
|
48
|
+
],
|
|
49
|
+
"pending": [
|
|
50
|
+
"HAR73 versioned task service projection",
|
|
51
|
+
"CODE05 task review UI and rendering of active text/citations",
|
|
52
|
+
"HAR74 ratified human rubric, time, cost and pilot"
|
|
53
|
+
],
|
|
54
|
+
"notSupported": [
|
|
55
|
+
"Concurrent writers or host takeover",
|
|
56
|
+
"Remote provider stop confirmation",
|
|
57
|
+
"Arbitrary disk hardware failure",
|
|
58
|
+
"New SSRF/document/web adapters"
|
|
59
|
+
]
|
|
60
|
+
}
|
package/examples/README.md
CHANGED
|
@@ -2,19 +2,19 @@
|
|
|
2
2
|
|
|
3
3
|
## Isolated Bun installation
|
|
4
4
|
|
|
5
|
-
Requirements: Bun 1.4.0+, Node.js 22.13.0+, and Git on macOS or Linux. After protected stable publication, this installs the 1.4.
|
|
5
|
+
Requirements: Bun 1.4.0+, Node.js 22.13.0+, and Git on macOS or Linux. After protected stable publication, this installs the 1.4.1 artifact in a temporary consumer, without building the source checkout or changing global tools:
|
|
6
6
|
|
|
7
7
|
```bash
|
|
8
8
|
harness_demo_dir=$(mktemp -d)
|
|
9
9
|
cd "$harness_demo_dir"
|
|
10
10
|
printf '{"name":"harness-first-run","private":true}\n' > package.json
|
|
11
|
-
bun add --exact --ignore-scripts @zhivex-ai/harness@1.4.
|
|
11
|
+
bun add --exact --ignore-scripts @zhivex-ai/harness@1.4.1
|
|
12
12
|
./node_modules/.bin/zhx --version
|
|
13
13
|
./node_modules/.bin/zhx --help
|
|
14
14
|
./node_modules/.bin/zhx doctor --provider openai --json
|
|
15
15
|
```
|
|
16
16
|
|
|
17
|
-
Version must print `1.4.
|
|
17
|
+
Version must print `1.4.1`; help lists commands. Doctor does not contact a provider. Without `OPENAI_API_KEY`, it reports the missing credential and exits with code `3`; inspect the JSON checks before proceeding. A directory without Git initialization can also produce a diagnostic warning. No paid model call is required for these checks. Both `zhx` and `zhivex-harness` are installed aliases; Bun manages installation, and their shebang runs Node.
|
|
18
18
|
|
|
19
19
|
To continue in your actual project, use the [global installation and credential setup](../README.md#quick-start), then `zhx init --profile daily --provider openai` and `zhx doctor --profile daily`. Real tasks require the selected provider credential in the process environment. Profiles store provider/model choices, never credentials. See [CLI](../docs/CLI.md) and [support](../SUPPORT.md).
|
|
20
20
|
|