@pentoshi/clai 4.10.2 → 4.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (208) hide show
  1. package/README.md +40 -7
  2. package/dist/agent/runner.js +114 -25
  3. package/dist/agent/runner.js.map +1 -1
  4. package/dist/agent/task-evidence.js +0 -63
  5. package/dist/agent/task-evidence.js.map +1 -1
  6. package/dist/app/adapters/current-store-adapter.js +8 -2
  7. package/dist/app/adapters/current-store-adapter.js.map +1 -1
  8. package/dist/app/commands/catalog.js +19 -2
  9. package/dist/app/commands/catalog.js.map +1 -1
  10. package/dist/app/controllers/session-controller.d.ts +4 -2
  11. package/dist/app/controllers/session-controller.js +26 -38
  12. package/dist/app/controllers/session-controller.js.map +1 -1
  13. package/dist/app/controllers/session-loop-recovery.d.ts +13 -0
  14. package/dist/app/controllers/session-loop-recovery.js +43 -0
  15. package/dist/app/controllers/session-loop-recovery.js.map +1 -0
  16. package/dist/app/ports/persistence-port.d.ts +3 -1
  17. package/dist/classic/bootstrap/start-classic.d.ts +1 -0
  18. package/dist/classic/bootstrap/start-classic.js +12 -4
  19. package/dist/classic/bootstrap/start-classic.js.map +1 -1
  20. package/dist/commands/providers.js +2 -0
  21. package/dist/commands/providers.js.map +1 -1
  22. package/dist/index.js +1 -0
  23. package/dist/index.js.map +1 -1
  24. package/dist/llm/capabilities.js +13 -0
  25. package/dist/llm/capabilities.js.map +1 -1
  26. package/dist/llm/free-default-model.d.ts +6 -0
  27. package/dist/llm/free-default-model.js +32 -0
  28. package/dist/llm/free-default-model.js.map +1 -0
  29. package/dist/llm/free.js +39 -0
  30. package/dist/llm/free.js.map +1 -1
  31. package/dist/llm/merge-gateway.d.ts +6 -0
  32. package/dist/llm/merge-gateway.js +157 -0
  33. package/dist/llm/merge-gateway.js.map +1 -0
  34. package/dist/llm/meta.d.ts +1 -2
  35. package/dist/llm/meta.js +31 -1140
  36. package/dist/llm/meta.js.map +1 -1
  37. package/dist/llm/provider-model-layers.js +6 -0
  38. package/dist/llm/provider-model-layers.js.map +1 -1
  39. package/dist/llm/provider-profile-layers.js +21 -0
  40. package/dist/llm/provider-profile-layers.js.map +1 -1
  41. package/dist/llm/provider.js +68 -0
  42. package/dist/llm/provider.js.map +1 -1
  43. package/dist/llm/reasoning-capability.js +8 -0
  44. package/dist/llm/reasoning-capability.js.map +1 -1
  45. package/dist/llm/responses-complete.d.ts +4 -0
  46. package/dist/llm/responses-complete.js +28 -0
  47. package/dist/llm/responses-complete.js.map +1 -0
  48. package/dist/llm/responses-config.d.ts +22 -0
  49. package/dist/llm/responses-config.js +19 -0
  50. package/dist/llm/responses-config.js.map +1 -0
  51. package/dist/llm/responses-dialect.d.ts +6 -0
  52. package/dist/llm/responses-dialect.js +6 -0
  53. package/dist/llm/responses-dialect.js.map +1 -0
  54. package/dist/llm/responses-http.d.ts +13 -0
  55. package/dist/llm/responses-http.js +88 -0
  56. package/dist/llm/responses-http.js.map +1 -0
  57. package/dist/llm/responses-parse.d.ts +42 -0
  58. package/dist/llm/responses-parse.js +242 -0
  59. package/dist/llm/responses-parse.js.map +1 -0
  60. package/dist/llm/responses-request.d.ts +15 -0
  61. package/dist/llm/responses-request.js +209 -0
  62. package/dist/llm/responses-request.js.map +1 -0
  63. package/dist/llm/responses-stream-accumulator.d.ts +38 -0
  64. package/dist/llm/responses-stream-accumulator.js +102 -0
  65. package/dist/llm/responses-stream-accumulator.js.map +1 -0
  66. package/dist/llm/responses-stream-events.d.ts +6 -0
  67. package/dist/llm/responses-stream-events.js +398 -0
  68. package/dist/llm/responses-stream-events.js.map +1 -0
  69. package/dist/llm/responses-stream-watchdog.d.ts +14 -0
  70. package/dist/llm/responses-stream-watchdog.js +64 -0
  71. package/dist/llm/responses-stream-watchdog.js.map +1 -0
  72. package/dist/llm/responses-stream.d.ts +4 -0
  73. package/dist/llm/responses-stream.js +264 -0
  74. package/dist/llm/responses-stream.js.map +1 -0
  75. package/dist/llm/router.js +3 -0
  76. package/dist/llm/router.js.map +1 -1
  77. package/dist/llm/tool-protocol.js +35 -3
  78. package/dist/llm/tool-protocol.js.map +1 -1
  79. package/dist/mcp/auth/host-credentials.d.ts +11 -0
  80. package/dist/mcp/auth/host-credentials.js +54 -0
  81. package/dist/mcp/auth/host-credentials.js.map +1 -0
  82. package/dist/mcp/auth/loopback.d.ts +16 -0
  83. package/dist/mcp/auth/loopback.js +126 -0
  84. package/dist/mcp/auth/loopback.js.map +1 -0
  85. package/dist/mcp/auth/metadata.d.ts +9 -0
  86. package/dist/mcp/auth/metadata.js +102 -0
  87. package/dist/mcp/auth/metadata.js.map +1 -0
  88. package/dist/mcp/auth/pkce.d.ts +3 -0
  89. package/dist/mcp/auth/pkce.js +17 -0
  90. package/dist/mcp/auth/pkce.js.map +1 -0
  91. package/dist/mcp/auth/provider.d.ts +24 -0
  92. package/dist/mcp/auth/provider.js +372 -0
  93. package/dist/mcp/auth/provider.js.map +1 -0
  94. package/dist/mcp/auth/registration.d.ts +12 -0
  95. package/dist/mcp/auth/registration.js +38 -0
  96. package/dist/mcp/auth/registration.js.map +1 -0
  97. package/dist/mcp/auth/security.d.ts +2 -0
  98. package/dist/mcp/auth/security.js +29 -0
  99. package/dist/mcp/auth/security.js.map +1 -0
  100. package/dist/mcp/auth/token-exchange.d.ts +24 -0
  101. package/dist/mcp/auth/token-exchange.js +66 -0
  102. package/dist/mcp/auth/token-exchange.js.map +1 -0
  103. package/dist/mcp/auth/token-store.d.ts +3 -0
  104. package/dist/mcp/auth/token-store.js +170 -0
  105. package/dist/mcp/auth/token-store.js.map +1 -0
  106. package/dist/mcp/auth/types.d.ts +62 -0
  107. package/dist/mcp/auth/types.js +2 -0
  108. package/dist/mcp/auth/types.js.map +1 -0
  109. package/dist/mcp/auth/www-authenticate.d.ts +2 -0
  110. package/dist/mcp/auth/www-authenticate.js +42 -0
  111. package/dist/mcp/auth/www-authenticate.js.map +1 -0
  112. package/dist/mcp/discovery.js +48 -1
  113. package/dist/mcp/discovery.js.map +1 -1
  114. package/dist/mcp/manager.d.ts +19 -0
  115. package/dist/mcp/manager.js +102 -10
  116. package/dist/mcp/manager.js.map +1 -1
  117. package/dist/mcp/mentions.js +2 -2
  118. package/dist/mcp/mentions.js.map +1 -1
  119. package/dist/mcp/runtime.d.ts +12 -0
  120. package/dist/mcp/runtime.js +146 -8
  121. package/dist/mcp/runtime.js.map +1 -1
  122. package/dist/mcp/transport-http.d.ts +12 -1
  123. package/dist/mcp/transport-http.js +160 -45
  124. package/dist/mcp/transport-http.js.map +1 -1
  125. package/dist/mcp/types.d.ts +18 -0
  126. package/dist/mcp/types.js.map +1 -1
  127. package/dist/mcp/validation.d.ts +10 -1
  128. package/dist/mcp/validation.js +111 -1
  129. package/dist/mcp/validation.js.map +1 -1
  130. package/dist/noninteractive/cancellation.d.ts +15 -0
  131. package/dist/noninteractive/cancellation.js +49 -0
  132. package/dist/noninteractive/cancellation.js.map +1 -0
  133. package/dist/noninteractive/readline-prompts.d.ts +1 -0
  134. package/dist/noninteractive/readline-prompts.js +14 -0
  135. package/dist/noninteractive/readline-prompts.js.map +1 -1
  136. package/dist/noninteractive/start-noninteractive.js +11 -10
  137. package/dist/noninteractive/start-noninteractive.js.map +1 -1
  138. package/dist/os/screen-sequences.d.ts +4 -0
  139. package/dist/os/screen-sequences.js +9 -0
  140. package/dist/os/screen-sequences.js.map +1 -1
  141. package/dist/os/terminal-rescue.js +2 -2
  142. package/dist/os/terminal-rescue.js.map +1 -1
  143. package/dist/os/terminal-write.d.ts +5 -0
  144. package/dist/os/terminal-write.js +45 -0
  145. package/dist/os/terminal-write.js.map +1 -0
  146. package/dist/safety/classifier.js +7 -2
  147. package/dist/safety/classifier.js.map +1 -1
  148. package/dist/session-runtime/alt-screen.js +2 -1
  149. package/dist/session-runtime/alt-screen.js.map +1 -1
  150. package/dist/session-runtime/child-bridge.d.ts +1 -1
  151. package/dist/session-runtime/child-bridge.js +7 -2
  152. package/dist/session-runtime/child-bridge.js.map +1 -1
  153. package/dist/session-runtime/client.js +13 -5
  154. package/dist/session-runtime/client.js.map +1 -1
  155. package/dist/session-runtime/host.d.ts +2 -0
  156. package/dist/session-runtime/host.js +19 -2
  157. package/dist/session-runtime/host.js.map +1 -1
  158. package/dist/session-runtime/reaper.d.ts +4 -0
  159. package/dist/session-runtime/reaper.js +64 -0
  160. package/dist/session-runtime/reaper.js.map +1 -0
  161. package/dist/session-runtime/terminal-modes.d.ts +8 -0
  162. package/dist/session-runtime/terminal-modes.js +51 -0
  163. package/dist/session-runtime/terminal-modes.js.map +1 -0
  164. package/dist/session-runtime/types.d.ts +2 -0
  165. package/dist/store/config.js +1 -0
  166. package/dist/store/config.js.map +1 -1
  167. package/dist/store/history.d.ts +9 -3
  168. package/dist/store/history.js +39 -8
  169. package/dist/store/history.js.map +1 -1
  170. package/dist/store/session-model.d.ts +28 -0
  171. package/dist/store/session-model.js +212 -0
  172. package/dist/store/session-model.js.map +1 -0
  173. package/dist/tools/definitions.d.ts +2 -0
  174. package/dist/tools/definitions.js +54 -0
  175. package/dist/tools/definitions.js.map +1 -1
  176. package/dist/tui-v2/bootstrap/renderer-handle.d.ts +2 -1
  177. package/dist/tui-v2/bootstrap/renderer-handle.js +2 -1
  178. package/dist/tui-v2/bootstrap/renderer-handle.js.map +1 -1
  179. package/dist/tui-v2/bootstrap/resize-repaint.d.ts +3 -1
  180. package/dist/tui-v2/bootstrap/resize-repaint.js +18 -2
  181. package/dist/tui-v2/bootstrap/resize-repaint.js.map +1 -1
  182. package/dist/tui-v2/bootstrap/start-tui-v2.d.ts +1 -0
  183. package/dist/tui-v2/bootstrap/start-tui-v2.js +20 -17
  184. package/dist/tui-v2/bootstrap/start-tui-v2.js.map +1 -1
  185. package/dist/tui-v2/components/transcript/intro-card.js +2 -2
  186. package/dist/tui-v2/components/transcript/intro-card.js.map +1 -1
  187. package/dist/tui-v2/composer/composer-editor.js +4 -2
  188. package/dist/tui-v2/composer/composer-editor.js.map +1 -1
  189. package/dist/types.d.ts +1 -1
  190. package/dist/types.js +1 -0
  191. package/dist/types.js.map +1 -1
  192. package/dist/ui-core/bootstrap/composition-root.d.ts +2 -2
  193. package/dist/ui-core/bootstrap/composition-root.js +3 -1
  194. package/dist/ui-core/bootstrap/composition-root.js.map +1 -1
  195. package/dist/ui-core/bootstrap/exit-epilogue.d.ts +2 -2
  196. package/dist/ui-core/bootstrap/exit-epilogue.js +1 -1
  197. package/dist/ui-core/bootstrap/exit-epilogue.js.map +1 -1
  198. package/dist/ui-core/bootstrap/session-resume.js +10 -0
  199. package/dist/ui-core/bootstrap/session-resume.js.map +1 -1
  200. package/dist/ui-core/commands/mcp-commands.js +182 -70
  201. package/dist/ui-core/commands/mcp-commands.js.map +1 -1
  202. package/dist/ui-core/commands/picker-commands.js +10 -8
  203. package/dist/ui-core/commands/picker-commands.js.map +1 -1
  204. package/dist/ui-core/commands/session-commands.js +41 -8
  205. package/dist/ui-core/commands/session-commands.js.map +1 -1
  206. package/dist/version.generated.d.ts +2 -2
  207. package/dist/version.generated.js +2 -2
  208. package/package.json +1 -1
