@aria-cli/tools 1.0.12 → 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 (233) hide show
  1. package/dist/index.js +378 -70
  2. package/dist/network-runtime/index.js +8 -12
  3. package/dist-cjs/index.js +400 -435
  4. package/dist-cjs/network-runtime/index.js +8 -172
  5. package/package.json +8 -6
  6. package/dist/.tsbuildinfo +0 -1
  7. package/dist/ask-user-interaction.js +0 -22
  8. package/dist/cache/web-cache.js +0 -66
  9. package/dist/definitions/arion.js +0 -104
  10. package/dist/definitions/browser/browser.js +0 -418
  11. package/dist/definitions/browser/index.js +0 -4
  12. package/dist/definitions/browser/pw-downloads.js +0 -114
  13. package/dist/definitions/browser/pw-interactions.js +0 -199
  14. package/dist/definitions/browser/pw-responses.js +0 -76
  15. package/dist/definitions/browser/pw-session.js +0 -310
  16. package/dist/definitions/browser/pw-shared.js +0 -66
  17. package/dist/definitions/browser/pw-snapshot.js +0 -301
  18. package/dist/definitions/browser/pw-state.js +0 -62
  19. package/dist/definitions/browser/types.js +0 -4
  20. package/dist/definitions/code-intelligence.js +0 -470
  21. package/dist/definitions/core.js +0 -109
  22. package/dist/definitions/delegation.js +0 -512
  23. package/dist/definitions/deploy.js +0 -65
  24. package/dist/definitions/filesystem.js +0 -196
  25. package/dist/definitions/frg.js +0 -63
  26. package/dist/definitions/index.js +0 -20
  27. package/dist/definitions/memory.js +0 -123
  28. package/dist/definitions/messaging.js +0 -625
  29. package/dist/definitions/meta.js +0 -349
  30. package/dist/definitions/network.js +0 -159
  31. package/dist/definitions/outlook.js +0 -277
  32. package/dist/definitions/patch/apply-patch.js +0 -184
  33. package/dist/definitions/patch/fuzzy-match.js +0 -166
  34. package/dist/definitions/patch/index.js +0 -1
  35. package/dist/definitions/patch/patch-parser.js +0 -207
  36. package/dist/definitions/patch/sandbox-paths.js +0 -105
  37. package/dist/definitions/process/index.js +0 -4
  38. package/dist/definitions/process/process-registry.js +0 -213
  39. package/dist/definitions/process/process.js +0 -386
  40. package/dist/definitions/process/pty-keys.js +0 -254
  41. package/dist/definitions/process/session-slug.js +0 -142
  42. package/dist/definitions/quip.js +0 -195
  43. package/dist/definitions/search.js +0 -60
  44. package/dist/definitions/session-history.js +0 -69
  45. package/dist/definitions/shell.js +0 -181
  46. package/dist/definitions/slack.js +0 -180
  47. package/dist/definitions/web.js +0 -109
  48. package/dist/executors/apply-patch.js +0 -901
  49. package/dist/executors/arion.js +0 -119
  50. package/dist/executors/code-intelligence.js +0 -882
  51. package/dist/executors/deploy.js +0 -848
  52. package/dist/executors/filesystem.js +0 -1122
  53. package/dist/executors/frg-freshness.js +0 -576
  54. package/dist/executors/frg.js +0 -298
  55. package/dist/executors/index.js +0 -46
  56. package/dist/executors/learning-meta.js +0 -1146
  57. package/dist/executors/lsp-client.js +0 -296
  58. package/dist/executors/memory.js +0 -750
  59. package/dist/executors/meta.js +0 -220
  60. package/dist/executors/process-registry.js +0 -465
  61. package/dist/executors/pty-session-store.js +0 -30
  62. package/dist/executors/pty.js +0 -271
  63. package/dist/executors/restart.js +0 -119
  64. package/dist/executors/search-freshness.js +0 -195
  65. package/dist/executors/search-types.js +0 -52
  66. package/dist/executors/search.js +0 -66
  67. package/dist/executors/self-diagnose.js +0 -398
  68. package/dist/executors/session-history.js +0 -283
  69. package/dist/executors/shell-safety.js +0 -473
  70. package/dist/executors/shell.js +0 -954
  71. package/dist/executors/utils.js +0 -33
  72. package/dist/executors/web.js +0 -542
  73. package/dist/extraction/content-extraction.js +0 -235
  74. package/dist/extraction/index.js +0 -4
  75. package/dist/headless-control-contract.js +0 -967
  76. package/dist/local-control-http-auth.js +0 -2
  77. package/dist/mcp/client.js +0 -181
  78. package/dist/mcp/connection.js +0 -480
  79. package/dist/mcp/index.js +0 -10
  80. package/dist/mcp/jsonrpc.js +0 -144
  81. package/dist/mcp/types.js +0 -7
  82. package/dist/network-control-adapter.js +0 -72
  83. package/dist/network-runtime/address-types.js +0 -165
  84. package/dist/network-runtime/db-owner-fencing.js +0 -69
  85. package/dist/network-runtime/delivery-receipts.js +0 -267
  86. package/dist/network-runtime/direct-endpoint-authority.js +0 -25
  87. package/dist/network-runtime/local-control-contract.js +0 -627
  88. package/dist/network-runtime/node-store-contract.js +0 -34
  89. package/dist/network-runtime/pair-route-contract.js +0 -77
  90. package/dist/network-runtime/peer-capabilities.js +0 -28
  91. package/dist/network-runtime/peer-principal-ref.js +0 -12
  92. package/dist/network-runtime/peer-state-machine.js +0 -121
  93. package/dist/network-runtime/protocol-schemas.js +0 -205
  94. package/dist/network-runtime/runtime-bootstrap-contract.js +0 -60
  95. package/dist/outlook/desktop-session.js +0 -279
  96. package/dist/policy.js +0 -149
  97. package/dist/providers/brave.js +0 -62
  98. package/dist/providers/duckduckgo.js +0 -176
  99. package/dist/providers/exa.js +0 -63
  100. package/dist/providers/firecrawl.js +0 -55
  101. package/dist/providers/index.js +0 -7
  102. package/dist/providers/jina.js +0 -49
  103. package/dist/providers/router.js +0 -96
  104. package/dist/providers/search-provider.js +0 -32
  105. package/dist/providers/tavily.js +0 -54
  106. package/dist/quip/desktop-session.js +0 -317
  107. package/dist/registry/index.js +0 -1
  108. package/dist/registry/registry.js +0 -756
  109. package/dist/runtime-socket-local-control-client.js +0 -330
  110. package/dist/security/dns-normalization.js +0 -19
  111. package/dist/security/dns-pinning.js +0 -123
  112. package/dist/security/external-content.js +0 -91
  113. package/dist/security/ssrf.js +0 -181
  114. package/dist/slack/desktop-session.js +0 -324
  115. package/dist/tool-factory.js +0 -47
  116. package/dist/types.js +0 -7
  117. package/dist/utils/retry.js +0 -132
  118. package/dist/utils/safe-parse-json.js +0 -160
  119. package/dist/utils/url.js +0 -19
  120. package/dist-cjs/.tsbuildinfo +0 -1
  121. package/dist-cjs/ask-user-interaction.js +0 -27
  122. package/dist-cjs/cache/web-cache.js +0 -70
  123. package/dist-cjs/definitions/arion.js +0 -107
  124. package/dist-cjs/definitions/browser/browser.js +0 -421
  125. package/dist-cjs/definitions/browser/index.js +0 -8
  126. package/dist-cjs/definitions/browser/pw-downloads.js +0 -117
  127. package/dist-cjs/definitions/browser/pw-interactions.js +0 -213
  128. package/dist-cjs/definitions/browser/pw-responses.js +0 -84
  129. package/dist-cjs/definitions/browser/pw-session.js +0 -326
  130. package/dist-cjs/definitions/browser/pw-shared.js +0 -72
  131. package/dist-cjs/definitions/browser/pw-snapshot.js +0 -307
  132. package/dist-cjs/definitions/browser/pw-state.js +0 -70
  133. package/dist-cjs/definitions/browser/types.js +0 -5
  134. package/dist-cjs/definitions/code-intelligence.js +0 -473
  135. package/dist-cjs/definitions/core.js +0 -133
  136. package/dist-cjs/definitions/delegation.js +0 -515
  137. package/dist-cjs/definitions/deploy.js +0 -68
  138. package/dist-cjs/definitions/filesystem.js +0 -199
  139. package/dist-cjs/definitions/frg.js +0 -66
  140. package/dist-cjs/definitions/index.js +0 -43
  141. package/dist-cjs/definitions/memory.js +0 -126
  142. package/dist-cjs/definitions/messaging.js +0 -631
  143. package/dist-cjs/definitions/meta.js +0 -352
  144. package/dist-cjs/definitions/network.js +0 -162
  145. package/dist-cjs/definitions/outlook.js +0 -280
  146. package/dist-cjs/definitions/patch/apply-patch.js +0 -191
  147. package/dist-cjs/definitions/patch/fuzzy-match.js +0 -172
  148. package/dist-cjs/definitions/patch/index.js +0 -5
  149. package/dist-cjs/definitions/patch/patch-parser.js +0 -215
  150. package/dist-cjs/definitions/patch/sandbox-paths.js +0 -113
  151. package/dist-cjs/definitions/process/index.js +0 -8
  152. package/dist-cjs/definitions/process/process-registry.js +0 -231
  153. package/dist-cjs/definitions/process/process.js +0 -389
  154. package/dist-cjs/definitions/process/pty-keys.js +0 -259
  155. package/dist-cjs/definitions/process/session-slug.js +0 -145
  156. package/dist-cjs/definitions/quip.js +0 -198
  157. package/dist-cjs/definitions/search.js +0 -63
  158. package/dist-cjs/definitions/session-history.js +0 -72
  159. package/dist-cjs/definitions/shell.js +0 -184
  160. package/dist-cjs/definitions/slack.js +0 -183
  161. package/dist-cjs/definitions/web.js +0 -112
  162. package/dist-cjs/executors/apply-patch.js +0 -938
  163. package/dist-cjs/executors/arion.js +0 -125
  164. package/dist-cjs/executors/code-intelligence.js +0 -925
  165. package/dist-cjs/executors/deploy.js +0 -869
  166. package/dist-cjs/executors/filesystem.js +0 -1167
  167. package/dist-cjs/executors/frg-freshness.js +0 -627
  168. package/dist-cjs/executors/frg.js +0 -334
  169. package/dist-cjs/executors/index.js +0 -143
  170. package/dist-cjs/executors/learning-meta.js +0 -1165
  171. package/dist-cjs/executors/lsp-client.js +0 -310
  172. package/dist-cjs/executors/memory.js +0 -796
  173. package/dist-cjs/executors/meta.js +0 -226
  174. package/dist-cjs/executors/process-registry.js +0 -469
  175. package/dist-cjs/executors/pty-session-store.js +0 -34
  176. package/dist-cjs/executors/pty.js +0 -312
  177. package/dist-cjs/executors/restart.js +0 -155
  178. package/dist-cjs/executors/search-freshness.js +0 -234
  179. package/dist-cjs/executors/search-types.js +0 -56
  180. package/dist-cjs/executors/search.js +0 -102
  181. package/dist-cjs/executors/self-diagnose.js +0 -434
  182. package/dist-cjs/executors/session-history.js +0 -320
  183. package/dist-cjs/executors/shell-safety.js +0 -478
  184. package/dist-cjs/executors/shell.js +0 -1001
  185. package/dist-cjs/executors/utils.js +0 -73
  186. package/dist-cjs/executors/web.js +0 -547
  187. package/dist-cjs/extraction/content-extraction.js +0 -243
  188. package/dist-cjs/extraction/index.js +0 -8
  189. package/dist-cjs/headless-control-contract.js +0 -972
  190. package/dist-cjs/local-control-http-auth.js +0 -5
  191. package/dist-cjs/mcp/client.js +0 -185
  192. package/dist-cjs/mcp/connection.js +0 -484
  193. package/dist-cjs/mcp/index.js +0 -30
  194. package/dist-cjs/mcp/jsonrpc.js +0 -148
  195. package/dist-cjs/mcp/types.js +0 -8
  196. package/dist-cjs/network-control-adapter.js +0 -77
  197. package/dist-cjs/network-runtime/address-types.js +0 -168
  198. package/dist-cjs/network-runtime/db-owner-fencing.js +0 -76
  199. package/dist-cjs/network-runtime/delivery-receipts.js +0 -276
  200. package/dist-cjs/network-runtime/direct-endpoint-authority.js +0 -29
  201. package/dist-cjs/network-runtime/local-control-contract.js +0 -633
  202. package/dist-cjs/network-runtime/node-store-contract.js +0 -38
  203. package/dist-cjs/network-runtime/pair-route-contract.js +0 -80
  204. package/dist-cjs/network-runtime/peer-capabilities.js +0 -37
  205. package/dist-cjs/network-runtime/peer-principal-ref.js +0 -15
  206. package/dist-cjs/network-runtime/peer-state-machine.js +0 -129
  207. package/dist-cjs/network-runtime/protocol-schemas.js +0 -212
  208. package/dist-cjs/network-runtime/runtime-bootstrap-contract.js +0 -63
  209. package/dist-cjs/outlook/desktop-session.js +0 -318
  210. package/dist-cjs/policy.js +0 -155
  211. package/dist-cjs/providers/brave.js +0 -66
  212. package/dist-cjs/providers/duckduckgo.js +0 -180
  213. package/dist-cjs/providers/exa.js +0 -67
  214. package/dist-cjs/providers/firecrawl.js +0 -59
  215. package/dist-cjs/providers/index.js +0 -17
  216. package/dist-cjs/providers/jina.js +0 -53
  217. package/dist-cjs/providers/router.js +0 -100
  218. package/dist-cjs/providers/search-provider.js +0 -36
  219. package/dist-cjs/providers/tavily.js +0 -58
  220. package/dist-cjs/quip/desktop-session.js +0 -353
  221. package/dist-cjs/registry/index.js +0 -6
  222. package/dist-cjs/registry/registry.js +0 -761
  223. package/dist-cjs/runtime-socket-local-control-client.js +0 -367
  224. package/dist-cjs/security/dns-normalization.js +0 -22
  225. package/dist-cjs/security/dns-pinning.js +0 -160
  226. package/dist-cjs/security/external-content.js +0 -95
  227. package/dist-cjs/security/ssrf.js +0 -221
  228. package/dist-cjs/slack/desktop-session.js +0 -366
  229. package/dist-cjs/tool-factory.js +0 -50
  230. package/dist-cjs/types.js +0 -8
  231. package/dist-cjs/utils/retry.js +0 -169
  232. package/dist-cjs/utils/safe-parse-json.js +0 -164
  233. package/dist-cjs/utils/url.js +0 -23
