@moxt-ai/mobius 0.0.10 → 0.0.12

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 (119) hide show
  1. package/dist/acp/session-history.d.ts.map +1 -1
  2. package/dist/acp/session-history.js +1 -0
  3. package/dist/acp/session-history.js.map +1 -1
  4. package/dist/acp/session-manager.d.ts +4 -1
  5. package/dist/acp/session-manager.d.ts.map +1 -1
  6. package/dist/acp/session-manager.js +99 -24
  7. package/dist/acp/session-manager.js.map +1 -1
  8. package/dist/agent-catalog/acp-readiness-probe.d.ts +4 -0
  9. package/dist/agent-catalog/acp-readiness-probe.d.ts.map +1 -0
  10. package/dist/agent-catalog/acp-readiness-probe.js +153 -0
  11. package/dist/agent-catalog/acp-readiness-probe.js.map +1 -0
  12. package/dist/agent-catalog/agent-diagnostics.d.ts +1 -1
  13. package/dist/agent-catalog/agent-diagnostics.d.ts.map +1 -1
  14. package/dist/agent-catalog/agent-diagnostics.js +1 -1
  15. package/dist/agent-catalog/agent-diagnostics.js.map +1 -1
  16. package/dist/agent-catalog/agent-discovery-context.d.ts +8 -0
  17. package/dist/agent-catalog/agent-discovery-context.d.ts.map +1 -0
  18. package/dist/agent-catalog/agent-discovery-context.js +2 -0
  19. package/dist/agent-catalog/agent-discovery-context.js.map +1 -0
  20. package/dist/agent-catalog/agent-discovery.d.ts +55 -0
  21. package/dist/agent-catalog/agent-discovery.d.ts.map +1 -0
  22. package/dist/agent-catalog/agent-discovery.js +89 -0
  23. package/dist/agent-catalog/agent-discovery.js.map +1 -0
  24. package/dist/agent-catalog/agent-probe-error.d.ts +5 -0
  25. package/dist/agent-catalog/agent-probe-error.d.ts.map +1 -0
  26. package/dist/agent-catalog/agent-probe-error.js +9 -0
  27. package/dist/agent-catalog/agent-probe-error.js.map +1 -0
  28. package/dist/agent-catalog/agent-specification.d.ts +45 -0
  29. package/dist/agent-catalog/agent-specification.d.ts.map +1 -0
  30. package/dist/agent-catalog/agent-specification.js +59 -0
  31. package/dist/agent-catalog/agent-specification.js.map +1 -0
  32. package/dist/agent-catalog/agents/claude-code-agent.d.ts +14 -0
  33. package/dist/agent-catalog/agents/claude-code-agent.d.ts.map +1 -0
  34. package/dist/agent-catalog/agents/claude-code-agent.js +30 -0
  35. package/dist/agent-catalog/agents/claude-code-agent.js.map +1 -0
  36. package/dist/agent-catalog/agents/codex-agent.d.ts +14 -0
  37. package/dist/agent-catalog/agents/codex-agent.d.ts.map +1 -0
  38. package/dist/agent-catalog/agents/codex-agent.js +23 -0
  39. package/dist/agent-catalog/agents/codex-agent.js.map +1 -0
  40. package/dist/agent-catalog/agents/deepseek-harness-agent.d.ts +16 -0
  41. package/dist/agent-catalog/agents/deepseek-harness-agent.d.ts.map +1 -0
  42. package/dist/agent-catalog/agents/deepseek-harness-agent.js +94 -0
  43. package/dist/agent-catalog/agents/deepseek-harness-agent.js.map +1 -0
  44. package/dist/agent-catalog/agents/opencode-agent.d.ts +17 -0
  45. package/dist/agent-catalog/agents/opencode-agent.d.ts.map +1 -0
  46. package/dist/agent-catalog/agents/opencode-agent.js +36 -0
  47. package/dist/agent-catalog/agents/opencode-agent.js.map +1 -0
  48. package/dist/agent-catalog/agents/pi-agent.d.ts +21 -0
  49. package/dist/agent-catalog/agents/pi-agent.d.ts.map +1 -0
  50. package/dist/agent-catalog/agents/pi-agent.js +69 -0
  51. package/dist/agent-catalog/agents/pi-agent.js.map +1 -0
  52. package/dist/agent-catalog/agents/supported-agent-specifications.d.ts +3 -0
  53. package/dist/agent-catalog/agents/supported-agent-specifications.d.ts.map +1 -0
  54. package/dist/agent-catalog/agents/supported-agent-specifications.js +15 -0
  55. package/dist/agent-catalog/agents/supported-agent-specifications.js.map +1 -0
  56. package/dist/agent-catalog/discover-agent.d.ts +5 -0
  57. package/dist/agent-catalog/discover-agent.d.ts.map +1 -0
  58. package/dist/agent-catalog/discover-agent.js +100 -0
  59. package/dist/agent-catalog/discover-agent.js.map +1 -0
  60. package/dist/agent-catalog/discover-local-agents.d.ts +12 -101
  61. package/dist/agent-catalog/discover-local-agents.d.ts.map +1 -1
  62. package/dist/agent-catalog/discover-local-agents.js +11 -564
  63. package/dist/agent-catalog/discover-local-agents.js.map +1 -1
  64. package/dist/agent-catalog/executable-discovery.d.ts +16 -0
  65. package/dist/agent-catalog/executable-discovery.d.ts.map +1 -0
  66. package/dist/agent-catalog/executable-discovery.js +105 -0
  67. package/dist/agent-catalog/executable-discovery.js.map +1 -0
  68. package/dist/agent-installation/agent-installation-manager.d.ts +1 -1
  69. package/dist/agent-installation/agent-installation-manager.d.ts.map +1 -1
  70. package/dist/agent-installation/automatic-adapter-provisioner.d.ts +2 -1
  71. package/dist/agent-installation/automatic-adapter-provisioner.d.ts.map +1 -1
  72. package/dist/agent-installation/automatic-adapter-provisioner.js +11 -2
  73. package/dist/agent-installation/automatic-adapter-provisioner.js.map +1 -1
  74. package/dist/agent-installation/deepseek-managed-package.d.ts +9 -0
  75. package/dist/agent-installation/deepseek-managed-package.d.ts.map +1 -0
  76. package/dist/agent-installation/deepseek-managed-package.js +10 -0
  77. package/dist/agent-installation/deepseek-managed-package.js.map +1 -0
  78. package/dist/agent-installation/fixed-agent-install-recipes.d.ts +18 -0
  79. package/dist/agent-installation/fixed-agent-install-recipes.d.ts.map +1 -1
  80. package/dist/agent-installation/fixed-agent-install-recipes.js +97 -0
  81. package/dist/agent-installation/fixed-agent-install-recipes.js.map +1 -1
  82. package/dist/agent-installation/fixed-installation-executor.d.ts +1 -1
  83. package/dist/agent-installation/fixed-installation-executor.d.ts.map +1 -1
  84. package/dist/agent-installation/fixed-installation-executor.js +17 -3
  85. package/dist/agent-installation/fixed-installation-executor.js.map +1 -1
  86. package/dist/agent-installation/managed-adapter-installer.d.ts +4 -4
  87. package/dist/agent-installation/managed-adapter-installer.d.ts.map +1 -1
  88. package/dist/agent-installation/managed-adapter-installer.js.map +1 -1
  89. package/dist/agent-installation/managed-agent-archive.d.ts +40 -0
  90. package/dist/agent-installation/managed-agent-archive.d.ts.map +1 -0
  91. package/dist/agent-installation/managed-agent-archive.js +274 -0
  92. package/dist/agent-installation/managed-agent-archive.js.map +1 -0
  93. package/dist/agent-installation/managed-npm-package.d.ts +3 -0
  94. package/dist/agent-installation/managed-npm-package.d.ts.map +1 -1
  95. package/dist/agent-installation/managed-npm-package.js +55 -24
  96. package/dist/agent-installation/managed-npm-package.js.map +1 -1
  97. package/dist/agent-installation/opencode-managed-release.d.ts +4 -0
  98. package/dist/agent-installation/opencode-managed-release.d.ts.map +1 -0
  99. package/dist/agent-installation/opencode-managed-release.js +25 -0
  100. package/dist/agent-installation/opencode-managed-release.js.map +1 -0
  101. package/dist/cli.js +2353 -1314
  102. package/dist/cli.js.map +4 -4
  103. package/dist/config.js +1 -1
  104. package/dist/config.js.map +1 -1
  105. package/dist/index.js +1802 -761
  106. package/dist/index.js.map +4 -4
  107. package/dist/native-sessions/codex-history.d.ts.map +1 -1
  108. package/dist/native-sessions/codex-history.js +1 -0
  109. package/dist/native-sessions/codex-history.js.map +1 -1
  110. package/dist/pairing/pair-local-machine.js +2 -2
  111. package/dist/pairing/pair-local-machine.js.map +1 -1
  112. package/dist/process/executable.d.ts +6 -1
  113. package/dist/process/executable.d.ts.map +1 -1
  114. package/dist/process/executable.js +150 -7
  115. package/dist/process/executable.js.map +1 -1
  116. package/dist/run-daemon.d.ts.map +1 -1
  117. package/dist/run-daemon.js +14 -2
  118. package/dist/run-daemon.js.map +1 -1
  119. package/package.json +1 -1
