@runtypelabs/cli 2.16.7 → 2.16.9
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 +396 -0
- package/package.json +3 -3
package/dist/index.js
CHANGED
|
@@ -544,6 +544,363 @@ import { RuntypeApiError } from "@runtypelabs/sdk";
|
|
|
544
544
|
// src/lib/sdk-client.ts
|
|
545
545
|
import { createClient } from "@runtypelabs/sdk";
|
|
546
546
|
|
|
547
|
+
// ../shared/dist/chunk-MYXAZOFG.mjs
|
|
548
|
+
var travrseConfig = {
|
|
549
|
+
name: "Travrse",
|
|
550
|
+
nameLower: "travrse",
|
|
551
|
+
tagline: "AI ambition, meet reality",
|
|
552
|
+
description: "Fast-track AI implementation for every team. API for developers, dashboard for business users. From idea to production in minutes, with or without code.",
|
|
553
|
+
url: "https://www.travrse.ai",
|
|
554
|
+
website: "https://travrse.ai",
|
|
555
|
+
domain: "travrse.ai",
|
|
556
|
+
npmScope: "@travrse",
|
|
557
|
+
cliCommand: "travrse",
|
|
558
|
+
githubOrg: "travrse-io",
|
|
559
|
+
legalEntity: "Travrse Labs, Inc",
|
|
560
|
+
support: {
|
|
561
|
+
email: "support@travrse.ai"
|
|
562
|
+
},
|
|
563
|
+
dashboardUrl: "https://run.travrse.ai",
|
|
564
|
+
apiUrl: "https://api.travrse.ai",
|
|
565
|
+
docsUrl: "https://docs.travrse.ai"
|
|
566
|
+
};
|
|
567
|
+
var runtypeConfig = {
|
|
568
|
+
name: "Runtype",
|
|
569
|
+
nameLower: "runtype",
|
|
570
|
+
tagline: "Your AI Product Platform",
|
|
571
|
+
description: "Build and deploy AI experiences faster than ever. Powerful API for developers, intuitive dashboard for teams.",
|
|
572
|
+
url: "https://www.runtype.com",
|
|
573
|
+
website: "https://runtype.com",
|
|
574
|
+
domain: "runtype.com",
|
|
575
|
+
npmScope: "@runtypelabs",
|
|
576
|
+
cliCommand: "runtype",
|
|
577
|
+
githubOrg: "runtypelabs",
|
|
578
|
+
legalEntity: "Travrse Labs, Inc",
|
|
579
|
+
support: {
|
|
580
|
+
email: "support@runtype.com"
|
|
581
|
+
},
|
|
582
|
+
dashboardUrl: "https://use.runtype.com",
|
|
583
|
+
apiUrl: "https://api.runtype.com",
|
|
584
|
+
docsUrl: "https://docs.runtype.com"
|
|
585
|
+
};
|
|
586
|
+
var BRAND_CONFIGS = {
|
|
587
|
+
travrse: travrseConfig,
|
|
588
|
+
runtype: runtypeConfig
|
|
589
|
+
// Add more brand configs here:
|
|
590
|
+
// mybrand: myBrandConfig,
|
|
591
|
+
};
|
|
592
|
+
var DEFAULT_BRAND_NAME = "runtype";
|
|
593
|
+
function loadBrandConfig(env) {
|
|
594
|
+
let configName = DEFAULT_BRAND_NAME;
|
|
595
|
+
try {
|
|
596
|
+
if (env) {
|
|
597
|
+
configName = env.NEXT_PUBLIC_BRAND_CONFIG_NAME || env.BRAND_CONFIG_NAME || DEFAULT_BRAND_NAME;
|
|
598
|
+
} else {
|
|
599
|
+
configName = process.env.NEXT_PUBLIC_BRAND_CONFIG_NAME || process.env.BRAND_CONFIG_NAME || DEFAULT_BRAND_NAME;
|
|
600
|
+
}
|
|
601
|
+
} catch (error51) {
|
|
602
|
+
configName = DEFAULT_BRAND_NAME;
|
|
603
|
+
}
|
|
604
|
+
const config3 = BRAND_CONFIGS[configName];
|
|
605
|
+
if (!config3) {
|
|
606
|
+
if (process.env.NODE_ENV !== "production") {
|
|
607
|
+
console.warn(
|
|
608
|
+
`Brand config "${configName}" not found. Available configs: ${Object.keys(BRAND_CONFIGS).join(", ")}. Falling back to "${DEFAULT_BRAND_NAME}".`
|
|
609
|
+
);
|
|
610
|
+
}
|
|
611
|
+
return BRAND_CONFIGS[DEFAULT_BRAND_NAME];
|
|
612
|
+
}
|
|
613
|
+
return config3;
|
|
614
|
+
}
|
|
615
|
+
var BRAND = loadBrandConfig();
|
|
616
|
+
var DEFAULT_BRAND_CONFIG = BRAND_CONFIGS[DEFAULT_BRAND_NAME];
|
|
617
|
+
|
|
618
|
+
// ../shared/dist/chunk-3BMGMHHD.mjs
|
|
619
|
+
function getNestedValue(obj, path16) {
|
|
620
|
+
let normalizedPath = path16;
|
|
621
|
+
normalizedPath = normalizedPath.replace(/^\$\.?/, "");
|
|
622
|
+
normalizedPath = normalizedPath.replace(/\[(\d+)\]/g, ".$1");
|
|
623
|
+
normalizedPath = normalizedPath.replace(/\[['"]([^'"\]]+)['"]\]/g, ".$1");
|
|
624
|
+
normalizedPath = normalizedPath.replace(/\[([^'"\]]+)\]/g, ".$1");
|
|
625
|
+
normalizedPath = normalizedPath.replace(/^\./, "");
|
|
626
|
+
const keys = normalizedPath.split(".");
|
|
627
|
+
let current = obj;
|
|
628
|
+
for (let i = 0; i < keys.length; i++) {
|
|
629
|
+
const key = keys[i];
|
|
630
|
+
if (current === null || current === void 0 || key === void 0) {
|
|
631
|
+
return void 0;
|
|
632
|
+
}
|
|
633
|
+
if (Array.isArray(current)) {
|
|
634
|
+
if (/^\d+$/.test(key)) {
|
|
635
|
+
const index = parseInt(key, 10);
|
|
636
|
+
if (index >= 0 && index < current.length) {
|
|
637
|
+
current = current[index];
|
|
638
|
+
} else {
|
|
639
|
+
return void 0;
|
|
640
|
+
}
|
|
641
|
+
} else {
|
|
642
|
+
return void 0;
|
|
643
|
+
}
|
|
644
|
+
} else if (current && typeof current === "object") {
|
|
645
|
+
if (DANGEROUS_KEYS.has(key)) return void 0;
|
|
646
|
+
current = current[key];
|
|
647
|
+
} else {
|
|
648
|
+
return void 0;
|
|
649
|
+
}
|
|
650
|
+
}
|
|
651
|
+
return current;
|
|
652
|
+
}
|
|
653
|
+
var DANGEROUS_KEYS = /* @__PURE__ */ new Set(["__proto__", "constructor", "prototype"]);
|
|
654
|
+
var TEMPLATE_EXPRESSION_PATTERN = /\{\{([^{}]+)\}\}/g;
|
|
655
|
+
function parseTemplateExpression(expr) {
|
|
656
|
+
const tokens = tokenizeFallbackExpression(expr);
|
|
657
|
+
if (tokens) {
|
|
658
|
+
return {
|
|
659
|
+
kind: "fallback",
|
|
660
|
+
operator: tokens.operator,
|
|
661
|
+
operands: tokens.rawOperands.map(parseOperand)
|
|
662
|
+
};
|
|
663
|
+
}
|
|
664
|
+
const trimmed = expr.trim();
|
|
665
|
+
const pipeIndex = trimmed.indexOf("|");
|
|
666
|
+
if (pipeIndex === -1) {
|
|
667
|
+
return { kind: "legacy", variable: trimmed };
|
|
668
|
+
}
|
|
669
|
+
return {
|
|
670
|
+
kind: "legacy",
|
|
671
|
+
variable: trimmed.slice(0, pipeIndex).trim(),
|
|
672
|
+
defaultValue: trimmed.slice(pipeIndex + 1).trim()
|
|
673
|
+
};
|
|
674
|
+
}
|
|
675
|
+
function tokenizeFallbackExpression(expr) {
|
|
676
|
+
const operands = [];
|
|
677
|
+
let current = "";
|
|
678
|
+
let quote = null;
|
|
679
|
+
let operator = null;
|
|
680
|
+
for (let i = 0; i < expr.length; i++) {
|
|
681
|
+
const ch = expr[i];
|
|
682
|
+
if (quote) {
|
|
683
|
+
current += ch;
|
|
684
|
+
if (ch === quote && countTrailingBackslashes(expr, i) % 2 === 0) {
|
|
685
|
+
quote = null;
|
|
686
|
+
}
|
|
687
|
+
continue;
|
|
688
|
+
}
|
|
689
|
+
if (ch === '"' || ch === "'") {
|
|
690
|
+
quote = ch;
|
|
691
|
+
current += ch;
|
|
692
|
+
continue;
|
|
693
|
+
}
|
|
694
|
+
if (ch === "|" && expr[i + 1] === "|") {
|
|
695
|
+
if (operator === "??") {
|
|
696
|
+
throw new Error(
|
|
697
|
+
`Cannot mix '||' and '??' in template expression: "${expr}". Use one operator or wrap branches in separate {{...}} blocks.`
|
|
698
|
+
);
|
|
699
|
+
}
|
|
700
|
+
operator = "||";
|
|
701
|
+
operands.push(current);
|
|
702
|
+
current = "";
|
|
703
|
+
i++;
|
|
704
|
+
continue;
|
|
705
|
+
}
|
|
706
|
+
if (ch === "?" && expr[i + 1] === "?") {
|
|
707
|
+
if (operator === "||") {
|
|
708
|
+
throw new Error(
|
|
709
|
+
`Cannot mix '||' and '??' in template expression: "${expr}". Use one operator or wrap branches in separate {{...}} blocks.`
|
|
710
|
+
);
|
|
711
|
+
}
|
|
712
|
+
operator = "??";
|
|
713
|
+
operands.push(current);
|
|
714
|
+
current = "";
|
|
715
|
+
i++;
|
|
716
|
+
continue;
|
|
717
|
+
}
|
|
718
|
+
current += ch;
|
|
719
|
+
}
|
|
720
|
+
if (operator === null) return null;
|
|
721
|
+
operands.push(current);
|
|
722
|
+
return { rawOperands: operands, operator };
|
|
723
|
+
}
|
|
724
|
+
function parseOperand(raw) {
|
|
725
|
+
const t = raw.trim();
|
|
726
|
+
if (t.startsWith('"') && t.endsWith('"') && t.length >= 2 || t.startsWith("'") && t.endsWith("'") && t.length >= 2) {
|
|
727
|
+
const inner = t.slice(1, -1);
|
|
728
|
+
return { kind: "literal", value: inner.replace(/\\(.)/g, "$1") };
|
|
729
|
+
}
|
|
730
|
+
if (/^-?\d+(\.\d+)?$/.test(t)) {
|
|
731
|
+
return { kind: "literal", value: Number(t) };
|
|
732
|
+
}
|
|
733
|
+
if (t === "true") return { kind: "literal", value: true };
|
|
734
|
+
if (t === "false") return { kind: "literal", value: false };
|
|
735
|
+
if (t === "null") return { kind: "literal", value: null };
|
|
736
|
+
return { kind: "path", path: t };
|
|
737
|
+
}
|
|
738
|
+
function evaluateOperand(operand, context) {
|
|
739
|
+
if (operand.kind === "literal") return operand.value;
|
|
740
|
+
return getNestedValue(context, operand.path);
|
|
741
|
+
}
|
|
742
|
+
function countTrailingBackslashes(s, i) {
|
|
743
|
+
let n = 0;
|
|
744
|
+
let j = i - 1;
|
|
745
|
+
while (j >= 0 && s[j] === "\\") {
|
|
746
|
+
n++;
|
|
747
|
+
j--;
|
|
748
|
+
}
|
|
749
|
+
return n;
|
|
750
|
+
}
|
|
751
|
+
function passesOperator(value, operator) {
|
|
752
|
+
if (operator === "||") return Boolean(value);
|
|
753
|
+
return value !== null && value !== void 0;
|
|
754
|
+
}
|
|
755
|
+
function stringifyValue(value) {
|
|
756
|
+
if (value === null || value === void 0) return "";
|
|
757
|
+
if (typeof value === "object") return JSON.stringify(value);
|
|
758
|
+
return String(value);
|
|
759
|
+
}
|
|
760
|
+
var _SimpleTemplateEngine = class _SimpleTemplateEngine2 {
|
|
761
|
+
substitute(template, context = {}) {
|
|
762
|
+
const usedVariables = [];
|
|
763
|
+
const usedDefaults = [];
|
|
764
|
+
const missingVariables = [];
|
|
765
|
+
const result = template.replace(_SimpleTemplateEngine2.EXPRESSION_PATTERN, (match, expr) => {
|
|
766
|
+
let parsed;
|
|
767
|
+
try {
|
|
768
|
+
parsed = parseTemplateExpression(expr);
|
|
769
|
+
} catch {
|
|
770
|
+
return match;
|
|
771
|
+
}
|
|
772
|
+
if (parsed.kind === "legacy") {
|
|
773
|
+
return resolveLegacy(parsed, context, {
|
|
774
|
+
usedVariables,
|
|
775
|
+
usedDefaults,
|
|
776
|
+
missingVariables,
|
|
777
|
+
match
|
|
778
|
+
});
|
|
779
|
+
}
|
|
780
|
+
return resolveFallback(parsed, context, {
|
|
781
|
+
usedVariables,
|
|
782
|
+
missingVariables,
|
|
783
|
+
match
|
|
784
|
+
});
|
|
785
|
+
});
|
|
786
|
+
return {
|
|
787
|
+
result,
|
|
788
|
+
usedVariables,
|
|
789
|
+
usedDefaults,
|
|
790
|
+
missingVariables
|
|
791
|
+
};
|
|
792
|
+
}
|
|
793
|
+
/**
|
|
794
|
+
* Extract all variable references from a template.
|
|
795
|
+
* Each `{{ ... }}` produces one entry; for fallback expressions the entry
|
|
796
|
+
* carries every path operand under `paths`, and `hasDefault: true` whenever
|
|
797
|
+
* the chain has any non-path terminal (literal) the user can fall back to.
|
|
798
|
+
*/
|
|
799
|
+
extractVariables(template) {
|
|
800
|
+
const out = [];
|
|
801
|
+
const pattern = new RegExp(_SimpleTemplateEngine2.EXPRESSION_PATTERN.source, "g");
|
|
802
|
+
let match;
|
|
803
|
+
while (match = pattern.exec(template)) {
|
|
804
|
+
const expr = match[1];
|
|
805
|
+
if (!expr) continue;
|
|
806
|
+
let parsed;
|
|
807
|
+
try {
|
|
808
|
+
parsed = parseTemplateExpression(expr);
|
|
809
|
+
} catch {
|
|
810
|
+
continue;
|
|
811
|
+
}
|
|
812
|
+
if (parsed.kind === "legacy") {
|
|
813
|
+
if (!parsed.variable) continue;
|
|
814
|
+
out.push({
|
|
815
|
+
variable: parsed.variable,
|
|
816
|
+
hasDefault: parsed.defaultValue !== void 0,
|
|
817
|
+
defaultValue: parsed.defaultValue
|
|
818
|
+
});
|
|
819
|
+
continue;
|
|
820
|
+
}
|
|
821
|
+
const paths = parsed.operands.filter((o) => o.kind === "path").map((o) => o.path);
|
|
822
|
+
const hasLiteralFallback = parsed.operands.some((o) => o.kind === "literal");
|
|
823
|
+
const primary = paths[0] ?? "";
|
|
824
|
+
out.push({
|
|
825
|
+
variable: primary,
|
|
826
|
+
hasDefault: hasLiteralFallback,
|
|
827
|
+
paths
|
|
828
|
+
});
|
|
829
|
+
}
|
|
830
|
+
return out;
|
|
831
|
+
}
|
|
832
|
+
/**
|
|
833
|
+
* Validate that a template can be processed with given context.
|
|
834
|
+
* Returns warnings and errors.
|
|
835
|
+
*/
|
|
836
|
+
validate(template, context = {}) {
|
|
837
|
+
const warnings = [];
|
|
838
|
+
const errors = [];
|
|
839
|
+
try {
|
|
840
|
+
const result = this.substitute(template, context);
|
|
841
|
+
if (result.usedDefaults.length > 0) {
|
|
842
|
+
warnings.push(
|
|
843
|
+
`Used ${result.usedDefaults.length} default values: ${result.usedDefaults.map((d) => d.variable).join(", ")}`
|
|
844
|
+
);
|
|
845
|
+
}
|
|
846
|
+
if (result.missingVariables.length > 0) {
|
|
847
|
+
errors.push(`Missing variables without defaults: ${result.missingVariables.join(", ")}`);
|
|
848
|
+
}
|
|
849
|
+
return {
|
|
850
|
+
isValid: errors.length === 0,
|
|
851
|
+
warnings,
|
|
852
|
+
errors
|
|
853
|
+
};
|
|
854
|
+
} catch (error51) {
|
|
855
|
+
return {
|
|
856
|
+
isValid: false,
|
|
857
|
+
warnings,
|
|
858
|
+
errors: [`Template parsing error: ${error51}`]
|
|
859
|
+
};
|
|
860
|
+
}
|
|
861
|
+
}
|
|
862
|
+
};
|
|
863
|
+
_SimpleTemplateEngine.EXPRESSION_PATTERN = TEMPLATE_EXPRESSION_PATTERN;
|
|
864
|
+
var SimpleTemplateEngine = _SimpleTemplateEngine;
|
|
865
|
+
function resolveLegacy(parsed, context, tracking) {
|
|
866
|
+
const value = getNestedValue(context, parsed.variable);
|
|
867
|
+
if (value !== void 0 && value !== null) {
|
|
868
|
+
tracking.usedVariables.push(parsed.variable);
|
|
869
|
+
return stringifyValue(value);
|
|
870
|
+
}
|
|
871
|
+
if (parsed.defaultValue !== void 0) {
|
|
872
|
+
tracking.usedDefaults.push({
|
|
873
|
+
variable: parsed.variable,
|
|
874
|
+
defaultValue: parsed.defaultValue
|
|
875
|
+
});
|
|
876
|
+
return parsed.defaultValue;
|
|
877
|
+
}
|
|
878
|
+
tracking.missingVariables.push(parsed.variable);
|
|
879
|
+
return tracking.match;
|
|
880
|
+
}
|
|
881
|
+
function resolveFallback(parsed, context, tracking) {
|
|
882
|
+
let chosen = null;
|
|
883
|
+
for (const operand of parsed.operands) {
|
|
884
|
+
const value = evaluateOperand(operand, context);
|
|
885
|
+
if (operand.kind === "path" && value !== void 0) {
|
|
886
|
+
tracking.usedVariables.push(operand.path);
|
|
887
|
+
}
|
|
888
|
+
if (chosen === null && passesOperator(value, parsed.operator)) {
|
|
889
|
+
chosen = { value, isPath: operand.kind === "path" };
|
|
890
|
+
}
|
|
891
|
+
}
|
|
892
|
+
if (chosen) return stringifyValue(chosen.value);
|
|
893
|
+
const last = parsed.operands[parsed.operands.length - 1];
|
|
894
|
+
if (last && last.kind === "literal") {
|
|
895
|
+
return stringifyValue(last.value);
|
|
896
|
+
}
|
|
897
|
+
for (const operand of parsed.operands) {
|
|
898
|
+
if (operand.kind === "path") tracking.missingVariables.push(operand.path);
|
|
899
|
+
}
|
|
900
|
+
return tracking.match;
|
|
901
|
+
}
|
|
902
|
+
var templateEngine = new SimpleTemplateEngine();
|
|
903
|
+
|
|
547
904
|
// ../../node_modules/.pnpm/zod@4.4.2/node_modules/zod/v4/classic/external.js
|
|
548
905
|
var external_exports = {};
|
|
549
906
|
__export(external_exports, {
|
|
@@ -15233,6 +15590,10 @@ var agentAwaitEventSchema = external_exports.object({
|
|
|
15233
15590
|
...baseAgentEvent,
|
|
15234
15591
|
type: external_exports.literal("agent_await"),
|
|
15235
15592
|
toolId: external_exports.string(),
|
|
15593
|
+
// Unique per-call id (provider `toolu_…`). Parallel calls to the same local
|
|
15594
|
+
// tool share `toolId`; `toolCallId` lets the widget address each in `/resume`
|
|
15595
|
+
// (core#3878).
|
|
15596
|
+
toolCallId: external_exports.string().optional(),
|
|
15236
15597
|
toolName: external_exports.string(),
|
|
15237
15598
|
parameters: external_exports.record(external_exports.string(), external_exports.unknown()).optional(),
|
|
15238
15599
|
awaitedAt: external_exports.string(),
|
|
@@ -15411,6 +15772,10 @@ var flowAwaitEventSchema = external_exports.object({
|
|
|
15411
15772
|
type: external_exports.literal("flow_await"),
|
|
15412
15773
|
flowId: external_exports.string(),
|
|
15413
15774
|
toolId: external_exports.string().optional(),
|
|
15775
|
+
// Unique per-call id (provider `toolu_…`). Parallel calls to the same local
|
|
15776
|
+
// tool share `toolId`; `toolCallId` lets a client address each in `/resume`
|
|
15777
|
+
// (core#3878).
|
|
15778
|
+
toolCallId: external_exports.string().optional(),
|
|
15414
15779
|
toolName: external_exports.string().optional(),
|
|
15415
15780
|
parameters: external_exports.record(external_exports.string(), external_exports.unknown()).optional(),
|
|
15416
15781
|
awaitedAt: external_exports.string(),
|
|
@@ -17069,6 +17434,15 @@ var PROVIDER_SECRET_SPECS = [
|
|
|
17069
17434
|
matches: (m) => m.startsWith("generic-openai/") || m.startsWith("generic-openai:"),
|
|
17070
17435
|
secretNames: ["GENERIC_OPENAI_API_KEY", "GENERIC_OPENAI_BASE_URL"]
|
|
17071
17436
|
},
|
|
17437
|
+
{
|
|
17438
|
+
providerId: "general-compute",
|
|
17439
|
+
// General Compute (https://api.generalcompute.com/v1) is an OpenAI-compatible
|
|
17440
|
+
// host. Models are addressed only with the explicit `general-compute/` prefix
|
|
17441
|
+
// (e.g. `general-compute/minimax-m2.7`) so they never collide with the same
|
|
17442
|
+
// bare model id served by another gateway (Vercel already routes `minimax-m2.7`).
|
|
17443
|
+
matches: (m) => m.startsWith("general-compute/") || m.startsWith("general-compute:"),
|
|
17444
|
+
secretNames: ["GENERAL_COMPUTE_API_KEY"]
|
|
17445
|
+
},
|
|
17072
17446
|
{
|
|
17073
17447
|
providerId: "workers-ai",
|
|
17074
17448
|
// Uses a CF platform binding, not a secret — secretNames is intentionally empty.
|
|
@@ -32786,6 +33160,8 @@ var DEFAULT_MODELS_FOR_NEW_ACCOUNTS = [
|
|
|
32786
33160
|
// Mixlayer models
|
|
32787
33161
|
{ provider: "runtype", modelId: "qwen/qwen3.5-9b", isDefault: true },
|
|
32788
33162
|
{ provider: "runtype", modelId: "qwen3.5-plus", isDefault: false },
|
|
33163
|
+
// General Compute (platform key) - explicit provider prefix, single-provider model
|
|
33164
|
+
{ provider: "runtype", modelId: "general-compute/minimax-m2.7", isDefault: false },
|
|
32789
33165
|
// Routed models - benefit from automatic provider optimization
|
|
32790
33166
|
// OpenAI models (routed via OpenAI direct, with Vercel fallback)
|
|
32791
33167
|
{ provider: "runtype", modelId: "gpt-5.4", isDefault: false },
|
|
@@ -34061,6 +34437,7 @@ var PLATFORM_KEY_PROVIDER_MAP = {
|
|
|
34061
34437
|
"vertex-anthropic": false,
|
|
34062
34438
|
"tinfoil": false,
|
|
34063
34439
|
"generic-openai": false,
|
|
34440
|
+
"general-compute": true,
|
|
34064
34441
|
"workers-ai": false,
|
|
34065
34442
|
"mock": false
|
|
34066
34443
|
};
|
|
@@ -34104,6 +34481,15 @@ var MANUAL_PROVIDER_MAP_OVERRIDES = {
|
|
|
34104
34481
|
},
|
|
34105
34482
|
"gpt-oss-120b": {
|
|
34106
34483
|
"workers-ai": "@cf/openai/gpt-oss-120b"
|
|
34484
|
+
},
|
|
34485
|
+
// MiniMax M2.7: explicit provider IDs for the GC-primary / Vercel-fallback route.
|
|
34486
|
+
// `general-compute` is NOT in PROVIDERS_WITHOUT_PREFIX, so resolveRoutedFamily
|
|
34487
|
+
// prepends `general-compute/` itself — store the BARE id here to avoid a double
|
|
34488
|
+
// prefix (`general-compute/general-compute/...`). Vercel IS prefixless, so its
|
|
34489
|
+
// value is the gateway-form `minimax/minimax-m2.7` used as-is.
|
|
34490
|
+
"minimax-m2.7": {
|
|
34491
|
+
"general-compute": "minimax-m2.7",
|
|
34492
|
+
"vercel": "minimax/minimax-m2.7"
|
|
34107
34493
|
}
|
|
34108
34494
|
};
|
|
34109
34495
|
var BASE_MODEL_PROVIDER_MAP = (() => {
|
|
@@ -38100,6 +38486,9 @@ var InlineClientToolSchema = external_exports.object({
|
|
|
38100
38486
|
origin: external_exports.enum(["webmcp", "sdk"]).optional(),
|
|
38101
38487
|
pageOrigin: external_exports.string().optional()
|
|
38102
38488
|
});
|
|
38489
|
+
var ClientToolsPolicySchema = external_exports.object({
|
|
38490
|
+
allowlist: external_exports.array(external_exports.string()).optional()
|
|
38491
|
+
});
|
|
38103
38492
|
var DispatchRequestSchema = external_exports.object({
|
|
38104
38493
|
record: RecordInputSchema.optional(),
|
|
38105
38494
|
flow: FlowInputSchema.optional(),
|
|
@@ -38124,6 +38513,13 @@ var DispatchRequestSchema = external_exports.object({
|
|
|
38124
38513
|
* wire-side counterpart that arrives per-dispatch.
|
|
38125
38514
|
*/
|
|
38126
38515
|
clientTools: external_exports.array(InlineClientToolSchema).optional(),
|
|
38516
|
+
/**
|
|
38517
|
+
* Optional policy governing how `clientTools[]` are admitted on this
|
|
38518
|
+
* (API-key) dispatch. Today it carries an optional `allowlist` that
|
|
38519
|
+
* narrows which `origin: 'webmcp'` tools are accepted; omit it to admit
|
|
38520
|
+
* every submitted webmcp tool. See {@link ClientToolsPolicySchema}.
|
|
38521
|
+
*/
|
|
38522
|
+
clientToolsPolicy: ClientToolsPolicySchema.optional(),
|
|
38127
38523
|
secrets: external_exports.record(external_exports.string(), external_exports.string()).optional(),
|
|
38128
38524
|
credentialProxies: external_exports.array(credentialProxyConfigSchema).max(10).optional(),
|
|
38129
38525
|
inputs: external_exports.record(external_exports.string(), external_exports.any()).optional().refine(
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@runtypelabs/cli",
|
|
3
|
-
"version": "2.16.
|
|
3
|
+
"version": "2.16.9",
|
|
4
4
|
"description": "Command-line interface for Runtype AI platform",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
"rosie-skills": "0.8.1",
|
|
23
23
|
"yaml": "^2.9.0",
|
|
24
24
|
"@runtypelabs/ink-components": "0.3.2",
|
|
25
|
-
"@runtypelabs/sdk": "4.
|
|
25
|
+
"@runtypelabs/sdk": "4.3.0",
|
|
26
26
|
"@runtypelabs/terminal-animations": "0.2.1"
|
|
27
27
|
},
|
|
28
28
|
"devDependencies": {
|
|
@@ -36,7 +36,7 @@
|
|
|
36
36
|
"tsx": "^4.7.1",
|
|
37
37
|
"typescript": "^5.3.3",
|
|
38
38
|
"vitest": "^4.1.0",
|
|
39
|
-
"@runtypelabs/shared": "1.
|
|
39
|
+
"@runtypelabs/shared": "1.14.0"
|
|
40
40
|
},
|
|
41
41
|
"engines": {
|
|
42
42
|
"node": ">=22.0.0"
|