@prestyj/cli 5.30.1 → 5.30.3

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 (245) hide show
  1. package/README.md +54 -38
  2. package/dist/app-sidecar/app-settings.d.ts +6 -2
  3. package/dist/app-sidecar/app-settings.js +39 -20
  4. package/dist/app-sidecar/app-settings.js.map +1 -1
  5. package/dist/app-sidecar/auth-routes.js +4 -1
  6. package/dist/app-sidecar/auth-routes.js.map +1 -1
  7. package/dist/app-sidecar/autopilot-runner.js +2 -5
  8. package/dist/app-sidecar/autopilot-runner.js.map +1 -1
  9. package/dist/app-sidecar/git-target.d.ts +17 -0
  10. package/dist/app-sidecar/git-target.js +31 -0
  11. package/dist/app-sidecar/git-target.js.map +1 -0
  12. package/dist/app-sidecar/goal-routes.d.ts +26 -0
  13. package/dist/app-sidecar/goal-routes.js +445 -0
  14. package/dist/app-sidecar/goal-routes.js.map +1 -0
  15. package/dist/app-sidecar/history-routes.d.ts +13 -0
  16. package/dist/app-sidecar/history-routes.js +36 -25
  17. package/dist/app-sidecar/history-routes.js.map +1 -1
  18. package/dist/app-sidecar/mcp-routes.js +1 -2
  19. package/dist/app-sidecar/mcp-routes.js.map +1 -1
  20. package/dist/app-sidecar/repo-polls.d.ts +5 -2
  21. package/dist/app-sidecar/repo-polls.js +20 -0
  22. package/dist/app-sidecar/repo-polls.js.map +1 -1
  23. package/dist/app-sidecar/route-context.d.ts +14 -0
  24. package/dist/app-sidecar/run-control-routes.js +2 -1
  25. package/dist/app-sidecar/run-control-routes.js.map +1 -1
  26. package/dist/app-sidecar/session-routes.js +41 -0
  27. package/dist/app-sidecar/session-routes.js.map +1 -1
  28. package/dist/app-sidecar/session-types.d.ts +2 -0
  29. package/dist/app-sidecar/workspace-routes.js +13 -95
  30. package/dist/app-sidecar/workspace-routes.js.map +1 -1
  31. package/dist/app-sidecar.js +237 -50
  32. package/dist/app-sidecar.js.map +1 -1
  33. package/dist/chat-agents/jiwa.js +2 -0
  34. package/dist/chat-agents/jiwa.js.map +1 -1
  35. package/dist/chat-agents/memory.js +2 -0
  36. package/dist/chat-agents/memory.js.map +1 -1
  37. package/dist/cli/auth.js +13 -9
  38. package/dist/cli/auth.js.map +1 -1
  39. package/dist/cli/shared.js +1 -1
  40. package/dist/cli/shared.js.map +1 -1
  41. package/dist/cli.js +8 -9
  42. package/dist/cli.js.map +1 -1
  43. package/dist/core/acceptance-checks.js +17 -4
  44. package/dist/core/acceptance-checks.js.map +1 -1
  45. package/dist/core/agent-notifications.d.ts +1 -1
  46. package/dist/core/agent-session/verification-tracker.d.ts +5 -1
  47. package/dist/core/agent-session/verification-tracker.js +25 -6
  48. package/dist/core/agent-session/verification-tracker.js.map +1 -1
  49. package/dist/core/agent-session.d.ts +83 -5
  50. package/dist/core/agent-session.js +174 -59
  51. package/dist/core/agent-session.js.map +1 -1
  52. package/dist/core/ask-user.d.ts +11 -0
  53. package/dist/core/ask-user.js +6 -1
  54. package/dist/core/ask-user.js.map +1 -1
  55. package/dist/core/auth-providers.d.ts +2 -80
  56. package/dist/core/auth-providers.js +4 -183
  57. package/dist/core/auth-providers.js.map +1 -1
  58. package/dist/core/autopilot-cycle.d.ts +2 -0
  59. package/dist/core/autopilot-cycle.js +21 -2
  60. package/dist/core/autopilot-cycle.js.map +1 -1
  61. package/dist/core/cache-diagnostics.d.ts +1 -1
  62. package/dist/core/cache-diagnostics.js +2 -1
  63. package/dist/core/cache-diagnostics.js.map +1 -1
  64. package/dist/core/checklist-prompt.d.ts +9 -2
  65. package/dist/core/checklist-prompt.js +26 -7
  66. package/dist/core/checklist-prompt.js.map +1 -1
  67. package/dist/core/checklist-snapshot.js +1 -1
  68. package/dist/core/checklist-snapshot.js.map +1 -1
  69. package/dist/core/checklist-store.d.ts +5 -1
  70. package/dist/core/checklist-store.js +35 -4
  71. package/dist/core/checklist-store.js.map +1 -1
  72. package/dist/core/compaction/tool-result-pruner.d.ts +10 -0
  73. package/dist/core/compaction/tool-result-pruner.js +12 -0
  74. package/dist/core/compaction/tool-result-pruner.js.map +1 -1
  75. package/dist/core/context-files.d.ts +8 -0
  76. package/dist/core/context-files.js +46 -0
  77. package/dist/core/context-files.js.map +1 -0
  78. package/dist/core/env-delta.d.ts +9 -1
  79. package/dist/core/env-delta.js +20 -0
  80. package/dist/core/env-delta.js.map +1 -1
  81. package/dist/core/event-bus.d.ts +1 -1
  82. package/dist/core/event-bus.js +39 -13
  83. package/dist/core/event-bus.js.map +1 -1
  84. package/dist/core/extensions/plugin-bundles.js +4 -2
  85. package/dist/core/extensions/plugin-bundles.js.map +1 -1
  86. package/dist/core/goals-store.d.ts +208 -0
  87. package/dist/core/goals-store.js +521 -0
  88. package/dist/core/goals-store.js.map +1 -0
  89. package/dist/core/hashline.d.ts +10 -8
  90. package/dist/core/hashline.js.map +1 -1
  91. package/dist/core/local-endpoint-store.js +15 -11
  92. package/dist/core/local-endpoint-store.js.map +1 -1
  93. package/dist/core/mcp/client.js +2 -0
  94. package/dist/core/mcp/client.js.map +1 -1
  95. package/dist/core/mcp/loopback.d.ts +2 -2
  96. package/dist/core/mcp/loopback.js +2 -2
  97. package/dist/core/mcp/shared-pool.js +4 -3
  98. package/dist/core/mcp/shared-pool.js.map +1 -1
  99. package/dist/core/persistent-shell.js +2 -1
  100. package/dist/core/persistent-shell.js.map +1 -1
  101. package/dist/core/process-manager.js +9 -1
  102. package/dist/core/process-manager.js.map +1 -1
  103. package/dist/core/project-discovery.d.ts +7 -0
  104. package/dist/core/project-discovery.js +9 -3
  105. package/dist/core/project-discovery.js.map +1 -1
  106. package/dist/core/project-health-scan.d.ts +109 -0
  107. package/dist/core/project-health-scan.js +673 -0
  108. package/dist/core/project-health-scan.js.map +1 -0
  109. package/dist/core/project-health-score.d.ts +41 -0
  110. package/dist/core/project-health-score.js +257 -0
  111. package/dist/core/project-health-score.js.map +1 -0
  112. package/dist/core/prompt-commands.js +44 -6
  113. package/dist/core/prompt-commands.js.map +1 -1
  114. package/dist/core/radio.d.ts +2 -3
  115. package/dist/core/radio.js.map +1 -1
  116. package/dist/core/session-manager.d.ts +7 -1
  117. package/dist/core/session-manager.js +17 -7
  118. package/dist/core/session-manager.js.map +1 -1
  119. package/dist/core/session-storage.d.ts +4 -0
  120. package/dist/core/session-storage.js +9 -3
  121. package/dist/core/session-storage.js.map +1 -1
  122. package/dist/core/steroids.d.ts +8 -0
  123. package/dist/core/steroids.js +19 -3
  124. package/dist/core/steroids.js.map +1 -1
  125. package/dist/core/subagent-manager.d.ts +51 -0
  126. package/dist/core/subagent-manager.js +114 -22
  127. package/dist/core/subagent-manager.js.map +1 -1
  128. package/dist/core/subagent-receipt.js +3 -4
  129. package/dist/core/subagent-receipt.js.map +1 -1
  130. package/dist/core/subagent-store.js +2 -1
  131. package/dist/core/subagent-store.js.map +1 -1
  132. package/dist/core/ui-adoption.js +2 -0
  133. package/dist/core/ui-adoption.js.map +1 -1
  134. package/dist/core/ui-registry.js +5 -4
  135. package/dist/core/ui-registry.js.map +1 -1
  136. package/dist/core/verification-evidence.d.ts +13 -2
  137. package/dist/core/verification-evidence.js +256 -3
  138. package/dist/core/verification-evidence.js.map +1 -1
  139. package/dist/core/verification-gate.js +4 -2
  140. package/dist/core/verification-gate.js.map +1 -1
  141. package/dist/core/verify-commands.js +2 -3
  142. package/dist/core/verify-commands.js.map +1 -1
  143. package/dist/goals-agent/goal-team.d.ts +2 -0
  144. package/dist/goals-agent/goal-team.js +83 -0
  145. package/dist/goals-agent/goal-team.js.map +1 -0
  146. package/dist/goals-agent/goals-agent.d.ts +90 -0
  147. package/dist/goals-agent/goals-agent.js +246 -0
  148. package/dist/goals-agent/goals-agent.js.map +1 -0
  149. package/dist/index.js +1 -1
  150. package/dist/index.js.map +1 -1
  151. package/dist/interactive.js +4 -3
  152. package/dist/interactive.js.map +1 -1
  153. package/dist/modes/agent-home-mode.js +1 -4
  154. package/dist/modes/agent-home-mode.js.map +1 -1
  155. package/dist/modes/subagent-worker-mode.d.ts +14 -0
  156. package/dist/modes/subagent-worker-mode.js +45 -9
  157. package/dist/modes/subagent-worker-mode.js.map +1 -1
  158. package/dist/system-prompt.d.ts +8 -0
  159. package/dist/system-prompt.js +41 -20
  160. package/dist/system-prompt.js.map +1 -1
  161. package/dist/tools/bash-read-evidence.d.ts +13 -0
  162. package/dist/tools/bash-read-evidence.js +48 -1
  163. package/dist/tools/bash-read-evidence.js.map +1 -1
  164. package/dist/tools/bash.d.ts +3 -1
  165. package/dist/tools/bash.js +8 -4
  166. package/dist/tools/bash.js.map +1 -1
  167. package/dist/tools/checklist.d.ts +5 -4
  168. package/dist/tools/checklist.js +17 -4
  169. package/dist/tools/checklist.js.map +1 -1
  170. package/dist/tools/edit.d.ts +1 -0
  171. package/dist/tools/edit.js +84 -1
  172. package/dist/tools/edit.js.map +1 -1
  173. package/dist/tools/grep.js +3 -2
  174. package/dist/tools/grep.js.map +1 -1
  175. package/dist/tools/index.d.ts +7 -1
  176. package/dist/tools/index.js +19 -8
  177. package/dist/tools/index.js.map +1 -1
  178. package/dist/tools/read-only-bash.js +3 -0
  179. package/dist/tools/read-only-bash.js.map +1 -1
  180. package/dist/tools/read-tracker.d.ts +6 -12
  181. package/dist/tools/read-tracker.js +21 -36
  182. package/dist/tools/read-tracker.js.map +1 -1
  183. package/dist/tools/read.js +2 -2
  184. package/dist/tools/read.js.map +1 -1
  185. package/dist/tools/subagent-control.js +22 -3
  186. package/dist/tools/subagent-control.js.map +1 -1
  187. package/dist/tools/write.js +110 -8
  188. package/dist/tools/write.js.map +1 -1
  189. package/dist/ui/App.js +20 -26
  190. package/dist/ui/App.js.map +1 -1
  191. package/dist/ui/components/ActivityIndicator.d.ts +5 -5
  192. package/dist/ui/components/InputArea.d.ts +2 -2
  193. package/dist/ui/components/InputArea.js +3 -5
  194. package/dist/ui/components/InputArea.js.map +1 -1
  195. package/dist/ui/components/ToolExecution.d.ts +2 -2
  196. package/dist/ui/components/ToolExecution.js +4 -3
  197. package/dist/ui/components/ToolExecution.js.map +1 -1
  198. package/dist/ui/hooks/useAgentLoop.js +7 -6
  199. package/dist/ui/hooks/useAgentLoop.js.map +1 -1
  200. package/dist/ui/hooks/useContextCompaction.js +38 -31
  201. package/dist/ui/hooks/useContextCompaction.js.map +1 -1
  202. package/dist/ui/sessions.js +1 -5
  203. package/dist/ui/sessions.js.map +1 -1
  204. package/dist/ui/utils/highlight.d.ts +0 -5
  205. package/dist/ui/utils/highlight.js +3 -49
  206. package/dist/ui/utils/highlight.js.map +1 -1
  207. package/dist/ui/utils/markdown-renderer.d.ts +6 -0
  208. package/dist/ui/utils/markdown-renderer.js +21 -5
  209. package/dist/ui/utils/markdown-renderer.js.map +1 -1
  210. package/dist/utils/format.d.ts +0 -4
  211. package/dist/utils/format.js +0 -7
  212. package/dist/utils/format.js.map +1 -1
  213. package/dist/utils/process.js +3 -3
  214. package/dist/utils/process.js.map +1 -1
  215. package/package.json +5 -8
  216. package/dist/ui/activity-phrases.d.ts +0 -10
  217. package/dist/ui/activity-phrases.js +0 -184
  218. package/dist/ui/activity-phrases.js.map +0 -1
  219. package/dist/ui/components/PlanApproval.d.ts +0 -7
  220. package/dist/ui/components/PlanApproval.js +0 -60
  221. package/dist/ui/components/PlanApproval.js.map +0 -1
  222. package/dist/ui/components/PlanBanner.d.ts +0 -5
  223. package/dist/ui/components/PlanBanner.js +0 -31
  224. package/dist/ui/components/PlanBanner.js.map +0 -1
  225. package/dist/ui/components/PlanProgress.d.ts +0 -6
  226. package/dist/ui/components/PlanProgress.js +0 -30
  227. package/dist/ui/components/PlanProgress.js.map +0 -1
  228. package/dist/ui/hooks/useMinDisplayTime.d.ts +0 -10
  229. package/dist/ui/hooks/useMinDisplayTime.js +0 -34
  230. package/dist/ui/hooks/useMinDisplayTime.js.map +0 -1
  231. package/dist/ui/hooks/useSessionManager.d.ts +0 -12
  232. package/dist/ui/hooks/useSessionManager.js +0 -43
  233. package/dist/ui/hooks/useSessionManager.js.map +0 -1
  234. package/dist/ui/hooks/useSlashCommands.d.ts +0 -6
  235. package/dist/ui/hooks/useSlashCommands.js +0 -11
  236. package/dist/ui/hooks/useSlashCommands.js.map +0 -1
  237. package/dist/ui/terminal-history-spacing.d.ts +0 -1
  238. package/dist/ui/terminal-history-spacing.js +0 -2
  239. package/dist/ui/terminal-history-spacing.js.map +0 -1
  240. package/dist/ui/utils/markdown-cache.d.ts +0 -10
  241. package/dist/ui/utils/markdown-cache.js +0 -58
  242. package/dist/ui/utils/markdown-cache.js.map +0 -1
  243. package/dist/ui/utils/token-to-ansi.d.ts +0 -8
  244. package/dist/ui/utils/token-to-ansi.js +0 -323
  245. package/dist/ui/utils/token-to-ansi.js.map +0 -1
