@allin-ai/agent-client 0.1.0

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 (164) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +53 -0
  3. package/bin/allinai-agent +4 -0
  4. package/dist/capabilities/context.d.ts +16 -0
  5. package/dist/capabilities/context.d.ts.map +1 -0
  6. package/dist/capabilities/context.js +98 -0
  7. package/dist/capabilities/context.js.map +1 -0
  8. package/dist/capabilities/input.d.ts +7 -0
  9. package/dist/capabilities/input.d.ts.map +1 -0
  10. package/dist/capabilities/input.js +224 -0
  11. package/dist/capabilities/input.js.map +1 -0
  12. package/dist/capabilities/manifest.d.ts +15 -0
  13. package/dist/capabilities/manifest.d.ts.map +1 -0
  14. package/dist/capabilities/manifest.js +292 -0
  15. package/dist/capabilities/manifest.js.map +1 -0
  16. package/dist/capabilities/policy.d.ts +17 -0
  17. package/dist/capabilities/policy.d.ts.map +1 -0
  18. package/dist/capabilities/policy.js +57 -0
  19. package/dist/capabilities/policy.js.map +1 -0
  20. package/dist/capabilities/shell-host.d.ts +32 -0
  21. package/dist/capabilities/shell-host.d.ts.map +1 -0
  22. package/dist/capabilities/shell-host.js +378 -0
  23. package/dist/capabilities/shell-host.js.map +1 -0
  24. package/dist/capabilities/shell-wire.d.ts +13 -0
  25. package/dist/capabilities/shell-wire.d.ts.map +1 -0
  26. package/dist/capabilities/shell-wire.js +60 -0
  27. package/dist/capabilities/shell-wire.js.map +1 -0
  28. package/dist/capabilities/types.d.ts +46 -0
  29. package/dist/capabilities/types.d.ts.map +1 -0
  30. package/dist/capabilities/types.js +7 -0
  31. package/dist/capabilities/types.js.map +1 -0
  32. package/dist/cli/commands.d.ts +83 -0
  33. package/dist/cli/commands.d.ts.map +1 -0
  34. package/dist/cli/commands.js +638 -0
  35. package/dist/cli/commands.js.map +1 -0
  36. package/dist/cli/main.d.ts +2 -0
  37. package/dist/cli/main.d.ts.map +1 -0
  38. package/dist/cli/main.js +7 -0
  39. package/dist/cli/main.js.map +1 -0
  40. package/dist/client/state-store.d.ts +80 -0
  41. package/dist/client/state-store.d.ts.map +1 -0
  42. package/dist/client/state-store.js +422 -0
  43. package/dist/client/state-store.js.map +1 -0
  44. package/dist/client/supervisor.d.ts +118 -0
  45. package/dist/client/supervisor.d.ts.map +1 -0
  46. package/dist/client/supervisor.js +627 -0
  47. package/dist/client/supervisor.js.map +1 -0
  48. package/dist/client/transport.d.ts +30 -0
  49. package/dist/client/transport.d.ts.map +1 -0
  50. package/dist/client/transport.js +2 -0
  51. package/dist/client/transport.js.map +1 -0
  52. package/dist/client/types.d.ts +65 -0
  53. package/dist/client/types.d.ts.map +1 -0
  54. package/dist/client/types.js +13 -0
  55. package/dist/client/types.js.map +1 -0
  56. package/dist/client/wire.d.ts +32 -0
  57. package/dist/client/wire.d.ts.map +1 -0
  58. package/dist/client/wire.js +302 -0
  59. package/dist/client/wire.js.map +1 -0
  60. package/dist/client/ws-transport.d.ts +54 -0
  61. package/dist/client/ws-transport.d.ts.map +1 -0
  62. package/dist/client/ws-transport.js +229 -0
  63. package/dist/client/ws-transport.js.map +1 -0
  64. package/dist/config.d.ts +38 -0
  65. package/dist/config.d.ts.map +1 -0
  66. package/dist/config.js +125 -0
  67. package/dist/config.js.map +1 -0
  68. package/dist/control.d.ts +59 -0
  69. package/dist/control.d.ts.map +1 -0
  70. package/dist/control.js +217 -0
  71. package/dist/control.js.map +1 -0
  72. package/dist/credentials.d.ts +44 -0
  73. package/dist/credentials.d.ts.map +1 -0
  74. package/dist/credentials.js +229 -0
  75. package/dist/credentials.js.map +1 -0
  76. package/dist/hub.d.ts +83 -0
  77. package/dist/hub.d.ts.map +1 -0
  78. package/dist/hub.js +412 -0
  79. package/dist/hub.js.map +1 -0
  80. package/dist/index.d.ts +20 -0
  81. package/dist/index.d.ts.map +1 -0
  82. package/dist/index.js +18 -0
  83. package/dist/index.js.map +1 -0
  84. package/dist/logger.d.ts +47 -0
  85. package/dist/logger.d.ts.map +1 -0
  86. package/dist/logger.js +175 -0
  87. package/dist/logger.js.map +1 -0
  88. package/dist/paths.d.ts +29 -0
  89. package/dist/paths.d.ts.map +1 -0
  90. package/dist/paths.js +50 -0
  91. package/dist/paths.js.map +1 -0
  92. package/dist/plugins/git.d.ts +30 -0
  93. package/dist/plugins/git.d.ts.map +1 -0
  94. package/dist/plugins/git.js +80 -0
  95. package/dist/plugins/git.js.map +1 -0
  96. package/dist/plugins/manager.d.ts +41 -0
  97. package/dist/plugins/manager.d.ts.map +1 -0
  98. package/dist/plugins/manager.js +328 -0
  99. package/dist/plugins/manager.js.map +1 -0
  100. package/dist/plugins/manifest.d.ts +9 -0
  101. package/dist/plugins/manifest.d.ts.map +1 -0
  102. package/dist/plugins/manifest.js +63 -0
  103. package/dist/plugins/manifest.js.map +1 -0
  104. package/dist/plugins/types.d.ts +39 -0
  105. package/dist/plugins/types.d.ts.map +1 -0
  106. package/dist/plugins/types.js +2 -0
  107. package/dist/plugins/types.js.map +1 -0
  108. package/dist/runtime/claude.d.ts +30 -0
  109. package/dist/runtime/claude.d.ts.map +1 -0
  110. package/dist/runtime/claude.js +163 -0
  111. package/dist/runtime/claude.js.map +1 -0
  112. package/dist/runtime/codex.d.ts +44 -0
  113. package/dist/runtime/codex.d.ts.map +1 -0
  114. package/dist/runtime/codex.js +192 -0
  115. package/dist/runtime/codex.js.map +1 -0
  116. package/dist/runtime/events.d.ts +7 -0
  117. package/dist/runtime/events.d.ts.map +1 -0
  118. package/dist/runtime/events.js +37 -0
  119. package/dist/runtime/events.js.map +1 -0
  120. package/dist/runtime/index.d.ts +10 -0
  121. package/dist/runtime/index.d.ts.map +1 -0
  122. package/dist/runtime/index.js +10 -0
  123. package/dist/runtime/index.js.map +1 -0
  124. package/dist/runtime/pi.d.ts +34 -0
  125. package/dist/runtime/pi.d.ts.map +1 -0
  126. package/dist/runtime/pi.js +211 -0
  127. package/dist/runtime/pi.js.map +1 -0
  128. package/dist/runtime/registry.d.ts +16 -0
  129. package/dist/runtime/registry.d.ts.map +1 -0
  130. package/dist/runtime/registry.js +22 -0
  131. package/dist/runtime/registry.js.map +1 -0
  132. package/dist/runtime/runner-child.d.ts +2 -0
  133. package/dist/runtime/runner-child.d.ts.map +1 -0
  134. package/dist/runtime/runner-child.js +41 -0
  135. package/dist/runtime/runner-child.js.map +1 -0
  136. package/dist/runtime/runner-manager.d.ts +77 -0
  137. package/dist/runtime/runner-manager.d.ts.map +1 -0
  138. package/dist/runtime/runner-manager.js +295 -0
  139. package/dist/runtime/runner-manager.js.map +1 -0
  140. package/dist/runtime/runner-wire.d.ts +23 -0
  141. package/dist/runtime/runner-wire.d.ts.map +1 -0
  142. package/dist/runtime/runner-wire.js +93 -0
  143. package/dist/runtime/runner-wire.js.map +1 -0
  144. package/dist/runtime/types.d.ts +43 -0
  145. package/dist/runtime/types.d.ts.map +1 -0
  146. package/dist/runtime/types.js +3 -0
  147. package/dist/runtime/types.js.map +1 -0
  148. package/dist/runtime/zcode.d.ts +14 -0
  149. package/dist/runtime/zcode.d.ts.map +1 -0
  150. package/dist/runtime/zcode.js +21 -0
  151. package/dist/runtime/zcode.js.map +1 -0
  152. package/dist/service/launchd.d.ts +34 -0
  153. package/dist/service/launchd.d.ts.map +1 -0
  154. package/dist/service/launchd.js +86 -0
  155. package/dist/service/launchd.js.map +1 -0
  156. package/dist/service/systemd.d.ts +16 -0
  157. package/dist/service/systemd.d.ts.map +1 -0
  158. package/dist/service/systemd.js +89 -0
  159. package/dist/service/systemd.js.map +1 -0
  160. package/dist/wire.d.ts +24 -0
  161. package/dist/wire.d.ts.map +1 -0
  162. package/dist/wire.js +7 -0
  163. package/dist/wire.js.map +1 -0
  164. package/package.json +140 -0
