@zhivex-ai/harness 1.4.0 → 1.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +32 -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 +36 -36
- package/dist/acp-cli.js +54 -20
- package/dist/approvals/approval-diff.d.ts +2 -1
- package/dist/approvals/approval-preview.d.ts +1 -1
- 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-kvw7ng34.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-entry-75j3r49b.js +484 -0
- package/dist/cli-entry-928p8h41.js +10067 -0
- package/dist/cli-entry-h2yc9x37.js +10350 -0
- package/dist/{cli-entry-20w6nh0k.js → cli-entry-hdtfef27.js} +439 -19
- package/dist/{cli-entry-w0hterjs.js → cli-entry-q8bgkn9m.js} +40 -13
- package/dist/{cli-2h37qyvg.js → cli-vyrytn3m.js} +253 -644
- 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 +1232 -564
- package/dist/{index-8zjmnyw5.js → index-1265j7t2.js} +73 -6
- package/dist/{index-nmjdwd4p.js → index-4gt045j0.js} +109 -1
- package/dist/{index-pdmevfxv.js → index-5zbq9ztj.js} +5 -259
- package/dist/{index-6dft2vev.js → index-63gbp0cz.js} +5 -3
- package/dist/index-6dxrbnxm.js +719 -0
- package/dist/{index-pp474137.js → index-6fp7kdpx.js} +769 -933
- package/dist/{index-61gthdz6.js → index-8sm2a1wa.js} +1 -1
- package/dist/{index-rkbf7dqg.js → index-96ezrvg2.js} +57 -13
- package/dist/index-bt2p8x7r.js +329 -0
- package/dist/index-c39197wq.js +552 -0
- package/dist/{index-m82cfspw.js → index-eps3c3g6.js} +877 -963
- package/dist/{index-s2k2edts.js → index-fqqz1yt8.js} +110 -1544
- package/dist/{index-m34q25jj.js → index-ggstwr0v.js} +192 -838
- package/dist/index-jpdvn09j.js +490 -0
- package/dist/{index-xqxeypt5.js → index-mzydbzp8.js} +76 -4
- package/dist/index-pq3kz1r8.js +269 -0
- package/dist/{index-wg1sd3at.js → index-qfsrrnz6.js} +1 -1
- package/dist/{index-937cb7y8.js → index-vc7yxz50.js} +561 -35
- package/dist/{index-5jhgatga.js → index-vvzc5ezz.js} +7 -6
- package/dist/index-wwthv10a.js +1507 -0
- package/dist/{index-tfzta544.js → index-xfedewpt.js} +17 -9
- package/dist/index-yx52bt4a.js +511 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.js +93 -77
- package/dist/integrations/mcp-stdio-tools.d.ts +4 -1
- 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/budget-ledger-scope.d.ts +14 -0
- 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-v6qptg9x.js} +400 -305
- package/dist/tools/workspace.d.ts +2 -2
- package/dist/verify-historical-migrations.js +1237 -566
- package/dist/workspace/edit-contracts.d.ts +2 -2
- package/dist/workspace/path-policy.d.ts +2 -1
- package/dist/workspace/workspace.d.ts +13 -0
- 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 +59 -7
- 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 +8 -4
- package/docs/FIRST_USE.md +6 -6
- package/docs/MINIMUM_TASK_AUTHORITY.md +3 -3
- package/docs/PROJECT_MEMORY.md +1 -1
- package/docs/PUBLIC_SECURITY.md +14 -1
- package/docs/README.md +6 -1
- package/docs/REPOSITORY_EDITING.md +1 -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/TOOL_POLICY.md +4 -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 +7 -4
- 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 +19 -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
|
@@ -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.
|
|
@@ -117,7 +120,7 @@ host spawn from `createHarnessMcpTools` or by buffering a never-ending `run`.
|
|
|
117
120
|
| --- | --- |
|
|
118
121
|
| Client commands run during session creation | Reject before admission; zero host/container processes and zero discovery calls. |
|
|
119
122
|
| TOCTOU, swapped image/argv or replayed admission | Digest/identity recheck at launch; receipt scope/expiry/single-use tests. |
|
|
120
|
-
| Secret/environment exfiltration | Empty inherited environment, restricted references, network denial, redacted audit
|
|
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. |
|
|
121
124
|
| Filesystem escape and host mutation | No bind mounts, no-follow snapshot/import rules, resource limits and reviewed publication; symlink/traversal fixtures. |
|
|
122
125
|
| Tool metadata or prompt injection escalates authority | Independent host policy and per-call approvals; untrusted descriptions/results remain data. |
|
|
123
126
|
| Hung/forking/noisy process | Absolute deadlines, frame/queue/stderr/resource bounds and whole-boundary cleanup. |
|
|
@@ -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,9 @@
|
|
|
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",
|
|
67
|
+
"v1.5.0"
|
|
66
68
|
],
|
|
67
69
|
"expectedModels": [
|
|
68
70
|
{
|
|
@@ -552,6 +554,22 @@
|
|
|
552
554
|
"qwen": "qwen3.8-flash",
|
|
553
555
|
"openai": "gpt-6-luna"
|
|
554
556
|
}
|
|
557
|
+
},
|
|
558
|
+
{
|
|
559
|
+
"releaseTag": "v1.4.1",
|
|
560
|
+
"models": {
|
|
561
|
+
"meta": "muse-spark-1.3-contributor",
|
|
562
|
+
"qwen": "qwen3.8-flash",
|
|
563
|
+
"openai": "gpt-6-luna"
|
|
564
|
+
}
|
|
565
|
+
},
|
|
566
|
+
{
|
|
567
|
+
"releaseTag": "v1.5.0",
|
|
568
|
+
"models": {
|
|
569
|
+
"meta": "muse-spark-1.3-contributor",
|
|
570
|
+
"qwen": "qwen3.8-flash",
|
|
571
|
+
"openai": "gpt-6-luna"
|
|
572
|
+
}
|
|
555
573
|
}
|
|
556
574
|
],
|
|
557
575
|
"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.
|
|
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.5.0 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.
|
|
11
|
+
bun add --exact --ignore-scripts @zhivex-ai/harness@1.5.0
|
|
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.
|
|
17
|
+
Version must print `1.5.0`; 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.
|
|
3
|
+
"version": "1.5.0",
|
|
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",
|
|
@@ -85,6 +85,10 @@
|
|
|
85
85
|
"./mcp/stdio/v1": {
|
|
86
86
|
"types": "./dist/engine/mcp-stdio-v1.d.ts",
|
|
87
87
|
"import": "./dist/engine/mcp-stdio-v1.js"
|
|
88
|
+
},
|
|
89
|
+
"./audit": {
|
|
90
|
+
"types": "./dist/audit/index.d.ts",
|
|
91
|
+
"import": "./dist/audit/index.js"
|
|
88
92
|
}
|
|
89
93
|
},
|
|
90
94
|
"files": [
|
|
@@ -98,6 +102,7 @@
|
|
|
98
102
|
"docs/CLI.md",
|
|
99
103
|
"docs/WEB_LIMITS.md",
|
|
100
104
|
"docs/CODE_RELEASE.md",
|
|
105
|
+
"docs/CODE_WEB_TASKS.md",
|
|
101
106
|
"docs/images/cli-conversation.png",
|
|
102
107
|
"docs/CLIENT_PROTOCOL.md",
|
|
103
108
|
"docs/CONTEXT_ENGINEERING.md",
|
|
@@ -135,18 +140,21 @@
|
|
|
135
140
|
"docs/MCP_STDIO.md",
|
|
136
141
|
"docs/adr/0002-isolated-mcp-stdio.md",
|
|
137
142
|
"docs/VERTEX.md",
|
|
143
|
+
"docs/BEDROCK.md",
|
|
144
|
+
"docs/AZURE_OPENAI.md",
|
|
138
145
|
"docs/TOOL_POLICY.md",
|
|
139
146
|
"docs/fixtures/mcp-stdio-contract-v1.json",
|
|
140
147
|
"docs/PROJECT_MEMORY.md",
|
|
141
148
|
"docs/MINIMUM_TASK_AUTHORITY.md",
|
|
142
|
-
"docs/MINIMUM_OFFLINE_EVALS.md"
|
|
149
|
+
"docs/MINIMUM_OFFLINE_EVALS.md",
|
|
150
|
+
"docs/AUDIT_PACK.md"
|
|
143
151
|
],
|
|
144
152
|
"scripts": {
|
|
145
153
|
"models:check": "bun run scripts/validate-model-catalog.ts",
|
|
146
154
|
"models:import": "bun run scripts/generate-console-models.ts",
|
|
147
155
|
"dev": "bun run build && node --env-file-if-exists=.env dist/cli.js",
|
|
148
156
|
"start": "node dist/cli.js",
|
|
149
|
-
"build": "bun run scripts/clean-dist.ts && bun build ./src/index.ts ./src/service-cli.ts ./src/acp-cli.ts ./src/engine/index.ts ./src/engine/protocol.ts ./src/engine/client.ts ./src/engine/service.ts ./src/engine/acp.ts ./src/engine/models.ts ./src/engine/desktop-state-v1.ts ./src/engine/desktop-providers-v1.ts ./src/compat/code-support.ts ./src/engine/mcp-stdio-v1.ts --root ./src --outdir ./dist --target node --packages external --splitting && bun build ./src/engine/protocol.ts ./src/engine/models.ts --outdir ./dist/engine --target browser --packages external && bun build ./src/cli-entry.ts --outdir ./dist --target node --packages external --splitting && mv ./dist/cli-entry.js ./dist/cli.js && cp ./dist/cli.js ./dist/zhx.js && bun build ./scripts/verify-historical-migrations.ts --outfile ./dist/verify-historical-migrations.js --target node --packages external && bun build ./scripts/hostile-repository-demo.ts --outfile ./dist/hostile-repository-demo.js --target node --packages external && tsc --emitDeclarationOnly",
|
|
157
|
+
"build": "bun run scripts/clean-dist.ts && bun build ./src/index.ts ./src/service-cli.ts ./src/acp-cli.ts ./src/audit/index.ts ./src/engine/index.ts ./src/engine/protocol.ts ./src/engine/client.ts ./src/engine/service.ts ./src/engine/acp.ts ./src/engine/models.ts ./src/engine/desktop-state-v1.ts ./src/engine/desktop-providers-v1.ts ./src/compat/code-support.ts ./src/engine/mcp-stdio-v1.ts --root ./src --outdir ./dist --target node --packages external --splitting && bun build ./src/engine/protocol.ts ./src/engine/models.ts --outdir ./dist/engine --target browser --packages external && bun build ./src/cli-entry.ts --outdir ./dist --target node --packages external --splitting && mv ./dist/cli-entry.js ./dist/cli.js && cp ./dist/cli.js ./dist/zhx.js && bun build ./scripts/verify-historical-migrations.ts --outfile ./dist/verify-historical-migrations.js --target node --packages external && bun build ./scripts/hostile-repository-demo.ts --outfile ./dist/hostile-repository-demo.js --target node --packages external && tsc --emitDeclarationOnly",
|
|
150
158
|
"prepack": "bun run build",
|
|
151
159
|
"architecture:check": "bun run scripts/check-architecture.ts",
|
|
152
160
|
"docs:check": "bun run scripts/check-docs.ts",
|
|
@@ -156,7 +164,7 @@
|
|
|
156
164
|
"readiness:1.0": "bun run scripts/check-1-0-readiness.ts",
|
|
157
165
|
"readiness:1.0:release": "bun run scripts/check-1-0-readiness.ts --release",
|
|
158
166
|
"typecheck": "tsc --noEmit",
|
|
159
|
-
"test": "bun test ./tests ./desktop/tests",
|
|
167
|
+
"test": "bun test --preload ./tests/preload-bedrock-mock.ts ./tests ./desktop/tests",
|
|
160
168
|
"evaluate": "bun run scripts/evaluate.ts",
|
|
161
169
|
"benchmark:workspace": "bun run scripts/benchmark-workspace.ts",
|
|
162
170
|
"benchmark:workspace:ci": "bun run scripts/benchmark-workspace.ts --files 1000 --page-size 100 --repetitions 3 --warmups 0",
|
|
@@ -209,24 +217,26 @@
|
|
|
209
217
|
},
|
|
210
218
|
"dependencies": {
|
|
211
219
|
"@zhivex-ai/agents": "1.11.0",
|
|
212
|
-
"@zhivex-ai/anthropic": "0.
|
|
213
|
-
"@zhivex-ai/
|
|
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",
|
|
214
224
|
"@zhivex-ai/gemini": "0.13.0",
|
|
215
225
|
"@zhivex-ai/meta": "0.2.9",
|
|
216
|
-
"@zhivex-ai/openai": "0.
|
|
226
|
+
"@zhivex-ai/openai": "0.16.0",
|
|
217
227
|
"@zhivex-ai/qwen": "0.16.4",
|
|
218
|
-
"@zhivex-ai/vertex": "1.2.
|
|
228
|
+
"@zhivex-ai/vertex": "1.2.7",
|
|
219
229
|
"google-auth-library": "11.1.0",
|
|
220
230
|
"zod": "4.6.5"
|
|
221
231
|
},
|
|
222
232
|
"overrides": {
|
|
223
|
-
"@zhivex-ai/core": "1.
|
|
233
|
+
"@zhivex-ai/core": "1.34.0"
|
|
224
234
|
},
|
|
225
235
|
"devDependencies": {
|
|
226
|
-
"@agentclientprotocol/sdk": "1.
|
|
227
|
-
"@modelcontextprotocol/server": "2.
|
|
236
|
+
"@agentclientprotocol/sdk": "1.8.0",
|
|
237
|
+
"@modelcontextprotocol/server": "2.3.1",
|
|
228
238
|
"@types/bun": "1.4.2",
|
|
229
|
-
"@types/node": "^26.6.
|
|
239
|
+
"@types/node": "^26.6.5",
|
|
230
240
|
"typescript": "7.0.2",
|
|
231
241
|
"typescript-compiler-api": "npm:typescript@6.0.3"
|
|
232
242
|
},
|
|
@@ -236,6 +246,6 @@
|
|
|
236
246
|
},
|
|
237
247
|
"packageManager": "bun@1.4.0",
|
|
238
248
|
"optionalDependencies": {
|
|
239
|
-
"@napi-rs/keyring": "2.1.
|
|
249
|
+
"@napi-rs/keyring": "2.1.1"
|
|
240
250
|
}
|
|
241
251
|
}
|