@@ -3,7 +3,9 @@ import path from "node:path";
3
3
  import { z } from "zod";
4
4
  import { resolvePath, rejectSymlink } from "./path-utils.js";
5
5
  import { localOperations } from "./operations.js";
6
- import { assertFresh, assertFullySeen, recordWrite } from "./read-tracker.js";
6
+ import { diffLines } from "diff";
7
+ import { recordWrite, unseenLines } from "./read-tracker.js";
8
+ import { writeOverflow } from "./overflow.js";
7
9
  import { getActiveGoalMode, goalModeMutationRestriction, isPlanModeActive, } from "../core/runtime-mode.js";
8
10
  import { resolveWriteGuard } from "../core/workspace-guard.js";
9
11
  import { REDACTION_MARKER } from "@prestyj/ai";
@@ -25,6 +27,98 @@ const WriteParams = z.object({
25
27
  file_path: z.string(),
26
28
  content: z.string(),
27
29
  });
30
+ /** Above this, removed unseen lines are summarized instead of listed. */
31
+ const MAX_LISTED_CHARS = 4_000;
32
+ /**
33
+ * Edit distance past which the exact line diff gives up. Its cost grows with
34
+ * this distance times the file size, so an unbounded diff of a large rewrite
35
+ * blocked the shared daemon for minutes (30k changed lines: ~190s).
36
+ */
37
+ const MAX_DIFF_EDITS = 1_000;
38
+ /** Lines of `text`; a trailing newline does not add an empty last line. */
39
+ function splitLines(text) {
40
+ return text === "" ? [] : text.replace(/\n$/, "").split("\n");
41
+ }
42
+ /**
43
+ * Fallback for rewrites too different to diff: an old line counts as removed
44
+ * once the new text has no copies of it left. Linear time; a line that only
45
+ * moved is not reported.
46
+ */
47
+ function removedByCount(before, after, isUnseen) {
48
+ const left = new Map();
49
+ for (const text of splitLines(after))
50
+ left.set(text, (left.get(text) ?? 0) + 1);
51
+ const removed = [];
52
+ for (const [i, text] of splitLines(before).entries()) {
53
+ const copies = left.get(text) ?? 0;
54
+ if (copies > 0)
55
+ left.set(text, copies - 1);
56
+ else if (isUnseen(i + 1))
57
+ removed.push([i + 1, text]);
58
+ }
59
+ return removed;
60
+ }
61
+ /**
62
+ * On-disk lines `next` removes or replaces that fall in `unseen`, with their
63
+ * original 1-based line numbers. Line endings are normalized so a CRLF file
64
+ * rewritten with LF does not count every line as removed.
65
+ */
66
+ function removedUnseen(current, next, unseen) {
67
+ const isUnseen = (line) => unseen === "all" || unseen.some(([start, end]) => line >= start && line <= end);
68
+ const normalize = (text) => text.replace(/\r\n/g, "\n");
69
+ const before = normalize(current);
70
+ const after = normalize(next);
71
+ const changes = diffLines(before, after, { maxEditLength: MAX_DIFF_EDITS });
72
+ if (!changes)
73
+ return removedByCount(before, after, isUnseen);
74
+ const removed = [];
75
+ let line = 1;
76
+ for (const change of changes) {
77
+ if (change.added)
78
+ continue;
79
+ const lines = change.value.replace(/\n$/, "").split("\n");
80
+ if (change.removed) {
81
+ for (const [i, text] of lines.entries()) {
82
+ if (isUnseen(line + i))
83
+ removed.push([line + i, text]);
84
+ }
85
+ }
86
+ line += change.count ?? lines.length;
87
+ }
88
+ return removed;
89
+ }
90
+ /** Collapse sorted line numbers into "3-7, 12" form. */
91
+ function spans(lines) {
92
+ const ranges = [];
93
+ for (const line of lines) {
94
+ const last = ranges[ranges.length - 1];
95
+ if (last && line === last[1] + 1)
96
+ last[1] = line;
97
+ else
98
+ ranges.push([line, line]);
99
+ }
100
+ return ranges.map(([start, end]) => (start === end ? `${start}` : `${start}-${end}`)).join(", ");
101
+ }
102
+ /**
103
+ * Note appended to a successful write that removed lines the model never saw
104
+ * (unread file, changed since its last read, or only partly read). The write
105
+ * is never refused for this: refusing threw away the generated content and
106
+ * forced a full regeneration. Instead the previous file is backed up and the
107
+ * model is shown exactly what went, so it can restore anything unintended.
108
+ */
109
+ function unseenRemovalNote(removed, backup) {
110
+ const count = removed.length;
111
+ const lines = `${count} line${count === 1 ? "" : "s"}`;
112
+ const listing = removed.map(([line, text]) => `${line}|-${text}`).join("\n");
113
+ const where = backup
114
+ ? ` The previous file is saved at ${backup}.`
115
+ : " /rewind restores the previous file.";
116
+ const body = listing.length <= MAX_LISTED_CHARS
117
+ ? `:\n${listing}`
118
+ : ` (old lines ${spans(removed.map(([line]) => line))}).`;
119
+ return (`\n\nNote: this write removed ${lines} you had not seen in their current form${body}\n` +
120
+ `If that was intended, carry on. If not, put them back with edit.${where}`);
121
+ }
28
122
  export function createWriteTool(cwd, readFiles, ops = localOperations, planModeRefOrOnFileMutated, onFileMutated, onPreFileMutation, getDiagnostics, goalModeRefArg, getWriteGuardSettings) {
29
123
  const planModeRef = isPlanModeRef(planModeRefOrOnFileMutated)
30
124
  ? planModeRefOrOnFileMutated
@@ -60,13 +154,7 @@ export function createWriteTool(cwd, readFiles, ops = localOperations, planModeR
60
154
  }
61
155
  await fs.mkdir(plansDir, { recursive: true });
62
156
  }
