dexto 1.5.8 → 1.6.1

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 (224) hide show
  1. package/README.md +3 -3
  2. package/dist/agents/agent-template.yml +2 -2
  3. package/dist/agents/coding-agent/README.md +10 -10
  4. package/dist/agents/coding-agent/coding-agent.yml +84 -83
  5. package/dist/agents/default-agent.yml +32 -47
  6. package/dist/agents/explore-agent/explore-agent.yml +3 -6
  7. package/dist/agents/image-editor-agent/image-editor-agent.yml +1 -1
  8. package/dist/agents/nano-banana-agent/nano-banana-agent.yml +1 -1
  9. package/dist/agents/podcast-agent/podcast-agent.yml +1 -1
  10. package/dist/agents/product-name-researcher/product-name-researcher.yml +1 -1
  11. package/dist/agents/sora-video-agent/sora-video-agent.yml +4 -6
  12. package/dist/agents/triage-demo/triage-agent.yml +1 -1
  13. package/dist/analytics/events.d.ts +1 -1
  14. package/dist/analytics/events.d.ts.map +1 -1
  15. package/dist/api/mcp/tool-aggregation-handler.d.ts +2 -2
  16. package/dist/api/server-hono.d.ts +2 -2
  17. package/dist/api/server-hono.d.ts.map +1 -1
  18. package/dist/api/server-hono.js +37 -60
  19. package/dist/cli/approval/cli-approval-handler.d.ts +10 -3
  20. package/dist/cli/approval/cli-approval-handler.d.ts.map +1 -1
  21. package/dist/cli/approval/cli-approval-handler.js +1 -1
  22. package/dist/cli/assets/sounds/SOURCES.md +35 -0
  23. package/dist/cli/assets/sounds/boot.wav +0 -0
  24. package/dist/cli/assets/sounds/chime.wav +0 -0
  25. package/dist/cli/assets/sounds/coin.wav +0 -0
  26. package/dist/cli/assets/sounds/confirm.wav +0 -0
  27. package/dist/cli/assets/sounds/levelup.wav +0 -0
  28. package/dist/cli/assets/sounds/ping.wav +0 -0
  29. package/dist/cli/assets/sounds/powerup.wav +0 -0
  30. package/dist/cli/assets/sounds/startup.wav +0 -0
  31. package/dist/cli/assets/sounds/success.wav +0 -0
  32. package/dist/cli/assets/sounds/treasure.wav +0 -0
  33. package/dist/cli/assets/sounds/win.wav +0 -0
  34. package/dist/cli/commands/create-app.d.ts +1 -11
  35. package/dist/cli/commands/create-app.d.ts.map +1 -1
  36. package/dist/cli/commands/create-app.js +21 -545
  37. package/dist/cli/commands/create-image.d.ts.map +1 -1
  38. package/dist/cli/commands/create-image.js +54 -53
  39. package/dist/cli/commands/image.d.ts +52 -0
  40. package/dist/cli/commands/image.d.ts.map +1 -0
  41. package/dist/cli/commands/image.js +118 -0
  42. package/dist/cli/commands/index.d.ts +2 -1
  43. package/dist/cli/commands/index.d.ts.map +1 -1
  44. package/dist/cli/commands/index.js +3 -1
  45. package/dist/cli/commands/init-app.d.ts +4 -8
  46. package/dist/cli/commands/init-app.d.ts.map +1 -1
  47. package/dist/cli/commands/init-app.js +37 -161
  48. package/dist/cli/commands/interactive-commands/command-parser.d.ts +2 -0
  49. package/dist/cli/commands/interactive-commands/command-parser.d.ts.map +1 -1
  50. package/dist/cli/commands/interactive-commands/commands.d.ts +1 -1
  51. package/dist/cli/commands/interactive-commands/commands.d.ts.map +1 -1
  52. package/dist/cli/commands/interactive-commands/commands.js +2 -2
  53. package/dist/cli/commands/interactive-commands/exit-handler.d.ts +12 -0
  54. package/dist/cli/commands/interactive-commands/exit-handler.d.ts.map +1 -0
  55. package/dist/cli/commands/interactive-commands/exit-handler.js +20 -0
  56. package/dist/cli/commands/interactive-commands/exit-stats.d.ts +24 -0
  57. package/dist/cli/commands/interactive-commands/exit-stats.d.ts.map +1 -0
  58. package/dist/cli/commands/interactive-commands/exit-stats.js +17 -0
  59. package/dist/cli/commands/interactive-commands/general-commands.d.ts.map +1 -1
  60. package/dist/cli/commands/interactive-commands/general-commands.js +55 -5
  61. package/dist/cli/commands/interactive-commands/prompt-commands.d.ts.map +1 -1
  62. package/dist/cli/commands/interactive-commands/prompt-commands.js +14 -74
  63. package/dist/cli/commands/interactive-commands/session/index.d.ts +2 -1
  64. package/dist/cli/commands/interactive-commands/session/index.d.ts.map +1 -1
  65. package/dist/cli/commands/interactive-commands/session/index.js +2 -1
  66. package/dist/cli/commands/interactive-commands/session/session-commands.d.ts +2 -2
  67. package/dist/cli/commands/interactive-commands/session/session-commands.d.ts.map +1 -1
  68. package/dist/cli/commands/interactive-commands/session/session-commands.js +2 -4
  69. package/dist/cli/commands/interactive-commands/system/system-commands.d.ts +1 -13
  70. package/dist/cli/commands/interactive-commands/system/system-commands.d.ts.map +1 -1
  71. package/dist/cli/commands/interactive-commands/system/system-commands.js +52 -83
  72. package/dist/cli/commands/plugin.d.ts +4 -4
  73. package/dist/cli/commands/sync-agents.d.ts +2 -12
  74. package/dist/cli/commands/sync-agents.d.ts.map +1 -1
  75. package/dist/cli/commands/sync-agents.js +2 -50
  76. package/dist/cli/ink-cli/InkCLIRefactored.d.ts +7 -1
  77. package/dist/cli/ink-cli/InkCLIRefactored.d.ts.map +1 -1
  78. package/dist/cli/ink-cli/InkCLIRefactored.js +138 -27
  79. package/dist/cli/ink-cli/components/ApprovalPrompt.d.ts +2 -2
  80. package/dist/cli/ink-cli/components/ApprovalPrompt.d.ts.map +1 -1
  81. package/dist/cli/ink-cli/components/ApprovalPrompt.js +85 -30
  82. package/dist/cli/ink-cli/components/BackgroundTasksPanel.js +1 -1
  83. package/dist/cli/ink-cli/components/ElicitationForm.d.ts +5 -3
  84. package/dist/cli/ink-cli/components/ElicitationForm.d.ts.map +1 -1
  85. package/dist/cli/ink-cli/components/ElicitationForm.js +414 -180
  86. package/dist/cli/ink-cli/components/Footer.d.ts.map +1 -1
  87. package/dist/cli/ink-cli/components/Footer.js +1 -2
  88. package/dist/cli/ink-cli/components/ResourceAutocomplete.d.ts.map +1 -1
  89. package/dist/cli/ink-cli/components/ResourceAutocomplete.js +20 -11
  90. package/dist/cli/ink-cli/components/SlashCommandAutocomplete.d.ts.map +1 -1
  91. package/dist/cli/ink-cli/components/SlashCommandAutocomplete.js +47 -67
  92. package/dist/cli/ink-cli/components/StatusBar.d.ts.map +1 -1
  93. package/dist/cli/ink-cli/components/StatusBar.js +20 -10
  94. package/dist/cli/ink-cli/components/TodoPanel.js +1 -1
  95. package/dist/cli/ink-cli/components/base/BaseSelector.d.ts +2 -1
  96. package/dist/cli/ink-cli/components/base/BaseSelector.d.ts.map +1 -1
  97. package/dist/cli/ink-cli/components/base/BaseSelector.js +37 -27
  98. package/dist/cli/ink-cli/components/chat/Header.d.ts.map +1 -1
  99. package/dist/cli/ink-cli/components/chat/Header.js +1 -1
  100. package/dist/cli/ink-cli/components/chat/MessageItem.d.ts.map +1 -1
  101. package/dist/cli/ink-cli/components/chat/MessageItem.js +3 -1
  102. package/dist/cli/ink-cli/components/chat/ToolIcon.d.ts.map +1 -1
  103. package/dist/cli/ink-cli/components/chat/ToolIcon.js +5 -15
  104. package/dist/cli/ink-cli/components/chat/styled-boxes/ConfigBox.js +1 -1
  105. package/dist/cli/ink-cli/components/chat/styled-boxes/LogConfigBox.d.ts.map +1 -1
  106. package/dist/cli/ink-cli/components/chat/styled-boxes/LogConfigBox.js +1 -1
  107. package/dist/cli/ink-cli/components/modes/AlternateBufferCLI.d.ts +3 -1
  108. package/dist/cli/ink-cli/components/modes/AlternateBufferCLI.d.ts.map +1 -1
  109. package/dist/cli/ink-cli/components/modes/AlternateBufferCLI.js +5 -3
  110. package/dist/cli/ink-cli/components/modes/StaticCLI.d.ts +3 -1
  111. package/dist/cli/ink-cli/components/modes/StaticCLI.d.ts.map +1 -1
  112. package/dist/cli/ink-cli/components/modes/StaticCLI.js +10 -3
  113. package/dist/cli/ink-cli/components/overlays/CommandOutputOverlay.d.ts +13 -0
  114. package/dist/cli/ink-cli/components/overlays/CommandOutputOverlay.d.ts.map +1 -0
  115. package/dist/cli/ink-cli/components/overlays/CommandOutputOverlay.js +60 -0
  116. package/dist/cli/ink-cli/components/overlays/LogLevelSelector.js +1 -1
  117. package/dist/cli/ink-cli/components/overlays/ModelSelectorRefactored.d.ts.map +1 -1
  118. package/dist/cli/ink-cli/components/overlays/ModelSelectorRefactored.js +213 -100
  119. package/dist/cli/ink-cli/components/overlays/PromptList.d.ts.map +1 -1
  120. package/dist/cli/ink-cli/components/overlays/PromptList.js +12 -16
  121. package/dist/cli/ink-cli/components/overlays/SoundsSelector.d.ts +21 -0
  122. package/dist/cli/ink-cli/components/overlays/SoundsSelector.d.ts.map +1 -0
  123. package/dist/cli/ink-cli/components/overlays/SoundsSelector.js +566 -0
  124. package/dist/cli/ink-cli/components/overlays/ToolBrowser.d.ts +1 -1
  125. package/dist/cli/ink-cli/components/overlays/ToolBrowser.d.ts.map +1 -1
  126. package/dist/cli/ink-cli/components/overlays/ToolBrowser.js +100 -45
  127. package/dist/cli/ink-cli/components/overlays/custom-model-wizard/LocalModelWizard.d.ts.map +1 -1
  128. package/dist/cli/ink-cli/components/overlays/custom-model-wizard/LocalModelWizard.js +8 -13
  129. package/dist/cli/ink-cli/components/renderers/FilePreviewRenderer.d.ts +3 -3
  130. package/dist/cli/ink-cli/components/renderers/FilePreviewRenderer.d.ts.map +1 -1
  131. package/dist/cli/ink-cli/components/renderers/FilePreviewRenderer.js +6 -5
  132. package/dist/cli/ink-cli/components/renderers/FileRenderer.d.ts +3 -1
  133. package/dist/cli/ink-cli/components/renderers/FileRenderer.d.ts.map +1 -1
  134. package/dist/cli/ink-cli/components/renderers/FileRenderer.js +18 -7
  135. package/dist/cli/ink-cli/components/renderers/ShellRenderer.d.ts.map +1 -1
  136. package/dist/cli/ink-cli/components/renderers/ShellRenderer.js +7 -17
  137. package/dist/cli/ink-cli/components/renderers/index.d.ts.map +1 -1
  138. package/dist/cli/ink-cli/components/renderers/index.js +1 -1
  139. package/dist/cli/ink-cli/components/shared/FocusOverlayFrame.d.ts +7 -0
  140. package/dist/cli/ink-cli/components/shared/FocusOverlayFrame.d.ts.map +1 -0
  141. package/dist/cli/ink-cli/components/shared/FocusOverlayFrame.js +8 -0
  142. package/dist/cli/ink-cli/components/shared/HintBar.d.ts +6 -0
  143. package/dist/cli/ink-cli/components/shared/HintBar.d.ts.map +1 -0
  144. package/dist/cli/ink-cli/components/shared/HintBar.js +6 -0
  145. package/dist/cli/ink-cli/constants/spinnerFrames.d.ts +2 -0
  146. package/dist/cli/ink-cli/constants/spinnerFrames.d.ts.map +1 -0
  147. package/dist/cli/ink-cli/constants/spinnerFrames.js +1 -0
  148. package/dist/cli/ink-cli/constants/tips.d.ts.map +1 -1
  149. package/dist/cli/ink-cli/constants/tips.js +2 -1
  150. package/dist/cli/ink-cli/containers/InputContainer.d.ts +4 -0
  151. package/dist/cli/ink-cli/containers/InputContainer.d.ts.map +1 -1
  152. package/dist/cli/ink-cli/containers/InputContainer.js +47 -21
  153. package/dist/cli/ink-cli/containers/OverlayContainer.d.ts +2 -0
  154. package/dist/cli/ink-cli/containers/OverlayContainer.d.ts.map +1 -1
  155. package/dist/cli/ink-cli/containers/OverlayContainer.js +101 -40
  156. package/dist/cli/ink-cli/hooks/useAgentEvents.d.ts.map +1 -1
  157. package/dist/cli/ink-cli/hooks/useAgentEvents.js +15 -16
  158. package/dist/cli/ink-cli/hooks/useAnimationTick.d.ts +11 -0
  159. package/dist/cli/ink-cli/hooks/useAnimationTick.d.ts.map +1 -0
  160. package/dist/cli/ink-cli/hooks/useAnimationTick.js +54 -0
  161. package/dist/cli/ink-cli/hooks/useCLIState.d.ts.map +1 -1
  162. package/dist/cli/ink-cli/hooks/useCLIState.js +1 -0
  163. package/dist/cli/ink-cli/hooks/useTokenCounter.d.ts.map +1 -1
  164. package/dist/cli/ink-cli/hooks/useTokenCounter.js +7 -4
  165. package/dist/cli/ink-cli/services/CommandService.d.ts +1 -1
  166. package/dist/cli/ink-cli/services/CommandService.d.ts.map +1 -1
  167. package/dist/cli/ink-cli/services/CommandService.js +2 -2
  168. package/dist/cli/ink-cli/services/processStream.d.ts +2 -2
  169. package/dist/cli/ink-cli/services/processStream.d.ts.map +1 -1
  170. package/dist/cli/ink-cli/services/processStream.js +27 -19
  171. package/dist/cli/ink-cli/state/initialState.d.ts.map +1 -1
  172. package/dist/cli/ink-cli/state/initialState.js +1 -0
  173. package/dist/cli/ink-cli/state/types.d.ts +15 -3
  174. package/dist/cli/ink-cli/state/types.d.ts.map +1 -1
  175. package/dist/cli/ink-cli/utils/commandOverlays.d.ts.map +1 -1
  176. package/dist/cli/ink-cli/utils/commandOverlays.js +1 -0
  177. package/dist/cli/ink-cli/utils/elicitationSchema.d.ts +11 -0
  178. package/dist/cli/ink-cli/utils/elicitationSchema.d.ts.map +1 -0
  179. package/dist/cli/ink-cli/utils/elicitationSchema.js +80 -0
  180. package/dist/cli/ink-cli/utils/index.d.ts +1 -1
  181. package/dist/cli/ink-cli/utils/index.d.ts.map +1 -1
  182. package/dist/cli/ink-cli/utils/index.js +1 -1
  183. package/dist/cli/ink-cli/utils/messageFormatting.d.ts +10 -19
  184. package/dist/cli/ink-cli/utils/messageFormatting.d.ts.map +1 -1
  185. package/dist/cli/ink-cli/utils/messageFormatting.js +43 -262
  186. package/dist/cli/ink-cli/utils/overlayPresentation.d.ts +19 -0
  187. package/dist/cli/ink-cli/utils/overlayPresentation.d.ts.map +1 -0
  188. package/dist/cli/ink-cli/utils/overlayPresentation.js +33 -0
  189. package/dist/cli/ink-cli/utils/overlaySizing.d.ts +19 -0
  190. package/dist/cli/ink-cli/utils/overlaySizing.d.ts.map +1 -0
  191. package/dist/cli/ink-cli/utils/overlaySizing.js +11 -0
  192. package/dist/cli/ink-cli/utils/soundNotification.d.ts +19 -13
  193. package/dist/cli/ink-cli/utils/soundNotification.d.ts.map +1 -1
  194. package/dist/cli/ink-cli/utils/soundNotification.js +120 -97
  195. package/dist/cli/ink-cli/utils/toolUtils.d.ts.map +1 -1
  196. package/dist/cli/ink-cli/utils/toolUtils.js +2 -9
  197. package/dist/cli/utils/config-validation.d.ts +11 -11
  198. package/dist/cli/utils/config-validation.d.ts.map +1 -1
  199. package/dist/cli/utils/config-validation.js +56 -290
  200. package/dist/cli/utils/image-store.d.ts +16 -0
  201. package/dist/cli/utils/image-store.d.ts.map +1 -0
  202. package/dist/cli/utils/image-store.js +289 -0
  203. package/dist/cli/utils/scaffolding-utils.d.ts +5 -0
  204. package/dist/cli/utils/scaffolding-utils.d.ts.map +1 -1
  205. package/dist/cli/utils/scaffolding-utils.js +46 -4
  206. package/dist/cli/utils/template-engine.d.ts +28 -16
  207. package/dist/cli/utils/template-engine.d.ts.map +1 -1
  208. package/dist/cli/utils/template-engine.js +339 -479
  209. package/dist/config/cli-overrides.d.ts +4 -3
  210. package/dist/config/cli-overrides.d.ts.map +1 -1
  211. package/dist/config/cli-overrides.js +7 -9
  212. package/dist/index-main.d.ts +2 -0
  213. package/dist/index-main.d.ts.map +1 -0
  214. package/dist/index-main.js +1554 -0
  215. package/dist/index.js +2 -1589
  216. package/dist/utils/session-logger-factory.d.ts +3 -0
  217. package/dist/utils/session-logger-factory.d.ts.map +1 -0
  218. package/dist/utils/session-logger-factory.js +34 -0
  219. package/dist/webui/assets/{index-Cz2z7NQ8.js → index-CKhumsZA.js} +231 -231
  220. package/dist/webui/index.html +1 -1
  221. package/package.json +11 -8
  222. package/dist/cli/cli-subscriber.d.ts +0 -45
  223. package/dist/cli/cli-subscriber.d.ts.map +0 -1
  224. package/dist/cli/cli-subscriber.js +0 -204
