weir-harness 1.2.0 → 1.2.2

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 (99) hide show
  1. package/cordis.patch.yml +0 -2
  2. package/lib/client.blackboard-model.js +172 -56
  3. package/lib/client.capability-manager.js +0 -1
  4. package/lib/client.capability-model.js +378 -31
  5. package/lib/client.chain-model.js +80 -0
  6. package/lib/client.disabled-categories-editor.js +22 -0
  7. package/lib/client.edit-lock-maintenance.js +239 -246
  8. package/lib/client.edit-lock-panel.js +110 -0
  9. package/lib/client.hash-edit-model.js +48 -0
  10. package/lib/client.js +267 -1549
  11. package/lib/client.lsp-model.js +92 -0
  12. package/lib/client.lsp-panel.js +11 -16
  13. package/lib/client.lsp-toggle.js +18 -0
  14. package/lib/client.notify-permissions.js +112 -20
  15. package/lib/client.notify-web.js +14 -11
  16. package/lib/client.robash-model.js +26 -0
  17. package/lib/client.settings-page.js +287 -17
  18. package/lib/client.worktree-model.js +225 -0
  19. package/package.json +5 -2
  20. package/src/blackboard/durable.js +12 -0
  21. package/src/blackboard/index.js +2 -2
  22. package/src/blackboard/kernel.js +23 -6
  23. package/src/blackboard/notify.js +10 -3
  24. package/src/blackboard/remote.js +31 -13
  25. package/src/blackboard/storage.js +13 -5
  26. package/src/capabilities/apply-engine.js +189 -101
  27. package/src/capabilities/defaults-transaction.js +136 -1
  28. package/src/capabilities/lifecycle-snapshot.js +83 -204
  29. package/src/capabilities/mcp-admission.js +1 -23
  30. package/src/capabilities/mcp-drain.js +30 -19
  31. package/src/capabilities/mcp-facade.js +23 -3
  32. package/src/capabilities/preset-library.js +247 -0
  33. package/src/capabilities/preset-package.js +212 -1
  34. package/src/capabilities/same-name-policy.js +3 -41
  35. package/src/capabilities/selection-notify.js +324 -21
  36. package/src/capabilities/skill-office-adapter.js +7 -1
  37. package/src/capabilities/skill-selection-plugin.js +315 -729
  38. package/src/capabilities/store/checked-contract.d.ts +5 -0
  39. package/src/capabilities/store/fs-adapter.js +52 -0
  40. package/src/capabilities/store/lock.js +86 -0
  41. package/src/capabilities/store/paths.js +5 -0
  42. package/src/capabilities/store/store.js +105 -5
  43. package/src/creative-guide/guide.js +1 -1
  44. package/src/delegate/child-composition.js +258 -0
  45. package/src/delegate/group-coordinator.js +25 -27
  46. package/src/delegate/index.js +21 -2
  47. package/src/delegate/rehydrate.js +24 -4
  48. package/src/delegate/robash-guard-core.js +2 -2
  49. package/src/delegate/spawn-adapter.js +214 -100
  50. package/src/delegate/status-tool.js +9 -6
  51. package/src/delegate/supervision-mount.js +35 -6
  52. package/src/delegate/tool.js +29 -4
  53. package/src/{shared → delegate}/whitelist-defaults.js +2 -2
  54. package/src/edit-lock/admin-ledger.js +8 -11
  55. package/src/edit-lock/admin-recovery.js +2 -1
  56. package/src/edit-lock/admission.js +12 -2
  57. package/src/edit-lock/binding-guidance.js +28 -10
  58. package/src/edit-lock/binding-machine.js +312 -0
  59. package/src/edit-lock/derived-facts.js +67 -0
  60. package/src/edit-lock/index.js +44 -244
  61. package/src/edit-lock/inspect.js +113 -1
  62. package/src/edit-lock/lifecycle.js +8 -5
  63. package/src/edit-lock/limits.js +61 -0
  64. package/src/edit-lock/maintenance.js +5 -2
  65. package/src/edit-lock/manager.js +6 -2
  66. package/src/edit-lock/operation-history.js +1 -1
  67. package/src/edit-lock/peer-client.js +9 -2
  68. package/src/edit-lock/peer-transport.js +7 -1
  69. package/src/edit-lock/remote.js +11 -4
  70. package/src/edit-lock/state.js +2 -4
  71. package/src/edit-lock/view.js +10 -11
  72. package/src/lsp/admin.js +2 -24
  73. package/src/lsp/index.js +1 -1
  74. package/src/lsp/manager.js +1 -1
  75. package/src/notify/permissions-admin.js +1 -1
  76. package/src/{lsp/child-process.js → process/index.js} +23 -6
  77. package/src/settings/env-admin.js +1 -1
  78. package/src/settings/index.js +1 -1
  79. package/src/settings/sections.js +0 -54
  80. package/src/shared/audit.js +12 -0
  81. package/src/shared/child-scope.js +3 -1
  82. package/src/shared/http-json.js +28 -0
  83. package/src/{delegate/audit-readers.js → shared/terminal-evidence.js} +34 -4
  84. package/src/worktree/errors.js +3 -0
  85. package/src/worktree/index.js +1 -2
  86. package/src/worktree/lane-core.js +641 -0
  87. package/src/worktree/lane-views.js +147 -0
  88. package/src/worktree/lane-workflows.js +853 -0
  89. package/src/worktree/lanes.js +24 -1513
  90. package/src/worktree/runner.js +5 -4
  91. package/src/capabilities/content-pin.js +0 -88
  92. package/src/capabilities/content-refresh.js +0 -331
  93. package/src/capabilities/distribution-manifest.js +0 -78
  94. package/src/capabilities/isolated-exec.js +0 -106
  95. package/src/capabilities/publisher.js +0 -129
  96. package/src/capabilities/skill-admission.js +0 -181
  97. package/src/capabilities/update-lifecycle.js +0 -106
  98. package/src/edit-lock/remote-service.js +0 -28
  99. package/src/worktree/contract-guidance.test.js +0 -100