63
- // Block overwriting existing files that haven't been read, that changed
64
- // since the last read, or that were only partly read.
65
157
  const exists = await ops.stat(resolved).then(() => true, () => false);
66
- if (readFiles && exists) {
67
- await assertFresh(readFiles, resolved, ops);
68
- assertFullySeen(readFiles, resolved);
69
- }
70
158
  // Never replace real secrets with the placeholder the model was shown.
71
159
  if (exists && content.includes(REDACTION_MARKER)) {
72
160
  const original = await ops.readFile(resolved).catch(() => undefined);
@@ -74,6 +162,20 @@ export function createWriteTool(cwd, readFiles, ops = localOperations, planModeR
74
162
  if (lossError)
75
163
  return `Error: ${lossError}`;
76
164
  }
165
+ // Lines this overwrite drops that the model never saw are reported, not
166
+ // refused. Computed before the write, against the file as it is now.
167
+ let unseenNote = "";
168
+ if (exists) {
169
+ const unseen = await unseenLines(readFiles, resolved, ops);
170
+ if (unseen === "all" || unseen.length > 0) {
171
+ const current = await ops.readFile(resolved);
172
+ const removed = removedUnseen(current, content, unseen);
173
+ if (removed.length > 0) {
174
+ const backup = await writeOverflow(current, "write-backup").catch(() => null);
175
+ unseenNote = unseenRemovalNote(removed, backup);
176
+ }
177
+ }
178
+ }
77
179
  // Snapshot the pre-mutation on-disk state for /rewind before writing.
78
180
  await onPreFileMutation?.(resolved);
79
181
  await ops.writeFile(resolved, content);
@@ -91,7 +193,7 @@ export function createWriteTool(cwd, readFiles, ops = localOperations, planModeR
91
193
  }
92
194
  }
