@runtypelabs/cli 2.56.1 → 2.56.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 +90 -44
  2. package/package.json +5 -5
package/dist/index.js CHANGED
@@ -9871,7 +9871,7 @@ function isSupportedElicitationSchema(schema) {
9871
9871
  const parsed = schemaNode.safeParse(schema);
9872
9872
  return parsed.success && typeof parsed.data !== "boolean" && parsed.data.type === "object";
9873
9873
  }
9874
- // ../shared/dist/chunk-DBw0Iwzv.mjs
9874
+ // ../shared/dist/chunk-CXNdCxH5.mjs
9875
9875
  /** The Tenancy Assurance Levels, in the order `tenancyAssuranceLevelSchema` is built from. */
9876
9876
  const TENANCY_ASSURANCE_LEVELS = [
9877
9877
  "anonymous",
@@ -9914,7 +9914,7 @@ function identityAudienceAllowed(audience, patterns) {
9914
9914
  return HOSTNAME_LABEL.test(label);
9915
9915
  });
9916
9916
  }
9917
- // ../shared/dist/chunk-DK3Dfg4W.mjs
9917
+ // ../shared/dist/chunk-DreMwtf_.mjs
9918
9918
  function extractSecretReferences(template) {
9919
9919
  const keys = /* @__PURE__ */ new Set();
9920
9920
  let match;
@@ -10505,7 +10505,7 @@ function separateToolIds(toolIds) {
10505
10505
  function isDataConnectionToolId(toolId) {
10506
10506
  return toolId.startsWith("dc:");
10507
10507
  }
10508
- // ../shared/dist/chunk-C8GiaVaQ.mjs
10508
+ // ../shared/dist/chunk-Bi36OeG1.mjs
10509
10509
  /**
10510
10510
  * The reserved model-facing name of the agent state write tool
10511
10511
  * (`packages/runtime/src/engine/state-write-tool.ts`). The model is told to call
@@ -11539,7 +11539,7 @@ object$4({
11539
11539
  externalId: string$2().min(1).max(500).optional().describe("The conversation id in the source system. Re-creating with the same system and externalId returns the existing conversation with imported: false instead of a duplicate."),
11540
11540
  importedAt: string$2().datetime({ offset: true }).optional()
11541
11541
  });
11542
- // ../shared/dist/chunk-CaFRoW36.mjs
11542
+ // ../shared/dist/chunk-Ckhkn6K-.mjs
11543
11543
  const voiceInterruptionModeSchema = _enum([
11544
11544
  "none",
11545
11545
  "cancel",
@@ -12918,32 +12918,65 @@ const AGENT_OUTPUT_VALIDATOR_TYPES = [
12918
12918
  "no-action",
12919
12919
  "json-schema"
12920
12920
  ];
12921
+ const validatorMaxBouncesSchema = number$2().int().min(0).max(10).optional();
12922
+ const validatorTimeoutMsSchema = number$2().int().min(1).max(3e5).optional();
12923
+ /** One `config.output.validators` entry: a built-in, a runtime-registered custom validator, a saved flow or a saved tool. */
12924
+ const agentOutputValidatorSchema = discriminatedUnion("type", [
12925
+ object$4({
12926
+ type: _enum(AGENT_OUTPUT_VALIDATOR_TYPES),
12927
+ maxBounces: validatorMaxBouncesSchema,
12928
+ /** The JSON Schema a `json-schema` validator checks the parsed final output against. */
12929
+ schema: record$2(string$2(), unknown()).optional()
12930
+ }).strict().superRefine((entry, ctx) => {
12931
+ if (entry.type === "json-schema" && entry.schema === void 0) ctx.addIssue({
12932
+ code: "custom",
12933
+ path: ["schema"],
12934
+ message: "A json-schema validator needs a schema"
12935
+ });
12936
+ if (entry.type !== "json-schema" && entry.schema !== void 0) ctx.addIssue({
12937
+ code: "custom",
12938
+ path: ["schema"],
12939
+ message: "Only a json-schema validator takes a schema"
12940
+ });
12941
+ }),
12942
+ object$4({
12943
+ type: literal("custom"),
12944
+ name: string$2().min(1).max(128),
12945
+ maxBounces: validatorMaxBouncesSchema,
12946
+ timeoutMs: validatorTimeoutMsSchema
12947
+ }).strict(),
12948
+ object$4({
12949
+ type: literal("flow"),
12950
+ flowId: string$2().min(1),
12951
+ outputVariable: string$2().min(1).max(128).optional(),
12952
+ maxBounces: validatorMaxBouncesSchema,
12953
+ timeoutMs: validatorTimeoutMsSchema
12954
+ }).strict(),
12955
+ object$4({
12956
+ type: literal("tool"),
12957
+ toolId: string$2().min(1),
12958
+ maxBounces: validatorMaxBouncesSchema,
12959
+ timeoutMs: validatorTimeoutMsSchema
12960
+ }).strict()
12961
+ ]);
12962
+ /** The key a validator's bounces, failures and errors are recorded under: the built-in type, else `custom:`/`flow:`/`tool:` plus its reference. */
12963
+ function agentOutputValidatorKey(entry) {
12964
+ if (entry.type === "custom") return `custom:${entry.name}`;
12965
+ if (entry.type === "flow") return `flow:${entry.flowId}`;
12966
+ if (entry.type === "tool") return `tool:${entry.toolId}`;
12967
+ return entry.type;
12968
+ }
12921
12969
  /** `config.output`: checks the agent loop runs on its final text before it settles. */
12922
- const agentOutputConfigSchema = object$4({ validators: array(object$4({
12923
- type: _enum(AGENT_OUTPUT_VALIDATOR_TYPES),
12924
- maxBounces: number$2().int().min(0).max(10).optional(),
12925
- /** The JSON Schema a `json-schema` validator checks the parsed final output against. */
12926
- schema: record$2(string$2(), unknown()).optional()
12927
- }).strict().superRefine((entry, ctx) => {
12928
- if (entry.type === "json-schema" && entry.schema === void 0) ctx.addIssue({
12929
- code: "custom",
12930
- path: ["schema"],
12931
- message: "A json-schema validator needs a schema"
12932
- });
12933
- if (entry.type !== "json-schema" && entry.schema !== void 0) ctx.addIssue({
12934
- code: "custom",
12935
- path: ["schema"],
12936
- message: "Only a json-schema validator takes a schema"
12937
- });
12938
- })).max(AGENT_OUTPUT_VALIDATOR_TYPES.length).superRefine((entries, ctx) => {
12970
+ const agentOutputConfigSchema = object$4({ validators: array(agentOutputValidatorSchema).max(16).superRefine((entries, ctx) => {
12939
12971
  const seen = /* @__PURE__ */ new Set();
12940
12972
  for (const [index, entry] of entries.entries()) {
12941
- if (seen.has(entry.type)) ctx.addIssue({
12973
+ const key = agentOutputValidatorKey(entry);
12974
+ if (seen.has(key)) ctx.addIssue({
12942
12975
  code: "custom",
12943
12976
  path: [index, "type"],
12944
- message: `Duplicate validator ${entry.type}`
12977
+ message: `Duplicate validator ${key}`
12945
12978
  });
12946
- seen.add(entry.type);
12979
+ seen.add(key);
12947
12980
  }
12948
12981
  }).optional() }).strict();
12949
12982
  /**
@@ -20330,6 +20363,16 @@ function collectFpoQuestionSetRefs(value, path = "") {
20330
20363
  visit(value, path, 0);
20331
20364
  return found;
20332
20365
  }
20366
+ /**
20367
+ * Narrow an inline-agent definition to the v2 nested shape. A v2 agent carries
20368
+ * a top-level `config` and no top-level `model`; the flat ≤1.1 shape requires a
20369
+ * top-level `model` and never has `config`. An external or Claude Managed v2 agent
20370
+ * may omit `config`, so its `externalConfig`/`claudeManagedConfig` marks it too.
20371
+ */
20372
+ function isNestedFpoAgent(agent) {
20373
+ if (!agent || typeof agent !== "object" || "model" in agent) return false;
20374
+ return "config" in agent || "externalConfig" in agent || "claudeManagedConfig" in agent;
20375
+ }
20333
20376
  const createPolicySchema = _enum([
20334
20377
  "create",
20335
20378
  "skip",
@@ -20623,16 +20666,6 @@ const agentDefinitionSchemaV2 = object$4({
20623
20666
  capabilities: array(fpoAgentCapabilitySchema).max(50).refine((caps) => new Set(caps.map((c) => c.toolName)).size === caps.length, { message: "capability toolName must be unique" }).optional(),
20624
20667
  createPolicy: createPolicySchema
20625
20668
  }).strict();
20626
- /**
20627
- * Narrow an inline-agent definition to the v2 nested shape. A v2 agent carries
20628
- * a top-level `config` and no top-level `model`; the flat ≤1.1 shape requires a
20629
- * top-level `model` and never has `config`. An external or Claude Managed v2 agent
20630
- * may omit `config`, so its `externalConfig`/`claudeManagedConfig` marks it too.
20631
- */
20632
- function isNestedFpoAgent(agent) {
20633
- if (!agent || typeof agent !== "object" || "model" in agent) return false;
20634
- return "config" in agent || "externalConfig" in agent || "claudeManagedConfig" in agent;
20635
- }
20636
20669
  const capabilitySchema = object$4({
20637
20670
  id: string$2().min(1),
20638
20671
  name: string$2().min(1),
@@ -22252,7 +22285,7 @@ const UNIFIED_TERMINAL_OUTCOMES = [
22252
22285
  "error",
22253
22286
  "aborted"
22254
22287
  ];
22255
- // ../shared/dist/chunk-D6RzKJhj.mjs
22288
+ // ../shared/dist/chunk-CylpViOl.mjs
22256
22289
  const tokensSchema$1 = object$4({
22257
22290
  input: number$2(),
22258
22291
  output: number$2()
@@ -22376,7 +22409,10 @@ const unifiedExecutionCompleteEventSchema = object$4({
22376
22409
  code: string$2(),
22377
22410
  message: string$2()
22378
22411
  })).optional(),
22379
- output: object$4({ validation: object$4({ failed: array(string$2()) }).optional() }).optional()
22412
+ output: object$4({ validation: object$4({
22413
+ failed: array(string$2()).optional(),
22414
+ errored: array(string$2()).optional()
22415
+ }).optional() }).optional()
22380
22416
  });
22381
22417
  /** Terminal failure (distinct from the non-terminal `error` event). */
22382
22418
  const unifiedExecutionErrorEventSchema = object$4({
@@ -22719,6 +22755,7 @@ const unifiedToolCompleteEventSchema = object$4({
22719
22755
  success: boolean(),
22720
22756
  result: unknown().optional(),
22721
22757
  error: string$2().optional(),
22758
+ completedAt: string$2().optional(),
22722
22759
  executionTime: number$2().optional(),
22723
22760
  iteration: number$2().optional(),
22724
22761
  stepId: string$2().optional(),
@@ -22918,7 +22955,7 @@ const UNIFIED_SSE_EVENT_TYPES = _unifiedTuple([
22918
22955
  "ping",
22919
22956
  "custom"
22920
22957
  ]);
22921
- // ../shared/dist/chunk-DeckL0vW.mjs
22958
+ // ../shared/dist/chunk-BuxVUmPs.mjs
22922
22959
  /** {@link MediaContentPart} — mirror of the union in `../media-types`. */
22923
22960
  const mediaAnnotationsSchema = object$4({ audience: array(_enum(["user", "assistant"])).optional() });
22924
22961
  const mediaContentPartSchema = union([
@@ -25934,10 +25971,11 @@ Object.freeze({
25934
25971
  gatewayModelId: "alibaba/qwen3-embedding-0.6b",
25935
25972
  provider: "alibaba",
25936
25973
  name: "qwen3-embedding-0.6b (Qwen)",
25937
- description: "Qwen's small instruction-aware embedding model. Routed through Vercel AI Gateway only.",
25974
+ description: "Qwen's small instruction-aware embedding model. Served on Workers AI, or Vercel AI Gateway on a tenant key.",
25938
25975
  dimensions: 1024,
25939
25976
  maxTokens: 32768,
25940
- supportsDimensionsParameter: false
25977
+ supportsDimensionsParameter: false,
25978
+ workersAiModelId: "@cf/qwen/qwen3-embedding-0.6b"
25941
25979
  })
25942
25980
  });
25943
25981
  Object.freeze({
@@ -26170,7 +26208,7 @@ function loadBrandConfig(env) {
26170
26208
  }
26171
26209
  loadBrandConfig();
26172
26210
  BRAND_CONFIGS[DEFAULT_BRAND_NAME];
26173
- // ../shared/dist/chunk-9Z7T8b_g.mjs
26211
+ // ../shared/dist/chunk-DQAiGaWP.mjs
26174
26212
  const ARCHITECTURE_PREVIEW_SURFACE_TYPES = [
26175
26213
  "chat",
26176
26214
  "api",
@@ -27631,6 +27669,7 @@ object$4({
27631
27669
  externalTelemetryAllowed: boolean().optional(),
27632
27670
  simulationsAvailable: boolean().optional(),
27633
27671
  enableDelegateToRuntype: boolean().optional(),
27672
+ enableDelegateToOtto: boolean().optional(),
27634
27673
  signalsConfigured: boolean().optional()
27635
27674
  });
27636
27675
  const SLACK_REQUIRED_BOT_SCOPES = [
@@ -56646,9 +56685,9 @@ clientTokensCommand.command("regenerate <id>").description("Regenerate a client
56646
56685
  await waitUntilExit();
56647
56686
  });
56648
56687
  clientTokensCommand.addCommand(clientTokenEnsureCommand);
56649
- // ../../node_modules/.pnpm/@runtypelabs+persona@4.33.0/node_modules/@runtypelabs/persona/dist/codegen.js
56688
+ // ../../node_modules/.pnpm/@runtypelabs+persona@4.34.0/node_modules/@runtypelabs/persona/dist/codegen.js
56650
56689
  function e(e) {
56651
- return e?.cdnBase?.trim().replace(/\/+$/, ``).replace(/[\\'"<>`]/g, (e) => `%${e.charCodeAt(0).toString(16).toUpperCase().padStart(2, `0`)}`) || `https://cdn.jsdelivr.net/npm/@runtypelabs/persona@4.33.0/dist`;
56690
+ return e?.cdnBase?.trim().replace(/\/+$/, ``).replace(/[\\'"<>`]/g, (e) => `%${e.charCodeAt(0).toString(16).toUpperCase().padStart(2, `0`)}`) || `https://cdn.jsdelivr.net/npm/@runtypelabs/persona@4.34.0/dist`;
56652
56691
  }
56653
56692
  function t(e) {
56654
56693
  if (e !== void 0) return typeof e == `string` ? e : Array.isArray(e) ? `[${e.map((e) => e.toString()).join(`, `)}]` : e.toString();
@@ -69071,7 +69110,7 @@ const productKindSchema = _enum([
69071
69110
  "external",
69072
69111
  "spec_only"
69073
69112
  ]);
69074
- // ../shared/dist/chunk-CAo8l3AI.mjs
69113
+ // ../shared/dist/chunk-BM4DAX8-.mjs
69075
69114
  const amount = number$2().finite().nonnegative();
69076
69115
  const tokens = amount.int();
69077
69116
  /** Producer estimates for one turn, independent of Runtype's measured usage and billing. */
@@ -69463,11 +69502,18 @@ const toolProcessCheckSchema = discriminatedUnion("assert", [
69463
69502
  assert: literal("budget"),
69464
69503
  maxTurns: number$2().int().positive().max(1e3).optional(),
69465
69504
  maxTokens: number$2().int().positive().optional()
69505
+ }),
69506
+ object$4({
69507
+ assert: literal("must_call"),
69508
+ /** A completed call to any one of these counts; a designed rename counts under its shown or its server name. */
69509
+ tools: array(toolNameSchema).min(1).max(20),
69510
+ /** Completed calls the listed tools must add up to; defaults to 1. */
69511
+ minCalls: number$2().int().positive().max(1e3).optional()
69466
69512
  })
69467
69513
  ]);
69468
69514
  /**
69469
69515
  * A Simulations-only grader over how an episode used its tools: wrong tool choices, argument formats, repeated
69470
- * fetches and a turn or token budget. Deterministic; eval suites refuse it.
69516
+ * fetches, a turn or token budget and a required call. Deterministic; eval suites refuse it.
69471
69517
  */
69472
69518
  const toolProcessGraderSchema = object$4({
69473
69519
  kind: literal("tool_process"),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@runtypelabs/cli",
3
- "version": "2.56.1",
3
+ "version": "2.56.3",
4
4
  "description": "Command-line interface for Runtype AI platform",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -13,7 +13,7 @@
13
13
  "@modelcontextprotocol/core": "2.3.1",
14
14
  "@napi-rs/keyring": "2.1.0",
15
15
  "@runtypelabs/ink-components": "0.3.13",
16
- "@runtypelabs/sdk": "11.12.0",
16
+ "@runtypelabs/sdk": "11.13.1",
17
17
  "@runtypelabs/terminal-animations": "0.2.4",
18
18
  "add-mcp": "2.0.0",
19
19
  "chalk": "^5.3.0",
@@ -37,9 +37,9 @@
37
37
  "devDependencies": {
38
38
  "@modelcontextprotocol/server": "2.3.1",
39
39
  "@runtypelabs/device-bridge": "0.2.5",
40
- "@runtypelabs/model-execution": "0.40.8",
41
- "@runtypelabs/persona": "4.33.0",
42
- "@runtypelabs/shared": "3.103.0",
40
+ "@runtypelabs/model-execution": "0.41.1",
41
+ "@runtypelabs/persona": "4.34.0",
42
+ "@runtypelabs/shared": "3.104.3",
43
43
  "@types/express": "^5.0.6",
44
44
  "@types/micromatch": "^4.0.9",
45
45
  "@types/node": "^25.3.3",