@zhivex-ai/harness 1.4.1 → 1.6.2

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.
Files changed (76) hide show
  1. package/CHANGELOG.md +23 -0
  2. package/README.md +1 -1
  3. package/SUPPORT.md +1 -1
  4. package/contracts/stable-api-signatures.json +7 -7
  5. package/dist/acp-cli.js +10 -10
  6. package/dist/approvals/approval-diff.d.ts +2 -1
  7. package/dist/approvals/approval-preview.d.ts +1 -1
  8. package/dist/approvals/auto-approve.d.ts +137 -0
  9. package/dist/audit/index.js +6 -6
  10. package/dist/{audit-pack-e4vaq7np.js → audit-pack-fckpqfsb.js} +3 -3
  11. package/dist/{cli-1cf4dcnj.js → cli-84en174d.js} +14 -8
  12. package/dist/{cli-entry-3s63zn4w.js → cli-entry-10th5awp.js} +16 -15
  13. package/dist/{cli-entry-a890x3kq.js → cli-entry-4g2ewcnw.js} +15 -5
  14. package/dist/{cli-entry-7f0cen32.js → cli-entry-6amx4mcc.js} +209 -68
  15. package/dist/{cli-entry-rgs6bxmy.js → cli-entry-z1pbjrg4.js} +2 -2
  16. package/dist/cli.js +2 -2
  17. package/dist/compat/code-support.js +8 -8
  18. package/dist/engine/acp.js +11 -11
  19. package/dist/engine/client.js +10 -10
  20. package/dist/engine/desktop-state-v1.js +6 -6
  21. package/dist/engine/index.js +15 -15
  22. package/dist/engine/mcp-stdio-v1.js +5 -5
  23. package/dist/engine/service.js +11 -11
  24. package/dist/hostile-repository-demo.js +235 -84
  25. package/dist/{index-mv8sb1ns.js → index-1pn0ecs4.js} +55 -13
  26. package/dist/{index-dtb2c6ds.js → index-2r4f0p4n.js} +2 -2
  27. package/dist/{index-6599mpmy.js → index-4mn6m3bq.js} +3 -3
  28. package/dist/{index-xdbkcccf.js → index-6dxrbnxm.js} +2 -2
  29. package/dist/{index-crta5wzv.js → index-74f9yhfh.js} +4 -4
  30. package/dist/{index-f6mqa5gk.js → index-amjttjaj.js} +11 -39
  31. package/dist/{index-wm9xeq1n.js → index-bt2p8x7r.js} +1 -1
  32. package/dist/{index-sk3cap35.js → index-eps3c3g6.js} +1 -1
  33. package/dist/{index-zxg4ve4j.js → index-fqqz1yt8.js} +77 -4
  34. package/dist/{index-02pqtbbg.js → index-paf7z8kn.js} +10 -10
  35. package/dist/{index-0zs2dz26.js → index-pf73y4gt.js} +18 -9
  36. package/dist/{index-74kkpyqk.js → index-rgqzdgv6.js} +12 -6
  37. package/dist/{index-4fx5f3k5.js → index-rz7wmp71.js} +16 -15
  38. package/dist/{index-d9zkmhz3.js → index-w0m1nckc.js} +127 -28
  39. package/dist/{index-sstgcsr0.js → index-yx52bt4a.js} +1 -1
  40. package/dist/{index-j6zxnc8m.js → index-zrz4rs7p.js} +5 -5
  41. package/dist/index.js +14 -14
  42. package/dist/integrations/mcp-stdio-tools.d.ts +4 -1
  43. package/dist/providers/bedrock.d.ts +1 -1
  44. package/dist/review/reveal-invisible.d.ts +13 -0
  45. package/dist/runtime/budget-ledger-scope.d.ts +14 -0
  46. package/dist/service-cli.js +11 -11
  47. package/dist/{service-client-cli-eqrdc9zq.js → service-client-cli-pp5z4dmf.js} +4 -4
  48. package/dist/tools/workspace.d.ts +2 -2
  49. package/dist/verify-historical-migrations.js +240 -86
  50. package/dist/workspace/edit-contracts.d.ts +2 -2
  51. package/dist/workspace/path-policy.d.ts +2 -1
  52. package/dist/workspace/text-integrity.d.ts +19 -0
  53. package/dist/workspace/workspace.d.ts +21 -3
  54. package/dist/zhx.js +2 -2
  55. package/docs/AUTO_APPROVE.md +51 -0
  56. package/docs/AZURE_OPENAI.md +4 -4
  57. package/docs/BEDROCK.md +4 -4
  58. package/docs/CLI.md +13 -0
  59. package/docs/CODE_RELEASE.md +36 -6
  60. package/docs/CODE_WEB_TASKS.md +1 -1
  61. package/docs/CREDENTIALS.md +1 -1
  62. package/docs/DURABLE_OPERATIONS.md +1 -1
  63. package/docs/ENGINE_API.md +1 -1
  64. package/docs/EXTENSIBILITY.md +7 -3
  65. package/docs/FIRST_USE.md +6 -6
  66. package/docs/MINIMUM_TASK_AUTHORITY.md +5 -5
  67. package/docs/PROJECT_MEMORY.md +1 -1
  68. package/docs/PUBLIC_SECURITY.md +14 -1
  69. package/docs/REPOSITORY_EDITING.md +1 -1
  70. package/docs/TOOL_POLICY.md +7 -1
  71. package/docs/VERTEX.md +2 -2
  72. package/docs/WEB_LIMITS.md +2 -2
  73. package/docs/adr/0002-isolated-mcp-stdio.md +2 -2
  74. package/evaluations/representative-assembly-matrix.json +37 -1
  75. package/examples/README.md +3 -3
  76. package/package.json +16 -15
