@visorcraft/idlehands 4.2.5 → 4.2.7

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 (128) hide show
  1. package/README.md +1 -0
  2. package/dist/{agent-via-gateway-Bhon8XVm.js → agent-via-gateway-BMsMjnWe.js} +2 -2
  3. package/dist/{agent-via-gateway-DVTkXwmI.js → agent-via-gateway-CW7FhqaW.js} +7 -7
  4. package/dist/{agent-via-gateway-CS-8ChjV.js → agent-via-gateway-CZLe7Ijx.js} +1 -1
  5. package/dist/{agent-via-gateway-Drygi4ty.js → agent-via-gateway-D8QBXTZL.js} +1 -1
  6. package/dist/{agents-dNuQ9qUa.js → agents-C1x5jDIo.js} +4 -4
  7. package/dist/{agents.config-B_6rOTVW.js → agents.config-4ilUlWts.js} +1 -1
  8. package/dist/{agents.config-DCNsF8yj.js → agents.config-B_McnvK1.js} +1 -1
  9. package/dist/{anton-D375-ufL.js → anton-0pF0zqOs.js} +88 -22
  10. package/dist/{anton-BmSsFmSP.js → anton-BDDjbZ5H.js} +88 -22
  11. package/dist/{anton-Cw4-BgtA.js → anton-C33_8bVg.js} +88 -22
  12. package/dist/{anton-Di5VPZiI.js → anton-D4a5lMjo.js} +88 -22
  13. package/dist/{audio-preflight-CW8IH1lU.js → audio-preflight-BSlR2jEq.js} +4 -4
  14. package/dist/{auth-choice-C8Tj46gd.js → auth-choice-BhfFkY6h.js} +1 -1
  15. package/dist/{auth-choice-CYV4KLt7.js → auth-choice-JcCIJBlD.js} +1 -1
  16. package/dist/{banner-B7_rwm3P.js → banner-DfFhVf3q.js} +1 -1
  17. package/dist/build-info.json +3 -3
  18. package/dist/bundled/boot-md/handler.js +7 -7
  19. package/dist/bundled/session-memory/handler.js +7 -7
  20. package/dist/{channel-options-Dxc1A5iC.js → channel-options-9SPtt4MW.js} +1 -1
  21. package/dist/{channel-options-DTqGMcYU.js → channel-options-CUviKu-7.js} +1 -1
  22. package/dist/{channel-web-CgvDCMru.js → channel-web-C6dFy-1o.js} +2 -2
  23. package/dist/{channel-web-BPlapQS3.js → channel-web-CFn6Nsja.js} +2 -2
  24. package/dist/{channels-cli-BfUIc52d.js → channels-cli-B2da56zV.js} +7 -7
  25. package/dist/{channels-cli-k45uGu5k.js → channels-cli-DGfqgSUL.js} +7 -7
  26. package/dist/{chrome-BcJB6PcM.js → chrome-_2tzVjVl.js} +9 -9
  27. package/dist/{cli-C6GCCnET.js → cli-DmnwiKz9.js} +2 -2
  28. package/dist/{cli-BapK2rdH.js → cli-FOBK-XcZ.js} +2 -2
  29. package/dist/{command-registry-DJb9jSNL.js → command-registry-DacWRRgz.js} +10 -10
  30. package/dist/{completion-cli-BXA0UZAn.js → completion-cli-DydUIkNr.js} +2 -2
  31. package/dist/{completion-cli-DqJEZMJt.js → completion-cli-NMyMglwl.js} +1 -1
  32. package/dist/{config-cli-BfaVUsj-.js → config-cli-B4fFlFK0.js} +1 -1
  33. package/dist/{config-cli-97SkUuuT.js → config-cli-C_DUmmo_.js} +1 -1
  34. package/dist/{configure-DpswIHZC.js → configure-BRK8DqNR.js} +3 -3
  35. package/dist/{configure-CmTKkn3M.js → configure-k0XQkt_5.js} +3 -3
  36. package/dist/{deliver-BUiQ-9fE.js → deliver-CVTXl0Cv.js} +1 -1
  37. package/dist/{deps-CDLYb9a7.js → deps-Bp-zobQ9.js} +1 -1
  38. package/dist/{deps-BV_-fxNb.js → deps-C8gMsatU.js} +1 -1
  39. package/dist/{deps-IpeS3x5O.js → deps-CC9rj6VE.js} +1 -1
  40. package/dist/{deps-Bc5yBM-U.js → deps-k7zLO-No.js} +1 -1
  41. package/dist/{doctor-completion-WFEPRjgs.js → doctor-completion-CtkKGYq1.js} +1 -1
  42. package/dist/{doctor-completion-BkS6Phs6.js → doctor-completion-T65otQPW.js} +1 -1
  43. package/dist/{emergency-stop-DMTHxdvC.js → emergency-stop-B1WGLPIl.js} +2 -2
  44. package/dist/{emergency-stop-Dxp2e3a9.js → emergency-stop-Bqex5qoB.js} +7 -7
  45. package/dist/{emergency-stop-zy54uJoE.js → emergency-stop-C0olMHR9.js} +2 -2
  46. package/dist/{emergency-stop-DKLc7AmD.js → emergency-stop-CHHSptxF.js} +2 -2
  47. package/dist/entry.js +1 -1
  48. package/dist/extensionAPI.js +2 -2
  49. package/dist/{gateway-cli-FNbwxOiN.js → gateway-cli-B4fOuxUC.js} +9 -9
  50. package/dist/{gateway-cli-E6DUzxEX.js → gateway-cli-LuvH-d8m.js} +9 -9
  51. package/dist/{health-CGW71CVV.js → health-BFXk0LFk.js} +1 -1
  52. package/dist/{health-D60h_a2w.js → health-CpPRbWHn.js} +1 -1
  53. package/dist/{hooks-cli-BnVSeWIo.js → hooks-cli-RL3GbGUT.js} +3 -3
  54. package/dist/{hooks-cli-DaWPRdgZ.js → hooks-cli-q_ukCmeC.js} +3 -3
  55. package/dist/{image-D8b_rlQC.js → image-COw__ACq.js} +1 -1
  56. package/dist/index.js +7 -7
  57. package/dist/llm-slug-generator.js +7 -7
  58. package/dist/{models-C1ouQF8k.js → models-DToiZ2jp.js} +2 -2
  59. package/dist/{models-cli-CxEFLoMt.js → models-cli-8wuQnOxc.js} +3 -3
  60. package/dist/{models-cli-BhFUh61j.js → models-cli-C8tnFvU6.js} +4 -4
  61. package/dist/{npm-resolution-Ds0qg1EX.js → npm-resolution-CPEoaDTw.js} +1 -1
  62. package/dist/{npm-resolution-D30nzRfu.js → npm-resolution-Dz95V6fj.js} +1 -1
  63. package/dist/{onboard-NcA_odSQ.js → onboard-DnGowokw.js} +2 -2
  64. package/dist/{onboard-Cv6q6Usf.js → onboard-Dx-J8Bes.js} +2 -2
  65. package/dist/{onboard-channels-C1E5DpTR.js → onboard-channels-CU5VwTMC.js} +1 -1
  66. package/dist/{onboard-channels-bfoS7x6P.js → onboard-channels-rnRb5koA.js} +1 -1
  67. package/dist/{onboarding-CX8a934a.js → onboarding-5FnIgrWy.js} +3 -3
  68. package/dist/{onboarding-CpGBbVTj.js → onboarding-ztl5snrV.js} +3 -3
  69. package/dist/{onboarding.finalize-CRgpFQIz.js → onboarding.finalize-CvJCdPZc.js} +6 -6
  70. package/dist/{onboarding.finalize-BnKQeFN8.js → onboarding.finalize-DpwZIBVH.js} +7 -7
  71. package/dist/{pi-embedded-0YMQWOc5.js → pi-embedded-BYtUxbhJ.js} +11 -11
  72. package/dist/{pi-embedded-BO8wzB4O.js → pi-embedded-CIJj8Clt.js} +26 -26
  73. package/dist/{pi-embedded-helpers-CghCLoPo.js → pi-embedded-helpers-CyTpDKo5.js} +4 -4
  74. package/dist/{plugin-registry-Cp2q0pVP.js → plugin-registry-BCBZDFZm.js} +1 -1
  75. package/dist/{plugin-registry-DceNUcJc.js → plugin-registry-CY9YBaxv.js} +1 -1
  76. package/dist/plugin-sdk/{agent-via-gateway-MuDsrNW6.js → agent-via-gateway-RUSmiQPF.js} +2 -2
  77. package/dist/plugin-sdk/{anton-CkJKOeKT.js → anton-BluQsLu2.js} +88 -22
  78. package/dist/plugin-sdk/{channel-web-B6pGyJpM.js → channel-web-Dn0OzSFP.js} +2 -2
  79. package/dist/plugin-sdk/{deps-FuyQakmK.js → deps-C8qACokW.js} +1 -1
  80. package/dist/plugin-sdk/{emergency-stop-Ci4JC4dU.js → emergency-stop-DylRK_E8.js} +2 -2
  81. package/dist/plugin-sdk/index.js +3 -3
  82. package/dist/plugin-sdk/{reply-BTVimsoK.js → reply-DhycbFxW.js} +11 -11
  83. package/dist/plugin-sdk/{web-HiiN5NkP.js → web-yryYzFPs.js} +3 -3
  84. package/dist/{plugins-cli-2wK7R85Y.js → plugins-cli-BLcXY9sR.js} +3 -3
  85. package/dist/{plugins-cli-BaQt7jqk.js → plugins-cli-c-YfMlpn.js} +3 -3
  86. package/dist/{program-CbwFv75G.js → program-IXAxx4y-.js} +8 -8
  87. package/dist/{program-context-Ck-chzM_.js → program-context-lbXboD45.js} +18 -18
  88. package/dist/{prompt-select-styled-DJ5ONfKl.js → prompt-select-styled-C9ZBkTHU.js} +4 -4
  89. package/dist/{prompt-select-styled-DigZiJWM.js → prompt-select-styled-D1foahBO.js} +4 -4
  90. package/dist/{provider-auth-helpers-DGTDTeE5.js → provider-auth-helpers-CKJG35W4.js} +1 -1
  91. package/dist/{provider-auth-helpers-Ci_EGvif.js → provider-auth-helpers-Q2ZCYpBX.js} +1 -1
  92. package/dist/{push-apns-Dz4hOY07.js → push-apns-DM5pSWEU.js} +1 -1
  93. package/dist/{push-apns-BSYjGCn9.js → push-apns-DbZAasNF.js} +1 -1
  94. package/dist/{pw-ai-CfYaR1K2.js → pw-ai-CowTfhOG.js} +1 -1
  95. package/dist/{register.agent-CTPc2Q9m.js → register.agent-BObt1WS1.js} +8 -8
  96. package/dist/{register.agent-BZh3UWw3.js → register.agent-CMgUOruT.js} +9 -9
  97. package/dist/{register.configure-vVDARCph.js → register.configure-B3lElmGa.js} +8 -8
  98. package/dist/{register.configure-BzTxX7SG.js → register.configure-BSoAZhfz.js} +8 -8
  99. package/dist/{register.maintenance-DTXn32on.js → register.maintenance-0PNfXeOc.js} +8 -8
  100. package/dist/{register.maintenance-BNHEV-po.js → register.maintenance-mxkecZ9A.js} +9 -9
  101. package/dist/{register.message-BYWAEsKP.js → register.message-D7VHunA0.js} +3 -3
  102. package/dist/{register.message-CHf51taw.js → register.message-Dr4UBjNt.js} +3 -3
  103. package/dist/{register.onboard-CxwDhXRS.js → register.onboard-BvDwJMC5.js} +2 -2
  104. package/dist/{register.onboard-vruDRZdG.js → register.onboard-Xh9xW0hH.js} +2 -2
  105. package/dist/{register.orchestrator-anton-qBr2ZYrk.js → register.orchestrator-anton-CObXxmuY.js} +2 -2
  106. package/dist/{register.orchestrator-anton-GSAFxzGa.js → register.orchestrator-anton-DShH4ce_.js} +2 -2
  107. package/dist/{register.setup-DlFQIXoR.js → register.setup-BxsKZdfB.js} +2 -2
  108. package/dist/{register.setup-B0zmlTXV.js → register.setup-d2XyhTY9.js} +2 -2
  109. package/dist/{register.status-health-sessions-16paRP9f.js → register.status-health-sessions-CADZZQMe.js} +4 -4
  110. package/dist/{register.status-health-sessions-CtXhn9Dq.js → register.status-health-sessions-wyNUhSbK.js} +4 -4
  111. package/dist/{register.subclis-lskGgus9.js → register.subclis-Bh3Lakik.js} +9 -9
  112. package/dist/{reply-DfRr_KdS.js → reply-AI4n5V-o.js} +11 -11
  113. package/dist/{run-main-Bj-8MZGb.js → run-main-DNLZvSB0.js} +15 -15
  114. package/dist/{runner-PgRFPYUj.js → runner-BzNdfqDz.js} +1 -1
  115. package/dist/{server-node-events-Benu2lR2.js → server-node-events-B9rufyZR.js} +3 -3
  116. package/dist/{server-node-events-B_LUFrA_.js → server-node-events-DPeIs1oo.js} +3 -3
  117. package/dist/{status-DxcdgCyX.js → status-CvtDDIW9.js} +2 -2
  118. package/dist/{status-DzCllHYZ.js → status-rvywYmZR.js} +2 -2
  119. package/dist/{subagent-registry-BcpHnckA.js → subagent-registry-D7Dwl-dH.js} +11 -11
  120. package/dist/{update-cli-B53rJqAV.js → update-cli-Bofvelva.js} +8 -8
  121. package/dist/{update-cli-CTETjvrF.js → update-cli-DaGTiqso.js} +9 -9
  122. package/dist/{update-runner-BGAdvd0c.js → update-runner-4txNUERu.js} +1 -1
  123. package/dist/{update-runner-BOGIWX18.js → update-runner-B9mGXrK4.js} +1 -1
  124. package/dist/{web-C7HXffph.js → web-BsIp9miY.js} +3 -3
  125. package/dist/{web-CqOVupWI.js → web-D3gEaA39.js} +3 -3
  126. package/dist/{web-3nv8mK11.js → web-DhiwmDh8.js} +3 -3
  127. package/dist/{web-Dwj9igbL.js → web-JPsGpVZ5.js} +8 -8
  128. package/package.json +1 -1
