@mohanscodex/spectra-code 0.4.5 → 0.4.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 (285) hide show
  1. package/dist/package.json +1 -1
  2. package/dist/src/agents/definitions.d.ts +2 -2
  3. package/dist/src/agents/definitions.d.ts.map +1 -1
  4. package/dist/src/agents/definitions.js +18 -18
  5. package/dist/src/agents/definitions.js.map +1 -1
  6. package/dist/src/agents/registry.d.ts +1 -1
  7. package/dist/src/agents/registry.d.ts.map +1 -1
  8. package/dist/src/agents/registry.js.map +1 -1
  9. package/dist/src/cli.js +117 -115
  10. package/dist/src/cli.js.map +1 -1
  11. package/dist/src/commands/agent.d.ts +1 -1
  12. package/dist/src/commands/agent.d.ts.map +1 -1
  13. package/dist/src/commands/agent.js +14 -14
  14. package/dist/src/commands/agent.js.map +1 -1
  15. package/dist/src/commands/db.d.ts +1 -1
  16. package/dist/src/commands/db.d.ts.map +1 -1
  17. package/dist/src/commands/db.js +11 -11
  18. package/dist/src/commands/db.js.map +1 -1
  19. package/dist/src/commands/doctor.d.ts.map +1 -1
  20. package/dist/src/commands/doctor.js +33 -30
  21. package/dist/src/commands/doctor.js.map +1 -1
  22. package/dist/src/commands/mcp.d.ts +1 -1
  23. package/dist/src/commands/mcp.d.ts.map +1 -1
  24. package/dist/src/commands/mcp.js +39 -39
  25. package/dist/src/commands/mcp.js.map +1 -1
  26. package/dist/src/commands/plugin.d.ts +1 -1
  27. package/dist/src/commands/plugin.d.ts.map +1 -1
  28. package/dist/src/commands/plugin.js +13 -13
  29. package/dist/src/commands/plugin.js.map +1 -1
  30. package/dist/src/commands/session.d.ts +1 -1
  31. package/dist/src/commands/session.d.ts.map +1 -1
  32. package/dist/src/commands/session.js +12 -12
  33. package/dist/src/commands/session.js.map +1 -1
  34. package/dist/src/index.d.ts +18 -18
  35. package/dist/src/index.d.ts.map +1 -1
  36. package/dist/src/index.js +16 -16
  37. package/dist/src/index.js.map +1 -1
  38. package/dist/src/integrations/acp/index.d.ts +1 -1
  39. package/dist/src/integrations/acp/index.js +1 -1
  40. package/dist/src/integrations/acp/server.d.ts.map +1 -1
  41. package/dist/src/integrations/acp/server.js +89 -79
  42. package/dist/src/integrations/acp/server.js.map +1 -1
  43. package/dist/src/integrations/custom-tools/index.d.ts +2 -2
  44. package/dist/src/integrations/custom-tools/index.js +1 -1
  45. package/dist/src/integrations/custom-tools/loader.d.ts +2 -2
  46. package/dist/src/integrations/custom-tools/loader.d.ts.map +1 -1
  47. package/dist/src/integrations/custom-tools/loader.js +19 -18
  48. package/dist/src/integrations/custom-tools/loader.js.map +1 -1
  49. package/dist/src/integrations/mcp/client.d.ts +5 -5
  50. package/dist/src/integrations/mcp/client.d.ts.map +1 -1
  51. package/dist/src/integrations/mcp/client.js +7 -7
  52. package/dist/src/integrations/mcp/client.js.map +1 -1
  53. package/dist/src/integrations/mcp/index.d.ts +2 -2
  54. package/dist/src/integrations/mcp/index.d.ts.map +1 -1
  55. package/dist/src/integrations/mcp/index.js +1 -1
  56. package/dist/src/integrations/mcp/index.js.map +1 -1
  57. package/dist/src/security/doom-loop.d.ts +1 -1
  58. package/dist/src/security/doom-loop.d.ts.map +1 -1
  59. package/dist/src/security/doom-loop.js +4 -4
  60. package/dist/src/security/doom-loop.js.map +1 -1
  61. package/dist/src/security/index.d.ts +10 -10
  62. package/dist/src/security/index.d.ts.map +1 -1
  63. package/dist/src/security/index.js +116 -69
  64. package/dist/src/security/index.js.map +1 -1
  65. package/dist/src/security/path-safety.d.ts +1 -1
  66. package/dist/src/security/path-safety.d.ts.map +1 -1
  67. package/dist/src/security/path-safety.js +19 -19
  68. package/dist/src/security/path-safety.js.map +1 -1
  69. package/dist/src/security/permissions.d.ts +1 -1
  70. package/dist/src/security/permissions.d.ts.map +1 -1
  71. package/dist/src/security/permissions.js +12 -10
  72. package/dist/src/security/permissions.js.map +1 -1
  73. package/dist/src/security/read-tracker.d.ts +2 -2
  74. package/dist/src/security/read-tracker.d.ts.map +1 -1
  75. package/dist/src/security/read-tracker.js +15 -13
  76. package/dist/src/security/read-tracker.js.map +1 -1
  77. package/dist/src/security/ssrf-guard.d.ts +1 -1
  78. package/dist/src/security/ssrf-guard.d.ts.map +1 -1
  79. package/dist/src/security/ssrf-guard.js +11 -11
  80. package/dist/src/security/ssrf-guard.js.map +1 -1
  81. package/dist/src/security/types.d.ts +4 -4
  82. package/dist/src/security/types.d.ts.map +1 -1
  83. package/dist/src/security/wildcard.d.ts.map +1 -1
  84. package/dist/src/security/wildcard.js +14 -16
  85. package/dist/src/security/wildcard.js.map +1 -1
  86. package/dist/src/services/auth-store.d.ts +3 -3
  87. package/dist/src/services/auth-store.d.ts.map +1 -1
  88. package/dist/src/services/auth-store.js +7 -7
  89. package/dist/src/services/auth-store.js.map +1 -1
  90. package/dist/src/services/config.d.ts +3 -3
  91. package/dist/src/services/config.d.ts.map +1 -1
  92. package/dist/src/services/config.js +17 -21
  93. package/dist/src/services/config.js.map +1 -1
  94. package/dist/src/services/context.d.ts.map +1 -1
  95. package/dist/src/services/context.js +5 -8
  96. package/dist/src/services/context.js.map +1 -1
  97. package/dist/src/services/custom-providers.d.ts +2 -2
  98. package/dist/src/services/custom-providers.d.ts.map +1 -1
  99. package/dist/src/services/custom-providers.js +108 -49
  100. package/dist/src/services/custom-providers.js.map +1 -1
  101. package/dist/src/services/session-store.d.ts +1 -1
  102. package/dist/src/services/session-store.d.ts.map +1 -1
  103. package/dist/src/services/session-store.js +32 -24
  104. package/dist/src/services/session-store.js.map +1 -1
  105. package/dist/src/services/snapshot-manager.d.ts.map +1 -1
  106. package/dist/src/services/snapshot-manager.js +14 -15
  107. package/dist/src/services/snapshot-manager.js.map +1 -1
  108. package/dist/src/tools/edit.d.ts +1 -1
  109. package/dist/src/tools/edit.js +18 -16
  110. package/dist/src/tools/edit.js.map +1 -1
  111. package/dist/src/tools/glob.d.ts +1 -1
  112. package/dist/src/tools/glob.d.ts.map +1 -1
  113. package/dist/src/tools/glob.js +20 -16
  114. package/dist/src/tools/glob.js.map +1 -1
  115. package/dist/src/tools/grep.d.ts +1 -1
  116. package/dist/src/tools/grep.d.ts.map +1 -1
  117. package/dist/src/tools/grep.js +18 -18
  118. package/dist/src/tools/grep.js.map +1 -1
  119. package/dist/src/tools/index.d.ts +4 -4
  120. package/dist/src/tools/index.d.ts.map +1 -1
  121. package/dist/src/tools/index.js +40 -32
  122. package/dist/src/tools/index.js.map +1 -1
  123. package/dist/src/tools/mcp-tool.d.ts +2 -2
  124. package/dist/src/tools/mcp-tool.d.ts.map +1 -1
  125. package/dist/src/tools/mcp-tool.js +28 -25
  126. package/dist/src/tools/mcp-tool.js.map +1 -1
  127. package/dist/src/tools/read.d.ts +1 -1
  128. package/dist/src/tools/read.d.ts.map +1 -1
  129. package/dist/src/tools/read.js +15 -13
  130. package/dist/src/tools/read.js.map +1 -1
  131. package/dist/src/tools/shell.d.ts +1 -1
  132. package/dist/src/tools/shell.d.ts.map +1 -1
  133. package/dist/src/tools/shell.js +71 -62
  134. package/dist/src/tools/shell.js.map +1 -1
  135. package/dist/src/tools/task.d.ts +1 -1
  136. package/dist/src/tools/task.js +22 -22
  137. package/dist/src/tools/task.js.map +1 -1
  138. package/dist/src/tools/types.d.ts +3 -3
  139. package/dist/src/tools/types.d.ts.map +1 -1
  140. package/dist/src/tools/utils.d.ts +1 -1
  141. package/dist/src/tools/utils.js +2 -2
  142. package/dist/src/tools/utils.js.map +1 -1
  143. package/dist/src/tools/web-fetch.d.ts +1 -1
  144. package/dist/src/tools/web-fetch.js +31 -31
  145. package/dist/src/tools/web-fetch.js.map +1 -1
  146. package/dist/src/tools/write.d.ts +1 -1
  147. package/dist/src/tools/write.js +9 -9
  148. package/dist/src/tools/write.js.map +1 -1
  149. package/dist/src/tui/app-constants.d.ts.map +1 -1
  150. package/dist/src/tui/app-constants.js +11 -2
  151. package/dist/src/tui/app-constants.js.map +1 -1
  152. package/dist/src/tui/app.d.ts +1 -1
  153. package/dist/src/tui/app.d.ts.map +1 -1
  154. package/dist/src/tui/app.js +293 -121
  155. package/dist/src/tui/app.js.map +1 -1
  156. package/dist/src/tui/commands.d.ts +14 -14
  157. package/dist/src/tui/commands.d.ts.map +1 -1
  158. package/dist/src/tui/commands.js +242 -49
  159. package/dist/src/tui/commands.js.map +1 -1
  160. package/dist/src/tui/components/chat-area.d.ts +2 -2
  161. package/dist/src/tui/components/chat-area.d.ts.map +1 -1
  162. package/dist/src/tui/components/chat-area.js +5 -5
  163. package/dist/src/tui/components/chat-area.js.map +1 -1
  164. package/dist/src/tui/components/command-palette.d.ts.map +1 -1
  165. package/dist/src/tui/components/command-palette.js +7 -5
  166. package/dist/src/tui/components/command-palette.js.map +1 -1
  167. package/dist/src/tui/components/message.d.ts +2 -2
  168. package/dist/src/tui/components/message.d.ts.map +1 -1
  169. package/dist/src/tui/components/message.js +63 -50
  170. package/dist/src/tui/components/message.js.map +1 -1
  171. package/dist/src/tui/components/slash-autocomplete.d.ts +2 -2
  172. package/dist/src/tui/components/slash-autocomplete.d.ts.map +1 -1
  173. package/dist/src/tui/components/slash-autocomplete.js +6 -8
  174. package/dist/src/tui/components/slash-autocomplete.js.map +1 -1
  175. package/dist/src/tui/components/toast.d.ts +2 -2
  176. package/dist/src/tui/components/toast.d.ts.map +1 -1
  177. package/dist/src/tui/components/toast.js +10 -5
  178. package/dist/src/tui/components/toast.js.map +1 -1
  179. package/dist/src/tui/hooks/use-agent.d.ts +3 -3
  180. package/dist/src/tui/hooks/use-agent.d.ts.map +1 -1
  181. package/dist/src/tui/hooks/use-agent.js +22 -29
  182. package/dist/src/tui/hooks/use-agent.js.map +1 -1
  183. package/dist/src/tui/hooks/use-app-keyboard.d.ts +3 -3
  184. package/dist/src/tui/hooks/use-app-keyboard.d.ts.map +1 -1
  185. package/dist/src/tui/hooks/use-app-keyboard.js +28 -29
  186. package/dist/src/tui/hooks/use-app-keyboard.js.map +1 -1
  187. package/dist/src/tui/hooks/use-chat-submit.d.ts +6 -6
  188. package/dist/src/tui/hooks/use-chat-submit.d.ts.map +1 -1
  189. package/dist/src/tui/hooks/use-chat-submit.js +115 -54
  190. package/dist/src/tui/hooks/use-chat-submit.js.map +1 -1
  191. package/dist/src/tui/hooks/use-permission-queue.d.ts +2 -2
  192. package/dist/src/tui/hooks/use-permission-queue.d.ts.map +1 -1
  193. package/dist/src/tui/hooks/use-permission-queue.js +1 -1
  194. package/dist/src/tui/hooks/use-permission-queue.js.map +1 -1
  195. package/dist/src/tui/hooks/use-revert.d.ts +4 -4
  196. package/dist/src/tui/hooks/use-revert.d.ts.map +1 -1
  197. package/dist/src/tui/hooks/use-revert.js +22 -13
  198. package/dist/src/tui/hooks/use-revert.js.map +1 -1
  199. package/dist/src/tui/index.d.ts.map +1 -1
  200. package/dist/src/tui/index.js +11 -11
  201. package/dist/src/tui/index.js.map +1 -1
  202. package/dist/src/tui/prompt-bar.d.ts +1 -1
  203. package/dist/src/tui/prompt-bar.d.ts.map +1 -1
  204. package/dist/src/tui/prompt-bar.js +14 -11
  205. package/dist/src/tui/prompt-bar.js.map +1 -1
  206. package/dist/src/tui/slash-commands.d.ts +2 -2
  207. package/dist/src/tui/slash-commands.d.ts.map +1 -1
  208. package/dist/src/tui/slash-commands.js +9 -9
  209. package/dist/src/tui/slash-commands.js.map +1 -1
  210. package/dist/src/tui/theme.d.ts +1 -1
  211. package/dist/src/tui/theme.d.ts.map +1 -1
  212. package/dist/src/tui/theme.js +46 -38
  213. package/dist/src/tui/theme.js.map +1 -1
  214. package/dist/src/tui/tips.d.ts.map +1 -1
  215. package/dist/src/tui/tips.js +14 -14
  216. package/dist/src/tui/tips.js.map +1 -1
  217. package/dist/src/tui/types.d.ts +5 -5
  218. package/dist/src/tui/types.d.ts.map +1 -1
  219. package/dist/src/tui/ui/about-dialog.d.ts.map +1 -1
  220. package/dist/src/tui/ui/about-dialog.js +5 -4
  221. package/dist/src/tui/ui/about-dialog.js.map +1 -1
  222. package/dist/src/tui/ui/agent-switcher.d.ts.map +1 -1
  223. package/dist/src/tui/ui/agent-switcher.js +16 -14
  224. package/dist/src/tui/ui/agent-switcher.js.map +1 -1
  225. package/dist/src/tui/ui/debug-dialog.d.ts +1 -1
  226. package/dist/src/tui/ui/debug-dialog.d.ts.map +1 -1
  227. package/dist/src/tui/ui/debug-dialog.js +26 -25
  228. package/dist/src/tui/ui/debug-dialog.js.map +1 -1
  229. package/dist/src/tui/ui/doctor-dialog.d.ts +2 -2
  230. package/dist/src/tui/ui/doctor-dialog.d.ts.map +1 -1
  231. package/dist/src/tui/ui/doctor-dialog.js +10 -8
  232. package/dist/src/tui/ui/doctor-dialog.js.map +1 -1
  233. package/dist/src/tui/ui/manage-providers-dialog.d.ts +1 -1
  234. package/dist/src/tui/ui/manage-providers-dialog.d.ts.map +1 -1
  235. package/dist/src/tui/ui/manage-providers-dialog.js +102 -86
  236. package/dist/src/tui/ui/manage-providers-dialog.js.map +1 -1
  237. package/dist/src/tui/ui/mcp-toggle-dialog.d.ts.map +1 -1
  238. package/dist/src/tui/ui/mcp-toggle-dialog.js +17 -14
  239. package/dist/src/tui/ui/mcp-toggle-dialog.js.map +1 -1
  240. package/dist/src/tui/ui/message-controls.d.ts +1 -1
  241. package/dist/src/tui/ui/message-controls.d.ts.map +1 -1
  242. package/dist/src/tui/ui/message-controls.js +40 -28
  243. package/dist/src/tui/ui/message-controls.js.map +1 -1
  244. package/dist/src/tui/ui/model-switcher.d.ts.map +1 -1
  245. package/dist/src/tui/ui/model-switcher.js +40 -25
  246. package/dist/src/tui/ui/model-switcher.js.map +1 -1
  247. package/dist/src/tui/ui/permission-dialog.d.ts +1 -1
  248. package/dist/src/tui/ui/permission-dialog.d.ts.map +1 -1
  249. package/dist/src/tui/ui/permission-dialog.js +11 -11
  250. package/dist/src/tui/ui/permission-dialog.js.map +1 -1
  251. package/dist/src/tui/ui/provider-dialog.d.ts.map +1 -1
  252. package/dist/src/tui/ui/provider-dialog.js +75 -64
  253. package/dist/src/tui/ui/provider-dialog.js.map +1 -1
  254. package/dist/src/tui/ui/session-list.d.ts +3 -3
  255. package/dist/src/tui/ui/session-list.d.ts.map +1 -1
  256. package/dist/src/tui/ui/session-list.js +44 -32
  257. package/dist/src/tui/ui/session-list.js.map +1 -1
  258. package/dist/src/tui/ui/thinking-effort-dialog.d.ts.map +1 -1
  259. package/dist/src/tui/ui/thinking-effort-dialog.js +19 -19
  260. package/dist/src/tui/ui/thinking-effort-dialog.js.map +1 -1
  261. package/dist/src/tui/utils/model-config.d.ts.map +1 -1
  262. package/dist/src/tui/utils/model-config.js +13 -13
  263. package/dist/src/tui/utils/model-config.js.map +1 -1
  264. package/dist/src/tui/utils/session-messages.d.ts +2 -2
  265. package/dist/src/tui/utils/session-messages.d.ts.map +1 -1
  266. package/dist/src/tui/utils/session-messages.js +35 -22
  267. package/dist/src/tui/utils/session-messages.js.map +1 -1
  268. package/dist/src/tui/utils/version.d.ts +2 -0
  269. package/dist/src/tui/utils/version.d.ts.map +1 -0
  270. package/dist/src/tui/utils/version.js +24 -0
  271. package/dist/src/tui/utils/version.js.map +1 -0
  272. package/dist/src/tui/utils.d.ts +2 -2
  273. package/dist/src/tui/utils.d.ts.map +1 -1
  274. package/dist/src/tui/utils.js +7 -7
  275. package/dist/src/tui/utils.js.map +1 -1
  276. package/dist/src/tui/variant-cycle.d.ts.map +1 -1
  277. package/dist/src/tui/variant-cycle.js +23 -23
  278. package/dist/src/tui/variant-cycle.js.map +1 -1
  279. package/dist/src/utils/paths.d.ts.map +1 -1
  280. package/dist/src/utils/paths.js +25 -25
  281. package/dist/src/utils/paths.js.map +1 -1
  282. package/dist/src/utils/platform.d.ts.map +1 -1
  283. package/dist/src/utils/platform.js +15 -17
  284. package/dist/src/utils/platform.js.map +1 -1
  285. package/package.json +3 -3