@@ -0,0 +1,51 @@
1
+ # Opt-in auto-approve
2
+
3
+ Manual is the default. Nothing is applied until a person decides.
4
+
5
+ | Mode | What can proceed without a prompt |
6
+ | --- | --- |
7
+ | `manual` | Nothing. This is today's review. |
8
+ | `auto-edits` | File edits whose paths stay inside the workspace root. |
9
+ | `auto-limits` | Those edits, plus commands whose executable is on the allowlist. |
10
+
11
+ ## Always ask
12
+
13
+ These wait for a person in every mode, including when the command is allowlisted:
14
+
15
+ - Network or egress, including `curl`, `wget`, `ssh`, and any command that carries an `http` or `https` URL.
16
+ - Deletes outside the workspace.
17
+ - Writes outside the workspace root.
18
+ - Secret or credential files (`.env`, `credentials`, `.npmrc`, `.pypirc`, `.netrc`, `id_rsa`, `id_ed25519`, `*.pem`, `*.key`, and a `secrets` or `credentials` directory).
19
+ - `git push`.
20
+ - Package publish (`npm`, `pnpm`, `yarn`, `bun`, `cargo`).
21
+ - Any operation once a spend or token limit is already reached.
22
+
23
+ There is no flag that skips this list. A batch that mixes a safe edit with one of these stays on the review screen. `--approval-mode auto` and `--yes` are the older approve-all switch used by non-interactive runs. They are not this feature. Tool policy and explicit host review still apply.
24
+
25
+ ## Where it is set
26
+
27
+ The workspace file is `.zhivex-harness/approval.json`. That directory is already protected from workspace tools.
28
+
29
+ ```json
30
+ {
31
+ "mode": "auto-limits",
32
+ "commandAllowlist": ["bun", "git"]
33
+ }
34
+ ```
35
+
36
+ Allowlist entries are exact executable names. Wildcards and paths are rejected. `git` on the list still does not allow `git push`.
37
+
38
+ The CLI flag and a session command override the file for this process:
39
+
40
+ ```sh
41
+ zhivex-code --auto-approve auto-edits
42
+ zhivex-code --auto-approve auto-limits --auto-approve-allow bun --auto-approve-allow git
43
+ ```
44
+
45
+ In the terminal, `/auto-approve` shows the mode, `/auto-approve manual` changes this session, and `/auto-approve workspace manual` writes the file. `m` during a review, or `/manual`, returns to Manual without rewriting the file. The status line names the mode.
46
+
47
+ In the web workspace the header chip shows the same mode. The dialog can save it for this session or this workspace. `m`, while you are not typing, returns to Manual for the session.
48
+
49
+ ## Audit and undo
50
+
51
+ Each auto-approved operation is appended to `.zhivex-harness/auto-approvals.jsonl` with the mode, the reason, and a bounded snapshot of the previous file text (256 KiB of UTF-8). `/undo` restores the latest snapshot when every file still matches the approved text. The web Approvals dialog does the same per change. A later edit, a binary file, or a snapshot that was too large is not reverted.
@@ -4,14 +4,14 @@ Azure OpenAI is a separate provider (`azure-openai`). It does not reuse
4
4
  `OPENAI_API_KEY` or `OPENAI_BASE_URL`. No live Harness certification has been
5
5
  run for this route. Prices are not copied from the public OpenAI catalog.
6
6
 
7
- Published `@zhivex-ai/azure-openai@0.7.8` is the adapter pinned by this tree.
8
- It requires Core `^1.34.0`, and this checkout pins `@zhivex-ai/core@1.34.0`.
7
+ Published `@zhivex-ai/azure-openai@0.8.0` is the adapter pinned by this tree.
8
+ It requires Core `^1.36.0`, and this checkout pins `@zhivex-ai/core@1.36.0`.
9
9
  Language models report Tier A. Hosted tool gates such as tool search follow
10
10
  the model id (`gpt-5.4` and `gpt-6-astra` in this adapter). An opaque
11
11
  deployment name does not receive those gates unless a deployment map names
12
12
  the base model.
13
13
 
14
- Published 0.7.8 accepts a deployments map and a token provider for Microsoft
14
+ Published 0.8.0 accepts a deployments map and a token provider for Microsoft
15
15
  Entra ID. This route still authenticates with an API key and does not pass a
16
16
  token provider.
17
17
 
@@ -30,7 +30,7 @@ deployment name is not also sent as `model`. When it is omitted, requests use
30
30
  `AZURE_OPENAI_DEPLOYMENTS` is optional JSON, at most 8192 characters and 32
