@aria-cli/cli 1.0.57 → 1.0.59

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 +799 -668
  2. package/package.json +17 -76
  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 -367
  11. package/dist/commands/definitions.js +0 -176
  12. package/dist/commands/index.js +0 -80
  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 -62
  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 -617
  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 -72
  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,35 +0,0 @@
1
- import { jsx as _jsx } 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 RestartToolRenderers = {
7
- displayName() {
8
- return "Restart";
9
- },
10
- renderInput(input, _opts = {}) {
11
- if (input.reason) {
12
- return input.reason;
13
- }
14
- return Object.entries(input)
15
- .map(([key, value]) => `${key}: ${JSON.stringify(value)}`)
16
- .join(", ");
17
- },
18
- renderRejection() {
19
- return _jsx(FallbackToolUseRejectedMessage, {});
20
- },
21
- renderOutput(output, _opts = {}) {
22
- const theme = getTheme();
23
- if (!output) {
24
- 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)" }) }) }));
25
- }
26
- if (typeof output === "string") {
27
- return (_jsx(Box, { justifyContent: "space-between", overflowX: "hidden", width: "100%", children: _jsx(Box, { flexDirection: "row", children: _jsx(Text, { children: safeFallbackText(output) }) }) }));
28
- }
29
- if (output.error) {
30
- 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 }) }) }));
31
- }
32
- return (_jsx(Box, { justifyContent: "space-between", overflowX: "hidden", width: "100%", children: _jsx(Box, { flexDirection: "row", children: _jsx(Text, { color: theme.colors.warning, children: "Restarting..." }) }) }));
33
- },
34
- };
35
- //# sourceMappingURL=index.js.map
@@ -1,35 +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 ResumeDelegationToolRenderers = {
7
- displayName() {
8
- return "Resume";
9
- },
10
- renderInput(input, _opts = {}) {
11
- if (input.id) {
12
- return input.id;
13
- }
14
- return Object.entries(input)
15
- .map(([key, value]) => `${key}: ${JSON.stringify(value)}`)
16
- .join(", ");
17
- },
18
- renderRejection() {
19
- return _jsx(FallbackToolUseRejectedMessage, {});
20
- },
21
- renderOutput(output, _opts = {}) {
22
- const theme = getTheme();
23
- if (!output) {
24
- 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)" }) }) }));
25
- }
26
- if (typeof output === "string") {
27
- return (_jsx(Box, { justifyContent: "space-between", overflowX: "hidden", width: "100%", children: _jsx(Box, { flexDirection: "row", children: _jsx(Text, { children: safeFallbackText(output) }) }) }));
28
- }
29
- if (output.error) {
30
- 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 }) }) }));
31
- }
32
- return (_jsx(Box, { justifyContent: "space-between", overflowX: "hidden", width: "100%", children: _jsxs(Box, { flexDirection: "row", children: [_jsx(Text, { color: theme.colors.success, children: "Resumed" }), output.quest_id && (_jsxs(_Fragment, { children: [_jsx(Text, { children: " " }), _jsx(Text, { color: theme.colors.textMuted, children: output.quest_id })] }))] }) }));
33
- },
34
- };
35
- //# sourceMappingURL=index.js.map
@@ -1,32 +0,0 @@
1
- import { jsx as _jsx } 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 RetireArionToolRenderers = {
6
- displayName() {
7
- return "Retire Arion";
8
- },
9
- renderInput(input, _opts) {
10
- if (input.name) {
11
- return `${input.name}`;
12
- }
13
- return Object.entries(input)
14
- .map(([key, value]) => `${key}: ${JSON.stringify(value)}`)
15
- .join(", ");
16
- },
17
- renderRejection() {
18
- return _jsx(FallbackToolUseRejectedMessage, {});
19
- },
20
- renderOutput(output, _opts) {
21
- const theme = getTheme();
22
- // Handle undefined/null output (ARIA may return undefined)
23
- if (output == null) {
24
- return (_jsx(Box, { justifyContent: "space-between", overflowX: "hidden", width: "100%", children: _jsx(Box, { flexDirection: "row", children: _jsx(Text, { color: theme.colors.warning, children: "Arion has been retired" }) }) }));
25
- }
26
- const message = typeof output === "string"
27
- ? output
28
- : output.message || `${output.name || "Arion"} has been retired`;
29
- return (_jsx(Box, { justifyContent: "space-between", overflowX: "hidden", width: "100%", children: _jsx(Box, { flexDirection: "row", children: _jsx(Text, { color: theme.colors.warning, children: message }) }) }));
30
- },
31
- };
32
- //# sourceMappingURL=index.js.map
@@ -1,73 +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
- function isCountOutput(output) {
7
- return "counts" in output && Array.isArray(output.counts);
8
- }
9
- function buildCommandPreview(input) {
10
- const parts = [];
11
- // Add pattern in quotes
12
- parts.push(`"${input.pattern}"`);
13
- // Add file_type if present
14
- if (input.file_type) {
15
- parts.push(`-t ${input.file_type}`);
16
- }
17
- // Add path if present
18
- if (input.path) {
19
- parts.push(input.path);
20
- }
21
- return parts.join(" ");
22
- }
23
- export const RgToolRenderers = {
24
- displayName() {
25
- return "Ripgrep";
26
- },
27
- renderInput(input, { verbose } = {}) {
28
- const commandPreview = buildCommandPreview(input);
29
- const extra = verbose && input.extra_args && input.extra_args.length > 0
30
- ? ` [${input.extra_args.join(" ")}]`
31
- : "";
32
- return `${commandPreview}${extra}`;
33
- },
34
- renderRejection() {
35
- return _jsx(FallbackToolUseRejectedMessage, {});
36
- },
37
- renderOutput(output) {
38
- const theme = getTheme();
39
- // Guard: handle unexpected output shapes gracefully
40
- if (!output || typeof output !== "object") {
41
- return _jsx(Text, { color: theme.colors.textMuted, children: String(output ?? "No result") });
42
- }
43
- if (!("counts" in output) && !("matches" in output)) {
44
- const msg = output.message;
45
- return (_jsx(Text, { color: theme.colors.textMuted, children: typeof msg === "string" ? msg : "Search complete" }));
46
- }
47
- // Handle count mode
48
- if (isCountOutput(output)) {
49
- const { counts, total } = output;
50
- const displayCount = Math.min(5, counts.length);
51
- const remaining = counts.length - displayCount;
52
- return (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Box, { flexDirection: "row", children: [_jsx(Text, { bold: true, children: total }), _jsx(Text, { children: " matches across " }), _jsx(Text, { bold: true, children: counts.length }), _jsx(Text, { children: " files" })] }), counts.slice(0, displayCount).map((result, i) => (_jsx(Box, { paddingLeft: 2, children: _jsxs(Text, { color: theme.colors.textMuted, children: [relative(process.cwd(), result.file), ": ", result.count] }) }, i))), remaining > 0 && (_jsx(Box, { paddingLeft: 2, children: _jsxs(Text, { color: theme.colors.textMuted, children: ["+", remaining, " more files"] }) }))] }));
53
- }
54
- // Handle normal mode
55
- const { matches } = output;
56
- if (matches.length === 0) {
57
- return (_jsx(Box, { children: _jsx(Text, { color: theme.colors.textMuted, children: "No matches found" }) }));
58
- }
59
- // Group matches by file
60
- const fileMap = new Map();
61
- for (const match of matches) {
62
- if (!fileMap.has(match.file)) {
63
- fileMap.set(match.file, []);
64
- }
65
- fileMap.get(match.file).push(match);
66
- }
67
- const filesWithMatches = Array.from(fileMap.entries());
68
- const displayFileCount = Math.min(3, filesWithMatches.length);
69
- const remainingFiles = filesWithMatches.length - displayFileCount;
70
- return (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Box, { flexDirection: "row", children: [_jsx(Text, { bold: true, children: matches.length }), _jsx(Text, { children: " matches in " }), _jsx(Text, { bold: true, children: filesWithMatches.length }), _jsx(Text, { children: " files" })] }), filesWithMatches.slice(0, displayFileCount).map(([file, fileMatches], i) => (_jsx(Box, { paddingLeft: 2, children: _jsxs(Text, { color: theme.colors.textMuted, children: [relative(process.cwd(), file), ": ", fileMatches.length] }) }, i))), remainingFiles > 0 && (_jsx(Box, { paddingLeft: 2, children: _jsxs(Text, { color: theme.colors.textMuted, children: ["+", remainingFiles, " more files"] }) }))] }));
71
- },
72
- };
73
- //# sourceMappingURL=index.js.map
@@ -1,43 +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 SearchKnowledgeToolRenderers = {
6
- displayName() {
7
- return "Search";
8
- },
9
- renderInput(input, { verbose }) {
10
- const query = input.query;
11
- if (!query) {
12
- return Object.entries(input)
13
- .filter(([, v]) => v !== undefined)
14
- .map(([k, v]) => `${k}: ${JSON.stringify(v)}`)
15
- .join(", ");
16
- }
17
- const parts = [`"${query}"`];
18
- if (verbose && input.sources?.length) {
19
- parts.push(`sources: [${input.sources.join(", ")}]`);
20
- }
21
- return parts.join(" ");
22
- },
23
- renderRejection() {
24
- return _jsx(FallbackToolUseRejectedMessage, {});
25
- },
26
- renderOutput(output) {
27
- const theme = getTheme();
28
- if (!output || typeof output === "string") {
29
- const text = typeof output === "string" ? output : "(No results)";
30
- return (_jsx(Box, { flexDirection: "row", width: "100%", children: _jsx(Text, { color: theme.colors.textMuted, children: text }) }));
31
- }
32
- const results = output.results ?? [];
33
- const platform = output.platform;
34
- const timedOutMatch = results.length === 0 ? null : null; // no extra info needed
35
- const sourceGroups = new Map();
36
- for (const r of results) {
37
- sourceGroups.set(r.source, (sourceGroups.get(r.source) ?? 0) + 1);
38
- }
39
- const sourceSummary = [...sourceGroups.entries()].map(([s, n]) => `${n} ${s}`).join(", ");
40
- return (_jsx(Box, { flexDirection: "column", children: _jsxs(Box, { flexDirection: "row", children: [_jsx(Text, { children: "Found " }), _jsxs(Text, { bold: true, children: [results.length, " "] }), _jsx(Text, { children: results.length === 1 ? "result" : "results" }), platform && (_jsxs(Text, { color: theme.colors.textMuted, children: [" ", "on ", platform.os, "/", platform.arch] })), sourceSummary && results.length > 0 && (_jsxs(Text, { color: theme.colors.textMuted, children: [" (", sourceSummary, ")"] }))] }) }));
41
- },
42
- };
43
- //# sourceMappingURL=index.js.map
@@ -1,43 +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 SearchMessagesToolRenderers = {
6
- displayName() {
7
- return "Search Messages";
8
- },
9
- renderInput(input, { verbose } = {}) {
10
- const query = String(input?.query ?? "");
11
- return query ? `"${query}"` : "Search messages";
12
- },
13
- renderRejection() {
14
- return _jsx(FallbackToolUseRejectedMessage, {});
15
- },
16
- renderOutput(output, { verbose } = {}) {
17
- const theme = getTheme();
18
- if (output == null) {
19
- return _jsx(Text, { color: theme.colors.textMuted, children: "No results" });
20
- }
21
- const obj = (output ?? {});
22
- // Extract messages/results from output.data
23
- const data = (obj.data ?? obj);
24
- const results = Array.isArray(data.messages)
25
- ? data.messages
26
- : Array.isArray(data.results)
27
- ? data.results
28
- : [];
29
- if (!results || results.length === 0) {
30
- return _jsx(Text, { color: theme.colors.textMuted, children: "No results" });
31
- }
32
- const count = results.length;
33
- const previewCount = Math.min(3, results.length);
34
- const previews = results.slice(0, previewCount);
35
- return (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Text, { children: [count, " result", count !== 1 ? "s" : ""] }), previews.length > 0 && (_jsx(Box, { flexDirection: "column", marginTop: 1, paddingLeft: 2, children: previews.map((msg, idx) => {
36
- const from = String(msg.from ?? msg.sender ?? "Unknown");
37
- const content = String(msg.content ?? msg.text ?? "");
38
- const truncated = content.length > 40 ? content.substring(0, 40) + "…" : content;
39
- return (_jsxs(Box, { flexDirection: "row", children: [_jsx(Text, { bold: true, children: from }), _jsx(Text, { children: " " }), _jsx(Text, { color: theme.colors.textMuted, children: truncated })] }, idx));
40
- }) })), results.length > previewCount && (_jsx(Box, { marginTop: 1, paddingLeft: 2, children: _jsxs(Text, { color: theme.colors.textMuted, children: ["... and ", results.length - previewCount, " more"] }) }))] }));
41
- },
42
- };
43
- //# sourceMappingURL=index.js.map
@@ -1,61 +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
- const MAX_DIAG_ITEMS = 20;
6
- function formatUptime(s) {
7
- if (s < 60)
8
- return `${s}s`;
9
- if (s < 3600)
10
- return `${Math.floor(s / 60)}m`;
11
- if (s < 86400)
12
- return `${Math.floor(s / 3600)}h ${Math.floor((s % 3600) / 60)}m`;
13
- return `${Math.floor(s / 86400)}d`;
14
- }
15
- export const SelfDiagnoseToolRenderers = {
16
- displayName() {
17
- return "Self Diagnose";
18
- },
19
- renderInput(input) {
20
- const parts = [];
21
- if (input.focus)
22
- parts.push(`focus: ${input.focus}`);
23
- if (input.sections?.length)
24
- parts.push(`${input.sections.length} sections`);
25
- else
26
- parts.push("all sections");
27
- return parts.join(", ");
28
- },
29
- renderRejection() {
30
- return _jsx(FallbackToolUseRejectedMessage, {});
31
- },
32
- renderOutput(output, { verbose }) {
33
- if (!output || typeof output !== "object")
34
- return null;
35
- const result = output;
36
- const meta = result._meta;
37
- const theme = getTheme();
38
- if (!verbose) {
39
- const parts = [];
40
- if (meta)
41
- parts.push(`${meta.sections_returned.length}/6 sections · ${meta.elapsed_ms}ms`);
42
- if (meta?.errors.length)
43
- parts.push(`${meta.errors.length} errors`);
44
- const hasIssues = (result.errors && result.errors.length > 0) ||
45
- (result.crashes && result.crashes.length > 0) ||
46
- (result.runtime && (result.runtime.socket_dirs > 100 || result.runtime.relaunch_pending));
47
- return (_jsx(Text, { color: hasIssues ? theme.colors.warning : theme.colors.success, children: parts.join(" · ") || "done" }));
48
- }
49
- // Verbose mode — section by section
50
- return (_jsxs(Box, { flexDirection: "column", children: [result.runtime && (_jsxs(Box, { paddingLeft: 2, flexDirection: "column", children: [_jsx(Text, { bold: true, children: "runtime" }), _jsx(Box, { paddingLeft: 2, children: _jsxs(Text, { children: ["PID ", result.runtime.pid, " \u00B7 up ", formatUptime(result.runtime.uptime_s), " \u00B7 heap", " ", result.runtime.heap_mb, "MB \u00B7 RSS ", result.runtime.rss_mb, "MB"] }) }), (result.runtime.socket_dirs > 100 || result.runtime.relaunch_pending) && (_jsxs(Box, { paddingLeft: 2, children: [result.runtime.socket_dirs > 100 && (_jsxs(Text, { color: theme.colors.error, children: ["\u26A0 socket leak: ", result.runtime.socket_dirs, " dirs in sock/"] })), result.runtime.relaunch_pending && (_jsx(Text, { color: theme.colors.error, children: "\u26A0 stuck restart pending" }))] }))] })), result.errors !== undefined && (_jsxs(Box, { paddingLeft: 2, flexDirection: "column", children: [_jsx(Text, { bold: true, color: result.errors && result.errors.length > 0
51
- ? theme.colors.error
52
- : theme.colors.success, children: "errors" }), _jsx(Box, { paddingLeft: 2, flexDirection: "column", children: result.errors && result.errors.length > 0 ? (_jsxs(_Fragment, { children: [result.errors.slice(0, MAX_DIAG_ITEMS).map((e, i) => (_jsxs(Text, { color: theme.colors.error, children: ["[", e.source, "] ", e.timestamp ? e.timestamp.slice(11, 19) : "?", " ", e.severity, " ", e.category, ": ", e.message.slice(0, 80)] }, i))), result.errors.length > MAX_DIAG_ITEMS && (_jsxs(Text, { dimColor: true, children: ["\u2026 (+", result.errors.length - MAX_DIAG_ITEMS, " more)"] }))] })) : (_jsx(Text, { color: theme.colors.success, children: "none" })) })] })), result.crashes !== undefined && (_jsxs(Box, { paddingLeft: 2, flexDirection: "column", children: [_jsx(Text, { bold: true, color: result.crashes && result.crashes.length > 0
53
- ? theme.colors.error
54
- : theme.colors.success, children: "crashes" }), _jsx(Box, { paddingLeft: 2, flexDirection: "column", children: result.crashes && result.crashes.length > 0 ? (_jsxs(_Fragment, { children: [result.crashes.slice(0, MAX_DIAG_ITEMS).map((c, i) => (_jsxs(Text, { color: theme.colors.error, children: [c.file, " ", c.timestamp ? c.timestamp.slice(0, 19) : "", " ", c.error_message ?? ""] }, i))), result.crashes.length > MAX_DIAG_ITEMS && (_jsxs(Text, { dimColor: true, children: ["\u2026 (+", result.crashes.length - MAX_DIAG_ITEMS, " more)"] }))] })) : (_jsx(Text, { color: theme.colors.success, children: "none" })) })] })), result.databases && (_jsxs(Box, { paddingLeft: 2, flexDirection: "column", children: [_jsx(Text, { bold: true, children: "databases" }), _jsx(Box, { paddingLeft: 2, flexDirection: "column", children: result.databases.slice(0, MAX_DIAG_ITEMS).map((db, i) => {
55
- const walWarn = db.wal_mb && parseFloat(db.wal_mb) > 1;
56
- return (_jsxs(Text, { color: walWarn ? theme.colors.warning : undefined, children: [db.name, ": ", db.size_mb, "MB", db.wal_mb ? ` (WAL ${db.wal_mb}MB${walWarn ? " ⚠" : ""})` : "", db.schema_version !== undefined ? ` schema:v${db.schema_version}` : ""] }, i));
57
- }) })] })), result.daemon && result.daemon.length > 0 && (_jsxs(Box, { paddingLeft: 2, flexDirection: "column", children: [_jsx(Text, { bold: true, children: "daemon" }), _jsx(Box, { paddingLeft: 2, flexDirection: "column", children: result.daemon.map((d, i) => (_jsxs(Text, { children: [d.source, ": ", d.entries.length, " entries"] }, i))) })] })), result.network && (_jsxs(Box, { paddingLeft: 2, flexDirection: "column", children: [_jsx(Text, { bold: true, children: "network" }), _jsxs(Box, { paddingLeft: 2, flexDirection: "column", children: [_jsxs(Text, { children: ["node: ", result.network.display_name ?? "unknown", " \u00B7 port", " ", result.network.listen_port ?? "?", " \u00B7 endpoint", " ", result.network.external_endpoint ?? "none"] }), _jsxs(Text, { children: ["peers: ", result.network.peer_count, " \u00B7 TLS:", " ", result.network.tls_certs_present ? "✓" : "✗", " \u00B7 trusted CAs:", " ", result.network.trusted_cas] }), result.network.peers.length > 0 &&
58
- result.network.peers.slice(0, MAX_DIAG_ITEMS).map((p, i) => (_jsxs(Text, { color: p.status === "connected" ? theme.colors.success : theme.colors.warning, children: [p.name || p.node_id.slice(0, 8), ": ", p.status] }, i))), result.network.recent_diagnostics.length > 0 && (_jsxs(Text, { dimColor: true, children: [result.network.recent_diagnostics.length, " recent diagnostic events"] }))] })] })), meta?.errors && meta.errors.length > 0 && (_jsxs(Box, { paddingLeft: 2, flexDirection: "column", children: [_jsx(Text, { bold: true, color: theme.colors.error, children: "collection errors" }), meta.errors.slice(0, MAX_DIAG_ITEMS).map((err, i) => (_jsx(Box, { paddingLeft: 2, children: _jsx(Text, { color: theme.colors.error, children: err }) }, i))), meta.errors.length > MAX_DIAG_ITEMS && (_jsxs(Text, { dimColor: true, children: ["\u2026 (+", meta.errors.length - MAX_DIAG_ITEMS, " more)"] }))] }))] }));
59
- },
60
- };
61
- //# sourceMappingURL=index.js.map
@@ -1,45 +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
- /** Prefer friendly name over raw client IDs. */
6
- function displayTo(to) {
7
- if (!to.startsWith("client-"))
8
- return to.replace(/^@/, "");
9
- return to.slice(0, 15) + "…";
10
- }
11
- export const SendMessageToolRenderers = {
12
- displayName() {
13
- return "Message";
14
- },
15
- renderInput(input) {
16
- const to = String(input?.to ?? "");
17
- const type = input?.type ?? "quest";
18
- const parts = [];
19
- if (to)
20
- parts.push(`@${displayTo(to)}`);
21
- if (type && type !== "quest")
22
- parts.push(String(type));
23
- return parts.join(" ") || "Send message";
24
- },
25
- renderRejection() {
26
- return _jsx(FallbackToolUseRejectedMessage, {});
27
- },
28
- renderOutput(output, { verbose } = {}, input) {
29
- const theme = getTheme();
30
- const content = String(input?.content ?? "");
31
- if (output == null) {
32
- return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Text, { color: theme.colors.error, children: "Failed to send message" }), content && _jsx(Text, { dimColor: true, children: content })] }));
33
- }
34
- const obj = (output ?? {});
35
- const success = obj.success !== false && obj.success !== null;
36
- const errorMessage = String(obj.message ?? obj.error ?? "");
37
- const data = (obj.data ?? obj);
38
- const messageId = String(data.messageId ?? data.message_id ?? data.id ?? "");
39
- if (!success) {
40
- return (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Text, { color: theme.colors.error, children: ["\u2717 ", errorMessage || "Failed to deliver"] }), content && _jsx(Text, { dimColor: true, children: content })] }));
41
- }
42
- return (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Box, { children: [_jsx(Text, { color: theme.colors.success, children: "\u2713 Sent" }), messageId && (_jsxs(_Fragment, { children: [_jsx(Text, { children: " " }), _jsx(Text, { color: theme.colors.textMuted, dimColor: true, children: messageId })] }))] }), content && _jsx(Text, { children: content })] }));
43
- },
44
- };
45
- //# sourceMappingURL=index.js.map
@@ -1,124 +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 SerenaToolRenderers = {
6
- displayName() {
7
- return "Serena";
8
- },
9
- renderInput(input, { verbose }) {
10
- const { action, name_path, pattern, new_name, relative_path } = input;
11
- if (action === "find_symbol" && name_path) {
12
- let msg = `find_symbol "${name_path}"`;
13
- if (relative_path && verbose)
14
- msg += ` in ${relative_path}`;
15
- return msg;
16
- }
17
- if (action === "find_references" && name_path) {
18
- return `find_references "${name_path}"`;
19
- }
20
- if (action === "search" && pattern) {
21
- let msg = `search "${pattern}"`;
22
- if (relative_path && verbose)
23
- msg += ` in ${relative_path}`;
24
- return msg;
25
- }
26
- if (action === "rename" && name_path && new_name) {
27
- return `rename "${name_path}" → "${new_name}"`;
28
- }
29
- if (action === "overview") {
30
- return `overview${relative_path ? ` of ${relative_path}` : ""}`;
31
- }
32
- if (action === "replace_body" && name_path) {
33
- return `replace_body "${name_path}"`;
34
- }
35
- if (action === "insert_after" && name_path) {
36
- return `insert_after "${name_path}"`;
37
- }
38
- if (action === "insert_before" && name_path) {
39
- return `insert_before "${name_path}"`;
40
- }
41
- return action;
42
- },
43
- renderRejection() {
44
- return _jsx(FallbackToolUseRejectedMessage, {});
45
- },
46
- renderOutput(output) {
47
- const theme = getTheme();
48
- // Handle null/undefined
49
- if (output == null) {
50
- return _jsx(Text, { color: theme.colors.textMuted, children: "No output" });
51
- }
52
- // Handle string output
53
- if (typeof output === "string") {
54
- const lines = output.trim().split("\n");
55
- const preview = lines.slice(0, 2).join("\n");
56
- return _jsx(Text, { color: theme.colors.textMuted, children: preview });
57
- }
58
- // Handle object output
59
- if (typeof output === "object" && !Array.isArray(output)) {
60
- const obj = output;
61
- // Results array: show count + preview
62
- if (Array.isArray(obj.results)) {
63
- const results = obj.results;
64
- if (results.length === 0) {
65
- return _jsx(Text, { color: theme.colors.textMuted, children: "No results" });
66
- }
67
- // Show up to 3 result summaries
68
- const previews = results.slice(0, 3);
69
- return (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Box, { flexDirection: "row", children: [_jsx(Text, { children: "Found " }), _jsx(Text, { bold: true, children: results.length }), _jsxs(Text, { children: [" ", results.length === 1 ? "result" : "results"] })] }), _jsxs(Box, { flexDirection: "column", marginLeft: 2, children: [previews.map((result, idx) => {
70
- if (result != null && typeof result === "object") {
71
- const r = result;
72
- // Common fields: name, file, location, symbol_name
73
- const name = r.name || r.symbol_name || r.qualified_name;
74
- const file = r.file || r.path;
75
- if (name && file) {
76
- return (_jsxs(Text, { color: theme.colors.textMuted, children: [typeof name === "string" ? name : "", typeof file === "string" ? ` (${file})` : ""] }, idx));
77
- }
78
- if (name) {
79
- return (_jsx(Text, { color: theme.colors.textMuted, children: typeof name === "string" ? name : "" }, idx));
80
- }
81
- }
82
- return (_jsxs(Text, { color: theme.colors.textMuted, children: ["Result ", idx + 1] }, idx));
83
- }), results.length > 3 && (_jsxs(Text, { color: theme.colors.textMuted, children: ["... and ", results.length - 3, " more"] }))] })] }));
84
- }
85
- // Raw string output: show first 2 lines
86
- if (typeof obj.raw === "string") {
87
- const lines = obj.raw.trim().split("\n");
88
- const preview = lines.slice(0, 2).join("\n");
89
- return _jsx(Text, { color: theme.colors.textMuted, children: preview });
90
- }
91
- // Success/error messages
92
- if (typeof obj.success === "boolean") {
93
- if (obj.success) {
94
- const message = typeof obj.message === "string" ? obj.message : "Success";
95
- return _jsx(Text, { color: theme.colors.success, children: message });
96
- }
97
- else {
98
- const error = typeof obj.error === "string" ? obj.error : "Failed";
99
- return _jsx(Text, { color: theme.colors.error, children: error });
100
- }
101
- }
102
- // Message field
103
- if (typeof obj.message === "string") {
104
- return _jsx(Text, { color: theme.colors.textMuted, children: obj.message });
105
- }
106
- // Symbol info: name, kind, location
107
- if (obj.name && obj.kind) {
108
- return (_jsxs(Box, { flexDirection: "row", children: [_jsxs(Text, { color: theme.colors.textMuted, children: [typeof obj.kind === "string" ? obj.kind : "Symbol", ":"] }), _jsxs(Text, { children: [" ", typeof obj.name === "string" ? obj.name : ""] })] }));
109
- }
110
- // Fallback: show action completed
111
- return _jsx(Text, { color: theme.colors.textMuted, children: "Completed" });
112
- }
113
- // Handle array output
114
- if (Array.isArray(output)) {
115
- if (output.length === 0) {
116
- return _jsx(Text, { color: theme.colors.textMuted, children: "No results" });
117
- }
118
- 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"] })] }));
119
- }
120
- // Fallback
121
- return _jsx(Text, { color: theme.colors.textMuted, children: "Done" });
122
- },
123
- };
124
- //# sourceMappingURL=index.js.map
@@ -1,52 +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
- export const SessionHistoryToolRenderers = {
7
- displayName() {
8
- return "History";
9
- },
10
- renderInput(input, _opts = {}) {
11
- const parts = [];
12
- if (input.action) {
13
- parts.push(input.action);
14
- }
15
- if (input.query) {
16
- parts.push(`"${input.query}"`);
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.data?.sessions && Array.isArray(output.data.sessions)) {
39
- const sessions = output.data.sessions;
40
- const summaries = sessions.slice(0, 3).map((session) => {
41
- const title = session.title || session.id || "untitled";
42
- return capLine(title.slice(0, 50));
43
- });
44
- return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Box, { flexDirection: "row", children: _jsxs(Text, { children: [sessions.length, " session", sessions.length !== 1 ? "s" : ""] }) }), summaries.length > 0 && (_jsx(Box, { flexDirection: "row", children: _jsx(Text, { color: theme.colors.textMuted, children: summaries.join(", ") }) }))] }));
45
- }
46
- if (output.message) {
47
- return (_jsx(Box, { justifyContent: "space-between", overflowX: "hidden", width: "100%", children: _jsx(Box, { flexDirection: "row", children: _jsx(Text, { children: output.message }) }) }));
48
- }
49
- return (_jsx(Box, { justifyContent: "space-between", overflowX: "hidden", width: "100%", children: _jsx(Box, { flexDirection: "row", children: _jsx(Text, { color: theme.colors.success, children: "Success" }) }) }));
50
- },
51
- };
52
- //# sourceMappingURL=index.js.map
@@ -1,80 +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
- const MAX_MATCHES_DISPLAY = 3;
7
- export const SgToolRenderers = {
8
- displayName() {
9
- return "AST Grep";
10
- },
11
- renderInput(input, { verbose } = { verbose: false }) {
12
- const pattern = input.pattern;
13
- const language = input.language;
14
- const rewrite = input.rewrite;
15
- const path = input.path;
16
- if (!pattern) {
17
- return "(No pattern)";
18
- }
19
- let message = "";
20
- if (rewrite) {
21
- // Show rewrite as: "old" → "new" [language]
22
- message = `"${pattern}" → "${rewrite}"`;
23
- }
24
- else {
25
- // Show pattern search as: "pattern" [language]
26
- message = `"${pattern}"`;
27
- }
28
- if (language) {
29
- message += ` ${language}`;
30
- }
31
- if (verbose && path) {
32
- message += ` @ ${path}`;
33
- }
34
- return message;
35
- },
36
- renderRejection() {
37
- return _jsx(FallbackToolUseRejectedMessage, {});
38
- },
39
- renderOutput(output) {
40
- const theme = getTheme();
41
- // Handle null/undefined
42
- if (output == null) {
43
- return _jsx(Text, { color: theme.colors.textMuted, children: "(No output)" });
44
- }
45
- const obj = output;
46
- // Handle rewrite output: { raw: string }
47
- if (typeof obj.raw === "string") {
48
- const lines = obj.raw.split("\n");
49
- const firstTwoLines = lines.slice(0, 2).join("\n");
50
- const moreLinesCount = lines.length - 2;
51
- return (_jsxs(Box, { flexDirection: "column", gap: 0, children: [_jsx(Text, { color: theme.colors.success, children: "Rewrites applied" }), _jsx(Text, { color: theme.colors.textMuted, children: firstTwoLines }), moreLinesCount > 0 && (_jsxs(Text, { color: theme.colors.textMuted, children: ["... (+", moreLinesCount, " lines)"] }))] }));
52
- }
53
- // Handle matches output: { matches: [{ file?, text?, range?, replacement? }] }
54
- if (Array.isArray(obj.matches)) {
55
- const matches = obj.matches;
56
- if (matches.length === 0) {
57
- return _jsx(Text, { color: theme.colors.textMuted, children: "No matches found" });
58
- }
59
- const displayMatches = matches.slice(0, MAX_MATCHES_DISPLAY);
60
- const hiddenCount = matches.length - MAX_MATCHES_DISPLAY;
61
- return (_jsxs(Box, { flexDirection: "column", gap: 0, children: [_jsxs(Text, { color: theme.colors.success, children: [matches.length, " AST ", matches.length === 1 ? "match" : "matches"] }), displayMatches.map((match, idx) => {
62
- const file = match.file;
63
- const line = match.line;
64
- const text = match.text;
65
- let fileDisplay = file || "unknown";
66
- if (line != null) {
67
- fileDisplay += `:${line}`;
68
- }
69
- let textDisplay = text ? String(text) : "(no text)";
70
- if (textDisplay.length > 60) {
71
- textDisplay = textDisplay.slice(0, 57) + "...";
72
- }
73
- return (_jsxs(Box, { flexDirection: "row", gap: 1, children: [_jsx(Text, { bold: true, children: fileDisplay }), _jsx(Text, { color: theme.colors.textMuted, children: textDisplay })] }, idx));
74
- }), hiddenCount > 0 && _jsxs(Text, { color: theme.colors.textMuted, children: ["+", hiddenCount, " more"] })] }));
75
- }
76
- // Fallback: render as JSON
77
- return _jsx(Text, { children: safeFallbackText(output) });
78
- },
79
- };
80
- //# sourceMappingURL=index.js.map