@runtypelabs/cli 2.21.2 → 2.21.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.
- package/dist/index.js +166 -14
- package/package.json +3 -3
package/dist/index.js
CHANGED
|
@@ -15904,6 +15904,9 @@ var flowCompleteEventSchema = external_exports.object({
|
|
|
15904
15904
|
// emitter/runtime send success+duration; api raw-writes send the step counts instead.
|
|
15905
15905
|
success: external_exports.boolean().optional(),
|
|
15906
15906
|
duration: external_exports.number().optional(),
|
|
15907
|
+
// The claude-managed ephemeral-create dispatch surfaces the minted (and
|
|
15908
|
+
// reusable) Anthropic agent id here so a later run can `connect` to it.
|
|
15909
|
+
claudeManagedAgentId: external_exports.string().optional(),
|
|
15907
15910
|
executionTime: external_exports.number().optional(),
|
|
15908
15911
|
completedAt: external_exports.string().optional(),
|
|
15909
15912
|
totalSteps: external_exports.number().optional(),
|
|
@@ -16407,7 +16410,20 @@ var approvalConfigSchema = external_exports.object({
|
|
|
16407
16410
|
* tools by injecting a reserved optional `_approvalReason` string into the
|
|
16408
16411
|
* model-visible parameters schema. The value is stripped before the tool
|
|
16409
16412
|
* executes and surfaced to the approver. Default: true (opt out with false). */
|
|
16410
|
-
requestReason: external_exports.boolean().optional()
|
|
16413
|
+
requestReason: external_exports.boolean().optional(),
|
|
16414
|
+
/** Persistent "always" choices offered at the human approval prompt — the
|
|
16415
|
+
* user-facing options the owner offers, NOT auto-behavior. When a choice is
|
|
16416
|
+
* enabled the approval UI renders its button; the end-user's per-approval pick
|
|
16417
|
+
* (Persona's wire `remember`) is what writes a durable cross-session grant.
|
|
16418
|
+
* Keys mirror the grant `decision` enum (`alwaysAllow` → 'allow',
|
|
16419
|
+
* `alwaysDeny` → 'deny'). v1 honors `alwaysAllow`; `alwaysDeny` is the
|
|
16420
|
+
* symmetric mirror landed later with no migration. Default: both off — this is
|
|
16421
|
+
* the sole control for persisted approval grants (no Flagship flag). See
|
|
16422
|
+
* docs/features/planning/2026-06-13-cross-session-always-allow-approval-grants.md */
|
|
16423
|
+
choices: external_exports.object({
|
|
16424
|
+
alwaysAllow: external_exports.boolean().optional(),
|
|
16425
|
+
alwaysDeny: external_exports.boolean().optional()
|
|
16426
|
+
}).optional()
|
|
16411
16427
|
});
|
|
16412
16428
|
var toolSearchConfigSchema = external_exports.object({
|
|
16413
16429
|
/** Explicit opt-in/out. When omitted, auto-activates if tool count >= threshold. */
|
|
@@ -16565,13 +16581,10 @@ var contextFallbackSchema = external_exports.union([
|
|
|
16565
16581
|
delay: external_exports.number().optional()
|
|
16566
16582
|
})
|
|
16567
16583
|
]);
|
|
16568
|
-
var contextErrorHandlingConfigSchema = external_exports.
|
|
16569
|
-
external_exports.enum(["fail", "continue", "
|
|
16570
|
-
external_exports.
|
|
16571
|
-
|
|
16572
|
-
fallbacks: external_exports.array(contextFallbackSchema).optional()
|
|
16573
|
-
})
|
|
16574
|
-
]);
|
|
16584
|
+
var contextErrorHandlingConfigSchema = external_exports.object({
|
|
16585
|
+
onError: external_exports.enum(["fail", "continue", "fallback"]),
|
|
16586
|
+
fallbacks: external_exports.array(contextFallbackSchema).optional()
|
|
16587
|
+
});
|
|
16575
16588
|
var httpConfigSchema = external_exports.object({
|
|
16576
16589
|
url: external_exports.string().min(1, "URL is required"),
|
|
16577
16590
|
method: external_exports.enum(["GET", "POST", "PUT", "DELETE", "PATCH"]).optional(),
|
|
@@ -36687,6 +36700,67 @@ var INTEGRATIONS_REGISTRY = [
|
|
|
36687
36700
|
function getAllIntegrations() {
|
|
36688
36701
|
return INTEGRATIONS_REGISTRY;
|
|
36689
36702
|
}
|
|
36703
|
+
var BUILT_IN_GRADER_IDS = [
|
|
36704
|
+
"answersQuestion",
|
|
36705
|
+
"matchesExpected",
|
|
36706
|
+
"followsInstructions",
|
|
36707
|
+
"grounded",
|
|
36708
|
+
"rightTone",
|
|
36709
|
+
"safeToSend"
|
|
36710
|
+
];
|
|
36711
|
+
var checkGraderSchema = external_exports.discriminatedUnion("kind", [
|
|
36712
|
+
external_exports.object({
|
|
36713
|
+
kind: external_exports.literal("contains"),
|
|
36714
|
+
value: external_exports.string(),
|
|
36715
|
+
caseSensitive: external_exports.boolean().optional()
|
|
36716
|
+
}),
|
|
36717
|
+
external_exports.object({
|
|
36718
|
+
kind: external_exports.literal("not_contains"),
|
|
36719
|
+
value: external_exports.string(),
|
|
36720
|
+
caseSensitive: external_exports.boolean().optional()
|
|
36721
|
+
}),
|
|
36722
|
+
// Exact/normalized match against `case.expected.text`.
|
|
36723
|
+
external_exports.object({ kind: external_exports.literal("matches_expected") }),
|
|
36724
|
+
external_exports.object({
|
|
36725
|
+
kind: external_exports.literal("regex"),
|
|
36726
|
+
pattern: external_exports.string(),
|
|
36727
|
+
flags: external_exports.string().optional()
|
|
36728
|
+
}),
|
|
36729
|
+
external_exports.object({ kind: external_exports.literal("valid_json") }),
|
|
36730
|
+
external_exports.object({
|
|
36731
|
+
kind: external_exports.literal("json_field"),
|
|
36732
|
+
path: external_exports.string(),
|
|
36733
|
+
equals: external_exports.unknown().optional(),
|
|
36734
|
+
exists: external_exports.boolean().optional()
|
|
36735
|
+
}),
|
|
36736
|
+
external_exports.object({
|
|
36737
|
+
kind: external_exports.literal("length"),
|
|
36738
|
+
minChars: external_exports.number().int().nonnegative().optional(),
|
|
36739
|
+
maxChars: external_exports.number().int().nonnegative().optional()
|
|
36740
|
+
}),
|
|
36741
|
+
external_exports.object({ kind: external_exports.literal("latency"), maxMs: external_exports.number().int().positive() }),
|
|
36742
|
+
// Today's implicit "success" made explicit: the case produced output without erroring.
|
|
36743
|
+
external_exports.object({ kind: external_exports.literal("no_error") })
|
|
36744
|
+
]);
|
|
36745
|
+
var aiGraderSchema = external_exports.object({
|
|
36746
|
+
kind: external_exports.literal("ai"),
|
|
36747
|
+
preset: external_exports.enum(BUILT_IN_GRADER_IDS).optional(),
|
|
36748
|
+
/** Plain language: "what does a good answer look like?" */
|
|
36749
|
+
criteria: external_exports.string().min(1),
|
|
36750
|
+
/** Reference-guided when the case has `expected`. */
|
|
36751
|
+
useExpected: external_exports.boolean().default(false),
|
|
36752
|
+
/** Defaults to a cheap routed model (e.g. claude-haiku-4-5) at execution time. */
|
|
36753
|
+
model: external_exports.string().optional(),
|
|
36754
|
+
/** Pass cutoff for the 1-5 scale. */
|
|
36755
|
+
threshold: external_exports.number().min(1).max(5).optional()
|
|
36756
|
+
});
|
|
36757
|
+
var graderConfigSchema = external_exports.union([checkGraderSchema, aiGraderSchema]);
|
|
36758
|
+
var gradersSchema = external_exports.array(graderConfigSchema);
|
|
36759
|
+
var caseExpectedSchema = external_exports.object({
|
|
36760
|
+
text: external_exports.string().optional(),
|
|
36761
|
+
json: external_exports.unknown().optional(),
|
|
36762
|
+
facts: external_exports.array(external_exports.string()).optional()
|
|
36763
|
+
});
|
|
36690
36764
|
var DEFAULT_MODELS_FOR_NEW_ACCOUNTS = [
|
|
36691
36765
|
// Mixlayer models
|
|
36692
36766
|
{ provider: "runtype", modelId: "qwen/qwen3.5-9b", isDefault: true },
|
|
@@ -36737,7 +36811,12 @@ var userProfileFeaturesSchema = external_exports.object({
|
|
|
36737
36811
|
// Gates the Runtype Apps nav entry + routes in the dashboard. Driven by the
|
|
36738
36812
|
// `enable-runtype-apps` boolean flag (fail-closed in production until the
|
|
36739
36813
|
// prod ops set lands). The whole /v1/apps surface 404s when this is off.
|
|
36740
|
-
enableRuntypeApps: external_exports.boolean()
|
|
36814
|
+
enableRuntypeApps: external_exports.boolean(),
|
|
36815
|
+
// Gates the dashboard skill "Security scan" affordance (the
|
|
36816
|
+
// `POST /v1/skills/scan` verdict UI). Driven by the `enable-skill-scanner`
|
|
36817
|
+
// boolean flag (fail-closed until a rule enables it). The scan ROUTE stays
|
|
36818
|
+
// reachable; this only hides the UI while the scanner rollout completes.
|
|
36819
|
+
enableSkillScanner: external_exports.boolean()
|
|
36741
36820
|
});
|
|
36742
36821
|
var MODEL_FAMILY_PROVIDER_IDS = {
|
|
36743
36822
|
"claude-fable-5": {
|
|
@@ -39321,7 +39400,13 @@ var agentRuntimeConfigSchema = external_exports.object({
|
|
|
39321
39400
|
/** Opt out of agent-supplied approval reasons (`_approvalReason`
|
|
39322
39401
|
* schema injection). Default: true. Mirrors approvalConfigSchema
|
|
39323
39402
|
* in tool-types.ts. */
|
|
39324
|
-
requestReason: external_exports.boolean().optional()
|
|
39403
|
+
requestReason: external_exports.boolean().optional(),
|
|
39404
|
+
/** Persistent "always" choices offered at the approval prompt.
|
|
39405
|
+
* Mirrors approvalConfigSchema.choices in tool-types.ts. */
|
|
39406
|
+
choices: external_exports.object({
|
|
39407
|
+
alwaysAllow: external_exports.boolean().optional(),
|
|
39408
|
+
alwaysDeny: external_exports.boolean().optional()
|
|
39409
|
+
}).optional()
|
|
39325
39410
|
}).optional(),
|
|
39326
39411
|
perToolLimits: external_exports.record(
|
|
39327
39412
|
external_exports.string(),
|
|
@@ -39536,7 +39621,13 @@ var agentToolsConfigSchema2 = external_exports.object({
|
|
|
39536
39621
|
timeout: external_exports.number().positive().optional(),
|
|
39537
39622
|
/** Opt out of agent-supplied approval reasons (`_approvalReason` schema
|
|
39538
39623
|
* injection). Default: true. Mirrors approvalConfigSchema in tool-types.ts. */
|
|
39539
|
-
requestReason: external_exports.boolean().optional()
|
|
39624
|
+
requestReason: external_exports.boolean().optional(),
|
|
39625
|
+
/** Persistent "always" choices offered at the approval prompt.
|
|
39626
|
+
* Mirrors approvalConfigSchema.choices in tool-types.ts. */
|
|
39627
|
+
choices: external_exports.object({
|
|
39628
|
+
alwaysAllow: external_exports.boolean().optional(),
|
|
39629
|
+
alwaysDeny: external_exports.boolean().optional()
|
|
39630
|
+
}).optional()
|
|
39540
39631
|
}).optional(),
|
|
39541
39632
|
perToolLimits: external_exports.record(
|
|
39542
39633
|
external_exports.string(),
|
|
@@ -42509,10 +42600,32 @@ var VirtualAgentSubagentConfigSchema = external_exports.object({
|
|
|
42509
42600
|
allowNesting: external_exports.boolean().optional(),
|
|
42510
42601
|
defaultTimeoutMs: external_exports.number().int().min(1e3).max(6e5).optional()
|
|
42511
42602
|
});
|
|
42603
|
+
var DispatchClaudeManagedConfigSchema = external_exports.object({
|
|
42604
|
+
setupMode: external_exports.enum(["create", "connect"]).optional(),
|
|
42605
|
+
anthropicAgentId: external_exports.string().optional(),
|
|
42606
|
+
anthropicAgentVersion: external_exports.number().int().optional(),
|
|
42607
|
+
anthropicEnvironmentId: external_exports.string().optional(),
|
|
42608
|
+
model: external_exports.string().optional(),
|
|
42609
|
+
systemPrompt: external_exports.string().optional(),
|
|
42610
|
+
/**
|
|
42611
|
+
* `create` mode only: archive the minted Anthropic agent after the run.
|
|
42612
|
+
* Defaults to `true` (ephemeral). Set `false` to retain it for reuse — the
|
|
42613
|
+
* returned `claudeManagedAgentId` can then be used in a later `connect` run.
|
|
42614
|
+
*/
|
|
42615
|
+
autoDelete: external_exports.boolean().optional()
|
|
42616
|
+
});
|
|
42512
42617
|
var AgentInputSchema = external_exports.object({
|
|
42513
42618
|
agentId: external_exports.string().optional(),
|
|
42514
|
-
|
|
42515
|
-
|
|
42619
|
+
/**
|
|
42620
|
+
* Agent execution kind. Omit (or `runtype`) for the default virtual-agent
|
|
42621
|
+
* loop. `claude_managed` routes the dispatch to the Anthropic-hosted Claude
|
|
42622
|
+
* Managed runner — supply a saved `agentId` (its saved config wins) or, for an
|
|
42623
|
+
* inline run, a connect-mode `claudeManagedConfig`.
|
|
42624
|
+
*/
|
|
42625
|
+
agentType: external_exports.enum(["runtype", "claude_managed"]).optional(),
|
|
42626
|
+
claudeManagedConfig: DispatchClaudeManagedConfigSchema.optional(),
|
|
42627
|
+
name: external_exports.string().min(1).optional(),
|
|
42628
|
+
model: external_exports.string().min(1).optional(),
|
|
42516
42629
|
systemPrompt: external_exports.string().optional(),
|
|
42517
42630
|
temperature: external_exports.number().min(0).max(2).optional(),
|
|
42518
42631
|
topP: external_exports.number().min(0).max(1).optional(),
|
|
@@ -42540,7 +42653,13 @@ var AgentInputSchema = external_exports.object({
|
|
|
42540
42653
|
/** Opt out of agent-supplied approval reasons (`_approvalReason`
|
|
42541
42654
|
* schema injection). Default: true. Mirrors approvalConfigSchema
|
|
42542
42655
|
* in tool-types.ts. */
|
|
42543
|
-
requestReason: external_exports.boolean().optional()
|
|
42656
|
+
requestReason: external_exports.boolean().optional(),
|
|
42657
|
+
/** Persistent "always" choices offered at the approval prompt.
|
|
42658
|
+
* Mirrors approvalConfigSchema.choices in tool-types.ts. */
|
|
42659
|
+
choices: external_exports.object({
|
|
42660
|
+
alwaysAllow: external_exports.boolean().optional(),
|
|
42661
|
+
alwaysDeny: external_exports.boolean().optional()
|
|
42662
|
+
}).optional()
|
|
42544
42663
|
}).optional(),
|
|
42545
42664
|
subagentConfig: VirtualAgentSubagentConfigSchema.optional(),
|
|
42546
42665
|
codeModeConfig: external_exports.object({
|
|
@@ -42556,6 +42675,28 @@ var AgentInputSchema = external_exports.object({
|
|
|
42556
42675
|
systemPrompt: external_exports.string().optional()
|
|
42557
42676
|
}).optional().nullable(),
|
|
42558
42677
|
memory: memoryConfigSchema.optional()
|
|
42678
|
+
}).superRefine((val, ctx) => {
|
|
42679
|
+
if (val.agentType !== "claude_managed") {
|
|
42680
|
+
if (!val.name) {
|
|
42681
|
+
ctx.addIssue({ code: "custom", path: ["name"], message: "name is required" });
|
|
42682
|
+
}
|
|
42683
|
+
if (!val.model) {
|
|
42684
|
+
ctx.addIssue({ code: "custom", path: ["model"], message: "model is required" });
|
|
42685
|
+
}
|
|
42686
|
+
return;
|
|
42687
|
+
}
|
|
42688
|
+
if (!val.agentId) {
|
|
42689
|
+
const cm = val.claudeManagedConfig;
|
|
42690
|
+
const validConnect = cm?.setupMode === "connect" && !!cm.anthropicAgentId;
|
|
42691
|
+
const validCreate = cm?.setupMode === "create" && !!cm.model;
|
|
42692
|
+
if (!validConnect && !validCreate) {
|
|
42693
|
+
ctx.addIssue({
|
|
42694
|
+
code: "custom",
|
|
42695
|
+
path: ["claudeManagedConfig"],
|
|
42696
|
+
message: 'Inline Claude Managed dispatch requires claudeManagedConfig: "connect" with anthropicAgentId, or "create" with a model. Or reference a saved agent via agentId.'
|
|
42697
|
+
});
|
|
42698
|
+
}
|
|
42699
|
+
}
|
|
42559
42700
|
});
|
|
42560
42701
|
var TextContentPartSchema = external_exports.object({
|
|
42561
42702
|
type: external_exports.literal("text"),
|
|
@@ -42809,6 +42950,17 @@ var appRoutingDocSchema = external_exports.object({
|
|
|
42809
42950
|
}),
|
|
42810
42951
|
updatedAt: external_exports.string()
|
|
42811
42952
|
});
|
|
42953
|
+
var SKILL_SCAN_HARD_BLOCK_CATEGORIES = [
|
|
42954
|
+
"credential_exfiltration",
|
|
42955
|
+
"prompt_injection",
|
|
42956
|
+
"mcp_tool_poisoning",
|
|
42957
|
+
"data_exfiltration",
|
|
42958
|
+
"privilege_escalation"
|
|
42959
|
+
];
|
|
42960
|
+
function normalizeCategoryToken(value) {
|
|
42961
|
+
return value.toLowerCase().replace(/[^a-z0-9]/g, "");
|
|
42962
|
+
}
|
|
42963
|
+
var HARD_BLOCK_NEEDLES = SKILL_SCAN_HARD_BLOCK_CATEGORIES.map(normalizeCategoryToken);
|
|
42812
42964
|
|
|
42813
42965
|
// src/config/env.ts
|
|
42814
42966
|
function getApiUrl() {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@runtypelabs/cli",
|
|
3
|
-
"version": "2.21.
|
|
3
|
+
"version": "2.21.3",
|
|
4
4
|
"description": "Command-line interface for Runtype AI platform",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
"rosie-skills": "0.8.1",
|
|
25
25
|
"yaml": "^2.9.0",
|
|
26
26
|
"@runtypelabs/ink-components": "0.3.2",
|
|
27
|
-
"@runtypelabs/sdk": "4.
|
|
27
|
+
"@runtypelabs/sdk": "4.16.0",
|
|
28
28
|
"@runtypelabs/terminal-animations": "0.2.1"
|
|
29
29
|
},
|
|
30
30
|
"devDependencies": {
|
|
@@ -39,7 +39,7 @@
|
|
|
39
39
|
"tsx": "^4.7.1",
|
|
40
40
|
"typescript": "^5.3.3",
|
|
41
41
|
"vitest": "^4.1.0",
|
|
42
|
-
"@runtypelabs/shared": "1.
|
|
42
|
+
"@runtypelabs/shared": "1.32.0"
|
|
43
43
|
},
|
|
44
44
|
"engines": {
|
|
45
45
|
"node": ">=22.0.0"
|