@runtypelabs/cli 2.35.3 → 2.35.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.
- package/CHANGELOG.md +9 -0
- package/README.md +17 -6
- package/dist/index.js +188 -60
- package/package.json +3 -3
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,14 @@
|
|
|
1
1
|
# @runtypelabs/cli
|
|
2
2
|
|
|
3
|
+
## 2.35.4
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 8ab7d4a: Apply flow and agent version snapshots to the live execution rows atomically when publishing from any API surface.
|
|
8
|
+
- Updated dependencies [ccd07e2]
|
|
9
|
+
- Updated dependencies [8ab7d4a]
|
|
10
|
+
- @runtypelabs/sdk@9.3.2
|
|
11
|
+
|
|
3
12
|
## 2.35.3
|
|
4
13
|
|
|
5
14
|
### Patch Changes
|
package/README.md
CHANGED
|
@@ -762,12 +762,23 @@ runtype products init --from <url> --name "Custom Name"
|
|
|
762
762
|
|
|
763
763
|
Manage flow versions.
|
|
764
764
|
|
|
765
|
-
| Subcommand
|
|
766
|
-
|
|
|
767
|
-
| `flow-versions list <flowId>`
|
|
768
|
-
| `flow-versions get <flowId> <versionId>`
|
|
769
|
-
| `flow-versions published <flowId>`
|
|
770
|
-
| `flow-versions publish <flowId> -v <versionId
|
|
765
|
+
| Subcommand | Description |
|
|
766
|
+
| --------------------------------------------------------------------- | ---------------------------- |
|
|
767
|
+
| `flow-versions list <flowId>` | List all versions for a flow |
|
|
768
|
+
| `flow-versions get <flowId> <versionId>` | Get a specific version |
|
|
769
|
+
| `flow-versions published <flowId>` | Get the published version |
|
|
770
|
+
| `flow-versions publish <flowId> -v <versionId> [--overwrite-managed]` | Apply and publish a version |
|
|
771
|
+
|
|
772
|
+
### `runtype agent-versions`
|
|
773
|
+
|
|
774
|
+
Manage Agent versions.
|
|
775
|
+
|
|
776
|
+
| Subcommand | Description |
|
|
777
|
+
| ----------------------------------------------------------------------- | --------------------------- |
|
|
778
|
+
| `agent-versions list <agentId>` | List all Agent versions |
|
|
779
|
+
| `agent-versions get <agentId> <versionId>` | Get a specific version |
|
|
780
|
+
| `agent-versions published <agentId>` | Get the published version |
|
|
781
|
+
| `agent-versions publish <agentId> -v <versionId> [--overwrite-managed]` | Apply and publish a version |
|
|
771
782
|
|
|
772
783
|
### `runtype billing`
|
|
773
784
|
|
package/dist/index.js
CHANGED
|
@@ -19324,7 +19324,7 @@ function date4(params) {
|
|
|
19324
19324
|
return _coercedDate(ZodDate, params);
|
|
19325
19325
|
}
|
|
19326
19326
|
|
|
19327
|
-
// ../shared/dist/chunk-
|
|
19327
|
+
// ../shared/dist/chunk-HD3SKN3O.mjs
|
|
19328
19328
|
var edgeAuthSnapshotSchema = external_exports.object({
|
|
19329
19329
|
/**
|
|
19330
19330
|
* Schema version. A plain positive int (not a literal) so a consumer pinned
|
|
@@ -19363,7 +19363,40 @@ var edgeAuthSnapshotSchema = external_exports.object({
|
|
|
19363
19363
|
* Optional for additive-compat with records written before this field existed (absent = "no expiry recorded").
|
|
19364
19364
|
* API keys populate it from their `expiresAt`; client tokens have no expiry (null).
|
|
19365
19365
|
*/
|
|
19366
|
-
expiresAt: external_exports.number().int().positive().nullable().optional()
|
|
19366
|
+
expiresAt: external_exports.number().int().positive().nullable().optional(),
|
|
19367
|
+
/**
|
|
19368
|
+
* ADDITIVE-OPTIONAL (origin consumer, D-119 step 1): credential row id.
|
|
19369
|
+
* Present only on records refreshed by the origin's auth-time write-through;
|
|
19370
|
+
* mutation-time writes may omit it and the origin fast path then falls back.
|
|
19371
|
+
*/
|
|
19372
|
+
keyId: external_exports.string().min(1).optional(),
|
|
19373
|
+
/** Credential display name; additive-optional, see {@link keyId}. */
|
|
19374
|
+
keyName: external_exports.string().nullable().optional(),
|
|
19375
|
+
/** Credential prefix (e.g. `rt_live_`); additive-optional, see {@link keyId}. */
|
|
19376
|
+
keyPrefix: external_exports.string().optional(),
|
|
19377
|
+
/** Account trust ceiling already applied to `scopes`; additive-optional. */
|
|
19378
|
+
accountTrustTier: external_exports.enum(["unverified_agent", "verified"]).optional(),
|
|
19379
|
+
/**
|
|
19380
|
+
* True only when `orgId` is the POST-workspace-authorization value the
|
|
19381
|
+
* origin's own DB path would have resolved (mutation-time writes stamp the
|
|
19382
|
+
* raw row org instead). The origin fast path requires this marker — serving
|
|
19383
|
+
* an unauthorized raw org would change auth semantics.
|
|
19384
|
+
*/
|
|
19385
|
+
workspaceResolved: external_exports.boolean().optional(),
|
|
19386
|
+
/**
|
|
19387
|
+
* Epoch ms the producer resolved this identity. The origin fast path bounds
|
|
19388
|
+
* acceptance by this (never staler than the workspace-membership cache the
|
|
19389
|
+
* DB path itself consults), so a membership removal cannot outlive the
|
|
19390
|
+
* bound the DB path already accepts. Additive-optional.
|
|
19391
|
+
*/
|
|
19392
|
+
resolvedAt: external_exports.number().int().positive().optional()
|
|
19393
|
+
});
|
|
19394
|
+
var resolvedEdgeAuthSnapshotSchema = edgeAuthSnapshotSchema.extend({
|
|
19395
|
+
keyId: external_exports.string().min(1),
|
|
19396
|
+
keyPrefix: external_exports.string().min(1),
|
|
19397
|
+
accountTrustTier: external_exports.enum(["unverified_agent", "verified"]),
|
|
19398
|
+
workspaceResolved: external_exports.literal(true),
|
|
19399
|
+
resolvedAt: external_exports.number().int().positive()
|
|
19367
19400
|
});
|
|
19368
19401
|
|
|
19369
19402
|
// ../shared/dist/chunk-P75VQJDW.mjs
|
|
@@ -21621,7 +21654,7 @@ var recordCollectionSchemaSchema = external_exports.strictObject({
|
|
|
21621
21654
|
additionalProperties: external_exports.boolean().optional()
|
|
21622
21655
|
}).superRefine((schema, ctx) => addSemanticIssues(schema, ctx));
|
|
21623
21656
|
|
|
21624
|
-
// ../shared/dist/chunk-
|
|
21657
|
+
// ../shared/dist/chunk-4HCZLGCG.mjs
|
|
21625
21658
|
var MCPServerCategory = {
|
|
21626
21659
|
COMMUNICATION: "communication",
|
|
21627
21660
|
PRODUCTIVITY: "productivity",
|
|
@@ -24627,7 +24660,7 @@ function unwrapVectorSourceTemplate(source) {
|
|
|
24627
24660
|
return inner;
|
|
24628
24661
|
}
|
|
24629
24662
|
|
|
24630
|
-
// ../shared/dist/chunk-
|
|
24663
|
+
// ../shared/dist/chunk-6D5PSRBO.mjs
|
|
24631
24664
|
var jsonPatchOperationSchema = external_exports.object({
|
|
24632
24665
|
op: external_exports.enum(["add", "remove", "replace", "move", "copy", "test"]),
|
|
24633
24666
|
/** JSON Pointer (RFC 6901) into the state document. `''` addresses the root. */
|
|
@@ -24732,6 +24765,10 @@ var unifiedExecutionErrorEventSchema = external_exports.object({
|
|
|
24732
24765
|
kind: executionKindSchema,
|
|
24733
24766
|
error: unifiedErrorPayloadSchema,
|
|
24734
24767
|
completedAt: external_exports.string().optional(),
|
|
24768
|
+
// WHY(#7794): Loop-level stop reason on a FAILING agent terminal; loose like execution_complete's, absent on the error route.
|
|
24769
|
+
stopReason: external_exports.string().optional(),
|
|
24770
|
+
// WHY(#7794): Salvaged assistant text a FAILED agent run still produced, so a messaging surface can deliver it.
|
|
24771
|
+
finalOutput: external_exports.string().optional(),
|
|
24735
24772
|
code: external_exports.string().optional(),
|
|
24736
24773
|
upgradeUrl: external_exports.string().optional(),
|
|
24737
24774
|
// WHY(docs/why/packages/shared/src/utils.md#blockreason-mirrors-platformkeyblockreason-in-mo): blockReason mirrors PlatformKeyBlockReason (in model-execution, which shared can't import) as a string, for
|
|
@@ -25151,7 +25188,7 @@ var UNIFIED_SSE_EVENT_TYPES = _unifiedTuple([
|
|
|
25151
25188
|
"custom"
|
|
25152
25189
|
]);
|
|
25153
25190
|
|
|
25154
|
-
// ../shared/dist/chunk-
|
|
25191
|
+
// ../shared/dist/chunk-5SCRYWGC.mjs
|
|
25155
25192
|
var mediaAnnotationsSchema = external_exports.object({
|
|
25156
25193
|
audience: external_exports.array(external_exports.enum(["user", "assistant"])).optional()
|
|
25157
25194
|
});
|
|
@@ -26378,6 +26415,16 @@ function isReservedRuntypeToolName(name) {
|
|
|
26378
26415
|
function reservedToolNameMessage(subject, name) {
|
|
26379
26416
|
return `${subject} "${name}" collides with the reserved tool name "${RUNTYPE_SET_STATE_TOOL_NAME}" (the agent state write tool). Tool names are lowercased and non-alphanumeric characters become "_" before the model sees them, so every spelling that normalizes to it is reserved with it. "runtype_" is a reserved tool namespace. Rename the tool.`;
|
|
26380
26417
|
}
|
|
26418
|
+
function isCatalogToolCallStepToolId(toolId) {
|
|
26419
|
+
return isBuiltInToolId(toolId) || isPlatformToolId(toolId);
|
|
26420
|
+
}
|
|
26421
|
+
function isKnownCatalogToolId(toolId) {
|
|
26422
|
+
const { baseId } = parseToolInstanceId(toolId);
|
|
26423
|
+
return isBuiltInIntegrationToolId(baseId) || getBuiltInToolById(baseId) !== void 0;
|
|
26424
|
+
}
|
|
26425
|
+
function unknownCatalogToolMessage(toolId) {
|
|
26426
|
+
return `Tool "${toolId}" is not a built-in or platform catalog tool. Check the id against the tool catalog (list_tools), or point toolId at a saved tool's "tool_..." id or its "tool:<name>" reference.`;
|
|
26427
|
+
}
|
|
26381
26428
|
var apiKeyRequestStatusSchema = external_exports.enum([
|
|
26382
26429
|
"pending",
|
|
26383
26430
|
"approved",
|
|
@@ -26993,7 +27040,9 @@ var agentRuntimeConfigSchema = external_exports.object({
|
|
|
26993
27040
|
maxTurns: external_exports.number().int().min(1).max(100).optional(),
|
|
26994
27041
|
maxCost: external_exports.number().min(0).optional(),
|
|
26995
27042
|
enableReflection: external_exports.boolean().optional(),
|
|
26996
|
-
reflectionInterval: external_exports.number().int().min(1).max(50).optional()
|
|
27043
|
+
reflectionInterval: external_exports.number().int().min(1).max(50).optional(),
|
|
27044
|
+
// WHY(#7794): Defaults true; false keeps the pre-#7794 verdict for a length-truncated tool call.
|
|
27045
|
+
treatLengthCutoffAsFailure: external_exports.boolean().optional()
|
|
26997
27046
|
}).optional(),
|
|
26998
27047
|
voice: external_exports.object({
|
|
26999
27048
|
enabled: external_exports.boolean().optional(),
|
|
@@ -27396,7 +27445,9 @@ var toolCallConfigSchema = external_exports.object({
|
|
|
27396
27445
|
streamOutput: external_exports.boolean().optional(),
|
|
27397
27446
|
maxRetries: external_exports.number().int().min(0).optional(),
|
|
27398
27447
|
timeout: external_exports.number().int().positive().optional(),
|
|
27399
|
-
onError: external_exports.enum(["fail", "continue", "retry"]).optional()
|
|
27448
|
+
onError: external_exports.enum(["fail", "continue", "retry"]).optional(),
|
|
27449
|
+
// WHY(#7748): Per-tool settings for a catalog toolId — the agent plane's `toolConfigs` entry, for one deterministic call.
|
|
27450
|
+
toolConfig: external_exports.record(external_exports.string(), external_exports.unknown()).optional()
|
|
27400
27451
|
});
|
|
27401
27452
|
var storeVectorConfigSchema = external_exports.object({
|
|
27402
27453
|
vectorsSource: external_exports.string().optional(),
|
|
@@ -29661,6 +29712,9 @@ function normalizeToolCallConfig(config3) {
|
|
|
29661
29712
|
if (config3.onError) {
|
|
29662
29713
|
validateEnum(config3.onError, ["fail", "continue", "retry"], "onError", "tool-call");
|
|
29663
29714
|
}
|
|
29715
|
+
if (config3.toolConfig !== void 0 && config3.toolConfig !== null) {
|
|
29716
|
+
validateObject(config3.toolConfig, "toolConfig", "tool-call", true);
|
|
29717
|
+
}
|
|
29664
29718
|
return {
|
|
29665
29719
|
toolId: config3.toolId,
|
|
29666
29720
|
parameters: config3.parameters,
|
|
@@ -29668,7 +29722,9 @@ function normalizeToolCallConfig(config3) {
|
|
|
29668
29722
|
outputVariable: config3.outputVariable,
|
|
29669
29723
|
maxRetries: config3.maxRetries,
|
|
29670
29724
|
timeout: config3.timeout,
|
|
29671
|
-
onError: config3.onError
|
|
29725
|
+
onError: config3.onError,
|
|
29726
|
+
// WHY(#7748): The closed config is the dispatch carrier; dropping this would silently default every configurable catalog tool.
|
|
29727
|
+
toolConfig: config3.toolConfig
|
|
29672
29728
|
};
|
|
29673
29729
|
}
|
|
29674
29730
|
function normalizeSuccessCriteria(criteria) {
|
|
@@ -30942,48 +30998,30 @@ var CONDITIONAL_BRANCH_STEP_KEYS = [
|
|
|
30942
30998
|
"false_steps",
|
|
30943
30999
|
"otherwiseSteps"
|
|
30944
31000
|
];
|
|
30945
|
-
function
|
|
31001
|
+
function walkStepTree(node2, basePath, depth, visitor) {
|
|
30946
31002
|
if (!isObjectRecord(node2)) return;
|
|
30947
31003
|
if (node2.enabled === false) return;
|
|
30948
|
-
|
|
31004
|
+
if (visitor.visitStep(node2, basePath, depth) === false) return;
|
|
30949
31005
|
if (!isObjectRecord(node2.config)) return;
|
|
30950
31006
|
const config3 = node2.config;
|
|
30951
31007
|
if (node2.type === "loop") {
|
|
30952
|
-
checkConditionExpression(config3.until, `${basePath}.config.until`, stepRef, buckets);
|
|
30953
31008
|
if (Array.isArray(config3.steps)) {
|
|
30954
31009
|
config3.steps.forEach(
|
|
30955
|
-
(nested, nestedIndex) =>
|
|
30956
|
-
nested,
|
|
30957
|
-
`${basePath}.config.steps[${nestedIndex}]`,
|
|
30958
|
-
stepRef,
|
|
30959
|
-
buckets,
|
|
30960
|
-
depth
|
|
30961
|
-
)
|
|
31010
|
+
(nested, nestedIndex) => walkStepTree(nested, `${basePath}.config.steps[${nestedIndex}]`, depth, visitor)
|
|
30962
31011
|
);
|
|
30963
31012
|
}
|
|
30964
31013
|
return;
|
|
30965
31014
|
}
|
|
30966
31015
|
if (node2.type !== "conditional") return;
|
|
30967
|
-
checkConditionExpression(config3.condition, `${basePath}.config.condition`, stepRef, buckets);
|
|
30968
31016
|
if (depth >= MAX_CONDITIONAL_NESTING_DEPTH) return;
|
|
30969
31017
|
if (Array.isArray(config3.branches)) {
|
|
30970
31018
|
config3.branches.forEach((branch, branchIndex) => {
|
|
30971
31019
|
if (!isObjectRecord(branch)) return;
|
|
30972
|
-
|
|
30973
|
-
|
|
30974
|
-
`${basePath}.config.branches[${branchIndex}].condition`,
|
|
30975
|
-
stepRef,
|
|
30976
|
-
buckets
|
|
30977
|
-
);
|
|
31020
|
+
const branchPath = `${basePath}.config.branches[${branchIndex}]`;
|
|
31021
|
+
visitor.visitBranch?.(branch, branchPath);
|
|
30978
31022
|
if (Array.isArray(branch.steps)) {
|
|
30979
31023
|
branch.steps.forEach(
|
|
30980
|
-
(nested, nestedIndex) =>
|
|
30981
|
-
nested,
|
|
30982
|
-
`${basePath}.config.branches[${branchIndex}].steps[${nestedIndex}]`,
|
|
30983
|
-
stepRef,
|
|
30984
|
-
buckets,
|
|
30985
|
-
depth + 1
|
|
30986
|
-
)
|
|
31024
|
+
(nested, nestedIndex) => walkStepTree(nested, `${branchPath}.steps[${nestedIndex}]`, depth + 1, visitor)
|
|
30987
31025
|
);
|
|
30988
31026
|
}
|
|
30989
31027
|
});
|
|
@@ -30992,22 +31030,66 @@ function walkStepConditionExpressions(node2, basePath, stepRef, buckets, depth)
|
|
|
30992
31030
|
const arr = config3[key];
|
|
30993
31031
|
if (!Array.isArray(arr)) continue;
|
|
30994
31032
|
arr.forEach(
|
|
30995
|
-
(nested, nestedIndex) =>
|
|
30996
|
-
nested,
|
|
30997
|
-
`${basePath}.config.${key}[${nestedIndex}]`,
|
|
30998
|
-
stepRef,
|
|
30999
|
-
buckets,
|
|
31000
|
-
depth + 1
|
|
31001
|
-
)
|
|
31033
|
+
(nested, nestedIndex) => walkStepTree(nested, `${basePath}.config.${key}[${nestedIndex}]`, depth + 1, visitor)
|
|
31002
31034
|
);
|
|
31003
31035
|
}
|
|
31004
31036
|
}
|
|
31037
|
+
function conditionExpressionVisitor(stepRef, buckets) {
|
|
31038
|
+
return {
|
|
31039
|
+
visitStep: (node2, basePath) => {
|
|
31040
|
+
checkConditionExpression(node2.when, `${basePath}.when`, stepRef, buckets);
|
|
31041
|
+
if (!isObjectRecord(node2.config)) return;
|
|
31042
|
+
const config3 = node2.config;
|
|
31043
|
+
if (node2.type === "loop") {
|
|
31044
|
+
checkConditionExpression(config3.until, `${basePath}.config.until`, stepRef, buckets);
|
|
31045
|
+
} else if (node2.type === "conditional") {
|
|
31046
|
+
checkConditionExpression(config3.condition, `${basePath}.config.condition`, stepRef, buckets);
|
|
31047
|
+
}
|
|
31048
|
+
},
|
|
31049
|
+
visitBranch: (branch, branchPath) => {
|
|
31050
|
+
checkConditionExpression(branch.condition, `${branchPath}.condition`, stepRef, buckets);
|
|
31051
|
+
}
|
|
31052
|
+
};
|
|
31053
|
+
}
|
|
31005
31054
|
function validateConditionExpressions(flowSteps, buckets, conditionalStepsExceedingDepth) {
|
|
31006
31055
|
for (const [stepIndex, step] of flowSteps.entries()) {
|
|
31007
31056
|
if (step.enabled === false) continue;
|
|
31008
31057
|
if (conditionalStepsExceedingDepth.has(stepIndex)) continue;
|
|
31009
31058
|
const stepRef = { index: stepIndex, name: step.name, type: step.type };
|
|
31010
|
-
|
|
31059
|
+
walkStepTree(step, `flowSteps[${stepIndex}]`, 1, conditionExpressionVisitor(stepRef, buckets));
|
|
31060
|
+
}
|
|
31061
|
+
}
|
|
31062
|
+
var TOOL_CALL_STEP_UNKNOWN_CATALOG_TOOL_CODE = "TOOL_CALL_STEP_UNKNOWN_CATALOG_TOOL";
|
|
31063
|
+
function toolCallStepToolIdVisitor(stepRef, buckets) {
|
|
31064
|
+
return {
|
|
31065
|
+
visitStep: (node2, basePath, depth) => {
|
|
31066
|
+
if (node2.type !== "tool-call") return depth < MAX_CONDITIONAL_NESTING_DEPTH;
|
|
31067
|
+
const config3 = isObjectRecord(node2.config) ? node2.config : void 0;
|
|
31068
|
+
const toolId = config3?.toolId;
|
|
31069
|
+
if (typeof toolId === "string" && isCatalogToolCallStepToolId(toolId) && !isKnownCatalogToolId(toolId)) {
|
|
31070
|
+
addIssue(
|
|
31071
|
+
"error",
|
|
31072
|
+
{
|
|
31073
|
+
code: TOOL_CALL_STEP_UNKNOWN_CATALOG_TOOL_CODE,
|
|
31074
|
+
// WHY(.claude/rules/flow-validation.md): Single-sourced with both executors' dispatch-time throw so the sentence cannot drift.
|
|
31075
|
+
message: unknownCatalogToolMessage(toolId),
|
|
31076
|
+
path: `${basePath}.config.toolId`,
|
|
31077
|
+
step: stepRef,
|
|
31078
|
+
details: { toolId }
|
|
31079
|
+
},
|
|
31080
|
+
buckets
|
|
31081
|
+
);
|
|
31082
|
+
}
|
|
31083
|
+
return false;
|
|
31084
|
+
}
|
|
31085
|
+
};
|
|
31086
|
+
}
|
|
31087
|
+
function validateToolCallStepToolIds(flowSteps, buckets, conditionalStepsExceedingDepth) {
|
|
31088
|
+
for (const [stepIndex, step] of flowSteps.entries()) {
|
|
31089
|
+
if (step.enabled === false) continue;
|
|
31090
|
+
if (conditionalStepsExceedingDepth.has(stepIndex)) continue;
|
|
31091
|
+
const stepRef = { index: stepIndex, name: step.name, type: step.type };
|
|
31092
|
+
walkStepTree(step, `flowSteps[${stepIndex}]`, 1, toolCallStepToolIdVisitor(stepRef, buckets));
|
|
31011
31093
|
}
|
|
31012
31094
|
}
|
|
31013
31095
|
var TOOL_STRATEGY_REQUIRED_MULTISTEP_CODE = "TOOL_STRATEGY_REQUIRED_MULTISTEP";
|
|
@@ -32238,6 +32320,7 @@ function collectFlowStructureIssues(flowData, deps, buckets) {
|
|
|
32238
32320
|
validateUpsertRecordSourceShape(flowData.flowSteps, buckets);
|
|
32239
32321
|
validateStoreVectorSource(flowData.flowSteps, buckets, deps.declaredFlowInputs);
|
|
32240
32322
|
validateConditionExpressions(flowData.flowSteps, buckets, recursiveStepsRejected);
|
|
32323
|
+
validateToolCallStepToolIds(flowData.flowSteps, buckets, recursiveStepsRejected);
|
|
32241
32324
|
validateToolCallStrategyMultiStep(flowData.flowSteps, buckets);
|
|
32242
32325
|
validateToolCallStrategyNoneWithTools(flowData.flowSteps, buckets);
|
|
32243
32326
|
validateOptionalParamsInToolTemplates(flowData.flowSteps, buckets);
|
|
@@ -32686,6 +32769,20 @@ var runtimeHostDependencySchema = external_exports.union([
|
|
|
32686
32769
|
backgroundRunCoordinatorDependencySchema,
|
|
32687
32770
|
unknownHostDependencySchema
|
|
32688
32771
|
]);
|
|
32772
|
+
var edgeArtifactMarkerSchema = external_exports.object({
|
|
32773
|
+
/** Same tolerance rule as the edge-auth snapshot: plain positive int. */
|
|
32774
|
+
schemaVersion: external_exports.number().int().positive(),
|
|
32775
|
+
resourceType: runtimeArtifactResourceTypeSchema,
|
|
32776
|
+
resourceId: external_exports.string().min(1),
|
|
32777
|
+
/** Hash of the materialized payload (the immutable artifact identity). */
|
|
32778
|
+
exportHash: external_exports.string().min(1),
|
|
32779
|
+
/** Epoch ms the marker was written. */
|
|
32780
|
+
updatedAt: external_exports.number().int().positive(),
|
|
32781
|
+
/** Published version behind the payload, when the export was version-pinned. */
|
|
32782
|
+
versionId: external_exports.string().min(1).nullable().optional(),
|
|
32783
|
+
/** Runtime package version the payload was materialized against. */
|
|
32784
|
+
runtimePackageVersion: external_exports.string().min(1).optional()
|
|
32785
|
+
});
|
|
32689
32786
|
var SKILL_NAME_PATTERN = /^[a-z][a-z0-9_-]{0,63}$/;
|
|
32690
32787
|
var EMIT_ARTIFACT_MARKDOWN_TOOL_ID = "emit_artifact_markdown";
|
|
32691
32788
|
var EMIT_ARTIFACT_COMPONENT_TOOL_ID = "emit_artifact_component";
|
|
@@ -33333,7 +33430,9 @@ var agentLoopConfigSchema = external_exports.object({
|
|
|
33333
33430
|
maxTurns: external_exports.number().int().min(1).max(100).optional(),
|
|
33334
33431
|
maxCost: external_exports.number().nonnegative().optional(),
|
|
33335
33432
|
enableReflection: external_exports.boolean().optional(),
|
|
33336
|
-
reflectionInterval: external_exports.number().int().min(1).max(50).optional()
|
|
33433
|
+
reflectionInterval: external_exports.number().int().min(1).max(50).optional(),
|
|
33434
|
+
// WHY(#7794): Defaults true; false keeps the pre-#7794 verdict for a length-truncated tool call.
|
|
33435
|
+
treatLengthCutoffAsFailure: external_exports.boolean().optional()
|
|
33337
33436
|
});
|
|
33338
33437
|
var agentReasoningConfigSchema = external_exports.object({
|
|
33339
33438
|
enabled: external_exports.boolean().optional(),
|
|
@@ -34028,7 +34127,8 @@ function mergeResults(...results) {
|
|
|
34028
34127
|
var FORWARDED_CORE_CODES = /* @__PURE__ */ new Set([
|
|
34029
34128
|
...NAMESPACE_VARIABLE_REFERENCE_CODES,
|
|
34030
34129
|
RESERVED_TOOL_NAME_CODE,
|
|
34031
|
-
STORE_VECTOR_MODEL_MISSING_CODE
|
|
34130
|
+
STORE_VECTOR_MODEL_MISSING_CODE,
|
|
34131
|
+
TOOL_CALL_STEP_UNKNOWN_CATALOG_TOOL_CODE
|
|
34032
34132
|
]);
|
|
34033
34133
|
function validateFlowDefinition(flow, capIndex, context) {
|
|
34034
34134
|
const result = emptyResult();
|
|
@@ -34072,7 +34172,7 @@ function validateFlowDefinition(flow, capIndex, context) {
|
|
|
34072
34172
|
if (step.type === "tool-call" && context?.toolIds) {
|
|
34073
34173
|
const config3 = step.config;
|
|
34074
34174
|
const toolId = config3?.toolId;
|
|
34075
|
-
if (toolId && !context.toolIds.has(toolId)) {
|
|
34175
|
+
if (toolId && !isCatalogToolCallStepToolId(toolId) && !context.toolIds.has(toolId)) {
|
|
34076
34176
|
result.warnings.push(
|
|
34077
34177
|
createIssue(
|
|
34078
34178
|
"warning",
|
|
@@ -35488,7 +35588,9 @@ var AgentLoopConfigSchema = external_exports.object({
|
|
|
35488
35588
|
maxTurns: external_exports.number().int().min(1).max(100).optional(),
|
|
35489
35589
|
maxCost: external_exports.number().min(0).optional(),
|
|
35490
35590
|
enableReflection: external_exports.boolean().optional(),
|
|
35491
|
-
reflectionInterval: external_exports.number().int().min(1).max(50).optional()
|
|
35591
|
+
reflectionInterval: external_exports.number().int().min(1).max(50).optional(),
|
|
35592
|
+
// WHY(#7794): Defaults true; false keeps the pre-#7794 verdict for a length-truncated tool call.
|
|
35593
|
+
treatLengthCutoffAsFailure: external_exports.boolean().optional()
|
|
35492
35594
|
});
|
|
35493
35595
|
var VirtualAgentArtifactConfigSchema = external_exports.object({
|
|
35494
35596
|
enabled: external_exports.literal(true),
|
|
@@ -61861,16 +61963,21 @@ flowVersionsCommand.command("published <flowId>").description("Get the published
|
|
|
61861
61963
|
const { waitUntilExit } = render26(React26.createElement(App));
|
|
61862
61964
|
await waitUntilExit();
|
|
61863
61965
|
});
|
|
61864
|
-
flowVersionsCommand.command("publish <flowId>").description("Publish a version").requiredOption("-v, --version <versionId>", "Version ID to publish").option("--tty", "Force TTY mode").option("--no-tty", "Force non-TTY mode").action(async (flowId, options) => {
|
|
61966
|
+
flowVersionsCommand.command("publish <flowId>").description("Publish a version").requiredOption("-v, --version <versionId>", "Version ID to publish").option("--overwrite-managed", "Confirm replacing a definition managed by code").option("--tty", "Force TTY mode").option("--no-tty", "Force non-TTY mode").action(async (flowId, options) => {
|
|
61865
61967
|
const apiKey = await ensureAuth();
|
|
61866
61968
|
if (!apiKey) return;
|
|
61867
61969
|
const client = createCliClient(apiKey);
|
|
61868
61970
|
if (!isTTY(options)) {
|
|
61869
61971
|
try {
|
|
61870
|
-
await client.post(
|
|
61871
|
-
|
|
61872
|
-
|
|
61972
|
+
const result = await client.post(
|
|
61973
|
+
`/flow-versions/${flowId}/publish`,
|
|
61974
|
+
{
|
|
61975
|
+
versionId: options.version,
|
|
61976
|
+
...options.overwriteManaged ? { onConflict: "overwrite" } : {}
|
|
61977
|
+
}
|
|
61978
|
+
);
|
|
61873
61979
|
console.log(chalk35.green("Version published"));
|
|
61980
|
+
for (const warning of result.warnings ?? []) console.warn(chalk35.yellow(`Warning: ${warning}`));
|
|
61874
61981
|
} catch (error61) {
|
|
61875
61982
|
const message = error61 instanceof Error ? error61.message : "Unknown error";
|
|
61876
61983
|
console.error(chalk35.red("Failed to publish version"));
|
|
@@ -61883,12 +61990,20 @@ flowVersionsCommand.command("publish <flowId>").description("Publish a version")
|
|
|
61883
61990
|
const [loading, setLoading] = useState42(true);
|
|
61884
61991
|
const [success2, setSuccess] = useState42(null);
|
|
61885
61992
|
const [error61, setError] = useState42(null);
|
|
61993
|
+
const [successMessage, setSuccessMessage] = useState42("Version published");
|
|
61886
61994
|
useEffect36(() => {
|
|
61887
61995
|
const run2 = async () => {
|
|
61888
61996
|
try {
|
|
61889
|
-
await client.post(
|
|
61890
|
-
|
|
61891
|
-
|
|
61997
|
+
const result = await client.post(
|
|
61998
|
+
`/flow-versions/${flowId}/publish`,
|
|
61999
|
+
{
|
|
62000
|
+
versionId: options.version,
|
|
62001
|
+
...options.overwriteManaged ? { onConflict: "overwrite" } : {}
|
|
62002
|
+
}
|
|
62003
|
+
);
|
|
62004
|
+
if (result.warnings?.length) {
|
|
62005
|
+
setSuccessMessage(`Version published. ${result.warnings.join(" ")}`);
|
|
62006
|
+
}
|
|
61892
62007
|
setSuccess(true);
|
|
61893
62008
|
setLoading(false);
|
|
61894
62009
|
} catch (err) {
|
|
@@ -61903,7 +62018,7 @@ flowVersionsCommand.command("publish <flowId>").description("Publish a version")
|
|
|
61903
62018
|
loading,
|
|
61904
62019
|
loadingLabel: "Publishing version...",
|
|
61905
62020
|
success: success2,
|
|
61906
|
-
successMessage
|
|
62021
|
+
successMessage,
|
|
61907
62022
|
error: error61
|
|
61908
62023
|
});
|
|
61909
62024
|
};
|
|
@@ -62133,17 +62248,22 @@ agentVersionsCommand.command("published <agentId>").description("Get the publish
|
|
|
62133
62248
|
const { waitUntilExit } = render27(React27.createElement(App));
|
|
62134
62249
|
await waitUntilExit();
|
|
62135
62250
|
});
|
|
62136
|
-
agentVersionsCommand.command("publish <agentId>").description("Publish a version").requiredOption("-v, --version <versionId>", "Version ID to publish").option("--tty", "Force TTY mode").option("--no-tty", "Force non-TTY mode").action(
|
|
62251
|
+
agentVersionsCommand.command("publish <agentId>").description("Publish a version").requiredOption("-v, --version <versionId>", "Version ID to publish").option("--overwrite-managed", "Confirm replacing a definition managed by code").option("--tty", "Force TTY mode").option("--no-tty", "Force non-TTY mode").action(
|
|
62137
62252
|
async (agentId, options) => {
|
|
62138
62253
|
const apiKey = await ensureAuth();
|
|
62139
62254
|
if (!apiKey) return;
|
|
62140
62255
|
const client = createCliClient(apiKey);
|
|
62141
62256
|
if (!isTTY(options)) {
|
|
62142
62257
|
try {
|
|
62143
|
-
await client.post(
|
|
62144
|
-
|
|
62145
|
-
|
|
62258
|
+
const result = await client.post(
|
|
62259
|
+
`/agent-versions/${agentId}/publish`,
|
|
62260
|
+
{
|
|
62261
|
+
versionId: options.version,
|
|
62262
|
+
...options.overwriteManaged ? { onConflict: "overwrite" } : {}
|
|
62263
|
+
}
|
|
62264
|
+
);
|
|
62146
62265
|
console.log(chalk36.green("Version published"));
|
|
62266
|
+
for (const warning of result.warnings ?? []) console.warn(chalk36.yellow(`Warning: ${warning}`));
|
|
62147
62267
|
} catch (error61) {
|
|
62148
62268
|
const message = error61 instanceof Error ? error61.message : "Unknown error";
|
|
62149
62269
|
console.error(chalk36.red("Failed to publish version"));
|
|
@@ -62156,12 +62276,20 @@ agentVersionsCommand.command("publish <agentId>").description("Publish a version
|
|
|
62156
62276
|
const [loading, setLoading] = useState43(true);
|
|
62157
62277
|
const [success2, setSuccess] = useState43(null);
|
|
62158
62278
|
const [error61, setError] = useState43(null);
|
|
62279
|
+
const [successMessage, setSuccessMessage] = useState43("Version published");
|
|
62159
62280
|
useEffect37(() => {
|
|
62160
62281
|
const run2 = async () => {
|
|
62161
62282
|
try {
|
|
62162
|
-
await client.post(
|
|
62163
|
-
|
|
62164
|
-
|
|
62283
|
+
const result = await client.post(
|
|
62284
|
+
`/agent-versions/${agentId}/publish`,
|
|
62285
|
+
{
|
|
62286
|
+
versionId: options.version,
|
|
62287
|
+
...options.overwriteManaged ? { onConflict: "overwrite" } : {}
|
|
62288
|
+
}
|
|
62289
|
+
);
|
|
62290
|
+
if (result.warnings?.length) {
|
|
62291
|
+
setSuccessMessage(`Version published. ${result.warnings.join(" ")}`);
|
|
62292
|
+
}
|
|
62165
62293
|
setSuccess(true);
|
|
62166
62294
|
setLoading(false);
|
|
62167
62295
|
} catch (err) {
|
|
@@ -62176,7 +62304,7 @@ agentVersionsCommand.command("publish <agentId>").description("Publish a version
|
|
|
62176
62304
|
loading,
|
|
62177
62305
|
loadingLabel: "Publishing version...",
|
|
62178
62306
|
success: success2,
|
|
62179
|
-
successMessage
|
|
62307
|
+
successMessage,
|
|
62180
62308
|
error: error61
|
|
62181
62309
|
});
|
|
62182
62310
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@runtypelabs/cli",
|
|
3
|
-
"version": "2.35.
|
|
3
|
+
"version": "2.35.4",
|
|
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.3.
|
|
14
|
+
"@runtypelabs/sdk": "9.3.2",
|
|
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.17.1",
|
|
36
|
-
"@runtypelabs/shared": "3.
|
|
36
|
+
"@runtypelabs/shared": "3.36.0",
|
|
37
37
|
"@types/express": "^5.0.6",
|
|
38
38
|
"@types/micromatch": "^4.0.9",
|
|
39
39
|
"@types/node": "^25.3.3",
|