@@ -1,571 +1,18 @@
1
- import { spawn } from "node:child_process";
2
- import { isAbsolute, join } from "node:path";
3
- import { methods, ndJsonStream, PROTOCOL_VERSION, RequestError, } from "@agentclientprotocol/sdk";
4
- import { createAcpClient, } from "../acp/create-client.js";
5
1
  import { readGrantedAgents } from "../agent-installation/installation-grants.js";
6
- import { validateManagedAdapter } from "../agent-installation/managed-adapter-installer.js";
7
- import { ManagedNpmPackageDefinition, validateManagedNpmPackage, } from "../agent-installation/managed-npm-package.js";
8
- import { PI_ACP_PACKAGE, PI_AGENT_PACKAGE, } from "../agent-installation/pi-managed-packages.js";
9
- import { findExecutableOnPath, ProcessExecutionError, resolveExecutablePath, runBoundedProcess, stopProcessTree, } from "../process/executable.js";
10
2
  import { readStateDirectory } from "../storage/state-directory.js";
11
- import { InstallableAgentDefinition, LocalAgentDefinition, } from "./local-agent.js";
12
- const VERSION_PROBE_TIMEOUT_MILLISECONDS = 3_000;
13
- const ACP_PROBE_TIMEOUT_MILLISECONDS = 5_000;
14
- const ACP_OUTPUT_LIMIT_BYTES = 1024 * 1024;
15
- const DEFAULT_PROMPT_TIMEOUT_MILLISECONDS = 30 * 60 * 1_000;
16
- const PI_ACP_PROBE_TIMEOUT_MILLISECONDS = 30_000;
17
- const PI_PROMPT_TIMEOUT_MILLISECONDS = 5 * 60 * 1_000;
18
- export class LocalAgentSpecification {
19
- acpProbeTimeoutMilliseconds = ACP_PROBE_TIMEOUT_MILLISECONDS;
20
- authenticationCommand = () => "";
21
- adapterVersionArguments = ["--version"];
22
- agentVersionArguments = ["--version"];
23
- promptTimeoutMilliseconds = DEFAULT_PROMPT_TIMEOUT_MILLISECONDS;
24
- get adapterExecutable() {
25
- return this.adapterPackageDefinition.executableName;
26
- }
27
- get adapterPackage() {
28
- return this.adapterPackageDefinition.packageName;
29
- }
30
- get adapterVersion() {
31
- return this.adapterPackageDefinition.version;
32
- }
33
- resolveManagedAgent = async (stateDirectory, platform) => {
34
- const executable = await resolveExecutablePath(join(stateDirectory, ...this.managedAgentExecutablePath), platform);
35
- if (executable === null) {
36
- throw new Error("The managed Agent executable is unavailable");
37
- }
38
- return executable;
39
- };
40
- recoveryCommand = () => `npm install -g --omit=optional ${this.adapterPackage}@${this.adapterVersion}`;
41
- supportsInstallation = (platform, architecture) => (platform === "darwin" || platform === "linux") &&
42
- (architecture === "arm64" || architecture === "x64");
43
- verifyAcp = (_connection, _initialized, _defaultWorkspace, _signal) => Promise.resolve();
44
- }
45
- class BridgedAcpAgentDefinition extends LocalAgentSpecification {
46
- }
47
- export class CodexAgentSpecification extends BridgedAcpAgentDefinition {
48
- adapterEnvironmentVariable = "CODEX_PATH";
49
- adapterOverrideVariable = "MOBIUS_CODEX_ACP_PATH";
50
- adapterPackageDefinition = new ManagedNpmPackageDefinition("@agentclientprotocol/codex-acp", "1.8.0", "codex-acp");
51
- agentExecutable = "codex";
52
- agentOverrideVariable = "MOBIUS_CODEX_PATH";
53
- id = "codex";
54
- label = "Codex";
55
- managedAdapterExecutablePath = [
56
- "adapters",
57
- "codex",
58
- "1.8.0",
59
- "node_modules",
60
- "@agentclientprotocol",
61
- "codex-acp",
62
- "dist",
63
- "index.js",
64
- ];
65
- managedAgentExecutablePath = ["agents", "codex", "bin", "codex"];
66
- }
67
- class ClaudeCodeAgentSpecification extends BridgedAcpAgentDefinition {
68
- adapterEnvironmentVariable = "CLAUDE_CODE_EXECUTABLE";
69
- adapterOverrideVariable = "MOBIUS_CLAUDE_ACP_PATH";
70
- adapterPackageDefinition = new ManagedNpmPackageDefinition("@agentclientprotocol/claude-agent-acp", "0.73.0", "claude-agent-acp");
71
- agentExecutable = "claude";
72
- agentOverrideVariable = "MOBIUS_CLAUDE_PATH";
73
- id = "claude";
74
- label = "Claude Code";
75
- managedAdapterExecutablePath = [
76
- "adapters",
77
- "claude",
78
- "0.73.0",
79
- "node_modules",
80
- "@agentclientprotocol",
81
- "claude-agent-acp",
82
- "dist",
83
- "index.js",
84
- ];
85
- managedAgentExecutablePath = [
86
- "agents",
87
- "claude",
88
- "home",
89
- ".local",
90
- "bin",
91
- "claude",
92
- ];
93
- }
94
- export class PiAgentSpecification extends BridgedAcpAgentDefinition {
95
- acpProbeTimeoutMilliseconds = PI_ACP_PROBE_TIMEOUT_MILLISECONDS;
96
- adapterEnvironmentVariable = "PI_ACP_PI_COMMAND";
97
- adapterOverrideVariable = "MOBIUS_PI_ACP_PATH";
98
- adapterPackageDefinition = PI_ACP_PACKAGE;
99
- adapterVersionArguments = [];
100
- authenticationCommand = () => "pi-acp --terminal-login";
101
- agentExecutable = "pi";
102
- agentOverrideVariable = "MOBIUS_PI_PATH";
103
- id = "pi";
104
- label = "Pi";
105
- managedAdapterExecutablePath = [
106
- "adapters",
107
- "pi",
108
- PI_ACP_PACKAGE.version,
109
- "node_modules",
110
- "pi-acp",
111
- "dist",
112
- "index.js",
113
- ];
114
- managedAgentExecutablePath = [
115
- "agents",
116
- "pi",
117
- PI_AGENT_PACKAGE.version,
118
- "node_modules",
119
- "@earendil-works",
120
- "pi-coding-agent",
121
- "dist",
122
- "bundle",
123
- "cli.js",
124
- ];
125
- promptTimeoutMilliseconds = PI_PROMPT_TIMEOUT_MILLISECONDS;
126
- resolveManagedAgent = async (stateDirectory, _platform) => await validateManagedNpmPackage(join(stateDirectory, "agents", this.id, PI_AGENT_PACKAGE.version), PI_AGENT_PACKAGE);
127
- verifyAcp = async (connection, initialized, defaultWorkspace, signal) => {
128
- const capabilities = initialized.agentCapabilities ?? {};
129
- if (capabilities.loadSession !== true) {
130
- throw new AgentProbeError("acp_incompatible", "Pi ACP adapter does not support session recovery");
131
- }
132
- const session = await connection.agent.request(methods.agent.session.new, {
133
- additionalDirectories: [],
134
- cwd: defaultWorkspace,
135
- mcpServers: [],
136
- }, { cancellationSignal: signal });
137
- if (session.sessionId.length === 0) {
138
- throw new AgentProbeError("acp_incompatible", "Pi ACP adapter returned an invalid session");
139
- }
140
- const prompt = await connection.agent.request(methods.agent.session.prompt, {
141
- prompt: [{ text: "/session", type: "text" }],
142
- sessionId: session.sessionId,
143
- }, { cancellationSignal: signal });
144
- if (prompt.stopReason !== "end_turn") {
145
- throw new AgentProbeError("acp_incompatible", "Pi ACP adapter did not complete its conformance prompt");
146
- }
147
- };
148
- }
149
- export function supportedLocalAgentSpecifications() {
150
- return Object.freeze([
151
- new CodexAgentSpecification(),
152
- new ClaudeCodeAgentSpecification(),
153
- new PiAgentSpecification(),
154
- ]);
155
- }
156
- export class AgentDiscovery {
157
- specification;
158
- constructor(specification) {
159
- this.specification = specification;
160
- }
161
- }
162
- export class AvailableAgent extends AgentDiscovery {
163
- agent;
164
- status = "ready";
165
- constructor(specification, agent) {
166
- super(specification);
167
- this.agent = agent;
168
- }
169
- }
170
- export class UnavailableAgent extends AgentDiscovery {
171
- }
172
- export class MissingAdapter extends UnavailableAgent {
173
- code = "adapter_not_found";
174
- message = "ACP adapter not found";
175
- status = "missing_adapter";
176
- constructor(specification) {
177
- super(specification);
178
- }
179
- }
180
- class MissingAgent extends UnavailableAgent {
181
- code = "agent_not_found";
182
- message = "Agent executable not found";
183
- status = "missing_agent";
184
- constructor(specification) {
185
- super(specification);
186
- }
187
- }
188
- class ProbeFailed extends UnavailableAgent {
189
- code;
190
- message;
191
- status = "probe_failed";
192
- constructor(specification, code, message) {
193
- super(specification);
194
- this.code = code;
195
- this.message = message;
196
- }
197
- }
198
- class IncompatibleAdapter extends UnavailableAgent {
199
- code = "acp_incompatible";
200
- message = "ACP adapter is incompatible";
201
- status = "incompatible_adapter";
202
- constructor(specification) {
203
- super(specification);
204
- }
205
- }
206
- class AuthenticationRequiredAgent extends UnavailableAgent {
207
- code = "authentication_required";
208
- message = "Agent authentication is required";
209
- status = "authentication_required";
210
- constructor(specification) {
211
- super(specification);
212
- }
213
- }
214
- export class LocalAgentInventory {
215
- available;
216
- discoveries;
217
- installable;
218
- unavailable;
219
- constructor(discoveries, grantedAgents = new Set(), platform = process.platform, architecture = process.arch) {
220
- const available = [];
221
- const unavailable = [];
222
- for (const discovery of discoveries) {
223
- if (discovery instanceof AvailableAgent) {
224
- available.push(discovery);
225
- }
226
- else if (discovery instanceof UnavailableAgent) {
227
- unavailable.push(discovery);
228
- }
229
- else {
230
- throw new Error("Unsupported Agent discovery outcome");
231
- }
232
- }
233
- this.available = Object.freeze(available);
234
- this.discoveries = Object.freeze([...discoveries]);
235
- this.installable = Object.freeze(unavailable
236
- .filter((discovery) => !(discovery instanceof AuthenticationRequiredAgent) &&
237
- discovery.specification.supportsInstallation(platform, architecture))
238
- .map((discovery) => new InstallableAgentDefinition(discovery.specification.id, discovery.specification.label, !grantedAgents.has(discovery.specification.id))));
239
- this.unavailable = Object.freeze(unavailable);
240
- }
241
- readyAgents = () => this.available.map((discovery) => discovery.agent);
242
- }
243
- class AgentProbeError extends Error {
244
- code;
245
- constructor(code, message, options = {}) {
246
- super(message, options);
247
- this.code = code;
248
- this.name = "AgentProbeError";
249
- }
250
- }
251
- class DiscoveryAcpHandler {
252
- onElicitation = (_request, _signal) => Promise.reject(new Error("ACP probe does not accept elicitations"));
253
- onElicitationComplete = (_notification) => Promise.resolve();
254
- onPermission = (_request, _signal) => Promise.reject(new Error("ACP probe does not grant permissions"));
255
- onUpdate = (_notification) => Promise.resolve();
256
- }
257
- async function resolveManagedExecutable(specification, options) {
258
- try {
259
- return await specification.resolveManagedAgent(readStateDirectory(options.environment), options.platform ?? process.platform);
260
- }
261
- catch {
262
- return null;
263
- }
264
- }
265
- async function resolveManagedAdapterExecutable(specification, options) {
266
- let managed;
267
- try {
268
- managed = await validateManagedAdapter(join(readStateDirectory(options.environment), "adapters", specification.id, specification.adapterVersion), specification);
269
- }
270
- catch {
271
- return null;
272
- }
273
- return managed;
274
- }
275
- async function resolveSpecificationExecutables(executableName, overrideVariable, resolveManaged, options) {
276
- const override = options.environment[overrideVariable];
277
- if (override !== undefined) {
278
- if (override.length === 0 || !isAbsolute(override)) {
279
- return [];
280
- }
281
- const executable = await resolveExecutablePath(override, options.platform);
282
- return executable === null ? [] : [executable];
283
- }
284
- const external = await findExecutableOnPath(executableName, options.environment, options.platform);
285
- const managed = await resolveManaged();
286
- if (external === null) {
287
- return managed === null ? [] : [managed];
288
- }
289
- if (managed === null || managed.path === external.path) {
290
- return [external];
291
- }
292
- return [external, managed];
293
- }
294
- async function resolveAgentExecutables(specification, options) {
295
- return await resolveSpecificationExecutables(specification.agentExecutable, specification.agentOverrideVariable, async () => await resolveManagedExecutable(specification, options), options);
296
- }
297
- async function resolveAdapterExecutables(specification, options) {
298
- return await resolveSpecificationExecutables(specification.adapterExecutable, specification.adapterOverrideVariable, async () => await resolveManagedAdapterExecutable(specification, options), options);
299
- }
300
- export async function resolveAgentExecutable(specification, options) {
301
- const executables = await resolveAgentExecutables(specification, options);
302
- return executables[0] ?? null;
303
- }
304
- export async function resolveAdapterExecutable(specification, options) {
305
- const executables = await resolveAdapterExecutables(specification, options);
306
- return executables[0] ?? null;
307
- }
308
- function normalizedVersion(output) {
309
- return output.trim().split(/\r?\n/, 1)[0]?.trim().slice(0, 128) ?? "";
310
- }
311
- async function probeVersion(executable, arguments_, environment, defaultWorkspace, signal) {
312
- const result = await runBoundedProcess({
313
- arguments: arguments_,
314
- command: executable.path,
315
- cwd: defaultWorkspace,
316
- environment,
317
- signal,
318
- timeoutMilliseconds: VERSION_PROBE_TIMEOUT_MILLISECONDS,
319
- });
320
- const version = normalizedVersion(result.stdout || result.stderr);
321
- if (version.length === 0) {
322
- throw new ProcessExecutionError("process_exit_failed", "The executable did not report a version");
323
- }
324
- return version;
325
- }
326
- export class VerifiedAgentExecutable {
327
- executable;
328
- version;
329
- constructor(executable, version) {
330
- this.executable = executable;
331
- this.version = version;
332
- }
333
- }
334
- export async function findVerifiedAgentExecutable(specification, options) {
335
- const executables = await resolveAgentExecutables(specification, options);
336
- for (const executable of executables) {
337
- try {
338
- const version = await probeVersion(executable, specification.agentVersionArguments, options.environment, options.defaultWorkspace, options.signal);
339
- return new VerifiedAgentExecutable(executable, version);
340
- }
341
- catch {
342
- if (options.signal.aborted) {
343
- options.signal.throwIfAborted();
344
- }
345
- }
346
- }
347
- return null;
348
- }
349
- function readableAcpStream(input) {
350
- let byteLength = 0;
351
- let open = true;
352
- return new ReadableStream({
353
- start(controller) {
354
- input.on("data", (chunk) => {
355
- if (!open) {
356
- return;
357
- }
358
- if (!(chunk instanceof Uint8Array)) {
359
- open = false;
360
- controller.error(new Error("ACP adapter produced invalid output"));
361
- return;
362
- }
363
- byteLength += chunk.byteLength;
364
- if (byteLength > ACP_OUTPUT_LIMIT_BYTES) {
365
- open = false;
366
- controller.error(new Error("ACP adapter output limit exceeded"));
367
- return;
368
- }
369
- controller.enqueue(new Uint8Array(chunk));
370
- });
371
- input.once("end", () => {
372
- if (open) {
373
- open = false;
374
- controller.close();
375
- }
376
- });
377
- input.once("error", (error) => {
378
- if (open) {
379
- open = false;
380
- controller.error(error);
381
- }
382
- });
383
- },
384
- cancel() {
385
- open = false;
386
- },
387
- });
388
- }
389
- function writableAcpStream(output) {
390
- return new WritableStream({
391
- write(chunk) {
392
- return new Promise((resolveWrite, rejectWrite) => {
393
- output.write(chunk, (error) => {
394
- if (error) {
395
- rejectWrite(error);
396
- return;
397
- }
398
- resolveWrite();
399
- });
400
- });
401
- },
402
- });
403
- }
404
- async function probeAcp(specification, agent, environment, defaultWorkspace, signal) {
405
- signal.throwIfAborted();
406
- const controller = new AbortController();
407
- let timedOut = false;
408
- const timeout = setTimeout(() => {
409
- timedOut = true;
410
- controller.abort(new Error("ACP probe timed out"));
411
- }, specification.acpProbeTimeoutMilliseconds);
412
- const abort = () => controller.abort(signal.reason);
413
- signal.addEventListener("abort", abort, { once: true });
414
- if (signal.aborted) {
415
- abort();
416
- }
417
- const child = spawn(agent.adapterPath, [...agent.arguments], {
418
- cwd: defaultWorkspace,
419
- detached: process.platform !== "win32",
420
- env: { ...environment, ...agent.environment },
421
- shell: false,
422
- stdio: ["pipe", "pipe", "pipe"],
423
- });
424
- const processExit = new Promise((_resolve, reject) => {
425
- const rejectExit = () => reject(new Error("ACP adapter exited during initialization"));
426
- child.once("error", reject);
427
- child.once("exit", rejectExit);
428
- if (child.exitCode !== null || child.signalCode !== null)
429
- rejectExit();
430
- });
431
- const stdin = child.stdin;
432
- const stdout = child.stdout;
433
- const stderr = child.stderr;
434
- if (stdin === null || stdout === null || stderr === null) {
435
- await stopProcessTree(child);
436
- throw new AgentProbeError("acp_incompatible", "ACP adapter streams are unavailable");
437
- }
438
- let stderrBytes = 0;
439
- const consumeStderr = (chunk) => {
440
- stderrBytes += chunk.byteLength;
441
- if (stderrBytes > ACP_OUTPUT_LIMIT_BYTES) {
442
- controller.abort(new Error("ACP adapter output limit exceeded"));
443
- }
444
- };
445
- stderr.on("data", consumeStderr);
446
- const connection = createAcpClient(new DiscoveryAcpHandler()).connect(ndJsonStream(writableAcpStream(stdin), readableAcpStream(stdout)));
447
- try {
448
- const initialized = await Promise.race([
449
- connection.agent.request(methods.agent.initialize, {
450
- clientCapabilities: {},
451
- clientInfo: { name: "mobius", version: "0.0.3" },
452
- protocolVersion: PROTOCOL_VERSION,
453
- }, { cancellationSignal: controller.signal }),
454
- processExit,
455
- ]);
456
- if (initialized.protocolVersion !== PROTOCOL_VERSION) {
457
- throw new AgentProbeError("acp_incompatible", "ACP adapter selected an unsupported protocol version");
458
- }
459
- await specification.verifyAcp(connection, initialized, defaultWorkspace, controller.signal);
460
- return normalizedVersion(initialized.agentInfo?.version ?? "");
461
- }
462
- catch (error) {
463
- if (signal.aborted) {
464
- signal.throwIfAborted();
465
- }
466
- if (timedOut) {
467
- throw new AgentProbeError("adapter_probe_timeout", "ACP adapter probe timed out", { cause: error });
468
- }
469
- if (error instanceof AgentProbeError) {
470
- throw error;
471
- }
472
- if (error instanceof RequestError &&
473
- error.code === -32_000 &&
474
- specification.authenticationCommand().length > 0) {
475
- throw new AgentProbeError("authentication_required", "Agent authentication is required", { cause: error });
476
- }
477
- throw new AgentProbeError("acp_incompatible", "ACP adapter initialization failed", { cause: error });
478
- }
479
- finally {
480
- clearTimeout(timeout);
481
- signal.removeEventListener("abort", abort);
482
- connection.close();
483
- stdin.end();
484
- stderr.removeListener("data", consumeStderr);
485
- await stopProcessTree(child);
486
- }
487
- }
488
- function probeFailure(specification, executableKind, error) {
489
- if (error instanceof AgentProbeError) {
490
- if (error.code === "authentication_required") {
491
- return new AuthenticationRequiredAgent(specification);
492
- }
493
- return error.code === "acp_incompatible"
494
- ? new IncompatibleAdapter(specification)
495
- : new ProbeFailed(specification, error.code, error.message);
496
- }
497
- if (error instanceof ProcessExecutionError) {
498
- const code = error.code === "process_timeout"
499
- ? `${executableKind}_probe_timeout`
500
- : `${executableKind}_probe_failed`;
501
- return new ProbeFailed(specification, code, `${executableKind === "agent" ? "Agent" : "Adapter"} version probe failed`);
502
- }
503
- return new ProbeFailed(specification, `${executableKind}_probe_failed`, `${executableKind === "agent" ? "Agent" : "Adapter"} probe failed`);
504
- }
505
- async function discoverSpecification(specification, options) {
506
- options.signal.throwIfAborted();
507
- const [adapters, agents] = await Promise.all([
508
- resolveAdapterExecutables(specification, options),
509
- resolveAgentExecutables(specification, options),
510
- ]);
511
- if (adapters.length === 0) {
512
- return new MissingAdapter(specification);
513
- }
514
- if (agents.length === 0) {
515
- return new MissingAgent(specification);
516
- }
517
- let lastFailure = null;
518
- for (const agent of agents) {
519
- let agentVersion = "";
520
- try {
521
- agentVersion = await probeVersion(agent, specification.agentVersionArguments, options.environment, options.defaultWorkspace, options.signal);
522
- }
523
- catch (error) {
524
- if (options.signal.aborted) {
525
- options.signal.throwIfAborted();
526
- }
527
- lastFailure = probeFailure(specification, "agent", error);
528
- continue;
529
- }
530
- for (const adapter of adapters) {
531
- let adapterVersion = "";
532
- try {
533
- if (specification.adapterVersionArguments.length > 0) {
534
- adapterVersion = await probeVersion(adapter, specification.adapterVersionArguments, {
535
- ...options.environment,
536
- [specification.adapterEnvironmentVariable]: agent.path,
537
- }, options.defaultWorkspace, options.signal);
538
- }
539
- }
540
- catch (error) {
541
- if (options.signal.aborted) {
542
- options.signal.throwIfAborted();
543
- }
544
- lastFailure = probeFailure(specification, "adapter", error);
545
- continue;
546
- }
547
- const definition = new LocalAgentDefinition(specification.id, specification.label, adapter.path, [], { [specification.adapterEnvironmentVariable]: agent.path }, adapterVersion, agentVersion, adapter.identity, agent.identity, specification.promptTimeoutMilliseconds);
548
- try {
549
- const acpVersion = await probeAcp(specification, definition, options.environment, options.defaultWorkspace, options.signal);
550
- const verifiedAdapterVersion = adapterVersion.length > 0 ? adapterVersion : acpVersion;
551
- if (verifiedAdapterVersion.length === 0) {
552
- throw new AgentProbeError("acp_incompatible", "ACP adapter did not report a version");
553
- }
554
- return new AvailableAgent(specification, new LocalAgentDefinition(specification.id, specification.label, adapter.path, [], { [specification.adapterEnvironmentVariable]: agent.path }, verifiedAdapterVersion, agentVersion, adapter.identity, agent.identity, specification.promptTimeoutMilliseconds));
555
- }
556
- catch (error) {
557
- if (options.signal.aborted) {
558
- options.signal.throwIfAborted();
559
- }
560
- lastFailure = probeFailure(specification, "adapter", error);
561
- }
562
- }
563
- }
564
- return lastFailure ?? new IncompatibleAdapter(specification);
565
- }
3
+ import { LocalAgentInventory } from "./agent-discovery.js";
4
+ import { supportedLocalAgentSpecifications } from "./agents/supported-agent-specifications.js";
5
+ import { discoverAgent } from "./discover-agent.js";
6
+ export { AvailableAgent, LocalAgentInventory, } from "./agent-discovery.js";
7
+ export { CodexAgentSpecification } from "./agents/codex-agent.js";
8
+ export { DeepSeekHarnessAgentSpecification } from "./agents/deepseek-harness-agent.js";
9
+ export { OpenCodeAgentSpecification } from "./agents/opencode-agent.js";
10
+ export { PiAgentSpecification } from "./agents/pi-agent.js";
11
+ export { supportedLocalAgentSpecifications } from "./agents/supported-agent-specifications.js";
12
+ export { resolveAgentExecutable } from "./executable-discovery.js";
566
13
  export async function discoverLocalAgentInventory(options) {
567
14
  const specifications = options.specifications ?? supportedLocalAgentSpecifications();
568
- const discoveries = await Promise.all(specifications.map(async (specification) => await discoverSpecification(specification, options)));
15
+ const discoveries = await Promise.all(specifications.map(async (specification) => await discoverAgent(specification, options)));
569
16
  let grantedAgents = new Set();
570
17
  try {
571
18
  grantedAgents = await readGrantedAgents(readStateDirectory(options.environment));
@@ -1 +1 @@
1
- {"version":3,"file":"discover-local-agents.js","sourceRoot":"","sources":["../../src/agent-catalog/discover-local-agents.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"discover-local-agents.js","sourceRoot":"","sources":["../../src/agent-catalog/discover-local-agents.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,8CAA8C,CAAC;AACjF,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAG3D,OAAO,EAAE,iCAAiC,EAAE,MAAM,4CAA4C,CAAC;AAC/F,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD,OAAO,EACL,cAAc,EACd,mBAAmB,GACpB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,EAAE,iCAAiC,EAAE,MAAM,oCAAoC,CAAC;AACvF,OAAO,EAAE,0BAA0B,EAAE,MAAM,4BAA4B,CAAC;AACxE,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,iCAAiC,EAAE,MAAM,4CAA4C,CAAC;AAC/F,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AAOnE,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAC/C,OAA2C;IAE3C,MAAM,cAAc,GAClB,OAAO,CAAC,cAAc,IAAI,iCAAiC,EAAE,CAAC;IAChE,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,GAAG,CACnC,cAAc,CAAC,GAAG,CAChB,KAAK,EAAE,aAAa,EAAE,EAAE,CAAC,MAAM,aAAa,CAAC,aAAa,EAAE,OAAO,CAAC,CACrE,CACF,CAAC;IACF,IAAI,aAAa,GAAwB,IAAI,GAAG,EAAU,CAAC;IAC3D,IAAI,CAAC;QACH,aAAa,GAAG,MAAM,iBAAiB,CACrC,kBAAkB,CAAC,OAAO,CAAC,WAAW,CAAC,CACxC,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,kFAAkF;IACpF,CAAC;IACD,OAAO,IAAI,mBAAmB,CAC5B,WAAW,EACX,aAAa,EACb,OAAO,CAAC,QAAQ,EAChB,OAAO,CAAC,YAAY,CACrB,CAAC;AACJ,CAAC"}
@@ -0,0 +1,16 @@
1
+ import { type ResolvedExecutable } from "../process/executable.ts";
2
+ import type { LocalAgentDiscoveryContext } from "./agent-discovery-context.ts";
3
+ import { type LocalAgentSpecification } from "./agent-specification.ts";
4
+ export declare function resolveAgentExecutables(specification: LocalAgentSpecification, context: LocalAgentDiscoveryContext): Promise<readonly ResolvedExecutable[]>;
5
+ export declare function resolveAdapterExecutables(specification: LocalAgentSpecification, context: LocalAgentDiscoveryContext): Promise<readonly ResolvedExecutable[]>;
6
+ export declare function resolveAgentExecutable(specification: LocalAgentSpecification, context: LocalAgentDiscoveryContext): Promise<ResolvedExecutable | null>;
7
+ export declare function resolveAdapterExecutable(specification: LocalAgentSpecification, context: LocalAgentDiscoveryContext): Promise<ResolvedExecutable | null>;
8
+ export declare function normalizedVersion(output: string): string;
9
+ export declare function probeVersion(executable: ResolvedExecutable, arguments_: readonly string[], environment: Readonly<NodeJS.ProcessEnv>, defaultWorkspace: string, signal: AbortSignal, timeoutMilliseconds: number): Promise<string>;
10
+ export declare class VerifiedAgentExecutable {
11
+ readonly executable: ResolvedExecutable;
12
+ readonly version: string;
13
+ constructor(executable: ResolvedExecutable, version: string);
14
+ }
15
+ export declare function findVerifiedAgentExecutable(specification: LocalAgentSpecification, context: LocalAgentDiscoveryContext): Promise<VerifiedAgentExecutable | null>;
16
+ //# sourceMappingURL=executable-discovery.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"executable-discovery.d.ts","sourceRoot":"","sources":["../../src/agent-catalog/executable-discovery.ts"],"names":[],"mappings":"AAGA,OAAO,EAGL,KAAK,kBAAkB,EAGxB,MAAM,0BAA0B,CAAC;AAElC,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAC/E,OAAO,EAGL,KAAK,uBAAuB,EAC7B,MAAM,0BAA0B,CAAC;AAoElC,wBAAsB,uBAAuB,CAC3C,aAAa,EAAE,uBAAuB,EACtC,OAAO,EAAE,0BAA0B,GAClC,OAAO,CAAC,SAAS,kBAAkB,EAAE,CAAC,CAOxC;AAED,wBAAsB,yBAAyB,CAC7C,aAAa,EAAE,uBAAuB,EACtC,OAAO,EAAE,0BAA0B,GAClC,OAAO,CAAC,SAAS,kBAAkB,EAAE,CAAC,CAaxC;AAED,wBAAsB,sBAAsB,CAC1C,aAAa,EAAE,uBAAuB,EACtC,OAAO,EAAE,0BAA0B,GAClC,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAGpC;AAED,wBAAsB,wBAAwB,CAC5C,aAAa,EAAE,uBAAuB,EACtC,OAAO,EAAE,0BAA0B,GAClC,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAGpC;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAExD;AAED,wBAAsB,YAAY,CAChC,UAAU,EAAE,kBAAkB,EAC9B,UAAU,EAAE,SAAS,MAAM,EAAE,EAC7B,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,EACxC,gBAAgB,EAAE,MAAM,EACxB,MAAM,EAAE,WAAW,EACnB,mBAAmB,EAAE,MAAM,GAC1B,OAAO,CAAC,MAAM,CAAC,CAiBjB;AAED,qBAAa,uBAAuB;IAClC,QAAQ,CAAC,UAAU,EAAE,kBAAkB,CAAC;IACxC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAEzB,YAAY,UAAU,EAAE,kBAAkB,EAAE,OAAO,EAAE,MAAM,EAG1D;CACF;AAED,wBAAsB,2BAA2B,CAC/C,aAAa,EAAE,uBAAuB,EACtC,OAAO,EAAE,0BAA0B,GAClC,OAAO,CAAC,uBAAuB,GAAG,IAAI,CAAC,CAoBzC"}