@aria-cli/cli 1.0.14

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 (283) hide show
  1. package/bin/aria-dev.js +15 -0
  2. package/bin/aria.js +366 -0
  3. package/bin/install-owner-lease.d.ts +8 -0
  4. package/bin/install-owner-lease.js +53 -0
  5. package/dist/.aria-build-stamp.json +4 -0
  6. package/dist/attached-local-control-client.d.ts +90 -0
  7. package/dist/bootstrap-local-control-client.d.ts +1 -0
  8. package/dist/capability-aware-method-proxy.d.ts +1 -0
  9. package/dist/cli-context.d.ts +31 -0
  10. package/dist/commands/arions.d.ts +14 -0
  11. package/dist/commands/auth.d.ts +27 -0
  12. package/dist/commands/daemon.d.ts +31 -0
  13. package/dist/commands/definitions.d.ts +19 -0
  14. package/dist/commands/index.d.ts +13 -0
  15. package/dist/commands/login-handler.d.ts +108 -0
  16. package/dist/commands/logout-handler.d.ts +24 -0
  17. package/dist/commands/memory-handlers.d.ts +15 -0
  18. package/dist/commands/pairing.d.ts +2 -0
  19. package/dist/commands/peer-message-handler.d.ts +7 -0
  20. package/dist/commands/runtime-cutover-reset-command.d.ts +2 -0
  21. package/dist/commands/runtime-cutover-reset.d.ts +26 -0
  22. package/dist/commands/terminal-setup.d.ts +3 -0
  23. package/dist/config/aria-config.d.ts +50 -0
  24. package/dist/config/index.d.ts +4 -0
  25. package/dist/config/loader.d.ts +17 -0
  26. package/dist/config.d.ts +53 -0
  27. package/dist/daemon-info.d.ts +17 -0
  28. package/dist/ensure-daemon.d.ts +21 -0
  29. package/dist/event-loop-watchdog.d.ts +31 -0
  30. package/dist/headless/auth-orchestrator.d.ts +19 -0
  31. package/dist/headless/auth-service.d.ts +15 -0
  32. package/dist/headless/bootstrap-fast-path.d.ts +12 -0
  33. package/dist/headless/call-command.d.ts +8 -0
  34. package/dist/headless/daemon-service.d.ts +14 -0
  35. package/dist/headless/hook-actions.d.ts +40 -0
  36. package/dist/headless/hook-service.d.ts +8 -0
  37. package/dist/headless/kernel-services.d.ts +8 -0
  38. package/dist/headless/kernel.d.ts +118 -0
  39. package/dist/headless/operations/arion.d.ts +3 -0
  40. package/dist/headless/operations/auth.d.ts +4 -0
  41. package/dist/headless/operations/client.d.ts +2 -0
  42. package/dist/headless/operations/config.d.ts +3 -0
  43. package/dist/headless/operations/daemon.d.ts +3 -0
  44. package/dist/headless/operations/hook.d.ts +3 -0
  45. package/dist/headless/operations/index.d.ts +10 -0
  46. package/dist/headless/operations/memory.d.ts +3 -0
  47. package/dist/headless/operations/message.d.ts +2 -0
  48. package/dist/headless/operations/model.d.ts +3 -0
  49. package/dist/headless/operations/peer.d.ts +2 -0
  50. package/dist/headless/operations/run.d.ts +3 -0
  51. package/dist/headless/operations/session.d.ts +74 -0
  52. package/dist/headless/operations/subscription.d.ts +2 -0
  53. package/dist/headless/operations/system.d.ts +3 -0
  54. package/dist/headless/operations/utils.d.ts +5 -0
  55. package/dist/headless/run-orchestrator.d.ts +38 -0
  56. package/dist/headless/stdio-server.d.ts +4 -0
  57. package/dist/history/SessionHistory.d.ts +200 -0
  58. package/dist/history/conversation-message.d.ts +181 -0
  59. package/dist/history/index.d.ts +8 -0
  60. package/dist/history/jsonl-replay.d.ts +38 -0
  61. package/dist/history/repair-tool-pairing.d.ts +14 -0
  62. package/dist/history/turn-accumulator.d.ts +85 -0
  63. package/dist/index.d.ts +6 -0
  64. package/dist/index.js +505 -0
  65. package/dist/ink-repl.d.ts +32 -0
  66. package/dist/local-control-bootstrap.d.ts +5 -0
  67. package/dist/local-control-client.d.ts +1 -0
  68. package/dist/local-control-error-reporting.d.ts +6 -0
  69. package/dist/local-control-http-client.d.ts +9 -0
  70. package/dist/network-security.d.ts +7 -0
  71. package/dist/networking-server.d.ts +28 -0
  72. package/dist/peer-identity.d.ts +3 -0
  73. package/dist/polling-subscription.d.ts +7 -0
  74. package/dist/relaunch.d.ts +55 -0
  75. package/dist/release-notes.d.ts +11 -0
  76. package/dist/repl-cleanup.d.ts +20 -0
  77. package/dist/selectable-client.d.ts +7 -0
  78. package/dist/selectable-peer.d.ts +12 -0
  79. package/dist/session.d.ts +103 -0
  80. package/dist/slash-commands.d.ts +34 -0
  81. package/dist/sounds.d.ts +31 -0
  82. package/dist/ui/App.d.ts +288 -0
  83. package/dist/ui/components/AnthropicMethodPicker.d.ts +9 -0
  84. package/dist/ui/components/ArionPrompt.d.ts +8 -0
  85. package/dist/ui/components/AutocompleteDropdown.d.ts +9 -0
  86. package/dist/ui/components/AutonomySelector.d.ts +12 -0
  87. package/dist/ui/components/Banner.d.ts +9 -0
  88. package/dist/ui/components/ConversationHistory.d.ts +59 -0
  89. package/dist/ui/components/CopilotDeviceLoginFlow.d.ts +15 -0
  90. package/dist/ui/components/CopilotSourcePicker.d.ts +13 -0
  91. package/dist/ui/components/Cost.d.ts +8 -0
  92. package/dist/ui/components/CustomSelect/option-map.d.ts +15 -0
  93. package/dist/ui/components/CustomSelect/select-option.d.ts +20 -0
  94. package/dist/ui/components/CustomSelect/select.d.ts +55 -0
  95. package/dist/ui/components/CustomSelect/use-select-state.d.ts +99 -0
  96. package/dist/ui/components/CustomSelect/use-select.d.ts +14 -0
  97. package/dist/ui/components/ErrorDisplay.d.ts +26 -0
  98. package/dist/ui/components/FallbackToolUseRejectedMessage.d.ts +2 -0
  99. package/dist/ui/components/FileEditToolUpdatedMessage.d.ts +9 -0
  100. package/dist/ui/components/HandoffMarker.d.ts +17 -0
  101. package/dist/ui/components/HighlightedCode.d.ts +7 -0
  102. package/dist/ui/components/InputArea.d.ts +17 -0
  103. package/dist/ui/components/Message.d.ts +16 -0
  104. package/dist/ui/components/OAuthLoginFlow.d.ts +25 -0
  105. package/dist/ui/components/OutputTruncation.d.ts +16 -0
  106. package/dist/ui/components/PermissionPrompt.d.ts +22 -0
  107. package/dist/ui/components/PipelineTimingPanel.d.ts +13 -0
  108. package/dist/ui/components/ProviderMethodPicker.d.ts +16 -0
  109. package/dist/ui/components/ProviderPicker.d.ts +15 -0
  110. package/dist/ui/components/RenderItemView.d.ts +18 -0
  111. package/dist/ui/components/Spinner.d.ts +3 -0
  112. package/dist/ui/components/StatusBar.d.ts +78 -0
  113. package/dist/ui/components/StreamingIndicator.d.ts +11 -0
  114. package/dist/ui/components/StructuredDiff.d.ts +20 -0
  115. package/dist/ui/components/TextInputOverlay.d.ts +9 -0
  116. package/dist/ui/components/ThinkingBlock.d.ts +53 -0
  117. package/dist/ui/components/ToolCost.d.ts +8 -0
  118. package/dist/ui/components/ToolExecution.d.ts +13 -0
  119. package/dist/ui/components/ToolHeader.d.ts +10 -0
  120. package/dist/ui/components/ToolRenderLayoutContext.d.ts +10 -0
  121. package/dist/ui/components/ToolResultWrapper.d.ts +6 -0
  122. package/dist/ui/components/ToolUseLoader.d.ts +10 -0
  123. package/dist/ui/components/TraceWaterfall.d.ts +56 -0
  124. package/dist/ui/components/index.d.ts +29 -0
  125. package/dist/ui/components/messages/AssistantTextMessage.d.ts +13 -0
  126. package/dist/ui/components/messages/UserImageMessage.d.ts +8 -0
  127. package/dist/ui/components/messages/UserTextMessage.d.ts +13 -0
  128. package/dist/ui/components/overlays/ArionSelector.d.ts +18 -0
  129. package/dist/ui/components/overlays/ClientSelector.d.ts +7 -0
  130. package/dist/ui/components/overlays/CommandPalette.d.ts +14 -0
  131. package/dist/ui/components/overlays/InviteShareOverlay.d.ts +7 -0
  132. package/dist/ui/components/overlays/JoinInviteOverlay.d.ts +6 -0
  133. package/dist/ui/components/overlays/MemoryBrowser.d.ts +17 -0
  134. package/dist/ui/components/overlays/MessageSelector.d.ts +20 -0
  135. package/dist/ui/components/overlays/ModelSelector.d.ts +17 -0
  136. package/dist/ui/components/overlays/PairRequestOverlay.d.ts +19 -0
  137. package/dist/ui/components/overlays/PeerSelector.d.ts +14 -0
  138. package/dist/ui/components/overlays/SessionSelector.d.ts +11 -0
  139. package/dist/ui/components/overlays/ThemeSelector.d.ts +22 -0
  140. package/dist/ui/components/overlays/index.d.ts +13 -0
  141. package/dist/ui/components/permissions/BashPermissionRequest/BashPermissionRequest.d.ts +9 -0
  142. package/dist/ui/components/permissions/FallbackPermissionRequest.d.ts +9 -0
  143. package/dist/ui/components/permissions/FileEditPermissionRequest/FileEditPermissionRequest.d.ts +9 -0
  144. package/dist/ui/components/permissions/FileEditPermissionRequest/FileEditToolDiff.d.ts +11 -0
  145. package/dist/ui/components/permissions/FileWritePermissionRequest/FileWritePermissionRequest.d.ts +9 -0
  146. package/dist/ui/components/permissions/FileWritePermissionRequest/FileWriteToolDiff.d.ts +9 -0
  147. package/dist/ui/components/permissions/FilesystemPermissionRequest/FilesystemPermissionRequest.d.ts +5 -0
  148. package/dist/ui/components/permissions/PermissionRequest.d.ts +52 -0
  149. package/dist/ui/components/permissions/PermissionRequestTitle.d.ts +13 -0
  150. package/dist/ui/components/permissions/hooks.d.ts +10 -0
  151. package/dist/ui/components/permissions/toolUseOptions.d.ts +10 -0
  152. package/dist/ui/components/permissions/utils.d.ts +6 -0
  153. package/dist/ui/components/text-input/Cursor.d.ts +58 -0
  154. package/dist/ui/components/text-input/TextInput.d.ts +98 -0
  155. package/dist/ui/components/text-input/imagePaste.d.ts +2 -0
  156. package/dist/ui/components/text-input/index.d.ts +6 -0
  157. package/dist/ui/components/text-input/useDoublePress.d.ts +2 -0
  158. package/dist/ui/components/text-input/useTextInput.d.ts +34 -0
  159. package/dist/ui/components/tool-types.d.ts +28 -0
  160. package/dist/ui/constants/figures.d.ts +1 -0
  161. package/dist/ui/constants/index.d.ts +1 -0
  162. package/dist/ui/display-mode.d.ts +62 -0
  163. package/dist/ui/display-policy.d.ts +3 -0
  164. package/dist/ui/hooks/index.d.ts +4 -0
  165. package/dist/ui/hooks/useCommandAutocomplete.d.ts +28 -0
  166. package/dist/ui/hooks/useDoublePress.d.ts +13 -0
  167. package/dist/ui/hooks/useIndicatorState.d.ts +3 -0
  168. package/dist/ui/hooks/useInterval.d.ts +6 -0
  169. package/dist/ui/hooks/useKeyboardShortcuts.d.ts +17 -0
  170. package/dist/ui/hooks/usePeerMessages.d.ts +26 -0
  171. package/dist/ui/hooks/useTerminalSize.d.ts +6 -0
  172. package/dist/ui/hooks/useUnifiedMessages.d.ts +83 -0
  173. package/dist/ui/indicator-state.d.ts +46 -0
  174. package/dist/ui/markdown/highlight.d.ts +8 -0
  175. package/dist/ui/markdown/index.d.ts +16 -0
  176. package/dist/ui/markdown/tokenizer.d.ts +17 -0
  177. package/dist/ui/render-item.d.ts +70 -0
  178. package/dist/ui/screens/REPL.d.ts +288 -0
  179. package/dist/ui/status-line.d.ts +32 -0
  180. package/dist/ui/theme/index.d.ts +8 -0
  181. package/dist/ui/theme/themes/claude-dark-daltonized.d.ts +2 -0
  182. package/dist/ui/theme/themes/claude-dark.d.ts +2 -0
  183. package/dist/ui/theme/themes/claude-light-daltonized.d.ts +2 -0
  184. package/dist/ui/theme/themes/claude-light.d.ts +2 -0
  185. package/dist/ui/theme/themes/dark-accessible.d.ts +2 -0
  186. package/dist/ui/theme/themes/dark.d.ts +2 -0
  187. package/dist/ui/theme/themes/light-accessible.d.ts +2 -0
  188. package/dist/ui/theme/themes/light.d.ts +2 -0
  189. package/dist/ui/theme/types.d.ts +51 -0
  190. package/dist/ui/theme.d.ts +51 -0
  191. package/dist/ui/to-render-items.d.ts +7 -0
  192. package/dist/ui/tools/AgentTool/index.d.ts +8 -0
  193. package/dist/ui/tools/ArchitectTool/index.d.ts +10 -0
  194. package/dist/ui/tools/AskUserTool/index.d.ts +19 -0
  195. package/dist/ui/tools/BashTool/BashToolResultMessage.d.ts +13 -0
  196. package/dist/ui/tools/BashTool/OutputLine.d.ts +6 -0
  197. package/dist/ui/tools/BashTool/index.d.ts +8 -0
  198. package/dist/ui/tools/BrowseTool/index.d.ts +20 -0
  199. package/dist/ui/tools/BrowserTool/index.d.ts +25 -0
  200. package/dist/ui/tools/CbmTool/index.d.ts +81 -0
  201. package/dist/ui/tools/CheckDelegationTool/index.d.ts +23 -0
  202. package/dist/ui/tools/CheckMessagesTool/index.d.ts +8 -0
  203. package/dist/ui/tools/CreateQuipTool/index.d.ts +10 -0
  204. package/dist/ui/tools/CreateSkillTool/index.d.ts +13 -0
  205. package/dist/ui/tools/CreateToolTool/index.d.ts +10 -0
  206. package/dist/ui/tools/DelegateRemoteTool/index.d.ts +22 -0
  207. package/dist/ui/tools/DeployTool/index.d.ts +24 -0
  208. package/dist/ui/tools/FffTool/index.d.ts +17 -0
  209. package/dist/ui/tools/FileEditTool/index.d.ts +10 -0
  210. package/dist/ui/tools/FileReadTool/index.d.ts +10 -0
  211. package/dist/ui/tools/FileWriteTool/index.d.ts +10 -0
  212. package/dist/ui/tools/FrgTool/index.d.ts +17 -0
  213. package/dist/ui/tools/GetThreadTool/index.d.ts +10 -0
  214. package/dist/ui/tools/GlobTool/index.d.ts +11 -0
  215. package/dist/ui/tools/GrepTool/index.d.ts +12 -0
  216. package/dist/ui/tools/HatchArionTool/index.d.ts +20 -0
  217. package/dist/ui/tools/LearnSkillTool/index.d.ts +13 -0
  218. package/dist/ui/tools/LearnTool/index.d.ts +15 -0
  219. package/dist/ui/tools/LearnToolTool/index.d.ts +14 -0
  220. package/dist/ui/tools/ListClientsTool/index.d.ts +10 -0
  221. package/dist/ui/tools/LspTool/index.d.ts +11 -0
  222. package/dist/ui/tools/MCPTool/index.d.ts +11 -0
  223. package/dist/ui/tools/ManageNetworkTool/index.d.ts +28 -0
  224. package/dist/ui/tools/MemoryReadTool/index.d.ts +8 -0
  225. package/dist/ui/tools/MemoryWriteTool/index.d.ts +6 -0
  226. package/dist/ui/tools/NotebookEditTool/index.d.ts +19 -0
  227. package/dist/ui/tools/NotebookReadTool/index.d.ts +12 -0
  228. package/dist/ui/tools/OutlookReadTool/index.d.ts +10 -0
  229. package/dist/ui/tools/OutlookReplyTool/index.d.ts +10 -0
  230. package/dist/ui/tools/OutlookSendTool/index.d.ts +10 -0
  231. package/dist/ui/tools/PauseDelegationTool/index.d.ts +20 -0
  232. package/dist/ui/tools/ProbeTool/index.d.ts +26 -0
  233. package/dist/ui/tools/ProcessTool/index.d.ts +29 -0
  234. package/dist/ui/tools/QuestListTool/index.d.ts +24 -0
  235. package/dist/ui/tools/QuestReportTool/index.d.ts +27 -0
  236. package/dist/ui/tools/QuestUpdateTool/index.d.ts +24 -0
  237. package/dist/ui/tools/QuipCommentTool/index.d.ts +23 -0
  238. package/dist/ui/tools/QuipReadTool/index.d.ts +26 -0
  239. package/dist/ui/tools/RestArionTool/index.d.ts +19 -0
  240. package/dist/ui/tools/RestartTool/index.d.ts +20 -0
  241. package/dist/ui/tools/ResumeDelegationTool/index.d.ts +21 -0
  242. package/dist/ui/tools/RetireArionTool/index.d.ts +19 -0
  243. package/dist/ui/tools/RgTool/index.d.ts +44 -0
  244. package/dist/ui/tools/SearchKnowledgeTool/index.d.ts +31 -0
  245. package/dist/ui/tools/SearchMessagesTool/index.d.ts +10 -0
  246. package/dist/ui/tools/SelfDiagnoseTool/index.d.ts +11 -0
  247. package/dist/ui/tools/SendMessageTool/index.d.ts +8 -0
  248. package/dist/ui/tools/SerenaTool/index.d.ts +18 -0
  249. package/dist/ui/tools/SessionHistoryTool/index.d.ts +32 -0
  250. package/dist/ui/tools/SgTool/index.d.ts +8 -0
  251. package/dist/ui/tools/SlackReactTool/index.d.ts +10 -0
  252. package/dist/ui/tools/SlackReadTool/index.d.ts +10 -0
  253. package/dist/ui/tools/SlackSendTool/index.d.ts +10 -0
  254. package/dist/ui/tools/SpawnWorkerTool/index.d.ts +18 -0
  255. package/dist/ui/tools/StickerRequestTool/index.d.ts +6 -0
  256. package/dist/ui/tools/ThinkTool/index.d.ts +8 -0
  257. package/dist/ui/tools/UgTool/index.d.ts +47 -0
  258. package/dist/ui/tools/UseSkillTool/index.d.ts +17 -0
  259. package/dist/ui/tools/WakeArionTool/index.d.ts +19 -0
  260. package/dist/ui/tools/WebFetchTool/index.d.ts +20 -0
  261. package/dist/ui/tools/WebSearchTool/index.d.ts +21 -0
  262. package/dist/ui/tools/lsTool/index.d.ts +12 -0
  263. package/dist/ui/tools/registry.d.ts +15 -0
  264. package/dist/ui/tools/tool-renderer.d.ts +24 -0
  265. package/dist/ui/tools/truncation.d.ts +6 -0
  266. package/dist/ui/types/anthropic.d.ts +19 -0
  267. package/dist/ui/types/index.d.ts +3 -0
  268. package/dist/ui/types/message.d.ts +19 -0
  269. package/dist/ui/types/tool.d.ts +17 -0
  270. package/dist/ui/utils/array.d.ts +1 -0
  271. package/dist/ui/utils/cursor.d.ts +28 -0
  272. package/dist/ui/utils/diff.d.ts +24 -0
  273. package/dist/ui/utils/format.d.ts +3 -0
  274. package/dist/ui/utils/fuzzy.d.ts +11 -0
  275. package/dist/ui/utils/index.d.ts +9 -0
  276. package/dist/ui/utils/keys.d.ts +6 -0
  277. package/dist/ui/utils/patch.d.ts +8 -0
  278. package/dist/ui/utils/risk.d.ts +14 -0
  279. package/dist/ui/utils/terminal-image.d.ts +18 -0
  280. package/dist/ui/utils/validation.d.ts +8 -0
  281. package/dist/ui/verb-pairs.d.ts +20 -0
  282. package/dist/ui.d.ts +70 -0
  283. package/package.json +76 -0