31
31
  entries. Each entry is `"name": "gpt-5.4"` or `"name": { "model": "gpt-5.4" }`.
32
32
  Deployment names and model ids are restricted to simple identifier characters.
33
- Harness passes the map to the adapter. Published 0.7.8 uses the base model for
33
+ Harness passes the map to the adapter. Published 0.8.0 uses the base model for
34
34
  capabilities and request shape while the request still uses the deployment
35
35
  name. Harness also overlays those capability flags.
36
36
 
package/docs/BEDROCK.md CHANGED
@@ -4,8 +4,8 @@ Bedrock is a separate provider (`bedrock`). It is not enabled by the Anthropic
4
4
  direct API route. No live Harness certification has been run for this route.
5
5
  Pricing and context limits are not inferred.
6
6
 
7
- Published `@zhivex-ai/bedrock@2.0.7` is the adapter pinned by this tree. It
8
- requires Core `^1.34.0`, and this checkout pins `@zhivex-ai/core@1.34.0`.
7
+ Published `@zhivex-ai/bedrock@2.1.0` is the adapter pinned by this tree. It
8
+ requires Core `^1.36.0`, and this checkout pins `@zhivex-ai/core@1.36.0`.
9
9
  This integration reports the installed adapter's labels and does not relabel
10
10
  them.
11
11
 
@@ -14,7 +14,7 @@ them.
14
14
  `BEDROCK_RUNTIME` is optional. An empty value or `converse` selects the Converse
15
15
  API. `openai` selects the OpenAI-compatible runtime. Any other value is rejected.
16
16
 
17
- Converse reports Tier B on the published 2.0.7 adapter: reasoning is supported
17
+ Converse reports Tier B on the published 2.1.0 adapter: reasoning is supported
18
18
  and `toolChoiceNone` is true. Approval requests stay false on that runtime.
19
19
  Harness reports that installed label.
20
20
 
@@ -28,7 +28,7 @@ not read `OPENAI_API_KEY` or `OPENAI_BASE_URL` for this route.
28
28
  Converse uses the AWS SDK default credential chain: instance roles, SSO,
29
29
  shared config, and environment credentials. Set `AWS_REGION` or
30
30
  `AWS_DEFAULT_REGION` to a region such as `us-east-1`. `AWS_PROFILE` is part of
31
- the transport fingerprint. Published 2.0.7 accepts a profile and static
31
+ the transport fingerprint. Published 2.1.0 accepts a profile and static
32
32
  credentials on the adapter. This route does not pass `AWS_PROFILE`. When
33
33
  `AWS_ACCESS_KEY_ID` and `AWS_SECRET_ACCESS_KEY` are both set, and no bearer
34
34
  token is set, Converse uses that static pair and an optional
package/docs/CLI.md CHANGED
@@ -549,6 +549,19 @@ model with a small billable request. See [credentials](CREDENTIALS.md).
549
549
  `/approvals` opens the mode picker; `/approvals ask`, `/approvals auto`, and
550
550
  `/approvals restricted` switch directly. The composer and `/status` show the active
551
551
  mode. Auto approves gated actions within existing workspace and execution policies.
552
+
553
+ Opt-in auto-approve is separate from `--yes`. `--auto-approve manual` is the default.
554
+ `--auto-approve auto-edits` applies file edits inside the workspace root.
555
+ `--auto-approve auto-limits` also runs commands whose executable is passed with
556
+ repeatable `--auto-approve-allow`. The same choice can live in
557
+ `.zhivex-harness/approval.json`, which tools cannot rewrite. A session choice from
558
+ `/auto-approve` or the `m` key wins until the process exits and does not rewrite the
559
+ file. Network or egress, deletes outside the workspace, writes outside the root,
560
+ secret or credential files, `git push`, package publish, and any operation already
561
+ over a spend or token limit always wait for a person. Allowlisting `git` or `npm`
562
+ does not bypass those. Every auto-approved edit is appended to
563
+ `.zhivex-harness/auto-approvals.jsonl`. `/undo` restores that edit when the file
564
+ still matches the approved text. See [auto-approve](AUTO_APPROVE.md).
552
565
  Bounded dependency inspection runs without a separate approval in every mode.
553
566
  Restricted denies gated actions. Mode changes apply only to this CLI process and are blocked
554
567
  while work is active or awaiting approval; use `/pending`, `/approve`, or `/deny`
@@ -1,5 +1,24 @@
1
1
  # Code release procedure
2
2
 
3
+ ## Harness 1.6.2 does not release Code
4
+
5
+ Harness source is `1.6.2`, pending publication to `latest`. Installed
6
+ acceptance requires the Code source pin to equal that candidate, so
7
+ `@zhivex-ai/code` stays version `0.4.0` and pins `@zhivex-ai/harness` to
8
+ `1.6.2`. Published npm Code `0.4.0` remains pinned to Harness `1.5.0`. Do not
9
+ republish `0.4.0` and do not create a `code-v*` tag for this engine bump.
10
+
11
+ ## Pending patch: 2026-10-16
12
+
13
+ The source version is `1.5.0`, pending publication to `latest`. This checkout
14
+ prepares Harness `1.5.0` and Code `0.4.0` for npm `latest`, with Code pinned
15
+ exactly to the engine and private Desktop bound to the same Harness version.
16
+ Published `latest` is Harness `1.4.1` and Code `0.3.2`. It adds the `v1.5.0`
17
+ representative mapping with the same Meta, Qwen and OpenAI models as `v1.4.1`
18
+ and does not change provider/API tiers. Annotated `v1.5.0` then `code-v0.4.0`
19
+ on the same reviewed main SHA, `channel=latest`, run through the unchanged
20
+ protected workflows and their environment approvals.
21
+
3
22
  ## Pending patch: 2026-10-14
