@aria-cli/cli 1.0.51 → 1.0.54

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (319) hide show
  1. package/bin/aria.mjs +569 -569
  2. package/package.json +14 -73
  3. package/dist/.tsbuildinfo +0 -1
  4. package/dist/attached-local-control-client.js +0 -826
  5. package/dist/bootstrap-local-control-client.js +0 -2
  6. package/dist/capability-aware-method-proxy.js +0 -42
  7. package/dist/cli-context.js +0 -160
  8. package/dist/commands/arions.js +0 -174
  9. package/dist/commands/auth.js +0 -123
  10. package/dist/commands/daemon.js +0 -245
  11. package/dist/commands/definitions.js +0 -176
  12. package/dist/commands/index.js +0 -74
  13. package/dist/commands/login-handler.js +0 -1108
  14. package/dist/commands/logout-handler.js +0 -92
  15. package/dist/commands/memory-handlers.js +0 -89
  16. package/dist/commands/pairing.js +0 -60
  17. package/dist/commands/runtime-cutover-reset-command.js +0 -12
  18. package/dist/commands/runtime-cutover-reset.js +0 -265
  19. package/dist/commands/terminal-setup.js +0 -84
  20. package/dist/config/aria-config.js +0 -238
  21. package/dist/config/index.js +0 -3
  22. package/dist/config/loader.js +0 -97
  23. package/dist/config.js +0 -142
  24. package/dist/daemon-info.js +0 -10
  25. package/dist/ensure-daemon.js +0 -128
  26. package/dist/entrypoints/command-mode.js +0 -5
  27. package/dist/entrypoints/daemon.js +0 -50
  28. package/dist/entrypoints/headless-stdio.js +0 -25
  29. package/dist/entrypoints/interactive.js +0 -80
  30. package/dist/event-loop-watchdog.js +0 -73
  31. package/dist/headless/auth-orchestrator.js +0 -508
  32. package/dist/headless/auth-service.js +0 -43
  33. package/dist/headless/bootstrap-fast-path.js +0 -112
  34. package/dist/headless/call-command.js +0 -143
  35. package/dist/headless/daemon-service.js +0 -318
  36. package/dist/headless/hook-actions.js +0 -235
  37. package/dist/headless/hook-service.js +0 -42
  38. package/dist/headless/kernel-services.js +0 -216
  39. package/dist/headless/kernel.js +0 -785
  40. package/dist/headless/operations/arion.js +0 -119
  41. package/dist/headless/operations/auth.js +0 -45
  42. package/dist/headless/operations/client.js +0 -31
  43. package/dist/headless/operations/config.js +0 -69
  44. package/dist/headless/operations/daemon.js +0 -47
  45. package/dist/headless/operations/hook.js +0 -56
  46. package/dist/headless/operations/index.js +0 -11
  47. package/dist/headless/operations/memory.js +0 -102
  48. package/dist/headless/operations/message.js +0 -279
  49. package/dist/headless/operations/model.js +0 -100
  50. package/dist/headless/operations/peer.js +0 -56
  51. package/dist/headless/operations/run.js +0 -24
  52. package/dist/headless/operations/session.js +0 -90
  53. package/dist/headless/operations/system.js +0 -19
  54. package/dist/headless/operations/utils.js +0 -35
  55. package/dist/headless/run-orchestrator.js +0 -703
  56. package/dist/headless/stdio-server.js +0 -439
  57. package/dist/history/SessionHistory.js +0 -8
  58. package/dist/history/SessionHistoryClient.js +0 -186
  59. package/dist/history/conversation-message.js +0 -112
  60. package/dist/history/index.js +0 -8
  61. package/dist/history/jsonl-replay.js +0 -154
  62. package/dist/history/repair-tool-pairing.js +0 -84
  63. package/dist/history/stall-phase-bridge.js +0 -11
  64. package/dist/history/turn-accumulator.js +0 -427
  65. package/dist/index.js +0 -7
  66. package/dist/ink-repl.js +0 -4183
  67. package/dist/local-control-bootstrap.js +0 -26
  68. package/dist/local-control-client.js +0 -2
  69. package/dist/local-control-error-reporting.js +0 -34
  70. package/dist/local-control-http-client.js +0 -362
  71. package/dist/local-control-lazy-wrapper.js +0 -363
  72. package/dist/local-control-manager.js +0 -146
  73. package/dist/main.js +0 -38
  74. package/dist/network-security.js +0 -62
  75. package/dist/networking-server.js +0 -38
  76. package/dist/peer-identity.js +0 -23
  77. package/dist/polling-subscription.js +0 -34
  78. package/dist/relaunch.js +0 -588
  79. package/dist/release-notes.js +0 -35
  80. package/dist/repl-cleanup.js +0 -47
  81. package/dist/runtime/configure-bun-sqlite.js +0 -3
  82. package/dist/runtime/crash-handlers.js +0 -111
  83. package/dist/runtime/interactive-invocation.js +0 -39
  84. package/dist/runtime/internal-mode.js +0 -14
  85. package/dist/runtime/launch-spec.js +0 -64
  86. package/dist/runtime/owner-lease.js +0 -44
  87. package/dist/runtime/public-mode.js +0 -20
  88. package/dist/runtime/run-internal-mode.js +0 -18
  89. package/dist/runtime/runtime-kind.js +0 -32
  90. package/dist/runtime/spawn-aria.js +0 -38
  91. package/dist/selectable-client.js +0 -2
  92. package/dist/selectable-peer.js +0 -2
  93. package/dist/session.js +0 -203
  94. package/dist/slash-commands.js +0 -80
  95. package/dist/sounds.js +0 -210
  96. package/dist/ui/App.js +0 -526
  97. package/dist/ui/components/AnthropicMethodPicker.js +0 -6
  98. package/dist/ui/components/ArionPrompt.js +0 -15
  99. package/dist/ui/components/AutocompleteDropdown.js +0 -23
  100. package/dist/ui/components/AutonomySelector.js +0 -55
  101. package/dist/ui/components/Banner.js +0 -98
  102. package/dist/ui/components/ConversationHistory.js +0 -175
  103. package/dist/ui/components/CopilotDeviceLoginFlow.js +0 -88
  104. package/dist/ui/components/CopilotSourcePicker.js +0 -50
  105. package/dist/ui/components/Cost.js +0 -10
  106. package/dist/ui/components/CustomSelect/option-map.js +0 -30
  107. package/dist/ui/components/CustomSelect/select-option.js +0 -13
  108. package/dist/ui/components/CustomSelect/select.js +0 -42
  109. package/dist/ui/components/CustomSelect/use-select-state.js +0 -179
  110. package/dist/ui/components/CustomSelect/use-select.js +0 -15
  111. package/dist/ui/components/ErrorDisplay.js +0 -35
  112. package/dist/ui/components/FallbackToolUseRejectedMessage.js +0 -7
  113. package/dist/ui/components/FileEditToolUpdatedMessage.js +0 -57
  114. package/dist/ui/components/HandoffMarker.js +0 -18
  115. package/dist/ui/components/HighlightedCode.js +0 -21
  116. package/dist/ui/components/InputArea.js +0 -187
  117. package/dist/ui/components/Message.js +0 -25
  118. package/dist/ui/components/OAuthLoginFlow.js +0 -113
  119. package/dist/ui/components/OutputTruncation.js +0 -35
  120. package/dist/ui/components/PermissionPrompt.js +0 -79
  121. package/dist/ui/components/PipelineTimingPanel.js +0 -15
  122. package/dist/ui/components/ProviderMethodPicker.js +0 -61
  123. package/dist/ui/components/ProviderPicker.js +0 -63
  124. package/dist/ui/components/RenderItemView.js +0 -71
  125. package/dist/ui/components/Spinner.js +0 -46
  126. package/dist/ui/components/StatusBar.js +0 -95
  127. package/dist/ui/components/StreamingIndicator.js +0 -55
  128. package/dist/ui/components/StructuredDiff.js +0 -168
  129. package/dist/ui/components/TextInputOverlay.js +0 -43
  130. package/dist/ui/components/ThinkingBlock.js +0 -82
  131. package/dist/ui/components/ToolCost.js +0 -17
  132. package/dist/ui/components/ToolExecution.js +0 -61
  133. package/dist/ui/components/ToolHeader.js +0 -51
  134. package/dist/ui/components/ToolRenderLayoutContext.js +0 -14
  135. package/dist/ui/components/ToolResultWrapper.js +0 -6
  136. package/dist/ui/components/ToolUseLoader.js +0 -35
  137. package/dist/ui/components/TraceWaterfall.js +0 -91
  138. package/dist/ui/components/index.js +0 -33
  139. package/dist/ui/components/messages/AssistantTextMessage.js +0 -25
  140. package/dist/ui/components/messages/UserImageMessage.js +0 -12
  141. package/dist/ui/components/messages/UserTextMessage.js +0 -12
  142. package/dist/ui/components/overlays/ArionSelector.js +0 -68
  143. package/dist/ui/components/overlays/ClientSelector.js +0 -62
  144. package/dist/ui/components/overlays/CommandPalette.js +0 -67
  145. package/dist/ui/components/overlays/DaemonControl.js +0 -87
  146. package/dist/ui/components/overlays/InviteShareOverlay.js +0 -15
  147. package/dist/ui/components/overlays/JoinInviteOverlay.js +0 -32
  148. package/dist/ui/components/overlays/MemoryBrowser.js +0 -100
  149. package/dist/ui/components/overlays/MessageSelector.js +0 -123
  150. package/dist/ui/components/overlays/ModelSelector.js +0 -211
  151. package/dist/ui/components/overlays/PairRequestOverlay.js +0 -42
  152. package/dist/ui/components/overlays/PeerSelector.js +0 -84
  153. package/dist/ui/components/overlays/SessionSelector.js +0 -102
  154. package/dist/ui/components/overlays/SoundSelector.js +0 -86
  155. package/dist/ui/components/overlays/ThemeSelector.js +0 -139
  156. package/dist/ui/components/overlays/index.js +0 -15
  157. package/dist/ui/components/permissions/BashPermissionRequest/BashPermissionRequest.js +0 -53
  158. package/dist/ui/components/permissions/FallbackPermissionRequest.js +0 -56
  159. package/dist/ui/components/permissions/FileEditPermissionRequest/FileEditPermissionRequest.js +0 -76
  160. package/dist/ui/components/permissions/FileEditPermissionRequest/FileEditToolDiff.js +0 -18
  161. package/dist/ui/components/permissions/FileWritePermissionRequest/FileWritePermissionRequest.js +0 -64
  162. package/dist/ui/components/permissions/FileWritePermissionRequest/FileWriteToolDiff.js +0 -26
  163. package/dist/ui/components/permissions/FilesystemPermissionRequest/FilesystemPermissionRequest.js +0 -141
  164. package/dist/ui/components/permissions/PermissionRequest.js +0 -70
  165. package/dist/ui/components/permissions/PermissionRequestTitle.js +0 -41
  166. package/dist/ui/components/permissions/hooks.js +0 -10
  167. package/dist/ui/components/permissions/toolUseOptions.js +0 -68
  168. package/dist/ui/components/permissions/utils.js +0 -10
  169. package/dist/ui/components/text-input/Cursor.js +0 -326
  170. package/dist/ui/components/text-input/TextInput.js +0 -231
  171. package/dist/ui/components/text-input/imagePaste.js +0 -28
  172. package/dist/ui/components/text-input/index.js +0 -6
  173. package/dist/ui/components/text-input/useDoublePress.js +0 -30
  174. package/dist/ui/components/text-input/useTextInput.js +0 -245
  175. package/dist/ui/components/tool-types.js +0 -9
  176. package/dist/ui/constants/figures.js +0 -4
  177. package/dist/ui/constants/index.js +0 -3
  178. package/dist/ui/display-mode.js +0 -93
  179. package/dist/ui/display-policy.js +0 -19
  180. package/dist/ui/hooks/index.js +0 -6
  181. package/dist/ui/hooks/useCommandAutocomplete.js +0 -93
  182. package/dist/ui/hooks/useDoublePress.js +0 -37
  183. package/dist/ui/hooks/useIndicatorState.js +0 -55
  184. package/dist/ui/hooks/useInterval.js +0 -23
  185. package/dist/ui/hooks/useKeyboardShortcuts.js +0 -127
  186. package/dist/ui/hooks/useTerminalSize.js +0 -55
  187. package/dist/ui/hooks/useUnifiedMessages.js +0 -117
  188. package/dist/ui/indicator-state.js +0 -44
  189. package/dist/ui/markdown/highlight.js +0 -44
  190. package/dist/ui/markdown/index.js +0 -1460
  191. package/dist/ui/markdown/tokenizer.js +0 -24
  192. package/dist/ui/render-item.js +0 -5
  193. package/dist/ui/screens/REPL.js +0 -119
  194. package/dist/ui/screens/approval-lifecycle.js +0 -38
  195. package/dist/ui/status-line.js +0 -72
  196. package/dist/ui/theme/index.js +0 -51
  197. package/dist/ui/theme/themes/claude-dark-daltonized.js +0 -51
  198. package/dist/ui/theme/themes/claude-dark.js +0 -50
  199. package/dist/ui/theme/themes/claude-light-daltonized.js +0 -51
  200. package/dist/ui/theme/themes/claude-light.js +0 -50
  201. package/dist/ui/theme/themes/dark-accessible.js +0 -18
  202. package/dist/ui/theme/themes/dark.js +0 -49
  203. package/dist/ui/theme/themes/light-accessible.js +0 -18
  204. package/dist/ui/theme/themes/light.js +0 -49
  205. package/dist/ui/theme/types.js +0 -3
  206. package/dist/ui/theme.js +0 -142
  207. package/dist/ui/to-render-items.js +0 -145
  208. package/dist/ui/tools/AgentTool/index.js +0 -30
  209. package/dist/ui/tools/ArchitectTool/index.js +0 -31
  210. package/dist/ui/tools/AskUserTool/index.js +0 -46
  211. package/dist/ui/tools/BashTool/BashToolResultMessage.js +0 -11
  212. package/dist/ui/tools/BashTool/OutputLine.js +0 -21
  213. package/dist/ui/tools/BashTool/index.js +0 -91
  214. package/dist/ui/tools/BrowseTool/index.js +0 -43
  215. package/dist/ui/tools/BrowserTool/index.js +0 -47
  216. package/dist/ui/tools/CbmTool/index.js +0 -188
  217. package/dist/ui/tools/CheckDelegationTool/index.js +0 -46
  218. package/dist/ui/tools/CheckMessagesTool/index.js +0 -85
  219. package/dist/ui/tools/CreateQuipTool/index.js +0 -30
  220. package/dist/ui/tools/CreateSkillTool/index.js +0 -22
  221. package/dist/ui/tools/CreateToolTool/index.js +0 -31
  222. package/dist/ui/tools/DelegateRemoteTool/index.js +0 -42
  223. package/dist/ui/tools/DeployTool/index.js +0 -47
  224. package/dist/ui/tools/FffTool/index.js +0 -103
  225. package/dist/ui/tools/FileEditTool/index.js +0 -67
  226. package/dist/ui/tools/FileReadTool/index.js +0 -68
  227. package/dist/ui/tools/FileWriteTool/index.js +0 -61
  228. package/dist/ui/tools/ForkTool/index.js +0 -47
  229. package/dist/ui/tools/FrgTool/index.js +0 -96
  230. package/dist/ui/tools/GetThreadTool/index.js +0 -39
  231. package/dist/ui/tools/GlobTool/index.js +0 -50
  232. package/dist/ui/tools/GrepTool/index.js +0 -84
  233. package/dist/ui/tools/HatchArionTool/index.js +0 -36
  234. package/dist/ui/tools/LearnSkillTool/index.js +0 -22
  235. package/dist/ui/tools/LearnTool/index.js +0 -43
  236. package/dist/ui/tools/LearnToolTool/index.js +0 -22
  237. package/dist/ui/tools/ListClientsTool/index.js +0 -39
  238. package/dist/ui/tools/LspTool/index.js +0 -261
  239. package/dist/ui/tools/MCPTool/index.js +0 -33
  240. package/dist/ui/tools/ManageNetworkTool/index.js +0 -53
  241. package/dist/ui/tools/MemoryReadTool/index.js +0 -64
  242. package/dist/ui/tools/MemoryWriteTool/index.js +0 -20
  243. package/dist/ui/tools/NotebookEditTool/index.js +0 -33
  244. package/dist/ui/tools/NotebookReadTool/index.js +0 -25
  245. package/dist/ui/tools/OutlookReadTool/index.js +0 -66
  246. package/dist/ui/tools/OutlookReplyTool/index.js +0 -49
  247. package/dist/ui/tools/OutlookSendTool/index.js +0 -49
  248. package/dist/ui/tools/PauseDelegationTool/index.js +0 -35
  249. package/dist/ui/tools/ProbeTool/index.js +0 -121
  250. package/dist/ui/tools/ProcessTool/index.js +0 -66
  251. package/dist/ui/tools/QuestListTool/index.js +0 -46
  252. package/dist/ui/tools/QuestReportTool/index.js +0 -49
  253. package/dist/ui/tools/QuestUpdateTool/index.js +0 -87
  254. package/dist/ui/tools/QuipCommentTool/index.js +0 -69
  255. package/dist/ui/tools/QuipReadTool/index.js +0 -71
  256. package/dist/ui/tools/RestArionTool/index.js +0 -32
  257. package/dist/ui/tools/RestartTool/index.js +0 -35
  258. package/dist/ui/tools/ResumeDelegationTool/index.js +0 -35
  259. package/dist/ui/tools/RetireArionTool/index.js +0 -32
  260. package/dist/ui/tools/RgTool/index.js +0 -73
  261. package/dist/ui/tools/SearchKnowledgeTool/index.js +0 -43
  262. package/dist/ui/tools/SearchMessagesTool/index.js +0 -43
  263. package/dist/ui/tools/SelfDiagnoseTool/index.js +0 -61
  264. package/dist/ui/tools/SendMessageTool/index.js +0 -45
  265. package/dist/ui/tools/SerenaTool/index.js +0 -124
  266. package/dist/ui/tools/SessionHistoryTool/index.js +0 -52
  267. package/dist/ui/tools/SgTool/index.js +0 -80
  268. package/dist/ui/tools/SlackReactTool/index.js +0 -41
  269. package/dist/ui/tools/SlackReadTool/index.js +0 -48
  270. package/dist/ui/tools/SlackSendTool/index.js +0 -45
  271. package/dist/ui/tools/SpawnWorkerTool/index.js +0 -33
  272. package/dist/ui/tools/StickerRequestTool/index.js +0 -19
  273. package/dist/ui/tools/ThinkTool/index.js +0 -17
  274. package/dist/ui/tools/UgTool/index.js +0 -108
  275. package/dist/ui/tools/UseSkillTool/index.js +0 -22
  276. package/dist/ui/tools/WakeArionTool/index.js +0 -32
  277. package/dist/ui/tools/WebFetchTool/index.js +0 -56
  278. package/dist/ui/tools/WebSearchTool/index.js +0 -44
  279. package/dist/ui/tools/lsTool/index.js +0 -58
  280. package/dist/ui/tools/registry.js +0 -197
  281. package/dist/ui/tools/tool-renderer.js +0 -11
  282. package/dist/ui/tools/truncation.js +0 -35
  283. package/dist/ui/types/anthropic.js +0 -4
  284. package/dist/ui/types/index.js +0 -2
  285. package/dist/ui/types/message.js +0 -3
  286. package/dist/ui/types/tool.js +0 -4
  287. package/dist/ui/utils/array.js +0 -4
  288. package/dist/ui/utils/cursor.js +0 -131
  289. package/dist/ui/utils/diff.js +0 -120
  290. package/dist/ui/utils/format.js +0 -42
  291. package/dist/ui/utils/fuzzy.js +0 -59
  292. package/dist/ui/utils/index.js +0 -11
  293. package/dist/ui/utils/keys.js +0 -8
  294. package/dist/ui/utils/patch.js +0 -17
  295. package/dist/ui/utils/risk.js +0 -114
  296. package/dist/ui/utils/terminal-image.js +0 -70
  297. package/dist/ui/utils/validation.js +0 -48
  298. package/dist/ui/verb-pairs.js +0 -248
  299. package/dist/ui.js +0 -131
  300. package/src/entrypoints/command-mode.ts +0 -5
  301. package/src/entrypoints/daemon.ts +0 -54
  302. package/src/entrypoints/headless-stdio.ts +0 -27
  303. package/src/entrypoints/interactive.ts +0 -112
  304. package/src/main.ts +0 -44
  305. package/src/runtime/configure-bun-sqlite.ts +0 -3
  306. package/src/runtime/crash-handlers.ts +0 -128
  307. package/src/runtime/interactive-invocation.test.ts +0 -42
  308. package/src/runtime/interactive-invocation.ts +0 -51
  309. package/src/runtime/internal-mode.test.ts +0 -19
  310. package/src/runtime/internal-mode.ts +0 -24
  311. package/src/runtime/launch-spec.test.ts +0 -26
  312. package/src/runtime/launch-spec.ts +0 -84
  313. package/src/runtime/owner-lease.ts +0 -52
  314. package/src/runtime/public-mode.test.ts +0 -18
  315. package/src/runtime/public-mode.ts +0 -19
  316. package/src/runtime/run-internal-mode.ts +0 -19
  317. package/src/runtime/runtime-kind.test.ts +0 -23
  318. package/src/runtime/runtime-kind.ts +0 -41
  319. package/src/runtime/spawn-aria.ts +0 -62
