@aria-cli/cli 1.0.51 → 1.0.54

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 (319) hide show
  1. package/bin/aria.mjs +569 -569
  2. package/package.json +14 -73
  3. package/dist/.tsbuildinfo +0 -1
  4. package/dist/attached-local-control-client.js +0 -826
  5. package/dist/bootstrap-local-control-client.js +0 -2
  6. package/dist/capability-aware-method-proxy.js +0 -42
  7. package/dist/cli-context.js +0 -160
  8. package/dist/commands/arions.js +0 -174
  9. package/dist/commands/auth.js +0 -123
  10. package/dist/commands/daemon.js +0 -245
  11. package/dist/commands/definitions.js +0 -176
  12. package/dist/commands/index.js +0 -74
  13. package/dist/commands/login-handler.js +0 -1108
  14. package/dist/commands/logout-handler.js +0 -92
  15. package/dist/commands/memory-handlers.js +0 -89
  16. package/dist/commands/pairing.js +0 -60
  17. package/dist/commands/runtime-cutover-reset-command.js +0 -12
  18. package/dist/commands/runtime-cutover-reset.js +0 -265
  19. package/dist/commands/terminal-setup.js +0 -84
  20. package/dist/config/aria-config.js +0 -238
  21. package/dist/config/index.js +0 -3
  22. package/dist/config/loader.js +0 -97
  23. package/dist/config.js +0 -142
  24. package/dist/daemon-info.js +0 -10
  25. package/dist/ensure-daemon.js +0 -128
  26. package/dist/entrypoints/command-mode.js +0 -5
  27. package/dist/entrypoints/daemon.js +0 -50
  28. package/dist/entrypoints/headless-stdio.js +0 -25
  29. package/dist/entrypoints/interactive.js +0 -80
  30. package/dist/event-loop-watchdog.js +0 -73
  31. package/dist/headless/auth-orchestrator.js +0 -508
  32. package/dist/headless/auth-service.js +0 -43
  33. package/dist/headless/bootstrap-fast-path.js +0 -112
  34. package/dist/headless/call-command.js +0 -143
  35. package/dist/headless/daemon-service.js +0 -318
  36. package/dist/headless/hook-actions.js +0 -235
  37. package/dist/headless/hook-service.js +0 -42
  38. package/dist/headless/kernel-services.js +0 -216
  39. package/dist/headless/kernel.js +0 -785
  40. package/dist/headless/operations/arion.js +0 -119
  41. package/dist/headless/operations/auth.js +0 -45
  42. package/dist/headless/operations/client.js +0 -31
  43. package/dist/headless/operations/config.js +0 -69
  44. package/dist/headless/operations/daemon.js +0 -47
  45. package/dist/headless/operations/hook.js +0 -56
  46. package/dist/headless/operations/index.js +0 -11
  47. package/dist/headless/operations/memory.js +0 -102
  48. package/dist/headless/operations/message.js +0 -279
  49. package/dist/headless/operations/model.js +0 -100
  50. package/dist/headless/operations/peer.js +0 -56
  51. package/dist/headless/operations/run.js +0 -24
  52. package/dist/headless/operations/session.js +0 -90
  53. package/dist/headless/operations/system.js +0 -19
  54. package/dist/headless/operations/utils.js +0 -35
  55. package/dist/headless/run-orchestrator.js +0 -703
  56. package/dist/headless/stdio-server.js +0 -439
  57. package/dist/history/SessionHistory.js +0 -8
  58. package/dist/history/SessionHistoryClient.js +0 -186
  59. package/dist/history/conversation-message.js +0 -112
  60. package/dist/history/index.js +0 -8
  61. package/dist/history/jsonl-replay.js +0 -154
  62. package/dist/history/repair-tool-pairing.js +0 -84
  63. package/dist/history/stall-phase-bridge.js +0 -11
  64. package/dist/history/turn-accumulator.js +0 -427
  65. package/dist/index.js +0 -7
  66. package/dist/ink-repl.js +0 -4183
  67. package/dist/local-control-bootstrap.js +0 -26
  68. package/dist/local-control-client.js +0 -2
  69. package/dist/local-control-error-reporting.js +0 -34
  70. package/dist/local-control-http-client.js +0 -362
  71. package/dist/local-control-lazy-wrapper.js +0 -363
  72. package/dist/local-control-manager.js +0 -146
  73. package/dist/main.js +0 -38
  74. package/dist/network-security.js +0 -62
  75. package/dist/networking-server.js +0 -38
  76. package/dist/peer-identity.js +0 -23
  77. package/dist/polling-subscription.js +0 -34
  78. package/dist/relaunch.js +0 -588
  79. package/dist/release-notes.js +0 -35
  80. package/dist/repl-cleanup.js +0 -47
  81. package/dist/runtime/configure-bun-sqlite.js +0 -3
  82. package/dist/runtime/crash-handlers.js +0 -111
  83. package/dist/runtime/interactive-invocation.js +0 -39
  84. package/dist/runtime/internal-mode.js +0 -14
  85. package/dist/runtime/launch-spec.js +0 -64
  86. package/dist/runtime/owner-lease.js +0 -44
  87. package/dist/runtime/public-mode.js +0 -20
  88. package/dist/runtime/run-internal-mode.js +0 -18
  89. package/dist/runtime/runtime-kind.js +0 -32
  90. package/dist/runtime/spawn-aria.js +0 -38
  91. package/dist/selectable-client.js +0 -2
  92. package/dist/selectable-peer.js +0 -2
  93. package/dist/session.js +0 -203
  94. package/dist/slash-commands.js +0 -80
  95. package/dist/sounds.js +0 -210
  96. package/dist/ui/App.js +0 -526
  97. package/dist/ui/components/AnthropicMethodPicker.js +0 -6
  98. package/dist/ui/components/ArionPrompt.js +0 -15
  99. package/dist/ui/components/AutocompleteDropdown.js +0 -23
  100. package/dist/ui/components/AutonomySelector.js +0 -55
  101. package/dist/ui/components/Banner.js +0 -98
  102. package/dist/ui/components/ConversationHistory.js +0 -175
  103. package/dist/ui/components/CopilotDeviceLoginFlow.js +0 -88
  104. package/dist/ui/components/CopilotSourcePicker.js +0 -50
  105. package/dist/ui/components/Cost.js +0 -10
  106. package/dist/ui/components/CustomSelect/option-map.js +0 -30
  107. package/dist/ui/components/CustomSelect/select-option.js +0 -13
  108. package/dist/ui/components/CustomSelect/select.js +0 -42
  109. package/dist/ui/components/CustomSelect/use-select-state.js +0 -179
  110. package/dist/ui/components/CustomSelect/use-select.js +0 -15
  111. package/dist/ui/components/ErrorDisplay.js +0 -35
  112. package/dist/ui/components/FallbackToolUseRejectedMessage.js +0 -7
  113. package/dist/ui/components/FileEditToolUpdatedMessage.js +0 -57
  114. package/dist/ui/components/HandoffMarker.js +0 -18
  115. package/dist/ui/components/HighlightedCode.js +0 -21
  116. package/dist/ui/components/InputArea.js +0 -187
  117. package/dist/ui/components/Message.js +0 -25
  118. package/dist/ui/components/OAuthLoginFlow.js +0 -113
  119. package/dist/ui/components/OutputTruncation.js +0 -35
  120. package/dist/ui/components/PermissionPrompt.js +0 -79
  121. package/dist/ui/components/PipelineTimingPanel.js +0 -15
  122. package/dist/ui/components/ProviderMethodPicker.js +0 -61
  123. package/dist/ui/components/ProviderPicker.js +0 -63
  124. package/dist/ui/components/RenderItemView.js +0 -71
  125. package/dist/ui/components/Spinner.js +0 -46
  126. package/dist/ui/components/StatusBar.js +0 -95
  127. package/dist/ui/components/StreamingIndicator.js +0 -55
  128. package/dist/ui/components/StructuredDiff.js +0 -168
  129. package/dist/ui/components/TextInputOverlay.js +0 -43
  130. package/dist/ui/components/ThinkingBlock.js +0 -82
  131. package/dist/ui/components/ToolCost.js +0 -17
  132. package/dist/ui/components/ToolExecution.js +0 -61
  133. package/dist/ui/components/ToolHeader.js +0 -51
  134. package/dist/ui/components/ToolRenderLayoutContext.js +0 -14
  135. package/dist/ui/components/ToolResultWrapper.js +0 -6
  136. package/dist/ui/components/ToolUseLoader.js +0 -35
  137. package/dist/ui/components/TraceWaterfall.js +0 -91
  138. package/dist/ui/components/index.js +0 -33
  139. package/dist/ui/components/messages/AssistantTextMessage.js +0 -25
  140. package/dist/ui/components/messages/UserImageMessage.js +0 -12
  141. package/dist/ui/components/messages/UserTextMessage.js +0 -12
  142. package/dist/ui/components/overlays/ArionSelector.js +0 -68
  143. package/dist/ui/components/overlays/ClientSelector.js +0 -62
  144. package/dist/ui/components/overlays/CommandPalette.js +0 -67
  145. package/dist/ui/components/overlays/DaemonControl.js +0 -87
  146. package/dist/ui/components/overlays/InviteShareOverlay.js +0 -15
  147. package/dist/ui/components/overlays/JoinInviteOverlay.js +0 -32
  148. package/dist/ui/components/overlays/MemoryBrowser.js +0 -100
  149. package/dist/ui/components/overlays/MessageSelector.js +0 -123
  150. package/dist/ui/components/overlays/ModelSelector.js +0 -211
  151. package/dist/ui/components/overlays/PairRequestOverlay.js +0 -42
  152. package/dist/ui/components/overlays/PeerSelector.js +0 -84
  153. package/dist/ui/components/overlays/SessionSelector.js +0 -102
  154. package/dist/ui/components/overlays/SoundSelector.js +0 -86
  155. package/dist/ui/components/overlays/ThemeSelector.js +0 -139
  156. package/dist/ui/components/overlays/index.js +0 -15
  157. package/dist/ui/components/permissions/BashPermissionRequest/BashPermissionRequest.js +0 -53
  158. package/dist/ui/components/permissions/FallbackPermissionRequest.js +0 -56
  159. package/dist/ui/components/permissions/FileEditPermissionRequest/FileEditPermissionRequest.js +0 -76
  160. package/dist/ui/components/permissions/FileEditPermissionRequest/FileEditToolDiff.js +0 -18
  161. package/dist/ui/components/permissions/FileWritePermissionRequest/FileWritePermissionRequest.js +0 -64
  162. package/dist/ui/components/permissions/FileWritePermissionRequest/FileWriteToolDiff.js +0 -26
  163. package/dist/ui/components/permissions/FilesystemPermissionRequest/FilesystemPermissionRequest.js +0 -141
  164. package/dist/ui/components/permissions/PermissionRequest.js +0 -70
  165. package/dist/ui/components/permissions/PermissionRequestTitle.js +0 -41
  166. package/dist/ui/components/permissions/hooks.js +0 -10
  167. package/dist/ui/components/permissions/toolUseOptions.js +0 -68
  168. package/dist/ui/components/permissions/utils.js +0 -10
  169. package/dist/ui/components/text-input/Cursor.js +0 -326
  170. package/dist/ui/components/text-input/TextInput.js +0 -231
  171. package/dist/ui/components/text-input/imagePaste.js +0 -28
  172. package/dist/ui/components/text-input/index.js +0 -6
  173. package/dist/ui/components/text-input/useDoublePress.js +0 -30
  174. package/dist/ui/components/text-input/useTextInput.js +0 -245
  175. package/dist/ui/components/tool-types.js +0 -9
  176. package/dist/ui/constants/figures.js +0 -4
  177. package/dist/ui/constants/index.js +0 -3
  178. package/dist/ui/display-mode.js +0 -93
  179. package/dist/ui/display-policy.js +0 -19
  180. package/dist/ui/hooks/index.js +0 -6
  181. package/dist/ui/hooks/useCommandAutocomplete.js +0 -93
  182. package/dist/ui/hooks/useDoublePress.js +0 -37
  183. package/dist/ui/hooks/useIndicatorState.js +0 -55
  184. package/dist/ui/hooks/useInterval.js +0 -23
  185. package/dist/ui/hooks/useKeyboardShortcuts.js +0 -127
  186. package/dist/ui/hooks/useTerminalSize.js +0 -55
  187. package/dist/ui/hooks/useUnifiedMessages.js +0 -117
  188. package/dist/ui/indicator-state.js +0 -44
  189. package/dist/ui/markdown/highlight.js +0 -44
  190. package/dist/ui/markdown/index.js +0 -1460
  191. package/dist/ui/markdown/tokenizer.js +0 -24
  192. package/dist/ui/render-item.js +0 -5
  193. package/dist/ui/screens/REPL.js +0 -119
  194. package/dist/ui/screens/approval-lifecycle.js +0 -38
  195. package/dist/ui/status-line.js +0 -72
  196. package/dist/ui/theme/index.js +0 -51
  197. package/dist/ui/theme/themes/claude-dark-daltonized.js +0 -51
  198. package/dist/ui/theme/themes/claude-dark.js +0 -50
  199. package/dist/ui/theme/themes/claude-light-daltonized.js +0 -51
  200. package/dist/ui/theme/themes/claude-light.js +0 -50
  201. package/dist/ui/theme/themes/dark-accessible.js +0 -18
  202. package/dist/ui/theme/themes/dark.js +0 -49
  203. package/dist/ui/theme/themes/light-accessible.js +0 -18
  204. package/dist/ui/theme/themes/light.js +0 -49
  205. package/dist/ui/theme/types.js +0 -3
  206. package/dist/ui/theme.js +0 -142
  207. package/dist/ui/to-render-items.js +0 -145
  208. package/dist/ui/tools/AgentTool/index.js +0 -30
  209. package/dist/ui/tools/ArchitectTool/index.js +0 -31
  210. package/dist/ui/tools/AskUserTool/index.js +0 -46
  211. package/dist/ui/tools/BashTool/BashToolResultMessage.js +0 -11
  212. package/dist/ui/tools/BashTool/OutputLine.js +0 -21
  213. package/dist/ui/tools/BashTool/index.js +0 -91
  214. package/dist/ui/tools/BrowseTool/index.js +0 -43
  215. package/dist/ui/tools/BrowserTool/index.js +0 -47
  216. package/dist/ui/tools/CbmTool/index.js +0 -188
  217. package/dist/ui/tools/CheckDelegationTool/index.js +0 -46
  218. package/dist/ui/tools/CheckMessagesTool/index.js +0 -85
  219. package/dist/ui/tools/CreateQuipTool/index.js +0 -30
  220. package/dist/ui/tools/CreateSkillTool/index.js +0 -22
  221. package/dist/ui/tools/CreateToolTool/index.js +0 -31
  222. package/dist/ui/tools/DelegateRemoteTool/index.js +0 -42
  223. package/dist/ui/tools/DeployTool/index.js +0 -47
  224. package/dist/ui/tools/FffTool/index.js +0 -103
  225. package/dist/ui/tools/FileEditTool/index.js +0 -67
  226. package/dist/ui/tools/FileReadTool/index.js +0 -68
  227. package/dist/ui/tools/FileWriteTool/index.js +0 -61
  228. package/dist/ui/tools/ForkTool/index.js +0 -47
  229. package/dist/ui/tools/FrgTool/index.js +0 -96
  230. package/dist/ui/tools/GetThreadTool/index.js +0 -39
  231. package/dist/ui/tools/GlobTool/index.js +0 -50
  232. package/dist/ui/tools/GrepTool/index.js +0 -84
  233. package/dist/ui/tools/HatchArionTool/index.js +0 -36
  234. package/dist/ui/tools/LearnSkillTool/index.js +0 -22
  235. package/dist/ui/tools/LearnTool/index.js +0 -43
  236. package/dist/ui/tools/LearnToolTool/index.js +0 -22
  237. package/dist/ui/tools/ListClientsTool/index.js +0 -39
  238. package/dist/ui/tools/LspTool/index.js +0 -261
  239. package/dist/ui/tools/MCPTool/index.js +0 -33
  240. package/dist/ui/tools/ManageNetworkTool/index.js +0 -53
  241. package/dist/ui/tools/MemoryReadTool/index.js +0 -64
  242. package/dist/ui/tools/MemoryWriteTool/index.js +0 -20
  243. package/dist/ui/tools/NotebookEditTool/index.js +0 -33
  244. package/dist/ui/tools/NotebookReadTool/index.js +0 -25
  245. package/dist/ui/tools/OutlookReadTool/index.js +0 -66
  246. package/dist/ui/tools/OutlookReplyTool/index.js +0 -49
  247. package/dist/ui/tools/OutlookSendTool/index.js +0 -49
  248. package/dist/ui/tools/PauseDelegationTool/index.js +0 -35
  249. package/dist/ui/tools/ProbeTool/index.js +0 -121
  250. package/dist/ui/tools/ProcessTool/index.js +0 -66
  251. package/dist/ui/tools/QuestListTool/index.js +0 -46
  252. package/dist/ui/tools/QuestReportTool/index.js +0 -49
  253. package/dist/ui/tools/QuestUpdateTool/index.js +0 -87
  254. package/dist/ui/tools/QuipCommentTool/index.js +0 -69
  255. package/dist/ui/tools/QuipReadTool/index.js +0 -71
  256. package/dist/ui/tools/RestArionTool/index.js +0 -32
  257. package/dist/ui/tools/RestartTool/index.js +0 -35
  258. package/dist/ui/tools/ResumeDelegationTool/index.js +0 -35
  259. package/dist/ui/tools/RetireArionTool/index.js +0 -32
  260. package/dist/ui/tools/RgTool/index.js +0 -73
  261. package/dist/ui/tools/SearchKnowledgeTool/index.js +0 -43
  262. package/dist/ui/tools/SearchMessagesTool/index.js +0 -43
  263. package/dist/ui/tools/SelfDiagnoseTool/index.js +0 -61
  264. package/dist/ui/tools/SendMessageTool/index.js +0 -45
  265. package/dist/ui/tools/SerenaTool/index.js +0 -124
  266. package/dist/ui/tools/SessionHistoryTool/index.js +0 -52
  267. package/dist/ui/tools/SgTool/index.js +0 -80
  268. package/dist/ui/tools/SlackReactTool/index.js +0 -41
  269. package/dist/ui/tools/SlackReadTool/index.js +0 -48
  270. package/dist/ui/tools/SlackSendTool/index.js +0 -45
  271. package/dist/ui/tools/SpawnWorkerTool/index.js +0 -33
  272. package/dist/ui/tools/StickerRequestTool/index.js +0 -19
  273. package/dist/ui/tools/ThinkTool/index.js +0 -17
  274. package/dist/ui/tools/UgTool/index.js +0 -108
  275. package/dist/ui/tools/UseSkillTool/index.js +0 -22
  276. package/dist/ui/tools/WakeArionTool/index.js +0 -32
  277. package/dist/ui/tools/WebFetchTool/index.js +0 -56
  278. package/dist/ui/tools/WebSearchTool/index.js +0 -44
  279. package/dist/ui/tools/lsTool/index.js +0 -58
  280. package/dist/ui/tools/registry.js +0 -197
  281. package/dist/ui/tools/tool-renderer.js +0 -11
  282. package/dist/ui/tools/truncation.js +0 -35
  283. package/dist/ui/types/anthropic.js +0 -4
  284. package/dist/ui/types/index.js +0 -2
  285. package/dist/ui/types/message.js +0 -3
  286. package/dist/ui/types/tool.js +0 -4
  287. package/dist/ui/utils/array.js +0 -4
  288. package/dist/ui/utils/cursor.js +0 -131
  289. package/dist/ui/utils/diff.js +0 -120
  290. package/dist/ui/utils/format.js +0 -42
  291. package/dist/ui/utils/fuzzy.js +0 -59
  292. package/dist/ui/utils/index.js +0 -11
  293. package/dist/ui/utils/keys.js +0 -8
  294. package/dist/ui/utils/patch.js +0 -17
  295. package/dist/ui/utils/risk.js +0 -114
  296. package/dist/ui/utils/terminal-image.js +0 -70
  297. package/dist/ui/utils/validation.js +0 -48
  298. package/dist/ui/verb-pairs.js +0 -248
  299. package/dist/ui.js +0 -131
  300. package/src/entrypoints/command-mode.ts +0 -5
  301. package/src/entrypoints/daemon.ts +0 -54
  302. package/src/entrypoints/headless-stdio.ts +0 -27
  303. package/src/entrypoints/interactive.ts +0 -112
  304. package/src/main.ts +0 -44
  305. package/src/runtime/configure-bun-sqlite.ts +0 -3
  306. package/src/runtime/crash-handlers.ts +0 -128
  307. package/src/runtime/interactive-invocation.test.ts +0 -42
  308. package/src/runtime/interactive-invocation.ts +0 -51
  309. package/src/runtime/internal-mode.test.ts +0 -19
  310. package/src/runtime/internal-mode.ts +0 -24
  311. package/src/runtime/launch-spec.test.ts +0 -26
  312. package/src/runtime/launch-spec.ts +0 -84
  313. package/src/runtime/owner-lease.ts +0 -52
  314. package/src/runtime/public-mode.test.ts +0 -18
  315. package/src/runtime/public-mode.ts +0 -19
  316. package/src/runtime/run-internal-mode.ts +0 -19
  317. package/src/runtime/runtime-kind.test.ts +0 -23
  318. package/src/runtime/runtime-kind.ts +0 -41
  319. package/src/runtime/spawn-aria.ts +0 -62
