@moxt-ai/mobius 0.0.4 → 0.0.6

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 (115) hide show
  1. package/dist/acp/native-session.d.ts +30 -0
  2. package/dist/acp/native-session.d.ts.map +1 -0
  3. package/dist/acp/native-session.js +25 -0
  4. package/dist/acp/native-session.js.map +1 -0
  5. package/dist/acp/session-history.d.ts +9 -0
  6. package/dist/acp/session-history.d.ts.map +1 -0
  7. package/dist/acp/session-history.js +69 -0
  8. package/dist/acp/session-history.js.map +1 -0
  9. package/dist/acp/session-manager.d.ts +16 -5
  10. package/dist/acp/session-manager.d.ts.map +1 -1
  11. package/dist/acp/session-manager.js +226 -41
  12. package/dist/acp/session-manager.js.map +1 -1
  13. package/dist/acp/session-store.d.ts +9 -0
  14. package/dist/acp/session-store.d.ts.map +1 -1
  15. package/dist/acp/session-store.js +43 -0
  16. package/dist/acp/session-store.js.map +1 -1
  17. package/dist/agent-catalog/agent-diagnostics.d.ts +3 -0
  18. package/dist/agent-catalog/agent-diagnostics.d.ts.map +1 -0
  19. package/dist/agent-catalog/agent-diagnostics.js +62 -0
  20. package/dist/agent-catalog/agent-diagnostics.js.map +1 -0
  21. package/dist/agent-catalog/discover-local-agents.d.ts +77 -0
  22. package/dist/agent-catalog/discover-local-agents.d.ts.map +1 -0
  23. package/dist/agent-catalog/discover-local-agents.js +467 -0
  24. package/dist/agent-catalog/discover-local-agents.js.map +1 -0
  25. package/dist/agent-catalog/local-agent.d.ts +38 -0
  26. package/dist/agent-catalog/local-agent.d.ts.map +1 -0
  27. package/dist/agent-catalog/local-agent.js +93 -0
  28. package/dist/agent-catalog/local-agent.js.map +1 -0
  29. package/dist/agent-catalog/publish-agent-catalog.d.ts +3 -0
  30. package/dist/agent-catalog/publish-agent-catalog.d.ts.map +1 -0
  31. package/dist/agent-catalog/publish-agent-catalog.js +58 -0
  32. package/dist/agent-catalog/publish-agent-catalog.js.map +1 -0
  33. package/dist/agent-installation/agent-installation-manager.d.ts +60 -0
  34. package/dist/agent-installation/agent-installation-manager.d.ts.map +1 -0
  35. package/dist/agent-installation/agent-installation-manager.js +242 -0
  36. package/dist/agent-installation/agent-installation-manager.js.map +1 -0
  37. package/dist/agent-installation/automatic-adapter-provisioner.d.ts +18 -0
  38. package/dist/agent-installation/automatic-adapter-provisioner.d.ts.map +1 -0
  39. package/dist/agent-installation/automatic-adapter-provisioner.js +116 -0
  40. package/dist/agent-installation/automatic-adapter-provisioner.js.map +1 -0
  41. package/dist/agent-installation/fixed-agent-install-recipes.d.ts +20 -0
  42. package/dist/agent-installation/fixed-agent-install-recipes.d.ts.map +1 -0
  43. package/dist/agent-installation/fixed-agent-install-recipes.js +163 -0
  44. package/dist/agent-installation/fixed-agent-install-recipes.js.map +1 -0
  45. package/dist/agent-installation/fixed-installation-executor.d.ts +20 -0
  46. package/dist/agent-installation/fixed-installation-executor.d.ts.map +1 -0
  47. package/dist/agent-installation/fixed-installation-executor.js +204 -0
  48. package/dist/agent-installation/fixed-installation-executor.js.map +1 -0
  49. package/dist/agent-installation/installation-grants.d.ts +2 -0
  50. package/dist/agent-installation/installation-grants.d.ts.map +1 -0
  51. package/dist/agent-installation/installation-grants.js +52 -0
  52. package/dist/agent-installation/installation-grants.js.map +1 -0
  53. package/dist/agent-installation/local-installation-authorizer.d.ts +7 -0
  54. package/dist/agent-installation/local-installation-authorizer.d.ts.map +1 -0
  55. package/dist/agent-installation/local-installation-authorizer.js +32 -0
  56. package/dist/agent-installation/local-installation-authorizer.js.map +1 -0
  57. package/dist/agent-installation/managed-adapter-installer.d.ts +20 -0
  58. package/dist/agent-installation/managed-adapter-installer.d.ts.map +1 -0
  59. package/dist/agent-installation/managed-adapter-installer.js +159 -0
  60. package/dist/agent-installation/managed-adapter-installer.js.map +1 -0
  61. package/dist/agent-installation/verified-download.d.ts +24 -0
  62. package/dist/agent-installation/verified-download.d.ts.map +1 -0
  63. package/dist/agent-installation/verified-download.js +158 -0
  64. package/dist/agent-installation/verified-download.js.map +1 -0
  65. package/dist/audit/audit-store.d.ts +1 -0
  66. package/dist/audit/audit-store.d.ts.map +1 -1
  67. package/dist/audit/audit-store.js +12 -4
  68. package/dist/audit/audit-store.js.map +1 -1
  69. package/dist/authorization/local-authorization-error.d.ts +5 -0
  70. package/dist/authorization/local-authorization-error.d.ts.map +1 -0
  71. package/dist/authorization/local-authorization-error.js +8 -0
  72. package/dist/authorization/local-authorization-error.js.map +1 -0
  73. package/dist/authorization/workspace-directory.d.ts +16 -5
  74. package/dist/authorization/workspace-directory.d.ts.map +1 -1
  75. package/dist/authorization/workspace-directory.js +109 -119
  76. package/dist/authorization/workspace-directory.js.map +1 -1
  77. package/dist/cli.js +6289 -2124
  78. package/dist/cli.js.map +4 -4
  79. package/dist/config.d.ts +8 -12
  80. package/dist/config.d.ts.map +1 -1
  81. package/dist/config.js +14 -55
  82. package/dist/config.js.map +1 -1
  83. package/dist/index.d.ts +1 -1
  84. package/dist/index.d.ts.map +1 -1
  85. package/dist/index.js +4894 -852
  86. package/dist/index.js.map +4 -4
  87. package/dist/native-sessions/codex-history.d.ts +11 -0
  88. package/dist/native-sessions/codex-history.d.ts.map +1 -0
  89. package/dist/native-sessions/codex-history.js +223 -0
  90. package/dist/native-sessions/codex-history.js.map +1 -0
  91. package/dist/native-sessions/service.d.ts +14 -0
  92. package/dist/native-sessions/service.d.ts.map +1 -0
  93. package/dist/native-sessions/service.js +249 -0
  94. package/dist/native-sessions/service.js.map +1 -0
  95. package/dist/pairing/pair-local-machine.d.ts +2 -2
  96. package/dist/pairing/pair-local-machine.d.ts.map +1 -1
  97. package/dist/pairing/pair-local-machine.js +65 -41
  98. package/dist/pairing/pair-local-machine.js.map +1 -1
  99. package/dist/process/executable.d.ts +40 -0
  100. package/dist/process/executable.d.ts.map +1 -0
  101. package/dist/process/executable.js +305 -0
  102. package/dist/process/executable.js.map +1 -0
  103. package/dist/run-daemon.d.ts +1 -1
  104. package/dist/run-daemon.d.ts.map +1 -1
  105. package/dist/run-daemon.js +431 -180
  106. package/dist/run-daemon.js.map +1 -1
  107. package/dist/storage/state-directory.d.ts +2 -0
  108. package/dist/storage/state-directory.d.ts.map +1 -0
  109. package/dist/storage/state-directory.js +10 -0
  110. package/dist/storage/state-directory.js.map +1 -0
  111. package/package.json +5 -6
  112. package/dist/authorization/authorize-binding.d.ts +0 -6
  113. package/dist/authorization/authorize-binding.d.ts.map +0 -1
  114. package/dist/authorization/authorize-binding.js +0 -30
  115. package/dist/authorization/authorize-binding.js.map +0 -1
