@runtypelabs/cli 2.31.1 → 2.31.3

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 (2) hide show
  1. package/dist/index.js +192 -34
  2. package/package.json +5 -5
package/dist/index.js CHANGED
@@ -15260,7 +15260,7 @@ var edgeContextPayloadSchema = external_exports.object({
15260
15260
  // ../shared/dist/chunk-SCJRL6LP.mjs
15261
15261
  var MAX_DURABLE_POLL_ATTEMPTS = 1e3;
15262
15262
 
15263
- // ../shared/dist/chunk-K5ARRYN3.mjs
15263
+ // ../shared/dist/chunk-R7RM64AL.mjs
15264
15264
  var DEFAULT_MODELS_FOR_NEW_ACCOUNTS = [
15265
15265
  // Mixlayer models
15266
15266
  {
@@ -15325,7 +15325,7 @@ var DEFAULT_MODELS_FOR_NEW_ACCOUNTS = [
15325
15325
  },
15326
15326
  {
15327
15327
  provider: "runtype",
15328
- modelId: "gemini-3.5-flash",
15328
+ modelId: "gemini-3.6-flash",
15329
15329
  isDefault: false,
15330
15330
  strengths: "Fast, low-cost, and natively multimodal with good reasoning, tool-use, and a 1M context \u2014 a strong choice for vision and high-throughput steps.",
15331
15331
  bestFor: ["default", "vision", "fast-cheap", "agentic-tools", "long-context"]
@@ -15786,7 +15786,7 @@ function resolveFallback(parsed, context, tracking, options = {}) {
15786
15786
  }
15787
15787
  var templateEngine = new SimpleTemplateEngine();
15788
15788
 
15789
- // ../shared/dist/chunk-PL7A5DM4.mjs
15789
+ // ../shared/dist/chunk-TJITC2J6.mjs
15790
15790
  var tokensSchema = external_exports.object({ input: external_exports.number(), output: external_exports.number() });
15791
15791
  var wireStopReasonSchema = external_exports.enum([
15792
15792
  "end_turn",
@@ -15807,6 +15807,10 @@ var unifiedBase = {
15807
15807
  seq: external_exports.number()
15808
15808
  };
15809
15809
  var executionKindSchema = external_exports.enum(["agent", "flow"]);
15810
+ var unifiedExternalAgentContextSchema = external_exports.object({
15811
+ contextId: external_exports.string().optional(),
15812
+ taskId: external_exports.string().optional()
15813
+ });
15810
15814
  var fallbackAttemptSchema = external_exports.object({
15811
15815
  attempt: external_exports.number(),
15812
15816
  type: external_exports.enum(["retry", "model", "message", "flow"]),
@@ -15861,7 +15865,10 @@ var unifiedExecutionCompleteEventSchema = external_exports.object({
15861
15865
  failedSteps: external_exports.number().optional(),
15862
15866
  // Inline Claude Managed create dispatches return the reusable Anthropic
15863
15867
  // agent id on the terminal frame so callers can connect on a later turn.
15864
- claudeManagedAgentId: external_exports.string().optional()
15868
+ claudeManagedAgentId: external_exports.string().optional(),
15869
+ // External A2A agents return the conversation handle callers must persist in
15870
+ // order to resume the same upstream task on the next execution.
15871
+ externalAgent: unifiedExternalAgentContextSchema.optional()
15865
15872
  });
15866
15873
  var unifiedExecutionErrorEventSchema = external_exports.object({
15867
15874
  ...unifiedBase,
@@ -16135,7 +16142,10 @@ var unifiedApprovalStartEventSchema = external_exports.object({
16135
16142
  iteration: external_exports.number().optional(),
16136
16143
  // Present when the approval originated inside a subagent's execution.
16137
16144
  // Attribution only — never a control signal.
16138
- subagent: unifiedSubagentAttributionSchema.optional()
16145
+ subagent: unifiedSubagentAttributionSchema.optional(),
16146
+ // External A2A input/auth pauses must expose the handle used to resume the
16147
+ // paused upstream conversation after approval.
16148
+ externalAgent: unifiedExternalAgentContextSchema.optional()
16139
16149
  });
16140
16150
  var unifiedApprovalCompleteEventSchema = external_exports.object({
16141
16151
  ...unifiedBase,
@@ -16428,6 +16438,7 @@ var agentToolCompleteEventSchema = external_exports.object({
16428
16438
  toolName: external_exports.string(),
16429
16439
  success: external_exports.boolean(),
16430
16440
  result: external_exports.unknown().optional(),
16441
+ error: external_exports.string().optional(),
16431
16442
  executionTime: external_exports.number().optional()
16432
16443
  });
16433
16444
  var agentMediaEventSchema = external_exports.object({
@@ -35069,6 +35080,36 @@ var CORE_BUILTIN_TOOLS_REGISTRY = [
35069
35080
  // Requires OpenAI key for embeddings
35070
35081
  executionHint: "platform"
35071
35082
  },
35083
+ // Runtype documentation search — semantic RAG over the published docs corpus.
35084
+ // Executes server-side against Fern's hosted docs MCP server (see
35085
+ // apps/api/src/services/docs-search-service.ts). Free (no per-call cost, no
35086
+ // provider key); gated by the `enable-docs-search` Flagship flag at execution.
35087
+ {
35088
+ id: "search_runtype_docs",
35089
+ name: "Search Runtype Docs",
35090
+ description: "Search Runtype's own product documentation and get back a synthesized answer with citations. Use this to answer how-to and conceptual questions about building on Runtype \u2014 flows, agents, surfaces, tools, records, schedules, and platform capabilities. Prefer this over generic web search for anything about how Runtype itself works. Returns { success, content } where content carries the answer text and its source citations.",
35091
+ category: BuiltInToolCategory.KNOWLEDGE_RETRIEVAL,
35092
+ providers: [BuiltInToolProvider.MULTI],
35093
+ parametersSchema: {
35094
+ type: "object",
35095
+ properties: {
35096
+ query: {
35097
+ type: "string",
35098
+ description: 'Natural-language documentation question about how to build or configure something on Runtype. Example: "How do I add an approval step to an agent?"',
35099
+ minLength: 1
35100
+ }
35101
+ },
35102
+ required: ["query"]
35103
+ },
35104
+ executionHint: "platform",
35105
+ requiresApiKey: false,
35106
+ platformKeySupport: false,
35107
+ // Hidden from production tool discovery until `enable-docs-search` rolls out
35108
+ // (the flag fails closed in production, so a discoverable tool would just
35109
+ // error "not enabled" for every prod account). Execution path is
35110
+ // unaffected — the Generator Agent and non-prod accounts still use it.
35111
+ experimental: true
35112
+ },
35072
35113
  // ElevenLabs Text-to-Speech
35073
35114
  {
35074
35115
  id: "elevenlabs-tts",
@@ -38740,10 +38781,18 @@ var caseCheckpointSchema = external_exports.object({
38740
38781
  */
38741
38782
  forkMessageIndex: external_exports.number().int().nonnegative()
38742
38783
  }).strict();
38784
+ var requiredJsonValueSchema = external_exports.union([
38785
+ external_exports.null(),
38786
+ external_exports.boolean(),
38787
+ external_exports.number(),
38788
+ external_exports.string(),
38789
+ external_exports.array(external_exports.any()),
38790
+ external_exports.record(external_exports.string(), external_exports.any())
38791
+ ]);
38743
38792
  var toolMockSchema = external_exports.object({
38744
38793
  toolName: external_exports.string().min(1),
38745
38794
  input: external_exports.unknown().optional(),
38746
- output: external_exports.unknown(),
38795
+ output: requiredJsonValueSchema,
38747
38796
  /**
38748
38797
  * True when the recorded call FAILED — `output` is then the error payload,
38749
38798
  * and a replay must serve it as a failure, not a success. Captured now so
@@ -38782,7 +38831,7 @@ var recordedToolUnmatchedPolicySchema = external_exports.enum(RECORDED_TOOL_UNMA
38782
38831
  var EVAL_JUDGE_SYSTEM_PROMPT = [
38783
38832
  "You are Runtype's evaluation expert: a rigorous, impartial judge of AI agent and flow behavior. Your job is to decide whether ONE run of an AI system met ONE plain-language criterion written by the system's builder.",
38784
38833
  "",
38785
- 'You are given the criterion (what this flow or agent is supposed to do \u2014 the only standard you grade against), the case name, an optional expected answer for reference, and the run transcript: an indexed record of the steps that ran and every tool call with its inputs and outputs (labeled "[message N]" and "[tool_call N]"), followed by the final output.',
38834
+ `You are given the criterion (what this flow or agent is supposed to do \u2014 the only standard you grade against), the case name, an optional expected answer for reference, and the run transcript: an indexed record of the steps that ran and every tool call with its inputs and outputs (labeled "[message N]" and "[tool_call N]"), followed by the final output. For conversation-seeded cases, the transcript opens with the seeded conversation \u2014 the dialogue the run was replying to. It is context the system was given, not something the run produced: use it to understand what the final output is responding to, and never grade the seeded turns themselves against the criterion. The transcript may also include a "Deterministic check results" section: the pass/fail outcomes of the suite's automated checks, already decided before you were called. Treat those results as settled ground truth.`,
38786
38835
  "",
38787
38836
  "How to judge:",
38788
38837
  '1. Read the criterion first and decide what evidence it demands. A process criterion ("confirms X before Y", "never calls Z", "asks first") is judged on the trajectory \u2014 what the system actually did. An outcome criterion ("answers the question", "matches the expected answer", "right tone") is judged on the final output. Many criteria need both.',
@@ -38790,6 +38839,7 @@ var EVAL_JUDGE_SYSTEM_PROMPT = [
38790
38839
  "3. Judge whether a required action occurred when it mattered. Never demand a rigid, exact step ordering unless the criterion explicitly requires one; incidental extra steps or interleaved calls are not failures.",
38791
38840
  "4. Grade only the criterion you were given. Do not reward or punish anything outside it: not verbosity or brevity, not style, not parts of the run the criterion doesn't mention, and not whether you would have approached the task differently.",
38792
38841
  "5. When the transcript is truncated or no trajectory was captured, judge what you can see. If what you can see cannot settle the criterion, decline \u2014 do not guess in either direction.",
38842
+ '6. Do not re-litigate the deterministic checks. Whether a tool was or was not called, a step ran, the run completed, or the output contains a required string is already settled by the "Deterministic check results" shown as ground truth \u2014 take those outcomes as given, never re-assert or contradict them, and do not make your verdict hinge on restating one. Your job is the qualitative substance those structural checks cannot decide.',
38793
38843
  "",
38794
38844
  "Reason first, then decide: in one paragraph, walk through the specific evidence for and against the criterion BEFORE settling on a verdict, and never rewrite your reasoning to justify a verdict you already picked.",
38795
38845
  "",
@@ -38798,7 +38848,7 @@ var EVAL_JUDGE_SYSTEM_PROMPT = [
38798
38848
  '- "fail" \u2014 the criterion is clearly not met on the evidence shown.',
38799
38849
  '- "insufficient_evidence" \u2014 what you were shown cannot settle this criterion. This is the honest answer, not a failure; use it instead of guessing.',
38800
38850
  "",
38801
- 'Cite the transcript entries your verdict rests on as an array of {"kind": "message"|"tool_call", "index": N}, using the exact labeled indices. An empty array is correct when the final output alone (which has no labeled index) is the evidence.',
38851
+ 'Cite the transcript entries your verdict rests on as an array of {"kind": "message"|"tool_call", "index": N}, using the exact labeled indices. An empty array is correct when the evidence is the final output or the seeded conversation (neither has a labeled index).',
38802
38852
  "",
38803
38853
  'Return ONLY a JSON object of the form {"reasoning": "<one paragraph>", "verdict": "pass"|"fail"|"insufficient_evidence", "evidence": [{"kind": "message"|"tool_call", "index": <integer>}]}. Do not include any text outside the JSON object.',
38804
38854
  "",
@@ -39162,6 +39212,14 @@ var MODEL_FAMILY_PROVIDER_IDS = {
39162
39212
  "google": "gemini-3.5-flash",
39163
39213
  "vercel": "google/gemini-3.5-flash"
39164
39214
  },
39215
+ "gemini-3-5-flash-lite": {
39216
+ "google": "gemini-3.5-flash-lite",
39217
+ "vercel": "google/gemini-3.5-flash-lite"
39218
+ },
39219
+ "gemini-3-6-flash": {
39220
+ "google": "gemini-3.6-flash",
39221
+ "vercel": "google/gemini-3.6-flash"
39222
+ },
39165
39223
  "gemini-3-flash": {
39166
39224
  "google": "gemini-3-flash-preview"
39167
39225
  },
@@ -39196,6 +39254,14 @@ var MODEL_FAMILY_PROVIDER_IDS = {
39196
39254
  "google": "gemini-3.5-flash",
39197
39255
  "vercel": "google/gemini-3.5-flash"
39198
39256
  },
39257
+ "gemini-3.5-flash-lite": {
39258
+ "google": "gemini-3.5-flash-lite",
39259
+ "vercel": "google/gemini-3.5-flash-lite"
39260
+ },
39261
+ "gemini-3.6-flash": {
39262
+ "google": "gemini-3.6-flash",
39263
+ "vercel": "google/gemini-3.6-flash"
39264
+ },
39199
39265
  "gemini-embedding-001": {
39200
39266
  "google": "gemini-embedding-001"
39201
39267
  },
@@ -39532,7 +39598,11 @@ var MODEL_FAMILY_PROVIDER_IDS = {
39532
39598
  "grok-voice-think-fast-1.0": {
39533
39599
  "vercel": "xai/grok-voice-think-fast-1.0"
39534
39600
  },
39601
+ "hy3": {
39602
+ "vercel": "tencent/hy3"
39603
+ },
39535
39604
  "inkling": {
39605
+ "togetherai": "togetherai/thinkingmachines/Inkling",
39536
39606
  "vercel": "thinkingmachines/inkling"
39537
39607
  },
39538
39608
  "interfaze-beta": {
@@ -39595,23 +39665,23 @@ var MODEL_FAMILY_PROVIDER_IDS = {
39595
39665
  "kimi-k3": {
39596
39666
  "vercel": "moonshotai/kimi-k3"
39597
39667
  },
39598
- "lfm2-24b-a2b": {
39599
- "togetherai": "togetherai/LiquidAI/LFM2-24B-A2B"
39668
+ "laguna-s-2-1": {
39669
+ "vercel": "poolside/laguna-s-2.1"
39600
39670
  },
39601
- "LiquidAI/LFM2-24B-A2B": {
39602
- "togetherai": "togetherai/LiquidAI/LFM2-24B-A2B"
39671
+ "laguna-s-2-1-free": {
39672
+ "vercel": "poolside/laguna-s-2.1-free"
39603
39673
  },
39604
- "llama-3-2-11b": {
39605
- "vercel": "meta/llama-3.2-11b"
39674
+ "laguna-s-2.1": {
39675
+ "vercel": "poolside/laguna-s-2.1"
39606
39676
  },
39607
- "llama-3-2-1b": {
39608
- "vercel": "meta/llama-3.2-1b"
39677
+ "laguna-s-2.1-free": {
39678
+ "vercel": "poolside/laguna-s-2.1-free"
39609
39679
  },
39610
- "llama-3-2-3b": {
39611
- "vercel": "meta/llama-3.2-3b"
39680
+ "lfm2-24b-a2b": {
39681
+ "togetherai": "togetherai/LiquidAI/LFM2-24B-A2B"
39612
39682
  },
39613
- "llama-3-2-90b": {
39614
- "vercel": "meta/llama-3.2-90b"
39683
+ "LiquidAI/LFM2-24B-A2B": {
39684
+ "togetherai": "togetherai/LiquidAI/LFM2-24B-A2B"
39615
39685
  },
39616
39686
  "llama-3-3-70b-instruct-turbo": {
39617
39687
  "togetherai": "togetherai/meta-llama/Llama-3.3-70B-Instruct-Turbo"
@@ -39622,18 +39692,6 @@ var MODEL_FAMILY_PROVIDER_IDS = {
39622
39692
  "llama-3.1-8b": {
39623
39693
  "vercel": "meta/llama-3.1-8b"
39624
39694
  },
39625
- "llama-3.2-11b": {
39626
- "vercel": "meta/llama-3.2-11b"
39627
- },
39628
- "llama-3.2-1b": {
39629
- "vercel": "meta/llama-3.2-1b"
39630
- },
39631
- "llama-3.2-3b": {
39632
- "vercel": "meta/llama-3.2-3b"
39633
- },
39634
- "llama-3.2-90b": {
39635
- "vercel": "meta/llama-3.2-90b"
39636
- },
39637
39695
  "llama-3.3-70b": {
39638
39696
  "vercel": "meta/llama-3.3-70b"
39639
39697
  },
@@ -40039,6 +40097,9 @@ var MODEL_FAMILY_PROVIDER_IDS = {
40039
40097
  "text-embedding-ada-002": {
40040
40098
  "openai": "text-embedding-ada-002"
40041
40099
  },
40100
+ "thinkingmachines/Inkling": {
40101
+ "togetherai": "togetherai/thinkingmachines/Inkling"
40102
+ },
40042
40103
  "trinity-large": {
40043
40104
  "vercel": "arcee-ai/trinity-large-thinking"
40044
40105
  },
@@ -45079,6 +45140,70 @@ var MOCK_INVENTORY_LEVELS = MOCK_PRODUCTS.flatMap(
45079
45140
  sku: variant.sku
45080
45141
  }))
45081
45142
  );
45143
+ var LOCAL_INFERENCE_PROTOCOL_VERSION = 1;
45144
+ var LocalInferenceSelectionSchema = external_exports.object({
45145
+ sessionId: external_exports.string().uuid(),
45146
+ model: external_exports.string().trim().min(1).max(256),
45147
+ backend: external_exports.literal("ollama")
45148
+ });
45149
+ var LocalInferenceMessageSchema = external_exports.object({
45150
+ role: external_exports.enum(["system", "user", "assistant"]),
45151
+ content: external_exports.string().max(1e6)
45152
+ });
45153
+ var LocalInferenceInvokeSchema = external_exports.object({
45154
+ type: external_exports.literal("inference.invoke"),
45155
+ protocolVersion: external_exports.literal(LOCAL_INFERENCE_PROTOCOL_VERSION),
45156
+ invocationId: external_exports.string().uuid(),
45157
+ model: external_exports.string().trim().min(1).max(256),
45158
+ messages: external_exports.array(LocalInferenceMessageSchema).min(1).max(500),
45159
+ temperature: external_exports.number().finite().min(0).max(2).optional(),
45160
+ maxTokens: external_exports.number().int().positive().max(131072).optional()
45161
+ });
45162
+ var LocalInferenceServerFrameSchema = external_exports.discriminatedUnion("type", [
45163
+ LocalInferenceInvokeSchema,
45164
+ external_exports.object({
45165
+ type: external_exports.literal("inference.cancel"),
45166
+ protocolVersion: external_exports.literal(LOCAL_INFERENCE_PROTOCOL_VERSION),
45167
+ invocationId: external_exports.string().uuid()
45168
+ }),
45169
+ external_exports.object({
45170
+ type: external_exports.literal("session.connected"),
45171
+ protocolVersion: external_exports.literal(LOCAL_INFERENCE_PROTOCOL_VERSION),
45172
+ sessionId: external_exports.string().uuid()
45173
+ })
45174
+ ]);
45175
+ var LocalInferenceClientFrameSchema = external_exports.discriminatedUnion("type", [
45176
+ external_exports.object({
45177
+ type: external_exports.literal("session.ready"),
45178
+ protocolVersion: external_exports.literal(LOCAL_INFERENCE_PROTOCOL_VERSION)
45179
+ }),
45180
+ external_exports.object({
45181
+ type: external_exports.literal("inference.chunk"),
45182
+ protocolVersion: external_exports.literal(LOCAL_INFERENCE_PROTOCOL_VERSION),
45183
+ invocationId: external_exports.string().uuid(),
45184
+ sequence: external_exports.number().int().nonnegative(),
45185
+ text: external_exports.string().max(256e3)
45186
+ }),
45187
+ external_exports.object({
45188
+ type: external_exports.literal("inference.complete"),
45189
+ protocolVersion: external_exports.literal(LOCAL_INFERENCE_PROTOCOL_VERSION),
45190
+ invocationId: external_exports.string().uuid(),
45191
+ sequence: external_exports.number().int().nonnegative(),
45192
+ finishReason: external_exports.string().max(64).optional(),
45193
+ usage: external_exports.object({
45194
+ inputTokens: external_exports.number().int().nonnegative().max(1e8).optional(),
45195
+ outputTokens: external_exports.number().int().nonnegative().max(1e8).optional()
45196
+ }).optional()
45197
+ }),
45198
+ external_exports.object({
45199
+ type: external_exports.literal("inference.error"),
45200
+ protocolVersion: external_exports.literal(LOCAL_INFERENCE_PROTOCOL_VERSION),
45201
+ invocationId: external_exports.string().uuid(),
45202
+ sequence: external_exports.number().int().nonnegative(),
45203
+ code: external_exports.enum(["cancelled", "ollama_unavailable", "model_error", "protocol_error"]),
45204
+ message: external_exports.string().min(1).max(2e3)
45205
+ })
45206
+ ]);
45082
45207
  function flattenTextContent(content) {
45083
45208
  if (typeof content === "string") return content;
45084
45209
  return content.filter((p) => p.type === "text" && typeof p.text === "string").map((p) => p.text).join("");
@@ -45379,7 +45504,11 @@ var DispatchRequestSchema = external_exports.object({
45379
45504
  autoAppendMetadata: external_exports.boolean().optional().default(false),
45380
45505
  debugMode: external_exports.boolean().optional().default(false),
45381
45506
  loggingPolicy: external_exports.enum(["default", "on", "off"]).optional(),
45382
- useRuntimePackage: external_exports.boolean().optional().default(false),
45507
+ useRuntimePackage: external_exports.boolean().optional().describe(
45508
+ "Selects the execution engine for a streaming FLOW dispatch (two controls, A4-3). `true` forces the @runtypelabs/runtime lane (subject only to eligibility \u2014 an ineligible flow still folds to legacy silently); `false` forces the legacy engine. When omitted, the `use-runtime-package-flows` rollout flag sets the default engine for this caller. An explicit value always wins over the flag. Left undefined on purpose \u2014 do NOT default it, or the flag-as-default case becomes unreachable."
45509
+ ),
45510
+ /** Route prompt model calls through an attached dashboard browser. */
45511
+ localInference: LocalInferenceSelectionSchema.optional(),
45383
45512
  /**
45384
45513
  * Resume a checkpointed agent-loop execution from its latest (or a
45385
45514
  * specific) iteration-boundary snapshot. Runtime-path only: requires
@@ -45400,6 +45529,18 @@ var DispatchRequestSchema = external_exports.object({
45400
45529
  /** Specific boundary to resume from (time-travel); latest when omitted. */
45401
45530
  iteration: external_exports.number().int().nonnegative().optional()
45402
45531
  }).optional(),
45532
+ /**
45533
+ * Client-executed (local / WebMCP) tool outputs for resuming a
45534
+ * client-tool pause on the runtime agent lane. Keyed by the paused
45535
+ * call's per-call id (`toolu_…` / `call_…`) or, as a fallback, the tool
45536
+ * name; the value is the tool's result. Runtime-path only and consumed
45537
+ * ONLY together with `resumeFrom` — the engine resolves each output
45538
+ * against the checkpoint's pending calls, injects the tool-call/result
45539
+ * message pairs so the model sees its prior calls, and re-pauses for any
45540
+ * unresolved parallel siblings. Passthrough-typed so a client can
45541
+ * resolve arbitrary tool return values.
45542
+ */
45543
+ clientToolOutputs: external_exports.record(external_exports.string(), external_exports.unknown()).optional(),
45403
45544
  environment: external_exports.enum(["development", "production"]).optional().default("development"),
45404
45545
  createVersion: external_exports.boolean().optional().default(false),
45405
45546
  versionType: external_exports.enum(["published", "draft", "test", "virtual"]).optional(),
@@ -45431,12 +45572,29 @@ var DispatchRequestSchema = external_exports.object({
45431
45572
  storeResults: true,
45432
45573
  autoAppendMetadata: false,
45433
45574
  debugMode: false,
45434
- useRuntimePackage: false,
45575
+ // useRuntimePackage intentionally omitted — absent = silent request, so
45576
+ // the `use-runtime-package-flows` flag decides the default engine (A4-3).
45435
45577
  environment: "development",
45436
45578
  createVersion: false
45437
45579
  })
45438
45580
  }).refine((data) => data.flow || data.agent, {
45439
45581
  message: "Either 'flow' or 'agent' configuration must be provided"
45582
+ }).superRefine((data, ctx) => {
45583
+ if (!data.options.localInference) return;
45584
+ if (!data.options.useRuntimePackage) {
45585
+ ctx.addIssue({
45586
+ code: "custom",
45587
+ path: ["options", "useRuntimePackage"],
45588
+ message: "Local inference requires useRuntimePackage to be enabled"
45589
+ });
45590
+ }
45591
+ if (data.options.modelOverride) {
45592
+ ctx.addIssue({
45593
+ code: "custom",
45594
+ path: ["options", "modelOverride"],
45595
+ message: "Local inference cannot be combined with modelOverride"
45596
+ });
45597
+ }
45440
45598
  }).superRefine((data, ctx) => {
45441
45599
  if (data.agent?.agentType !== "claude_managed") return;
45442
45600
  if (!hasUsableClaudeManagedSeed(data.messages ?? [])) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@runtypelabs/cli",
3
- "version": "2.31.1",
3
+ "version": "2.31.3",
4
4
  "description": "Command-line interface for Runtype AI platform",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -25,9 +25,9 @@
25
25
  "react": "^19.2.4",
26
26
  "rosie-skills": "0.8.1",
27
27
  "yaml": "^2.9.0",
28
- "@runtypelabs/ink-components": "0.3.5",
29
- "@runtypelabs/sdk": "6.2.0",
30
- "@runtypelabs/terminal-animations": "0.2.2"
28
+ "@runtypelabs/terminal-animations": "0.2.2",
29
+ "@runtypelabs/sdk": "6.3.0",
30
+ "@runtypelabs/ink-components": "0.3.5"
31
31
  },
32
32
  "devDependencies": {
33
33
  "@runtypelabs/persona": "4.8.0",
@@ -41,7 +41,7 @@
41
41
  "tsx": "^4.7.1",
42
42
  "typescript": "^6.0.3",
43
43
  "vitest": "^4.1.0",
44
- "@runtypelabs/shared": "3.6.0"
44
+ "@runtypelabs/shared": "3.8.0"
45
45
  },
46
46
  "engines": {
47
47
  "node": ">=22.12.0"