@runtypelabs/cli 2.32.3 → 2.32.4

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 +175 -21
  2. package/package.json +5 -5
package/dist/index.js CHANGED
@@ -15395,7 +15395,7 @@ var edgeContextPayloadSchema = external_exports.object({
15395
15395
  // ../shared/dist/chunk-SCJRL6LP.mjs
15396
15396
  var MAX_DURABLE_POLL_ATTEMPTS = 1e3;
15397
15397
 
15398
- // ../shared/dist/chunk-UB6BK3TZ.mjs
15398
+ // ../shared/dist/chunk-FXAUIBCA.mjs
15399
15399
  function getNestedValue(obj, path20) {
15400
15400
  let normalizedPath = path20;
15401
15401
  normalizedPath = normalizedPath.replace(/^\$\.?/, "");
@@ -15786,7 +15786,17 @@ function resolveFallback(parsed, context, tracking, options = {}) {
15786
15786
  }
15787
15787
  var templateEngine = new SimpleTemplateEngine();
15788
15788
 
15789
- // ../shared/dist/chunk-MN4NECP7.mjs
15789
+ // ../shared/dist/chunk-HSXV5L7C.mjs
15790
+ var jsonPatchOperationSchema = external_exports.object({
15791
+ op: external_exports.enum(["add", "remove", "replace", "move", "copy", "test"]),
15792
+ /** JSON Pointer (RFC 6901) into the state document. `''` addresses the root. */
15793
+ path: external_exports.string(),
15794
+ /** Operand for `add` / `replace` / `test`. */
15795
+ value: external_exports.unknown().optional(),
15796
+ /** Source pointer for `move` / `copy`. */
15797
+ from: external_exports.string().optional()
15798
+ });
15799
+ var jsonPatchSchema = external_exports.array(jsonPatchOperationSchema);
15790
15800
  var tokensSchema = external_exports.object({ input: external_exports.number(), output: external_exports.number() });
15791
15801
  var wireStopReasonSchema = external_exports.enum([
15792
15802
  "end_turn",
@@ -16074,6 +16084,19 @@ var unifiedSourceEventSchema = external_exports.object({
16074
16084
  title: external_exports.string().optional(),
16075
16085
  sourceType: external_exports.string().optional()
16076
16086
  }).passthrough();
16087
+ var unifiedStateSnapshotEventSchema = external_exports.object({
16088
+ ...unifiedBase,
16089
+ type: external_exports.literal("state_snapshot"),
16090
+ /** The complete state document (open JSON, verbatim). */
16091
+ state: external_exports.record(external_exports.string(), external_exports.unknown()),
16092
+ iteration: external_exports.number().optional()
16093
+ });
16094
+ var unifiedStateDeltaEventSchema = external_exports.object({
16095
+ ...unifiedBase,
16096
+ type: external_exports.literal("state_delta"),
16097
+ patch: jsonPatchSchema,
16098
+ iteration: external_exports.number().optional()
16099
+ });
16077
16100
  var unifiedToolStartEventSchema = external_exports.object({
16078
16101
  ...unifiedBase,
16079
16102
  type: external_exports.literal("tool_start"),
@@ -16242,6 +16265,8 @@ var unifiedSSEEventSchema = external_exports.discriminatedUnion("type", [
16242
16265
  unifiedArtifactUpdateEventSchema,
16243
16266
  unifiedArtifactCompleteEventSchema,
16244
16267
  unifiedSourceEventSchema,
16268
+ unifiedStateSnapshotEventSchema,
16269
+ unifiedStateDeltaEventSchema,
16245
16270
  unifiedToolStartEventSchema,
16246
16271
  unifiedToolInputDeltaEventSchema,
16247
16272
  unifiedToolInputCompleteEventSchema,
@@ -16278,6 +16303,8 @@ var UNIFIED_SSE_EVENT_TYPES = _unifiedTuple([
16278
16303
  "artifact_update",
16279
16304
  "artifact_complete",
16280
16305
  "source",
16306
+ "state_snapshot",
16307
+ "state_delta",
16281
16308
  "tool_start",
16282
16309
  "tool_input_delta",
16283
16310
  "tool_input_complete",
@@ -16464,6 +16491,19 @@ var agentMediaEventSchema = external_exports.object({
16464
16491
  toolName: external_exports.string(),
16465
16492
  media: external_exports.array(mediaContentPartSchema)
16466
16493
  });
16494
+ var agentStateSnapshotEventSchema = external_exports.object({
16495
+ ...baseAgentEvent,
16496
+ type: external_exports.literal("agent_state_snapshot"),
16497
+ /** The complete state document. Verbatim — never summarized. */
16498
+ state: external_exports.record(external_exports.string(), external_exports.unknown()),
16499
+ iteration: external_exports.number().optional()
16500
+ });
16501
+ var agentStateDeltaEventSchema = external_exports.object({
16502
+ ...baseAgentEvent,
16503
+ type: external_exports.literal("agent_state_delta"),
16504
+ patch: jsonPatchSchema,
16505
+ iteration: external_exports.number().optional()
16506
+ });
16467
16507
  var agentApprovalStartEventSchema = external_exports.object({
16468
16508
  ...baseAgentEvent,
16469
16509
  type: external_exports.literal("agent_approval_start"),
@@ -16609,6 +16649,8 @@ var agentSSEEventSchema = external_exports.discriminatedUnion("type", [
16609
16649
  agentToolInputCompleteEventSchema,
16610
16650
  agentToolCompleteEventSchema,
16611
16651
  agentMediaEventSchema,
16652
+ agentStateSnapshotEventSchema,
16653
+ agentStateDeltaEventSchema,
16612
16654
  agentApprovalStartEventSchema,
16613
16655
  agentApprovalCompleteEventSchema,
16614
16656
  agentAwaitEventSchema,
@@ -17436,6 +17478,14 @@ var toolCallResultEventSchema = external_exports.object({
17436
17478
  content: external_exports.string(),
17437
17479
  role: external_exports.literal("tool").optional()
17438
17480
  });
17481
+ var stateSnapshotEventSchema = external_exports.object({
17482
+ type: external_exports.literal("STATE_SNAPSHOT"),
17483
+ snapshot: external_exports.record(external_exports.string(), external_exports.unknown())
17484
+ });
17485
+ var stateDeltaEventSchema = external_exports.object({
17486
+ type: external_exports.literal("STATE_DELTA"),
17487
+ delta: jsonPatchSchema
17488
+ });
17439
17489
  var reasoningStartEventSchema = external_exports.object({
17440
17490
  type: external_exports.literal("REASONING_START"),
17441
17491
  messageId: external_exports.string()
@@ -17477,6 +17527,8 @@ var agUiSSEEventSchema = external_exports.discriminatedUnion("type", [
17477
17527
  toolCallArgsEventSchema,
17478
17528
  toolCallEndEventSchema,
17479
17529
  toolCallResultEventSchema,
17530
+ stateSnapshotEventSchema,
17531
+ stateDeltaEventSchema,
17480
17532
  reasoningStartEventSchema,
17481
17533
  reasoningMessageStartEventSchema,
17482
17534
  reasoningMessageContentEventSchema,
@@ -22382,6 +22434,71 @@ var AGENT_EXECUTION_STATUSES = [
22382
22434
  "interrupted"
22383
22435
  ];
22384
22436
  var agentExecutionStatusSchema = external_exports.enum(AGENT_EXECUTION_STATUSES);
22437
+ var END_USER_USAGE_PERIODS = ["billing_period", "7d", "30d", "90d"];
22438
+ var endUserUsageQuerySchema = external_exports.object({
22439
+ productId: external_exports.string().min(1),
22440
+ productTenantId: external_exports.string().min(1).optional(),
22441
+ period: external_exports.enum(END_USER_USAGE_PERIODS).optional(),
22442
+ days: external_exports.coerce.number().int().min(1).max(93).optional(),
22443
+ sort: external_exports.enum(["spend", "executions"]).default("spend"),
22444
+ limit: external_exports.coerce.number().int().min(1).max(200).default(50)
22445
+ }).refine((value) => !(value.period && value.days), {
22446
+ message: "Use either period or days, not both",
22447
+ path: ["days"]
22448
+ });
22449
+ var endUserUsageMoneySchema = external_exports.object({
22450
+ spendThousandthsCent: external_exports.number().int().nonnegative(),
22451
+ spendDollars: external_exports.number().nonnegative()
22452
+ });
22453
+ var endUserUsageResponseSchema = external_exports.object({
22454
+ generatedAt: external_exports.string(),
22455
+ period: external_exports.object({
22456
+ startDate: external_exports.string(),
22457
+ endDate: external_exports.string(),
22458
+ days: external_exports.number().int().positive(),
22459
+ preset: external_exports.enum(END_USER_USAGE_PERIODS).optional()
22460
+ }),
22461
+ scope: external_exports.object({
22462
+ productId: external_exports.string(),
22463
+ productTenantId: external_exports.string().nullable()
22464
+ }),
22465
+ /**
22466
+ * Distinct tenant ids with usage in the window, computed independently of
22467
+ * the `productTenantId` filter (most spend first, capped at 200), so a
22468
+ * tenant picker stays complete while a tenant-scoped page is shown.
22469
+ */
22470
+ tenantIds: external_exports.array(external_exports.string()),
22471
+ retention: external_exports.object({
22472
+ attributionStartedAt: external_exports.string().nullable(),
22473
+ earliestAvailableAt: external_exports.string().nullable(),
22474
+ retentionDays: external_exports.literal(93)
22475
+ }),
22476
+ totals: external_exports.object({
22477
+ executions: external_exports.number().int().nonnegative()
22478
+ }).merge(endUserUsageMoneySchema),
22479
+ coverage: external_exports.object({
22480
+ attributedExecutions: external_exports.number().int().nonnegative(),
22481
+ unattributedExecutions: external_exports.number().int().nonnegative(),
22482
+ attributedSpendThousandthsCent: external_exports.number().int().nonnegative(),
22483
+ unattributedSpendThousandthsCent: external_exports.number().int().nonnegative()
22484
+ }),
22485
+ endUsers: external_exports.array(
22486
+ external_exports.object({
22487
+ endUser: external_exports.object({
22488
+ id: external_exports.string(),
22489
+ name: external_exports.string().nullable(),
22490
+ email: external_exports.string().nullable(),
22491
+ productTenantId: external_exports.string().nullable()
22492
+ }),
22493
+ executions: external_exports.number().int().nonnegative(),
22494
+ costPerExecutionDollars: external_exports.number().nonnegative().nullable(),
22495
+ lastSeenAt: external_exports.string()
22496
+ }).merge(endUserUsageMoneySchema)
22497
+ ),
22498
+ unattributed: external_exports.object({
22499
+ executions: external_exports.number().int().nonnegative()
22500
+ }).merge(endUserUsageMoneySchema)
22501
+ });
22385
22502
  var DEFAULT_BEDROCK_REGION = "us-east-1";
22386
22503
  var DEFAULT_VERTEX_LOCATION = "us-central1";
22387
22504
  var PROVIDER_SECRET_SPECS = [
@@ -22600,13 +22717,15 @@ var runtimeArtifactManifestSchema = external_exports.object({
22600
22717
  var KNOWN_FLOW_STEP_TYPES = new Set(FLOW_STEP_TYPES);
22601
22718
  var API_INPROCESS_CAPABILITY_MATRIX = {
22602
22719
  target: "api-inprocess",
22603
- // Bumped 2026-07-30: the IMPLICIT platform-default fallback candidate no
22604
- // longer folds (see `implicitPlatformFallback` below). Carries forward
22720
+ // Bumped 2026-07-31: adds the §A1 `unmaterializedPromptToolRefs` fold (prompt
22721
+ // `toolIds` classes with no runtime lane). Carries forward 2026-07-30: the
22722
+ // IMPLICIT platform-default fallback candidate no longer folds (see
22723
+ // `implicitPlatformFallback` below). Carries forward
22605
22724
  // 2026-07-29.4: api-hosted runtime fulfills managed fetch methods through
22606
22725
  // ManagedFetchExecutor (the managed-fetch fact remains for attribution). The
22607
22726
  // EXPLICIT Layer-2 fallback fold and the remaining parity-audit folds are
22608
22727
  // unchanged.
22609
- version: "2026-07-30.1",
22728
+ version: "2026-07-31.1",
22610
22729
  unsupportedStepTypes: ["wait-until", "crawl"],
22611
22730
  unsupportedFeatures: {
22612
22731
  approvalSteps: true,
@@ -22637,11 +22756,15 @@ var API_INPROCESS_CAPABILITY_MATRIX = {
22637
22756
  unsupportedTransformExecution: true,
22638
22757
  promptMcpServers: true,
22639
22758
  promptArtifacts: true,
22640
- // EXPLICIT author-configured Layer-2 chains stay unsupported: the runtime
22641
- // flow engine cannot run them and cannot synthesize their `usedFallback` /
22642
- // `fallbackModel` / `fallbackExecutions` attribution, so a folded flow would
22643
- // both change behavior and undercount fallback usage.
22644
- fallbackErrorHandling: true,
22759
+ // SUPPORTED as of the fallback-chain port: the runtime flow engine now
22760
+ // executes EXPLICIT author-configured Layer-2 chains and synthesizes their
22761
+ // `usedFallback` / `fallbackModel` / `fallbackExecutions` attribution, so
22762
+ // such a flow stays on the runtime lane instead of folding to legacy. The
22763
+ // `hasFallbackErrorHandling` fact is still computed — it gates the stricter
22764
+ // durable-continuation path (`runtime-durable-continuation.ts`) and provides
22765
+ // decision attribution. Rollback lever: flip this bit to `true` (plus its
22766
+ // test) to restore the fold.
22767
+ fallbackErrorHandling: false,
22645
22768
  // SUPPORTED as of 2026-07-30: the IMPLICIT platform-default chain (the
22646
22769
  // orchestrator's synthesized same-model-next-provider + cross-model rungs
22647
22770
  // for a prompt with NO explicit `errorHandling`) does not fold the flow to
@@ -22658,7 +22781,16 @@ var API_INPROCESS_CAPABILITY_MATRIX = {
22658
22781
  // produce a WRONG result. `hasImplicitPlatformFallbackCandidate` is still
22659
22782
  // computed for decision attribution. Rollback lever: flip this bit to `true`
22660
22783
  // (plus its test) to restore the fold.
22661
- implicitPlatformFallback: false
22784
+ implicitPlatformFallback: false,
22785
+ // §A1 parity-audit BRIDGE fold: a prompt step's `toolIds` carrying a
22786
+ // reference class the runtime lane can neither materialize at export nor
22787
+ // late-resolve at the prompt seam (DB typeids, `tool:<name>` named refs,
22788
+ // `dc:` data connections). The runtime filters those out of the model
22789
+ // request silently, so the fold is what keeps a configured tool from
22790
+ // vanishing. Rollback/graduation lever: as each class gains a lane the fact
22791
+ // stops firing on its own (it reads the post-export definition); flip this
22792
+ // bit to `false` only once EVERY class has one.
22793
+ unmaterializedPromptToolRefs: true
22662
22794
  }
22663
22795
  };
22664
22796
  var DURABLE_HOSTED_STEP_TYPES = /* @__PURE__ */ new Set(["wait-until", "crawl"]);
@@ -39322,6 +39454,9 @@ var userProfileFeaturesSchema = external_exports.object({
39322
39454
  // rule enables it). When false the dashboard renders byte-identical to today
39323
39455
  // (personal sentinel, personal/team chooser, personal Schematic identify).
39324
39456
  enableWorkspaceModel: external_exports.boolean(),
39457
+ // Gates the End users subview in Settings → Usage. Driven by the
39458
+ // `enable-end-user-usage-analytics` Flagship rollout flag.
39459
+ enableEndUserUsageAnalytics: external_exports.boolean(),
39325
39460
  // Gates the "OAuth apps" settings tab in the dashboard (self-serve OAuth
39326
39461
  // client registration). Driven by the `enable-self-serve-oauth-clients`
39327
39462
  // boolean flag (fail-closed in production until a rule enables it; non-prod
@@ -45749,6 +45884,7 @@ var AgentInputSchema = external_exports.object({
45749
45884
  frequencyPenalty: external_exports.number().min(-2).max(2).optional(),
45750
45885
  presencePenalty: external_exports.number().min(-2).max(2).optional(),
45751
45886
  seed: external_exports.number().int().optional(),
45887
+ maxTokens: agentRuntimeConfigSchema.shape.maxTokens,
45752
45888
  tools: external_exports.object({
45753
45889
  toolIds: external_exports.array(external_exports.string()).optional(),
45754
45890
  toolConfigs: external_exports.record(external_exports.string(), external_exports.record(external_exports.string(), external_exports.any())).optional(),
@@ -45782,7 +45918,8 @@ var AgentInputSchema = external_exports.object({
45782
45918
  toolPool: external_exports.array(external_exports.string()),
45783
45919
  description: external_exports.string().optional(),
45784
45920
  timeoutMs: external_exports.number().int().min(1e3).max(6e5).optional()
45785
- }).optional()
45921
+ }).optional(),
45922
+ toolSearch: toolSearchConfigSchema.optional()
45786
45923
  }).optional(),
45787
45924
  artifacts: VirtualAgentArtifactConfigSchema.optional(),
45788
45925
  loopConfig: AgentLoopConfigSchema.optional(),
@@ -45790,13 +45927,29 @@ var AgentInputSchema = external_exports.object({
45790
45927
  model: external_exports.string(),
45791
45928
  systemPrompt: external_exports.string().optional()
45792
45929
  }).optional().nullable(),
45930
+ reasoning: agentRuntimeConfigSchema.shape.reasoning,
45931
+ voice: agentRuntimeConfigSchema.shape.voice,
45932
+ errorHandling: agentRuntimeConfigSchema.shape.errorHandling,
45933
+ loggingPolicy: agentRuntimeConfigSchema.shape.loggingPolicy,
45934
+ piiRedaction: agentRuntimeConfigSchema.shape.piiRedaction,
45935
+ temporal: agentRuntimeConfigSchema.shape.temporal,
45793
45936
  memory: memoryConfigSchema.optional(),
45794
45937
  // Agent Sandbox (Linux computer). When enabled (and the enable-agent-sandbox
45795
45938
  // flag is on), dispatch injects the sandbox builtin tools + system-prompt
45796
45939
  // frame — mirroring the saved-agent execute route so the two hosted-agent
45797
45940
  // entry points stay in lockstep.
45798
- sandbox: sandboxConfigSchema.optional()
45941
+ sandbox: sandboxConfigSchema.optional(),
45942
+ tenancyStrategy: agentRuntimeConfigSchema.shape.tenancyStrategy
45799
45943
  }).superRefine((val, ctx) => {
45944
+ const unsupported = val.tenancyStrategy !== void 0 ? [["tenancyStrategy"], "tenancyStrategy is server-authored; save it on an agent"] : val.voice !== void 0 ? [["voice"], "voice is unsupported by agent dispatch"] : val.tools?.toolSearch !== void 0 ? [["tools", "toolSearch"], "toolSearch is unsupported by quick-agent dispatch"] : Object.keys(val.temporal ?? {}).some((key) => key !== "timezone") ? [["temporal"], "Only temporal.timezone is supported by agent dispatch"] : void 0;
45945
+ if (unsupported) {
45946
+ const [path20, message] = unsupported;
45947
+ ctx.addIssue({
45948
+ code: "custom",
45949
+ path: path20,
45950
+ message
45951
+ });
45952
+ }
45800
45953
  if (val.agentId) {
45801
45954
  return;
45802
45955
  }
@@ -46555,6 +46708,8 @@ function normalizeCategoryToken(value) {
46555
46708
  return value.toLowerCase().replace(/[^a-z0-9]/g, "");
46556
46709
  }
46557
46710
  var HARD_BLOCK_NEEDLES = SKILL_SCAN_HARD_BLOCK_CATEGORIES.map(normalizeCategoryToken);
46711
+ var DEFAULT_STEP_TIMEOUT_MS = 5 * 60 * 1e3;
46712
+ var DEFAULT_FLOW_TIMEOUT_MS = 15 * 60 * 1e3;
46558
46713
 
46559
46714
  // src/config/env.ts
46560
46715
  function getApiUrl() {
@@ -48118,7 +48273,8 @@ flowsCommand.command("run <id>").description("Execute a flow via dispatch").opti
48118
48273
  if (!apiKey) return;
48119
48274
  const client = createCliClient(apiKey);
48120
48275
  const payload = {
48121
- flow: { id: flowId }
48276
+ flow: { id: flowId },
48277
+ options: { streamResponse: options.stream }
48122
48278
  };
48123
48279
  if (options.record) {
48124
48280
  payload.record = { id: options.record };
@@ -48159,10 +48315,7 @@ Error: ${err.message}`));
48159
48315
  } else {
48160
48316
  console.log(chalk5.gray("Executing flow..."));
48161
48317
  try {
48162
- const result = await client.dispatch.execute({
48163
- ...payload,
48164
- options: { streamResponse: false }
48165
- });
48318
+ const result = await client.dispatch.execute(payload);
48166
48319
  console.log(chalk5.green("Flow execution complete"));
48167
48320
  printJson(result);
48168
48321
  } catch (error51) {
@@ -49795,7 +49948,8 @@ promptsCommand.command("test <id>").description("Test a prompt with input").opti
49795
49948
  }
49796
49949
  }
49797
49950
  ]
49798
- }
49951
+ },
49952
+ options: { streamResponse: options.stream }
49799
49953
  };
49800
49954
  if (options.input) {
49801
49955
  payload.messages = [{ role: "user", content: options.input }];
@@ -49827,7 +49981,6 @@ Error: ${err.message}`));
49827
49981
  } else {
49828
49982
  console.log(chalk8.gray("Testing prompt..."));
49829
49983
  try {
49830
- payload.streamResponse = false;
49831
49984
  const result = await client.post("/dispatch", payload);
49832
49985
  console.log(chalk8.green("Prompt test complete"));
49833
49986
  if (options.json) {
@@ -66443,7 +66596,8 @@ agentsCommand.command("execute <id>").description("Execute an agent").requiredOp
66443
66596
  if (!apiKey) return;
66444
66597
  const client = createCliClient(apiKey);
66445
66598
  const payload = {
66446
- messages: [{ role: "user", content: options.message }]
66599
+ messages: [{ role: "user", content: options.message }],
66600
+ streamResponse: options.stream
66447
66601
  };
66448
66602
  if (options.stream) {
66449
66603
  console.log(chalk25.gray("Starting agent..."));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@runtypelabs/cli",
3
- "version": "2.32.3",
3
+ "version": "2.32.4",
4
4
  "description": "Command-line interface for Runtype AI platform",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -26,9 +26,9 @@
26
26
  "react": "^19.2.4",
27
27
  "rosie-skills": "0.8.1",
28
28
  "yaml": "^2.9.0",
29
- "@runtypelabs/terminal-animations": "0.2.2",
30
- "@runtypelabs/sdk": "6.4.0",
31
- "@runtypelabs/ink-components": "0.3.5"
29
+ "@runtypelabs/ink-components": "0.3.5",
30
+ "@runtypelabs/sdk": "6.5.0",
31
+ "@runtypelabs/terminal-animations": "0.2.2"
32
32
  },
33
33
  "devDependencies": {
34
34
  "@modelcontextprotocol/server": "2.0.0",
@@ -43,7 +43,7 @@
43
43
  "tsx": "^4.7.1",
44
44
  "typescript": "^6.0.3",
45
45
  "vitest": "^4.1.0",
46
- "@runtypelabs/shared": "3.10.0"
46
+ "@runtypelabs/shared": "3.11.0"
47
47
  },
48
48
  "engines": {
49
49
  "node": ">=22.12.0"