@aria-cli/cli 1.0.19 → 1.0.37

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 (294) hide show
  1. package/README.md +32 -46
  2. package/bin/aria.mjs +5718 -0
  3. package/package.json +33 -51
  4. package/bin/aria-dev.js +0 -2
  5. package/bin/aria.js +0 -14
  6. package/bin/install-owner-lease.d.ts +0 -8
  7. package/bin/install-owner-lease.js +0 -1
  8. package/dist/.aria-build-stamp.json +0 -4
  9. package/dist/attached-local-control-client.d.ts +0 -90
  10. package/dist/bootstrap-local-control-client.d.ts +0 -1
  11. package/dist/capability-aware-method-proxy.d.ts +0 -1
  12. package/dist/cli-context.d.ts +0 -31
  13. package/dist/cli-context.js +0 -1
  14. package/dist/commands/arions.d.ts +0 -14
  15. package/dist/commands/auth.d.ts +0 -27
  16. package/dist/commands/daemon.d.ts +0 -31
  17. package/dist/commands/definitions.d.ts +0 -19
  18. package/dist/commands/index.d.ts +0 -13
  19. package/dist/commands/index.js +0 -356
  20. package/dist/commands/login-handler.d.ts +0 -108
  21. package/dist/commands/logout-handler.d.ts +0 -24
  22. package/dist/commands/memory-handlers.d.ts +0 -15
  23. package/dist/commands/pairing.d.ts +0 -2
  24. package/dist/commands/peer-message-handler.d.ts +0 -7
  25. package/dist/commands/runtime-cutover-reset-command.d.ts +0 -2
  26. package/dist/commands/runtime-cutover-reset.d.ts +0 -26
  27. package/dist/commands/terminal-setup.d.ts +0 -3
  28. package/dist/config/aria-config.d.ts +0 -50
  29. package/dist/config/index.d.ts +0 -4
  30. package/dist/config/loader.d.ts +0 -17
  31. package/dist/config.d.ts +0 -53
  32. package/dist/config.js +0 -1
  33. package/dist/daemon-info.d.ts +0 -17
  34. package/dist/ensure-daemon.d.ts +0 -21
  35. package/dist/ensure-daemon.js +0 -4
  36. package/dist/event-loop-watchdog.d.ts +0 -31
  37. package/dist/headless/auth-orchestrator.d.ts +0 -19
  38. package/dist/headless/auth-service.d.ts +0 -15
  39. package/dist/headless/bootstrap-fast-path.d.ts +0 -12
  40. package/dist/headless/call-command.d.ts +0 -8
  41. package/dist/headless/daemon-service.d.ts +0 -14
  42. package/dist/headless/hook-actions.d.ts +0 -40
  43. package/dist/headless/hook-service.d.ts +0 -8
  44. package/dist/headless/kernel-services.d.ts +0 -8
  45. package/dist/headless/kernel.d.ts +0 -118
  46. package/dist/headless/operations/arion.d.ts +0 -3
  47. package/dist/headless/operations/auth.d.ts +0 -4
  48. package/dist/headless/operations/client.d.ts +0 -2
  49. package/dist/headless/operations/config.d.ts +0 -3
  50. package/dist/headless/operations/daemon.d.ts +0 -3
  51. package/dist/headless/operations/hook.d.ts +0 -3
  52. package/dist/headless/operations/index.d.ts +0 -10
  53. package/dist/headless/operations/memory.d.ts +0 -3
  54. package/dist/headless/operations/message.d.ts +0 -2
  55. package/dist/headless/operations/model.d.ts +0 -3
  56. package/dist/headless/operations/peer.d.ts +0 -2
  57. package/dist/headless/operations/run.d.ts +0 -3
  58. package/dist/headless/operations/session.d.ts +0 -74
  59. package/dist/headless/operations/subscription.d.ts +0 -2
  60. package/dist/headless/operations/system.d.ts +0 -3
  61. package/dist/headless/operations/utils.d.ts +0 -5
  62. package/dist/headless/run-orchestrator.d.ts +0 -38
  63. package/dist/headless/stdio-server.d.ts +0 -4
  64. package/dist/history/SessionHistory.d.ts +0 -200
  65. package/dist/history/conversation-message.d.ts +0 -181
  66. package/dist/history/index.d.ts +0 -8
  67. package/dist/history/index.js +0 -321
  68. package/dist/history/jsonl-replay.d.ts +0 -38
  69. package/dist/history/repair-tool-pairing.d.ts +0 -14
  70. package/dist/history/turn-accumulator.d.ts +0 -85
  71. package/dist/index.d.ts +0 -6
  72. package/dist/index.js +0 -503
  73. package/dist/ink-repl.d.ts +0 -32
  74. package/dist/ink-repl.js +0 -491
  75. package/dist/local-control-bootstrap.d.ts +0 -5
  76. package/dist/local-control-client.d.ts +0 -1
  77. package/dist/local-control-client.js +0 -4
  78. package/dist/local-control-error-reporting.d.ts +0 -6
  79. package/dist/local-control-http-client.d.ts +0 -9
  80. package/dist/network-security.d.ts +0 -7
  81. package/dist/networking-server.d.ts +0 -28
  82. package/dist/peer-identity.d.ts +0 -3
  83. package/dist/polling-subscription.d.ts +0 -7
  84. package/dist/relaunch.d.ts +0 -55
  85. package/dist/release-notes.d.ts +0 -11
  86. package/dist/repl-cleanup.d.ts +0 -20
  87. package/dist/repl-cleanup.js +0 -1
  88. package/dist/selectable-client.d.ts +0 -7
  89. package/dist/selectable-peer.d.ts +0 -12
  90. package/dist/session.d.ts +0 -103
  91. package/dist/session.js +0 -1
  92. package/dist/slash-commands.d.ts +0 -34
  93. package/dist/sounds.d.ts +0 -31
  94. package/dist/ui/App.d.ts +0 -288
  95. package/dist/ui/components/AnthropicMethodPicker.d.ts +0 -9
  96. package/dist/ui/components/ArionPrompt.d.ts +0 -8
  97. package/dist/ui/components/AutocompleteDropdown.d.ts +0 -9
  98. package/dist/ui/components/AutonomySelector.d.ts +0 -12
  99. package/dist/ui/components/Banner.d.ts +0 -9
  100. package/dist/ui/components/ConversationHistory.d.ts +0 -59
  101. package/dist/ui/components/CopilotDeviceLoginFlow.d.ts +0 -15
  102. package/dist/ui/components/CopilotSourcePicker.d.ts +0 -13
  103. package/dist/ui/components/Cost.d.ts +0 -8
  104. package/dist/ui/components/CustomSelect/option-map.d.ts +0 -15
  105. package/dist/ui/components/CustomSelect/select-option.d.ts +0 -20
  106. package/dist/ui/components/CustomSelect/select.d.ts +0 -55
  107. package/dist/ui/components/CustomSelect/use-select-state.d.ts +0 -99
  108. package/dist/ui/components/CustomSelect/use-select.d.ts +0 -14
  109. package/dist/ui/components/ErrorDisplay.d.ts +0 -26
  110. package/dist/ui/components/FallbackToolUseRejectedMessage.d.ts +0 -2
  111. package/dist/ui/components/FileEditToolUpdatedMessage.d.ts +0 -9
  112. package/dist/ui/components/HandoffMarker.d.ts +0 -17
  113. package/dist/ui/components/HighlightedCode.d.ts +0 -7
  114. package/dist/ui/components/InputArea.d.ts +0 -17
  115. package/dist/ui/components/Message.d.ts +0 -16
  116. package/dist/ui/components/OAuthLoginFlow.d.ts +0 -25
  117. package/dist/ui/components/OutputTruncation.d.ts +0 -16
  118. package/dist/ui/components/PermissionPrompt.d.ts +0 -22
  119. package/dist/ui/components/PipelineTimingPanel.d.ts +0 -13
  120. package/dist/ui/components/ProviderMethodPicker.d.ts +0 -16
  121. package/dist/ui/components/ProviderPicker.d.ts +0 -15
  122. package/dist/ui/components/RenderItemView.d.ts +0 -18
  123. package/dist/ui/components/Spinner.d.ts +0 -3
  124. package/dist/ui/components/StatusBar.d.ts +0 -78
  125. package/dist/ui/components/StreamingIndicator.d.ts +0 -11
  126. package/dist/ui/components/StructuredDiff.d.ts +0 -20
  127. package/dist/ui/components/TextInputOverlay.d.ts +0 -9
  128. package/dist/ui/components/ThinkingBlock.d.ts +0 -53
  129. package/dist/ui/components/ToolCost.d.ts +0 -8
  130. package/dist/ui/components/ToolExecution.d.ts +0 -13
  131. package/dist/ui/components/ToolHeader.d.ts +0 -10
  132. package/dist/ui/components/ToolRenderLayoutContext.d.ts +0 -10
  133. package/dist/ui/components/ToolResultWrapper.d.ts +0 -6
  134. package/dist/ui/components/ToolUseLoader.d.ts +0 -10
  135. package/dist/ui/components/TraceWaterfall.d.ts +0 -56
  136. package/dist/ui/components/index.d.ts +0 -29
  137. package/dist/ui/components/messages/AssistantTextMessage.d.ts +0 -13
  138. package/dist/ui/components/messages/UserImageMessage.d.ts +0 -8
  139. package/dist/ui/components/messages/UserTextMessage.d.ts +0 -13
  140. package/dist/ui/components/overlays/ArionSelector.d.ts +0 -18
  141. package/dist/ui/components/overlays/ClientSelector.d.ts +0 -7
  142. package/dist/ui/components/overlays/CommandPalette.d.ts +0 -14
  143. package/dist/ui/components/overlays/InviteShareOverlay.d.ts +0 -7
  144. package/dist/ui/components/overlays/JoinInviteOverlay.d.ts +0 -6
  145. package/dist/ui/components/overlays/MemoryBrowser.d.ts +0 -17
  146. package/dist/ui/components/overlays/MessageSelector.d.ts +0 -20
  147. package/dist/ui/components/overlays/ModelSelector.d.ts +0 -17
  148. package/dist/ui/components/overlays/PairRequestOverlay.d.ts +0 -19
  149. package/dist/ui/components/overlays/PeerSelector.d.ts +0 -14
  150. package/dist/ui/components/overlays/SessionSelector.d.ts +0 -11
  151. package/dist/ui/components/overlays/ThemeSelector.d.ts +0 -22
  152. package/dist/ui/components/overlays/index.d.ts +0 -13
  153. package/dist/ui/components/permissions/BashPermissionRequest/BashPermissionRequest.d.ts +0 -9
  154. package/dist/ui/components/permissions/FallbackPermissionRequest.d.ts +0 -9
  155. package/dist/ui/components/permissions/FileEditPermissionRequest/FileEditPermissionRequest.d.ts +0 -9
  156. package/dist/ui/components/permissions/FileEditPermissionRequest/FileEditToolDiff.d.ts +0 -11
  157. package/dist/ui/components/permissions/FileWritePermissionRequest/FileWritePermissionRequest.d.ts +0 -9
  158. package/dist/ui/components/permissions/FileWritePermissionRequest/FileWriteToolDiff.d.ts +0 -9
  159. package/dist/ui/components/permissions/FilesystemPermissionRequest/FilesystemPermissionRequest.d.ts +0 -5
  160. package/dist/ui/components/permissions/PermissionRequest.d.ts +0 -52
  161. package/dist/ui/components/permissions/PermissionRequestTitle.d.ts +0 -13
  162. package/dist/ui/components/permissions/hooks.d.ts +0 -10
  163. package/dist/ui/components/permissions/toolUseOptions.d.ts +0 -10
  164. package/dist/ui/components/permissions/utils.d.ts +0 -6
  165. package/dist/ui/components/text-input/Cursor.d.ts +0 -58
  166. package/dist/ui/components/text-input/TextInput.d.ts +0 -98
  167. package/dist/ui/components/text-input/imagePaste.d.ts +0 -2
  168. package/dist/ui/components/text-input/index.d.ts +0 -6
  169. package/dist/ui/components/text-input/useDoublePress.d.ts +0 -2
  170. package/dist/ui/components/text-input/useTextInput.d.ts +0 -34
  171. package/dist/ui/components/tool-types.d.ts +0 -28
  172. package/dist/ui/constants/figures.d.ts +0 -1
  173. package/dist/ui/constants/index.d.ts +0 -1
  174. package/dist/ui/display-mode.d.ts +0 -62
  175. package/dist/ui/display-policy.d.ts +0 -3
  176. package/dist/ui/hooks/index.d.ts +0 -4
  177. package/dist/ui/hooks/useCommandAutocomplete.d.ts +0 -28
  178. package/dist/ui/hooks/useDoublePress.d.ts +0 -13
  179. package/dist/ui/hooks/useIndicatorState.d.ts +0 -3
  180. package/dist/ui/hooks/useInterval.d.ts +0 -6
  181. package/dist/ui/hooks/useKeyboardShortcuts.d.ts +0 -17
  182. package/dist/ui/hooks/usePeerMessages.d.ts +0 -26
  183. package/dist/ui/hooks/useTerminalSize.d.ts +0 -6
  184. package/dist/ui/hooks/useUnifiedMessages.d.ts +0 -83
  185. package/dist/ui/indicator-state.d.ts +0 -46
  186. package/dist/ui/markdown/highlight.d.ts +0 -8
  187. package/dist/ui/markdown/index.d.ts +0 -16
  188. package/dist/ui/markdown/tokenizer.d.ts +0 -17
  189. package/dist/ui/render-item.d.ts +0 -70
  190. package/dist/ui/screens/REPL.d.ts +0 -288
  191. package/dist/ui/status-line.d.ts +0 -32
  192. package/dist/ui/theme/index.d.ts +0 -8
  193. package/dist/ui/theme/themes/claude-dark-daltonized.d.ts +0 -2
  194. package/dist/ui/theme/themes/claude-dark.d.ts +0 -2
  195. package/dist/ui/theme/themes/claude-light-daltonized.d.ts +0 -2
  196. package/dist/ui/theme/themes/claude-light.d.ts +0 -2
  197. package/dist/ui/theme/themes/dark-accessible.d.ts +0 -2
  198. package/dist/ui/theme/themes/dark.d.ts +0 -2
  199. package/dist/ui/theme/themes/light-accessible.d.ts +0 -2
  200. package/dist/ui/theme/themes/light.d.ts +0 -2
  201. package/dist/ui/theme/types.d.ts +0 -51
  202. package/dist/ui/theme.d.ts +0 -51
  203. package/dist/ui/to-render-items.d.ts +0 -7
  204. package/dist/ui/tools/AgentTool/index.d.ts +0 -8
  205. package/dist/ui/tools/ArchitectTool/index.d.ts +0 -10
  206. package/dist/ui/tools/AskUserTool/index.d.ts +0 -19
  207. package/dist/ui/tools/BashTool/BashToolResultMessage.d.ts +0 -13
  208. package/dist/ui/tools/BashTool/OutputLine.d.ts +0 -6
  209. package/dist/ui/tools/BashTool/index.d.ts +0 -8
  210. package/dist/ui/tools/BrowseTool/index.d.ts +0 -20
  211. package/dist/ui/tools/BrowserTool/index.d.ts +0 -25
  212. package/dist/ui/tools/CbmTool/index.d.ts +0 -81
  213. package/dist/ui/tools/CheckDelegationTool/index.d.ts +0 -23
  214. package/dist/ui/tools/CheckMessagesTool/index.d.ts +0 -8
  215. package/dist/ui/tools/CreateQuipTool/index.d.ts +0 -10
  216. package/dist/ui/tools/CreateSkillTool/index.d.ts +0 -13
  217. package/dist/ui/tools/CreateToolTool/index.d.ts +0 -10
  218. package/dist/ui/tools/DelegateRemoteTool/index.d.ts +0 -22
  219. package/dist/ui/tools/DeployTool/index.d.ts +0 -24
  220. package/dist/ui/tools/FffTool/index.d.ts +0 -17
  221. package/dist/ui/tools/FileEditTool/index.d.ts +0 -10
  222. package/dist/ui/tools/FileReadTool/index.d.ts +0 -10
  223. package/dist/ui/tools/FileWriteTool/index.d.ts +0 -10
  224. package/dist/ui/tools/FrgTool/index.d.ts +0 -17
  225. package/dist/ui/tools/GetThreadTool/index.d.ts +0 -10
  226. package/dist/ui/tools/GlobTool/index.d.ts +0 -11
  227. package/dist/ui/tools/GrepTool/index.d.ts +0 -12
  228. package/dist/ui/tools/HatchArionTool/index.d.ts +0 -20
  229. package/dist/ui/tools/LearnSkillTool/index.d.ts +0 -13
  230. package/dist/ui/tools/LearnTool/index.d.ts +0 -15
  231. package/dist/ui/tools/LearnToolTool/index.d.ts +0 -14
  232. package/dist/ui/tools/ListClientsTool/index.d.ts +0 -10
  233. package/dist/ui/tools/LspTool/index.d.ts +0 -11
  234. package/dist/ui/tools/MCPTool/index.d.ts +0 -11
  235. package/dist/ui/tools/ManageNetworkTool/index.d.ts +0 -28
  236. package/dist/ui/tools/MemoryReadTool/index.d.ts +0 -8
  237. package/dist/ui/tools/MemoryWriteTool/index.d.ts +0 -6
  238. package/dist/ui/tools/NotebookEditTool/index.d.ts +0 -19
  239. package/dist/ui/tools/NotebookReadTool/index.d.ts +0 -12
  240. package/dist/ui/tools/OutlookReadTool/index.d.ts +0 -10
  241. package/dist/ui/tools/OutlookReplyTool/index.d.ts +0 -10
  242. package/dist/ui/tools/OutlookSendTool/index.d.ts +0 -10
  243. package/dist/ui/tools/PauseDelegationTool/index.d.ts +0 -20
  244. package/dist/ui/tools/ProbeTool/index.d.ts +0 -26
  245. package/dist/ui/tools/ProcessTool/index.d.ts +0 -29
  246. package/dist/ui/tools/QuestListTool/index.d.ts +0 -24
  247. package/dist/ui/tools/QuestReportTool/index.d.ts +0 -27
  248. package/dist/ui/tools/QuestUpdateTool/index.d.ts +0 -24
  249. package/dist/ui/tools/QuipCommentTool/index.d.ts +0 -23
  250. package/dist/ui/tools/QuipReadTool/index.d.ts +0 -26
  251. package/dist/ui/tools/RestArionTool/index.d.ts +0 -19
  252. package/dist/ui/tools/RestartTool/index.d.ts +0 -20
  253. package/dist/ui/tools/ResumeDelegationTool/index.d.ts +0 -21
  254. package/dist/ui/tools/RetireArionTool/index.d.ts +0 -19
  255. package/dist/ui/tools/RgTool/index.d.ts +0 -44
  256. package/dist/ui/tools/SearchKnowledgeTool/index.d.ts +0 -31
  257. package/dist/ui/tools/SearchMessagesTool/index.d.ts +0 -10
  258. package/dist/ui/tools/SelfDiagnoseTool/index.d.ts +0 -11
  259. package/dist/ui/tools/SendMessageTool/index.d.ts +0 -8
  260. package/dist/ui/tools/SerenaTool/index.d.ts +0 -18
  261. package/dist/ui/tools/SessionHistoryTool/index.d.ts +0 -32
  262. package/dist/ui/tools/SgTool/index.d.ts +0 -8
  263. package/dist/ui/tools/SlackReactTool/index.d.ts +0 -10
  264. package/dist/ui/tools/SlackReadTool/index.d.ts +0 -10
  265. package/dist/ui/tools/SlackSendTool/index.d.ts +0 -10
  266. package/dist/ui/tools/SpawnWorkerTool/index.d.ts +0 -18
  267. package/dist/ui/tools/StickerRequestTool/index.d.ts +0 -6
  268. package/dist/ui/tools/ThinkTool/index.d.ts +0 -8
  269. package/dist/ui/tools/UgTool/index.d.ts +0 -47
  270. package/dist/ui/tools/UseSkillTool/index.d.ts +0 -17
  271. package/dist/ui/tools/WakeArionTool/index.d.ts +0 -19
  272. package/dist/ui/tools/WebFetchTool/index.d.ts +0 -20
  273. package/dist/ui/tools/WebSearchTool/index.d.ts +0 -21
  274. package/dist/ui/tools/lsTool/index.d.ts +0 -12
  275. package/dist/ui/tools/registry.d.ts +0 -15
  276. package/dist/ui/tools/tool-renderer.d.ts +0 -24
  277. package/dist/ui/tools/truncation.d.ts +0 -6
  278. package/dist/ui/types/anthropic.d.ts +0 -19
  279. package/dist/ui/types/index.d.ts +0 -3
  280. package/dist/ui/types/message.d.ts +0 -19
  281. package/dist/ui/types/tool.d.ts +0 -17
  282. package/dist/ui/utils/array.d.ts +0 -1
  283. package/dist/ui/utils/cursor.d.ts +0 -28
  284. package/dist/ui/utils/diff.d.ts +0 -24
  285. package/dist/ui/utils/format.d.ts +0 -3
  286. package/dist/ui/utils/fuzzy.d.ts +0 -11
  287. package/dist/ui/utils/index.d.ts +0 -9
  288. package/dist/ui/utils/keys.d.ts +0 -6
  289. package/dist/ui/utils/patch.d.ts +0 -8
  290. package/dist/ui/utils/risk.d.ts +0 -14
  291. package/dist/ui/utils/terminal-image.d.ts +0 -18
  292. package/dist/ui/utils/validation.d.ts +0 -8
  293. package/dist/ui/verb-pairs.d.ts +0 -20
  294. package/dist/ui.d.ts +0 -70
