@harness-mix/cli 0.2.2 → 0.2.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. package/CHANGELOG.md +25 -0
  2. package/README.md +469 -467
  3. package/output/native-build/desktop-controller.mjs +1 -1
  4. package/output/native-build/renderer-extension.js +23 -4
  5. package/package.json +16 -9
  6. package/scripts/antigravity-adapter-test.cjs +647 -626
  7. package/scripts/codex-adapter-test.cjs +162 -127
  8. package/scripts/collaboration-test.cjs +274 -262
  9. package/scripts/core-review-test.cjs +68 -0
  10. package/scripts/delegation-await-test.cjs +76 -0
  11. package/scripts/jsonl-stdin-test.cjs +40 -0
  12. package/scripts/kiro-cursor-adapters-test.cjs +124 -100
  13. package/scripts/native-acp-depth-test.cjs +30 -5
  14. package/scripts/native-protocol-test.cjs +14 -1
  15. package/scripts/native-update-apply-test.cjs +269 -215
  16. package/scripts/native-update.cjs +78 -0
  17. package/scripts/native-vendor-adapters-test.cjs +196 -154
  18. package/scripts/salvage-rollout-writes.cjs +72 -0
  19. package/scripts/send-cancel-race-test.cjs +80 -0
  20. package/scripts/send-pre-turn-cancel-test.cjs +100 -0
  21. package/scripts/stuck-turn-test.cjs +6 -1
  22. package/scripts/zcode-adapter-test.cjs +329 -0
  23. package/scripts/zcode-live-probe.cjs +66 -0
  24. package/src/main/adapters/antigravity.js +1428 -1415
  25. package/src/main/adapters/codex.js +656 -649
  26. package/src/main/adapters/native-acp-command.js +51 -48
  27. package/src/main/adapters/native-acp.js +47 -12
  28. package/src/main/adapters/qoder.js +12 -8
  29. package/src/main/adapters/zcode.js +921 -10
  30. package/src/main/harness-adapter/event-normalizer.js +5 -2
  31. package/src/main/host/collaboration.js +723 -715
  32. package/src/main/host/jsonl.js +130 -116
  33. package/src/main/host/runtime.js +30 -14
  34. package/src/main/native/config.js +9 -9
  35. package/src/main/native/host.js +2 -0
  36. package/src/main/native/launcher.js +252 -237
  37. package/src/main/native/process-utils.js +157 -57
  38. package/src/main/native/protocol.js +1221 -1177
  39. package/src/main/native/secure-store.js +2 -0
  40. package/src/main/native/update-state.js +123 -110
  41. package/src/main/native/updater.js +460 -394
  42. package/src/main/workspace/core-review.js +13 -5
  43. package/src/native-ui/desktop-control/src/renderer-cdp-control-session.ts +358 -358
  44. package/src/native-ui/renderer-extension/src/renderer-binding-probe.ts +3211 -3181
  45. package/src/native-ui/renderer-extension/src/settings/connections-page.ts +2 -2
@@ -75,6 +75,9 @@ async function projectReview(runtime, thread, message, record) {
75
75
  );
76
76
 
77
77
  let changes = record.changes;
78
+ // 本轮触碰路径惰性计算一次:供并发收窄与 foreign 过滤两处共用
79
+ let touched = null;
80
+ const touchedThisTurn = () => (touched ??= touchedPaths(runtime, thread, message));
78
81
  if (hasNativePatch && record.concurrent) {
79
82
  // 同目录并发时,原生 patch 是唯一能归属到本轮的边界。无并发时始终
80
83
  // 保留 Host 最终快照,补齐原生 Harness 没有上报或漏报的文件。
@@ -85,14 +88,19 @@ async function projectReview(runtime, thread, message, record) {
85
88
  // 无原生 patch 的 Harness(如 Pi):并发同目录时用本轮工具触碰路径收窄全量快照,
86
89
  // 避免同项目其他会话的改动出现在本回合卡片里。本轮没有任何可归因路径时
87
90
  // (纯 shell 会话等)保留全量快照,不虚报归属。
88
- const touched = touchedPaths(runtime, thread, message);
89
- if (touched.size) changes = changes.filter(change => touched.has(change.path.toLowerCase()));
91
+ const touchedSet = touchedThisTurn();
92
+ if (touchedSet.size) changes = changes.filter(change => touchedSet.has(change.path.toLowerCase()));
90
93
  }
91
94
 
92
- // 正向归属于其他会话的改动无条件剔除(不依赖 concurrent 标记:对方可能
93
- // 在本回合开始后才启动)。无归属证据的改动保持原样,不虚报归属。
95
+ // 正向归属于其他会话的改动剔除(不依赖 concurrent 标记:对方可能在本回合开始后
96
+ // 才启动)。但本轮工具已明确触碰的文件属本会话自身的正向事实——foreign 集合扫描的是
97
+ // 其他会话的历史全部轮次,同目录旧会话碰过的路径会永久滞留其中,不得据此误剔本轮编辑,
98
+ // 否则该文件会从审查卡片与撤回列表中消失。无归属证据的改动保持原样,不虚报归属。
94
99
  const foreign = foreignPaths(runtime, thread, message);
95
- if (foreign.size) changes = changes.filter(change => !foreign.has(change.path.toLowerCase()));
100
+ if (foreign.size) {
101
+ const touchedSet = touchedThisTurn();
102
+ changes = changes.filter(change => touchedSet.has(change.path.toLowerCase()) || !foreign.has(change.path.toLowerCase()));
103
+ }
96
104
 
97
105
  core.dispatch({ threadId: thread.id, turnId: message.coreTurnId, type: 'files.updated', payload: {
98
106
  source: 'snapshot', replace: true,