@jini-ai/agent-runtime 0.4.5 → 0.4.7

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 (68) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/dist/acp-model-probe.d.ts +14 -3
  3. package/dist/acp-model-probe.js +11 -5
  4. package/dist/agent-protocol/pi-rpc/session.d.ts +2 -0
  5. package/dist/agent-protocol/pi-rpc/session.js +4 -5
  6. package/dist/claude-code-models.js +1 -1
  7. package/dist/defs/aider.js +1 -1
  8. package/dist/defs/amp.js +1 -1
  9. package/dist/defs/amr.js +1 -1
  10. package/dist/defs/antigravity.js +1 -1
  11. package/dist/defs/auggie.d.ts +3 -1
  12. package/dist/defs/auggie.js +3 -2
  13. package/dist/defs/claude.js +1 -1
  14. package/dist/defs/cline.d.ts +3 -1
  15. package/dist/defs/cline.js +3 -2
  16. package/dist/defs/codebuddy.js +1 -1
  17. package/dist/defs/codex.js +4 -4
  18. package/dist/defs/copilot.js +1 -1
  19. package/dist/defs/crush.js +1 -1
  20. package/dist/defs/cursor-agent.js +1 -1
  21. package/dist/defs/deepseek.js +1 -1
  22. package/dist/defs/devin.d.ts +3 -1
  23. package/dist/defs/devin.js +3 -2
  24. package/dist/defs/droid.js +1 -1
  25. package/dist/defs/goose.d.ts +3 -1
  26. package/dist/defs/goose.js +3 -2
  27. package/dist/defs/grok-build.js +1 -1
  28. package/dist/defs/hermes.d.ts +3 -1
  29. package/dist/defs/hermes.js +3 -2
  30. package/dist/defs/kilo.d.ts +3 -1
  31. package/dist/defs/kilo.js +3 -2
  32. package/dist/defs/kimi.d.ts +3 -1
  33. package/dist/defs/kimi.js +3 -2
  34. package/dist/defs/kiro.d.ts +3 -1
  35. package/dist/defs/kiro.js +3 -2
  36. package/dist/defs/mimo.js +1 -1
  37. package/dist/defs/opencode.js +1 -1
  38. package/dist/defs/pi.js +1 -1
  39. package/dist/defs/qoder.js +1 -1
  40. package/dist/defs/qwen.js +1 -1
  41. package/dist/defs/reasonix.d.ts +3 -1
  42. package/dist/defs/reasonix.js +3 -2
  43. package/dist/defs/trae-cli.d.ts +3 -1
  44. package/dist/defs/trae-cli.js +3 -2
  45. package/dist/defs/vibe.d.ts +3 -1
  46. package/dist/defs/vibe.js +3 -2
  47. package/dist/detection.js +1 -1
  48. package/dist/env.js +1 -1
  49. package/dist/executables.js +1 -1
  50. package/dist/index.d.ts +2 -1
  51. package/dist/index.js +2 -1
  52. package/dist/invocation.js +1 -1
  53. package/dist/model-discovery-adapters.d.ts +11 -2
  54. package/dist/model-discovery-adapters.js +26 -9
  55. package/dist/model-discovery-native.d.ts +14 -0
  56. package/dist/model-discovery-native.js +22 -0
  57. package/dist/model-discovery-sdk.js +1 -1
  58. package/dist/model-discovery-shared.d.ts +14 -0
  59. package/dist/model-discovery-shared.js +53 -0
  60. package/dist/model-discovery-types.d.ts +26 -0
  61. package/dist/model-discovery.d.ts +17 -22
  62. package/dist/model-discovery.js +16 -67
  63. package/dist/native-runtime.d.ts +35 -0
  64. package/dist/native-runtime.js +53 -0
  65. package/dist/runtime-state.d.ts +7 -2
  66. package/dist/runtime-state.js +10 -4
  67. package/dist/types.d.ts +5 -0
  68. package/package.json +29 -7
package/CHANGELOG.md CHANGED
@@ -1,3 +1,14 @@
1
+ ## 0.4.7 — 2026-10-13
2
+
3
+ - New `createNativeAgentRuntime({ env }, { state, acpModelProbe, codexDisablePlugins, piGracefulShutdownMs })`: one host-owned runtime state with detection, launch and definitions bound to it, environment policies resolved once, and `dispose({})` that drains in-flight discovery before clearing caches.
4
+ - ACP model probes can come from the host (`AgentRuntimeState.acpModelProbe`, `fetchModels(required, { acpModelProbe })`); `setAcpModelProbe` stays as the compatibility setter for unbound definitions.
5
+ - Codex `--disable plugins` and the pi RPC shutdown grace period are explicit (`RuntimeBuildOptions.codexDisablePlugins`, `PiRpcSessionOptions.gracefulShutdownMs`); `CODEX_DISABLE_PLUGINS` / `PI_GRACEFUL_SHUTDOWN_MS` are read at native composition instead of inside `buildArgs` / the session.
6
+
7
+ ## 0.4.6 — 2026-10-13
8
+
9
+ - New `./model-discovery` subpath: the discovery policy with injected `deps` and `probes` (`createAgentModelDiscovery({ agentId, configuration, deps, probes })`, `modelDiscoveryForDef({ def, deps })`, `resolveModelForLaunch({ def, context, deps })`). It loads no child_process/fs or native adapters. The root keeps the published scalar signatures, wired to the native probes.
10
+ - Platform helpers come from the narrow platform subpaths; peer `@jini-ai/platform` floor is now `^0.5.5`.
11
+
1
12
  ## 0.4.3 — 2026-10-08