@@ -1,26 +0,0 @@
1
- import { RuntimeBootstrapRecordSchema } from "@aria-cli/tools";
2
- export function selectBootstrapTlsIdentity(bootstrap) {
3
- return bootstrap.tls.loopbackIdentity;
4
- }
5
- function isAttachableBootstrapPhase(phase) {
6
- return phase === "control_ready" || phase === "network_ready" || phase === "mesh_ready";
7
- }
8
- export function assertAttachableRuntimeBootstrap(expectedNodeId, bootstrap) {
9
- if (bootstrap.nodeId !== expectedNodeId) {
10
- throw new Error(`[local-control-client] Runtime bootstrap node mismatch for ${expectedNodeId}: received ${bootstrap.nodeId}`);
11
- }
12
- if (!isAttachableBootstrapPhase(bootstrap.phase)) {
13
- throw new Error(`[local-control-client] Runtime bootstrap for ${expectedNodeId} is not attachable (phase=${bootstrap.phase})`);
14
- }
15
- return bootstrap;
16
- }
17
- export async function loadControlReadyRuntimeBootstrap(bootstrapSource) {
18
- const bootstrap = RuntimeBootstrapRecordSchema.parse(typeof bootstrapSource === "function" ? await bootstrapSource() : bootstrapSource);
19
- if (bootstrap.phase !== "control_ready" &&
20
- bootstrap.phase !== "network_ready" &&
21
- bootstrap.phase !== "mesh_ready") {
22
- throw new Error(`Runtime bootstrap is not control-ready: ${bootstrap.phase}${bootstrap.degradedReason ? ` (${bootstrap.degradedReason})` : ""}`);
23
- }
24
- return bootstrap;
25
- }
26
- //# sourceMappingURL=local-control-bootstrap.js.map
@@ -1,2 +0,0 @@
1
- export { attachExistingLocalControlClient, attachLocalControlClient, createResilientAttachedClient, requestRuntimeSocketLease, resolveLocalControlClient, resolveLocalControlClientSync, } from "./attached-local-control-client.js";
2
- //# sourceMappingURL=local-control-client.js.map
@@ -1,34 +0,0 @@
1
- import { getAriaDir } from "./config.js";
2
- let trustedLocalControlErrorHandler;
3
- async function getTrustedLocalControlErrorHandler() {
4
- const ariaDir = getAriaDir();
5
- if (trustedLocalControlErrorHandler?.ariaDir === ariaDir) {
6
- return trustedLocalControlErrorHandler.handler;
7
- }
8
- const { CentralErrorHandler } = await import("@aria-cli/aria/error-handler");
9
- const handler = new CentralErrorHandler({ ariaDir });
10
- trustedLocalControlErrorHandler = { ariaDir, handler };
11
- return handler;
12
- }
13
- export async function reportTrustedLocalControlFailure(error, context) {
14
- const handler = await getTrustedLocalControlErrorHandler();
15
- await handler.report(error, {
16
- workingDir: process.cwd(),
17
- providerState: {
18
- lastProvider: "trusted-local-control",
19
- lastModel: context.endpoint,
20
- ...(typeof context.responseStatus === "number"
21
- ? { lastStatusCode: context.responseStatus }
22
- : {}),
23
- },
24
- configSnapshot: {
25
- transport: context.transport,
26
- endpoint: context.endpoint,
27
- ...(typeof context.responseStatus === "number"
28
- ? { responseStatus: context.responseStatus }
29
- : {}),
30
- payload: context.payload,
31
- },
32
- });
33
- }
34
- //# sourceMappingURL=local-control-error-reporting.js.map
@@ -1,362 +0,0 @@
1
- import { tlsFetch } from "@aria-cli/aria/server-discovery";
2
- import { log } from "@aria-cli/types";
3
- import { createTrustedRuntimeError, LOCAL_HTTP_CLIENT_ID_HEADER, LOCAL_HTTP_CLIENT_PROOF_HEADER, DirectPairRequestSchema, DirectPairResponseSchema, InboxAddressSchema, InboxListRequestSchema, InvitePeerRequestSchema, InvitePeerResultSchema, NearbyPeerViewSchema, OutboundMessageSchema, PairRequestDecisionSchema, PairRequestResponseSchema, PendingInviteViewSchema, PendingPairRequestViewSchema, PeerViewEventSchema, PersistedInboxEventSchema, RepairPeerRequestSchema, RepairPeerResponseSchema, RevokePeerRequestSchema, RevokePeerResponseSchema, ResumeRunRequestSchema, RunRequestSchema, RunResultSchema, RuntimeBootstrapRecordSchema, RuntimeDeliveryReceiptSchema, RuntimeQueuedReceiptSchema, RuntimeStatusSchema, AcceptInviteRequestSchema, AcceptInviteResponseSchema, AcceptInviteTokenRequestSchema, AcceptInviteTokenResponseSchema, CancelInviteRequestSchema, CancelInviteResponseSchema, CreateInviteRequestSchema, CreateInviteResponseSchema, } from "@aria-cli/tools";
4
- import { createPollingSubscription } from "./polling-subscription.js";
5
- import { loadControlReadyRuntimeBootstrap, selectBootstrapTlsIdentity, } from "./local-control-bootstrap.js";
6
- import { reportTrustedLocalControlFailure } from "./local-control-error-reporting.js";
7
- async function fetchLocalJson(endpoint, options) {
8
- const bootstrap = await loadControlReadyRuntimeBootstrap(options.bootstrap);
9
- const headers = {};
10
- if (options.body) {
11
- headers["Content-Type"] = "application/json";
12
- }
13
- if (options.attachedClientId) {
14
- headers[LOCAL_HTTP_CLIENT_ID_HEADER] = options.attachedClientId;
15
- }
16
- if (options.attachedClientAuthToken) {
17
- headers[LOCAL_HTTP_CLIENT_PROOF_HEADER] = options.attachedClientAuthToken;
18
- }
19
- const response = await tlsFetch(`https://127.0.0.1:${bootstrap.controlEndpoint.port}${endpoint}`, {
20
- method: options.method,
21
- body: options.body,
22
- signal: options.signal,
23
- headers: Object.keys(headers).length > 0 ? headers : undefined,
24
- ca: bootstrap.tls.caCertPem,
25
- expectedTlsIdentity: selectBootstrapTlsIdentity(bootstrap),
26
- });
27
- const payload = (await response.json());
28
- if (!response.ok) {
29
- const trustedError = createTrustedRuntimeError(payload.error ?? `HTTP ${response.status}`, payload.diagnostic);
30
- // Propagate the reason sub-code for stale-lease detection
31
- if (payload.reason) {
32
- trustedError.reason = payload.reason;
33
- }
34
- await reportTrustedLocalControlFailure(trustedError, {
35
- endpoint,
36
- responseStatus: response.status,
37
- payload,
38
- transport: "https",
39
- });
40
- throw trustedError;
41
- }
42
- if (!options.parse) {
43
- return payload;
44
- }
45
- try {
46
- return options.parse(payload);
47
- }
48
- catch (error) {
49
- const wrappedError = new Error(`[local-control-client] Invalid trusted local-control response for ${endpoint}: ${error instanceof Error ? error.message : String(error)}`, {
50
- cause: error instanceof Error ? error : undefined,
51
- });
52
- log.error("[local-control-client] Invalid trusted local-control response", {
53
- endpoint,
54
- status: response.status,
55
- payload,
56
- }, error);
57
- await reportTrustedLocalControlFailure(wrappedError, {
58
- endpoint,
59
- responseStatus: response.status,
60
- payload,
61
- transport: "https",
62
- });
63
- throw wrappedError;
64
- }
65
- }
66
- function parsePersistedInboxEvent(message) {
67
- return PersistedInboxEventSchema.parse({
68
- id: message.id,
69
- senderNodeId: message.sender_id,
70
- senderDisplayNameSnapshot: message.sender_name,
71
- senderType: message.sender_type,
72
- inboxAddress: InboxAddressSchema.parse({
73
- kind: message.inbox_address_kind,
74
- ...(message.inbox_address_kind === "client"
75
- ? {
76
- clientId: message.inbox_address_id,
77
- }
78
- : {
79
- nodeId: message.inbox_address_id,
80
- }),
81
- }),
82
- type: message.type,
83
- content: message.content,
84
- priority: message.priority,
85
- createdAt: message.created_at,
86
- correlationId: message.correlation_id,
87
- replyTo: message.reply_to,
88
- });
89
- }
90
- function filterInboxByCursor(messages, request) {
91
- return messages.filter((message) => typeof request?.cursor?.afterCreatedAt === "number"
92
- ? message.createdAt >= request.cursor.afterCreatedAt
93
- : true);
94
- }
95
- function createOneShotHandle(resultPromise) {
96
- return {
97
- runId: `run-local-${Date.now()}`,
98
- wait: () => resultPromise,
99
- };
100
- }
101
- export function createLocalControlClient(options) {
102
- const pollIntervalMs = options.pollIntervalMs ?? 1_000;
103
- const listInbox = async (request) => {
104
- const parsedRequest = InboxListRequestSchema.optional().parse(request);
105
- const limit = parsedRequest?.limit ?? 100;
106
- const unreadOnly = parsedRequest?.unreadOnly ?? false;
107
- const payload = await fetchLocalJson(`/api/v1/messages?limit=${limit}&unread=${unreadOnly ? "true" : "false"}`, {
108
- bootstrap: options.bootstrap,
109
- attachedClientId: options.attachedClientId,
110
- attachedClientAuthToken: options.attachedClientAuthToken,
111
- });
112
- return filterInboxByCursor((payload.messages ?? []).map(parsePersistedInboxEvent), parsedRequest);
113
- };
114
- return {
115
- async submitRun(request) {
116
- const payload = RunRequestSchema.parse(request);
117
- return createOneShotHandle(fetchLocalJson("/api/v1/run", {
118
- method: "POST",
119
- body: JSON.stringify(payload),
120
- bootstrap: options.bootstrap,
121
- attachedClientId: options.attachedClientId,
122
- attachedClientAuthToken: options.attachedClientAuthToken,
123
- parse: (raw) => RunResultSchema.parse(raw),
124
- }));
125
- },
126
- async resumeRun(request) {
127
- const payload = ResumeRunRequestSchema.parse(request);
128
- return fetchLocalJson("/api/v1/resume", {
129
- method: "POST",
130
- body: JSON.stringify(payload),
131
- bootstrap: options.bootstrap,
132
- attachedClientId: options.attachedClientId,
133
- attachedClientAuthToken: options.attachedClientAuthToken,
134
- parse: (raw) => RunResultSchema.parse(raw),
135
- });
136
- },
137
- async *streamRun(_request, _signal) {
138
- throw new Error("Local control stream surface is only available through attached runtime sockets");
139
- },
140
- async *subscribeRuntimeEvents(_cursor) {
141
- throw new Error("Local control runtime event surface is only available through attached runtime sockets");
142
- },
143
- async sendBestEffort(message) {
144
- const payload = OutboundMessageSchema.parse(message);
145
- return fetchLocalJson("/api/v1/message/relay", {
146
- method: "POST",
147
- body: JSON.stringify({
148
- deliveryMode: "best_effort",
149
- ...(payload.to ? { to: payload.to } : {}),
150
- ...(payload.content ? { content: payload.content } : {}),
151
- ...(payload.type ? { type: payload.type } : {}),
152
- ...(typeof payload.priority === "number" ? { priority: payload.priority } : {}),
153
- ...(payload.correlationId ? { correlationId: payload.correlationId } : {}),
154
- ...(payload.metadata ? { metadata: payload.metadata } : {}),
155
- _rawMessage: payload.rawMessage,
156
- }),
157
- bootstrap: options.bootstrap,
158
- attachedClientId: options.attachedClientId,
159
- attachedClientAuthToken: options.attachedClientAuthToken,
160
- parse: (raw) => RuntimeQueuedReceiptSchema.parse(raw),
161
- });
162
- },
163
- async sendDurable(message) {
164
- const payload = OutboundMessageSchema.parse(message);
165
- return fetchLocalJson("/api/v1/message/relay", {
166
- method: "POST",
167
- body: JSON.stringify({
168
- deliveryMode: "durable",
169
- ...(payload.to ? { to: payload.to } : {}),
170
- ...(payload.content ? { content: payload.content } : {}),
171
- ...(payload.type ? { type: payload.type } : {}),
172
- ...(typeof payload.priority === "number" ? { priority: payload.priority } : {}),
173
- ...(payload.correlationId ? { correlationId: payload.correlationId } : {}),
174
- ...(payload.metadata ? { metadata: payload.metadata } : {}),
175
- _rawMessage: payload.rawMessage,
176
- }),
177
- bootstrap: options.bootstrap,
178
- attachedClientId: options.attachedClientId,
179
- attachedClientAuthToken: options.attachedClientAuthToken,
180
- parse: (raw) => RuntimeDeliveryReceiptSchema.parse(raw),
181
- });
182
- },
183
- listInbox,
184
- subscribeInbox(cursor) {
185
- return createPollingSubscription(() => listInbox({ limit: 100, unreadOnly: false }), {
186
- pollIntervalMs,
187
- initialAfterCreatedAt: cursor?.afterCreatedAt ?? 0,
188
- getIdentityKey: (message) => message.id,
189
- getCursor: (message) => message.createdAt,
190
- });
191
- },
192
- async listPeers() {
193
- const payload = await fetchLocalJson("/api/v1/local-control/peers", {
194
- bootstrap: options.bootstrap,
195
- attachedClientId: options.attachedClientId,
196
- attachedClientAuthToken: options.attachedClientAuthToken,
197
- });
198
- return (payload.peers ?? []).map((peer) => PeerViewEventSchema.parse(peer));
199
- },
200
- async listNearbyPeers() {
201
- const payload = await fetchLocalJson("/api/v1/local-control/nearby-peers", {
202
- bootstrap: options.bootstrap,
203
- attachedClientId: options.attachedClientId,
204
- attachedClientAuthToken: options.attachedClientAuthToken,
205
- });
206
- return (payload.peers ?? []).map((peer) => NearbyPeerViewSchema.parse(peer));
207
- },
208
- subscribePeers() {
209
- return createPollingSubscription(async () => {
210
- const payload = await fetchLocalJson("/api/v1/local-control/peers", {
211
- bootstrap: options.bootstrap,
212
- attachedClientId: options.attachedClientId,
213
- attachedClientAuthToken: options.attachedClientAuthToken,
214
- });
215
- return (payload.peers ?? []).map((peer) => PeerViewEventSchema.parse(peer));
216
- }, {
217
- pollIntervalMs,
218
- getIdentityKey: (peer) => peer.nodeId,
219
- getVersionKey: (peer) => [
220
- peer.updatedAt,
221
- peer.endpointRevision,
222
- peer.identityState,
223
- peer.transportState,
224
- peer.lastSeenAt ?? "",
225
- peer.transportPublicKey,
226
- peer.displayNameSnapshot ?? "",
227
- ].join("|"),
228
- });
229
- },
230
- async getRuntimeStatus() {
231
- return fetchLocalJson("/api/v1/local-control/runtime-status", {
232
- bootstrap: options.bootstrap,
233
- attachedClientId: options.attachedClientId,
234
- attachedClientAuthToken: options.attachedClientAuthToken,
235
- parse: (raw) => RuntimeStatusSchema.parse(raw),
236
- });
237
- },
238
- async getRuntimeBootstrap() {
239
- return fetchLocalJson("/api/v1/runtime/bootstrap", {
240
- bootstrap: options.bootstrap,
241
- parse: (raw) => RuntimeBootstrapRecordSchema.parse(raw),
242
- });
243
- },
244
- async listPendingPairRequests() {
245
- const payload = await fetchLocalJson("/api/v1/local-control/pending-pair-requests", {
246
- bootstrap: options.bootstrap,
247
- attachedClientId: options.attachedClientId,
248
- attachedClientAuthToken: options.attachedClientAuthToken,
249
- });
250
- return (payload.requests ?? []).map((request) => PendingPairRequestViewSchema.parse(request));
251
- },
252
- async respondToPairRequest(input) {
253
- return fetchLocalJson("/api/v1/local-control/respond-pair-request", {
254
- method: "POST",
255
- body: JSON.stringify(PairRequestDecisionSchema.parse(input)),
256
- bootstrap: options.bootstrap,
257
- attachedClientId: options.attachedClientId,
258
- attachedClientAuthToken: options.attachedClientAuthToken,
259
- parse: (raw) => PairRequestResponseSchema.parse(raw),
260
- });
261
- },
262
- async createInvite(input) {
263
- return fetchLocalJson("/api/v1/local-control/invites", {
264
- method: "POST",
265
- body: JSON.stringify(CreateInviteRequestSchema.parse(input)),
266
- bootstrap: options.bootstrap,
267
- attachedClientId: options.attachedClientId,
268
- attachedClientAuthToken: options.attachedClientAuthToken,
269
- parse: (raw) => CreateInviteResponseSchema.parse(raw),
270
- });
271
- },
272
- async listPendingInvites() {
273
- const payload = await fetchLocalJson("/api/v1/local-control/invites", {
274
- bootstrap: options.bootstrap,
275
- attachedClientId: options.attachedClientId,
276
- attachedClientAuthToken: options.attachedClientAuthToken,
277
- });
278
- return (payload.invites ?? []).map((invite) => PendingInviteViewSchema.parse(invite));
279
- },
280
- async acceptInviteToken(input) {
281
- return fetchLocalJson("/api/v1/local-control/accept-invite-token", {
282
- method: "POST",
283
- body: JSON.stringify(AcceptInviteTokenRequestSchema.parse(input)),
284
- bootstrap: options.bootstrap,
285
- attachedClientId: options.attachedClientId,
286
- attachedClientAuthToken: options.attachedClientAuthToken,
287
- parse: (raw) => AcceptInviteTokenResponseSchema.parse(raw),
288
- });
289
- },
290
- async cancelInvite(input) {
291
- return fetchLocalJson("/api/v1/local-control/cancel-invite", {
292
- method: "POST",
293
- body: JSON.stringify(CancelInviteRequestSchema.parse(input)),
294
- bootstrap: options.bootstrap,
295
- attachedClientId: options.attachedClientId,
296
- attachedClientAuthToken: options.attachedClientAuthToken,
297
- parse: (raw) => CancelInviteResponseSchema.parse(raw),
298
- });
299
- },
300
- async invitePeer(input) {
301
- return fetchLocalJson("/api/v1/local-control/peer-invite", {
302
- method: "POST",
303
- body: JSON.stringify(InvitePeerRequestSchema.parse(input)),
304
- bootstrap: options.bootstrap,
305
- attachedClientId: options.attachedClientId,
306
- attachedClientAuthToken: options.attachedClientAuthToken,
307
- parse: (raw) => InvitePeerResultSchema.parse(raw),
308
- });
309
- },
310
- async acceptInvite(input) {
311
- return fetchLocalJson("/api/v1/local-control/accept-invite", {
312
- method: "POST",
313
- body: JSON.stringify(AcceptInviteRequestSchema.parse(input)),
314
- bootstrap: options.bootstrap,
315
- attachedClientId: options.attachedClientId,
316
- attachedClientAuthToken: options.attachedClientAuthToken,
317
- parse: (raw) => AcceptInviteResponseSchema.parse(raw),
318
- });
319
- },
320
- async directPair(input) {
321
- return fetchLocalJson("/api/v1/local-control/direct-pair", {
322
- method: "POST",
323
- body: JSON.stringify(DirectPairRequestSchema.parse(input)),
324
- bootstrap: options.bootstrap,
325
- attachedClientId: options.attachedClientId,
326
- attachedClientAuthToken: options.attachedClientAuthToken,
327
- parse: (raw) => DirectPairResponseSchema.parse(raw),
328
- });
329
- },
330
- async revokePeer(input) {
331
- return fetchLocalJson("/api/v1/local-control/revoke-peer", {
332
- method: "POST",
333
- body: JSON.stringify(RevokePeerRequestSchema.parse(input)),
334
- bootstrap: options.bootstrap,
335
- attachedClientId: options.attachedClientId,
336
- attachedClientAuthToken: options.attachedClientAuthToken,
337
- parse: (raw) => RevokePeerResponseSchema.parse(raw),
338
- });
339
- },
340
- async repairPeer(input) {
341
- return fetchLocalJson("/api/v1/local-control/repair-peer", {
342
- method: "POST",
343
- body: JSON.stringify(RepairPeerRequestSchema.parse(input)),
344
- bootstrap: options.bootstrap,
345
- attachedClientId: options.attachedClientId,
346
- attachedClientAuthToken: options.attachedClientAuthToken,
347
- parse: (raw) => RepairPeerResponseSchema.parse(raw),
348
- });
349
- },
350
- async appendSessionMessages(_sessionId, _messages) {
351
- // HTTP bootstrap clients do not own the attached IPC session writer surface.
352
- },
353
- async markSessionCompleted(_sessionId) {
354
- // HTTP bootstrap clients do not own the attached IPC session writer surface.
355
- },
356
- async replaceSessionMessages(_sessionId, _messages) {
357
- // HTTP bootstrap clients do not own the attached IPC session writer surface.
358
- },
359
- };
360
- }
361
- export { assertAttachableRuntimeBootstrap, } from "./local-control-bootstrap.js";
362
- //# sourceMappingURL=local-control-http-client.js.map