@@ -0,0 +1,467 @@
1
+ import { spawn } from "node:child_process";
2
+ import { isAbsolute, join } from "node:path";
3
+ import { methods, ndJsonStream, PROTOCOL_VERSION, } from "@agentclientprotocol/sdk";
4
+ import { createAcpClient, } from "../acp/create-client.js";
5
+ import { readGrantedAgents } from "../agent-installation/installation-grants.js";
6
+ import { validateManagedAdapter } from "../agent-installation/managed-adapter-installer.js";
7
+ import { findExecutableOnPath, ProcessExecutionError, resolveExecutablePath, runBoundedProcess, stopProcessTree, } from "../process/executable.js";
8
+ import { readStateDirectory } from "../storage/state-directory.js";
9
+ import { InstallableAgentDefinition, LocalAgentDefinition, } from "./local-agent.js";
10
+ const VERSION_PROBE_TIMEOUT_MILLISECONDS = 3_000;
11
+ const ACP_PROBE_TIMEOUT_MILLISECONDS = 5_000;
12
+ const ACP_OUTPUT_LIMIT_BYTES = 1024 * 1024;
13
+ export class LocalAgentSpecification {
14
+ recoveryCommand = () => `npm install -g --omit=optional ${this.adapterPackage}@${this.adapterVersion}`;
15
+ supportsInstallation = (platform, architecture) => (platform === "darwin" || platform === "linux") &&
16
+ (architecture === "arm64" || architecture === "x64");
17
+ }
18
+ export class CodexAgentSpecification extends LocalAgentSpecification {
19
+ adapterEnvironmentVariable = "CODEX_PATH";
20
+ adapterExecutable = "codex-acp";
21
+ adapterOverrideVariable = "MOBIUS_CODEX_ACP_PATH";
22
+ adapterPackage = "@agentclientprotocol/codex-acp";
23
+ adapterVersion = "1.8.0";
24
+ agentExecutable = "codex";
25
+ agentOverrideVariable = "MOBIUS_CODEX_PATH";
26
+ id = "codex";
27
+ label = "Codex";
28
+ managedAdapterExecutablePath = [
29
+ "adapters",
30
+ "codex",
31
+ "1.8.0",
32
+ "node_modules",
33
+ "@agentclientprotocol",
34
+ "codex-acp",
35
+ "dist",
36
+ "index.js",
37
+ ];
38
+ managedAgentExecutablePath = ["agents", "codex", "bin", "codex"];
39
+ }
40
+ class ClaudeCodeAgentSpecification extends LocalAgentSpecification {
41
+ adapterEnvironmentVariable = "CLAUDE_CODE_EXECUTABLE";
42
+ adapterExecutable = "claude-agent-acp";
43
+ adapterOverrideVariable = "MOBIUS_CLAUDE_ACP_PATH";
44
+ adapterPackage = "@agentclientprotocol/claude-agent-acp";
45
+ adapterVersion = "0.73.0";
46
+ agentExecutable = "claude";
47
+ agentOverrideVariable = "MOBIUS_CLAUDE_PATH";
48
+ id = "claude";
49
+ label = "Claude Code";
50
+ managedAdapterExecutablePath = [
51
+ "adapters",
52
+ "claude",
53
+ "0.73.0",
54
+ "node_modules",
55
+ "@agentclientprotocol",
56
+ "claude-agent-acp",
57
+ "dist",
58
+ "index.js",
59
+ ];
60
+ managedAgentExecutablePath = [
61
+ "agents",
62
+ "claude",
63
+ "home",
64
+ ".local",
65
+ "bin",
66
+ "claude",
67
+ ];
68
+ }
69
+ export function supportedLocalAgentSpecifications() {
70
+ return Object.freeze([
71
+ new CodexAgentSpecification(),
72
+ new ClaudeCodeAgentSpecification(),
73
+ ]);
74
+ }
75
+ export class AgentDiscovery {
76
+ specification;
77
+ constructor(specification) {
78
+ this.specification = specification;
79
+ }
80
+ }
81
+ export class AvailableAgent extends AgentDiscovery {
82
+ agent;
83
+ status = "ready";
84
+ constructor(specification, agent) {
85
+ super(specification);
86
+ this.agent = agent;
87
+ }
88
+ }
89
+ export class UnavailableAgent extends AgentDiscovery {
90
+ }
91
+ export class MissingAdapter extends UnavailableAgent {
92
+ code = "adapter_not_found";
93
+ message = "ACP adapter not found";
94
+ status = "missing_adapter";
95
+ constructor(specification) {
96
+ super(specification);
97
+ }
98
+ }
99
+ class MissingAgent extends UnavailableAgent {
100
+ code = "agent_not_found";
101
+ message = "Agent executable not found";
102
+ status = "missing_agent";
103
+ constructor(specification) {
104
+ super(specification);
105
+ }
106
+ }
107
+ class ProbeFailed extends UnavailableAgent {
108
+ code;
109
+ message;
110
+ status = "probe_failed";
111
+ constructor(specification, code, message) {
112
+ super(specification);
113
+ this.code = code;
114
+ this.message = message;
115
+ }
116
+ }
117
+ class IncompatibleAdapter extends UnavailableAgent {
118
+ code = "acp_incompatible";
119
+ message = "ACP adapter is incompatible";
120
+ status = "incompatible_adapter";
121
+ constructor(specification) {
122
+ super(specification);
123
+ }
124
+ }
125
+ export class LocalAgentInventory {
126
+ available;
127
+ discoveries;
128
+ installable;
129
+ unavailable;
130
+ constructor(discoveries, grantedAgents = new Set(), platform = process.platform, architecture = process.arch) {
131
+ const available = [];
132
+ const unavailable = [];
133
+ for (const discovery of discoveries) {
134
+ if (discovery instanceof AvailableAgent) {
135
+ available.push(discovery);
136
+ }
137
+ else if (discovery instanceof UnavailableAgent) {
138
+ unavailable.push(discovery);
139
+ }
140
+ else {
141
+ throw new Error("Unsupported Agent discovery outcome");
142
+ }
143
+ }
144
+ this.available = Object.freeze(available);
145
+ this.discoveries = Object.freeze([...discoveries]);
146
+ this.installable = Object.freeze(unavailable
147
+ .filter((discovery) => discovery.specification.supportsInstallation(platform, architecture))
148
+ .map((discovery) => new InstallableAgentDefinition(discovery.specification.id, discovery.specification.label, !grantedAgents.has(discovery.specification.id))));
149
+ this.unavailable = Object.freeze(unavailable);
150
+ }
151
+ readyAgents = () => this.available.map((discovery) => discovery.agent);
152
+ }
153
+ class AgentProbeError extends Error {
154
+ code;
155
+ constructor(code, message, options = {}) {
156
+ super(message, options);
157
+ this.code = code;
158
+ this.name = "AgentProbeError";
159
+ }
160
+ }
161
+ class DiscoveryAcpHandler {
162
+ onElicitation = (_request, _signal) => Promise.reject(new Error("ACP probe does not accept elicitations"));
163
+ onElicitationComplete = (_notification) => Promise.resolve();
164
+ onPermission = (_request, _signal) => Promise.reject(new Error("ACP probe does not grant permissions"));
165
+ onUpdate = (_notification) => Promise.resolve();
166
+ }
167
+ async function resolveManagedExecutable(managedExecutablePath, options) {
168
+ return await resolveExecutablePath(join(readStateDirectory(options.environment), ...managedExecutablePath), options.platform);
169
+ }
170
+ async function resolveManagedAdapterExecutable(specification, options) {
171
+ let managed;
172
+ try {
173
+ managed = await validateManagedAdapter(join(readStateDirectory(options.environment), "adapters", specification.id, specification.adapterVersion), specification);
174
+ }
175
+ catch {
176
+ return null;
177
+ }
178
+ return managed;
179
+ }
180
+ async function resolveSpecificationExecutables(executableName, overrideVariable, resolveManaged, options) {
181
+ const override = options.environment[overrideVariable];
182
+ if (override !== undefined) {
183
+ if (override.length === 0 || !isAbsolute(override)) {
184
+ return [];
185
+ }
186
+ const executable = await resolveExecutablePath(override, options.platform);
187
+ return executable === null ? [] : [executable];
188
+ }
189
+ const external = await findExecutableOnPath(executableName, options.environment, options.platform);
190
+ const managed = await resolveManaged();
191
+ if (external === null) {
192
+ return managed === null ? [] : [managed];
193
+ }
194
+ if (managed === null || managed.path === external.path) {
195
+ return [external];
196
+ }
197
+ return [external, managed];
198
+ }
199
+ async function resolveAgentExecutables(specification, options) {
200
+ return await resolveSpecificationExecutables(specification.agentExecutable, specification.agentOverrideVariable, async () => await resolveManagedExecutable(specification.managedAgentExecutablePath, options), options);
201
+ }
202
+ async function resolveAdapterExecutables(specification, options) {
203
+ return await resolveSpecificationExecutables(specification.adapterExecutable, specification.adapterOverrideVariable, async () => await resolveManagedAdapterExecutable(specification, options), options);
204
+ }
205
+ export async function resolveAgentExecutable(specification, options) {
206
+ const executables = await resolveAgentExecutables(specification, options);
207
+ return executables[0] ?? null;
208
+ }
209
+ export async function resolveAdapterExecutable(specification, options) {
210
+ const executables = await resolveAdapterExecutables(specification, options);
211
+ return executables[0] ?? null;
212
+ }
213
+ function normalizedVersion(output) {
214
+ return output.trim().split(/\r?\n/, 1)[0]?.trim().slice(0, 128) ?? "";
215
+ }
216
+ async function probeVersion(executable, environment, defaultWorkspace, signal) {
217
+ const result = await runBoundedProcess({
218
+ arguments: ["--version"],
219
+ command: executable.path,
220
+ cwd: defaultWorkspace,
221
+ environment,
222
+ signal,
223
+ timeoutMilliseconds: VERSION_PROBE_TIMEOUT_MILLISECONDS,
224
+ });
225
+ const version = normalizedVersion(result.stdout || result.stderr);
226
+ if (version.length === 0) {
227
+ throw new ProcessExecutionError("process_exit_failed", "The executable did not report a version");
228
+ }
229
+ return version;
230
+ }
231
+ export class VerifiedAgentExecutable {
232
+ executable;
233
+ version;
234
+ constructor(executable, version) {
235
+ this.executable = executable;
236
+ this.version = version;
237
+ }
238
+ }
239
+ export async function findVerifiedAgentExecutable(specification, options) {
240
+ const executables = await resolveAgentExecutables(specification, options);
241
+ for (const executable of executables) {
242
+ try {
243
+ const version = await probeVersion(executable, options.environment, options.defaultWorkspace, options.signal);
244
+ return new VerifiedAgentExecutable(executable, version);
245
+ }
246
+ catch {
247
+ if (options.signal.aborted) {
248
+ options.signal.throwIfAborted();
249
+ }
250
+ }
251
+ }
252
+ return null;
253
+ }
254
+ function readableAcpStream(input) {
255
+ let byteLength = 0;
256
+ let open = true;
257
+ return new ReadableStream({
258
+ start(controller) {
259
+ input.on("data", (chunk) => {
260
+ if (!open) {
261
+ return;
262
+ }
263
+ if (!(chunk instanceof Uint8Array)) {
264
+ open = false;
265
+ controller.error(new Error("ACP adapter produced invalid output"));
266
+ return;
267
+ }
268
+ byteLength += chunk.byteLength;
269
+ if (byteLength > ACP_OUTPUT_LIMIT_BYTES) {
270
+ open = false;
271
+ controller.error(new Error("ACP adapter output limit exceeded"));
272
+ return;
273
+ }
274
+ controller.enqueue(new Uint8Array(chunk));
275
+ });
276
+ input.once("end", () => {
277
+ if (open) {
278
+ open = false;
279
+ controller.close();
280
+ }
281
+ });
282
+ input.once("error", (error) => {
283
+ if (open) {
284
+ open = false;
285
+ controller.error(error);
286
+ }
287
+ });
288
+ },
289
+ cancel() {
290
+ open = false;
291
+ },
292
+ });
293
+ }
294
+ function writableAcpStream(output) {
295
+ return new WritableStream({
296
+ write(chunk) {
297
+ return new Promise((resolveWrite, rejectWrite) => {
298
+ output.write(chunk, (error) => {
299
+ if (error) {
300
+ rejectWrite(error);
301
+ return;
302
+ }
303
+ resolveWrite();
304
+ });
305
+ });
306
+ },
307
+ });
308
+ }
309
+ async function probeAcp(agent, environment, defaultWorkspace, signal) {
310
+ signal.throwIfAborted();
311
+ const controller = new AbortController();
312
+ let timedOut = false;
313
+ const timeout = setTimeout(() => {
314
+ timedOut = true;
315
+ controller.abort(new Error("ACP probe timed out"));
316
+ }, ACP_PROBE_TIMEOUT_MILLISECONDS);
317
+ const abort = () => controller.abort(signal.reason);
318
+ signal.addEventListener("abort", abort, { once: true });
319
+ if (signal.aborted) {
320
+ abort();
321
+ }
322
+ const child = spawn(agent.adapterPath, [...agent.arguments], {
323
+ cwd: defaultWorkspace,
324
+ detached: process.platform !== "win32",
325
+ env: { ...environment, ...agent.environment },
326
+ shell: false,
327
+ stdio: ["pipe", "pipe", "pipe"],
328
+ });
329
+ const processExit = new Promise((_resolve, reject) => {
330
+ const rejectExit = () => reject(new Error("ACP adapter exited during initialization"));
331
+ child.once("error", reject);
332
+ child.once("exit", rejectExit);
333
+ if (child.exitCode !== null || child.signalCode !== null)
334
+ rejectExit();
335
+ });
336
+ const stdin = child.stdin;
337
+ const stdout = child.stdout;
338
+ const stderr = child.stderr;
339
+ if (stdin === null || stdout === null || stderr === null) {
340
+ await stopProcessTree(child);
341
+ throw new AgentProbeError("acp_incompatible", "ACP adapter streams are unavailable");
342
+ }
343
+ let stderrBytes = 0;
344
+ const consumeStderr = (chunk) => {
345
+ stderrBytes += chunk.byteLength;
346
+ if (stderrBytes > ACP_OUTPUT_LIMIT_BYTES) {
347
+ controller.abort(new Error("ACP adapter output limit exceeded"));
348
+ }
349
+ };
350
+ stderr.on("data", consumeStderr);
351
+ const connection = createAcpClient(new DiscoveryAcpHandler()).connect(ndJsonStream(writableAcpStream(stdin), readableAcpStream(stdout)));
352
+ try {
353
+ const initialized = await Promise.race([
354
+ connection.agent.request(methods.agent.initialize, {
355
+ clientCapabilities: {},
356
+ clientInfo: { name: "mobius", version: "0.0.3" },
357
+ protocolVersion: PROTOCOL_VERSION,
358
+ }, { cancellationSignal: controller.signal }),
359
+ processExit,
360
+ ]);
361
+ if (initialized.protocolVersion !== PROTOCOL_VERSION) {
362
+ throw new AgentProbeError("acp_incompatible", "ACP adapter selected an unsupported protocol version");
363
+ }
364
+ }
365
+ catch (error) {
366
+ if (signal.aborted) {
367
+ signal.throwIfAborted();
368
+ }
369
+ if (timedOut) {
370
+ throw new AgentProbeError("adapter_probe_timeout", "ACP adapter probe timed out", { cause: error });
371
+ }
372
+ if (error instanceof AgentProbeError) {
373
+ throw error;
374
+ }
375
+ throw new AgentProbeError("acp_incompatible", "ACP adapter initialization failed", { cause: error });
376
+ }
377
+ finally {
378
+ clearTimeout(timeout);
379
+ signal.removeEventListener("abort", abort);
380
+ connection.close();
381
+ stdin.end();
382
+ stderr.removeListener("data", consumeStderr);
383
+ await stopProcessTree(child);
384
+ }
385
+ }
386
+ function probeFailure(specification, executableKind, error) {
387
+ if (error instanceof AgentProbeError) {
388
+ return error.code === "acp_incompatible"
389
+ ? new IncompatibleAdapter(specification)
390
+ : new ProbeFailed(specification, error.code, error.message);
391
+ }
392
+ if (error instanceof ProcessExecutionError) {
393
+ const code = error.code === "process_timeout"
394
+ ? `${executableKind}_probe_timeout`
395
+ : `${executableKind}_probe_failed`;
396
+ return new ProbeFailed(specification, code, `${executableKind === "agent" ? "Agent" : "Adapter"} version probe failed`);
397
+ }
398
+ return new ProbeFailed(specification, `${executableKind}_probe_failed`, `${executableKind === "agent" ? "Agent" : "Adapter"} probe failed`);
399
+ }
400
+ async function discoverSpecification(specification, options) {
401
+ options.signal.throwIfAborted();
402
+ const [adapters, agents] = await Promise.all([
403
+ resolveAdapterExecutables(specification, options),
404
+ resolveAgentExecutables(specification, options),
405
+ ]);
406
+ if (adapters.length === 0) {
407
+ return new MissingAdapter(specification);
408
+ }
409
+ if (agents.length === 0) {
410
+ return new MissingAgent(specification);
411
+ }
412
+ let lastFailure = null;
413
+ for (const agent of agents) {
414
+ let agentVersion = "";
415
+ try {
416
+ agentVersion = await probeVersion(agent, options.environment, options.defaultWorkspace, options.signal);
417
+ }
418
+ catch (error) {
419
+ if (options.signal.aborted) {
420
+ options.signal.throwIfAborted();
421
+ }
422
+ lastFailure = probeFailure(specification, "agent", error);
423
+ continue;
424
+ }
425
+ for (const adapter of adapters) {
426
+ let adapterVersion = "";
427
+ try {
428
+ adapterVersion = await probeVersion(adapter, {
429
+ ...options.environment,
430
+ [specification.adapterEnvironmentVariable]: agent.path,
431
+ }, options.defaultWorkspace, options.signal);
432
+ }
433
+ catch (error) {
434
+ if (options.signal.aborted) {
435
+ options.signal.throwIfAborted();
436
+ }
437
+ lastFailure = probeFailure(specification, "adapter", error);
438
+ continue;
439
+ }
440
+ const definition = new LocalAgentDefinition(specification.id, specification.label, adapter.path, [], { [specification.adapterEnvironmentVariable]: agent.path }, adapterVersion, agentVersion, adapter.identity, agent.identity);
441
+ try {
442
+ await probeAcp(definition, options.environment, options.defaultWorkspace, options.signal);
443
+ return new AvailableAgent(specification, definition);
444
+ }
445
+ catch (error) {
446
+ if (options.signal.aborted) {
447
+ options.signal.throwIfAborted();
448
+ }
449
+ lastFailure = probeFailure(specification, "adapter", error);
450
+ }
451
+ }
452
+ }
453
+ return lastFailure ?? new IncompatibleAdapter(specification);
454
+ }
455
+ export async function discoverLocalAgentInventory(options) {
456
+ const specifications = options.specifications ?? supportedLocalAgentSpecifications();
457
+ const discoveries = await Promise.all(specifications.map(async (specification) => await discoverSpecification(specification, options)));
458
+ let grantedAgents = new Set();
459
+ try {
460
+ grantedAgents = await readGrantedAgents(readStateDirectory(options.environment));
461
+ }
462
+ catch {
463
+ // An invalid local grant is ignored so it can never widen installation authority.
464
+ }
465
+ return new LocalAgentInventory(discoveries, grantedAgents, options.platform, options.architecture);
466
+ }
467
+ //# sourceMappingURL=discover-local-agents.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"discover-local-agents.js","sourceRoot":"","sources":["../../src/agent-catalog/discover-local-agents.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ import { ExecutableIdentity } from "../process/executable.ts";
2
+ export declare class LocalAgentDefinition {
3
+ readonly adapterIdentity: ExecutableIdentity;
4
+ readonly adapterPath: string;
5
+ readonly adapterVersion: string;
6
+ readonly agentIdentity: ExecutableIdentity;
7
+ readonly agentVersion: string;
8
+ readonly arguments: readonly string[];
9
+ readonly command: string;
10
+ readonly environment: Readonly<Record<string, string>>;
11
+ readonly id: string;
12
+ readonly label: string;
13
+ constructor(id: string, label: string, command: string, arguments_: readonly string[], environment?: Readonly<Record<string, string>>, adapterVersion?: string, agentVersion?: string, adapterIdentity?: ExecutableIdentity, agentIdentity?: ExecutableIdentity);
14
+ }
15
+ export declare class InstallableAgentDefinition {
16
+ readonly id: string;
17
+ readonly label: string;
18
+ readonly requiresLocalApproval: boolean;
19
+ constructor(id: string, label: string, requiresLocalApproval?: boolean);
20
+ }
21
+ export declare class LocalAgentCatalogSnapshot {
22
+ readonly agents: readonly LocalAgentDefinition[];
23
+ readonly installableAgents: readonly InstallableAgentDefinition[];
24
+ constructor(agents: readonly LocalAgentDefinition[], installableAgents: readonly InstallableAgentDefinition[]);
25
+ }
26
+ export declare class LocalAgentCatalogError extends Error {
27
+ readonly code = "agent_not_ready";
28
+ constructor();
29
+ }
30
+ export declare class LocalAgentCatalog {
31
+ #private;
32
+ constructor(agents: readonly LocalAgentDefinition[], installableAgents: readonly InstallableAgentDefinition[]);
33
+ readonly find: (agentId: string) => LocalAgentDefinition;
34
+ readonly read: () => LocalAgentCatalogSnapshot;
35
+ readonly transition: (agents: readonly LocalAgentDefinition[], installableAgents: readonly InstallableAgentDefinition[]) => LocalAgentCatalogSnapshot;
36
+ private readonly validate;
37
+ }
38
+ //# sourceMappingURL=local-agent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local-agent.d.ts","sourceRoot":"","sources":["../../src/agent-catalog/local-agent.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAe9D,qBAAa,oBAAoB;IAC/B,QAAQ,CAAC,eAAe,EAAE,kBAAkB,CAAC;IAC7C,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,aAAa,EAAE,kBAAkB,CAAC;IAC3C,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACvD,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAEvB,YACE,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,SAAS,MAAM,EAAE,EAC7B,WAAW,GAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAM,EAClD,cAAc,SAAK,EACnB,YAAY,SAAK,EACjB,eAAe,GAAE,kBAAiD,EAClE,aAAa,GAAE,kBAAoC,EAYpD;CACF;AAED,qBAAa,0BAA0B;IACrC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,qBAAqB,EAAE,OAAO,CAAC;IAExC,YAAY,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,qBAAqB,UAAO,EAIlE;CACF;AAED,qBAAa,yBAAyB;IACpC,QAAQ,CAAC,MAAM,EAAE,SAAS,oBAAoB,EAAE,CAAC;IACjD,QAAQ,CAAC,iBAAiB,EAAE,SAAS,0BAA0B,EAAE,CAAC;IAElE,YACE,MAAM,EAAE,SAAS,oBAAoB,EAAE,EACvC,iBAAiB,EAAE,SAAS,0BAA0B,EAAE,EAIzD;CACF;AAED,qBAAa,sBAAuB,SAAQ,KAAK;IAC/C,QAAQ,CAAC,IAAI,qBAAqB;IAElC,cAGC;CACF;AAED,qBAAa,iBAAiB;;IAG5B,YACE,MAAM,EAAE,SAAS,oBAAoB,EAAE,EACvC,iBAAiB,EAAE,SAAS,0BAA0B,EAAE,EAGzD;IAED,QAAQ,CAAC,IAAI,YAAa,MAAM,KAAG,oBAAoB,CAOrD;IAEF,QAAQ,CAAC,IAAI,QAAO,yBAAyB,CAAmB;IAEhE,QAAQ,CAAC,UAAU,WACT,SAAS,oBAAoB,EAAE,qBACpB,SAAS,0BAA0B,EAAE,KACvD,yBAAyB,CAI1B;IAEF,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAkBvB;CACH"}
@@ -0,0 +1,93 @@
1
+ import { realpathSync, statSync } from "node:fs";
2
+ import { ExecutableIdentity } from "../process/executable.js";
3
+ function readTrustedIdentity(path) {
4
+ const resolvedPath = realpathSync(path);
5
+ const metadata = statSync(resolvedPath);
6
+ return new ExecutableIdentity(resolvedPath, resolvedPath, metadata.dev, metadata.ino, metadata.size, metadata.ctimeMs);
7
+ }
8
+ export class LocalAgentDefinition {
9
+ adapterIdentity;
10
+ adapterPath;
11
+ adapterVersion;
12
+ agentIdentity;
13
+ agentVersion;
14
+ arguments;
15
+ command;
16
+ environment;
17
+ id;
18
+ label;
19
+ constructor(id, label, command, arguments_, environment = {}, adapterVersion = "", agentVersion = "", adapterIdentity = readTrustedIdentity(command), agentIdentity = adapterIdentity) {
20
+ this.adapterIdentity = adapterIdentity;
21
+ this.adapterPath = adapterIdentity.realPath;
22
+ this.adapterVersion = adapterVersion;
23
+ this.agentIdentity = agentIdentity;
24
+ this.agentVersion = agentVersion;
25
+ this.id = id;
26
+ this.label = label;
27
+ this.command = adapterIdentity.realPath;
28
+ this.arguments = Object.freeze([...arguments_]);
29
+ this.environment = Object.freeze({ ...environment });
30
+ }
31
+ }
32
+ export class InstallableAgentDefinition {
33
+ id;
34
+ label;
35
+ requiresLocalApproval;
36
+ constructor(id, label, requiresLocalApproval = true) {
37
+ this.id = id;
38
+ this.label = label;
39
+ this.requiresLocalApproval = requiresLocalApproval;
40
+ }
41
+ }
42
+ export class LocalAgentCatalogSnapshot {
43
+ agents;
44
+ installableAgents;
45
+ constructor(agents, installableAgents) {
46
+ this.agents = Object.freeze([...agents]);
47
+ this.installableAgents = Object.freeze([...installableAgents]);
48
+ }
49
+ }
50
+ export class LocalAgentCatalogError extends Error {
51
+ code = "agent_not_ready";
52
+ constructor() {
53
+ super("The requested local Agent is not ready");
54
+ this.name = "LocalAgentCatalogError";
55
+ }
56
+ }
57
+ export class LocalAgentCatalog {
58
+ #snapshot;
59
+ constructor(agents, installableAgents) {
60
+ this.#snapshot = this.validate(agents, installableAgents);
61
+ }
62
+ find = (agentId) => {
63
+ for (const agent of this.#snapshot.agents) {
64
+ if (agent.id === agentId) {
65
+ return agent;
66
+ }
67
+ }
68
+ throw new LocalAgentCatalogError();
69
+ };
70
+ read = () => this.#snapshot;
71
+ transition = (agents, installableAgents) => {
72
+ const next = this.validate(agents, installableAgents);
73
+ this.#snapshot = next;
74
+ return next;
75
+ };
76
+ validate = (agents, installableAgents) => {
77
+ const identifiers = new Set();
78
+ for (const agent of agents) {
79
+ if (identifiers.has(agent.id)) {
80
+ throw new Error("The local Agent catalog contains duplicate entries");
81
+ }
82
+ identifiers.add(agent.id);
83
+ }
84
+ for (const agent of installableAgents) {
85
+ if (identifiers.has(agent.id)) {
86
+ throw new Error("A local Agent cannot be ready and installable");
87
+ }
88
+ identifiers.add(agent.id);
89
+ }
90
+ return new LocalAgentCatalogSnapshot(agents, installableAgents);
91
+ };
92
+ }
93
+ //# sourceMappingURL=local-agent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local-agent.js","sourceRoot":"","sources":["../../src/agent-catalog/local-agent.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { DaemonConfig } from "../config.ts";
2
+ export declare function publishAgentCatalog(config: DaemonConfig, signal: AbortSignal): Promise<void>;
3
+ //# sourceMappingURL=publish-agent-catalog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"publish-agent-catalog.d.ts","sourceRoot":"","sources":["../../src/agent-catalog/publish-agent-catalog.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAwBjD,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,YAAY,EACpB,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC,IAAI,CAAC,CA2Cf"}