4
23
 
5
24
  This checkout prepares Code `0.3.1`, pinned exactly to Harness `1.4.1`, for npm
@@ -278,9 +297,17 @@ support remain unchanged; estimated budgets are not guaranteed financial caps.
278
297
  verification as ordered in [the Harness release procedure](https://github.com/Zhivex/zhivex-harness/blob/main/docs/RELEASE.md).
279
298
  From a clean checkout of that main commit, create an annotated
280
299
  `code-v0.2.0` tag and push it. Never move or overwrite release tags.
281
- 4. Dispatch `release-code.yml` **at that tag**, with input `tag` matching it and
282
- `channel=latest`, `mode=oidc`, and `confirm_publication=true`. Dispatching
283
- main while supplying a different tag is rejected.
300
+ 4. Dispatch `release-code.yml` **from that exact tag ref**, with input `tag`
301
+ matching it and `channel=latest`, `mode=oidc`, and `confirm_publication=true`.
302
+ A no-permission job is defense in depth, not the trust boundary, because
303
+ GitHub loads it from the dispatched ref. When it still runs, it requires
304
+ `GITHUB_REF` to be exactly `refs/tags/code-v0.2.0`, resolves that annotated
305
+ tag to the workflow commit, and requires the commit to be reachable from
306
+ `main` before provenance OIDC, provider-free validation, or npm publication
307
+ starts. Dispatch from `main` or any other ref is rejected, including when
308
+ the commit matches the tag. Publication still depends on the `npm`
309
+ environment allowing only selected `v*` and `code-v*` tags, and on the tag
310
+ ruleset in [Public repository security](PUBLIC_SECURITY.md).
284
311
 
285
312
  ```sh
286
313
  gh workflow run release-code.yml --ref code-v0.2.0 \
@@ -350,10 +377,13 @@ In npm package settings, configure GitHub Actions with organization `Zhivex`,
350
377
  repository `zhivex-harness`, workflow filename `release-code.yml`, and environment
351
378
  `npm`. Enable the allowed action `npm publish`; the OIDC job uses direct
352
379
  publishing after GitHub approval, not `npm stage publish`. Preserve the GitHub
353
- environment's required human approval. Then prepare a
380
+ environment's required human approval and the selected-tag deployment rule in
381
+ [Public repository security](PUBLIC_SECURITY.md). That environment rule, with
382
+ the maintainer-only tag ruleset, is the trust boundary. The in-repo resolver is
383
+ defense in depth, not the trust boundary. Then prepare a
354
384
  new Code stable or RC version and annotated tag through the same PR and main CI process.
355
- Dispatch its tag with the matching channel, `mode=oidc` and
356
- `confirm_publication=true`. Stable versions require `latest` and a stable exact
385
+ Dispatch the workflow from that exact tag ref, with the matching channel, `mode=oidc` and
386
+ `confirm_publication=true`. A dispatch from `main` is rejected. Stable versions require `latest` and a stable exact
357
387
  Harness dependency; canonical RC versions require `next`. Version/channel drift
358
388
  fails before engine downloads. An RC may pin a stable engine. Stable publication
359
389
  does not upgrade beta/experimental APIs, provisional providers or Desktop alpha.
@@ -11,7 +11,7 @@ action on a fresh review ticket; model prose and a completed run are not accepta
11
11
 
12
12
  ## Operator flow
13
13
 
14
- 1. Open `zhivex-code web`, select an allowed workspace and create an empty session.
14
+ 1. Open `zhivex-code web`, open Sessions, choose an allowed project and create an empty session.
15
15
  Choose **Define task**. Enter the goal, exact existing editable files, package
16
16
  checks and explicit input/output/total token limits for the entire task.
17
17
  2. Review each proposed edit or check through the existing exact approval controls.
@@ -86,7 +86,7 @@ Set an https `AZURE_OPENAI_ENDPOINT` before saving a key. Optional
86
86
  `AZURE_OPENAI_API_VERSION` and `AZURE_OPENAI_DEPLOYMENTS` stay in the
87
87
  environment and are not written to the keychain. A managed
88
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
89
+ `@zhivex-ai/azure-openai@0.8.0` accepts a token provider, and this route still
90
90
  stores and sends the API key. See [Azure OpenAI](AZURE_OPENAI.md).
91
91
 
92
92
  ## Qwen interactive setup
@@ -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 source pins Core 1.34.0 and Agents 1.11.0. New stores require no
73
+ The current source pins Core 1.36.0 and Agents 1.12.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
@@ -1,7 +1,7 @@
1
1
  # Engine API and Code integration
2
2
 
3
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.
4
+ in published Harness 1.4.0 (npm `latest`). This checkout is Harness 1.6.2, 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.
@@ -8,7 +8,7 @@ Built-in registrations are Meta, Qwen, OpenAI, Gemini, Anthropic, Vertex, Amazon
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.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.
11
+ The coordinated stable SDK batch pins `@zhivex-ai/agents@1.12.0`, `@zhivex-ai/core@1.36.0`, `@zhivex-ai/meta@0.3.0`, `@zhivex-ai/qwen@0.18.0`, `@zhivex-ai/openai@0.17.0`, `@zhivex-ai/gemini@0.14.0`, `@zhivex-ai/anthropic@0.15.0`, `@zhivex-ai/vertex@1.3.0`, `@zhivex-ai/bedrock@2.1.0`, and `@zhivex-ai/azure-openai@0.8.0`. Qwen 0.16.2 types malformed Responses tool arguments and malformed SSE events; Core 1.36.0 satisfies Agents `^1.34.0` and the provider adapters' `^1.36.0` floors. Vertex 1.3.0 requires OpenAI `^0.17.0`, Anthropic `^0.15.0`, and Gemini `^0.14.0`. 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
 
@@ -81,14 +81,18 @@ Library callers can inject a custom `McpClient`. Trusted read-only annotations a
81
81
 
82
82
  ## MCP result boundary
83
83
 
84
- MCP descriptions and results are untrusted. The harness:
84
+ MCP descriptions and results are untrusted data, including text that looks like an identifier, digest, or configuration value. The harness:
85
85
 
86
86
  - bounds discovery pages, discovered tools, time, and response bytes;
87
87
  - validates declared input and structured-output schemas through the SDK MCP registry;
88
88
  - propagates abort signals, timeout intent, and idempotency keys;
89
89
  - rejects common prompt-injection directives before they enter model context;
90
90
  - records server permissions and risk in tool metadata;
91
- - promotes network, write, or external-side-effect calls to durable interrupt approval.
91
+ - promotes network, write, or external-side-effect calls to durable interrupt approval;
92
+ - removes exact secret values before a result is published;
93
+ - when a server was admitted with secret references, flags known encodings of those secrets and other high-entropy encoded tokens in tool results.
94
+
95
+ That flagging is optional and incomplete. Split, encrypted, or low-entropy encodings can still appear. Discovery schemas are rejected rather than rewritten when they contain an exact secret. Treat every MCP result as data, not as instructions and not as proof that a credential is absent.
92
96
 
93
97
  The injection filter is deliberately conservative and may reject legitimate security documentation containing imperative attack text. Use a separate trusted preprocessing boundary if that content must be analyzed; do not disable the harness boundary for an untrusted server.
94
98
 
package/docs/FIRST_USE.md CHANGED
@@ -1,13 +1,13 @@
1
1
  # First use
2
2
 
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.
3
+ This guide targets stable `1.6.2`, pending publication to npm `latest`. The versioned install commands below become available only after protected publication. npm `latest` remains stable 1.5.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.1
10
+ npm install -g @zhivex-ai/harness@1.6.2
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.1
85
+ bun add --global @zhivex-ai/harness@1.6.2
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.1 --version
93
- bunx @zhivex-ai/harness@1.4.1 --help
94
- bunx @zhivex-ai/harness@1.4.1 doctor
92
+ bunx @zhivex-ai/harness@1.6.2 --version
93
+ bunx @zhivex-ai/harness@1.6.2 --help
94
+ bunx @zhivex-ai/harness@1.6.2 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,11 +52,11 @@ 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.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
- | Built-in Gemini (`@zhivex-ai/gemini` 0.13.0) | Supported | `generationConfig.maxOutputTokens`; `maxRetries=0` |
58
- | Built-in Vertex (`@zhivex-ai/vertex` 1.2.7) | Supported | `generationConfig.maxOutputTokens`; real ADC callback, synthetic credential source in tests; `maxRetries=0` |
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` |
55
+ | Built-in OpenAI (`@zhivex-ai/openai` 0.17.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.15.0) | Supported | Messages `max_tokens`; non-refreshable built-in credentials; `maxRetries=0` |
57
+ | Built-in Gemini (`@zhivex-ai/gemini` 0.14.0) | Supported | `generationConfig.maxOutputTokens`; `maxRetries=0` |
58
+ | Built-in Vertex (`@zhivex-ai/vertex` 1.3.0) | Supported | `generationConfig.maxOutputTokens`; real ADC callback, synthetic credential source in tests; `maxRetries=0` |
59
+ | Qwen (`@zhivex-ai/qwen` 0.18.0) | 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 |
62
62
  | Mock | Offline tests only | Synthetic usage is never billing evidence |
@@ -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.1 (Code 0.3.1), pending publication. Commands
10
+ Use `zhx` with Harness 1.6.2, pending publication. `zhivex-code` stays on Code 0.4.0. Its source pin is Harness 1.6.2; published Code 0.4.0 remains pinned to Harness 1.5.0. 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
 
@@ -13,7 +13,9 @@ The repository is public. GitHub documents the following controls as available w
13
13
  - CodeQL code scanning on standard GitHub-hosted runners; and
14
14
  - standard GitHub-hosted Actions runners.
15
15
 
16
- The repository additionally uses a `main` ruleset with pull-request review, review-thread resolution, linear history, and required CI checks. Repository Actions default to read-only permissions; individual jobs must request any narrower write capability explicitly. The npm publication job is the only workflow path that requests `id-token: write`, and it uses the protected `npm` environment.
16
+ The repository additionally uses a `main` ruleset with pull-request review, review-thread resolution, linear history, and required CI checks. Repository Actions default to read-only permissions; individual jobs must request any narrower write capability explicitly. CI lints `.github/workflows` with actionlint 1.7.12 and shellcheck. The checksum and the shellcheck exceptions for quoted node/bun programs are pinned in `.github/workflows/ci.yml`.
17
+
18
+ Harness release, Code release, and live certification each call `.github/workflows/resolve-protected-release-ref.yml` from a job with empty permissions and no secrets. The call uses a relative `./` path, so GitHub loads that file from the same commit as the dispatched workflow. An off-main tag or branch can rewrite the resolver or omit the call. The resolver is defense in depth, not the trust boundary. The boundary is external: the `npm` and `live-certification` environments accept deployments only from the selected tag patterns below, and a tag ruleset lets only maintainers create matching tags and blocks updates and deletions. When the dispatched workflow still contains the resolver, it requires `GITHUB_REF` to be exactly `refs/tags/<tag>` for both Harness and Code. It then accepts only an annotated `vX.Y.Z`, `vX.Y.Z-rc.N`, `code-vX.Y.Z`, or `code-vX.Y.Z-rc.N` tag, peels it to a full commit SHA, and continues only when that commit is the workflow commit and an ancestor of `main`. Later jobs check out that SHA. `id-token: write` is requested only on those later jobs: Harness and Code publication on the `npm` environment, Code provenance generation, and Vertex workload identity on the `live-certification` environment. The environment still withholds that token unless the workflow ref is an allowed deployment tag. npm provenance, the Rekor HTTP 409 reuse for an identical DSSE entry, and the registry verification step are unchanged. Pinning `uses:` to a commit SHA in this repository or in another repository does not replace the environment rules or the tag ruleset: the workflow file selected by the dispatched ref still chooses the `uses:` value and can delete the call.
17
19
 
18
20
  References:
19
21
 
@@ -37,3 +39,14 @@ If the repository becomes private or internal, treat every security feature and
37
39
  The `live-certification` GitHub environment is the only workflow scope authorized to hold provider credentials. Whether credentials are currently configured is mutable repository state and is intentionally not asserted by this document; maintainers must verify it at dispatch time. Adding or rotating credentials transfers sensitive provider keys into GitHub and requires an explicit maintainer decision.
38
40
 
39
41
  The release workflow fails closed when those credentials are absent: npm publication depends on the base, orchestration, routing, and model-directed OCI live gates running against the exact annotated release tag and source commit. When credentials are configured, they are exposed only to the final provider-call step; checkout, runtime setup, dependency installation, tag verification, and deterministic OCI validation do not receive them. Local credentials are never copied to GitHub automatically.
42
+
43
+ ## Environment protection to confirm manually
44
+
45
+ The workflow file cannot create GitHub environment rules or rulesets. Before the next npm publication or live certification, set these repository settings. They are the trust boundary.
46
+
47
+ - `npm`: required reviewers. Deployment branches and tags must be **Selected tags** with patterns `v*` and `code-v*` only. Do not include `main`, all branches, or any other pattern. This environment remains the Trusted Publishing environment for `release.yml` and `release-code.yml`.
48
+ - `live-certification`: required reviewers. Deployment branches and tags must be **Selected tags** with pattern `v*` only. Do not include `main`, any branch, or `code-v*`. Provider secrets and Vertex variables stay in this environment.
49
+ - Tag ruleset for patterns `v*` and `code-v*`: enable **Restrict creations**, **Restrict updates**, and **Restrict deletions**. Put only the Maintain role on the bypass list, so only maintainers can create matching tags and nobody can update or delete them. Repository admins can still bypass a ruleset unless the organization disables bypass; do not add a broader bypass list.
50
+ - Dispatch Harness release, Code release, and live certification from the exact tag ref (`refs/tags/vX.Y.Z`, `refs/tags/vX.Y.Z-rc.N`, `refs/tags/code-vX.Y.Z`, or `refs/tags/code-vX.Y.Z-rc.N`). A dispatch from `main` or any other ref is not a deployment tag, so these environments do not grant secrets or `id-token: write`. The resolver rejects that ref as well when the dispatched workflow still contains the check, including when the branch commit equals the tag.
51
+ - Approve a deployment only after the resolve job log shows `resolved <tag> to <sha>` and that SHA equals the workflow commit (`github.sha`).
52
+ - Environment patterns are coarse `fnmatch` globs. The resolver's regular expression is stricter, but it runs only when the workflow file on the dispatched ref still calls it. A ref the ruleset and the environment exclude never receives secrets or `id-token: write`, even if its workflow omits the resolver.
@@ -72,7 +72,7 @@ The terminal prints the complete `apply_patch` approval arguments rather than tr
72
72
 
73
73
  `quarantine_file` requires the current digest and moves the file into harness-owned state. The result includes a `quarantineId` used for recovery. The model has no permanent-delete tool.
74
74
 
75
- `restore_file` accepts a quarantine identifier and an optional workspace destination. Restore is conflict-safe: it never overwrites an existing destination, and an optional expected digest can bind the operation to the quarantined bytes the operator reviewed. A successful restore is recorded independently from the quarantine operation.
75
+ `restore_file` requires a quarantine identifier, the destination path, and the expected digest of the quarantined bytes. It does not fall back to the original path or restore bytes the operator did not pin. Restore is conflict-safe: it never overwrites an existing destination. The approval preview shows that destination and the quarantined text for the pinned digest. A successful restore is recorded independently from the quarantine operation.
76
76
 
77
77
  Quarantine is a recovery boundary, not a backup system. Retention and permanent cleanup remain operator responsibilities. Do not manually edit quarantine manifests or payloads while a run is active.
78
78
 
@@ -32,6 +32,9 @@ The strongest matching decision wins: deny, then ask_user, then allow. Allow
32
32
  does not grant filesystem permissions or remove an existing approval. ask_user
33
33
  uses the current approval mechanism, including its configured automatic mode;
34
34
  it does not independently require a human. Human-only review is separate work.
35
+ Opt-in auto-approve (`manual`, `auto-edits`, `auto-limits`) never bypasses a deny,
36
+ an explicit host review, or the always-ask list (network, secrets, git push,
37
+ package publish, paths outside the workspace, and an already reached spend or token limit).
35
38
 
36
39
  Built-in file resolvers cover read_file, read_files, propose_edits, apply_patch,
37
40
  apply_reviewed_edits, apply_reviewed_replacement, move_file and quarantine_file.
@@ -62,7 +65,10 @@ channels without compatible review evidence receive EXPLICIT_REVIEW_REQUIRED and
62
65
  leave the operation pending. The local CLI in ask mode displays a complete bounded
63
66
  payload and issues host evidence after explicit confirmation, without cached session
64
67
  grants. With this policy, `resume --approve` also requires interactive review;
65
- noninteractive invocation remains pending. Desktop accepts the operator-owned
68
+ noninteractive invocation remains pending. `zhivex-code web --tool-policy` applies that file only when a single
69
+ `--workspace` is set. More than one workspace with a shared policy is a usage
70
+ error, so projects cannot inherit each other's approvals. `zhivex-code project add
71
+ --tool-policy <path>` records a policy for that folder alone. Desktop accepts the operator-owned
66
72
  policy through its `--tool-policy` startup argument. Its main process consumes a
67
73
  bounded, expiring review ticket and sends the exact decision to the runtime through
68
74
  their private process channel. The renderer cannot issue review evidence, and the
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.2.7` with Core 1.34.0 and
48
- `google-auth-library@11.1.0`. Deterministic tests exercise the installed SDK's
47
+ The integration pins `@zhivex-ai/vertex@1.3.0` with Core 1.36.0 and
48
+ `google-auth-library@11.3.1`. 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.
@@ -3,8 +3,8 @@
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 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.
6
+ and the root Core override now pin Core 1.36.0; Agents is 1.12.0.
7
+ Provider package pins are Anthropic 0.15.0, OpenAI 0.17.0 and Vertex 1.3.0.
8
8
  Headless policies and release gates remain unchanged.
9
9
 
10
10
  The Web header opens the approved gradual configuration modal. Next task settings
@@ -20,7 +20,7 @@ activate stdio, change configuration schema 1, or claim isolated execution passe
20
20
  options with abort, timeout/idempotency key, and an HTTP transport; no executable
21
21
  stdio factory was found in that dependency. The control-plane transport enum is
22
22
  not an executor.
23
- - The current pin is `@zhivex-ai/core` 1.34.0, which includes an experimental
23
+ - The current pin is `@zhivex-ai/core` 1.36.0, which includes an experimental
24
24
  stdio client. Harness still does not treat that factory as the OCI boundary.
25
25
 
26
26
  MCP stdio uses UTF-8 newline-delimited JSON-RPC on stdin/stdout; stderr is a
@@ -120,7 +120,7 @@ host spawn from `createHarnessMcpTools` or by buffering a never-ending `run`.
120
120
  | --- | --- |
121
121
  | Client commands run during session creation | Reject before admission; zero host/container processes and zero discovery calls. |
122
122
  | TOCTOU, swapped image/argv or replayed admission | Digest/identity recheck at launch; receipt scope/expiry/single-use tests. |
123
- | Secret/environment exfiltration | Empty inherited environment, restricted references, network denial, redacted audit; canary checks inside/outside boundary. |
123
+ | Secret/environment exfiltration | Empty inherited environment, restricted references, network denial, redacted audit, and optional flagging of high-entropy or encoded strings from credential-bearing servers. Output stays untrusted data. Canary checks inside and outside the boundary. |
124
124
  | Filesystem escape and host mutation | No bind mounts, no-follow snapshot/import rules, resource limits and reviewed publication; symlink/traversal fixtures. |
125
125
  | Tool metadata or prompt injection escalates authority | Independent host policy and per-call approvals; untrusted descriptions/results remain data. |
126
126
  | Hung/forking/noisy process | Absolute deadlines, frame/queue/stderr/resource bounds and whole-boundary cleanup. |
@@ -63,7 +63,11 @@
63
63
  "v1.4.0-rc.7",
64
64
  "v1.4.0-rc.8",
65
65
  "v1.4.0",
66
- "v1.4.1"
66
+ "v1.4.1",
67
+ "v1.5.0",
68
+ "v1.6.0",
69
+ "v1.6.1",
70
+ "v1.6.2"
67
71
  ],