@@ -1,108 +0,0 @@
1
- /**
2
- * Slash command handler for /login — authenticate with providers.
3
- *
4
- * Supports three result modes:
5
- * - PickerResult: `/login` with no args → return provider list for interactive picker
6
- * - DirectResult: `/login bedrock`, `/login anthropic <key>` → immediate result
7
- * - OAuthFlowResult: `/login anthropic` (no key) → trigger OAuth flow component
8
- */
9
- import type { ProviderOption } from "../ui/components/ProviderPicker.js";
10
- export interface CommandResult {
11
- success: boolean;
12
- message: string;
13
- }
14
- /** No args: return provider list for the picker component */
15
- export interface PickerResult {
16
- mode: "picker";
17
- providers: ProviderOption[];
18
- }
19
- /** Direct result (Bedrock SSO, API key saved, etc.) */
20
- export interface DirectResult {
21
- mode: "direct";
22
- result: CommandResult;
23
- }
24
- /** Need to render OAuthLoginFlow component */
25
- export interface OAuthFlowResult {
26
- mode: "oauth";
27
- provider: string;
28
- }
29
- /** Need to render Copilot device-code flow component */
30
- export interface CopilotDeviceFlowResult {
31
- mode: "copilot_device";
32
- provider: "github-copilot";
33
- profileLabel?: string;
34
- message?: string;
35
- }
36
- export interface CopilotSourceOption {
37
- id: string;
38
- label: string;
39
- source: "gh" | "copilot" | "device" | "env";
40
- token?: string;
41
- login?: string;
42
- profileLabel?: string;
43
- status: "connected" | "none";
44
- }
45
- export interface CopilotSourcePickerResult {
46
- mode: "copilot_source_picker";
47
- provider: "github-copilot";
48
- options: CopilotSourceOption[];
49
- }
50
- export interface AnthropicMethodOption {
51
- id: string;
52
- label: string;
53
- description: string;
54
- method: "subscription" | "console" | "bedrock" | "claude-cli" | "setup-token" | "api-key" | "env-key";
55
- status?: "connected" | "available" | "none";
56
- }
57
- export interface AnthropicMethodPickerResult {
58
- mode: "anthropic_method_picker";
59
- provider: "anthropic";
60
- options: AnthropicMethodOption[];
61
- }
62
- export interface AnthropicKeyInputResult {
63
- mode: "anthropic_key_input";
64
- provider: "anthropic";
65
- }
66
- export interface AnthropicSetupTokenResult {
67
- mode: "anthropic_setup_token";
68
- provider: "anthropic";
69
- }
70
- export interface OpenAIMethodOption {
71
- id: string;
72
- label: string;
73
- description: string;
74
- method: "env-key" | "profile" | "codex-import" | "api-key";
75
- status?: "connected" | "available" | "none";
76
- }
77
- export interface OpenAIMethodPickerResult {
78
- mode: "openai_method_picker";
79
- provider: "openai";
80
- options: OpenAIMethodOption[];
81
- }
82
- export interface OpenAIKeyInputResult {
83
- mode: "openai_key_input";
84
- provider: "openai";
85
- }
86
- export interface GoogleMethodOption {
87
- id: string;
88
- label: string;
89
- description: string;
90
- method: "env-key" | "profile" | "gemini-import" | "api-key" | "oauth";
91
- status?: "connected" | "available" | "none";
92
- }
93
- export interface GoogleMethodPickerResult {
94
- mode: "google_method_picker";
95
- provider: "google";
96
- options: GoogleMethodOption[];
97
- }
98
- export interface GoogleKeyInputResult {
99
- mode: "google_key_input";
100
- provider: "google";
101
- }
102
- export type LoginResult = PickerResult | DirectResult | OAuthFlowResult | CopilotDeviceFlowResult | CopilotSourcePickerResult | AnthropicMethodPickerResult | AnthropicKeyInputResult | AnthropicSetupTokenResult | OpenAIMethodPickerResult | OpenAIKeyInputResult | GoogleMethodPickerResult | GoogleKeyInputResult;
103
- export declare function handleAnthropicMethodSelection(methodId: string): Promise<LoginResult>;
104
- export declare function handleOpenAIMethodSelection(methodId: string): Promise<LoginResult>;
105
- export declare function handleGoogleMethodSelection(methodId: string): Promise<LoginResult>;
106
- export declare function getProviderOptions(): ProviderOption[];
107
- export declare function loginProvider(provider: string, args?: string): Promise<LoginResult>;
108
- export declare function handleLoginCommand(args: string): Promise<LoginResult>;
@@ -1,24 +0,0 @@
1
- /**
2
- * Slash command handler for /logout -- disconnect providers and clear credentials.
3
- *
4
- * Supports two result modes:
5
- * - PickerResult: `/logout` with no args -> list connected/expired providers
6
- * - DirectResult: `/logout <provider>` or `/logout all` -> immediate disconnect
7
- */
8
- import type { ProviderOption } from "../ui/components/ProviderPicker.js";
9
- export interface CommandResult {
10
- success: boolean;
11
- message: string;
12
- }
13
- /** No args: return list of connected/expired providers for the user to choose from */
14
- export interface LogoutPickerResult {
15
- mode: "picker";
16
- providers: ProviderOption[];
17
- }
18
- /** Direct result (provider disconnected, all cleared, etc.) */
19
- export interface LogoutDirectResult {
20
- mode: "direct";
21
- result: CommandResult;
22
- }
23
- export type LogoutResult = LogoutPickerResult | LogoutDirectResult;
24
- export declare function handleLogoutCommand(args: string): LogoutResult;
@@ -1,15 +0,0 @@
1
- /**
2
- * Slash command handlers for memory operations.
3
- *
4
- * Thin wrappers around Memoria API for testable command dispatch.
5
- * Used by the REPL command pipeline and E2E tests.
6
- */
7
- import type { IMemoria } from "@aria-cli/types";
8
- export interface CommandResult {
9
- success: boolean;
10
- message: string;
11
- data?: unknown;
12
- }
13
- export declare function handleRememberCommand(args: string, memoria: IMemoria): Promise<CommandResult>;
14
- export declare function handleRecallCommand(args: string, memoria: IMemoria): Promise<CommandResult>;
15
- export declare function handleForgetCommand(args: string, memoria: IMemoria): Promise<CommandResult>;
@@ -1,2 +0,0 @@
1
- import { Command } from "commander";
2
- export declare function createPairingCommand(): Command;
@@ -1,7 +0,0 @@
1
- import type { LocalControlApi, RuntimeDeliveryReceipt } from "@aria-cli/tools";
2
- export interface PeerMessageCommandResult {
3
- success: boolean;
4
- message: string;
5
- receipt?: RuntimeDeliveryReceipt;
6
- }
7
- export declare function handleSendCommand(args: string, localControl: LocalControlApi, senderName: string): Promise<PeerMessageCommandResult>;
@@ -1,2 +0,0 @@
1
- import { Command } from "commander";
2
- export declare function createRuntimeCutoverResetCommand(): Command;
@@ -1,26 +0,0 @@
1
- export interface RuntimeCutoverResetOptions {
2
- ariaHome?: string;
3
- fullReset?: boolean;
4
- fullNodeReset?: boolean;
5
- preserveLocalNodeIdentity?: boolean;
6
- json?: boolean;
7
- }
8
- export interface RuntimeCutoverResetReport {
9
- ariaHome: string;
10
- runtimeRoot: string;
11
- generatedAt: string;
12
- fullReset: boolean;
13
- fullNodeReset: boolean;
14
- preserveLocalNodeIdentity: boolean;
15
- reportPath: string;
16
- removedPaths: string[];
17
- deletedPaths: string[];
18
- preservedPaths: string[];
19
- skippedPaths: string[];
20
- cleared: {
21
- runtimeOwnerRecords: number;
22
- runtimeEvents: number;
23
- };
24
- }
25
- export declare function runRuntimeCutoverReset(options?: RuntimeCutoverResetOptions): Promise<RuntimeCutoverResetReport>;
26
- export declare function runtimeCutoverResetCommand(options?: RuntimeCutoverResetOptions): Promise<void>;
@@ -1,3 +0,0 @@
1
- export declare function isShiftEnterKeyBindingInstalled(): boolean;
2
- export declare function isTerminalSetupSupported(): boolean;
3
- export declare function runTerminalSetup(): string;
@@ -1,50 +0,0 @@
1
- /**
2
- * ARIA Display & Persistence Configuration
3
- *
4
- * Loads user preferences from ~/.aria/config.yaml and merges them with
5
- * MODE_PRESETS to produce the final display configuration. This implements
6
- * the 4-layer merge strategy:
7
- *
8
- * MODE_PRESETS[mode] -> config file -> CLI flags -> hotkey toggles
9
- *
10
- * All config options control UI presentation density, NOT feature availability.
11
- * ObservabilityContext always captures everything regardless of display settings.
12
- */
13
- import { type DisplayMode, type DisplayConfig } from "../ui/display-mode.js";
14
- import type { ThemeName } from "../ui/theme/index.js";
15
- export interface PersistenceConfig {
16
- jsonlEnabled: boolean;
17
- jsonlRetentionDays: number;
18
- jsonlMaxSizeMb: number;
19
- otelEndpoint: string | null;
20
- }
21
- export interface FullDisplayConfig extends DisplayConfig {
22
- mode: DisplayMode;
23
- theme?: ThemeName;
24
- syntaxHighlighting: boolean;
25
- maxToolOutputLines: number;
26
- maxThinkingPreview: number;
27
- }
28
- export interface AriaDisplayConfig {
29
- display: FullDisplayConfig;
30
- persistence: PersistenceConfig;
31
- }
32
- /**
33
- * Merge display config layers: preset -> file -> overrides.
34
- *
35
- * Each layer is a partial DisplayConfig. Values from later layers
36
- * override earlier ones. Missing values fall through to the preset.
37
- */
38
- export declare function mergeDisplayConfig(preset: DisplayConfig, fileOverrides?: Partial<DisplayConfig>, cliOverrides?: Partial<DisplayConfig>): DisplayConfig;
39
- /**
40
- * Load the full ARIA display/persistence config.
41
- *
42
- * Resolution order:
43
- * 1. Start with MODE_PRESETS[mode] (default: "standard")
44
- * 2. Overlay values from ~/.aria/config.yaml (if exists)
45
- * 3. Return merged AriaDisplayConfig
46
- *
47
- * If the file doesn't exist, returns defaults silently.
48
- * If the file is malformed YAML, logs a warning and returns defaults.
49
- */
50
- export declare function loadAriaDisplayConfig(configPath?: string): AriaDisplayConfig;
@@ -1,4 +0,0 @@
1
- export { loadAriaProjectConfig, loadAriaProjectConfig as loadAriaConfig } from "./loader.js";
2
- export type { AriaProjectConfig, AriaProjectConfig as AriaConfig } from "./loader.js";
3
- export { loadAriaDisplayConfig, mergeDisplayConfig } from "./aria-config.js";
4
- export type { AriaDisplayConfig, FullDisplayConfig, PersistenceConfig } from "./aria-config.js";
@@ -1,17 +0,0 @@
1
- /**
2
- * ARIA CLI Configuration Loader
3
- *
4
- * Loads configuration from project and global locations.
5
- */
6
- import type { MCPServerConfig } from "@aria-cli/tools";
7
- export interface AriaProjectConfig {
8
- mcp?: {
9
- servers: MCPServerConfig[];
10
- };
11
- }
12
- /**
13
- * Load configuration from all sources
14
- *
15
- * Precedence: project > global > defaults
16
- */
17
- export declare function loadAriaProjectConfig(projectDir?: string): Promise<AriaProjectConfig>;
package/dist/config.d.ts DELETED
@@ -1,53 +0,0 @@
1
- /**
2
- * Shared configuration utilities for ARIA CLI
3
- */
4
- import { type ModelTier } from "@aria-cli/models";
5
- import type { EffortLevel } from "@aria-cli/types";
6
- /**
7
- * Get the ARIA home directory.
8
- * Respects ARIA_HOME env var for testing and custom deployments.
9
- */
10
- export declare function getAriaDir(): string;
11
- /**
12
- * Get the config file path
13
- */
14
- export declare function getConfigPath(): string;
15
- /**
16
- * Config file structure
17
- */
18
- export interface AriaConfig {
19
- activeArion?: string;
20
- preferredTier?: ModelTier;
21
- defaultModel?: string;
22
- anthropicApiKey?: string;
23
- openaiApiKey?: string;
24
- googleApiKey?: string;
25
- /** AWS region for Bedrock provider (falls back to AWS_REGION env var) */
26
- awsRegion?: string;
27
- /** AWS profile for Bedrock SSO auth (falls back to AWS_PROFILE env var) */
28
- awsProfile?: string;
29
- /** Whether Shift+Enter terminal key binding has been installed */
30
- shiftEnterKeyBindingInstalled?: boolean;
31
- /** User-selected color theme (persisted from /theme command) */
32
- theme?: string;
33
- /** Autonomy level — persisted across sessions (default: "balanced") */
34
- autonomy?: "minimal" | "balanced" | "high" | "full";
35
- /** Effort level controlling thinking depth — persisted across sessions (default: "high") */
36
- effortLevel?: EffortLevel;
37
- /** Warcraft sound notifications — default true */
38
- soundEnabled?: boolean;
39
- }
40
- /**
41
- * Load configuration from ~/.aria/config.json
42
- * Automatically migrates legacy defaultModel to preferredTier.
43
- *
44
- * This is the canonical config loader — use this instead of inline
45
- * JSON.parse to ensure migration logic runs consistently.
46
- */
47
- export declare function loadAndMigrateConfig(): AriaConfig;
48
- /** @deprecated Use loadAndMigrateConfig() */
49
- export declare const loadConfig: typeof loadAndMigrateConfig;
50
- /**
51
- * Save configuration to ~/.aria/config.json
52
- */
53
- export declare function saveConfig(config: AriaConfig): void;
package/dist/config.js DELETED
@@ -1 +0,0 @@
1
- import{createRequire as Z}from"node:module";var R=Object.defineProperty;var U=(k)=>k;function W(k,b){this[k]=U.bind(null,b)}var X=(k,b)=>{for(var q in b)R(k,q,{get:b[q],enumerable:!0,configurable:!0,set:W.bind(b,q)})};var Y=(k,b)=>()=>(k&&(b=k(k=0)),b);var N=Z(import.meta.url);var p={};X(p,{saveConfig:()=>F,loadConfig:()=>j,loadAndMigrateConfig:()=>Q,getConfigPath:()=>H,getAriaDir:()=>G});import*as x from"fs";import*as O from"os";import{getModelById as _,getModelByShortName as $,isValidTier as L}from"@aria-cli/models";import{log as z}from"@aria-cli/types";function G(){if(process.env.ARIA_HOME)return process.env.ARIA_HOME;return`${process.env.HOME||O.homedir()}/.aria`}function H(){return`${G()}/config.json`}function Q(){try{let k=H();if(x.existsSync(k)){let b=JSON.parse(x.readFileSync(k,"utf-8"));try{if(b.defaultModel&&!b.preferredTier){let J=_(b.defaultModel)||$(b.defaultModel);if(!J)z.warn(`Unknown model "${b.defaultModel}" migrated to balanced tier (Sonnet 4.5)`);let K=J?.tier||"balanced";b.preferredTier=L(K)?K:"balanced",delete b.defaultModel,F(b)}if(b.preferredTier!==void 0&&!L(b.preferredTier))z.warn(`Invalid tier "${b.preferredTier}" corrected to balanced tier`),b.preferredTier="balanced",F(b);let q=!1;if(!b.awsRegion&&process.env.AWS_REGION)b.awsRegion=process.env.AWS_REGION,q=!0;if(!b.awsProfile&&process.env.AWS_PROFILE)b.awsProfile=process.env.AWS_PROFILE,q=!0;if(q)F(b)}catch(q){z.warn("Config migration failed, using config as-is:",q instanceof Error?q.message:q)}return b}}catch(k){z.warn("[Config] Failed to load config file:",k)}return{}}function F(k){let b=G();if(!x.existsSync(b))x.mkdirSync(b,{recursive:!0});x.writeFileSync(H(),JSON.stringify(k,null,2),"utf-8")}var j;var u=Y(()=>{j=Q});u();export{F as saveConfig,j as loadConfig,Q as loadAndMigrateConfig,H as getConfigPath,G as getAriaDir};
@@ -1,17 +0,0 @@
1
- /**
2
- * Legacy daemon-info / presence helpers.
3
- *
4
- * The runtime-owner architecture no longer allows attach/discovery through
5
- * daemon-info files or per-process presence files. Keep this module only to
6
- * document that these APIs were removed in favor of HostSupervisor and
7
- * local-control attach.
8
- */
9
- import type { NodeId } from "@aria-cli/tools";
10
- export interface DaemonInfo {
11
- port: number;
12
- pid: number;
13
- arionName: string;
14
- nodeId?: NodeId;
15
- startedAt: number;
16
- }
17
- export declare const LEGACY_RUNTIME_DISCOVERY_REMOVED = "[daemon-info] Legacy daemon-info/presence attach is removed. Use HostSupervisor/runtime-owner records and local-control attach instead.";
@@ -1,21 +0,0 @@
1
- /**
2
- * Universal daemon connection for all CLI subcommands.
3
- *
4
- * One function, one pattern:
5
- * 1. Find running daemon → verify PID alive → connect to socket
6
- * 2. Dead/missing daemon → clean stale records → spawn → connect
7
- *
8
- * Every CLI path (pairing, call, headless) uses this. No scoped runtimes,
9
- * no split-brain, no WG port conflicts. The daemon owns the runtime.
10
- */
11
- import type { LocalControlApi } from "@aria-cli/tools";
12
- import type { CliContext } from "./cli-context.js";
13
- export interface DaemonConnection {
14
- control: LocalControlApi;
15
- release(): Promise<void>;
16
- }
17
- /**
18
- * Connect to a running daemon, or spawn one if none exists.
19
- * This is the ONLY way CLI subcommands should obtain a control client.
20
- */
21
- export declare function ensureDaemon(ctx: CliContext): Promise<DaemonConnection>;
@@ -1,4 +0,0 @@
1
- import{createRequire as KB}from"node:module";var FB=Object.defineProperty;var UB=(B)=>B;function bB(B,$){this[B]=UB.bind(null,$)}var T=(B,$)=>{for(var z in $)FB(B,z,{get:$[z],enumerable:!0,configurable:!0,set:bB.bind($,z)})};var y=(B,$)=>()=>(B&&($=B(B=0)),$);var H=KB(import.meta.url);var jB={};T(jB,{saveConfig:()=>E,loadConfig:()=>PB,loadAndMigrateConfig:()=>c,getConfigPath:()=>x,getAriaDir:()=>I});import*as P from"fs";import*as d from"os";import{getModelById as RB,getModelByShortName as qB,isValidTier as u}from"@aria-cli/models";import{log as A}from"@aria-cli/types";function I(){if(process.env.ARIA_HOME)return process.env.ARIA_HOME;return`${process.env.HOME||d.homedir()}/.aria`}function x(){return`${I()}/config.json`}function c(){try{let B=x();if(P.existsSync(B)){let $=JSON.parse(P.readFileSync(B,"utf-8"));try{if($.defaultModel&&!$.preferredTier){let Z=RB($.defaultModel)||qB($.defaultModel);if(!Z)A.warn(`Unknown model "${$.defaultModel}" migrated to balanced tier (Sonnet 4.5)`);let J=Z?.tier||"balanced";$.preferredTier=u(J)?J:"balanced",delete $.defaultModel,E($)}if($.preferredTier!==void 0&&!u($.preferredTier))A.warn(`Invalid tier "${$.preferredTier}" corrected to balanced tier`),$.preferredTier="balanced",E($);let z=!1;if(!$.awsRegion&&process.env.AWS_REGION)$.awsRegion=process.env.AWS_REGION,z=!0;if(!$.awsProfile&&process.env.AWS_PROFILE)$.awsProfile=process.env.AWS_PROFILE,z=!0;if(z)E($)}catch(z){A.warn("Config migration failed, using config as-is:",z instanceof Error?z.message:z)}return $}}catch(B){A.warn("[Config] Failed to load config file:",B)}return{}}function E(B){let $=I();if(!P.existsSync($))P.mkdirSync($,{recursive:!0});P.writeFileSync(x(),JSON.stringify(B,null,2),"utf-8")}var PB;var a=y(()=>{PB=c});import{RuntimeBootstrapRecordSchema as V$}from"@aria-cli/tools";function yB(B){return B==="control_ready"||B==="network_ready"||B==="mesh_ready"}function l(B,$){if($.nodeId!==B)throw Error(`[local-control-client] Runtime bootstrap node mismatch for ${B}: received ${$.nodeId}`);if(!yB($.phase))throw Error(`[local-control-client] Runtime bootstrap for ${B} is not attachable (phase=${$.phase})`);return $}var p=()=>{};async function HB(){let B=I();if(S?.ariaDir===B)return S.handler;let{CentralErrorHandler:$}=await import("@aria-cli/aria/error-handler"),z=new $({ariaDir:B});return S={ariaDir:B,handler:z},z}async function s(B,$){await(await HB()).report(B,{workingDir:process.cwd(),providerState:{lastProvider:"trusted-local-control",lastModel:$.endpoint,...typeof $.responseStatus==="number"?{lastStatusCode:$.responseStatus}:{}},configSnapshot:{transport:$.transport,endpoint:$.endpoint,...typeof $.responseStatus==="number"?{responseStatus:$.responseStatus}:{},payload:$.payload}})}var S;var i=y(()=>{a()});var XB={};T(XB,{resolveLocalControlClientSync:()=>v,resolveLocalControlClient:()=>N,requestRuntimeSocketLease:()=>w,createResilientAttachedClient:()=>L,attachLocalControlClient:()=>h,attachExistingLocalControlClient:()=>C});import*as o from"node:net";import{appendFileSync as OB,mkdirSync as MB}from"node:fs";import{join as BB}from"node:path";import{randomUUID as TB}from"node:crypto";import{createRuntimeSocketAttachedLocalControlClient as $B,createRuntimeSocketLocalControlClient as IB,createTrustedRuntimeError as DB,AttachedClientLeaseGrantSchema as NB,LocalControlSocketAttachClientRequestSchema as AB,LocalControlSocketAttachClientResponseSchema as EB,LocalControlSocketRequestSchema as kB,LocalControlSocketResponseSchema as wB}from"@aria-cli/tools";async function zB(B){await new Promise(($)=>setTimeout($,Math.max(B,0)))}function SB(){return r??=import("@aria-cli/server/runtime/host-supervisor"),r}function fB(){return n??=import("@aria-cli/server/runtime/node-metadata"),n}function CB(){return t??=import("@aria-cli/server/runtime/node-store"),t}async function QB(B){let{resolveOrCreateNode:$}=await fB();return $({ariaHome:B})}async function k(B,$){let{NodeStore:z}=await CB(),Z=new z({ariaHome:B});try{return Z.readRuntimeOwnerRecord($)}finally{Z.close()}}function f(B){if(!(B instanceof Error))return!1;let $=B.message;return $.includes("connect ENOENT")||$.includes("ECONNREFUSED")||$.includes("Missing runtime owner record")||$.includes("not attachable")||$.includes("not control-ready")}async function D(B){let $=await k(B.ariaHome,B.nodeId);if(!$)throw Error(`[local-control-client] Missing runtime owner record for node ${B.nodeId}`);let z=hB({runtimeSocket:$.runtimeSocket,pollIntervalMs:B.pollIntervalMs}),Z=l(B.nodeId,await z.getRuntimeBootstrap()),J,G,X;if(B.clientKind)X=await L({runtimeSocket:$.runtimeSocket,clientKind:B.clientKind,logDir:BB(B.ariaHome,"logs")}),J=X.getClientId(),G=X.getClientAuthToken();let Q=null;return{nodeId:B.nodeId,runtimeId:Z.runtimeId,port:Z.controlEndpoint.port,ownership:B.ownership,...J?{attachedClientId:J}:{},...G?{attachedClientAuthToken:G}:{},control:X?X.api:z,release:async(W)=>{if(Q)return Q;return Q=(async()=>{let U=X;X=void 0,J=void 0,G=void 0,await U?.release().catch(()=>{}),await B.release(W)})(),Q}}}async function w(B,$){let z=kB.parse({id:TB(),method:"attachClient",payload:$});return new Promise((Z,J)=>{let G=o.createConnection(B),X="",Q=!1,W=!1,U,K=new Promise((q)=>{U=q}),b=()=>{if(W)return;if(W=!0,U?.(),!Q)Q=!0,J(Error("Local control socket closed before establishing an attached-client lease"))};G.setEncoding("utf8"),G.once("connect",()=>{G.write(`${JSON.stringify(z)}
2
- `)}),G.once("error",(q)=>{if(!Q){Q=!0,J(q);return}b()}),G.once("end",b),G.once("close",b),G.on("data",async(q)=>{X+=q;let M=X.indexOf(`
3
- `);if(M===-1||Q)return;try{let V=wB.parse(JSON.parse(X.slice(0,M)));if(V.id!==z.id){Q=!0,G.destroy(),J(Error("Local control socket response ID mismatch"));return}if(!V.ok){let F=DB(V.error,V.diagnostic);await s(F,{endpoint:"attachClient",responseStatus:null,payload:V,transport:"runtime_socket_attach"}),Q=!0,G.destroy(),J(F);return}let Y=NB.parse(EB.parse(V.payload));Q=!0,Z({clientId:Y.clientId,clientAuthToken:Y.clientAuthToken,release:async()=>{if(!W)G.destroy();await K}})}catch(V){Q=!0,G.destroy(),J(V)}})})}async function C(B){let $=await QB(B.ariaHome);if(!await k(B.ariaHome,$.nodeId))return null;let z=Date.now()+LB;while(Date.now()<z)try{return await D({ariaHome:B.ariaHome,nodeId:$.nodeId,ownership:"reattached",release:async()=>{},pollIntervalMs:B.pollIntervalMs,clientKind:B.clientKind})}catch(Z){if(!f(Z))throw Z;if(!await k(B.ariaHome,$.nodeId))return null;await zB(xB)}return null}function hB(B){if(B.auth)return $B({runtimeSocket:B.runtimeSocket,pollIntervalMs:B.pollIntervalMs,auth:B.auth});return IB(B)}async function h(B){let $=async(X,Q)=>{let W=B.pollIntervalMs??100,U=Date.now()+Math.max(W*20,2000),K=null;while(Date.now()<U){if(B.signal?.aborted)throw Error(`[local-control-client] Attach-only client ${Q} aborted while waiting for a live runtime owner on node ${X}`);try{if(!await k(B.ariaHome,X))K=Error(`[local-control-client] No live runtime owner available for attach-only client ${Q} on node ${X}`);else return await D({ariaHome:B.ariaHome,nodeId:X,ownership:"reattached",release:async()=>{},pollIntervalMs:B.pollIntervalMs,clientKind:Q})}catch(b){if(!f(b))throw b;K=b}await zB(W)}throw K??Error(`[local-control-client] No live runtime owner available for attach-only client ${Q} on node ${X}`)},{getHostSupervisor:z,HostSupervisorSplitBrainError:Z}=await SB(),J=z(),G;try{G=await J.attach({ariaHome:B.ariaHome,arionName:B.arionName,clientKind:B.clientKind,memoriaFactory:B.memoriaFactory,router:B.router,authResolver:B.authResolver,runSessionConfig:B.runSessionConfig,mcpServers:B.mcpServers,daemonSafetyPolicy:B.daemonSafetyPolicy,autonomousIntervalMs:B.autonomousIntervalMs,signal:B.signal,silent:B.silent,runtimeLifecycle:B.runtimeLifecycle,port:B.port})}catch(X){if(X instanceof Z)return D({ariaHome:B.ariaHome,nodeId:X.nodeId,ownership:"reattached",release:async()=>{},pollIntervalMs:B.pollIntervalMs,clientKind:B.clientKind});throw X}try{return await G.runtime.waitForInitialDiscovery(),await D({ariaHome:B.ariaHome,nodeId:G.nodeId,ownership:G.ownership,pollIntervalMs:B.pollIntervalMs,clientKind:B.clientKind,release:(X)=>G.release(X)})}catch(X){throw await G.release(),X}}async function N(B){let $=await QB(B.ariaHome);try{return(await D({ariaHome:B.ariaHome,nodeId:$.nodeId,ownership:"reattached",release:async()=>{},pollIntervalMs:B.pollIntervalMs})).control}catch(z){if(f(z))return null;throw z}}function v(B){return null}function O(B){if(!(B instanceof Error))return!1;let $=B.message;if($.includes("attached-local-client-only"))return!0;if($.includes("ECONNRESET"))return!0;if($.includes("ECONNREFUSED"))return!0;if($.includes("EPIPE"))return!0;if($.includes("connect ENOENT"))return!0;if($.includes("socket hang up"))return!0;if($.includes("closed before"))return!0;return!1}function e(B){if(B<=0)return Promise.resolve();return new Promise(($)=>{setTimeout($,B).unref?.()})}async function L(B){let{runtimeSocket:$,clientKind:z="local-api"}=B,Z=!1,J,G,X=null,Q=null,W=(V)=>{if(!B.logDir)return;try{MB(B.logDir,{recursive:!0}),OB(BB(B.logDir,"reattach.jsonl"),JSON.stringify({ts:new Date().toISOString(),pid:process.pid,...V})+`
4
- `)}catch{}};async function U(){if(Q)await Q().catch(()=>{}),Q=null;let V=await w($,AB.parse({clientKind:z,lease:!0,pid:process.pid,displayName:B.displayName}));J=V.clientId,G=V.clientAuthToken,Q=()=>V.release(),X=$B({runtimeSocket:$,auth:{clientId:V.clientId,clientAuthToken:V.clientAuthToken}}),W({event:"lease_acquired",clientId:V.clientId})}await U();async function K(V,Y){if(Z)throw Error("ResilientAttachedClient has been released");try{return await Y(X)}catch(F){if(!O(F))throw F;W({event:"reattach_start",method:V,error:F.message});for(let _=0;_<j.length;_++){if(Z)throw Error("ResilientAttachedClient has been released");await e(j[_]??0);try{await U();let R=await Y(X);return W({event:"reattach_success",method:V,attempt:_}),R}catch(R){if(W({event:"reattach_retry_failed",method:V,attempt:_,error:R.message,willRetry:O(R)&&_<j.length-1}),!O(R)||_===j.length-1)throw R}}throw F}}async function*b(V,Y){if(Z)throw Error("ResilientAttachedClient has been released");try{yield*Y(X);return}catch(F){if(!O(F))throw F;W({event:"reattach_stream_start",method:V,error:F.message});for(let _=0;_<j.length;_++){if(Z)throw Error("ResilientAttachedClient has been released");await e(j[_]??0);try{await U(),yield*Y(X),W({event:"reattach_stream_success",method:V,attempt:_});return}catch(R){if(W({event:"reattach_stream_retry_failed",method:V,attempt:_,error:R.message,willRetry:O(R)&&_<j.length-1}),!O(R)||_===j.length-1)throw R}}}}let q=new Set(["streamRun","subscribeRuntimeEvents","subscribeInbox","subscribePeers","subscribeDirectClientInbox"]);return{api:new Proxy({},{get(V,Y){if(Y==="then"||Y==="catch"||Y==="finally")return;if(q.has(Y))return(...F)=>b(Y,(_)=>_[Y](...F));return(...F)=>K(Y,(_)=>_[Y](...F))}}),getClientId:()=>J,getClientAuthToken:()=>G,release:async()=>{Z=!0;let V=Error("release() caller").stack;if(Q)await Q().catch(()=>{}),Q=null;W({event:"released",clientId:J,releaseStack:V})}}}var LB=1e4,xB=250,r,n,t,j;var g=y(()=>{p();i();j=[0,250,500,1000]});var vB={};T(vB,{resolveLocalControlClientSync:()=>v,resolveLocalControlClient:()=>N,requestRuntimeSocketLease:()=>w,createResilientAttachedClient:()=>L,attachLocalControlClient:()=>h,attachExistingLocalControlClient:()=>C});var ZB=y(()=>{g()});var VB={};T(VB,{createDaemonService:()=>tB});import{spawn as gB}from"node:child_process";import{existsSync as GB,mkdirSync as mB,openSync as uB,closeSync as dB}from"node:fs";import JB from"node:path";import{fileURLToPath as m}from"node:url";function lB(B){return new Promise(($)=>setTimeout($,Math.max(B,0)))}function pB(){let B=m(new URL("../../../server/dist/daemon-launcher.js",import.meta.url));if(GB(B))return{command:process.execPath,args:[B]};try{let z=m(import.meta.resolve("@aria-cli/server/daemon-launcher"));if(GB(z))return{command:process.execPath,args:[z]}}catch{}let $=m(new URL("../../../server/src/daemon-launcher.ts",import.meta.url));return{command:process.execPath,args:["--import","tsx",$]}}function sB(B,$,z){return(typeof z.arion==="string"?z.arion.trim():"")||$||B.config.activeArion?.trim()||"ARIA"}function iB(B){return{...typeof B.intervalMs==="number"?{intervalMs:B.intervalMs}:{},...B.allowedToolCategories||B.allowedShellCommands||typeof B.maxWriteOpsPerMinute==="number"||typeof B.maxGitPushesPerHour==="number"?{safetyPolicy:{...Array.isArray(B.allowedToolCategories)?{allowedToolCategories:B.allowedToolCategories}:{},...Array.isArray(B.allowedShellCommands)?{allowedShellCommands:B.allowedShellCommands}:{},...typeof B.maxWriteOpsPerMinute==="number"?{maxWriteOpsPerMinute:B.maxWriteOpsPerMinute}:{},...typeof B.maxGitPushesPerHour==="number"?{maxGitPushesPerHour:B.maxGitPushesPerHour}:{}}}:{}}}async function rB(B){let $=Date.now()+cB,z=null;while(Date.now()<$){try{let Z=await N({ariaHome:B.ariaHome});if(Z){let J=await Z.getRuntimeStatus();if(!B.requireRunning||J.autonomousLoop.status==="running")return J}}catch(Z){z=Z instanceof Error?Z:Error(String(Z))}await lB(aB)}throw Error(z?.message??"Timed out waiting for the daemon runtime to become reachable")}function nB(B){let $=pB(),z=[...$.args,"--arion",B.arionName];if(typeof B.input.port==="number")z.push("--port",String(B.input.port));if(typeof B.input.intervalMs==="number")z.push("--interval-ms",String(B.input.intervalMs));if(Array.isArray(B.input.allowedToolCategories)&&B.input.allowedToolCategories.length>0)z.push("--allowed-tool-categories",B.input.allowedToolCategories.join(","));if(Array.isArray(B.input.allowedShellCommands)&&B.input.allowedShellCommands.length>0)z.push("--allowed-shell-commands",B.input.allowedShellCommands.join(","));if(typeof B.input.maxWriteOpsPerMinute==="number")z.push("--max-write-ops-per-minute",String(B.input.maxWriteOpsPerMinute));if(typeof B.input.maxGitPushesPerHour==="number")z.push("--max-git-pushes-per-hour",String(B.input.maxGitPushesPerHour));let Z=JB.join(B.ariaHome,"logs");mB(Z,{recursive:!0});let J=uB(JB.join(Z,"daemon-stderr.log"),"a");gB($.command,z,{cwd:B.cwd,env:{...process.env,ARIA_HOME:B.ariaHome},detached:!0,stdio:["ignore","ignore",J]}).unref(),dB(J)}function tB(B){let $=B.cli.ariaDir,z=!1,Z=()=>B.getArionName?.()??B.arionName??"ARIA",J=(X)=>{let Q=typeof X.arion==="string"?X.arion.trim():"",W=Z();if(Q&&Q!==W)throw Error(`daemon operations are scoped to ${W}; switch scope with arion.become before targeting ${Q}`);return Q||W},G=async()=>{if(!B.localControl)return null;try{return await B.localControl.getRuntimeStatus(),B.localControl}catch{return null}};return{async start(X){let Q=sB(B.cli,J(X),X),W=await G();if(!W)return z=!0,nB({ariaHome:$,cwd:B.cwd,arionName:Q,input:X}),rB({ariaHome:$,requireRunning:!0});let U=await W.getRuntimeStatus();if(U.autonomousLoop.status==="running")return z=!1,U;if(!W.startAutonomousLoop)throw Error("Live runtime does not expose autonomous-loop start control");return z=!0,W.startAutonomousLoop(iB(X))},async status(X={}){J(X);let Q=await G();if(!Q)throw Error("No live runtime is available for daemon.status");return Q.getRuntimeStatus()},async stop(X={}){J(X);let Q=await G();if(!Q)throw Error("No live runtime is available for daemon.stop");if(!Q.stopAutonomousLoop)throw Error("Live runtime does not expose autonomous-loop stop control");return z=!1,Q.stopAutonomousLoop()},shouldStopOnShutdown(){return z},async releaseAll(){}}}var cB=15000,aB=250;var WB=y(()=>{ZB()});var $$={};T($$,{ensureDaemon:()=>B$});import _B from"node:path";function eB(B){try{return process.kill(B,0),!0}catch{return!1}}function YB(B){return(async()=>{try{let{resolveRuntimeRootDirectory:$,findRuntimeOwnerRecordByAriaHome:z,removeRuntimeOwnerRecord:Z}=await import("@aria-cli/server"),J=$(),G=z(J,B);if(!G?.runtimeSocket)return null;if(!eB(G.runtimePid))return Z(J,G.nodeId),null;let{createResilientAttachedClient:X}=await Promise.resolve().then(() => (g(),XB)),Q=await X({runtimeSocket:G.runtimeSocket,clientKind:"local-api",logDir:_B.join(B,"logs")});try{let W=await Q.api.getRuntimeBootstrap();if(!oB.has(W.phase))return await Q.release(),Z(J,G.nodeId),null}catch{return await Q.release(),null}return{control:Q.api,release:()=>Q.release()}}catch{return null}})()}async function B$(B){let $=await YB(B.ariaDir);if($)return $;let{createDaemonService:z}=await Promise.resolve().then(() => (WB(),VB)),Z=B.config.activeArion??"ARIA";await z({cli:B,cwd:process.cwd(),arionName:Z}).start({});let{resolveRuntimeRootDirectory:G}=await import("@aria-cli/server"),X=G(),Q=_B.join(X,"owners"),W=Date.now()+15000,U=null,K=null;try{let{watch:b,mkdirSync:q,existsSync:M}=await import("node:fs");if(!M(Q))q(Q,{recursive:!0,mode:448});try{U=b(Q,()=>K?.()),U.on("error",()=>{})}catch{}let V=50;while(Date.now()<W){let Y=await YB(B.ariaDir);if(Y)return Y;await new Promise((F)=>{K=F,setTimeout(F,V)}),K=null,V=Math.min(Math.round(V*1.5),200)}}finally{U?.close()}throw Error("Daemon started but socket not reachable. Check ARIA_HOME.")}var oB;var z$=y(()=>{oB=new Set(["control_ready","network_ready","mesh_ready"])});z$();export{B$ as ensureDaemon};
@@ -1,31 +0,0 @@
1
- declare const WATCHDOG_INTERVAL_MS = 500;
2
- declare const DEFAULT_EVENT_LOOP_WATCHDOG_THRESHOLD_MS = 2000;
3
- /**
4
- * Set the current phase label. The watchdog reads this on stall detection.
5
- * Call `clearStallPhase()` when the operation completes.
6
- */
7
- export declare function setStallPhase(label: string): void;
8
- export declare function clearStallPhase(): void;
9
- /** Read current phase (used by the watchdog callback). */
10
- export declare function getStallPhase(): {
11
- label: string;
12
- ageMs: number;
13
- } | undefined;
14
- export interface EventLoopWatchdogOptions {
15
- thresholdMs?: number;
16
- onStall: (stallMs: number) => void;
17
- /** Called instead of onStall when the gap is caused by OS sleep/suspend. */
18
- onSleep?: (sleepMs: number) => void;
19
- }
20
- /**
21
- * Detects event loop stalls by measuring time between setInterval ticks.
22
- *
23
- * Uses performance.now() (monotonic clock) as the primary measurement.
24
- * On macOS this clock does NOT advance during sleep (mach_absolute_time),
25
- * eliminating sleep false-positives structurally. On Linux, CLOCK_MONOTONIC
26
- * does include sleep time, so a secondary CPU-usage ratio check filters
27
- * those out: if wall-clock jumped but CPU was idle, the process was
28
- * suspended, not blocked.
29
- */
30
- export declare function startEventLoopWatchdog(opts: EventLoopWatchdogOptions): () => void;
31
- export { DEFAULT_EVENT_LOOP_WATCHDOG_THRESHOLD_MS, WATCHDOG_INTERVAL_MS };
@@ -1,19 +0,0 @@
1
- import type { HeadlessInteractionResponse, HeadlessServerFrame } from "@aria-cli/tools";
2
- import type { SessionHistory } from "../history/SessionHistory.js";
3
- import type { AuthService, HeadlessDispatchContext } from "./kernel.js";
4
- export declare class HeadlessAuthOrchestrator {
5
- private readonly auth;
6
- private readonly sessionLedger;
7
- private readonly getActiveArionName;
8
- constructor(auth: AuthService | undefined, sessionLedger: SessionHistory, getActiveArionName: () => Promise<string>);
9
- login(requestId: string, input: unknown, context?: HeadlessDispatchContext): AsyncGenerator<HeadlessServerFrame, void, undefined>;
10
- logout(requestId: string, input: unknown): AsyncGenerator<HeadlessServerFrame, void, undefined>;
11
- respond(response: HeadlessInteractionResponse, context?: HeadlessDispatchContext): AsyncGenerator<HeadlessServerFrame, void, undefined>;
12
- private framesForInitialLoginResult;
13
- private framesForContinuedLoginResult;
14
- private buildLoginInteractionSpec;
15
- private persistNewInteraction;
16
- private persistContinuedInteraction;
17
- private persistInteractionRecord;
18
- private secretField;
19
- }
@@ -1,15 +0,0 @@
1
- import { type AnthropicMethodOption, type CopilotSourceOption, type GoogleMethodOption, type LoginResult, type OpenAIMethodOption } from "../commands/login-handler.js";
2
- import { type LogoutResult } from "../commands/logout-handler.js";
3
- import type { ProviderOption } from "../ui/components/ProviderPicker.js";
4
- export type HeadlessAuthLoginResult = LoginResult;
5
- export type HeadlessAuthLogoutResult = LogoutResult;
6
- export type HeadlessAuthProviderOption = ProviderOption;
7
- export type HeadlessCopilotSourceOption = CopilotSourceOption;
8
- export type HeadlessAnthropicMethodOption = AnthropicMethodOption;
9
- export type HeadlessOpenAIMethodOption = OpenAIMethodOption;
10
- export type HeadlessGoogleMethodOption = GoogleMethodOption;
11
- export declare function getHeadlessAuthProviders(): HeadlessAuthProviderOption[];
12
- export declare function runHeadlessLogin(args: string): Promise<HeadlessAuthLoginResult>;
13
- export declare function runHeadlessLogout(args: string): HeadlessAuthLogoutResult;
14
- export declare function buildStructuredLoginArgs(input: Record<string, unknown>): string;
15
- export declare function buildStructuredLogoutArgs(input: Record<string, unknown>): string;
@@ -1,12 +0,0 @@
1
- import type { HeadlessResult } from "@aria-cli/tools";
2
- export type BootstrapSessionOperation = "session.list" | "session.read" | "session.load";
3
- interface BootstrapFastPathOptions {
4
- ariaHome?: string;
5
- arionName?: string;
6
- }
7
- export declare function resolveAriaHome(override?: string): string;
8
- export declare function resolveBootstrapArionName(options?: BootstrapFastPathOptions): string;
9
- export declare function resolveCanonicalArionName(ariaHome: string, requestedName: string): string;
10
- export declare function runBootstrapSessionOperation(requestId: string, operation: BootstrapSessionOperation, input: unknown, options?: BootstrapFastPathOptions): HeadlessResult;
11
- export declare function runBootstrapSystemRestart(requestId: string, input: unknown): HeadlessResult;
12
- export {};
@@ -1,8 +0,0 @@
1
- import { Command } from "commander";
2
- interface CallCommandOptions {
3
- inputJson?: string;
4
- arion?: string;
5
- }
6
- export declare function runHeadlessCall(operation: string, options: CallCommandOptions): Promise<number>;
7
- export declare function createHeadlessCallCommand(): Command;
8
- export {};
@@ -1,14 +0,0 @@
1
- import type { RuntimeAutonomousLoopCommand, RuntimeStatus } from "@aria-cli/tools";
2
- import type { CliContext } from "../cli-context.js";
3
- import type { DaemonService } from "./kernel.js";
4
- export declare function createDaemonService(options: {
5
- cli: CliContext;
6
- cwd: string;
7
- arionName?: string;
8
- getArionName?: () => string;
9
- localControl?: {
10
- getRuntimeStatus(): Promise<RuntimeStatus>;
11
- startAutonomousLoop?(input?: RuntimeAutonomousLoopCommand): Promise<unknown>;
12
- stopAutonomousLoop?(): Promise<unknown>;
13
- };
14
- }): DaemonService;
@@ -1,40 +0,0 @@
1
- /**
2
- * Shared hook action implementations used by the `hook.*` headless operations.
3
- *
4
- * These functions provide the Memoria/router-backed extraction, reflection,
5
- * consolidation, ingestion, and harvesting behavior without a dedicated legacy
6
- * hook CLI mode.
7
- */
8
- import { Memoria } from "@aria-cli/memoria";
9
- import type { ModelRouter } from "@aria-cli/models";
10
- export interface HookResult {
11
- output: unknown;
12
- exitCode?: number;
13
- }
14
- export interface HookActionOptions {
15
- signal?: AbortSignal;
16
- }
17
- export interface HarvestActionInput {
18
- preHarvest?: boolean;
19
- feedback?: boolean;
20
- extract?: boolean;
21
- stats?: boolean;
22
- cleanup?: boolean;
23
- cost?: boolean;
24
- all?: boolean;
25
- limit?: number;
26
- }
27
- export declare function parseHarvestArgs(args: readonly string[]): Required<HarvestActionInput>;
28
- export declare function actionExtract(memoria: InstanceType<typeof Memoria>, stdin: string, options?: HookActionOptions): Promise<HookResult>;
29
- export declare function actionReflect(memoria: InstanceType<typeof Memoria>, router: ModelRouter, stdin: string, options?: {
30
- signal?: AbortSignal;
31
- }): Promise<HookResult>;
32
- export declare function actionConsolidate(memoria: InstanceType<typeof Memoria>, options?: {
33
- signal?: AbortSignal;
34
- }): Promise<HookResult>;
35
- export declare function actionIngest(memoria: InstanceType<typeof Memoria>, options?: {
36
- signal?: AbortSignal;
37
- }): Promise<HookResult>;
38
- export declare function actionHarvest(memoria: InstanceType<typeof Memoria>, router: ModelRouter, input?: HarvestActionInput, options?: {
39
- signal?: AbortSignal;
40
- }): Promise<HookResult>;
@@ -1,8 +0,0 @@
1
- import type { CliContext } from "../cli-context.js";
2
- import type { HookService } from "./kernel.js";
3
- export declare function createHookService(options: {
4
- cli: CliContext;
5
- arionName: string;
6
- getArionName?: () => string;
7
- resolveMemoriaPath?: () => Promise<string>;
8
- }): HookService;
@@ -1,8 +0,0 @@
1
- import type { CliContext } from "../cli-context.js";
2
- import type { FullKernelContext, KernelContext } from "./kernel.js";
3
- export interface HeadlessCapabilityServiceOptions {
4
- cli: CliContext;
5
- activeArionName?: string;
6
- overrides?: Pick<Partial<KernelContext>, "arionManager" | "auth" | "config" | "memoria" | "modelDiscovery">;
7
- }
8
- export declare function createHeadlessCapabilityServices(options: HeadlessCapabilityServiceOptions): Pick<FullKernelContext, "arionManager" | "auth" | "config" | "memoria" | "modelDiscovery">;