2
13
 
3
14
  - Desktop 0.1.13 release fixes: see commits a2659d24 (admin), 5695a7c3 (chat, agent-runtime), 8ad4ac5c (devops).
@@ -12,18 +12,29 @@ export interface AcpModelProbeRequest {
12
12
  cwd?: string;
13
13
  env?: RuntimeEnv;
14
14
  timeoutMs?: number;
15
+ signal?: AbortSignal;
15
16
  clientName?: string;
16
17
  clientVersion?: string;
17
18
  defaultModelOption?: RuntimeModelOption;
18
19
  }
19
20
  export interface AcpModelProbe {
20
21
  detectModels(requiredArgs: Pick<AcpModelProbeRequest, 'bin' | 'args'>, optionalArgs?: Omit<AcpModelProbeRequest, 'bin' | 'args'>): Promise<RuntimeModelOption[]>;
22
+ /** Optional metadata capability preserves a native current selection without guessing from order. */
23
+ detectMetadata?(requiredArgs: Pick<AcpModelProbeRequest, 'bin' | 'args'>, optionalArgs?: Omit<AcpModelProbeRequest, 'bin' | 'args'>): Promise<{
24
+ models: RuntimeModelOption[];
25
+ currentModelId: string | null;
26
+ }>;
21
27
  }
22
28
  export declare const noopAcpModelProbe: AcpModelProbe;
23
- /** Install a transport/test double. Pass `null` to restore the native transport. */
29
+ /** Native adapter selected once by each host composition; independent of the compatibility setter. */
30
+ export declare const nativeAcpModelProbe: AcpModelProbe;
31
+ /** Compatibility setter for unbound definitions. Owned hosts keep their selected transport.
32
+ * Pass `null` to restore the native transport for the legacy wrapper. */
24
33
  export declare function setAcpModelProbe({ probe }: {
25
34
  probe: AcpModelProbe | null;
26
35
  }): void;
27
- /** Delegate to the currently installed probe. */
28
- export declare function detectAcpModels(requiredArgs: Pick<AcpModelProbeRequest, "bin" | "args">, optionalArgs?: Omit<AcpModelProbeRequest, "bin" | "args">): Promise<RuntimeModelOption[]>;
36
+ /** Delegate to an explicit host probe, or the currently installed compatibility probe. */
37
+ export declare function detectAcpModels(requiredArgs: Pick<AcpModelProbeRequest, "bin" | "args">, optionalArgs?: Omit<AcpModelProbeRequest, "bin" | "args"> & {
38
+ probe?: AcpModelProbe;
39
+ }): Promise<RuntimeModelOption[]>;
29
40
  //# sourceMappingURL=acp-model-probe.d.ts.map
@@ -1,17 +1,23 @@
1
- import { detectAcpModels as probeNativeModels } from './agent-protocol/acp/models.js';
1
+ import { detectAcpModels as probeNativeModels, detectAcpModelMetadata } from './agent-protocol/acp/models.js';
2
2
  export const noopAcpModelProbe = {
3
3
  async detectModels() {
4
4
  return [];
5
5
  },
6
6
  };
7
- const nativeAcpModelProbe = { detectModels: (required, optional = {}) => probeNativeModels(required, { ...optional, ...(optional.env ? { env: optional.env } : {}) }) };
7
+ /** Native adapter selected once by each host composition; independent of the compatibility setter. */
8
+ export const nativeAcpModelProbe = {
9
+ detectModels: (required, optional = {}) => probeNativeModels(required, optional),
10
+ detectMetadata: (required, optional = {}) => detectAcpModelMetadata(required, optional),
11
+ };
8
12
  let activeAcpModelProbe = nativeAcpModelProbe;
9
- /** Install a transport/test double. Pass `null` to restore the native transport. */
13
+ /** Compatibility setter for unbound definitions. Owned hosts keep their selected transport.
14
+ * Pass `null` to restore the native transport for the legacy wrapper. */
10
15
  export function setAcpModelProbe({ probe }) {
11
16
  activeAcpModelProbe = probe ?? nativeAcpModelProbe;
12
17
  }
13
- /** Delegate to the currently installed probe. */
18
+ /** Delegate to an explicit host probe, or the currently installed compatibility probe. */
14
19
  export async function detectAcpModels(requiredArgs, optionalArgs = {}) {
15
- return activeAcpModelProbe.detectModels(requiredArgs, optionalArgs);
20
+ const { probe = activeAcpModelProbe, ...request } = optionalArgs;
21
+ return probe.detectModels(requiredArgs, request);
16
22
  }
17
23
  //# sourceMappingURL=acp-model-probe.js.map
@@ -19,6 +19,8 @@ export type PiRpcSessionOptions = {
19
19
  imagePaths?: string[];
20
20
  uploadRoot?: string;
21
21
  parentSession?: string;
22
+ /** Explicit post-completion grace period before SIGTERM. Native hosts resolve env defaults. */
23
+ gracefulShutdownMs?: number;
22
24
  };
23
25
  /** Handle returned by `attachPiRpcSession` for querying run state and requesting abort. */