@@ -5,8 +5,17 @@ import { mcpSelectionLabel } from "../../mcp/runtime.js";
5
5
  import { MCP_SOURCE_LABELS } from "../../mcp/types.js";
6
6
  import { composerActionPort } from "../composer/composer-action-port.js";
7
7
  const ADD_VALUE = "__mcp_add__";
8
+ const NOTION_VALUE = "__mcp_notion__";
9
+ const LOGIN_PREFIX = "__mcp_login__:";
8
10
  const ALL_VALUE = "__mcp_all__";
9
11
  const OFF_VALUE = "__mcp_off__";
12
+ const NOTION_SERVER = "notion";
13
+ const NOTION_FRAGMENT = JSON.stringify({
14
+ [NOTION_SERVER]: {
15
+ url: "https://mcp.notion.com/mcp",
16
+ auth: { kind: "oauth" },
17
+ },
18
+ });
10
19
  function selectionText(services) {
11
20
  return mcpSelectionLabel(services.mcp.getState().selection);
12
21
  }
@@ -23,6 +32,17 @@ function resolveServer(statuses, query) {
23
32
  const partial = statuses.filter((status) => status.name.toLowerCase().includes(needle));
24
33
  return partial.length === 1 ? partial[0] : undefined;
25
34
  }
35
+ function resolveConfiguredServer(services, query) {
36
+ const snapshot = services.mcp.getState().snapshot;
37
+ const direct = resolveServer(snapshot.statuses, query);
38
+ if (direct)
39
+ return direct;
40
+ const needle = query.trim().toLowerCase();
41
+ const alias = snapshot.shadowed.find((entry) => entry.name.toLowerCase() === needle);
42
+ if (!alias)
43
+ return undefined;
44
+ return snapshot.statuses.find((status) => status.name === alias.shadowedByName);
45
+ }
26
46
  function selectServer(services, status) {
27
47
  if (status.status !== "ready") {
28
48
  services.session.notice("warn", `MCP server ${status.name} is ${status.status}${status.detail ? ` · ${status.detail}` : ""} · use /mcp reconnect ${status.name}`);
@@ -92,8 +112,44 @@ async function addServer(services, supplied = "") {
92
112
  if (status?.status === "ready")
93
113
  selectServer(services, status);
94
114
  services.session.notice(status?.status === "ready" ? "info" : "warn", `${written.replaced ? "updated" : "added"} MCP server ${written.serverName} in ${written.displayPath}${status?.status === "ready" ? ` · use ${formatMcpToken(written.serverName)} in your prompt · ${status.toolCount} tool${status.toolCount === 1 ? "" : "s"}` : ` · ${status?.status ?? "not discovered"}${status?.detail ? ` · ${status.detail}` : ""}`}`);
95
- return;
115
+ return written.serverName;
96
116
  }
117
+ return undefined;
118
+ }
119
+ async function loginServer(services, query) {
120
+ const status = resolveConfiguredServer(services, query);
121
+ if (!status) {
122
+ services.session.notice("warn", query
123
+ ? `no unique MCP server matching "${query}"`
124
+ : "usage: /mcp login <server>");
125
+ return false;
126
+ }
127
+ if (!services.mcp.canLogin(status.name)) {
128
+ services.session.notice("warn", `MCP server ${status.name} is not configured for OAuth login`);
129
+ return false;
130
+ }
131
+ services.session.notice("info", `opening OAuth sign-in for MCP server ${status.name}…`);
132
+ const result = await services.mcp.agentLogin(status.name);
133
+ services.session.notice(result.ok ? "info" : "warn", result.output);
134
+ if (!result.ok)
135
+ return false;
136
+ const next = services.mcp
137
+ .getState()
138
+ .snapshot.statuses.find((candidate) => candidate.name === status.name);
139
+ if (next?.status === "ready")
140
+ selectServer(services, next);
141
+ return true;
142
+ }
143
+ async function addNotion(services) {
144
+ const serverName = await addServer(services, NOTION_FRAGMENT);
145
+ if (!serverName)
146
+ return;
147
+ const status = services.mcp
148
+ .getState()
149
+ .snapshot.statuses.find((candidate) => candidate.name === serverName);
150
+ if (status?.status === "ready")
151
+ return;
152
+ await loginServer(services, serverName);
97
153
  }
98
154
  function pickerTitle(services) {
99
155
  const state = services.mcp.getState();
@@ -107,6 +163,38 @@ function pickerTitle(services) {
107
163
  : "";
108
164
  return `MCP · ${target} · ${ready}/${statuses.length} live · ${state.activeToolCount} active tools${progress}`;
109
165
  }
166
+ function canSignIn(services, status) {
167
+ if (!services.mcp.canLogin(status.name))
168
+ return false;
169
+ return status.status === "error" || status.status === "degraded";
170
+ }
171
+ function serverPickerOptions(services) {
172
+ const state = services.mcp.getState();
173
+ return state.snapshot.statuses.map((status) => {
174
+ const signIn = canSignIn(services, status);
175
+ return {
176
+ value: signIn ? `${LOGIN_PREFIX}${status.name}` : status.name,
177
+ label: `${signIn ? "sign in" : status.status === "ready" ? "live" : status.status} · ${status.name}`,
178
+ description: signIn
179
+ ? `OAuth sign-in · ${statusDescription(status)}`
180
+ : statusDescription(status),
181
+ active: state.selection.mode === "servers" &&
182
+ state.selection.serverNames.includes(status.name),
183
+ };
184
+ });
185
+ }
186
+ function notionPickerOptions(statuses) {
187
+ if (statuses.some((status) => status.name.toLowerCase().includes("notion"))) {
188
+ return [];
189
+ }
190
+ return [
191
+ {
192
+ value: NOTION_VALUE,
193
+ label: "+ connect Notion",
194
+ description: "official hosted MCP · OAuth browser sign-in",
195
+ },
196
+ ];
197
+ }
110
198
  function pickerOptions(services) {
111
199
  const state = services.mcp.getState();
112
200
  const target = displayMcpConfigPath(projectMcpConfigPath());
@@ -116,6 +204,7 @@ function pickerOptions(services) {
116
204
  label: "+ add MCP server",
117
205
  description: `paste one JSON server object · merge into ${target}`,
118
206
  },
207
+ ...notionPickerOptions(state.snapshot.statuses),
119
208
  {
120
209
  value: OFF_VALUE,
121
210
  label: "MCP tools off",
@@ -128,13 +217,7 @@ function pickerOptions(services) {
128
217
  description: "expose every ready MCP tool for this session",
129
218
  active: state.selection.mode === "all",
130
219
  },
131
- ...state.snapshot.statuses.map((status) => ({
132
- value: status.name,
133
- label: `${status.status === "ready" ? "live" : status.status} · ${status.name}`,
134
- description: statusDescription(status),
135
- active: state.selection.mode === "servers" &&
136
- state.selection.serverNames.includes(status.name),
137
- })),
220
+ ...serverPickerOptions(services),
138
221
  ];
139
222
  }
140
223
  /**
@@ -155,6 +238,14 @@ function openPicker(services) {
155
238
  void addServer(services);
156
239
  return;
157
240
  }
241
+ if (value === NOTION_VALUE) {
242
+ void addNotion(services);
243
+ return;
244
+ }
245
+ if (value.startsWith(LOGIN_PREFIX)) {
246
+ void loginServer(services, value.slice(LOGIN_PREFIX.length));
247
+ return;
248
+ }
158
249
  if (value === ALL_VALUE) {
159
250
  services.mcp.selectAll();
160
251
  services.session.notice("info", "MCP selection · all live servers · session only");
@@ -208,8 +299,7 @@ function toolText(services, serverName) {
208
299
  return tools.map(formatToolLine).join("\n");
209
300
  }
210
301
  async function reconnect(services, query) {
211
- const statuses = services.mcp.getState().snapshot.statuses;
212
- const status = resolveServer(statuses, query);
302
+ const status = resolveConfiguredServer(services, query);
213
303
  if (!status) {
214
304
  services.session.notice("warn", query
215
305
  ? `no unique MCP server matching "${query}"`
@@ -226,6 +316,85 @@ async function reconnect(services, query) {
226
316
  services.session.notice("warn", `MCP server ${status.name} ${next?.status ?? "unavailable"}${next?.detail ? ` · ${next.detail}` : ""}`);
227
317
  }
228
318
  }
319
+ async function loginCommand(services, tail) {
320
+ await loginServer(services, tail);
321
+ }
322
+ async function addCommand(services, tail) {
323
+ if (tail.toLowerCase() === NOTION_SERVER) {
324
+ await addNotion(services);
325
+ return;
326
+ }
327
+ await addServer(services, tail);
328
+ }
329
+ function locationsCommand(services) {
330
+ services.overlay.openPager("MCP configuration locations", locationLines(services).join("\n"), undefined, undefined, "plain");
331
+ }
332
+ function allCommand(services) {
333
+ services.mcp.selectAll();
334
+ services.session.notice("info", "MCP selection · all live servers · session only");
335
+ }
336
+ function offCommand(services) {
337
+ services.mcp.selectOff();
338
+ services.session.notice("info", "MCP tools off for this session");
339
+ }
340
+ function listCommand(services) {
341
+ services.overlay.openPager("MCP catalog", catalogText(services), undefined, undefined, "plain");
342
+ }
343
+ function statusCommand(services) {
344
+ const state = services.mcp.getState();
345
+ services.overlay.openPager("MCP status", [
346
+ ...locationLines(services),
347
+ "",
348
+ `Selection: ${selectionText(services)} · ${state.activeToolCount} active tools`,
349
+ "",
350
+ formatStatuses(state.snapshot.statuses),
351
+ ...(state.snapshot.invalid.length > 0
352
+ ? [
353
+ "",
354
+ "Invalid configurations:",
355
+ ...state.snapshot.invalid.map((entry) => ` ${entry.name} · ${entry.source.path} · ${entry.errors.join("; ")}`),
356
+ ]
357
+ : []),
358
+ ].join("\n"), undefined, undefined, "plain");
359
+ }
360
+ function toolsCommand(services, tail) {
361
+ const server = tail
362
+ ? resolveServer(services.mcp.getState().snapshot.statuses, tail)
363
+ : undefined;
364
+ if (tail && !server) {
365
+ services.session.notice("warn", `no unique MCP server matching "${tail}"`);
366
+ return;
367
+ }
368
+ services.overlay.openPager(server ? `MCP tools · ${server.name}` : "MCP tools", toolText(services, server?.name), undefined, undefined, "plain");
369
+ }
370
+ async function refreshCommand(services) {
371
+ services.session.notice("info", "refreshing MCP configurations and live tools…");
372
+ const state = await services.mcp.refresh({ force: true });
373
+ const ready = state.snapshot.statuses.filter((status) => status.status === "ready").length;
374
+ services.session.notice(state.error ? "warn" : "info", `MCP refresh · ${ready}/${state.snapshot.statuses.length} live · ${state.activeToolCount} active tools${state.error ? ` · ${state.error}` : ""}`);
375
+ }
376
+ const MCP_SUBCOMMANDS = new Map([
377
+ ["login", loginCommand],
378
+ ["auth", loginCommand],
379
+ ["signin", loginCommand],
380
+ ["add", addCommand],
381
+ ["new", addCommand],
382
+ ["locations", locationsCommand],
383
+ ["location", locationsCommand],
384
+ ["paths", locationsCommand],
385
+ ["all", allCommand],
386
+ ["auto", allCommand],
387
+ ["on", allCommand],
388
+ ["off", offCommand],
389
+ ["none", offCommand],
390
+ ["list", listCommand],
391
+ ["catalog", listCommand],
392
+ ["status", statusCommand],
393
+ ["tools", toolsCommand],
394
+ ["refresh", refreshCommand],
395
+ ["reload", refreshCommand],
396
+ ["reconnect", reconnect],
397
+ ]);
229
398
  export async function handleMcp(services, invocation) {
230
399
  const args = invocation.args.trim();
231
400
  const [rawCommand = "", ...rest] = args.split(/\s+/);
@@ -238,66 +407,9 @@ export async function handleMcp(services, invocation) {
238
407
  return;
239
408
  }
240
409
  await services.mcp.ensureReady();
241
- if (command === "add" || command === "new") {
242
- await addServer(services, tail);
243
- return;
244
- }
245
- if (command === "locations" || command === "location" || command === "paths") {
246
- services.overlay.openPager("MCP configuration locations", locationLines(services).join("\n"), undefined, undefined, "plain");
247
- return;
248
- }
249
- if (command === "all" || command === "auto" || command === "on") {
250
- services.mcp.selectAll();
251
- services.session.notice("info", "MCP selection · all live servers · session only");
252
- return;
253
- }
254
- if (command === "off" || command === "none") {
255
- services.mcp.selectOff();
256
- services.session.notice("info", "MCP tools off for this session");
257
- return;
258
- }
259
- if (command === "list" || command === "catalog") {
260
- services.overlay.openPager("MCP catalog", catalogText(services), undefined, undefined, "plain");
261
- return;
262
- }
263
- if (command === "status") {
264
- const state = services.mcp.getState();
265
- services.overlay.openPager("MCP status", [
266
- ...locationLines(services),
267
- "",
268
- `Selection: ${selectionText(services)} · ${state.activeToolCount} active tools`,
269
- "",
270
- formatStatuses(state.snapshot.statuses),
271
- ...(state.snapshot.invalid.length > 0
272
- ? [
273
- "",
274
- "Invalid configurations:",
275
- ...state.snapshot.invalid.map((entry) => ` ${entry.name} · ${entry.source.path} · ${entry.errors.join("; ")}`),
276
- ]
277
- : []),
278
- ].join("\n"), undefined, undefined, "plain");
279
- return;
280
- }
281
- if (command === "tools") {
282
- const server = tail
283
- ? resolveServer(services.mcp.getState().snapshot.statuses, tail)
284
- : undefined;
285
- if (tail && !server) {
286
- services.session.notice("warn", `no unique MCP server matching "${tail}"`);
287
- return;
288
- }
289
- services.overlay.openPager(server ? `MCP tools · ${server.name}` : "MCP tools", toolText(services, server?.name), undefined, undefined, "plain");
290
- return;
291
- }
292
- if (command === "refresh" || command === "reload") {
293
- services.session.notice("info", "refreshing MCP configurations and live tools…");
294
- const state = await services.mcp.refresh({ force: true });
295
- const ready = state.snapshot.statuses.filter((status) => status.status === "ready").length;
296
- services.session.notice(state.error ? "warn" : "info", `MCP refresh · ${ready}/${state.snapshot.statuses.length} live · ${state.activeToolCount} active tools${state.error ? ` · ${state.error}` : ""}`);
297
- return;
298
- }
299
- if (command === "reconnect") {
300
- await reconnect(services, tail);
410
+ const handler = MCP_SUBCOMMANDS.get(command);
411
+ if (handler) {
412
+ await handler(services, tail);
301
413
  return;
302
414
  }
303
415
  const status = resolveServer(services.mcp.getState().snapshot.statuses, args);
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-commands.js","sourceRoot":"","sources":["../../../src/ui-core/commands/mcp-commands.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mcp-commands.js","sourceRoot":"","sources":["../../../src/ui-core/commands/mcp-commands.ts"],"names":[],"mappings":"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"}
@@ -13,9 +13,10 @@ import { providerIds } from "../../types.js";
13
13
  import { getKnownModels } from "../../app/commands/catalog.js";
14
14
  import { clearActiveProjectRoot } from "../../agent/project-root.js";
15
15
  import { appendProviderEndpoint, getActiveProviderEndpoint, addCustomProvider, getCustomProviders, removeCustomProvider, getConfig, getExaSearchType, getProviderModel, setActiveSearchProvider, setDefaultProvider, setExaSearchType, setProviderModel, setThinking, updateConfig, } from "../../store/config.js";
16
+ import { saveSessionModel } from "../../store/session-model.js";
16
17
  import { envValue, getProviderSecret, getSearchProviderKey, setProviderSecret, setSecret, unsetProviderSecret, } from "../../store/keys.js";
17
18
  import { invalidateCustomProviderCache, materializeCustomProvider, normalizeCustomBaseUrl, normalizeCustomProviderId, } from "../../llm/custom-providers.js";
18
- import { deleteSession, getSession, listSessionSummaries, purgeSession, } from "../../store/history.js";
19
+ import { getSession, listSessionSummaries, purgeSession, } from "../../store/history.js";
19
20
  import { relativeTime, shortCwd } from "../rendering/text-format.js";
20
21
  import { conversationItemCount } from "../state/transcript-types.js";
21
22
  import { applySessionResume, resumeNotices, } from "../bootstrap/session-resume.js";
@@ -67,7 +68,7 @@ export async function handleModel(services, invocation) {
67
68
  applyModel(services, provider, arg, getKnownModels(provider));
68
69
  return;
69
70
  }
70
- const currentModel = getProviderModel(provider);
71
+ const currentModel = state.model ?? getProviderModel(provider);
71
72
  const fetchingToastId = services.toast.info(`fetching ${provider} models…`, {
72
73
  key: "model-fetch",
73
74
  sticky: true,
@@ -157,16 +158,18 @@ async function collectAllModels() {
157
158
  entries.sort((a, b) => a.provider.localeCompare(b.provider) || a.model.localeCompare(b.model));
158
159
  return { entries, providers: providers.length, liveProviders, failed };
159
160
  }
161
+ function persistSessionModel(services, provider, model) {
162
+ return saveSessionModel(services.session.sessionId, { provider, model });
163
+ }
160
164
  async function switchToCatalogEntry(services, entry) {
161
165
  const state = services.session.getState();
162
166
  const current = state.provider ?? getConfig().defaultProvider;
163
167
  if (entry.provider !== current) {
164
- setDefaultProvider(entry.provider);
165
168
  services.session.setProvider(entry.provider);
166
169
  clearActiveProjectRoot();
167
170
  }
168
171
  services.session.setModel(entry.model);
169
- setProviderModel(entry.provider, entry.model);
172
+ await persistSessionModel(services, entry.provider, entry.model);
170
173
  services.session.notice("info", `provider → ${entry.provider} · model → ${entry.model}`);
171
174
  }
172
175
  export async function handleModels(services, invocation) {
@@ -236,7 +239,7 @@ function applyModel(services, provider, model, options = getKnownModels(provider
236
239
  ? options[index - 1]
237
240
  : model;
238
241
  services.session.setModel(next);
239
- setProviderModel(provider, next);
242
+ void persistSessionModel(services, provider, next).catch(() => undefined);
240
243
  services.session.notice("info", `model → ${next}`);
241
244
  }
242
245
  /** Sentinel value returned by the /provider picker for "add a custom provider". */
@@ -336,11 +339,10 @@ async function activateProvider(services, next) {
336
339
  const isFreeModel = model.startsWith("free-1/") || model.startsWith("free-2/");
337
340
  if (isFreeModel && next !== "free") {
338
341
  model = defaultModels[next];
339
- setProviderModel(next, model);
340
342
  }
341
- setDefaultProvider(next);
342
343
  services.session.setProvider(next);
343
344
  services.session.setModel(model);
345
+ await persistSessionModel(services, next, model);
344
346
  services.overlay.close();
345
347
  services.session.notice("info", `provider → ${next} · model → ${model}`);
346
348
  const fetchingToastId = services.toast.info(`fetching ${next} models…`, {
@@ -826,7 +828,7 @@ export async function handleHistory(services, invocation) {
826
828
  services.session.notice("warn", "detach or exit the live session before deleting it");
827
829
  return;
828
830
  }
829
- const result = await deleteSession(finalId);
831
+ const result = await purgeSession(finalId);
830
832
  services.session.notice(result.deleted ? "info" : "warn", result.deleted ? `deleted ${finalId}` : result.detail);
831
833
  return;
832
834
  }