@aria-cli/tools 1.0.2 → 1.0.4

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 (157) hide show
  1. package/dist/.aria-build-stamp.json +1 -1
  2. package/dist/.tsbuildinfo +1 -1
  3. package/dist/definitions/code-intelligence.d.ts +9 -0
  4. package/dist/definitions/code-intelligence.d.ts.map +1 -0
  5. package/dist/definitions/code-intelligence.js +471 -0
  6. package/dist/definitions/code-intelligence.js.map +1 -0
  7. package/dist/definitions/core.d.ts +3 -0
  8. package/dist/definitions/core.d.ts.map +1 -1
  9. package/dist/definitions/core.js +13 -1
  10. package/dist/definitions/core.js.map +1 -1
  11. package/dist/definitions/filesystem.d.ts +3 -2
  12. package/dist/definitions/filesystem.d.ts.map +1 -1
  13. package/dist/definitions/filesystem.js +4 -38
  14. package/dist/definitions/filesystem.js.map +1 -1
  15. package/dist/definitions/frg.d.ts +4 -0
  16. package/dist/definitions/frg.d.ts.map +1 -0
  17. package/dist/definitions/frg.js +64 -0
  18. package/dist/definitions/frg.js.map +1 -0
  19. package/dist/definitions/index.d.ts +3 -0
  20. package/dist/definitions/index.d.ts.map +1 -1
  21. package/dist/definitions/index.js +3 -0
  22. package/dist/definitions/index.js.map +1 -1
  23. package/dist/definitions/search.d.ts +10 -0
  24. package/dist/definitions/search.d.ts.map +1 -0
  25. package/dist/definitions/search.js +61 -0
  26. package/dist/definitions/search.js.map +1 -0
  27. package/dist/executors/apply-patch.d.ts.map +1 -1
  28. package/dist/executors/apply-patch.js +18 -0
  29. package/dist/executors/apply-patch.js.map +1 -1
  30. package/dist/executors/code-intelligence.d.ts +139 -0
  31. package/dist/executors/code-intelligence.d.ts.map +1 -0
  32. package/dist/executors/code-intelligence.js +883 -0
  33. package/dist/executors/code-intelligence.js.map +1 -0
  34. package/dist/executors/filesystem.d.ts.map +1 -1
  35. package/dist/executors/filesystem.js +14 -8
  36. package/dist/executors/filesystem.js.map +1 -1
  37. package/dist/executors/frg-freshness.d.ts +94 -0
  38. package/dist/executors/frg-freshness.d.ts.map +1 -0
  39. package/dist/executors/frg-freshness.js +577 -0
  40. package/dist/executors/frg-freshness.js.map +1 -0
  41. package/dist/executors/frg.d.ts +28 -0
  42. package/dist/executors/frg.d.ts.map +1 -0
  43. package/dist/executors/frg.js +299 -0
  44. package/dist/executors/frg.js.map +1 -0
  45. package/dist/executors/index.d.ts +6 -0
  46. package/dist/executors/index.d.ts.map +1 -1
  47. package/dist/executors/index.js +5 -0
  48. package/dist/executors/index.js.map +1 -1
  49. package/dist/executors/lsp-client.d.ts +39 -0
  50. package/dist/executors/lsp-client.d.ts.map +1 -0
  51. package/dist/executors/lsp-client.js +297 -0
  52. package/dist/executors/lsp-client.js.map +1 -0
  53. package/dist/executors/restart.d.ts +4 -9
  54. package/dist/executors/restart.d.ts.map +1 -1
  55. package/dist/executors/restart.js +20 -51
  56. package/dist/executors/restart.js.map +1 -1
  57. package/dist/executors/search-freshness.d.ts +51 -0
  58. package/dist/executors/search-freshness.d.ts.map +1 -0
  59. package/dist/executors/search-freshness.js +196 -0
  60. package/dist/executors/search-freshness.js.map +1 -0
  61. package/dist/executors/search.d.ts +12 -0
  62. package/dist/executors/search.d.ts.map +1 -0
  63. package/dist/executors/search.js +67 -0
  64. package/dist/executors/search.js.map +1 -0
  65. package/dist/headless-control-contract.d.ts +4 -0
  66. package/dist/headless-control-contract.d.ts.map +1 -1
  67. package/dist/index.d.ts +2 -2
  68. package/dist/index.d.ts.map +1 -1
  69. package/dist/index.js +1 -1
  70. package/dist/index.js.map +1 -1
  71. package/dist/network-runtime/local-control-contract.d.ts +2 -0
  72. package/dist/network-runtime/local-control-contract.d.ts.map +1 -1
  73. package/dist/network-runtime/local-control-contract.js +2 -0
  74. package/dist/network-runtime/local-control-contract.js.map +1 -1
  75. package/dist-cjs/.tsbuildinfo +1 -1
  76. package/dist-cjs/definitions/code-intelligence.d.ts +8 -0
  77. package/dist-cjs/definitions/code-intelligence.js +474 -0
  78. package/dist-cjs/definitions/code-intelligence.js.map +1 -0
  79. package/dist-cjs/definitions/core.d.ts +3 -0
  80. package/dist-cjs/definitions/core.js +17 -2
  81. package/dist-cjs/definitions/core.js.map +1 -1
  82. package/dist-cjs/definitions/filesystem.d.ts +3 -2
  83. package/dist-cjs/definitions/filesystem.js +3 -37
  84. package/dist-cjs/definitions/filesystem.js.map +1 -1
  85. package/dist-cjs/definitions/frg.d.ts +3 -0
  86. package/dist-cjs/definitions/frg.js +67 -0
  87. package/dist-cjs/definitions/frg.js.map +1 -0
  88. package/dist-cjs/definitions/index.d.ts +3 -0
  89. package/dist-cjs/definitions/index.js +7 -1
  90. package/dist-cjs/definitions/index.js.map +1 -1
  91. package/dist-cjs/definitions/search.d.ts +9 -0
  92. package/dist-cjs/definitions/search.js +64 -0
  93. package/dist-cjs/definitions/search.js.map +1 -0
  94. package/dist-cjs/executors/apply-patch.js +18 -0
  95. package/dist-cjs/executors/apply-patch.js.map +1 -1
  96. package/dist-cjs/executors/code-intelligence.d.ts +138 -0
  97. package/dist-cjs/executors/code-intelligence.js +926 -0
  98. package/dist-cjs/executors/code-intelligence.js.map +1 -0
  99. package/dist-cjs/executors/filesystem.js +17 -8
  100. package/dist-cjs/executors/filesystem.js.map +1 -1
  101. package/dist-cjs/executors/frg-freshness.d.ts +93 -0
  102. package/dist-cjs/executors/frg-freshness.js +628 -0
  103. package/dist-cjs/executors/frg-freshness.js.map +1 -0
  104. package/dist-cjs/executors/frg.d.ts +27 -0
  105. package/dist-cjs/executors/frg.js +335 -0
  106. package/dist-cjs/executors/frg.js.map +1 -0
  107. package/dist-cjs/executors/index.d.ts +6 -0
  108. package/dist-cjs/executors/index.js +34 -2
  109. package/dist-cjs/executors/index.js.map +1 -1
  110. package/dist-cjs/executors/lsp-client.d.ts +38 -0
  111. package/dist-cjs/executors/lsp-client.js +311 -0
  112. package/dist-cjs/executors/lsp-client.js.map +1 -0
  113. package/dist-cjs/executors/restart.d.ts +4 -9
  114. package/dist-cjs/executors/restart.js +19 -50
  115. package/dist-cjs/executors/restart.js.map +1 -1
  116. package/dist-cjs/executors/search-freshness.d.ts +50 -0
  117. package/dist-cjs/executors/search-freshness.js +235 -0
  118. package/dist-cjs/executors/search-freshness.js.map +1 -0
  119. package/dist-cjs/executors/search.d.ts +11 -0
  120. package/dist-cjs/executors/search.js +103 -0
  121. package/dist-cjs/executors/search.js.map +1 -0
  122. package/dist-cjs/headless-control-contract.d.ts +15 -11
  123. package/dist-cjs/index.d.ts +2 -2
  124. package/dist-cjs/index.js +22 -2
  125. package/dist-cjs/index.js.map +1 -1
  126. package/dist-cjs/network-runtime/local-control-contract.d.ts +2 -0
  127. package/dist-cjs/network-runtime/local-control-contract.js +2 -0
  128. package/dist-cjs/network-runtime/local-control-contract.js.map +1 -1
  129. package/package.json +9 -5
  130. package/src/definitions/code-intelligence.ts +526 -0
  131. package/src/definitions/core.ts +13 -1
  132. package/src/definitions/filesystem.ts +3 -39
  133. package/src/definitions/frg.ts +67 -0
  134. package/src/definitions/index.ts +3 -0
  135. package/src/definitions/search.ts +67 -0
  136. package/src/executors/apply-patch.ts +20 -0
  137. package/src/executors/code-intelligence.ts +1179 -0
  138. package/src/executors/filesystem.ts +15 -8
  139. package/src/executors/frg-freshness.ts +743 -0
  140. package/src/executors/frg.ts +394 -0
  141. package/src/executors/index.ts +58 -0
  142. package/src/executors/lsp-client.ts +355 -0
  143. package/src/executors/restart.ts +21 -56
  144. package/src/executors/search-freshness.ts +249 -0
  145. package/src/executors/search.ts +89 -0
  146. package/src/index.ts +25 -0
  147. package/src/network-runtime/local-control-contract.ts +2 -0
  148. package/tests/definitions/tool-inventory.test.ts +17 -6
  149. package/tests/executors/frg-freshness.test.ts +136 -0
  150. package/tests/executors/frg-merge.test.ts +70 -0
  151. package/tests/executors/frg-session-content.test.ts +40 -0
  152. package/tests/executors/frg.test.ts +56 -0
  153. package/tests/integration/headless-control-contract.integration.test.ts +2 -0
  154. package/tests/loading-tier.test.ts +6 -6
  155. package/tests/test-lane-manifest.ts +4 -0
  156. package/tsconfig.cjs.json +9 -1
  157. package/tsconfig.json +1 -1
