@wrongstack/core 0.298.1 → 0.298.2
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/coordination/index.js +92 -7
- package/dist/coordination/mail-tools.d.ts +3 -3
- package/dist/coordination/mailbox-codecs.d.ts +1 -1
- package/dist/coordination/mailbox-project-server.js +32 -1
- package/dist/coordination/mailbox-types.d.ts +158 -3
- package/dist/coordination/model-matrix.d.ts +16 -0
- package/dist/core/index.js +447 -43
- package/dist/defaults/index.js +21 -2
- package/dist/index.js +667 -519
- package/dist/infrastructure/index.js +20 -1
- package/dist/models/index.d.ts +1 -0
- package/dist/models/index.js +108 -1
- package/dist/models/models-dev-schema.d.ts +308 -0
- package/dist/plugin/index.js +14 -6
- package/dist/plugins/auto-review-plugin.d.ts +17 -2
- package/dist/storage/index.js +20 -1
- package/dist/tools/index.js +30 -2
- package/dist/types/config/providers.d.ts +13 -1
- package/dist/types/models-registry.d.ts +9 -4
- package/package.json +4 -3
package/dist/tools/index.js
CHANGED
|
@@ -5741,8 +5741,16 @@ function resolveSubagentModelTarget(config, role, opts = {}) {
|
|
|
5741
5741
|
const resolution = resolveModelMatrixResolution(config.modelMatrix, role);
|
|
5742
5742
|
const matrixTarget = resolveModelTargetFromEntry(config, resolution?.entry);
|
|
5743
5743
|
const implementationTarget = opts.implementationTarget ?? resolveImplementationModelTarget(config);
|
|
5744
|
+
const isAvailable = (providerId, model) => {
|
|
5745
|
+
if (!opts.statusTracker) return true;
|
|
5746
|
+
if (!providerId || !model) return true;
|
|
5747
|
+
return opts.statusTracker.isAvailable(providerId, model);
|
|
5748
|
+
};
|
|
5749
|
+
const matrixEffective = materializeTarget(config, matrixTarget);
|
|
5750
|
+
const matrixIsAvailable = !matrixEffective || isAvailable(matrixEffective.provider, matrixEffective.model);
|
|
5744
5751
|
if (!roleNeedsIndependentReviewModel(role)) {
|
|
5745
5752
|
if (!matrixTarget) return void 0;
|
|
5753
|
+
if (!matrixIsAvailable) return void 0;
|
|
5746
5754
|
return {
|
|
5747
5755
|
...matrixTarget,
|
|
5748
5756
|
source: "matrix",
|
|
@@ -5751,16 +5759,27 @@ function resolveSubagentModelTarget(config, role, opts = {}) {
|
|
|
5751
5759
|
}
|
|
5752
5760
|
const matrixRef = materializeTarget(config, matrixTarget);
|
|
5753
5761
|
if (resolution?.source === "role" || resolution?.source === "phase") {
|
|
5754
|
-
|
|
5762
|
+
if (!matrixTarget) return void 0;
|
|
5763
|
+
if (!matrixIsAvailable) return void 0;
|
|
5764
|
+
return {
|
|
5765
|
+
...matrixTarget,
|
|
5766
|
+
source: "matrix",
|
|
5767
|
+
matrixSource: resolution.source
|
|
5768
|
+
};
|
|
5755
5769
|
}
|
|
5756
5770
|
if (matrixRef && !sameModelReference(matrixRef, implementationTarget)) {
|
|
5771
|
+
if (!matrixIsAvailable) return void 0;
|
|
5757
5772
|
return {
|
|
5758
5773
|
...matrixTarget ?? {},
|
|
5759
5774
|
source: "matrix",
|
|
5760
5775
|
matrixSource: resolution?.source
|
|
5761
5776
|
};
|
|
5762
5777
|
}
|
|
5763
|
-
const diverse =
|
|
5778
|
+
const diverse = chooseDiverseModelTargetWithTracker(
|
|
5779
|
+
config,
|
|
5780
|
+
implementationTarget,
|
|
5781
|
+
opts.statusTracker
|
|
5782
|
+
);
|
|
5764
5783
|
if (diverse) {
|
|
5765
5784
|
return {
|
|
5766
5785
|
provider: diverse.provider,
|
|
@@ -5774,6 +5793,7 @@ function resolveSubagentModelTarget(config, role, opts = {}) {
|
|
|
5774
5793
|
};
|
|
5775
5794
|
}
|
|
5776
5795
|
if (!matrixTarget) return void 0;
|
|
5796
|
+
if (!matrixIsAvailable) return void 0;
|
|
5777
5797
|
return {
|
|
5778
5798
|
...matrixTarget,
|
|
5779
5799
|
source: "matrix",
|
|
@@ -5810,6 +5830,14 @@ function chooseDiverseModelTarget(config, avoid) {
|
|
|
5810
5830
|
candidates.sort((a, b) => modelDiversityScore(b, avoid) - modelDiversityScore(a, avoid));
|
|
5811
5831
|
return candidates[0];
|
|
5812
5832
|
}
|
|
5833
|
+
function chooseDiverseModelTargetWithTracker(config, avoid, tracker) {
|
|
5834
|
+
if (!tracker) return chooseDiverseModelTarget(config, avoid);
|
|
5835
|
+
const ranked = collectConfiguredModelTargets(config).filter((candidate) => !sameModelReference(candidate, avoid)).sort((a, b) => modelDiversityScore(b, avoid) - modelDiversityScore(a, avoid));
|
|
5836
|
+
for (const candidate of ranked) {
|
|
5837
|
+
if (tracker.isAvailable(candidate.provider, candidate.model)) return candidate;
|
|
5838
|
+
}
|
|
5839
|
+
return void 0;
|
|
5840
|
+
}
|
|
5813
5841
|
function collectConfiguredModelTargets(config) {
|
|
5814
5842
|
const seen = /* @__PURE__ */ new Set();
|
|
5815
5843
|
const out = [];
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { WireFamily } from '../models-registry.js';
|
|
1
|
+
import type { ModelsDevModel, WireFamily } from '../models-registry.js';
|
|
2
2
|
import type { Capabilities } from '../provider.js';
|
|
3
3
|
import type { ModelRuntimeConfig } from './runtime.js';
|
|
4
4
|
export interface ProviderApiKey {
|
|
@@ -143,6 +143,18 @@ export interface CustomModelDefinition {
|
|
|
143
143
|
* or catalog entry is used.
|
|
144
144
|
*/
|
|
145
145
|
maxOutput?: number | undefined;
|
|
146
|
+
/**
|
|
147
|
+
* Full models.dev model payload (ME-2, Model Editor). Stores all schema
|
|
148
|
+
* fields for catalog overrides (delta — only changed fields are set) and
|
|
149
|
+
* custom (non-catalog) models (full object). Validated by
|
|
150
|
+
* `modelsDevModelSchema` from `@wrongstack/core/models`.
|
|
151
|
+
*
|
|
152
|
+
* Legacy derived fields above (`name`, `capabilities`, `maxOutput`) stay
|
|
153
|
+
* functional for existing configs and are kept in sync by
|
|
154
|
+
* `normalizeInlineProviderModels` — prefer setting `modelsDev` for new
|
|
155
|
+
* code so the full schema round-trips.
|
|
156
|
+
*/
|
|
157
|
+
modelsDev?: Omit<ModelsDevModel, 'id'> | undefined;
|
|
146
158
|
}
|
|
147
159
|
/**
|
|
148
160
|
* Skill subsystem configuration. All fields optional; the subsystem itself is
|
|
@@ -41,7 +41,7 @@ export interface ModelsDevModel {
|
|
|
41
41
|
modalities?: {
|
|
42
42
|
input?: string[] | undefined;
|
|
43
43
|
output?: string[] | undefined;
|
|
44
|
-
};
|
|
44
|
+
} | undefined;
|
|
45
45
|
cost?: {
|
|
46
46
|
input?: number | undefined;
|
|
47
47
|
output?: number | undefined;
|
|
@@ -49,12 +49,17 @@ export interface ModelsDevModel {
|
|
|
49
49
|
cache_write?: number | undefined;
|
|
50
50
|
cache_write_5m?: number | undefined;
|
|
51
51
|
cache_write_1h?: number | undefined;
|
|
52
|
-
|
|
53
|
-
|
|
52
|
+
/**
|
|
53
|
+
* Unknown cost keys: upstream is NOT number-only (e.g. `tiers` is an
|
|
54
|
+
* array of tier objects on ~300 models, census 2026-08-03). Keep this
|
|
55
|
+
* index `unknown` — named keys above stay typed for consumers.
|
|
56
|
+
*/
|
|
57
|
+
[k: string]: unknown;
|
|
58
|
+
} | undefined;
|
|
54
59
|
limit?: {
|
|
55
60
|
context?: number | undefined;
|
|
56
61
|
output?: number | undefined;
|
|
57
|
-
};
|
|
62
|
+
} | undefined;
|
|
58
63
|
[k: string]: unknown;
|
|
59
64
|
}
|
|
60
65
|
export interface ModelsDevProvider {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@wrongstack/core",
|
|
3
|
-
"version": "0.298.
|
|
3
|
+
"version": "0.298.2",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"description": "WrongStack core: kernel, types, defaults, and shared utilities for the WrongStack CLI agent.",
|
|
6
6
|
"repository": {
|
|
@@ -172,8 +172,9 @@
|
|
|
172
172
|
],
|
|
173
173
|
"wrongstackApiVersion": "0.1.10",
|
|
174
174
|
"dependencies": {
|
|
175
|
-
"
|
|
176
|
-
"@wrongstack/kanban": "0.298.
|
|
175
|
+
"zod": "4.4.3",
|
|
176
|
+
"@wrongstack/kanban": "0.298.2",
|
|
177
|
+
"@wrongstack/persistence": "0.298.2"
|
|
177
178
|
},
|
|
178
179
|
"devDependencies": {
|
|
179
180
|
"@types/node": "^26.1.2",
|