@runtypelabs/cli 2.33.10 → 2.33.12

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 +174 -38
  2. package/package.json +5 -5
package/dist/index.js CHANGED
@@ -15130,7 +15130,7 @@ function date4(params) {
15130
15130
  // ../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/classic/external.js
15131
15131
  config(en_default());
15132
15132
 
15133
- // ../shared/dist/chunk-2I6N7MAS.mjs
15133
+ // ../shared/dist/chunk-4A6WJ3NY.mjs
15134
15134
  var AGENT_EXECUTION_STATUSES = [
15135
15135
  "queued",
15136
15136
  "running",
@@ -15148,7 +15148,20 @@ var RUNTYPE_LEGACY_ATTRIBUTE_ALIASES = {
15148
15148
  [RUNTYPE_TURN_INDEX]: ["runtype.agent.turnIndex"]
15149
15149
  };
15150
15150
 
15151
- // ../shared/dist/chunk-ZVLLZDS7.mjs
15151
+ // ../shared/dist/chunk-UVKHP6H3.mjs
15152
+ var CANONICAL_LOG_COLUMN_SET = {
15153
+ // @snake-case-ok-start: R2 SQL / Iceberg column naming convention
15154
+ event_id: true,
15155
+ retention_class: true,
15156
+ retention_key: true,
15157
+ canonicalized_at: true,
15158
+ source_ingest_id: true,
15159
+ source_ingest_ts: true
15160
+ // @snake-case-ok-end
15161
+ };
15162
+ var CANONICAL_LOG_COLUMNS = Object.keys(CANONICAL_LOG_COLUMN_SET);
15163
+
15164
+ // ../shared/dist/chunk-BB6EPGHC.mjs
15152
15165
  var DEFAULT_BEDROCK_REGION = "us-east-1";
15153
15166
  var DEFAULT_VERTEX_LOCATION = "us-central1";
15154
15167
  var PROVIDER_SECRET_SPECS = [
@@ -16534,6 +16547,29 @@ var MANUAL_PROVIDER_MAP_OVERRIDES = {
16534
16547
  "mixlayer": "z-ai/glm-5.2",
16535
16548
  "vercel": "zai/glm-5.2"
16536
16549
  },
16550
+ // DeepSeek V4 Pro: Cloudflare only publishes the date-pinned build, so every
16551
+ // id form's Workers AI id carries the `-0813` suffix.
16552
+ //
16553
+ // The two bare families merge over a generated map that already supplies their
16554
+ // `vercel` id, so only the Workers AI id needs declaring. The two SLASH forms
16555
+ // have no generated entry at all, so their `vercel` id must be declared
16556
+ // explicitly: `getDefaultProviderMapping` would otherwise synthesize
16557
+ // `deepseek/deepseek/deepseek-v4-pro` (it prepends the inferred creator to the
16558
+ // whole id), sending the fallback rung to a listing that does not exist.
16559
+ "deepseek-v4-pro": {
16560
+ "workers-ai": "@cf/deepseek-ai/deepseek-v4-pro-0813"
16561
+ },
16562
+ "deepseek-v4-pro-0813": {
16563
+ "workers-ai": "@cf/deepseek-ai/deepseek-v4-pro-0813"
16564
+ },
16565
+ "deepseek/deepseek-v4-pro": {
16566
+ "workers-ai": "@cf/deepseek-ai/deepseek-v4-pro-0813",
16567
+ "vercel": "deepseek/deepseek-v4-pro"
16568
+ },
16569
+ "deepseek/deepseek-v4-pro-0813": {
16570
+ "workers-ai": "@cf/deepseek-ai/deepseek-v4-pro-0813",
16571
+ "vercel": "deepseek/deepseek-v4-pro-0813"
16572
+ },
16537
16573
  // MiniMax M2.7: Vercel's gateway-form id.
16538
16574
  "minimax-m2.7": {
16539
16575
  "vercel": "minimax/minimax-m2.7"
@@ -35366,7 +35402,7 @@ function resolveFallback(parsed, context, tracking, options = {}) {
35366
35402
  }
35367
35403
  var templateEngine = new SimpleTemplateEngine();
35368
35404
 
35369
- // ../shared/dist/chunk-XKOLWBNC.mjs
35405
+ // ../shared/dist/chunk-K74FEBL5.mjs
35370
35406
  var jsonPatchOperationSchema = external_exports.object({
35371
35407
  op: external_exports.enum(["add", "remove", "replace", "move", "copy", "test"]),
35372
35408
  /** JSON Pointer (RFC 6901) into the state document. `''` addresses the root. */
@@ -35627,7 +35663,9 @@ var unifiedMediaCompleteEventSchema = external_exports.object({
35627
35663
  });
35628
35664
  var unifiedArtifactStartEventSchema = external_exports.object({
35629
35665
  type: external_exports.literal("artifact_start"),
35630
- id: external_exports.string(),
35666
+ // Non-empty by contract: an id-less artifact frame cannot be correlated
35667
+ // or closed by a consumer (parity finding H24).
35668
+ id: external_exports.string().min(1),
35631
35669
  artifactType: external_exports.enum(["markdown", "component"]),
35632
35670
  title: external_exports.string().optional(),
35633
35671
  component: external_exports.string().optional(),
@@ -35643,14 +35681,18 @@ var unifiedArtifactStartEventSchema = external_exports.object({
35643
35681
  });
35644
35682
  var unifiedArtifactDeltaEventSchema = external_exports.object({
35645
35683
  type: external_exports.literal("artifact_delta"),
35646
- id: external_exports.string(),
35684
+ // Non-empty by contract: an id-less artifact frame cannot be correlated
35685
+ // or closed by a consumer (parity finding H24).
35686
+ id: external_exports.string().min(1),
35647
35687
  delta: external_exports.string(),
35648
35688
  executionId: external_exports.string().optional(),
35649
35689
  seq: external_exports.number().optional()
35650
35690
  });
35651
35691
  var unifiedArtifactUpdateEventSchema = external_exports.object({
35652
35692
  type: external_exports.literal("artifact_update"),
35653
- id: external_exports.string(),
35693
+ // Non-empty by contract: an id-less artifact frame cannot be correlated
35694
+ // or closed by a consumer (parity finding H24).
35695
+ id: external_exports.string().min(1),
35654
35696
  component: external_exports.string(),
35655
35697
  props: external_exports.record(external_exports.string(), external_exports.unknown()),
35656
35698
  executionId: external_exports.string().optional(),
@@ -35658,7 +35700,9 @@ var unifiedArtifactUpdateEventSchema = external_exports.object({
35658
35700
  });
35659
35701
  var unifiedArtifactCompleteEventSchema = external_exports.object({
35660
35702
  type: external_exports.literal("artifact_complete"),
35661
- id: external_exports.string(),
35703
+ // Non-empty by contract: an id-less artifact frame cannot be correlated
35704
+ // or closed by a consumer (parity finding H24).
35705
+ id: external_exports.string().min(1),
35662
35706
  executionId: external_exports.string().optional(),
35663
35707
  seq: external_exports.number().optional()
35664
35708
  });
@@ -35942,7 +35986,7 @@ var UNIFIED_SSE_EVENT_TYPES = _unifiedTuple([
35942
35986
  "custom"
35943
35987
  ]);
35944
35988
 
35945
- // ../shared/dist/chunk-H7KYB7QQ.mjs
35989
+ // ../shared/dist/chunk-P77RRB4I.mjs
35946
35990
  var mediaAnnotationsSchema = external_exports.object({
35947
35991
  audience: external_exports.array(external_exports.enum(["user", "assistant"])).optional()
35948
35992
  });
@@ -41703,11 +41747,37 @@ function collectFlowStructureIssues(flowData, deps, buckets) {
41703
41747
  );
41704
41748
  }
41705
41749
  const idToStepIndexes = /* @__PURE__ */ new Map();
41750
+ const collectStepId = (id, topLevelIndex) => {
41751
+ if (typeof id !== "string" || id.length === 0) return;
41752
+ const existing = idToStepIndexes.get(id) || [];
41753
+ existing.push(topLevelIndex);
41754
+ idToStepIndexes.set(id, existing);
41755
+ };
41756
+ const walkNestedStepIds = (node, topLevelIndex, depth) => {
41757
+ if (!isObjectRecord(node)) return;
41758
+ if (node.type !== "conditional" || !isObjectRecord(node.config)) return;
41759
+ if (depth >= MAX_CONDITIONAL_NESTING_DEPTH) return;
41760
+ const config3 = node.config;
41761
+ const visit = (nested) => {
41762
+ if (!isObjectRecord(nested)) return;
41763
+ collectStepId(nested.id, topLevelIndex);
41764
+ walkNestedStepIds(nested, topLevelIndex, depth + 1);
41765
+ };
41766
+ if (Array.isArray(config3.branches)) {
41767
+ for (const branch of config3.branches) {
41768
+ if (!isObjectRecord(branch) || !Array.isArray(branch.steps)) continue;
41769
+ for (const nested of branch.steps) visit(nested);
41770
+ }
41771
+ }
41772
+ for (const key of CONDITIONAL_BRANCH_STEP_KEYS) {
41773
+ const arr = config3[key];
41774
+ if (!Array.isArray(arr)) continue;
41775
+ for (const nested of arr) visit(nested);
41776
+ }
41777
+ };
41706
41778
  for (const [index, step] of flowData.flowSteps.entries()) {
41707
- if (typeof step.id !== "string" || step.id.length === 0) continue;
41708
- const existing = idToStepIndexes.get(step.id) || [];
41709
- existing.push(index);
41710
- idToStepIndexes.set(step.id, existing);
41779
+ collectStepId(step.id, index);
41780
+ walkNestedStepIds(step, index, 0);
41711
41781
  }
41712
41782
  for (const [id, indexes] of idToStepIndexes.entries()) {
41713
41783
  if (indexes.length <= 1) continue;
@@ -42196,11 +42266,42 @@ var API_INPROCESS_CAPABILITY_MATRIX = {
42196
42266
  // `vendored-export` (it rides the same host `CodeModeExecutor` seam as
42197
42267
  // `transformDataCodeModeTools`) — see {@link VENDORED_EXPORT_REFOLDS}.
42198
42268
  // Rollback lever: revert the bit to `true` (plus its test).
42199
- version: "2026-08-11.1",
42269
+ // Bumped 2026-08-14.1: graduates `approvalSteps` (the `fold-approval-steps`
42270
+ // item). The runtime flow lane now ARMS a prompt step's own
42271
+ // `config.tools.approval` (`stepAuthoredApprovalPolicy` +
42272
+ // `resolveSeamApprovalConfig` in `packages/runtime/src/engine/flow-engine.ts`)
42273
+ // and PAUSES on it (`flow-stream.ts` -> `approval_start` + an
42274
+ // `approval-paused` outcome -> `saveRuntimeApprovalPauseState` ->
42275
+ // `runRuntimeFlowContinuation`). The `hasApprovalSteps` FACT is still computed
42276
+ // for decision attribution AND for the SURFACE gate that replaced this bit: a
42277
+ // host that cannot answer an approval prompt does not declare
42278
+ // `approvalPauseHosting` and folds with `ineligible:surface-approval-pause`
42279
+ // (`playground-flow-dispatch.ts`). Rollback lever: revert this bit to `true`
42280
+ // (plus its tests) — the surface gate is independent and can stay.
42281
+ // Bumped 2026-08-16.1: graduates `batchInputMode` (the `fold-batch-input-mode`
42282
+ // item, D-095). The fold rested on a mis-stated premise: its comment described
42283
+ // batch EXECUTION (#6091 — the record-batch surface, which has no cross-record
42284
+ // conversational context and routes through its own eligibility probe), but the
42285
+ // FACT fires on STEP-level `config.inputMode === 'batch'`, a field that exists
42286
+ // on exactly three step schemas (`generate-embedding`, `store-vector`,
42287
+ // `upsert-record`) and never on a prompt step. All three runtime executors
42288
+ // already implement the batch branch
42289
+ // (`packages/runtime/src/engine/context-steps/{generate-embedding,store-vector,
42290
+ // upsert-record}.ts`), and `apps/api/src/lib/flow-execution/` has ZERO
42291
+ // `inputMode` references — so the bit folded a capability the runtime lane
42292
+ // already had. The `hasBatchInputMode` FACT stays computed for decision
42293
+ // attribution. Rollback lever: revert this bit to `true` (plus its tests).
42294
+ version: "2026-08-16.1",
42200
42295
  unsupportedStepTypes: ["wait-until", "crawl"],
42201
42296
  unsupportedFeatures: {
42202
- approvalSteps: true,
42203
- batchInputMode: true,
42297
+ approvalSteps: false,
42298
+ // SUPPORTED as of 2026-08-16.1 (D-095): step-level `inputMode: 'batch'` on
42299
+ // `generate-embedding` / `store-vector` / `upsert-record` runs on the
42300
+ // runtime flow lane through each executor's own batch branch — the same
42301
+ // per-item fan-out, chunking, and summary shape the api executors produce.
42302
+ // `hasBatchInputMode` stays computed for decision attribution.
42303
+ // Rollback lever: revert this bit to `true` (plus its tests).
42304
+ batchInputMode: false,
42204
42305
  claudeManagedAgent: true,
42205
42306
  inexpressibleVectorStep: true,
42206
42307
  unresolvableAgentRef: true,
@@ -42376,7 +42477,18 @@ var VENDORED_EXPORT_CAPABILITY_MATRIX = {
42376
42477
  // Bumped 2026-08-08.1: `transformDataMcpServers` graduated on the base and
42377
42478
  // becomes the fourth documented re-fold here — the discovered tools still
42378
42479
  // need the host `CodeModeExecutor` to be bound as sandbox callables.
42379
- version: "2026-08-11.1",
42480
+ // Bumped 2026-08-14.1: `approvalSteps` graduated on the base and becomes a
42481
+ // documented re-fold here — the ENGINE half is portable, the api-owned
42482
+ // approval-resume PLANE is not.
42483
+ // Bumped 2026-08-16.1: `batchInputMode` graduated on the base and is INHERITED
42484
+ // here rather than re-folded — the batch branches are pure engine (per-item
42485
+ // fan-out over the SAME `RecordStore` / `VectorStore` / `EmbeddingProvider`
42486
+ // seams single mode already uses; no host executor is involved), so a
42487
+ // container that runs the step at all runs its batch branch. The bit is also
42488
+ // inert on this matrix by construction: `inputMode` exists on exactly
42489
+ // `generate-embedding` / `store-vector` / `upsert-record`, and all three are
42490
+ // already in `unsupportedStepTypes` below, so the step-type fold fires first.
42491
+ version: "2026-08-16.1",
42380
42492
  unsupportedStepTypes: [
42381
42493
  // ── Carried over from api-inprocess: durable-host-only step types. A
42382
42494
  // self-contained container has no durable host (BYOC §3.3 / S0 — the
@@ -42408,6 +42520,23 @@ var VENDORED_EXPORT_CAPABILITY_MATRIX = {
42408
42520
  // customer-wired VectorStore / EmbeddingProvider can host these; the
42409
42521
  // container ships neither. Graduation lever: bundle a pgvector
42410
42522
  // VectorStore + a provider-backed EmbeddingProvider in the export.
42523
+ //
42524
+ // TRIPWIRE for whoever pulls that lever (D-095 item 3, 2026-08-16): the
42525
+ // `inexpressibleVectorStepIds` FACT is target-SHARED, and it narrowed to
42526
+ // admit record-coupled `vector-search` onto the api lane. That narrowing is
42527
+ // inert HERE only because the step type is folded on this line — remove the
42528
+ // line and a record/pgvector search becomes eligible for a container that
42529
+ // has no `records` table. A bundled generic pgvector index is NOT that
42530
+ // fulfilment. Graduating `vector-search` therefore also owes either a
42531
+ // vendored re-fold bit (the {@link VENDORED_EXPORT_REFOLDS} pattern) or a
42532
+ // container-side `records` fulfilment.
42533
+ //
42534
+ // This tripwire is EXECUTABLE, not just prose: the "folds a record-coupled
42535
+ // vector-search even though api-inprocess now admits it" case in
42536
+ // `runtime-eligibility.test.ts` fails if this entry is removed. The
42537
+ // full-surface test below cannot catch it — it iterates
42538
+ // `unsupportedStepTypes` itself, so a deleted entry simply stops being
42539
+ // asserted.
42411
42540
  "generate-embedding",
42412
42541
  "vector-search",
42413
42542
  "store-vector",
@@ -42442,14 +42571,37 @@ var VENDORED_EXPORT_CAPABILITY_MATRIX = {
42442
42571
  // which are strictly stricter.
42443
42572
  unsupportedFeatures: {
42444
42573
  ...API_INPROCESS_CAPABILITY_MATRIX.unsupportedFeatures,
42574
+ // VENDORED RE-FOLD (2026-08-14.1, no longer carried over): api-inprocess
42575
+ // graduated `approvalSteps` because the API host owns the approval-resume
42576
+ // plane (`ApprovalResumeStore` + KV `ResumeState` + the `/approve`
42577
+ // continuation leg). A self-contained container wires none of it and the
42578
+ // runtime's default `ApprovalResumeStore` is the fail-closed NoOp, so an
42579
+ // armed gate pauses into a prompt nobody can answer. See
42580
+ // {@link VENDORED_EXPORT_REFOLDS} for the graduation lever.
42445
42581
  approvalSteps: true,
42446
- // api-inprocess fold; the runtime flow engine derives no approval config. Graduation: port the approval rail.
42447
- batchInputMode: true,
42448
- // api-inprocess fold; batch has no conversational context (BYOC §3.2).
42582
+ // `batchInputMode` INHERITS the base SUPPORTED (`false`) as of 2026-08-16.1
42583
+ // (D-095) and is deliberately NOT restated as a literal — the 2026-08-06.3
42584
+ // re-decision pass exists because a restated literal went stale when its
42585
+ // base graduated. Two independent reasons it is not a re-fold: (1) the batch
42586
+ // branches are ENGINE-owned — a per-item loop over the same `RecordStore` /
42587
+ // `VectorStore` / `EmbeddingProvider` seams single mode uses, with no host
42588
+ // executor seam of the `CodeModeExecutor` / `ManagedFetchExecutor` /
42589
+ // `TransformSandboxRouter` kind {@link VENDORED_EXPORT_REFOLDS} exists for;
42590
+ // (2) it cannot change a decision here anyway, since `inputMode` exists only
42591
+ // on `generate-embedding` / `store-vector` / `upsert-record` and all three
42592
+ // are folded by `unsupportedStepTypes` above.
42449
42593
  claudeManagedAgent: true,
42450
42594
  // api-inprocess fold; exported execute-agent rejects claude_managed/external (BYOC §3.6, D-030/D-031).
42595
+ // api-inprocess fold; no vector seam in a self-contained container. The BIT
42596
+ // is unchanged by D-095 item 3, but the FACT feeding it narrowed on
42597
+ // 2026-08-16 to admit record-coupled `vector-search`. Re-fold check
42598
+ // performed and recorded rather than assumed: no re-fold entry is added,
42599
+ // because `vector-search` / `store-vector` are already in
42600
+ // `unsupportedStepTypes` above, so the step-type fold fires first and the
42601
+ // narrowing cannot change a decision on this target. Same reasoning
42602
+ // `batchInputMode` carries. The tripwire guarding that argument sits on the
42603
+ // step-type entries themselves.
42451
42604
  inexpressibleVectorStep: true,
42452
- // api-inprocess fold; no vector seam in a self-contained container.
42453
42605
  unresolvableAgentRef: true,
42454
42606
  // api-inprocess fold; execute-agent resolves only against the embedded registry (ADR 0014).
42455
42607
  // Nested-prompt dispatch is ENGINE-owned and works identically in a
@@ -43047,11 +43199,6 @@ var userProfileFeaturesSchema = external_exports.object({
43047
43199
  // this staging-only experiment in production. The command hands off to the
43048
43200
  // standalone Runtown app rather than mounting it inside the dashboard.
43049
43201
  enableRuntown: external_exports.boolean(),
43050
- // Gates the dashboard skill "Security scan" affordance (the
43051
- // `POST /v1/skills/scan` verdict UI). Driven by the `enable-skill-scanner`
43052
- // boolean flag (fail-closed until a rule enables it). The scan ROUTE stays
43053
- // reachable; this only hides the UI while the scanner rollout completes.
43054
- enableSkillScanner: external_exports.boolean(),
43055
43202
  // Gates the Massive Web Render surfaces in the dashboard (Settings
43056
43203
  // integration card + the fetch-url step's Massive mode option). Driven by
43057
43204
  // the `enable-massive-web-render` boolean flag (fail-closed in production
@@ -46888,17 +47035,6 @@ var appRoutingDocSchema = external_exports.object({
46888
47035
  }).optional(),
46889
47036
  updatedAt: external_exports.string()
46890
47037
  });
46891
- var SKILL_SCAN_HARD_BLOCK_CATEGORIES = [
46892
- "credential_exfiltration",
46893
- "prompt_injection",
46894
- "mcp_tool_poisoning",
46895
- "data_exfiltration",
46896
- "privilege_escalation"
46897
- ];
46898
- function normalizeCategoryToken(value) {
46899
- return value.toLowerCase().replace(/[^a-z0-9]/g, "");
46900
- }
46901
- var HARD_BLOCK_NEEDLES = SKILL_SCAN_HARD_BLOCK_CATEGORIES.map(normalizeCategoryToken);
46902
47038
  var DEFAULT_STEP_TIMEOUT_MS = 5 * 60 * 1e3;
46903
47039
  var DEFAULT_FLOW_TIMEOUT_MS = 15 * 60 * 1e3;
46904
47040
 
@@ -69169,8 +69305,8 @@ import { execFileSync } from "child_process";
69169
69305
  // src/lib/persona-init.ts
69170
69306
  init_credential_store();
69171
69307
 
69172
- // ../../node_modules/.pnpm/@runtypelabs+persona@4.17.0/node_modules/@runtypelabs/persona/dist/codegen.js
69173
- var S = "4.17.0";
69308
+ // ../../node_modules/.pnpm/@runtypelabs+persona@4.17.1/node_modules/@runtypelabs/persona/dist/codegen.js
69309
+ var S = "4.17.1";
69174
69310
  var x = S;
69175
69311
  function $(e) {
69176
69312
  return e?.cdnBase?.trim().replace(/\/+$/, "").replace(/[\\'"<>`]/g, (r) => `%${r.charCodeAt(0).toString(16).toUpperCase().padStart(2, "0")}`) || `https://cdn.jsdelivr.net/npm/@runtypelabs/persona@${x}/dist`;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@runtypelabs/cli",
3
- "version": "2.33.10",
3
+ "version": "2.33.12",
4
4
  "description": "Command-line interface for Runtype AI platform",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -27,12 +27,12 @@
27
27
  "rosie-skills": "0.8.1",
28
28
  "yaml": "^2.9.0",
29
29
  "@runtypelabs/ink-components": "0.3.6",
30
- "@runtypelabs/sdk": "7.3.1",
31
- "@runtypelabs/terminal-animations": "0.2.3"
30
+ "@runtypelabs/terminal-animations": "0.2.3",
31
+ "@runtypelabs/sdk": "8.0.0"
32
32
  },
33
33
  "devDependencies": {
34
34
  "@modelcontextprotocol/server": "2.0.0",
35
- "@runtypelabs/persona": "4.17.0",
35
+ "@runtypelabs/persona": "4.17.1",
36
36
  "@types/express": "^5.0.6",
37
37
  "@types/micromatch": "^4.0.9",
38
38
  "@types/node": "^25.3.3",
@@ -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.24.0"
46
+ "@runtypelabs/shared": "3.26.0"
47
47
  },
48
48
  "engines": {
49
49
  "node": ">=22.12.0"