@harness-mix/cli 0.2.3 → 0.3.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 +24 -0
- package/README.md +469 -467
- package/docs/harness-management.md +1 -1
- package/docs/multi-agent-collaboration.md +3 -1
- package/docs/native-acp.md +138 -127
- package/output/native-build/desktop-controller.mjs +1 -1
- package/output/native-build/renderer-extension.js +172 -23
- package/package.json +13 -9
- package/scripts/acp-image-test.cjs +69 -0
- package/scripts/adapters-test.cjs +25 -0
- package/scripts/antigravity-adapter-test.cjs +647 -626
- package/scripts/codex-accounts-test.cjs +34 -0
- package/scripts/codex-adapter-test.cjs +238 -127
- package/scripts/collaboration-test.cjs +577 -262
- package/scripts/collaboration-ui-smoke.cjs +25 -3
- package/scripts/e2e-delegate.cjs +1 -1
- package/scripts/e2e-hermes-image.cjs +60 -0
- package/scripts/jsonl-stdin-test.cjs +40 -31
- package/scripts/kiro-cursor-adapters-test.cjs +124 -100
- package/scripts/native-acp-depth-test.cjs +30 -5
- package/scripts/native-update-apply-test.cjs +269 -215
- package/scripts/native-update.cjs +78 -0
- package/scripts/native-vendor-adapters-test.cjs +196 -154
- package/scripts/openclaw-adapter-test.cjs +121 -3
- package/scripts/openclaw-mcp-probe.cjs +100 -0
- package/scripts/openclaw-mcp-tool-probe.cjs +55 -0
- package/scripts/openclaw-thinking-probe.cjs +73 -0
- package/scripts/salvage-rollout-writes.cjs +72 -0
- package/scripts/storage-verification-test.cjs +11 -0
- package/scripts/zcode-adapter-test.cjs +329 -0
- package/scripts/zcode-live-probe.cjs +66 -0
- package/src/main/adapters/antigravity.js +1428 -1418
- package/src/main/adapters/claude.js +15 -7
- package/src/main/adapters/codex-app-server.js +29 -11
- package/src/main/adapters/codex.js +690 -649
- package/src/main/adapters/native-acp-command.js +51 -48
- package/src/main/adapters/native-acp.js +47 -12
- package/src/main/adapters/omp.js +7 -2
- package/src/main/adapters/openclaw.js +534 -343
- package/src/main/adapters/pi-family.js +35 -8
- package/src/main/adapters/qoder.js +12 -8
- package/src/main/adapters/zcode.js +925 -10
- package/src/main/host/collaboration-tools.js +1 -1
- package/src/main/host/collaboration.js +971 -714
- package/src/main/host/jsonl.js +130 -120
- package/src/main/host/runtime.js +9 -3
- package/src/main/host/verification-gates.js +14 -2
- package/src/main/native/codex-accounts.js +15 -4
- package/src/main/native/config.js +9 -9
- package/src/main/native/launcher.js +252 -237
- package/src/main/native/process-utils.js +157 -57
- package/src/main/native/protocol.js +1227 -1187
- package/src/main/native/update-state.js +123 -110
- package/src/main/native/updater.js +460 -394
- package/src/native-ui/desktop-control/dist/renderer-cdp-control-session.js +3 -1
- package/src/native-ui/desktop-control/dist/renderer-cdp-control-session.js.map +1 -1
- package/src/native-ui/desktop-control/dist/tsconfig.tsbuildinfo +1 -1
- package/src/native-ui/desktop-control/src/renderer-cdp-control-session.ts +358 -358
- package/src/native-ui/renderer-extension/dist/types/renderer-binding-probe.d.ts.map +1 -1
- package/src/native-ui/renderer-extension/dist/types/renderer-collab-cards.d.ts +1 -0
- package/src/native-ui/renderer-extension/dist/types/renderer-collab-cards.d.ts.map +1 -1
- package/src/native-ui/renderer-extension/dist/types/renderer-model-client.d.ts +29 -0
- package/src/native-ui/renderer-extension/dist/types/renderer-model-client.d.ts.map +1 -1
- package/src/native-ui/renderer-extension/dist/types/renderer-team-cards.d.ts +4 -0
- package/src/native-ui/renderer-extension/dist/types/renderer-team-cards.d.ts.map +1 -1
- package/src/native-ui/renderer-extension/dist/types/tsconfig.tsbuildinfo +1 -1
- package/src/native-ui/renderer-extension/src/renderer-binding-probe.ts +3224 -3181
- package/src/native-ui/renderer-extension/src/renderer-collab-cards.ts +25 -0
- package/src/native-ui/renderer-extension/src/renderer-model-client.ts +27 -0
- package/src/native-ui/renderer-extension/src/renderer-team-cards.ts +93 -13
- package/src/native-ui/renderer-extension/src/settings/connections-page.ts +2 -2
- package/src/native-ui/renderer-extension/test/renderer-model-client.test.ts +47 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,29 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.3.0 — 2026-09-22
|
|
4
|
+
|
|
5
|
+
- **The Agent Team board is now operable by the user** (`harnessmix/thread/team/task/cancel`, `task/reassign`, `team/message/send`, `thread/collaboration/continue`): cancel a running task through the same settlement path as `cancel_delegation`, reassign failed or interrupted tasks to existing members (task reset to pending, `reassignedFrom` kept), nudge members as the lead, and resume paused collaboration through an injected lead instruction turn — authorization is principal-checked in `collaboration.userAction`. Task failures always reach the lead via a system mailbox notice carrying the reason, and `assign_team_task` accepts `retry {max 1..3}` so the Host auto re-dispatches the same member within the lead turn (session and workspace reused, prompt warns not to replay completed side effects); user cancels stay silent and unretried. Delegation dispatch also tolerates a momentarily busy member session (mailbox pump, user nudge, settle tail): the "task executing" rejection is retried for up to 10s instead of failing the task without a member turn. Worktree apply under an off gate attaches one advisory verification to the result (zero-config safety net, gate semantics unchanged), and renderer team cards gain the kanban action buttons, disabled states and unread badges. 团队看板可操作:取消/改派/追问/继续协作,任务失败必达 lead 邮箱并支持自动重派,派发容忍瞬时忙碌的成员会话。
|
|
6
|
+
- **New codex conversations no longer vanish silently**. `CodexAccountManager.#entry` ignored a registry account's explicit `codexHome` and rewrote it to `profiles/<accountId>` — a directory nothing ever creates — so the legacy `default` account pointed `CODEX_HOME` at a missing path and `codex` refused to start on a missing home (exit 1), killing every new thread with zero messages. Registry `codexHome` values are honored again, missing managed profile dirs are self-healed, and external-homed account slots can be deleted without touching their directories. The app-server `initialize` handshake gains a 20s guard (env-tunable via `HARNESS_MIX_CODEX_HANDSHAKE_TIMEOUT_MS`) that kills a wedged process instead of leaving `thread/start` pending forever — the failure the Desktop rendered as a task "executing" with no session and no sidebar entry — and `turn/start`'s "Agent is already processing" retry budget grows from ~0.8s to 20s (capped backoff) so a concurrent short turn on the shared app-server no longer fails the second thread. 修复 codex 新会话静默消失:尊重账号注册表 codexHome、目录自愈、握手超时兜底与并发 busy 重试扩窗。
|
|
7
|
+
- Stopping a worker thread through `runtime.cancel` bypassed team bookkeeping and wedged the team task `in_progress` forever (the member could never be delegated again); cancels now route through the shared `settleStoppedJob` path (member back to ready, task to pending/interrupted, team status republished), interrupted vs cancelled is recorded by closing state, and removing a thread forgets its team binding so later input falls back to a fresh child session. 停止子任务经团队图结算,任务不再永久卡在进行中。
|
|
8
|
+
- Hermes joins with verified image wiring (hermes 0.21.3 on a custom Anthropic-compatible endpoint: `initialize` reports `PromptCapabilities(image=True)`, and the 8x8 probe PNG flows through the `session/prompt` image block to the provider), the README matrix now mirrors the manifests, and a new acp-image-test covers the acpAdapter prompt-block shape, handshake gating and loud rejection for the whole ACP family (wired into `test:core-all`). Hermes 图像链路实测打通,ACP 家族图片用例入核。
|
|
9
|
+
- The command menu is thread-scoped: per-session native command lists (ACP `availableCommands`, Claude `supportedCommands`, pi `get_commands`, OpenCode `/command`, OpenClaw `commands.list`) now actually reach the UI — the menu previously always queried the session-less harness-level catalog; stale responses abort on thread switches. Codex surfaces its skills as slash commands (`skills/list`, live-probed 52 entries, slugified insert actions with older-app-server fallback), and Claude command descriptions gain argument hints with alias dedupe. 指令菜单按线程拉取真实目录,Codex 技能成为斜杠指令。
|
|
10
|
+
- OpenClaw: gateway `stream:"thinking"` frames project as thinking and `reasoningLevel=stream` is patched on session open (live-verified accepted on 2026.5.12); harness-mix-owned MCP servers reconcile into `openclaw.json` `mcp.servers` (equal-value guard, atomic, shape-preserving cleanup — verified end-to-end with a real gateway run invoking the probe tool); and gateway `commands.list` (~100 entries live-probed) maps into the command menu with argument hints. OpenClaw 思考投影、托管 MCP 注册表与原生指令接入。
|
|
11
|
+
- pi/OMP permission catalogs split per CLI: OMP 18.1.19 has no `--approve/--no-approve` flags — its real surface is `--approval-mode always-ask|write|yolo` — while pi keeps its live-reverified flags (0.84.2). pi/OMP 权限目录按各自 CLI 实际参数面对齐。
|
|
12
|
+
- ZCode headless-CLI probing covers per-machine (Program Files) installs in addition to the per-user layout, and the duplicated `bundledCli` definition that shadowed the first probe is gone. ZCode 探测整机安装布局,修复重复定义遮蔽。
|
|
13
|
+
|
|
14
|
+
## 0.2.4 — 2026-09-21
|
|
15
|
+
|
|
16
|
+
- **ZCode joins as a native harness**: a new adapter speaks the ZCode Protocol stdio app-server directly (`zcode.cjs app-server --stdio`, the same entry the ZCode desktop drives; the jsonl transport gains a `jsonrpc:false` pure-framing mode), replacing the never-workable ACP mapping — session create/resume/close, model selection with an explicit reasoning level (GLM models demand one), thought levels and context usage; events ride the desktop-continuous push with an afterSeq poll loop as fallback; server requests are answered per protocol (runtime preferences, official MCP auth decline, permission approval cards, user-input questions); the account push is key-free (`{builtinModelIds, access:{type, entitled}}` plus the credential entry name — the agent resolves its own shared credentials locally; the one sanctioned runtime key fetch stays in memory, never logged or persisted); image attachments are live-verified (local paths deliver to the model, base64 payloads are materialized to a temp file); permission modes use the canonical `session/setMode` enum; and ZCode is now a dispatchable collaboration worker, Agent-Team member and `/delegate` target with a yolo worker default (the `#` lead role stays off until the protocol gains runtime MCP registration). ZCode 原生适配器落地:直连 ZCode Protocol app-server,附件/权限模式/协作成员均实测可用。
|
|
17
|
+
- ZCode second-pass hardening from live protocol audits: a CLI that dies between turns hung the next send forever — the send now transparently reconnects (fresh process, session resume with create fallback, replayed account push and mode/model selections, reset event-id dedup); a cancelled turn's late `turn.completed` can no longer settle the next turn into an empty answer; declining a permission short-circuited to cancelled instead of a real `deny` decision; and the context projection rides the subscribe snapshot, so the context meter is no longer undefined. ZCode 崩溃自愈、取消竞态、拒绝即拒绝与上下文投影修复。
|
|
18
|
+
- **Qoder unlocked and kept usable across turns**: the reasoning-effort selector maps to qodercli's `reasoning_effort` config option so the catalog and `setThinkingLevel` work, session fork takes the standard Zed params (generalized beyond Kiro), and the fabricated always-empty usage meter is gone (`usage_update` is never emitted); a qodercli that dies between turns (libuv crash-on-exit) no longer poisons the thread — the next send transparently restores the same native session and replays the confirmed model/thinking/permission selections; a locked thread no longer gates its model catalog on the per-host availability cache; switching models replays the confirmed effort instead of silently resetting it; and thread inspection omits empty usage instead of spreading an explicit `usage: null`, which failed the renderer's strict parse and wedged the composer into an ownership error after exactly one task. Qoder 推理等级与会话分叉解锁,跨回合崩溃自愈,模型目录与线程归属修复。
|
|
19
|
+
- Antigravity: desktop-spawned agy children now inherit the Windows system proxy (WinINET) mapped to standard `HTTP_PROXY`/`HTTPS_PROXY`/`NO_PROXY` env vars — Go CLIs ignore registry proxy settings, so without this the OAuth code exchange black-holed and every start demanded a fresh interactive login. Explicit host proxy env always wins. agy 子进程继承系统代理,修复每次启动都要求重新登录的问题。
|
|
20
|
+
- Desktop-triggered updates run in a detached helper process instead of the host: no more updater output polluting the JSONL protocol channel or minutes of synchronous git/npm freezing the event loop; the update lock is exclusive with stale-lock reaping (two updaters can no longer both win), native builds blocked by a running Desktop defer via pendingBuild state and complete at the next launch, npm repair verifies the reinstall result, git repair rebuilds so binaries match the reset sources, and qoder resolution no longer falls back to the IDE launcher (a `--version` probe passed but every `--acp` open launched the GUI); the connections page points grok/antigravity at their official installers. 桌面触发的更新改为独立辅助进程执行,修复协议通道污染与事件循环冻结。
|
|
21
|
+
- Codex: cancelling a turn now settles every pending request shape — `item/tool/requestUserInput` entries are stored group-only, so cancel crashed with a TypeError mid-loop, `turn/interrupt` was never sent, and the native turn kept running behind a UI that believed it was cancelled; cancel also releases the local turn when it lands during the `turn/start` round trip. Codex 取消修复:所有待决请求形态都能正确结算。
|
|
22
|
+
- Collaboration: `apply_delegation_changes` can actually succeed now — its concurrency guard counted the waiting lead thread itself (guaranteed to be running while the MCP call is served), so isolated-worktree results could never be applied; the lead and the job's own child are excluded and paths compare case-insensitively. 协作守卫不再把等待中的 Lead 计入并发,隔离工作树结果得以应用。
|
|
23
|
+
- Desktop control: the enabled-agent set is validated order-insensitively — the controller's hardcoded catalog and the injected bundle disagreed on order, so every production binding was rejected, stalling first boot ~90s in the readiness poll while piling duplicate CDP script registrations. 桌面控制按集合比较启用的 harness,消除首启阻塞与重复注入。
|
|
24
|
+
- `JsonlProcess` marks post-exit rejections with the `harnessExited` marker so deterministic harness exits stay non-retryable upstream, and the launcher's PowerShell helper falls back to Windows PowerShell 5.1.
|
|
25
|
+
- Docs: a standalone bilingual project homepage (GitHub Pages) with an animated flow diagram. 新增独立项目主页。
|
|
26
|
+
|
|
3
27
|
## 0.2.3 — 2026-09-18
|
|
4
28
|
|
|
5
29
|
- Turn transcripts now fold correctly again: the wire `phase` for `agentMessage` items uses Codex's own vocabulary — `commentary` / `final_answer` — which the Desktop matches literally when extracting the final answer and collapsing the execution zone into the elapsed-time bar. 0.2.1/0.2.2 sent the internal `progress` / `final` values, which the Desktop does not recognize, so completed turns stayed expanded. The internal vocabulary is unchanged and translated at the projection boundary (historic persisted items map through the same function), and the final message segment is explicitly closed at turn settle so its phase reaches the Desktop on the wire. 修复回合转录折叠:agentMessage 的 phase 改用 Codex 原生词表(commentary/final_answer),完成后过程内容正确折叠进「用时」栏。
|