@zhivex-ai/harness 1.3.0 → 1.4.0-rc.6
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 +56 -0
- package/README.md +30 -8
- package/SECURITY.md +1 -1
- package/SUPPORT.md +2 -2
- package/contracts/engine-api.json +70 -0
- package/contracts/public-api.json +162 -0
- package/contracts/stable-api-signatures.json +9 -9
- package/dist/acp-cli.js +38 -12
- package/dist/cli/arguments.d.ts +5 -1
- package/dist/cli/memory.d.ts +2 -0
- package/dist/{cli-entry-bx3vjw7h.js → cli-entry-4k1cf0m3.js} +38 -12
- package/dist/{cli-entry-1gfg3brj.js → cli-entry-9c2k0zwz.js} +1086 -446
- package/dist/{cli-etsmtst3.js → cli-s1rs15vv.js} +136 -24
- package/dist/cli.js +2 -2
- package/dist/client/check-evidence.d.ts +17 -0
- package/dist/client/run-document.d.ts +12 -0
- package/dist/compat/cli-options.d.ts +12 -1
- package/dist/compat/code-support.d.ts +4 -0
- package/dist/compat/code-support.js +12 -4
- package/dist/context/compaction.d.ts +5 -0
- package/dist/context/project-memory-context.d.ts +6 -0
- package/dist/context/task-memory.d.ts +33 -1
- package/dist/engine/acp.js +8 -8
- package/dist/engine/client.js +7 -7
- package/dist/engine/desktop-state-v1.js +5 -5
- package/dist/engine/index.d.ts +4 -0
- package/dist/engine/index.js +88 -11
- package/dist/engine/mcp-stdio-v1.js +4 -4
- package/dist/engine/service.js +8 -8
- package/dist/hostile-repository-demo.js +1260 -712
- package/dist/{index-azmwjp95.js → index-0g939pfs.js} +13 -12
- package/dist/{index-6m08wvab.js → index-2tgb2b4e.js} +3 -3
- package/dist/{index-w2sj0wkw.js → index-49ys3s4q.js} +64 -14
- package/dist/{index-hnaxfpb5.js → index-4j1h4j8c.js} +137 -42
- package/dist/{index-8zzhggxv.js → index-a1q355va.js} +125 -2
- package/dist/{index-8vm2m34s.js → index-dj5z774k.js} +18 -2
- package/dist/{index-z0qxmkm2.js → index-e6r04a18.js} +1 -1
- package/dist/{index-yb239ghk.js → index-r0tdj04h.js} +21 -6
- package/dist/{index-h0mqx2ed.js → index-rd0s3gqj.js} +300 -4
- package/dist/{index-42gp2hy8.js → index-vtqfjnab.js} +98 -27
- package/dist/{index-2jrdcj6b.js → index-wq2tax80.js} +15 -1
- package/dist/{index-a97bezbz.js → index-z6br6qdn.js} +44 -23
- package/dist/index.js +11 -11
- package/dist/persistence/project-memory-command.d.ts +11 -0
- package/dist/persistence/project-memory.d.ts +109 -0
- package/dist/persistence/sdk-store-identity.d.ts +4 -0
- package/dist/persistence/sessions.d.ts +4 -0
- package/dist/runtime/error-diagnostics.d.ts +35 -0
- package/dist/runtime/harness.d.ts +5 -1
- package/dist/runtime/run-interruption.d.ts +1 -1
- package/dist/runtime/runtime-checkpoints.d.ts +3 -0
- package/dist/runtime/task-acceptance-native.d.ts +10 -0
- package/dist/runtime/time-to-safe-fix.d.ts +35 -0
- package/dist/service-cli.js +8 -8
- package/dist/{service-client-cli-3365rfav.js → service-client-cli-b52c67hx.js} +2 -2
- package/dist/verify-historical-migrations.js +1021 -456
- package/dist/zhx.js +2 -2
- package/docs/CLI.md +4 -0
- package/docs/CLIENT_PROTOCOL.md +10 -0
- package/docs/CODE_RELEASE.md +136 -19
- package/docs/CONTEXT_ENGINEERING.md +25 -0
- package/docs/DURABLE_OPERATIONS.md +60 -1
- package/docs/ENGINE_API.md +23 -9
- package/docs/EXTENSIBILITY.md +1 -1
- package/docs/FIRST_USE.md +6 -6
- package/docs/LOCAL_SERVICE.md +10 -4
- package/docs/PROJECT_MEMORY.md +157 -0
- package/docs/README.md +2 -0
- package/docs/STABILITY.md +1 -1
- package/docs/WORKSPACE_CHECKPOINTS.md +11 -1
- package/evaluations/representative-assembly-matrix.json +55 -1
- package/examples/README.md +4 -4
- package/package.json +12 -11
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
# Project memory (experimental, RC candidate)
|
|
2
|
+
|
|
3
|
+
Project memory keeps explicit operator notes across separate sessions. It is
|
|
4
|
+
local, inspectable and correctable. No provider calls, external database,
|
|
5
|
+
credentials or integrations are needed to manage it. Suggestions are never
|
|
6
|
+
generated automatically; hosts may submit a suggestion for operator review.
|
|
7
|
+
|
|
8
|
+
## CLI
|
|
9
|
+
|
|
10
|
+
Use `zhx` or `zhivex-code` with Harness 1.4.0-rc.6 (Code 0.3.0-rc.6), pending publication. Commands
|
|
11
|
+
print bounded JSON, including the selected workspace/scope hashes. Quote content
|
|
12
|
+
as one argument. Memory commands do not start a model or read credentials.
|
|
13
|
+
|
|
14
|
+
```sh
|
|
15
|
+
zhx memory remember "Database migrations use SQLite" --source "Operator decision"
|
|
16
|
+
zhx memory list
|
|
17
|
+
zhx memory read <id>
|
|
18
|
+
zhx memory update <id> <revision> "Database migrations need explicit review"
|
|
19
|
+
zhx memory forget <id> <revision>
|
|
20
|
+
zhx memory suggest "Candidate database convention" --source "Model suggestion, reviewed separately"
|
|
21
|
+
zhx memory read <suggestion-id>
|
|
22
|
+
zhx memory accept <suggestion-id> <reviewed-revision>
|
|
23
|
+
zhx memory context "database migrations"
|
|
24
|
+
zhx memory disable
|
|
25
|
+
zhx memory enable
|
|
26
|
+
zhx memory clear
|
|
27
|
+
zhx run --no-memory "Inspect database migrations"
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
`remember` and `update` are explicit operator writes. `suggest` creates a pending
|
|
31
|
+
record; editing it leaves it pending. `accept` requires the exact revision that
|
|
32
|
+
the operator reviewed. No model tool can remember, update, accept or forget a
|
|
33
|
+
record. Host applications must keep these write operations behind their own
|
|
34
|
+
operator interface; an API call is not proof of human consent. `--source` is a
|
|
35
|
+
user-supplied provenance label, not a verified citation or execution receipt.
|
|
36
|
+
Records retain origin, creation/update/review timestamps and revision. API writes
|
|
37
|
+
can specify `expiresAt`; expired entries remain inspectable but are not retrieved.
|
|
38
|
+
|
|
39
|
+
`disable` persists opt-out for this project and scope and blocks writes/acceptance.
|
|
40
|
+
Read, list, forget and clear remain available. `clear` removes all pending and
|
|
41
|
+
accepted entries while preserving the opt-out setting. `--no-memory` disables
|
|
42
|
+
curated retrieval and SDK memory loading/capture for one local run/chat/resume
|
|
43
|
+
invocation. It does not remove messages already in a resumed run's history.
|
|
44
|
+
Service mode does not accept this flag: the service host owns runtime configuration.
|
|
45
|
+
|
|
46
|
+
## Scope and bounds
|
|
47
|
+
|
|
48
|
+
Scope always includes the canonical workspace directory and the existing
|
|
49
|
+
tenant/user/namespace fields. Existing `--workspace`, `--state-dir`, `--tenant`,
|
|
50
|
+
`--user` and `--namespace` flags select it explicitly. The default namespace is
|
|
51
|
+
already workspace-derived. Even with a shared state directory and the same
|
|
52
|
+
explicit namespace, separate workspace directories remain isolated. A renamed
|
|
53
|
+
or copied project gets a different binding; there is no automatic merge, global
|
|
54
|
+
scope, Git-remote identity inference or cross-user permission inference. Directory
|
|
55
|
+
symlink aliases of the same canonical workspace use the same project. These
|
|
56
|
+
scope labels are host-owned selectors, not authentication: users with access to
|
|
57
|
+
the same OS-owned database can edit it directly.
|
|
58
|
+
|
|
59
|
+
| Bound | Limit |
|
|
60
|
+
| --- | --- |
|
|
61
|
+
| Accepted and pending entries together | 128 |
|
|
62
|
+
| Entry content | 4,096 UTF-8 bytes |
|
|
63
|
+
| Provenance label | 512 UTF-8 bytes |
|
|
64
|
+
| Current document | 256 KiB |
|
|
65
|
+
| Retrieved entries per model request | 3 |
|
|
66
|
+
| Complete rendered context, including metadata | 6,000 UTF-8 bytes |
|
|
67
|
+
| Freshness review interval | 30 days |
|
|
68
|
+
|
|
69
|
+
Retrieval ranks literal, case-insensitive query terms against content; ties use
|
|
70
|
+
update time and ID. It has no embeddings or semantic recall guarantee. Short
|
|
71
|
+
terms and a small English stop list are ignored. Only matching accepted entries
|
|
72
|
+
are selected. Entire entries that exceed the remaining budget are skipped.
|
|
73
|
+
`memory context "query"` exposes exactly that projection and its byte count.
|
|
74
|
+
Stale entries are labelled; expiry excludes them. Updating a reviewed entry
|
|
75
|
+
refreshes its review time. Byte limits are hard bounds, not exact model token
|
|
76
|
+
counts; the existing overall runtime token budget still applies. Empty memory
|
|
77
|
+
adds no model context.
|
|
78
|
+
|
|
79
|
+
## Engine API and trust boundary
|
|
80
|
+
|
|
81
|
+
```ts
|
|
82
|
+
import { openHarnessProjectMemory } from "@zhivex-ai/harness/engine";
|
|
83
|
+
const memory = await openHarnessProjectMemory({ workspace, stateDirectory, scope });
|
|
84
|
+
try {
|
|
85
|
+
const note = memory.remember({ content: "Use reviewed migrations", source: "Operator" });
|
|
86
|
+
memory.update(note.id, note.revision, { content: "Review SQLite migrations", source: "Operator correction" });
|
|
87
|
+
console.log(memory.list(), memory.retrieve("SQLite migrations"));
|
|
88
|
+
} finally { memory.close(); }
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
`openHarnessProjectMemory`, its types, constants and the host command dispatcher
|
|
92
|
+
are experimental `/engine` additions. No client protocol commands or remote
|
|
93
|
+
service endpoints are added. Local CLI hosts explicitly enable curated project memory and project relevant
|
|
94
|
+
notes on every model request, including resumed runs. Engine hosts opt in with
|
|
95
|
+
`createHarness({ projectMemory: true, ... })`. Omitting the option preserves the
|
|
96
|
+
historical SDK memory integration and opens no curated store. Explicit `false`
|
|
97
|
+
disables both curated and SDK memory, including caller-supplied `memory`.
|
|
98
|
+
These rules also apply to caller-supplied run stores. With `true` or omission,
|
|
99
|
+
caller-supplied SDK `memory` remains an explicit host integration.
|
|
100
|
+
|
|
101
|
+
Memory reaches the model in a labelled user-context message before the current
|
|
102
|
+
user request, never as system instructions. The projection is ephemeral and is
|
|
103
|
+
not appended to durable run messages. It cannot grant approvals, change execution
|
|
104
|
+
or filesystem permissions, bypass tool policy, certify checks, or create skills.
|
|
105
|
+
Runtime approval checks still apply even when a remembered note claims authority.
|
|
106
|
+
This is an enforced separation of permission state; a model can still be influenced
|
|
107
|
+
by malicious text and must not be assumed immune to prompt injection.
|
|
108
|
+
|
|
109
|
+
Only explicit content is persisted. Tool output, repository files, conversation
|
|
110
|
+
summaries and model responses are not silently converted into curated memory.
|
|
111
|
+
Known secret patterns are rejected and the existing host secret guard still
|
|
112
|
+
applies. Pattern checks are best effort: they can miss secrets or reject innocent
|
|
113
|
+
text. Do not store credentials or private material you do not want retained.
|
|
114
|
+
|
|
115
|
+
## Storage, deletion and compatibility
|
|
116
|
+
|
|
117
|
+
Memory reuses `operations.sqlite` and the SDK's existing `zhivex_agent_memory`
|
|
118
|
+
table with a fully project/scope-bound key outside the SDK's scoped run/agent key
|
|
119
|
+
namespace. Its leading colon cannot match a nonempty URI-encoded SDK namespace,
|
|
120
|
+
regardless of the run or agent ID. A versioned envelope in the existing row format
|
|
121
|
+
holds current records and the enabled setting. There is no
|
|
122
|
+
second memory database or vector store. File-backed run hosts use the same SQLite
|
|
123
|
+
state index that already serves sessions. Writes use SQLite transactions and
|
|
124
|
+
expected revisions so concurrent edits cannot silently replace newer records.
|
|
125
|
+
|
|
126
|
+
Forget and clear remove content from the active row; earlier revisions and
|
|
127
|
+
deleted-content tombstones are not retained by this feature. SQLite secure-delete
|
|
128
|
+
is enabled for writes, but WAL pages, filesystem snapshots and previous backups
|
|
129
|
+
can still retain bytes. This is not forensic erasure. Existing run histories,
|
|
130
|
+
legacy SDK memory rows, exported state, host logs and model/provider transcripts
|
|
131
|
+
have separate retention. If a model quotes a memory in its response, that quote
|
|
132
|
+
may enter run history. Deleting a memory does not rewrite those histories.
|
|
133
|
+
Explicitly importing an older backup can restore a previously forgotten note.
|
|
134
|
+
|
|
135
|
+
New state exports include the bound project document using the existing memory
|
|
136
|
+
record shape. Imports validate the envelope/binding, preserve opt-out, and reject
|
|
137
|
+
different destination content; identical imports remain idempotent. Historical
|
|
138
|
+
v1 backups without project memory still import. Older importers reject a backup
|
|
139
|
+
with the new reserved record because it is not a run-bound SDK memory record;
|
|
140
|
+
use the next-version engine to restore such backups. Whole-database host snapshots
|
|
141
|
+
already include the row. There is no configuration or SQL table schema migration.
|
|
142
|
+
|
|
143
|
+
Legacy automatic last-assistant SDK records are not promoted into curated memory.
|
|
144
|
+
The stable engine default preserves its historical SDK memory integration.
|
|
145
|
+
Explicit curated mode, including local CLI hosts, stops automatic last-assistant
|
|
146
|
+
capture; caller-provided SDK memory remains supported unless memory is explicitly
|
|
147
|
+
disabled. The API additions can ship in a future Harness minor release with a
|
|
148
|
+
matched next Code release and
|
|
149
|
+
updated exact engine dependency. Any broader removal of the stable SDK memory
|
|
150
|
+
default would require a major release under [API stability](STABILITY.md). Candidate package versions remain Harness
|
|
151
|
+
1.3.0 / Code 0.2.0 for development only: they are not publishable replacements for
|
|
152
|
+
the already released artifacts. Release preparation must select new versions,
|
|
153
|
+
update the Code pin and rerun the release gates. Nothing in this change publishes
|
|
154
|
+
a version.
|
|
155
|
+
|
|
156
|
+
No terminal layout, menu or visual design changes are included. A future `/memory`
|
|
157
|
+
console flow needs coordination with the separate TUI audit/proposals task.
|
package/docs/README.md
CHANGED
|
@@ -40,3 +40,5 @@ Primary guides are maintained in English. Historical reports preserve their orig
|
|
|
40
40
|
language and evidence. Maintainer procedures and reports remain in the repository
|
|
41
41
|
and are excluded from the npm package. Published validation applies to the exact
|
|
42
42
|
release artifact, not automatically to later source changes.
|
|
43
|
+
|
|
44
|
+
- [Project memory](PROJECT_MEMORY.md): experimental explicit notes, review, retrieval budgets and deletion semantics.
|
package/docs/STABILITY.md
CHANGED
|
@@ -4,7 +4,7 @@ The additive [engine entrypoints](ENGINE_API.md) are enumerated in
|
|
|
4
4
|
[`../contracts/engine-api.json`](../contracts/engine-api.json). Aliases preserve
|
|
5
5
|
their existing root tiers; newly exposed helpers have explicit tiers. The root
|
|
6
6
|
compatibility surface remains unchanged. These entrypoints are source changes
|
|
7
|
-
for the
|
|
7
|
+
for the published 1.3.0 release and were available in the published RC7; they are absent from registry 1.2.0. Stable package numbering does not upgrade any export tier.
|
|
8
8
|
|
|
9
9
|
[`../contracts/public-api.json`](../contracts/public-api.json) is the machine-checked 1.0 baseline for the package root, binaries, CLI commands/subcommands, exit codes, and document schemas. Every runtime and type export is present in the snapshot and belongs to exactly one explicit tier. Exports listed as stable form the intended 1.x compatibility surface; Time-to-Safe-Fix exports are experimental; the explicitly listed beta exports may evolve under the policy below.
|
|
10
10
|
|
|
@@ -24,4 +24,14 @@ After interruption in `applying`, retry checks every captured file. If all have
|
|
|
24
24
|
|
|
25
25
|
There is no single transaction spanning SQLite and filesystem updates. Journaling exposes that boundary and makes recovery conservative. An interrupted partial filesystem update is detected, not automatically rolled back.
|
|
26
26
|
|
|
27
|
-
|
|
27
|
+
## Reviewed retention
|
|
28
|
+
|
|
29
|
+
Snapshot storage is bounded to 100 records per workspace/scope (captures and restores combined), 2 MiB per record. There is no automatic eviction. The existing host API supports explicit reviewed removal of stored checkpoint records and completed restore records:
|
|
30
|
+
|
|
31
|
+
1. Call `prepareRetention({ checkpointIds, completedRestoreIds })` with the exact selected record IDs. It returns the normalized `selection`, affected `records`, record counts, serialized bytes removed and a `planId` bound to the complete scoped inventory.
|
|
32
|
+
2. Present that plan to the operator and enforce explicit review in the integrating host. Possession of the plan ID does not itself grant authorization.
|
|
33
|
+
3. Call `applyRetention(plan.selection, plan.planId)` to revalidate the inventory and remove the reviewed records in one SQLite transaction under the workspace mutation lock.
|
|
34
|
+
|
|
35
|
+
Pending or unknown restore evidence cannot be removed. A checkpoint referenced by a retained restore operation cannot be removed; completed referencing operations must be included in the reviewed selection or removed first. Inventory changes invalidate the plan, and a failure rolls back the entire selected database removal. Retention changes neither workspace files nor conversation sessions. It does not provide general filesystem deletion or repository rollback.
|
|
36
|
+
|
|
37
|
+
Portable state export/import preserves captures and completed restore records with workspace/scope and conversation lineage validation. Unfinished restore operations block export and import because their filesystem recovery state and reviewed authorization are local to the original database. Older bundles without checkpoint records remain readable. Close the checkpoint store before state maintenance or update operations.
|
|
@@ -53,7 +53,13 @@
|
|
|
53
53
|
"v1.3.0-rc.5",
|
|
54
54
|
"v1.3.0-rc.6",
|
|
55
55
|
"v1.3.0-rc.7",
|
|
56
|
-
"v1.3.0"
|
|
56
|
+
"v1.3.0",
|
|
57
|
+
"v1.4.0-rc.1",
|
|
58
|
+
"v1.4.0-rc.2",
|
|
59
|
+
"v1.4.0-rc.3",
|
|
60
|
+
"v1.4.0-rc.4",
|
|
61
|
+
"v1.4.0-rc.5",
|
|
62
|
+
"v1.4.0-rc.6"
|
|
57
63
|
],
|
|
58
64
|
"expectedModels": [
|
|
59
65
|
{
|
|
@@ -471,6 +477,54 @@
|
|
|
471
477
|
"qwen": "qwen3.8-flash",
|
|
472
478
|
"openai": "gpt-6-luna"
|
|
473
479
|
}
|
|
480
|
+
},
|
|
481
|
+
{
|
|
482
|
+
"releaseTag": "v1.4.0-rc.1",
|
|
483
|
+
"models": {
|
|
484
|
+
"meta": "muse-spark-1.3-contributor",
|
|
485
|
+
"qwen": "qwen3.8-flash",
|
|
486
|
+
"openai": "gpt-6-luna"
|
|
487
|
+
}
|
|
488
|
+
},
|
|
489
|
+
{
|
|
490
|
+
"releaseTag": "v1.4.0-rc.2",
|
|
491
|
+
"models": {
|
|
492
|
+
"meta": "muse-spark-1.3-contributor",
|
|
493
|
+
"qwen": "qwen3.8-flash",
|
|
494
|
+
"openai": "gpt-6-luna"
|
|
495
|
+
}
|
|
496
|
+
},
|
|
497
|
+
{
|
|
498
|
+
"releaseTag": "v1.4.0-rc.3",
|
|
499
|
+
"models": {
|
|
500
|
+
"meta": "muse-spark-1.3-contributor",
|
|
501
|
+
"qwen": "qwen3.8-flash",
|
|
502
|
+
"openai": "gpt-6-luna"
|
|
503
|
+
}
|
|
504
|
+
},
|
|
505
|
+
{
|
|
506
|
+
"releaseTag": "v1.4.0-rc.4",
|
|
507
|
+
"models": {
|
|
508
|
+
"meta": "muse-spark-1.3-contributor",
|
|
509
|
+
"qwen": "qwen3.8-flash",
|
|
510
|
+
"openai": "gpt-6-luna"
|
|
511
|
+
}
|
|
512
|
+
},
|
|
513
|
+
{
|
|
514
|
+
"releaseTag": "v1.4.0-rc.5",
|
|
515
|
+
"models": {
|
|
516
|
+
"meta": "muse-spark-1.3-contributor",
|
|
517
|
+
"qwen": "qwen3.8-flash",
|
|
518
|
+
"openai": "gpt-6-luna"
|
|
519
|
+
}
|
|
520
|
+
},
|
|
521
|
+
{
|
|
522
|
+
"releaseTag": "v1.4.0-rc.6",
|
|
523
|
+
"models": {
|
|
524
|
+
"meta": "muse-spark-1.3-contributor",
|
|
525
|
+
"qwen": "qwen3.8-flash",
|
|
526
|
+
"openai": "gpt-6-luna"
|
|
527
|
+
}
|
|
474
528
|
}
|
|
475
529
|
],
|
|
476
530
|
"expectedCases": [
|
package/examples/README.md
CHANGED
|
@@ -1,20 +1,20 @@
|
|
|
1
|
-
# Examples for Zhivex Harness 1.
|
|
1
|
+
# Examples for Zhivex Harness 1.3
|
|
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
|
|
5
|
+
Requirements: Bun 1.4.0+, Node.js 22.13.0+, and Git on macOS or Linux. After protected RC publication, this installs the 1.4.0-rc.6 candidate 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.4.0-rc.6
|
|
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.4.0-rc.6`; 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#installation), 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.4.0-rc.6",
|
|
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",
|
|
@@ -135,7 +135,8 @@
|
|
|
135
135
|
"docs/adr/0002-isolated-mcp-stdio.md",
|
|
136
136
|
"docs/VERTEX.md",
|
|
137
137
|
"docs/TOOL_POLICY.md",
|
|
138
|
-
"docs/fixtures/mcp-stdio-contract-v1.json"
|
|
138
|
+
"docs/fixtures/mcp-stdio-contract-v1.json",
|
|
139
|
+
"docs/PROJECT_MEMORY.md"
|
|
139
140
|
],
|
|
140
141
|
"scripts": {
|
|
141
142
|
"models:check": "bun run scripts/validate-model-catalog.ts",
|
|
@@ -204,22 +205,22 @@
|
|
|
204
205
|
"smoke:mcp:installed": "bun run build && bun scripts/mcp-installed-smoke.ts"
|
|
205
206
|
},
|
|
206
207
|
"dependencies": {
|
|
207
|
-
"@zhivex-ai/agents": "1.10.
|
|
208
|
-
"@zhivex-ai/anthropic": "0.13.
|
|
209
|
-
"@zhivex-ai/core": "1.
|
|
208
|
+
"@zhivex-ai/agents": "1.10.3",
|
|
209
|
+
"@zhivex-ai/anthropic": "0.13.2",
|
|
210
|
+
"@zhivex-ai/core": "1.30.1",
|
|
210
211
|
"@zhivex-ai/gemini": "0.13.0",
|
|
211
|
-
"@zhivex-ai/meta": "0.2.
|
|
212
|
-
"@zhivex-ai/openai": "0.
|
|
213
|
-
"@zhivex-ai/qwen": "0.16.
|
|
214
|
-
"@zhivex-ai/vertex": "1.2.
|
|
212
|
+
"@zhivex-ai/meta": "0.2.9",
|
|
213
|
+
"@zhivex-ai/openai": "0.14.1",
|
|
214
|
+
"@zhivex-ai/qwen": "0.16.4",
|
|
215
|
+
"@zhivex-ai/vertex": "1.2.4",
|
|
215
216
|
"google-auth-library": "11.1.0",
|
|
216
217
|
"zod": "4.6.5"
|
|
217
218
|
},
|
|
218
219
|
"overrides": {
|
|
219
|
-
"@zhivex-ai/core": "1.
|
|
220
|
+
"@zhivex-ai/core": "1.30.1"
|
|
220
221
|
},
|
|
221
222
|
"devDependencies": {
|
|
222
|
-
"@agentclientprotocol/sdk": "1.
|
|
223
|
+
"@agentclientprotocol/sdk": "1.7.0",
|
|
223
224
|
"@modelcontextprotocol/server": "2.2.0",
|
|
224
225
|
"@types/bun": "1.4.2",
|
|
225
226
|
"@types/node": "^26.6.3",
|