@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,70 +0,0 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- // Changes:
3
- // - Tool import → minimal ToolLike interface
4
- // - Removed tool object references (FileEditTool, BashTool, etc.) → name-based dispatch
5
- // - Removed PRODUCT_NAME → "ARIA"
6
- // - Removed useNotifyAfterTimeout (analytics/notification)
7
- // - Removed AssistantMessage import → inline type
8
- // - Removed CommandSubcommandPrefixResult → inline type
9
- import { useInput } from "ink";
10
- import * as React from "react";
11
- import { isEscapeInput } from "../../utils/keys.js";
12
- import { FileEditPermissionRequest } from "./FileEditPermissionRequest/FileEditPermissionRequest.js";
13
- import { BashPermissionRequest } from "./BashPermissionRequest/BashPermissionRequest.js";
14
- import { FallbackPermissionRequest } from "./FallbackPermissionRequest.js";
15
- import { FileWritePermissionRequest } from "./FileWritePermissionRequest/FileWritePermissionRequest.js";
16
- import { FilesystemPermissionRequest } from "./FilesystemPermissionRequest/FilesystemPermissionRequest.js";
17
- // Name-based routing for tool-specific permission components
18
- const FILE_EDIT_TOOLS = new Set(["Edit", "file_edit", "str_replace_editor"]);
19
- const FILE_WRITE_TOOLS = new Set(["Write", "file_write", "create_file"]);
20
- const BASH_TOOLS = new Set(["Bash", "bash", "execute_command"]);
21
- const FILESYSTEM_TOOLS = new Set([
22
- "Glob",
23
- "glob",
24
- "Grep",
25
- "grep",
26
- "LS",
27
- "ls",
28
- "Read",
29
- "file_read",
30
- "read_file",
31
- "NotebookRead",
32
- "notebook_read",
33
- "NotebookEdit",
34
- "notebook_edit",
35
- ]);
36
- function permissionComponentForToolName(name) {
37
- if (FILE_EDIT_TOOLS.has(name))
38
- return FileEditPermissionRequest;
39
- if (FILE_WRITE_TOOLS.has(name))
40
- return FileWritePermissionRequest;
41
- if (BASH_TOOLS.has(name))
42
- return BashPermissionRequest;
43
- if (FILESYSTEM_TOOLS.has(name))
44
- return FilesystemPermissionRequest;
45
- return FallbackPermissionRequest;
46
- }
47
- export function toolUseConfirmGetPrefix(toolUseConfirm) {
48
- return ((toolUseConfirm.commandPrefix &&
49
- !toolUseConfirm.commandPrefix.commandInjectionDetected &&
50
- toolUseConfirm.commandPrefix.commandPrefix) ||
51
- null);
52
- }
53
- export function PermissionRequest({ toolUseConfirm, onDone, verbose, }) {
54
- const dismissedRef = React.useRef(false);
55
- // Handle Ctrl+C and Escape — reject and close the modal.
56
- // Guard with dismissedRef so rapid keypresses don't double-fire
57
- // onReject/onDone before React unmounts the component.
58
- useInput((input, key) => {
59
- if (dismissedRef.current)
60
- return;
61
- if ((key.ctrl && input === "c") || isEscapeInput(input, key)) {
62
- dismissedRef.current = true;
63
- toolUseConfirm.onReject();
64
- onDone();
65
- }
66
- });
67
- const PermissionComponent = permissionComponentForToolName(toolUseConfirm.tool.name);
68
- return _jsx(PermissionComponent, { toolUseConfirm: toolUseConfirm, onDone: onDone, verbose: verbose });
69
- }
70
- //# sourceMappingURL=PermissionRequest.js.map
@@ -1,41 +0,0 @@
1
- import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
2
- import { Box, Text } from "ink";
3
- import { getTheme } from "../../theme/index.js";
4
- export function categoryForRiskScore(riskScore) {
5
- return riskScore >= 70 ? "high" : riskScore >= 30 ? "moderate" : "low";
6
- }
7
- function colorSchemeForRiskScoreCategory(category) {
8
- const theme = getTheme();
9
- switch (category) {
10
- case "low":
11
- return {
12
- highlightColor: theme.colors.success,
13
- textColor: theme.colors.primary,
14
- };
15
- case "moderate":
16
- return {
17
- highlightColor: theme.colors.warning,
18
- textColor: theme.colors.warning,
19
- };
20
- case "high":
21
- return {
22
- highlightColor: theme.colors.error,
23
- textColor: theme.colors.error,
24
- };
25
- }
26
- }
27
- export function textColorForRiskScore(riskScore) {
28
- if (riskScore === null) {
29
- return getTheme().colors.primary;
30
- }
31
- const category = categoryForRiskScore(riskScore);
32
- return colorSchemeForRiskScoreCategory(category).textColor;
33
- }
34
- export function PermissionRiskScore({ riskScore }) {
35
- const category = categoryForRiskScore(riskScore);
36
- return _jsxs(Text, { color: textColorForRiskScore(riskScore), children: ["Risk: ", category] });
37
- }
38
- export function PermissionRequestTitle({ title, riskScore }) {
39
- return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Text, { bold: true, color: getTheme().colors.primary, children: title }), riskScore !== null && _jsx(PermissionRiskScore, { riskScore: riskScore })] }));
40
- }
41
- //# sourceMappingURL=PermissionRequestTitle.js.map
@@ -1,10 +0,0 @@
1
- // Change: removed all analytics (usePermissionRequestLogging was Statsig + unary logging)
2
- // This hook is now a no-op stub kept for structural compatibility.
3
- /**
4
- * Stub for usePermissionRequestLogging.
5
- * Analytics removed.
6
- */
7
- export function usePermissionRequestLogging(_toolUseConfirm, _unaryEvent) {
8
- // no-op: analytics removed
9
- }
10
- //# sourceMappingURL=hooks.js.map
@@ -1,68 +0,0 @@
1
- // Changes:
2
- // - Option type from @inkjs/ui → imported from CustomSelect
3
- // - isUnsafeCompoundCommand → inline stub (always false)
4
- // - getCwd → process.cwd()
5
- // - getTheme → ARIA's theme
6
- import chalk from "chalk";
7
- import { toolUseConfirmGetPrefix } from "./PermissionRequest.js";
8
- import { getTheme } from "../../theme/index.js";
9
- /**
10
- * Detects compound shell commands that chain multiple operations.
11
- * Returns true if the command contains shell operators that could execute
12
- * additional commands beyond what was explicitly approved.
13
- */
14
- function isUnsafeCompoundCommand(command) {
15
- // Strip content inside single-quoted strings (they don't expand)
16
- const withoutSingleQuoted = command.replace(/'[^']*'/g, "");
17
- // Strip content inside double-quoted strings (preserve operators outside quotes)
18
- const withoutQuoted = withoutSingleQuoted.replace(/"[^"]*"/g, "");
19
- // Check for shell compound operators: &&, ||, ;, |, backticks, $()
20
- if (/&&|\|\||[;|]/.test(withoutQuoted))
21
- return true;
22
- if (/`/.test(withoutQuoted))
23
- return true;
24
- if (/\$\(/.test(withoutQuoted))
25
- return true;
26
- return false;
27
- }
28
- /**
29
- * Generates options for the tool use confirmation dialog
30
- */
31
- export function toolUseOptions({ toolUseConfirm, command, }) {
32
- // Hide "don't ask again" options if the command is an unsafe compound command, or a potential command injection
33
- const showDontAskAgainOption = !isUnsafeCompoundCommand(command) &&
34
- toolUseConfirm.commandPrefix &&
35
- !toolUseConfirm.commandPrefix.commandInjectionDetected;
36
- const prefix = toolUseConfirmGetPrefix(toolUseConfirm);
37
- const showDontAskAgainPrefixOption = showDontAskAgainOption && prefix !== null;
38
- let dontShowAgainOptions = [];
39
- if (showDontAskAgainPrefixOption) {
40
- // Prefix option takes precedence over full command option
41
- dontShowAgainOptions = [
42
- {
43
- label: `Yes, and don't ask again for ${chalk.bold(prefix)} commands in ${chalk.bold(process.cwd())}`,
44
- value: "yes-dont-ask-again-prefix",
45
- },
46
- ];
47
- }
48
- else if (showDontAskAgainOption) {
49
- dontShowAgainOptions = [
50
- {
51
- label: `Yes, and don't ask again for ${chalk.bold(command)} commands in ${chalk.bold(process.cwd())}`,
52
- value: "yes-dont-ask-again-full",
53
- },
54
- ];
55
- }
56
- return [
57
- {
58
- label: "Yes",
59
- value: "yes",
60
- },
61
- ...dontShowAgainOptions,
62
- {
63
- label: `No, and provide instructions (${chalk.bold.hex(getTheme().colors.warning)("esc")})`,
64
- value: "no",
65
- },
66
- ];
67
- }
68
- //# sourceMappingURL=toolUseOptions.js.map
@@ -1,10 +0,0 @@
1
- // Change: removed logUnaryEvent and env imports (analytics removed)
2
- // This module is now a no-op stub kept for structural compatibility.
3
- /**
4
- * Stub for logUnaryPermissionEvent.
5
- * Analytics removed.
6
- */
7
- export function logUnaryPermissionEvent(_completion_type, _toolUseConfirm, _event) {
8
- // no-op: analytics removed
9
- }
10
- //# sourceMappingURL=utils.js.map
@@ -1,326 +0,0 @@
1
- import stringWidth from "string-width";
2
- export class Cursor {
3
- measuredText;
4
- selection;
5
- offset;
6
- constructor(measuredText, offset = 0, selection = 0) {
7
- this.measuredText = measuredText;
8
- this.selection = selection;
9
- // it's ok for the cursor to be 1 char beyond the end of the string
10
- this.offset = Math.max(0, Math.min(this.measuredText.text.length, offset));
11
- }
12
- static fromText(text, columns, offset = 0, selection = 0) {
13
- // make MeasuredText on less than columns width, to account for cursor
14
- return new Cursor(new MeasuredText(text, columns - 1), offset, selection);
15
- }
16
- render(cursorChar, mask, invert) {
17
- const { line, column } = this.getPosition();
18
- return this.measuredText
19
- .getWrappedText()
20
- .map((text, currentLine, allLines) => {
21
- let displayText = text;
22
- if (mask && currentLine === allLines.length - 1) {
23
- const lastSixStart = Math.max(0, text.length - 6);
24
- displayText = mask.repeat(lastSixStart) + text.slice(lastSixStart);
25
- }
26
- // looking for the line with the cursor
27
- if (line != currentLine)
28
- return displayText.trimEnd();
29
- return (displayText.slice(0, column) +
30
- invert(displayText[column] || cursorChar) +
31
- displayText.trimEnd().slice(column + 1));
32
- })
33
- .join("\n");
34
- }
35
- left() {
36
- return new Cursor(this.measuredText, this.offset - 1);
37
- }
38
- right() {
39
- return new Cursor(this.measuredText, this.offset + 1);
40
- }
41
- up() {
42
- const { line, column } = this.getPosition();
43
- if (line == 0) {
44
- return new Cursor(this.measuredText, 0, 0);
45
- }
46
- const newOffset = this.getOffset({ line: line - 1, column });
47
- return new Cursor(this.measuredText, newOffset, 0);
48
- }
49
- down() {
50
- const { line, column } = this.getPosition();
51
- if (line >= this.measuredText.lineCount - 1) {
52
- return new Cursor(this.measuredText, this.text.length, 0);
53
- }
54
- const newOffset = this.getOffset({ line: line + 1, column });
55
- return new Cursor(this.measuredText, newOffset, 0);
56
- }
57
- startOfLine() {
58
- const { line } = this.getPosition();
59
- return new Cursor(this.measuredText, this.getOffset({
60
- line,
61
- column: 0,
62
- }), 0);
63
- }
64
- endOfLine() {
65
- const { line } = this.getPosition();
66
- const column = this.measuredText.getLineLength(line);
67
- const offset = this.getOffset({ line, column });
68
- return new Cursor(this.measuredText, offset, 0);
69
- }
70
- nextWord() {
71
- let nextCursor = this;
72
- // If we're on a word, move to the next non-word
73
- while (nextCursor.isOverWordChar() && !nextCursor.isAtEnd()) {
74
- nextCursor = nextCursor.right();
75
- }
76
- // now move to the next word char
77
- while (!nextCursor.isOverWordChar() && !nextCursor.isAtEnd()) {
78
- nextCursor = nextCursor.right();
79
- }
80
- return nextCursor;
81
- }
82
- prevWord() {
83
- let cursor = this;
84
- // if we are already at the beginning of a word, step off it
85
- if (!cursor.left().isOverWordChar()) {
86
- cursor = cursor.left();
87
- }
88
- // Move left over any non-word characters
89
- while (!cursor.isOverWordChar() && !cursor.isAtStart()) {
90
- cursor = cursor.left();
91
- }
92
- // If we're over a word character, move to the start of this word
93
- if (cursor.isOverWordChar()) {
94
- while (cursor.left().isOverWordChar() && !cursor.isAtStart()) {
95
- cursor = cursor.left();
96
- }
97
- }
98
- return cursor;
99
- }
100
- modifyText(end, insertString = "") {
101
- const startOffset = this.offset;
102
- const endOffset = end.offset;
103
- const newText = this.text.slice(0, startOffset) + insertString + this.text.slice(endOffset);
104
- return Cursor.fromText(newText, this.columns, startOffset + insertString.length);
105
- }
106
- insert(insertString) {
107
- const newCursor = this.modifyText(this, insertString);
108
- return newCursor;
109
- }
110
- del() {
111
- if (this.isAtEnd()) {
112
- return this;
113
- }
114
- return this.modifyText(this.right());
115
- }
116
- backspace() {
117
- if (this.isAtStart()) {
118
- return this;
119
- }
120
- // Get the current position
121
- const currentOffset = this.offset;
122
- // Create a new cursor at the position before the current one
123
- const leftCursor = this.left();
124
- const leftOffset = leftCursor.offset;
125
- // Create the new text by removing one character
126
- const newText = this.text.slice(0, leftOffset) + this.text.slice(currentOffset);
127
- // Return a new cursor with the updated text and position
128
- return Cursor.fromText(newText, this.columns, leftOffset);
129
- }
130
- deleteToLineStart() {
131
- return this.startOfLine().modifyText(this);
132
- }
133
- deleteToLineEnd() {
134
- // If cursor is on a newline character, delete just that character
135
- if (this.text[this.offset] === "\n") {
136
- return this.modifyText(this.right());
137
- }
138
- return this.modifyText(this.endOfLine());
139
- }
140
- deleteWordBefore() {
141
- if (this.isAtStart()) {
142
- return this;
143
- }
144
- return this.prevWord().modifyText(this);
145
- }
146
- deleteWordAfter() {
147
- if (this.isAtEnd()) {
148
- return this;
149
- }
150
- return this.modifyText(this.nextWord());
151
- }
152
- isOverWordChar() {
153
- const currentChar = this.text[this.offset] ?? "";
154
- return /\w/.test(currentChar);
155
- }
156
- equals(other) {
157
- return this.offset === other.offset && this.measuredText == other.measuredText;
158
- }
159
- isAtStart() {
160
- return this.offset == 0;
161
- }
162
- isAtEnd() {
163
- return this.offset == this.text.length;
164
- }
165
- get text() {
166
- return this.measuredText.text;
167
- }
168
- get columns() {
169
- return this.measuredText.columns + 1;
170
- }
171
- getPosition() {
172
- return this.measuredText.getPositionFromOffset(this.offset);
173
- }
174
- getOffset(position) {
175
- return this.measuredText.getOffsetFromPosition(position);
176
- }
177
- }
178
- class WrappedLine {
179
- text;
180
- startOffset;
181
- isPrecededByNewline;
182
- endsWithNewline;
183
- constructor(text, startOffset, isPrecededByNewline, endsWithNewline = false) {
184
- this.text = text;
185
- this.startOffset = startOffset;
186
- this.isPrecededByNewline = isPrecededByNewline;
187
- this.endsWithNewline = endsWithNewline;
188
- }
189
- equals(other) {
190
- return this.text === other.text && this.startOffset === other.startOffset;
191
- }
192
- get length() {
193
- return this.text.length + (this.endsWithNewline ? 1 : 0);
194
- }
195
- }
196
- export class MeasuredText {
197
- text;
198
- columns;
199
- wrappedLines;
200
- constructor(text, columns) {
201
- this.text = text;
202
- this.columns = columns;
203
- this.wrappedLines = this.measureWrappedText();
204
- }
205
- /**
206
- * Walk the text character-by-character using stringWidth for visual widths,
207
- * computing line breaks directly. This replaces the old wrapAnsi+indexOf
208
- * approach which crashed when wrapAnsi transformed text (tab expansion,
209
- * ANSI re-sequencing, wide-char padding) making indexOf fail.
210
- */
211
- measureWrappedText() {
212
- if (this.text.length === 0) {
213
- return [new WrappedLine("", 0, true, false)];
214
- }
215
- const lines = [];
216
- let pos = 0;
217
- while (pos < this.text.length) {
218
- const lineStart = pos;
219
- const isAfterNewline = pos === 0 || this.text[pos - 1] === "\n";
220
- let width = 0;
221
- let scan = pos;
222
- let lastSpacePos = -1;
223
- while (scan < this.text.length) {
224
- const ch = this.text[scan];
225
- if (ch === "\n") {
226
- lines.push(new WrappedLine(this.text.slice(lineStart, scan), lineStart, isAfterNewline, true));
227
- pos = scan + 1;
228
- break;
229
- }
230
- const cp = this.text.codePointAt(scan);
231
- const fullChar = String.fromCodePoint(cp);
232
- const charWidth = stringWidth(fullChar);
233
- if (width + charWidth > this.columns) {
234
- let wrapPos;
235
- if (lastSpacePos >= lineStart && lastSpacePos + 1 < scan) {
236
- // Word wrap: break after the last space
237
- wrapPos = lastSpacePos + 1;
238
- }
239
- else if (scan > lineStart) {
240
- // Hard wrap: break before this character
241
- wrapPos = scan;
242
- }
243
- else {
244
- // Single character wider than columns — force it on this line
245
- wrapPos = scan + fullChar.length;
246
- }
247
- lines.push(new WrappedLine(this.text.slice(lineStart, wrapPos), lineStart, isAfterNewline, false));
248
- pos = wrapPos;
249
- break;
250
- }
251
- if (ch === " " || ch === "\t") {
252
- lastSpacePos = scan;
253
- }
254
- width += charWidth;
255
- scan += fullChar.length;
256
- }
257
- // Reached end of text without hitting \n or wrap
258
- if (scan >= this.text.length && pos === lineStart) {
259
- lines.push(new WrappedLine(this.text.slice(lineStart), lineStart, isAfterNewline, false));
260
- pos = this.text.length;
261
- }
262
- }
263
- // Trailing newline produces an empty final line
264
- if (this.text.length > 0 && this.text[this.text.length - 1] === "\n") {
265
- lines.push(new WrappedLine("", this.text.length, true, false));
266
- }
267
- return lines;
268
- }
269
- getWrappedText() {
270
- return this.wrappedLines.map((line) => line.isPrecededByNewline ? line.text : line.text.trimStart());
271
- }
272
- getLine(line) {
273
- return this.wrappedLines[Math.max(0, Math.min(line, this.wrappedLines.length - 1))];
274
- }
275
- getOffsetFromPosition(position) {
276
- const wrappedLine = this.getLine(position.line);
277
- const startOffsetPlusColumn = wrappedLine.startOffset + position.column;
278
- // Handle blank lines specially
279
- if (wrappedLine.text.length === 0 && wrappedLine.endsWithNewline) {
280
- return wrappedLine.startOffset;
281
- }
282
- // For normal lines
283
- const lineEnd = wrappedLine.startOffset + wrappedLine.text.length;
284
- // Add 1 only if this line ends with a newline
285
- const maxOffset = wrappedLine.endsWithNewline ? lineEnd + 1 : lineEnd;
286
- return Math.min(startOffsetPlusColumn, maxOffset);
287
- }
288
- getLineLength(line) {
289
- const currentLine = this.getLine(line);
290
- const nextLine = this.getLine(line + 1);
291
- if (nextLine.equals(currentLine)) {
292
- return this.text.length - currentLine.startOffset;
293
- }
294
- return nextLine.startOffset - currentLine.startOffset - 1;
295
- }
296
- getPositionFromOffset(offset) {
297
- const lines = this.wrappedLines;
298
- for (let line = 0; line < lines.length; line++) {
299
- const currentLine = lines[line];
300
- const nextLine = lines[line + 1];
301
- if (offset >= currentLine.startOffset && (!nextLine || offset < nextLine.startOffset)) {
302
- const leadingWhitepace = currentLine.isPrecededByNewline
303
- ? 0
304
- : currentLine.text.length - currentLine.text.trimStart().length;
305
- const column = Math.max(0, Math.min(offset - currentLine.startOffset - leadingWhitepace, currentLine.text.length));
306
- return {
307
- line,
308
- column,
309
- };
310
- }
311
- }
312
- // If we're past the last character, return the end of the last line
313
- const line = lines.length - 1;
314
- return {
315
- line,
316
- column: this.wrappedLines[line].text.length,
317
- };
318
- }
319
- get lineCount() {
320
- return this.wrappedLines.length;
321
- }
322
- equals(other) {
323
- return this.text === other.text && this.columns === other.columns;
324
- }
325
- }
326
- //# sourceMappingURL=Cursor.js.map