@zhivex-ai/harness 1.0.0 → 1.1.0-rc.10
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 +184 -1
- package/README.md +52 -306
- package/SECURITY.md +1 -1
- package/SUPPORT.md +7 -3
- package/benchmarks/README.md +3 -3
- package/contracts/client-protocol-v1.schema.json +341 -0
- package/contracts/public-api.json +107 -1
- package/contracts/stable-api-signatures.json +34 -34
- package/dist/approvals/approval-diff.d.ts +45 -0
- package/dist/approvals/approval-history.d.ts +38 -0
- package/dist/approvals/approval-preview.d.ts +26 -0
- package/dist/cli/arguments.d.ts +105 -0
- package/dist/cli/changes.d.ts +2 -0
- package/dist/cli/cli-credentials.d.ts +50 -0
- package/dist/cli/cli-help.d.ts +3 -0
- package/dist/{cli-options.d.ts → cli/cli-options.d.ts} +1 -1
- package/dist/{cli-profiles.d.ts → cli/cli-profiles.d.ts} +17 -1
- package/dist/cli/configured-harness.d.ts +12 -0
- package/dist/cli/console/console-commands.d.ts +6 -0
- package/dist/{console-context.d.ts → cli/console/console-context.d.ts} +7 -3
- package/dist/cli/console/console-input.d.ts +68 -0
- package/dist/cli/console/console-model-catalog.d.ts +8 -0
- package/dist/cli/console/console-navigation.d.ts +29 -0
- package/dist/cli/console/console-presentation.d.ts +18 -0
- package/dist/cli/console/console-welcome.d.ts +13 -0
- package/dist/cli/console.d.ts +2 -0
- package/dist/cli/doctor.d.ts +52 -0
- package/dist/cli/errors.d.ts +8 -0
- package/dist/cli/help-text.d.ts +2 -0
- package/dist/cli/presentation.d.ts +23 -0
- package/dist/cli/resume-metadata.d.ts +12 -0
- package/dist/cli/routing.d.ts +6 -0
- package/dist/cli/run-commands.d.ts +4 -0
- package/dist/cli/run-document.d.ts +91 -0
- package/dist/cli/run-management.d.ts +2 -0
- package/dist/cli/service-client-cli.d.ts +2 -0
- package/dist/cli/session-management.d.ts +8 -0
- package/dist/cli/setup.d.ts +10 -0
- package/dist/cli/state.d.ts +2 -0
- package/dist/cli/task-input.d.ts +6 -0
- package/dist/cli/terminal/terminal-continuation.d.ts +3 -0
- package/dist/{terminal-markdown.d.ts → cli/terminal/terminal-markdown.d.ts} +1 -0
- package/dist/{terminal-ui.d.ts → cli/terminal/terminal-ui.d.ts} +7 -0
- package/dist/cli/terminal/tool-activity.d.ts +19 -0
- package/dist/cli.d.ts +32 -238
- package/dist/cli.js +17247 -12181
- package/dist/client/adapter.d.ts +4 -0
- package/dist/client/index.d.ts +15 -0
- package/dist/{json-contracts.d.ts → client/json-contracts.d.ts} +6 -0
- package/dist/client/local-service.d.ts +34 -0
- package/dist/client/protocol.d.ts +205 -0
- package/dist/client/service-events.d.ts +50 -0
- package/dist/context/adaptive-compaction.d.ts +16 -0
- package/dist/{compaction.d.ts → context/compaction.d.ts} +1 -1
- package/dist/{context-engineering.d.ts → context/context-engineering.d.ts} +2 -2
- package/dist/{context-metrics.d.ts → context/context-metrics.d.ts} +2 -0
- package/dist/{execution-environment.d.ts → execution/execution-environment.d.ts} +8 -4
- package/dist/hostile-repository-demo.js +2813 -869
- package/dist/index.d.ts +49 -41
- package/dist/index.js +8834 -6250
- package/dist/internal/desktop/persistence.d.ts +14 -0
- package/dist/internal/desktop/protocol.d.ts +8 -0
- package/dist/internal/desktop/providers.d.ts +9 -0
- package/dist/internal/desktop/runtime.d.ts +7 -0
- package/dist/models/catalog-store.d.ts +15 -0
- package/dist/models/catalog.d.ts +74 -0
- package/dist/{operations.d.ts → persistence/operations.d.ts} +25 -2
- package/dist/persistence/persistence-secrets.d.ts +2 -0
- package/dist/persistence/recorded-workspace.d.ts +4 -0
- package/dist/{sessions.d.ts → persistence/sessions.d.ts} +3 -0
- package/dist/persistence/sqlite-access.d.ts +26 -0
- package/dist/{sqlite-database.d.ts → persistence/sqlite-database.d.ts} +2 -0
- package/dist/{state-backup.d.ts → persistence/state-backup.d.ts} +9 -1
- package/dist/{capabilities.d.ts → providers/capabilities.d.ts} +1 -1
- package/dist/providers/meta-continuation.d.ts +1 -0
- package/dist/{providers.d.ts → providers/providers.d.ts} +4 -0
- package/dist/{routing.d.ts → providers/routing.d.ts} +1 -1
- package/dist/{config.d.ts → runtime/config.d.ts} +5 -1
- package/dist/runtime/delegation-contracts.d.ts +23 -0
- package/dist/runtime/error-diagnostics.d.ts +116 -0
- package/dist/{harness.d.ts → runtime/harness.d.ts} +16 -135
- package/dist/{orchestration.d.ts → runtime/orchestration.d.ts} +5 -0
- package/dist/{runtime-diagnostics.d.ts → runtime/runtime-diagnostics.d.ts} +1 -0
- package/dist/{runtime-policy.d.ts → runtime/runtime-policy.d.ts} +17 -1
- package/dist/{time-to-safe-fix.d.ts → runtime/time-to-safe-fix.d.ts} +114 -0
- package/dist/runtime/usage-ledger.d.ts +84 -0
- package/dist/service-cli.d.ts +2 -0
- package/dist/service-cli.js +11748 -0
- package/dist/tools/execution.d.ts +47 -0
- package/dist/tools/shared.d.ts +67 -0
- package/dist/tools/workspace.d.ts +85 -0
- package/dist/verify-historical-migrations.js +6831 -5494
- package/dist/{workspace.d.ts → workspace/workspace.d.ts} +22 -0
- package/dist/zhx.js +17247 -12181
- package/docs/CLI.md +190 -30
- package/docs/CLIENT_PROTOCOL.md +212 -0
- package/docs/CONTEXT_ENGINEERING.md +29 -2
- package/docs/CREDENTIALS.md +69 -0
- package/docs/DURABLE_OPERATIONS.md +8 -2
- package/docs/EXTENSIBILITY.md +58 -1
- package/docs/FIRST_USE.md +95 -0
- package/docs/FIRST_USE_EXAMPLE.md +40 -0
- package/docs/HOSTILE_REPOSITORY_DEMO.md +1 -1
- package/docs/LOCAL_SERVICE.md +142 -0
- package/docs/MODEL_CATALOG.md +48 -0
- package/docs/README.md +25 -23
- package/docs/THREAT_MODEL.md +1 -1
- package/docs/TIME_TO_SAFE_FIX.md +2 -2
- package/docs/USAGE.md +181 -0
- package/evaluations/daily-cli-cohort.json +33 -0
- package/evaluations/representative-assembly-matrix.json +91 -1
- package/examples/README.md +26 -0
- package/examples/first-use/greeting.test.ts +3 -0
- package/examples/first-use/greeting.ts +1 -0
- package/examples/first-use/package.json +7 -0
- package/package.json +50 -18
- package/ROADMAP.md +0 -414
- package/benchmarks/baselines/context-navigation-2026-09-09.json +0 -94
- package/benchmarks/baselines/efficiency-2026-09-08.json +0 -233
- package/benchmarks/baselines/external-final-2026-09-08.json +0 -588
- package/benchmarks/baselines/external-intermediate-2026-09-08.json +0 -116
- package/benchmarks/baselines/external-matched-openai-2026-09-08.json +0 -1922
- package/benchmarks/baselines/external-matched-qwen-2026-09-08.json +0 -1706
- package/benchmarks/baselines/external-pilot-2026-09-08.json +0 -439
- package/benchmarks/baselines/external-qwen-flash-2026-09-08.json +0 -1570
- package/benchmarks/baselines/external-qwen-remediation-2026-09-09.json +0 -1509
- package/benchmarks/baselines/external-qwen-sdk-114-progress-2026-09-09.json +0 -2509
- package/benchmarks/baselines/external-sdk-upgrade-2026-09-08.json +0 -564
- package/benchmarks/baselines/external-verifier-recovery-2026-09-09.json +0 -794
- package/benchmarks/baselines/full-harness-review-2026-09-10.json +0 -134
- package/benchmarks/baselines/harness-audit-2026-09-09.json +0 -136
- package/benchmarks/baselines/harness-remediation-2026-09-09.json +0 -160
- package/benchmarks/baselines/oci-remediation-2026-09-10.json +0 -535
- package/benchmarks/baselines/rc14-holdout-2026-09-10.json +0 -854
- package/benchmarks/baselines/repair-architecture-audit-2026-09-09.json +0 -75
- package/benchmarks/baselines/time-to-safe-fix-live-expanded-2026-08-21.json +0 -186
- package/benchmarks/baselines/time-to-safe-fix-live-smoke-2026-08-21.json +0 -186
- package/dist/console-input.d.ts +0 -28
- package/docs/GA_READINESS.md +0 -29
- package/docs/GEMINI_1_0_DECISION.md +0 -9
- package/docs/LIVE_CERTIFICATION.md +0 -107
- package/docs/RC13_SECURITY_REVIEW.md +0 -28
- package/docs/RC14_DELEGATED_SECURITY_DECISION.md +0 -80
- package/docs/RC14_SECURITY_REVIEW.md +0 -40
- package/docs/RELEASE.md +0 -96
- package/docs/ROLLBACK.md +0 -9
- package/docs/SECURITY_REVIEW_EVIDENCE.md +0 -17
- package/docs/ga-readiness.json +0 -366
- package/docs/reports/EFFICIENCY_REVIEW.md +0 -156
- package/docs/reports/EXTERNAL_COMPARISON.md +0 -434
- package/docs/reports/FULL_HARNESS_REVIEW_2026-09-10.md +0 -200
- package/docs/reports/GA_BUDGET_REMEDIATION_2026-09-19.md +0 -38
- package/docs/reports/GA_REPAIR_RECOVERY_2026-09-19.md +0 -700
- package/docs/reports/GA_VALIDATION_2026-09-19.md +0 -111
- package/docs/reports/HARNESS_ARCHITECTURE_REVIEW_2026-09-09.md +0 -202
- package/docs/reports/HARNESS_AUDIT_2026-09-09.md +0 -306
- package/docs/reports/HARNESS_REMEDIATION_2026-09-09.md +0 -74
- package/docs/reports/HARNESS_REMEDIATION_2026-09-10.md +0 -90
- package/docs/reports/MODEL_COMPARISON_2026-09-09.md +0 -184
- package/docs/reports/QWEN_REMEDIATION_COMPARISON_2026-09-09.md +0 -142
- package/docs/reports/RC14_VALIDATION_2026-09-10.md +0 -45
- package/docs/reports/README.md +0 -26
- package/docs/reports/evidence/ga-budget-remediation-2026-09-19.json +0 -133
- package/docs/reports/evidence/ga-catalog-ablation-2026-09-19.json +0 -699
- package/docs/reports/evidence/ga-catalog-ablation-plan-2026-09-19.json +0 -40
- package/docs/reports/evidence/ga-catalog-observed-2026-09-19.json +0 -985
- package/docs/reports/evidence/ga-catalog-observed-plan-2026-09-19.json +0 -28
- package/docs/reports/evidence/ga-catalog-observed-status-2026-09-19.json +0 -15
- package/docs/reports/evidence/ga-complete-local-check-2026-09-19.json +0 -47
- package/docs/reports/evidence/ga-completion-reminder-2026-09-19.json +0 -22
- package/docs/reports/evidence/ga-fresh-cohort-plan-2026-09-19.json +0 -54
- package/docs/reports/evidence/ga-fresh-cohort-preparation-2026-09-19.json +0 -242
- package/docs/reports/evidence/ga-fresh-cohort-result-2026-09-19.json +0 -4318
- package/docs/reports/evidence/ga-local-validation-followup-2026-09-19.json +0 -66
- package/docs/reports/evidence/ga-node-consumers-2026-09-19.json +0 -31
- package/docs/reports/evidence/ga-package-content-validation-2026-09-19.json +0 -22
- package/docs/reports/evidence/ga-plan-completion-2026-09-19.json +0 -39
- package/docs/reports/evidence/ga-plan-reserve-2026-09-19.json +0 -573
- package/docs/reports/evidence/ga-plan-reserve-plan-2026-09-19.json +0 -24
- package/docs/reports/evidence/ga-plan-transition-2026-09-19.json +0 -19
- package/docs/reports/evidence/ga-private-verifier-plan-2026-09-19.json +0 -24
- package/docs/reports/evidence/ga-private-verifier-root-cause-2026-09-19.json +0 -41
- package/docs/reports/evidence/ga-published-sdk-2026-09-19.json +0 -35
- package/docs/reports/evidence/ga-python-checkout-imports-2026-09-19.json +0 -95
- package/docs/reports/evidence/ga-python-origin-delivery-2026-09-19.json +0 -211
- package/docs/reports/evidence/ga-python-origin-delivery-plan-2026-09-19.json +0 -27
- package/docs/reports/evidence/ga-qwen-patched-package-2026-09-19.json +0 -1092
- package/docs/reports/evidence/ga-qwen-patched-package-plan-2026-09-19.json +0 -18
- package/docs/reports/evidence/ga-qwen-published-2026-09-19.json +0 -571
- package/docs/reports/evidence/ga-qwen-published-plan-2026-09-19.json +0 -18
- package/docs/reports/evidence/ga-qwen-tool-choice-2026-09-19.json +0 -85
- package/docs/reports/evidence/ga-qwen-tool-choice-patched-2026-09-19.json +0 -85
- package/docs/reports/evidence/ga-recovery-development-2026-09-19.json +0 -1066
- package/docs/reports/evidence/ga-recovery-graded-development-2026-09-19.json +0 -1313
- package/docs/reports/evidence/ga-recovery-graded-v2-2026-09-19.json +0 -1151
- package/docs/reports/evidence/ga-recovery-v3-2026-09-19.json +0 -3943
- package/docs/reports/evidence/ga-recovery-v4-2026-09-19.json +0 -1055
- package/docs/reports/evidence/ga-recovery-v5-2026-09-19.json +0 -1245
- package/docs/reports/evidence/ga-recovery-v6-2026-09-19.json +0 -699
- package/docs/reports/evidence/ga-recovery-v7-2026-09-19.json +0 -854
- package/docs/reports/evidence/ga-recovery-v8-2026-09-19.json +0 -596
- package/docs/reports/evidence/ga-required-delivery-2026-09-19.json +0 -25
- package/docs/reports/evidence/ga-required-delivery-live-2026-09-19.json +0 -1337
- package/docs/reports/evidence/ga-required-delivery-live-plan-2026-09-19.json +0 -25
- package/docs/reports/evidence/ga-retained-candidate-grading-2026-09-19.json +0 -30
- package/docs/reports/evidence/ga-tool-selection-live-2026-09-19.json +0 -559
- package/docs/reports/evidence/ga-tool-selection-live-plan-2026-09-19.json +0 -28
- package/docs/reports/evidence/ga-tool-selection-recovery-2026-09-19.json +0 -27
- package/docs/reports/evidence/ga-validation-2026-09-19.json +0 -236
- package/docs/reports/evidence/ga-verifier-discovery-live-2026-09-19.json +0 -1369
- package/docs/reports/evidence/ga-verifier-discovery-plan-2026-09-19.json +0 -29
- package/docs/reports/evidence/ga-verifier-failure-identification-2026-09-19.json +0 -30
- package/docs/reports/evidence/ga-verifier-feedback-2026-09-19.json +0 -65
- package/docs/reports/evidence/ga-verifier-hints-live-2026-09-19.json +0 -1297
- package/docs/reports/evidence/ga-verifier-hints-plan-2026-09-19.json +0 -27
- package/docs/reports/evidence/ga-work-boundary-context-analysis-2026-09-19.json +0 -113
- package/docs/reports/evidence/ga-work-boundary-live-2026-09-19.json +0 -301
- package/docs/reports/evidence/ga-work-boundary-live-plan-2026-09-19.json +0 -84
- package/docs/reports/evidence/ga-work-budget-planning-2026-09-19.json +0 -32
- package/docs/reports/evidence/ga-working-context-2026-09-19.json +0 -22
- package/docs/reports/evidence/rc14-delegated-security-review-2026-09-20.json +0 -81
- package/docs/reports/evidence/rc14-ga-gate-2026-09-20.json +0 -18
- package/docs/reports/evidence/rc14-representative-2026-09-20.json +0 -509
- package/docs/reports/evidence/rc14-security-regressions-2026-09-20.json +0 -64
- package/docs/reports/evidence/security-current-2026-09-19.json +0 -91
- package/docs/reports/evidence/security-remediation-2026-09-19.json +0 -97
- /package/dist/{cli-stream.d.ts → cli/cli-stream.d.ts} +0 -0
- /package/dist/{task-memory.d.ts → context/task-memory.d.ts} +0 -0
- /package/dist/{package-manager.d.ts → execution/package-manager.d.ts} +0 -0
- /package/dist/{process-runtime.d.ts → execution/process-runtime.d.ts} +0 -0
- /package/dist/{mcp.d.ts → integrations/mcp.d.ts} +0 -0
- /package/dist/{state-directory.d.ts → persistence/state-directory.d.ts} +0 -0
- /package/dist/{errors.d.ts → runtime/errors.d.ts} +0 -0
- /package/dist/{model-budget.d.ts → runtime/model-budget.d.ts} +0 -0
- /package/dist/{repair-controller.d.ts → runtime/repair-controller.d.ts} +0 -0
- /package/dist/{repair-progress.d.ts → runtime/repair-progress.d.ts} +0 -0
- /package/dist/{repair-verifier.d.ts → runtime/repair-verifier.d.ts} +0 -0
- /package/dist/{run-interruption.d.ts → runtime/run-interruption.d.ts} +0 -0
- /package/dist/{runtime-checkpoints.d.ts → runtime/runtime-checkpoints.d.ts} +0 -0
- /package/dist/{tool-registry.d.ts → tools/tool-registry.d.ts} +0 -0
- /package/dist/{bounded-reads.d.ts → workspace/bounded-reads.d.ts} +0 -0
- /package/dist/{change-envelope.d.ts → workspace/change-envelope.d.ts} +0 -0
- /package/dist/{edit-contracts.d.ts → workspace/edit-contracts.d.ts} +0 -0
- /package/dist/{file-security.d.ts → workspace/file-security.d.ts} +0 -0
- /package/dist/{replacement-edits.d.ts → workspace/replacement-edits.d.ts} +0 -0
- /package/dist/{workspace-mutation-lock.d.ts → workspace/workspace-mutation-lock.d.ts} +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -4,7 +4,174 @@ All notable changes to Zhivex Harness are documented in this file.
|
|
|
4
4
|
|
|
5
5
|
The project follows Semantic Versioning. During `0.x`, minor releases may change user-facing contracts when the change is documented with a migration note. Patch releases remain backwards compatible bug fixes.
|
|
6
6
|
|
|
7
|
-
##
|
|
7
|
+
## 1.1.0-rc.10 - 2026-09-23
|
|
8
|
+
|
|
9
|
+
- Restore `qwen3.8-max` as the default for new CLI/Desktop selections and RC.10 certification. Keep saved models and historical release mappings unchanged.
|
|
10
|
+
- Remove transient provider/SDK investigation reports and their local trial evidence; retain them in Git history.
|
|
11
|
+
|
|
12
|
+
- Recover once when Meta Responses rejects a function receipt continuation because its response ID is unavailable. Replay the identical request after a bounded delay, preserve cancellation, and exclude hosted tools and unrelated HTTP errors. Host tools are not executed again.
|
|
13
|
+
- Bind the new Meta transport policy to durable run identity. Use Qwen 3.8 Max, OpenAI Luna 6 and Muse Spark 1.3 release models; full release certification remains required.
|
|
14
|
+
|
|
15
|
+
## 1.1.0-rc.9 - 2026-09-23
|
|
16
|
+
|
|
17
|
+
- Upgrade Core to 1.23.0-next.2 and Agents to 1.9.0-next.2. All eight consumer redaction cases pass, including later rejection and file-store reopen. Qwen Flash orchestration remains intermittent, so RC certification is still blocked.
|
|
18
|
+
|
|
19
|
+
- Default new Meta selections to Muse Spark 1.3 and use Responses for built-in Meta agent tool loops. Bind the transport migration to durable run identity; preserve saved model IDs and historical evidence. Certification remains pending.
|
|
20
|
+
|
|
21
|
+
- Add application-owned read delegation contracts: models select task IDs while Harness preserves task text, enforces file scope and validates acceptance. Keep durable SDK execution and budgets; expose finite error classifications without logging task content.
|
|
22
|
+
- Allow trusted strict-mode applications to select a fingerprint-bound tool catalog and render only relevant tool instructions. Use scoped contracts/catalogs in live certification without weakening effect, approval, journal or marker checks.
|
|
23
|
+
- Integrate the published SDK next batch with failed-child linkage/accounting and OpenAI function receipt fixes. Update native-tool fixtures to the consistent metadata contract.
|
|
24
|
+
- Publication remains blocked: governed Flash orchestration passed three local executions, but the scoped base campaign failed one of three cases on exact approval arguments before mutation. These are local validation results, not a new RC certification.
|
|
25
|
+
|
|
26
|
+
## 1.1.0-rc.8 - 2026-09-22
|
|
27
|
+
|
|
28
|
+
- Preserve OpenAI function tool receipts through approval resume using SDK result envelopes. Prevent function names such as `apply_patch` from being mistaken for native Responses tools and losing their output. Keep release assertions and fail-fast gates unchanged.
|
|
29
|
+
|
|
30
|
+
## 1.1.0-rc.7 - 2026-09-22
|
|
31
|
+
|
|
32
|
+
- Select `gpt-6-luna` as the OpenAI default for new CLI/Desktop choices and pin it in RC7 release certification. Preserve explicitly saved models and historical certification mappings.
|
|
33
|
+
- Identify failed base live-smoke checkpoints with allowlisted labels and assertion kinds, without retaining raw assertion values or model responses.
|
|
34
|
+
|
|
35
|
+
## 1.1.0-rc.6 - 2026-09-22
|
|
36
|
+
|
|
37
|
+
- Stop release gates and remaining providers after a confirmed failure while retaining exhaustive manual diagnostics.
|
|
38
|
+
- Preserve completed certification cases across report failures and record bounded, sanitized error structure and finalization phases.
|
|
39
|
+
|
|
40
|
+
## 1.1.0-rc.5 - 2026-09-22
|
|
41
|
+
|
|
42
|
+
Unpublished candidate targeting npm `next`, superseding the tagged but unpublished RC.4.
|
|
43
|
+
|
|
44
|
+
- Use `qwen3.8-flash` as the default Qwen model in CLI/Desktop and the new release certification matrix. Keep Max selectable and preserve explicitly saved model choices and historical certification pins. Flash requires fresh release-bound certification.
|
|
45
|
+
|
|
46
|
+
## 1.1.0-rc.4 - 2026-09-22
|
|
47
|
+
|
|
48
|
+
- Align the SDK batch with the latest stable packages verified on 2026-09-22:
|
|
49
|
+
Agents 1.8.0, Core 1.22.0, Gemini 0.12.1, Meta 0.2.6, OpenAI 0.13.4 and
|
|
50
|
+
Qwen 0.15.0. Keep the compatible TypeScript 6.0.3 compiler API for architecture
|
|
51
|
+
and Stable signature checks while building with TypeScript 7.0.2.
|
|
52
|
+
|
|
53
|
+
- Use searchable provider/model selection during first use, detect a lone environment
|
|
54
|
+
provider, recover failed keychain setup with explicit temporary use or retry, and
|
|
55
|
+
show one ready screen with credential source and approval policy.
|
|
56
|
+
- Make `doctor` follow conversation defaults and inspect the selected environment
|
|
57
|
+
or keychain credential without contacting the provider. Human diagnostics focus
|
|
58
|
+
on the selected provider; JSON retains the full provider inventory. One-shot
|
|
59
|
+
execution continues to require explicit profiles and environment credentials.
|
|
60
|
+
|
|
61
|
+
- Retain recent conversation groups by estimated tokens, adapt repair compaction
|
|
62
|
+
to remaining input allowance, and preserve structured working plans across
|
|
63
|
+
repeated summaries. Keep SDK approval/checkpoint ownership and explicit overrides.
|
|
64
|
+
- Unify context estimates, reuse transport measurements and cache tool-schema
|
|
65
|
+
serialization. Default discovery to ten search matches and path-only listings;
|
|
66
|
+
callers can explicitly request larger results and digests.
|
|
67
|
+
|
|
68
|
+
- Add `--no-token-budget` / `unlimitedTokens: true` to disable cumulative token
|
|
69
|
+
budgets for main runs and subagents while preserving usage accounting,
|
|
70
|
+
compaction, per-request limits, and non-token execution controls.
|
|
71
|
+
|
|
72
|
+
Unpublished release candidate targeting npm `next`, following published RC.3.
|
|
73
|
+
Fresh protected certification is required before publication. Stable `latest`
|
|
74
|
+
remains 1.0.0.
|
|
75
|
+
|
|
76
|
+
- Make appended command help independent of task/configuration validation, group options with examples, and accept `--name=value` for value options.
|
|
77
|
+
- Add explicit UTF-8 task input through `zhx run -` and `zhx review -`, bounded to 1 MiB and retaining approval requirements.
|
|
78
|
+
- Add atomic personal profile updates with `zhx init --update`, reopen provider/model selection after declining the default profile, and give actionable usage/configuration recovery messages.
|
|
79
|
+
- Share the curated model catalog across CLI and Desktop, with primary/other groups, explicit lifecycle and validation metadata, custom model IDs, and optional HTTPS catalog distribution with cached fallback.
|
|
80
|
+
- Improve the separate Desktop alpha with rendered Markdown, file diffs, conversation navigation and local preferences, accessible panels and controlled external links. Desktop retains its independent private alpha version.
|
|
81
|
+
|
|
82
|
+
## 1.1.0-rc.3 - 2026-09-22
|
|
83
|
+
|
|
84
|
+
Published release candidate on npm `next`. The changes below describe RC.3;
|
|
85
|
+
subsequent work belongs to RC.4. Stable `latest` remains 1.0.0.
|
|
86
|
+
|
|
87
|
+
- Group interactive tool activity into a bounded live line and summaries between assistant messages. Preserve individual failures, check receipts and approval requests; `/verbose` restores event detail.
|
|
88
|
+
- Identify token-budget and step-limit failures without mislabeling them as provider stream failures or exposing arbitrary provider error payloads.
|
|
89
|
+
- Enforce cumulative Qwen token budgets between responses for runs without subagents, including approval resume, without injecting a transport `maxTokens` parameter. An over-budget response cannot execute its requested tools or trigger another call.
|
|
90
|
+
- Organize CLI, runtime, providers, persistence, tools and Desktop integration behind explicit module boundaries, with architecture checks and unchanged public API contracts.
|
|
91
|
+
- Make the packaged conversation smoke select its fixture provider explicitly; onboarding is verified separately.
|
|
92
|
+
- Add release preparation and early metadata validation, retain release tarballs for recovery, and distinguish publication from verification in workflow summaries.
|
|
93
|
+
|
|
94
|
+
## 1.1.0-rc.2 - 2026-09-22
|
|
95
|
+
|
|
96
|
+
Release candidate superseding the unpublished RC.1, targeting npm `next`.
|
|
97
|
+
|
|
98
|
+
- Register the exact candidate's external model pins and reject missing pins before live certification.
|
|
99
|
+
- Preserve historical 1.0 certification checks while allowing later candidates in the shared matrix.
|
|
100
|
+
- Bound the governed benchmark's retained history to the latest correlated tool group so verbose Qwen turns can compact within the existing 12,000-token input ceiling. Approval, isolation and independent verification requirements remain unchanged.
|
|
101
|
+
- Add deterministic coverage for the previous compaction failure and current-version model pin drift.
|
|
102
|
+
|
|
103
|
+
Fresh protected certification is required for this candidate before publication.
|
|
104
|
+
|
|
105
|
+
## 1.1.0-rc.1 - 2026-09-22
|
|
106
|
+
|
|
107
|
+
Release candidate for the next compatible minor release, targeting the `next` channel.
|
|
108
|
+
The latest stable release remains 1.0.0. Desktop has its own private alpha version.
|
|
109
|
+
|
|
110
|
+
### Desktop preview
|
|
111
|
+
|
|
112
|
+
- Add an experimental Electron client with durable conversations, project/worktree
|
|
113
|
+
navigation, model selection, native credential storage and governed approvals.
|
|
114
|
+
- Add recoverable installation and verified update machinery. Production signing,
|
|
115
|
+
notarization and update trust configuration remain pending; automatic updates
|
|
116
|
+
remain disabled in the default alpha build.
|
|
117
|
+
|
|
118
|
+
### Release validation and profile safety
|
|
119
|
+
|
|
120
|
+
- Install the pinned Electron runtime explicitly before macOS native tests, including
|
|
121
|
+
the general validation job; keep other dependency lifecycle scripts disabled.
|
|
122
|
+
- Bind default-profile confirmation to the displayed provider/model so a profile
|
|
123
|
+
changed while the prompt is open cannot redirect the current invocation.
|
|
124
|
+
|
|
125
|
+
### Developer experience and documentation
|
|
126
|
+
|
|
127
|
+
- Keep initial menu and model options visible on asynchronous terminals by preserving
|
|
128
|
+
readline prompt and menu write order; no extra arrow key is required to draw them.
|
|
129
|
+
|
|
130
|
+
- Lead `zhx --help` with everyday actions; add command-specific help and `zhx help all` for the complete reference.
|
|
131
|
+
- Show common slash actions first, retaining full-catalog search and `/help all`. Pending approval controls remain visible in the short help.
|
|
132
|
+
- Shorten onboarding, separate user/integration/maintenance guides, and standardize maintained Desktop guides in English while quoting current UI labels.
|
|
133
|
+
- Exclude maintainer-only documentation from npm using explicit guide entries and validate links inside the packed archive.
|
|
134
|
+
|
|
135
|
+
Existing commands, aliases, machine output and persisted state remain compatible.
|
|
136
|
+
These changes are assigned to 1.1.0-rc.1 and require fresh artifact-bound certification before publication.
|
|
137
|
+
|
|
138
|
+
### Local service and replay
|
|
139
|
+
|
|
140
|
+
- Add a private authenticated Unix transport and Node runtime owner with graceful drain and explicit dead-process recovery.
|
|
141
|
+
- Persist redacted activity with stable event IDs, cursor replay, bounded retention and expired-cursor snapshots.
|
|
142
|
+
- Coordinate approval revisions/expiry and active cancellation across clients; verify crash recovery and a single edit journal receipt against the installed artifact.
|
|
143
|
+
|
|
144
|
+
### Shared client contract
|
|
145
|
+
|
|
146
|
+
- Add an experimental versioned in-process adapter over existing sessions, runs, approvals and checkpoint cancellation. Strict command validation, connection-scoped idempotency and expected revisions are explicit.
|
|
147
|
+
- Add a JSON Schema, integration documentation and an offline reference client tested against the installed package. No service listener, replay stream or multi-client coordination is introduced.
|
|
148
|
+
|
|
149
|
+
### Daily CLI workflow
|
|
150
|
+
|
|
151
|
+
- Add installed-package first-use coverage, recovery guidance and a runnable example.
|
|
152
|
+
- Search project sessions and reconcile durable state and pending approvals before continuation.
|
|
153
|
+
- Inspect attachment limits, retained skill receipts and context compaction; clarify exact approval scope and verification outcomes.
|
|
154
|
+
- Persist per-provider/model usage across child calls and resumed runs. Optional dated pricing and per-run monetary limits block unknown or stale pricing and unknown usage; displayed costs remain estimates.
|
|
155
|
+
- Prepare a frozen two-repository evaluation cohort and installed-artifact pilot driver. Complete the authorized live baseline and pilot (HAR-HU-14, 20): both artifacts scored 6/10; release recommendation remains HOLD.
|
|
156
|
+
|
|
157
|
+
### Console input and streaming
|
|
158
|
+
|
|
159
|
+
- Insert bracketed clipboard content as bounded, editable literal text; prevent
|
|
160
|
+
pasted commands and approval answers from executing accidentally.
|
|
161
|
+
- Suppress input echo while a run is active, preserve drafts across terminal resize,
|
|
162
|
+
and deliver partial streamed lines during provider pauses and on error cleanup.
|
|
163
|
+
- Extend the offline Node PTY demonstration with clipboard safety, cursor editing,
|
|
164
|
+
resize, provider failure and history recovery. JSON/JSONL and persisted state
|
|
165
|
+
contracts are unchanged.
|
|
166
|
+
|
|
167
|
+
### Migration from 1.0.0
|
|
168
|
+
|
|
169
|
+
- Existing CLI commands, JSON/JSONL output, public stable APIs and state format 1
|
|
170
|
+
remain compatible. Back up durable state before testing a prerelease.
|
|
171
|
+
- Local service and shared client APIs remain experimental. Desktop remains a
|
|
172
|
+
separately versioned private alpha, outside the stable CLI/library guarantee.
|
|
173
|
+
- Use the source development workflow until this candidate is published to npm
|
|
174
|
+
`next`; npm `latest` continues to install 1.0.0.
|
|
8
175
|
|
|
9
176
|
## 1.0.0 - 2026-09-20
|
|
10
177
|
|
|
@@ -636,3 +803,19 @@ No configuration, SQLite, approval, or execution-policy migration is required. E
|
|
|
636
803
|
### Added
|
|
637
804
|
|
|
638
805
|
- Initial provider-portable coding harness MVP for Meta, Qwen, and OpenAI.
|
|
806
|
+
|
|
807
|
+
### Experimental local service CLI
|
|
808
|
+
|
|
809
|
+
- Added opt-in `--service` for run/resume/chat and session list/inspect/rename,
|
|
810
|
+
with durable event replay and existing versioned JSON/JSONL documents.
|
|
811
|
+
- Persisted the shared CLI result projection and explicitly bound service run
|
|
812
|
+
admission to host scope. Added CLI/second-client crash recovery in installed smoke.
|
|
813
|
+
|
|
814
|
+
### Experimental desktop chat
|
|
815
|
+
|
|
816
|
+
- Added redacted per-run chat activity with durable prompts, bounded tool snapshots
|
|
817
|
+
and actual check exit codes. Session reads remain available during execution.
|
|
818
|
+
- Preserved CLI JSONL compatibility; desktop strips rich engine/CLI/approval payloads,
|
|
819
|
+
deduplicates replay and reconciles lost responses before allowing another send.
|
|
820
|
+
- Verified packaged macOS chat with duplicate submission, failed check, expired
|
|
821
|
+
snapshot, transport interruption, renderer reload and split-secret fixtures.
|
package/README.md
CHANGED
|
@@ -1,330 +1,76 @@
|
|
|
1
1
|
# Zhivex Harness
|
|
2
2
|
|
|
3
|
-
**
|
|
3
|
+
**Work on your code with an agent. Review consequential actions before approving them.**
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
[](./LICENSE)
|
|
5
|
+
Zhivex Harness is a local terminal assistant and TypeScript library. It supports
|
|
6
|
+
OpenAI, Qwen and Meta, with provisional Gemini support. Conversations and pending
|
|
7
|
+
approvals survive restarts.
|
|
9
8
|
|
|
10
|
-
|
|
9
|
+
This development branch prepares `1.1.0-rc.9` (unpublished), with console, local
|
|
10
|
+
service and Desktop preview improvements. The commands below install stable 1.0.0.
|
|
11
11
|
|
|
12
|
-
|
|
12
|
+
## Quick start
|
|
13
13
|
|
|
14
|
-
|
|
14
|
+
Requires Node.js 22.13.0 or newer, Git and a provider API key.
|
|
15
15
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
Provider choice, MCP, subagents, and containers are useful building blocks. Zhivex Harness focuses on the change-control path that connects them:
|
|
21
|
-
|
|
22
|
-
1. copy an eligible, secret-free repository snapshot into an enforced OCI environment;
|
|
23
|
-
2. execute only approved, allowlisted argv commands without host shell interpolation or container network;
|
|
24
|
-
3. inspect a content- and run-bound patch while the host workspace remains unchanged;
|
|
25
|
-
4. require a separate durable approval before importing that exact patch; and
|
|
26
|
-
5. reject the import if either the reviewed patch or the host preconditions changed.
|
|
27
|
-
|
|
28
|
-
Approvals, leases, idempotency claims, execution bindings, and exactly-once tool journals survive process restarts. Host deletions remain recoverable through quarantine, and operator exports are redacted by default.
|
|
29
|
-
|
|
30
|
-
## Prove the boundary in five minutes
|
|
31
|
-
|
|
32
|
-
The hostile-repository demo creates a disposable fixture containing malicious instructions and a decoy `.env`, then exercises the real OCI, approval, restart, patch-import, ledger, and stale-host boundaries:
|
|
33
|
-
|
|
34
|
-
```bash
|
|
35
|
-
bun install --frozen-lockfile
|
|
36
|
-
docker pull node:24-bookworm-slim
|
|
37
|
-
bun run build
|
|
38
|
-
bun run demo:hostile
|
|
39
|
-
```
|
|
40
|
-
|
|
41
|
-
The expected result is a schema-versioned JSON proof with `secretExcluded`, `networkDenied`, `exactlyOnceJournal`, and `staleHostImportBlocked` all set to `true`. Pass `--keep` to retain the disposable workspace for inspection. The complete scenario and evidence limits are documented in [docs/HOSTILE_REPOSITORY_DEMO.md](./docs/HOSTILE_REPOSITORY_DEMO.md).
|
|
42
|
-
|
|
43
|
-
## What RC.13 adds
|
|
44
|
-
|
|
45
|
-
- explicit personal provider/model profiles through `zhx init` and `--profile`, stored outside the repository without credentials;
|
|
46
|
-
- Tab command completion, previewed multiline tasks, bounded task history, and Alt+Enter input;
|
|
47
|
-
- `/context` inspection and bounded, digest-checked `/attach` excerpts for the next task;
|
|
48
|
-
- Ctrl+C cancellation with runtime cleanup and preserved pending approvals, plus recovery to the prompt after command/provider errors; and
|
|
49
|
-
- terminal-safe Markdown and optional colored diffs, with unsolicited input discarded before approval prompts.
|
|
50
|
-
|
|
51
|
-
See the [RC.13 changelog and migration notes](./CHANGELOG.md#100-rc13---2026-09-03) and [interactive workflow guide](./docs/CLI.md#interactive-daily-workflow). No configuration or store migration from RC.12 is required.
|
|
52
|
-
|
|
53
|
-
Earlier release changes and migrations are recorded in the [changelog](./CHANGELOG.md). Browse the [documentation index](./docs/README.md) for usage, architecture, maintenance, and historical reports.
|
|
54
|
-
|
|
55
|
-
It does not include arbitrary host shell access, `stdio` MCP, permanent deletion, Git writes, a desktop UI, a remote worker, or a managed sandbox service. Without `--execution oci`, shell-class tools remain unavailable. The opt-in `--oci-shell ask` policy exposes approval-bound `sh` only inside OCI. With OCI enabled, repository tools, checks, and enabled subagents share the acquired snapshot; network MCP is rejected because it cannot truthfully satisfy the no-network execution policy.
|
|
56
|
-
|
|
57
|
-
## Requirements
|
|
58
|
-
|
|
59
|
-
- Node.js 22.13.0 or newer. Node 24 LTS is used by the default OCI image and release workflow.
|
|
60
|
-
- Git for repository status and diff inspection.
|
|
61
|
-
- At least one supported provider credential for real model execution.
|
|
62
|
-
- Docker or Podman plus a preloaded image when `--execution oci` is requested.
|
|
63
|
-
|
|
64
|
-
## Installation
|
|
65
|
-
|
|
66
|
-
Run the Node-first `latest` release with an exact version:
|
|
67
|
-
|
|
68
|
-
```bash
|
|
69
|
-
bunx @zhivex-ai/harness@0.11.1 --version
|
|
70
|
-
```
|
|
71
|
-
|
|
72
|
-
To try the published RC.13 candidate on `next`, pin its exact version:
|
|
73
|
-
|
|
74
|
-
```bash
|
|
75
|
-
bunx @zhivex-ai/harness@1.0.0-rc.13 --version
|
|
76
|
-
bunx @zhivex-ai/harness@1.0.0-rc.13 init --profile daily --provider openai
|
|
77
|
-
bunx @zhivex-ai/harness@1.0.0-rc.13 doctor --profile daily
|
|
78
|
-
bunx @zhivex-ai/harness@1.0.0-rc.13 --profile daily "inspect this repository"
|
|
79
|
-
```
|
|
80
|
-
|
|
81
|
-
RC.13 is a prerelease; publication on `next` does not promote it to GA.
|
|
82
|
-
|
|
83
|
-
To exercise the source checkout, contributors use Bun for deterministic repository tooling while the built CLI itself runs on Node:
|
|
84
|
-
|
|
85
|
-
```bash
|
|
86
|
-
bun install --frozen-lockfile
|
|
87
|
-
cp .env.example .env
|
|
88
|
-
bun run dev --version
|
|
89
|
-
```
|
|
90
|
-
|
|
91
|
-
RC.13 includes first-run setup that stores only a provider and model in an explicit personal profile. From a source checkout:
|
|
92
|
-
|
|
93
|
-
```bash
|
|
94
|
-
bun run dev init --profile daily --provider openai
|
|
95
|
-
bun run dev doctor --profile daily
|
|
96
|
-
bun run dev --profile daily "inspect this repository"
|
|
97
|
-
```
|
|
98
|
-
|
|
99
|
-
Installed builds expose the same flow as `zhx init`. Profiles are private user configuration outside the repository, use owner-only permissions, contain no credentials, and are never selected implicitly. CLI flags override the selected profile; the selected profile overrides environment variables; environment variables override built-in defaults.
|
|
100
|
-
|
|
101
|
-
Configure only the providers you plan to use:
|
|
102
|
-
|
|
103
|
-
```dotenv
|
|
104
|
-
OPENAI_API_KEY=...
|
|
105
|
-
MODEL_API_KEY=...
|
|
106
|
-
DASHSCOPE_API_KEY=...
|
|
107
|
-
GEMINI_API_KEY=...
|
|
108
|
-
```
|
|
109
|
-
|
|
110
|
-
`MODEL_API_KEY` is used by the Meta Model API. Qwen also accepts `QWEN_API_KEY`; `DASHSCOPE_API_KEY` takes precedence. Gemini also accepts `GOOGLE_GENERATIVE_AI_API_KEY`.
|
|
111
|
-
|
|
112
|
-
## Diagnose the environment
|
|
113
|
-
|
|
114
|
-
`doctor` is local and does not contact provider endpoints:
|
|
115
|
-
|
|
116
|
-
```bash
|
|
117
|
-
zhx doctor
|
|
118
|
-
zhx doctor --profile daily
|
|
119
|
-
zhx doctor --provider qwen --json
|
|
120
|
-
```
|
|
121
|
-
|
|
122
|
-
For a source checkout, replace `zhivex-harness` with `bun run dev`.
|
|
123
|
-
|
|
124
|
-
## Usage
|
|
125
|
-
|
|
126
|
-
Start the durable console with the ergonomic command, or use the long alias in existing scripts:
|
|
127
|
-
|
|
128
|
-
```bash
|
|
16
|
+
```sh
|
|
17
|
+
npm install -g @zhivex-ai/harness@1.0.0
|
|
18
|
+
cd /path/to/your/project
|
|
129
19
|
zhx
|
|
130
|
-
zhx chat --continue
|
|
131
|
-
zhivex-harness --version
|
|
132
|
-
```
|
|
133
|
-
|
|
134
|
-
Inside the console, `/help` lists `/provider`, `/model`, `/route`, `/status`, `/diff`, `/review`, `/resume`, `/pending`, `/approve`, `/deny`, `/compact`, `/new`, `/rename`, and `/exit`. Tool and step activity is rendered without tool payloads; approval cards sanitize terminal controls and keep governed edit/command payloads fully reviewable.
|
|
135
|
-
|
|
136
|
-
The published RC.13 also adds Tab command completion, `/paste` for previewed
|
|
137
|
-
multiline tasks, `/context` for active project rules/skills, and `/attach <path>` for
|
|
138
|
-
bounded file excerpts. Ctrl+C interrupts active work while retaining the session;
|
|
139
|
-
errors return to the prompt. See the [interactive workflow](./docs/CLI.md#interactive-daily-workflow)
|
|
140
|
-
for attachment limits, approval behavior, and recovery. These source additions are
|
|
141
|
-
not yet published or live-certified.
|
|
142
|
-
|
|
143
|
-
Project context engineering is enabled by default. A root `AGENTS.md` plus an optional `.zhivex/harness.json` can declare bounded context files, rule files, and progressively loaded `SKILL.md` directories. Disable discovery with `--no-project-context` or select another manifest with `--context-config`.
|
|
144
|
-
|
|
145
|
-
Show providers and detected configuration without printing secrets:
|
|
146
|
-
|
|
147
|
-
```bash
|
|
148
|
-
zhx providers
|
|
149
|
-
zhx providers --json
|
|
150
20
|
```
|
|
151
21
|
|
|
152
|
-
|
|
22
|
+
On first use, choose a provider and model, then enter your API key in the hidden
|
|
23
|
+
prompt. Save it in the system keychain (macOS/Linux) or use it only for the current
|
|
24
|
+
CLI session. Existing environment keys take precedence. See [First use](docs/FIRST_USE.md)
|
|
25
|
+
and [Credentials](docs/CREDENTIALS.md) for setup and automation.
|
|
153
26
|
|
|
154
|
-
|
|
155
|
-
zhivex-harness run --provider openai "review the repository and fix the tests"
|
|
156
|
-
zhivex-harness run --provider meta "document the current architecture"
|
|
157
|
-
zhivex-harness run --provider qwen "implement the pending endpoint"
|
|
158
|
-
zhx run --provider gemini "review the proposed implementation"
|
|
159
|
-
```
|
|
27
|
+
Try: “Explain this repository and suggest a small improvement.”
|
|
160
28
|
|
|
161
|
-
|
|
29
|
+
Type `/` for common actions. `/model` changes the model, `/sessions` finds previous
|
|
30
|
+
conversations, and `/diff` shows changes. Review requested actions before approving
|
|
31
|
+
them. Ctrl+C stops active work; it does not undo completed changes.
|
|
162
32
|
|
|
163
|
-
|
|
164
|
-
zhivex-harness run --provider qwen --workspace ../my-app "fix the typecheck errors"
|
|
165
|
-
```
|
|
33
|
+
## A few commands are enough
|
|
166
34
|
|
|
167
|
-
|
|
35
|
+
| Command | Purpose |
|
|
36
|
+
| --- | --- |
|
|
37
|
+
| `zhx` | Open the conversation |
|
|
38
|
+
| `zhx --continue` | Continue the latest conversation |
|
|
39
|
+
| `zhx run "task"` | Run one task for automation |
|
|
40
|
+
| `zhx doctor` | Diagnose local configuration |
|
|
41
|
+
| `zhx --help` | Show the short guide |
|
|
168
42
|
|
|
169
|
-
|
|
170
|
-
zhx chat
|
|
171
|
-
zhx chat --continue
|
|
172
|
-
zhx sessions list
|
|
173
|
-
```
|
|
43
|
+
Use `zhx <command> --help` for command-specific options, or `zhx help all` for the
|
|
44
|
+
complete reference. Existing `zhx chat` and `zhivex-harness` commands remain supported.
|
|
174
45
|
|
|
175
|
-
|
|
46
|
+
## CLI, library or Desktop?
|
|
176
47
|
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
48
|
+
The npm package includes the CLI and TypeScript library. [Desktop](https://github.com/Zhivex/zhivex-harness/blob/main/desktop/README.md)
|
|
49
|
+
is a separate Electron application, currently alpha for macOS Apple Silicon.
|
|
50
|
+
It is not included in npm and has its own build and distribution process. Its local
|
|
51
|
+
package is unsigned and unnotarized; automatic updates are disabled pending production trust setup and validation.
|
|
181
52
|
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
Writes and checks pause for approval. In a non-interactive execution, state is saved in `.zhivex-harness/runs/operations.sqlite`:
|
|
185
|
-
|
|
186
|
-
```bash
|
|
187
|
-
zhivex-harness resume <runId> --approve
|
|
188
|
-
zhivex-harness resume <runId> --deny
|
|
189
|
-
```
|
|
190
|
-
|
|
191
|
-
Duplicate external requests can share a durable run identity:
|
|
192
|
-
|
|
193
|
-
```bash
|
|
194
|
-
zhivex-harness run --idempotency-key issue-482 "fix the reported regression"
|
|
195
|
-
```
|
|
196
|
-
|
|
197
|
-
Operate on runs without loading a provider or requiring its credential:
|
|
198
|
-
|
|
199
|
-
```bash
|
|
200
|
-
zhivex-harness runs list --status waiting_approval
|
|
201
|
-
zhivex-harness runs inspect <runId> --json
|
|
202
|
-
zhivex-harness runs export <runId> --json
|
|
203
|
-
zhivex-harness runs cancel <runId> --reason "superseded"
|
|
204
|
-
zhivex-harness runs cleanup --before 2026-08-01T00:00:00Z
|
|
205
|
-
```
|
|
53
|
+
## Permissions and limits
|
|
206
54
|
|
|
207
|
-
|
|
55
|
+
Edits and checks require approval by default. Files such as `.env`, private keys,
|
|
56
|
+
Git internals and dependency directories are excluded from model exploration.
|
|
57
|
+
The default runtime has no OS isolation and exposes no shell-class tools. Running
|
|
58
|
+
commands in isolation requires an explicitly configured Docker or Podman environment;
|
|
59
|
+
see [Execution environments](docs/EXECUTION_ENVIRONMENTS.md).
|
|
208
60
|
|
|
209
|
-
|
|
61
|
+
Gemini remains provisional. See the [support matrix](docs/SUPPORT_MATRIX.md) and
|
|
62
|
+
[security policy](SECURITY.md) for supported configurations and reporting concerns.
|
|
210
63
|
|
|
211
|
-
|
|
212
|
-
zhivex-harness run --mcp-config examples/mcp-config.json "consult the allowed documentation tools"
|
|
213
|
-
zhivex-harness run --subagent explorer --subagent reviewer "analyze the boundary"
|
|
214
|
-
zhivex-harness review --reviewer explorer --reviewer reviewer --json "review the durable runtime"
|
|
215
|
-
```
|
|
216
|
-
|
|
217
|
-
MCP configuration, capability gates, child budgets, promoted approvals, review groups, migration, and known limits are documented in [docs/EXTENSIBILITY.md](./docs/EXTENSIBILITY.md).
|
|
218
|
-
|
|
219
|
-
`--yes` automatically approves tools with side effects. Use it only inside a disposable or isolated workspace:
|
|
220
|
-
|
|
221
|
-
```bash
|
|
222
|
-
zhivex-harness run --provider openai --yes "apply the change and validate it"
|
|
223
|
-
```
|
|
224
|
-
|
|
225
|
-
Structured automation output uses schema version `1`:
|
|
226
|
-
|
|
227
|
-
```bash
|
|
228
|
-
zhivex-harness run --provider qwen --json "analyze the issue without modifying files"
|
|
229
|
-
zhx run --provider gemini --jsonl "analyze the issue without modifying files"
|
|
230
|
-
```
|
|
231
|
-
|
|
232
|
-
The JSON shapes and exit codes are documented in [docs/CLI.md](./docs/CLI.md).
|
|
233
|
-
|
|
234
|
-
Create a portable change-admission envelope from structured, redacted evidence and the exact patch bytes, then verify it without provider credentials or network access:
|
|
235
|
-
|
|
236
|
-
```bash
|
|
237
|
-
zhx changes create examples/change-envelope-input.json --patch examples/change.patch > change-envelope.json
|
|
238
|
-
zhx changes verify change-envelope.json --patch examples/change.patch
|
|
239
|
-
```
|
|
64
|
+
## Documentation
|
|
240
65
|
|
|
241
|
-
|
|
66
|
+
- **Users:** [First use](docs/FIRST_USE.md), [daily workflow](docs/CLI.md#interactive-daily-workflow), [usage reference](docs/USAGE.md).
|
|
67
|
+
- **Integrators:** [CLI contracts](docs/CLI.md), [extensibility](docs/EXTENSIBILITY.md), [API stability](docs/STABILITY.md).
|
|
68
|
+
- **Contributors:** [Development](https://github.com/Zhivex/zhivex-harness/blob/main/CONTRIBUTING.md) and [maintenance](https://github.com/Zhivex/zhivex-harness/blob/main/docs/MAINTENANCE.md).
|
|
242
69
|
|
|
243
|
-
|
|
70
|
+
[Browse documentation](docs/README.md).
|
|
244
71
|
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
The harness uses a pinned `packageManager` field when present; otherwise it accepts one unambiguous npm, pnpm, Yarn, or Bun lockfile and defaults to npm when neither signal exists. It executes only the selected script and rejects symbolic-link or ambiguous lockfiles plus implicit `pre<script>`/`post<script>` lifecycle hooks.
|
|
252
|
-
|
|
253
|
-
Enable enforced local execution explicitly. The image must already exist locally; the harness never pulls it implicitly:
|
|
254
|
-
|
|
255
|
-
```bash
|
|
256
|
-
docker pull node:24-bookworm-slim
|
|
257
|
-
zhivex-harness doctor --execution oci
|
|
258
|
-
zhivex-harness run --execution oci --yes "inspect, implement, test, review the environment patch, and import it"
|
|
259
|
-
zhivex-harness run --execution oci --oci-shell ask "use a reviewed shell pipeline inside the isolated snapshot"
|
|
260
|
-
```
|
|
261
|
-
|
|
262
|
-
`--yes` approves eligible command execution and the distinct host patch import; it cannot enable a shell whose policy is `deny`. Omit it when a human should review each durable approval. Configuration, threat boundary, cleanup, and certification details are in [docs/EXECUTION_ENVIRONMENTS.md](./docs/EXECUTION_ENVIRONMENTS.md).
|
|
263
|
-
|
|
264
|
-
## Providers and defaults
|
|
265
|
-
|
|
266
|
-
| Provider | Default model | Support in `latest` (`0.11.1`) |
|
|
267
|
-
| --- | --- | --- |
|
|
268
|
-
| Meta | `muse-spark-1.2` | `MODEL_API_KEY` · 0.11.1 release-bound base, delegation, and OCI execution certified |
|
|
269
|
-
| Qwen | `qwen3.8-max` | `DASHSCOPE_API_KEY` or `QWEN_API_KEY` · 0.11.1 release-bound base, delegation, routing, and OCI execution certified |
|
|
270
|
-
| OpenAI | `gpt-5.6-luna` | `OPENAI_API_KEY` · 0.11.1 release-bound base, delegation, routing, and OCI execution certified |
|
|
271
|
-
| Gemini | `gemini-3.6-flash` | `GEMINI_API_KEY` or `GOOGLE_GENERATIVE_AI_API_KEY` · provisional until the harness live matrix passes |
|
|
272
|
-
|
|
273
|
-
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.
|
|
274
|
-
|
|
275
|
-
The exact `v0.11.1` tag passed proposal/approval/restart, bounded delegation, OpenAI-parent/Qwen-reviewer routing, and model-directed OCI execution for Meta `muse-spark-1.2`, Qwen `qwen3.8-max`, and OpenAI `gpt-5.6-luna` on 2026-08-23. Luna remains the OpenAI default, while Terra and Sol remain explicit `--model` selections with older local base evidence only. Controlled and official-SDK MCP interoperability are verified separately and do not imply compatibility with every server or protocol feature. Provider capability claims remain artifact- and date-bound under the [live certification contract](./docs/LIVE_CERTIFICATION.md); credential detection and deterministic tests do not replace real provider evidence.
|
|
276
|
-
|
|
277
|
-
For `next`, the exact `v1.0.0-rc.13` artifact passed protected live certification and all 14 representative cases for each of Meta `muse-spark-1.2`, Qwen `qwen3.8-max`, and OpenAI `gpt-5.6-luna` on 2026-09-08. See the [RC.13 release evidence](./docs/LIVE_CERTIFICATION.md#current-public-status) for the workflow and artifact identity. Gemini remains provisional.
|
|
278
|
-
|
|
279
|
-
## Security boundaries
|
|
280
|
-
|
|
281
|
-
- Every workspace path is resolved against a canonical root.
|
|
282
|
-
- Reads and writes that cross an external symlink are rejected.
|
|
283
|
-
- Dependencies, build output, Git internals, harness state, `.env`, `.npmrc`, and private keys are excluded from model exploration.
|
|
284
|
-
- The model has no generic shell.
|
|
285
|
-
- Only explicitly allowed, declared package scripts can run; the model must provide the exact script text for approval binding.
|
|
286
|
-
- Checks run without automatic `.env` loading and with a reduced environment.
|
|
287
|
-
- Patch application, moves, quarantine, restore, and command execution require interruptible approval.
|
|
288
|
-
- Every edit carries the digest observed during inspection; stale creates and updates fail closed.
|
|
289
|
-
- Existing file modes are preserved and successful replacements are published atomically.
|
|
290
|
-
- Unsafe state roots, protected workspace paths, files, and symlink targets are rejected before a run store is created.
|
|
291
|
-
- Environment values are not injected into prompts, diagnostics, or tool responses.
|
|
292
|
-
- Remote MCP output is bounded, schema-checked, treated as untrusted, and rejected on common prompt-injection directives.
|
|
293
|
-
- Network MCP always pauses for approval; custom read-only annotation trust must be explicit and injected by the host application.
|
|
294
|
-
- Subagent children inherit scope, workspace, cancellation, approval, and store policy while retaining independent budgets and fingerprints.
|
|
295
|
-
- OCI execution binds the durable run to the resolved image identity and enforced policy; resume fails if either changes.
|
|
296
|
-
- Snapshot discovery excludes secrets, Git internals, harness state, dependency trees, and build output. Dependencies may be mounted separately read-only.
|
|
297
|
-
- Untrusted commands receive a quota-backed tmpfs workspace, never a writable host bind; only successful, frozen, validated snapshots replace durable environment state.
|
|
298
|
-
- Container processes receive no provider credentials or arbitrary host environment values, and host changes require a separately approved digest-bound patch import.
|
|
299
|
-
|
|
300
|
-
The default `none` backend provides governance but no OS isolation and therefore exposes no shell-class tool. The local OCI backend enforces the documented container boundary, but it is not a VM or a managed hostile-code sandbox; use a dedicated host or microVM when the container runtime itself is outside the threat model.
|
|
301
|
-
|
|
302
|
-
## Development
|
|
303
|
-
|
|
304
|
-
```bash
|
|
305
|
-
bun run typecheck
|
|
306
|
-
bun run readiness:1.0
|
|
307
|
-
bun test
|
|
308
|
-
bun run build
|
|
309
|
-
bun run evaluate
|
|
310
|
-
bun run benchmark:workspace
|
|
311
|
-
bun run benchmark:workspace -- --files 50000 --repetitions 10 --warmups 2
|
|
312
|
-
bun run benchmark:oci -- --files 1000 --commands 20 --repetitions 10 --warmups 1
|
|
313
|
-
bun run benchmark:safe-fix:ci
|
|
314
|
-
bun run smoke:package
|
|
315
|
-
bun run pack:inspect
|
|
316
|
-
bun run check
|
|
317
|
-
```
|
|
318
|
-
|
|
319
|
-
The workspace benchmark reports topology-only and digest-bound listing separately, plus independent versus batched search with alternating pair order. The OCI benchmark reports environment setup, snapshot/session acquisition, first command, reused commands, mutation, and end-to-end time to first successful command. Both fixtures exclude setup, validate results, use sequential repetitions, and emit host/runtime metadata, nearest-rank p50/p95/p99, and success rates. `--repetitions` and `--warmups` are configurable; host filesystem caches are not flushed, so publish the commit and exact command with any result. Use at least 100 successful samples before treating p99 as representative.
|
|
320
|
-
|
|
321
|
-
The [Time-to-Safe-Fix benchmark](./docs/TIME_TO_SAFE_FIX.md) adds task-level clean/attacked matrices, `safeResolved` scoring, approval/system latency separation, Wilson rate intervals, and matched overhead against a direct profile. Its bundled deterministic smoke validates only the benchmark pipeline. Public capability or safety claims require a real external driver, exact dataset revision, matched model/runtime controls, and disclosed failures.
|
|
322
|
-
|
|
323
|
-
Full generated reports remain local and Git-ignored under `./results/` (source checkout). Commit only digest-verified, sanitized evidence snapshots under [`benchmarks/baselines`](./benchmarks/baselines/).
|
|
324
|
-
|
|
325
|
-
The live gate is opt-in and billable:
|
|
326
|
-
|
|
327
|
-
```bash
|
|
328
|
-
ZHIVEX_HARNESS_LIVE=1 bun run scripts/live-provider-smoke.ts
|
|
329
|
-
ZHIVEX_HARNESS_LIVE=1 bun run smoke:live:routing
|
|
330
|
-
```
|
|
72
|
+
Version `1.0.0` is the current public npm release. Source checkout changes can be
|
|
73
|
+
newer than the published package. Consult the [changelog](CHANGELOG.md) and
|
|
74
|
+
[repository release status](https://raw.githubusercontent.com/Zhivex/zhivex-harness/main/release-status.json)
|
|
75
|
+
for release identity; [release evidence](https://github.com/Zhivex/zhivex-harness/blob/main/docs/LIVE_CERTIFICATION.md)
|
|
76
|
+
records validation scope and limitations.
|
package/SECURITY.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
## Supported versions
|
|
4
4
|
|
|
5
|
-
Security fixes are provided for the latest published `0.
|
|
5
|
+
Security fixes are provided for the latest published `1.0.x` patch. Older minors and private checkpoints are not supported release channels. Registry integrity and provenance do not substitute for the separate provider and execution evidence recorded in [docs/LIVE_CERTIFICATION.md](https://github.com/Zhivex/zhivex-harness/blob/main/docs/LIVE_CERTIFICATION.md).
|
|
6
6
|
|
|
7
7
|
## Reporting a vulnerability
|
|
8
8
|
|
package/SUPPORT.md
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
# Support
|
|
2
2
|
|
|
3
|
-
Zhivex Harness `0.
|
|
3
|
+
Zhivex Harness `1.0.x` is the latest supported Node-first CLI and TypeScript library. Stable 1.x contracts follow [the stability policy](./docs/STABILITY.md); incompatible changes require a major release except documented urgent security corrections. Beta and experimental surfaces retain their declared policies. The mutable machine-readable public release state is recorded in the repository [release-status.json](https://raw.githubusercontent.com/Zhivex/zhivex-harness/main/release-status.json), outside immutable npm artifacts.
|
|
4
4
|
|
|
5
|
-
The
|
|
5
|
+
The 1.0 support scope is tracked in the [machine-readable support matrix](./docs/support-matrix.json) and its [human-readable view](./docs/SUPPORT_MATRIX.md). Compatibility and removals follow [DEPRECATIONS.md](./docs/DEPRECATIONS.md) for the published 1.x line.
|
|
6
6
|
|
|
7
7
|
## Supported baseline
|
|
8
8
|
|
|
@@ -13,7 +13,11 @@ The detailed 1.0 target is tracked in the [machine-readable support matrix](./do
|
|
|
13
13
|
- the provider/model combinations marked certified in the package documentation; and
|
|
14
14
|
- HTTPS or explicitly allowed loopback-HTTP MCP endpoints using the documented bounded JSON-RPC subset.
|
|
15
15
|
|
|
16
|
-
Only the most recent published `0.
|
|
16
|
+
Only the most recent published `1.0.x` patch receives routine fixes. The exact `v1.0.0` tag passed protected release-bound base, orchestration, routing and model-directed execution for Meta, Qwen and OpenAI on 2026-09-20; the complete representative matrix passed on its authorized second attempt. Gemini remains provisional until its complete harness live matrix passes against an exact release candidate. Live provider evidence is account-, model-, endpoint-, artifact-, and date-dependent; see [docs/LIVE_CERTIFICATION.md](https://github.com/Zhivex/zhivex-harness/blob/main/docs/LIVE_CERTIFICATION.md).
|
|
17
|
+
|
|
18
|
+
## Installation diagnostics
|
|
19
|
+
|
|
20
|
+
Follow the [stable installation commands](./README.md#installation) or [isolated Bun example](./examples/README.md). Run `zhx --version`, `zhx --help`, and `zhx doctor` before reporting an installation issue. Doctor is local: a missing provider credential produces a diagnostic failure until that credential is configured. Include the version, OS, Node/Bun versions and sanitized diagnostics in a report; never include keys or your `.env` file.
|
|
17
21
|
|
|
18
22
|
## Support channels
|
|
19
23
|
|