@@ -1,188 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
- import { Box, Text } from "ink";
3
- import { FallbackToolUseRejectedMessage } from "../../components/FallbackToolUseRejectedMessage.js";
4
- import { getTheme } from "../../theme/index.js";
5
- function isContextOutput(o) {
6
- if (!o || typeof o !== "object")
7
- return false;
8
- const obj = o;
9
- return "definition" in obj || "callers" in obj || "callees" in obj;
10
- }
11
- /** Get icon/prefix for a symbol label (Function, Class, Method, etc.) */
12
- function getLabelIcon(label) {
13
- switch (label?.toLowerCase()) {
14
- case "function":
15
- return "𝑓 ";
16
- case "class":
17
- return "𝐶 ";
18
- case "method":
19
- return "𝑚 ";
20
- case "interface":
21
- return "𝐼 ";
22
- case "enum":
23
- return "𝐸 ";
24
- case "type":
25
- return "𝑇 ";
26
- case "module":
27
- return "📦 ";
28
- case "file":
29
- return "📄 ";
30
- default:
31
- return "• ";
32
- }
33
- }
34
- /** Format a single symbol result */
35
- function renderSymbol(result, index, theme) {
36
- const icon = getLabelIcon(result.label);
37
- const shortPath = result.file_path
38
- ? result.file_path.length > 40
39
- ? "…" + result.file_path.slice(-37)
40
- : result.file_path
41
- : "";
42
- return (_jsxs(Box, { flexDirection: "row", paddingLeft: 4, children: [_jsx(Text, { children: icon }), _jsx(Text, { bold: true, children: result.name }), shortPath && _jsxs(Text, { color: theme.colors.textMuted, children: [" (", shortPath, ")"] })] }, index));
43
- }
44
- /** Render a call chain node (caller/callee) */
45
- function renderChainNode(node, arrow, index, theme) {
46
- return (_jsxs(Box, { flexDirection: "row", paddingLeft: 4, children: [_jsxs(Text, { color: theme.colors.textMuted, children: [arrow, " "] }), _jsx(Text, { children: node.name }), node.file && _jsxs(Text, { color: theme.colors.textMuted, children: [" (", node.file, ")"] })] }, index));
47
- }
48
- /** Check if output matches search shape */
49
- function isSearchOutput(output) {
50
- if (!output || typeof output !== "object")
51
- return false;
52
- const o = output;
53
- return Array.isArray(o.results);
54
- }
55
- /** Check if output matches trace/call-chain shape */
56
- function isCallChainOutput(output) {
57
- if (!output || typeof output !== "object")
58
- return false;
59
- const o = output;
60
- return Array.isArray(o.inbound) || Array.isArray(o.outbound) || !!o.node;
61
- }
62
- /** Check if output matches impact shape */
63
- function isImpactOutput(output) {
64
- if (!output || typeof output !== "object")
65
- return false;
66
- const o = output;
67
- return Array.isArray(o.affected);
68
- }
69
- /** Check if output matches architecture shape */
70
- function isArchitectureOutput(output) {
71
- if (!output || typeof output !== "object")
72
- return false;
73
- const o = output;
74
- return Array.isArray(o.components);
75
- }
76
- /** Check if output matches status shape */
77
- function isStatusOutput(output) {
78
- if (!output || typeof output !== "object")
79
- return false;
80
- const o = output;
81
- return typeof o.status === "string";
82
- }
83
- export const CbmToolRenderers = {
84
- displayName() {
85
- return "Code Graph";
86
- },
87
- renderInput(input) {
88
- const action = input.action || "unknown";
89
- const keyParams = [];
90
- if (input.name) {
91
- keyParams.push(`"${input.name}"`);
92
- }
93
- if (input.file) {
94
- keyParams.push(`file: ${input.file}`);
95
- }
96
- if (input.path) {
97
- keyParams.push(`path: ${input.path}`);
98
- }
99
- if (input.project) {
100
- keyParams.push(`project: ${input.project}`);
101
- }
102
- if (input.query) {
103
- keyParams.push(`query: "${input.query}"`);
104
- }
105
- if (input.depth) {
106
- keyParams.push(`depth: ${input.depth}`);
107
- }
108
- if (input.direction) {
109
- keyParams.push(`dir: ${input.direction}`);
110
- }
111
- const params = keyParams.length > 0 ? ` ${keyParams.join(" ")}` : "";
112
- return `${action}${params}`;
113
- },
114
- renderRejection() {
115
- return _jsx(FallbackToolUseRejectedMessage, {});
116
- },
117
- renderOutput(output, opts, input) {
118
- const theme = getTheme();
119
- const action = input?.action || "query";
120
- // Handle null/undefined
121
- if (!output) {
122
- return (_jsx(Box, { justifyContent: "space-between", overflowX: "hidden", width: "100%", children: _jsx(Box, { flexDirection: "row", children: _jsx(Text, { color: theme.colors.textMuted, children: "(No results)" }) }) }));
123
- }
124
- // Handle string output (raw or plain text)
125
- if (typeof output === "string") {
126
- const text = output.length > 100 ? output.slice(0, 97) + "…" : output;
127
- return (_jsx(Box, { justifyContent: "space-between", overflowX: "hidden", width: "100%", children: _jsx(Box, { flexDirection: "row", children: _jsxs(Text, { color: theme.colors.textMuted, children: [action, ": ", text] }) }) }));
128
- }
129
- // Handle { raw: string }
130
- if ("raw" in output && typeof output.raw === "string") {
131
- const text = output.raw.length > 100 ? output.raw.slice(0, 97) + "…" : output.raw;
132
- return (_jsx(Box, { justifyContent: "space-between", overflowX: "hidden", width: "100%", children: _jsx(Box, { flexDirection: "row", children: _jsxs(Text, { color: theme.colors.textMuted, children: [action, ": ", text] }) }) }));
133
- }
134
- // Handle search results
135
- if (isSearchOutput(output)) {
136
- const results = output.results || [];
137
- const total = output.total ?? results.length;
138
- const maxResults = 3;
139
- const displayResults = results.slice(0, maxResults);
140
- return (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Box, { flexDirection: "row", children: [_jsx(Text, { bold: true, children: total }), _jsxs(Text, { children: [" ", total === 1 ? "symbol" : "symbols", " found"] })] }), displayResults.map((result, i) => renderSymbol(result, i, theme)), results.length > maxResults && (_jsx(Box, { flexDirection: "row", paddingLeft: 4, children: _jsxs(Text, { color: theme.colors.textMuted, children: ["+", results.length - maxResults, " more"] }) }))] }));
141
- }
142
- // Handle call chain / trace results
143
- if (isCallChainOutput(output)) {
144
- const inbound = output.inbound || [];
145
- const outbound = output.outbound || [];
146
- const maxChain = 3;
147
- const displayInbound = inbound.slice(0, maxChain);
148
- const displayOutbound = outbound.slice(0, maxChain);
149
- return (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Box, { flexDirection: "row", children: [_jsx(Text, { children: "Call chain: " }), _jsx(Text, { bold: true, children: inbound.length }), _jsx(Text, { children: " inbound, " }), _jsx(Text, { bold: true, children: outbound.length }), _jsx(Text, { children: " outbound" })] }), displayInbound.length > 0 && (_jsxs(_Fragment, { children: [_jsx(Box, { flexDirection: "row", paddingLeft: 2, children: _jsx(Text, { color: theme.colors.textMuted, children: "Callers:" }) }), displayInbound.map((node, i) => renderChainNode(node, "←", i, theme)), inbound.length > maxChain && (_jsx(Box, { flexDirection: "row", paddingLeft: 4, children: _jsxs(Text, { color: theme.colors.textMuted, children: ["+", inbound.length - maxChain, " more"] }) }))] })), displayOutbound.length > 0 && (_jsxs(_Fragment, { children: [_jsx(Box, { flexDirection: "row", paddingLeft: 2, children: _jsx(Text, { color: theme.colors.textMuted, children: "Callees:" }) }), displayOutbound.map((node, i) => renderChainNode(node, "→", i, theme)), outbound.length > maxChain && (_jsx(Box, { flexDirection: "row", paddingLeft: 4, children: _jsxs(Text, { color: theme.colors.textMuted, children: ["+", outbound.length - maxChain, " more"] }) }))] }))] }));
150
- }
151
- // Handle impact analysis results
152
- if (isImpactOutput(output)) {
153
- const affected = output.affected || [];
154
- const maxResults = 3;
155
- const displayAffected = affected.slice(0, maxResults);
156
- return (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Box, { flexDirection: "row", children: [_jsx(Text, { bold: true, children: affected.length }), _jsxs(Text, { children: [" ", affected.length === 1 ? "symbol" : "symbols", " affected"] }), output.depth && (_jsxs(_Fragment, { children: [_jsx(Text, { color: theme.colors.textMuted, children: " (depth: " }), _jsx(Text, { color: theme.colors.textMuted, children: output.depth }), _jsx(Text, { color: theme.colors.textMuted, children: ")" })] }))] }), displayAffected.map((item, i) => (_jsxs(Box, { flexDirection: "row", paddingLeft: 4, children: [_jsxs(Text, { children: ["\u2022 ", item.name] }), item.file && _jsxs(Text, { color: theme.colors.textMuted, children: [" (", item.file, ")"] })] }, i))), affected.length > maxResults && (_jsx(Box, { flexDirection: "row", paddingLeft: 4, children: _jsxs(Text, { color: theme.colors.textMuted, children: ["+", affected.length - maxResults, " more"] }) }))] }));
157
- }
158
- // Handle architecture overview
159
- if (isArchitectureOutput(output)) {
160
- const components = output.components || [];
161
- return (_jsx(Box, { flexDirection: "column", children: _jsxs(Box, { flexDirection: "row", children: [_jsx(Text, { children: "Architecture overview" }), components.length > 0 && (_jsxs(_Fragment, { children: [_jsx(Text, { color: theme.colors.textMuted, children: " (" }), _jsx(Text, { color: theme.colors.textMuted, children: components.length }), _jsx(Text, { color: theme.colors.textMuted, children: " components)" })] }))] }) }));
162
- }
163
- // Handle status output
164
- if (isStatusOutput(output)) {
165
- const hasIndex = output.status?.toLowerCase().includes("index");
166
- if (hasIndex &&
167
- typeof output.node_count === "number" &&
168
- typeof output.edge_count === "number") {
169
- return (_jsx(Box, { justifyContent: "space-between", overflowX: "hidden", width: "100%", children: _jsxs(Box, { flexDirection: "row", children: [_jsx(Text, { color: theme.colors.success, children: "Indexed: " }), _jsx(Text, { bold: true, children: output.node_count }), _jsx(Text, { children: " nodes, " }), _jsx(Text, { bold: true, children: output.edge_count }), _jsx(Text, { children: " edges" })] }) }));
170
- }
171
- else {
172
- return (_jsx(Box, { justifyContent: "space-between", overflowX: "hidden", width: "100%", children: _jsx(Box, { flexDirection: "row", children: _jsx(Text, { color: theme.colors.warning, children: "Not indexed" }) }) }));
173
- }
174
- }
175
- // Context output (definition + callers + callees)
176
- if (isContextOutput(output)) {
177
- const hasDefinition = !!output.definition;
178
- const hasCallers = Array.isArray(output.callers) && output.callers.length > 0;
179
- const hasCallees = Array.isArray(output.callees) && output.callees.length > 0;
180
- return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Box, { flexDirection: "row", children: _jsx(Text, { children: "Context 360\u00B0" }) }), hasDefinition && output.definition && (_jsxs(Box, { flexDirection: "row", paddingLeft: 4, children: [_jsx(Text, { color: theme.colors.info, children: "\uD83D\uDCCD " }), _jsx(Text, { children: output.definition.name || "definition" })] })), hasCallers && output.callers && (_jsxs(Box, { flexDirection: "row", paddingLeft: 4, children: [_jsx(Text, { color: theme.colors.textMuted, children: "\u2190 " }), _jsxs(Text, { children: [output.callers.length, " callers"] })] })), hasCallees && output.callees && (_jsxs(Box, { flexDirection: "row", paddingLeft: 4, children: [_jsx(Text, { color: theme.colors.textMuted, children: "\u2192 " }), _jsxs(Text, { children: [output.callees.length, " callees"] })] }))] }));
181
- }
182
- // Fallback for unknown/opaque cbm JSON
183
- const jsonStr = JSON.stringify(output);
184
- const preview = jsonStr.length > 100 ? jsonStr.slice(0, 97) + "…" : jsonStr;
185
- return (_jsx(Box, { justifyContent: "space-between", overflowX: "hidden", width: "100%", children: _jsx(Box, { flexDirection: "row", children: _jsxs(Text, { color: theme.colors.textMuted, children: [action, ": ", preview] }) }) }));
186
- },
187
- };
188
- //# sourceMappingURL=index.js.map
@@ -1,46 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { Box, Text } from "ink";
3
- import { FallbackToolUseRejectedMessage } from "../../components/FallbackToolUseRejectedMessage.js";
4
- import { getTheme } from "../../theme/index.js";
5
- import { capLine, safeFallbackText } from "../truncation.js";
6
- function statusColor(status, theme) {
7
- switch (status) {
8
- case "completed":
9
- return theme.colors.success;
10
- case "running":
11
- return theme.colors.info;
12
- case "failed":
13
- return theme.colors.error;
14
- default:
15
- return theme.colors.textMuted;
16
- }
17
- }
18
- export const CheckDelegationToolRenderers = {
19
- displayName() {
20
- return "Check Delegation";
21
- },
22
- renderInput(input, _opts) {
23
- if (input.id) {
24
- return `${input.id}`;
25
- }
26
- return Object.entries(input)
27
- .map(([key, value]) => `${key}: ${JSON.stringify(value)}`)
28
- .join(", ");
29
- },
30
- renderRejection() {
31
- return _jsx(FallbackToolUseRejectedMessage, {});
32
- },
33
- renderOutput(output, _opts) {
34
- const theme = getTheme();
35
- if (!output) {
36
- return (_jsx(Box, { justifyContent: "space-between", overflowX: "hidden", width: "100%", children: _jsx(Box, { flexDirection: "row", children: _jsx(Text, { color: theme.colors.textMuted, children: "(No content)" }) }) }));
37
- }
38
- if (typeof output === "string") {
39
- return (_jsx(Box, { justifyContent: "space-between", overflowX: "hidden", width: "100%", children: _jsx(Box, { flexDirection: "row", children: _jsx(Text, { children: safeFallbackText(output) }) }) }));
40
- }
41
- const { id, status, result, error } = output;
42
- const color = statusColor(status, theme);
43
- return (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Box, { flexDirection: "row", children: [id && _jsxs(Text, { bold: true, children: [id, " "] }), _jsx(Text, { color: color, children: status || "unknown" })] }), status === "completed" && result && (_jsx(Box, { flexDirection: "row", paddingLeft: 4, children: _jsx(Text, { color: theme.colors.textMuted, children: capLine(result) }) })), status === "failed" && error && (_jsx(Box, { flexDirection: "row", paddingLeft: 4, children: _jsx(Text, { color: theme.colors.error, children: capLine(error) }) }))] }));
44
- },
45
- };
46
- //# sourceMappingURL=index.js.map
@@ -1,85 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { Box, Text } from "ink";
3
- import { FallbackToolUseRejectedMessage } from "../../components/FallbackToolUseRejectedMessage.js";
4
- import { applyMarkdown } from "../../markdown/index.js";
5
- import { useToolRenderLayout } from "../../components/ToolRenderLayoutContext.js";
6
- import { getTheme } from "../../theme/index.js";
7
- function resolveFrom(msg) {
8
- // AriaMessage.sender is an AriaAddress object { id, name, type }
9
- const s = msg.sender;
10
- if (s && typeof s === "object" && "name" in s)
11
- return String(s.name);
12
- if (typeof s === "string")
13
- return s;
14
- if (typeof msg.from === "string")
15
- return msg.from;
16
- return "Unknown";
17
- }
18
- function IncomingMessage({ msg }) {
19
- const { contentWidth } = useToolRenderLayout();
20
- const from = resolveFrom(msg);
21
- const body = String(msg.content ?? msg.text ?? "");
22
- const rendered = applyMarkdown(body, { width: contentWidth, mode: "final" });
23
- const BLACK_CIRCLE = process.platform === "darwin" ? "\u23FA" : "\u25CF";
24
- return (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Box, { flexDirection: "row", marginBottom: 1, children: [_jsx(Text, { children: "\uD83D\uDCEC " }), _jsx(Text, { bold: true, color: "cyan", children: from })] }), _jsxs(Box, { flexDirection: "row", children: [_jsx(Box, { minWidth: 2, children: _jsx(Text, { color: "cyan", children: BLACK_CIRCLE }) }), _jsx(Box, { flexShrink: 1, width: contentWidth, children: _jsx(Text, { children: rendered }) })] })] }));
25
- }
26
- function MessagePreview({ msg, verbose }) {
27
- const theme = getTheme();
28
- const from = resolveFrom(msg);
29
- const msgType = String(msg.type ?? "quest");
30
- const content = String(msg.content ?? msg.text ?? "");
31
- const display = verbose || content.length <= 80 ? content : content.substring(0, 80) + "…";
32
- return (_jsxs(Box, { flexDirection: "row", children: [_jsx(Text, { bold: true, children: from }), _jsx(Text, { children: " " }), _jsxs(Text, { color: theme.colors.textMuted, children: ["[", msgType, "]"] }), _jsx(Text, { children: " " }), _jsx(Text, { children: display })] }));
33
- }
34
- function extractMessages(output) {
35
- if (output == null)
36
- return [];
37
- let obj = output;
38
- if (typeof output === "string") {
39
- try {
40
- obj = JSON.parse(output);
41
- }
42
- catch {
43
- return [];
44
- }
45
- }
46
- const data = (obj.data ?? obj);
47
- return Array.isArray(data.messages) ? data.messages : [];
48
- }
49
- export const CheckMessagesToolRenderers = {
50
- displayName() {
51
- return "Inbox";
52
- },
53
- renderInput(input) {
54
- const from = input?.from;
55
- const type = input?.type;
56
- const unreadOnly = input?.unreadOnly;
57
- const parts = [];
58
- if (from)
59
- parts.push(`from: ${String(from)}`);
60
- if (type)
61
- parts.push(`type: [${String(type)}]`);
62
- if (unreadOnly === true)
63
- parts.push("unread only");
64
- return parts.length > 0 ? parts.join(" ") : "Check messages";
65
- },
66
- renderRejection() {
67
- return _jsx(FallbackToolUseRejectedMessage, {});
68
- },
69
- renderOutput(output, { verbose } = {}) {
70
- const theme = getTheme();
71
- const messages = extractMessages(output);
72
- if (messages.length === 0) {
73
- return _jsx(Text, { color: theme.colors.textMuted, children: "No messages" });
74
- }
75
- // Single incoming message — render like an arion message (full, beautiful).
76
- const first = messages[0];
77
- if (messages.length === 1 && first && first.type === "incoming") {
78
- return _jsx(IncomingMessage, { msg: first });
79
- }
80
- // Multiple messages — compact list with previews.
81
- const count = messages.length;
82
- return (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Text, { children: [count, " message", count !== 1 ? "s" : ""] }), _jsx(Box, { flexDirection: "column", marginTop: 1, paddingLeft: 2, children: messages.map((msg, idx) => (_jsx(MessagePreview, { msg: msg, verbose: verbose ?? false }, idx))) })] }));
83
- },
84
- };
85
- //# sourceMappingURL=index.js.map
@@ -1,30 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { Box, Text } from "ink";
3
- import { FallbackToolUseRejectedMessage } from "../../components/FallbackToolUseRejectedMessage.js";
4
- import { getTheme } from "../../theme/index.js";
5
- export const CreateQuipToolRenderers = {
6
- displayName() {
7
- return "Quip Create";
8
- },
9
- renderInput(input, { verbose } = {}) {
10
- const title = typeof input.title === "string" ? input.title : "";
11
- return (_jsxs(Box, { flexDirection: "row", children: [_jsx(Text, { children: title ? `"${title.slice(0, 50)}"` : "new document" }), verbose && typeof input.folderId === "string" && (_jsxs(Text, { color: getTheme().colors.textMuted, children: [" in ", input.folderId] }))] }));
12
- },
13
- renderRejection() {
14
- return _jsx(FallbackToolUseRejectedMessage, {});
15
- },
16
- renderOutput(output, { verbose } = {}) {
17
- const theme = getTheme();
18
- if (!output || typeof output !== "object") {
19
- return (_jsx(Text, { color: theme.colors.textMuted, children: typeof output === "string" ? output : "No result" }));
20
- }
21
- const obj = output;
22
- const ok = obj.success !== false;
23
- const msg = typeof obj.message === "string" ? obj.message : "";
24
- if (!ok) {
25
- return _jsx(Text, { color: theme.colors.error, children: msg || "Failed to create document" });
26
- }
27
- return (_jsxs(Box, { flexDirection: "row", children: [_jsx(Text, { color: theme.colors.success, children: "\u2713 Document created" }), msg && _jsxs(Text, { color: theme.colors.textMuted, children: [" \u2014 ", msg.slice(0, 60)] })] }));
28
- },
29
- };
30
- //# sourceMappingURL=index.js.map
@@ -1,22 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { Box, Text } from "ink";
3
- import { FallbackToolUseRejectedMessage } from "../../components/FallbackToolUseRejectedMessage.js";
4
- export const CreateSkillToolRenderers = {
5
- displayName() {
6
- return "Create Skill";
7
- },
8
- renderInput(input, _opts) {
9
- return input.name ?? "skill";
10
- },
11
- renderRejection() {
12
- return _jsx(FallbackToolUseRejectedMessage, {});
13
- },
14
- renderOutput(output) {
15
- if (!output || typeof output !== "object") {
16
- return (_jsx(Box, { justifyContent: "space-between", overflowX: "hidden", width: "100%", children: _jsx(Box, { flexDirection: "row", children: _jsx(Text, { children: "(No content)" }) }) }));
17
- }
18
- const name = output.name ?? "unknown";
19
- return (_jsx(Box, { justifyContent: "space-between", overflowX: "hidden", width: "100%", children: _jsx(Box, { flexDirection: "row", children: _jsxs(Text, { children: ["Created skill ", name] }) }) }));
20
- },
21
- };
22
- //# sourceMappingURL=index.js.map
@@ -1,31 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { Box, Text } from "ink";
3
- import { basename } from "path";
4
- import { FallbackToolUseRejectedMessage } from "../../components/FallbackToolUseRejectedMessage.js";
5
- import { safeFallbackText } from "../truncation.js";
6
- export const CreateToolToolRenderers = {
7
- displayName() {
8
- return "Create Tool";
9
- },
10
- renderInput(input, _opts) {
11
- return input.name ?? "tool";
12
- },
13
- renderRejection() {
14
- return _jsx(FallbackToolUseRejectedMessage, {});
15
- },
16
- renderOutput(output) {
17
- // Handle null/undefined -- output may be missing name
18
- if (output == null) {
19
- return (_jsx(Box, { justifyContent: "space-between", overflowX: "hidden", width: "100%", children: _jsx(Box, { flexDirection: "row", children: _jsx(Text, { children: "Created tool" }) }) }));
20
- }
21
- // Handle string
22
- if (typeof output === "string") {
23
- return (_jsx(Box, { justifyContent: "space-between", overflowX: "hidden", width: "100%", children: _jsx(Box, { flexDirection: "row", children: _jsx(Text, { children: safeFallbackText(output) }) }) }));
24
- }
25
- const obj = output;
26
- const name = obj.name ??
27
- (typeof obj.scriptPath === "string" ? basename(obj.scriptPath) : "unknown");
28
- return (_jsx(Box, { justifyContent: "space-between", overflowX: "hidden", width: "100%", children: _jsx(Box, { flexDirection: "row", children: _jsxs(Text, { children: ["Created tool ", name] }) }) }));
29
- },
30
- };
31
- //# sourceMappingURL=index.js.map
@@ -1,42 +0,0 @@
1
- import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { Box, Text } from "ink";
3
- import { FallbackToolUseRejectedMessage } from "../../components/FallbackToolUseRejectedMessage.js";
4
- import { getTheme } from "../../theme/index.js";
5
- import { safeFallbackText } from "../truncation.js";
6
- export const DelegateRemoteToolRenderers = {
7
- displayName() {
8
- return "Remote Delegate";
9
- },
10
- renderInput(input, _opts = {}) {
11
- const parts = [];
12
- if (input.node_id) {
13
- parts.push(input.node_id);
14
- }
15
- if (input.task) {
16
- const taskPreview = input.task.length > 40 ? `${input.task.slice(0, 40)}...` : input.task;
17
- parts.push(taskPreview);
18
- }
19
- return parts.length > 0
20
- ? parts.join(": ")
21
- : Object.entries(input)
22
- .map(([key, value]) => `${key}: ${JSON.stringify(value)}`)
23
- .join(", ");
24
- },
25
- renderRejection() {
26
- return _jsx(FallbackToolUseRejectedMessage, {});
27
- },
28
- renderOutput(output, _opts = {}) {
29
- const theme = getTheme();
30
- if (!output) {
31
- return (_jsx(Box, { justifyContent: "space-between", overflowX: "hidden", width: "100%", children: _jsx(Box, { flexDirection: "row", children: _jsx(Text, { color: theme.colors.textMuted, children: "(No content)" }) }) }));
32
- }
33
- if (typeof output === "string") {
34
- return (_jsx(Box, { justifyContent: "space-between", overflowX: "hidden", width: "100%", children: _jsx(Box, { flexDirection: "row", children: _jsx(Text, { children: safeFallbackText(output) }) }) }));
35
- }
36
- if (output.error) {
37
- return (_jsx(Box, { justifyContent: "space-between", overflowX: "hidden", width: "100%", children: _jsx(Box, { flexDirection: "row", children: _jsx(Text, { color: theme.colors.error, children: output.error }) }) }));
38
- }
39
- return (_jsx(Box, { justifyContent: "space-between", overflowX: "hidden", width: "100%", children: _jsxs(Box, { flexDirection: "row", children: [_jsx(Text, { color: theme.colors.success, children: "Delegated to node" }), output.quest_id && (_jsxs(_Fragment, { children: [_jsx(Text, { children: " " }), _jsx(Text, { color: theme.colors.textMuted, children: output.quest_id })] }))] }) }));
40
- },
41
- };
42
- //# sourceMappingURL=index.js.map
@@ -1,47 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { Box, Text } from "ink";
3
- import { FallbackToolUseRejectedMessage } from "../../components/FallbackToolUseRejectedMessage.js";
4
- import { getTheme } from "../../theme/index.js";
5
- import { safeFallbackText } from "../truncation.js";
6
- export const DeployToolRenderers = {
7
- displayName() {
8
- return "Deploy";
9
- },
10
- renderInput(input, _opts = {}) {
11
- const parts = [];
12
- if (input.target) {
13
- parts.push(input.target);
14
- }
15
- if (input.branch) {
16
- parts.push(`(${input.branch})`);
17
- }
18
- return parts.length > 0
19
- ? parts.join(" ")
20
- : Object.entries(input)
21
- .map(([key, value]) => `${key}: ${JSON.stringify(value)}`)
22
- .join(", ");
23
- },
24
- renderRejection() {
25
- return _jsx(FallbackToolUseRejectedMessage, {});
26
- },
27
- renderOutput(output, _opts = {}) {
28
- const theme = getTheme();
29
- if (!output) {
30
- return (_jsx(Box, { justifyContent: "space-between", overflowX: "hidden", width: "100%", children: _jsx(Box, { flexDirection: "row", children: _jsx(Text, { color: theme.colors.textMuted, children: "(No content)" }) }) }));
31
- }
32
- if (typeof output === "string") {
33
- return (_jsx(Box, { justifyContent: "space-between", overflowX: "hidden", width: "100%", children: _jsx(Box, { flexDirection: "row", children: _jsx(Text, { children: safeFallbackText(output) }) }) }));
34
- }
35
- if (output.error) {
36
- return (_jsx(Box, { justifyContent: "space-between", overflowX: "hidden", width: "100%", children: _jsx(Box, { flexDirection: "row", children: _jsx(Text, { color: theme.colors.error, children: output.error }) }) }));
37
- }
38
- if (output.host && output.port) {
39
- return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Box, { flexDirection: "row", children: _jsxs(Text, { color: theme.colors.success, children: ["Deployed to ", output.host, ":", output.port] }) }), output.fingerprint && (_jsx(Box, { flexDirection: "row", children: _jsx(Text, { color: theme.colors.textMuted, children: output.fingerprint }) }))] }));
40
- }
41
- if (output.message) {
42
- return (_jsx(Box, { justifyContent: "space-between", overflowX: "hidden", width: "100%", children: _jsx(Box, { flexDirection: "row", children: _jsx(Text, { children: output.message }) }) }));
43
- }
44
- return (_jsx(Box, { justifyContent: "space-between", overflowX: "hidden", width: "100%", children: _jsx(Box, { flexDirection: "row", children: _jsx(Text, { color: theme.colors.success, children: "Deployed" }) }) }));
45
- },
46
- };
47
- //# sourceMappingURL=index.js.map
@@ -1,103 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { Box, Text } from "ink";
3
- import { relative } from "path";
4
- import { FallbackToolUseRejectedMessage } from "../../components/FallbackToolUseRejectedMessage.js";
5
- import { getTheme } from "../../theme/index.js";
6
- export const FffToolRenderers = {
7
- displayName() {
8
- return "Fuzzy Find";
9
- },
10
- renderInput(input, { verbose }) {
11
- const { action, query, patterns, constraints, path } = input;
12
- if (action === "grep" && query) {
13
- let msg = `grep "${query}"`;
14
- if (constraints)
15
- msg += ` [${constraints}]`;
16
- if (path && verbose)
17
- msg += ` in ${path}`;
18
- return msg;
19
- }
20
- if (action === "find_files") {
21
- let msg = `find_files${query ? ` "${query}"` : ""}`;
22
- if (constraints)
23
- msg += ` [${constraints}]`;
24
- if (path && verbose)
25
- msg += ` in ${path}`;
26
- return msg;
27
- }
28
- if (action === "multi_grep" && patterns) {
29
- const patternList = patterns.map((p) => `"${p}"`).join(" ");
30
- let msg = `multi_grep ${patternList}`;
31
- if (constraints)
32
- msg += ` [${constraints}]`;
33
- if (path && verbose)
34
- msg += ` in ${path}`;
35
- return msg;
36
- }
37
- return action;
38
- },
39
- renderRejection() {
40
- return _jsx(FallbackToolUseRejectedMessage, {});
41
- },
42
- renderOutput(output) {
43
- const theme = getTheme();
44
- // Handle null/undefined
45
- if (output == null) {
46
- return _jsx(Text, { color: theme.colors.textMuted, children: "No results" });
47
- }
48
- // Handle string output
49
- if (typeof output === "string") {
50
- const lines = output.trim().split("\n");
51
- return _jsx(Text, { color: theme.colors.textMuted, children: lines[0] });
52
- }
53
- // Handle object output
54
- if (typeof output === "object" && !Array.isArray(output)) {
55
- const obj = output;
56
- // grep/multi_grep: { results: [...] }
57
- if (Array.isArray(obj.results)) {
58
- const results = obj.results;
59
- if (results.length === 0) {
60
- return _jsx(Text, { color: theme.colors.textMuted, children: "No matches" });
61
- }
62
- // Count matches per file
63
- const fileCounts = new Map();
64
- for (const result of results) {
65
- const file = typeof result.file === "string" ? result.file : "unknown";
66
- fileCounts.set(file, (fileCounts.get(file) || 0) + 1);
67
- }
68
- const numFiles = fileCounts.size;
69
- const totalMatches = results.length;
70
- // Show summary with up to 3 files
71
- const fileEntries = Array.from(fileCounts.entries()).slice(0, 3);
72
- const relativePaths = fileEntries.map(([file]) => relative(process.cwd(), file));
73
- return (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Box, { flexDirection: "row", children: [_jsx(Text, { children: "Found " }), _jsx(Text, { bold: true, children: totalMatches }), _jsxs(Text, { children: [" ", totalMatches === 1 ? "match" : "matches", " in "] }), _jsx(Text, { bold: true, children: numFiles }), _jsxs(Text, { children: [" ", numFiles === 1 ? "file" : "files"] })] }), fileEntries.length > 0 && (_jsxs(Box, { flexDirection: "column", marginLeft: 2, children: [fileEntries.map(([file, count], idx) => (_jsxs(Box, { flexDirection: "row", children: [_jsxs(Text, { color: theme.colors.textMuted, children: [relativePaths[idx], ": "] }), _jsx(Text, { color: theme.colors.textMuted, bold: true, children: count })] }, idx))), numFiles > 3 && (_jsxs(Text, { color: theme.colors.textMuted, children: ["... and ", numFiles - 3, " more"] }))] }))] }));
74
- }
75
- // find_files: { files: [...] }
76
- if (Array.isArray(obj.files)) {
77
- const files = obj.files;
78
- if (files.length === 0) {
79
- return _jsx(Text, { color: theme.colors.textMuted, children: "No files found" });
80
- }
81
- const relativePaths = files.slice(0, 5).map((f) => relative(process.cwd(), f));
82
- return (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Box, { flexDirection: "row", children: [_jsx(Text, { children: "Found " }), _jsx(Text, { bold: true, children: files.length }), _jsxs(Text, { children: [" ", files.length === 1 ? "file" : "files"] })] }), _jsxs(Box, { flexDirection: "column", marginLeft: 2, children: [relativePaths.map((path, idx) => (_jsx(Text, { color: theme.colors.textMuted, children: path }, idx))), files.length > 5 && (_jsxs(Text, { color: theme.colors.textMuted, children: ["... and ", files.length - 5, " more"] }))] })] }));
83
- }
84
- }
85
- // Handle array output (direct file list)
86
- if (Array.isArray(output)) {
87
- if (output.length === 0) {
88
- return _jsx(Text, { color: theme.colors.textMuted, children: "No results" });
89
- }
90
- // If array of strings, treat as file list
91
- if (typeof output[0] === "string") {
92
- const files = output;
93
- const relativePaths = files.slice(0, 5).map((f) => relative(process.cwd(), f));
94
- return (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Box, { flexDirection: "row", children: [_jsx(Text, { children: "Found " }), _jsx(Text, { bold: true, children: files.length }), _jsxs(Text, { children: [" ", files.length === 1 ? "file" : "files"] })] }), _jsxs(Box, { flexDirection: "column", marginLeft: 2, children: [relativePaths.map((path, idx) => (_jsx(Text, { color: theme.colors.textMuted, children: path }, idx))), files.length > 5 && (_jsxs(Text, { color: theme.colors.textMuted, children: ["... and ", files.length - 5, " more"] }))] })] }));
95
- }
96
- // Array of objects, treat as results
97
- return (_jsxs(Box, { flexDirection: "row", children: [_jsx(Text, { children: "Found " }), _jsx(Text, { bold: true, children: output.length }), _jsxs(Text, { children: [" ", output.length === 1 ? "result" : "results"] })] }));
98
- }
99
- // Fallback
100
- return _jsx(Text, { color: theme.colors.textMuted, children: "Done" });
101
- },
102
- };
103
- //# sourceMappingURL=index.js.map