@jx-grxf/patchpilot 1.0.0 → 1.2.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 (154) hide show
  1. package/README.md +51 -16
  2. package/dist/cli.js +46 -3
  3. package/dist/cli.js.map +1 -1
  4. package/dist/core/agent.d.ts +44 -1
  5. package/dist/core/agent.js +617 -70
  6. package/dist/core/agent.js.map +1 -1
  7. package/dist/core/clipboard.d.ts +14 -0
  8. package/dist/core/clipboard.js +134 -0
  9. package/dist/core/clipboard.js.map +1 -0
  10. package/dist/core/codex.d.ts +8 -0
  11. package/dist/core/codex.js +28 -2
  12. package/dist/core/codex.js.map +1 -1
  13. package/dist/core/compaction.d.ts +23 -0
  14. package/dist/core/compaction.js +145 -0
  15. package/dist/core/compaction.js.map +1 -0
  16. package/dist/core/contextFormat.d.ts +21 -0
  17. package/dist/core/contextFormat.js +87 -0
  18. package/dist/core/contextFormat.js.map +1 -0
  19. package/dist/core/contextItem.d.ts +41 -0
  20. package/dist/core/contextItem.js +93 -0
  21. package/dist/core/contextItem.js.map +1 -0
  22. package/dist/core/contextStore.d.ts +48 -0
  23. package/dist/core/contextStore.js +306 -0
  24. package/dist/core/contextStore.js.map +1 -0
  25. package/dist/core/doctor.js +9 -8
  26. package/dist/core/doctor.js.map +1 -1
  27. package/dist/core/gemini.js +10 -4
  28. package/dist/core/gemini.js.map +1 -1
  29. package/dist/core/geminiWrapper.d.ts +43 -2
  30. package/dist/core/geminiWrapper.js +582 -42
  31. package/dist/core/geminiWrapper.js.map +1 -1
  32. package/dist/core/http.js +70 -6
  33. package/dist/core/http.js.map +1 -1
  34. package/dist/core/json.d.ts +1 -1
  35. package/dist/core/json.js +18 -20
  36. package/dist/core/json.js.map +1 -1
  37. package/dist/core/nvidia.d.ts +1 -1
  38. package/dist/core/nvidia.js +13 -4
  39. package/dist/core/nvidia.js.map +1 -1
  40. package/dist/core/ollama.js +13 -3
  41. package/dist/core/ollama.js.map +1 -1
  42. package/dist/core/openrouter.js +15 -6
  43. package/dist/core/openrouter.js.map +1 -1
  44. package/dist/core/reasoning.js +3 -0
  45. package/dist/core/reasoning.js.map +1 -1
  46. package/dist/core/session.js +9 -3
  47. package/dist/core/session.js.map +1 -1
  48. package/dist/core/tokenAccounting.d.ts +4 -0
  49. package/dist/core/tokenAccounting.js +75 -13
  50. package/dist/core/tokenAccounting.js.map +1 -1
  51. package/dist/core/types.d.ts +58 -3
  52. package/dist/core/types.js +30 -1
  53. package/dist/core/types.js.map +1 -1
  54. package/dist/core/updateCheck.d.ts +19 -0
  55. package/dist/core/updateCheck.js +103 -0
  56. package/dist/core/updateCheck.js.map +1 -0
  57. package/dist/core/workspace.d.ts +29 -0
  58. package/dist/core/workspace.js +1271 -92
  59. package/dist/core/workspace.js.map +1 -1
  60. package/dist/tui/App.d.ts +1 -0
  61. package/dist/tui/App.js +1346 -112
  62. package/dist/tui/App.js.map +1 -1
  63. package/dist/tui/commands.js +109 -6
  64. package/dist/tui/commands.js.map +1 -1
  65. package/dist/tui/components/ApprovalPanel.js +16 -1
  66. package/dist/tui/components/ApprovalPanel.js.map +1 -1
  67. package/dist/tui/components/CommandSuggestions.js +26 -3
  68. package/dist/tui/components/CommandSuggestions.js.map +1 -1
  69. package/dist/tui/components/Composer.d.ts +3 -0
  70. package/dist/tui/components/Composer.js +57 -5
  71. package/dist/tui/components/Composer.js.map +1 -1
  72. package/dist/tui/components/ExperimentalPanel.d.ts +1 -1
  73. package/dist/tui/components/ExperimentalPanel.js +5 -0
  74. package/dist/tui/components/ExperimentalPanel.js.map +1 -1
  75. package/dist/tui/components/OnboardingPanel.d.ts +12 -0
  76. package/dist/tui/components/OnboardingPanel.js +69 -21
  77. package/dist/tui/components/OnboardingPanel.js.map +1 -1
  78. package/dist/tui/components/StartupBanner.d.ts +4 -0
  79. package/dist/tui/components/StartupBanner.js +9 -0
  80. package/dist/tui/components/StartupBanner.js.map +1 -0
  81. package/dist/tui/components/Transcript.d.ts +7 -0
  82. package/dist/tui/components/Transcript.js +86 -16
  83. package/dist/tui/components/Transcript.js.map +1 -1
  84. package/dist/tui/contextCommands.d.ts +8 -0
  85. package/dist/tui/contextCommands.js +205 -0
  86. package/dist/tui/contextCommands.js.map +1 -0
  87. package/dist/tui/experimental/AnimatedText.d.ts +38 -0
  88. package/dist/tui/experimental/AnimatedText.js +55 -0
  89. package/dist/tui/experimental/AnimatedText.js.map +1 -0
  90. package/dist/tui/experimental/Banner.d.ts +10 -0
  91. package/dist/tui/experimental/Banner.js +33 -0
  92. package/dist/tui/experimental/Banner.js.map +1 -0
  93. package/dist/tui/experimental/CommandPalette.d.ts +11 -0
  94. package/dist/tui/experimental/CommandPalette.js +25 -0
  95. package/dist/tui/experimental/CommandPalette.js.map +1 -0
  96. package/dist/tui/experimental/ExperimentalShell.d.ts +58 -0
  97. package/dist/tui/experimental/ExperimentalShell.js +366 -0
  98. package/dist/tui/experimental/ExperimentalShell.js.map +1 -0
  99. package/dist/tui/experimental/ThemePicker.d.ts +13 -0
  100. package/dist/tui/experimental/ThemePicker.js +12 -0
  101. package/dist/tui/experimental/ThemePicker.js.map +1 -0
  102. package/dist/tui/experimental/attachments.d.ts +35 -0
  103. package/dist/tui/experimental/attachments.js +244 -0
  104. package/dist/tui/experimental/attachments.js.map +1 -0
  105. package/dist/tui/experimental/composer.d.ts +24 -0
  106. package/dist/tui/experimental/composer.js +84 -0
  107. package/dist/tui/experimental/composer.js.map +1 -0
  108. package/dist/tui/experimental/geminiPricing.d.ts +16 -0
  109. package/dist/tui/experimental/geminiPricing.js +39 -0
  110. package/dist/tui/experimental/geminiPricing.js.map +1 -0
  111. package/dist/tui/experimental/layout.d.ts +46 -0
  112. package/dist/tui/experimental/layout.js +112 -0
  113. package/dist/tui/experimental/layout.js.map +1 -0
  114. package/dist/tui/experimental/theme.d.ts +35 -0
  115. package/dist/tui/experimental/theme.js +86 -0
  116. package/dist/tui/experimental/theme.js.map +1 -0
  117. package/dist/tui/experimental/transcriptRows.d.ts +20 -0
  118. package/dist/tui/experimental/transcriptRows.js +169 -0
  119. package/dist/tui/experimental/transcriptRows.js.map +1 -0
  120. package/dist/tui/experimental/ultraModes.d.ts +46 -0
  121. package/dist/tui/experimental/ultraModes.js +95 -0
  122. package/dist/tui/experimental/ultraModes.js.map +1 -0
  123. package/dist/tui/experimental/ultramaxx.d.ts +19 -0
  124. package/dist/tui/experimental/ultramaxx.js +43 -0
  125. package/dist/tui/experimental/ultramaxx.js.map +1 -0
  126. package/dist/tui/format.d.ts +4 -2
  127. package/dist/tui/format.js +14 -0
  128. package/dist/tui/format.js.map +1 -1
  129. package/dist/tui/hosts.js +7 -1
  130. package/dist/tui/hosts.js.map +1 -1
  131. package/dist/tui/layout.d.ts +26 -0
  132. package/dist/tui/layout.js +66 -0
  133. package/dist/tui/layout.js.map +1 -0
  134. package/dist/tui/modelSelection.d.ts +1 -1
  135. package/dist/tui/modelSelection.js +8 -6
  136. package/dist/tui/modelSelection.js.map +1 -1
  137. package/dist/tui/modes.d.ts +7 -0
  138. package/dist/tui/modes.js +12 -0
  139. package/dist/tui/modes.js.map +1 -1
  140. package/dist/tui/onboardingPreferences.d.ts +37 -0
  141. package/dist/tui/onboardingPreferences.js +118 -0
  142. package/dist/tui/onboardingPreferences.js.map +1 -0
  143. package/dist/tui/runStatus.d.ts +50 -0
  144. package/dist/tui/runStatus.js +164 -0
  145. package/dist/tui/runStatus.js.map +1 -0
  146. package/dist/tui/types.d.ts +8 -0
  147. package/dist/tui/types.js.map +1 -1
  148. package/docs/architecture.md +115 -0
  149. package/docs/gemini-wrapper.md +23 -0
  150. package/docs/product-context.md +43 -0
  151. package/docs/releases/v1.0.1.md +25 -0
  152. package/docs/releases/v1.1.0.md +30 -0
  153. package/docs/releases/v1.2.0.md +28 -0
  154. package/package.json +4 -2
