@runtypelabs/cli 2.16.16 → 2.16.17

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 +139 -43
  2. package/package.json +3 -3
package/dist/index.js CHANGED
@@ -15581,6 +15581,10 @@ var agentApprovalStartEventSchema = external_exports.object({
15581
15581
  toolName: external_exports.string(),
15582
15582
  toolType: external_exports.string(),
15583
15583
  description: external_exports.string(),
15584
+ // Agent-authored justification for this specific call, extracted from the
15585
+ // reserved `_approvalReason` parameter. It is the agent's claim about its
15586
+ // intent — UIs must attribute it to the agent and render it as plain text.
15587
+ reason: external_exports.string().optional(),
15584
15588
  parameters: external_exports.record(external_exports.string(), external_exports.unknown()).optional(),
15585
15589
  timeout: external_exports.number(),
15586
15590
  startedAt: external_exports.string(),
@@ -15888,7 +15892,13 @@ var stepSkipEventSchema = external_exports.object({
15888
15892
  error: external_exports.string().optional(),
15889
15893
  skippedAt: external_exports.string()
15890
15894
  });
15891
- var stepAwaitEventSchema = external_exports.object({ ...baseFlowEvent, type: external_exports.literal("step_await") }).passthrough();
15895
+ var stepAwaitEventSchema = external_exports.object({
15896
+ ...baseFlowEvent,
15897
+ type: external_exports.literal("step_await"),
15898
+ // Agent-authored justification for an approval-gated tool call
15899
+ // (awaitReason === 'approval_required'); see agentApprovalStartEventSchema.
15900
+ reason: external_exports.string().optional()
15901
+ }).passthrough();
15892
15902
  var toolStartEventSchema = external_exports.object({
15893
15903
  ...baseFlowEvent,
15894
15904
  type: external_exports.literal("tool_start"),
@@ -16215,7 +16225,12 @@ var approvalConfigSchema = external_exports.object({
16215
16225
  * false/undefined: no approval required (default) */
16216
16226
  require: external_exports.union([external_exports.array(external_exports.string()), external_exports.boolean()]).optional(),
16217
16227
  /** Timeout in ms for approval response (default: 300000 = 5 min) */
16218
- timeout: external_exports.number().optional()
16228
+ timeout: external_exports.number().optional(),
16229
+ /** Whether to ask the model for a per-call justification on approval-gated
16230
+ * tools by injecting a reserved optional `_approvalReason` string into the
16231
+ * model-visible parameters schema. The value is stripped before the tool
16232
+ * executes and surfaced to the approver. Default: true (opt out with false). */
16233
+ requestReason: external_exports.boolean().optional()
16219
16234
  });
16220
16235
  var toolSearchConfigSchema = external_exports.object({
16221
16236
  /** Explicit opt-in/out. When omitted, auto-activates if tool count >= threshold. */
@@ -33318,6 +33333,9 @@ var MODEL_FAMILY_PROVIDER_IDS = {
33318
33333
  "claude-4-sonnet": {
33319
33334
  "vercel": "anthropic/claude-4-sonnet"
33320
33335
  },
33336
+ "claude-fable-5": {
33337
+ "vercel": "anthropic/claude-fable-5"
33338
+ },
33321
33339
  "claude-haiku-4-5": {
33322
33340
  "anthropic": "claude-haiku-4-5-20251001",
33323
33341
  "vercel": "anthropic/claude-haiku-4.5"
@@ -34137,6 +34155,7 @@ var MODEL_FAMILY_PROVIDER_IDS = {
34137
34155
  "vercel": "minimax/minimax-m2.5-highspeed"
34138
34156
  },
34139
34157
  "minimax-m2-7": {
34158
+ "general-compute": "general-compute/minimax-m2.7",
34140
34159
  "vercel": "minimax/minimax-m2.7"
34141
34160
  },
34142
34161
  "minimax-m2-7-highspeed": {
@@ -34155,6 +34174,7 @@ var MODEL_FAMILY_PROVIDER_IDS = {
34155
34174
  "vercel": "minimax/minimax-m2.5-highspeed"
34156
34175
  },
34157
34176
  "minimax-m2.7": {
34177
+ "general-compute": "general-compute/minimax-m2.7",
34158
34178
  "vercel": "minimax/minimax-m2.7"
34159
34179
  },
34160
34180
  "minimax-m2.7-highspeed": {
@@ -35539,7 +35559,11 @@ var agentRuntimeConfigSchema = external_exports.object({
35539
35559
  toolCallStrategy: external_exports.enum(["auto", "required", "none"]).optional(),
35540
35560
  approval: external_exports.object({
35541
35561
  require: external_exports.union([external_exports.array(external_exports.string()), external_exports.boolean()]),
35542
- timeout: external_exports.number().optional()
35562
+ timeout: external_exports.number().optional(),
35563
+ /** Opt out of agent-supplied approval reasons (`_approvalReason`
35564
+ * schema injection). Default: true. Mirrors approvalConfigSchema
35565
+ * in tool-types.ts. */
35566
+ requestReason: external_exports.boolean().optional()
35543
35567
  }).optional(),
35544
35568
  perToolLimits: external_exports.record(
35545
35569
  external_exports.string(),
@@ -35638,10 +35662,9 @@ var FULL_PRODUCT_OBJECT_VERSION_1_1 = "1.1";
35638
35662
  var FULL_PRODUCT_OBJECT_VERSION_2_0 = "2.0";
35639
35663
  var createPolicySchema = external_exports.enum(["create", "skip", "manual"]).optional();
35640
35664
  var flowStepSchema = external_exports.object({
35641
- type: external_exports.string().refine(
35642
- (t) => FLOW_STEP_TYPES.includes(t),
35643
- { message: "Invalid flow step type" }
35644
- ),
35665
+ type: external_exports.string().refine((t) => FLOW_STEP_TYPES.includes(t), {
35666
+ message: "Invalid flow step type"
35667
+ }),
35645
35668
  name: external_exports.string().min(1, "Step name is required"),
35646
35669
  config: external_exports.record(external_exports.string(), external_exports.any()).default({}),
35647
35670
  order: external_exports.number().int().nonnegative().optional(),
@@ -35706,13 +35729,15 @@ var agentVoiceConfigSchema = external_exports.object({
35706
35729
  });
35707
35730
  var agentErrorHandlingSchema = external_exports.object({
35708
35731
  onError: external_exports.enum(["fail", "continue", "fallback"]).optional(),
35709
- fallbacks: external_exports.array(external_exports.object({
35710
- type: external_exports.enum(["retry", "model"]),
35711
- model: external_exports.string().optional(),
35712
- temperature: external_exports.number().min(0).max(2).optional(),
35713
- maxTokens: external_exports.number().int().positive().optional(),
35714
- delay: external_exports.number().min(0).max(6e4).optional()
35715
- })).optional()
35732
+ fallbacks: external_exports.array(
35733
+ external_exports.object({
35734
+ type: external_exports.enum(["retry", "model"]),
35735
+ model: external_exports.string().optional(),
35736
+ temperature: external_exports.number().min(0).max(2).optional(),
35737
+ maxTokens: external_exports.number().int().positive().optional(),
35738
+ delay: external_exports.number().min(0).max(6e4).optional()
35739
+ })
35740
+ ).optional()
35716
35741
  });
35717
35742
  var agentArtifactsConfigSchema = external_exports.object({
35718
35743
  enabled: external_exports.literal(true),
@@ -35737,24 +35762,32 @@ var agentMcpServerSchema = external_exports.object({
35737
35762
  var agentToolsConfigSchema2 = external_exports.object({
35738
35763
  toolIds: external_exports.array(external_exports.string()).optional(),
35739
35764
  toolConfigs: external_exports.record(external_exports.string(), external_exports.record(external_exports.string(), external_exports.any())).optional(),
35740
- runtimeTools: external_exports.array(external_exports.object({
35741
- name: external_exports.string().min(1),
35742
- description: external_exports.string().optional(),
35743
- toolType: external_exports.enum(["flow", "custom", "external", "local", "subagent"]).optional(),
35744
- parametersSchema: external_exports.record(external_exports.string(), external_exports.any()).optional(),
35745
- config: external_exports.record(external_exports.string(), external_exports.any())
35746
- })).optional(),
35765
+ runtimeTools: external_exports.array(
35766
+ external_exports.object({
35767
+ name: external_exports.string().min(1),
35768
+ description: external_exports.string().optional(),
35769
+ toolType: external_exports.enum(["flow", "custom", "external", "local", "subagent"]).optional(),
35770
+ parametersSchema: external_exports.record(external_exports.string(), external_exports.any()).optional(),
35771
+ config: external_exports.record(external_exports.string(), external_exports.any())
35772
+ })
35773
+ ).optional(),
35747
35774
  mcpServers: external_exports.array(agentMcpServerSchema).optional(),
35748
35775
  maxToolCalls: external_exports.number().int().min(1).max(100).optional(),
35749
35776
  toolCallStrategy: external_exports.enum(["auto", "required", "none"]).optional(),
35750
35777
  approval: external_exports.object({
35751
35778
  require: external_exports.union([external_exports.array(external_exports.string()), external_exports.boolean()]),
35752
- timeout: external_exports.number().positive().optional()
35779
+ timeout: external_exports.number().positive().optional(),
35780
+ /** Opt out of agent-supplied approval reasons (`_approvalReason` schema
35781
+ * injection). Default: true. Mirrors approvalConfigSchema in tool-types.ts. */
35782
+ requestReason: external_exports.boolean().optional()
35753
35783
  }).optional(),
35754
- perToolLimits: external_exports.record(external_exports.string(), external_exports.object({
35755
- maxCalls: external_exports.number().int().positive().optional(),
35756
- required: external_exports.boolean().optional()
35757
- })).optional(),
35784
+ perToolLimits: external_exports.record(
35785
+ external_exports.string(),
35786
+ external_exports.object({
35787
+ maxCalls: external_exports.number().int().positive().optional(),
35788
+ required: external_exports.boolean().optional()
35789
+ })
35790
+ ).optional(),
35758
35791
  subagentConfig: agentSubagentConfigSchema2.optional(),
35759
35792
  codeModeConfig: external_exports.object({
35760
35793
  toolPool: external_exports.array(external_exports.string()).optional(),
@@ -35937,10 +35970,12 @@ var recordSchema = external_exports.object({
35937
35970
  name: external_exports.string().optional(),
35938
35971
  metadata: external_exports.record(external_exports.string(), external_exports.any()).optional(),
35939
35972
  metadataSchema: external_exports.record(external_exports.string(), external_exports.any()).optional(),
35940
- messages: external_exports.array(external_exports.object({
35941
- role: external_exports.string().min(1),
35942
- content: external_exports.string()
35943
- })).optional(),
35973
+ messages: external_exports.array(
35974
+ external_exports.object({
35975
+ role: external_exports.string().min(1),
35976
+ content: external_exports.string()
35977
+ })
35978
+ ).optional(),
35944
35979
  createPolicy: createPolicySchema
35945
35980
  });
35946
35981
  var scheduleSchema = external_exports.object({
@@ -35953,10 +35988,12 @@ var scheduleSchema = external_exports.object({
35953
35988
  runAt: external_exports.string().datetime({ offset: true }).optional(),
35954
35989
  recordType: external_exports.string().optional(),
35955
35990
  recordFilter: external_exports.record(external_exports.string(), external_exports.any()).optional(),
35956
- messages: external_exports.array(external_exports.object({
35957
- role: external_exports.string().min(1),
35958
- content: external_exports.string()
35959
- })).optional(),
35991
+ messages: external_exports.array(
35992
+ external_exports.object({
35993
+ role: external_exports.string().min(1),
35994
+ content: external_exports.string()
35995
+ })
35996
+ ).optional(),
35960
35997
  executionOptions: external_exports.record(external_exports.string(), external_exports.any()).optional(),
35961
35998
  enabled: external_exports.boolean().optional(),
35962
35999
  createPolicy: createPolicySchema
@@ -35982,6 +36019,30 @@ var metaSchema = external_exports.object({
35982
36019
  generatorVersion: external_exports.string().min(1),
35983
36020
  planHash: external_exports.string().min(1)
35984
36021
  });
36022
+ var internalDocResourceSchema = external_exports.object({
36023
+ /** Open discriminator, e.g. 'doc' | 'example' | 'reference' | 'link'. Kept
36024
+ * as a free string (not an enum) so new kinds don't require a migration. */
36025
+ type: external_exports.string().min(1),
36026
+ /** Short human-readable label for the resource. */
36027
+ title: external_exports.string().min(1),
36028
+ /** Optional external/internal URL pointing at the resource. */
36029
+ url: external_exports.string().optional(),
36030
+ /** Optional inline body (markdown). Indexable as a retrieval chunk. */
36031
+ content: external_exports.string().optional()
36032
+ });
36033
+ var internalDocsSchema = external_exports.object({
36034
+ /** Long-form builder notes (markdown). The primary indexable body — cover
36035
+ * rationale, design choices, best practices, and implementation notes here.
36036
+ * (Kept as one body for now; may be promoted to typed sub-fields later —
36037
+ * any such additions must stay optional to remain backward-compatible.) */
36038
+ content: external_exports.string().optional(),
36039
+ /** Freeform tags to power future indexing / search / retrieval / faceting,
36040
+ * e.g. ['support', 'rag', 'beta']. */
36041
+ tags: external_exports.array(external_exports.string()).optional(),
36042
+ /** Linked knowledge resources (docs, examples, references). Extension point
36043
+ * for a broader template knowledge/resource system; grows additively. */
36044
+ resources: external_exports.array(internalDocResourceSchema).optional()
36045
+ });
35985
36046
  var fullProductObjectSchema = external_exports.object({
35986
36047
  version: external_exports.enum([
35987
36048
  FULL_PRODUCT_OBJECT_VERSION_1_0,
@@ -35992,7 +36053,11 @@ var fullProductObjectSchema = external_exports.object({
35992
36053
  name: external_exports.string().min(1),
35993
36054
  description: external_exports.string().min(1),
35994
36055
  icon: external_exports.string().optional(),
35995
- metadata: external_exports.record(external_exports.string(), external_exports.any()).optional()
36056
+ metadata: external_exports.record(external_exports.string(), external_exports.any()).optional(),
36057
+ // Internal builder docs (NON user-facing). See `internalDocsSchema`.
36058
+ // Never surfaced to end users / agents by default; safe to drop when
36059
+ // materializing an end-user-facing view of the product.
36060
+ internalDocs: internalDocsSchema.optional()
35996
36061
  }),
35997
36062
  capabilities: external_exports.array(capabilitySchema).max(50),
35998
36063
  tools: external_exports.array(toolSchema).max(100),
@@ -36375,15 +36440,21 @@ function validateConnectivity(fpo) {
36375
36440
  reachableCapIds.add(route.capabilityId);
36376
36441
  }
36377
36442
  }
36443
+ for (const schedule of fpo.schedules ?? []) {
36444
+ const capabilityId = schedule && typeof schedule === "object" ? schedule.capabilityId : void 0;
36445
+ if (typeof capabilityId === "string") {
36446
+ reachableCapIds.add(capabilityId);
36447
+ }
36448
+ }
36378
36449
  for (const [i, cap] of fpo.capabilities.entries()) {
36379
36450
  if (!reachableCapIds.has(cap.id)) {
36380
36451
  result.warnings.push(
36381
36452
  createIssue(
36382
36453
  "warning",
36383
36454
  "UNREACHABLE_CAPABILITY",
36384
- `Capability "${cap.id}" is not referenced by any surface route`,
36455
+ `Capability "${cap.id}" is not referenced by any surface route or schedule`,
36385
36456
  `capabilities[${i}]`,
36386
- "Add a surface route or remove the capability"
36457
+ "Add a surface route, add a top-level schedule, or remove the capability"
36387
36458
  )
36388
36459
  );
36389
36460
  }
@@ -36712,7 +36783,14 @@ var fullProductObjectTemplateSchema = external_exports.object({
36712
36783
  productObject: fullProductObjectSchema,
36713
36784
  template: external_exports.object({
36714
36785
  variables: external_exports.array(fpoTemplateVariableSchema).max(50)
36715
- })
36786
+ }),
36787
+ // Internal builder docs for THIS template (NON user-facing): why the
36788
+ // template is shaped this way, design choices, best practices, and
36789
+ // implementation notes. Distinct from `productObject.product.internalDocs`
36790
+ // (which travels with the materialized product) — this documents the
36791
+ // template/authoring intent itself. Never surfaced to end users / agents
36792
+ // by default. See `internalDocsSchema`.
36793
+ internalDocs: internalDocsSchema.optional()
36716
36794
  }).superRefine((doc, ctx) => {
36717
36795
  const hasVariables = doc.template.variables.length > 0;
36718
36796
  const hasPendingSecretTool = doc.productObject.tools.some(
@@ -37389,7 +37467,13 @@ var PLATFORM_CATALOG = {
37389
37467
  var SURFACE_TYPE_METADATA = {
37390
37468
  chat: {
37391
37469
  description: "Website widget, support bots, conversational interfaces. Uses Persona and can optionally accept WebMCP page tools discovered from document.modelContext.",
37392
- useCases: ["customer support", "onboarding", "internal tools", "FAQ bots", "page-aware assistants"],
37470
+ useCases: [
37471
+ "customer support",
37472
+ "onboarding",
37473
+ "internal tools",
37474
+ "FAQ bots",
37475
+ "page-aware assistants"
37476
+ ],
37393
37477
  examples: [
37394
37478
  "Support chatbot",
37395
37479
  "Sales assistant widget",
@@ -37546,9 +37630,17 @@ var SURFACE_TYPE_METADATA = {
37546
37630
  behaviorTypeRef: "runtype://types/surface-configs"
37547
37631
  },
37548
37632
  schedule: {
37549
- description: "Cron jobs and periodic processing",
37550
- useCases: ["scheduled reports", "data cleanup", "periodic monitoring"],
37551
- examples: ["Daily report generator", "Weekly data sync", "Hourly health check"],
37633
+ description: "Optional management/presentation surface for scheduled jobs; executable cron or one-time triggers live in top-level schedules[] or Schedule records",
37634
+ useCases: [
37635
+ "schedule management UI",
37636
+ "scheduled report overview",
37637
+ "periodic monitoring dashboard"
37638
+ ],
37639
+ examples: [
37640
+ "Daily report schedule manager",
37641
+ "Weekly data sync overview",
37642
+ "Hourly health check monitor"
37643
+ ],
37552
37644
  traits: {
37553
37645
  streaming: "none",
37554
37646
  messagesMutable: false,
@@ -38544,7 +38636,11 @@ var AgentInputSchema = external_exports.object({
38544
38636
  ).optional(),
38545
38637
  approval: external_exports.object({
38546
38638
  require: external_exports.union([external_exports.array(external_exports.string()), external_exports.boolean()]),
38547
- timeout: external_exports.number().optional()
38639
+ timeout: external_exports.number().optional(),
38640
+ /** Opt out of agent-supplied approval reasons (`_approvalReason`
38641
+ * schema injection). Default: true. Mirrors approvalConfigSchema
38642
+ * in tool-types.ts. */
38643
+ requestReason: external_exports.boolean().optional()
38548
38644
  }).optional(),
38549
38645
  subagentConfig: VirtualAgentSubagentConfigSchema.optional(),
38550
38646
  codeModeConfig: external_exports.object({
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@runtypelabs/cli",
3
- "version": "2.16.16",
3
+ "version": "2.16.17",
4
4
  "description": "Command-line interface for Runtype AI platform",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -21,8 +21,8 @@
21
21
  "micromatch": "^4.0.8",
22
22
  "rosie-skills": "0.8.1",
23
23
  "yaml": "^2.9.0",
24
- "@runtypelabs/sdk": "4.7.1",
25
24
  "@runtypelabs/ink-components": "0.3.2",
25
+ "@runtypelabs/sdk": "4.8.0",
26
26
  "@runtypelabs/terminal-animations": "0.2.1"
27
27
  },
28
28
  "devDependencies": {
@@ -37,7 +37,7 @@
37
37
  "tsx": "^4.7.1",
38
38
  "typescript": "^5.3.3",
39
39
  "vitest": "^4.1.0",
40
- "@runtypelabs/shared": "1.16.0"
40
+ "@runtypelabs/shared": "1.17.0"
41
41
  },
42
42
  "engines": {
43
43
  "node": ">=22.0.0"