@@ -26,28 +26,53 @@ async function writeState(state) {
26
26
  updatedAt: (/* @__PURE__ */ new Date()).toISOString()
27
27
  }, null, 2)}\n`, "utf8");
28
28
  }
29
+ async function isAntonLockPid(pid) {
30
+ try {
31
+ const { stdout } = await execFile$1("ps", [
32
+ "-p",
33
+ String(pid),
34
+ "-o",
35
+ "args="
36
+ ], { encoding: "utf8" });
37
+ const cmd = stdout.trim().toLowerCase();
38
+ return cmd.includes(" anton") || cmd.endsWith("anton") || cmd.includes(" node ") && cmd.includes("anton");
39
+ } catch {
40
+ return false;
41
+ }
42
+ }
29
43
  async function acquireLock(force = false) {
30
44
  await ensureStateDir();
45
+ const payload = JSON.stringify({
46
+ pid: process.pid,
47
+ startedAt: (/* @__PURE__ */ new Date()).toISOString()
48
+ });
31
49
  try {
32
- await fs.writeFile(ANTON_LOCK_PATH, JSON.stringify({
33
- pid: process.pid,
34
- startedAt: (/* @__PURE__ */ new Date()).toISOString()
35
- }), {
50
+ await fs.writeFile(ANTON_LOCK_PATH, payload, {
36
51
  encoding: "utf8",
37
52
  flag: "wx"
38
53
  });
54
+ return;
55
+ } catch {}
56
+ let staleOrInvalid = false;
57
+ try {
58
+ const raw = await fs.readFile(ANTON_LOCK_PATH, "utf8");
59
+ const parsed = JSON.parse(raw);
60
+ const pid = Number(parsed?.pid);
61
+ if (!Number.isFinite(pid) || pid <= 0) staleOrInvalid = true;
62
+ else staleOrInvalid = !await isAntonLockPid(pid);
39
63
  } catch {
40
- if (!force) throw new Error("Anton is already running (lock held)");
41
- await fs.rm(ANTON_LOCK_PATH, { force: true });
42
- await fs.writeFile(ANTON_LOCK_PATH, JSON.stringify({
43
- pid: process.pid,
44
- startedAt: (/* @__PURE__ */ new Date()).toISOString(),
45
- force: true
46
- }), {
47
- encoding: "utf8",
48
- flag: "wx"
49
- });
64
+ staleOrInvalid = true;
50
65
  }
66
+ if (!force && !staleOrInvalid) throw new Error("Anton is already running (lock held)");
67
+ await fs.rm(ANTON_LOCK_PATH, { force: true });
68
+ await fs.writeFile(ANTON_LOCK_PATH, JSON.stringify({
69
+ pid: process.pid,
70
+ startedAt: (/* @__PURE__ */ new Date()).toISOString(),
71
+ force: force || staleOrInvalid
72
+ }), {
73
+ encoding: "utf8",
74
+ flag: "wx"
75
+ });
51
76
  }
52
77
  async function releaseLock() {
53
78
  await fs.rm(ANTON_LOCK_PATH, { force: true });
@@ -80,6 +105,13 @@ function markTaskDone(markdown, lineNo) {
80
105
  function isJsonTaskFile(taskFile) {
81
106
  return taskFile.toLowerCase().endsWith(".json");
82
107
  }
108
+ function isJsonTaskComplete(obj) {
109
+ if (obj.done === true) return true;
110
+ const status = typeof obj.status === "string" ? obj.status.trim().toLowerCase() : "";
111
+ if (status === "complete" || status === "completed" || status === "done") return true;
112
+ if (status === "incomplete" || status === "pending" || status === "todo" || status === "open") return false;
113
+ return false;
114
+ }
83
115
  function parsePendingTasksFromJson(jsonText) {
84
116
  const data = JSON.parse(jsonText);
85
117
  const pending = [];
@@ -90,7 +122,7 @@ function parsePendingTasksFromJson(jsonText) {
90
122
  for (const sub of subtasks) {
91
123
  if (!sub || typeof sub !== "object") continue;
92
124
  const subObj = sub;
93
- if (subObj.done === true) continue;
125
+ if (isJsonTaskComplete(subObj)) continue;
94
126
  const name = typeof subObj.name === "string" ? subObj.name.trim() : "";
95
127
  if (!name) continue;
96
128
  const subDetails = typeof subObj.details === "string" ? subObj.details.trim() : "";
@@ -100,7 +132,7 @@ function parsePendingTasksFromJson(jsonText) {
100
132
  return details.length > 0 ? details.join("\n\n") : void 0;
101
133
  };
102
134
  const pushTask = (jsonPath, obj) => {
103
- if (obj.done === true) return;
135
+ if (isJsonTaskComplete(obj)) return;
104
136
  const text = typeof obj.name === "string" ? obj.name.trim() : "";
105
137
  if (!text) return;
106
138
  const subtasks = Array.isArray(obj.subtasks) ? obj.subtasks : [];
@@ -139,6 +171,7 @@ function markJsonTaskDone(data, jsonPath) {
139
171
  }
140
172
  if (!cur || typeof cur !== "object" || Array.isArray(cur)) return;
141
173
  cur.done = true;
174
+ cur.status = "complete";
142
175
  }
143
176
  function formatTaskForPrompt(task) {
144
177
  if (task.details) return `${task.text}