@@ -26,7 +26,7 @@ export const slashCommands = [
26
26
  usage: "/provider ollama|gemini|gemini-wrapper|openrouter|nvidia|codex",
27
27
  description: "Switch between Ollama, Gemini, Gemini-Wrapper, OpenRouter, NVIDIA, and Codex inference.",
28
28
  category: "model",
29
- detail: "Provider controls where inference runs. Gemini-Wrapper runs the installed gemini_webapi bridge with a pasted cookie value and never scans browser profiles."
29
+ detail: "Provider controls where inference runs. Gemini-Wrapper runs the installed gemini_webapi bridge with pasted cookies or an explicit local browser-cookie import."
30
30
  },
31
31
  {
32
32
  name: "think",
@@ -41,7 +41,7 @@ export const slashCommands = [
41
41
  usage: "/reasoning low|medium|high|xhigh|adaptive",
42
42
  description: "Set provider reasoning effort where the provider supports it.",
43
43
  category: "model",
44
- detail: "Codex supports low, medium, high, and xhigh. OpenRouter receives reasoning.effort for compatible models. Gemini maps xhigh to high. Ollama has no common reasoning-effort API, so the value is ignored there. adaptive chooses effort from task complexity."
44
+ detail: "Codex supports low, medium, high, and xhigh. OpenRouter receives reasoning.effort for compatible models. Gemini maps xhigh to high. Gemini-Wrapper does not expose Gemini Web Denkaufwand controls yet. Ollama has no common reasoning-effort API, so the value is ignored there. adaptive chooses effort from task complexity."
45
45
  },
46
46
  {
47
47
  name: "onboarding",
@@ -56,6 +56,54 @@ export const slashCommands = [
56
56
  category: "session",
57
57
  detail: "Clears the visible transcript, telemetry, advisor notes, approvals, and starts a new session file. Provider, model, mode, and permissions stay unchanged."
58
58
  },
59
+ {
60
+ name: "context",
61
+ usage: "/context show|files|pins|clear|export",
62
+ description: "Inspect and manage saved session context.",
63
+ category: "session",
64
+ aliases: ["ctx"],
65
+ detail: "Use /context show for the dashboard, /context files for path-backed context, /context pins for pinned items, /context clear to drop unpinned context, or /context export to print the snapshot path and JSON."
66
+ },
67
+ {
68
+ name: "context show",
69
+ usage: "/context show",
70
+ description: "Show saved session context counts, pins, tokens, and recent items.",
71
+ category: "session",
72
+ aliases: ["ctx show"],
73
+ detail: "Reads the current session ContextStore snapshot and prints the dashboard used for context-aware follow-up runs."
74
+ },
75
+ {
76
+ name: "context files",
77
+ usage: "/context files",
78
+ description: "List active context entries that point at files, artifacts, or attachments.",
79
+ category: "session",
80
+ aliases: ["ctx files"],
81
+ detail: "Shows active path-backed context so you can see which files or artifacts are still part of the current session memory."
82
+ },
83
+ {
84
+ name: "context pins",
85
+ usage: "/context pins",
86
+ description: "List pinned context items that compaction must keep.",
87
+ category: "session",
88
+ aliases: ["ctx pins", "context pinned"],
89
+ detail: "Pinned context is preserved by /context clear and /compact now. Use this to audit what will remain sticky."
90
+ },
91
+ {
92
+ name: "context clear",
93
+ usage: "/context clear",
94
+ description: "Drop unpinned saved context for the current session.",
95
+ category: "session",
96
+ aliases: ["ctx clear"],
97
+ detail: "Clears unpinned ContextStore items for this session. Pinned files and other pinned items stay active."
98
+ },
99
+ {
100
+ name: "context export",
101
+ usage: "/context export",
102
+ description: "Print the current context snapshot path and JSON.",
103
+ category: "session",
104
+ aliases: ["ctx export"],
105
+ detail: "Writes or refreshes the current .patchpilot/context snapshot, then prints the path and snapshot JSON for inspection."
106
+ },
59
107
  {
60
108
  name: "write",
61
109
  usage: "/write on|off",
@@ -131,9 +179,48 @@ export const slashCommands = [
131
179
  {
132
180
  name: "status",
133
181
  usage: "/status",
134
- description: "Show active model, host, permissions, and token telemetry.",
182
+ description: "Operational dock: provider/model, permissions, compute target, session, advisors, tool counters.",
135
183
  category: "session"
136
184
  },
185
+ {
186
+ name: "usage",
187
+ usage: "/usage",
188
+ description: "Show detailed token, tool-call, cache, and cost counters.",
189
+ category: "session",
190
+ detail: "Shows current-session request counts, input/output/cache tokens, tool counters by name, and estimated cost/savings. If exact model pricing is unavailable, PatchPilot marks the figure as fallback-priced."
191
+ },
192
+ {
193
+ name: "compact",
194
+ usage: "/compact now|auto|reset",
195
+ description: "Run or configure session-context compaction.",
196
+ category: "session",
197
+ aliases: ["compress"],
198
+ detail: "Use /compact now to compact eligible unpinned context, /compact auto [on|off] to toggle automatic compaction, or /compact reset to drop generated summaries and turn auto-compaction off."
199
+ },
200
+ {
201
+ name: "compact now",
202
+ usage: "/compact now",
203
+ description: "Compact eligible unpinned context immediately.",
204
+ category: "session",
205
+ aliases: ["compress now"],
206
+ detail: "Pinned context and exact referenced file/artifact paths are kept. Secret-like context is dropped rather than summarized."
207
+ },
208
+ {
209
+ name: "compact auto",
210
+ usage: "/compact auto [on|off]",
211
+ description: "Toggle automatic ContextStore compaction.",
212
+ category: "session",
213
+ aliases: ["compress auto"],
214
+ detail: "Without on/off, /compact auto enables automatic compaction. Use /compact auto off to disable it."
215
+ },
216
+ {
217
+ name: "compact reset",
218
+ usage: "/compact reset",
219
+ description: "Drop generated context summaries and disable automatic compaction.",
220
+ category: "session",
221
+ aliases: ["compress reset"],
222
+ detail: "Leaves regular and pinned context items in place, but marks generated summary items as dropped and turns automatic compaction off."
223
+ },
137
224
  {
138
225
  name: "sessions",
139
226
  usage: "/sessions",
@@ -180,10 +267,17 @@ export const slashCommands = [
180
267
  },
181
268
  {
182
269
  name: "experimental",
183
- usage: "/experimental [file-analysis|memory|subagents] [on|off]",
270
+ usage: "/experimental [file-analysis|memory|subagents|shell-metacharacters] [on|off]",
184
271
  description: "Open or update experimental feature toggles.",
185
272
  category: "utility",
186
- detail: "Run /experimental to open the checkbox menu. Use space to toggle file-analysis, memory, and subagents."
273
+ detail: "Run /experimental to open the checkbox menu. Use space to toggle file-analysis, memory, subagents, and shell-metacharacters."
274
+ },
275
+ {
276
+ name: "theme",
277
+ usage: "/theme [new|legacy]",
278
+ description: "Switch between the New experimental shell and the Legacy TUI.",
279
+ category: "utility",
280
+ detail: "Run /theme to open the picker, or /theme new / /theme legacy directly. New is the default fullscreen shell; Legacy is the original sidebar TUI. The choice is remembered."
187
281
  },
188
282
  {
189
283
  name: "init",
@@ -210,10 +304,19 @@ export function filterSlashCommands(input) {
210
304
  if (!input.startsWith("/")) {
211
305
  return [];
212
306
  }
213
- const commandPart = input.slice(1).trimStart().split(/\s+/)[0]?.toLowerCase() ?? "";
307
+ const normalizedInput = input.slice(1).trimStart().replace(/\s+/g, " ").toLowerCase();
308
+ const commandPart = normalizedInput.split(/\s+/)[0] ?? "";
214
309
  if (!commandPart) {
215
310
  return slashCommands;
216
311
  }
312
+ const fullPrefixMatches = slashCommands.filter((command) => command.name.startsWith(normalizedInput));
313
+ const fullAliasPrefixMatches = slashCommands.filter((command) => command.aliases?.some((alias) => alias.startsWith(normalizedInput)));
314
+ if (fullPrefixMatches.length > 0) {
315
+ return [...fullPrefixMatches, ...fullAliasPrefixMatches.filter((command) => !fullPrefixMatches.includes(command))];
316
+ }
317
+ if (fullAliasPrefixMatches.length > 0) {
318
+ return fullAliasPrefixMatches;
319
+ }
217
320
  const prefixMatches = slashCommands.filter((command) => command.name.startsWith(commandPart));
218
321
  const aliasPrefixMatches = slashCommands.filter((command) => command.aliases?.some((alias) => alias.startsWith(commandPart)));
219
322
  if (prefixMatches.length > 0) {
@@ -1 +1 @@
1
- {"version":3,"file":"commands.js","sourceRoot":"","sources":["../../src/tui/commands.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"commands.js","sourceRoot":"","sources":["../../src/tui/commands.ts"],"names":[],"mappings":"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"}
@@ -11,6 +11,21 @@ export function ApprovalPanel(props) {
11
11
  if (!request) {
12
12
  return null;
13
13
  }
14
- return (_jsxs(Box, { borderStyle: "double", borderColor: "yellow", flexDirection: "column", paddingX: 1, marginTop: 1, height: 5, overflowY: "hidden", children: [_jsxs(Text, { color: "yellow", bold: true, children: ["ACTION REQUIRED ", request.tool, " needs ", request.permission] }), _jsx(Text, { color: "white", bold: true, wrap: "truncate", children: request.preview }), _jsx(Text, { color: "cyan", bold: true, children: "Press [y] allow once [a] allow session [n/Esc] deny" })] }));
14
+ return (_jsxs(Box, { borderStyle: "double", borderColor: "yellow", flexDirection: "column", paddingX: 1, marginTop: 1, height: 6, overflowY: "hidden", children: [_jsxs(Text, { color: "yellow", bold: true, children: ["ACTION REQUIRED ", request.tool, " needs ", request.permission, " approval"] }), _jsxs(Text, { color: "gray", children: ["risk ", request.risk, " scope allow-session applies only to this tool", request.bypassable === false ? " bypass cannot skip this" : ""] }), _jsxs(Text, { color: "white", bold: true, wrap: "wrap", children: [request.preview, " ", formatApprovalTarget(request.arguments)] }), _jsx(Text, { color: "cyan", bold: true, children: "Press [y] allow once [a] allow session [n/Esc] deny" })] }));
15
+ }
16
+ function formatApprovalTarget(argumentsValue) {
17
+ const pathValue = typeof argumentsValue.path === "string" ? argumentsValue.path : "";
18
+ const commandValue = typeof argumentsValue.command === "string" ? argumentsValue.command : "";
19
+ const scriptValue = typeof argumentsValue.script === "string" ? argumentsValue.script : "";
20
+ if (pathValue) {
21
+ return `target ${pathValue}`;
22
+ }
23
+ if (scriptValue) {
24
+ return `script ${scriptValue}`;
25
+ }
26
+ if (commandValue) {
27
+ return `command ${commandValue}`;
28
+ }
29
+ return "";
15
30
  }
16
31
  //# sourceMappingURL=ApprovalPanel.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ApprovalPanel.js","sourceRoot":"","sources":["../../../src/tui/components/ApprovalPanel.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAGhC,MAAM,UAAU,aAAa,CAAC,KAG7B;IACC,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,kBAAkB,EAAE,CAAC;QAChD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,KAAK,CAAC,kBAAkB,EAAE,CAAC;QAC7B,OAAO,CACP,MAAC,GAAG,IAAC,WAAW,EAAC,QAAQ,EAAC,WAAW,EAAC,KAAK,EAAC,aAAa,EAAC,QAAQ,EAAC,QAAQ,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,SAAS,EAAC,QAAQ,aACzH,KAAC,IAAI,IAAC,KAAK,EAAC,KAAK,EAAC,IAAI,sDAEf,EACL,KAAC,IAAI,IAAC,KAAK,EAAC,OAAO,EAAC,IAAI,mGAAoF,EAC5G,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,EAAC,IAAI,qFAAsE,IACzF,CACP,CAAC;IACJ,CAAC;IAED,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;IAC9B,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,CACL,MAAC,GAAG,IAAC,WAAW,EAAC,QAAQ,EAAC,WAAW,EAAC,QAAQ,EAAC,aAAa,EAAC,QAAQ,EAAC,QAAQ,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,SAAS,EAAC,QAAQ,aAC5H,MAAC,IAAI,IAAC,KAAK,EAAC,QAAQ,EAAC,IAAI,wCACL,OAAO,CAAC,IAAI,aAAS,OAAO,CAAC,UAAU,IACpD,EACP,KAAC,IAAI,IAAC,KAAK,EAAC,OAAO,EAAC,IAAI,QAAC,IAAI,EAAC,UAAU,YACrC,OAAO,CAAC,OAAO,GACX,EACP,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,EAAC,IAAI,4EAA6D,IAChF,CACP,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"ApprovalPanel.js","sourceRoot":"","sources":["../../../src/tui/components/ApprovalPanel.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAGhC,MAAM,UAAU,aAAa,CAAC,KAG7B;IACC,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,kBAAkB,EAAE,CAAC;QAChD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,KAAK,CAAC,kBAAkB,EAAE,CAAC;QAC7B,OAAO,CACP,MAAC,GAAG,IAAC,WAAW,EAAC,QAAQ,EAAC,WAAW,EAAC,KAAK,EAAC,aAAa,EAAC,QAAQ,EAAC,QAAQ,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,SAAS,EAAC,QAAQ,aACzH,KAAC,IAAI,IAAC,KAAK,EAAC,KAAK,EAAC,IAAI,sDAEf,EACL,KAAC,IAAI,IAAC,KAAK,EAAC,OAAO,EAAC,IAAI,mGAAoF,EAC5G,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,EAAC,IAAI,qFAAsE,IACzF,CACP,CAAC;IACJ,CAAC;IAED,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;IAC9B,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,CACL,MAAC,GAAG,IAAC,WAAW,EAAC,QAAQ,EAAC,WAAW,EAAC,QAAQ,EAAC,aAAa,EAAC,QAAQ,EAAC,QAAQ,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,SAAS,EAAC,QAAQ,aAC5H,MAAC,IAAI,IAAC,KAAK,EAAC,QAAQ,EAAC,IAAI,wCACL,OAAO,CAAC,IAAI,aAAS,OAAO,CAAC,UAAU,iBACpD,EACP,MAAC,IAAI,IAAC,KAAK,EAAC,MAAM,sBACV,OAAO,CAAC,IAAI,qDAAiD,OAAO,CAAC,UAAU,KAAK,KAAK,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,EAAE,IAC7H,EACP,MAAC,IAAI,IAAC,KAAK,EAAC,OAAO,EAAC,IAAI,QAAC,IAAI,EAAC,MAAM,aACjC,OAAO,CAAC,OAAO,OAAG,oBAAoB,CAAC,OAAO,CAAC,SAAS,CAAC,IACrD,EACP,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,EAAC,IAAI,4EAA6D,IAChF,CACP,CAAC;AACJ,CAAC;AAED,SAAS,oBAAoB,CAAC,cAAuC;IACnE,MAAM,SAAS,GAAG,OAAO,cAAc,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;IACrF,MAAM,YAAY,GAAG,OAAO,cAAc,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;IAC9F,MAAM,WAAW,GAAG,OAAO,cAAc,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;IAC3F,IAAI,SAAS,EAAE,CAAC;QACd,OAAO,UAAU,SAAS,EAAE,CAAC;IAC/B,CAAC;IACD,IAAI,WAAW,EAAE,CAAC;QAChB,OAAO,UAAU,WAAW,EAAE,CAAC;IACjC,CAAC;IACD,IAAI,YAAY,EAAE,CAAC;QACjB,OAAO,WAAW,YAAY,EAAE,CAAC;IACnC,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC"}
@@ -8,10 +8,33 @@ export function CommandSuggestions(props) {
8
8
  const startIndex = Math.max(0, Math.min(props.selectedIndex - Math.floor(maxRows / 2), Math.max(0, props.items.length - maxRows)));
9
9
  const visibleItems = props.items.slice(startIndex, startIndex + maxRows);
10
10
  const endIndex = startIndex + visibleItems.length;
11
- return (_jsxs(Box, { borderStyle: "round", borderColor: "cyan", flexDirection: "column", paddingX: 1, height: Math.min(maxRows, props.items.length) + 4, overflowY: "hidden", children: [_jsxs(Text, { color: "gray", children: ["Use up/down to pick, Enter to apply, Escape to clear. ", startIndex + 1, "-", endIndex, "/", props.items.length] }), visibleItems.map((item, index) => {
11
+ const selectedItem = props.items[props.selectedIndex] ?? props.items[0];
12
+ const hasPreview = Boolean(selectedItem);
13
+ return (_jsxs(Box, { borderStyle: "round", borderColor: "cyan", flexDirection: "column", paddingX: 1, height: Math.min(maxRows, props.items.length) + (hasPreview ? 7 : 4), overflowY: "hidden", children: [_jsxs(Text, { color: "gray", children: ["Command palette use up/down to pick, Enter to apply, Escape to clear. ", startIndex + 1, "-", endIndex, "/", props.items.length] }), _jsxs(Box, { marginTop: 1, children: [_jsx(Text, { color: "cyan", bold: true, children: "Commands" }), _jsx(Text, { color: "gray", children: " grouped by category" })] }), visibleItems.map((item, index) => {
12
14
  const absoluteIndex = startIndex + index;
13
15
  const isSelected = absoluteIndex === props.selectedIndex;
14
- return (_jsxs(Box, { marginTop: index === 0 ? 1 : 0, children: [_jsx(Box, { width: 2, children: _jsx(Text, { color: isSelected ? "cyan" : "gray", children: isSelected ? ">" : " " }) }), _jsx(Box, { width: 13, children: _jsx(Text, { color: isSelected ? "cyan" : "gray", bold: isSelected, children: item.category }) }), _jsx(Box, { width: 32, children: _jsx(Text, { color: isSelected ? "white" : "cyan", bold: isSelected, wrap: "truncate", children: item.label }) }), _jsxs(Text, { color: isSelected ? "white" : "gray", wrap: "truncate", children: [item.detail, item.hint ? ` ${item.hint}` : ""] })] }, item.key));
15
- })] }));
16
+ return (_jsxs(Box, { marginTop: index === 0 ? 1 : 0, children: [_jsx(Box, { width: 2, children: _jsx(Text, { color: isSelected ? "cyan" : "gray", children: isSelected ? ">" : " " }) }), _jsx(Box, { width: 13, children: _jsx(Text, { color: isSelected ? "cyan" : "gray", bold: isSelected, children: formatCategory(item.category) }) }), _jsx(Box, { width: 32, children: _jsx(Text, { color: isSelected ? "white" : "cyan", bold: isSelected, wrap: "truncate", children: item.label }) }), _jsxs(Text, { color: isSelected ? "white" : "gray", wrap: "truncate", children: [item.detail, item.hint ? ` ${item.hint}` : ""] })] }, item.key));
17
+ }), selectedItem ? (_jsxs(Box, { marginTop: 1, borderStyle: "single", borderColor: "gray", paddingX: 1, flexDirection: "column", children: [_jsx(Text, { color: "cyan", bold: true, children: selectedItem.label }), _jsx(Text, { color: "white", wrap: "truncate", children: selectedItem.detail }), _jsx(Text, { color: "gray", wrap: "truncate", children: selectedItem.hint ?? previewForCommand(selectedItem) })] })) : null] }));
18
+ }
19
+ function formatCategory(category) {
20
+ return category.length > 11 ? category.slice(0, 11) : category;
21
+ }
22
+ function previewForCommand(item) {
23
+ if (item.label.startsWith("/models") || item.label.startsWith("/model")) {
24
+ return "Preview: load provider models, filter by query, then select.";
25
+ }
26
+ if (item.label.startsWith("/sessions") || item.label.startsWith("/resume")) {
27
+ return "Preview: inspect saved workspace session history.";
28
+ }
29
+ if (item.label.startsWith("/connect") || item.label.startsWith("/hosts")) {
30
+ return "Preview: choose local, LAN, Tailscale, or manual Ollama host.";
31
+ }
32
+ if (item.label.startsWith("/doctor")) {
33
+ return "Preview: check runtime, git, provider auth, and bridge setup.";
34
+ }
35
+ if (item.label.startsWith("/experimental")) {
36
+ return "Preview: toggle file analysis, memory, and subagent features.";
37
+ }
38
+ return `Preview: ${item.category} command`;
16
39
  }
17
40
  //# sourceMappingURL=CommandSuggestions.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CommandSuggestions.js","sourceRoot":"","sources":["../../../src/tui/components/CommandSuggestions.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAUhC,MAAM,UAAU,kBAAkB,CAAC,KAGlC;IACC,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC7B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,OAAO,GAAG,CAAC,CAAC;IAClB,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IACnI,MAAM,YAAY,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,CAAC;IACzE,MAAM,QAAQ,GAAG,UAAU,GAAG,YAAY,CAAC,MAAM,CAAC;IAElD,OAAO,CACL,MAAC,GAAG,IAAC,WAAW,EAAC,OAAO,EAAC,WAAW,EAAC,MAAM,EAAC,aAAa,EAAC,QAAQ,EAAC,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,SAAS,EAAC,QAAQ,aACnJ,MAAC,IAAI,IAAC,KAAK,EAAC,MAAM,uEACuC,UAAU,GAAG,CAAC,OAAG,QAAQ,OAAG,KAAK,CAAC,KAAK,CAAC,MAAM,IAChG,EACN,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;gBAChC,MAAM,aAAa,GAAG,UAAU,GAAG,KAAK,CAAC;gBACzC,MAAM,UAAU,GAAG,aAAa,KAAK,KAAK,CAAC,aAAa,CAAC;gBACzD,OAAO,CACL,MAAC,GAAG,IAAgB,SAAS,EAAE,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAChD,KAAC,GAAG,IAAC,KAAK,EAAE,CAAC,YACX,KAAC,IAAI,IAAC,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,YAAG,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAQ,GACtE,EACN,KAAC,GAAG,IAAC,KAAK,EAAE,EAAE,YACZ,KAAC,IAAI,IAAC,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,UAAU,YACxD,IAAI,CAAC,QAAQ,GACT,GACH,EACN,KAAC,GAAG,IAAC,KAAK,EAAE,EAAE,YACZ,KAAC,IAAI,IAAC,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAC,UAAU,YAC1E,IAAI,CAAC,KAAK,GACN,GACH,EACN,MAAC,IAAI,IAAC,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,EAAC,UAAU,aACxD,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,IAC7B,KAjBC,IAAI,CAAC,GAAG,CAkBZ,CACP,CAAC;YACJ,CAAC,CAAC,IACE,CACP,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"CommandSuggestions.js","sourceRoot":"","sources":["../../../src/tui/components/CommandSuggestions.tsx"],"names":[],"mappings":"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"}
@@ -1,10 +1,13 @@
1
1
  import React from "react";
2
+ import type { AgentWorkState } from "../../core/types.js";
2
3
  export declare function Composer(props: {
3
4
  input: string;
4
5
  isRunning: boolean;
5
6
  isApprovalWaiting?: boolean;
6
7
  status: string;
8
+ workState: AgentWorkState;
7
9
  draftTokens: number;
10
+ width: number;
8
11
  mask?: string;
9
12
  onChange: (value: string) => void;
10
13
  onSubmit: (value: string) => void;
@@ -1,17 +1,31 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { useEffect, useState } from "react";
3
- import { Box, Text } from "ink";
4
- import TextInput from "ink-text-input";
3
+ import { Box, Text, useInput } from "ink";
4
+ import { computeComposerLayout } from "../layout.js";
5
+ import { randomRunStatusSeed, runStatusParts } from "../runStatus.js";
5
6
  export function Composer(props) {
6
7
  const [frameIndex, setFrameIndex] = useState(0);
7
8
  const [runningSince, setRunningSince] = useState(null);
9
+ const [verbSeed, setVerbSeed] = useState(() => randomRunStatusSeed());
10
+ const prompt = props.isApprovalWaiting ? "input > " : props.isRunning ? "run > " : "patch > ";
11
+ const layout = computeComposerLayout({
12
+ input: props.input,
13
+ width: props.width,
14
+ promptWidth: prompt.length
15
+ });
8
16
  useEffect(() => {
9
17
  if (!props.isRunning) {
10
18
  setRunningSince(null);
11
19
  setFrameIndex(0);
12
20
  return;
13
21
  }
14
- setRunningSince((currentValue) => currentValue ?? Date.now());
22
+ setRunningSince((currentValue) => {
23
+ if (currentValue === null) {
24
+ setVerbSeed(randomRunStatusSeed());
25
+ return Date.now();
26
+ }
27
+ return currentValue;
28
+ });
15
29
  const timer = setInterval(() => {
16
30
  setFrameIndex((currentValue) => (currentValue + 1) % spinnerFrames.length);
17
31
  }, 120);
@@ -19,11 +33,49 @@ export function Composer(props) {
19
33
  clearInterval(timer);
20
34
  };
21
35
  }, [props.isRunning]);
36
+ useInput((inputValue, key) => {
37
+ if (props.isRunning || props.isApprovalWaiting) {
38
+ return;
39
+ }
40
+ if (key.return) {
41
+ if (key.shift || key.meta || key.super) {
42
+ props.onChange(`${props.input}\n`);
43
+ return;
44
+ }
45
+ props.onSubmit(props.input);
46
+ return;
47
+ }
48
+ if (key.backspace || key.delete) {
49
+ props.onChange(props.input.slice(0, -1));
50
+ return;
51
+ }
52
+ if (key.tab || key.escape || key.upArrow || key.downArrow || key.leftArrow || key.rightArrow || key.pageUp || key.pageDown || key.home || key.end) {
53
+ return;
54
+ }
55
+ if (key.ctrl || inputValue.length === 0) {
56
+ return;
57
+ }
58
+ props.onChange(`${props.input}${inputValue}`);
59
+ }, {
60
+ isActive: !props.isRunning && !props.isApprovalWaiting
61
+ });
22
62
  const elapsedSeconds = runningSince ? Math.max(0, Math.floor((Date.now() - runningSince) / 1000)) : 0;
23
- return (_jsxs(Box, { flexDirection: "column", height: 2, overflowY: "hidden", children: [_jsxs(Box, { height: 1, children: [_jsx(Text, { color: props.isApprovalWaiting ? "yellow" : props.isRunning ? "yellow" : "cyan", children: props.isApprovalWaiting ? "input > " : props.isRunning ? "running " : "patch > " }), props.isApprovalWaiting ? (_jsx(Text, { color: "yellow", children: "approval waiting" })) : props.isRunning ? (_jsxs(Text, { color: "yellow", children: [spinnerFrames[frameIndex], " ", props.status, _jsx(Text, { color: "gray", children: elapsedSeconds > 0 ? ` ${elapsedSeconds}s` : " starting" })] })) : (_jsx(TextInput, { value: props.input, onChange: props.onChange, onSubmit: props.onSubmit, placeholder: "Ask PatchPilot or type /help...", mask: props.mask }))] }), _jsx(Text, { color: "gray", wrap: "truncate", children: props.isApprovalWaiting ? "Approval waiting: use y/a/n or /approve session, /deny." : props.isRunning ? "Input is locked while the current run is active." : `prompt ${props.draftTokens} tok est` })] }));
63
+ const runStatus = runStatusParts({
64
+ workState: props.workState,
65
+ status: props.status,
66
+ elapsedMs: elapsedSeconds * 1000,
67
+ seed: verbSeed
68
+ });
69
+ const renderedRows = props.mask ? layout.visibleRows.map((row) => props.mask?.repeat(row.length) ?? row) : layout.visibleRows;
70
+ const placeholder = props.input.length === 0 ? "Ask PatchPilot or type /help..." : "";
71
+ return (_jsxs(Box, { flexDirection: "column", height: layout.height, overflowY: "hidden", children: [_jsx(Box, { height: layout.editorRows, flexDirection: "column", children: props.isApprovalWaiting || props.isRunning ? (_jsxs(Box, { height: 1, children: [_jsx(Text, { color: props.isApprovalWaiting ? "yellow" : "cyan", children: prompt }), props.isApprovalWaiting ? (_jsx(Text, { color: "yellow", children: "approval waiting" })) : (_jsxs(Text, { color: "yellow", children: [spinnerFrames[frameIndex], " ", runStatus.verb, " \u00B7 ", runStatus.state, runStatus.detail ? ` · ${runStatus.detail}` : "", _jsx(Text, { color: "gray", children: elapsedSeconds > 0 ? ` ${elapsedSeconds}s` : " starting" })] }))] })) : renderedRows.map((row, index) => {
72
+ const isLastRow = index === renderedRows.length - 1;
73
+ const text = row || (isLastRow ? placeholder : "");
74
+ return (_jsxs(Box, { height: 1, children: [_jsx(Text, { color: "cyan", children: index === 0 ? prompt : " ".repeat(prompt.length) }), _jsxs(Text, { color: placeholder && isLastRow ? "gray" : "white", children: [text, isLastRow ? _jsx(Text, { inverse: true, children: " " }) : null] })] }, `composer-row-${index}`));
75
+ }) }), _jsx(Text, { color: "gray", wrap: "truncate", children: props.isApprovalWaiting ? "Approval waiting: press y once, a session, or n deny." : props.isRunning ? "Input is locked while the current run is active." : `prompt ${props.draftTokens} tok est${layout.hiddenRows > 0 ? ` ${layout.hiddenRows} earlier draft line${layout.hiddenRows === 1 ? "" : "s"}` : ""} Enter sends Shift/Meta+Enter newline` })] }));
24
76
  }
25
77
  export function FooterHints(props) {
26
78
  return (_jsx(Box, { height: 1, overflowY: "hidden", children: _jsxs(Text, { color: "gray", children: ["tab plan/build/bypass | pane ", props.activePane, " | left/right pane | pgup/pgdn scroll | / starts palette"] }) }));
27
79
  }
28
- const spinnerFrames = ["-", "\\", "|", "/"];
80
+ const spinnerFrames = ["", "", "", "", "⠼", "⠴", "⠦", "⠧", "⠇", "⠏"];
29
81
  //# sourceMappingURL=Composer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Composer.js","sourceRoot":"","sources":["../../../src/tui/components/Composer.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Composer.js","sourceRoot":"","sources":["../../../src/tui/components/Composer.tsx"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import React from "react";
2
- export type ExperimentalFlag = "fileAnalysis" | "memory" | "subagents";
2
+ export type ExperimentalFlag = "fileAnalysis" | "memory" | "subagents" | "shellMetacharacters";
3
3
  export type ExperimentalFlags = Record<ExperimentalFlag, boolean>;
4
4
  export declare function ExperimentalPanel(props: {
5
5
  flags: ExperimentalFlags;
@@ -15,6 +15,11 @@ const experimentalRows = [
15
15
  key: "subagents",
16
16
  label: "Subagents",
17
17
  description: "Enable explorer, planner, and reviewer advisors for larger workspace tasks."
18
+ },
19
+ {
20
+ key: "shellMetacharacters",
21
+ label: "Shell Metachars",
22
+ description: "Allow pipes, &&, and ; in run_shell. Redirects and expansion still ask even in bypass."
18
23
  }
19
24
  ];
20
25
  export function ExperimentalPanel(props) {
@@ -1 +1 @@
1
- {"version":3,"file":"ExperimentalPanel.js","sourceRoot":"","sources":["../../../src/tui/components/ExperimentalPanel.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAMhC,MAAM,gBAAgB,GAIjB;IACH;QACE,GAAG,EAAE,cAAc;QACnB,KAAK,EAAE,eAAe;QACtB,WAAW,EAAE,qGAAqG;KACnH;IACD;QACE,GAAG,EAAE,QAAQ;QACb,KAAK,EAAE,QAAQ;QACf,WAAW,EAAE,gFAAgF;KAC9F;IACD;QACE,GAAG,EAAE,WAAW;QAChB,KAAK,EAAE,WAAW;QAClB,WAAW,EAAE,6EAA6E;KAC3F;CACF,CAAC;AAEF,MAAM,UAAU,iBAAiB,CAAC,KAIjC;IACC,OAAO,CACL,MAAC,GAAG,IAAC,WAAW,EAAC,OAAO,EAAC,WAAW,EAAC,MAAM,EAAC,aAAa,EAAC,QAAQ,EAAC,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,SAAS,EAAC,QAAQ,aACtH,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,EAAC,IAAI,8CAEhB,EACP,KAAC,IAAI,IAAC,KAAK,EAAC,OAAO,gFAAuE,EAC1F,KAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,SAAS,EAAE,CAAC,YACrC,gBAAgB,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;oBACnC,MAAM,QAAQ,GAAG,KAAK,KAAK,KAAK,CAAC,aAAa,CAAC;oBAC/C,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;oBACrC,OAAO,CACL,MAAC,GAAG,IAAe,SAAS,EAAE,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAC/C,KAAC,GAAG,IAAC,KAAK,EAAE,CAAC,YACX,KAAC,IAAI,IAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,YAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAQ,GAClE,EACN,KAAC,GAAG,IAAC,KAAK,EAAE,CAAC,YACX,KAAC,IAAI,IAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,YAAG,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,GAAQ,GACrE,EACN,KAAC,GAAG,IAAC,KAAK,EAAE,EAAE,YACZ,KAAC,IAAI,IAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,YACrD,GAAG,CAAC,KAAK,GACL,GACH,EACN,KAAC,IAAI,IAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,YAAG,GAAG,CAAC,WAAW,GAAQ,KAZ1D,GAAG,CAAC,GAAG,CAaX,CACP,CAAC;gBACJ,CAAC,CAAC,GACE,IACF,CACP,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,KAAa;IAC9C,OAAO,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,cAAc,CAAC;AAC5G,CAAC;AAED,MAAM,UAAU,qBAAqB;IACnC,OAAO,gBAAgB,CAAC,MAAM,CAAC;AACjC,CAAC"}
1
+ {"version":3,"file":"ExperimentalPanel.js","sourceRoot":"","sources":["../../../src/tui/components/ExperimentalPanel.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAMhC,MAAM,gBAAgB,GAIjB;IACH;QACE,GAAG,EAAE,cAAc;QACnB,KAAK,EAAE,eAAe;QACtB,WAAW,EAAE,qGAAqG;KACnH;IACD;QACE,GAAG,EAAE,QAAQ;QACb,KAAK,EAAE,QAAQ;QACf,WAAW,EAAE,gFAAgF;KAC9F;IACD;QACE,GAAG,EAAE,WAAW;QAChB,KAAK,EAAE,WAAW;QAClB,WAAW,EAAE,6EAA6E;KAC3F;IACD;QACE,GAAG,EAAE,qBAAqB;QAC1B,KAAK,EAAE,iBAAiB;QACxB,WAAW,EAAE,wFAAwF;KACtG;CACF,CAAC;AAEF,MAAM,UAAU,iBAAiB,CAAC,KAIjC;IACC,OAAO,CACL,MAAC,GAAG,IAAC,WAAW,EAAC,OAAO,EAAC,WAAW,EAAC,MAAM,EAAC,aAAa,EAAC,QAAQ,EAAC,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,SAAS,EAAC,QAAQ,aACtH,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,EAAC,IAAI,8CAEhB,EACP,KAAC,IAAI,IAAC,KAAK,EAAC,OAAO,gFAAuE,EAC1F,KAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,SAAS,EAAE,CAAC,YACrC,gBAAgB,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;oBACnC,MAAM,QAAQ,GAAG,KAAK,KAAK,KAAK,CAAC,aAAa,CAAC;oBAC/C,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;oBACrC,OAAO,CACL,MAAC,GAAG,IAAe,SAAS,EAAE,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAC/C,KAAC,GAAG,IAAC,KAAK,EAAE,CAAC,YACX,KAAC,IAAI,IAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,YAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAQ,GAClE,EACN,KAAC,GAAG,IAAC,KAAK,EAAE,CAAC,YACX,KAAC,IAAI,IAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,YAAG,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,GAAQ,GACrE,EACN,KAAC,GAAG,IAAC,KAAK,EAAE,EAAE,YACZ,KAAC,IAAI,IAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,YACrD,GAAG,CAAC,KAAK,GACL,GACH,EACN,KAAC,IAAI,IAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,YAAG,GAAG,CAAC,WAAW,GAAQ,KAZ1D,GAAG,CAAC,GAAG,CAaX,CACP,CAAC;gBACJ,CAAC,CAAC,GACE,IACF,CACP,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,KAAa;IAC9C,OAAO,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,cAAc,CAAC;AAC5G,CAAC;AAED,MAAM,UAAU,qBAAqB;IACnC,OAAO,gBAAgB,CAAC,MAAM,CAAC;AACjC,CAAC"}
@@ -1,8 +1,13 @@
1
1
  import React from "react";
2
2
  import type { ModelProvider } from "../../core/types.js";
3
3
  import type { OllamaHost } from "../hosts.js";
4
+ import { type OnboardingPreferences } from "../onboardingPreferences.js";
4
5
  export type ApiKeyProvider = "gemini" | "gemini-wrapper" | "openrouter" | "nvidia";
5
6
  export type OnboardingState = {
7
+ step: "welcome";
8
+ } | {
9
+ step: "disclaimer";
10
+ } | {
6
11
  step: "entry";
7
12
  } | {
8
13
  step: "host";
@@ -38,6 +43,11 @@ export type OnboardingState = {
38
43
  provider: ModelProvider;
39
44
  models: string[];
40
45
  deviceName?: string;
46
+ } | {
47
+ step: "preferences";
48
+ provider: ModelProvider;
49
+ model: string;
50
+ preferences: OnboardingPreferences;
41
51
  };
42
52
  export declare function OnboardingPanel(props: {
43
53
  state: OnboardingState;
@@ -50,6 +60,8 @@ export declare function OnboardingPanel(props: {
50
60
  text: string;
51
61
  detail?: string;
52
62
  } | null;
63
+ formatModelLabel?: (model: string) => string;
64
+ formatModelDescription?: (model: string) => string;
53
65
  onInputChange: (value: string) => void;
54
66
  onInputSubmit: (value: string) => void;
55
67
  }): React.ReactElement;