24
26
  export type PiRpcSession = {
@@ -248,7 +248,7 @@ export function handlePiResponseMessage({ raw, parentSessionRpcId, promptRpcId,
248
248
  * @returns A `PiRpcSession` handle with `hasFatalError`, `getLastSessionPath`, and `abort`.
249
249
  */
250
250
  export function attachPiRpcSession(requiredArgs, optionalArgs = {}) {
251
- const { child, prompt, cwd, model, send, imagePaths, uploadRoot, parentSession, } = { ...optionalArgs, ...requiredArgs };
251
+ const { child, prompt, cwd, model, send, imagePaths, uploadRoot, parentSession, gracefulShutdownMs = 5000, } = { ...optionalArgs, ...requiredArgs };
252
252
  const stdin = child.stdin;
253
253
  const stdout = child.stdout;
254
254
  if (stdin === null) {
@@ -343,13 +343,12 @@ export function attachPiRpcSession(requiredArgs, optionalArgs = {}) {
343
343
  catch (err) {
344
344
  fail(`stdin close: ${errorMessage(err)}`);
345
345
  }
346
- // Grace period before SIGTERM. Configurable via PI_GRACEFUL_SHUTDOWN_MS
347
- // for resource-constrained machines where the event loop drains slowly.
348
- const shutdownMs = Number(process.env.PI_GRACEFUL_SHUTDOWN_MS) || 5000;
346
+ // Grace period before SIGTERM lets resource-constrained machines drain a slow event loop.
347
+ // The host supplies timing explicitly, resolving PI_GRACEFUL_SHUTDOWN_MS at composition.
349
348
  setTimeout(() => {
350
349
  if (!child.killed)
351
350
  child.kill('SIGTERM');
352
- }, shutdownMs);
351
+ }, gracefulShutdownMs);
353
352
  };
354
353
  // ---- Inbound: parse stdout events ----
355
354
  const parser = createJsonLineStream({ onMessage: ({ message: raw }) => {
@@ -39,7 +39,7 @@ import { createHash } from 'node:crypto';
39
39
  import { readFile } from 'node:fs/promises';
40
40
  import os from 'node:os';
41
41
  import { join } from 'node:path';
42
- import { createCommandInvocation } from '@jini-ai/platform';
42
+ import { createCommandInvocation } from '@jini-ai/platform/command';
43
43
  import { sanitizeCustomModel } from './models.js';
44
44
  /** A spawn costs ~2.5s and the picker list only moves when Claude Code updates or the server's
45
45
  * "additional" options change, so one answer is trusted for this long per process. Failures are
@@ -1,4 +1,4 @@
1
- import { createAgentModelDiscovery } from '../model-discovery.js';
1
+ import { createAgentModelDiscovery } from '../model-discovery-native.js';
2
2
  import { DEFAULT_MODEL_OPTION } from './shared.js';
3
3
  export const aiderAgentDef = {
4
4
  // UNVERIFIED live integration locally; source/category and limits are documented in model-discovery-adapters.ts.
package/dist/defs/amp.js CHANGED
@@ -1,4 +1,4 @@
1
- import { createAgentModelDiscovery } from '../model-discovery.js';
1
+ import { createAgentModelDiscovery } from '../model-discovery-native.js';
2
2
  import { DEFAULT_MODEL_OPTION } from './shared.js';
3
3
  // Amp CLI (https://ampcode.com) is a full agentic coding CLI, argv-shaped
4
4
  // much like Claude Code: it has a headless execute mode and emits a
package/dist/defs/amr.js CHANGED
@@ -1,4 +1,4 @@
1
- import { createAgentModelDiscovery } from '../model-discovery.js';
1
+ import { createAgentModelDiscovery } from '../model-discovery-native.js';
2
2
  import { execAgentFile } from './shared.js';
3
3
  const AMR_MODELS_TIMEOUT_MS = 10_000;
4
4
  const AMR_MODELS_RETRY_DELAYS_MS = [250, 750];
@@ -1,4 +1,4 @@
1
- import { createAgentModelDiscovery } from '../model-discovery.js';
1
+ import { createAgentModelDiscovery } from '../model-discovery-native.js';
2
2
  import { redactOAuthUrls } from '@jini-ai/oauth';
3
3
  import { DEFAULT_MODEL_OPTION } from './shared.js';
4
4
  // `agy` v1.1.24 has a real `--model <id>` flag (`agy --help`: "Model for the current CLI
@@ -6,7 +6,9 @@ export declare const auggieAgentDef: {
6
6
  fetchModels: ({ resolvedBin, env }: {
7
7
  resolvedBin: string;
8
8
  env: import("../types.js").RuntimeEnv;
9
- }) => Promise<import("../types.js").RuntimeModelOption[]>;
9
+ }, { acpModelProbe }?: {
10
+ acpModelProbe?: import("../acp-model-probe.js").AcpModelProbe;
11
+ } | undefined) => Promise<import("../types.js").RuntimeModelOption[]>;
10
12
  fallbackModels: import("../types.js").RuntimeModelOption[];
11
13
  buildArgs: () => string[];
12
14
  streamFormat: string;
@@ -1,4 +1,4 @@
1
- import { createAgentModelDiscovery } from '../model-discovery.js';
1
+ import { createAgentModelDiscovery } from '../model-discovery-native.js';
2
2
  /**
3
3
  * @module defs/auggie
4
4
  *
@@ -15,7 +15,8 @@ export const auggieAgentDef = {
15
15
  name: 'Auggie CLI',
16
16
  bin: 'auggie',
17
17
  versionArgs: ['--version'],
18
- fetchModels: async ({ resolvedBin, env }) => (({ bin, args, ...optionalArgs }) => detectAcpModels({ bin, args }, optionalArgs))({
18
+ fetchModels: async ({ resolvedBin, env }, { acpModelProbe } = {}) => (({ bin, args, ...optionalArgs }) => detectAcpModels({ bin, args }, optionalArgs))({
19
+ ...(acpModelProbe ? { probe: acpModelProbe } : {}),
19
20
  bin: resolvedBin,
20
21
  args: ['--acp'],
21
22
  env,
@@ -1,4 +1,4 @@
1
- import { createAgentModelDiscovery } from '../model-discovery.js';
1
+ import { createAgentModelDiscovery } from '../model-discovery-native.js';
2
2
  /**
3
3
  * Claude Code has no dedicated image-attachment flag. imageDelivery: 'prompt-path' makes the
4
4
  * executor append local image paths to the prompt and add their directories to extraAllowedDirs;
@@ -6,7 +6,9 @@ export declare const clineAgentDef: {
6
6
  fetchModels: ({ resolvedBin, env }: {
7
7
  resolvedBin: string;
8
8
  env: import("../types.js").RuntimeEnv;
9
- }) => Promise<import("../types.js").RuntimeModelOption[]>;
9
+ }, { acpModelProbe }?: {
10
+ acpModelProbe?: import("../acp-model-probe.js").AcpModelProbe;
11
+ } | undefined) => Promise<import("../types.js").RuntimeModelOption[]>;
10
12
  fallbackModels: import("../types.js").RuntimeModelOption[];
11
13
  buildArgs: () => string[];
12
14
  streamFormat: string;
@@ -1,4 +1,4 @@
1
- import { createAgentModelDiscovery } from '../model-discovery.js';
1
+ import { createAgentModelDiscovery } from '../model-discovery-native.js';
2
2
  /**
3
3
  * @module defs/cline
4
4
  *
@@ -17,7 +17,8 @@ export const clineAgentDef = {
17
17
  name: 'Cline',
18
18
  bin: 'cline',
19
19
  versionArgs: ['--version'],
20
- fetchModels: async ({ resolvedBin, env }) => (({ bin, args, ...optionalArgs }) => detectAcpModels({ bin, args }, optionalArgs))({
20
+ fetchModels: async ({ resolvedBin, env }, { acpModelProbe } = {}) => (({ bin, args, ...optionalArgs }) => detectAcpModels({ bin, args }, optionalArgs))({
21
+ ...(acpModelProbe ? { probe: acpModelProbe } : {}),
21
22
  bin: resolvedBin,
22
23
  args: ['--acp'],
23
24
  env,
@@ -1,4 +1,4 @@
1
- import { createAgentModelDiscovery } from '../model-discovery.js';
1
+ import { createAgentModelDiscovery } from '../model-discovery-native.js';
2
2
  import { agentCapabilities } from '../capabilities.js';
3
3
  import { buildClaudeMcpConfigArgs, DEFAULT_MODEL_OPTION } from './shared.js';
4
4
  // Codebuddy Code (https://www.codebuddy.cn) — a Claude Code–compatible CLI
@@ -1,6 +1,6 @@
1
- import { createAgentModelDiscovery } from '../model-discovery.js';
2
- /** CODEX_SANDBOX_MODE and CODEX_DISABLE_PLUGINS are adapter-scoped operator overrides;
3
- * no product-specific environment naming is required. */
1
+ import { createAgentModelDiscovery } from '../model-discovery-native.js';
2
+ /** CODEX_SANDBOX_MODE remains an adapter-scoped operator override; plugin policy is supplied
3
+ * explicitly by the host, whose native composition resolves CODEX_DISABLE_PLUGINS. */
4
4
  import { DEFAULT_MODEL_OPTION, clampCodexReasoning } from './shared.js';
5
5
  /**
6
6
  * The `visibility` values that mean "reachable by id, but do not render in a picker".
@@ -292,7 +292,7 @@ export const codexAgentDef = {
292
292
  const args = resumeSessionId
293
293
  ? ['exec', 'resume', '--json', '--skip-git-repo-check', ...sandboxArgs]
294
294
  : ['exec', '--json', '--skip-git-repo-check', ...sandboxArgs];
295
- if (process.env.CODEX_DISABLE_PLUGINS === '1') {
295
+ if (options.codexDisablePlugins === true) {
296
296
  args.push('--disable', 'plugins');
297
297
  }
298
298
  // `-C <cwd>` and `--add-dir <dir>` are CREATE-only flags: `codex exec
@@ -1,4 +1,4 @@
1
- import { createAgentModelDiscovery } from '../model-discovery.js';
1
+ import { createAgentModelDiscovery } from '../model-discovery-native.js';
2
2
  import { DEFAULT_MODEL_OPTION } from './shared.js';
3
3
  export const copilotAgentDef = {
4
4
  // UNVERIFIED live integration locally; source/category and limits are documented in model-discovery-adapters.ts.
@@ -1,4 +1,4 @@
1
- import { createAgentModelDiscovery } from '../model-discovery.js';
1
+ import { createAgentModelDiscovery } from '../model-discovery-native.js';
2
2
  /**
3
3
  * @module defs/crush
4
4
  *
@@ -1,4 +1,4 @@
1
- import { createAgentModelDiscovery } from '../model-discovery.js';
1
+ import { createAgentModelDiscovery } from '../model-discovery-native.js';
2
2
  import { DEFAULT_MODEL_OPTION } from './shared.js';
3
3
  import { agentCapabilities } from '../capabilities.js';
4
4
  export function parseCursorAgentModels({ stdout }) {
@@ -1,4 +1,4 @@
1
- import { createAgentModelDiscovery } from '../model-discovery.js';
1
+ import { createAgentModelDiscovery } from '../model-discovery-native.js';
2
2
  import { DEFAULT_MODEL_OPTION } from './shared.js';
3
3
  export const deepseekAgentDef = {
4
4
  // UNVERIFIED live integration locally; source/category and limits are documented in model-discovery-adapters.ts.
@@ -6,7 +6,9 @@ export declare const devinAgentDef: {
6
6
  fetchModels: ({ resolvedBin, env }: {
7
7
  resolvedBin: string;
8
8
  env: import("../types.js").RuntimeEnv;
9
- }) => Promise<import("../types.js").RuntimeModelOption[]>;
9
+ }, { acpModelProbe }?: {
10
+ acpModelProbe?: import("../acp-model-probe.js").AcpModelProbe;
11
+ } | undefined) => Promise<import("../types.js").RuntimeModelOption[]>;
10
12
  fallbackModels: import("../types.js").RuntimeModelOption[];
11
13
  buildArgs: ({ prompt: _prompt, imagePaths: _imagePaths }: {
12
14
  prompt: string;
@@ -1,4 +1,4 @@
1
- import { createAgentModelDiscovery } from '../model-discovery.js';
1
+ import { createAgentModelDiscovery } from '../model-discovery-native.js';
2
2
  import { detectAcpModels, DEFAULT_MODEL_OPTION } from './shared.js';
3
3
  export const devinAgentDef = {
4
4
  // UNVERIFIED live integration locally; source/category and limits are documented in model-discovery-adapters.ts.
@@ -7,7 +7,8 @@ export const devinAgentDef = {
7
7
  name: 'Devin for Terminal',
8
8
  bin: 'devin',
9
9
  versionArgs: ['--version'],
10
- fetchModels: async ({ resolvedBin, env }) => (({ bin, args, ...optionalArgs }) => detectAcpModels({ bin, args }, optionalArgs))({
10
+ fetchModels: async ({ resolvedBin, env }, { acpModelProbe } = {}) => (({ bin, args, ...optionalArgs }) => detectAcpModels({ bin, args }, optionalArgs))({
11
+ ...(acpModelProbe ? { probe: acpModelProbe } : {}),
11
12
  bin: resolvedBin,
12
13
  args: [
13
14
  '--permission-mode',
@@ -1,4 +1,4 @@
1
- import { createAgentModelDiscovery } from '../model-discovery.js';
1
+ import { createAgentModelDiscovery } from '../model-discovery-native.js';
2
2
  /**
3
3
  * @module defs/droid
4
4
  *
@@ -6,7 +6,9 @@ export declare const gooseAgentDef: {
6
6
  fetchModels: ({ resolvedBin, env }: {
7
7
  resolvedBin: string;
8
8
  env: import("../types.js").RuntimeEnv;
9
- }) => Promise<import("../types.js").RuntimeModelOption[]>;
9
+ }, { acpModelProbe }?: {
10
+ acpModelProbe?: import("../acp-model-probe.js").AcpModelProbe;
11
+ } | undefined) => Promise<import("../types.js").RuntimeModelOption[]>;
10
12
  fallbackModels: import("../types.js").RuntimeModelOption[];
11
13
  buildArgs: () => string[];
12
14
  streamFormat: string;
@@ -1,4 +1,4 @@
1
- import { createAgentModelDiscovery } from '../model-discovery.js';
1
+ import { createAgentModelDiscovery } from '../model-discovery-native.js';
2
2
  /**
3
3
  * @module defs/goose
4
4
  *
@@ -18,7 +18,8 @@ export const gooseAgentDef = {
18
18
  name: 'goose',
19
19
  bin: 'goose',
20
20
  versionArgs: ['--version'],
21
- fetchModels: async ({ resolvedBin, env }) => (({ bin, args, ...optionalArgs }) => detectAcpModels({ bin, args }, optionalArgs))({
21
+ fetchModels: async ({ resolvedBin, env }, { acpModelProbe } = {}) => (({ bin, args, ...optionalArgs }) => detectAcpModels({ bin, args }, optionalArgs))({
22
+ ...(acpModelProbe ? { probe: acpModelProbe } : {}),
22
23
  bin: resolvedBin,
23
24
  args: ['acp'],
24
25
  env,
@@ -1,4 +1,4 @@
1
- import { createAgentModelDiscovery } from '../model-discovery.js';
1
+ import { createAgentModelDiscovery } from '../model-discovery-native.js';
2
2
  import { DEFAULT_MODEL_OPTION } from './shared.js';
3
3
  const GROK_MODEL_ID_RE = /^(?:[*•-]\s*|(?=grok-))([a-z0-9][a-z0-9./_:@\[\]-]*)(?:\s+\(default\))?\s*$/i;
4
4
  export function parseGrokBuildModels({ stdout }) {
@@ -6,7 +6,9 @@ export declare const hermesAgentDef: {
6
6
  fetchModels: ({ resolvedBin, env }: {
7
7
  resolvedBin: string;
8
8
  env: import("../types.js").RuntimeEnv;
9
- }) => Promise<import("../types.js").RuntimeModelOption[]>;
9
+ }, { acpModelProbe }?: {
10
+ acpModelProbe?: import("../acp-model-probe.js").AcpModelProbe;
11
+ } | undefined) => Promise<import("../types.js").RuntimeModelOption[]>;
10
12
  fallbackModels: import("../types.js").RuntimeModelOption[];
11
13
  buildArgs: () => string[];
12
14
  streamFormat: string;
@@ -1,4 +1,4 @@
1
- import { createAgentModelDiscovery } from '../model-discovery.js';
1
+ import { createAgentModelDiscovery } from '../model-discovery-native.js';
2
2
  import { detectAcpModels, DEFAULT_MODEL_OPTION } from './shared.js';
3
3
  export const hermesAgentDef = {
4
4
  // UNVERIFIED live integration locally; source/category and limits are documented in model-discovery-adapters.ts.
@@ -7,7 +7,8 @@ export const hermesAgentDef = {
7
7
  name: 'Hermes',
8
8
  bin: 'hermes',
9
9
  versionArgs: ['--version'],
10
- fetchModels: async ({ resolvedBin, env }) => (({ bin, args, ...optionalArgs }) => detectAcpModels({ bin, args }, optionalArgs))({
10
+ fetchModels: async ({ resolvedBin, env }, { acpModelProbe } = {}) => (({ bin, args, ...optionalArgs }) => detectAcpModels({ bin, args }, optionalArgs))({
11
+ ...(acpModelProbe ? { probe: acpModelProbe } : {}),
11
12
  bin: resolvedBin,
12
13
  args: ['acp', '--accept-hooks'],
13
14
  env,
@@ -6,7 +6,9 @@ export declare const kiloAgentDef: {
6
6
  fetchModels: ({ resolvedBin, env }: {
7
7
  resolvedBin: string;
8
8
  env: import("../types.js").RuntimeEnv;
9
- }) => Promise<import("../types.js").RuntimeModelOption[]>;
9
+ }, { acpModelProbe }?: {
10
+ acpModelProbe?: import("../acp-model-probe.js").AcpModelProbe;
11
+ } | undefined) => Promise<import("../types.js").RuntimeModelOption[]>;
10
12
  fallbackModels: import("../types.js").RuntimeModelOption[];
11
13
  buildArgs: () => string[];
12
14
  streamFormat: string;
package/dist/defs/kilo.js CHANGED
@@ -1,4 +1,4 @@
1
- import { createAgentModelDiscovery } from '../model-discovery.js';
1
+ import { createAgentModelDiscovery } from '../model-discovery-native.js';
2
2
  import { detectAcpModels, DEFAULT_MODEL_OPTION } from './shared.js';
3
3
  export const kiloAgentDef = {
4
4
  // UNVERIFIED live integration locally; source/category and limits are documented in model-discovery-adapters.ts.
@@ -7,7 +7,8 @@ export const kiloAgentDef = {
7
7
  name: 'Kilo',
8
8
  bin: 'kilo',
9
9
  versionArgs: ['--version'],
10
- fetchModels: async ({ resolvedBin, env }) => (({ bin, args, ...optionalArgs }) => detectAcpModels({ bin, args }, optionalArgs))({
10
+ fetchModels: async ({ resolvedBin, env }, { acpModelProbe } = {}) => (({ bin, args, ...optionalArgs }) => detectAcpModels({ bin, args }, optionalArgs))({
11
+ ...(acpModelProbe ? { probe: acpModelProbe } : {}),
11
12
  bin: resolvedBin,
12
13
  args: ['acp'],
13
14
  env,
@@ -7,7 +7,9 @@ export declare const kimiAgentDef: {
7
7
  fetchModels: ({ resolvedBin, env }: {
8
8
  resolvedBin: string;
9
9
  env: import("../types.js").RuntimeEnv;
10
- }) => Promise<import("../types.js").RuntimeModelOption[]>;
10
+ }, { acpModelProbe }?: {
11
+ acpModelProbe?: import("../acp-model-probe.js").AcpModelProbe;
12
+ } | undefined) => Promise<import("../types.js").RuntimeModelOption[]>;
11
13
  buildArgs: () => string[];
12
14
  streamFormat: string;
13
15
  mcpDiscovery: string;
package/dist/defs/kimi.js CHANGED
@@ -1,4 +1,4 @@
1
- import { createAgentModelDiscovery } from '../model-discovery.js';
1
+ import { createAgentModelDiscovery } from '../model-discovery-native.js';
2
2
  import { detectAcpModels, DEFAULT_MODEL_OPTION } from './shared.js';
3
3
  export const kimiAgentDef = {
4
4
  // UNVERIFIED live integration locally; source/category and limits are documented in model-discovery-adapters.ts.
@@ -13,7 +13,8 @@ export const kimiAgentDef = {
13
13
  { id: 'moonshot-v1-8k', label: 'moonshot-v1-8k' },
14
14
  { id: 'moonshot-v1-32k', label: 'moonshot-v1-32k' },
15
15
  ],
16
- fetchModels: async ({ resolvedBin, env }) => (({ bin, args, ...optionalArgs }) => detectAcpModels({ bin, args }, optionalArgs))({
16
+ fetchModels: async ({ resolvedBin, env }, { acpModelProbe } = {}) => (({ bin, args, ...optionalArgs }) => detectAcpModels({ bin, args }, optionalArgs))({
17
+ ...(acpModelProbe ? { probe: acpModelProbe } : {}),
17
18
  bin: resolvedBin,
18
19
  args: ['acp'],
19
20
  env,
@@ -6,7 +6,9 @@ export declare const kiroAgentDef: {
6
6
  fetchModels: ({ resolvedBin, env }: {
7
7
  resolvedBin: string;
8
8
  env: import("../types.js").RuntimeEnv;
9
- }) => Promise<import("../types.js").RuntimeModelOption[]>;
9
+ }, { acpModelProbe }?: {
10
+ acpModelProbe?: import("../acp-model-probe.js").AcpModelProbe;
11
+ } | undefined) => Promise<import("../types.js").RuntimeModelOption[]>;
10
12
  fallbackModels: import("../types.js").RuntimeModelOption[];
11
13
  buildArgs: () => string[];
12
14
  streamFormat: string;
package/dist/defs/kiro.js CHANGED
@@ -1,4 +1,4 @@
1
- import { createAgentModelDiscovery } from '../model-discovery.js';
1
+ import { createAgentModelDiscovery } from '../model-discovery-native.js';
2
2
  import { detectAcpModels, DEFAULT_MODEL_OPTION } from './shared.js';
3
3
  export const kiroAgentDef = {
4
4
  // UNVERIFIED live integration locally; source/category and limits are documented in model-discovery-adapters.ts.
@@ -7,7 +7,8 @@ export const kiroAgentDef = {
7
7
  name: 'Kiro CLI',
8
8
  bin: 'kiro-cli',
9
9
  versionArgs: ['--version'],
10
- fetchModels: async ({ resolvedBin, env }) => (({ bin, args, ...optionalArgs }) => detectAcpModels({ bin, args }, optionalArgs))({
10
+ fetchModels: async ({ resolvedBin, env }, { acpModelProbe } = {}) => (({ bin, args, ...optionalArgs }) => detectAcpModels({ bin, args }, optionalArgs))({
11
+ ...(acpModelProbe ? { probe: acpModelProbe } : {}),
11
12
  bin: resolvedBin,
12
13
  args: ['acp'],
13
14
  env,
package/dist/defs/mimo.js CHANGED
@@ -1,4 +1,4 @@
1
- import { createAgentModelDiscovery } from '../model-discovery.js';
1
+ import { createAgentModelDiscovery } from '../model-discovery-native.js';
2
2
  import { DEFAULT_MODEL_OPTION } from './shared.js';
3
3
  export const mimoAgentDef = {
4
4
  // UNVERIFIED live integration locally; source/category and limits are documented in model-discovery-adapters.ts.
@@ -1,4 +1,4 @@
1
- import { createAgentModelDiscovery } from '../model-discovery.js';
1
+ import { createAgentModelDiscovery } from '../model-discovery-native.js';
2
2
  import { DEFAULT_MODEL_OPTION, parseLineSeparatedModels } from './shared.js';
3
3
  import { agentCapabilities } from '../capabilities.js';
4
4
  const SKIP_PERMISSIONS_FLAG = '--dangerously-skip-permissions';
package/dist/defs/pi.js CHANGED
@@ -1,4 +1,4 @@
1
- import { createAgentModelDiscovery } from '../model-discovery.js';
1
+ import { createAgentModelDiscovery } from '../model-discovery-native.js';
2
2
  import path from 'node:path';
3
3
  import { DEFAULT_MODEL_OPTION, execAgentFile, parsePiModels } from './shared.js';
4
4
  export const piAgentDef = {
@@ -1,4 +1,4 @@
1
- import { createAgentModelDiscovery } from '../model-discovery.js';
1
+ import { createAgentModelDiscovery } from '../model-discovery-native.js';
2
2
  import path from 'node:path';
3
3
  import { DEFAULT_MODEL_OPTION } from './shared.js';
4
4
  export const qoderAgentDef = {
package/dist/defs/qwen.js CHANGED
@@ -1,4 +1,4 @@
1
- import { createAgentModelDiscovery } from '../model-discovery.js';
1
+ import { createAgentModelDiscovery } from '../model-discovery-native.js';
2
2
  import { DEFAULT_MODEL_OPTION } from './shared.js';
3
3
  export const qwenAgentDef = {
4
4
  // UNVERIFIED live integration locally; source/category and limits are documented in model-discovery-adapters.ts.
@@ -7,7 +7,9 @@ export declare const reasonixAgentDef: {
7
7
  fetchModels: ({ resolvedBin, env }: {
8
8
  resolvedBin: string;
9
9
  env: import("../types.js").RuntimeEnv;
10
- }) => Promise<import("../types.js").RuntimeModelOption[]>;
10
+ }, { acpModelProbe }?: {
11
+ acpModelProbe?: import("../acp-model-probe.js").AcpModelProbe;
12
+ } | undefined) => Promise<import("../types.js").RuntimeModelOption[]>;
11
13
  buildArgs: () => string[];
12
14
  streamFormat: string;
13
15
  mcpDiscovery: string;
@@ -1,4 +1,4 @@
1
- import { createAgentModelDiscovery } from '../model-discovery.js';
1
+ import { createAgentModelDiscovery } from '../model-discovery-native.js';
2
2
  /** Reasonix's declarative definition stays product-neutral (R5, checkEngineBoundaries).
3
3
  * Per-run system overlays use REASONIX_ACP_SYSTEM_APPEND via the shared systemPromptDelivery
4
4
  * dispatch and computeChildEnv. Static def.env is computed once and cannot carry host/per-run
@@ -24,7 +24,8 @@ export const reasonixAgentDef = {
24
24
  bin: 'reasonix',
25
25
  fallbackBins: ['dsnix'],
26
26
  versionArgs: ['--version'],
27
- fetchModels: async ({ resolvedBin, env }) => (({ bin, args, ...optionalArgs }) => detectAcpModels({ bin, args }, optionalArgs))({
27
+ fetchModels: async ({ resolvedBin, env }, { acpModelProbe } = {}) => (({ bin, args, ...optionalArgs }) => detectAcpModels({ bin, args }, optionalArgs))({
28
+ ...(acpModelProbe ? { probe: acpModelProbe } : {}),
28
29
  bin: resolvedBin,
29
30
  args: ['acp'],
30
31
  env,
@@ -7,7 +7,9 @@ export declare const traeCliAgentDef: {
7
7
  fetchModels: ({ resolvedBin, env }: {
8
8
  resolvedBin: string;
9
9
  env: import("../types.js").RuntimeEnv;
10
- }) => Promise<import("../types.js").RuntimeModelOption[]>;
10
+ }, { acpModelProbe }?: {
11
+ acpModelProbe?: import("../acp-model-probe.js").AcpModelProbe;
12
+ } | undefined) => Promise<import("../types.js").RuntimeModelOption[]>;
11
13
  fallbackModels: import("../types.js").RuntimeModelOption[];
12
14
  buildArgs: ({ prompt: _prompt, imagePaths: _imagePaths }: {
13
15
  prompt: string;
@@ -1,4 +1,4 @@
1
- import { createAgentModelDiscovery } from '../model-discovery.js';
1
+ import { createAgentModelDiscovery } from '../model-discovery-native.js';
2
2
  import { detectAcpModels, DEFAULT_MODEL_OPTION } from './shared.js';
3
3
  export const traeCliAgentDef = {
4
4
  // UNVERIFIED live integration locally; source/category and limits are documented in model-discovery-adapters.ts.
@@ -8,7 +8,8 @@ export const traeCliAgentDef = {
8
8
  bin: 'traecli',
9
9
  versionArgs: ['--version'],
10
10
  versionProbeTimeoutMs: 10_000,
11
- fetchModels: async ({ resolvedBin, env }) => (({ bin, args, ...optionalArgs }) => detectAcpModels({ bin, args }, optionalArgs))({
11
+ fetchModels: async ({ resolvedBin, env }, { acpModelProbe } = {}) => (({ bin, args, ...optionalArgs }) => detectAcpModels({ bin, args }, optionalArgs))({
12
+ ...(acpModelProbe ? { probe: acpModelProbe } : {}),
12
13
  bin: resolvedBin,
13
14
  args: ['acp', 'serve'],
14
15
  env,
@@ -6,7 +6,9 @@ export declare const vibeAgentDef: {
6
6
  fetchModels: ({ resolvedBin, env }: {
7
7
  resolvedBin: string;
8
8
  env: import("../types.js").RuntimeEnv;
9
- }) => Promise<import("../types.js").RuntimeModelOption[]>;
9
+ }, { acpModelProbe }?: {
10
+ acpModelProbe?: import("../acp-model-probe.js").AcpModelProbe;
11
+ } | undefined) => Promise<import("../types.js").RuntimeModelOption[]>;
10
12
  fallbackModels: import("../types.js").RuntimeModelOption[];
11
13
  buildArgs: () => never[];
12
14
  streamFormat: string;
package/dist/defs/vibe.js CHANGED
@@ -1,4 +1,4 @@
1
- import { createAgentModelDiscovery } from '../model-discovery.js';
1
+ import { createAgentModelDiscovery } from '../model-discovery-native.js';
2
2
  import { detectAcpModels, DEFAULT_MODEL_OPTION } from './shared.js';
3
3
  export const vibeAgentDef = {
4
4
  // UNVERIFIED live integration locally; source/category and limits are documented in model-discovery-adapters.ts.
@@ -7,7 +7,8 @@ export const vibeAgentDef = {
7
7
  name: 'Mistral Vibe CLI',
8
8
  bin: 'vibe-acp',
9
9
  versionArgs: ['--version'],
10
- fetchModels: async ({ resolvedBin, env }) => (({ bin, args, ...optionalArgs }) => detectAcpModels({ bin, args }, optionalArgs))({
10
+ fetchModels: async ({ resolvedBin, env }, { acpModelProbe } = {}) => (({ bin, args, ...optionalArgs }) => detectAcpModels({ bin, args }, optionalArgs))({
11
+ ...(acpModelProbe ? { probe: acpModelProbe } : {}),
11
12
  bin: resolvedBin,
12
13
  args: [],
13
14
  env,
package/dist/detection.js CHANGED
@@ -16,7 +16,7 @@ import { getRuntimeModelDiscoveryDeps } from './model-discovery-adapters.js';
16
16
  * `archived provenance ledger`.
17
17
  */
18
18
  import { execAgentFile } from './invocation.js';
19
- import { offlineSnapshot, modelDiscoveryForDef } from './model-discovery.js';
19
+ import { offlineSnapshot, modelDiscoveryForDef } from './model-discovery-native.js';
20
20
  import { rememberLiveModels } from './models.js';
21
21
  import { installMetaForAgent } from './metadata.js';
22
22
  import { AGENT_DEFS } from './registry.js';
package/dist/env.js CHANGED
@@ -7,7 +7,7 @@
7
7
  * sandboxOverlay. The engine must not import a product's config/sandbox subsystems or env names.
8
8
  */
9
9
  import os from 'node:os';
10
- import { mergeProxyAwareEnv, resolveSystemProxyEnv } from '@jini-ai/platform';
10
+ import { mergeProxyAwareEnv, resolveSystemProxyEnv } from '@jini-ai/platform/proxy-env';
11
11
  import { expandConfiguredEnv } from './paths.js';
12
12
  import { resolveAmrOpenCodeExecutable } from './executables.js';
13
13
  function stripKeysCaseInsensitive(env, keysToStrip) {