@agentproto/runtime 5.1.0 → 5.2.1

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.
@@ -1,7 +1,7 @@
1
1
  import { AuthProfile } from '@agentproto/auth';
2
- import { A as AdapterAuthDescriptor } from './spawn-defaults-wQV9AeiG.js';
3
- import { R as RouteSpec } from './session-config-ByfVeEQJ.js';
4
- import './context-continuity-Bn99UtVC.js';
2
+ import { A as AdapterAuthDescriptor } from './spawn-defaults-CHvz85DD.js';
3
+ import { R as RouteSpec } from './session-config-RyRL2AbD.js';
4
+ import './context-continuity-BfNVbX5W.js';
5
5
  import '@agentproto/acp';
6
6
  import '@agentproto/command-sandbox';
7
7
  import '@agentproto/model-catalog';
@@ -1,7 +1,7 @@
1
1
  import { z } from 'zod';
2
2
  import { DaemonConfig, TunnelConfig, FeaturesConfig, PairingConfig, WorktreesConfig, SpawnConfig, SessionsConfig, ProvenanceConfig, AgentsMdConfig, TitlerConfig, ProfileConfig, AcpAgentConfigEntry, TerminalPreset } from './config.js';
3
- import { S as SpawnDefaultsConfig } from './spawn-defaults-wQV9AeiG.js';
4
- import './context-continuity-Bn99UtVC.js';
3
+ import { S as SpawnDefaultsConfig } from './spawn-defaults-CHvz85DD.js';
4
+ import './context-continuity-BfNVbX5W.js';
5
5
  import '@agentproto/acp';
6
6
  import '@agentproto/command-sandbox';
7
7
  import '@agentproto/model-catalog';
@@ -16,6 +16,7 @@ import '@agentproto/command-sandbox';
16
16
  import '@agentproto/plugin-local-browser';
17
17
  import '@modelcontextprotocol/sdk/types.js';
18
18
  import '@agentproto/provider-kit';
19
+ import '@agentproto/llm-endpoint';
19
20
  import '@modelcontextprotocol/sdk/client/index.js';
20
21
  import '@modelcontextprotocol/sdk/client/streamableHttp.js';
21
22
  import 'net';
@@ -2024,6 +2025,41 @@ var init_canonical_posture = __esm({
2024
2025
  })();
2025
2026
  }
2026
2027
  });
2028
+ var effortSchema, postureSchema, routeSchema, userPresetSchema;
2029
+ var init_user_presets = __esm({
2030
+ "src/user-presets.ts"() {
2031
+ effortSchema = z.enum(["low", "medium", "high", "xhigh", "max", "ultracode"]);
2032
+ postureSchema = z.union([
2033
+ z.enum(["default", "plan", "accept-edits", "bypass", "read-only"]),
2034
+ z.object({ harnessModeId: z.string().min(1) })
2035
+ ]);
2036
+ routeSchema = z.object({
2037
+ gateway: z.string().min(1),
2038
+ baseUrl: z.string().url().optional()
2039
+ });
2040
+ userPresetSchema = z.object({
2041
+ id: z.string().regex(/^[a-z0-9][a-z0-9-]*$/),
2042
+ label: z.string().min(1),
2043
+ adapter: z.string().min(1).optional(),
2044
+ harness: z.string().min(1).optional(),
2045
+ model: z.string().min(1).optional(),
2046
+ route: routeSchema.optional(),
2047
+ access: z.object({ profileRef: z.string().min(1).optional() }).optional(),
2048
+ posture: postureSchema.optional(),
2049
+ effort: effortSchema.optional(),
2050
+ contextProfile: z.string().min(1).optional(),
2051
+ cwd: z.string().min(1).optional(),
2052
+ skills: z.array(z.string().min(1)).optional(),
2053
+ bundles: z.array(z.string().min(1)).optional(),
2054
+ browser: z.union([z.literal("headless"), z.literal(false)]).optional(),
2055
+ lastUsedAt: z.string().min(1).optional()
2056
+ });
2057
+ z.object({
2058
+ version: z.literal(1),
2059
+ presets: z.array(userPresetSchema)
2060
+ });
2061
+ }
2062
+ });
2027
2063
  var harnessPresetSchema;
