@aria-cli/tools 1.0.19 → 1.0.31

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 (459) hide show
  1. package/dist/.aria-build-stamp.json +1 -1
  2. package/dist/ask-user-interaction.js +23 -0
  3. package/dist/cache/web-cache.js +67 -0
  4. package/dist/definitions/arion.js +105 -0
  5. package/dist/definitions/browser/browser.js +419 -0
  6. package/dist/definitions/browser/index.js +5 -0
  7. package/dist/definitions/browser/pw-downloads.js +115 -0
  8. package/dist/definitions/browser/pw-interactions.js +200 -0
  9. package/dist/definitions/browser/pw-responses.js +77 -0
  10. package/dist/definitions/browser/pw-session.js +311 -0
  11. package/dist/definitions/browser/pw-shared.js +67 -0
  12. package/dist/definitions/browser/pw-snapshot.js +302 -0
  13. package/dist/definitions/browser/pw-state.js +63 -0
  14. package/dist/definitions/browser/types.js +5 -0
  15. package/dist/definitions/code-intelligence.js +471 -0
  16. package/dist/definitions/core.js +110 -0
  17. package/dist/definitions/delegation.js +513 -0
  18. package/dist/definitions/deploy.js +66 -0
  19. package/dist/definitions/filesystem.js +197 -0
  20. package/dist/definitions/frg.js +64 -0
  21. package/{dist-cjs/definitions/index.d.ts → dist/definitions/index.js} +2 -0
  22. package/dist/definitions/memory.js +124 -0
  23. package/dist/definitions/messaging.js +626 -0
  24. package/dist/definitions/meta.js +350 -0
  25. package/dist/definitions/network.js +160 -0
  26. package/dist/definitions/outlook.js +278 -0
  27. package/dist/definitions/patch/apply-patch.js +185 -0
  28. package/dist/definitions/patch/fuzzy-match.js +167 -0
  29. package/{dist-cjs/definitions/patch/index.d.ts → dist/definitions/patch/index.js} +1 -0
  30. package/dist/definitions/patch/patch-parser.js +208 -0
  31. package/dist/definitions/patch/sandbox-paths.js +106 -0
  32. package/dist/definitions/process/index.js +5 -0
  33. package/dist/definitions/process/process-registry.js +214 -0
  34. package/dist/definitions/process/process.js +387 -0
  35. package/dist/definitions/process/pty-keys.js +255 -0
  36. package/dist/definitions/process/session-slug.js +143 -0
  37. package/dist/definitions/quip.js +196 -0
  38. package/dist/definitions/search.js +61 -0
  39. package/dist/definitions/session-history.js +70 -0
  40. package/dist/definitions/shell.js +182 -0
  41. package/dist/definitions/slack.js +181 -0
  42. package/dist/definitions/web.js +110 -0
  43. package/dist/executors/apply-patch.js +902 -0
  44. package/dist/executors/arion.js +120 -0
  45. package/dist/executors/code-intelligence.js +883 -0
  46. package/dist/executors/deploy.js +849 -0
  47. package/dist/executors/filesystem.js +1119 -0
  48. package/dist/executors/frg-freshness.js +577 -0
  49. package/dist/executors/frg.js +299 -0
  50. package/{dist-cjs/executors/index.d.ts → dist/executors/index.js} +22 -19
  51. package/dist/executors/learning-meta.js +1147 -0
  52. package/dist/executors/lsp-client.js +297 -0
  53. package/dist/executors/memory.js +751 -0
  54. package/dist/executors/meta.js +221 -0
  55. package/dist/executors/process-registry.js +466 -0
  56. package/dist/executors/pty-session-store.js +31 -0
  57. package/dist/executors/pty.js +281 -0
  58. package/dist/executors/restart.js +120 -0
  59. package/dist/executors/search-freshness.js +196 -0
  60. package/dist/executors/search-types.js +53 -0
  61. package/dist/executors/search.js +67 -0
  62. package/dist/executors/self-diagnose.js +399 -0
  63. package/dist/executors/session-history.js +284 -0
  64. package/dist/executors/shell-safety.js +474 -0
  65. package/dist/executors/shell.js +955 -0
  66. package/dist/executors/utils.js +34 -0
  67. package/dist/executors/web.js +543 -0
  68. package/dist/extraction/content-extraction.js +248 -0
  69. package/dist/extraction/index.js +5 -0
  70. package/dist/headless-control-contract.js +968 -0
  71. package/dist/{index-v49pd2a0.js → index-45qvfjbf.js} +2 -2
  72. package/dist/index.js +71 -372
  73. package/dist/local-control-http-auth.js +3 -0
  74. package/dist/mcp/client.js +182 -0
  75. package/dist/mcp/connection.js +484 -0
  76. package/dist/mcp/index.js +11 -0
  77. package/dist/mcp/jsonrpc.js +145 -0
  78. package/dist/mcp/types.js +8 -0
  79. package/dist/network-control-adapter.js +73 -0
  80. package/dist/network-runtime/address-types.js +166 -0
  81. package/dist/network-runtime/db-owner-fencing.js +70 -0
  82. package/dist/network-runtime/delivery-receipts.js +270 -0
  83. package/dist/network-runtime/direct-endpoint-authority.js +26 -0
  84. package/dist/network-runtime/index.js +13 -1
  85. package/dist/network-runtime/local-control-contract.js +628 -0
  86. package/dist/network-runtime/node-store-contract.js +35 -0
  87. package/dist/network-runtime/pair-route-contract.js +78 -0
  88. package/dist/network-runtime/peer-capabilities.js +29 -0
  89. package/dist/network-runtime/peer-principal-ref.js +13 -0
  90. package/dist/network-runtime/peer-state-machine.js +122 -0
  91. package/dist/network-runtime/protocol-schemas.js +206 -0
  92. package/dist/network-runtime/runtime-bootstrap-contract.js +61 -0
  93. package/dist/outlook/desktop-session.js +280 -0
  94. package/dist/policy.js +150 -0
  95. package/dist/providers/brave.js +63 -0
  96. package/dist/providers/duckduckgo.js +177 -0
  97. package/dist/providers/exa.js +64 -0
  98. package/dist/providers/firecrawl.js +56 -0
  99. package/{dist-cjs/providers/index.d.ts → dist/providers/index.js} +1 -1
  100. package/dist/providers/jina.js +50 -0
  101. package/dist/providers/router.js +97 -0
  102. package/dist/providers/search-provider.js +33 -0
  103. package/dist/providers/tavily.js +55 -0
  104. package/dist/pty-w5c9dv33.js +1 -0
  105. package/dist/quip/desktop-session.js +318 -0
  106. package/{dist-cjs/registry/index.d.ts → dist/registry/index.js} +1 -0
  107. package/dist/registry/registry.js +757 -0
  108. package/dist/runtime-socket-local-control-client.js +331 -0
  109. package/dist/security/dns-normalization.js +20 -0
  110. package/dist/security/dns-pinning.js +124 -0
  111. package/dist/security/external-content.js +92 -0
  112. package/dist/security/ssrf.js +182 -0
  113. package/dist/slack/desktop-session.js +325 -0
  114. package/dist/tool-factory.js +48 -0
  115. package/dist/types.js +8 -0
  116. package/dist/utils/retry.js +133 -0
  117. package/dist/utils/safe-parse-json.js +161 -0
  118. package/dist/utils/url.js +20 -0
  119. package/dist-cjs/ask-user-interaction.js +28 -0
  120. package/dist-cjs/cache/web-cache.js +71 -0
  121. package/dist-cjs/definitions/arion.js +108 -0
  122. package/dist-cjs/definitions/browser/browser.js +422 -0
  123. package/dist-cjs/definitions/browser/index.js +9 -0
  124. package/dist-cjs/definitions/browser/pw-downloads.js +118 -0
  125. package/dist-cjs/definitions/browser/pw-interactions.js +214 -0
  126. package/dist-cjs/definitions/browser/pw-responses.js +85 -0
  127. package/dist-cjs/definitions/browser/pw-session.js +327 -0
  128. package/dist-cjs/definitions/browser/pw-shared.js +73 -0
  129. package/dist-cjs/definitions/browser/pw-snapshot.js +308 -0
  130. package/dist-cjs/definitions/browser/pw-state.js +71 -0
  131. package/dist-cjs/definitions/browser/types.js +6 -0
  132. package/dist-cjs/definitions/code-intelligence.js +474 -0
  133. package/dist-cjs/definitions/core.js +134 -0
  134. package/dist-cjs/definitions/delegation.js +516 -0
  135. package/dist-cjs/definitions/deploy.js +69 -0
  136. package/dist-cjs/definitions/filesystem.js +200 -0
  137. package/dist-cjs/definitions/frg.js +67 -0
  138. package/dist-cjs/definitions/index.js +44 -0
  139. package/dist-cjs/definitions/memory.js +127 -0
  140. package/dist-cjs/definitions/messaging.js +632 -0
  141. package/dist-cjs/definitions/meta.js +353 -0
  142. package/dist-cjs/definitions/network.js +163 -0
  143. package/dist-cjs/definitions/outlook.js +281 -0
  144. package/dist-cjs/definitions/patch/apply-patch.js +192 -0
  145. package/dist-cjs/definitions/patch/fuzzy-match.js +173 -0
  146. package/dist-cjs/definitions/patch/index.js +6 -0
  147. package/dist-cjs/definitions/patch/patch-parser.js +216 -0
  148. package/dist-cjs/definitions/patch/sandbox-paths.js +114 -0
  149. package/dist-cjs/definitions/process/index.js +9 -0
  150. package/dist-cjs/definitions/process/process-registry.js +232 -0
  151. package/dist-cjs/definitions/process/process.js +390 -0
  152. package/dist-cjs/definitions/process/pty-keys.js +260 -0
  153. package/dist-cjs/definitions/process/session-slug.js +146 -0
  154. package/dist-cjs/definitions/quip.js +199 -0
  155. package/dist-cjs/definitions/search.js +64 -0
  156. package/dist-cjs/definitions/session-history.js +73 -0
  157. package/dist-cjs/definitions/shell.js +185 -0
  158. package/dist-cjs/definitions/slack.js +184 -0
  159. package/dist-cjs/definitions/web.js +113 -0
  160. package/dist-cjs/executors/apply-patch.js +939 -0
  161. package/dist-cjs/executors/arion.js +126 -0
  162. package/dist-cjs/executors/code-intelligence.js +926 -0
  163. package/dist-cjs/executors/deploy.js +870 -0
  164. package/dist-cjs/executors/filesystem.js +1164 -0
  165. package/dist-cjs/executors/frg-freshness.js +628 -0
  166. package/dist-cjs/executors/frg.js +335 -0
  167. package/dist-cjs/executors/index.js +144 -0
  168. package/dist-cjs/executors/learning-meta.js +1166 -0
  169. package/dist-cjs/executors/memory.js +797 -0
  170. package/dist-cjs/executors/meta.js +227 -0
  171. package/dist-cjs/executors/process-registry.js +470 -0
  172. package/dist-cjs/executors/pty-session-store.js +35 -0
  173. package/dist-cjs/executors/pty.js +289 -0
  174. package/dist-cjs/executors/restart.js +156 -0
  175. package/dist-cjs/executors/search-freshness.js +235 -0
  176. package/dist-cjs/executors/search-types.js +57 -0
  177. package/dist-cjs/executors/search.js +103 -0
  178. package/dist-cjs/executors/self-diagnose.js +435 -0
  179. package/dist-cjs/executors/session-history.js +321 -0
  180. package/dist-cjs/executors/shell-safety.js +479 -0
  181. package/dist-cjs/executors/shell.js +1002 -0
  182. package/dist-cjs/executors/utils.js +74 -0
  183. package/dist-cjs/executors/web.js +548 -0
  184. package/dist-cjs/extraction/content-extraction.js +289 -0
  185. package/dist-cjs/extraction/index.js +9 -0
  186. package/dist-cjs/headless-control-contract.js +973 -0
  187. package/dist-cjs/index.js +436 -385
  188. package/dist-cjs/local-control-http-auth.js +6 -0
  189. package/dist-cjs/mcp/client.js +186 -0
  190. package/dist-cjs/mcp/connection.js +488 -0
  191. package/dist-cjs/mcp/index.js +31 -0
  192. package/dist-cjs/mcp/jsonrpc.js +149 -0
  193. package/dist-cjs/mcp/types.js +9 -0
  194. package/dist-cjs/network-control-adapter.js +78 -0
  195. package/dist-cjs/network-runtime/address-types.js +169 -0
  196. package/dist-cjs/network-runtime/db-owner-fencing.js +77 -0
  197. package/dist-cjs/network-runtime/delivery-receipts.js +279 -0
  198. package/dist-cjs/network-runtime/direct-endpoint-authority.js +30 -0
  199. package/dist-cjs/network-runtime/index.js +173 -8
  200. package/dist-cjs/network-runtime/local-control-contract.js +634 -0
  201. package/dist-cjs/network-runtime/node-store-contract.js +39 -0
  202. package/dist-cjs/network-runtime/pair-route-contract.js +81 -0
  203. package/dist-cjs/network-runtime/peer-capabilities.js +38 -0
  204. package/dist-cjs/network-runtime/peer-principal-ref.js +16 -0
  205. package/dist-cjs/network-runtime/peer-state-machine.js +130 -0
  206. package/dist-cjs/network-runtime/protocol-schemas.js +213 -0
  207. package/dist-cjs/network-runtime/runtime-bootstrap-contract.js +64 -0
  208. package/dist-cjs/outlook/desktop-session.js +319 -0
  209. package/dist-cjs/policy.js +156 -0
  210. package/dist-cjs/providers/brave.js +67 -0
  211. package/dist-cjs/providers/duckduckgo.js +181 -0
  212. package/dist-cjs/providers/exa.js +68 -0
  213. package/dist-cjs/providers/firecrawl.js +60 -0
  214. package/dist-cjs/providers/index.js +18 -0
  215. package/dist-cjs/providers/jina.js +54 -0
  216. package/dist-cjs/providers/router.js +101 -0
  217. package/dist-cjs/providers/search-provider.js +37 -0
  218. package/dist-cjs/providers/tavily.js +59 -0
  219. package/dist-cjs/quip/desktop-session.js +354 -0
  220. package/dist-cjs/registry/index.js +7 -0
  221. package/dist-cjs/registry/registry.js +762 -0
  222. package/dist-cjs/runtime-socket-local-control-client.js +368 -0
  223. package/dist-cjs/security/dns-normalization.js +23 -0
  224. package/dist-cjs/security/dns-pinning.js +161 -0
  225. package/dist-cjs/security/external-content.js +96 -0
  226. package/dist-cjs/security/ssrf.js +222 -0
  227. package/dist-cjs/slack/desktop-session.js +367 -0
  228. package/dist-cjs/tool-factory.js +51 -0
  229. package/dist-cjs/types.js +9 -0
  230. package/dist-cjs/utils/retry.js +170 -0
  231. package/dist-cjs/utils/safe-parse-json.js +165 -0
  232. package/dist-cjs/utils/url.js +24 -0
  233. package/package.json +11 -10
  234. package/dist/ask-user-interaction.d.ts +0 -10
  235. package/dist/cache/web-cache.d.ts +0 -52
  236. package/dist/definitions/arion.d.ts +0 -8
  237. package/dist/definitions/browser/browser.d.ts +0 -2
  238. package/dist/definitions/browser/index.d.ts +0 -1
  239. package/dist/definitions/browser/pw-downloads.d.ts +0 -13
  240. package/dist/definitions/browser/pw-interactions.d.ts +0 -78
  241. package/dist/definitions/browser/pw-responses.d.ts +0 -28
  242. package/dist/definitions/browser/pw-session.d.ts +0 -65
  243. package/dist/definitions/browser/pw-shared.d.ts +0 -22
  244. package/dist/definitions/browser/pw-snapshot.d.ts +0 -34
  245. package/dist/definitions/browser/pw-state.d.ts +0 -22
  246. package/dist/definitions/browser/types.d.ts +0 -277
  247. package/dist/definitions/code-intelligence.d.ts +0 -8
  248. package/dist/definitions/core.d.ts +0 -47
  249. package/dist/definitions/delegation.d.ts +0 -11
  250. package/dist/definitions/deploy.d.ts +0 -15
  251. package/dist/definitions/filesystem.d.ts +0 -9
  252. package/dist/definitions/frg.d.ts +0 -3
  253. package/dist/definitions/index.d.ts +0 -19
  254. package/dist/definitions/memory.d.ts +0 -8
  255. package/dist/definitions/messaging.d.ts +0 -11
  256. package/dist/definitions/meta.d.ts +0 -11
  257. package/dist/definitions/network.d.ts +0 -11
  258. package/dist/definitions/outlook.d.ts +0 -2
  259. package/dist/definitions/patch/apply-patch.d.ts +0 -11
  260. package/dist/definitions/patch/fuzzy-match.d.ts +0 -10
  261. package/dist/definitions/patch/index.d.ts +0 -1
  262. package/dist/definitions/patch/patch-parser.d.ts +0 -50
  263. package/dist/definitions/patch/sandbox-paths.d.ts +0 -18
  264. package/dist/definitions/process/index.d.ts +0 -1
  265. package/dist/definitions/process/process-registry.d.ts +0 -67
  266. package/dist/definitions/process/process.d.ts +0 -9
  267. package/dist/definitions/process/pty-keys.d.ts +0 -13
  268. package/dist/definitions/process/session-slug.d.ts +0 -1
  269. package/dist/definitions/quip.d.ts +0 -2
  270. package/dist/definitions/search.d.ts +0 -9
  271. package/dist/definitions/session-history.d.ts +0 -11
  272. package/dist/definitions/shell.d.ts +0 -8
  273. package/dist/definitions/slack.d.ts +0 -2
  274. package/dist/definitions/web.d.ts +0 -8
  275. package/dist/executors/apply-patch.d.ts +0 -51
  276. package/dist/executors/arion.d.ts +0 -50
  277. package/dist/executors/code-intelligence.d.ts +0 -138
  278. package/dist/executors/deploy.d.ts +0 -169
  279. package/dist/executors/filesystem.d.ts +0 -150
  280. package/dist/executors/frg-freshness.d.ts +0 -93
  281. package/dist/executors/frg.d.ts +0 -27
  282. package/dist/executors/index.d.ts +0 -44
  283. package/dist/executors/learning-meta.d.ts +0 -87
  284. package/dist/executors/lsp-client.d.ts +0 -38
  285. package/dist/executors/memory.d.ts +0 -203
  286. package/dist/executors/meta.d.ts +0 -73
  287. package/dist/executors/process-registry.d.ts +0 -98
  288. package/dist/executors/pty-session-store.d.ts +0 -14
  289. package/dist/executors/pty.d.ts +0 -133
  290. package/dist/executors/restart.d.ts +0 -13
  291. package/dist/executors/search-freshness.d.ts +0 -50
  292. package/dist/executors/search-types.d.ts +0 -52
  293. package/dist/executors/search.d.ts +0 -11
  294. package/dist/executors/self-diagnose.d.ts +0 -89
  295. package/dist/executors/session-history.d.ts +0 -75
  296. package/dist/executors/shell-safety.d.ts +0 -27
  297. package/dist/executors/shell.d.ts +0 -168
  298. package/dist/executors/utils.d.ts +0 -20
  299. package/dist/executors/web.d.ts +0 -89
  300. package/dist/extraction/content-extraction.d.ts +0 -48
  301. package/dist/extraction/index.d.ts +0 -4
  302. package/dist/headless-control-contract.d.ts +0 -3182
  303. package/dist/index.d.ts +0 -62
  304. package/dist/local-control-http-auth.d.ts +0 -2
  305. package/dist/mcp/client.d.ts +0 -68
  306. package/dist/mcp/connection.d.ts +0 -54
  307. package/dist/mcp/index.d.ts +0 -10
  308. package/dist/mcp/jsonrpc.d.ts +0 -36
  309. package/dist/mcp/types.d.ts +0 -178
  310. package/dist/network-control-adapter.d.ts +0 -4
  311. package/dist/network-runtime/address-types.d.ts +0 -201
  312. package/dist/network-runtime/db-owner-fencing.d.ts +0 -43
  313. package/dist/network-runtime/delivery-receipts.d.ts +0 -117
  314. package/dist/network-runtime/direct-endpoint-authority.d.ts +0 -8
  315. package/dist/network-runtime/index.d.ts +0 -24
  316. package/dist/network-runtime/local-control-contract.d.ts +0 -758
  317. package/dist/network-runtime/node-store-contract.d.ts +0 -49
  318. package/dist/network-runtime/pair-route-contract.d.ts +0 -100
  319. package/dist/network-runtime/peer-capabilities.d.ts +0 -10
  320. package/dist/network-runtime/peer-principal-ref.d.ts +0 -9
  321. package/dist/network-runtime/peer-state-machine.d.ts +0 -70
  322. package/dist/network-runtime/protocol-schemas.d.ts +0 -328
  323. package/dist/network-runtime/runtime-bootstrap-contract.d.ts +0 -81
  324. package/dist/outlook/desktop-session.d.ts +0 -68
  325. package/dist/policy.d.ts +0 -43
  326. package/dist/providers/brave.d.ts +0 -10
  327. package/dist/providers/duckduckgo.d.ts +0 -18
  328. package/dist/providers/exa.d.ts +0 -10
  329. package/dist/providers/firecrawl.d.ts +0 -10
  330. package/dist/providers/index.d.ts +0 -8
  331. package/dist/providers/jina.d.ts +0 -10
  332. package/dist/providers/router.d.ts +0 -21
  333. package/dist/providers/search-provider.d.ts +0 -35
  334. package/dist/providers/tavily.d.ts +0 -10
  335. package/dist/pty-cf6pmvx6.js +0 -1
  336. package/dist/quip/desktop-session.d.ts +0 -69
  337. package/dist/registry/index.d.ts +0 -1
  338. package/dist/registry/registry.d.ts +0 -156
  339. package/dist/runtime-socket-local-control-client.d.ts +0 -10
  340. package/dist/security/dns-normalization.d.ts +0 -6
  341. package/dist/security/dns-pinning.d.ts +0 -27
  342. package/dist/security/external-content.d.ts +0 -40
  343. package/dist/security/ssrf.d.ts +0 -40
  344. package/dist/slack/desktop-session.d.ts +0 -69
  345. package/dist/tool-factory.d.ts +0 -46
  346. package/dist/types.d.ts +0 -1192
  347. package/dist/utils/retry.d.ts +0 -11
  348. package/dist/utils/safe-parse-json.d.ts +0 -26
  349. package/dist/utils/url.d.ts +0 -10
  350. package/dist-cjs/ask-user-interaction.d.ts +0 -10
  351. package/dist-cjs/cache/web-cache.d.ts +0 -52
  352. package/dist-cjs/definitions/arion.d.ts +0 -8
  353. package/dist-cjs/definitions/browser/browser.d.ts +0 -2
  354. package/dist-cjs/definitions/browser/index.d.ts +0 -1
  355. package/dist-cjs/definitions/browser/pw-downloads.d.ts +0 -13
  356. package/dist-cjs/definitions/browser/pw-interactions.d.ts +0 -78
  357. package/dist-cjs/definitions/browser/pw-responses.d.ts +0 -28
  358. package/dist-cjs/definitions/browser/pw-session.d.ts +0 -65
  359. package/dist-cjs/definitions/browser/pw-shared.d.ts +0 -22
  360. package/dist-cjs/definitions/browser/pw-snapshot.d.ts +0 -34
  361. package/dist-cjs/definitions/browser/pw-state.d.ts +0 -22
  362. package/dist-cjs/definitions/browser/types.d.ts +0 -277
  363. package/dist-cjs/definitions/code-intelligence.d.ts +0 -8
  364. package/dist-cjs/definitions/core.d.ts +0 -47
  365. package/dist-cjs/definitions/delegation.d.ts +0 -11
  366. package/dist-cjs/definitions/deploy.d.ts +0 -15
  367. package/dist-cjs/definitions/filesystem.d.ts +0 -9
  368. package/dist-cjs/definitions/frg.d.ts +0 -3
  369. package/dist-cjs/definitions/memory.d.ts +0 -8
  370. package/dist-cjs/definitions/messaging.d.ts +0 -11
  371. package/dist-cjs/definitions/meta.d.ts +0 -11
  372. package/dist-cjs/definitions/network.d.ts +0 -11
  373. package/dist-cjs/definitions/outlook.d.ts +0 -2
  374. package/dist-cjs/definitions/patch/apply-patch.d.ts +0 -11
  375. package/dist-cjs/definitions/patch/fuzzy-match.d.ts +0 -10
  376. package/dist-cjs/definitions/patch/patch-parser.d.ts +0 -50
  377. package/dist-cjs/definitions/patch/sandbox-paths.d.ts +0 -18
  378. package/dist-cjs/definitions/process/index.d.ts +0 -1
  379. package/dist-cjs/definitions/process/process-registry.d.ts +0 -67
  380. package/dist-cjs/definitions/process/process.d.ts +0 -9
  381. package/dist-cjs/definitions/process/pty-keys.d.ts +0 -13
  382. package/dist-cjs/definitions/process/session-slug.d.ts +0 -1
  383. package/dist-cjs/definitions/quip.d.ts +0 -2
  384. package/dist-cjs/definitions/search.d.ts +0 -9
  385. package/dist-cjs/definitions/session-history.d.ts +0 -11
  386. package/dist-cjs/definitions/shell.d.ts +0 -8
  387. package/dist-cjs/definitions/slack.d.ts +0 -2
  388. package/dist-cjs/definitions/web.d.ts +0 -8
  389. package/dist-cjs/executors/apply-patch.d.ts +0 -51
  390. package/dist-cjs/executors/arion.d.ts +0 -50
  391. package/dist-cjs/executors/code-intelligence.d.ts +0 -138
  392. package/dist-cjs/executors/deploy.d.ts +0 -169
  393. package/dist-cjs/executors/filesystem.d.ts +0 -150
  394. package/dist-cjs/executors/frg-freshness.d.ts +0 -93
  395. package/dist-cjs/executors/frg.d.ts +0 -27
  396. package/dist-cjs/executors/learning-meta.d.ts +0 -87
  397. package/dist-cjs/executors/lsp-client.d.ts +0 -38
  398. package/dist-cjs/executors/memory.d.ts +0 -203
  399. package/dist-cjs/executors/meta.d.ts +0 -73
  400. package/dist-cjs/executors/process-registry.d.ts +0 -98
  401. package/dist-cjs/executors/pty-session-store.d.ts +0 -14
  402. package/dist-cjs/executors/pty.d.ts +0 -133
  403. package/dist-cjs/executors/restart.d.ts +0 -13
  404. package/dist-cjs/executors/search-freshness.d.ts +0 -50
  405. package/dist-cjs/executors/search-types.d.ts +0 -52
  406. package/dist-cjs/executors/search.d.ts +0 -11
  407. package/dist-cjs/executors/self-diagnose.d.ts +0 -89
  408. package/dist-cjs/executors/session-history.d.ts +0 -75
  409. package/dist-cjs/executors/shell-safety.d.ts +0 -27
  410. package/dist-cjs/executors/shell.d.ts +0 -168
  411. package/dist-cjs/executors/utils.d.ts +0 -20
  412. package/dist-cjs/executors/web.d.ts +0 -89
  413. package/dist-cjs/extraction/content-extraction.d.ts +0 -48
  414. package/dist-cjs/extraction/index.d.ts +0 -4
  415. package/dist-cjs/headless-control-contract.d.ts +0 -3182
  416. package/dist-cjs/index.d.ts +0 -62
  417. package/dist-cjs/local-control-http-auth.d.ts +0 -2
  418. package/dist-cjs/mcp/client.d.ts +0 -68
  419. package/dist-cjs/mcp/connection.d.ts +0 -54
  420. package/dist-cjs/mcp/index.d.ts +0 -10
  421. package/dist-cjs/mcp/jsonrpc.d.ts +0 -36
  422. package/dist-cjs/mcp/types.d.ts +0 -178
  423. package/dist-cjs/network-control-adapter.d.ts +0 -4
  424. package/dist-cjs/network-runtime/address-types.d.ts +0 -201
  425. package/dist-cjs/network-runtime/db-owner-fencing.d.ts +0 -43
  426. package/dist-cjs/network-runtime/delivery-receipts.d.ts +0 -117
  427. package/dist-cjs/network-runtime/direct-endpoint-authority.d.ts +0 -8
  428. package/dist-cjs/network-runtime/index.d.ts +0 -24
  429. package/dist-cjs/network-runtime/local-control-contract.d.ts +0 -758
  430. package/dist-cjs/network-runtime/node-store-contract.d.ts +0 -49
  431. package/dist-cjs/network-runtime/pair-route-contract.d.ts +0 -100
  432. package/dist-cjs/network-runtime/peer-capabilities.d.ts +0 -10
  433. package/dist-cjs/network-runtime/peer-principal-ref.d.ts +0 -9
  434. package/dist-cjs/network-runtime/peer-state-machine.d.ts +0 -70
  435. package/dist-cjs/network-runtime/protocol-schemas.d.ts +0 -328
  436. package/dist-cjs/network-runtime/runtime-bootstrap-contract.d.ts +0 -81
  437. package/dist-cjs/outlook/desktop-session.d.ts +0 -68
  438. package/dist-cjs/policy.d.ts +0 -43
  439. package/dist-cjs/providers/brave.d.ts +0 -10
  440. package/dist-cjs/providers/duckduckgo.d.ts +0 -18
  441. package/dist-cjs/providers/exa.d.ts +0 -10
  442. package/dist-cjs/providers/firecrawl.d.ts +0 -10
  443. package/dist-cjs/providers/jina.d.ts +0 -10
  444. package/dist-cjs/providers/router.d.ts +0 -21
  445. package/dist-cjs/providers/search-provider.d.ts +0 -35
  446. package/dist-cjs/providers/tavily.d.ts +0 -10
  447. package/dist-cjs/quip/desktop-session.d.ts +0 -69
  448. package/dist-cjs/registry/registry.d.ts +0 -156
  449. package/dist-cjs/runtime-socket-local-control-client.d.ts +0 -10
  450. package/dist-cjs/security/dns-normalization.d.ts +0 -6
  451. package/dist-cjs/security/dns-pinning.d.ts +0 -27
  452. package/dist-cjs/security/external-content.d.ts +0 -40
  453. package/dist-cjs/security/ssrf.d.ts +0 -40
  454. package/dist-cjs/slack/desktop-session.d.ts +0 -69
  455. package/dist-cjs/tool-factory.d.ts +0 -46
  456. package/dist-cjs/types.d.ts +0 -1192
  457. package/dist-cjs/utils/retry.d.ts +0 -11
  458. package/dist-cjs/utils/safe-parse-json.d.ts +0 -26
  459. package/dist-cjs/utils/url.d.ts +0 -10