@@ -286,6 +286,116 @@ window.__ModuleLoader__.load({
286
286
  ]
287
287
  });
288
288
  }
289
+ // Locale data face (pure data, NO ctx calls — a chunk factory re-executes
290
+ // under HMR, so a chunk-local register would throw on the duplicate
291
+ // (namespace, locale) pair): the entry registers these under "settings.weir.edit-lock"
292
+ // inside a ctx.effect when this chunk arrives (lib/client.js
293
+ // registerChunkDictionaries). Pinned by test/client.test.js's dictionary
294
+ // union pin.
295
+ const dictionaries = {
296
+ en: {
297
+ editLockLabel: "Edit Lock",
298
+ editLockTitle: "Files this session is editing",
299
+ editLockPanelTitle: "Edit Lock",
300
+ editLockLoading: "Loading…",
301
+ editLockRefresh: "Refresh",
302
+ editLockStop: "Revoke editing",
303
+ editLockRevokeConfirm: "Revoke now — the assistant stops editing until you continue",
304
+ editLockResume: "Continue editing",
305
+ editLockRetry: "Retry connection",
306
+ editLockRetryPending: "Retrying connection… Editing remains unavailable.",
307
+ editLockBinding_serving: "This session is being edited in another attachment right now. Retry the connection when that turn finishes; retry does not continue editing.",
308
+ editLockBinding_transferable: "This session's editing authority is held by an inactive attachment of this same session. It attaches here automatically when you send a message; Retry connection also takes it over now (retry does not continue editing).",
309
+ editLockBinding_unknown: "The holder cannot be verified. Wait for its disconnect or confirmed process shutdown, then retry. Never remove a live publisher reservation.",
310
+ "editLockBinding_cross-process": "The holder is in another process. Disconnect it or confirm that process has shut down before retrying.",
311
+ "editLockBinding_revocation-failed": "Durable revocation was not acknowledged. Inspect Edit Lock maintenance; no replacement has been granted.",
312
+ editLockConfirmAll: "Continue with these files",
313
+ editLockReleaseAll: "Release all files now",
314
+ editLockDetails: "Technical details",
315
+ editLockOwnerOther: "Another session",
316
+ editLockHoldUntil: "until {time}",
317
+ editLockRecovery: "The last turn failed; cleaning up (attempt {n}).",
318
+ editLockState_idle: "Not editing any file",
319
+ editLockCleanupOnly: "Cleanup only: business edits and new ownership are blocked. Release files you no longer need; inspect the tool result before retrying edits.",
320
+ editLockRecoveryUsage: "Recorded recovery: {attempts} attempts · {elapsed}s elapsed · {pause} min pause used.",
321
+ editLockPauseUsageHint: "Pause usage is cumulative, not a live timer. Pause expiry re-checks recovery; it does not release locks or restore editing.",
322
+ editLockPausedUntil: "Recovery paused until {time}.",
323
+ editLockOwnershipHint: "Locks show ownership, not write outcomes. For failed edits, inspect the tool result; releasing locks does not undo changes.",
324
+ editLockState_editing: "Editing",
325
+ editLockState_holding: "Files kept for this session",
326
+ editLockState_confirm: "Waiting for you to continue",
327
+ editLockState_stopped: "Editing stopped",
328
+ editLockState_attention: "Needs your attention",
329
+ editLockState_revoked: "Editing revoked by an administrator",
330
+ editLockRevokedHint: "An administrative recovery revoked this session's editing authority and released its locks. Continue editing here, or send any message — editing resumes automatically in a new execution epoch; the revocation record is preserved.",
331
+ editLockColdRevokedAuto: "An administrative recovery revoked this session's editing authority and released its locks. Send any message in this session — the binding and editing resume automatically.",
332
+ editLockColdRevokedManual: "An administrative recovery revoked this session's editing authority and released its locks. Send any message to activate the session, then continue editing from this panel.",
333
+ editLockColdResumeAuto: "This session was restored after a restart and is stopped. Send any message — editing resumes automatically, with the files below confirmed again.",
334
+ editLockColdResumeManual: "This session was restored after a restart and is stopped. Send any message to activate the session, then continue editing from this panel.",
335
+ editLockState_unavailable: "Edit Lock is starting",
336
+ editLockState_failed: "Edit Lock is unavailable; edits are refused",
337
+ editLockStatus_active: "editing",
338
+ "editLockStatus_user-interrupted": "stopped",
339
+ "editLockStatus_pending-confirmation": "waiting",
340
+ editLockStatus_abnormal: "needs attention",
341
+ editLockRow_release: "Release",
342
+ editLockRow_confirm: "Continue",
343
+ editLockRow_unlock: "Unlock",
344
+ editLockRow_unlockConfirm: "Unlock now — the other session loses this file",
345
+ },
346
+ zh: {
347
+ editLockLabel: "编辑锁",
348
+ editLockTitle: "本会话正在编辑的文件",
349
+ editLockPanelTitle: "编辑锁",
350
+ editLockLoading: "加载中…",
351
+ editLockRefresh: "刷新",
352
+ editLockStop: "收回编辑权",
353
+ editLockRevokeConfirm: "确认收回——助手将停止编辑,直到你点继续",
354
+ editLockResume: "继续编辑",
355
+ editLockRetry: "重试连接",
356
+ editLockRetryPending: "正在重试连接……编辑仍不可用。",
357
+ editLockBinding_serving: "本会话正在另一个附着位置编辑中。请在该回合结束后重试连接;重试不等于继续编辑。",
358
+ editLockBinding_transferable: "本会话的编辑权由同一会话的一个不活跃附着持有。你发送下一条消息时会自动接管;也可以立即点「重试连接」接管(重试不等于继续编辑)。",
359
+ editLockBinding_unknown: "无法核实原持有者。请等待原连接断开或确认其进程已退出,再重试;勿删除存活 publisher 的预约。",
360
+ "editLockBinding_cross-process": "原持有者位于另一进程。请先断开原连接或确认其进程已退出,再重试。",
361
+ "editLockBinding_revocation-failed": "持久撤权尚未确认。请查看编辑锁维护;未授予替代绑定权限。",
362
+ editLockConfirmAll: "继续编辑这些文件",
363
+ editLockReleaseAll: "立即释放全部文件",
364
+ editLockDetails: "技术细节",
365
+ editLockOwnerOther: "其他会话",
366
+ editLockHoldUntil: "保留至 {time}",
367
+ editLockRecovery: "上一回合出错,正在清理(第 {n} 次)。",
368
+ editLockState_idle: "未占用任何文件",
369
+ editLockCleanupOnly: "仅允许清理:业务编辑和新占用都被拒绝。请释放不再需要的文件,重试前查看工具结果。",
370
+ editLockRecoveryUsage: "已记录恢复:{attempts} 次 · 已用 {elapsed} 秒 · 已暂停 {pause} 分钟。",
371
+ editLockPauseUsageHint: "暂停时长是累计用量,不是当前倒计时。暂停到期只会重新检查恢复,不释放锁,也不恢复编辑。",
372
+ editLockPausedUntil: "恢复已暂停,至 {time} 后重新检查。",
373
+ editLockOwnershipHint: "锁只表示归属,不表示写入结果。编辑失败请查看工具结果;释放锁不会撤销已发生的修改。",
374
+ editLockState_editing: "正在编辑",
375
+ editLockState_holding: "文件为本会话保留",
376
+ editLockState_confirm: "等你确认继续",
377
+ editLockState_stopped: "编辑已停止",
378
+ editLockState_attention: "需要你处理",
379
+ editLockState_revoked: "编辑权已被管理员吊销",
380
+ editLockRevokedHint: "管理员恢复已吊销本会话的编辑权并释放其锁。点击「继续编辑」或发送任意消息,即在新执行纪元恢复编辑;吊销记录保留。",
381
+ editLockColdRevokedAuto: "管理员恢复已吊销本会话的编辑权并释放其锁。在本会话发送任意消息——连接与编辑会自动恢复。",
382
+ editLockColdRevokedManual: "管理员恢复已吊销本会话的编辑权并释放其锁。发送任意消息激活会话,然后回到此面板点「继续编辑」。",
383
+ editLockColdResumeAuto: "重启后恢复的会话,编辑已停止。发送任意消息即自动恢复编辑(下列文件会一并确认)。",
384
+ editLockColdResumeManual: "重启后恢复的会话,编辑已停止。发送任意消息激活会话,然后回到此面板点「继续编辑」。",
385
+ editLockState_unavailable: "编辑锁启动中",
386
+ editLockState_failed: "编辑锁不可用,编辑会被拒绝",
387
+ editLockStatus_active: "编辑中",
388
+ "editLockStatus_user-interrupted": "已停止",
389
+ "editLockStatus_pending-confirmation": "待确认",
390
+ editLockStatus_abnormal: "需处理",
391
+ editLockRow_release: "释放",
392
+ editLockRow_confirm: "继续",
393
+ editLockRow_unlock: "解锁",
394
+ editLockRow_unlockConfirm: "确认解锁——对方会失去这个文件",
395
+ },
396
+ };
397
+
398
+ exports.dictionaries = dictionaries;
289
399
  exports.EditLockPanel = EditLockPanel;