93
195
  const lines = content.split("\n").length;
94
- return `Wrote ${lines} lines to ${resolved}` + diagnosticsNote;
196
+ return `Wrote ${lines} lines to ${resolved}` + unseenNote + diagnosticsNote;
95
197
  },
96
198
  };
97
199
  }
@@ -1 +1 @@
1
- {"version":3,"file":"write.js","sourceRoot":"","sources":["../../src/tools/write.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"write.js","sourceRoot":"","sources":["../../src/tools/write.ts"],"names":[],"mappings":"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"}
package/dist/ui/App.js CHANGED
@@ -805,29 +805,22 @@ export function App(props) {
805
805
  killTask(props.processManager, id);
806
806
  }, [props.processManager]);
807
807
  const handleTaskNavigate = useCallback((index) => navigateTaskBar(index), []);
808
- // Resolve fresh OAuth credentials before each agent loop run.
809
- // Falls back to the static props when authStorage is not available.
808
+ // Resolve fresh OAuth credentials before each agent loop run. Only wired up
809
+ // when authStorage exists; without it the loop uses the static apiKey props.
810
+ const authStorage = props.authStorage;
810
811
  const resolveCredentials = useCallback(async (opts) => {
811
- if (props.authStorage) {
812
- const creds = await props.authStorage.resolveCredentials(currentProvider, {
813
- ...opts,
814
- storageKeys: getAuthStorageKeys(currentProvider, currentModel),
815
- });
816
- return {
817
- apiKey: creds.accessToken,
818
- accountId: creds.accountId,
819
- projectId: creds.projectId,
820
- };
821
- }
822
- return { apiKey: activeApiKey, accountId: activeAccountId, projectId: activeProjectId };
823
- }, [
824
- props.authStorage,
825
- currentProvider,
826
- currentModel,
827
- activeApiKey,
828
- activeAccountId,
829
- activeProjectId,
830
- ]);
812
+ if (!authStorage)
813
+ throw new Error("resolveCredentials called without authStorage");
814
+ const creds = await authStorage.resolveCredentials(currentProvider, {
815
+ ...opts,
816
+ storageKeys: getAuthStorageKeys(currentProvider, currentModel),
817
+ });
818
+ return {
819
+ apiKey: creds.accessToken,
820
+ accountId: creds.accountId,
821
+ projectId: creds.projectId,
822
+ };
823
+ }, [authStorage, currentProvider, currentModel]);
831
824
  // Back-reference to the loop, so callbacks defined in its own options object