@@ -0,0 +1,638 @@
1
+ import { mkdir, readFile, watch, writeFile } from "node:fs/promises";
2
+ import os from "node:os";
3
+ import path from "node:path";
4
+ import { randomUUID } from "node:crypto";
5
+ import { createAgentControlClient, startAgentControlServer, } from "../control.js";
6
+ import { createCredentialStore } from "../credentials.js";
7
+ import { loadAgentConfig, parseAgentConfig, } from "../config.js";
8
+ import { createRotatingJsonlLogger, setBridgeLogger, serializeLog, } from "../logger.js";
9
+ import { resolveAgentPaths } from "../paths.js";
10
+ import { PluginManager } from "../plugins/manager.js";
11
+ import { parsePluginManifest } from "../plugins/manifest.js";
12
+ import { ShellCapabilityHost } from "../capabilities/shell-host.js";
13
+ import { ClientStateStore } from "../client/state-store.js";
14
+ import { ClientSupervisor } from "../client/supervisor.js";
15
+ import { WsClientTransport } from "../client/ws-transport.js";
16
+ import { createPlatformAdapterRegistry, createRunnerManager, } from "../runtime/index.js";
17
+ import { installLaunchAgent, uninstallLaunchAgent, } from "../service/launchd.js";
18
+ import { installSystemdUserService, restartSystemdUserService, uninstallSystemdUserService, } from "../service/systemd.js";
19
+ /**
20
+ * Keep each command's accepted surface deliberately small. In particular,
21
+ * service commands must never reinterpret a malformed --config-dir as the
22
+ * default Agent home: that could install or remove a user service for the
23
+ * wrong client instance.
24
+ */
25
+ const COMMAND_OPTIONS = {
26
+ init: { values: ["hub", "client", "token", "config-dir"] },
27
+ daemon: { values: ["config-dir"] },
28
+ install: { values: ["config-dir"] },
29
+ status: { values: ["config-dir"] },
30
+ logs: { values: ["config-dir"], booleans: ["f"] },
31
+ sync: { values: ["config-dir"] },
32
+ restart: { values: ["config-dir"] },
33
+ uninstall: { values: ["config-dir"] },
34
+ doctor: { values: ["config-dir"] },
35
+ };
36
+ function parseArgs(args) {
37
+ const flags = new Map();
38
+ let command = null;
39
+ for (let index = 0; index < args.length; index += 1) {
40
+ const arg = args[index];
41
+ if (arg === "-f") {
42
+ flags.set("f", true);
43
+ continue;
44
+ }
45
+ if (!arg.startsWith("--")) {
46
+ if (command)
47
+ throw new Error(`Unexpected argument: ${arg}`);
48
+ command = arg;
49
+ continue;
50
+ }
51
+ const name = arg.slice(2);
52
+ if (!name)
53
+ throw new Error("Invalid empty option");
54
+ const next = args[index + 1];
55
+ if (next && !next.startsWith("-")) {
56
+ flags.set(name, next);
57
+ index += 1;
58
+ }
59
+ else {
60
+ flags.set(name, true);
61
+ }
62
+ }
63
+ return { command, flags };
64
+ }
65
+ function validateCommandOptions(command, flags) {
66
+ const specification = COMMAND_OPTIONS[command];
67
+ if (!specification)
68
+ throw new Error(`Unknown command: ${command}`);
69
+ for (const [name, value] of flags) {
70
+ if (name === "help") {
71
+ if (value !== true)
72
+ throw new Error("--help does not accept a value");
73
+ continue;
74
+ }
75
+ if (specification.values?.includes(name)) {
76
+ if (typeof value !== "string" || value.trim().length === 0) {
77
+ throw new Error(`--${name} requires a value`);
78
+ }
79
+ continue;
80
+ }
81
+ if (specification.booleans?.includes(name)) {
82
+ if (value !== true)
83
+ throw new Error(`--${name} does not accept a value`);
84
+ continue;
85
+ }
86
+ throw new Error(`--${name} is not supported for ${command}`);
87
+ }
88
+ }
89
+ function flagValue(flags, name) {
90
+ const value = flags.get(name);
91
+ return typeof value === "string" ? value : undefined;
92
+ }
93
+ function agentPaths(options) {
94
+ if (!options.configDir)
95
+ return resolveAgentPaths(options.homeDir);
96
+ const home = path.resolve(options.configDir);
97
+ if (!path.isAbsolute(home) || home.length < 2) {
98
+ throw new TypeError("configDir must be an absolute Agent home path");
99
+ }
100
+ return {
101
+ home,
102
+ configFile: path.join(home, "config.json"),
103
+ stateDb: path.join(home, "state.db"),
104
+ credentialsRoot: path.join(home, "credentials"),
105
+ pluginsRoot: path.join(home, "plugins"),
106
+ runsRoot: path.join(home, "runs"),
107
+ logsRoot: path.join(home, "logs"),
108
+ controlSocket: path.join(home, "control.sock"),
109
+ };
110
+ }
111
+ function executable(options) {
112
+ return options.executable ?? process.argv[1] ?? "allinai-agent";
113
+ }
114
+ function serviceInput(options) {
115
+ const paths = agentPaths(options);
116
+ return {
117
+ platform: options.platform ?? process.platform,
118
+ homeDir: options.homeDir ?? os.homedir(),
119
+ configDir: paths.home,
120
+ executable: executable(options),
121
+ };
122
+ }
123
+ function serviceExecutor() {
124
+ return async (file, args) => {
125
+ const { execFile } = await import("node:child_process");
126
+ await new Promise((resolve, reject) => {
127
+ execFile(file, [...args], { shell: false }, (error) => {
128
+ if (error)
129
+ reject(error);
130
+ else
131
+ resolve();
132
+ });
133
+ });
134
+ };
135
+ }
136
+ async function installDefaultService(input, options) {
137
+ const execute = serviceExecutor();
138
+ if (input.platform === "darwin") {
139
+ await installLaunchAgent({
140
+ ...input,
141
+ uid: options.uid ?? process.getuid?.() ?? -1,
142
+ execute,
143
+ });
144
+ return;
145
+ }
146
+ if (input.platform === "linux") {
147
+ await installSystemdUserService({
148
+ ...input,
149
+ uid: options.uid ?? process.getuid?.() ?? -1,
150
+ execute,
151
+ });
152
+ return;
153
+ }
154
+ throw new Error(`User service is not supported on ${input.platform}`);
155
+ }
156
+ async function uninstallDefaultService(input, options) {
157
+ const execute = serviceExecutor();
158
+ if (input.platform === "darwin") {
159
+ await uninstallLaunchAgent({
160
+ homeDir: input.homeDir,
161
+ uid: options.uid ?? process.getuid?.() ?? -1,
162
+ execute,
163
+ });
164
+ return;
165
+ }
166
+ if (input.platform === "linux") {
167
+ await uninstallSystemdUserService({
168
+ homeDir: input.homeDir,
169
+ uid: options.uid ?? process.getuid?.() ?? -1,
170
+ execute,
171
+ });
172
+ return;
173
+ }
174
+ throw new Error(`User service is not supported on ${input.platform}`);
175
+ }
176
+ async function restartDefaultService(input) {
177
+ const execute = serviceExecutor();
178
+ if (input.platform === "darwin") {
179
+ const { AGENT_SERVICE_LABEL } = await import("../service/launchd.js");
180
+ const uid = process.getuid?.() ?? -1;
181
+ if (uid <= 0)
182
+ throw new Error("Agent service restart requires a non-root user");
183
+ await execute("launchctl", [
184
+ "kickstart",
185
+ "-k",
186
+ `gui/${uid}/${AGENT_SERVICE_LABEL}`,
187
+ ]);
188
+ return;
189
+ }
190
+ if (input.platform === "linux") {
191
+ await restartSystemdUserService(execute);
192
+ return;
193
+ }
194
+ throw new Error(`User service is not supported on ${input.platform}`);
195
+ }
196
+ function emit(output, write, value) {
197
+ const line = typeof value === "string" ? value : JSON.stringify(value);
198
+ output.push(line);
199
+ write(`${line}\n`);
200
+ }
201
+ function redactLogDocument(document) {
202
+ return document
203
+ .split(/\r?\n/)
204
+ .filter(Boolean)
205
+ .map((line) => {
206
+ try {
207
+ const parsed = JSON.parse(line);
208
+ return serializeLog(parsed).trimEnd();
209
+ }
210
+ catch {
211
+ return JSON.stringify({ message: "[unparseable log line]" });
212
+ }
213
+ })
214
+ .join("\n");
215
+ }
216
+ async function defaultWhich(name) {
217
+ const { execFile } = await import("node:child_process");
218
+ return await new Promise((resolve) => {
219
+ execFile("which", [name], { shell: false }, (error, stdout) => {
220
+ if (error)
221
+ resolve(null);
222
+ else
223
+ resolve(String(stdout).trim() || null);
224
+ });
225
+ });
226
+ }
227
+ async function defaultProbeRuntimes() {
228
+ const registry = createPlatformAdapterRegistry();
229
+ return await Promise.all(registry.list().map(async (adapter) => ({
230
+ id: adapter.id,
231
+ probe: await adapter.probe(),
232
+ })));
233
+ }
234
+ /** Follow only the client-owned JSONL file and reapply redaction before output. */
235
+ async function defaultFollowLog(file, write, signal) {
236
+ let current = await readFile(file, "utf8");
237
+ for await (const event of watch(file, { signal })) {
238
+ if (event.eventType !== "change" && event.eventType !== "rename")
239
+ continue;
240
+ let next;
241
+ try {
242
+ next = await readFile(file, "utf8");
243
+ }
244
+ catch {
245
+ continue;
246
+ }
247
+ const appended = next.startsWith(current)
248
+ ? next.slice(current.length)
249
+ : next;
250
+ current = next;
251
+ const safe = redactLogDocument(appended);
252
+ if (safe)
253
+ write(`${safe}\n`);
254
+ }
255
+ }
256
+ function help() {
257
+ return "Usage: allinai-agent <init|daemon|install|status|logs|sync|restart|uninstall|doctor> [--config-dir PATH]";
258
+ }
259
+ /**
260
+ * Testable command dispatcher. All system and local-daemon effects cross an
261
+ * explicit option port, so tests never register an actual user service.
262
+ */
263
+ export async function runCli(args, options = {}) {
264
+ const output = [];
265
+ const write = options.write ?? ((line) => process.stdout.write(line));
266
+ try {
267
+ const parsed = parseArgs(args);
268
+ if (!parsed.command) {
269
+ if (parsed.flags.size === 0 ||
270
+ (parsed.flags.size === 1 && parsed.flags.get("help") === true)) {
271
+ emit(output, write, help());
272
+ return { exitCode: 0, output };
273
+ }
274
+ throw new Error("A command is required");
275
+ }
276
+ validateCommandOptions(parsed.command, parsed.flags);
277
+ if (parsed.flags.has("help")) {
278
+ emit(output, write, help());
279
+ return { exitCode: 0, output };
280
+ }
281
+ const configDir = flagValue(parsed.flags, "config-dir");
282
+ const scopedOptions = configDir ? { ...options, configDir } : options;
283
+ const paths = agentPaths(scopedOptions);
284
+ const command = parsed.command;
285
+ if (command === "init") {
286
+ const hubBaseUrl = flagValue(parsed.flags, "hub");
287
+ const clientId = flagValue(parsed.flags, "client") ?? randomUUID();
288
+ const token = flagValue(parsed.flags, "token");
289
+ if (!hubBaseUrl)
290
+ throw new Error("init requires --hub https://hub.example");
291
+ const config = parseAgentConfig({
292
+ hubBaseUrl,
293
+ clientId,
294
+ maxConcurrentRuns: 1,
295
+ policy: {
296
+ autoRuntimes: [],
297
+ autoPermissions: [],
298
+ allowedGitOrigins: [],
299
+ deniedPluginIds: [],
300
+ allowedWorkspaceRoots: [],
301
+ },
302
+ });
303
+ await mkdir(paths.home, { recursive: true });
304
+ await writeFile(paths.configFile, `${JSON.stringify(config, null, 2)}\n`, {
305
+ encoding: "utf8",
306
+ mode: 0o600,
307
+ });
308
+ if (token) {
309
+ await (scopedOptions.credentials ?? createCredentialStore({ paths })).save(clientId, token);
310
+ }
311
+ emit(output, write, {
312
+ initialized: true,
313
+ configDir: paths.home,
314
+ clientId,
315
+ paired: Boolean(token),
316
+ });
317
+ return { exitCode: 0, output };
318
+ }
319
+ if (command === "daemon") {
320
+ const daemon = await (scopedOptions.createDaemon ?? createLocalAgentDaemon)({
321
+ ...scopedOptions,
322
+ });
323
+ emit(output, write, await daemon.health());
324
+ try {
325
+ await daemon.wait();
326
+ }
327
+ finally {
328
+ await daemon.close();
329
+ }
330
+ return { exitCode: 0, output };
331
+ }
332
+ if (command === "install") {
333
+ const input = serviceInput(scopedOptions);
334
+ await (scopedOptions.installService ??
335
+ ((service) => installDefaultService(service, scopedOptions)))(input);
336
+ emit(output, write, {
337
+ installed: true,
338
+ platform: input.platform,
339
+ configDir: input.configDir,
340
+ });
341
+ return { exitCode: 0, output };
342
+ }
343
+ if (command === "uninstall") {
344
+ const input = serviceInput(scopedOptions);
345
+ await (scopedOptions.uninstallService ??
346
+ ((service) => uninstallDefaultService(service, scopedOptions)))(input);
347
+ emit(output, write, { uninstalled: true, platform: input.platform });
348
+ return { exitCode: 0, output };
349
+ }
350
+ if (command === "restart") {
351
+ const input = serviceInput(scopedOptions);
352
+ await (scopedOptions.restartService ?? restartDefaultService)(input);
353
+ emit(output, write, { restarted: true, platform: input.platform });
354
+ return { exitCode: 0, output };
355
+ }
356
+ const control = (scopedOptions.createControlClient ?? createAgentControlClient)(paths.controlSocket);
357
+ if (command === "status") {
358
+ emit(output, write, {
359
+ health: await control.health(),
360
+ status: await control.status(),
361
+ });
362
+ return { exitCode: 0, output };
363
+ }
364
+ if (command === "sync") {
365
+ if (!control.sync)
366
+ throw new Error("Local Agent Client does not support sync yet");
367
+ await control.sync();
368
+ emit(output, write, { synced: true });
369
+ return { exitCode: 0, output };
370
+ }
371
+ if (command === "logs") {
372
+ const follow = parsed.flags.has("f");
373
+ const logFile = path.join(paths.logsRoot, "agent.log");
374
+ const read = scopedOptions.readLog ?? ((file) => readFile(file, "utf8"));
375
+ const content = await read(logFile);
376
+ const safe = redactLogDocument(content);
377
+ if (safe)
378
+ emit(output, write, safe);
379
+ if (follow) {
380
+ await (scopedOptions.followLog ?? defaultFollowLog)(logFile, write, scopedOptions.signal);
381
+ }
382
+ return { exitCode: 0, output };
383
+ }
384
+ if (command === "doctor") {
385
+ const which = scopedOptions.which ?? defaultWhich;
386
+ const git = await which("git");
387
+ let config = null;
388
+ let configError = null;
389
+ try {
390
+ config = loadAgentConfig(paths);
391
+ }
392
+ catch (error) {
393
+ configError = error instanceof Error ? error.message : String(error);
394
+ }
395
+ const probes = await (scopedOptions.probeRuntimes ?? defaultProbeRuntimes)();
396
+ let paired = false;
397
+ if (config) {
398
+ paired = Boolean(await (scopedOptions.credentials ?? createCredentialStore({ paths })).load(config.clientId));
399
+ }
400
+ const report = {
401
+ git: git ? "ok" : "missing",
402
+ config: config ? "ok" : "invalid",
403
+ paired,
404
+ runtimes: probes.map(({ id, probe }) => ({ id, ...probe })),
405
+ ...(configError ? { configError } : {}),
406
+ };
407
+ emit(output, write, report);
408
+ return { exitCode: git && config ? 0 : 1, output };
409
+ }
410
+ throw new Error(`Unknown command: ${command}`);
411
+ }
412
+ catch (error) {
413
+ emit(output, write, {
414
+ error: error instanceof Error ? error.message : String(error),
415
+ });
416
+ return { exitCode: 1, output };
417
+ }
418
+ }
419
+ function isInside(root, candidate) {
420
+ const relative = path.relative(root, candidate);
421
+ return (relative !== "" &&
422
+ !relative.startsWith(`..${path.sep}`) &&
423
+ relative !== ".." &&
424
+ !path.isAbsolute(relative));
425
+ }
426
+ function capabilityHost(store, paths, readManifest) {
427
+ return {
428
+ async resolveActiveCapability(capabilityId) {
429
+ for (const state of store.listPluginStates()) {
430
+ const plugin = state.active;
431
+ if (!plugin || plugin.status !== "active" || !plugin.enabled)
432
+ continue;
433
+ const root = path.resolve(paths.pluginsRoot, plugin.id, "revisions", plugin.resolvedCommit);
434
+ if (!isInside(paths.pluginsRoot, root))
435
+ continue;
436
+ try {
437
+ const manifest = parsePluginManifest(JSON.parse(await readManifest(path.join(root, "allinai-plugin.json"))));
438
+ const capability = manifest?.capabilities?.find((item) => item.id === capabilityId);
439
+ if (!capability)
440
+ continue;
441
+ return {
442
+ plugin,
443
+ capability: capability,
444
+ pluginRoot: root,
445
+ };
446
+ }
447
+ catch {
448
+ continue;
449
+ }
450
+ }
451
+ return null;
452
+ },
453
+ invoke(resolved, input, context, signal) {
454
+ return new ShellCapabilityHost({
455
+ pluginRoot: resolved.pluginRoot,
456
+ }).invoke(resolved.capability, input, context, signal);
457
+ },
458
+ };
459
+ }
460
+ /**
461
+ * Compose the local daemon once. The Unix control socket is acquired before
462
+ * SQLite and transports, which makes it the single-instance lock per Agent
463
+ * home. Shutdown closes control, transport, database, and active children.
464
+ */
465
+ export async function createLocalAgentDaemon(options = {}) {
466
+ const paths = options.configDir
467
+ ? agentPaths({ configDir: options.configDir })
468
+ : resolveAgentPaths(options.homeDir);
469
+ const loadConfig = options.loadConfig ?? ((input) => loadAgentConfig(input));
470
+ const config = loadConfig(paths);
471
+ const makeDir = options.mkdir ?? mkdir;
472
+ await Promise.all([
473
+ makeDir(paths.home, { recursive: true }),
474
+ makeDir(paths.pluginsRoot, { recursive: true }),
475
+ makeDir(paths.runsRoot, { recursive: true }),
476
+ makeDir(paths.logsRoot, { recursive: true }),
477
+ ]);
478
+ let state = "starting";
479
+ let store = null;
480
+ let supervisor = null;
481
+ let runner = null;
482
+ let closed = false;
483
+ let resolveShutdown = null;
484
+ const shutdown = new Promise((resolve) => {
485
+ resolveShutdown = resolve;
486
+ });
487
+ const server = await (options.createControlServer ?? startAgentControlServer)({
488
+ paths,
489
+ platform: options.platform,
490
+ control: {
491
+ health: () => ({ status: state === "starting" ? "degraded" : state }),
492
+ status: () => ({
493
+ state,
494
+ executions: store?.listExecutions().map((execution) => ({
495
+ executionId: execution.executionId,
496
+ state: execution.state,
497
+ runtime: execution.command.kind === "agent.run"
498
+ ? execution.command.runtime
499
+ : undefined,
500
+ })) ?? [],
501
+ plugins: store?.listPluginStates().map((plugin) => plugin.plugin) ?? [],
502
+ }),
503
+ approve: async (executionId) => {
504
+ if (!supervisor)
505
+ throw new Error("Agent daemon is still starting");
506
+ await supervisor.approve(executionId);
507
+ },
508
+ sync: async () => {
509
+ if (!supervisor)
510
+ throw new Error("Agent daemon is still starting");
511
+ await supervisor.flush();
512
+ },
513
+ },
514
+ });
515
+ try {
516
+ store = (options.createStore ?? ((file) => new ClientStateStore(file)))(paths.stateDb);
517
+ store.markRecoveryRequired();
518
+ const plugins = new PluginManager({
519
+ pluginsRoot: paths.pluginsRoot,
520
+ allowedGitOrigins: config.policy.allowedGitOrigins,
521
+ stateStore: store,
522
+ });
523
+ runner = (options.createRunner ?? createRunnerManager)();
524
+ const token = await (options.credentials ?? createCredentialStore({ paths })).load(config.clientId);
525
+ const transport = token
526
+ ? observeTransport((options.createTransport ?? ((input) => new WsClientTransport(input)))({
527
+ hubBaseUrl: config.hubBaseUrl,
528
+ token,
529
+ clientId: config.clientId,
530
+ }), () => {
531
+ state = "ok";
532
+ }, () => {
533
+ if (!closed)
534
+ state = "degraded";
535
+ })
536
+ : unpairedTransport();
537
+ if (!token)
538
+ state = "unpaired";
539
+ else
540
+ state = "degraded";
541
+ const localCapabilityPolicy = {
542
+ clientEnabled: true,
543
+ autoPermissions: config.policy.autoPermissions.filter((permission) => permission === "network" || permission === "workspace:write"),
544
+ allowedGitOrigins: config.policy.allowedGitOrigins,
545
+ deniedPluginIds: config.policy.deniedPluginIds,
546
+ allowedWorkspaceRoots: config.policy.allowedWorkspaceRoots,
547
+ };
548
+ const logger = createRotatingJsonlLogger({ logsRoot: paths.logsRoot });
549
+ setBridgeLogger({
550
+ debug: (tag, message, meta) => void logger.write({ level: "debug", tag, message, ...meta }),
551
+ info: (tag, message, meta) => void logger.write({ level: "info", tag, message, ...meta }),
552
+ warn: (tag, message, meta) => void logger.write({ level: "warn", tag, message, ...meta }),
553
+ });
554
+ supervisor = new ClientSupervisor({
555
+ store,
556
+ transport,
557
+ runner,
558
+ maxConcurrentRuns: config.maxConcurrentRuns,
559
+ plugins,
560
+ capabilityHost: capabilityHost(store, paths, options.readPluginManifest ?? ((file) => readFile(file, "utf8"))),
561
+ capabilityPolicy: localCapabilityPolicy,
562
+ policy: async (command) => config.policy.autoRuntimes.includes(command.runtime)
563
+ ? "auto"
564
+ : "approval",
565
+ // The Hub never chooses cwd. A single locally configured workspace root
566
+ // is the only unambiguous local context available to this standalone CLI.
567
+ capabilityContext: () => ({
568
+ workspace: config.policy.allowedWorkspaceRoots.length === 1
569
+ ? config.policy.allowedWorkspaceRoots[0]
570
+ : undefined,
571
+ }),
572
+ });
573
+ await supervisor.start();
574
+ }
575
+ catch (error) {
576
+ await server.close();
577
+ store?.close();
578
+ throw error;
579
+ }
580
+ const onSignal = () => resolveShutdown?.();
581
+ process.once("SIGINT", onSignal);
582
+ process.once("SIGTERM", onSignal);
583
+ return {
584
+ async health() {
585
+ return { status: state === "starting" ? "degraded" : state };
586
+ },
587
+ async status() {
588
+ return {
589
+ state,
590
+ executions: store.listExecutions(),
591
+ plugins: store.listPluginStates(),
592
+ };
593
+ },
594
+ async sync() {
595
+ await supervisor.flush();
596
+ },
597
+ wait: () => shutdown,
598
+ async close() {
599
+ if (closed)
600
+ return;
601
+ closed = true;
602
+ process.off("SIGINT", onSignal);
603
+ process.off("SIGTERM", onSignal);
604
+ await supervisor.shutdown();
605
+ store.close();
606
+ await server.close();
607
+ },
608
+ };
609
+ }
610
+ function unpairedTransport() {
611
+ return {
612
+ async connect() { },
613
+ async push() {
614
+ return {};
615
+ },
616
+ async close() { },
617
+ };
618
+ }
619
+ function observeTransport(transport, connected, disconnected) {
620
+ return {
621
+ async connect(handlers) {
622
+ await transport.connect({
623
+ ...handlers,
624
+ connected: async () => {
625
+ connected();
626
+ await handlers.connected();
627
+ },
628
+ });
629
+ },
630
+ push: (events) => transport.push(events),
631
+ reportPluginSync: (acknowledgement) => transport.reportPluginSync?.(acknowledgement) ?? Promise.resolve(),
632
+ async close() {
633
+ disconnected();
634
+ await transport.close();
635
+ },
636
+ };
637
+ }
638
+ //# sourceMappingURL=commands.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commands.js","sourceRoot":"","sources":["../../src/cli/commands.ts"],"names":[],"mappings":"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"}