@@ -0,0 +1,118 @@
1
+ import type { IMemoria } from "@aria-cli/types";
2
+ import type { AttachedLocalControlApi, HeadlessClientFrame, HeadlessOperationName, HeadlessServerFrame } from "@aria-cli/tools";
3
+ import { type CliContext } from "../cli-context.js";
4
+ import { type SessionHistory as SessionHistoryType } from "../history/index.js";
5
+ export interface ConfigService {
6
+ getTheme?(): Promise<unknown>;
7
+ setTheme?(theme: string): Promise<unknown>;
8
+ getAutonomy?(): Promise<unknown>;
9
+ setAutonomy?(autonomy: string): Promise<unknown>;
10
+ getActiveArion?(): Promise<string | undefined>;
11
+ setActiveArion?(name: string): Promise<void>;
12
+ }
13
+ export interface AuthService {
14
+ status?(): Promise<unknown>;
15
+ login?(input: Record<string, unknown>): Promise<unknown>;
16
+ logout?(input: Record<string, unknown>): Promise<unknown>;
17
+ }
18
+ export interface ModelDiscoveryService {
19
+ listAvailable?(): Promise<unknown>;
20
+ refresh?(force?: boolean): Promise<unknown>;
21
+ getCurrentModel?(): Promise<string | undefined>;
22
+ setCurrentModel?(model: string): Promise<unknown>;
23
+ getSessionModel?(): Promise<string | undefined>;
24
+ }
25
+ export interface ArionService {
26
+ list?(): Promise<unknown[]>;
27
+ hatch?(input: Record<string, unknown>): Promise<unknown>;
28
+ get?(name: string): Promise<{
29
+ name: string;
30
+ status?: string;
31
+ } | null>;
32
+ wake?(name: string): Promise<void>;
33
+ rest?(name: string, options?: {
34
+ signal?: AbortSignal;
35
+ }): Promise<void>;
36
+ }
37
+ export interface DaemonService {
38
+ start?(input: Record<string, unknown>): Promise<Record<string, unknown>>;
39
+ status?(input: Record<string, unknown>): Promise<Record<string, unknown>>;
40
+ stop?(input: Record<string, unknown>): Promise<Record<string, unknown>>;
41
+ shouldStopOnShutdown?(): boolean;
42
+ releaseAll?(): Promise<void>;
43
+ }
44
+ export interface HookService {
45
+ extract?(input: Record<string, unknown>, options?: {
46
+ signal?: AbortSignal;
47
+ }): Promise<Record<string, unknown>>;
48
+ reflect?(input: Record<string, unknown>, options?: {
49
+ signal?: AbortSignal;
50
+ }): Promise<Record<string, unknown>>;
51
+ consolidate?(input: Record<string, unknown>, options?: {
52
+ signal?: AbortSignal;
53
+ }): Promise<Record<string, unknown>>;
54
+ ingest?(input: Record<string, unknown>, options?: {
55
+ signal?: AbortSignal;
56
+ }): Promise<Record<string, unknown>>;
57
+ harvest?(input: Record<string, unknown>, options?: {
58
+ signal?: AbortSignal;
59
+ }): Promise<Record<string, unknown>>;
60
+ }
61
+ export interface SystemService {
62
+ restart?(input: Record<string, unknown>): Promise<Record<string, unknown>>;
63
+ terminalSetup?(): Promise<Record<string, unknown>>;
64
+ }
65
+ export interface HeadlessRunAbortController {
66
+ abort(input: {
67
+ runId?: string;
68
+ sessionId?: string;
69
+ }): Promise<boolean> | boolean;
70
+ }
71
+ export interface KernelContext {
72
+ cli: CliContext;
73
+ localControl: AttachedLocalControlApi;
74
+ sessionLedger: SessionHistoryType;
75
+ arionManager?: ArionService;
76
+ memoria?: IMemoria;
77
+ config?: ConfigService;
78
+ auth?: AuthService;
79
+ modelDiscovery?: ModelDiscoveryService;
80
+ daemon?: DaemonService;
81
+ hook?: HookService;
82
+ system?: SystemService;
83
+ activeRunController?: HeadlessRunAbortController;
84
+ getSessionModel?(): string | undefined;
85
+ getSessionArion?(): string | undefined;
86
+ }
87
+ export interface FullKernelContext extends KernelContext {
88
+ arionManager: ArionService;
89
+ memoria: IMemoria;
90
+ config: ConfigService;
91
+ auth: AuthService;
92
+ modelDiscovery: ModelDiscoveryService;
93
+ daemon: DaemonService;
94
+ hook: HookService;
95
+ system: SystemService;
96
+ }
97
+ export type HeadlessKernelHandler = (requestId: string, input: unknown, context?: HeadlessDispatchContext) => AsyncGenerator<HeadlessServerFrame, void, undefined>;
98
+ export interface HeadlessDispatchContext {
99
+ signal?: AbortSignal;
100
+ activeRunController?: HeadlessRunAbortController;
101
+ }
102
+ export interface HeadlessKernelRuntime {
103
+ kernel: HeadlessKernel;
104
+ ctx: FullKernelContext;
105
+ release(): Promise<void>;
106
+ }
107
+ export declare function createHeadlessKernelHandlers(ctx: KernelContext): Record<HeadlessOperationName, HeadlessKernelHandler>;
108
+ export declare class HeadlessKernel {
109
+ private readonly ctx;
110
+ private readonly handlers;
111
+ constructor(ctx: KernelContext, handlers?: Record<HeadlessOperationName, HeadlessKernelHandler>);
112
+ dispatch(frame: HeadlessClientFrame, context?: HeadlessDispatchContext): AsyncGenerator<HeadlessServerFrame, void, undefined>;
113
+ getContext(): KernelContext;
114
+ }
115
+ export declare function createHeadlessKernelRuntime(options?: {
116
+ cwd?: string;
117
+ arionName?: string;
118
+ }): Promise<HeadlessKernelRuntime>;
@@ -0,0 +1,3 @@
1
+ import type { HeadlessKernelHandler, KernelContext, FullKernelContext } from "../kernel.js";
2
+ export declare function createArionOperationHandlers(ctx: FullKernelContext): Pick<Record<string, HeadlessKernelHandler>, "arion.list" | "arion.hatch" | "arion.become" | "arion.rest" | "arion.wake" | "arion.create">;
3
+ export declare function createArionOperationHandlers(ctx: KernelContext): Pick<Record<string, HeadlessKernelHandler>, "arion.list" | "arion.hatch" | "arion.become" | "arion.rest" | "arion.wake" | "arion.create">;
@@ -0,0 +1,4 @@
1
+ import type { HeadlessKernelHandler, KernelContext, FullKernelContext } from "../kernel.js";
2
+ import type { HeadlessAuthOrchestrator } from "../auth-orchestrator.js";
3
+ export declare function createAuthOperationHandlers(ctx: FullKernelContext, orchestrator: HeadlessAuthOrchestrator): Pick<Record<string, HeadlessKernelHandler>, "auth.status" | "auth.login" | "auth.logout">;
4
+ export declare function createAuthOperationHandlers(ctx: KernelContext, orchestrator: HeadlessAuthOrchestrator): Pick<Record<string, HeadlessKernelHandler>, "auth.status" | "auth.login" | "auth.logout">;
@@ -0,0 +1,2 @@
1
+ import type { HeadlessKernelHandler, KernelContext } from "../kernel.js";
2
+ export declare function createClientOperationHandlers(ctx: KernelContext): Pick<Record<string, HeadlessKernelHandler>, "client.list" | "client.inbox.list">;
@@ -0,0 +1,3 @@
1
+ import type { HeadlessKernelHandler, KernelContext, FullKernelContext } from "../kernel.js";
2
+ export declare function createConfigOperationHandlers(ctx: FullKernelContext): Pick<Record<string, HeadlessKernelHandler>, "config.theme.get" | "config.theme.set" | "config.autonomy.get" | "config.autonomy.set">;
3
+ export declare function createConfigOperationHandlers(ctx: KernelContext): Pick<Record<string, HeadlessKernelHandler>, "config.theme.get" | "config.theme.set" | "config.autonomy.get" | "config.autonomy.set">;
@@ -0,0 +1,3 @@
1
+ import type { HeadlessKernelHandler, KernelContext, FullKernelContext } from "../kernel.js";
2
+ export declare function createDaemonOperationHandlers(ctx: FullKernelContext): Pick<Record<string, HeadlessKernelHandler>, "daemon.start" | "daemon.status" | "daemon.stop">;
3
+ export declare function createDaemonOperationHandlers(ctx: KernelContext): Pick<Record<string, HeadlessKernelHandler>, "daemon.start" | "daemon.status" | "daemon.stop">;
@@ -0,0 +1,3 @@
1
+ import type { HeadlessKernelHandler, KernelContext, FullKernelContext } from "../kernel.js";
2
+ export declare function createHookOperationHandlers(ctx: FullKernelContext): Pick<Record<string, HeadlessKernelHandler>, "hook.extract" | "hook.reflect" | "hook.consolidate" | "hook.ingest" | "hook.harvest">;
3
+ export declare function createHookOperationHandlers(ctx: KernelContext): Pick<Record<string, HeadlessKernelHandler>, "hook.extract" | "hook.reflect" | "hook.consolidate" | "hook.ingest" | "hook.harvest">;
@@ -0,0 +1,10 @@
1
+ export { createArionOperationHandlers } from "./arion.js";
2
+ export { createAuthOperationHandlers } from "./auth.js";
3
+ export { createClientOperationHandlers } from "./client.js";
4
+ export { createConfigOperationHandlers } from "./config.js";
5
+ export { createMemoryOperationHandlers } from "./memory.js";
6
+ export { createMessageOperationHandlers } from "./message.js";
7
+ export { createModelOperationHandlers } from "./model.js";
8
+ export { createPeerOperationHandlers } from "./peer.js";
9
+ export { createRunOperationHandlers } from "./run.js";
10
+ export { createSessionOperationHandlers } from "./session.js";
@@ -0,0 +1,3 @@
1
+ import type { HeadlessKernelHandler, KernelContext, FullKernelContext } from "../kernel.js";
2
+ export declare function createMemoryOperationHandlers(ctx: FullKernelContext): Pick<Record<string, HeadlessKernelHandler>, "memory.remember" | "memory.recall" | "memory.list" | "memory.forget" | "memory.recall_knowledge">;
3
+ export declare function createMemoryOperationHandlers(ctx: KernelContext): Pick<Record<string, HeadlessKernelHandler>, "memory.remember" | "memory.recall" | "memory.list" | "memory.forget" | "memory.recall_knowledge">;
@@ -0,0 +1,2 @@
1
+ import type { HeadlessKernelHandler, KernelContext } from "../kernel.js";
2
+ export declare function createMessageOperationHandlers(ctx: KernelContext): Pick<Record<string, HeadlessKernelHandler>, "message.send" | "message.inbox.list">;
@@ -0,0 +1,3 @@
1
+ import type { HeadlessKernelHandler, KernelContext, FullKernelContext } from "../kernel.js";
2
+ export declare function createModelOperationHandlers(ctx: FullKernelContext): Pick<Record<string, HeadlessKernelHandler>, "model.list" | "model.set" | "model.refresh">;
3
+ export declare function createModelOperationHandlers(ctx: KernelContext): Pick<Record<string, HeadlessKernelHandler>, "model.list" | "model.set" | "model.refresh">;
@@ -0,0 +1,2 @@
1
+ import type { HeadlessKernelHandler, KernelContext } from "../kernel.js";
2
+ export declare function createPeerOperationHandlers(ctx: KernelContext): Pick<Record<string, HeadlessKernelHandler>, "peer.list" | "peer.list_nearby" | "peer.pending.list" | "peer.pending.respond" | "peer.invite" | "peer.connect" | "peer.accept_invite" | "peer.direct_pair" | "peer.repair" | "peer.revoke">;
@@ -0,0 +1,3 @@
1
+ import type { HeadlessKernelHandler } from "../kernel.js";
2
+ import { HeadlessRunOrchestrator } from "../run-orchestrator.js";
3
+ export declare function createRunOperationHandlers(orchestrator: HeadlessRunOrchestrator): Pick<Record<string, HeadlessKernelHandler>, "run.start" | "run.resume" | "run.abort" | "interaction.respond">;
@@ -0,0 +1,74 @@
1
+ import type { HeadlessKernelHandler, KernelContext } from "../kernel.js";
2
+ export declare function buildSessionListResult(requestId: string, sessionLedger: KernelContext["sessionLedger"], input: unknown): {
3
+ kind: "result";
4
+ requestId: string;
5
+ op: "run.start" | "run.resume" | "run.abort" | "interaction.respond" | "session.list" | "session.read" | "session.load" | "session.fork" | "memory.remember" | "memory.recall" | "memory.list" | "memory.forget" | "memory.recall_knowledge" | "arion.list" | "arion.hatch" | "arion.become" | "arion.rest" | "arion.wake" | "arion.create" | "model.list" | "model.set" | "model.refresh" | "auth.status" | "auth.login" | "auth.logout" | "peer.list" | "peer.list_nearby" | "peer.pending.list" | "peer.pending.respond" | "peer.invite" | "peer.connect" | "peer.accept_invite" | "peer.direct_pair" | "peer.repair" | "peer.revoke" | "client.list" | "client.inbox.list" | "message.send" | "message.inbox.list" | "config.theme.get" | "config.theme.set" | "config.autonomy.get" | "config.autonomy.set" | "system.restart" | "system.terminal_setup" | "daemon.start" | "daemon.status" | "daemon.stop" | "hook.extract" | "hook.reflect" | "hook.consolidate" | "hook.ingest" | "hook.harvest";
6
+ ok: true;
7
+ result: unknown;
8
+ } | {
9
+ kind: "result";
10
+ requestId: string;
11
+ op: "unknown" | "run.start" | "run.resume" | "run.abort" | "interaction.respond" | "session.list" | "session.read" | "session.load" | "session.fork" | "memory.remember" | "memory.recall" | "memory.list" | "memory.forget" | "memory.recall_knowledge" | "arion.list" | "arion.hatch" | "arion.become" | "arion.rest" | "arion.wake" | "arion.create" | "model.list" | "model.set" | "model.refresh" | "auth.status" | "auth.login" | "auth.logout" | "peer.list" | "peer.list_nearby" | "peer.pending.list" | "peer.pending.respond" | "peer.invite" | "peer.connect" | "peer.accept_invite" | "peer.direct_pair" | "peer.repair" | "peer.revoke" | "client.list" | "client.inbox.list" | "message.send" | "message.inbox.list" | "config.theme.get" | "config.theme.set" | "config.autonomy.get" | "config.autonomy.set" | "system.restart" | "system.terminal_setup" | "daemon.start" | "daemon.status" | "daemon.stop" | "hook.extract" | "hook.reflect" | "hook.consolidate" | "hook.ingest" | "hook.harvest";
12
+ ok: false;
13
+ error: {
14
+ code: string;
15
+ message: string;
16
+ retryable?: boolean | undefined;
17
+ details?: Record<string, unknown> | undefined;
18
+ };
19
+ };
20
+ export declare function buildSessionReadResult(requestId: string, sessionLedger: KernelContext["sessionLedger"], input: unknown): {
21
+ kind: "result";
22
+ requestId: string;
23
+ op: "run.start" | "run.resume" | "run.abort" | "interaction.respond" | "session.list" | "session.read" | "session.load" | "session.fork" | "memory.remember" | "memory.recall" | "memory.list" | "memory.forget" | "memory.recall_knowledge" | "arion.list" | "arion.hatch" | "arion.become" | "arion.rest" | "arion.wake" | "arion.create" | "model.list" | "model.set" | "model.refresh" | "auth.status" | "auth.login" | "auth.logout" | "peer.list" | "peer.list_nearby" | "peer.pending.list" | "peer.pending.respond" | "peer.invite" | "peer.connect" | "peer.accept_invite" | "peer.direct_pair" | "peer.repair" | "peer.revoke" | "client.list" | "client.inbox.list" | "message.send" | "message.inbox.list" | "config.theme.get" | "config.theme.set" | "config.autonomy.get" | "config.autonomy.set" | "system.restart" | "system.terminal_setup" | "daemon.start" | "daemon.status" | "daemon.stop" | "hook.extract" | "hook.reflect" | "hook.consolidate" | "hook.ingest" | "hook.harvest";
24
+ ok: true;
25
+ result: unknown;
26
+ } | {
27
+ kind: "result";
28
+ requestId: string;
29
+ op: "unknown" | "run.start" | "run.resume" | "run.abort" | "interaction.respond" | "session.list" | "session.read" | "session.load" | "session.fork" | "memory.remember" | "memory.recall" | "memory.list" | "memory.forget" | "memory.recall_knowledge" | "arion.list" | "arion.hatch" | "arion.become" | "arion.rest" | "arion.wake" | "arion.create" | "model.list" | "model.set" | "model.refresh" | "auth.status" | "auth.login" | "auth.logout" | "peer.list" | "peer.list_nearby" | "peer.pending.list" | "peer.pending.respond" | "peer.invite" | "peer.connect" | "peer.accept_invite" | "peer.direct_pair" | "peer.repair" | "peer.revoke" | "client.list" | "client.inbox.list" | "message.send" | "message.inbox.list" | "config.theme.get" | "config.theme.set" | "config.autonomy.get" | "config.autonomy.set" | "system.restart" | "system.terminal_setup" | "daemon.start" | "daemon.status" | "daemon.stop" | "hook.extract" | "hook.reflect" | "hook.consolidate" | "hook.ingest" | "hook.harvest";
30
+ ok: false;
31
+ error: {
32
+ code: string;
33
+ message: string;
34
+ retryable?: boolean | undefined;
35
+ details?: Record<string, unknown> | undefined;
36
+ };
37
+ };
38
+ export declare function buildSessionLoadResult(requestId: string, sessionLedger: KernelContext["sessionLedger"], input: unknown): {
39
+ kind: "result";
40
+ requestId: string;
41
+ op: "run.start" | "run.resume" | "run.abort" | "interaction.respond" | "session.list" | "session.read" | "session.load" | "session.fork" | "memory.remember" | "memory.recall" | "memory.list" | "memory.forget" | "memory.recall_knowledge" | "arion.list" | "arion.hatch" | "arion.become" | "arion.rest" | "arion.wake" | "arion.create" | "model.list" | "model.set" | "model.refresh" | "auth.status" | "auth.login" | "auth.logout" | "peer.list" | "peer.list_nearby" | "peer.pending.list" | "peer.pending.respond" | "peer.invite" | "peer.connect" | "peer.accept_invite" | "peer.direct_pair" | "peer.repair" | "peer.revoke" | "client.list" | "client.inbox.list" | "message.send" | "message.inbox.list" | "config.theme.get" | "config.theme.set" | "config.autonomy.get" | "config.autonomy.set" | "system.restart" | "system.terminal_setup" | "daemon.start" | "daemon.status" | "daemon.stop" | "hook.extract" | "hook.reflect" | "hook.consolidate" | "hook.ingest" | "hook.harvest";
42
+ ok: true;
43
+ result: unknown;
44
+ } | {
45
+ kind: "result";
46
+ requestId: string;
47
+ op: "unknown" | "run.start" | "run.resume" | "run.abort" | "interaction.respond" | "session.list" | "session.read" | "session.load" | "session.fork" | "memory.remember" | "memory.recall" | "memory.list" | "memory.forget" | "memory.recall_knowledge" | "arion.list" | "arion.hatch" | "arion.become" | "arion.rest" | "arion.wake" | "arion.create" | "model.list" | "model.set" | "model.refresh" | "auth.status" | "auth.login" | "auth.logout" | "peer.list" | "peer.list_nearby" | "peer.pending.list" | "peer.pending.respond" | "peer.invite" | "peer.connect" | "peer.accept_invite" | "peer.direct_pair" | "peer.repair" | "peer.revoke" | "client.list" | "client.inbox.list" | "message.send" | "message.inbox.list" | "config.theme.get" | "config.theme.set" | "config.autonomy.get" | "config.autonomy.set" | "system.restart" | "system.terminal_setup" | "daemon.start" | "daemon.status" | "daemon.stop" | "hook.extract" | "hook.reflect" | "hook.consolidate" | "hook.ingest" | "hook.harvest";
48
+ ok: false;
49
+ error: {
50
+ code: string;
51
+ message: string;
52
+ retryable?: boolean | undefined;
53
+ details?: Record<string, unknown> | undefined;
54
+ };
55
+ };
56
+ export declare function buildSessionForkResult(requestId: string, sessionLedger: KernelContext["sessionLedger"], input: unknown): {
57
+ kind: "result";
58
+ requestId: string;
59
+ op: "run.start" | "run.resume" | "run.abort" | "interaction.respond" | "session.list" | "session.read" | "session.load" | "session.fork" | "memory.remember" | "memory.recall" | "memory.list" | "memory.forget" | "memory.recall_knowledge" | "arion.list" | "arion.hatch" | "arion.become" | "arion.rest" | "arion.wake" | "arion.create" | "model.list" | "model.set" | "model.refresh" | "auth.status" | "auth.login" | "auth.logout" | "peer.list" | "peer.list_nearby" | "peer.pending.list" | "peer.pending.respond" | "peer.invite" | "peer.connect" | "peer.accept_invite" | "peer.direct_pair" | "peer.repair" | "peer.revoke" | "client.list" | "client.inbox.list" | "message.send" | "message.inbox.list" | "config.theme.get" | "config.theme.set" | "config.autonomy.get" | "config.autonomy.set" | "system.restart" | "system.terminal_setup" | "daemon.start" | "daemon.status" | "daemon.stop" | "hook.extract" | "hook.reflect" | "hook.consolidate" | "hook.ingest" | "hook.harvest";
60
+ ok: true;
61
+ result: unknown;
62
+ } | {
63
+ kind: "result";
64
+ requestId: string;
65
+ op: "unknown" | "run.start" | "run.resume" | "run.abort" | "interaction.respond" | "session.list" | "session.read" | "session.load" | "session.fork" | "memory.remember" | "memory.recall" | "memory.list" | "memory.forget" | "memory.recall_knowledge" | "arion.list" | "arion.hatch" | "arion.become" | "arion.rest" | "arion.wake" | "arion.create" | "model.list" | "model.set" | "model.refresh" | "auth.status" | "auth.login" | "auth.logout" | "peer.list" | "peer.list_nearby" | "peer.pending.list" | "peer.pending.respond" | "peer.invite" | "peer.connect" | "peer.accept_invite" | "peer.direct_pair" | "peer.repair" | "peer.revoke" | "client.list" | "client.inbox.list" | "message.send" | "message.inbox.list" | "config.theme.get" | "config.theme.set" | "config.autonomy.get" | "config.autonomy.set" | "system.restart" | "system.terminal_setup" | "daemon.start" | "daemon.status" | "daemon.stop" | "hook.extract" | "hook.reflect" | "hook.consolidate" | "hook.ingest" | "hook.harvest";
66
+ ok: false;
67
+ error: {
68
+ code: string;
69
+ message: string;
70
+ retryable?: boolean | undefined;
71
+ details?: Record<string, unknown> | undefined;
72
+ };
73
+ };
74
+ export declare function createSessionOperationHandlers(ctx: KernelContext): Pick<Record<string, HeadlessKernelHandler>, "session.list" | "session.read" | "session.load" | "session.fork">;
@@ -0,0 +1,2 @@
1
+ import type { HeadlessKernelHandler, KernelContext } from "../kernel.js";
2
+ export declare function createSubscriptionOperationHandlers(ctx: KernelContext): Pick<Record<string, HeadlessKernelHandler>, "subscription.peers" | "subscription.inbox" | "subscription.runtime_status">;
@@ -0,0 +1,3 @@
1
+ import type { HeadlessKernelHandler, KernelContext, FullKernelContext } from "../kernel.js";
2
+ export declare function createSystemOperationHandlers(ctx: FullKernelContext): Pick<Record<string, HeadlessKernelHandler>, "system.restart" | "system.terminal_setup">;
3
+ export declare function createSystemOperationHandlers(ctx: KernelContext): Pick<Record<string, HeadlessKernelHandler>, "system.restart" | "system.terminal_setup">;
@@ -0,0 +1,5 @@
1
+ import type { HeadlessOperationName, HeadlessResult } from "@aria-cli/tools";
2
+ import type { HeadlessKernelHandler } from "../kernel.js";
3
+ export declare function successResult(requestId: string, op: HeadlessOperationName, result: unknown): HeadlessResult;
4
+ export declare function failureResult(requestId: string, op: HeadlessOperationName, code: string, message: string, details?: Record<string, unknown>): HeadlessResult;
5
+ export declare function unsupportedWhenMissing(serviceName: string, op: HeadlessOperationName): HeadlessKernelHandler;
@@ -0,0 +1,38 @@
1
+ import type { AttachedLocalControlApi, HeadlessRunStartInput, HeadlessRunResumeInput, HeadlessInteractionResponse, HeadlessServerFrame } from "@aria-cli/tools";
2
+ import type { SessionHistory } from "../history/SessionHistory.js";
3
+ export interface HeadlessRunExecutionContext {
4
+ localControl: AttachedLocalControlApi;
5
+ sessionLedger: SessionHistory;
6
+ activeRunController?: {
7
+ abort(input: {
8
+ runId?: string;
9
+ sessionId?: string;
10
+ }): Promise<boolean> | boolean;
11
+ };
12
+ getSessionModel?: () => string | undefined;
13
+ getSessionArion?: () => string | undefined;
14
+ }
15
+ export declare class HeadlessRunOrchestrator {
16
+ private readonly ctx;
17
+ constructor(ctx: HeadlessRunExecutionContext);
18
+ private renewSessionLease;
19
+ private clearRunningSession;
20
+ private releaseClaimOnce;
21
+ private static isAbortError;
22
+ private static createAbortReason;
23
+ private static getAbortCode;
24
+ private static getAbortMessage;
25
+ start(requestId: string, request: HeadlessRunStartInput, signal?: AbortSignal): AsyncGenerator<HeadlessServerFrame, void, undefined>;
26
+ resume(requestId: string, request: HeadlessRunResumeInput, signal?: AbortSignal): AsyncGenerator<HeadlessServerFrame, void, undefined>;
27
+ abort(requestId: string, input: {
28
+ runId?: string;
29
+ sessionId?: string;
30
+ }, activeRunController?: {
31
+ abort(input: {
32
+ runId?: string;
33
+ sessionId?: string;
34
+ }): Promise<boolean> | boolean;
35
+ }): AsyncGenerator<HeadlessServerFrame, void, undefined>;
36
+ respond(response: HeadlessInteractionResponse, signal?: AbortSignal): AsyncGenerator<HeadlessServerFrame, void, undefined>;
37
+ private consumeRunEvent;
38
+ }
@@ -0,0 +1,4 @@
1
+ export declare function startHeadlessStdioServer(options?: {
2
+ cwd?: string;
3
+ arionName?: string;
4
+ }): Promise<void>;
@@ -0,0 +1,200 @@
1
+ import type { ConversationMessage } from "./conversation-message.js";
2
+ export interface SessionSummary {
3
+ id: string;
4
+ createdAt: Date;
5
+ updatedAt: Date;
6
+ completedAt?: Date;
7
+ title: string | null;
8
+ arion: string;
9
+ model: string;
10
+ messageCount: number;
11
+ preview: string;
12
+ }
13
+ export interface SessionMessage {
14
+ id: number;
15
+ role: "user" | "assistant" | "system" | "tool";
16
+ content: string;
17
+ arion?: string;
18
+ toolCallId?: string;
19
+ toolCalls?: Array<{
20
+ id: string;
21
+ name: string;
22
+ arguments: Record<string, unknown>;
23
+ thoughtSignature?: string;
24
+ }>;
25
+ thinking?: unknown[];
26
+ createdAt: Date;
27
+ }
28
+ export interface SessionContext {
29
+ id: string;
30
+ arion: string;
31
+ model: string;
32
+ messages: SessionMessage[];
33
+ }
34
+ export interface LoadedSession {
35
+ id: string;
36
+ arion: string;
37
+ model: string;
38
+ messages: ConversationMessage[];
39
+ }
40
+ export type SessionRuntimeStateStatus = "idle" | "running" | "paused" | "completed";
41
+ export type SessionInteractionStatus = "pending" | "answered" | "applied" | "expired" | "canceled";
42
+ export interface SessionRuntimeState {
43
+ sessionId: string;
44
+ stateStatus: SessionRuntimeStateStatus;
45
+ activeRunId: string | null;
46
+ pausedState: unknown | null;
47
+ policySnapshot: Record<string, unknown> | null;
48
+ lastEventSeq: number;
49
+ revision: number;
50
+ leaseOwner: string | null;
51
+ leaseExpiresAt: string | null;
52
+ updatedAt: string;
53
+ }
54
+ export interface SessionInteractionRecord {
55
+ interactionId: string;
56
+ sessionId: string;
57
+ requestId: string;
58
+ source: "run" | "auth" | "system" | "peer";
59
+ kind: string;
60
+ status: SessionInteractionStatus;
61
+ prompt: Record<string, unknown>;
62
+ response: Record<string, unknown> | null;
63
+ createdAt: string;
64
+ answeredAt: string | null;
65
+ appliedAt: string | null;
66
+ }
67
+ export interface LoadedSessionState {
68
+ session: LoadedSession;
69
+ runtimeState: SessionRuntimeState | null;
70
+ pendingInteraction: SessionInteractionRecord | null;
71
+ }
72
+ export interface RunMetricsRow {
73
+ id: string;
74
+ sessionId: string;
75
+ turnCount?: number;
76
+ inputTokens?: number;
77
+ outputTokens?: number;
78
+ totalTokens?: number;
79
+ estimatedCost?: number;
80
+ wallTimeMs?: number;
81
+ toolCount?: number;
82
+ guardrailFires?: number;
83
+ handoffCount?: number;
84
+ createdAt?: string;
85
+ }
86
+ export declare class SessionHistory {
87
+ private db;
88
+ private sessionFtsEnabled;
89
+ /** Sessions that received incremental addConversationMessage writes this process. */
90
+ private readonly incrementalSessions;
91
+ /**
92
+ * Resolve the per-Arion history.db path.
93
+ * Each Arion gets its own history.db at ~/.aria/arions/{arionName}/history.db.
94
+ */
95
+ static resolvePerArionPath(ariaDir: string, arionName: string): string;
96
+ /**
97
+ * Migrate JSONL logs from global ~/.aria/logs/ to per-Arion ~/.aria/arions/{arionName}/logs/.
98
+ * Copies all .jsonl files on first access. Keeps originals intact.
99
+ */
100
+ static migrateJsonlLogs(ariaDir: string, arionName: string): string;
101
+ constructor(dbPath: string);
102
+ private initialize;
103
+ private initializeSessionFts;
104
+ private toFtsPrefixQuery;
105
+ private withImmediateTransaction;
106
+ private ensureSessionRuntimeRow;
107
+ private readSessionRuntimeStateRow;
108
+ private parseJsonColumn;
109
+ private toSessionRuntimeState;
110
+ private toSessionInteractionRecord;
111
+ private assertSessionMutationGuard;
112
+ createSession(arion: string, model: string, id?: string): string;
113
+ /**
114
+ * Fork (clone) a session into a new independent session.
115
+ * Copies all messages (or up to `messageLimit`) from the source session.
116
+ * The new session gets a fresh runtime state and no interactions.
117
+ *
118
+ * @returns The new session ID, source session ID, number of messages copied, and title.
119
+ */
120
+ forkSession(sourceSessionId: string, options?: {
121
+ messageLimit?: number;
122
+ title?: string;
123
+ }): {
124
+ newSessionId: string;
125
+ sourceSessionId: string;
126
+ messagesCopied: number;
127
+ title: string | null;
128
+ };
129
+ addMessage(sessionId: string, role: "user" | "assistant" | "system" | "tool", content: string, options?: {
130
+ arion?: string;
131
+ toolCallId?: string;
132
+ toolCalls?: Array<{
133
+ id: string;
134
+ name: string;
135
+ arguments: Record<string, unknown>;
136
+ thoughtSignature?: string;
137
+ }>;
138
+ thinking?: unknown[];
139
+ }): void;
140
+ addConversationMessage(sessionId: string, msg: ConversationMessage): void;
141
+ /**
142
+ * Atomically persist multiple conversation messages in a single transaction.
143
+ * Either all messages are committed or none — no partial turns in history.
144
+ * Also reduces write contention: one lock acquisition instead of N.
145
+ */
146
+ addConversationMessages(sessionId: string, msgs: ConversationMessage[]): void;
147
+ replaceConversationMessages(sessionId: string, msgs: ConversationMessage[]): void;
148
+ loadSessionMessages(sessionId: string): LoadedSession | null;
149
+ loadSession(sessionId: string): LoadedSessionState | null;
150
+ getSessionRuntimeState(sessionId: string): SessionRuntimeState | null;
151
+ getInteraction(interactionId: string): SessionInteractionRecord | null;
152
+ claimSessionForMutation(sessionId: string, ownerId: string, staleAfterMs: number): SessionRuntimeState;
153
+ recordPausedRun(sessionId: string, runId: string, pausedState: unknown, policySnapshot: Record<string, unknown>, interactionRecord?: Pick<SessionInteractionRecord, "interactionId" | "requestId" | "source" | "kind" | "prompt"> | null, options?: {
154
+ ownerId?: string;
155
+ expectedRevision?: number;
156
+ lastEventSeq?: number;
157
+ }): SessionRuntimeState;
158
+ recordInteractionResponse(sessionId: string, interactionId: string, response: Record<string, unknown>, options?: {
159
+ ownerId?: string;
160
+ expectedRevision?: number;
161
+ }): SessionInteractionRecord;
162
+ cancelInteraction(sessionId: string, interactionId: string, options?: {
163
+ ownerId?: string;
164
+ expectedRevision?: number;
165
+ }): SessionInteractionRecord;
166
+ completeRun(sessionId: string, _runResult: Record<string, unknown>, options?: {
167
+ ownerId?: string;
168
+ expectedRevision?: number;
169
+ }): SessionRuntimeState;
170
+ releaseSessionClaim(sessionId: string, ownerId: string): void;
171
+ listSessions(limit?: number, offset?: number): SessionSummary[];
172
+ searchSessions(query: string, limit?: number, offset?: number): SessionSummary[];
173
+ searchSessionsFts(query: string, limit?: number, offset?: number): SessionSummary[];
174
+ /**
175
+ * Fast session search for interactive UI filtering.
176
+ *
177
+ * Unlike `searchSessions`, this does NOT join the messages table.
178
+ * It searches session metadata only (title/arion/model/id) so it stays
179
+ * responsive while the user types in the resume overlay.
180
+ */
181
+ searchSessionSummaries(query: string, limit?: number, offset?: number): SessionSummary[];
182
+ getSession(sessionId: string): SessionContext | null;
183
+ deleteSession(sessionId: string): void;
184
+ setSessionTitle(sessionId: string, title: string): void;
185
+ markCompleted(sessionId: string): void;
186
+ markStaleSessionsCompleted(maxAgeDays: number): number;
187
+ getIncompleteSessions(limit?: number): SessionSummary[];
188
+ /**
189
+ * Resolve a session ID from a full UUID or prefix (8+ chars).
190
+ * Returns the full ID if exactly one match, null otherwise.
191
+ */
192
+ findSessionByPrefix(prefix: string): string | null;
193
+ getSessionCount(): number;
194
+ private truncatePreview;
195
+ addInputHistory(content: string): void;
196
+ getInputHistory(limit?: number): string[];
197
+ saveRunMetrics(sessionId: string, metrics: RunMetricsRow): void;
198
+ getRunMetrics(sessionId: string): RunMetricsRow[];
199
+ close(): void;
200
+ }