832
825
  // (which run long after mount) can read loop-owned refs such as runStartRef.
833
826
  const agentLoopRef = useRef(null);
@@ -844,7 +837,7 @@ export function App(props) {
844
837
  baseUrl: activeBaseUrl,
845
838
  accountId: activeAccountId,
846
839
  projectId: activeProjectId,
847
- resolveCredentials,
840
+ resolveCredentials: authStorage ? resolveCredentials : undefined,
848
841
  transformContext,
849
842
  getLoopBreakMessage: (stats, stage) => {
850
843
  if (!idealReviewEnabledRef.current)
@@ -2436,10 +2429,11 @@ export function App(props) {
2436
2429
  // re-spawning `npx` there only risks a failed
2437
2430
  // re-spawn that would silently drop the tools.
2438
2431
  const glmInvolved = newProvider === "glm" || prevProvider === "glm";
2439
- if (props.mcpManager && glmInvolved) {
2432
+ const mcpManager = props.mcpManager;
2433
+ if (mcpManager && glmInvolved) {
2440
2434
  void (async () => {
2441
2435
  // Disconnect old MCP servers
2442
- await props.mcpManager.dispose();
2436
+ await mcpManager.dispose();
2443
2437
  // Remove old MCP tools, connect new ones
2444
2438
  let apiKey;
2445
2439
  if (newProvider === "glm" && props.authStorage) {
@@ -2459,7 +2453,7 @@ export function App(props) {
2459
2453
  // ~/.ezcoder/mcp.json and ./.ezcoder/mcp.json) survive the reconnect —
2460
2454
  // getMCPServers returns provider defaults only.
2461
2455
  const servers = await getAllMcpServers(newProvider, apiKey, props.cwd);
2462
- const mcpTools = await props.mcpManager.connectAll(servers);
2456
+ const mcpTools = await mcpManager.connectAll(servers);
2463
2457
  setCurrentTools((prev) => {
2464
2458
  const next = [...prev.filter((t) => !t.name.startsWith("mcp__")), ...mcpTools];
2465
2459
  rebuildPromptWithTools(next);