@ai-matrx/agents 0.59.192 → 0.59.193
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 +10 -0
- package/dist/content-transfer/index.cjs +1 -1
- package/dist/content-transfer/index.js +1 -1
- package/dist/content-transfer/react/index.cjs +1 -1
- package/dist/content-transfer/react/index.js +1 -1
- package/dist/mandates/index.cjs +4 -4
- package/dist/mandates/index.d.cts +6 -6
- package/dist/mandates/index.d.ts +6 -6
- package/dist/mandates/index.js +4 -4
- package/dist/models/index.cjs +83 -0
- package/dist/models/index.d.cts +106 -1
- package/dist/models/index.d.ts +106 -1
- package/dist/models/index.js +83 -0
- package/dist/models/react/index.cjs +25 -1
- package/dist/models/react/index.js +25 -1
- package/package.json +4 -4
package/CHANGELOG.md
CHANGED
|
@@ -1,6 +1,16 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.59.193
|
|
4
|
+
|
|
5
|
+
UNVERIFIED: this release has no Unreleased entry and the source comparison could not be made (the caller supplied no source comparison). Whether source changed is unknown; consumer action is unknown.
|
|
6
|
+
Check the package's gitHead on npm against this version's gitHead: `git diff <previous gitHead> <this gitHead> -- apps/shared/matrx-agents/src`.
|
|
7
|
+
|
|
3
8
|
## 0.59.192
|
|
9
|
+
|
|
10
|
+
Automatic changed-only republish (docs/metadata drift since the last published version; verified: `git diff 89bae1f6f7 7829f4d91a -- apps/shared/matrx-agents/src`
|
|
11
|
+
has no shipped-source changes outside tests, fixtures and docs). No consumer action required.
|
|
12
|
+
|
|
13
|
+
## 0.59.191
|
|
4
14
|
### THE model-settings panel (2026-10-21)
|
|
5
15
|
|
|
6
16
|
- Added `./settings/react` `ModelSettingsPanel`, `ExtraSettingRow`, `SettingRowFrame`, `SettingsGroupSection`, `SettingRowLabel`, `formatSettingValue`; `./settings` `SettingsWriteTarget` / `CapabilitiesWriteTarget` / `SettingRowRead`, `isOffValue` / `offValueFor` / `settingStateOf` / `withSettingState` / `ENUM_OFF_VALUE`, `isUnsetChoice` / `AUTO_VALUE` / `AUTO_MEANS_UNSET_KEYS`, `startingValueFor`.
|
|
@@ -703,7 +703,7 @@ var MANDATE_KEYS = {
|
|
|
703
703
|
*/
|
|
704
704
|
brand_discovery__offering_roles: "brand_discovery.offering_roles",
|
|
705
705
|
/**
|
|
706
|
-
* @deprecated retiring since 0.59.
|
|
706
|
+
* @deprecated retiring since 0.59.193 — no longer declared in
|
|
707
707
|
* aidream. It leaves this union once no snapshot within the last
|
|
708
708
|
* 3 published versions still carries it as active.
|
|
709
709
|
*/
|
|
@@ -680,7 +680,7 @@ var MANDATE_KEYS = {
|
|
|
680
680
|
*/
|
|
681
681
|
brand_discovery__offering_roles: "brand_discovery.offering_roles",
|
|
682
682
|
/**
|
|
683
|
-
* @deprecated retiring since 0.59.
|
|
683
|
+
* @deprecated retiring since 0.59.193 — no longer declared in
|
|
684
684
|
* aidream. It leaves this union once no snapshot within the last
|
|
685
685
|
* 3 published versions still carries it as active.
|
|
686
686
|
*/
|
|
@@ -656,7 +656,7 @@ var MANDATE_KEYS = {
|
|
|
656
656
|
*/
|
|
657
657
|
brand_discovery__offering_roles: "brand_discovery.offering_roles",
|
|
658
658
|
/**
|
|
659
|
-
* @deprecated retiring since 0.59.
|
|
659
|
+
* @deprecated retiring since 0.59.193 — no longer declared in
|
|
660
660
|
* aidream. It leaves this union once no snapshot within the last
|
|
661
661
|
* 3 published versions still carries it as active.
|
|
662
662
|
*/
|
|
@@ -628,7 +628,7 @@ var MANDATE_KEYS = {
|
|
|
628
628
|
*/
|
|
629
629
|
brand_discovery__offering_roles: "brand_discovery.offering_roles",
|
|
630
630
|
/**
|
|
631
|
-
* @deprecated retiring since 0.59.
|
|
631
|
+
* @deprecated retiring since 0.59.193 — no longer declared in
|
|
632
632
|
* aidream. It leaves this union once no snapshot within the last
|
|
633
633
|
* 3 published versions still carries it as active.
|
|
634
634
|
*/
|
package/dist/mandates/index.cjs
CHANGED
|
@@ -47,9 +47,9 @@ module.exports = __toCommonJS(mandates_exports);
|
|
|
47
47
|
|
|
48
48
|
// mandates/keys.generated.ts
|
|
49
49
|
var MANDATE_KEYS_META = {
|
|
50
|
-
aidreamRevision: "
|
|
50
|
+
aidreamRevision: "3165453310fa6d42f3b90249a12d956eeebe7636",
|
|
51
51
|
generatorVersion: "1.0.0",
|
|
52
|
-
packageVersion: "0.59.
|
|
52
|
+
packageVersion: "0.59.193",
|
|
53
53
|
retireWindow: 3
|
|
54
54
|
};
|
|
55
55
|
var MANDATE_KEYS = {
|
|
@@ -666,7 +666,7 @@ var MANDATE_KEYS = {
|
|
|
666
666
|
*/
|
|
667
667
|
brand_discovery__offering_roles: "brand_discovery.offering_roles",
|
|
668
668
|
/**
|
|
669
|
-
* @deprecated retiring since 0.59.
|
|
669
|
+
* @deprecated retiring since 0.59.193 — no longer declared in
|
|
670
670
|
* aidream. It leaves this union once no snapshot within the last
|
|
671
671
|
* 3 published versions still carries it as active.
|
|
672
672
|
*/
|
|
@@ -693,7 +693,7 @@ var MANDATE_KEYS = {
|
|
|
693
693
|
var ALL_MANDATE_KEYS = Object.values(MANDATE_KEYS);
|
|
694
694
|
var RETIRING_MANDATE_KEYS = {
|
|
695
695
|
"brand_discovery.offering_roles": "0.59.0",
|
|
696
|
-
"coding_session.managed_translation_reference": "0.59.
|
|
696
|
+
"coding_session.managed_translation_reference": "0.59.193",
|
|
697
697
|
"pdf.content_cleaner": "0.59.0",
|
|
698
698
|
"sms.owner_beta": "0.59.0",
|
|
699
699
|
"voice.owner_beta": "0.59.0"
|
|
@@ -6,9 +6,9 @@
|
|
|
6
6
|
* from the IN-PROCESS mandate declarations — the same `declared_mandates()` the
|
|
7
7
|
* boot sync writes to the database from. There is no hand list anywhere.
|
|
8
8
|
*
|
|
9
|
-
* aidream revision:
|
|
9
|
+
* aidream revision: 3165453310fa6d42f3b90249a12d956eeebe7636
|
|
10
10
|
* generator version: 1.0.0
|
|
11
|
-
* package version: 0.59.
|
|
11
|
+
* package version: 0.59.193
|
|
12
12
|
* active keys: 606
|
|
13
13
|
* retiring keys: 5
|
|
14
14
|
*
|
|
@@ -19,9 +19,9 @@
|
|
|
19
19
|
*/
|
|
20
20
|
/** Where this module came from — surfaced so a report can name the exact build. */
|
|
21
21
|
declare const MANDATE_KEYS_META: {
|
|
22
|
-
readonly aidreamRevision: "
|
|
22
|
+
readonly aidreamRevision: "3165453310fa6d42f3b90249a12d956eeebe7636";
|
|
23
23
|
readonly generatorVersion: "1.0.0";
|
|
24
|
-
readonly packageVersion: "0.59.
|
|
24
|
+
readonly packageVersion: "0.59.193";
|
|
25
25
|
readonly retireWindow: 3;
|
|
26
26
|
};
|
|
27
27
|
/** Every declared mandate key, by THE IDENTIFIER RULE. */
|
|
@@ -639,7 +639,7 @@ declare const MANDATE_KEYS: {
|
|
|
639
639
|
*/
|
|
640
640
|
readonly brand_discovery__offering_roles: "brand_discovery.offering_roles";
|
|
641
641
|
/**
|
|
642
|
-
* @deprecated retiring since 0.59.
|
|
642
|
+
* @deprecated retiring since 0.59.193 — no longer declared in
|
|
643
643
|
* aidream. It leaves this union once no snapshot within the last
|
|
644
644
|
* 3 published versions still carries it as active.
|
|
645
645
|
*/
|
|
@@ -670,7 +670,7 @@ declare const ALL_MANDATE_KEYS: readonly MandateKey[];
|
|
|
670
670
|
/** Keys still in the union but no longer declared (two-phase retire, phase 1). */
|
|
671
671
|
declare const RETIRING_MANDATE_KEYS: {
|
|
672
672
|
readonly "brand_discovery.offering_roles": "0.59.0";
|
|
673
|
-
readonly "coding_session.managed_translation_reference": "0.59.
|
|
673
|
+
readonly "coding_session.managed_translation_reference": "0.59.193";
|
|
674
674
|
readonly "pdf.content_cleaner": "0.59.0";
|
|
675
675
|
readonly "sms.owner_beta": "0.59.0";
|
|
676
676
|
readonly "voice.owner_beta": "0.59.0";
|
package/dist/mandates/index.d.ts
CHANGED
|
@@ -6,9 +6,9 @@
|
|
|
6
6
|
* from the IN-PROCESS mandate declarations — the same `declared_mandates()` the
|
|
7
7
|
* boot sync writes to the database from. There is no hand list anywhere.
|
|
8
8
|
*
|
|
9
|
-
* aidream revision:
|
|
9
|
+
* aidream revision: 3165453310fa6d42f3b90249a12d956eeebe7636
|
|
10
10
|
* generator version: 1.0.0
|
|
11
|
-
* package version: 0.59.
|
|
11
|
+
* package version: 0.59.193
|
|
12
12
|
* active keys: 606
|
|
13
13
|
* retiring keys: 5
|
|
14
14
|
*
|
|
@@ -19,9 +19,9 @@
|
|
|
19
19
|
*/
|
|
20
20
|
/** Where this module came from — surfaced so a report can name the exact build. */
|
|
21
21
|
declare const MANDATE_KEYS_META: {
|
|
22
|
-
readonly aidreamRevision: "
|
|
22
|
+
readonly aidreamRevision: "3165453310fa6d42f3b90249a12d956eeebe7636";
|
|
23
23
|
readonly generatorVersion: "1.0.0";
|
|
24
|
-
readonly packageVersion: "0.59.
|
|
24
|
+
readonly packageVersion: "0.59.193";
|
|
25
25
|
readonly retireWindow: 3;
|
|
26
26
|
};
|
|
27
27
|
/** Every declared mandate key, by THE IDENTIFIER RULE. */
|
|
@@ -639,7 +639,7 @@ declare const MANDATE_KEYS: {
|
|
|
639
639
|
*/
|
|
640
640
|
readonly brand_discovery__offering_roles: "brand_discovery.offering_roles";
|
|
641
641
|
/**
|
|
642
|
-
* @deprecated retiring since 0.59.
|
|
642
|
+
* @deprecated retiring since 0.59.193 — no longer declared in
|
|
643
643
|
* aidream. It leaves this union once no snapshot within the last
|
|
644
644
|
* 3 published versions still carries it as active.
|
|
645
645
|
*/
|
|
@@ -670,7 +670,7 @@ declare const ALL_MANDATE_KEYS: readonly MandateKey[];
|
|
|
670
670
|
/** Keys still in the union but no longer declared (two-phase retire, phase 1). */
|
|
671
671
|
declare const RETIRING_MANDATE_KEYS: {
|
|
672
672
|
readonly "brand_discovery.offering_roles": "0.59.0";
|
|
673
|
-
readonly "coding_session.managed_translation_reference": "0.59.
|
|
673
|
+
readonly "coding_session.managed_translation_reference": "0.59.193";
|
|
674
674
|
readonly "pdf.content_cleaner": "0.59.0";
|
|
675
675
|
readonly "sms.owner_beta": "0.59.0";
|
|
676
676
|
readonly "voice.owner_beta": "0.59.0";
|
package/dist/mandates/index.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
// mandates/keys.generated.ts
|
|
2
2
|
var MANDATE_KEYS_META = {
|
|
3
|
-
aidreamRevision: "
|
|
3
|
+
aidreamRevision: "3165453310fa6d42f3b90249a12d956eeebe7636",
|
|
4
4
|
generatorVersion: "1.0.0",
|
|
5
|
-
packageVersion: "0.59.
|
|
5
|
+
packageVersion: "0.59.193",
|
|
6
6
|
retireWindow: 3
|
|
7
7
|
};
|
|
8
8
|
var MANDATE_KEYS = {
|
|
@@ -619,7 +619,7 @@ var MANDATE_KEYS = {
|
|
|
619
619
|
*/
|
|
620
620
|
brand_discovery__offering_roles: "brand_discovery.offering_roles",
|
|
621
621
|
/**
|
|
622
|
-
* @deprecated retiring since 0.59.
|
|
622
|
+
* @deprecated retiring since 0.59.193 — no longer declared in
|
|
623
623
|
* aidream. It leaves this union once no snapshot within the last
|
|
624
624
|
* 3 published versions still carries it as active.
|
|
625
625
|
*/
|
|
@@ -646,7 +646,7 @@ var MANDATE_KEYS = {
|
|
|
646
646
|
var ALL_MANDATE_KEYS = Object.values(MANDATE_KEYS);
|
|
647
647
|
var RETIRING_MANDATE_KEYS = {
|
|
648
648
|
"brand_discovery.offering_roles": "0.59.0",
|
|
649
|
-
"coding_session.managed_translation_reference": "0.59.
|
|
649
|
+
"coding_session.managed_translation_reference": "0.59.193",
|
|
650
650
|
"pdf.content_cleaner": "0.59.0",
|
|
651
651
|
"sms.owner_beta": "0.59.0",
|
|
652
652
|
"voice.owner_beta": "0.59.0"
|
package/dist/models/index.cjs
CHANGED
|
@@ -20,6 +20,7 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
20
20
|
// models/index.ts
|
|
21
21
|
var models_exports = {};
|
|
22
22
|
__export(models_exports, {
|
|
23
|
+
AGENT_AUTHORING_DEFAULT_MODEL_KNOB: () => AGENT_AUTHORING_DEFAULT_MODEL_KNOB,
|
|
23
24
|
CHAT_DEFAULT_MODEL_KNOB: () => CHAT_DEFAULT_MODEL_KNOB,
|
|
24
25
|
CONTENT_TYPES: () => CONTENT_TYPES,
|
|
25
26
|
DEFAULT_CAPABILITIES: () => DEFAULT_CAPABILITIES,
|
|
@@ -41,11 +42,13 @@ __export(models_exports, {
|
|
|
41
42
|
TOP_TIER_COST_RATING: () => TOP_TIER_COST_RATING,
|
|
42
43
|
TOP_TIER_LOCKED_TITLE: () => TOP_TIER_LOCKED_TITLE,
|
|
43
44
|
acceptsTextInstructions: () => acceptsTextInstructions,
|
|
45
|
+
blendedPrice: () => blendedPrice,
|
|
44
46
|
buildModelClassIndex: () => buildModelClassIndex,
|
|
45
47
|
buildSuccessionIndex: () => buildSuccessionIndex,
|
|
46
48
|
catalogFingerprint: () => catalogFingerprint,
|
|
47
49
|
catalogForApp: () => catalogForApp,
|
|
48
50
|
catalogKindOf: () => catalogKindOf,
|
|
51
|
+
cheapestAdequateModel: () => cheapestAdequateModel,
|
|
49
52
|
classConfigKey: () => classConfigKey,
|
|
50
53
|
collapseTiersByClass: () => collapseTiersByClass,
|
|
51
54
|
costRatingTier: () => costRatingTier,
|
|
@@ -59,6 +62,7 @@ __export(models_exports, {
|
|
|
59
62
|
fetchCuratedModels: () => fetchCuratedModels,
|
|
60
63
|
findNonCanonicalCapabilityValues: () => findNonCanonicalCapabilityValues,
|
|
61
64
|
fitsMemory: () => fitsMemory,
|
|
65
|
+
fitsNeed: () => fitsNeed,
|
|
62
66
|
fitsThisComputer: () => fitsThisComputer,
|
|
63
67
|
formatMemoryBytes: () => formatMemoryBytes,
|
|
64
68
|
fromDiscovery: () => fromDiscovery,
|
|
@@ -67,6 +71,7 @@ __export(models_exports, {
|
|
|
67
71
|
groupFeatures: () => groupFeatures,
|
|
68
72
|
hardwareClassesOf: () => hardwareClassesOf,
|
|
69
73
|
hasCompatibleDecisionInteraction: () => hasCompatibleDecisionInteraction,
|
|
74
|
+
isChatModelCapability: () => isChatModelCapability,
|
|
70
75
|
isContentType: () => isContentType,
|
|
71
76
|
isConversationalModelCapability: () => isConversationalModelCapability,
|
|
72
77
|
isDecisionModelCapability: () => isDecisionModelCapability,
|
|
@@ -86,6 +91,7 @@ __export(models_exports, {
|
|
|
86
91
|
modelClassName: () => modelClassName,
|
|
87
92
|
modelClassPinOf: () => modelClassPinOf,
|
|
88
93
|
modelsForSelectionPurpose: () => modelsForSelectionPurpose,
|
|
94
|
+
newAgentModelStandInCount: () => newAgentModelStandInCount,
|
|
89
95
|
normalizeArch: () => normalizeArch,
|
|
90
96
|
normalizeModel: () => normalizeModel,
|
|
91
97
|
normalizeModels: () => normalizeModels,
|
|
@@ -108,8 +114,10 @@ __export(models_exports, {
|
|
|
108
114
|
requiredArtifacts: () => requiredArtifacts,
|
|
109
115
|
resetSuccessionLogForTests: () => resetSuccessionLogForTests,
|
|
110
116
|
resolveLiveModelId: () => resolveLiveModelId,
|
|
117
|
+
resolveNewAgentModelId: () => resolveNewAgentModelId,
|
|
111
118
|
resolvePreferredModelChoice: () => resolvePreferredModelChoice,
|
|
112
119
|
resolveSuccessor: () => resolveSuccessor,
|
|
120
|
+
seesImages: () => seesImages,
|
|
113
121
|
selectActiveModels: () => selectActiveModels,
|
|
114
122
|
selectActiveModelsReady: () => selectActiveModelsReady,
|
|
115
123
|
selectAllModelOptions: () => selectAllModelOptions,
|
|
@@ -139,6 +147,7 @@ __export(models_exports, {
|
|
|
139
147
|
speedRatingLabel: () => speedRatingLabel,
|
|
140
148
|
speedRatingWord: () => speedRatingWord,
|
|
141
149
|
splitSetProblems: () => splitSetProblems,
|
|
150
|
+
takesInput: () => takesInput,
|
|
142
151
|
toAuditRecord: () => toAuditRecord,
|
|
143
152
|
validateModelSet: () => validateModelSet,
|
|
144
153
|
withModelClass: () => withModelClass
|
|
@@ -2672,3 +2681,77 @@ async function readModelCatalog(client, opts = {}) {
|
|
|
2672
2681
|
out.catalog_fingerprint = catalogFingerprint(out);
|
|
2673
2682
|
return out;
|
|
2674
2683
|
}
|
|
2684
|
+
|
|
2685
|
+
// models/fit.ts
|
|
2686
|
+
var featuresOf = (c) => {
|
|
2687
|
+
const f = c.features;
|
|
2688
|
+
if (!f) return [];
|
|
2689
|
+
return Array.isArray(f) ? f : f.raw ?? [];
|
|
2690
|
+
};
|
|
2691
|
+
function seesImages(c) {
|
|
2692
|
+
return (c.input ?? []).includes("image") || featuresOf(c).includes("vision");
|
|
2693
|
+
}
|
|
2694
|
+
function takesInput(c, modality) {
|
|
2695
|
+
if (modality === "image") return seesImages(c);
|
|
2696
|
+
return (c.input ?? []).includes(modality);
|
|
2697
|
+
}
|
|
2698
|
+
var MEDIA_GENERATION_FEATURES = /* @__PURE__ */ new Set(["image_generation", "video_generation", "audio_generation", "music_generation"]);
|
|
2699
|
+
function isChatModelCapability(c) {
|
|
2700
|
+
if (c.interaction !== "turn") return false;
|
|
2701
|
+
if (!(c.input ?? []).includes("text")) return false;
|
|
2702
|
+
if (!(c.output ?? []).includes("text")) return false;
|
|
2703
|
+
return !featuresOf(c).some((f) => MEDIA_GENERATION_FEATURES.has(f));
|
|
2704
|
+
}
|
|
2705
|
+
function fitsNeed(c, need) {
|
|
2706
|
+
for (const m of need.inputs ?? []) if (!takesInput(c, m)) return false;
|
|
2707
|
+
for (const m of need.outputs ?? []) if (!(c.output ?? []).includes(m)) return false;
|
|
2708
|
+
const features = featuresOf(c);
|
|
2709
|
+
for (const f of need.features ?? []) if (!features.includes(f)) return false;
|
|
2710
|
+
if (need.interaction && c.interaction !== need.interaction) return false;
|
|
2711
|
+
if (need.minContextWindow != null && (c.contextWindow ?? 0) < need.minContextWindow) return false;
|
|
2712
|
+
return true;
|
|
2713
|
+
}
|
|
2714
|
+
function blendedPrice(m, outputWeight = 3) {
|
|
2715
|
+
const i = m.pointsInput;
|
|
2716
|
+
const o = m.pointsOutput;
|
|
2717
|
+
if (i == null && o == null) return null;
|
|
2718
|
+
return ((i ?? o ?? 0) + (o ?? i ?? 0) * outputWeight) / (1 + outputWeight);
|
|
2719
|
+
}
|
|
2720
|
+
function cheapestAdequateModel(catalog, need, options = {}) {
|
|
2721
|
+
const w = options.outputWeight ?? 3;
|
|
2722
|
+
const fits = catalog.filter((m) => !m.retiredAt && (options.includeDeprecated || !m.isDeprecated) && fitsNeed(m, need));
|
|
2723
|
+
if (fits.length === 0) return null;
|
|
2724
|
+
const rank = (m) => blendedPrice(m, w);
|
|
2725
|
+
return [...fits].sort((a, b) => {
|
|
2726
|
+
const pa = rank(a);
|
|
2727
|
+
const pb = rank(b);
|
|
2728
|
+
if (pa != null && pb != null && pa !== pb) return pa - pb;
|
|
2729
|
+
if (pa != null && pb == null) return -1;
|
|
2730
|
+
if (pa == null && pb != null) return 1;
|
|
2731
|
+
const ca = a.costRating ?? Number.MAX_SAFE_INTEGER;
|
|
2732
|
+
const cb = b.costRating ?? Number.MAX_SAFE_INTEGER;
|
|
2733
|
+
if (ca !== cb) return ca - cb;
|
|
2734
|
+
return a.name < b.name ? -1 : a.name > b.name ? 1 : 0;
|
|
2735
|
+
})[0];
|
|
2736
|
+
}
|
|
2737
|
+
|
|
2738
|
+
// models/default-model.ts
|
|
2739
|
+
var AGENT_AUTHORING_DEFAULT_MODEL_KNOB = "agents.model_prefs.agent_authoring_default_model";
|
|
2740
|
+
var PENDING_KNOB_ROW_MODEL_ID = "617abdcd-79e2-4a4b-be76-4a9960cdffa1";
|
|
2741
|
+
var standInCount = 0;
|
|
2742
|
+
var newAgentModelStandInCount = () => standInCount;
|
|
2743
|
+
async function resolveNewAgentModelId(resolveKnob) {
|
|
2744
|
+
let why;
|
|
2745
|
+
try {
|
|
2746
|
+
const value = await resolveKnob(AGENT_AUTHORING_DEFAULT_MODEL_KNOB);
|
|
2747
|
+
if (typeof value === "string" && value.trim() !== "") return { modelId: value.trim(), standIn: false };
|
|
2748
|
+
why = "has no value (its platform default row is pending)";
|
|
2749
|
+
} catch (error) {
|
|
2750
|
+
why = `could not be read (${error instanceof Error ? error.message : String(error)})`;
|
|
2751
|
+
}
|
|
2752
|
+
standInCount += 1;
|
|
2753
|
+
console.error(
|
|
2754
|
+
`[newAgentModel] STAND-IN: ${AGENT_AUTHORING_DEFAULT_MODEL_KNOB} ${why} \u2014 this new agent starts on ${PENDING_KNOB_ROW_MODEL_ID} (today's model). Set the knob's default to remove this stand-in.`
|
|
2755
|
+
);
|
|
2756
|
+
return { modelId: PENDING_KNOB_ROW_MODEL_ID, standIn: true };
|
|
2757
|
+
}
|
package/dist/models/index.d.cts
CHANGED
|
@@ -1659,4 +1659,109 @@ declare function catalogFingerprint(catalog: LocalModelCatalog): string;
|
|
|
1659
1659
|
*/
|
|
1660
1660
|
declare function readModelCatalog(client: CuratedCatalogClient, opts?: ReadModelCatalogOptions): Promise<LocalModelCatalog>;
|
|
1661
1661
|
|
|
1662
|
-
|
|
1662
|
+
/**
|
|
1663
|
+
* `@ai-matrx/agents/models` — THE fit rules: what a model can do for a purpose, read from the
|
|
1664
|
+
* capability data the catalog holds (`capabilities.input / output / features / interaction`), never
|
|
1665
|
+
* from a placement (a presentation shelf, a page) and never from a list of names.
|
|
1666
|
+
*
|
|
1667
|
+
* One capability can live in two shapes in the data: "sees images" is `input` containing `image`
|
|
1668
|
+
* OR the `vision` feature (the audit projection `toAuditRecord` already reads it that way). Every
|
|
1669
|
+
* filter that asks "does it see images" asks `seesImages`, so a model carrying only one of the two
|
|
1670
|
+
* shapes is never dropped by one surface and kept by another.
|
|
1671
|
+
*
|
|
1672
|
+
* Every picker, every scope chip and every knob that names "the cheapest model that can do X"
|
|
1673
|
+
* (`cheapestAdequateModel`) goes through these, so the web, Matrx 2 and the server-side knobs agree.
|
|
1674
|
+
*/
|
|
1675
|
+
|
|
1676
|
+
/** The capability fields a fit rule reads. A CatalogModel, a ModelCapabilities and a LocalModel's `capabilities` all fit. */
|
|
1677
|
+
interface FitCapabilities {
|
|
1678
|
+
readonly input?: readonly string[];
|
|
1679
|
+
readonly output?: readonly string[];
|
|
1680
|
+
/** Raw feature keys, or the picker's grouped features (its `raw` keeps every key). */
|
|
1681
|
+
readonly features?: readonly string[] | Pick<GroupedFeatures, "raw">;
|
|
1682
|
+
readonly interaction?: string;
|
|
1683
|
+
}
|
|
1684
|
+
/** Sees images: `image` input OR the `vision` feature (both shapes the data uses). */
|
|
1685
|
+
declare function seesImages(c: FitCapabilities): boolean;
|
|
1686
|
+
/** Takes this modality as input. `image` reads both shapes (`seesImages`). */
|
|
1687
|
+
declare function takesInput(c: FitCapabilities, modality: string): boolean;
|
|
1688
|
+
/**
|
|
1689
|
+
* Fit for a CHAT turn: an ordinary turn model that takes text in and gives text out, whose job is not
|
|
1690
|
+
* making media (a music or image generator that also returns a caption is not a chat model). Speech-to-text,
|
|
1691
|
+
* embedding, extraction, realtime voice, decision holders and provider-managed agents are out.
|
|
1692
|
+
*/
|
|
1693
|
+
declare function isChatModelCapability(c: FitCapabilities): boolean;
|
|
1694
|
+
/** What a job needs from a model. Every listed item is required. */
|
|
1695
|
+
interface ModelNeed {
|
|
1696
|
+
/** Input modalities it must take (`image` = sees images, both shapes). */
|
|
1697
|
+
readonly inputs?: readonly string[];
|
|
1698
|
+
/** Output modalities it must give. */
|
|
1699
|
+
readonly outputs?: readonly string[];
|
|
1700
|
+
/** Raw feature keys it must carry (e.g. `function_calling`, `structured_output`). */
|
|
1701
|
+
readonly features?: readonly string[];
|
|
1702
|
+
/** Required interaction mode (e.g. `turn`). Absent = any. */
|
|
1703
|
+
readonly interaction?: string;
|
|
1704
|
+
/** Minimum context window in tokens. */
|
|
1705
|
+
readonly minContextWindow?: number;
|
|
1706
|
+
}
|
|
1707
|
+
/** Does the model meet every item of the need? */
|
|
1708
|
+
declare function fitsNeed(c: FitCapabilities & {
|
|
1709
|
+
readonly contextWindow?: number | null;
|
|
1710
|
+
}, need: ModelNeed): boolean;
|
|
1711
|
+
/** The catalog fields `cheapestAdequateModel` reads (a picker `CatalogModel` fits as-is). */
|
|
1712
|
+
interface PricedCatalogModel extends FitCapabilities {
|
|
1713
|
+
readonly id: string;
|
|
1714
|
+
readonly name: string;
|
|
1715
|
+
readonly contextWindow?: number | null;
|
|
1716
|
+
/** Points per 1M input tokens (the catalog's price). */
|
|
1717
|
+
readonly pointsInput?: number | null;
|
|
1718
|
+
/** Points per 1M output tokens (the catalog's price). */
|
|
1719
|
+
readonly pointsOutput?: number | null;
|
|
1720
|
+
/** Curated 1-6 cost rating: the tie-break, and the price when no points are set. */
|
|
1721
|
+
readonly costRating?: number | null;
|
|
1722
|
+
readonly isDeprecated?: boolean;
|
|
1723
|
+
readonly retiredAt?: string | null;
|
|
1724
|
+
}
|
|
1725
|
+
interface CheapestAdequateOptions {
|
|
1726
|
+
/** Weight of output price against input price (output tokens usually dominate). Default 3 (1 in : 3 out). */
|
|
1727
|
+
readonly outputWeight?: number;
|
|
1728
|
+
/** Allow deprecated models. Default false (retired models are never chosen). */
|
|
1729
|
+
readonly includeDeprecated?: boolean;
|
|
1730
|
+
}
|
|
1731
|
+
/** The blended price a model is ranked by, or null when the catalog holds no price for it. */
|
|
1732
|
+
declare function blendedPrice(m: PricedCatalogModel, outputWeight?: number): number | null;
|
|
1733
|
+
/**
|
|
1734
|
+
* THE cheapest model in a catalog that meets `need`, by the catalog's own prices (points per 1M
|
|
1735
|
+
* tokens, output weighted). A model with no price ranks after every priced one, by cost rating; ties
|
|
1736
|
+
* break on cost rating then name (stable). Retired models never; deprecated only when asked. Null when
|
|
1737
|
+
* nothing fits — the caller says so; there is no built-in fallback.
|
|
1738
|
+
*/
|
|
1739
|
+
declare function cheapestAdequateModel<T extends PricedCatalogModel>(catalog: readonly T[], need: ModelNeed, options?: CheapestAdequateOptions): T | null;
|
|
1740
|
+
|
|
1741
|
+
/**
|
|
1742
|
+
* `@ai-matrx/agents/models` — THE model a new agent starts on comes from a knob, never a constant:
|
|
1743
|
+
* `agents.model_prefs.agent_authoring_default_model` (organization → person → device ladder, through the
|
|
1744
|
+
* host's knob port). Every "make me an agent" path (blank agent, quick agent, templates, the web's manual
|
|
1745
|
+
* create and system-agent create) asks `resolveNewAgentModelId`.
|
|
1746
|
+
*
|
|
1747
|
+
* KNOB ROW PENDING (2026-10-21): the register row exists with `default_value = null`. Until its default is
|
|
1748
|
+
* set to today's model (the SQL is with the owner), an unset knob answers the stand-in below — LOUDLY, every
|
|
1749
|
+
* time, naming the knob — so creating an agent keeps working exactly as before. When the row lands the stand-in
|
|
1750
|
+
* never fires; delete it then. This file is the ONE place a model id literal may appear in shared runtime code
|
|
1751
|
+
* (guard: apps/shared/scripts/check-no-model-literals.mjs).
|
|
1752
|
+
*/
|
|
1753
|
+
declare const AGENT_AUTHORING_DEFAULT_MODEL_KNOB = "agents.model_prefs.agent_authoring_default_model";
|
|
1754
|
+
interface NewAgentModel {
|
|
1755
|
+
modelId: string;
|
|
1756
|
+
/** True when the knob held no value and the pending-row stand-in answered (it screamed). */
|
|
1757
|
+
standIn: boolean;
|
|
1758
|
+
}
|
|
1759
|
+
/** How many times the stand-in answered in this process (tests, diagnostics). */
|
|
1760
|
+
declare const newAgentModelStandInCount: () => number;
|
|
1761
|
+
/**
|
|
1762
|
+
* The model a new agent starts on. `resolveKnob(fullKey)` is the host's effective-knob read. A knob value
|
|
1763
|
+
* that is a non-empty string wins; an unset knob, or a knob read that fails, answers the stand-in and says so.
|
|
1764
|
+
*/
|
|
1765
|
+
declare function resolveNewAgentModelId(resolveKnob: (fullKey: string) => Promise<unknown>): Promise<NewAgentModel>;
|
|
1766
|
+
|
|
1767
|
+
export { AGENT_AUTHORING_DEFAULT_MODEL_KNOB, type AdminOffering, type AdminPricingBand, type ArtifactUse, type AuditCapabilitiesRecord, CHAT_DEFAULT_MODEL_KNOB, CONTENT_TYPES, type CapabilitiesParseContext, type CatalogKindInput, type CatalogModel, type CatalogTier, type CheapestAdequateOptions, type CompatStatus, type ContentType, type CuratedCatalogClient, type CuratedModel, type CuratedPresentation, type CuratedRows, type CuratedVariant, DEFAULT_CAPABILITIES, type DecidedBy, type DeviceGraphics, type DeviceHardware, type DiscoveryAmbiguity, type DiscoveryArtifact, type DiscoveryMedia, type DiscoveryResult, type DiscoveryRuntime, type DiscoverySource, type DiscoveryVariant, EMPTY_MODEL_RECORDS, EXCLUDED_REVIEW_STATES, FEATURE_BUCKETS, FEATURE_BUCKET_ORDER, FEATURE_KEYS, FILE_TYPE_QUANT, type FeatureBucket, type FeatureBucketMeta, type FeatureKey, type FitCapabilities, GgufError, type GgufHeader, type GgufRead, type GgufTensor, type GroupedFeatures, type HardwareClass, type HardwareClasses, type HeaderFlag, type HeaderJudgement, type HeaderRefusal, INPUT_MODALITIES, INTERACTION_MODES, type Interaction, type InteractionMode, type LocalArtifact, type LocalCatalogClient, type LocalCatalogQuery, type LocalCompatRow, type LocalModel, type LocalModelCatalog, type LocalPresentation, type LocalRuntime, type LocalRuntimeBuild, type LocalVariant, MAX_SUCCESSION_HOPS, MODEL_CATALOG_KINDS, MODEL_FAVORITE_ENTITY_TYPE, type Modality, type ModelCapabilities, type ModelCatalog, type ModelCatalogClient, type ModelCatalogConfig, type ModelCatalogErrorSink, type ModelCatalogPgError, type ModelCatalogPgResult, type ModelCatalogQuery, type ModelCatalogState, type ModelCatalogVariant, type ModelCatalogVariantState, type ModelClassConfig, type ModelClassEntry, type ModelClassIndex, type ModelDiagnosticEntry, type ModelDiagnosticsSink, type ModelFavorites, type ModelFavoritesCache, type ModelFavoritesClient, type ModelFavoritesConfig, type ModelFavoritesErrorSink, type ModelFavoritesState, type ModelFetchScope, type ModelFileHandle, type ModelFit, type ModelIdentityRow, type ModelJson, type ModelNeed, type ModelOfferingRow, type ModelOption, type ModelOptionWithLifecycle, type ModelRecord, type ModelRecordFetchType, type ModelRecords, type ModelRecordsClient, type ModelRecordsConfig, type ModelRecordsState, type ModelSelectionPurpose, type ModelSetEnv, type ModelSetFacts, type ModelSetValidation, type NewAgentModel, type NoSelection, OUTPUT_MODALITIES, type OrderedLike, type PreferredModelChoice, type PreferredModelChoicePorts, type PriceTier, type PricedCatalogModel, type RankedVariant, type ReadModelCatalogOptions, SERVICE_LABEL, SERVICE_LABEL_PLURAL, type SelectDevice, type Selection, type ShardName, type SuccessionClient, type SuccessionIndex, type SuccessionNode, TOP_TIER_COST_RATING, TOP_TIER_LOCKED_TITLE, type VariantDiscovery, type Want, acceptsTextInstructions, blendedPrice, buildModelClassIndex, buildSuccessionIndex, catalogFingerprint, catalogForApp, catalogKindOf, cheapestAdequateModel, classConfigKey, collapseTiersByClass, costRatingTier, costRatingWord, createModelCatalog, createModelFavorites, createModelRecords, curatedList, displayOrderOf, favoriteIdsEqual, fetchCuratedModels, findNonCanonicalCapabilityValues, fitsMemory, fitsNeed, fitsThisComputer, formatMemoryBytes, fromDiscovery, ggufEngine, ggufFacts, groupFeatures, hardwareClassesOf, hasCompatibleDecisionInteraction, isChatModelCapability, isContentType, isConversationalModelCapability, isDecisionModelCapability, isFeatureKey, isHelperGguf, isInteractionMode, isListedVariant, isLocalModelCatalog, isManagedAgentModelCapability, isProjectorName, isSupersedable, isTopTierRating, judgeHeaderFacts, mergeAuditRecordIntoCapabilities, missingShards, modelClassKnobFor, modelClassName, modelClassPinOf, modelsForSelectionPurpose, newAgentModelStandInCount, normalizeArch, normalizeModel, normalizeModels, normalizeOs, normalizePromptSettings, orderCatalogGroups, orderCatalogModels, outputFormatControlKey, parseCapabilities, pickProjector, priceTierRating, quantFromName, rankVariants, readCuratedRows, readGgufHeader, readModelCatalog, reconcileModelFavoriteIds, reportModelDiagnostic, requireCanonicalCapabilities, requiredArtifacts, resetSuccessionLogForTests, resolveLiveModelId, resolveNewAgentModelId, resolvePreferredModelChoice, resolveSuccessor, seesImages, selectActiveModels, selectActiveModelsReady, selectAllModelOptions, selectAllModels, selectAllModelsReady, selectDeprecatedModels, selectDeprecatedModelsReady, selectModelById, selectModelClassConfig, selectModelClassName, selectModelControls, selectModelDetailError, selectModelFetchType, selectModelFullyLoaded, selectModelIdentityById, selectModelIdentityLookupStatus, selectModelLabelById, selectModelLabelWithClass, selectModelNameById, selectModelOptions, selectVariant, serviceCountLabel, setModelDiagnosticsSink, shapeCuratedModels, shardFileName, shardName, speedRatingLabel, speedRatingWord, splitSetProblems, takesInput, toAuditRecord, validateModelSet, withModelClass };
|
package/dist/models/index.d.ts
CHANGED
|
@@ -1659,4 +1659,109 @@ declare function catalogFingerprint(catalog: LocalModelCatalog): string;
|
|
|
1659
1659
|
*/
|
|
1660
1660
|
declare function readModelCatalog(client: CuratedCatalogClient, opts?: ReadModelCatalogOptions): Promise<LocalModelCatalog>;
|
|
1661
1661
|
|
|
1662
|
-
|
|
1662
|
+
/**
|
|
1663
|
+
* `@ai-matrx/agents/models` — THE fit rules: what a model can do for a purpose, read from the
|
|
1664
|
+
* capability data the catalog holds (`capabilities.input / output / features / interaction`), never
|
|
1665
|
+
* from a placement (a presentation shelf, a page) and never from a list of names.
|
|
1666
|
+
*
|
|
1667
|
+
* One capability can live in two shapes in the data: "sees images" is `input` containing `image`
|
|
1668
|
+
* OR the `vision` feature (the audit projection `toAuditRecord` already reads it that way). Every
|
|
1669
|
+
* filter that asks "does it see images" asks `seesImages`, so a model carrying only one of the two
|
|
1670
|
+
* shapes is never dropped by one surface and kept by another.
|
|
1671
|
+
*
|
|
1672
|
+
* Every picker, every scope chip and every knob that names "the cheapest model that can do X"
|
|
1673
|
+
* (`cheapestAdequateModel`) goes through these, so the web, Matrx 2 and the server-side knobs agree.
|
|
1674
|
+
*/
|
|
1675
|
+
|
|
1676
|
+
/** The capability fields a fit rule reads. A CatalogModel, a ModelCapabilities and a LocalModel's `capabilities` all fit. */
|
|
1677
|
+
interface FitCapabilities {
|
|
1678
|
+
readonly input?: readonly string[];
|
|
1679
|
+
readonly output?: readonly string[];
|
|
1680
|
+
/** Raw feature keys, or the picker's grouped features (its `raw` keeps every key). */
|
|
1681
|
+
readonly features?: readonly string[] | Pick<GroupedFeatures, "raw">;
|
|
1682
|
+
readonly interaction?: string;
|
|
1683
|
+
}
|
|
1684
|
+
/** Sees images: `image` input OR the `vision` feature (both shapes the data uses). */
|
|
1685
|
+
declare function seesImages(c: FitCapabilities): boolean;
|
|
1686
|
+
/** Takes this modality as input. `image` reads both shapes (`seesImages`). */
|
|
1687
|
+
declare function takesInput(c: FitCapabilities, modality: string): boolean;
|
|
1688
|
+
/**
|
|
1689
|
+
* Fit for a CHAT turn: an ordinary turn model that takes text in and gives text out, whose job is not
|
|
1690
|
+
* making media (a music or image generator that also returns a caption is not a chat model). Speech-to-text,
|
|
1691
|
+
* embedding, extraction, realtime voice, decision holders and provider-managed agents are out.
|
|
1692
|
+
*/
|
|
1693
|
+
declare function isChatModelCapability(c: FitCapabilities): boolean;
|
|
1694
|
+
/** What a job needs from a model. Every listed item is required. */
|
|
1695
|
+
interface ModelNeed {
|
|
1696
|
+
/** Input modalities it must take (`image` = sees images, both shapes). */
|
|
1697
|
+
readonly inputs?: readonly string[];
|
|
1698
|
+
/** Output modalities it must give. */
|
|
1699
|
+
readonly outputs?: readonly string[];
|
|
1700
|
+
/** Raw feature keys it must carry (e.g. `function_calling`, `structured_output`). */
|
|
1701
|
+
readonly features?: readonly string[];
|
|
1702
|
+
/** Required interaction mode (e.g. `turn`). Absent = any. */
|
|
1703
|
+
readonly interaction?: string;
|
|
1704
|
+
/** Minimum context window in tokens. */
|
|
1705
|
+
readonly minContextWindow?: number;
|
|
1706
|
+
}
|
|
1707
|
+
/** Does the model meet every item of the need? */
|
|
1708
|
+
declare function fitsNeed(c: FitCapabilities & {
|
|
1709
|
+
readonly contextWindow?: number | null;
|
|
1710
|
+
}, need: ModelNeed): boolean;
|
|
1711
|
+
/** The catalog fields `cheapestAdequateModel` reads (a picker `CatalogModel` fits as-is). */
|
|
1712
|
+
interface PricedCatalogModel extends FitCapabilities {
|
|
1713
|
+
readonly id: string;
|
|
1714
|
+
readonly name: string;
|
|
1715
|
+
readonly contextWindow?: number | null;
|
|
1716
|
+
/** Points per 1M input tokens (the catalog's price). */
|
|
1717
|
+
readonly pointsInput?: number | null;
|
|
1718
|
+
/** Points per 1M output tokens (the catalog's price). */
|
|
1719
|
+
readonly pointsOutput?: number | null;
|
|
1720
|
+
/** Curated 1-6 cost rating: the tie-break, and the price when no points are set. */
|
|
1721
|
+
readonly costRating?: number | null;
|
|
1722
|
+
readonly isDeprecated?: boolean;
|
|
1723
|
+
readonly retiredAt?: string | null;
|
|
1724
|
+
}
|
|
1725
|
+
interface CheapestAdequateOptions {
|
|
1726
|
+
/** Weight of output price against input price (output tokens usually dominate). Default 3 (1 in : 3 out). */
|
|
1727
|
+
readonly outputWeight?: number;
|
|
1728
|
+
/** Allow deprecated models. Default false (retired models are never chosen). */
|
|
1729
|
+
readonly includeDeprecated?: boolean;
|
|
1730
|
+
}
|
|
1731
|
+
/** The blended price a model is ranked by, or null when the catalog holds no price for it. */
|
|
1732
|
+
declare function blendedPrice(m: PricedCatalogModel, outputWeight?: number): number | null;
|
|
1733
|
+
/**
|
|
1734
|
+
* THE cheapest model in a catalog that meets `need`, by the catalog's own prices (points per 1M
|
|
1735
|
+
* tokens, output weighted). A model with no price ranks after every priced one, by cost rating; ties
|
|
1736
|
+
* break on cost rating then name (stable). Retired models never; deprecated only when asked. Null when
|
|
1737
|
+
* nothing fits — the caller says so; there is no built-in fallback.
|
|
1738
|
+
*/
|
|
1739
|
+
declare function cheapestAdequateModel<T extends PricedCatalogModel>(catalog: readonly T[], need: ModelNeed, options?: CheapestAdequateOptions): T | null;
|
|
1740
|
+
|
|
1741
|
+
/**
|
|
1742
|
+
* `@ai-matrx/agents/models` — THE model a new agent starts on comes from a knob, never a constant:
|
|
1743
|
+
* `agents.model_prefs.agent_authoring_default_model` (organization → person → device ladder, through the
|
|
1744
|
+
* host's knob port). Every "make me an agent" path (blank agent, quick agent, templates, the web's manual
|
|
1745
|
+
* create and system-agent create) asks `resolveNewAgentModelId`.
|
|
1746
|
+
*
|
|
1747
|
+
* KNOB ROW PENDING (2026-10-21): the register row exists with `default_value = null`. Until its default is
|
|
1748
|
+
* set to today's model (the SQL is with the owner), an unset knob answers the stand-in below — LOUDLY, every
|
|
1749
|
+
* time, naming the knob — so creating an agent keeps working exactly as before. When the row lands the stand-in
|
|
1750
|
+
* never fires; delete it then. This file is the ONE place a model id literal may appear in shared runtime code
|
|
1751
|
+
* (guard: apps/shared/scripts/check-no-model-literals.mjs).
|
|
1752
|
+
*/
|
|
1753
|
+
declare const AGENT_AUTHORING_DEFAULT_MODEL_KNOB = "agents.model_prefs.agent_authoring_default_model";
|
|
1754
|
+
interface NewAgentModel {
|
|
1755
|
+
modelId: string;
|
|
1756
|
+
/** True when the knob held no value and the pending-row stand-in answered (it screamed). */
|
|
1757
|
+
standIn: boolean;
|
|
1758
|
+
}
|
|
1759
|
+
/** How many times the stand-in answered in this process (tests, diagnostics). */
|
|
1760
|
+
declare const newAgentModelStandInCount: () => number;
|
|
1761
|
+
/**
|
|
1762
|
+
* The model a new agent starts on. `resolveKnob(fullKey)` is the host's effective-knob read. A knob value
|
|
1763
|
+
* that is a non-empty string wins; an unset knob, or a knob read that fails, answers the stand-in and says so.
|
|
1764
|
+
*/
|
|
1765
|
+
declare function resolveNewAgentModelId(resolveKnob: (fullKey: string) => Promise<unknown>): Promise<NewAgentModel>;
|
|
1766
|
+
|
|
1767
|
+
export { AGENT_AUTHORING_DEFAULT_MODEL_KNOB, type AdminOffering, type AdminPricingBand, type ArtifactUse, type AuditCapabilitiesRecord, CHAT_DEFAULT_MODEL_KNOB, CONTENT_TYPES, type CapabilitiesParseContext, type CatalogKindInput, type CatalogModel, type CatalogTier, type CheapestAdequateOptions, type CompatStatus, type ContentType, type CuratedCatalogClient, type CuratedModel, type CuratedPresentation, type CuratedRows, type CuratedVariant, DEFAULT_CAPABILITIES, type DecidedBy, type DeviceGraphics, type DeviceHardware, type DiscoveryAmbiguity, type DiscoveryArtifact, type DiscoveryMedia, type DiscoveryResult, type DiscoveryRuntime, type DiscoverySource, type DiscoveryVariant, EMPTY_MODEL_RECORDS, EXCLUDED_REVIEW_STATES, FEATURE_BUCKETS, FEATURE_BUCKET_ORDER, FEATURE_KEYS, FILE_TYPE_QUANT, type FeatureBucket, type FeatureBucketMeta, type FeatureKey, type FitCapabilities, GgufError, type GgufHeader, type GgufRead, type GgufTensor, type GroupedFeatures, type HardwareClass, type HardwareClasses, type HeaderFlag, type HeaderJudgement, type HeaderRefusal, INPUT_MODALITIES, INTERACTION_MODES, type Interaction, type InteractionMode, type LocalArtifact, type LocalCatalogClient, type LocalCatalogQuery, type LocalCompatRow, type LocalModel, type LocalModelCatalog, type LocalPresentation, type LocalRuntime, type LocalRuntimeBuild, type LocalVariant, MAX_SUCCESSION_HOPS, MODEL_CATALOG_KINDS, MODEL_FAVORITE_ENTITY_TYPE, type Modality, type ModelCapabilities, type ModelCatalog, type ModelCatalogClient, type ModelCatalogConfig, type ModelCatalogErrorSink, type ModelCatalogPgError, type ModelCatalogPgResult, type ModelCatalogQuery, type ModelCatalogState, type ModelCatalogVariant, type ModelCatalogVariantState, type ModelClassConfig, type ModelClassEntry, type ModelClassIndex, type ModelDiagnosticEntry, type ModelDiagnosticsSink, type ModelFavorites, type ModelFavoritesCache, type ModelFavoritesClient, type ModelFavoritesConfig, type ModelFavoritesErrorSink, type ModelFavoritesState, type ModelFetchScope, type ModelFileHandle, type ModelFit, type ModelIdentityRow, type ModelJson, type ModelNeed, type ModelOfferingRow, type ModelOption, type ModelOptionWithLifecycle, type ModelRecord, type ModelRecordFetchType, type ModelRecords, type ModelRecordsClient, type ModelRecordsConfig, type ModelRecordsState, type ModelSelectionPurpose, type ModelSetEnv, type ModelSetFacts, type ModelSetValidation, type NewAgentModel, type NoSelection, OUTPUT_MODALITIES, type OrderedLike, type PreferredModelChoice, type PreferredModelChoicePorts, type PriceTier, type PricedCatalogModel, type RankedVariant, type ReadModelCatalogOptions, SERVICE_LABEL, SERVICE_LABEL_PLURAL, type SelectDevice, type Selection, type ShardName, type SuccessionClient, type SuccessionIndex, type SuccessionNode, TOP_TIER_COST_RATING, TOP_TIER_LOCKED_TITLE, type VariantDiscovery, type Want, acceptsTextInstructions, blendedPrice, buildModelClassIndex, buildSuccessionIndex, catalogFingerprint, catalogForApp, catalogKindOf, cheapestAdequateModel, classConfigKey, collapseTiersByClass, costRatingTier, costRatingWord, createModelCatalog, createModelFavorites, createModelRecords, curatedList, displayOrderOf, favoriteIdsEqual, fetchCuratedModels, findNonCanonicalCapabilityValues, fitsMemory, fitsNeed, fitsThisComputer, formatMemoryBytes, fromDiscovery, ggufEngine, ggufFacts, groupFeatures, hardwareClassesOf, hasCompatibleDecisionInteraction, isChatModelCapability, isContentType, isConversationalModelCapability, isDecisionModelCapability, isFeatureKey, isHelperGguf, isInteractionMode, isListedVariant, isLocalModelCatalog, isManagedAgentModelCapability, isProjectorName, isSupersedable, isTopTierRating, judgeHeaderFacts, mergeAuditRecordIntoCapabilities, missingShards, modelClassKnobFor, modelClassName, modelClassPinOf, modelsForSelectionPurpose, newAgentModelStandInCount, normalizeArch, normalizeModel, normalizeModels, normalizeOs, normalizePromptSettings, orderCatalogGroups, orderCatalogModels, outputFormatControlKey, parseCapabilities, pickProjector, priceTierRating, quantFromName, rankVariants, readCuratedRows, readGgufHeader, readModelCatalog, reconcileModelFavoriteIds, reportModelDiagnostic, requireCanonicalCapabilities, requiredArtifacts, resetSuccessionLogForTests, resolveLiveModelId, resolveNewAgentModelId, resolvePreferredModelChoice, resolveSuccessor, seesImages, selectActiveModels, selectActiveModelsReady, selectAllModelOptions, selectAllModels, selectAllModelsReady, selectDeprecatedModels, selectDeprecatedModelsReady, selectModelById, selectModelClassConfig, selectModelClassName, selectModelControls, selectModelDetailError, selectModelFetchType, selectModelFullyLoaded, selectModelIdentityById, selectModelIdentityLookupStatus, selectModelLabelById, selectModelLabelWithClass, selectModelNameById, selectModelOptions, selectVariant, serviceCountLabel, setModelDiagnosticsSink, shapeCuratedModels, shardFileName, shardName, speedRatingLabel, speedRatingWord, splitSetProblems, takesInput, toAuditRecord, validateModelSet, withModelClass };
|
package/dist/models/index.js
CHANGED
|
@@ -2525,7 +2525,82 @@ async function readModelCatalog(client, opts = {}) {
|
|
|
2525
2525
|
out.catalog_fingerprint = catalogFingerprint(out);
|
|
2526
2526
|
return out;
|
|
2527
2527
|
}
|
|
2528
|
+
|
|
2529
|
+
// models/fit.ts
|
|
2530
|
+
var featuresOf = (c) => {
|
|
2531
|
+
const f = c.features;
|
|
2532
|
+
if (!f) return [];
|
|
2533
|
+
return Array.isArray(f) ? f : f.raw ?? [];
|
|
2534
|
+
};
|
|
2535
|
+
function seesImages(c) {
|
|
2536
|
+
return (c.input ?? []).includes("image") || featuresOf(c).includes("vision");
|
|
2537
|
+
}
|
|
2538
|
+
function takesInput(c, modality) {
|
|
2539
|
+
if (modality === "image") return seesImages(c);
|
|
2540
|
+
return (c.input ?? []).includes(modality);
|
|
2541
|
+
}
|
|
2542
|
+
var MEDIA_GENERATION_FEATURES = /* @__PURE__ */ new Set(["image_generation", "video_generation", "audio_generation", "music_generation"]);
|
|
2543
|
+
function isChatModelCapability(c) {
|
|
2544
|
+
if (c.interaction !== "turn") return false;
|
|
2545
|
+
if (!(c.input ?? []).includes("text")) return false;
|
|
2546
|
+
if (!(c.output ?? []).includes("text")) return false;
|
|
2547
|
+
return !featuresOf(c).some((f) => MEDIA_GENERATION_FEATURES.has(f));
|
|
2548
|
+
}
|
|
2549
|
+
function fitsNeed(c, need) {
|
|
2550
|
+
for (const m of need.inputs ?? []) if (!takesInput(c, m)) return false;
|
|
2551
|
+
for (const m of need.outputs ?? []) if (!(c.output ?? []).includes(m)) return false;
|
|
2552
|
+
const features = featuresOf(c);
|
|
2553
|
+
for (const f of need.features ?? []) if (!features.includes(f)) return false;
|
|
2554
|
+
if (need.interaction && c.interaction !== need.interaction) return false;
|
|
2555
|
+
if (need.minContextWindow != null && (c.contextWindow ?? 0) < need.minContextWindow) return false;
|
|
2556
|
+
return true;
|
|
2557
|
+
}
|
|
2558
|
+
function blendedPrice(m, outputWeight = 3) {
|
|
2559
|
+
const i = m.pointsInput;
|
|
2560
|
+
const o = m.pointsOutput;
|
|
2561
|
+
if (i == null && o == null) return null;
|
|
2562
|
+
return ((i ?? o ?? 0) + (o ?? i ?? 0) * outputWeight) / (1 + outputWeight);
|
|
2563
|
+
}
|
|
2564
|
+
function cheapestAdequateModel(catalog, need, options = {}) {
|
|
2565
|
+
const w = options.outputWeight ?? 3;
|
|
2566
|
+
const fits = catalog.filter((m) => !m.retiredAt && (options.includeDeprecated || !m.isDeprecated) && fitsNeed(m, need));
|
|
2567
|
+
if (fits.length === 0) return null;
|
|
2568
|
+
const rank = (m) => blendedPrice(m, w);
|
|
2569
|
+
return [...fits].sort((a, b) => {
|
|
2570
|
+
const pa = rank(a);
|
|
2571
|
+
const pb = rank(b);
|
|
2572
|
+
if (pa != null && pb != null && pa !== pb) return pa - pb;
|
|
2573
|
+
if (pa != null && pb == null) return -1;
|
|
2574
|
+
if (pa == null && pb != null) return 1;
|
|
2575
|
+
const ca = a.costRating ?? Number.MAX_SAFE_INTEGER;
|
|
2576
|
+
const cb = b.costRating ?? Number.MAX_SAFE_INTEGER;
|
|
2577
|
+
if (ca !== cb) return ca - cb;
|
|
2578
|
+
return a.name < b.name ? -1 : a.name > b.name ? 1 : 0;
|
|
2579
|
+
})[0];
|
|
2580
|
+
}
|
|
2581
|
+
|
|
2582
|
+
// models/default-model.ts
|
|
2583
|
+
var AGENT_AUTHORING_DEFAULT_MODEL_KNOB = "agents.model_prefs.agent_authoring_default_model";
|
|
2584
|
+
var PENDING_KNOB_ROW_MODEL_ID = "617abdcd-79e2-4a4b-be76-4a9960cdffa1";
|
|
2585
|
+
var standInCount = 0;
|
|
2586
|
+
var newAgentModelStandInCount = () => standInCount;
|
|
2587
|
+
async function resolveNewAgentModelId(resolveKnob) {
|
|
2588
|
+
let why;
|
|
2589
|
+
try {
|
|
2590
|
+
const value = await resolveKnob(AGENT_AUTHORING_DEFAULT_MODEL_KNOB);
|
|
2591
|
+
if (typeof value === "string" && value.trim() !== "") return { modelId: value.trim(), standIn: false };
|
|
2592
|
+
why = "has no value (its platform default row is pending)";
|
|
2593
|
+
} catch (error) {
|
|
2594
|
+
why = `could not be read (${error instanceof Error ? error.message : String(error)})`;
|
|
2595
|
+
}
|
|
2596
|
+
standInCount += 1;
|
|
2597
|
+
console.error(
|
|
2598
|
+
`[newAgentModel] STAND-IN: ${AGENT_AUTHORING_DEFAULT_MODEL_KNOB} ${why} \u2014 this new agent starts on ${PENDING_KNOB_ROW_MODEL_ID} (today's model). Set the knob's default to remove this stand-in.`
|
|
2599
|
+
);
|
|
2600
|
+
return { modelId: PENDING_KNOB_ROW_MODEL_ID, standIn: true };
|
|
2601
|
+
}
|
|
2528
2602
|
export {
|
|
2603
|
+
AGENT_AUTHORING_DEFAULT_MODEL_KNOB,
|
|
2529
2604
|
CHAT_DEFAULT_MODEL_KNOB,
|
|
2530
2605
|
CONTENT_TYPES,
|
|
2531
2606
|
DEFAULT_CAPABILITIES,
|
|
@@ -2547,11 +2622,13 @@ export {
|
|
|
2547
2622
|
TOP_TIER_COST_RATING,
|
|
2548
2623
|
TOP_TIER_LOCKED_TITLE,
|
|
2549
2624
|
acceptsTextInstructions,
|
|
2625
|
+
blendedPrice,
|
|
2550
2626
|
buildModelClassIndex,
|
|
2551
2627
|
buildSuccessionIndex,
|
|
2552
2628
|
catalogFingerprint,
|
|
2553
2629
|
catalogForApp,
|
|
2554
2630
|
catalogKindOf,
|
|
2631
|
+
cheapestAdequateModel,
|
|
2555
2632
|
classConfigKey,
|
|
2556
2633
|
collapseTiersByClass,
|
|
2557
2634
|
costRatingTier,
|
|
@@ -2565,6 +2642,7 @@ export {
|
|
|
2565
2642
|
fetchCuratedModels,
|
|
2566
2643
|
findNonCanonicalCapabilityValues,
|
|
2567
2644
|
fitsMemory,
|
|
2645
|
+
fitsNeed,
|
|
2568
2646
|
fitsThisComputer,
|
|
2569
2647
|
formatMemoryBytes,
|
|
2570
2648
|
fromDiscovery,
|
|
@@ -2573,6 +2651,7 @@ export {
|
|
|
2573
2651
|
groupFeatures,
|
|
2574
2652
|
hardwareClassesOf,
|
|
2575
2653
|
hasCompatibleDecisionInteraction,
|
|
2654
|
+
isChatModelCapability,
|
|
2576
2655
|
isContentType,
|
|
2577
2656
|
isConversationalModelCapability,
|
|
2578
2657
|
isDecisionModelCapability,
|
|
@@ -2592,6 +2671,7 @@ export {
|
|
|
2592
2671
|
modelClassName,
|
|
2593
2672
|
modelClassPinOf,
|
|
2594
2673
|
modelsForSelectionPurpose,
|
|
2674
|
+
newAgentModelStandInCount,
|
|
2595
2675
|
normalizeArch,
|
|
2596
2676
|
normalizeModel,
|
|
2597
2677
|
normalizeModels,
|
|
@@ -2614,8 +2694,10 @@ export {
|
|
|
2614
2694
|
requiredArtifacts,
|
|
2615
2695
|
resetSuccessionLogForTests,
|
|
2616
2696
|
resolveLiveModelId,
|
|
2697
|
+
resolveNewAgentModelId,
|
|
2617
2698
|
resolvePreferredModelChoice,
|
|
2618
2699
|
resolveSuccessor,
|
|
2700
|
+
seesImages,
|
|
2619
2701
|
selectActiveModels,
|
|
2620
2702
|
selectActiveModelsReady,
|
|
2621
2703
|
selectAllModelOptions,
|
|
@@ -2645,6 +2727,7 @@ export {
|
|
|
2645
2727
|
speedRatingLabel,
|
|
2646
2728
|
speedRatingWord,
|
|
2647
2729
|
splitSetProblems,
|
|
2730
|
+
takesInput,
|
|
2648
2731
|
toAuditRecord,
|
|
2649
2732
|
validateModelSet,
|
|
2650
2733
|
withModelClass
|
|
@@ -446,6 +446,27 @@ function resolveSuccessor(modelId, index) {
|
|
|
446
446
|
return modelId;
|
|
447
447
|
}
|
|
448
448
|
|
|
449
|
+
// models/fit.ts
|
|
450
|
+
var featuresOf = (c) => {
|
|
451
|
+
const f = c.features;
|
|
452
|
+
if (!f) return [];
|
|
453
|
+
return Array.isArray(f) ? f : f.raw ?? [];
|
|
454
|
+
};
|
|
455
|
+
function seesImages(c) {
|
|
456
|
+
return (c.input ?? []).includes("image") || featuresOf(c).includes("vision");
|
|
457
|
+
}
|
|
458
|
+
function takesInput(c, modality) {
|
|
459
|
+
if (modality === "image") return seesImages(c);
|
|
460
|
+
return (c.input ?? []).includes(modality);
|
|
461
|
+
}
|
|
462
|
+
var MEDIA_GENERATION_FEATURES = /* @__PURE__ */ new Set(["image_generation", "video_generation", "audio_generation", "music_generation"]);
|
|
463
|
+
function isChatModelCapability(c) {
|
|
464
|
+
if (c.interaction !== "turn") return false;
|
|
465
|
+
if (!(c.input ?? []).includes("text")) return false;
|
|
466
|
+
if (!(c.output ?? []).includes("text")) return false;
|
|
467
|
+
return !featuresOf(c).some((f) => MEDIA_GENERATION_FEATURES.has(f));
|
|
468
|
+
}
|
|
469
|
+
|
|
449
470
|
// models/catalog/types.ts
|
|
450
471
|
var INPUT_MODALITIES = ["text", "image", "audio", "video"];
|
|
451
472
|
var OUTPUT_MODALITIES = [
|
|
@@ -1635,6 +1656,7 @@ function ModelListDropdown({
|
|
|
1635
1656
|
].sort((a, b) => a.localeCompare(b)),
|
|
1636
1657
|
[eligibleModels]
|
|
1637
1658
|
);
|
|
1659
|
+
const chatFitApplies = effectiveSelectionPurpose === "chat" && !(outputModalities ?? []).some((o) => o !== "text");
|
|
1638
1660
|
const filtered = (0, import_react2.useMemo)(() => {
|
|
1639
1661
|
const q = query.trim().toLowerCase();
|
|
1640
1662
|
const hasAvailable = (m) => (m.admin?.offerings ?? []).some((o) => o.isAvailable);
|
|
@@ -1646,6 +1668,7 @@ function ModelListDropdown({
|
|
|
1646
1668
|
return false;
|
|
1647
1669
|
if (effectiveSelectionPurpose === "chat" && isManagedAgentModelCapability(m))
|
|
1648
1670
|
return false;
|
|
1671
|
+
if (chatFitApplies && !isChatModelCapability(m)) return false;
|
|
1649
1672
|
if (tab === "favorites" && !favoriteSet.has(m.id)) return false;
|
|
1650
1673
|
const haystack = [
|
|
1651
1674
|
m.name,
|
|
@@ -1685,7 +1708,7 @@ function ModelListDropdown({
|
|
|
1685
1708
|
if (filters.premium !== "any") {
|
|
1686
1709
|
if (filters.premium === "yes" !== m.isPremium) return false;
|
|
1687
1710
|
}
|
|
1688
|
-
for (const m2 of filters.input) if (!m
|
|
1711
|
+
for (const m2 of filters.input) if (!takesInput(m, m2)) return false;
|
|
1689
1712
|
const outputSatisfied = (want) => m.output.includes(want) || effectiveSelectionPurpose === "agent" && isDecision && want === "text";
|
|
1690
1713
|
for (const m2 of filters.output) if (!outputSatisfied(m2)) return false;
|
|
1691
1714
|
for (const b of filters.features)
|
|
@@ -1751,6 +1774,7 @@ function ModelListDropdown({
|
|
|
1751
1774
|
variant,
|
|
1752
1775
|
priorityModelSet,
|
|
1753
1776
|
effectiveSelectionPurpose,
|
|
1777
|
+
chatFitApplies,
|
|
1754
1778
|
hiddenModelIds,
|
|
1755
1779
|
value,
|
|
1756
1780
|
successionIndex
|
|
@@ -428,6 +428,27 @@ function resolveSuccessor(modelId, index) {
|
|
|
428
428
|
return modelId;
|
|
429
429
|
}
|
|
430
430
|
|
|
431
|
+
// models/fit.ts
|
|
432
|
+
var featuresOf = (c) => {
|
|
433
|
+
const f = c.features;
|
|
434
|
+
if (!f) return [];
|
|
435
|
+
return Array.isArray(f) ? f : f.raw ?? [];
|
|
436
|
+
};
|
|
437
|
+
function seesImages(c) {
|
|
438
|
+
return (c.input ?? []).includes("image") || featuresOf(c).includes("vision");
|
|
439
|
+
}
|
|
440
|
+
function takesInput(c, modality) {
|
|
441
|
+
if (modality === "image") return seesImages(c);
|
|
442
|
+
return (c.input ?? []).includes(modality);
|
|
443
|
+
}
|
|
444
|
+
var MEDIA_GENERATION_FEATURES = /* @__PURE__ */ new Set(["image_generation", "video_generation", "audio_generation", "music_generation"]);
|
|
445
|
+
function isChatModelCapability(c) {
|
|
446
|
+
if (c.interaction !== "turn") return false;
|
|
447
|
+
if (!(c.input ?? []).includes("text")) return false;
|
|
448
|
+
if (!(c.output ?? []).includes("text")) return false;
|
|
449
|
+
return !featuresOf(c).some((f) => MEDIA_GENERATION_FEATURES.has(f));
|
|
450
|
+
}
|
|
451
|
+
|
|
431
452
|
// models/catalog/types.ts
|
|
432
453
|
var INPUT_MODALITIES = ["text", "image", "audio", "video"];
|
|
433
454
|
var OUTPUT_MODALITIES = [
|
|
@@ -1617,6 +1638,7 @@ function ModelListDropdown({
|
|
|
1617
1638
|
].sort((a, b) => a.localeCompare(b)),
|
|
1618
1639
|
[eligibleModels]
|
|
1619
1640
|
);
|
|
1641
|
+
const chatFitApplies = effectiveSelectionPurpose === "chat" && !(outputModalities ?? []).some((o) => o !== "text");
|
|
1620
1642
|
const filtered = useMemo2(() => {
|
|
1621
1643
|
const q = query.trim().toLowerCase();
|
|
1622
1644
|
const hasAvailable = (m) => (m.admin?.offerings ?? []).some((o) => o.isAvailable);
|
|
@@ -1628,6 +1650,7 @@ function ModelListDropdown({
|
|
|
1628
1650
|
return false;
|
|
1629
1651
|
if (effectiveSelectionPurpose === "chat" && isManagedAgentModelCapability(m))
|
|
1630
1652
|
return false;
|
|
1653
|
+
if (chatFitApplies && !isChatModelCapability(m)) return false;
|
|
1631
1654
|
if (tab === "favorites" && !favoriteSet.has(m.id)) return false;
|
|
1632
1655
|
const haystack = [
|
|
1633
1656
|
m.name,
|
|
@@ -1667,7 +1690,7 @@ function ModelListDropdown({
|
|
|
1667
1690
|
if (filters.premium !== "any") {
|
|
1668
1691
|
if (filters.premium === "yes" !== m.isPremium) return false;
|
|
1669
1692
|
}
|
|
1670
|
-
for (const m2 of filters.input) if (!m
|
|
1693
|
+
for (const m2 of filters.input) if (!takesInput(m, m2)) return false;
|
|
1671
1694
|
const outputSatisfied = (want) => m.output.includes(want) || effectiveSelectionPurpose === "agent" && isDecision && want === "text";
|
|
1672
1695
|
for (const m2 of filters.output) if (!outputSatisfied(m2)) return false;
|
|
1673
1696
|
for (const b of filters.features)
|
|
@@ -1733,6 +1756,7 @@ function ModelListDropdown({
|
|
|
1733
1756
|
variant,
|
|
1734
1757
|
priorityModelSet,
|
|
1735
1758
|
effectiveSelectionPurpose,
|
|
1759
|
+
chatFitApplies,
|
|
1736
1760
|
hiddenModelIds,
|
|
1737
1761
|
value,
|
|
1738
1762
|
successionIndex
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ai-matrx/agents",
|
|
3
|
-
"version": "0.59.
|
|
3
|
+
"version": "0.59.193",
|
|
4
4
|
"description": "Portable AI Matrx agent stream protocol, event projection, and safe result-presentation primitives.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.cjs",
|
|
@@ -514,8 +514,8 @@
|
|
|
514
514
|
"@ai-matrx/content-ir": "latest",
|
|
515
515
|
"@ai-matrx/data": "latest",
|
|
516
516
|
"@ai-matrx/design-system": "latest",
|
|
517
|
-
"@ai-matrx/icons": "latest",
|
|
518
517
|
"@ai-matrx/diff": "latest",
|
|
518
|
+
"@ai-matrx/icons": "latest",
|
|
519
519
|
"@ai-matrx/kit": "latest"
|
|
520
520
|
},
|
|
521
521
|
"peerDependencies": {
|
|
@@ -555,11 +555,11 @@
|
|
|
555
555
|
"scripts": {
|
|
556
556
|
"build": "pnpm clean && node ./scripts/build-parts.mjs && node ../scripts/check-node-env-not-inlined.mjs",
|
|
557
557
|
"clean": "node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"",
|
|
558
|
-
"check:package": "node ./scripts/check-catalog-reader-columns.mjs && node ./scripts/check-catalog-reader-columns.mjs --self-test && node ../scripts/check-agents-below-chat.mjs && node ../scripts/check-agents-below-chat.mjs --self-test && pnpm build && node ../scripts/check-exports-agreement.mjs && publint && pnpm verify:tarball && node ../scripts/check-tarball-relative-imports.mjs --self-test && node ../scripts/check-tarball-relative-imports.mjs --pack . && node ../scripts/check-package-rules.mjs --self-test && node ../scripts/check-package-rules.mjs .",
|
|
558
|
+
"check:package": "node ./scripts/check-catalog-reader-columns.mjs && node ./scripts/check-catalog-reader-columns.mjs --self-test && node ../scripts/check-no-model-literals.mjs && node ../scripts/check-no-model-literals.mjs --self-test && node ../scripts/check-agents-below-chat.mjs && node ../scripts/check-agents-below-chat.mjs --self-test && pnpm build && node ../scripts/check-exports-agreement.mjs && publint && pnpm verify:tarball && node ../scripts/check-tarball-relative-imports.mjs --self-test && node ../scripts/check-tarball-relative-imports.mjs --pack . && node ../scripts/check-package-rules.mjs --self-test && node ../scripts/check-package-rules.mjs .",
|
|
559
559
|
"typecheck": "tsc --noEmit",
|
|
560
560
|
"test": "vitest run",
|
|
561
561
|
"verify:tarball": "node ./scripts/verify-tarball.mjs",
|
|
562
562
|
"typegen:self-test": "node scripts/typegen/drop-guard.self-test.mjs && node scripts/typegen/check-api-types-fresh.mjs --self-test"
|
|
563
563
|
},
|
|
564
|
-
"gitHead": "
|
|
564
|
+
"gitHead": "3165453310fa6d42f3b90249a12d956eeebe7636"
|
|
565
565
|
}
|