@@ -0,0 +1,297 @@
1
+ /**
2
+ * Native LSP Client — uses vscode-jsonrpc for proper message framing.
3
+ *
4
+ * Same approach as Claude Code: createMessageConnection over stdio.
5
+ * Same configuration as Claude Code's LSP plugins.
6
+ * Supports: TypeScript, Python, Go, Rust, C/C++, Swift, Java, Kotlin, Lua, PHP, Ruby, C#.
7
+ */
8
+ import { spawn } from "node:child_process";
9
+ import { readFileSync } from "node:fs";
10
+ import { resolve } from "node:path";
11
+ import { fileURLToPath } from "node:url";
12
+ import { createRequire } from "node:module";
13
+ // vscode-jsonrpc: same library Claude Code uses for LSP message framing.
14
+ // Direct import via createRequire (package lacks ESM exports field).
15
+ const require_ = createRequire(fileURLToPath(import.meta.url));
16
+ const { createMessageConnection, StreamMessageReader, StreamMessageWriter } = require_("vscode-jsonrpc/node");
17
+ export const LSP_SERVERS = {
18
+ typescript: {
19
+ command: "typescript-language-server",
20
+ args: ["--stdio"],
21
+ extensionToLanguage: {
22
+ ".ts": "typescript",
23
+ ".tsx": "typescriptreact",
24
+ ".js": "javascript",
25
+ ".jsx": "javascriptreact",
26
+ ".mts": "typescript",
27
+ ".cts": "typescript",
28
+ ".mjs": "javascript",
29
+ ".cjs": "javascript",
30
+ },
31
+ startupTimeout: 30_000,
32
+ },
33
+ python: {
34
+ command: "pyright-langserver",
35
+ args: ["--stdio"],
36
+ extensionToLanguage: { ".py": "python", ".pyi": "python" },
37
+ startupTimeout: 60_000,
38
+ },
39
+ go: {
40
+ command: "gopls",
41
+ args: [],
42
+ extensionToLanguage: { ".go": "go" },
43
+ startupTimeout: 30_000,
44
+ },
45
+ rust: {
46
+ command: "rust-analyzer",
47
+ args: [],
48
+ extensionToLanguage: { ".rs": "rust" },
49
+ startupTimeout: 60_000,
50
+ },
51
+ "c/cpp": {
52
+ command: "clangd",
53
+ args: ["--background-index"],
54
+ extensionToLanguage: {
55
+ ".c": "c",
56
+ ".h": "c",
57
+ ".cpp": "cpp",
58
+ ".cc": "cpp",
59
+ ".cxx": "cpp",
60
+ ".hpp": "cpp",
61
+ ".hxx": "cpp",
62
+ },
63
+ startupTimeout: 30_000,
64
+ },
65
+ swift: {
66
+ command: "sourcekit-lsp",
67
+ args: [],
68
+ extensionToLanguage: { ".swift": "swift" },
69
+ startupTimeout: 30_000,
70
+ },
71
+ java: {
72
+ command: "jdtls",
73
+ args: [],
74
+ extensionToLanguage: { ".java": "java" },
75
+ startupTimeout: 120_000,
76
+ },
77
+ kotlin: {
78
+ command: "kotlin-language-server",
79
+ args: ["--stdio"],
80
+ extensionToLanguage: { ".kt": "kotlin", ".kts": "kotlin" },
81
+ startupTimeout: 120_000,
82
+ },
83
+ lua: {
84
+ command: "lua-language-server",
85
+ args: [],
86
+ extensionToLanguage: { ".lua": "lua" },
87
+ startupTimeout: 30_000,
88
+ },
89
+ php: {
90
+ command: "intelephense",
91
+ args: ["--stdio"],
92
+ extensionToLanguage: { ".php": "php" },
93
+ startupTimeout: 30_000,
94
+ },
95
+ ruby: {
96
+ command: "ruby-lsp",
97
+ args: [],
98
+ extensionToLanguage: { ".rb": "ruby", ".rake": "ruby", ".gemspec": "ruby" },
99
+ startupTimeout: 30_000,
100
+ },
101
+ csharp: {
102
+ command: "csharp-ls",
103
+ args: [],
104
+ extensionToLanguage: { ".cs": "csharp" },
105
+ startupTimeout: 30_000,
106
+ },
107
+ };
108
+ // Build reverse lookup: file extension → server name
109
+ const EXT_TO_SERVER = new Map();
110
+ for (const [serverName, config] of Object.entries(LSP_SERVERS)) {
111
+ for (const ext of Object.keys(config.extensionToLanguage)) {
112
+ EXT_TO_SERVER.set(ext, serverName);
113
+ }
114
+ }
115
+ export function getServerForFile(filePath) {
116
+ const ext = filePath.slice(filePath.lastIndexOf("."));
117
+ return EXT_TO_SERVER.get(ext);
118
+ }
119
+ export function getLanguageId(filePath) {
120
+ const ext = filePath.slice(filePath.lastIndexOf("."));
121
+ const serverName = EXT_TO_SERVER.get(ext);
122
+ if (!serverName)
123
+ return undefined;
124
+ return LSP_SERVERS[serverName]?.extensionToLanguage[ext];
125
+ }
126
+ // ---------------------------------------------------------------------------
127
+ // LSP Server Instance — uses vscode-jsonrpc createMessageConnection
128
+ // ---------------------------------------------------------------------------
129
+ export class LspServer {
130
+ process = null;
131
+ connection = null;
132
+ initialized = false;
133
+ openFiles = new Set();
134
+ diagnosticsReceived = new Set();
135
+ serverName;
136
+ config;
137
+ rootUri;
138
+ constructor(serverName, rootPath) {
139
+ this.serverName = serverName;
140
+ const cfg = LSP_SERVERS[serverName];
141
+ if (!cfg)
142
+ throw new Error(`Unknown LSP server: ${serverName}`);
143
+ this.config = cfg;
144
+ this.rootUri = `file://${resolve(rootPath)}`;
145
+ }
146
+ async start() {
147
+ if (this.connection)
148
+ return;
149
+ this.process = spawn(this.config.command, this.config.args, {
150
+ stdio: ["pipe", "pipe", "pipe"],
151
+ });
152
+ this.process.stderr?.on("data", () => {
153
+ // Swallow stderr — language servers are noisy
154
+ });
155
+ this.process.on("exit", () => {
156
+ this.connection?.dispose();
157
+ this.connection = null;
158
+ this.process = null;
159
+ this.initialized = false;
160
+ this.openFiles.clear();
161
+ this.diagnosticsReceived.clear();
162
+ });
163
+ // Create vscode-jsonrpc connection — handles Content-Length framing,
164
+ // request/response matching, notification routing. Same as Claude Code.
165
+ this.connection = createMessageConnection(new StreamMessageReader(this.process.stdout), new StreamMessageWriter(this.process.stdin));
166
+ // Listen for diagnostics notifications (signals file analysis complete)
167
+ this.connection.onNotification("textDocument/publishDiagnostics", (params) => {
168
+ const p = params;
169
+ if (p.uri)
170
+ this.diagnosticsReceived.add(p.uri);
171
+ });
172
+ this.connection.listen();
173
+ // Initialize handshake
174
+ await this.connection.sendRequest("initialize", {
175
+ processId: globalThis.process.pid,
176
+ rootUri: this.rootUri,
177
+ capabilities: {
178
+ textDocument: {
179
+ definition: { dynamicRegistration: false },
180
+ references: { dynamicRegistration: false },
181
+ hover: { dynamicRegistration: false, contentFormat: ["plaintext", "markdown"] },
182
+ documentSymbol: { dynamicRegistration: false },
183
+ rename: { dynamicRegistration: false, prepareSupport: false },
184
+ publishDiagnostics: { relatedInformation: true },
185
+ },
186
+ workspace: {
187
+ workspaceFolders: true,
188
+ },
189
+ },
190
+ workspaceFolders: [{ uri: this.rootUri, name: "root" }],
191
+ });
192
+ this.connection.sendNotification("initialized", {});
193
+ this.initialized = true;
194
+ }
195
+ async stop() {
196
+ if (!this.connection)
197
+ return;
198
+ try {
199
+ await this.connection.sendRequest("shutdown");
200
+ this.connection.sendNotification("exit");
201
+ }
202
+ catch {
203
+ // Force kill if graceful shutdown fails
204
+ }
205
+ this.connection.dispose();
206
+ this.connection = null;
207
+ this.process?.kill("SIGTERM");
208
+ this.process = null;
209
+ this.initialized = false;
210
+ }
211
+ // Ensure a file is opened in the language server
212
+ async openFile(filePath) {
213
+ const uri = `file://${resolve(filePath)}`;
214
+ if (this.openFiles.has(uri))
215
+ return;
216
+ const languageId = getLanguageId(filePath);
217
+ if (!languageId)
218
+ return;
219
+ let text;
220
+ try {
221
+ text = readFileSync(resolve(filePath), "utf-8");
222
+ }
223
+ catch {
224
+ return;
225
+ }
226
+ this.connection?.sendNotification("textDocument/didOpen", {
227
+ textDocument: { uri, languageId, version: 1, text },
228
+ });
229
+ this.openFiles.add(uri);
230
+ // No wait needed. LSP servers queue requests after didOpen and respond
231
+ // when ready. Tested: TypeScript responds to hover in 239ms with zero
232
+ // wait (before diagnostics arrive). Pyright responds after its analysis.
233
+ // The sendRequest in the caller will block until the server responds.
234
+ }
235
+ // --- LSP Operations ---
236
+ async definition(filePath, line, character) {
237
+ await this.ensureReady(filePath);
238
+ return this.connection.sendRequest("textDocument/definition", {
239
+ textDocument: { uri: `file://${resolve(filePath)}` },
240
+ position: { line, character },
241
+ });
242
+ }
243
+ async references(filePath, line, character) {
244
+ await this.ensureReady(filePath);
245
+ return this.connection.sendRequest("textDocument/references", {
246
+ textDocument: { uri: `file://${resolve(filePath)}` },
247
+ position: { line, character },
248
+ context: { includeDeclaration: true },
249
+ });
250
+ }
251
+ async hover(filePath, line, character) {
252
+ await this.ensureReady(filePath);
253
+ return this.connection.sendRequest("textDocument/hover", {
254
+ textDocument: { uri: `file://${resolve(filePath)}` },
255
+ position: { line, character },
256
+ });
257
+ }
258
+ async documentSymbols(filePath) {
259
+ await this.ensureReady(filePath);
260
+ return this.connection.sendRequest("textDocument/documentSymbol", {
261
+ textDocument: { uri: `file://${resolve(filePath)}` },
262
+ });
263
+ }
264
+ async rename(filePath, line, character, newName) {
265
+ await this.ensureReady(filePath);
266
+ return this.connection.sendRequest("textDocument/rename", {
267
+ textDocument: { uri: `file://${resolve(filePath)}` },
268
+ position: { line, character },
269
+ newName,
270
+ });
271
+ }
272
+ // --- Internals ---
273
+ async ensureReady(filePath) {
274
+ if (!this.initialized)
275
+ await this.start();
276
+ await this.openFile(filePath);
277
+ }
278
+ }
279
+ // ---------------------------------------------------------------------------
280
+ // Server Pool — one server per language, shared across queries
281
+ // ---------------------------------------------------------------------------
282
+ const serverPool = new Map();
283
+ export function getOrCreateServer(serverName, rootPath) {
284
+ const key = `${serverName}:${rootPath}`;
285
+ let server = serverPool.get(key);
286
+ if (!server) {
287
+ server = new LspServer(serverName, rootPath);
288
+ serverPool.set(key, server);
289
+ }
290
+ return server;
291
+ }
292
+ export async function shutdownAll() {
293
+ const stops = [...serverPool.values()].map((s) => s.stop());
294
+ await Promise.allSettled(stops);
295
+ serverPool.clear();
296
+ }
297
+ //# sourceMappingURL=lsp-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lsp-client.js","sourceRoot":"","sources":["../../src/executors/lsp-client.ts"],"names":[],"mappings":"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"}
@@ -1,15 +1,10 @@
1
1
  /**
2
2
  * @aria/tools - Restart executor
3
3
  *
4
- * Two restart paths:
5
- *
6
- * 1. Supervised (TUI via relaunch.ts): ARIA_NO_RELAUNCH=true is set by the
7
- * parent supervisor. Child exits with RELAUNCH_EXIT_CODE (199), parent
8
- * respawns automatically.
9
- *
10
- * 2. Daemon (daemon-launcher): No supervisor loop. The executor spawns a
11
- * replacement daemon on the process 'exit' event (after the singleton lock
12
- * is released), then sends SIGINT to trigger graceful shutdown.
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).
13
8
  */