68
72
  "expectedModels": [
69
73
  {
@@ -561,6 +565,38 @@
561
565
  "qwen": "qwen3.8-flash",
562
566
  "openai": "gpt-6-luna"
563
567
  }
568
+ },
569
+ {
570
+ "releaseTag": "v1.5.0",
571
+ "models": {
572
+ "meta": "muse-spark-1.3-contributor",
573
+ "qwen": "qwen3.8-flash",
574
+ "openai": "gpt-6-luna"
575
+ }
576
+ },
577
+ {
578
+ "releaseTag": "v1.6.0",
579
+ "models": {
580
+ "meta": "muse-spark-1.3-contributor",
581
+ "qwen": "qwen3.8-flash",
582
+ "openai": "gpt-6-luna"
583
+ }
584
+ },
585
+ {
586
+ "releaseTag": "v1.6.1",
587
+ "models": {
588
+ "meta": "muse-spark-1.3-contributor",
589
+ "qwen": "qwen3.8-flash",
590
+ "openai": "gpt-6-luna"
591
+ }
592
+ },
593
+ {
594
+ "releaseTag": "v1.6.2",
595
+ "models": {
596
+ "meta": "muse-spark-1.3-contributor",
597
+ "qwen": "qwen3.8-flash",
598
+ "openai": "gpt-6-luna"
599
+ }
564
600
  }