@@ -0,0 +1,31 @@
1
+ export class PTYSessionStore {
2
+ sessions = new Map();
3
+ add(pid, session) {
4
+ this.sessions.set(pid, session);
5
+ }
6
+ get(pid) {
7
+ return this.sessions.get(pid);
8
+ }
9
+ has(pid) {
10
+ return this.sessions.has(pid);
11
+ }
12
+ remove(pid) {
13
+ this.sessions.delete(pid);
14
+ }
15
+ async closeAll() {
16
+ const sessions = Array.from(this.sessions.values());
17
+ this.sessions.clear();
18
+ await Promise.allSettled(sessions.map((s) => {
19
+ try {
20
+ return Promise.resolve(s.close());
21
+ }
22
+ catch {
23
+ return Promise.resolve();
24
+ }
25
+ }));
26
+ }
27
+ get size() {
28
+ return this.sessions.size;
29
+ }
30
+ }
31
+ //# sourceMappingURL=pty-session-store.js.map
@@ -0,0 +1,281 @@
1
+ /**
2
+ * @aria/tools - PTY executor for interactive terminal programs
3
+ *
4
+ * Provides PTY (pseudo-terminal) support for running interactive programs
5
+ * that require a terminal environment (like vim, less, etc.)
6
+ */
7
+ function loadNodePty() {
8
+ try {
9
+ return require("node-pty"); // eslint-disable-line
10
+ }
11
+ catch {
12
+ throw new Error("Interactive PTY sessions require node-pty (optional dependency).\n" +
13
+ "Install it with: npm install node-pty\n" +
14
+ "Or use non-interactive mode: spawn(interactive=false)");
15
+ }
16
+ }
17
+ import { sanitizeEnv } from "./shell.js";
18
+ /**
19
+ * Error thrown when a PTY operation times out.
20
+ */
21
+ export class PTYTimeoutError extends Error {
22
+ output;
23
+ constructor(message, output) {
24
+ super(message);
25
+ this.output = output;
26
+ this.name = "PTYTimeoutError";
27
+ }
28
+ }
29
+ /**
30
+ * Error thrown when a PTY operation fails.
31
+ */
32
+ export class PTYError extends Error {
33
+ output;
34
+ constructor(message, output) {
35
+ super(message);
36
+ this.output = output;
37
+ this.name = "PTYError";
38
+ }
39
+ }
40
+ /**
41
+ * A session wrapping a PTY process.
42
+ * Provides methods for interacting with the process and collecting output.
43
+ */
44
+ export class PTYSession {
45
+ static MAX_OUTPUT = 10 * 1024 * 1024; // 10MB
46
+ _output = "";
47
+ _isRunning = true;
48
+ _exitCode;
49
+ _exitPromise;
50
+ _exitResolve;
51
+ _pty;
52
+ _dataDisposable;
53
+ _exitDisposable;
54
+ constructor(pty) {
55
+ this._pty = pty;
56
+ // Set up exit promise
57
+ this._exitPromise = new Promise((resolve) => {
58
+ this._exitResolve = resolve;
59
+ });
60
+ // Collect output with buffer cap
61
+ this._dataDisposable = pty.onData((data) => {
62
+ this._output += data;
63
+ if (this._output.length > PTYSession.MAX_OUTPUT) {
64
+ this._output = this._output.slice(-PTYSession.MAX_OUTPUT);
65
+ }
66
+ });
67
+ // Handle exit
68
+ this._exitDisposable = pty.onExit(({ exitCode }) => {
69
+ this._isRunning = false;
70
+ this._exitCode = exitCode;
71
+ this._exitResolve(exitCode);
72
+ });
73
+ }
74
+ /**
75
+ * Write data to the terminal input.
76
+ */
77
+ write(data) {
78
+ if (!this._isRunning) {
79
+ throw new PTYError("Cannot write to a closed PTY session");
80
+ }
81
+ this._pty.write(data);
82
+ }
83
+ /**
84
+ * Resize the terminal.
85
+ */
86
+ resize(cols, rows) {
87
+ if (!this._isRunning) {
88
+ throw new PTYError("Cannot resize a closed PTY session");
89
+ }
90
+ this._pty.resize(cols, rows);
91
+ }
92
+ /**
93
+ * Wait for a pattern to appear in the output.
94
+ * @param pattern String or RegExp to match
95
+ * @param timeoutMs Timeout in milliseconds (default: 5000)
96
+ * @returns The output accumulated up to and including the match
97
+ */
98
+ async waitFor(pattern, timeoutMs = 5000) {
99
+ const startTime = Date.now();
100
+ const regex = typeof pattern === "string" ? new RegExp(escapeRegExp(pattern)) : pattern;
101
+ // Check if pattern already matches
102
+ if (regex.test(this._output)) {
103
+ return this._output;
104
+ }
105
+ return new Promise((resolve, reject) => {
106
+ let checkInterval;
107
+ let timeoutHandle;
108
+ const cleanup = () => {
109
+ if (checkInterval)
110
+ clearInterval(checkInterval);
111
+ if (timeoutHandle)
112
+ clearTimeout(timeoutHandle);
113
+ };
114
+ const check = () => {
115
+ if (regex.test(this._output)) {
116
+ cleanup();
117
+ resolve(this._output);
118
+ return true;
119
+ }
120
+ if (!this._isRunning) {
121
+ cleanup();
122
+ reject(new PTYError(`Process exited before pattern was found: ${pattern}`, this._output));
123
+ return true;
124
+ }
125
+ return false;
126
+ };
127
+ // Initial check
128
+ if (check())
129
+ return;
130
+ // Set up polling
131
+ checkInterval = setInterval(() => {
132
+ check();
133
+ }, 10);
134
+ // Set up timeout
135
+ timeoutHandle = setTimeout(() => {
136
+ cleanup();
137
+ const elapsed = Date.now() - startTime;
138
+ reject(new PTYTimeoutError(`Timeout (${elapsed}ms) waiting for pattern: ${pattern}`, this._output));
139
+ }, timeoutMs);
140
+ });
141
+ }
142
+ /**
143
+ * Wait for the process to exit.
144
+ * @param timeoutMs Timeout in milliseconds (default: 30000)
145
+ * @returns The complete output
146
+ */
147
+ async waitForExit(timeoutMs = 30000) {
148
+ if (!this._isRunning) {
149
+ return this._output;
150
+ }
151
+ return new Promise((resolve, reject) => {
152
+ let timeoutHandle;
153
+ timeoutHandle = setTimeout(() => {
154
+ reject(new PTYTimeoutError(`Timeout (${timeoutMs}ms) waiting for process to exit`, this._output));
155
+ }, timeoutMs);
156
+ this._exitPromise
157
+ .then(() => {
158
+ if (timeoutHandle)
159
+ clearTimeout(timeoutHandle);
160
+ resolve(this._output);
161
+ })
162
+ .catch(reject);
163
+ });
164
+ }
165
+ /**
166
+ * Kill the process.
167
+ * @param signal Signal to send (default: SIGHUP on Unix)
168
+ */
169
+ kill(signal) {
170
+ if (!this._isRunning) {
171
+ return;
172
+ }
173
+ try {
174
+ this._pty.kill(signal);
175
+ }
176
+ catch {
177
+ // Process may already be dead
178
+ }
179
+ }
180
+ /**
181
+ * Close the session and clean up resources.
182
+ */
183
+ close() {
184
+ // Kill the process first before disposing handlers
185
+ if (this._isRunning) {
186
+ this.kill("SIGKILL");
187
+ // Mark as not running since we won't receive the exit event
188
+ // after disposing the handlers
189
+ this._isRunning = false;
190
+ // Resolve the exit promise to unblock any waiters
191
+ // Use -1 to indicate forced termination
192
+ this._exitResolve(-1);
193
+ }
194
+ this._dataDisposable.dispose();
195
+ this._exitDisposable.dispose();
196
+ }
197
+ /**
198
+ * Get the current output buffer.
199
+ */
200
+ get output() {
201
+ return this._output;
202
+ }
203
+ /**
204
+ * Check if the process is still running.
205
+ */
206
+ get isRunning() {
207
+ return this._isRunning;
208
+ }
209
+ /**
210
+ * Get the process ID.
211
+ */
212
+ get pid() {
213
+ return this._pty.pid;
214
+ }
215
+ /**
216
+ * Get the exit code (undefined if still running).
217
+ */
218
+ get exitCode() {
219
+ return this._exitCode;
220
+ }
221
+ /**
222
+ * Get the current terminal columns.
223
+ */
224
+ get cols() {
225
+ return this._pty.cols;
226
+ }
227
+ /**
228
+ * Get the current terminal rows.
229
+ */
230
+ get rows() {
231
+ return this._pty.rows;
232
+ }
233
+ }
234
+ /**
235
+ * Create a new PTY session.
236
+ * @param options Options for the PTY
237
+ * @returns A PTYSession wrapping the process
238
+ */
239
+ export async function createPTYSession(options) {
240
+ const defaultCols = 80;
241
+ const defaultRows = 24;
242
+ const pty = loadNodePty().spawn(options.command, options.args ?? [], {
243
+ name: "xterm-256color",
244
+ cols: options.cols ?? defaultCols,
245
+ rows: options.rows ?? defaultRows,
246
+ cwd: options.cwd ?? process.cwd(),
247
+ env: {
248
+ ...sanitizeEnv(options.env),
249
+ TERM: "xterm-256color",
250
+ },
251
+ });
252
+ return new PTYSession(pty);
253
+ }
254
+ /**
255
+ * Run a command in a PTY and wait for it to complete.
256
+ * This is a convenience function for commands that don't require interaction.
257
+ *
258
+ * @param options Options for the PTY, with optional timeout
259
+ * @returns The output and exit code
260
+ */
261
+ export async function runInPTY(options) {
262
+ const { timeoutMs = 30000, ...ptyOptions } = options;
263
+ const session = await createPTYSession(ptyOptions);
264
+ try {
265
+ const output = await session.waitForExit(timeoutMs);
266
+ return {
267
+ output,
268
+ exitCode: session.exitCode ?? 0,
269
+ };
270
+ }
271
+ finally {
272
+ session.close();
273
+ }
274
+ }
275
+ /**
276
+ * Escape special regex characters in a string.
277
+ */
278
+ function escapeRegExp(string) {
279
+ return string.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
280
+ }
281
+ //# sourceMappingURL=pty.js.map
@@ -0,0 +1,120 @@
1
+ /**
2
+ * @aria/tools - Restart executor
3
+ *
4
+ * Single restart path for both TUI and daemon:
5
+ * Register an 'exit' handler to spawn a replacement process, then SIGINT
6
+ * the current process for graceful shutdown. The replacement starts fresh
7
+ * and goes through normal startup (heap check, createCliContext, REPL/daemon).
8
+ */
9
+ import { success, fail } from "./utils.js";
10
+ import { spawn } from "node:child_process";
11
+ import { existsSync, readdirSync, readFileSync } from "node:fs";
12
+ import { dirname, join, resolve } from "node:path";
13
+ import * as os from "node:os";
14
+ import { RESUME_ARION_ENV, RESUME_SESSION_ENV, writeRelaunchMarker } from "@aria-cli/types";
15
+ function findBunWorkspaceRoot(startDir) {
16
+ let dir = resolve(startDir);
17
+ while (true) {
18
+ if (existsSync(join(dir, "bunfig.toml")) || existsSync(join(dir, "bun.lock")))
19
+ return dir;
20
+ const parent = dirname(dir);
21
+ if (parent === dir)
22
+ return null;
23
+ dir = parent;
24
+ }
25
+ }
26
+ function getBunCommand() {
27
+ return process.platform === "win32" ? "bun.exe" : "bun";
28
+ }
29
+ async function rebuildWorkspaceIfPresent(startDir) {
30
+ const root = findBunWorkspaceRoot(startDir);
31
+ if (!root)
32
+ return { attempted: false };
33
+ const bun = getBunCommand();
34
+ await new Promise((resolvePromise, rejectPromise) => {
35
+ const child = spawn(bun, ["run", "build"], {
36
+ cwd: root,
37
+ env: process.env,
38
+ stdio: "inherit",
39
+ });
40
+ child.on("error", rejectPromise);
41
+ child.on("close", (code) => {
42
+ if (code === 0)
43
+ resolvePromise();
44
+ else
45
+ rejectPromise(new Error(`bun run build failed with exit code ${code ?? "unknown"}`));
46
+ });
47
+ });
48
+ return { attempted: true };
49
+ }
50
+ /**
51
+ * Find the daemon PID for the current ARIA_HOME by scanning owner records.
52
+ * Owner records live at $RUNTIME_ROOT/owners/*.json where RUNTIME_ROOT is
53
+ * XDG_RUNTIME_DIR/aria or ~/.aria/run.
54
+ */
55
+ function findDaemonPid() {
56
+ const ariaHome = process.env.ARIA_HOME?.trim() || join(os.homedir(), ".aria");
57
+ const runtimeDir = process.env.XDG_RUNTIME_DIR?.trim();
58
+ const runtimeRoot = runtimeDir ? join(runtimeDir, "aria") : join(ariaHome, "run");
59
+ const ownersDir = join(runtimeRoot, "owners");
60
+ if (!existsSync(ownersDir))
61
+ return null;
62
+ const canonicalHome = resolve(ariaHome);
63
+ for (const file of readdirSync(ownersDir).filter((f) => f.endsWith(".json"))) {
64
+ try {
65
+ const record = JSON.parse(readFileSync(join(ownersDir, file), "utf8"));
66
+ if (record.ariaHome && resolve(record.ariaHome) === canonicalHome) {
67
+ return typeof record.runtimePid === "number" ? record.runtimePid : null;
68
+ }
69
+ }
70
+ catch {
71
+ // Skip malformed records
72
+ }
73
+ }
74
+ return null;
75
+ }
76
+ export async function executeRestart(input, ctx) {
77
+ if (ctx.abortSignal?.aborted)
78
+ return fail("Operation cancelled");
79
+ const reason = (input.reason ?? "").trim() || "Restart requested";
80
+ // Note: tool definition has requiresConfirmation: true, so the framework
81
+ // already prompts the user before execute() is called. No need to confirm again.
82
+ process.stderr.write(`[aria] Rebuilding workspace before restart...\n`);
83
+ try {
84
+ const rebuilt = await rebuildWorkspaceIfPresent(ctx.workingDir || process.cwd());
85
+ if (!rebuilt.attempted) {
86
+ process.stderr.write(`[aria] No bun workspace detected; skipping build\n`);
87
+ }
88
+ }
89
+ catch (error) {
90
+ process.stderr.write(`[aria] Build failed; continuing restart: ${error.message}\n`);
91
+ }
92
+ process.stderr.write(`[aria] Restarting: ${reason}\n`);
93
+ const sessionId = process.env[RESUME_SESSION_ENV] ?? null;
94
+ const arionName = process.env[RESUME_ARION_ENV] || "ARIA";
95
+ // Write disk-backed marker so the replacement process can resume the session.
96
+ writeRelaunchMarker({
97
+ sessionId,
98
+ arionName,
99
+ pid: process.ppid || process.pid,
100
+ timestamp: new Date().toISOString(),
101
+ });
102
+ // Spawn replacement on exit, then SIGINT for graceful shutdown.
103
+ // Works for both TUI and daemon — no supervisor needed.
104
+ const targetPid = findDaemonPid() ?? process.pid;
105
+ process.once("exit", () => {
106
+ spawn(process.execPath, [...process.execArgv, ...process.argv.slice(1)], {
107
+ detached: true,
108
+ stdio: "ignore",
109
+ }).unref();
110
+ });
111
+ process.stderr.write(`[aria] Sending SIGINT to pid ${targetPid} for graceful restart\n`);
112
+ try {
113
+ process.kill(targetPid, "SIGINT");
114
+ }
115
+ catch {
116
+ process.kill(process.pid, "SIGINT");
117
+ }
118
+ return success("Restarting...");
119
+ }
120
+ //# sourceMappingURL=restart.js.map
@@ -0,0 +1,196 @@
1
+ /**
2
+ * Freshness tracker for aria-search (code_search tool).
3
+ *
4
+ * Mirrors frg-freshness.ts patterns to close the freshness gaps:
5
+ * 1. Tracks file mutations from ARIA tool writes (session overlay)
6
+ * 2. Reconciles git-dirty files on each search
7
+ * 3. Generates session overlay for the napi search() call
8
+ *
9
+ * The session overlay gives 0ms visibility for pending mutations —
10
+ * files written by agents/users appear in search results immediately
11
+ * without waiting for an index rebuild or hot.log sync.
12
+ */
13
+ import * as fsSync from "node:fs";
14
+ import * as nodePath from "node:path";
15
+ import { execFileSync } from "node:child_process";
16
+ const repoStates = new Map();
17
+ /** Minimum interval between git-dirty reconciliations (avoid hammering git). */
18
+ const GIT_RECONCILE_INTERVAL_MS = 2_000;
19
+ /** Max content size to cache in memory per file. */
20
+ const MAX_CACHED_CONTENT_BYTES = 256 * 1024;
21
+ function norm(p) {
22
+ return nodePath.resolve(p);
23
+ }
24
+ function getState(root) {
25
+ const key = norm(root);
26
+ let state = repoStates.get(key);
27
+ if (!state) {
28
+ state = { sequence: 0, pending: new Map(), lastGitReconcileMs: 0 };
29
+ repoStates.set(key, state);
30
+ }
31
+ return state;
32
+ }
33
+ // ---------------------------------------------------------------------------
34
+ // Public API — called from filesystem/patch executors
35
+ // ---------------------------------------------------------------------------
36
+ /**
37
+ * Record a file mutation from an ARIA tool write/edit/delete.
38
+ * Called alongside recordFrgMutation in filesystem.ts and apply-patch.ts.
39
+ */
40
+ export function recordSearchMutation(filePath, operation, content) {
41
+ // Find the git repo root to scope mutations correctly
42
+ const repoRoot = findGitRepoRoot(filePath);
43
+ if (!repoRoot)
44
+ return;
45
+ const state = getState(repoRoot);
46
+ state.sequence += 1;
47
+ const normalizedPath = norm(filePath);
48
+ state.pending.set(normalizedPath, {
49
+ path: normalizedPath,
50
+ operation,
51
+ content: typeof content === "string" && Buffer.byteLength(content, "utf8") <= MAX_CACHED_CONTENT_BYTES
52
+ ? content
53
+ : undefined,
54
+ sequence: state.sequence,
55
+ });
56
+ }
57
+ // ---------------------------------------------------------------------------
58
+ // Public API — called from search executor
59
+ // ---------------------------------------------------------------------------
60
+ /**
61
+ * Reconcile git-dirty files into the pending mutations map.
62
+ * Runs `git diff --name-status -z HEAD` and `git ls-files -o --exclude-standard -z`
63
+ * to detect files modified/created/deleted by external agents or the user.
64
+ *
65
+ * Throttled to at most once per GIT_RECONCILE_INTERVAL_MS to avoid
66
+ * hammering git on rapid sequential searches.
67
+ */
68
+ export function reconcileSearchGitDirty(root) {
69
+ const state = getState(root);
70
+ const now = Date.now();
71
+ if (now - state.lastGitReconcileMs < GIT_RECONCILE_INTERVAL_MS) {
72
+ return; // Throttled — recent reconciliation is still fresh enough
73
+ }
74
+ state.lastGitReconcileMs = now;
75
+ const normalizedRoot = norm(root);
76
+ // Tracked modified/deleted files
77
+ const trackedOutput = runGit(normalizedRoot, ["diff", "--name-status", "-z", "HEAD", "--"]);
78
+ if (trackedOutput) {
79
+ const tokens = trackedOutput.split("\0").filter(Boolean);
80
+ for (let i = 0; i < tokens.length; i++) {
81
+ const status = tokens[i] ?? "";
82
+ if (status.startsWith("R")) {
83
+ // Rename: old path deleted, new path written
84
+ const oldPath = tokens[++i];
85
+ const newPath = tokens[++i];
86
+ if (oldPath)
87
+ addGitDirtyMutation(state, normalizedRoot, oldPath, "delete");
88
+ if (newPath)
89
+ addGitDirtyMutation(state, normalizedRoot, newPath, "write");
90
+ continue;
91
+ }
92
+ const filePath = tokens[++i];
93
+ if (!filePath)
94
+ continue;
95
+ addGitDirtyMutation(state, normalizedRoot, filePath, status.startsWith("D") ? "delete" : "write");
96
+ }
97
+ }
98
+ // Untracked new files
99
+ const untrackedOutput = runGit(normalizedRoot, ["ls-files", "-o", "--exclude-standard", "-z"]);
100
+ if (untrackedOutput) {
101
+ for (const token of untrackedOutput.split("\0").filter(Boolean)) {
102
+ addGitDirtyMutation(state, normalizedRoot, token, "write");
103
+ }
104
+ }
105
+ }
106
+ function addGitDirtyMutation(state, root, relativePath, operation) {
107
+ const absPath = norm(nodePath.join(root, relativePath));
108
+ const existing = state.pending.get(absPath);
109
+ // Don't overwrite ARIA-sourced mutations (which have cached content)
110
+ if (existing?.content)
111
+ return;
112
+ if (existing?.operation === operation)
113
+ return;
114
+ state.sequence += 1;
115
+ state.pending.set(absPath, {
116
+ path: absPath,
117
+ operation,
118
+ content: undefined, // Will be read from disk in getSearchSessionOverlay
119
+ sequence: state.sequence,
120
+ });
121
+ }
122
+ /**
123
+ * Generate the session overlay for the napi search() call.
124
+ * Reads content from disk for mutations without cached content.
125
+ */
126
+ export function getSearchSessionOverlay(root) {
127
+ const state = getState(root);
128
+ const sessionWrites = [];
129
+ const sessionDeletes = [];
130
+ for (const mutation of state.pending.values()) {
131
+ if (mutation.operation === "delete") {
132
+ sessionDeletes.push(mutation.path);
133
+ continue;
134
+ }
135
+ let content = mutation.content;
136
+ if (typeof content !== "string") {
137
+ // Read from disk — closes the gap where git-dirty files have no cached content
138
+ try {
139
+ const buf = fsSync.readFileSync(mutation.path);
140
+ if (!buf.subarray(0, Math.min(buf.length, 8192)).includes(0)) {
141
+ content = buf.toString("utf8");
142
+ }
143
+ }
144
+ catch {
145
+ continue; // Unreadable — skip
146
+ }
147
+ }
148
+ if (typeof content === "string") {
149
+ sessionWrites.push({ path: mutation.path, content });
150
+ }
151
+ }
152
+ return { sessionWrites, sessionDeletes };
153
+ }
154
+ /**
155
+ * Clear all pending mutations for a repo root.
156
+ * Called after a full index rebuild (all mutations are now in the base index).
157
+ */
158
+ export function clearSearchMutations(root) {
159
+ const key = norm(root);
160
+ repoStates.delete(key);
161
+ }
162
+ // ---------------------------------------------------------------------------
163
+ // Helpers
164
+ // ---------------------------------------------------------------------------
165
+ function findGitRepoRoot(startPath) {
166
+ let current = norm(startPath);
167
+ try {
168
+ if (!fsSync.statSync(current).isDirectory()) {
169
+ current = nodePath.dirname(current);
170
+ }
171
+ }
172
+ catch {
173
+ current = nodePath.dirname(current);
174
+ }
175
+ while (true) {
176
+ if (fsSync.existsSync(nodePath.join(current, ".git")))
177
+ return current;
178
+ const parent = nodePath.dirname(current);
179
+ if (parent === current)
180
+ return null;
181
+ current = parent;
182
+ }
183
+ }
184
+ function runGit(cwd, args) {
185
+ try {
186
+ return execFileSync("git", args, {
187
+ cwd,
188
+ encoding: "utf8",
189
+ stdio: ["ignore", "pipe", "ignore"],
190
+ }).trim();
191
+ }
192
+ catch {
193
+ return null;
194
+ }
195
+ }
196
+ //# sourceMappingURL=search-freshness.js.map
@@ -0,0 +1,53 @@
1
+ /**
2
+ * Shared types and utilities for the unified search tool.
3
+ *
4
+ * Used by:
5
+ * - Base executor in @aria/tools (learning-meta.ts)
6
+ * - Runner wrapper in @aria/aria (search-wrapper.ts)
7
+ * - Tests
8
+ */
9
+ // ---------------------------------------------------------------------------
10
+ // Shared dedup logic — single source of truth for both base executor and wrapper
11
+ // ---------------------------------------------------------------------------
12
+ /** Source priority for dedup (lower = higher priority). */
13
+ export const SOURCE_PRIORITY = {
14
+ builtin: 0,
15
+ local_cli: 1,
16
+ memoria: 2,
17
+ local: 3,
18
+ "skills.sh": 4,
19
+ clawhub: 5,
20
+ npm: 6,
21
+ brew: 7,
22
+ web: 8,
23
+ };
24
+ /**
25
+ * Dedup search results by name with source priority.
26
+ * When the same name appears from multiple sources, keep the higher-priority one.
27
+ */
28
+ export function dedupSearchResults(results, limit) {
29
+ const deduped = new Map();
30
+ for (const item of results) {
31
+ const normalizedName = item.name.trim().toLowerCase();
32
+ const existing = deduped.get(normalizedName);
33
+ if (!existing) {
34
+ deduped.set(normalizedName, item);
35
+ }
36
+ else {
37
+ const existingPriority = SOURCE_PRIORITY[existing.source] ?? 99;
38
+ const newPriority = SOURCE_PRIORITY[item.source] ?? 99;
39
+ if (newPriority < existingPriority) {
40
+ deduped.set(normalizedName, item);
41
+ }
42
+ }
43
+ }
44
+ const sorted = [...deduped.values()].sort((a, b) => {
45
+ const aPriority = SOURCE_PRIORITY[a.source] ?? 99;
46
+ const bPriority = SOURCE_PRIORITY[b.source] ?? 99;
47
+ if (aPriority !== bPriority)
48
+ return aPriority - bPriority;
49
+ return a.name.localeCompare(b.name);
50
+ });
51
+ return sorted.slice(0, limit);
52
+ }
53
+ //# sourceMappingURL=search-types.js.map