dexto 1.4.0 → 1.5.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 (223) hide show
  1. package/README.md +62 -7
  2. package/dist/agents/agent-template.yml +2 -2
  3. package/dist/agents/coding-agent/coding-agent.yml +22 -16
  4. package/dist/agents/database-agent/database-agent.yml +2 -2
  5. package/dist/agents/default-agent.yml +7 -5
  6. package/dist/agents/github-agent/github-agent.yml +2 -2
  7. package/dist/agents/product-name-researcher/product-name-researcher.yml +2 -2
  8. package/dist/agents/talk2pdf-agent/talk2pdf-agent.yml +2 -2
  9. package/dist/analytics/events.d.ts +13 -6
  10. package/dist/analytics/events.d.ts.map +1 -1
  11. package/dist/analytics/index.d.ts +1 -1
  12. package/dist/analytics/index.d.ts.map +1 -1
  13. package/dist/analytics/index.js +6 -2
  14. package/dist/api/server-hono.d.ts.map +1 -1
  15. package/dist/api/server-hono.js +27 -5
  16. package/dist/cli/cli-subscriber.d.ts +4 -0
  17. package/dist/cli/cli-subscriber.d.ts.map +1 -1
  18. package/dist/cli/cli-subscriber.js +40 -2
  19. package/dist/cli/commands/create-app.d.ts +16 -14
  20. package/dist/cli/commands/create-app.d.ts.map +1 -1
  21. package/dist/cli/commands/create-app.js +626 -102
  22. package/dist/cli/commands/create-image.d.ts +7 -0
  23. package/dist/cli/commands/create-image.d.ts.map +1 -0
  24. package/dist/cli/commands/create-image.js +201 -0
  25. package/dist/cli/commands/helpers/formatters.js +7 -7
  26. package/dist/cli/commands/index.d.ts +2 -1
  27. package/dist/cli/commands/index.d.ts.map +1 -1
  28. package/dist/cli/commands/index.js +2 -1
  29. package/dist/cli/commands/init-app.js +7 -7
  30. package/dist/cli/commands/install.d.ts +0 -3
  31. package/dist/cli/commands/install.d.ts.map +1 -1
  32. package/dist/cli/commands/install.js +10 -35
  33. package/dist/cli/commands/interactive-commands/command-parser.js +7 -7
  34. package/dist/cli/commands/interactive-commands/general-commands.js +1 -1
  35. package/dist/cli/commands/interactive-commands/prompt-commands.js +11 -11
  36. package/dist/cli/commands/interactive-commands/system/system-commands.js +3 -3
  37. package/dist/cli/commands/list-agents.js +2 -2
  38. package/dist/cli/commands/session-commands.js +16 -16
  39. package/dist/cli/commands/setup.d.ts +13 -5
  40. package/dist/cli/commands/setup.d.ts.map +1 -1
  41. package/dist/cli/commands/setup.js +860 -65
  42. package/dist/cli/commands/which.js +1 -1
  43. package/dist/cli/ink-cli/components/ApprovalPrompt.d.ts +2 -0
  44. package/dist/cli/ink-cli/components/ApprovalPrompt.d.ts.map +1 -1
  45. package/dist/cli/ink-cli/components/ApprovalPrompt.js +29 -7
  46. package/dist/cli/ink-cli/components/CustomInput.js +1 -1
  47. package/dist/cli/ink-cli/components/EditableMultiLineInput.js +4 -4
  48. package/dist/cli/ink-cli/components/ElicitationForm.d.ts.map +1 -1
  49. package/dist/cli/ink-cli/components/ElicitationForm.js +6 -6
  50. package/dist/cli/ink-cli/components/ErrorBoundary.d.ts.map +1 -1
  51. package/dist/cli/ink-cli/components/ErrorBoundary.js +1 -1
  52. package/dist/cli/ink-cli/components/Footer.d.ts.map +1 -1
  53. package/dist/cli/ink-cli/components/Footer.js +1 -1
  54. package/dist/cli/ink-cli/components/HistorySearchBar.d.ts.map +1 -1
  55. package/dist/cli/ink-cli/components/HistorySearchBar.js +1 -1
  56. package/dist/cli/ink-cli/components/MultiLineInput.d.ts.map +1 -1
  57. package/dist/cli/ink-cli/components/MultiLineInput.js +3 -3
  58. package/dist/cli/ink-cli/components/ResourceAutocomplete.d.ts.map +1 -1
  59. package/dist/cli/ink-cli/components/ResourceAutocomplete.js +4 -4
  60. package/dist/cli/ink-cli/components/SlashCommandAutocomplete.js +3 -3
  61. package/dist/cli/ink-cli/components/StatusBar.d.ts.map +1 -1
  62. package/dist/cli/ink-cli/components/StatusBar.js +7 -5
  63. package/dist/cli/ink-cli/components/TextBufferInput.d.ts.map +1 -1
  64. package/dist/cli/ink-cli/components/TextBufferInput.js +6 -6
  65. package/dist/cli/ink-cli/components/base/BaseAutocomplete.js +4 -4
  66. package/dist/cli/ink-cli/components/base/BaseSelector.js +2 -2
  67. package/dist/cli/ink-cli/components/chat/Footer.js +1 -1
  68. package/dist/cli/ink-cli/components/chat/Header.d.ts.map +1 -1
  69. package/dist/cli/ink-cli/components/chat/Header.js +2 -4
  70. package/dist/cli/ink-cli/components/chat/MessageItem.d.ts.map +1 -1
  71. package/dist/cli/ink-cli/components/chat/MessageItem.js +5 -5
  72. package/dist/cli/ink-cli/components/chat/MessageList.js +1 -1
  73. package/dist/cli/ink-cli/components/chat/QueuedMessagesDisplay.js +1 -1
  74. package/dist/cli/ink-cli/components/chat/ToolIcon.d.ts +1 -1
  75. package/dist/cli/ink-cli/components/chat/ToolIcon.js +4 -4
  76. package/dist/cli/ink-cli/components/chat/styled-boxes/ConfigBox.js +1 -1
  77. package/dist/cli/ink-cli/components/chat/styled-boxes/HelpBox.js +1 -1
  78. package/dist/cli/ink-cli/components/chat/styled-boxes/LogConfigBox.js +2 -2
  79. package/dist/cli/ink-cli/components/chat/styled-boxes/SessionHistoryBox.js +5 -5
  80. package/dist/cli/ink-cli/components/chat/styled-boxes/SessionListBox.js +2 -2
  81. package/dist/cli/ink-cli/components/chat/styled-boxes/ShortcutsBox.js +1 -1
  82. package/dist/cli/ink-cli/components/chat/styled-boxes/StatsBox.js +1 -1
  83. package/dist/cli/ink-cli/components/chat/styled-boxes/StyledBox.js +2 -2
  84. package/dist/cli/ink-cli/components/modes/AlternateBufferCLI.d.ts.map +1 -1
  85. package/dist/cli/ink-cli/components/modes/AlternateBufferCLI.js +1 -1
  86. package/dist/cli/ink-cli/components/modes/StaticCLI.d.ts.map +1 -1
  87. package/dist/cli/ink-cli/components/modes/StaticCLI.js +1 -1
  88. package/dist/cli/ink-cli/components/overlays/ApiKeyInput.js +1 -1
  89. package/dist/cli/ink-cli/components/overlays/CustomModelWizard.d.ts +10 -2
  90. package/dist/cli/ink-cli/components/overlays/CustomModelWizard.d.ts.map +1 -1
  91. package/dist/cli/ink-cli/components/overlays/CustomModelWizard.js +198 -89
  92. package/dist/cli/ink-cli/components/overlays/LogLevelSelector.d.ts.map +1 -1
  93. package/dist/cli/ink-cli/components/overlays/LogLevelSelector.js +2 -2
  94. package/dist/cli/ink-cli/components/overlays/McpAddChoice.d.ts.map +1 -1
  95. package/dist/cli/ink-cli/components/overlays/McpAddChoice.js +1 -1
  96. package/dist/cli/ink-cli/components/overlays/McpAddSelector.js +1 -1
  97. package/dist/cli/ink-cli/components/overlays/McpCustomTypeSelector.d.ts.map +1 -1
  98. package/dist/cli/ink-cli/components/overlays/McpCustomTypeSelector.js +2 -2
  99. package/dist/cli/ink-cli/components/overlays/McpCustomWizard.js +1 -1
  100. package/dist/cli/ink-cli/components/overlays/McpRemoveSelector.d.ts.map +1 -1
  101. package/dist/cli/ink-cli/components/overlays/McpRemoveSelector.js +1 -1
  102. package/dist/cli/ink-cli/components/overlays/McpSelector.d.ts.map +1 -1
  103. package/dist/cli/ink-cli/components/overlays/McpSelector.js +1 -1
  104. package/dist/cli/ink-cli/components/overlays/McpServerActions.d.ts.map +1 -1
  105. package/dist/cli/ink-cli/components/overlays/McpServerActions.js +2 -2
  106. package/dist/cli/ink-cli/components/overlays/McpServerList.d.ts.map +1 -1
  107. package/dist/cli/ink-cli/components/overlays/McpServerList.js +1 -1
  108. package/dist/cli/ink-cli/components/overlays/ModelSelectorRefactored.d.ts +5 -5
  109. package/dist/cli/ink-cli/components/overlays/ModelSelectorRefactored.d.ts.map +1 -1
  110. package/dist/cli/ink-cli/components/overlays/ModelSelectorRefactored.js +222 -68
  111. package/dist/cli/ink-cli/components/overlays/PromptAddChoice.d.ts.map +1 -1
  112. package/dist/cli/ink-cli/components/overlays/PromptAddChoice.js +2 -2
  113. package/dist/cli/ink-cli/components/overlays/PromptAddWizard.js +1 -1
  114. package/dist/cli/ink-cli/components/overlays/PromptDeleteSelector.d.ts.map +1 -1
  115. package/dist/cli/ink-cli/components/overlays/PromptDeleteSelector.js +2 -2
  116. package/dist/cli/ink-cli/components/overlays/PromptList.d.ts.map +1 -1
  117. package/dist/cli/ink-cli/components/overlays/PromptList.js +2 -2
  118. package/dist/cli/ink-cli/components/overlays/SearchOverlay.d.ts.map +1 -1
  119. package/dist/cli/ink-cli/components/overlays/SearchOverlay.js +4 -4
  120. package/dist/cli/ink-cli/components/overlays/SessionSubcommandSelector.d.ts.map +1 -1
  121. package/dist/cli/ink-cli/components/overlays/SessionSubcommandSelector.js +1 -1
  122. package/dist/cli/ink-cli/components/overlays/StreamSelector.d.ts.map +1 -1
  123. package/dist/cli/ink-cli/components/overlays/StreamSelector.js +1 -1
  124. package/dist/cli/ink-cli/components/overlays/ToolBrowser.js +12 -12
  125. package/dist/cli/ink-cli/components/overlays/custom-model-wizard/LocalModelWizard.d.ts +25 -0
  126. package/dist/cli/ink-cli/components/overlays/custom-model-wizard/LocalModelWizard.d.ts.map +1 -0
  127. package/dist/cli/ink-cli/components/overlays/custom-model-wizard/LocalModelWizard.js +609 -0
  128. package/dist/cli/ink-cli/components/overlays/custom-model-wizard/index.d.ts +15 -0
  129. package/dist/cli/ink-cli/components/overlays/custom-model-wizard/index.d.ts.map +1 -0
  130. package/dist/cli/ink-cli/components/overlays/custom-model-wizard/index.js +14 -0
  131. package/dist/cli/ink-cli/components/overlays/custom-model-wizard/provider-config.d.ts +33 -0
  132. package/dist/cli/ink-cli/components/overlays/custom-model-wizard/provider-config.d.ts.map +1 -0
  133. package/dist/cli/ink-cli/components/overlays/custom-model-wizard/provider-config.js +419 -0
  134. package/dist/cli/ink-cli/components/overlays/custom-model-wizard/shared/ApiKeyStep.d.ts +25 -0
  135. package/dist/cli/ink-cli/components/overlays/custom-model-wizard/shared/ApiKeyStep.d.ts.map +1 -0
  136. package/dist/cli/ink-cli/components/overlays/custom-model-wizard/shared/ApiKeyStep.js +29 -0
  137. package/dist/cli/ink-cli/components/overlays/custom-model-wizard/shared/ProviderSelector.d.ts +17 -0
  138. package/dist/cli/ink-cli/components/overlays/custom-model-wizard/shared/ProviderSelector.d.ts.map +1 -0
  139. package/dist/cli/ink-cli/components/overlays/custom-model-wizard/shared/ProviderSelector.js +11 -0
  140. package/dist/cli/ink-cli/components/overlays/custom-model-wizard/shared/SetupInfoBanner.d.ts +20 -0
  141. package/dist/cli/ink-cli/components/overlays/custom-model-wizard/shared/SetupInfoBanner.d.ts.map +1 -0
  142. package/dist/cli/ink-cli/components/overlays/custom-model-wizard/shared/SetupInfoBanner.js +10 -0
  143. package/dist/cli/ink-cli/components/overlays/custom-model-wizard/shared/WizardStepInput.d.ts +30 -0
  144. package/dist/cli/ink-cli/components/overlays/custom-model-wizard/shared/WizardStepInput.d.ts.map +1 -0
  145. package/dist/cli/ink-cli/components/overlays/custom-model-wizard/shared/WizardStepInput.js +13 -0
  146. package/dist/cli/ink-cli/components/overlays/custom-model-wizard/shared/index.d.ts +8 -0
  147. package/dist/cli/ink-cli/components/overlays/custom-model-wizard/shared/index.d.ts.map +1 -0
  148. package/dist/cli/ink-cli/components/overlays/custom-model-wizard/shared/index.js +7 -0
  149. package/dist/cli/ink-cli/components/overlays/custom-model-wizard/types.d.ts +79 -0
  150. package/dist/cli/ink-cli/components/overlays/custom-model-wizard/types.d.ts.map +1 -0
  151. package/dist/cli/ink-cli/components/overlays/custom-model-wizard/types.js +38 -0
  152. package/dist/cli/ink-cli/components/renderers/DiffRenderer.js +2 -2
  153. package/dist/cli/ink-cli/components/renderers/FilePreviewRenderer.js +1 -1
  154. package/dist/cli/ink-cli/components/renderers/FileRenderer.js +4 -4
  155. package/dist/cli/ink-cli/components/renderers/GenericRenderer.js +2 -2
  156. package/dist/cli/ink-cli/components/renderers/SearchRenderer.js +1 -1
  157. package/dist/cli/ink-cli/components/renderers/ShellRenderer.js +3 -3
  158. package/dist/cli/ink-cli/components/renderers/diff-shared.js +1 -1
  159. package/dist/cli/ink-cli/components/shared/MarkdownText.d.ts.map +1 -1
  160. package/dist/cli/ink-cli/components/shared/MarkdownText.js +8 -6
  161. package/dist/cli/ink-cli/containers/InputContainer.d.ts.map +1 -1
  162. package/dist/cli/ink-cli/containers/InputContainer.js +23 -1
  163. package/dist/cli/ink-cli/containers/OverlayContainer.d.ts.map +1 -1
  164. package/dist/cli/ink-cli/containers/OverlayContainer.js +80 -24
  165. package/dist/cli/ink-cli/hooks/useAgentEvents.d.ts +1 -1
  166. package/dist/cli/ink-cli/hooks/useAgentEvents.d.ts.map +1 -1
  167. package/dist/cli/ink-cli/hooks/useAgentEvents.js +5 -1
  168. package/dist/cli/ink-cli/hooks/useCLIState.d.ts +1 -1
  169. package/dist/cli/ink-cli/hooks/useCLIState.d.ts.map +1 -1
  170. package/dist/cli/ink-cli/hooks/useCLIState.js +4 -2
  171. package/dist/cli/ink-cli/services/processStream.d.ts.map +1 -1
  172. package/dist/cli/ink-cli/services/processStream.js +77 -9
  173. package/dist/cli/ink-cli/state/types.d.ts +3 -2
  174. package/dist/cli/ink-cli/state/types.d.ts.map +1 -1
  175. package/dist/cli/ink-cli/utils/messageFormatting.d.ts +5 -0
  176. package/dist/cli/ink-cli/utils/messageFormatting.d.ts.map +1 -1
  177. package/dist/cli/ink-cli/utils/messageFormatting.js +59 -1
  178. package/dist/cli/ink-cli/utils/toolUtils.d.ts.map +1 -1
  179. package/dist/cli/ink-cli/utils/toolUtils.js +2 -0
  180. package/dist/cli/utils/api-key-setup.d.ts +54 -4
  181. package/dist/cli/utils/api-key-setup.d.ts.map +1 -1
  182. package/dist/cli/utils/api-key-setup.js +433 -107
  183. package/dist/cli/utils/api-key-verification.d.ts +17 -0
  184. package/dist/cli/utils/api-key-verification.d.ts.map +1 -0
  185. package/dist/cli/utils/api-key-verification.js +211 -0
  186. package/dist/cli/utils/config-validation.d.ts +22 -2
  187. package/dist/cli/utils/config-validation.d.ts.map +1 -1
  188. package/dist/cli/utils/config-validation.js +354 -25
  189. package/dist/cli/utils/local-model-setup.d.ts +46 -0
  190. package/dist/cli/utils/local-model-setup.d.ts.map +1 -0
  191. package/dist/cli/utils/local-model-setup.js +662 -0
  192. package/dist/cli/utils/options.js +1 -1
  193. package/dist/cli/utils/prompt-helpers.d.ts +47 -0
  194. package/dist/cli/utils/prompt-helpers.d.ts.map +1 -0
  195. package/dist/cli/utils/prompt-helpers.js +66 -0
  196. package/dist/cli/utils/provider-setup.d.ts +66 -8
  197. package/dist/cli/utils/provider-setup.d.ts.map +1 -1
  198. package/dist/cli/utils/provider-setup.js +324 -84
  199. package/dist/cli/utils/scaffolding-utils.d.ts +76 -0
  200. package/dist/cli/utils/scaffolding-utils.d.ts.map +1 -0
  201. package/dist/cli/utils/scaffolding-utils.js +246 -0
  202. package/dist/cli/utils/setup-utils.d.ts +16 -0
  203. package/dist/cli/utils/setup-utils.d.ts.map +1 -1
  204. package/dist/cli/utils/setup-utils.js +72 -21
  205. package/dist/cli/utils/template-engine.d.ts +65 -0
  206. package/dist/cli/utils/template-engine.d.ts.map +1 -0
  207. package/dist/cli/utils/template-engine.js +1089 -0
  208. package/dist/config/cli-overrides.d.ts +44 -1
  209. package/dist/config/cli-overrides.d.ts.map +1 -1
  210. package/dist/config/cli-overrides.js +102 -0
  211. package/dist/index.js +315 -53
  212. package/dist/webui/assets/index-8j-KMkX1.js +2054 -0
  213. package/dist/webui/assets/index-c_AX24V4.css +1 -0
  214. package/dist/webui/index.html +3 -9
  215. package/dist/webui/logos/aws-color.svg +1 -0
  216. package/dist/webui/logos/dexto/dexto_logo.svg +1 -1
  217. package/dist/webui/logos/dexto/dexto_logo_light.svg +6 -6
  218. package/dist/webui/logos/glama.svg +7 -0
  219. package/dist/webui/logos/litellm.svg +7 -0
  220. package/dist/webui/logos/openrouter.svg +1 -0
  221. package/package.json +8 -7
  222. package/dist/webui/assets/index-BkwPkZpd.css +0 -1
  223. package/dist/webui/assets/index-D9u1XfyH.js +0 -2025