14
9
  import type { ToolContext, ToolResult } from "../types.js";
15
10
  export interface RestartInput {
@@ -1 +1 @@
1
- {"version":3,"file":"restart.d.ts","sourceRoot":"","sources":["../../src/executors/restart.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAc3D,MAAM,WAAW,YAAY;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AA+DD,wBAAsB,cAAc,CAAC,KAAK,EAAE,YAAY,EAAE,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC,CA0E/F"}
1
+ {"version":3,"file":"restart.d.ts","sourceRoot":"","sources":["../../src/executors/restart.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAQ3D,MAAM,WAAW,YAAY;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AA+DD,wBAAsB,cAAc,CAAC,KAAK,EAAE,YAAY,EAAE,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC,CAkD/F"}
@@ -1,22 +1,17 @@
1
1
  /**
2
2
  * @aria/tools - Restart executor
3
3
  *
4
- * Two restart paths:
5
- *
6
- * 1. Supervised (TUI via relaunch.ts): ARIA_NO_RELAUNCH=true is set by the
7
- * parent supervisor. Child exits with RELAUNCH_EXIT_CODE (199), parent
8
- * respawns automatically.
9
- *
10
- * 2. Daemon (daemon-launcher): No supervisor loop. The executor spawns a
11
- * replacement daemon on the process 'exit' event (after the singleton lock
12
- * is released), then sends SIGINT to trigger graceful shutdown.
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).
13
8
  */
14
9
  import { success, fail } from "./utils.js";
15
10
  import { spawn } from "node:child_process";
16
11
  import { existsSync, readdirSync, readFileSync } from "node:fs";
17
12
  import { dirname, join, resolve } from "node:path";
18
13
  import * as os from "node:os";
19
- import { NO_RELAUNCH_ENV, RELAUNCH_EXIT_CODE, RESUME_ARION_ENV, RESUME_SESSION_ENV, writeRelaunchMarker, } from "@aria-cli/types";
14
+ import { RESUME_ARION_ENV, RESUME_SESSION_ENV, writeRelaunchMarker } from "@aria-cli/types";
20
15
  function findPnpmWorkspaceRoot(startDir) {
21
16
  let dir = resolve(startDir);
22
17
  while (true) {
@@ -81,7 +76,6 @@ function findDaemonPid() {
81
76
  export async function executeRestart(input, ctx) {
82
77
  if (ctx.abortSignal?.aborted)
83
78
  return fail("Operation cancelled");
84
- const supervised = process.env[NO_RELAUNCH_ENV] === "true";
85
79
  const reason = (input.reason ?? "").trim() || "Restart requested";
86
80
  // Note: tool definition has requiresConfirmation: true, so the framework
87
81
  // already prompts the user before execute() is called. No need to confirm again.
@@ -98,54 +92,29 @@ export async function executeRestart(input, ctx) {
98
92
  process.stderr.write(`[aria] Restarting: ${reason}\n`);
99
93
  const sessionId = process.env[RESUME_SESSION_ENV] ?? null;
100
94
  const arionName = process.env[RESUME_ARION_ENV] || "ARIA";
101
- // Write disk-backed marker as durable fallback in case IPC is lost.
95
+ // Write disk-backed marker so the replacement process can resume the session.
102
96
  writeRelaunchMarker({
103
97
  sessionId,
104
98
  arionName,
105
99
  pid: process.ppid || process.pid,
106
100
  timestamp: new Date().toISOString(),
107
101
  });
108
- if (supervised) {
109
- // Path 1: Supervised by parent-child relaunch loop (TUI mode).
110
- // Pass session forward via IPC, then exit with magic code for parent to respawn.
111
- try {
112
- const send = process.send;
113
- if (typeof send === "function") {
114
- send({
115
- type: "aria-relaunch",
116
- resumeSessionId: sessionId,
117
- arionName,
118
- });
119
- }
120
- }
121
- catch {
122
- // non-fatal — disk marker is the fallback
123
- }
124
- process.exit(RELAUNCH_EXIT_CODE);
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");
125
114
  }
126
- else {
127
- // Path 2: Daemon mode — no supervisor loop.
128
- // Register an 'exit' handler to spawn the replacement AFTER the singleton
129
- // lock is released (beforeExit releases it). Then SIGINT ourselves to
130
- // trigger graceful daemon shutdown. The SIGINT handler fires synchronously
131
- // (just sets controller.abort()), so the tool can still return success.
132
- const daemonPid = findDaemonPid() ?? process.pid;
133
- process.once("exit", () => {
134
- spawn(process.execPath, [...process.execArgv, ...process.argv.slice(1)], {
135
- detached: true,
136
- stdio: "ignore",
137
- }).unref();
138
- });
139
- process.stderr.write(`[aria] Sending SIGINT to daemon pid ${daemonPid} for graceful restart\n`);
140
- try {
141
- process.kill(daemonPid, "SIGINT");
142
- }
143
- catch {
144
- // PID already dead or not our process — fall back to self
145
- process.kill(process.pid, "SIGINT");
146
- }
115
+ catch {
116
+ process.kill(process.pid, "SIGINT");
147
117
  }
148
- // Unreachable in supervised path (process.exit above), but returned in daemon path
149
118
  return success("Restarting...");
150
119
  }
151
120
  //# sourceMappingURL=restart.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"restart.js","sourceRoot":"","sources":["../../src/executors/restart.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"restart.js","sourceRoot":"","sources":["../../src/executors/restart.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAChE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAM5F,SAAS,qBAAqB,CAAC,QAAgB;IAC7C,IAAI,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC5B,OAAO,IAAI,EAAE,CAAC;QACZ,IAAI,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,qBAAqB,CAAC,CAAC;YAAE,OAAO,GAAG,CAAC;QAC7D,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;QAC5B,IAAI,MAAM,KAAK,GAAG;YAAE,OAAO,IAAI,CAAC;QAChC,GAAG,GAAG,MAAM,CAAC;IACf,CAAC;AACH,CAAC;AAED,SAAS,cAAc;IACrB,OAAO,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC;AAC5D,CAAC;AAED,KAAK,UAAU,yBAAyB,CAAC,QAAgB;IACvD,MAAM,IAAI,GAAG,qBAAqB,CAAC,QAAQ,CAAC,CAAC;IAC7C,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;IAEvC,MAAM,IAAI,GAAG,cAAc,EAAE,CAAC;IAC9B,MAAM,IAAI,OAAO,CAAO,CAAC,cAAc,EAAE,aAAa,EAAE,EAAE;QACxD,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,EAAE;YACnC,GAAG,EAAE,IAAI;YACT,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,KAAK,EAAE,SAAS;SACjB,CAAC,CAAC;QACH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;QACjC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;YACzB,IAAI,IAAI,KAAK,CAAC;gBAAE,cAAc,EAAE,CAAC;;gBAC5B,aAAa,CAAC,IAAI,KAAK,CAAC,oCAAoC,IAAI,IAAI,SAAS,EAAE,CAAC,CAAC,CAAC;QACzF,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IACH,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;AAC7B,CAAC;AAED;;;;GAIG;AACH,SAAS,aAAa;IACpB,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,OAAO,CAAC,CAAC;IAC9E,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,IAAI,EAAE,CAAC;IACvD,MAAM,WAAW,GAAG,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IAClF,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;IAE9C,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;QAAE,OAAO,IAAI,CAAC;IAExC,MAAM,aAAa,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IACxC,KAAK,MAAM,IAAI,IAAI,WAAW,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC;QAC7E,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;YACvE,IAAI,MAAM,CAAC,QAAQ,IAAI,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,aAAa,EAAE,CAAC;gBAClE,OAAO,OAAO,MAAM,CAAC,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC;YAC1E,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,yBAAyB;QAC3B,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,KAAmB,EAAE,GAAgB;IACxE,IAAI,GAAG,CAAC,WAAW,EAAE,OAAO;QAAE,OAAO,IAAI,CAAC,qBAAqB,CAAC,CAAC;IAEjE,MAAM,MAAM,GAAG,CAAC,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,mBAAmB,CAAC;IAElE,yEAAyE;IACzE,iFAAiF;IAEjF,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,iDAAiD,CAAC,CAAC;IACxE,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,yBAAyB,CAAC,GAAG,CAAC,UAAU,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;QACjF,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;YACvB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,qDAAqD,CAAC,CAAC;QAC9E,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,4CAA6C,KAAe,CAAC,OAAO,IAAI,CAAC,CAAC;IACjG,CAAC;IAED,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,sBAAsB,MAAM,IAAI,CAAC,CAAC;IAEvD,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,IAAI,IAAI,CAAC;IAC1D,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,IAAI,MAAM,CAAC;IAE1D,8EAA8E;IAC9E,mBAAmB,CAAC;QAClB,SAAS;QACT,SAAS;QACT,GAAG,EAAE,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG;QAChC,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KACpC,CAAC,CAAC;IAEH,gEAAgE;IAChE,wDAAwD;IACxD,MAAM,SAAS,GAAG,aAAa,EAAE,IAAI,OAAO,CAAC,GAAG,CAAC;IAEjD,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE;QACxB,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,GAAG,OAAO,CAAC,QAAQ,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;YACvE,QAAQ,EAAE,IAAI;YACd,KAAK,EAAE,QAAQ;SAChB,CAAC,CAAC,KAAK,EAAE,CAAC;IACb,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,gCAAgC,SAAS,yBAAyB,CAAC,CAAC;IACzF,IAAI,CAAC;QACH,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IACpC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IACtC,CAAC;IAED,OAAO,OAAO,CAAC,eAAe,CAAC,CAAC;AAClC,CAAC"}
@@ -0,0 +1,51 @@
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
+ export type SearchMutationOperation = "write" | "delete";
14
+ export interface SearchMutationRecord {
15
+ path: string;
16
+ operation: SearchMutationOperation;
17
+ content?: string;
18
+ sequence: number;
19
+ }
20
+ export interface SearchSessionOverlay {
21
+ sessionWrites: Array<{
22
+ path: string;
23
+ content: string;
24
+ }>;
25
+ sessionDeletes: string[];
26
+ }
27
+ /**
28
+ * Record a file mutation from an ARIA tool write/edit/delete.
29
+ * Called alongside recordFrgMutation in filesystem.ts and apply-patch.ts.
30
+ */
31
+ export declare function recordSearchMutation(filePath: string, operation: SearchMutationOperation, content?: string): void;
32
+ /**
33
+ * Reconcile git-dirty files into the pending mutations map.
34
+ * Runs `git diff --name-status -z HEAD` and `git ls-files -o --exclude-standard -z`
35
+ * to detect files modified/created/deleted by external agents or the user.
36
+ *
37
+ * Throttled to at most once per GIT_RECONCILE_INTERVAL_MS to avoid
38
+ * hammering git on rapid sequential searches.
39
+ */
40
+ export declare function reconcileSearchGitDirty(root: string): void;
41
+ /**
42
+ * Generate the session overlay for the napi search() call.
43
+ * Reads content from disk for mutations without cached content.
44
+ */
45
+ export declare function getSearchSessionOverlay(root: string): SearchSessionOverlay;
46
+ /**
47
+ * Clear all pending mutations for a repo root.
48
+ * Called after a full index rebuild (all mutations are now in the base index).
49
+ */
50
+ export declare function clearSearchMutations(root: string): void;
51
+ //# sourceMappingURL=search-freshness.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search-freshness.d.ts","sourceRoot":"","sources":["../../src/executors/search-freshness.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAMH,MAAM,MAAM,uBAAuB,GAAG,OAAO,GAAG,QAAQ,CAAC;AAEzD,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,uBAAuB,CAAC;IACnC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,oBAAoB;IACnC,aAAa,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACxD,cAAc,EAAE,MAAM,EAAE,CAAC;CAC1B;AAsCD;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,uBAAuB,EAClC,OAAO,CAAC,EAAE,MAAM,GACf,IAAI,CAkBN;AAMD;;;;;;;GAOG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CA0C1D;AAuBD;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,oBAAoB,CA8B1E;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAGvD"}