290
400
  exports.stateOf = stateOf;
291
401
  exports.primaryOf = primaryOf;
@@ -190,6 +190,54 @@ function narrowDiffFragment(value) {
190
190
  expand: (count) => t("hashEditExpand", { count })
191
191
  };
192
192
  }
193
+ // Locale data face (pure data, NO ctx calls — a chunk factory re-executes
194
+ // under HMR, so a chunk-local register would throw on the duplicate
195
+ // (namespace, locale) pair): the entry registers these under "settings.weir.hash-edit"
196
+ // inside a ctx.effect when this chunk arrives (lib/client.js
197
+ // registerChunkDictionaries). Pinned by test/client.test.js's dictionary
198
+ // union pin.
199
+ const dictionaries = {
200
+ en: {
201
+ hashEditTitle: "Edit file",
202
+ hashEditPreparing: "Preparing edit",
203
+ hashEditPlanned: "Planned edit — the applied diff appears when the call settles.",
204
+ hashEditRunning: "Editing…",
205
+ hashEditFailed: "Edit failed",
206
+ hashEditStopped: "Interrupted",
207
+ hashEditCodeLabel: "diff",
208
+ hashEditCopy: "Copy",
209
+ hashEditCopied: "Copied",
210
+ hashEditWrap: "Wrap lines",
211
+ hashEditUnwrap: "Disable line wrap",
212
+ hashEditCollapse: "Collapse",
213
+ hashEditCollapseAria: "Collapse diff",
214
+ hashEditExpand: "Show {count} more",
215
+ hashEditExpandAria: "Expand {count} more rows",
216
+ hashEditInput: "Input",
217
+ hashEditOutput: "Output",
218
+ },
219
+ zh: {
220
+ hashEditTitle: "编辑文件",
221
+ hashEditPreparing: "准备编辑",
222
+ hashEditPlanned: "计划编辑——调用完成后此处显示实际应用的 diff。",
223
+ hashEditRunning: "编辑中…",
224
+ hashEditFailed: "编辑失败",
225
+ hashEditStopped: "已中断",
226
+ hashEditCodeLabel: "diff",
227
+ hashEditCopy: "复制",
228
+ hashEditCopied: "已复制",
229
+ hashEditWrap: "自动换行",
230
+ hashEditUnwrap: "取消换行",
231
+ hashEditCollapse: "收起",
232
+ hashEditCollapseAria: "收起 diff",
233
+ hashEditExpand: "展开剩余 {count} 行",
234
+ hashEditExpandAria: "展开剩余 {count} 行",
235
+ hashEditInput: "输入",
236
+ hashEditOutput: "输出",
237
+ },
238
+ };
239
+
240
+ exports.dictionaries = dictionaries;
193
241
  exports.HASH_EDIT_TOOL = HASH_EDIT_TOOL;
194
242
  exports.narrowDiffFragment = narrowDiffFragment;
195
243
  exports.appliedDiffFragments = appliedDiffFragments;