@@ -1,14 +1,15 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "@opentui/react/jsx-runtime";
2
- import { useMemo, useEffect } from "react";
3
- import { c } from "../theme.js";
4
- import { loadConfig } from "../../services/config.js";
5
- import { listConnectedServers } from "../../integrations/mcp/index.js";
6
- import { readAll } from "../../services/auth-store.js";
7
- import { getGlobalConfigDir, getGlobalDataDir } from "../../utils/paths.js";
8
- import { getPlatformInfo } from "../../utils/platform.js";
9
- import { titlecase } from "../utils.js";
2
+ import { useMemo, useEffect } from 'react';
3
+ import { c } from '../theme.js';
4
+ import { loadConfig } from '../../services/config.js';
5
+ import { listConnectedServers } from '../../integrations/mcp/index.js';
6
+ import { readAll } from '../../services/auth-store.js';
7
+ import { getGlobalConfigDir, getGlobalDataDir } from '../../utils/paths.js';
8
+ import { getPlatformInfo } from '../../utils/platform.js';
9
+ import { titlecase } from '../utils.js';
10
+ import { VERSION } from '../utils/version.js';
10
11
  export function DebugDialog(props) {
11
- const { termWidth, termHeight, selectedModel, provider, selectedAgent, thinkingEffort, sessionStore, mcpCount, onClose, registerHandler } = props;
12
+ const { termWidth, termHeight, selectedModel, provider, selectedAgent, thinkingEffort, sessionStore, mcpCount, onClose, registerHandler, } = props;
12
13
  const mw = Math.min(64, termWidth - 4);
13
14
  const ml = Math.floor((termWidth - mw) / 2);
14
15
  const mh = Math.min(24, termHeight - 4);
@@ -26,31 +27,31 @@ export function DebugDialog(props) {
26
27
  const groups = [
27
28
  {
28
29
  rows: [
29
- { label: "Version", value: "0.4.1" },
30
- { label: "Directory", value: platform.cwd },
31
- { label: "Platform", value: `${platform.os} (${platform.arch})` },
32
- { label: "Shell", value: platform.shell },
30
+ { label: 'Version', value: VERSION },
31
+ { label: 'Directory', value: platform.cwd },
32
+ { label: 'Platform', value: `${platform.os} (${platform.arch})` },
33
+ { label: 'Shell', value: platform.shell },
33
34
  ],
34
35
  },
35
36
  {
36
37
  rows: [
37
- { label: "Agent", value: titlecase(selectedAgent) },
38
- { label: "Model", value: selectedModel || "(none)" },
39
- { label: "Provider", value: provider || "(none)" },
40
- { label: "Thinking effort", value: thinkingEffort || "default" },
38
+ { label: 'Agent', value: titlecase(selectedAgent) },
39
+ { label: 'Model', value: selectedModel || '(none)' },
40
+ { label: 'Provider', value: provider || '(none)' },
41
+ { label: 'Thinking effort', value: thinkingEffort || 'default' },
41
42
  ],
42
43
  },
43
44
  {
44
45
  rows: [
45
- { label: "MCP servers", value: `${config.mcp?.length ?? 0} configured, ${mcpCount} connected` },
46
- { label: "Sessions", value: `${sessions.length} total` },
47
- { label: "Auth keys", value: `${Object.keys(authStore).length} provider(s)` },
46
+ { label: 'MCP servers', value: `${config.mcp?.length ?? 0} configured, ${mcpCount} connected` },
47
+ { label: 'Sessions', value: `${sessions.length} total` },
48
+ { label: 'Auth keys', value: `${Object.keys(authStore).length} provider(s)` },
48
49
  ],
49
50
  },
50
51
  {
51
52
  rows: [
52
- { label: "Config dir", value: configDir },
53
- { label: "Data dir", value: dataDir },
53
+ { label: 'Config dir', value: configDir },
54
+ { label: 'Data dir', value: dataDir },
54
55
  ],
55
56
  },
56
57
  ];
@@ -59,16 +60,16 @@ export function DebugDialog(props) {
59
60
  const maxLabel = useMemo(() => Math.max(...info.flatMap((g) => g.rows.map((r) => r.label.length))), [info]);
60
61
  useEffect(() => {
61
62
  registerHandler((key) => {
62
- if (key.name === "escape") {
63
+ if (key.name === 'escape') {
63
64
  onClose();
64
65
  return;
65
66
  }
66
67
  });
67
68
  return () => registerHandler(null);
68
69
  }, [onClose, registerHandler]);
69
- return (_jsx("box", { position: "absolute", left: 0, right: 0, top: 0, bottom: 0, backgroundColor: c.bgOverlay, children: _jsxs("box", { position: "absolute", left: ml, top: mt, width: mw, height: mh, backgroundColor: c.bgCard, children: [_jsxs("box", { height: 1, paddingX: 2, paddingTop: 1, paddingBottom: 1, flexDirection: "row", justifyContent: "space-between", backgroundColor: c.bgCard, children: [_jsx("text", { fg: c.accent, flexDirection: "row", attributes: 1, height: 1, children: "Debug" }), _jsx("text", { fg: c.dim, flexDirection: "row", height: 1, children: "esc" })] }), _jsx("box", { height: 1, paddingX: 2, children: _jsx("text", { fg: c.border, children: "".repeat(innerW) }) }), _jsx("scrollbox", { maxHeight: listH, paddingX: 2, scrollY: true, scrollbarOptions: { visible: false }, children: _jsx("box", { flexDirection: "column", children: info.map((group, gi) => (_jsxs("box", { flexDirection: "column", children: [gi > 0 ? _jsx("box", { height: 1 }) : null, group.rows.map((row, i) => {
70
+ return (_jsx("box", { position: "absolute", left: 0, right: 0, top: 0, bottom: 0, backgroundColor: c.bgOverlay, children: _jsxs("box", { position: "absolute", left: ml, top: mt, width: mw, height: mh, backgroundColor: c.bgCard, children: [_jsxs("box", { height: 1, paddingX: 2, paddingTop: 1, paddingBottom: 1, flexDirection: "row", justifyContent: "space-between", backgroundColor: c.bgCard, children: [_jsx("text", { fg: c.accent, flexDirection: "row", attributes: 1, height: 1, children: "Debug" }), _jsx("text", { fg: c.dim, flexDirection: "row", height: 1, children: "esc" })] }), _jsx("box", { height: 1, paddingX: 2, children: _jsx("text", { fg: c.border, children: ''.repeat(innerW) }) }), _jsx("scrollbox", { maxHeight: listH, paddingX: 2, scrollY: true, scrollbarOptions: { visible: false }, children: _jsx("box", { flexDirection: "column", children: info.map((group, gi) => (_jsxs("box", { flexDirection: "column", children: [gi > 0 ? _jsx("box", { height: 1 }) : null, group.rows.map((row, i) => {
70
71
  const pad = maxLabel - row.label.length + 1;
71
- return (_jsxs("box", { height: 1, flexDirection: "row", children: [_jsxs("text", { fg: c.dim, children: [row.label, ":"] }), _jsxs("text", { fg: c.text, children: [" ".repeat(pad), row.value] })] }, i));
72
+ return (_jsxs("box", { height: 1, flexDirection: "row", children: [_jsxs("text", { fg: c.dim, children: [row.label, ":"] }), _jsxs("text", { fg: c.text, children: [' '.repeat(pad), row.value] })] }, i));
72
73
  })] }, gi))) }) }), _jsx("box", { paddingX: 2, paddingTop: 1, paddingBottom: 1, flexDirection: "row", justifyContent: "center", children: _jsx("text", { fg: c.dim, children: "esc/enter close" }) })] }) }));
73
74
  }
74
75
  //# sourceMappingURL=debug-dialog.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"debug-dialog.js","sourceRoot":"","sources":["../../../../src/tui/ui/debug-dialog.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"debug-dialog.js","sourceRoot":"","sources":["../../../../src/tui/ui/debug-dialog.tsx"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
- import type { DoctorResult } from "../../commands/doctor.js";
2
- export declare function DoctorDialog({ result, onClose, termWidth, termHeight, registerHandler }: {
1
+ import type { DoctorResult } from '../../commands/doctor.js';
2
+ export declare function DoctorDialog({ result, onClose, termWidth, termHeight, registerHandler, }: {
3
3
  result: DoctorResult;
4
4
  onClose: () => void;
5
5
  termWidth: number;
@@ -1 +1 @@
1
- {"version":3,"file":"doctor-dialog.d.ts","sourceRoot":"","sources":["../../../../src/tui/ui/doctor-dialog.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAG5D,wBAAgB,YAAY,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,eAAe,EAAE,EAAE;IAAE,MAAM,EAAE,YAAY,CAAC;IAAC,OAAO,EAAE,MAAM,IAAI,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,eAAe,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,KAAK,IAAI,CAAA;CAAE,6BAsFjO"}
1
+ {"version":3,"file":"doctor-dialog.d.ts","sourceRoot":"","sources":["../../../../src/tui/ui/doctor-dialog.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAG7D,wBAAgB,YAAY,CAAC,EAC5B,MAAM,EACN,OAAO,EACP,SAAS,EACT,UAAU,EACV,eAAe,GACf,EAAE;IACF,MAAM,EAAE,YAAY,CAAC;IACrB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,KAAK,IAAI,CAAC;CACnD,6BAyGA"}
@@ -1,11 +1,11 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "@opentui/react/jsx-runtime";
2
- import { useEffect, useRef } from "react";
3
- import { c } from "../theme.js";
4
- export function DoctorDialog({ result, onClose, termWidth, termHeight, registerHandler }) {
2
+ import { useEffect, useRef } from 'react';
3
+ import { c } from '../theme.js';
4
+ export function DoctorDialog({ result, onClose, termWidth, termHeight, registerHandler, }) {
5
5
  const scrollRef = useRef(null);
6
6
  useEffect(() => {
7
7
  const handler = (key) => {
8
- if (key.name === "escape" || key.name === "return" || key.name === "enter") {
8
+ if (key.name === 'escape' || key.name === 'return' || key.name === 'enter') {
9
9
  onClose();
10
10
  }
11
11
  };
@@ -25,10 +25,10 @@ export function DoctorDialog({ result, onClose, termWidth, termHeight, registerH
25
25
  function trunc(s, max) {
26
26
  if (s.length <= max)
27
27
  return s;
28
- return s.slice(0, Math.max(1, max - 1)) + "";
28
+ return s.slice(0, Math.max(1, max - 1)) + '';
29
29
  }
30
30
  const rows = [];
31
- let prevSection = "";
31
+ let prevSection = '';
32
32
  for (let i = 0; i < result.checks.length; i++) {
33
33
  const check = result.checks[i];
34
34
  if (check.section !== prevSection) {
@@ -38,8 +38,10 @@ export function DoctorDialog({ result, onClose, termWidth, termHeight, registerH
38
38
  prevSection = check.section;
39
39
  rows.push(_jsx("box", { height: 1, paddingLeft: 2, backgroundColor: c.bgCard, children: _jsx("text", { fg: c.accent, children: check.section }) }, `sec-${check.section}`));
40
40
  }
41
- rows.push(_jsxs("box", { flexDirection: "row", height: 1, paddingLeft: 4, paddingRight: 1, gap: 2, alignItems: "center", backgroundColor: c.bgCard, children: [_jsx("text", { fg: check.passed ? c.success : c.error, width: 1, children: check.passed ? "" : "" }), _jsx("text", { fg: c.text, children: trunc(check.name, nameMax) }), check.detail && (_jsx("text", { fg: c.dim, children: trunc(check.detail, detailMax) }))] }, check.name));
41
+ rows.push(_jsxs("box", { flexDirection: "row", height: 1, paddingLeft: 4, paddingRight: 1, gap: 2, alignItems: "center", backgroundColor: c.bgCard, children: [_jsx("text", { fg: check.passed ? c.success : c.error, width: 1, children: check.passed ? '' : '' }), _jsx("text", { fg: c.text, children: trunc(check.name, nameMax) }), check.detail && _jsx("text", { fg: c.dim, children: trunc(check.detail, detailMax) })] }, check.name));
42
42
  }
43
- return (_jsx("box", { position: "absolute", left: 0, right: 0, top: 0, bottom: 0, backgroundColor: c.bgOverlay, children: _jsxs("box", { position: "absolute", left: ml, top: mt, width: mw, height: mh, backgroundColor: c.bgCard, children: [_jsx("box", { height: 1, paddingX: 2, paddingTop: 1, paddingBottom: 1, backgroundColor: c.bgCard, children: _jsx("text", { fg: result.allPassed ? c.success : c.error, children: result.allPassed ? "✓ All checks passed" : `✗ ${failedCount}/${result.checks.length} failed` }) }), _jsx("box", { height: 1, paddingX: 2, backgroundColor: c.bgCard, children: _jsx("text", { fg: c.border, children: "".repeat(innerW) }) }), _jsx("scrollbox", { ref: (r) => { scrollRef.current = r; }, paddingX: 1, maxHeight: listH, scrollY: true, backgroundColor: c.bgCard, children: _jsx("box", { flexDirection: "column", backgroundColor: c.bgCard, children: rows.length === 0 ? (_jsx("box", { height: 1, paddingX: 1, backgroundColor: c.bgCard, children: _jsx("text", { fg: c.dim, children: "No checks" }) })) : rows }) }), _jsx("box", { paddingX: 2, paddingTop: 1, paddingBottom: 1, flexDirection: "row", justifyContent: "center", children: _jsx("text", { fg: c.dim, children: "esc/enter close" }) })] }) }));
43
+ return (_jsx("box", { position: "absolute", left: 0, right: 0, top: 0, bottom: 0, backgroundColor: c.bgOverlay, children: _jsxs("box", { position: "absolute", left: ml, top: mt, width: mw, height: mh, backgroundColor: c.bgCard, children: [_jsx("box", { height: 1, paddingX: 2, paddingTop: 1, paddingBottom: 1, backgroundColor: c.bgCard, children: _jsx("text", { fg: result.allPassed ? c.success : c.error, children: result.allPassed ? '✓ All checks passed' : `✗ ${failedCount}/${result.checks.length} failed` }) }), _jsx("box", { height: 1, paddingX: 2, backgroundColor: c.bgCard, children: _jsx("text", { fg: c.border, children: ''.repeat(innerW) }) }), _jsx("scrollbox", { ref: (r) => {
44
+ scrollRef.current = r;
45
+ }, paddingX: 1, maxHeight: listH, scrollY: true, backgroundColor: c.bgCard, children: _jsx("box", { flexDirection: "column", backgroundColor: c.bgCard, children: rows.length === 0 ? (_jsx("box", { height: 1, paddingX: 1, backgroundColor: c.bgCard, children: _jsx("text", { fg: c.dim, children: "No checks" }) })) : (rows) }) }), _jsx("box", { paddingX: 2, paddingTop: 1, paddingBottom: 1, flexDirection: "row", justifyContent: "center", children: _jsx("text", { fg: c.dim, children: "esc/enter close" }) })] }) }));
44
46
  }
45
47
  //# sourceMappingURL=doctor-dialog.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"doctor-dialog.js","sourceRoot":"","sources":["../../../../src/tui/ui/doctor-dialog.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"doctor-dialog.js","sourceRoot":"","sources":["../../../../src/tui/ui/doctor-dialog.tsx"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { CustomProviderConfig } from "../../services/config.js";
1
+ import type { CustomProviderConfig } from '../../services/config.js';
2
2
  export declare function ManageProvidersDialog(props: {
3
3
  termWidth: number;
4
4
  termHeight: number;
@@ -1 +1 @@
1
- {"version":3,"file":"manage-providers-dialog.d.ts","sourceRoot":"","sources":["../../../../src/tui/ui/manage-providers-dialog.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAA;AA2BpE,wBAAgB,qBAAqB,CAAC,KAAK,EAAE;IAC3C,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAA;IAC/C,iBAAiB,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAC,KAAK,IAAI,CAAA;IAC1E,OAAO,EAAE,MAAM,IAAI,CAAA;IACnB,eAAe,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,CAAC,GAAG,IAAI,KAAK,IAAI,CAAA;CAC3D,6BAwPA"}
1
+ {"version":3,"file":"manage-providers-dialog.d.ts","sourceRoot":"","sources":["../../../../src/tui/ui/manage-providers-dialog.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AA6BrE,wBAAgB,qBAAqB,CAAC,KAAK,EAAE;IAC5C,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC;IAChD,iBAAiB,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAC,KAAK,IAAI,CAAC;IAC3E,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,eAAe,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,CAAC,GAAG,IAAI,KAAK,IAAI,CAAC;CAC3D,6BAyWA"}
@@ -1,16 +1,16 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "@opentui/react/jsx-runtime";
2
- import { useState, useMemo, useEffect } from "react";
3
- import { c } from "../theme.js";
4
- import { getGlobalConfigDir } from "../../utils/paths.js";
5
- import { existsSync, readFileSync, writeFileSync, mkdirSync } from "fs";
6
- import { join } from "path";
7
- import { registerCustomProvider } from "../../services/custom-providers.js";
2
+ import { useState, useMemo, useEffect } from 'react';
3
+ import { c } from '../theme.js';
4
+ import { getGlobalConfigDir } from '../../utils/paths.js';
5
+ import { existsSync, readFileSync, writeFileSync, mkdirSync } from 'fs';
6
+ import { join } from 'path';
7
+ import { registerCustomProvider } from '../../services/custom-providers.js';
8
8
  function saveProvidersToConfig(providers) {
9
9
  const configDir = getGlobalConfigDir();
10
- const configPath = join(configDir, "spectra.json");
10
+ const configPath = join(configDir, 'spectra.json');
11
11
  let cfg = {};
12
12
  try {
13
- cfg = JSON.parse(readFileSync(configPath, "utf-8"));
13
+ cfg = JSON.parse(readFileSync(configPath, 'utf-8'));
14
14
  }
15
15
  catch { }
16
16
  cfg.providers = providers;
@@ -20,13 +20,13 @@ function saveProvidersToConfig(providers) {
20
20
  }
21
21
  export function ManageProvidersDialog(props) {
22
22
  const { termWidth, termHeight, providers, onProvidersChange, onClose, registerHandler } = props;
23
- const [mode, setMode] = useState("list");
23
+ const [mode, setMode] = useState('list');
24
24
  const [listSel, setListSel] = useState(0);
25
- const [form, setForm] = useState({ id: "", name: "", baseUrl: "", apiKey: "", models: ["", "", ""] });
26
- const [formField, setFormField] = useState("id");
25
+ const [form, setForm] = useState({ id: '', name: '', baseUrl: '', apiKey: '', models: ['', '', ''] });
26
+ const [formField, setFormField] = useState('id');
27
27
  const [confirmDeleteId, setConfirmDeleteId] = useState(null);
28
- const [err, setErr] = useState("");
29
- const [success, setSuccess] = useState("");
28
+ const [err, setErr] = useState('');
29
+ const [success, setSuccess] = useState('');
30
30
  const mw = Math.min(72, termWidth - 4);
31
31
  const mh = Math.min(28, termHeight - 4);
32
32
  const mt = Math.max(1, Math.floor((termHeight - mh) / 2));
@@ -37,60 +37,60 @@ export function ManageProvidersDialog(props) {
37
37
  }, [providerEntries.length, listSel]);
38
38
  useEffect(() => {
39
39
  registerHandler((key) => {
40
- if (key.name === "escape") {
41
- if (mode === "add" || mode === "edit") {
42
- setMode("list");
43
- setErr("");
44
- setForm({ id: "", name: "", baseUrl: "", apiKey: "", models: ["", "", ""] });
40
+ if (key.name === 'escape') {
41
+ if (mode === 'add' || mode === 'edit') {
42
+ setMode('list');
43
+ setErr('');
44
+ setForm({ id: '', name: '', baseUrl: '', apiKey: '', models: ['', '', ''] });
45
45
  return;
46
46
  }
47
- if (mode === "delete-confirm") {
47
+ if (mode === 'delete-confirm') {
48
48
  setConfirmDeleteId(null);
49
- setMode("list");
49
+ setMode('list');
50
50
  return;
51
51
  }
52
52
  onClose();
53
53
  return;
54
54
  }
55
- if (mode === "list") {
56
- if (key.name === "up") {
57
- setListSel(p => Math.max(0, p - 1));
55
+ if (mode === 'list') {
56
+ if (key.name === 'up') {
57
+ setListSel((p) => Math.max(0, p - 1));
58
58
  return;
59
59
  }
60
- if (key.name === "down") {
61
- setListSel(p => Math.min(providerEntries.length - 1, p + 1));
60
+ if (key.name === 'down') {
61
+ setListSel((p) => Math.min(providerEntries.length - 1, p + 1));
62
62
  return;
63
63
  }
64
- if (key.name === "a" || key.name === "A") {
64
+ if (key.name === 'a' || key.name === 'A') {
65
65
  startAdd();
66
66
  return;
67
67
  }
68
- if ((key.name === "e" || key.name === "E") && providerEntries.length > 0) {
68
+ if ((key.name === 'e' || key.name === 'E') && providerEntries.length > 0) {
69
69
  startEdit(providerEntries[listSel]?.[0]);
70
70
  return;
71
71
  }
72
- if ((key.name === "d" || key.name === "D") && providerEntries.length > 0) {
72
+ if ((key.name === 'd' || key.name === 'D') && providerEntries.length > 0) {
73
73
  setConfirmDeleteId(providerEntries[listSel]?.[0]);
74
- setMode("delete-confirm");
74
+ setMode('delete-confirm');
75
75
  return;
76
76
  }
77
77
  return;
78
78
  }
79
- if (mode === "delete-confirm") {
80
- if (key.name === "return" || key.name === "enter") {
79
+ if (mode === 'delete-confirm') {
80
+ if (key.name === 'return' || key.name === 'enter') {
81
81
  handleDeleteConfirm();
82
82
  return;
83
83
  }
84
84
  return;
85
85
  }
86
- if (mode === "add" || mode === "edit") {
87
- if (key.name === "tab") {
88
- const fields = ["id", "name", "baseUrl", "apiKey", "model1", "model2", "model3"];
86
+ if (mode === 'add' || mode === 'edit') {
87
+ if (key.name === 'tab') {
88
+ const fields = ['id', 'name', 'baseUrl', 'apiKey', 'model1', 'model2', 'model3'];
89
89
  const idx = fields.indexOf(formField);
90
90
  setFormField(fields[(idx + 1) % fields.length]);
91
91
  return;
92
92
  }
93
- if (key.name === "return" || key.name === "enter") {
93
+ if (key.name === 'return' || key.name === 'enter') {
94
94
  handleSave();
95
95
  return;
96
96
  }
@@ -98,7 +98,7 @@ export function ManageProvidersDialog(props) {
98
98
  appendToField(key.name);
99
99
  return;
100
100
  }
101
- if (key.name === "backspace") {
101
+ if (key.name === 'backspace') {
102
102
  removeFromField();
103
103
  return;
104
104
  }
@@ -107,56 +107,59 @@ export function ManageProvidersDialog(props) {
107
107
  return () => registerHandler(null);
108
108
  }, [mode, formField, form, listSel, providerEntries, confirmDeleteId]);
109
109
  const appendToField = (char) => {
110
- setForm(prev => {
110
+ setForm((prev) => {
111
111
  const next = { ...prev };
112
- if (formField === "id")
112
+ if (formField === 'id')
113
113
  next.id = prev.id + char;
114
- else if (formField === "name")
114
+ else if (formField === 'name')
115
115
  next.name = prev.name + char;
116
- else if (formField === "baseUrl")
116
+ else if (formField === 'baseUrl')
117
117
  next.baseUrl = prev.baseUrl + char;
118
- else if (formField === "apiKey")
118
+ else if (formField === 'apiKey')
119
119
  next.apiKey = prev.apiKey + char;
120
- else if (formField === "model1")
120
+ else if (formField === 'model1')
121
121
  next.models = [prev.models[0] + char, prev.models[1], prev.models[2]];
122
- else if (formField === "model2")
122
+ else if (formField === 'model2')
123
123
  next.models = [prev.models[0], prev.models[1] + char, prev.models[2]];
124
- else if (formField === "model3")
124
+ else if (formField === 'model3')
125
125
  next.models = [prev.models[0], prev.models[1], prev.models[2] + char];
126
126
  return next;
127
127
  });
128
128
  };
129
129
  const removeFromField = () => {
130
- setForm(prev => {
130
+ setForm((prev) => {
131
131
  const next = { ...prev };
132
- if (formField === "id")
132
+ if (formField === 'id')
133
133
  next.id = prev.id.slice(0, -1);
134
- else if (formField === "name")
134
+ else if (formField === 'name')
135
135
  next.name = prev.name.slice(0, -1);
136
- else if (formField === "baseUrl")
136
+ else if (formField === 'baseUrl')
137
137
  next.baseUrl = prev.baseUrl.slice(0, -1);
138
- else if (formField === "apiKey")
138
+ else if (formField === 'apiKey')
139
139
  next.apiKey = prev.apiKey.slice(0, -1);
140
- else if (formField === "model1")
140
+ else if (formField === 'model1')
141
141
  next.models = [prev.models[0].slice(0, -1), prev.models[1], prev.models[2]];
142
- else if (formField === "model2")
142
+ else if (formField === 'model2')
143
143
  next.models = [prev.models[0], prev.models[1].slice(0, -1), prev.models[2]];
144
- else if (formField === "model3")
144
+ else if (formField === 'model3')
145
145
  next.models = [prev.models[0], prev.models[1], prev.models[2].slice(0, -1)];
146
146
  return next;
147
147
  });
148
148
  };
149
149
  const handleSave = () => {
150
- setErr("");
150
+ setErr('');
151
151
  if (!form.id.trim()) {
152
- setErr("Provider ID is required");
152
+ setErr('Provider ID is required');
153
153
  return;
154
154
  }
155
155
  if (!form.baseUrl.trim()) {
156
- setErr("Base URL is required");
156
+ setErr('Base URL is required');
157
157
  return;
158
158
  }
159
- const id = form.id.trim().toLowerCase().replace(/[^a-z0-9-_]/g, "-");
159
+ const id = form.id
160
+ .trim()
161
+ .toLowerCase()
162
+ .replace(/[^a-z0-9-_]/g, '-');
160
163
  const updated = { ...providers };
161
164
  const modelsObj = {};
162
165
  for (const m of form.models) {
@@ -173,10 +176,13 @@ export function ManageProvidersDialog(props) {
173
176
  registerCustomProvider(id, updated[id]);
174
177
  saveProvidersToConfig(updated);
175
178
  onProvidersChange(updated);
176
- setSuccess(`Provider "${id}" ${mode === "edit" ? "updated" : "added"}`);
177
- setForm({ id: "", name: "", baseUrl: "", apiKey: "", models: ["", "", ""] });
178
- setFormField("id");
179
- setTimeout(() => { setMode("list"); setSuccess(""); }, 800);
179
+ setSuccess(`Provider "${id}" ${mode === 'edit' ? 'updated' : 'added'}`);
180
+ setForm({ id: '', name: '', baseUrl: '', apiKey: '', models: ['', '', ''] });
181
+ setFormField('id');
182
+ setTimeout(() => {
183
+ setMode('list');
184
+ setSuccess('');
185
+ }, 800);
180
186
  };
181
187
  const handleDeleteConfirm = () => {
182
188
  if (!confirmDeleteId)
@@ -186,32 +192,30 @@ export function ManageProvidersDialog(props) {
186
192
  saveProvidersToConfig(updated);
187
193
  onProvidersChange(updated);
188
194
  setConfirmDeleteId(null);
189
- setMode("list");
195
+ setMode('list');
190
196
  setSuccess(`Provider "${confirmDeleteId}" removed`);
191
- setTimeout(() => setSuccess(""), 1500);
197
+ setTimeout(() => setSuccess(''), 1500);
192
198
  };
193
199
  const startEdit = (id) => {
194
200
  const cfg = providers[id];
195
201
  setForm({
196
202
  id,
197
203
  name: cfg.name || id,
198
- baseUrl: cfg.baseUrl || "",
199
- apiKey: cfg.apiKey || "",
200
- models: cfg.models
201
- ? Object.keys(cfg.models).concat(["", "", ""]).slice(0, 3)
202
- : ["", "", ""],
204
+ baseUrl: cfg.baseUrl || '',
205
+ apiKey: cfg.apiKey || '',
206
+ models: cfg.models ? Object.keys(cfg.models).concat(['', '', '']).slice(0, 3) : ['', '', ''],
203
207
  });
204
- setFormField("name");
205
- setMode("edit");
208
+ setFormField('name');
209
+ setMode('edit');
206
210
  };
207
211
  const startAdd = () => {
208
- setForm({ id: "", name: "", baseUrl: "", apiKey: "", models: ["", "", ""] });
209
- setFormField("id");
210
- setMode("add");
212
+ setForm({ id: '', name: '', baseUrl: '', apiKey: '', models: ['', '', ''] });
213
+ setFormField('id');
214
+ setMode('add');
211
215
  };
212
216
  const rows = [];
213
- if (mode === "list") {
214
- rows.push(_jsxs("box", { paddingX: 2, paddingTop: 1, height: 1, flexDirection: "row", justifyContent: "space-between", children: [_jsxs("box", { flexDirection: "row", gap: 1, children: [_jsx("text", { fg: c.accent, children: ">" }), _jsx("text", { fg: c.text, children: "Manage Providers" })] }), _jsx("box", { flexDirection: "row", height: 1, children: _jsx("text", { fg: c.dim, children: "esc close" }) })] }), _jsx("box", { height: 1, paddingX: 2, children: _jsx("text", { fg: c.border, children: "".repeat(mw - 4) }) }));
217
+ if (mode === 'list') {
218
+ rows.push(_jsxs("box", { paddingX: 2, paddingTop: 1, height: 1, flexDirection: "row", justifyContent: "space-between", children: [_jsxs("box", { flexDirection: "row", gap: 1, children: [_jsx("text", { fg: c.accent, children: '>' }), _jsx("text", { fg: c.text, children: "Manage Providers" })] }), _jsx("box", { flexDirection: "row", height: 1, children: _jsx("text", { fg: c.dim, children: "esc close" }) })] }), _jsx("box", { height: 1, paddingX: 2, children: _jsx("text", { fg: c.border, children: ''.repeat(mw - 4) }) }));
215
219
  if (providerEntries.length === 0) {
216
220
  rows.push(_jsxs("box", { height: 2, paddingX: 2, flexDirection: "column", gap: 1, children: [_jsx("text", { fg: c.dim, children: "No custom providers configured" }), _jsx("text", { fg: c.dim, children: "Press \"a\" to add one" })] }));
217
221
  }
@@ -222,27 +226,39 @@ export function ManageProvidersDialog(props) {
222
226
  rows.push(_jsxs("box", { height: 2, paddingX: 2, flexDirection: "column", gap: 0, backgroundColor: isSel ? c.bgSelect : undefined, children: [_jsxs("box", { flexDirection: "row", justifyContent: "space-between", children: [_jsx("text", { fg: isSel ? c.accent : c.text, attributes: isSel ? 1 : 0, children: cfg.name || id }), _jsx("text", { fg: c.dim, children: id })] }), _jsxs("box", { flexDirection: "row", justifyContent: "space-between", children: [_jsx("text", { fg: c.dim, children: cfg.baseUrl }), _jsxs("box", { flexDirection: "row", gap: 1, children: [_jsx("text", { fg: c.warn, children: "e edit" }), _jsx("text", { fg: c.error, children: "d delete" })] })] })] }, id));
223
227
  }
224
228
  }
225
- rows.push(_jsx("box", { height: 1, paddingX: 2, children: _jsx("text", { fg: c.border, children: "".repeat(mw - 4) }) }), _jsx("box", { height: 1, paddingX: 2, children: _jsx("text", { fg: c.accent, children: "a add provider" }) }), _jsx("box", { height: 1, paddingX: 2, children: _jsx("text", { fg: c.dim, children: "\u2191\u2193 navigate \u00B7 a add \u00B7 e edit \u00B7 d delete \u00B7 esc close" }) }));
229
+ rows.push(_jsx("box", { height: 1, paddingX: 2, children: _jsx("text", { fg: c.border, children: ''.repeat(mw - 4) }) }), _jsx("box", { height: 1, paddingX: 2, children: _jsx("text", { fg: c.accent, children: "a add provider" }) }), _jsx("box", { height: 1, paddingX: 2, children: _jsx("text", { fg: c.dim, children: "\u2191\u2193 navigate \u00B7 a add \u00B7 e edit \u00B7 d delete \u00B7 esc close" }) }));
226
230
  if (success)
227
231
  rows.push(_jsx("box", { height: 1, paddingX: 2, children: _jsx("text", { fg: c.success, children: success }) }));
228
232
  }
229
- else if (mode === "delete-confirm") {
230
- rows.push(_jsx("box", { paddingX: 2, paddingTop: 1, height: 1, children: _jsx("text", { fg: c.error, attributes: 1, children: "Delete Provider" }) }), _jsx("box", { height: 1, paddingX: 2, children: _jsx("text", { fg: c.border, children: "".repeat(mw - 4) }) }), _jsx("box", { height: 1, paddingX: 2, children: _jsxs("text", { fg: c.text, children: ["Delete \"", confirmDeleteId, "\"? This cannot be undone."] }) }), _jsxs("box", { height: 1, paddingX: 2, flexDirection: "row", gap: 2, children: [_jsx("text", { fg: c.error, children: "enter confirm" }), _jsx("text", { fg: c.dim, children: "esc cancel" })] }));
233
+ else if (mode === 'delete-confirm') {
234
+ rows.push(_jsx("box", { paddingX: 2, paddingTop: 1, height: 1, children: _jsx("text", { fg: c.error, attributes: 1, children: "Delete Provider" }) }), _jsx("box", { height: 1, paddingX: 2, children: _jsx("text", { fg: c.border, children: ''.repeat(mw - 4) }) }), _jsx("box", { height: 1, paddingX: 2, children: _jsxs("text", { fg: c.text, children: ["Delete \"", confirmDeleteId, "\"? This cannot be undone."] }) }), _jsxs("box", { height: 1, paddingX: 2, flexDirection: "row", gap: 2, children: [_jsx("text", { fg: c.error, children: "enter confirm" }), _jsx("text", { fg: c.dim, children: "esc cancel" })] }));
231
235
  }
232
236
  else {
233
237
  const fields = [
234
- { key: "id", label: "Provider ID", placeholder: "my-provider" },
235
- { key: "name", label: "Display Name", placeholder: "My Provider", optional: true },
236
- { key: "baseUrl", label: "Base URL", placeholder: "https://api.example.com/v1" },
237
- { key: "apiKey", label: "API Key", placeholder: "sk-... (optional)", optional: true },
238
- { key: "model1", label: "Model 1", placeholder: "model-id-1 (optional)", optional: true },
239
- { key: "model2", label: "Model 2", placeholder: "model-id-2 (optional)", optional: true },
240
- { key: "model3", label: "Model 3", placeholder: "model-id-3 (optional)", optional: true },
238
+ { key: 'id', label: 'Provider ID', placeholder: 'my-provider' },
239
+ { key: 'name', label: 'Display Name', placeholder: 'My Provider', optional: true },
240
+ { key: 'baseUrl', label: 'Base URL', placeholder: 'https://api.example.com/v1' },
241
+ { key: 'apiKey', label: 'API Key', placeholder: 'sk-... (optional)', optional: true },
242
+ { key: 'model1', label: 'Model 1', placeholder: 'model-id-1 (optional)', optional: true },
243
+ { key: 'model2', label: 'Model 2', placeholder: 'model-id-2 (optional)', optional: true },
244
+ { key: 'model3', label: 'Model 3', placeholder: 'model-id-3 (optional)', optional: true },
241
245
  ];
242
- rows.push(_jsxs("box", { paddingX: 2, paddingTop: 1, height: 1, flexDirection: "row", justifyContent: "space-between", children: [_jsx("text", { fg: c.accent, attributes: 1, children: mode === "add" ? "Add Provider" : "Edit Provider" }), _jsx("text", { fg: c.dim, children: "esc cancel \u00B7 tab next" })] }), _jsx("box", { height: 1, paddingX: 2, children: _jsx("text", { fg: c.border, children: "".repeat(mw - 4) }) }));
246
+ rows.push(_jsxs("box", { paddingX: 2, paddingTop: 1, height: 1, flexDirection: "row", justifyContent: "space-between", children: [_jsx("text", { fg: c.accent, attributes: 1, children: mode === 'add' ? 'Add Provider' : 'Edit Provider' }), _jsx("text", { fg: c.dim, children: "esc cancel \u00B7 tab next" })] }), _jsx("box", { height: 1, paddingX: 2, children: _jsx("text", { fg: c.border, children: ''.repeat(mw - 4) }) }));
243
247
  for (const f of fields) {
244
248
  const isActive = formField === f.key;
245
- const value = f.key === "id" ? form.id : f.key === "name" ? form.name : f.key === "baseUrl" ? form.baseUrl : f.key === "apiKey" ? form.apiKey : f.key === "model1" ? form.models[0] : f.key === "model2" ? form.models[1] : form.models[2];
249
+ const value = f.key === 'id'
250
+ ? form.id
251
+ : f.key === 'name'
252
+ ? form.name
253
+ : f.key === 'baseUrl'
254
+ ? form.baseUrl
255
+ : f.key === 'apiKey'
256
+ ? form.apiKey
257
+ : f.key === 'model1'
258
+ ? form.models[0]
259
+ : f.key === 'model2'
260
+ ? form.models[1]
261
+ : form.models[2];
246
262
  rows.push(_jsxs("box", { height: 1, paddingX: 2, flexDirection: "row", gap: 1, children: [_jsxs("text", { fg: isActive ? c.accent : c.dim, width: 14, children: [f.label, ":"] }), _jsxs("box", { flexGrow: 1, children: [_jsx("text", { fg: isActive ? c.text : c.dim, children: value || (f.optional ? f.placeholder : f.placeholder) }), isActive && _jsx("text", { fg: c.accent, children: "\u258C" })] })] }, f.key));
247
263
  }
248
264
  rows.push(_jsx("box", { height: 1 }));