@runtypelabs/cli 2.36.0 → 2.36.1
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.
- package/dist/index.js +78 -27
- package/package.json +3 -3
package/dist/index.js
CHANGED
|
@@ -19436,14 +19436,18 @@ var CANONICAL_LOG_COLUMN_SET = {
|
|
|
19436
19436
|
};
|
|
19437
19437
|
var CANONICAL_LOG_COLUMNS = Object.keys(CANONICAL_LOG_COLUMN_SET);
|
|
19438
19438
|
|
|
19439
|
-
// ../shared/dist/chunk-
|
|
19439
|
+
// ../shared/dist/chunk-NQDOLEMM.mjs
|
|
19440
19440
|
var MODEL_FAMILY_PROVIDER_IDS = {
|
|
19441
19441
|
"claude-fable-5": {
|
|
19442
19442
|
"anthropic": "claude-fable-5",
|
|
19443
19443
|
"vercel": "anthropic/claude-fable-5"
|
|
19444
19444
|
},
|
|
19445
19445
|
"claude-fable-5-1": {
|
|
19446
|
-
"anthropic": "claude-fable-5-1"
|
|
19446
|
+
"anthropic": "claude-fable-5-1",
|
|
19447
|
+
"vercel": "anthropic/claude-fable-5.1"
|
|
19448
|
+
},
|
|
19449
|
+
"claude-fable-5.1": {
|
|
19450
|
+
"vercel": "anthropic/claude-fable-5.1"
|
|
19447
19451
|
},
|
|
19448
19452
|
"claude-haiku-4-5": {
|
|
19449
19453
|
"anthropic": "claude-haiku-4-5-20251001",
|
|
@@ -19638,6 +19642,10 @@ var MODEL_FAMILY_PROVIDER_IDS = {
|
|
|
19638
19642
|
"google": "gemini-3.7-flash",
|
|
19639
19643
|
"vercel": "google/gemini-3.7-flash"
|
|
19640
19644
|
},
|
|
19645
|
+
"gemini-3-8-flash": {
|
|
19646
|
+
"google": "gemini-3.8-flash",
|
|
19647
|
+
"vercel": "google/gemini-3.8-flash"
|
|
19648
|
+
},
|
|
19641
19649
|
"gemini-3-flash": {
|
|
19642
19650
|
"google": "gemini-3-flash-preview"
|
|
19643
19651
|
},
|
|
@@ -19689,6 +19697,10 @@ var MODEL_FAMILY_PROVIDER_IDS = {
|
|
|
19689
19697
|
"google": "gemini-3.7-flash",
|
|
19690
19698
|
"vercel": "google/gemini-3.7-flash"
|
|
19691
19699
|
},
|
|
19700
|
+
"gemini-3.8-flash": {
|
|
19701
|
+
"google": "gemini-3.8-flash",
|
|
19702
|
+
"vercel": "google/gemini-3.8-flash"
|
|
19703
|
+
},
|
|
19692
19704
|
"gemini-embedding-001": {
|
|
19693
19705
|
"google": "gemini-embedding-001"
|
|
19694
19706
|
},
|
|
@@ -20413,7 +20425,6 @@ var MODEL_FAMILY_PROVIDER_IDS = {
|
|
|
20413
20425
|
"vercel": "alibaba/qwen3.5-plus"
|
|
20414
20426
|
},
|
|
20415
20427
|
"qwen3-6-27b": {
|
|
20416
|
-
"mixlayer": "qwen/qwen3.6-27b",
|
|
20417
20428
|
"vercel": "alibaba/qwen3.6-27b"
|
|
20418
20429
|
},
|
|
20419
20430
|
"qwen3-6-35b-a3b": {
|
|
@@ -20447,6 +20458,9 @@ var MODEL_FAMILY_PROVIDER_IDS = {
|
|
|
20447
20458
|
"qwen3-8-max": {
|
|
20448
20459
|
"vercel": "alibaba/qwen3.8-max"
|
|
20449
20460
|
},
|
|
20461
|
+
"qwen3-8-max-0902": {
|
|
20462
|
+
"vercel": "alibaba/qwen3.8-max-0902"
|
|
20463
|
+
},
|
|
20450
20464
|
"qwen3-coder": {
|
|
20451
20465
|
"vercel": "alibaba/qwen3-coder"
|
|
20452
20466
|
},
|
|
@@ -20511,7 +20525,6 @@ var MODEL_FAMILY_PROVIDER_IDS = {
|
|
|
20511
20525
|
"vercel": "alibaba/qwen3.5-plus"
|
|
20512
20526
|
},
|
|
20513
20527
|
"qwen3.6-27b": {
|
|
20514
|
-
"mixlayer": "qwen/qwen3.6-27b",
|
|
20515
20528
|
"vercel": "alibaba/qwen3.6-27b"
|
|
20516
20529
|
},
|
|
20517
20530
|
"qwen3.6-35b-a3b": {
|
|
@@ -20545,6 +20558,9 @@ var MODEL_FAMILY_PROVIDER_IDS = {
|
|
|
20545
20558
|
"qwen3.8-max": {
|
|
20546
20559
|
"vercel": "alibaba/qwen3.8-max"
|
|
20547
20560
|
},
|
|
20561
|
+
"qwen3.8-max-0902": {
|
|
20562
|
+
"vercel": "alibaba/qwen3.8-max-0902"
|
|
20563
|
+
},
|
|
20548
20564
|
"rerank-v3-5": {
|
|
20549
20565
|
"vercel": "cohere/rerank-v3.5"
|
|
20550
20566
|
},
|
|
@@ -20650,6 +20666,14 @@ var DEEPSEEK_V4_FLASH_IDS = [
|
|
|
20650
20666
|
"deepseek/deepseek-v4-flash-0731"
|
|
20651
20667
|
];
|
|
20652
20668
|
var GLM_5_3_FLASH_IDS = ["glm-5.3-flash", "glm-5-3-flash", "zai/glm-5.3-flash"];
|
|
20669
|
+
var QWEN_3_8_27B_IDS = ["qwen3.8-27b", "qwen3-8-27b"];
|
|
20670
|
+
function mixlayerPrimary(ids) {
|
|
20671
|
+
const config3 = {
|
|
20672
|
+
providers: [{ provider: "mixlayer", weight: 100 }],
|
|
20673
|
+
fallback: ["vercel"]
|
|
20674
|
+
};
|
|
20675
|
+
return Object.fromEntries(ids.map((id) => [id, config3]));
|
|
20676
|
+
}
|
|
20653
20677
|
var PROVIDER_ROUTING_CONFIG = {
|
|
20654
20678
|
"claude-sonnet-4-5": {
|
|
20655
20679
|
providers: [
|
|
@@ -20877,7 +20901,8 @@ var PROVIDER_ROUTING_CONFIG = {
|
|
|
20877
20901
|
},
|
|
20878
20902
|
// WHY(docs/why/packages/shared/src.md#deepseek-v4-flash-mirrors-v4-pro-each-slash-form): DeepSeek V4 Flash mirrors V4 Pro: each slash form needs its own explicit Vercel fallback entry to escape the
|
|
20879
20903
|
...workersAiPrimary(DEEPSEEK_V4_FLASH_IDS),
|
|
20880
|
-
// WHY(
|
|
20904
|
+
// WHY(packages/shared/src/provider-routing.ts): Qwen 3.8 27B routes through Mixlayer because its 262K context is below Vercel's 1M.
|
|
20905
|
+
...mixlayerPrimary(QWEN_3_8_27B_IDS),
|
|
20881
20906
|
// WHY(docs/why/packages/shared/src.md#vercel-renamed-its-xai-gateway-namespace-xai-to): Vercel renamed its xAI gateway namespace xai/ to spacexai/ on 2026-08-22; this hand-maintained table isn't
|
|
20882
20907
|
...workersAiPrimary(GLM_5_3_FLASH_IDS),
|
|
20883
20908
|
"minimax-m2.7": {
|
|
@@ -21304,7 +21329,7 @@ var BuiltInToolIdPrefix = {
|
|
|
21304
21329
|
PLATFORM: "platform"
|
|
21305
21330
|
};
|
|
21306
21331
|
|
|
21307
|
-
// ../shared/dist/chunk-
|
|
21332
|
+
// ../shared/dist/chunk-UPJ4KSD4.mjs
|
|
21308
21333
|
function sanitizeToolNameForAiSdk(name) {
|
|
21309
21334
|
return name.replace(/[^a-zA-Z0-9_]/g, "_").toLowerCase().replace(/_+/g, "_").replace(/^_|_$/g, "");
|
|
21310
21335
|
}
|
|
@@ -24188,15 +24213,8 @@ var GRANOLA_INTEGRATION = {
|
|
|
24188
24213
|
]
|
|
24189
24214
|
};
|
|
24190
24215
|
|
|
24191
|
-
// ../shared/dist/chunk-
|
|
24216
|
+
// ../shared/dist/chunk-IMR6WLWN.mjs
|
|
24192
24217
|
var DEFAULT_MODELS_FOR_NEW_ACCOUNTS = [
|
|
24193
|
-
{
|
|
24194
|
-
provider: "runtype",
|
|
24195
|
-
modelId: "qwen/qwen3.6-27b",
|
|
24196
|
-
isDefault: false,
|
|
24197
|
-
strengths: "Fast, low-cost open-weight workhorse with reasoning, tool-use, and vision \u2014 good for high-volume extraction, classification, and simple transforms.",
|
|
24198
|
-
bestFor: ["fast-cheap", "vision"]
|
|
24199
|
-
},
|
|
24200
24218
|
// WHY(docs/why/packages/shared/src.md#openai-models-route-via-openai-direct-with-verce): OpenAI models route via OpenAI direct with Vercel fallback; routed entries benefit from automatic provider
|
|
24201
24219
|
{
|
|
24202
24220
|
provider: "runtype",
|
|
@@ -24244,7 +24262,7 @@ var DEFAULT_MODELS_FOR_NEW_ACCOUNTS = [
|
|
|
24244
24262
|
// WHY(docs/why/packages/shared/src.md#google-models-route-via-google-direct-with-verte): Google models route via Google direct, with Vertex/Vercel fallback.
|
|
24245
24263
|
{
|
|
24246
24264
|
provider: "runtype",
|
|
24247
|
-
modelId: "gemini-3.
|
|
24265
|
+
modelId: "gemini-3.8-flash",
|
|
24248
24266
|
isDefault: true,
|
|
24249
24267
|
strengths: "Fast, low-cost, and natively multimodal with good reasoning, tool-use, and a 1M context \u2014 the account default and a strong choice for vision and high-throughput steps.",
|
|
24250
24268
|
bestFor: ["default", "vision", "fast-cheap", "agentic-tools", "long-context"]
|
|
@@ -24257,14 +24275,6 @@ var DEFAULT_MODELS_FOR_NEW_ACCOUNTS = [
|
|
|
24257
24275
|
strengths: "Specialised coding workhorse with strong tool-use, low cost, and a 1M context \u2014 ideal for code generation, debugging, and multi-file editing workflows.",
|
|
24258
24276
|
bestFor: ["agentic-tools", "long-context"]
|
|
24259
24277
|
},
|
|
24260
|
-
// WHY(docs/why/packages/shared/src.md#nvidia-nemotron-ultra-reasoning-tool-use-flagshi): NVIDIA Nemotron Ultra: reasoning + tool-use flagship, routed via Vercel.
|
|
24261
|
-
{
|
|
24262
|
-
provider: "runtype",
|
|
24263
|
-
modelId: "nemotron-3-ultra-550b-a55b",
|
|
24264
|
-
isDefault: false,
|
|
24265
|
-
strengths: "Large open-weight reasoning and tool-use flagship with a 1M context at a low price \u2014 strong analytical depth where an open model is preferred.",
|
|
24266
|
-
bestFor: ["deep-reasoning", "agentic-tools", "long-context"]
|
|
24267
|
-
},
|
|
24268
24278
|
// WHY(docs/why/packages/shared/src.md#deepseek-v4-flash-routes-via-cloudflare-workers): DeepSeek V4 Flash routes via Cloudflare Workers AI (bare name resolves to
|
|
24269
24279
|
{
|
|
24270
24280
|
provider: "runtype",
|
|
@@ -24280,6 +24290,22 @@ var DEFAULT_MODELS_FOR_NEW_ACCOUNTS = [
|
|
|
24280
24290
|
isDefault: false,
|
|
24281
24291
|
strengths: "Agentic flagship \u2014 best-in-class at long, multi-round tool-call loops and coding/agent workflows, with a 1M context; well suited to tool-heavy agent steps.",
|
|
24282
24292
|
bestFor: ["agentic-tools", "default", "deep-reasoning", "long-context"]
|
|
24293
|
+
},
|
|
24294
|
+
// WHY(packages/shared/src/provider-routing.ts): Z.ai GLM-5.3 Flash routes via Workers AI, with Vercel fallback.
|
|
24295
|
+
{
|
|
24296
|
+
provider: "runtype",
|
|
24297
|
+
modelId: "glm-5.3-flash",
|
|
24298
|
+
isDefault: false,
|
|
24299
|
+
strengths: "Fast, low-cost model with strong reasoning, tool-use, and a 1M context \u2014 well suited to high-throughput agentic steps and long documents.",
|
|
24300
|
+
bestFor: ["fast-cheap", "default", "agentic-tools", "long-context"]
|
|
24301
|
+
},
|
|
24302
|
+
// WHY(packages/shared/src/provider-routing.ts): Qwen 3.8 27B routes via Mixlayer, with Vercel fallback.
|
|
24303
|
+
{
|
|
24304
|
+
provider: "runtype",
|
|
24305
|
+
modelId: "qwen3.8-27b",
|
|
24306
|
+
isDefault: false,
|
|
24307
|
+
strengths: "Fast open-weight model with strong reasoning, tool-use, and a 262K context \u2014 well suited to agentic tasks and long documents.",
|
|
24308
|
+
bestFor: ["fast-cheap", "default", "deep-reasoning", "agentic-tools", "long-context"]
|
|
24283
24309
|
}
|
|
24284
24310
|
];
|
|
24285
24311
|
var DEFAULT_MODEL_ID = DEFAULT_MODELS_FOR_NEW_ACCOUNTS.find((m2) => m2.isDefault)?.modelId ?? "kimi-k2.6";
|
|
@@ -26504,7 +26530,8 @@ var AGENT_CONTENT_CONFIG_KEYS = {
|
|
|
26504
26530
|
memory: true,
|
|
26505
26531
|
sandbox: true,
|
|
26506
26532
|
tenancyStrategy: true,
|
|
26507
|
-
durability: true
|
|
26533
|
+
durability: true,
|
|
26534
|
+
state: true
|
|
26508
26535
|
};
|
|
26509
26536
|
var AGENT_CONTENT_CONFIG_KEY_LIST = Object.keys(AGENT_CONTENT_CONFIG_KEYS).sort();
|
|
26510
26537
|
function stripTrailingChars(value, char) {
|
|
@@ -26825,6 +26852,28 @@ var MAX_MESSAGE_CONTENT_BYTES = 1024 * 1024;
|
|
|
26825
26852
|
var MAX_MESSAGES_TOTAL_BYTES = 32 * 1024 * 1024;
|
|
26826
26853
|
var encoder = new TextEncoder();
|
|
26827
26854
|
var UNEVALUATED_VERDICT = Object.freeze({ status: "unevaluated" });
|
|
26855
|
+
var AGENT_STATE_DEFAULT_MERGE_STRATEGY = "merge";
|
|
26856
|
+
var agentPredictStateMappingSchema = external_exports.object({
|
|
26857
|
+
/** Top-level state key the predicted argument projects into. */
|
|
26858
|
+
stateKey: external_exports.string().min(1),
|
|
26859
|
+
// WHY(docs/why/packages/shared/src.md#the-tool-may-be-one-the-agent-never-declares-the): The tool may be one the agent never declares: the canonical demo predicts from a CLIENT-declared frontend tool.
|
|
26860
|
+
/** Name of the tool whose arguments are predicted from. */
|
|
26861
|
+
tool: external_exports.string().min(1),
|
|
26862
|
+
/** Argument of that tool carrying the predicted value. */
|
|
26863
|
+
toolArgument: external_exports.string().min(1)
|
|
26864
|
+
});
|
|
26865
|
+
var agentStateChannelSchema = external_exports.object({
|
|
26866
|
+
/** Initial state when a run starts with no client-supplied state. */
|
|
26867
|
+
initial: external_exports.record(external_exports.string(), external_exports.unknown()).optional(),
|
|
26868
|
+
/** Optional JSON Schema describing the state shape (documentation + client codegen). */
|
|
26869
|
+
schema: external_exports.record(external_exports.string(), external_exports.unknown()).optional(),
|
|
26870
|
+
// WHY(docs/why/packages/shared/src.md#how-client-supplied-state-merges-with-the-agents): How client-supplied state merges with the agent's own: `'replace'` (the client's state wins wholesale) or
|
|
26871
|
+
/** How client-supplied state merges with the agent's own: `'replace'` (the client's state wins wholesale) or `'merge'` (shallow last-writer-wins per top-level key). */
|
|
26872
|
+
mergeStrategy: external_exports.enum(["replace", "merge"]).default(AGENT_STATE_DEFAULT_MERGE_STRATEGY),
|
|
26873
|
+
// WHY(docs/why/packages/shared/src.md#the-mapping-is-server-authored-because-only-the-a): The mapping is server-authored because only the agent knows which argument feeds which state key.
|
|
26874
|
+
/** Tool arguments the client may optimistically project into state while they stream. */
|
|
26875
|
+
predictState: external_exports.array(agentPredictStateMappingSchema).optional()
|
|
26876
|
+
});
|
|
26828
26877
|
var tenancyAssuranceLevelSchema = external_exports.enum(["anonymous", "asserted", "verified"]);
|
|
26829
26878
|
var tenancyStrategyPresetSchema = external_exports.enum([
|
|
26830
26879
|
"internal",
|
|
@@ -27175,7 +27224,9 @@ var agentRuntimeConfigSchema = external_exports.object({
|
|
|
27175
27224
|
// WHY(docs/why/packages/shared/src.md#tenancystrategy-is-optional-per-resource-isolati): tenancyStrategy is optional per-resource isolation opt-in; absent means platform-global default
|
|
27176
27225
|
tenancyStrategy: tenancyStrategySchema.optional(),
|
|
27177
27226
|
// WHY(docs/why/packages/shared/src.md#durable-turn-knobs-single-sourced-from-agentdura): Durable-turn knobs single-sourced from agentDurabilityConfigSchema; durability is the platform default
|
|
27178
|
-
durability: agentDurabilityConfigSchema.optional()
|
|
27227
|
+
durability: agentDurabilityConfigSchema.optional(),
|
|
27228
|
+
// WHY(docs/why/packages/shared/src.md#the-same-schema-instance-the-export-plane-uses): The SAME instance the export plane uses, so the authoring and export planes cannot drift.
|
|
27229
|
+
state: agentStateChannelSchema.optional()
|
|
27179
27230
|
}).strict();
|
|
27180
27231
|
var contextFallbackSchema = external_exports.union([
|
|
27181
27232
|
external_exports.object({ type: external_exports.literal("retry"), delay: external_exports.number().optional() }),
|
|
@@ -30951,7 +31002,7 @@ var APPROVAL_UNATTENDED_SURFACES = [
|
|
|
30951
31002
|
"a2a"
|
|
30952
31003
|
];
|
|
30953
31004
|
var APPROVAL_PREFLIGHT_REJECTED_SURFACES = ["client-chat"];
|
|
30954
|
-
var
|
|
31005
|
+
var APPROVAL_REFUSING_SURFACES = APPROVAL_UNATTENDED_SURFACES.filter(
|
|
30955
31006
|
(surface) => surface !== "client-chat"
|
|
30956
31007
|
);
|
|
30957
31008
|
function validatePromptApprovalSurfaceEnforcement(flowSteps, buckets) {
|
|
@@ -30963,7 +31014,7 @@ function validatePromptApprovalSurfaceEnforcement(flowSteps, buckets) {
|
|
|
30963
31014
|
"warning",
|
|
30964
31015
|
{
|
|
30965
31016
|
code: APPROVAL_ENFORCED_ON_ATTENDED_SURFACES_ONLY_CODE,
|
|
30966
|
-
message: `Step "${step.name}" arms a human approval gate (config.tools.approval.require), which is enforced only on attended surfaces that can present the prompt and resume the run: interactive dispatch and agent execute. Client chat rejects approval-gated execution because it has no secure continuation channel back to the visitor.
|
|
31017
|
+
message: `Step "${step.name}" arms a human approval gate (config.tools.approval.require), which is enforced only on attended surfaces that can present the prompt and resume the run: interactive dispatch and agent execute. Client chat rejects approval-gated execution because it has no secure continuation channel back to the visitor. The other unattended surfaces (${APPROVAL_REFUSING_SURFACES.join(", ")}) refuse the run (ineligible:surface-approval-pause): no engine answers the prompt without an attended client, so the flow does not run there at all. If it must run unattended, remove the approval requirement from this step.`,
|
|
30967
31018
|
path: `flowSteps[${stepIndex}].config.tools.approval`,
|
|
30968
31019
|
step: { index: stepIndex, name: step.name, type: step.type },
|
|
30969
31020
|
details: {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@runtypelabs/cli",
|
|
3
|
-
"version": "2.36.
|
|
3
|
+
"version": "2.36.1",
|
|
4
4
|
"description": "Command-line interface for Runtype AI platform",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
"@modelcontextprotocol/client": "2.0.0",
|
|
12
12
|
"@modelcontextprotocol/core": "2.0.0",
|
|
13
13
|
"@runtypelabs/ink-components": "0.3.7",
|
|
14
|
-
"@runtypelabs/sdk": "9.
|
|
14
|
+
"@runtypelabs/sdk": "9.7.0",
|
|
15
15
|
"@runtypelabs/terminal-animations": "0.2.4",
|
|
16
16
|
"add-mcp": "2.0.0",
|
|
17
17
|
"chalk": "^5.3.0",
|
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
"devDependencies": {
|
|
34
34
|
"@modelcontextprotocol/server": "2.0.0",
|
|
35
35
|
"@runtypelabs/persona": "4.22.0",
|
|
36
|
-
"@runtypelabs/shared": "3.
|
|
36
|
+
"@runtypelabs/shared": "3.40.0",
|
|
37
37
|
"@types/express": "^5.0.6",
|
|
38
38
|
"@types/micromatch": "^4.0.9",
|
|
39
39
|
"@types/node": "^25.3.3",
|