@@ -1,234 +0,0 @@
1
- "use strict";
2
- /**
3
- * Freshness tracker for aria-search (code_search tool).
4
- *
5
- * Mirrors frg-freshness.ts patterns to close the freshness gaps:
6
- * 1. Tracks file mutations from ARIA tool writes (session overlay)
7
- * 2. Reconciles git-dirty files on each search
8
- * 3. Generates session overlay for the napi search() call
9
- *
10
- * The session overlay gives 0ms visibility for pending mutations —
11
- * files written by agents/users appear in search results immediately
12
- * without waiting for an index rebuild or hot.log sync.
13
- */
14
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
15
- if (k2 === undefined) k2 = k;
16
- var desc = Object.getOwnPropertyDescriptor(m, k);
17
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
18
- desc = { enumerable: true, get: function() { return m[k]; } };
19
- }
20
- Object.defineProperty(o, k2, desc);
21
- }) : (function(o, m, k, k2) {
22
- if (k2 === undefined) k2 = k;
23
- o[k2] = m[k];
24
- }));
25
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
26
- Object.defineProperty(o, "default", { enumerable: true, value: v });
27
- }) : function(o, v) {
28
- o["default"] = v;
29
- });
30
- var __importStar = (this && this.__importStar) || (function () {
31
- var ownKeys = function(o) {
32
- ownKeys = Object.getOwnPropertyNames || function (o) {
33
- var ar = [];
34
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
35
- return ar;
36
- };
37
- return ownKeys(o);
38
- };
39
- return function (mod) {
40
- if (mod && mod.__esModule) return mod;
41
- var result = {};
42
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
43
- __setModuleDefault(result, mod);
44
- return result;
45
- };
46
- })();
47
- Object.defineProperty(exports, "__esModule", { value: true });
48
- exports.recordSearchMutation = recordSearchMutation;
49
- exports.reconcileSearchGitDirty = reconcileSearchGitDirty;
50
- exports.getSearchSessionOverlay = getSearchSessionOverlay;
51
- exports.clearSearchMutations = clearSearchMutations;
52
- const fsSync = __importStar(require("node:fs"));
53
- const nodePath = __importStar(require("node:path"));
54
- const node_child_process_1 = require("node:child_process");
55
- const repoStates = new Map();
56
- /** Minimum interval between git-dirty reconciliations (avoid hammering git). */
57
- const GIT_RECONCILE_INTERVAL_MS = 2_000;
58
- /** Max content size to cache in memory per file. */
59
- const MAX_CACHED_CONTENT_BYTES = 256 * 1024;
60
- function norm(p) {
61
- return nodePath.resolve(p);
62
- }
63
- function getState(root) {
64
- const key = norm(root);
65
- let state = repoStates.get(key);
66
- if (!state) {
67
- state = { sequence: 0, pending: new Map(), lastGitReconcileMs: 0 };
68
- repoStates.set(key, state);
69
- }
70
- return state;
71
- }
72
- // ---------------------------------------------------------------------------
73
- // Public API — called from filesystem/patch executors
74
- // ---------------------------------------------------------------------------
75
- /**
76
- * Record a file mutation from an ARIA tool write/edit/delete.
77
- * Called alongside recordFrgMutation in filesystem.ts and apply-patch.ts.
78
- */
79
- function recordSearchMutation(filePath, operation, content) {
80
- // Find the git repo root to scope mutations correctly
81
- const repoRoot = findGitRepoRoot(filePath);
82
- if (!repoRoot)
83
- return;
84
- const state = getState(repoRoot);
85
- state.sequence += 1;
86
- const normalizedPath = norm(filePath);
87
- state.pending.set(normalizedPath, {
88
- path: normalizedPath,
89
- operation,
90
- content: typeof content === "string" && Buffer.byteLength(content, "utf8") <= MAX_CACHED_CONTENT_BYTES
91
- ? content
92
- : undefined,
93
- sequence: state.sequence,
94
- });
95
- }
96
- // ---------------------------------------------------------------------------
97
- // Public API — called from search executor
98
- // ---------------------------------------------------------------------------
99
- /**
100
- * Reconcile git-dirty files into the pending mutations map.
101
- * Runs `git diff --name-status -z HEAD` and `git ls-files -o --exclude-standard -z`
102
- * to detect files modified/created/deleted by external agents or the user.
103
- *
104
- * Throttled to at most once per GIT_RECONCILE_INTERVAL_MS to avoid
105
- * hammering git on rapid sequential searches.
106
- */
107
- function reconcileSearchGitDirty(root) {
108
- const state = getState(root);
109
- const now = Date.now();
110
- if (now - state.lastGitReconcileMs < GIT_RECONCILE_INTERVAL_MS) {
111
- return; // Throttled — recent reconciliation is still fresh enough
112
- }
113
- state.lastGitReconcileMs = now;
114
- const normalizedRoot = norm(root);
115
- // Tracked modified/deleted files
116
- const trackedOutput = runGit(normalizedRoot, ["diff", "--name-status", "-z", "HEAD", "--"]);
117
- if (trackedOutput) {
118
- const tokens = trackedOutput.split("\0").filter(Boolean);
119
- for (let i = 0; i < tokens.length; i++) {
120
- const status = tokens[i] ?? "";
121
- if (status.startsWith("R")) {
122
- // Rename: old path deleted, new path written
123
- const oldPath = tokens[++i];
124
- const newPath = tokens[++i];
125
- if (oldPath)
126
- addGitDirtyMutation(state, normalizedRoot, oldPath, "delete");
127
- if (newPath)
128
- addGitDirtyMutation(state, normalizedRoot, newPath, "write");
129
- continue;
130
- }
131
- const filePath = tokens[++i];
132
- if (!filePath)
133
- continue;
134
- addGitDirtyMutation(state, normalizedRoot, filePath, status.startsWith("D") ? "delete" : "write");
135
- }
136
- }
137
- // Untracked new files
138
- const untrackedOutput = runGit(normalizedRoot, ["ls-files", "-o", "--exclude-standard", "-z"]);
139
- if (untrackedOutput) {
140
- for (const token of untrackedOutput.split("\0").filter(Boolean)) {
141
- addGitDirtyMutation(state, normalizedRoot, token, "write");
142
- }
143
- }
144
- }
145
- function addGitDirtyMutation(state, root, relativePath, operation) {
146
- const absPath = norm(nodePath.join(root, relativePath));
147
- const existing = state.pending.get(absPath);
148
- // Don't overwrite ARIA-sourced mutations (which have cached content)
149
- if (existing?.content)
150
- return;
151
- if (existing?.operation === operation)
152
- return;
153
- state.sequence += 1;
154
- state.pending.set(absPath, {
155
- path: absPath,
156
- operation,
157
- content: undefined, // Will be read from disk in getSearchSessionOverlay
158
- sequence: state.sequence,
159
- });
160
- }
161
- /**
162
- * Generate the session overlay for the napi search() call.
163
- * Reads content from disk for mutations without cached content.
164
- */
165
- function getSearchSessionOverlay(root) {
166
- const state = getState(root);
167
- const sessionWrites = [];
168
- const sessionDeletes = [];
169
- for (const mutation of state.pending.values()) {
170
- if (mutation.operation === "delete") {
171
- sessionDeletes.push(mutation.path);
172
- continue;
173
- }
174
- let content = mutation.content;
175
- if (typeof content !== "string") {
176
- // Read from disk — closes the gap where git-dirty files have no cached content
177
- try {
178
- const buf = fsSync.readFileSync(mutation.path);
179
- if (!buf.subarray(0, Math.min(buf.length, 8192)).includes(0)) {
180
- content = buf.toString("utf8");
181
- }
182
- }
183
- catch {
184
- continue; // Unreadable — skip
185
- }
186
- }
187
- if (typeof content === "string") {
188
- sessionWrites.push({ path: mutation.path, content });
189
- }
190
- }
191
- return { sessionWrites, sessionDeletes };
192
- }
193
- /**
194
- * Clear all pending mutations for a repo root.
195
- * Called after a full index rebuild (all mutations are now in the base index).
196
- */
197
- function clearSearchMutations(root) {
198
- const key = norm(root);
199
- repoStates.delete(key);
200
- }
201
- // ---------------------------------------------------------------------------
202
- // Helpers
203
- // ---------------------------------------------------------------------------
204
- function findGitRepoRoot(startPath) {
205
- let current = norm(startPath);
206
- try {
207
- if (!fsSync.statSync(current).isDirectory()) {
208
- current = nodePath.dirname(current);
209
- }
210
- }
211
- catch {
212
- current = nodePath.dirname(current);
213
- }
214
- while (true) {
215
- if (fsSync.existsSync(nodePath.join(current, ".git")))
216
- return current;
217
- const parent = nodePath.dirname(current);
218
- if (parent === current)
219
- return null;
220
- current = parent;
221
- }
222
- }
223
- function runGit(cwd, args) {
224
- try {
225
- return (0, node_child_process_1.execFileSync)("git", args, {
226
- cwd,
227
- encoding: "utf8",
228
- stdio: ["ignore", "pipe", "ignore"],
229
- }).trim();
230
- }
231
- catch {
232
- return null;
233
- }
234
- }
@@ -1,56 +0,0 @@
1
- "use strict";
2
- /**
3
- * Shared types and utilities for the unified search tool.
4
- *
5
- * Used by:
6
- * - Base executor in @aria/tools (learning-meta.ts)
7
- * - Runner wrapper in @aria/aria (search-wrapper.ts)
8
- * - Tests
9
- */
10
- Object.defineProperty(exports, "__esModule", { value: true });
11
- exports.SOURCE_PRIORITY = void 0;
12
- exports.dedupSearchResults = dedupSearchResults;
13
- // ---------------------------------------------------------------------------
14
- // Shared dedup logic — single source of truth for both base executor and wrapper
15
- // ---------------------------------------------------------------------------
16
- /** Source priority for dedup (lower = higher priority). */
17
- exports.SOURCE_PRIORITY = {
18
- builtin: 0,
19
- local_cli: 1,
20
- memoria: 2,
21
- local: 3,
22
- "skills.sh": 4,
23
- clawhub: 5,
24
- npm: 6,
25
- brew: 7,
26
- web: 8,
27
- };
28
- /**
29
- * Dedup search results by name with source priority.
30
- * When the same name appears from multiple sources, keep the higher-priority one.
31
- */
32
- function dedupSearchResults(results, limit) {
33
- const deduped = new Map();
34
- for (const item of results) {
35
- const normalizedName = item.name.trim().toLowerCase();
36
- const existing = deduped.get(normalizedName);
37
- if (!existing) {
38
- deduped.set(normalizedName, item);
39
- }
40
- else {
41
- const existingPriority = exports.SOURCE_PRIORITY[existing.source] ?? 99;
42
- const newPriority = exports.SOURCE_PRIORITY[item.source] ?? 99;
43
- if (newPriority < existingPriority) {
44
- deduped.set(normalizedName, item);
45
- }
46
- }
47
- }
48
- const sorted = [...deduped.values()].sort((a, b) => {
49
- const aPriority = exports.SOURCE_PRIORITY[a.source] ?? 99;
50
- const bPriority = exports.SOURCE_PRIORITY[b.source] ?? 99;
51
- if (aPriority !== bPriority)
52
- return aPriority - bPriority;
53
- return a.name.localeCompare(b.name);
54
- });
55
- return sorted.slice(0, limit);
56
- }
@@ -1,102 +0,0 @@
1
- "use strict";
2
- /**
3
- * Executor for the native indexed regex search tool.
4
- *
5
- * Freshness architecture (frg parity):
6
- * 1. ARIA tool writes → recordSearchMutation → session overlay (0ms visibility)
7
- * 2. External edits → reconcileSearchGitDirty → session overlay (0ms visibility)
8
- * 3. Commit/version change → syncIndex or buildIndex (incremental/full)
9
- * 4. Session overlay passed to napi search() — no index rebuild needed
10
- */
11
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
12
- if (k2 === undefined) k2 = k;
13
- var desc = Object.getOwnPropertyDescriptor(m, k);
14
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
15
- desc = { enumerable: true, get: function() { return m[k]; } };
16
- }
17
- Object.defineProperty(o, k2, desc);
18
- }) : (function(o, m, k, k2) {
19
- if (k2 === undefined) k2 = k;
20
- o[k2] = m[k];
21
- }));
22
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
23
- Object.defineProperty(o, "default", { enumerable: true, value: v });
24
- }) : function(o, v) {
25
- o["default"] = v;
26
- });
27
- var __importStar = (this && this.__importStar) || (function () {
28
- var ownKeys = function(o) {
29
- ownKeys = Object.getOwnPropertyNames || function (o) {
30
- var ar = [];
31
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
32
- return ar;
33
- };
34
- return ownKeys(o);
35
- };
36
- return function (mod) {
37
- if (mod && mod.__esModule) return mod;
38
- var result = {};
39
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
40
- __setModuleDefault(result, mod);
41
- return result;
42
- };
43
- })();
44
- Object.defineProperty(exports, "__esModule", { value: true });
45
- exports.executeSearch = executeSearch;
46
- const nodePath = __importStar(require("node:path"));
47
- const search_1 = require("@aria-cli/search");
48
- const utils_js_1 = require("./utils.js");
49
- const search_freshness_js_1 = require("./search-freshness.js");
50
- async function executeSearch(input, ctx) {
51
- const opts = input;
52
- const dir = nodePath.resolve(ctx.workingDir, opts.directory || ".");
53
- try {
54
- // Step 1: Index management — build or sync base index if needed.
55
- const status = (0, search_1.indexStatus)(dir);
56
- if (status.state === "none") {
57
- (0, search_1.buildIndex)(dir);
58
- (0, search_freshness_js_1.clearSearchMutations)(dir); // fresh index includes everything
59
- }
60
- else if (status.state === "stale") {
61
- // Commit or binary version changed — incremental sync is sufficient
62
- // (syncIndex rebuilds hot.log from git diff, much cheaper than full build).
63
- // Only fall back to full build if sync fails.
64
- try {
65
- (0, search_1.syncIndex)(dir);
66
- }
67
- catch {
68
- (0, search_1.buildIndex)(dir);
69
- }
70
- (0, search_freshness_js_1.clearSearchMutations)(dir);
71
- }
72
- // "ready" — base index is fresh, session overlay handles uncommitted changes
73
- // Step 2: Reconcile git-dirty files into pending mutations.
74
- // Detects files modified/created/deleted by external agents or the user.
75
- // Throttled to avoid hammering git on rapid sequential searches.
76
- (0, search_freshness_js_1.reconcileSearchGitDirty)(dir);
77
- // Step 3: Generate session overlay from pending mutations.
78
- // This gives 0ms visibility for ARIA tool writes and external edits —
79
- // no index rebuild needed. The overlay is applied in-memory by the
80
- // Rust search engine on top of the base index + hot.log.
81
- const overlay = (0, search_freshness_js_1.getSearchSessionOverlay)(dir);
82
- // Step 4: Search with overlay.
83
- const results = (0, search_1.search)({
84
- pattern: opts.pattern,
85
- directory: dir,
86
- maxResults: opts.maxResults ?? 1000,
87
- fileGlob: opts.fileGlob,
88
- fileType: opts.fileType,
89
- caseSensitive: opts.caseSensitive ?? true,
90
- literal: opts.literal ?? false,
91
- context: opts.context ?? 0,
92
- sessionWrites: overlay.sessionWrites,
93
- sessionDeletes: overlay.sessionDeletes,
94
- });
95
- const truncated = results.length >= (opts.maxResults ?? 1000);
96
- return (0, utils_js_1.success)(`Found ${results.length} matches for "${opts.pattern}"${truncated ? " (truncated)" : ""}`, { matches: results, truncated });
97
- }
98
- catch (err) {
99
- const reason = err instanceof Error ? err.message : String(err);
100
- return (0, utils_js_1.fail)(`Search failed: ${reason}`);
101
- }
102
- }