@@ -1 +1 @@
1
- {"version":3,"file":"InputContainer.d.ts","sourceRoot":"","sources":["../../../../src/cli/ink-cli/containers/InputContainer.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAA0E,MAAM,OAAO,CAAC;AAC/F,OAAO,KAAK,EAAE,UAAU,EAAoC,aAAa,EAAE,MAAM,aAAa,CAAC;AAE/F,OAAO,EAAE,YAAY,EAAiB,MAAM,sBAAsB,CAAC;AAEnE,OAAO,KAAK,EACR,OAAO,EACP,OAAO,EACP,UAAU,EACV,YAAY,EAGZ,QAAQ,EACX,MAAM,mBAAmB,CAAC;AAG3B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AACvE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qCAAqC,CAAC;AAMtE,qDAAqD;AACrD,MAAM,WAAW,oBAAoB;IACjC,yEAAyE;IACzE,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3C;AAED,UAAU,mBAAmB;IACzB,yCAAyC;IACzC,MAAM,EAAE,UAAU,CAAC;IACnB,KAAK,EAAE,UAAU,CAAC;IAClB,EAAE,EAAE,OAAO,CAAC;IACZ,OAAO,EAAE,YAAY,CAAC;IACtB,QAAQ,EAAE,eAAe,GAAG,IAAI,CAAC;IACjC,8CAA8C;IAC9C,cAAc,EAAE,aAAa,EAAE,CAAC;IAChC,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,CAAC;IAC3D,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC;IACrD,UAAU,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC,CAAC;IAC/D,2DAA2D;IAC3D,WAAW,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IAC7D,mEAAmE;IACnE,kBAAkB,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IACpE,iFAAiF;IACjF,iBAAiB,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IACnE,iCAAiC;IACjC,iBAAiB,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;IACzE,8EAA8E;IAC9E,WAAW,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,eAAe,GAAG,IAAI,CAAC,CAAC,CAAC;IAC1E,yEAAyE;IACzE,gBAAgB,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC;IAC1E,sEAAsE;IACtE,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;IAC3D,KAAK,EAAE,UAAU,CAAC;IAClB,YAAY,EAAE,YAAY,CAAC;IAC3B,mEAAmE;IACnE,gBAAgB,CAAC,EAAE,CAAC,SAAS,EAAE,IAAI,GAAG,MAAM,KAAK,IAAI,CAAC;IACtD,6EAA6E;IAC7E,YAAY,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED;;;GAGG;AACH,eAAO,MAAM,cAAc,kGA6tB1B,CAAC"}
1
+ {"version":3,"file":"InputContainer.d.ts","sourceRoot":"","sources":["../../../../src/cli/ink-cli/containers/InputContainer.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAA0E,MAAM,OAAO,CAAC;AAC/F,OAAO,KAAK,EAAE,UAAU,EAAoC,aAAa,EAAE,MAAM,aAAa,CAAC;AAE/F,OAAO,EAAE,YAAY,EAAiB,MAAM,sBAAsB,CAAC;AAEnE,OAAO,KAAK,EACR,OAAO,EACP,OAAO,EACP,UAAU,EACV,YAAY,EAGZ,QAAQ,EACX,MAAM,mBAAmB,CAAC;AAG3B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AACvE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qCAAqC,CAAC;AAOtE,qDAAqD;AACrD,MAAM,WAAW,oBAAoB;IACjC,yEAAyE;IACzE,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3C;AAED,UAAU,mBAAmB;IACzB,yCAAyC;IACzC,MAAM,EAAE,UAAU,CAAC;IACnB,KAAK,EAAE,UAAU,CAAC;IAClB,EAAE,EAAE,OAAO,CAAC;IACZ,OAAO,EAAE,YAAY,CAAC;IACtB,0DAA0D;IAC1D,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,QAAQ,EAAE,eAAe,GAAG,IAAI,CAAC;IACjC,8CAA8C;IAC9C,cAAc,EAAE,aAAa,EAAE,CAAC;IAChC,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,CAAC;IAC3D,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC;IACrD,UAAU,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC,CAAC;IAC/D,2DAA2D;IAC3D,WAAW,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IAC7D,mEAAmE;IACnE,kBAAkB,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IACpE,iFAAiF;IACjF,iBAAiB,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IACnE,iCAAiC;IACjC,iBAAiB,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;IACzE,8EAA8E;IAC9E,WAAW,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,eAAe,GAAG,IAAI,CAAC,CAAC,CAAC;IAC1E,yEAAyE;IACzE,gBAAgB,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC;IAC1E,sEAAsE;IACtE,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;IAC3D,KAAK,EAAE,UAAU,CAAC;IAClB,YAAY,EAAE,YAAY,CAAC;IAC3B,mDAAmD;IACnD,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,mEAAmE;IACnE,gBAAgB,CAAC,EAAE,CAAC,SAAS,EAAE,IAAI,GAAG,MAAM,KAAK,IAAI,CAAC;IACtD,6EAA6E;IAC7E,YAAY,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED;;;GAGG;AACH,eAAO,MAAM,cAAc,kGAkwB1B,CAAC"}
@@ -13,13 +13,15 @@ import { useSoundService } from '../contexts/index.js';
13
13
  import { createUserMessage } from '../utils/messageFormatting.js';
14
14
  import { generateMessageId } from '../utils/idGenerator.js';
15
15
  import { capture } from '../../../analytics/index.js';
16
+ import { getOverlayPresentation } from '../utils/overlayPresentation.js';
16
17
  /**
17
18
  * Smart container for input area
18
19
  * Manages submission, history, and overlay triggers
19
20
  */
20
- export const InputContainer = forwardRef(function InputContainer({ buffer, input, ui, session, approval, queuedMessages, setInput, setUi, setSession, setMessages, setPendingMessages, setDequeuedBuffer, setQueuedMessages, setApproval, setApprovalQueue, setTodos, agent, inputService, onKeyboardScroll, useStreaming = true, }, ref) {
21
+ export const InputContainer = forwardRef(function InputContainer({ buffer, input, ui, session, initialPrompt, approval, queuedMessages, setInput, setUi, setSession, setMessages, setPendingMessages, setDequeuedBuffer, setQueuedMessages, setApproval, setApprovalQueue, setTodos, agent, inputService, configFilePath, onKeyboardScroll, useStreaming = true, }, ref) {
21
22
  // Track pending session creation to prevent race conditions
22
23
  const sessionCreationPromiseRef = useRef(null);
24
+ const didAutoSubmitInitialPromptRef = useRef(false);
23
25
  // Sound notification service from context
24
26
  const soundService = useSoundService();
25
27
  // Ref to track autoApproveEdits so processStream can read latest value mid-stream
@@ -307,6 +309,7 @@ export const InputContainer = forwardRef(function InputContainer({ buffer, input
307
309
  isProcessing: true,
308
310
  isCancelling: false,
309
311
  activeOverlay: 'none',
312
+ commandOutput: null,
310
313
  exitWarningShown: false,
311
314
  exitWarningTimestamp: null,
312
315
  }));
@@ -329,32 +332,28 @@ export const InputContainer = forwardRef(function InputContainer({ buffer, input
329
332
  const { CommandService } = await import('../services/CommandService.js');
330
333
  const commandService = new CommandService();
331
334
  try {
332
- const result = await commandService.executeCommand(parsed.command, parsed.args || [], agent, session.id || undefined);
335
+ const result = await commandService.executeCommand(parsed.command, parsed.args || [], agent, session.id || undefined, configFilePath);
333
336
  if (result.type === 'output' && result.output) {
334
337
  const output = result.output;
335
- setMessages((prev) => [
338
+ setUi((prev) => ({
336
339
  ...prev,
337
- {
338
- id: generateMessageId('command'),
339
- role: 'system',
340
+ activeOverlay: 'command-output',
341
+ commandOutput: {
342
+ title: `/${parsed.command}`,
340
343
  content: output,
341
- timestamp: new Date(),
342
344
  },
343
- ]);
345
+ }));
344
346
  }
345
347
  if (result.type === 'styled' && result.styled) {
346
- const { fallbackText, styledType, styledData } = result.styled;
347
- setMessages((prev) => [
348
+ const { fallbackText } = result.styled;
349
+ setUi((prev) => ({
348
350
  ...prev,
349
- {
350
- id: generateMessageId('command'),
351
- role: 'system',
351
+ activeOverlay: 'command-output',
352
+ commandOutput: {
353
+ title: `/${parsed.command}`,
352
354
  content: fallbackText,
353
- timestamp: new Date(),
354
- styledType,
355
- styledData,
356
355
  },
357
- ]);
356
+ }));
358
357
  }
359
358
  // Handle sendMessage - send through normal streaming flow
360
359
  if (result.type === 'sendMessage' && result.messageToSend) {
@@ -398,7 +397,7 @@ export const InputContainer = forwardRef(function InputContainer({ buffer, input
398
397
  }, {
399
398
  useStreaming,
400
399
  autoApproveEditsRef,
401
- eventBus: agent.agentEventBus,
400
+ eventBus: agent,
402
401
  setTodos,
403
402
  ...(soundService && { soundService }),
404
403
  });
@@ -473,7 +472,7 @@ export const InputContainer = forwardRef(function InputContainer({ buffer, input
473
472
  let messageText = trimmed;
474
473
  if (ui.planModeActive && !ui.planModeInitialized) {
475
474
  try {
476
- const planSkill = await agent.resolvePrompt('plan', {});
475
+ const planSkill = await agent.resolvePrompt('config:dexto-plan-mode', {});
477
476
  if (planSkill.text) {
478
477
  messageText = `<plan-mode>\n${planSkill.text}\n</plan-mode>\n\n${trimmed}`;
479
478
  // Mark plan mode as initialized after injection
@@ -482,7 +481,7 @@ export const InputContainer = forwardRef(function InputContainer({ buffer, input
482
481
  }
483
482
  catch {
484
483
  // Plan skill not found - continue without injection
485
- // This can happen if the plan-tools plugin is not enabled
484
+ // This can happen if the agent config/image doesn't include `config:dexto-plan-mode`.
486
485
  }
487
486
  }
488
487
  if (pendingImages.length > 0) {
@@ -529,7 +528,7 @@ export const InputContainer = forwardRef(function InputContainer({ buffer, input
529
528
  }, {
530
529
  useStreaming,
531
530
  autoApproveEditsRef,
532
- eventBus: agent.agentEventBus,
531
+ eventBus: agent,
533
532
  setTodos,
534
533
  ...(soundService && { soundService }),
535
534
  });
@@ -579,6 +578,27 @@ export const InputContainer = forwardRef(function InputContainer({ buffer, input
579
578
  useStreaming,
580
579
  soundService,
581
580
  ]);
581
+ useEffect(() => {
582
+ if (!initialPrompt || didAutoSubmitInitialPromptRef.current) {
583
+ return;
584
+ }
585
+ didAutoSubmitInitialPromptRef.current = true;
586
+ handleSubmit(initialPrompt, true).catch((error) => {
587
+ agent.logger.error('InputContainer initial prompt submission failed', {
588
+ error,
589
+ initialPrompt,
590
+ });
591
+ setMessages((prev) => [
592
+ ...prev,
593
+ {
594
+ id: generateMessageId('error'),
595
+ role: 'system',
596
+ content: `Failed to submit initial prompt: ${error instanceof Error ? error.message : String(error)}`,
597
+ timestamp: new Date(),
598
+ },
599
+ ]);
600
+ });
601
+ }, [agent.logger, handleSubmit, initialPrompt, setMessages]);
582
602
  // Determine if input should be active (not blocked by approval/overlay/history search)
583
603
  // Input stays active for filter-type overlays (so user can keep typing to filter)
584
604
  // Disable for approval prompts, overlays with their own text input, and history search mode
@@ -605,6 +625,9 @@ export const InputContainer = forwardRef(function InputContainer({ buffer, input
605
625
  // Allow history navigation when not blocked by approval/overlay
606
626
  // Allow during processing so users can browse previous prompts while agent runs
607
627
  const canNavigateHistory = !approval && ui.activeOverlay === 'none';
628
+ // Hide the input area when a focused overlay/approval is active.
629
+ // This matches "full-screen overlay" UX (Claude-style) and prevents extra UI chrome/flicker.
630
+ const shouldHideInputArea = getOverlayPresentation(ui.activeOverlay, approval) === 'focus';
608
631
  const placeholder = approval
609
632
  ? 'Approval required above...'
610
633
  : 'Type your message or /help for commands';
@@ -613,5 +636,8 @@ export const InputContainer = forwardRef(function InputContainer({ buffer, input
613
636
  useImperativeHandle(ref, () => ({
614
637
  submit: (text) => handleSubmit(text, true),
615
638
  }));
639
+ if (shouldHideInputArea) {
640
+ return null;
641
+ }
616
642
  return (_jsx(InputArea, { buffer: buffer, onSubmit: shouldHandleSubmit ? handleSubmit : () => { }, isDisabled: isInputDisabled, isActive: isInputActive, placeholder: placeholder, onHistoryNavigate: canNavigateHistory ? handleHistoryNavigate : undefined, onTriggerOverlay: handleTriggerOverlay, onKeyboardScroll: onKeyboardScroll, imageCount: input.images.length, onImagePaste: handleImagePaste, images: input.images, onImageRemove: handleImageRemove, pastedBlocks: input.pastedBlocks, onPasteBlock: handlePasteBlock, onPasteBlockUpdate: handlePasteBlockUpdate, onPasteBlockRemove: handlePasteBlockRemove, highlightQuery: ui.historySearch.isActive ? ui.historySearch.query : undefined }));
617
643
  });
@@ -26,6 +26,8 @@ interface OverlayContainerProps {
26
26
  agent: DextoAgent;
27
27
  inputService: InputService;
28
28
  buffer: TextBuffer;
29
+ /** Source agent config file path (if available) */
30
+ configFilePath: string | null;
29
31
  /** Callback to refresh static content (clear terminal and force re-render) */
30
32
  refreshStatic?: () => void;
31
33
  /** Callback to submit a prompt command through the normal streaming flow */
@@ -1 +1 @@
1
- {"version":3,"file":"OverlayContainer.d.ts","sourceRoot":"","sources":["../../../../src/cli/ink-cli/containers/OverlayContainer.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAyE,MAAM,OAAO,CAAC;AAG9F,OAAO,KAAK,EAAE,UAAU,EAAmD,MAAM,aAAa,CAAC;AAC/F,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qCAAqC,CAAC;AACtE,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,kCAAkC,CAAC;AAE5D,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACpF,OAAO,EAGH,KAAK,eAAe,EACvB,MAAM,iCAAiC,CAAC;AAuGzC,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAK3D,MAAM,WAAW,sBAAsB;IACnC,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,KAAK,OAAO,CAAC;CACrD;AAED,UAAU,qBAAqB;IAC3B,EAAE,EAAE,OAAO,CAAC;IACZ,KAAK,EAAE,UAAU,CAAC;IAClB,OAAO,EAAE,YAAY,CAAC;IACtB,QAAQ,EAAE,eAAe,GAAG,IAAI,CAAC;IACjC,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,CAAC;IAC3D,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC;IACrD,UAAU,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC,CAAC;IAC/D,WAAW,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IAC7D,WAAW,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,eAAe,GAAG,IAAI,CAAC,CAAC,CAAC;IAC1E,gBAAgB,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC;IAC1E,KAAK,EAAE,UAAU,CAAC;IAClB,YAAY,EAAE,YAAY,CAAC;IAC3B,MAAM,EAAE,UAAU,CAAC;IACnB,8EAA8E;IAC9E,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;IAC3B,4EAA4E;IAC5E,qBAAqB,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAClE;AAED;;;GAGG;AACH,eAAO,MAAM,gBAAgB,sGA07E5B,CAAC"}
1
+ {"version":3,"file":"OverlayContainer.d.ts","sourceRoot":"","sources":["../../../../src/cli/ink-cli/containers/OverlayContainer.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAyE,MAAM,OAAO,CAAC;AAG9F,OAAO,KAAK,EAAE,UAAU,EAAmD,MAAM,aAAa,CAAC;AAC/F,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qCAAqC,CAAC;AACtE,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,kCAAkC,CAAC;AAE5D,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACpF,OAAO,EAGH,KAAK,eAAe,EACvB,MAAM,iCAAiC,CAAC;AA8GzC,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAO3D,MAAM,WAAW,sBAAsB;IACnC,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,KAAK,OAAO,CAAC;CACrD;AAED,UAAU,qBAAqB;IAC3B,EAAE,EAAE,OAAO,CAAC;IACZ,KAAK,EAAE,UAAU,CAAC;IAClB,OAAO,EAAE,YAAY,CAAC;IACtB,QAAQ,EAAE,eAAe,GAAG,IAAI,CAAC;IACjC,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,CAAC;IAC3D,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC;IACrD,UAAU,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC,CAAC;IAC/D,WAAW,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IAC7D,WAAW,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,eAAe,GAAG,IAAI,CAAC,CAAC,CAAC;IAC1E,gBAAgB,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC;IAC1E,KAAK,EAAE,UAAU,CAAC;IAClB,YAAY,EAAE,YAAY,CAAC;IAC3B,MAAM,EAAE,UAAU,CAAC;IACnB,mDAAmD;IACnD,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,8EAA8E;IAC9E,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;IAC3B,4EAA4E;IAC5E,qBAAqB,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAClE;AAED;;;GAGG;AACH,eAAO,MAAM,gBAAgB,sGA8gF5B,CAAC"}
@@ -14,7 +14,9 @@ import ModelSelectorRefactored from '../components/overlays/ModelSelectorRefacto
14
14
  import SessionSelectorRefactored from '../components/overlays/SessionSelectorRefactored.js';
15
15
  import LogLevelSelector from '../components/overlays/LogLevelSelector.js';
16
16
  import StreamSelector from '../components/overlays/StreamSelector.js';
17
+ import SoundsSelector from '../components/overlays/SoundsSelector.js';
17
18
  import ToolBrowser from '../components/overlays/ToolBrowser.js';
19
+ import { CommandOutputOverlay, } from '../components/overlays/CommandOutputOverlay.js';
18
20
  import McpServerList from '../components/overlays/McpServerList.js';
19
21
  import McpServerActions from '../components/overlays/McpServerActions.js';
20
22
  import McpAddChoice from '../components/overlays/McpAddChoice.js';
@@ -42,12 +44,13 @@ import { DextoValidationError, LLMErrorCode, getModelDisplayName } from '@dexto/
42
44
  import { createUserMessage, convertHistoryToUIMessages } from '../utils/messageFormatting.js';
43
45
  import { generateMessageId } from '../utils/idGenerator.js';
44
46
  import { capture } from '../../../analytics/index.js';
47
+ import { FocusOverlayFrame } from '../components/shared/FocusOverlayFrame.js';
48
+ import { shouldHideCliChrome } from '../utils/overlayPresentation.js';
45
49
  /**
46
50
  * Smart container for managing overlays
47
51
  * Handles all modal interactions (selectors, autocomplete, approval)
48
52
  */
49
- export const OverlayContainer = forwardRef(function OverlayContainer({ ui, input, session, approval, setInput, setUi, setSession, setMessages, setApproval, setApprovalQueue, agent, inputService, buffer, refreshStatic, onSubmitPromptCommand, }, ref) {
50
- const eventBus = agent.agentEventBus;
53
+ export const OverlayContainer = forwardRef(function OverlayContainer({ ui, input, session, approval, setInput, setUi, setSession, setMessages, setApproval, setApprovalQueue, agent, inputService, buffer, configFilePath, refreshStatic, onSubmitPromptCommand, }, ref) {
51
54
  // Refs to overlay components for input handling
52
55
  const approvalRef = useRef(null);
53
56
  const slashAutocompleteRef = useRef(null);
@@ -56,7 +59,9 @@ export const OverlayContainer = forwardRef(function OverlayContainer({ ui, input
56
59
  const sessionSelectorRef = useRef(null);
57
60
  const logLevelSelectorRef = useRef(null);
58
61
  const streamSelectorRef = useRef(null);
62
+ const soundsSelectorRef = useRef(null);
59
63
  const toolBrowserRef = useRef(null);
64
+ const commandOutputRef = useRef(null);
60
65
  const mcpServerListRef = useRef(null);
61
66
  const mcpServerActionsRef = useRef(null);
62
67
  const mcpAddChoiceRef = useRef(null);
@@ -81,6 +86,21 @@ export const OverlayContainer = forwardRef(function OverlayContainer({ ui, input
81
86
  // State for selected plugin (for plugin-actions overlay)
82
87
  const [selectedPlugin, setSelectedPlugin] = useState(null);
83
88
  const marketplaceAddPromptRef = useRef(null);
89
+ const getConfigFilePathOrWarn = useCallback((action) => {
90
+ if (configFilePath) {
91
+ return configFilePath;
92
+ }
93
+ setMessages((prev) => [
94
+ ...prev,
95
+ {
96
+ id: generateMessageId('system'),
97
+ role: 'system',
98
+ content: `⚠️ Cannot ${action}: this agent is not file-backed (no config path).`,
99
+ timestamp: new Date(),
100
+ },
101
+ ]);
102
+ return null;
103
+ }, [configFilePath, setMessages]);
84
104
  // Expose handleInput method via ref - routes to appropriate overlay
85
105
  useImperativeHandle(ref, () => ({
86
106
  handleInput: (inputStr, key) => {
@@ -102,8 +122,12 @@ export const OverlayContainer = forwardRef(function OverlayContainer({ ui, input
102
122
  return logLevelSelectorRef.current?.handleInput(inputStr, key) ?? false;
103
123
  case 'stream-selector':
104
124
  return streamSelectorRef.current?.handleInput(inputStr, key) ?? false;
125
+ case 'sounds-selector':
126
+ return soundsSelectorRef.current?.handleInput(inputStr, key) ?? false;
105
127
  case 'tool-browser':
106
128
  return toolBrowserRef.current?.handleInput(inputStr, key) ?? false;
129
+ case 'command-output':
130
+ return commandOutputRef.current?.handleInput(inputStr, key) ?? false;
107
131
  case 'mcp-server-list':
108
132
  return mcpServerListRef.current?.handleInput(inputStr, key) ?? false;
109
133
  case 'mcp-server-actions':
@@ -178,7 +202,7 @@ export const OverlayContainer = forwardRef(function OverlayContainer({ ui, input
178
202
  }, [setApproval, setApprovalQueue, setUi]);
179
203
  // Handle approval responses
180
204
  const handleApprove = useCallback((options) => {
181
- if (!approval || !eventBus)
205
+ if (!approval)
182
206
  return;
183
207
  // Enable "accept all edits" mode if requested
184
208
  if (options.enableAcceptEditsMode) {
@@ -187,18 +211,14 @@ export const OverlayContainer = forwardRef(function OverlayContainer({ ui, input
187
211
  // Auto-disable plan mode when plan_create or plan_review is approved
188
212
  // This signals the transition from planning phase to execution phase
189
213
  const toolName = approval.metadata.toolName;
190
- const isPlanTool = toolName === 'plan_create' ||
191
- toolName === 'plan_review' ||
192
- toolName === 'custom--plan_create' ||
193
- toolName === 'custom--plan_review';
194
- if (isPlanTool) {
214
+ if (toolName === 'plan_create' || toolName === 'plan_review') {
195
215
  setUi((prev) => ({
196
216
  ...prev,
197
217
  planModeActive: false,
198
218
  planModeInitialized: false,
199
219
  }));
200
220
  }
201
- eventBus.emit('approval:response', {
221
+ agent.emit('approval:response', {
202
222
  approvalId: approval.approvalId,
203
223
  status: ApprovalStatus.APPROVED,
204
224
  sessionId: approval.sessionId,
@@ -210,15 +230,15 @@ export const OverlayContainer = forwardRef(function OverlayContainer({ ui, input
210
230
  },
211
231
  });
212
232
  completeApproval();
213
- }, [approval, eventBus, completeApproval, setUi]);
233
+ }, [approval, agent, completeApproval, setUi]);
214
234
  const handleDeny = useCallback((feedback) => {
215
- if (!approval || !eventBus)
235
+ if (!approval)
216
236
  return;
217
237
  // Include user feedback in the denial message if provided
218
238
  const message = feedback
219
239
  ? `User requested changes: ${feedback}`
220
240
  : 'User denied the tool execution';
221
- eventBus.emit('approval:response', {
241
+ agent.emit('approval:response', {
222
242
  approvalId: approval.approvalId,
223
243
  status: ApprovalStatus.DENIED,
224
244
  sessionId: approval.sessionId,
@@ -226,11 +246,11 @@ export const OverlayContainer = forwardRef(function OverlayContainer({ ui, input
226
246
  message,
227
247
  });
228
248
  completeApproval();
229
- }, [approval, eventBus, completeApproval]);
249
+ }, [approval, agent, completeApproval]);
230
250
  const handleCancelApproval = useCallback(() => {
231
- if (!approval || !eventBus)
251
+ if (!approval)
232
252
  return;
233
- eventBus.emit('approval:response', {
253
+ agent.emit('approval:response', {
234
254
  approvalId: approval.approvalId,
235
255
  status: ApprovalStatus.CANCELLED,
236
256
  sessionId: approval.sessionId,
@@ -238,7 +258,7 @@ export const OverlayContainer = forwardRef(function OverlayContainer({ ui, input
238
258
  message: 'User cancelled the approval request',
239
259
  });
240
260
  completeApproval();
241
- }, [approval, eventBus, completeApproval]);
261
+ }, [approval, agent, completeApproval]);
242
262
  // Helper: Check if error is due to missing API key
243
263
  const isApiKeyMissingError = (error) => {
244
264
  if (error instanceof DextoValidationError) {
@@ -879,15 +899,19 @@ export const OverlayContainer = forwardRef(function OverlayContainer({ ui, input
879
899
  setUi((prev) => ({ ...prev, activeOverlay: 'none', mcpWizardServerType: null }));
880
900
  }, [input.value, buffer, setInput, setUi]);
881
901
  const handleClose = useCallback(() => {
882
- setUi((prev) => ({ ...prev, activeOverlay: 'none', mcpWizardServerType: null }));
902
+ setUi((prev) => ({
903
+ ...prev,
904
+ activeOverlay: 'none',
905
+ mcpWizardServerType: null,
906
+ commandOutput: null,
907
+ }));
883
908
  }, [setUi]);
884
909
  // Handle log level selection
885
910
  const handleLogLevelSelect = useCallback((level) => {
886
911
  setUi((prev) => ({ ...prev, activeOverlay: 'none', mcpWizardServerType: null }));
887
912
  buffer.setText('');
888
913
  setInput((prev) => ({ ...prev, historyIndex: -1 }));
889
- // Set level on agent's logger (propagates to all child loggers via shared ref)
890
- agent.logger.setLevel(level);
914
+ void agent.setLogLevel(level, session.id ? { sessionId: session.id } : undefined);
891
915
  setMessages((prev) => [
892
916
  ...prev,
893
917
  {
@@ -897,7 +921,7 @@ export const OverlayContainer = forwardRef(function OverlayContainer({ ui, input
897
921
  timestamp: new Date(),
898
922
  },
899
923
  ]);
900
- }, [setUi, setInput, setMessages, agent, buffer]);
924
+ }, [setUi, setInput, setMessages, agent, buffer, getConfigFilePathOrWarn, session.id]);
901
925
  // Handle stream mode selection
902
926
  const handleStreamSelect = useCallback((enabled) => {
903
927
  setUi((prev) => ({ ...prev, activeOverlay: 'none', mcpWizardServerType: null }));
@@ -1000,7 +1024,11 @@ export const OverlayContainer = forwardRef(function OverlayContainer({ ui, input
1000
1024
  // Import persistence utilities
1001
1025
  const { updateMcpServerField } = await import('@dexto/agent-management');
1002
1026
  // Persist to config file AFTER successful enable/disable
1003
- await updateMcpServerField(agent.getAgentFilePath(), server.name, 'enabled', newEnabled);
1027
+ const agentPath = getConfigFilePathOrWarn('persist MCP server settings');
1028
+ if (!agentPath) {
1029
+ return;
1030
+ }
1031
+ await updateMcpServerField(agentPath, server.name, 'enabled', newEnabled);
1004
1032
  setMessages((prev) => [
1005
1033
  ...prev,
1006
1034
  {
@@ -1082,7 +1110,10 @@ export const OverlayContainer = forwardRef(function OverlayContainer({ ui, input
1082
1110
  // Import persistence utilities
1083
1111
  const { removeMcpServerFromConfig } = await import('@dexto/agent-management');
1084
1112
  // Persist to config file using surgical removal
1085
- await removeMcpServerFromConfig(agent.getAgentFilePath(), server.name);
1113
+ const agentPath = getConfigFilePathOrWarn('persist MCP server deletion');
1114
+ if (agentPath) {
1115
+ await removeMcpServerFromConfig(agentPath, server.name);
1116
+ }
1086
1117
  // Also disconnect if connected
1087
1118
  try {
1088
1119
  await agent.removeMcpServer(server.name);
@@ -1325,8 +1356,12 @@ export const OverlayContainer = forwardRef(function OverlayContainer({ ui, input
1325
1356
  ]);
1326
1357
  // Refresh prompts to remove uninstalled plugin skills
1327
1358
  try {
1328
- const newConfig = await reloadAgentConfigFromFile(agent.getAgentFilePath());
1329
- const enrichedConfig = enrichAgentConfig(newConfig, agent.getAgentFilePath());
1359
+ const agentPath = getConfigFilePathOrWarn('refresh prompts after plugin uninstall');
1360
+ if (!agentPath) {
1361
+ return;
1362
+ }
1363
+ const newConfig = await reloadAgentConfigFromFile(agentPath);
1364
+ const enrichedConfig = enrichAgentConfig(newConfig, agentPath);
1330
1365
  await agent.refreshPrompts(enrichedConfig.prompts);
1331
1366
  }
1332
1367
  catch {
@@ -1347,7 +1382,7 @@ export const OverlayContainer = forwardRef(function OverlayContainer({ ui, input
1347
1382
  setSelectedPlugin(null);
1348
1383
  setUi((prev) => ({ ...prev, isProcessing: false }));
1349
1384
  }
1350
- }, [setUi, setMessages, agent]);
1385
+ }, [setUi, setMessages, agent, getConfigFilePathOrWarn]);
1351
1386
  // Handle marketplace browser actions
1352
1387
  const handleMarketplaceBrowserAction = useCallback(async (action) => {
1353
1388
  if (action.type === 'add-marketplace') {
@@ -1367,8 +1402,12 @@ export const OverlayContainer = forwardRef(function OverlayContainer({ ui, input
1367
1402
  // Refresh prompts to include new plugin skills
1368
1403
  try {
1369
1404
  const { reloadAgentConfigFromFile, enrichAgentConfig } = await import('@dexto/agent-management');
1370
- const newConfig = await reloadAgentConfigFromFile(agent.getAgentFilePath());
1371
- const enrichedConfig = enrichAgentConfig(newConfig, agent.getAgentFilePath());
1405
+ const agentPath = getConfigFilePathOrWarn('refresh prompts after plugin install');
1406
+ if (!agentPath) {
1407
+ return;
1408
+ }
1409
+ const newConfig = await reloadAgentConfigFromFile(agentPath);
1410
+ const enrichedConfig = enrichAgentConfig(newConfig, agentPath);
1372
1411
  await agent.refreshPrompts(enrichedConfig.prompts);
1373
1412
  }
1374
1413
  catch (error) {
@@ -1376,7 +1415,7 @@ export const OverlayContainer = forwardRef(function OverlayContainer({ ui, input
1376
1415
  // Log but don't show error to user
1377
1416
  }
1378
1417
  }
1379
- }, [setUi, setMessages, agent]);
1418
+ }, [setUi, setMessages, agent, getConfigFilePathOrWarn]);
1380
1419
  // Handle marketplace add completion
1381
1420
  const handleMarketplaceAddComplete = useCallback((name, pluginCount) => {
1382
1421
  setUi((prev) => ({ ...prev, activeOverlay: 'marketplace-browser' }));
@@ -1591,26 +1630,34 @@ export const OverlayContainer = forwardRef(function OverlayContainer({ ui, input
1591
1630
  await writeFile(filePath, fileContent, 'utf-8');
1592
1631
  // Re-discover commands and refresh with enriched prompts
1593
1632
  const { reloadAgentConfigFromFile, enrichAgentConfig } = await import('@dexto/agent-management');
1594
- const newConfig = await reloadAgentConfigFromFile(agent.getAgentFilePath());
1595
- const enrichedConfig = enrichAgentConfig(newConfig, agent.getAgentFilePath());
1633
+ const agentPath = getConfigFilePathOrWarn('refresh prompts after creating shared prompt');
1634
+ if (!agentPath) {
1635
+ return;
1636
+ }
1637
+ const newConfig = await reloadAgentConfigFromFile(agentPath);
1638
+ const enrichedConfig = enrichAgentConfig(newConfig, agentPath);
1596
1639
  await agent.refreshPrompts(enrichedConfig.prompts);
1597
1640
  }
1598
1641
  else {
1599
1642
  // Create in agent's prompts directory
1600
- const agentDir = dirname(agent.getAgentFilePath());
1643
+ const agentPath = getConfigFilePathOrWarn('create prompt in agent prompts directory');
1644
+ if (!agentPath) {
1645
+ return;
1646
+ }
1647
+ const agentDir = dirname(agentPath);
1601
1648
  const promptsDir = join(agentDir, 'prompts');
1602
1649
  filePath = join(promptsDir, `${data.name}.md`);
1603
1650
  await mkdir(promptsDir, { recursive: true });
1604
1651
  await writeFile(filePath, fileContent, 'utf-8');
1605
1652
  // Add file reference to agent config using surgical helper
1606
1653
  const { addPromptToAgentConfig, reloadAgentConfigFromFile, enrichAgentConfig, } = await import('@dexto/agent-management');
1607
- await addPromptToAgentConfig(agent.getAgentFilePath(), {
1654
+ await addPromptToAgentConfig(agentPath, {
1608
1655
  type: 'file',
1609
1656
  file: `\${{dexto.agent_dir}}/prompts/${data.name}.md`,
1610
1657
  });
1611
1658
  // Reload config from disk, enrich to include discovered commands, then refresh
1612
- const newConfig = await reloadAgentConfigFromFile(agent.getAgentFilePath());
1613
- const enrichedConfig = enrichAgentConfig(newConfig, agent.getAgentFilePath());
1659
+ const newConfig = await reloadAgentConfigFromFile(agentPath);
1660
+ const enrichedConfig = enrichAgentConfig(newConfig, agentPath);
1614
1661
  await agent.refreshPrompts(enrichedConfig.prompts);
1615
1662
  }
1616
1663
  setMessages((prev) => [
@@ -1634,7 +1681,15 @@ export const OverlayContainer = forwardRef(function OverlayContainer({ ui, input
1634
1681
  },
1635
1682
  ]);
1636
1683
  }
1637
- }, [ui.promptAddWizard?.scope, setUi, setInput, setMessages, buffer, agent]);
1684
+ }, [
1685
+ ui.promptAddWizard?.scope,
1686
+ setUi,
1687
+ setInput,
1688
+ setMessages,
1689
+ buffer,
1690
+ agent,
1691
+ getConfigFilePathOrWarn,
1692
+ ]);
1638
1693
  // Handle prompt delete
1639
1694
  const handlePromptDelete = useCallback(async (deletable) => {
1640
1695
  const displayName = deletable.prompt.displayName || deletable.prompt.name;
@@ -1649,10 +1704,14 @@ export const OverlayContainer = forwardRef(function OverlayContainer({ ui, input
1649
1704
  ]);
1650
1705
  try {
1651
1706
  const { deletePromptByMetadata, reloadAgentConfigFromFile, enrichAgentConfig } = await import('@dexto/agent-management');
1707
+ const agentPath = getConfigFilePathOrWarn('delete prompt');
1708
+ if (!agentPath) {
1709
+ return;
1710
+ }
1652
1711
  // Use the higher-level delete function that handles file + config
1653
1712
  // Pass full metadata including originalId for inline prompt deletion
1654
1713
  const promptMetadata = deletable.prompt.metadata;
1655
- const result = await deletePromptByMetadata(agent.getAgentFilePath(), {
1714
+ const result = await deletePromptByMetadata(agentPath, {
1656
1715
  name: deletable.prompt.name,
1657
1716
  metadata: {
1658
1717
  filePath: deletable.filePath,
@@ -1663,8 +1722,8 @@ export const OverlayContainer = forwardRef(function OverlayContainer({ ui, input
1663
1722
  throw new Error(result.error || 'Failed to delete prompt');
1664
1723
  }
1665
1724
  // Reload config from disk, enrich to include discovered commands, then refresh
1666
- const newConfig = await reloadAgentConfigFromFile(agent.getAgentFilePath());
1667
- const enrichedConfig = enrichAgentConfig(newConfig, agent.getAgentFilePath());
1725
+ const newConfig = await reloadAgentConfigFromFile(agentPath);
1726
+ const enrichedConfig = enrichAgentConfig(newConfig, agentPath);
1668
1727
  await agent.refreshPrompts(enrichedConfig.prompts);
1669
1728
  setMessages((prev) => [
1670
1729
  ...prev,
@@ -1698,7 +1757,7 @@ export const OverlayContainer = forwardRef(function OverlayContainer({ ui, input
1698
1757
  activeOverlay: 'prompt-list',
1699
1758
  }));
1700
1759
  }
1701
- }, [setUi, setMessages, agent]);
1760
+ }, [setUi, setMessages, agent, getConfigFilePathOrWarn]);
1702
1761
  // Handle prompt add wizard close
1703
1762
  const handlePromptAddWizardClose = useCallback(() => {
1704
1763
  setUi((prev) => ({
@@ -1766,7 +1825,8 @@ export const OverlayContainer = forwardRef(function OverlayContainer({ ui, input
1766
1825
  const handleSessionRenameClose = useCallback(() => {
1767
1826
  setUi((prev) => ({ ...prev, activeOverlay: 'none' }));
1768
1827
  }, [setUi]);
1769
- return (_jsxs(_Fragment, { children: [approval && (_jsx(ApprovalPrompt, { ref: approvalRef, approval: approval, onApprove: handleApprove, onDeny: handleDeny, onCancel: handleCancelApproval })), ui.activeOverlay === 'slash-autocomplete' && (_jsx(Box, { marginTop: 1, children: _jsx(SlashCommandAutocomplete, { ref: slashAutocompleteRef, isVisible: true, searchQuery: input.value, onSelectPrompt: handlePromptSelect, onSelectSystemCommand: handleSystemCommandSelect, onLoadIntoInput: handleLoadIntoInput, onSubmitRaw: onSubmitPromptCommand, onClose: handleClose, agent: agent }) })), ui.activeOverlay === 'resource-autocomplete' && (_jsx(Box, { marginTop: 1, children: _jsx(ResourceAutocomplete, { ref: resourceAutocompleteRef, isVisible: true, searchQuery: input.value, onSelectResource: handleResourceSelect, onLoadIntoInput: handleLoadIntoInput, onClose: handleClose, agent: agent }) })), ui.activeOverlay === 'model-selector' && (_jsx(Box, { marginTop: 1, children: _jsx(ModelSelectorRefactored, { ref: modelSelectorRef, isVisible: true, onSelectModel: handleModelSelect, onSetDefaultModel: handleSetDefaultModel, onClose: handleClose, onAddCustomModel: handleAddCustomModel, onEditCustomModel: handleEditCustomModel, agent: agent }) })), ui.activeOverlay === 'session-selector' && (_jsx(Box, { marginTop: 1, children: _jsx(SessionSelectorRefactored, { ref: sessionSelectorRef, isVisible: true, onSelectSession: handleSessionSelect, onClose: handleClose, agent: agent, currentSessionId: session.id || undefined }) })), ui.activeOverlay === 'log-level-selector' && (_jsx(Box, { marginTop: 1, children: _jsx(LogLevelSelector, { ref: logLevelSelectorRef, isVisible: true, onSelect: handleLogLevelSelect, onClose: handleClose, agent: agent, sessionId: session.id }) })), ui.activeOverlay === 'stream-selector' && (_jsx(Box, { marginTop: 1, children: _jsx(StreamSelector, { ref: streamSelectorRef, isVisible: true, onSelect: handleStreamSelect, onClose: handleClose }) })), ui.activeOverlay === 'tool-browser' && (_jsx(Box, { marginTop: 1, children: _jsx(ToolBrowser, { ref: toolBrowserRef, isVisible: true, onClose: handleClose, agent: agent, sessionId: session.id }) })), ui.activeOverlay === 'mcp-server-list' && (_jsx(Box, { marginTop: 1, children: _jsx(McpServerList, { ref: mcpServerListRef, isVisible: true, onAction: handleMcpServerListAction, onClose: handleClose, agent: agent }) })), ui.activeOverlay === 'mcp-server-actions' && ui.selectedMcpServer && (_jsx(Box, { marginTop: 1, children: _jsx(McpServerActions, { ref: mcpServerActionsRef, isVisible: true, server: ui.selectedMcpServer, onAction: handleMcpServerAction, onClose: handleClose }) })), ui.activeOverlay === 'mcp-add-choice' && (_jsx(Box, { marginTop: 1, children: _jsx(McpAddChoice, { ref: mcpAddChoiceRef, isVisible: true, onSelect: handleMcpAddChoice, onClose: handleClose }) })), ui.activeOverlay === 'mcp-add-selector' && (_jsx(Box, { marginTop: 1, children: _jsx(McpAddSelector, { ref: mcpAddSelectorRef, isVisible: true, onSelect: handleMcpAddSelect, onClose: handleClose }) })), ui.activeOverlay === 'mcp-custom-type-selector' && (_jsx(Box, { marginTop: 1, children: _jsx(McpCustomTypeSelector, { ref: mcpCustomTypeSelectorRef, isVisible: true, onSelect: handleMcpCustomTypeSelect, onClose: handleClose }) })), ui.activeOverlay === 'mcp-custom-wizard' && ui.mcpWizardServerType && (_jsx(McpCustomWizard, { ref: mcpCustomWizardRef, isVisible: true, serverType: ui.mcpWizardServerType, onComplete: handleMcpCustomWizardComplete, onClose: handleClose })), ui.activeOverlay === 'custom-model-wizard' && (_jsx(CustomModelWizard, { ref: customModelWizardRef, isVisible: true, onComplete: handleCustomModelComplete, onClose: () => {
1828
+ const hideCliChrome = shouldHideCliChrome(ui.activeOverlay, approval);
1829
+ const overlayContent = (_jsxs(_Fragment, { children: [approval && (_jsx(ApprovalPrompt, { ref: approvalRef, approval: approval, onApprove: handleApprove, onDeny: handleDeny, onCancel: handleCancelApproval })), ui.activeOverlay === 'slash-autocomplete' && (_jsx(Box, { marginTop: 1, children: _jsx(SlashCommandAutocomplete, { ref: slashAutocompleteRef, isVisible: true, searchQuery: input.value, onSelectPrompt: handlePromptSelect, onSelectSystemCommand: handleSystemCommandSelect, onLoadIntoInput: handleLoadIntoInput, onSubmitRaw: onSubmitPromptCommand, onClose: handleClose, agent: agent }) })), ui.activeOverlay === 'resource-autocomplete' && (_jsx(Box, { marginTop: 1, children: _jsx(ResourceAutocomplete, { ref: resourceAutocompleteRef, isVisible: true, searchQuery: input.value, onSelectResource: handleResourceSelect, onLoadIntoInput: handleLoadIntoInput, onClose: handleClose, agent: agent }) })), ui.activeOverlay === 'model-selector' && (_jsx(Box, { marginTop: 1, children: _jsx(ModelSelectorRefactored, { ref: modelSelectorRef, isVisible: true, onSelectModel: handleModelSelect, onSetDefaultModel: handleSetDefaultModel, onClose: handleClose, onAddCustomModel: handleAddCustomModel, onEditCustomModel: handleEditCustomModel, agent: agent }) })), ui.activeOverlay === 'session-selector' && (_jsx(Box, { marginTop: 1, children: _jsx(SessionSelectorRefactored, { ref: sessionSelectorRef, isVisible: true, onSelectSession: handleSessionSelect, onClose: handleClose, agent: agent, currentSessionId: session.id || undefined }) })), ui.activeOverlay === 'log-level-selector' && (_jsx(Box, { marginTop: 1, children: _jsx(LogLevelSelector, { ref: logLevelSelectorRef, isVisible: true, onSelect: handleLogLevelSelect, onClose: handleClose, agent: agent, sessionId: session.id }) })), ui.activeOverlay === 'stream-selector' && (_jsx(Box, { marginTop: 1, children: _jsx(StreamSelector, { ref: streamSelectorRef, isVisible: true, onSelect: handleStreamSelect, onClose: handleClose }) })), ui.activeOverlay === 'sounds-selector' && (_jsx(Box, { marginTop: 1, children: _jsx(SoundsSelector, { ref: soundsSelectorRef, isVisible: true, onClose: handleClose }) })), ui.activeOverlay === 'tool-browser' && (_jsx(Box, { marginTop: 1, children: _jsx(ToolBrowser, { ref: toolBrowserRef, isVisible: true, onClose: handleClose, agent: agent, sessionId: session.id }) })), ui.activeOverlay === 'command-output' && ui.commandOutput && (_jsx(Box, { marginTop: 1, children: _jsx(CommandOutputOverlay, { ref: commandOutputRef, isVisible: true, title: ui.commandOutput.title, content: ui.commandOutput.content, onClose: handleClose }) })), ui.activeOverlay === 'mcp-server-list' && (_jsx(Box, { marginTop: 1, children: _jsx(McpServerList, { ref: mcpServerListRef, isVisible: true, onAction: handleMcpServerListAction, onClose: handleClose, agent: agent }) })), ui.activeOverlay === 'mcp-server-actions' && ui.selectedMcpServer && (_jsx(Box, { marginTop: 1, children: _jsx(McpServerActions, { ref: mcpServerActionsRef, isVisible: true, server: ui.selectedMcpServer, onAction: handleMcpServerAction, onClose: handleClose }) })), ui.activeOverlay === 'mcp-add-choice' && (_jsx(Box, { marginTop: 1, children: _jsx(McpAddChoice, { ref: mcpAddChoiceRef, isVisible: true, onSelect: handleMcpAddChoice, onClose: handleClose }) })), ui.activeOverlay === 'mcp-add-selector' && (_jsx(Box, { marginTop: 1, children: _jsx(McpAddSelector, { ref: mcpAddSelectorRef, isVisible: true, onSelect: handleMcpAddSelect, onClose: handleClose }) })), ui.activeOverlay === 'mcp-custom-type-selector' && (_jsx(Box, { marginTop: 1, children: _jsx(McpCustomTypeSelector, { ref: mcpCustomTypeSelectorRef, isVisible: true, onSelect: handleMcpCustomTypeSelect, onClose: handleClose }) })), ui.activeOverlay === 'mcp-custom-wizard' && ui.mcpWizardServerType && (_jsx(McpCustomWizard, { ref: mcpCustomWizardRef, isVisible: true, serverType: ui.mcpWizardServerType, onComplete: handleMcpCustomWizardComplete, onClose: handleClose })), ui.activeOverlay === 'custom-model-wizard' && (_jsx(CustomModelWizard, { ref: customModelWizardRef, isVisible: true, onComplete: handleCustomModelComplete, onClose: () => {
1770
1830
  setEditingModel(null);
1771
1831
  handleClose();
1772
1832
  }, initialModel: editingModel })), ui.activeOverlay === 'plugin-manager' && (_jsx(Box, { marginTop: 1, children: _jsx(PluginManager, { ref: pluginManagerRef, isVisible: true, onAction: handlePluginManagerAction, onClose: handleClose }) })), ui.activeOverlay === 'plugin-list' && (_jsx(Box, { marginTop: 1, children: _jsx(PluginList, { ref: pluginListRef, isVisible: true, onPluginSelect: handlePluginSelect, onClose: handleClose }) })), ui.activeOverlay === 'plugin-actions' && (_jsx(Box, { marginTop: 1, children: _jsx(PluginActions, { ref: pluginActionsRef, isVisible: true, plugin: selectedPlugin, onAction: handlePluginAction, onClose: () => {
@@ -1776,4 +1836,5 @@ export const OverlayContainer = forwardRef(function OverlayContainer({ ui, input
1776
1836
  activeOverlay: 'plugin-list',
1777
1837
  }));
1778
1838
  } }) })), ui.activeOverlay === 'marketplace-browser' && (_jsx(Box, { marginTop: 1, children: _jsx(MarketplaceBrowser, { ref: marketplaceBrowserRef, isVisible: true, onAction: handleMarketplaceBrowserAction, onClose: handleClose }) })), ui.activeOverlay === 'marketplace-add' && (_jsx(Box, { marginTop: 1, children: _jsx(MarketplaceAddPrompt, { ref: marketplaceAddPromptRef, isVisible: true, onComplete: handleMarketplaceAddComplete, onClose: () => setUi((prev) => ({ ...prev, activeOverlay: 'marketplace-browser' })) }) })), ui.activeOverlay === 'session-subcommand-selector' && (_jsx(Box, { marginTop: 1, children: _jsx(SessionSubcommandSelector, { ref: sessionSubcommandSelectorRef, isVisible: true, onSelect: handleSessionSubcommandSelect, onClose: handleClose }) })), ui.activeOverlay === 'api-key-input' && ui.pendingModelSwitch && (_jsx(ApiKeyInput, { ref: apiKeyInputRef, isVisible: true, provider: ui.pendingModelSwitch.provider, onSaved: handleApiKeySaved, onClose: handleApiKeyClose })), ui.activeOverlay === 'search' && (_jsx(SearchOverlay, { ref: searchOverlayRef, isVisible: true, agent: agent, onClose: handleClose, onSelectResult: handleSearchResultSelect })), ui.activeOverlay === 'prompt-list' && (_jsx(Box, { marginTop: 1, children: _jsx(PromptList, { ref: promptListRef, isVisible: true, onAction: handlePromptListAction, onLoadIntoInput: handlePromptLoadIntoInput, onClose: handleClose, agent: agent }) })), ui.activeOverlay === 'prompt-add-choice' && (_jsx(Box, { marginTop: 1, children: _jsx(PromptAddChoice, { ref: promptAddChoiceRef, isVisible: true, onSelect: handlePromptAddChoice, onClose: handlePromptAddChoiceClose }) })), ui.activeOverlay === 'prompt-add-wizard' && ui.promptAddWizard && (_jsx(PromptAddWizard, { ref: promptAddWizardRef, isVisible: true, scope: ui.promptAddWizard.scope, onComplete: handlePromptAddComplete, onClose: handlePromptAddWizardClose })), ui.activeOverlay === 'prompt-delete-selector' && (_jsx(Box, { marginTop: 1, children: _jsx(PromptDeleteSelector, { ref: promptDeleteSelectorRef, isVisible: true, onDelete: handlePromptDelete, onClose: handlePromptDeleteClose, agent: agent }) })), ui.activeOverlay === 'session-rename' && (_jsx(SessionRenameOverlay, { ref: sessionRenameRef, isVisible: true, currentTitle: currentSessionTitle, onRename: handleSessionRename, onClose: handleSessionRenameClose })), ui.activeOverlay === 'context-stats' && session.id && (_jsx(Box, { marginTop: 1, children: _jsx(ContextStatsOverlay, { ref: contextStatsRef, isVisible: true, onClose: handleClose, agent: agent, sessionId: session.id ?? '' }) })), ui.activeOverlay === 'export-wizard' && (_jsx(ExportWizard, { ref: exportWizardRef, isVisible: true, agent: agent, sessionId: session.id, onClose: handleClose }))] }));
1839
+ return hideCliChrome ? (_jsx(FocusOverlayFrame, { children: overlayContent })) : (overlayContent);
1779
1840
  });
@@ -1 +1 @@
1
- {"version":3,"file":"useAgentEvents.d.ts","sourceRoot":"","sources":["../../../../src/cli/ink-cli/hooks/useAgentEvents.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,EAEH,KAAK,UAAU,EACf,KAAK,aAAa,EAErB,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAEvE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qCAAqC,CAAC;AAEtE,UAAU,mBAAmB;IACzB,KAAK,EAAE,UAAU,CAAC;IAClB,WAAW,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IAC7D,kBAAkB,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IACpE,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC;IACrD,UAAU,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC,CAAC;IAC/D,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,CAAC;IAC3D,WAAW,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,eAAe,GAAG,IAAI,CAAC,CAAC,CAAC;IAC1E,gBAAgB,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC;IAC1E,iBAAiB,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;IACzE,8CAA8C;IAC9C,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,iFAAiF;IACjF,MAAM,EAAE,UAAU,CAAC;CACtB;AAYD;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,EAC3B,KAAK,EACL,WAAW,EACX,kBAAkB,EAClB,KAAK,EACL,UAAU,EACV,QAAQ,EACR,WAAW,EACX,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,EAChB,MAAM,GACT,EAAE,mBAAmB,GAAG,IAAI,CAid5B"}
1
+ {"version":3,"file":"useAgentEvents.d.ts","sourceRoot":"","sources":["../../../../src/cli/ink-cli/hooks/useAgentEvents.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,EAEH,KAAK,UAAU,EACf,KAAK,aAAa,EAErB,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAEvE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qCAAqC,CAAC;AAEtE,UAAU,mBAAmB;IACzB,KAAK,EAAE,UAAU,CAAC;IAClB,WAAW,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IAC7D,kBAAkB,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IACpE,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC;IACrD,UAAU,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC,CAAC;IAC/D,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,CAAC;IAC3D,WAAW,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,eAAe,GAAG,IAAI,CAAC,CAAC,CAAC;IAC1E,gBAAgB,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC;IAC1E,iBAAiB,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;IACzE,8CAA8C;IAC9C,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,iFAAiF;IACjF,MAAM,EAAE,UAAU,CAAC;CACtB;AAYD;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,EAC3B,KAAK,EACL,WAAW,EACX,kBAAkB,EAClB,KAAK,EACL,UAAU,EACV,QAAQ,EACR,WAAW,EACX,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,EAChB,MAAM,GACT,EAAE,mBAAmB,GAAG,IAAI,CAgd5B"}