565
601
  ],
566
602
  "expectedCases": [
@@ -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.1 artifact in a temporary consumer, without building the source checkout or changing global tools:
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.6.2 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.1
11
+ bun add --exact --ignore-scripts @zhivex-ai/harness@1.6.2
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.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.
17
+ Version must print `1.6.2`; 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
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zhivex-ai/harness",
3
- "version": "1.4.1",
3
+ "version": "1.6.2",
4
4
  "description": "Governed, provider-portable runtime for coding agents with durable approvals and isolated repository execution.",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -100,6 +100,7 @@
100
100
  "LICENSE",
101
101
  "docs/CHANGE_ENVELOPES.md",
102
102
  "docs/CLI.md",
103
+ "docs/AUTO_APPROVE.md",
103
104
  "docs/WEB_LIMITS.md",
104
105
  "docs/CODE_RELEASE.md",
105
106
  "docs/CODE_WEB_TASKS.md",
@@ -216,26 +217,26 @@
216
217
  "smoke:mcp:installed": "bun run build && bun scripts/mcp-installed-smoke.ts"
217
218
  },
218
219
  "dependencies": {
219
- "@zhivex-ai/agents": "1.11.0",
220
- "@zhivex-ai/anthropic": "0.14.0",
221
- "@zhivex-ai/azure-openai": "0.7.8",
222
- "@zhivex-ai/bedrock": "2.0.7",
223
- "@zhivex-ai/core": "1.34.0",
224
- "@zhivex-ai/gemini": "0.13.0",
225
- "@zhivex-ai/meta": "0.2.9",
226
- "@zhivex-ai/openai": "0.16.0",
227
- "@zhivex-ai/qwen": "0.16.4",
228
- "@zhivex-ai/vertex": "1.2.7",
229
- "google-auth-library": "11.1.0",
230
- "zod": "4.6.5"
220
+ "@zhivex-ai/agents": "1.12.0",
221
+ "@zhivex-ai/anthropic": "0.15.0",
222
+ "@zhivex-ai/azure-openai": "0.8.0",
223
+ "@zhivex-ai/bedrock": "2.1.0",
224
+ "@zhivex-ai/core": "1.36.0",
225
+ "@zhivex-ai/gemini": "0.14.0",
226
+ "@zhivex-ai/meta": "0.3.0",
227
+ "@zhivex-ai/openai": "0.17.0",
228
+ "@zhivex-ai/qwen": "0.18.0",
229
+ "@zhivex-ai/vertex": "1.3.0",
230
+ "google-auth-library": "11.3.1",
231
+ "zod": "4.6.7"
231
232
  },
232
233
  "overrides": {
233
- "@zhivex-ai/core": "1.34.0"
234
+ "@zhivex-ai/core": "1.36.0"
234
235
  },
235
236
  "devDependencies": {
236
237
  "@agentclientprotocol/sdk": "1.8.0",
237
238
  "@modelcontextprotocol/server": "2.3.1",
238
- "@types/bun": "1.4.2",
239
+ "@types/bun": "1.4.3",
239
240
  "@types/node": "^26.6.5",
240
241
  "typescript": "7.0.2",
241
242
  "typescript-compiler-api": "npm:typescript@6.0.3"