2028
2064
  var init_harness_preset_store = __esm({
2029
2065
  "src/harness-preset-store.ts"() {
@@ -2124,6 +2160,10 @@ var init_session_title = __esm({
2124
2160
  "src/session-title.ts"() {
2125
2161
  }
2126
2162
  });
2163
+ var init_inference_binding = __esm({
2164
+ "src/inference-binding.ts"() {
2165
+ }
2166
+ });
2127
2167
 
2128
2168
  // src/mcp-credential-deps.ts
2129
2169
  var init_mcp_credential_deps = __esm({
@@ -2188,6 +2228,7 @@ var init_session_spawn = __esm({
2188
2228
  init_catalog_models();
2189
2229
  init_context_continuity();
2190
2230
  init_canonical_posture();
2231
+ init_user_presets();
2191
2232
  init_harness_preset_store();
2192
2233
  init_browser_mount();
2193
2234
  init_role();
@@ -2196,6 +2237,7 @@ var init_session_spawn = __esm({
2196
2237
  init_agents_md();
2197
2238
  init_workspace_rules();
2198
2239
  init_session_title();
2240
+ init_inference_binding();
2199
2241
  init_mcp_credential_deps();
2200
2242
  init_sandbox_agent_session_proxy();
2201
2243
  init_sandbox_ledger();
@@ -2359,6 +2401,16 @@ var init_agent_start_schema = __esm({
2359
2401
  route: jsonTolerant(
2360
2402
  z.object({ gateway: z.string().min(1), baseUrl: z.string().url().optional() })
2361
2403
  ).optional().describe("Billing route/gateway. Independent of `model` and `access`."),
2404
+ inference: jsonTolerant(
2405
+ z.object({
2406
+ endpoint: z.string().min(1).optional().describe('A registered local/LAN inference endpoint id (`agentproto llm endpoints list`), or "<id>@<device>" for a paired device\'s own shared endpoint.'),
2407
+ model: z.string().min(1).optional().describe('A bare model id (paired with `endpoint`), or the shorthand "<model>@<device|endpoint>" when `endpoint` is omitted.'),
2408
+ force: mcpBool.optional().describe("Skip the fit-check refusal on a clear miss (the check still runs and still warns)."),
2409
+ headroomPct: z.number().min(0).max(95).optional().describe("Headroom percentage held back from the endpoint's loaded ctx for the fit check. Default 25.")
2410
+ })
2411
+ ).optional().describe(
2412
+ `Bind this spawn to a local/LAN inference endpoint instead of a cloud model: \`{endpoint}\`, \`{endpoint, model}\`, or the shorthand \`{model: "<model>@<device|endpoint>"}\`. Runs a fit check (the harness's known first-request size vs the endpoint's loaded ctx) BEFORE spawning and refuses with an actionable error on a clear miss (\`force\` overrides). Defaults \`adapter\`/\`harness\` to "pi" when neither is set. Mutually exclusive with \`model\`/\`route\`/\`access\` \u2014 set those directly instead of \`inference\`, never both. ${help("inference")}`
2413
+ ),
2362
2414
  access: jsonTolerant(z.object({ profileRef: z.string().min(1).optional() })).optional().describe("Named auth profile to bill at initial spawn; resolved from the local keychain."),
2363
2415
  posture: z.string().optional().describe("Canonical agent posture (plan, bypass, accept-edits, read-only) or native harness mode."),
2364
2416
  contextProfile: z.string().optional().describe("Context intake profile (for example full or lean)."),
@@ -2497,40 +2549,6 @@ var init_agent_start_schema = __esm({
2497
2549
  agentStartInputSchema.omit({ wait: true });
2498
2550
  }
2499
2551
  });
2500
- var effortSchema, postureSchema, routeSchema, userPresetSchema;
2501
- var init_user_presets = __esm({
2502
- "src/user-presets.ts"() {
2503
- effortSchema = z.enum(["low", "medium", "high", "xhigh", "max", "ultracode"]);
2504
- postureSchema = z.union([
2505
- z.enum(["default", "plan", "accept-edits", "bypass", "read-only"]),
2506
- z.object({ harnessModeId: z.string().min(1) })
2507
- ]);
2508
- routeSchema = z.object({
2509
- gateway: z.string().min(1),
2510
- baseUrl: z.string().url().optional()
2511
- });
2512
- userPresetSchema = z.object({
2513
- id: z.string().regex(/^[a-z0-9][a-z0-9-]*$/),
2514
- label: z.string().min(1),
2515
- adapter: z.string().min(1).optional(),
2516
- harness: z.string().min(1).optional(),
2517
- model: z.string().min(1).optional(),
2518
- route: routeSchema.optional(),
2519
- access: z.object({ profileRef: z.string().min(1).optional() }).optional(),
2520
- posture: postureSchema.optional(),
2521
- effort: effortSchema.optional(),
2522
- contextProfile: z.string().min(1).optional(),
2523
- cwd: z.string().min(1).optional(),
2524
- skills: z.array(z.string().min(1)).optional(),
2525
- bundles: z.array(z.string().min(1)).optional(),
2526
- browser: z.union([z.literal("headless"), z.literal(false)]).optional()
2527
- });
2528
- z.object({
2529
- version: z.literal(1),
2530
- presets: z.array(userPresetSchema)
2531
- });
2532
- }
2533
- });
2534
2552
  var init_catalog_provider_models = __esm({
2535
2553
  "src/catalog-provider-models.ts"() {
2536
2554
  }
@@ -2917,7 +2935,8 @@ var init_config_schema = __esm({
2917
2935
  featuresConfigSchema = z.object({
2918
2936
  pty: z.boolean().optional(),
2919
2937
  llmEndpoint: z.boolean().optional(),
2920
- deviceInferenceShare: z.boolean().optional()
2938
+ deviceInferenceShare: z.boolean().optional(),
2939
+ deviceSpawnAllow: z.boolean().optional()
2921
2940
  }).passthrough();
2922
2941
  worktreesConfigSchema = z.object({
2923
2942
  root: z.string().optional(),
@@ -3764,6 +3783,16 @@ var init_config_schema = __esm({
3764
3783
  label: "Device inference sharing",
3765
3784
  help: "Expose this daemon's local inference endpoint(s) to a paired HOST-scoped controller. Toggle via `agentproto devices share-inference on|off`.",
3766
3785
  default: false
3786
+ },
3787
+ {
3788
+ path: "features.deviceSpawnAllow",
3789
+ schema: bool,
3790
+ apply: "restart",
3791
+ writable: true,
3792
+ section: "daemon",
3793
+ label: "Device spawn allow",
3794
+ help: 'Allow a paired HOST-scoped controller to spawn/drive agent sessions on this daemon (`agent_start({ sandbox: "device:<name>" })`). Toggle via `agentproto devices allow-spawn on|off`.',
3795
+ default: false
3767
3796
  }
3768
3797
  ];
3769
3798
  CONFIG_KEYS_NOT_EXPOSED = [