@@ -31,7 +31,7 @@ export async function handleWhichCommand(agentName) {
31
31
  const validated = WhichCommandSchema.parse({ agentName });
32
32
  const availableAgents = getAvailableAgentNames();
33
33
  try {
34
- const resolvedPath = await resolveAgentPath(validated.agentName, false, false); // Don't auto-install, don't inject preferences
34
+ const resolvedPath = await resolveAgentPath(validated.agentName, false); // Don't auto-install
35
35
  console.log(resolvedPath);
36
36
  }
37
37
  catch (error) {
@@ -23,6 +23,8 @@ export interface ApprovalOptions {
23
23
  formData?: Record<string, unknown>;
24
24
  /** Enable "accept all edits" mode (auto-approve future edit_file/write_file) */
25
25
  enableAcceptEditsMode?: boolean;
26
+ /** Remember directory access for the session */
27
+ rememberDirectory?: boolean;
26
28
  }
27
29
  interface ApprovalPromptProps {
28
30
  approval: ApprovalRequest;
@@ -1 +1 @@
1
- {"version":3,"file":"ApprovalPrompt.d.ts","sourceRoot":"","sources":["../../../../src/cli/ink-cli/components/ApprovalPrompt.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAuE,MAAM,OAAO,CAAC;AAG5F,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,kCAAkC,CAAC;AAK5D,MAAM,WAAW,eAAe;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,IAAI,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACrC;AAED,MAAM,WAAW,oBAAoB;IACjC,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,KAAK,OAAO,CAAC;CACrD;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC5B,oEAAoE;IACpE,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,mEAAmE;IACnE,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,yCAAyC;IACzC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,gFAAgF;IAChF,qBAAqB,CAAC,EAAE,OAAO,CAAC;CACnC;AAED,UAAU,mBAAmB;IACzB,QAAQ,EAAE,eAAe,CAAC;IAC1B,SAAS,EAAE,CAAC,OAAO,EAAE,eAAe,KAAK,IAAI,CAAC;IAC9C,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,QAAQ,EAAE,MAAM,IAAI,CAAC;CACxB;AAOD;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,kGAoP1B,CAAC"}
1
+ {"version":3,"file":"ApprovalPrompt.d.ts","sourceRoot":"","sources":["../../../../src/cli/ink-cli/components/ApprovalPrompt.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAuE,MAAM,OAAO,CAAC;AAG5F,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,kCAAkC,CAAC;AAK5D,MAAM,WAAW,eAAe;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,IAAI,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACrC;AAED,MAAM,WAAW,oBAAoB;IACjC,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,KAAK,OAAO,CAAC;CACrD;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC5B,oEAAoE;IACpE,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,mEAAmE;IACnE,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,yCAAyC;IACzC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,gFAAgF;IAChF,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,gDAAgD;IAChD,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC/B;AAED,UAAU,mBAAmB;IACzB,QAAQ,EAAE,eAAe,CAAC;IAC1B,SAAS,EAAE,CAAC,OAAO,EAAE,eAAe,KAAK,IAAI,CAAC;IAC9C,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,QAAQ,EAAE,MAAM,IAAI,CAAC;CACxB;AAOD;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,kGA2R1B,CAAC"}
@@ -1,4 +1,4 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
2
  import { forwardRef, useState, useImperativeHandle, useRef, useEffect } from 'react';
3
3
  import { Box, Text } from 'ink';
4
4
  import { ElicitationForm } from './ElicitationForm.js';
@@ -14,6 +14,7 @@ import { isEditWriteTool } from '../utils/toolUtils.js';
14
14
  export const ApprovalPrompt = forwardRef(({ approval, onApprove, onDeny, onCancel }, ref) => {
15
15
  const isCommandConfirmation = approval.type === 'command_confirmation';
16
16
  const isElicitation = approval.type === 'elicitation';
17
+ const isDirectoryAccess = approval.type === 'directory_access';
17
18
  // Extract suggested patterns for bash tools
18
19
  const suggestedPatterns = approval.metadata.suggestedPatterns ?? [];
19
20
  const hasBashPatterns = suggestedPatterns.length > 0;
@@ -44,6 +45,14 @@ export const ApprovalPrompt = forwardRef(({ approval, onApprove, onDeny, onCance
44
45
  options.push({ id: 'yes', label: 'Yes' });
45
46
  options.push({ id: 'no', label: 'No' });
46
47
  }
48
+ else if (isDirectoryAccess) {
49
+ // Directory access - offer session-scoped access
50
+ const parentDir = approval.metadata.parentDir;
51
+ const dirLabel = parentDir ? ` "${parentDir}"` : '';
52
+ options.push({ id: 'yes', label: 'Yes (once)' });
53
+ options.push({ id: 'yes-session', label: `Yes, allow${dirLabel} (session)` });
54
+ options.push({ id: 'no', label: 'No' });
55
+ }
47
56
  else if (isEditOrWriteTool) {
48
57
  // Edit/write file tools - offer "accept all edits" mode instead of session
49
58
  options.push({ id: 'yes', label: 'Yes' });
@@ -85,7 +94,13 @@ export const ApprovalPrompt = forwardRef(({ approval, onApprove, onDeny, onCance
85
94
  onApprove({});
86
95
  }
87
96
  else if (option.id === 'yes-session') {
88
- onApprove({ rememberChoice: true });
97
+ // For directory access, remember the directory; otherwise remember the tool
98
+ if (isDirectoryAccess) {
99
+ onApprove({ rememberDirectory: true });
100
+ }
101
+ else {
102
+ onApprove({ rememberChoice: true });
103
+ }
89
104
  }
90
105
  else if (option.id === 'yes-accept-edits') {
91
106
  // Approve and enable "accept all edits" mode
@@ -121,6 +136,7 @@ export const ApprovalPrompt = forwardRef(({ approval, onApprove, onDeny, onCance
121
136
  }), [
122
137
  isElicitation,
123
138
  isEditOrWriteTool,
139
+ isDirectoryAccess,
124
140
  options,
125
141
  suggestedPatterns,
126
142
  onApprove,
@@ -141,19 +157,21 @@ export const ApprovalPrompt = forwardRef(({ approval, onApprove, onDeny, onCance
141
157
  return null;
142
158
  switch (displayPreview.type) {
143
159
  case 'diff': {
144
- const isOverwrite = toolName === 'internal--write_file' || toolName === 'write_file';
160
+ const isOverwrite = toolName === 'custom--write_file' ||
161
+ toolName === 'internal--write_file' ||
162
+ toolName === 'write_file';
145
163
  return (_jsx(DiffPreview, { data: displayPreview, headerType: isOverwrite ? 'overwrite' : 'edit' }));
146
164
  }
147
165
  case 'shell':
148
166
  // For shell preview, just show the command (no output yet)
149
- return (_jsxs(Box, { marginBottom: 1, flexDirection: "row", children: [_jsx(Text, { dimColor: true, children: "$ " }), _jsx(Text, { color: "yellow", children: displayPreview.command }), displayPreview.isBackground && _jsx(Text, { dimColor: true, children: " (background)" })] }));
167
+ return (_jsxs(Box, { marginBottom: 1, flexDirection: "row", children: [_jsx(Text, { color: "gray", children: "$ " }), _jsx(Text, { color: "yellowBright", children: displayPreview.command }), displayPreview.isBackground && _jsx(Text, { color: "gray", children: " (background)" })] }));
150
168
  case 'file':
151
169
  // Use enhanced file preview with full content for new file creation
152
170
  if (displayPreview.operation === 'create' && displayPreview.content) {
153
171
  return _jsx(CreateFilePreview, { data: displayPreview });
154
172
  }
155
173
  // Fallback for other file operations
156
- return (_jsx(Box, { marginBottom: 1, children: _jsxs(Text, { dimColor: true, children: [displayPreview.operation === 'read' &&
174
+ return (_jsx(Box, { marginBottom: 1, children: _jsxs(Text, { color: "gray", children: [displayPreview.operation === 'read' &&
157
175
  `Read ${displayPreview.lineCount ?? 'file'} lines`, displayPreview.operation === 'write' &&
158
176
  `Write to ${displayPreview.path}`, displayPreview.operation === 'delete' &&
159
177
  `Delete ${displayPreview.path}`] }) }));
@@ -161,10 +179,14 @@ export const ApprovalPrompt = forwardRef(({ approval, onApprove, onDeny, onCance
161
179
  return null;
162
180
  }
163
181
  };
164
- return (_jsxs(Box, { paddingX: 0, paddingY: 0, flexDirection: "column", children: [_jsxs(Box, { flexDirection: "column", marginBottom: 0, children: [_jsxs(Box, { flexDirection: "row", children: [_jsxs(Text, { color: "yellow", bold: true, children: ["\uD83D\uDD10 Approval:", ' '] }), toolName && _jsx(Text, { color: "cyan", children: toolName })] }), isCommandConfirmation && command && (_jsxs(Box, { flexDirection: "row", marginTop: 0, children: [_jsx(Text, { color: "gray", children: ' Command: ' }), _jsx(Text, { color: "red", children: command })] }))] }), renderPreview(), _jsx(Box, { flexDirection: "column", marginTop: 0, children: options.map((option, index) => {
182
+ // Extract directory access metadata
183
+ const directoryPath = approval.metadata.path;
184
+ const parentDir = approval.metadata.parentDir;
185
+ const operation = approval.metadata.operation;
186
+ return (_jsxs(Box, { paddingX: 0, paddingY: 0, flexDirection: "column", children: [_jsx(Box, { flexDirection: "column", marginBottom: 0, children: isDirectoryAccess ? (_jsxs(_Fragment, { children: [_jsxs(Box, { flexDirection: "row", children: [_jsxs(Text, { color: "yellowBright", bold: true, children: ["\uD83D\uDD10 Directory Access:", ' '] }), _jsx(Text, { color: "cyan", children: parentDir || directoryPath })] }), _jsxs(Box, { flexDirection: "row", marginTop: 0, children: [_jsx(Text, { color: "gray", children: ' ' }), _jsxs(Text, { color: "gray", children: [toolName ? `"${toolName}"` : 'Tool', " wants to", ' ', operation || 'access', " files outside working directory"] })] })] })) : (_jsxs(_Fragment, { children: [_jsxs(Box, { flexDirection: "row", children: [_jsxs(Text, { color: "yellowBright", bold: true, children: ["\uD83D\uDD10 Approval:", ' '] }), toolName && _jsx(Text, { color: "cyan", children: toolName })] }), isCommandConfirmation && command && (_jsxs(Box, { flexDirection: "row", marginTop: 0, children: [_jsx(Text, { color: "gray", children: ' Command: ' }), _jsx(Text, { color: "red", children: command })] }))] })) }), renderPreview(), _jsx(Box, { flexDirection: "column", marginTop: 0, children: options.map((option, index) => {
165
187
  const isSelected = index === selectedIndex;
166
188
  const isNo = option.id === 'no';
167
189
  return (_jsx(Box, { children: isSelected ? (_jsxs(Text, { color: isNo ? 'red' : 'green', bold: true, children: [' ▶ ', option.label] })) : (_jsxs(Text, { color: "gray", children: [' ', option.label] })) }, option.id));
168
- }) }), _jsx(Box, { marginTop: 0, children: _jsxs(Text, { color: "gray", dimColor: true, children: [' ', "\u2191\u2193 to select \u2022 Enter to confirm \u2022 Esc to cancel"] }) })] }));
190
+ }) }), _jsx(Box, { marginTop: 0, children: _jsxs(Text, { color: "gray", children: [' ', "\u2191\u2193 to select \u2022 Enter to confirm \u2022 Esc to cancel"] }) })] }));
169
191
  });
170
192
  ApprovalPrompt.displayName = 'ApprovalPrompt';
@@ -44,7 +44,7 @@ export default function CustomInput({ value, onChange, onSubmit, placeholder, is
44
44
  // Empty input - highlight first character of placeholder
45
45
  const firstChar = placeholder[0] || ' ';
46
46
  const rest = placeholder.slice(1);
47
- return (_jsxs(Text, { children: [_jsx(Text, { color: "black", backgroundColor: "green", children: firstChar }), _jsx(Text, { dimColor: true, children: rest })] }));
47
+ return (_jsxs(Text, { children: [_jsx(Text, { color: "black", backgroundColor: "green", children: firstChar }), _jsx(Text, { color: "gray", children: rest })] }));
48
48
  }
49
49
  // Has value - highlight character after end (space)
50
50
  return (_jsxs(Text, { children: [value, _jsx(Text, { color: "black", backgroundColor: "green", children: ' ' })] }));
@@ -104,17 +104,17 @@ export default function EditableMultiLineInput({ value, onChange, onSubmit, plac
104
104
  const prefix = lineIdx === 0 ? '» ' : ' ';
105
105
  if (cursorCol < 0) {
106
106
  // No cursor on this line
107
- return (_jsxs(Text, { children: [_jsx(Text, { color: "magenta", children: prefix }), _jsx(Text, { children: line || ' ' })] }, lineIdx));
107
+ return (_jsxs(Text, { children: [_jsx(Text, { color: "cyan", children: prefix }), _jsx(Text, { children: line || ' ' })] }, lineIdx));
108
108
  }
109
109
  // Cursor on this line - highlight character at cursor
110
110
  const before = line.slice(0, cursorCol);
111
111
  const atCursor = line.charAt(cursorCol) || ' ';
112
112
  const after = line.slice(cursorCol + 1);
113
- return (_jsxs(Text, { children: [_jsx(Text, { color: "magenta", children: prefix }), _jsx(Text, { children: before }), _jsx(Text, { backgroundColor: "green", color: "black", children: atCursor }), _jsx(Text, { children: after })] }, lineIdx));
113
+ return (_jsxs(Text, { children: [_jsx(Text, { color: "cyan", children: prefix }), _jsx(Text, { children: before }), _jsx(Text, { backgroundColor: "green", color: "black", children: atCursor }), _jsx(Text, { children: after })] }, lineIdx));
114
114
  };
115
115
  // Show placeholder if empty
116
116
  if (!value && placeholder) {
117
- return (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Text, { children: [_jsx(Text, { color: "magenta", children: '» ' }), _jsx(Text, { backgroundColor: "green", color: "black", children: ' ' }), _jsxs(Text, { dimColor: true, children: [" ", placeholder] })] }), _jsx(Text, { dimColor: true, children: "Multi-line mode \u2022 Cmd/Ctrl+Enter to submit \u2022 Shift+Enter for single-line" })] }));
117
+ return (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Text, { children: [_jsx(Text, { color: "cyan", children: '» ' }), _jsx(Text, { backgroundColor: "green", color: "black", children: ' ' }), _jsxs(Text, { color: "gray", children: [" ", placeholder] })] }), _jsx(Text, { color: "gray", children: "Multi-line mode \u2022 Cmd/Ctrl+Enter to submit \u2022 Shift+Enter for single-line" })] }));
118
118
  }
119
- return (_jsxs(Box, { flexDirection: "column", children: [lines.map((line, idx) => renderLine(line, idx)), _jsx(Text, { dimColor: true, children: "Multi-line mode \u2022 Cmd/Ctrl+Enter to submit \u2022 Shift+Enter for single-line" })] }));
119
+ return (_jsxs(Box, { flexDirection: "column", children: [lines.map((line, idx) => renderLine(line, idx)), _jsx(Text, { color: "gray", children: "Multi-line mode \u2022 Cmd/Ctrl+Enter to submit \u2022 Shift+Enter for single-line" })] }));
120
120
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ElicitationForm.d.ts","sourceRoot":"","sources":["../../../../src/cli/ink-cli/components/ElicitationForm.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAA0E,MAAM,OAAO,CAAC;AAE/F,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,kCAAkC,CAAC;AAC5D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAEvD,MAAM,WAAW,qBAAqB;IAClC,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,KAAK,OAAO,CAAC;CACrD;AAED,UAAU,oBAAoB;IAC1B,QAAQ,EAAE,mBAAmB,CAAC;IAC9B,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;IACtD,QAAQ,EAAE,MAAM,IAAI,CAAC;CACxB;AAWD;;GAEG;AACH,eAAO,MAAM,eAAe,oGAugB3B,CAAC"}
1
+ {"version":3,"file":"ElicitationForm.d.ts","sourceRoot":"","sources":["../../../../src/cli/ink-cli/components/ElicitationForm.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAA0E,MAAM,OAAO,CAAC;AAE/F,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,kCAAkC,CAAC;AAC5D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAEvD,MAAM,WAAW,qBAAqB;IAClC,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,KAAK,OAAO,CAAC;CACrD;AAED,UAAU,oBAAoB;IAC1B,QAAQ,EAAE,mBAAmB,CAAC;IAC9B,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;IACtD,QAAQ,EAAE,MAAM,IAAI,CAAC;CACxB;AAWD;;GAEG;AACH,eAAO,MAAM,eAAe,oGAygB3B,CAAC"}
@@ -340,19 +340,19 @@ export const ElicitationForm = forwardRef(({ metadata, onSubmit, onCancel }, ref
340
340
  ? 'No'
341
341
  : String(value ?? '');
342
342
  return (_jsx(Box, { marginBottom: 0, children: _jsxs(Text, { children: [_jsx(Text, { color: "cyan", children: field.label }), _jsx(Text, { children: ": " }), _jsx(Text, { color: "green", children: displayValue })] }) }, field.name));
343
- }), _jsx(Box, { marginTop: 1, children: _jsx(Text, { dimColor: true, children: "Enter to submit \u2022 Backspace to edit \u2022 Esc to cancel" }) })] }));
343
+ }), _jsx(Box, { marginTop: 1, children: _jsx(Text, { color: "gray", children: "Enter to submit \u2022 Backspace to edit \u2022 Esc to cancel" }) })] }));
344
344
  }
345
- return (_jsxs(Box, { flexDirection: "column", paddingX: 0, paddingY: 0, children: [_jsx(Box, { marginBottom: 1, children: _jsxs(Text, { color: "yellow", bold: true, children: ["\uD83D\uDCDD ", prompt] }) }), fields.map((field, index) => {
345
+ return (_jsxs(Box, { flexDirection: "column", paddingX: 0, paddingY: 0, children: [_jsx(Box, { marginBottom: 1, children: _jsxs(Text, { color: "yellowBright", bold: true, children: ["\uD83D\uDCDD ", prompt] }) }), fields.map((field, index) => {
346
346
  const isActive = index === activeFieldIndex;
347
347
  const value = formData[field.name];
348
348
  const error = errors[field.name];
349
- return (_jsxs(Box, { flexDirection: "column", marginBottom: 1, children: [_jsxs(Box, { children: [_jsxs(Text, { color: isActive ? 'cyan' : 'white', bold: isActive, children: [isActive ? '▶ ' : ' ', field.label, field.required && _jsx(Text, { color: "red", children: "*" }), ': '] }), field.type === 'boolean' && (_jsxs(Text, { color: value === true ? 'green' : 'gray', children: [value === true ? '[✓] Yes' : '[ ] No', isActive && _jsx(Text, { dimColor: true, children: " (Space to toggle)" })] })), field.type === 'string' && !isActive && value !== undefined && (_jsx(Text, { color: "green", children: String(value) })), field.type === 'number' && !isActive && value !== undefined && (_jsx(Text, { color: "green", children: String(value) })), field.type === 'enum' && !isActive && value !== undefined && (_jsx(Text, { color: "green", children: String(value) })), field.type === 'array-enum' &&
349
+ return (_jsxs(Box, { flexDirection: "column", marginBottom: 1, children: [_jsxs(Box, { children: [_jsxs(Text, { color: isActive ? 'cyan' : 'white', bold: isActive, children: [isActive ? '▶ ' : ' ', field.label, field.required && _jsx(Text, { color: "red", children: "*" }), ': '] }), field.type === 'boolean' && (_jsxs(Text, { color: value === true ? 'green' : 'gray', children: [value === true ? '[✓] Yes' : '[ ] No', isActive && _jsx(Text, { color: "gray", children: " (Space to toggle)" })] })), field.type === 'string' && !isActive && value !== undefined && (_jsx(Text, { color: "green", children: String(value) })), field.type === 'number' && !isActive && value !== undefined && (_jsx(Text, { color: "green", children: String(value) })), field.type === 'enum' && !isActive && value !== undefined && (_jsx(Text, { color: "green", children: String(value) })), field.type === 'array-enum' &&
350
350
  !isActive &&
351
351
  Array.isArray(value) &&
352
- value.length > 0 && (_jsx(Text, { color: "green", children: value.join(', ') }))] }), isActive && (field.type === 'string' || field.type === 'number') && (_jsxs(Box, { marginLeft: 2, children: [_jsx(Text, { color: "cyan", children: "> " }), _jsx(Text, { children: currentInput }), _jsx(Text, { color: "cyan", children: "_" })] })), isActive && field.type === 'enum' && field.enumValues && (_jsx(Box, { flexDirection: "column", marginLeft: 2, children: field.enumValues.map((opt, i) => (_jsx(Box, { children: _jsxs(Text, { color: i === enumIndex ? 'green' : 'gray', children: [i === enumIndex ? ' ▶ ' : ' ', String(opt)] }) }, String(opt)))) })), isActive && field.type === 'array-enum' && field.enumValues && (_jsxs(Box, { flexDirection: "column", marginLeft: 2, children: [_jsx(Text, { dimColor: true, children: " (Space to select, Enter to confirm)" }), field.enumValues.map((opt, i) => {
352
+ value.length > 0 && (_jsx(Text, { color: "green", children: value.join(', ') }))] }), isActive && (field.type === 'string' || field.type === 'number') && (_jsxs(Box, { marginLeft: 2, children: [_jsx(Text, { color: "cyan", children: "> " }), _jsx(Text, { children: currentInput }), _jsx(Text, { color: "cyan", children: "_" })] })), isActive && field.type === 'enum' && field.enumValues && (_jsx(Box, { flexDirection: "column", marginLeft: 2, children: field.enumValues.map((opt, i) => (_jsx(Box, { children: _jsxs(Text, { color: i === enumIndex ? 'green' : 'gray', children: [i === enumIndex ? ' ▶ ' : ' ', String(opt)] }) }, String(opt)))) })), isActive && field.type === 'array-enum' && field.enumValues && (_jsxs(Box, { flexDirection: "column", marginLeft: 2, children: [_jsx(Text, { color: "gray", children: " (Space to select, Enter to confirm)" }), field.enumValues.map((opt, i) => {
353
353
  const isSelected = arraySelections.has(i);
354
354
  return (_jsx(Box, { children: _jsxs(Text, { color: i === enumIndex ? 'cyan' : 'gray', children: [i === enumIndex ? ' ▶ ' : ' ', _jsx(Text, { color: isSelected ? 'green' : 'gray', children: isSelected ? '[✓]' : '[ ]' }), ' ', String(opt)] }) }, String(opt)));
355
- })] })), isActive && field.description && (_jsx(Box, { marginLeft: 2, children: _jsx(Text, { dimColor: true, children: field.description }) })), error && (_jsx(Box, { marginLeft: 2, children: _jsx(Text, { color: "red", children: error }) }))] }, field.name));
356
- }), _jsx(Box, { marginTop: 1, children: _jsx(Text, { dimColor: true, children: "Tab/\u2193 next field \u2022 Shift+Tab/\u2191 prev \u2022 Enter to confirm \u2022 Esc to cancel" }) })] }));
355
+ })] })), isActive && field.description && (_jsx(Box, { marginLeft: 2, children: _jsx(Text, { color: "gray", children: field.description }) })), error && (_jsx(Box, { marginLeft: 2, children: _jsx(Text, { color: "red", children: error }) }))] }, field.name));
356
+ }), _jsx(Box, { marginTop: 1, children: _jsx(Text, { color: "gray", children: "Tab/\u2193 next field \u2022 Shift+Tab/\u2191 prev \u2022 Enter to confirm \u2022 Esc to cancel" }) })] }));
357
357
  });
358
358
  ElicitationForm.displayName = 'ElicitationForm';
@@ -1 +1 @@
1
- {"version":3,"file":"ErrorBoundary.d.ts","sourceRoot":"","sources":["../../../../src/cli/ink-cli/components/ErrorBoundary.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,UAAU,kBAAkB;IACxB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC7B;AAED,UAAU,kBAAkB;IACxB,QAAQ,EAAE,OAAO,CAAC;IAClB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;CACvB;AAED,qBAAa,aAAc,SAAQ,KAAK,CAAC,SAAS,CAAC,kBAAkB,EAAE,kBAAkB,CAAC;gBAC1E,KAAK,EAAE,kBAAkB;IAKrC,MAAM,CAAC,wBAAwB,CAAC,KAAK,EAAE,KAAK,GAAG,kBAAkB;IAIxD,iBAAiB,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,GAAG,IAAI;IAOjE,MAAM,IAAI,KAAK,CAAC,SAAS;CAiBrC"}
1
+ {"version":3,"file":"ErrorBoundary.d.ts","sourceRoot":"","sources":["../../../../src/cli/ink-cli/components/ErrorBoundary.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,UAAU,kBAAkB;IACxB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC7B;AAED,UAAU,kBAAkB;IACxB,QAAQ,EAAE,OAAO,CAAC;IAClB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;CACvB;AAED,qBAAa,aAAc,SAAQ,KAAK,CAAC,SAAS,CAAC,kBAAkB,EAAE,kBAAkB,CAAC;gBAC1E,KAAK,EAAE,kBAAkB;IAKrC,MAAM,CAAC,wBAAwB,CAAC,KAAK,EAAE,KAAK,GAAG,kBAAkB;IAIxD,iBAAiB,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,GAAG,IAAI;IAOjE,MAAM,IAAI,KAAK,CAAC,SAAS;CAerC"}
@@ -22,7 +22,7 @@ export class ErrorBoundary extends React.Component {
22
22
  }
23
23
  render() {
24
24
  if (this.state.hasError) {
25
- return (_jsxs(Box, { flexDirection: "column", padding: 1, borderStyle: "round", borderColor: "red", children: [_jsx(Text, { color: "red", bold: true, children: "\u274C CLI Error" }), _jsx(Text, { color: "red", children: this.state.error?.message || 'Unknown error' }), _jsx(Text, { color: "yellow", dimColor: true, children: "Press Ctrl+C to exit" })] }));
25
+ return (_jsxs(Box, { flexDirection: "column", padding: 1, borderStyle: "round", borderColor: "red", children: [_jsx(Text, { color: "red", bold: true, children: "\u274C CLI Error" }), _jsx(Text, { color: "red", children: this.state.error?.message || 'Unknown error' }), _jsx(Text, { color: "yellowBright", children: "Press Ctrl+C to exit" })] }));
26
26
  }
27
27
  return this.props.children;
28
28
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Footer.d.ts","sourceRoot":"","sources":["../../../../src/cli/ink-cli/components/Footer.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,UAAU,WAAW;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAoBD;;GAEG;AACH,wBAAgB,MAAM,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,UAAU,EAAE,gBAAgB,EAAE,EAAE,WAAW,2CA6BnF"}
1
+ {"version":3,"file":"Footer.d.ts","sourceRoot":"","sources":["../../../../src/cli/ink-cli/components/Footer.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,UAAU,WAAW;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAoBD;;GAEG;AACH,wBAAgB,MAAM,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,UAAU,EAAE,gBAAgB,EAAE,EAAE,WAAW,2CAwBnF"}
@@ -23,5 +23,5 @@ function shortenPath(path, maxLength = 40) {
23
23
  export function Footer({ modelName, cwd, branchName, autoApproveEdits }) {
24
24
  const displayPath = cwd ? shortenPath(cwd) : '';
25
25
  const displayModelName = getModelDisplayName(modelName);
26
- return (_jsxs(Box, { flexDirection: "column", paddingX: 1, children: [_jsxs(Box, { flexDirection: "row", justifyContent: "space-between", children: [_jsxs(Box, { children: [_jsx(Text, { color: "blue", children: displayPath }), branchName && (_jsxs(Text, { color: "gray", dimColor: true, children: [' ', "(", branchName, ")"] }))] }), _jsx(Text, { color: "cyan", children: displayModelName })] }), autoApproveEdits && (_jsxs(Box, { children: [_jsx(Text, { color: "yellow", children: "accept edits" }), _jsx(Text, { dimColor: true, children: " (shift + tab to toggle)" })] }))] }));
26
+ return (_jsxs(Box, { flexDirection: "column", paddingX: 1, children: [_jsxs(Box, { flexDirection: "row", justifyContent: "space-between", children: [_jsxs(Box, { children: [_jsx(Text, { color: "blue", children: displayPath }), branchName && _jsxs(Text, { color: "gray", children: [" (", branchName, ")"] })] }), _jsx(Text, { color: "cyan", children: displayModelName })] }), autoApproveEdits && (_jsxs(Box, { children: [_jsx(Text, { color: "yellowBright", children: "accept edits" }), _jsx(Text, { color: "gray", children: " (shift + tab to toggle)" })] }))] }));
27
27
  }
@@ -1 +1 @@
1
- {"version":3,"file":"HistorySearchBar.d.ts","sourceRoot":"","sources":["../../../../src/cli/ink-cli/components/HistorySearchBar.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,UAAU,qBAAqB;IAC3B,2BAA2B;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,oDAAoD;IACpD,QAAQ,EAAE,OAAO,CAAC;CACrB;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,qBAAqB,2CAqB1E"}
1
+ {"version":3,"file":"HistorySearchBar.d.ts","sourceRoot":"","sources":["../../../../src/cli/ink-cli/components/HistorySearchBar.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,UAAU,qBAAqB;IAC3B,2BAA2B;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,oDAAoD;IACpD,QAAQ,EAAE,OAAO,CAAC;CACrB;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,qBAAqB,2CAc1E"}
@@ -4,5 +4,5 @@ import { Box, Text } from 'ink';
4
4
  * Search bar displayed during history search mode
5
5
  */
6
6
  export function HistorySearchBar({ query, hasMatch }) {
7
- return (_jsxs(Box, { flexDirection: "column", paddingX: 1, children: [_jsx(Text, { color: "gray", dimColor: true, children: "Ctrl+R: older, Ctrl+E: newer, Enter: accept, Esc: cancel" }), _jsxs(Box, { children: [_jsx(Text, { color: "green", children: "search history: " }), _jsx(Text, { color: "cyan", children: query }), _jsx(Text, { color: "gray", children: "_" }), query && !hasMatch && (_jsxs(Text, { color: "red", dimColor: true, children: [' ', "(no match)"] }))] })] }));
7
+ return (_jsxs(Box, { flexDirection: "column", paddingX: 1, children: [_jsx(Text, { color: "gray", children: "Ctrl+R: older, Ctrl+E: newer, Enter: accept, Esc: cancel" }), _jsxs(Box, { children: [_jsx(Text, { color: "green", children: "search history: " }), _jsx(Text, { color: "cyan", children: query }), _jsx(Text, { color: "gray", children: "_" }), query && !hasMatch && _jsx(Text, { color: "red", children: " (no match)" })] })] }));
8
8
  }
@@ -1 +1 @@
1
- {"version":3,"file":"MultiLineInput.d.ts","sourceRoot":"","sources":["../../../../src/cli/ink-cli/components/MultiLineInput.tsx"],"names":[],"mappings":"AAGA,UAAU,mBAAmB;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;GAGG;AACH,MAAM,CAAC,OAAO,UAAU,cAAc,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,MAAa,EAAE,EAAE,mBAAmB,2CAsDhG"}
1
+ {"version":3,"file":"MultiLineInput.d.ts","sourceRoot":"","sources":["../../../../src/cli/ink-cli/components/MultiLineInput.tsx"],"names":[],"mappings":"AAGA,UAAU,mBAAmB;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;GAGG;AACH,MAAM,CAAC,OAAO,UAAU,cAAc,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,MAAa,EAAE,EAAE,mBAAmB,2CAgDhG"}
@@ -15,13 +15,13 @@ export default function MultiLineInput({ value, placeholder, prompt = '> ' }) {
15
15
  const lineCount = lines.length;
16
16
  // If empty, show placeholder
17
17
  if (!value && placeholder) {
18
- return (_jsxs(Box, { flexDirection: "row", children: [_jsx(Text, { color: "green", bold: true, children: prompt }), _jsx(Text, { dimColor: true, children: placeholder })] }));
18
+ return (_jsxs(Box, { flexDirection: "row", children: [_jsx(Text, { color: "green", bold: true, children: prompt }), _jsx(Text, { color: "gray", children: placeholder })] }));
19
19
  }
20
20
  // Display multi-line text - show last N lines if too many
21
21
  const visibleLines = lineCount > 10 ? lines.slice(-10) : lines;
22
22
  const startOffset = lineCount > 10 ? lineCount - 10 : 0;
23
- return (_jsxs(Box, { flexDirection: "column", children: [startOffset > 0 && (_jsx(Box, { children: _jsxs(Text, { color: "gray", dimColor: true, children: ["... (", startOffset, " more lines above)"] }) })), visibleLines.map((line, index) => {
23
+ return (_jsxs(Box, { flexDirection: "column", children: [startOffset > 0 && (_jsx(Box, { children: _jsxs(Text, { color: "gray", children: ["... (", startOffset, " more lines above)"] }) })), visibleLines.map((line, index) => {
24
24
  const actualIndex = startOffset + index;
25
- return (_jsxs(Box, { flexDirection: "row", children: [index === 0 && (_jsx(Text, { color: "green", bold: true, children: prompt })), index > 0 && (_jsx(Text, { color: "green", dimColor: true, children: ' '.repeat(prompt.length) })), _jsx(Text, { wrap: "wrap", children: line || ' ' })] }, actualIndex));
25
+ return (_jsxs(Box, { flexDirection: "row", children: [index === 0 && (_jsx(Text, { color: "green", bold: true, children: prompt })), index > 0 && _jsx(Text, { color: "green", children: ' '.repeat(prompt.length) }), _jsx(Text, { wrap: "wrap", children: line || ' ' })] }, actualIndex));
26
26
  })] }));
27
27
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ResourceAutocomplete.d.ts","sourceRoot":"","sources":["../../../../src/cli/ink-cli/components/ResourceAutocomplete.tsx"],"names":[],"mappings":"AAAA,OAAO,KAQN,MAAM,OAAO,CAAC;AAEf,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,kCAAkC,CAAC;AAC5D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C,MAAM,WAAW,0BAA0B;IACvC,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,KAAK,OAAO,CAAC;CACrD;AAED,UAAU,yBAAyB;IAC/B,SAAS,EAAE,OAAO,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,CAAC,QAAQ,EAAE,gBAAgB,KAAK,IAAI,CAAC;IACvD,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,KAAK,EAAE,UAAU,CAAC;CACrB;AA6ED;;GAEG;AACH,QAAA,MAAM,yBAAyB,8GAyR9B,CAAC;AAEF;;;GAGG;AACH,QAAA,MAAM,oBAAoB,EAErB,OAAO,yBAAyB,CAAC;AAEtC,eAAe,oBAAoB,CAAC"}
1
+ {"version":3,"file":"ResourceAutocomplete.d.ts","sourceRoot":"","sources":["../../../../src/cli/ink-cli/components/ResourceAutocomplete.tsx"],"names":[],"mappings":"AAAA,OAAO,KAQN,MAAM,OAAO,CAAC;AAEf,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,kCAAkC,CAAC;AAC5D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C,MAAM,WAAW,0BAA0B;IACvC,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,KAAK,OAAO,CAAC;CACrD;AAED,UAAU,yBAAyB;IAC/B,SAAS,EAAE,OAAO,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,CAAC,QAAQ,EAAE,gBAAgB,KAAK,IAAI,CAAC;IACvD,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,KAAK,EAAE,UAAU,CAAC;CACrB;AA6ED;;GAEG;AACH,QAAA,MAAM,yBAAyB,8GAgR9B,CAAC;AAEF;;;GAGG;AACH,QAAA,MAAM,oBAAoB,EAErB,OAAO,yBAAyB,CAAC;AAEtC,eAAe,oBAAoB,CAAC"}
@@ -236,21 +236,21 @@ const ResourceAutocompleteInner = forwardRef(function ResourceAutocomplete({ isV
236
236
  if (!isVisible)
237
237
  return null;
238
238
  if (isLoading) {
239
- return (_jsx(Box, { paddingX: 0, paddingY: 0, children: _jsx(Text, { dimColor: true, children: "Loading resources..." }) }));
239
+ return (_jsx(Box, { paddingX: 0, paddingY: 0, children: _jsx(Text, { color: "gray", children: "Loading resources..." }) }));
240
240
  }
241
241
  if (filteredResources.length === 0) {
242
- return (_jsx(Box, { paddingX: 0, paddingY: 0, children: _jsx(Text, { dimColor: true, children: mentionQuery
242
+ return (_jsx(Box, { paddingX: 0, paddingY: 0, children: _jsx(Text, { color: "gray", children: mentionQuery
243
243
  ? `No resources match "${mentionQuery}"`
244
244
  : 'No resources available. Connect an MCP server or enable internal resources.' }) }));
245
245
  }
246
246
  const totalItems = filteredResources.length;
247
- return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Box, { paddingX: 0, paddingY: 0, children: _jsxs(Text, { color: "yellow", bold: true, children: ["Resources (", selectedIndex + 1, "/", totalItems, ") - \u2191\u2193 navigate, Tab load, Enter select, Esc close"] }) }), visibleResources.map((resource, visibleIndex) => {
247
+ return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Box, { paddingX: 0, paddingY: 0, children: _jsxs(Text, { color: "yellowBright", bold: true, children: ["Resources (", selectedIndex + 1, "/", totalItems, ") - \u2191\u2193 navigate, Tab load, Enter select, Esc close"] }) }), visibleResources.map((resource, visibleIndex) => {
248
248
  const actualIndex = scrollOffset + visibleIndex;
249
249
  const isSelected = actualIndex === selectedIndex;
250
250
  const uriParts = resource.uri.split('/');
251
251
  const displayName = resource.name || uriParts[uriParts.length - 1] || resource.uri;
252
252
  const isImage = (resource.mimeType || '').startsWith('image/');
253
- return (_jsx(Box, { paddingX: 0, paddingY: 0, children: _jsxs(Box, { flexDirection: "column", children: [_jsxs(Box, { children: [isImage && (_jsx(Text, { color: isSelected ? 'cyan' : 'gray', children: "\uD83D\uDDBC\uFE0F " })), _jsx(Text, { color: isSelected ? 'cyan' : 'gray', bold: isSelected, children: displayName }), resource.serverName && (_jsx(Box, { marginLeft: 1, children: _jsxs(Text, { color: isSelected ? 'white' : 'gray', dimColor: !isSelected, children: ["[", resource.serverName, "]"] }) }))] }), _jsx(Box, { marginLeft: isImage ? 3 : 0, children: _jsx(Text, { color: isSelected ? 'white' : 'gray', dimColor: !isSelected, children: resource.uri }) }), resource.description && (_jsx(Box, { marginLeft: isImage ? 3 : 0, children: _jsx(Text, { color: isSelected ? 'white' : 'gray', dimColor: !isSelected, children: resource.description }) }))] }) }, resource.uri));
253
+ return (_jsx(Box, { paddingX: 0, paddingY: 0, children: _jsxs(Box, { flexDirection: "column", children: [_jsxs(Box, { children: [isImage && (_jsx(Text, { color: isSelected ? 'cyan' : 'gray', children: "\uD83D\uDDBC\uFE0F " })), _jsx(Text, { color: isSelected ? 'cyan' : 'gray', bold: isSelected, children: displayName }), resource.serverName && (_jsx(Box, { marginLeft: 1, children: _jsxs(Text, { color: isSelected ? 'white' : 'gray', children: ["[", resource.serverName, "]"] }) }))] }), _jsx(Box, { marginLeft: isImage ? 3 : 0, children: _jsx(Text, { color: isSelected ? 'white' : 'gray', children: resource.uri }) }), resource.description && (_jsx(Box, { marginLeft: isImage ? 3 : 0, children: _jsx(Text, { color: isSelected ? 'white' : 'gray', children: resource.description }) }))] }) }, resource.uri));
254
254
  })] }));
255
255
  });
256
256
  /**
@@ -373,7 +373,7 @@ const SlashCommandAutocompleteInner = forwardRef(function SlashCommandAutocomple
373
373
  return null;
374
374
  // Show loading state while fetching commands
375
375
  if (isLoading) {
376
- return (_jsx(Box, { width: terminalWidth, paddingX: 0, paddingY: 0, children: _jsx(Text, { dimColor: true, children: "Loading commands..." }) }));
376
+ return (_jsx(Box, { width: terminalWidth, paddingX: 0, paddingY: 0, children: _jsx(Text, { color: "gray", children: "Loading commands..." }) }));
377
377
  }
378
378
  // If no items after loading, don't render
379
379
  if (combinedItems.length === 0) {
@@ -395,7 +395,7 @@ const SlashCommandAutocompleteInner = forwardRef(function SlashCommandAutocomple
395
395
  // Two-line layout:
396
396
  // Line 1: /command-name
397
397
  // Line 2: Description text (category)
398
- return (_jsxs(Box, { flexDirection: "column", paddingX: 0, children: [_jsx(Text, { color: isSelected ? 'cyan' : 'gray', bold: isSelected, children: nameText }), _jsxs(Text, { color: isSelected ? 'white' : 'gray', dimColor: !isSelected, children: [' ', descText, categoryText] })] }, `system-${cmd.name}`));
398
+ return (_jsxs(Box, { flexDirection: "column", paddingX: 0, children: [_jsx(Text, { color: isSelected ? 'cyan' : 'gray', bold: isSelected, children: nameText }), _jsxs(Text, { color: isSelected ? 'white' : 'gray', children: [' ', descText, categoryText] })] }, `system-${cmd.name}`));
399
399
  }
400
400
  // Prompt command (MCP prompts)
401
401
  const prompt = item.prompt;
@@ -414,7 +414,7 @@ const SlashCommandAutocompleteInner = forwardRef(function SlashCommandAutocomple
414
414
  // Line 2: Description text (source)
415
415
  const commandText = nameText + argsString;
416
416
  const sourceLabel = prompt.source || 'prompt';
417
- return (_jsxs(Box, { flexDirection: "column", paddingX: 0, children: [_jsx(Text, { color: isSelected ? 'cyan' : 'gray', bold: isSelected, children: commandText }), _jsxs(Text, { color: isSelected ? 'white' : 'gray', dimColor: !isSelected, children: [' ', description, ` (${sourceLabel})`] })] }, `prompt-${prompt.name}`));
417
+ return (_jsxs(Box, { flexDirection: "column", paddingX: 0, children: [_jsx(Text, { color: isSelected ? 'cyan' : 'gray', bold: isSelected, children: commandText }), _jsxs(Text, { color: isSelected ? 'white' : 'gray', children: [' ', description, ` (${sourceLabel})`] })] }, `prompt-${prompt.name}`));
418
418
  })] }));
419
419
  });
420
420
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"StatusBar.d.ts","sourceRoot":"","sources":["../../../../src/cli/ink-cli/components/StatusBar.tsx"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAK9C,UAAU,cAAc;IACpB,KAAK,EAAE,UAAU,CAAC;IAClB,YAAY,EAAE,OAAO,CAAC;IACtB,UAAU,EAAE,OAAO,CAAC;IACpB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,oDAAoD;IACpD,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAChC;AAED;;;;;;;GAOG;AACH,wBAAgB,SAAS,CAAC,EACtB,KAAK,EACL,YAAY,EACZ,UAAU,EACV,kBAAkB,EAClB,eAAuB,EACvB,kBAA0B,GAC7B,EAAE,cAAc,kDAwFhB"}
1
+ {"version":3,"file":"StatusBar.d.ts","sourceRoot":"","sources":["../../../../src/cli/ink-cli/components/StatusBar.tsx"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAK9C,UAAU,cAAc;IACpB,KAAK,EAAE,UAAU,CAAC;IAClB,YAAY,EAAE,OAAO,CAAC;IACtB,UAAU,EAAE,OAAO,CAAC;IACpB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,oDAAoD;IACpD,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAChC;AAED;;;;;;;GAOG;AACH,wBAAgB,SAAS,CAAC,EACtB,KAAK,EACL,YAAY,EACZ,UAAU,EACV,kBAAkB,EAClB,eAAuB,EACvB,kBAA0B,GAC7B,EAAE,cAAc,kDAqFhB"}
@@ -32,7 +32,7 @@ export function StatusBar({ agent, isProcessing, isThinking, approvalQueueCount,
32
32
  const showTime = elapsedMs >= 30000;
33
33
  // Show copy mode warning (highest priority)
34
34
  if (copyModeEnabled) {
35
- return (_jsx(Box, { paddingX: 1, marginBottom: 0, children: _jsx(Text, { color: "yellow", bold: true, children: "\uD83D\uDCCB Copy Mode - Select text with mouse. Press any key to exit." }) }));
35
+ return (_jsx(Box, { paddingX: 1, marginBottom: 0, children: _jsx(Text, { color: "yellowBright", bold: true, children: "\uD83D\uDCCB Copy Mode - Select text with mouse. Press any key to exit." }) }));
36
36
  }
37
37
  if (!isProcessing) {
38
38
  // No status bar when idle
@@ -42,18 +42,20 @@ export function StatusBar({ agent, isProcessing, isThinking, approvalQueueCount,
42
42
  if (isAwaitingApproval) {
43
43
  return null;
44
44
  }
45
- // Show initial processing state (before streaming starts) - magenta color
45
+ // Show initial processing state (before streaming starts) - green/teal color
46
46
  // TODO: Rename this event/state to "reasoning" and associate it with actual reasoning tokens
47
47
  // Currently "thinking" event fires before any response, not during reasoning token generation
48
48
  if (isThinking) {
49
49
  const metaParts = [];
50
50
  if (showTime)
51
51
  metaParts.push(`(${elapsedTime})`);
52
+ if (tokenCount)
53
+ metaParts.push(tokenCount);
52
54
  metaParts.push('Esc to cancel');
53
55
  const metaContent = metaParts.join(' • ');
54
- return (_jsxs(Box, { paddingX: 1, marginTop: 1, marginBottom: 1, flexDirection: "column", children: [_jsxs(Box, { flexDirection: "row", alignItems: "center", children: [_jsx(Text, { color: "magenta", children: _jsx(Spinner, { type: "dots" }) }), _jsxs(Text, { color: "magenta", children: [" ", phrase] })] }), _jsx(Box, { marginLeft: 2, children: _jsx(Text, { color: "gray", dimColor: true, children: metaContent }) })] }));
56
+ return (_jsxs(Box, { paddingX: 1, marginTop: 1, marginBottom: 1, flexDirection: "column", children: [_jsxs(Box, { flexDirection: "row", alignItems: "center", children: [_jsx(Text, { color: "green", children: _jsx(Spinner, { type: "dots" }) }), _jsxs(Text, { color: "green", children: [" ", phrase] })] }), _jsx(Box, { marginLeft: 2, children: _jsx(Text, { color: "gray", children: metaContent }) })] }));
55
57
  }
56
- // Show active streaming state - cyan color
58
+ // Show active streaming state - green/teal color
57
59
  // Always use 2-line layout: phrase on first line, meta on second
58
60
  // This prevents truncation and messy wrapping on any terminal width
59
61
  const metaParts = [];
@@ -63,5 +65,5 @@ export function StatusBar({ agent, isProcessing, isThinking, approvalQueueCount,
63
65
  metaParts.push(tokenCount);
64
66
  metaParts.push('Esc to cancel');
65
67
  const metaContent = metaParts.join(' • ');
66
- return (_jsxs(Box, { paddingX: 1, marginTop: 1, marginBottom: 1, flexDirection: "column", children: [_jsxs(Box, { flexDirection: "row", alignItems: "center", children: [_jsx(Text, { color: "cyan", children: _jsx(Spinner, { type: "dots" }) }), _jsxs(Text, { color: "cyan", children: [" ", phrase] }), approvalQueueCount > 0 && (_jsxs(Text, { color: "yellow", children: [" \u2022 ", approvalQueueCount, " queued"] }))] }), _jsx(Box, { marginLeft: 2, children: _jsx(Text, { color: "gray", dimColor: true, children: metaContent }) })] }));
68
+ return (_jsxs(Box, { paddingX: 1, marginTop: 1, marginBottom: 1, flexDirection: "column", children: [_jsxs(Box, { flexDirection: "row", alignItems: "center", children: [_jsx(Text, { color: "green", children: _jsx(Spinner, { type: "dots" }) }), _jsxs(Text, { color: "green", children: [" ", phrase] }), approvalQueueCount > 0 && (_jsxs(Text, { color: "yellowBright", children: [" \u2022 ", approvalQueueCount, " queued"] }))] }), _jsx(Box, { marginLeft: 2, children: _jsx(Text, { color: "gray", children: metaContent }) })] }));
67
69
  }
@@ -1 +1 @@
1
- {"version":3,"file":"TextBufferInput.d.ts","sourceRoot":"","sources":["../../../../src/cli/ink-cli/components/TextBufferInput.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGnE,+DAA+D;AAC/D,MAAM,MAAM,cAAc,GAAG,oBAAoB,GAAG,uBAAuB,GAAG,OAAO,CAAC;AActF,UAAU,oBAAoB;IAC1B,oCAAoC;IACpC,MAAM,EAAE,UAAU,CAAC;IACnB,+CAA+C;IAC/C,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,kCAAkC;IAClC,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,mEAAmE;IACnE,UAAU,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACjC,4DAA4D;IAC5D,iBAAiB,CAAC,EAAE,CAAC,CAAC,SAAS,EAAE,IAAI,GAAG,MAAM,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IACrE,0DAA0D;IAC1D,gBAAgB,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,cAAc,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IACnE,wCAAwC;IACxC,gBAAgB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACtC,kDAAkD;IAClD,QAAQ,EAAE,OAAO,CAAC;IAClB,2EAA2E;IAC3E,gBAAgB,CAAC,EAAE,CAAC,CAAC,SAAS,EAAE,IAAI,GAAG,MAAM,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IACpE,oEAAoE;IACpE,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,iDAAiD;IACjD,YAAY,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IAC3D,iEAAiE;IACjE,MAAM,CAAC,EAAE,YAAY,EAAE,GAAG,SAAS,CAAC;IACpC,4DAA4D;IAC5D,aAAa,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IACxD,wDAAwD;IACxD,YAAY,CAAC,EAAE,WAAW,EAAE,GAAG,SAAS,CAAC;IACzC,oEAAoE;IACpE,YAAY,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IAC1D,8DAA8D;IAC9D,kBAAkB,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IAC5F,iEAAiE;IACjE,kBAAkB,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IAC7D,4DAA4D;IAC5D,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACvC;AAuCD,wBAAgB,eAAe,CAAC,EAC5B,MAAM,EACN,QAAQ,EACR,WAAW,EACX,UAAkB,EAClB,iBAAiB,EACjB,gBAAgB,EAChB,gBAAqB,EACrB,QAAQ,EACR,gBAAgB,EAChB,UAAc,EACd,YAAY,EACZ,MAAW,EACX,aAAa,EACb,YAAiB,EACjB,YAAY,EACZ,kBAAkB,EAClB,kBAAkB,EAClB,cAAc,GACjB,EAAE,oBAAoB,2CA8gBtB"}
1
+ {"version":3,"file":"TextBufferInput.d.ts","sourceRoot":"","sources":["../../../../src/cli/ink-cli/components/TextBufferInput.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGnE,+DAA+D;AAC/D,MAAM,MAAM,cAAc,GAAG,oBAAoB,GAAG,uBAAuB,GAAG,OAAO,CAAC;AActF,UAAU,oBAAoB;IAC1B,oCAAoC;IACpC,MAAM,EAAE,UAAU,CAAC;IACnB,+CAA+C;IAC/C,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,kCAAkC;IAClC,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,mEAAmE;IACnE,UAAU,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACjC,4DAA4D;IAC5D,iBAAiB,CAAC,EAAE,CAAC,CAAC,SAAS,EAAE,IAAI,GAAG,MAAM,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IACrE,0DAA0D;IAC1D,gBAAgB,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,cAAc,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IACnE,wCAAwC;IACxC,gBAAgB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACtC,kDAAkD;IAClD,QAAQ,EAAE,OAAO,CAAC;IAClB,2EAA2E;IAC3E,gBAAgB,CAAC,EAAE,CAAC,CAAC,SAAS,EAAE,IAAI,GAAG,MAAM,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IACpE,oEAAoE;IACpE,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,iDAAiD;IACjD,YAAY,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IAC3D,iEAAiE;IACjE,MAAM,CAAC,EAAE,YAAY,EAAE,GAAG,SAAS,CAAC;IACpC,4DAA4D;IAC5D,aAAa,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IACxD,wDAAwD;IACxD,YAAY,CAAC,EAAE,WAAW,EAAE,GAAG,SAAS,CAAC;IACzC,oEAAoE;IACpE,YAAY,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IAC1D,8DAA8D;IAC9D,kBAAkB,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IAC5F,iEAAiE;IACjE,kBAAkB,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IAC7D,4DAA4D;IAC5D,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACvC;AAuCD,wBAAgB,eAAe,CAAC,EAC5B,MAAM,EACN,QAAQ,EACR,WAAW,EACX,UAAkB,EAClB,iBAAiB,EACjB,gBAAgB,EAChB,gBAAqB,EACrB,QAAQ,EACR,gBAAgB,EAChB,UAAc,EACd,YAAY,EACZ,MAAW,EACX,aAAa,EACb,YAAiB,EACjB,YAAY,EACZ,kBAAkB,EAClB,kBAAkB,EAClB,cAAc,GACjB,EAAE,oBAAoB,2CAsgBtB"}
@@ -429,9 +429,9 @@ export function TextBufferInput({ buffer, onSubmit, placeholder, isDisabled = fa
429
429
  const visibleLines = visualLines.slice(startLine, endLine);
430
430
  // Empty state
431
431
  if (bufferText === '') {
432
- return (_jsxs(Box, { flexDirection: "column", width: terminalWidth, children: [_jsx(Text, { color: "gray", dimColor: true, children: separator }), _jsxs(Box, { width: terminalWidth, children: [_jsx(Text, { color: "green", bold: true, children: '> ' }), _jsx(Text, { inverse: true, children: " " }), placeholder && _jsx(Text, { dimColor: true, children: placeholder }), _jsx(Text, { children: ' '.repeat(Math.max(0, terminalWidth - 3 - (placeholder?.length || 0))) })] }), _jsx(Text, { color: "gray", dimColor: true, children: separator })] }));
432
+ return (_jsxs(Box, { flexDirection: "column", width: terminalWidth, children: [_jsx(Text, { color: "gray", children: separator }), _jsxs(Box, { width: terminalWidth, children: [_jsx(Text, { color: "green", bold: true, children: '> ' }), _jsx(Text, { inverse: true, children: " " }), placeholder && _jsx(Text, { color: "gray", children: placeholder }), _jsx(Text, { children: ' '.repeat(Math.max(0, terminalWidth - 3 - (placeholder?.length || 0))) })] }), _jsx(Text, { color: "gray", children: separator })] }));
433
433
  }
434
- return (_jsxs(Box, { flexDirection: "column", width: terminalWidth, children: [_jsx(Text, { color: "gray", dimColor: true, children: separator }), startLine > 0 && (_jsxs(Text, { color: "gray", dimColor: true, children: [' ', "\u2191 ", startLine, " more line", startLine > 1 ? 's' : '', " above (", KEY_LABELS.altUp, " to jump)"] })), visibleLines.map((line, idx) => {
434
+ return (_jsxs(Box, { flexDirection: "column", width: terminalWidth, children: [_jsx(Text, { color: "gray", children: separator }), startLine > 0 && (_jsxs(Text, { color: "gray", children: [' ', "\u2191 ", startLine, " more line", startLine > 1 ? 's' : '', " above (", KEY_LABELS.altUp, " to jump)"] })), visibleLines.map((line, idx) => {
435
435
  const absoluteRow = startLine + idx;
436
436
  const isFirst = absoluteRow === 0;
437
437
  const prefix = isFirst ? '> ' : ' ';
@@ -443,22 +443,22 @@ export function TextBufferInput({ buffer, onSubmit, placeholder, isDisabled = fa
443
443
  const atCursor = line.charAt(cursorVisualCol) || ' ';
444
444
  const after = line.slice(cursorVisualCol + 1);
445
445
  return (_jsxs(Box, { width: terminalWidth, children: [_jsx(Text, { color: "green", bold: isFirst, children: prefix }), _jsx(HighlightedText, { text: before, query: highlightQuery }), _jsx(Text, { inverse: true, children: atCursor }), _jsx(HighlightedText, { text: after, query: highlightQuery }), _jsx(Text, { children: ' '.repeat(Math.max(0, terminalWidth - prefix.length - before.length - 1 - after.length)) })] }, absoluteRow));
446
- }), endLine < totalLines && (_jsxs(Text, { color: "gray", dimColor: true, children: [' ', "\u2193 ", totalLines - endLine, " more line", totalLines - endLine > 1 ? 's' : '', ' ', "below (", KEY_LABELS.altDown, " to jump)"] })), pastedBlocks.length > 0 && (_jsx(PasteBlockHint, { pastedBlocks: pastedBlocks, expandedBlock: findExpandedBlock(), cursorOnCollapsed: findCollapsedBlockAtCursor() })), _jsx(Text, { color: "gray", dimColor: true, children: separator })] }));
446
+ }), endLine < totalLines && (_jsxs(Text, { color: "gray", children: [' ', "\u2193 ", totalLines - endLine, " more line", totalLines - endLine > 1 ? 's' : '', ' ', "below (", KEY_LABELS.altDown, " to jump)"] })), pastedBlocks.length > 0 && (_jsx(PasteBlockHint, { pastedBlocks: pastedBlocks, expandedBlock: findExpandedBlock(), cursorOnCollapsed: findCollapsedBlockAtCursor() })), _jsx(Text, { color: "gray", children: separator })] }));
447
447
  }
448
448
  /** Hint component for paste blocks */
449
449
  function PasteBlockHint({ pastedBlocks, expandedBlock, cursorOnCollapsed, }) {
450
450
  const collapsedCount = pastedBlocks.filter((b) => b.isCollapsed).length;
451
451
  // If something is expanded, always show collapse hint
452
452
  if (expandedBlock) {
453
- return (_jsxs(Text, { color: "cyan", dimColor: true, children: [' ', KEY_LABELS.ctrlT, " to collapse expanded paste"] }));
453
+ return (_jsxs(Text, { color: "cyan", children: [' ', KEY_LABELS.ctrlT, " to collapse expanded paste"] }));
454
454
  }
455
455
  // If cursor is on a collapsed paste, show expand hint
456
456
  if (cursorOnCollapsed) {
457
- return (_jsxs(Text, { color: "cyan", dimColor: true, children: [' ', KEY_LABELS.ctrlT, " to expand paste"] }));
457
+ return (_jsxs(Text, { color: "cyan", children: [' ', KEY_LABELS.ctrlT, " to expand paste"] }));
458
458
  }
459
459
  // Otherwise show count of collapsed pastes
460
460
  if (collapsedCount > 0) {
461
- return (_jsxs(Text, { color: "gray", dimColor: true, children: [' ', collapsedCount, " collapsed paste", collapsedCount > 1 ? 's' : '', " (", KEY_LABELS.ctrlT, ' ', "on placeholder to expand)"] }));
461
+ return (_jsxs(Text, { color: "gray", children: [' ', collapsedCount, " collapsed paste", collapsedCount > 1 ? 's' : '', " (", KEY_LABELS.ctrlT, ' ', "on placeholder to expand)"] }));
462
462
  }
463
463
  return null;
464
464
  }
@@ -82,17 +82,17 @@ export function BaseAutocomplete({ items, query, isVisible, isLoading = false, o
82
82
  if (!isVisible)
83
83
  return null;
84
84
  if (isLoading) {
85
- return (_jsx(Box, { borderStyle: "single", borderColor: "gray", paddingX: 1, paddingY: 1, children: _jsx(Text, { dimColor: true, children: loadingMessage }) }));
85
+ return (_jsx(Box, { borderStyle: "single", borderColor: "gray", paddingX: 1, paddingY: 1, children: _jsx(Text, { color: "gray", children: loadingMessage }) }));
86
86
  }
87
87
  if (filteredItems.length === 0) {
88
- return (_jsx(Box, { borderStyle: "single", borderColor: "gray", paddingX: 1, paddingY: 1, children: _jsx(Text, { dimColor: true, children: emptyMessage }) }));
88
+ return (_jsx(Box, { borderStyle: "single", borderColor: "gray", paddingX: 1, paddingY: 1, children: _jsx(Text, { color: "gray", children: emptyMessage }) }));
89
89
  }
90
90
  const hasMoreAbove = scrollOffset > 0;
91
91
  const hasMoreBelow = scrollOffset + maxVisibleItems < filteredItems.length;
92
92
  const totalItems = filteredItems.length;
93
- return (_jsxs(Box, { borderStyle: "single", borderColor: borderColor, flexDirection: "column", height: Math.min(maxVisibleItems + 3, totalItems + 3), children: [_jsx(Box, { paddingX: 1, paddingY: 0, children: _jsxs(Text, { dimColor: true, children: [title, " (", selectedIndex + 1, "/", totalItems, ") - \u2191\u2193 navigate", onLoadIntoInput && ', Tab load', ', Enter select, Esc close'] }) }), hasMoreAbove && (_jsx(Box, { paddingX: 1, paddingY: 0, children: _jsxs(Text, { dimColor: true, children: ["... \u2191 (", scrollOffset, " more above)"] }) })), visibleItems.map((item, visibleIndex) => {
93
+ return (_jsxs(Box, { borderStyle: "single", borderColor: borderColor, flexDirection: "column", height: Math.min(maxVisibleItems + 3, totalItems + 3), children: [_jsx(Box, { paddingX: 1, paddingY: 0, children: _jsxs(Text, { color: "gray", children: [title, " (", selectedIndex + 1, "/", totalItems, ") - \u2191\u2193 navigate", onLoadIntoInput && ', Tab load', ', Enter select, Esc close'] }) }), hasMoreAbove && (_jsx(Box, { paddingX: 1, paddingY: 0, children: _jsxs(Text, { color: "gray", children: ["... \u2191 (", scrollOffset, " more above)"] }) })), visibleItems.map((item, visibleIndex) => {
94
94
  const actualIndex = scrollOffset + visibleIndex;
95
95
  const isSelected = actualIndex === selectedIndex;
96
96
  return (_jsx(Box, { paddingX: 1, paddingY: 0, children: formatItem(item, isSelected) }, actualIndex));
97
- }), hasMoreBelow && (_jsx(Box, { paddingX: 1, paddingY: 0, children: _jsxs(Text, { dimColor: true, children: ["... \u2193 (", totalItems - scrollOffset - maxVisibleItems, " more below)"] }) }))] }));
97
+ }), hasMoreBelow && (_jsx(Box, { paddingX: 1, paddingY: 0, children: _jsxs(Text, { color: "gray", children: ["... \u2193 (", totalItems - scrollOffset - maxVisibleItems, " more below)"] }) }))] }));
98
98
  }
@@ -99,10 +99,10 @@ function BaseSelectorInner({ items, isVisible, isLoading = false, selectedIndex,
99
99
  if (!isVisible)
100
100
  return null;
101
101
  if (isLoading) {
102
- return (_jsx(Box, { paddingX: 0, paddingY: 0, children: _jsx(Text, { dimColor: true, children: loadingMessage }) }));
102
+ return (_jsx(Box, { paddingX: 0, paddingY: 0, children: _jsx(Text, { color: "gray", children: loadingMessage }) }));
103
103
  }
104
104
  if (items.length === 0) {
105
- return (_jsx(Box, { paddingX: 0, paddingY: 0, children: _jsx(Text, { dimColor: true, children: emptyMessage }) }));
105
+ return (_jsx(Box, { paddingX: 0, paddingY: 0, children: _jsx(Text, { color: "gray", children: emptyMessage }) }));
106
106
  }
107
107
  // Build instruction text based on features
108
108
  const instructions = supportsTab
@@ -4,5 +4,5 @@ import { Box, Text } from 'ink';
4
4
  * Pure presentational component for CLI footer
5
5
  */
6
6
  export function Footer() {
7
- return (_jsx(Box, { borderStyle: "single", borderColor: "gray", paddingX: 1, children: _jsx(Text, { dimColor: true, children: "Shift+Enter/Ctrl+J: newline \u2022 Ctrl+W: del word \u2022 Ctrl+U: del line \u2022 Ctrl+C: exit" }) }));
7
+ return (_jsx(Box, { borderStyle: "single", borderColor: "gray", paddingX: 1, children: _jsx(Text, { color: "gray", children: "Shift+Enter/Ctrl+J: newline \u2022 Ctrl+W: del word \u2022 Ctrl+U: del line \u2022 Ctrl+C: exit" }) }));
8
8
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Header.d.ts","sourceRoot":"","sources":["../../../../../src/cli/ink-cli/components/chat/Header.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAGxD,UAAU,WAAW;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,gBAAgB,EAAE,OAAO,CAAC;IAC1B,WAAW,EAAE,WAAW,CAAC;CAC5B;AAED;;;GAGG;AACH,wBAAgB,MAAM,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,gBAAgB,EAAE,WAAW,EAAE,EAAE,WAAW,2CA6E1F"}
1
+ {"version":3,"file":"Header.d.ts","sourceRoot":"","sources":["../../../../../src/cli/ink-cli/components/chat/Header.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAGxD,UAAU,WAAW;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,gBAAgB,EAAE,OAAO,CAAC;IAC1B,WAAW,EAAE,WAAW,CAAC;CAC5B;AAED;;;GAGG;AACH,wBAAgB,MAAM,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,gBAAgB,EAAE,WAAW,EAAE,EAAE,WAAW,2CAgE1F"}
@@ -1,6 +1,5 @@
1
- import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
1
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { Box, Text } from 'ink';
3
- import { getModelDisplayName } from '@dexto/core';
4
3
  import { useTerminalSize } from '../../hooks/useTerminalSize.js';
5
4
  /**
6
5
  * Pure presentational component for CLI header
@@ -8,11 +7,10 @@ import { useTerminalSize } from '../../hooks/useTerminalSize.js';
8
7
  */
9
8
  export function Header({ modelName, sessionId, hasActiveSession, startupInfo }) {
10
9
  const { columns } = useTerminalSize();
11
- const displayModelName = getModelDisplayName(modelName);
12
10
  return (_jsxs(Box, { borderStyle: "single", borderColor: "gray", paddingX: 1, flexDirection: "column", flexShrink: 0, width: columns, children: [_jsx(Box, { marginTop: 1, children: _jsx(Text, { color: "greenBright", children: `██████╗ ███████╗██╗ ██╗████████╗ ██████╗
13
11
  ██╔══██╗██╔════╝╚██╗██╔╝╚══██╔══╝██╔═══██╗
14
12
  ██║ ██║█████╗ ╚███╔╝ ██║ ██║ ██║
15
13
  ██║ ██║██╔══╝ ██╔██╗ ██║ ██║ ██║
16
14
  ██████╔╝███████╗██╔╝ ██╗ ██║ ╚██████╔╝
17
- ╚═════╝ ╚══════╝╚═╝ ╚═╝ ╚═╝ ╚═════╝` }) }), _jsxs(Box, { marginTop: 1, flexDirection: "row", children: [_jsxs(Text, { color: "gray", dimColor: true, children: ["Model:", ' '] }), _jsx(Text, { color: "white", children: displayModelName }), hasActiveSession && sessionId && (_jsxs(_Fragment, { children: [_jsxs(Text, { color: "gray", dimColor: true, children: [' ', "\u2022 Session:", ' '] }), _jsx(Text, { color: "white", children: sessionId.slice(0, 8) })] }))] }), _jsxs(Box, { flexDirection: "row", children: [_jsxs(Text, { color: "gray", dimColor: true, children: ["Servers:", ' '] }), _jsx(Text, { color: "white", children: startupInfo.connectedServers.count }), _jsxs(Text, { color: "gray", dimColor: true, children: [' ', "\u2022 Tools:", ' '] }), _jsx(Text, { color: "white", children: startupInfo.toolCount })] }), startupInfo.failedConnections.length > 0 && (_jsx(Box, { flexDirection: "row", children: _jsxs(Text, { color: "yellow", children: ["\u26A0\uFE0F Failed: ", startupInfo.failedConnections.join(', ')] }) })), startupInfo.logFile && (_jsx(Box, { flexDirection: "row", children: _jsxs(Text, { color: "gray", dimColor: true, children: ["Logs: ", startupInfo.logFile] }) })), _jsx(Box, { marginBottom: 1, children: _jsx(Text, { children: " " }) })] }));
15
+ ╚═════╝ ╚══════╝╚═╝ ╚═╝ ╚═╝ ╚═════╝` }) }), _jsxs(Box, { marginTop: 1, flexDirection: "row", children: [_jsx(Text, { color: "gray", children: "Model: " }), _jsx(Text, { color: "white", children: modelName }), hasActiveSession && sessionId && (_jsxs(_Fragment, { children: [_jsx(Text, { color: "gray", children: " \u2022 Session: " }), _jsx(Text, { color: "white", children: sessionId.slice(0, 8) })] }))] }), _jsxs(Box, { flexDirection: "row", children: [_jsx(Text, { color: "gray", children: "Servers: " }), _jsx(Text, { color: "white", children: startupInfo.connectedServers.count }), _jsx(Text, { color: "gray", children: " \u2022 Tools: " }), _jsx(Text, { color: "white", children: startupInfo.toolCount })] }), startupInfo.failedConnections.length > 0 && (_jsx(Box, { flexDirection: "row", children: _jsxs(Text, { color: "yellowBright", children: ["\u26A0\uFE0F Failed: ", startupInfo.failedConnections.join(', ')] }) })), startupInfo.logFile && (_jsx(Box, { flexDirection: "row", children: _jsxs(Text, { color: "gray", children: ["Logs: ", startupInfo.logFile] }) })), _jsx(Box, { marginBottom: 1, children: _jsx(Text, { children: " " }) })] }));
18
16
  }
@@ -1 +1 @@
1
- {"version":3,"file":"MessageItem.d.ts","sourceRoot":"","sources":["../../../../../src/cli/ink-cli/components/chat/MessageItem.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EACR,OAAO,EAUV,MAAM,sBAAsB,CAAC;AAuC9B,UAAU,gBAAgB;IACtB,OAAO,EAAE,OAAO,CAAC;CACpB;AAED;;;;;;GAMG;AACH,eAAO,MAAM,WAAW,oDACN,gBAAgB,6CAiKjC,CAAC"}
1
+ {"version":3,"file":"MessageItem.d.ts","sourceRoot":"","sources":["../../../../../src/cli/ink-cli/components/chat/MessageItem.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EACR,OAAO,EAUV,MAAM,sBAAsB,CAAC;AAuC9B,UAAU,gBAAgB;IACtB,OAAO,EAAE,OAAO,CAAC;CACpB;AAED;;;;;;GAMG;AACH,eAAO,MAAM,WAAW,oDACN,gBAAgB,6CAwJjC,CAAC"}