@@ -362,7 +395,7 @@ async function loadAntonConfig() {
362
395
  }
363
396
  }
364
397
  async function runAgentTask(args) {
365
- const { agentCliCommand } = await import("./agent-via-gateway-MuDsrNW6.js");
398
+ const { agentCliCommand } = await import("./agent-via-gateway-RUSmiQPF.js");
366
399
  const extraSystemPrompt = args.workspaceDir ? `Your working directory is: ${args.workspaceDir}\nAll file paths are relative to this directory. Use this as your cwd for all operations.` : void 0;
367
400
  const result = await agentCliCommand({
368
401
  message: args.message,
@@ -425,6 +458,29 @@ async function getGitChangedFileCount(cwd, ignorePaths = []) {
425
458
  return null;
426
459
  }
427
460
  }
461
+ async function getGitHeadCommit(cwd) {
462
+ try {
463
+ const { stdout } = await execFile$1("git", ["rev-parse", "HEAD"], { cwd });
464
+ const sha = stdout.trim();
465
+ return sha.length > 0 ? sha : null;
466
+ } catch {
467
+ return null;
468
+ }
469
+ }
470
+ async function getGitReflogTop(cwd) {
471
+ try {
472
+ const { stdout } = await execFile$1("git", [
473
+ "reflog",
474
+ "-n",
475
+ "1",
476
+ "--format=%H:%gs"
477
+ ], { cwd });
478
+ const value = stdout.trim();
479
+ return value.length > 0 ? value : null;
480
+ } catch {
481
+ return null;
482
+ }
483
+ }
428
484
  function extractJsonObject(text) {
429
485
  const trimmed = text.trim();
430
486
  if (!trimmed) return null;
@@ -720,11 +776,15 @@ async function runAnton(args) {
720
776
  const raw = await fs.readFile(filePath, "utf8");
721
777
  let pending = [];
722
778
  let jsonData;
723
- if (isJsonTaskFile(filePath)) {
779
+ if (isJsonTaskFile(filePath)) try {
724
780
  const parsed = parsePendingTasksFromJson(raw);
725
781
  pending = parsed.pending;
726
782
  jsonData = parsed.data;
727
- } else pending = parsePendingTasks(raw);
783
+ } catch (err) {
784
+ const msg = err instanceof Error ? err.message : String(err);
785
+ throw new Error(`Invalid JSON task file: ${filePath} (${msg})`, { cause: err });
786
+ }
787
+ else pending = parsePendingTasks(raw);
728
788
  const notify = args.onProgress ?? (async () => {});
729
789
  if (args.dryRun) {
730
790
  args.runtime.log(`Dry run: ${pending.length} pending task(s)`);
@@ -818,6 +878,8 @@ async function runAnton(args) {
818
878
  const gitCwdForBaseline = args.workspaceDir ? path.resolve(args.workspaceDir) : path.dirname(filePath);
819
879
  const taskFileRelForBaseline = path.relative(gitCwdForBaseline, filePath).replace(/\\/g, "/");
820
880
  const changedBeforeTask = await getGitChangedFileCount(gitCwdForBaseline, taskFileRelForBaseline.startsWith("..") ? [] : [taskFileRelForBaseline]);
881
+ const headBeforeTask = await getGitHeadCommit(gitCwdForBaseline);
882
+ const reflogBeforeTask = await getGitReflogTop(gitCwdForBaseline);
821
883
  if (mode === "preflight") {
822
884
  await hardCleanRepo(repoCwd);
823
885
  await ensureRepoCleanOrThrow(repoCwd);
@@ -913,8 +975,10 @@ async function runAnton(args) {
913
975
  workspaceDir: args.workspaceDir
914
976
  });
915
977
  let changedAfter = await getGitChangedFileCount(gitCwd, changeIgnores);
916
- if (mode === "direct" && changedBeforeTask !== null && changedAfter !== null && changedAfter <= changedBeforeTask && !allowNoChanges) throw new Error("Implementation made no repository changes; refusing to mark task complete");
917
- if (mode === "preflight" && changedBeforeTask !== null && changedAfter !== null && changedAfter <= changedBeforeTask) {
978
+ let headAfterTask = await getGitHeadCommit(gitCwd);
979
+ let reflogAfterTask = await getGitReflogTop(gitCwd);
980
+ if (mode === "direct" && changedBeforeTask !== null && changedAfter !== null && changedAfter <= changedBeforeTask && headBeforeTask !== null && headAfterTask === headBeforeTask && reflogBeforeTask !== null && reflogAfterTask === reflogBeforeTask && !allowNoChanges) throw new Error("Implementation made no repository changes; refusing to mark task complete");
981
+ if (mode === "preflight" && changedBeforeTask !== null && changedAfter !== null && changedAfter <= changedBeforeTask && headBeforeTask !== null && headAfterTask === headBeforeTask && reflogBeforeTask !== null && reflogAfterTask === reflogBeforeTask) {
918
982
  if (!allowNoChanges) {
919
983
  const retrySessionId = `anton-impl-retry-${Date.now()}-${taskNum}`;
920
984
  await notify({
@@ -937,7 +1001,9 @@ async function runAnton(args) {
937
1001
  workspaceDir: args.workspaceDir
938
1002
  });
939
1003
  changedAfter = await getGitChangedFileCount(gitCwd, changeIgnores);
940
- if (changedAfter !== null && changedAfter <= changedBeforeTask) throw new Error("Implementation made no repository changes after retry; refusing to mark task complete");
1004
+ headAfterTask = await getGitHeadCommit(gitCwd);
1005
+ reflogAfterTask = await getGitReflogTop(gitCwd);
1006
+ if (changedAfter !== null && changedAfter <= changedBeforeTask && headBeforeTask !== null && headAfterTask === headBeforeTask && reflogBeforeTask !== null && reflogAfterTask === reflogBeforeTask) throw new Error("Implementation made no repository changes after retry; refusing to mark task complete");
941
1007
  }
942
1008
  }
943
1009
  const latest = await fs.readFile(filePath, "utf8");
@@ -1,6 +1,6 @@
1
1
  import { a as buildGroupHistoryKey, f as DEFAULT_ACCOUNT_ID, n as DEFAULT_MAIN_KEY, r as buildAgentMainSessionKey, s as normalizeAgentId } from "./session-key-47BV2tLd.js";
2
2
  import { i as resolveWhatsAppAccount } from "./accounts-BLYMokxV.js";
3
- import { A as formatDurationPrecise, Ct as formatInboundEnvelope, Gt as resolveOpenProviderRuntimeGroupPolicy, Lt as resolveDmGroupAccessWithCommandGate, Mt as buildPairingReply, Pt as readStoreAllowFromForDmPolicy, Rt as resolveDmGroupAccessWithLists, Tt as resolveEnvelopeFormatOptions, Wt as resolveDefaultGroupPolicy, X as shouldAckReactionForWhatsApp, Z as resolveMentionGating, _ as resolveInboundDebounceMs, ct as recordPendingHistoryEntryIfEnabled, g as createInboundDebouncer, i as parseActivationCommand, j as enqueueSystemEvent, l as computeBackoff, lt as buildMentionRegexes, m as dispatchReplyWithBufferedBlockDispatcher, nt as buildHistoryContextFromEntries, qt as warnMissingProviderGroupPolicyFallbackOnce, r as normalizeGroupActivation, t as getReplyFromConfig, tt as DEFAULT_GROUP_HISTORY_LIMIT, u as sleepWithAbort, ut as normalizeMentionText, v as hasControlCommand, y as shouldComputeCommandAuthorized, yt as createDedupeCache } from "./reply-BTVimsoK.js";
3
+ import { A as formatDurationPrecise, Ct as formatInboundEnvelope, Gt as resolveOpenProviderRuntimeGroupPolicy, Lt as resolveDmGroupAccessWithCommandGate, Mt as buildPairingReply, Pt as readStoreAllowFromForDmPolicy, Rt as resolveDmGroupAccessWithLists, Tt as resolveEnvelopeFormatOptions, Wt as resolveDefaultGroupPolicy, X as shouldAckReactionForWhatsApp, Z as resolveMentionGating, _ as resolveInboundDebounceMs, ct as recordPendingHistoryEntryIfEnabled, g as createInboundDebouncer, i as parseActivationCommand, j as enqueueSystemEvent, l as computeBackoff, lt as buildMentionRegexes, m as dispatchReplyWithBufferedBlockDispatcher, nt as buildHistoryContextFromEntries, qt as warnMissingProviderGroupPolicyFallbackOnce, r as normalizeGroupActivation, t as getReplyFromConfig, tt as DEFAULT_GROUP_HISTORY_LIMIT, u as sleepWithAbort, ut as normalizeMentionText, v as hasControlCommand, y as shouldComputeCommandAuthorized, yt as createDedupeCache } from "./reply-DhycbFxW.js";
4
4
  import { r as loadConfig } from "./config-CEgzwk0J.js";
5
5
  import { A as shouldLogVerbose, D as logVerbose, I as getChildLogger, d as normalizeE164, l as isSelfChatMode, m as resolveJidToE164, n as clamp, u as jidToE164, x as toWhatsappJid, y as sleep } from "./utils-Dyj2wV4e.js";
6
6
  import { l as normalizeChatChannelId, t as createSubsystemLogger } from "./subsystem-DWPzKeZ0.js";
@@ -878,7 +878,7 @@ async function monitorWebInbox(options) {
878
878
  };
879
879
  const stopText = (inboundMessage.body ?? "").trim();
880
880
  if (stopText) {
881
- const { isAbortRequestText, emergencyStop, resolveSessionForEmergencyStop } = await import("./emergency-stop-Ci4JC4dU.js");
881
+ const { isAbortRequestText, emergencyStop, resolveSessionForEmergencyStop } = await import("./emergency-stop-DylRK_E8.js");
882
882
  if (isAbortRequestText(stopText)) {
883
883
  const { loadConfig: loadCfg } = await import("./config-CEgzwk0J.js").then((n) => n.t);
884
884
  const { resolveAgentRoute } = await import("./resolve-route-BZABUE4J.js").then((n) => n.r);
@@ -18,7 +18,7 @@ var deps_exports = /* @__PURE__ */ __exportAll({ createDefaultDeps: () => create
18
18
  function createDefaultDeps() {
19
19
  return {
20
20
  sendMessageWhatsApp: async (...args) => {
21
- const { sendMessageWhatsApp } = await import("./web-HiiN5NkP.js");
21
+ const { sendMessageWhatsApp } = await import("./web-yryYzFPs.js");
22
22
  return await sendMessageWhatsApp(...args);
23
23
  },
24
24
  sendMessageTelegram: async (...args) => {
@@ -1,5 +1,5 @@
1
1
  import "./accounts-BLYMokxV.js";
2
- import { S as stopSubagentsForRequester, b as formatAbortReplyText, n as abortEmbeddedPiRun, w as clearSessionQueues, x as isAbortRequestText } from "./reply-BTVimsoK.js";
2
+ import { S as stopSubagentsForRequester, b as formatAbortReplyText, n as abortEmbeddedPiRun, w as clearSessionQueues, x as isAbortRequestText } from "./reply-DhycbFxW.js";
3
3
  import "./paths-CtGV5i8O.js";
4
4
  import "./github-copilot-token-CY2euW0d.js";
5
5
  import "./config-CEgzwk0J.js";
@@ -61,7 +61,7 @@ import "./send-B26cNPqY.js";
61
61
  import "./proxy-C4ewPdlN.js";
62
62
  import "./resolve-route-BZABUE4J.js";
63
63
  import "./replies-ZovJp-3F.js";
64
- import "./deps-FuyQakmK.js";
64
+ import "./deps-C8qACokW.js";
65
65
  import "./outbound-attachment-BisU5Vji.js";
66
66
 
67
67
  //#region src/auto-reply/reply/emergency-stop.ts
@@ -1,6 +1,6 @@
1
1
  import { f as DEFAULT_ACCOUNT_ID, p as normalizeAccountId, u as resolveThreadSessionKeys } from "./session-key-47BV2tLd.js";
2
2
  import { a as resolveWhatsAppAuthDir, i as resolveWhatsAppAccount, n as listWhatsAppAccountIds, o as createAccountListHelpers, r as resolveDefaultWhatsAppAccountId } from "./accounts-BLYMokxV.js";
3
- import { $ as mergeAllowlist, $t as unregisterAcpRuntimeBackend, At as extractToolSend, B as formatDocsLink, Bt as resolveControlCommandGate, D as stripMarkdown, Dt as formatZonedTimestamp, E as processLineMessage, Et as formatUtcTimestamp, Ft as resolveDmAllowState, G as logInboundDrop, Gt as resolveOpenProviderRuntimeGroupPolicy, H as stringEnum, Ht as resetMissingProviderGroupPolicyFallbackWarningsForTesting, It as resolveDmGroupAccessDecision, J as removeAckReactionAfterReply, Jt as isDangerousNameMatchingEnabled, K as logTypingFailure, Kt as resolveRuntimeGroupPolicy, L as resolveDiscordUserAllowlist, Lt as resolveDmGroupAccessWithCommandGate, M as resolveSlackUserAllowlist, N as resolveSlackChannelAllowlist, Nt as DM_GROUP_ACCESS_REASON, O as createReceiptCard, Ot as resolveTimezone, P as detectBinary, Pt as readStoreAllowFromForDmPolicy, Q as resolveMentionGatingWithBypass, Qt as requireAcpRuntimeBackend, R as resolveDiscordChannelAllowlist, Rt as resolveDmGroupAccessWithLists, St as rejectDevicePairing, T as hasMarkdownToConvert, U as recordInboundSession, Ut as resolveAllowlistProviderRuntimeGroupPolicy, V as optionalStringEnum, Vt as GROUP_POLICY_BLOCKED_LABEL, W as logAckFailure, Wt as resolveDefaultGroupPolicy, X as shouldAckReactionForWhatsApp, Xt as getAcpRuntimeBackend, Y as shouldAckReaction, Yt as registerPluginHttpRoute, Z as resolveMentionGating, Zt as registerAcpRuntimeBackend, _t as readRequestBodyWithLimit, a as listLineAccountIds, an as formatAllowlistMatchMeta, at as clearHistoryEntriesIfEnabled, bt as approveDevicePairing, c as resolveLineAccount, cn as BLUEBUBBLES_ACTION_NAMES, ct as recordPendingHistoryEntryIfEnabled, dt as DEFAULT_WEBHOOK_BODY_TIMEOUT_MS, en as ACP_ERROR_CODES, et as summarizeMapping, ft as DEFAULT_WEBHOOK_MAX_BODY_BYTES, gt as readJsonBodyWithLimit, ht as isRequestBodyLimitError, in as unbindThreadBindingsBySessionKey, it as clearHistoryEntries, jt as issuePairingChallenge, k as attachFooterText, kt as buildMediaPayload, ln as BLUEBUBBLES_GROUP_ACTIONS, mt as installRequestBodyLimitGuard, nn as autoBindSpawnedDiscordSubagent, o as normalizeAccountId$1, on as resolveAllowlistMatchSimple, ot as evictOldHistoryKeys, pt as RequestBodyLimitError, q as createTypingCallbacks, qt as warnMissingProviderGroupPolicyFallbackOnce, rn as listThreadBindingsBySessionKey, rt as buildPendingHistoryContextFromMap, s as resolveDefaultLineAccountId, sn as BLUEBUBBLES_ACTIONS, st as recordPendingHistoryEntry, tn as AcpRuntimeError, tt as DEFAULT_GROUP_HISTORY_LIMIT, un as CHANNEL_MESSAGE_ACTION_NAMES, vt as requestBodyErrorToText, wt as formatInboundFromLabel, xt as listDevicePairing, yt as createDedupeCache, z as collectDiscordAuditChannelIds, zt as resolveEffectiveAllowFromLists } from "./reply-BTVimsoK.js";
3
+ import { $ as mergeAllowlist, $t as unregisterAcpRuntimeBackend, At as extractToolSend, B as formatDocsLink, Bt as resolveControlCommandGate, D as stripMarkdown, Dt as formatZonedTimestamp, E as processLineMessage, Et as formatUtcTimestamp, Ft as resolveDmAllowState, G as logInboundDrop, Gt as resolveOpenProviderRuntimeGroupPolicy, H as stringEnum, Ht as resetMissingProviderGroupPolicyFallbackWarningsForTesting, It as resolveDmGroupAccessDecision, J as removeAckReactionAfterReply, Jt as isDangerousNameMatchingEnabled, K as logTypingFailure, Kt as resolveRuntimeGroupPolicy, L as resolveDiscordUserAllowlist, Lt as resolveDmGroupAccessWithCommandGate, M as resolveSlackUserAllowlist, N as resolveSlackChannelAllowlist, Nt as DM_GROUP_ACCESS_REASON, O as createReceiptCard, Ot as resolveTimezone, P as detectBinary, Pt as readStoreAllowFromForDmPolicy, Q as resolveMentionGatingWithBypass, Qt as requireAcpRuntimeBackend, R as resolveDiscordChannelAllowlist, Rt as resolveDmGroupAccessWithLists, St as rejectDevicePairing, T as hasMarkdownToConvert, U as recordInboundSession, Ut as resolveAllowlistProviderRuntimeGroupPolicy, V as optionalStringEnum, Vt as GROUP_POLICY_BLOCKED_LABEL, W as logAckFailure, Wt as resolveDefaultGroupPolicy, X as shouldAckReactionForWhatsApp, Xt as getAcpRuntimeBackend, Y as shouldAckReaction, Yt as registerPluginHttpRoute, Z as resolveMentionGating, Zt as registerAcpRuntimeBackend, _t as readRequestBodyWithLimit, a as listLineAccountIds, an as formatAllowlistMatchMeta, at as clearHistoryEntriesIfEnabled, bt as approveDevicePairing, c as resolveLineAccount, cn as BLUEBUBBLES_ACTION_NAMES, ct as recordPendingHistoryEntryIfEnabled, dt as DEFAULT_WEBHOOK_BODY_TIMEOUT_MS, en as ACP_ERROR_CODES, et as summarizeMapping, ft as DEFAULT_WEBHOOK_MAX_BODY_BYTES, gt as readJsonBodyWithLimit, ht as isRequestBodyLimitError, in as unbindThreadBindingsBySessionKey, it as clearHistoryEntries, jt as issuePairingChallenge, k as attachFooterText, kt as buildMediaPayload, ln as BLUEBUBBLES_GROUP_ACTIONS, mt as installRequestBodyLimitGuard, nn as autoBindSpawnedDiscordSubagent, o as normalizeAccountId$1, on as resolveAllowlistMatchSimple, ot as evictOldHistoryKeys, pt as RequestBodyLimitError, q as createTypingCallbacks, qt as warnMissingProviderGroupPolicyFallbackOnce, rn as listThreadBindingsBySessionKey, rt as buildPendingHistoryContextFromMap, s as resolveDefaultLineAccountId, sn as BLUEBUBBLES_ACTIONS, st as recordPendingHistoryEntry, tn as AcpRuntimeError, tt as DEFAULT_GROUP_HISTORY_LIMIT, un as CHANNEL_MESSAGE_ACTION_NAMES, vt as requestBodyErrorToText, wt as formatInboundFromLabel, xt as listDevicePairing, yt as createDedupeCache, z as collectDiscordAuditChannelIds, zt as resolveEffectiveAllowFromLists } from "./reply-DhycbFxW.js";
4
4
  import "./paths-CtGV5i8O.js";
5
5
  import "./github-copilot-token-CY2euW0d.js";
6
6
  import { A as GroupPolicySchema, An as acquireFileLock, D as BlockStreamingCoalesceSchema, E as ToolPolicySchema, F as TtsConfigSchema, I as TtsModeSchema, L as TtsProviderSchema, M as MarkdownTableModeSchema, N as ReplyRuntimeConfigSchemaShape, O as DmConfigSchema, P as TtsAutoSchema, R as normalizeAllowFrom, d as GoogleChatConfigSchema, f as IMessageConfigSchema, g as TelegramConfigSchema, h as SlackConfigSchema, j as MarkdownConfigSchema, jn as withFileLock, k as DmPolicySchema, l as WhatsAppConfigSchema, m as SignalConfigSchema, p as MSTeamsConfigSchema, u as DiscordConfigSchema, z as requireOpenAllowFrom } from "./config-CEgzwk0J.js";
@@ -52,7 +52,7 @@ import { h as onDiagnosticEvent, m as isDiagnosticsEnabled, p as emitDiagnosticE
52
52
  import { n as extractOriginalFilename } from "./store-CCCXwngh.js";
53
53
  import "./pi-embedded-helpers-B68z4sHq.js";
54
54
  import { t as resolveWhatsAppOutboundTarget } from "./resolve-outbound-target-CnUtsDch.js";
55
- import { r as resolveWhatsAppHeartbeatRecipients } from "./channel-web-B6pGyJpM.js";
55
+ import { r as resolveWhatsAppHeartbeatRecipients } from "./channel-web-Dn0OzSFP.js";
56
56
  import "./thinking-g4Rrlwu4.js";
57
57
  import "./image-C_1tftC8.js";
58
58
  import "./pi-model-discovery-Dt6899be.js";
@@ -65,7 +65,7 @@ import "./send-B26cNPqY.js";
65
65
  import "./proxy-C4ewPdlN.js";
66
66
  import "./resolve-route-BZABUE4J.js";
67
67
  import "./replies-ZovJp-3F.js";
68
- import "./deps-FuyQakmK.js";
68
+ import "./deps-C8qACokW.js";
69
69
  import "./outbound-attachment-BisU5Vji.js";
70
70
  import "./outbound-Dx_q6JAI.js";
71
71
  import "./session-DdJj6_DW.js";
@@ -72,7 +72,7 @@ import { t as makeProxyFetch } from "./proxy-C4ewPdlN.js";
72
72
  import { n as resolveAgentRoute, t as buildAgentSessionKey } from "./resolve-route-BZABUE4J.js";
73
73
  import { a as createReplyReferencePlanner, i as resolveSlackThreadTs, n as deliverReplies$3, t as createSlackReplyDeliveryPlan } from "./replies-ZovJp-3F.js";
74
74
  import { i as redactIdentifier, t as getActiveWebListener } from "./active-listener-WMrtFGPv.js";
75
- import { r as createOutboundSendDepsFromCliSource, t as createDefaultDeps } from "./deps-FuyQakmK.js";
75
+ import { r as createOutboundSendDepsFromCliSource, t as createDefaultDeps } from "./deps-C8qACokW.js";
76
76
  import { createRequire } from "node:module";
77
77
  import fs, { existsSync, mkdirSync, mkdtempSync, readFileSync, renameSync, rmSync, statSync, unlinkSync, writeFileSync } from "node:fs";
78
78
  import * as path$1 from "node:path";
@@ -33095,7 +33095,7 @@ function createDiscordMessageHandler(params) {
33095
33095
  try {
33096
33096
  const messageText = resolveDiscordMessageText(data.message)?.trim();
33097
33097
  if (messageText) {
33098
- const { isAbortRequestText, emergencyStop, resolveSessionForEmergencyStop } = await import("./emergency-stop-Ci4JC4dU.js");
33098
+ const { isAbortRequestText, emergencyStop, resolveSessionForEmergencyStop } = await import("./emergency-stop-DylRK_E8.js");
33099
33099
  if (isAbortRequestText(messageText)) {
33100
33100
  const { resolveAgentRoute } = await import("./resolve-route-BZABUE4J.js").then((n) => n.r);
33101
33101
  const channelId = resolveDiscordMessageChannelId({
@@ -43839,7 +43839,7 @@ async function monitorIMessageProvider(opts = {}) {
43839
43839
  }
43840
43840
  const msgText = (message.text ?? "").trim();
43841
43841
  if (msgText) {
43842
- const { isAbortRequestText, emergencyStop, resolveSessionForEmergencyStop } = await import("./emergency-stop-Ci4JC4dU.js");
43842
+ const { isAbortRequestText, emergencyStop, resolveSessionForEmergencyStop } = await import("./emergency-stop-DylRK_E8.js");
43843
43843
  if (isAbortRequestText(msgText)) {
43844
43844
  const { resolveAgentRoute } = await import("./resolve-route-BZABUE4J.js").then((n) => n.r);
43845
43845
  const route = resolveAgentRoute({
@@ -46235,7 +46235,7 @@ function createSignalEventHandler(deps) {
46235
46235
  const senderName = envelope.sourceName ?? senderDisplay;
46236
46236
  const messageId = typeof envelope.timestamp === "number" ? String(envelope.timestamp) : void 0;
46237
46237
  if (bodyText) {
46238
- const { isAbortRequestText, emergencyStop, resolveSessionForEmergencyStop } = await import("./emergency-stop-Ci4JC4dU.js");
46238
+ const { isAbortRequestText, emergencyStop, resolveSessionForEmergencyStop } = await import("./emergency-stop-DylRK_E8.js");
46239
46239
  if (isAbortRequestText(bodyText)) {
46240
46240
  const { resolveAgentRoute } = await import("./resolve-route-BZABUE4J.js").then((n) => n.r);
46241
46241
  const route = resolveAgentRoute({
@@ -49606,7 +49606,7 @@ function createSlackMessageHandler(params) {
49606
49606
  if (ctx.markMessageSeen(message.channel, message.ts)) return;
49607
49607
  const rawText = (message.text ?? "").trim();
49608
49608
  if (rawText) {
49609
- const { isAbortRequestText, emergencyStop, resolveSessionForEmergencyStop } = await import("./emergency-stop-Ci4JC4dU.js");
49609
+ const { isAbortRequestText, emergencyStop, resolveSessionForEmergencyStop } = await import("./emergency-stop-DylRK_E8.js");
49610
49610
  if (isAbortRequestText(rawText)) {
49611
49611
  const { resolveAgentRoute } = await import("./resolve-route-BZABUE4J.js").then((n) => n.r);
49612
49612
  const route = resolveAgentRoute({
@@ -54229,7 +54229,7 @@ const registerTelegramHandlers = ({ cfg, accountId, bot, opts, runtime, mediaMax
54229
54229
  const { ctx, msg, chatId, resolvedThreadId, storeAllowFrom, sendOversizeWarning, oversizeLogMessage } = params;
54230
54230
  const text = typeof msg.text === "string" ? msg.text : void 0;
54231
54231
  if (text) {
54232
- const { isAbortRequestText, emergencyStop, resolveSessionForEmergencyStop } = await import("./emergency-stop-Ci4JC4dU.js");
54232
+ const { isAbortRequestText, emergencyStop, resolveSessionForEmergencyStop } = await import("./emergency-stop-DylRK_E8.js");
54233
54233
  if (isAbortRequestText(text)) {
54234
54234
  const senderId = msg.from?.id ? String(msg.from.id) : "";
54235
54235
  if (!senderId || !allowFrom?.length || allowFrom.includes(senderId)) {
@@ -57714,7 +57714,7 @@ function loadWebLoginQr() {
57714
57714
  return webLoginQrPromise;
57715
57715
  }
57716
57716
  function loadWebChannel() {
57717
- webChannelPromise ??= import("./web-HiiN5NkP.js");
57717
+ webChannelPromise ??= import("./web-yryYzFPs.js");
57718
57718
  return webChannelPromise;
57719
57719
  }
57720
57720
  function loadWhatsAppActions() {
@@ -80286,7 +80286,7 @@ const handleAntonCommand = async (params, _allowTextCommands) => {
80286
80286
  };
80287
80287
  const arg = body.slice(6).trim();
80288
80288
  if (arg === "status" || arg === "") {
80289
- const { antonStatus } = await import("./anton-CkJKOeKT.js");
80289
+ const { antonStatus } = await import("./anton-BluQsLu2.js");
80290
80290
  const lines = [];
80291
80291
  await antonStatus({
80292
80292
  log: (msg) => lines.push(msg),
@@ -80302,7 +80302,7 @@ const handleAntonCommand = async (params, _allowTextCommands) => {
80302
80302
  return { shouldContinue: false };
80303
80303
  }
80304
80304
  if (arg === "stop") {
80305
- const { antonStop } = await import("./anton-CkJKOeKT.js");
80305
+ const { antonStop } = await import("./anton-BluQsLu2.js");
80306
80306
  const lines = [];
80307
80307
  await antonStop({
80308
80308
  log: (msg) => lines.push(msg),
@@ -80340,8 +80340,8 @@ const handleAntonCommand = async (params, _allowTextCommands) => {
80340
80340
  await sendProgress(replyCtx, text);
80341
80341
  return { shouldContinue: false };
80342
80342
  }
80343
- const { runAnton, formatProgressMessage } = await import("./anton-CkJKOeKT.js");
80344
- const { createDefaultDeps } = await import("./deps-FuyQakmK.js").then((n) => n.n);
80343
+ const { runAnton, formatProgressMessage } = await import("./anton-BluQsLu2.js");
80344
+ const { createDefaultDeps } = await import("./deps-C8qACokW.js").then((n) => n.n);
80345
80345
  const { createNonExitingRuntime } = await import("./runtime-CjfcfOBD.js").then((n) => n.r);
80346
80346
  const runtime = createNonExitingRuntime();
80347
80347
  const deps = createDefaultDeps();
@@ -1,5 +1,5 @@
1
1
  import "./accounts-BLYMokxV.js";
2
- import "./reply-BTVimsoK.js";
2
+ import "./reply-DhycbFxW.js";
3
3
  import "./paths-CtGV5i8O.js";
4
4
  import "./github-copilot-token-CY2euW0d.js";
5
5
  import "./config-CEgzwk0J.js";
@@ -49,7 +49,7 @@ import "./deliver-BNfMF0Nb.js";
49
49
  import "./diagnostic-ByA6zvzu.js";
50
50
  import "./store-CCCXwngh.js";
51
51
  import "./pi-embedded-helpers-B68z4sHq.js";
52
- import { n as monitorWebInbox, t as monitorWebChannel } from "./channel-web-B6pGyJpM.js";
52
+ import { n as monitorWebInbox, t as monitorWebChannel } from "./channel-web-Dn0OzSFP.js";
53
53
  import "./thinking-g4Rrlwu4.js";
54
54
  import "./image-C_1tftC8.js";
55
55
  import "./pi-model-discovery-Dt6899be.js";
@@ -62,7 +62,7 @@ import "./send-B26cNPqY.js";
62
62
  import "./proxy-C4ewPdlN.js";
63
63
  import "./resolve-route-BZABUE4J.js";
64
64
  import "./replies-ZovJp-3F.js";
65
- import "./deps-FuyQakmK.js";
65
+ import "./deps-C8qACokW.js";
66
66
  import "./outbound-attachment-BisU5Vji.js";
67
67
  import { n as sendMessageWhatsApp } from "./outbound-Dx_q6JAI.js";
68
68
  import { i as waitForWaConnection, t as createWaSocket } from "./session-DdJj6_DW.js";
@@ -25,7 +25,7 @@ import "./logging-Bgrm4o7g.js";
25
25
  import "./auth-store-D9BmR4S6.js";
26
26
  import "./send-m4lQkQcY.js";
27
27
  import "./send-CCiDIuX4.js";
28
- import "./subagent-registry-BcpHnckA.js";
28
+ import "./subagent-registry-D7Dwl-dH.js";
29
29
  import "./paths-CC17i2eK.js";
30
30
  import "./chat-envelope-Dedaetiq.js";
31
31
  import "./client-udFMSDes.js";
@@ -108,7 +108,7 @@ import "./cli-utils-BfsDuRZS.js";
108
108
  import "./help-format-CldHB7lS.js";
109
109
  import "./progress-B76RkFx7.js";
110
110
  import "./replies-DSfpze17.js";
111
- import "./deps-BV_-fxNb.js";
111
+ import "./deps-C8gMsatU.js";
112
112
  import "./onboard-helpers-DWivfzcc.js";
113
113
  import "./prompt-style-XmK49QYK.js";
114
114
  import "./pairing-labels-D7xcHkxi.js";
@@ -118,7 +118,7 @@ import "./npm-registry-spec-BlFqJFsA.js";
118
118
  import "./skill-scanner-CdLElD51.js";
119
119
  import { a as resolvePluginInstallDir, i as installPluginFromPath, n as recordPluginInstall, r as installPluginFromNpmSpec } from "./installs-8aQVDSI0.js";
120
120
  import { t as renderTable } from "./table-aJzHv5Oe.js";
121
- import { n as resolvePinnedNpmInstallRecordForCli, r as buildPluginStatusReport } from "./npm-resolution-Ds0qg1EX.js";
121
+ import { n as resolvePinnedNpmInstallRecordForCli, r as buildPluginStatusReport } from "./npm-resolution-CPEoaDTw.js";
122
122
  import { n as updateNpmInstalledPlugins, r as findBundledPluginByNpmSpec } from "./update-If9iCjgB.js";
123
123
  import os from "node:os";
124
124
  import path from "node:path";
@@ -1,7 +1,7 @@
1
1
  import { g as resolveStateDir } from "./paths-Cn44w-EB.js";
2
2
  import { B as theme, S as shortenHomePath, g as resolveConfigDir, x as shortenHomeInString, y as resolveUserPath } from "./utils-CXzXXV2o.js";
3
3
  import "./thinking-EAliFiVK.js";
4
- import "./reply-DfRr_KdS.js";
4
+ import "./reply-AI4n5V-o.js";
5
5
  import "./agent-scope-RA0zXRpu.js";
6
6
  import "./subsystem-CGZX2PBV.js";
7
7
  import { n as defaultRuntime } from "./runtime-44j_X4Y6.js";
@@ -102,7 +102,7 @@ import "./resolve-route-D_AbcmD6.js";
102
102
  import "./replies-hSFVxL4h.js";
103
103
  import "./skill-commands-BFzmZAfo.js";
104
104
  import "./workspace-dirs-SsExQ3Bz.js";
105
- import "./deps-IpeS3x5O.js";
105
+ import "./deps-CC9rj6VE.js";
106
106
  import "./plugin-auto-enable-7DUxMy6A.js";
107
107
  import "./channel-selection-ZxRkxpuF.js";
108
108
  import "./outbound-attachment-Bot3bRnK.js";
@@ -121,7 +121,7 @@ import "./npm-registry-spec-BCbbfIhX.js";
121
121
  import "./skill-scanner-D7mzXRXd.js";
122
122
  import { a as resolvePluginInstallDir, i as installPluginFromPath, n as recordPluginInstall, r as installPluginFromNpmSpec } from "./installs-CNubze2L.js";
123
123
  import { t as renderTable } from "./table-B9AmL3M1.js";
124
- import { n as resolvePinnedNpmInstallRecordForCli, r as buildPluginStatusReport } from "./npm-resolution-D30nzRfu.js";
124
+ import { n as resolvePinnedNpmInstallRecordForCli, r as buildPluginStatusReport } from "./npm-resolution-Dz95V6fj.js";
125
125
  import { n as updateNpmInstalledPlugins, r as findBundledPluginByNpmSpec } from "./update-D79ppbMQ.js";
126
126
  import fs from "node:fs";
127
127
  import os from "node:os";
@@ -26,7 +26,7 @@ import "./logging-Bgrm4o7g.js";
26
26
  import "./auth-store-D9BmR4S6.js";
27
27
  import "./send-m4lQkQcY.js";
28
28
  import "./send-CCiDIuX4.js";
29
- import "./subagent-registry-BcpHnckA.js";
29
+ import "./subagent-registry-D7Dwl-dH.js";
30
30
  import "./paths-CC17i2eK.js";
31
31
  import "./chat-envelope-Dedaetiq.js";
32
32
  import "./client-udFMSDes.js";
@@ -109,17 +109,17 @@ import "./cli-utils-BfsDuRZS.js";
109
109
  import "./help-format-CldHB7lS.js";
110
110
  import "./progress-B76RkFx7.js";
111
111
  import "./replies-DSfpze17.js";
112
- import "./deps-BV_-fxNb.js";
112
+ import "./deps-C8gMsatU.js";
113
113
  import "./onboard-helpers-DWivfzcc.js";
114
114
  import "./prompt-style-XmK49QYK.js";
115
115
  import "./pairing-labels-D7xcHkxi.js";
116
- import "./plugin-registry-Cp2q0pVP.js";
117
- import { n as resolveCliChannelOptions } from "./channel-options-Dxc1A5iC.js";
118
- import { t as getSubCliCommandsWithSubcommands } from "./register.subclis-lskGgus9.js";
119
- import { a as registerProgramCommands, r as getCoreCliCommandsWithSubcommands } from "./command-registry-DJb9jSNL.js";
116
+ import "./plugin-registry-BCBZDFZm.js";
117
+ import { n as resolveCliChannelOptions } from "./channel-options-9SPtt4MW.js";
118
+ import { t as getSubCliCommandsWithSubcommands } from "./register.subclis-Bh3Lakik.js";
119
+ import { a as registerProgramCommands, r as getCoreCliCommandsWithSubcommands } from "./command-registry-DacWRRgz.js";
120
120
  import { r as setProgramContext } from "./program-context-BrqeiWcA.js";
121
121
  import { t as forceFreePort } from "./ports-CIJavqzS.js";
122
- import { n as formatCliBannerLine, r as hasEmittedCliBanner, t as emitCliBanner } from "./banner-B7_rwm3P.js";
122
+ import { n as formatCliBannerLine, r as hasEmittedCliBanner, t as emitCliBanner } from "./banner-DfFhVf3q.js";
123
123
  import { Command, InvalidArgumentError } from "commander";
124
124
 
125
125
  //#region src/cli/program/context.ts
@@ -258,7 +258,7 @@ function registerPreActionHooks(program, programVersion) {
258
258
  commandPath
259
259
  });
260
260
  if (PLUGIN_REQUIRED_COMMANDS.has(commandPath[0])) {
261
- const { ensurePluginRegistryLoaded } = await import("./plugin-registry-Cp2q0pVP.js").then((n) => n.n);
261
+ const { ensurePluginRegistryLoaded } = await import("./plugin-registry-BCBZDFZm.js").then((n) => n.n);
262
262
  ensurePluginRegistryLoaded();
263
263
  }
264
264
  });
@@ -58,7 +58,7 @@ const entries = [
58
58
  description: "Run, inspect, and query the WebSocket Gateway",
59
59
  hasSubcommands: true,
60
60
  register: async (program) => {
61
- (await import("./gateway-cli-FNbwxOiN.js")).registerGatewayCli(program);
61
+ (await import("./gateway-cli-B4fOuxUC.js")).registerGatewayCli(program);
62
62
  }
63
63
  },
64
64
  {
@@ -90,7 +90,7 @@ const entries = [
90
90
  description: "Discover, scan, and configure models",
91
91
  hasSubcommands: true,
92
92
  register: async (program) => {
93
- (await import("./models-cli-CxEFLoMt.js")).registerModelsCli(program);
93
+ (await import("./models-cli-8wuQnOxc.js")).registerModelsCli(program);
94
94
  }
95
95
  },
96
96
  {
@@ -170,7 +170,7 @@ const entries = [
170
170
  description: "Manage internal agent hooks",
171
171
  hasSubcommands: true,
172
172
  register: async (program) => {
173
- (await import("./hooks-cli-DaWPRdgZ.js")).registerHooksCli(program);
173
+ (await import("./hooks-cli-q_ukCmeC.js")).registerHooksCli(program);
174
174
  }
175
175
  },
176
176
  {
@@ -202,7 +202,7 @@ const entries = [
202
202
  description: "Secure DM pairing (approve inbound requests)",
203
203
  hasSubcommands: true,
204
204
  register: async (program) => {
205
- const { registerPluginCliCommands } = await import("./cli-BapK2rdH.js");
205
+ const { registerPluginCliCommands } = await import("./cli-FOBK-XcZ.js");
206
206
  registerPluginCliCommands(program, await loadConfig());
207
207
  (await import("./pairing-cli-jwx6hMsM.js")).registerPairingCli(program);
208
208
  }
@@ -212,8 +212,8 @@ const entries = [
212
212
  description: "Manage IdleHands plugins and extensions",
213
213
  hasSubcommands: true,
214
214
  register: async (program) => {
215
- (await import("./plugins-cli-BaQt7jqk.js")).registerPluginsCli(program);
216
- const { registerPluginCliCommands } = await import("./cli-BapK2rdH.js");
215
+ (await import("./plugins-cli-c-YfMlpn.js")).registerPluginsCli(program);
216
+ const { registerPluginCliCommands } = await import("./cli-FOBK-XcZ.js");
217
217
  registerPluginCliCommands(program, await loadConfig());
218
218
  }
219
219
  },
@@ -222,7 +222,7 @@ const entries = [
222
222
  description: "Manage connected chat channels (Telegram, Discord, etc.)",
223
223
  hasSubcommands: true,
224
224
  register: async (program) => {
225
- (await import("./channels-cli-k45uGu5k.js")).registerChannelsCli(program);
225
+ (await import("./channels-cli-DGfqgSUL.js")).registerChannelsCli(program);
226
226
  }
227
227
  },
228
228
  {
@@ -262,7 +262,7 @@ const entries = [
262
262
  description: "Update IdleHands and inspect update channel status",
263
263
  hasSubcommands: true,
264
264
  register: async (program) => {
265
- (await import("./update-cli-B53rJqAV.js")).registerUpdateCli(program);
265
+ (await import("./update-cli-Bofvelva.js")).registerUpdateCli(program);
266
266
  }
267
267
  },
268
268
  {
@@ -298,7 +298,7 @@ const entries = [
298
298
  description: "Generate shell completion script",
299
299
  hasSubcommands: false,
300
300
  register: async (program) => {
301
- (await import("./completion-cli-DqJEZMJt.js").then((n) => n.n)).registerCompletionCli(program);
301
+ (await import("./completion-cli-NMyMglwl.js").then((n) => n.n)).registerCompletionCli(program);
302
302
  }
303
303
  }
304
304
  ];
@@ -355,7 +355,7 @@ const coreEntries = [
355
355
  hasSubcommands: false
356
356
  }],
357
357
  register: async ({ program }) => {
358
- (await import("./register.setup-DlFQIXoR.js")).registerSetupCommand(program);
358
+ (await import("./register.setup-BxsKZdfB.js")).registerSetupCommand(program);
359
359
  }
360
360
  },
361
361
  {
@@ -365,7 +365,7 @@ const coreEntries = [
365
365
  hasSubcommands: false
366
366
  }],
367
367
  register: async ({ program }) => {
368
- (await import("./register.onboard-CxwDhXRS.js")).registerOnboardCommand(program);
368
+ (await import("./register.onboard-BvDwJMC5.js")).registerOnboardCommand(program);
369
369
  }
370
370
  },
371
371
  {
@@ -375,7 +375,7 @@ const coreEntries = [
375
375
  hasSubcommands: false
376
376
  }],
377
377
  register: async ({ program }) => {
378
- (await import("./register.configure-vVDARCph.js")).registerConfigureCommand(program);
378
+ (await import("./register.configure-B3lElmGa.js")).registerConfigureCommand(program);
379
379
  }
380
380
  },
381
381
  {
@@ -385,7 +385,7 @@ const coreEntries = [
385
385
  hasSubcommands: true
386
386
  }],
387
387
  register: async ({ program }) => {
388
- (await import("./config-cli-97SkUuuT.js")).registerConfigCli(program);
388
+ (await import("./config-cli-C_DUmmo_.js")).registerConfigCli(program);
389
389
  }
390
390
  },
391
391
  {
@@ -412,7 +412,7 @@ const coreEntries = [
412
412
  }
413
413
  ],
414
414
  register: async ({ program }) => {
415
- (await import("./register.maintenance-DTXn32on.js")).registerMaintenanceCommands(program);
415
+ (await import("./register.maintenance-0PNfXeOc.js")).registerMaintenanceCommands(program);
416
416
  }
417
417
  },
418
418
  {
@@ -422,7 +422,7 @@ const coreEntries = [
422
422
  hasSubcommands: true
423
423
  }],
424
424
  register: async ({ program, ctx }) => {
425
- (await import("./register.message-CHf51taw.js")).registerMessageCommands(program, ctx);
425
+ (await import("./register.message-Dr4UBjNt.js")).registerMessageCommands(program, ctx);
426
426
  }
427
427
  },
428
428
  {
@@ -446,7 +446,7 @@ const coreEntries = [
446
446
  hasSubcommands: true
447
447
  }],
448
448
  register: async ({ program, ctx }) => {
449
- (await import("./register.agent-CTPc2Q9m.js")).registerAgentCommands(program, { agentChannelOptions: ctx.agentChannelOptions });
449
+ (await import("./register.agent-BObt1WS1.js")).registerAgentCommands(program, { agentChannelOptions: ctx.agentChannelOptions });
450
450
  }
451
451
  },
452
452
  {
@@ -468,7 +468,7 @@ const coreEntries = [
468
468
  }
469
469
  ],
470
470
  register: async ({ program }) => {
471
- (await import("./register.status-health-sessions-16paRP9f.js")).registerStatusHealthSessionsCommands(program);
471
+ (await import("./register.status-health-sessions-CADZZQMe.js")).registerStatusHealthSessionsCommands(program);
472
472
  }
473
473
  },
474
474
  {
@@ -492,7 +492,7 @@ const coreEntries = [
492
492
  hasSubcommands: true
493
493
  }],
494
494
  register: async ({ program }) => {
495
- (await import("./register.orchestrator-anton-qBr2ZYrk.js")).registerOrchestratorAntonCommands(program);
495
+ (await import("./register.orchestrator-anton-CObXxmuY.js")).registerOrchestratorAntonCommands(program);
496
496
  }
497
497
  }
498
498
  ];