nexus-agents 3.7.0 → 3.8.0
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/{child-mcp-config-RERUXZJS.js → child-mcp-config-R4GQMDAV.js} +2 -2
- package/dist/{chunk-KEO6QJE6.js → chunk-2XFBHREJ.js} +2 -2
- package/dist/{chunk-J2F5E3DF.js → chunk-5CXAYPSU.js} +2 -2
- package/dist/{chunk-WT6JCD3E.js → chunk-5LFB77LA.js} +2 -2
- package/dist/{chunk-JFZP7IA4.js → chunk-5WGOPKHZ.js} +2 -2
- package/dist/{chunk-5FMDEEV7.js → chunk-6G4FMCXS.js} +8 -8
- package/dist/{chunk-PXJDALVM.js → chunk-6Y4QIIQD.js} +2 -2
- package/dist/{chunk-NC6CLKIB.js → chunk-7ILVQDUT.js} +2 -2
- package/dist/{chunk-7TJVDU2S.js → chunk-A5P7Y4SB.js} +3 -3
- package/dist/{chunk-UK2HVVTQ.js → chunk-C5O7Z4P7.js} +2 -2
- package/dist/{chunk-TDXJYLRP.js → chunk-C62JS6A7.js} +2 -2
- package/dist/{chunk-MBNECNPL.js → chunk-D55LWKBW.js} +15 -10
- package/dist/{chunk-MBNECNPL.js.map → chunk-D55LWKBW.js.map} +1 -1
- package/dist/{chunk-DOT3TG4T.js → chunk-DHWEXVCJ.js} +3 -3
- package/dist/{chunk-4LMP452D.js → chunk-GJDNMK3G.js} +7 -7
- package/dist/{chunk-4DXZJJK3.js → chunk-GX3QJX7X.js} +2 -2
- package/dist/{chunk-ETEGV2NG.js → chunk-H5G4N5UL.js} +2 -2
- package/dist/{chunk-CZC4FIVH.js → chunk-IJXJGQUY.js} +4 -4
- package/dist/{chunk-D2SKFK4W.js → chunk-JIZ7B6FX.js} +5 -5
- package/dist/{chunk-V7EFU7LB.js → chunk-MB2T54VO.js} +6 -2
- package/dist/chunk-MB2T54VO.js.map +1 -0
- package/dist/{chunk-TZGM6BXE.js → chunk-NTBGFI5Q.js} +3 -3
- package/dist/{chunk-3BKFXSHM.js → chunk-OIBSPO6Q.js} +3 -3
- package/dist/{chunk-6YLKVLI4.js → chunk-P3XQMXIW.js} +35 -35
- package/dist/{chunk-VYWHIQHX.js → chunk-P4QFJ7OX.js} +2 -2
- package/dist/{chunk-TOBIDJ3V.js → chunk-PPZTSOSH.js} +8 -8
- package/dist/{chunk-XFQMSO3R.js → chunk-PQCKQKKP.js} +5 -5
- package/dist/{chunk-Y3CGQUCQ.js → chunk-Q4L2DXA4.js} +5 -5
- package/dist/{chunk-YKEBDGCK.js → chunk-QWI4VF5L.js} +2 -2
- package/dist/{chunk-JF7YUXZX.js → chunk-R3ZNOB3V.js} +2 -2
- package/dist/{chunk-6QBCTIKD.js → chunk-RYJ2VU7E.js} +2 -2
- package/dist/{chunk-V24NAR5C.js → chunk-RYOQ3WJR.js} +2 -2
- package/dist/{chunk-ZYL6RNBZ.js → chunk-SJGNFNFT.js} +5 -5
- package/dist/{chunk-ZHVVLJFQ.js → chunk-SQ35C5SD.js} +4 -4
- package/dist/{chunk-7KHCQPHO.js → chunk-YSE3VQ4A.js} +343 -314
- package/dist/chunk-YSE3VQ4A.js.map +1 -0
- package/dist/{chunk-ISF7BEHM.js → chunk-YUPUHMWP.js} +4 -4
- package/dist/{cli-circuit-breaker-AR6SXY4G.js → cli-circuit-breaker-YKY7NCQ5.js} +3 -3
- package/dist/cli.d.ts +1 -1
- package/dist/cli.js +41 -41
- package/dist/{composite-router-NQ4UCMV6.js → composite-router-63QDM6CQ.js} +2 -2
- package/dist/{consensus-vote-ILSS373K.js → consensus-vote-C7QTJJH7.js} +16 -16
- package/dist/{consensus-vote-types-BC2vWQKe.d.ts → consensus-vote-types-b-KD-0g_.d.ts} +102 -0
- package/dist/{context-retriever-CCGMXTGJ.js → context-retriever-DIKQ7QZA.js} +8 -8
- package/dist/{doctor-deep-VMTFQG7N.js → doctor-deep-JVUEAUAG.js} +3 -3
- package/dist/{doctor-live-IAQOG6LI.js → doctor-live-CT2SKNLI.js} +9 -9
- package/dist/{expert-bridge-JOM5P4I4.js → expert-bridge-G5WXRNUH.js} +4 -4
- package/dist/{factory-6A6TGK6D.js → factory-72QUNWLV.js} +5 -5
- package/dist/{factory-MYQRDKOJ.js → factory-LYRONJ3P.js} +9 -9
- package/dist/{improvement-review-CFBMX6BL.js → improvement-review-CJMYGUDM.js} +5 -5
- package/dist/index.d.ts +10 -2
- package/dist/index.js +30 -30
- package/dist/{init-opencode-J7GUKZF4.js → init-opencode-UATS6Q6W.js} +6 -6
- package/dist/{issue-triage-T3L7CAUV.js → issue-triage-CZWWJSOT.js} +6 -6
- package/dist/{pr-reviewer-helpers-XMTT5K4E.js → pr-reviewer-helpers-OLEK46AR.js} +4 -4
- package/dist/{registry-command-5QPDC5SH.js → registry-command-FKRZFXYQ.js} +2 -2
- package/dist/{repo-security-plan-WQG7G4H6.js → repo-security-plan-BULZVX3A.js} +3 -3
- package/dist/{research-helpers-synthesize-6FPLB3UK.js → research-helpers-synthesize-LTMSKVUB.js} +4 -4
- package/dist/{routing-memory-HNZRMLXC.js → routing-memory-H7DT3HVY.js} +2 -2
- package/dist/{session-memory-SXYFTZYM.js → session-memory-UTPN4MCS.js} +3 -3
- package/dist/{setup-command-X7EJ7LBU.js → setup-command-TGGSIV6F.js} +14 -14
- package/dist/{setup-config-4UPPIMTI.js → setup-config-WIXJT5YV.js} +3 -3
- package/dist/{setup-custom-api-U5WEZRQO.js → setup-custom-api-36BFRFWO.js} +4 -4
- package/dist/{tool-memory-BT7VS5N5.js → tool-memory-YQTO4WUG.js} +5 -5
- package/dist/{unified-registry-L2T5UJHQ.js → unified-registry-N2BQJSLK.js} +10 -10
- package/dist/{weather-report-2T3OIAJS.js → weather-report-AOX6RULO.js} +2 -2
- package/package.json +1 -1
- package/dist/chunk-7KHCQPHO.js.map +0 -1
- package/dist/chunk-V7EFU7LB.js.map +0 -1
- /package/dist/{child-mcp-config-RERUXZJS.js.map → child-mcp-config-R4GQMDAV.js.map} +0 -0
- /package/dist/{chunk-KEO6QJE6.js.map → chunk-2XFBHREJ.js.map} +0 -0
- /package/dist/{chunk-J2F5E3DF.js.map → chunk-5CXAYPSU.js.map} +0 -0
- /package/dist/{chunk-WT6JCD3E.js.map → chunk-5LFB77LA.js.map} +0 -0
- /package/dist/{chunk-JFZP7IA4.js.map → chunk-5WGOPKHZ.js.map} +0 -0
- /package/dist/{chunk-5FMDEEV7.js.map → chunk-6G4FMCXS.js.map} +0 -0
- /package/dist/{chunk-PXJDALVM.js.map → chunk-6Y4QIIQD.js.map} +0 -0
- /package/dist/{chunk-NC6CLKIB.js.map → chunk-7ILVQDUT.js.map} +0 -0
- /package/dist/{chunk-7TJVDU2S.js.map → chunk-A5P7Y4SB.js.map} +0 -0
- /package/dist/{chunk-UK2HVVTQ.js.map → chunk-C5O7Z4P7.js.map} +0 -0
- /package/dist/{chunk-TDXJYLRP.js.map → chunk-C62JS6A7.js.map} +0 -0
- /package/dist/{chunk-DOT3TG4T.js.map → chunk-DHWEXVCJ.js.map} +0 -0
- /package/dist/{chunk-4LMP452D.js.map → chunk-GJDNMK3G.js.map} +0 -0
- /package/dist/{chunk-4DXZJJK3.js.map → chunk-GX3QJX7X.js.map} +0 -0
- /package/dist/{chunk-ETEGV2NG.js.map → chunk-H5G4N5UL.js.map} +0 -0
- /package/dist/{chunk-CZC4FIVH.js.map → chunk-IJXJGQUY.js.map} +0 -0
- /package/dist/{chunk-D2SKFK4W.js.map → chunk-JIZ7B6FX.js.map} +0 -0
- /package/dist/{chunk-TZGM6BXE.js.map → chunk-NTBGFI5Q.js.map} +0 -0
- /package/dist/{chunk-3BKFXSHM.js.map → chunk-OIBSPO6Q.js.map} +0 -0
- /package/dist/{chunk-6YLKVLI4.js.map → chunk-P3XQMXIW.js.map} +0 -0
- /package/dist/{chunk-VYWHIQHX.js.map → chunk-P4QFJ7OX.js.map} +0 -0
- /package/dist/{chunk-TOBIDJ3V.js.map → chunk-PPZTSOSH.js.map} +0 -0
- /package/dist/{chunk-XFQMSO3R.js.map → chunk-PQCKQKKP.js.map} +0 -0
- /package/dist/{chunk-Y3CGQUCQ.js.map → chunk-Q4L2DXA4.js.map} +0 -0
- /package/dist/{chunk-YKEBDGCK.js.map → chunk-QWI4VF5L.js.map} +0 -0
- /package/dist/{chunk-JF7YUXZX.js.map → chunk-R3ZNOB3V.js.map} +0 -0
- /package/dist/{chunk-6QBCTIKD.js.map → chunk-RYJ2VU7E.js.map} +0 -0
- /package/dist/{chunk-V24NAR5C.js.map → chunk-RYOQ3WJR.js.map} +0 -0
- /package/dist/{chunk-ZYL6RNBZ.js.map → chunk-SJGNFNFT.js.map} +0 -0
- /package/dist/{chunk-ZHVVLJFQ.js.map → chunk-SQ35C5SD.js.map} +0 -0
- /package/dist/{chunk-ISF7BEHM.js.map → chunk-YUPUHMWP.js.map} +0 -0
- /package/dist/{cli-circuit-breaker-AR6SXY4G.js.map → cli-circuit-breaker-YKY7NCQ5.js.map} +0 -0
- /package/dist/{composite-router-NQ4UCMV6.js.map → composite-router-63QDM6CQ.js.map} +0 -0
- /package/dist/{consensus-vote-ILSS373K.js.map → consensus-vote-C7QTJJH7.js.map} +0 -0
- /package/dist/{context-retriever-CCGMXTGJ.js.map → context-retriever-DIKQ7QZA.js.map} +0 -0
- /package/dist/{doctor-deep-VMTFQG7N.js.map → doctor-deep-JVUEAUAG.js.map} +0 -0
- /package/dist/{doctor-live-IAQOG6LI.js.map → doctor-live-CT2SKNLI.js.map} +0 -0
- /package/dist/{expert-bridge-JOM5P4I4.js.map → expert-bridge-G5WXRNUH.js.map} +0 -0
- /package/dist/{factory-6A6TGK6D.js.map → factory-72QUNWLV.js.map} +0 -0
- /package/dist/{factory-MYQRDKOJ.js.map → factory-LYRONJ3P.js.map} +0 -0
- /package/dist/{improvement-review-CFBMX6BL.js.map → improvement-review-CJMYGUDM.js.map} +0 -0
- /package/dist/{init-opencode-J7GUKZF4.js.map → init-opencode-UATS6Q6W.js.map} +0 -0
- /package/dist/{issue-triage-T3L7CAUV.js.map → issue-triage-CZWWJSOT.js.map} +0 -0
- /package/dist/{pr-reviewer-helpers-XMTT5K4E.js.map → pr-reviewer-helpers-OLEK46AR.js.map} +0 -0
- /package/dist/{registry-command-5QPDC5SH.js.map → registry-command-FKRZFXYQ.js.map} +0 -0
- /package/dist/{repo-security-plan-WQG7G4H6.js.map → repo-security-plan-BULZVX3A.js.map} +0 -0
- /package/dist/{research-helpers-synthesize-6FPLB3UK.js.map → research-helpers-synthesize-LTMSKVUB.js.map} +0 -0
- /package/dist/{routing-memory-HNZRMLXC.js.map → routing-memory-H7DT3HVY.js.map} +0 -0
- /package/dist/{session-memory-SXYFTZYM.js.map → session-memory-UTPN4MCS.js.map} +0 -0
- /package/dist/{setup-command-X7EJ7LBU.js.map → setup-command-TGGSIV6F.js.map} +0 -0
- /package/dist/{setup-config-4UPPIMTI.js.map → setup-config-WIXJT5YV.js.map} +0 -0
- /package/dist/{setup-custom-api-U5WEZRQO.js.map → setup-custom-api-36BFRFWO.js.map} +0 -0
- /package/dist/{tool-memory-BT7VS5N5.js.map → tool-memory-YQTO4WUG.js.map} +0 -0
- /package/dist/{unified-registry-L2T5UJHQ.js.map → unified-registry-N2BQJSLK.js.map} +0 -0
- /package/dist/{weather-report-2T3OIAJS.js.map → weather-report-AOX6RULO.js.map} +0 -0
|
@@ -2623,7 +2623,7 @@ function setDefaultRegistry(registry) {
|
|
|
2623
2623
|
}
|
|
2624
2624
|
async function reloadDefaultRegistry() {
|
|
2625
2625
|
globalRegistry = buildDefaultRegistry();
|
|
2626
|
-
const { resetGlobalRegistry } = await import("./unified-registry-
|
|
2626
|
+
const { resetGlobalRegistry } = await import("./unified-registry-N2BQJSLK.js");
|
|
2627
2627
|
resetGlobalRegistry();
|
|
2628
2628
|
return globalRegistry;
|
|
2629
2629
|
}
|
|
@@ -2828,6 +2828,10 @@ function modelSupportsAll(modelId, requirements) {
|
|
|
2828
2828
|
return meetsContext && includesAll(model.outputModalities, requirements.outputModalities) && includesAll(model.inputModalities, requirements.inputModalities) && includesAll(model.toolCapabilities, requirements.toolCapabilities) && includesAll(model.specialFeatures, requirements.specialFeatures);
|
|
2829
2829
|
}
|
|
2830
2830
|
|
|
2831
|
+
// src/core/price-basis.ts
|
|
2832
|
+
import { z as z3 } from "zod";
|
|
2833
|
+
var PriceBasisSchema = z3.enum(["list", "unknown"]);
|
|
2834
|
+
|
|
2831
2835
|
// src/core/trace-pricing.ts
|
|
2832
2836
|
function toPricing(pricing) {
|
|
2833
2837
|
if (pricing === void 0) return void 0;
|
|
@@ -3328,7 +3332,7 @@ function formatPercentage(value, decimals = 0) {
|
|
|
3328
3332
|
|
|
3329
3333
|
// src/core/artifact.ts
|
|
3330
3334
|
import { randomUUID as randomUUID2 } from "crypto";
|
|
3331
|
-
import { z as
|
|
3335
|
+
import { z as z4 } from "zod";
|
|
3332
3336
|
var ArtifactType = {
|
|
3333
3337
|
/** Planning documents and task breakdowns */
|
|
3334
3338
|
PLAN: "plan",
|
|
@@ -3341,30 +3345,30 @@ var ArtifactType = {
|
|
|
3341
3345
|
/** Intent declarations for policy authorization */
|
|
3342
3346
|
INTENT: "intent"
|
|
3343
3347
|
};
|
|
3344
|
-
var ArtifactTypeSchema =
|
|
3348
|
+
var ArtifactTypeSchema = z4.enum([
|
|
3345
3349
|
ArtifactType.PLAN,
|
|
3346
3350
|
ArtifactType.ANALYSIS,
|
|
3347
3351
|
ArtifactType.DECISION,
|
|
3348
3352
|
ArtifactType.RESULT,
|
|
3349
3353
|
ArtifactType.INTENT
|
|
3350
3354
|
]);
|
|
3351
|
-
var ArtifactMetadataSchema =
|
|
3352
|
-
createdAt:
|
|
3353
|
-
createdBy:
|
|
3354
|
-
parentId:
|
|
3355
|
-
taskId:
|
|
3356
|
-
traceId:
|
|
3355
|
+
var ArtifactMetadataSchema = z4.object({
|
|
3356
|
+
createdAt: z4.iso.datetime({ message: "createdAt must be ISO 8601 format" }),
|
|
3357
|
+
createdBy: z4.string().min(1, "createdBy is required"),
|
|
3358
|
+
parentId: z4.uuid().optional(),
|
|
3359
|
+
taskId: z4.string().min(1, "taskId is required"),
|
|
3360
|
+
traceId: z4.string().optional()
|
|
3357
3361
|
});
|
|
3358
3362
|
function createArtifactSchema(dataSchema) {
|
|
3359
|
-
return
|
|
3360
|
-
id:
|
|
3363
|
+
return z4.object({
|
|
3364
|
+
id: z4.uuid(),
|
|
3361
3365
|
type: ArtifactTypeSchema,
|
|
3362
|
-
schemaVersion:
|
|
3366
|
+
schemaVersion: z4.string().regex(/^\d+\.\d+\.\d+$/, "schemaVersion must be semver"),
|
|
3363
3367
|
data: dataSchema,
|
|
3364
3368
|
metadata: ArtifactMetadataSchema
|
|
3365
3369
|
});
|
|
3366
3370
|
}
|
|
3367
|
-
var BaseArtifactSchema = createArtifactSchema(
|
|
3371
|
+
var BaseArtifactSchema = createArtifactSchema(z4.unknown());
|
|
3368
3372
|
|
|
3369
3373
|
// src/core/metrics.ts
|
|
3370
3374
|
var MAX_RECENT_ERRORS = 1e3;
|
|
@@ -5340,8 +5344,8 @@ function estimateTokens(text) {
|
|
|
5340
5344
|
}
|
|
5341
5345
|
|
|
5342
5346
|
// src/cli-adapters/types-core.ts
|
|
5343
|
-
import { z as
|
|
5344
|
-
var ApiArmIdSchema =
|
|
5347
|
+
import { z as z5 } from "zod";
|
|
5348
|
+
var ApiArmIdSchema = z5.enum([
|
|
5345
5349
|
"api:anthropic",
|
|
5346
5350
|
"api:openai",
|
|
5347
5351
|
"api:google",
|
|
@@ -5530,7 +5534,7 @@ function createBudgetExceededError(budget, result, currentBudget) {
|
|
|
5530
5534
|
}
|
|
5531
5535
|
|
|
5532
5536
|
// src/config/task-specialization-types.ts
|
|
5533
|
-
import { z as
|
|
5537
|
+
import { z as z6 } from "zod";
|
|
5534
5538
|
var TASK_CATEGORIES = [
|
|
5535
5539
|
"architecture",
|
|
5536
5540
|
"code_generation",
|
|
@@ -5543,8 +5547,8 @@ var TASK_CATEGORIES = [
|
|
|
5543
5547
|
"devops",
|
|
5544
5548
|
"exploration"
|
|
5545
5549
|
];
|
|
5546
|
-
var TaskCategorySchema =
|
|
5547
|
-
var TaskSpecializationSchema =
|
|
5550
|
+
var TaskCategorySchema = z6.enum(TASK_CATEGORIES);
|
|
5551
|
+
var TaskSpecializationSchema = z6.object({
|
|
5548
5552
|
/** Task category identifier */
|
|
5549
5553
|
category: TaskCategorySchema,
|
|
5550
5554
|
/** Primary CLI recommendation */
|
|
@@ -5552,11 +5556,11 @@ var TaskSpecializationSchema = z5.object({
|
|
|
5552
5556
|
/** Secondary CLI fallback */
|
|
5553
5557
|
secondaryCli: CliNameSchema,
|
|
5554
5558
|
/** Why this CLI is preferred for this task type */
|
|
5555
|
-
reasoning:
|
|
5559
|
+
reasoning: z6.string(),
|
|
5556
5560
|
/** Keywords that trigger this category detection */
|
|
5557
|
-
keywords:
|
|
5561
|
+
keywords: z6.array(z6.string()).min(1),
|
|
5558
5562
|
/** Bonus score applied when this category matches (0-20) */
|
|
5559
|
-
bonus:
|
|
5563
|
+
bonus: z6.number().min(0).max(20)
|
|
5560
5564
|
});
|
|
5561
5565
|
|
|
5562
5566
|
// src/config/task-specialization.ts
|
|
@@ -6392,19 +6396,19 @@ var TopsisRouter = class {
|
|
|
6392
6396
|
};
|
|
6393
6397
|
|
|
6394
6398
|
// src/cli-adapters/budget-router-types.ts
|
|
6395
|
-
import { z as
|
|
6396
|
-
var BudgetConstraintSchema =
|
|
6397
|
-
maxTokens:
|
|
6398
|
-
maxCostUSD:
|
|
6399
|
-
maxLatencyMs:
|
|
6399
|
+
import { z as z7 } from "zod";
|
|
6400
|
+
var BudgetConstraintSchema = z7.object({
|
|
6401
|
+
maxTokens: z7.number().int().positive().optional(),
|
|
6402
|
+
maxCostUSD: z7.number().positive().optional(),
|
|
6403
|
+
maxLatencyMs: z7.number().positive().optional()
|
|
6400
6404
|
});
|
|
6401
|
-
var SessionBudgetSchema =
|
|
6402
|
-
totalTokens:
|
|
6403
|
-
totalCostUSD:
|
|
6404
|
-
usedTokens:
|
|
6405
|
-
usedCostUSD:
|
|
6406
|
-
startTime:
|
|
6407
|
-
sessionId:
|
|
6405
|
+
var SessionBudgetSchema = z7.object({
|
|
6406
|
+
totalTokens: z7.number().int().positive(),
|
|
6407
|
+
totalCostUSD: z7.number().positive(),
|
|
6408
|
+
usedTokens: z7.number().int().min(0).default(0),
|
|
6409
|
+
usedCostUSD: z7.number().min(0).default(0),
|
|
6410
|
+
startTime: z7.number().int().positive(),
|
|
6411
|
+
sessionId: z7.string().min(1)
|
|
6408
6412
|
});
|
|
6409
6413
|
var DEFAULT_LINUCB_CONFIG = {
|
|
6410
6414
|
numArms: 4,
|
|
@@ -6412,11 +6416,11 @@ var DEFAULT_LINUCB_CONFIG = {
|
|
|
6412
6416
|
alpha: 1,
|
|
6413
6417
|
lambda: 1
|
|
6414
6418
|
};
|
|
6415
|
-
var LinUCBConfigSchema =
|
|
6416
|
-
numArms:
|
|
6417
|
-
featureDim:
|
|
6418
|
-
alpha:
|
|
6419
|
-
lambda:
|
|
6419
|
+
var LinUCBConfigSchema = z7.object({
|
|
6420
|
+
numArms: z7.number().int().positive().default(4),
|
|
6421
|
+
featureDim: z7.number().int().positive().default(6),
|
|
6422
|
+
alpha: z7.number().positive().default(1),
|
|
6423
|
+
lambda: z7.number().positive().default(1)
|
|
6420
6424
|
});
|
|
6421
6425
|
|
|
6422
6426
|
// src/cli-adapters/linucb-math.ts
|
|
@@ -6816,7 +6820,7 @@ var LinUCBBandit = class {
|
|
|
6816
6820
|
import { randomUUID as randomUUID4 } from "crypto";
|
|
6817
6821
|
|
|
6818
6822
|
// src/cli-adapters/preference-router-types.ts
|
|
6819
|
-
import { z as
|
|
6823
|
+
import { z as z8 } from "zod";
|
|
6820
6824
|
var DEFAULT_PREFERENCE_ROUTER_CONFIG = {
|
|
6821
6825
|
strongModel: {
|
|
6822
6826
|
tier: "strong",
|
|
@@ -6837,24 +6841,24 @@ var DEFAULT_PREFERENCE_ROUTER_CONFIG = {
|
|
|
6837
6841
|
maxDataPoints: 1e4,
|
|
6838
6842
|
enableOnlineLearning: true
|
|
6839
6843
|
};
|
|
6840
|
-
var PreferenceRouterConfigSchema =
|
|
6841
|
-
strongModel:
|
|
6842
|
-
tier:
|
|
6843
|
-
cli:
|
|
6844
|
-
costPerMillionTokens:
|
|
6845
|
-
qualityBaseline:
|
|
6844
|
+
var PreferenceRouterConfigSchema = z8.object({
|
|
6845
|
+
strongModel: z8.object({
|
|
6846
|
+
tier: z8.literal("strong"),
|
|
6847
|
+
cli: z8.enum(["claude", "gemini", "codex", "opencode"]),
|
|
6848
|
+
costPerMillionTokens: z8.number().positive(),
|
|
6849
|
+
qualityBaseline: z8.number().min(0).max(1)
|
|
6846
6850
|
}),
|
|
6847
|
-
weakModel:
|
|
6848
|
-
tier:
|
|
6849
|
-
cli:
|
|
6850
|
-
costPerMillionTokens:
|
|
6851
|
-
qualityBaseline:
|
|
6851
|
+
weakModel: z8.object({
|
|
6852
|
+
tier: z8.literal("weak"),
|
|
6853
|
+
cli: z8.enum(["claude", "gemini", "codex", "opencode"]),
|
|
6854
|
+
costPerMillionTokens: z8.number().positive(),
|
|
6855
|
+
qualityBaseline: z8.number().min(0).max(1)
|
|
6852
6856
|
}),
|
|
6853
|
-
routingThreshold:
|
|
6854
|
-
minDataPoints:
|
|
6855
|
-
maxDataPoints:
|
|
6856
|
-
enableOnlineLearning:
|
|
6857
|
-
domainThresholds:
|
|
6857
|
+
routingThreshold: z8.number().min(0).max(1).default(0.5),
|
|
6858
|
+
minDataPoints: z8.number().int().positive().default(10),
|
|
6859
|
+
maxDataPoints: z8.number().int().positive().default(1e4),
|
|
6860
|
+
enableOnlineLearning: z8.boolean().default(true),
|
|
6861
|
+
domainThresholds: z8.record(z8.string(), z8.number().min(0).max(1)).optional()
|
|
6858
6862
|
});
|
|
6859
6863
|
|
|
6860
6864
|
// src/cli-adapters/preference-router-store.ts
|
|
@@ -7196,7 +7200,7 @@ function createPreferenceRouter(config, dataStore) {
|
|
|
7196
7200
|
}
|
|
7197
7201
|
|
|
7198
7202
|
// src/cli-adapters/zero-router-types.ts
|
|
7199
|
-
import { z as
|
|
7203
|
+
import { z as z9 } from "zod";
|
|
7200
7204
|
|
|
7201
7205
|
// src/cli-adapters/derive-tier-tables.ts
|
|
7202
7206
|
var CLI_ORDER = CLI_NAMES;
|
|
@@ -7324,7 +7328,7 @@ function deriveWeakClis() {
|
|
|
7324
7328
|
}
|
|
7325
7329
|
|
|
7326
7330
|
// src/cli-adapters/zero-router-types.ts
|
|
7327
|
-
var DifficultyDimensionSchema =
|
|
7331
|
+
var DifficultyDimensionSchema = z9.enum([
|
|
7328
7332
|
"reasoning",
|
|
7329
7333
|
"knowledge",
|
|
7330
7334
|
"creativity",
|
|
@@ -7338,17 +7342,17 @@ var DIFFICULTY_DIMENSIONS = [
|
|
|
7338
7342
|
"precision",
|
|
7339
7343
|
"context_length"
|
|
7340
7344
|
];
|
|
7341
|
-
var DifficultySpaceSchema =
|
|
7345
|
+
var DifficultySpaceSchema = z9.object({
|
|
7342
7346
|
/** Reasoning difficulty: logical complexity, multi-step inference (0-1) */
|
|
7343
|
-
reasoning:
|
|
7347
|
+
reasoning: z9.number().min(0).max(1),
|
|
7344
7348
|
/** Knowledge difficulty: domain expertise required (0-1) */
|
|
7345
|
-
knowledge:
|
|
7349
|
+
knowledge: z9.number().min(0).max(1),
|
|
7346
7350
|
/** Creativity difficulty: novel generation, open-endedness (0-1) */
|
|
7347
|
-
creativity:
|
|
7351
|
+
creativity: z9.number().min(0).max(1),
|
|
7348
7352
|
/** Precision difficulty: accuracy requirements, error tolerance (0-1) */
|
|
7349
|
-
precision:
|
|
7353
|
+
precision: z9.number().min(0).max(1),
|
|
7350
7354
|
/** Context length difficulty: amount of context to process (0-1) */
|
|
7351
|
-
context_length:
|
|
7355
|
+
context_length: z9.number().min(0).max(1)
|
|
7352
7356
|
});
|
|
7353
7357
|
var DEFAULT_DIFFICULTY_THRESHOLDS = {
|
|
7354
7358
|
easyUpperBound: 0.3,
|
|
@@ -7360,12 +7364,12 @@ var DEFAULT_DIFFICULTY_TO_TIER = {
|
|
|
7360
7364
|
hard: "powerful"
|
|
7361
7365
|
};
|
|
7362
7366
|
var DEFAULT_TIER_TO_CLIS = deriveTierToClis();
|
|
7363
|
-
var DifficultyWeightsSchema =
|
|
7364
|
-
reasoning:
|
|
7365
|
-
knowledge:
|
|
7366
|
-
creativity:
|
|
7367
|
-
precision:
|
|
7368
|
-
context_length:
|
|
7367
|
+
var DifficultyWeightsSchema = z9.object({
|
|
7368
|
+
reasoning: z9.number().min(0).max(1),
|
|
7369
|
+
knowledge: z9.number().min(0).max(1),
|
|
7370
|
+
creativity: z9.number().min(0).max(1),
|
|
7371
|
+
precision: z9.number().min(0).max(1),
|
|
7372
|
+
context_length: z9.number().min(0).max(1)
|
|
7369
7373
|
});
|
|
7370
7374
|
var DEFAULT_DIFFICULTY_WEIGHTS = {
|
|
7371
7375
|
reasoning: 0.3,
|
|
@@ -7374,29 +7378,29 @@ var DEFAULT_DIFFICULTY_WEIGHTS = {
|
|
|
7374
7378
|
precision: 0.25,
|
|
7375
7379
|
context_length: 0.15
|
|
7376
7380
|
};
|
|
7377
|
-
var ZeroRouterConfigSchema =
|
|
7381
|
+
var ZeroRouterConfigSchema = z9.object({
|
|
7378
7382
|
/** Difficulty thresholds for level classification */
|
|
7379
|
-
thresholds:
|
|
7380
|
-
easyUpperBound:
|
|
7381
|
-
hardLowerBound:
|
|
7383
|
+
thresholds: z9.object({
|
|
7384
|
+
easyUpperBound: z9.number().min(0).max(1),
|
|
7385
|
+
hardLowerBound: z9.number().min(0).max(1)
|
|
7382
7386
|
}).default(DEFAULT_DIFFICULTY_THRESHOLDS),
|
|
7383
7387
|
/** Weights for difficulty aggregation */
|
|
7384
7388
|
weights: DifficultyWeightsSchema.default(DEFAULT_DIFFICULTY_WEIGHTS),
|
|
7385
7389
|
/** Mapping from difficulty level to model tier */
|
|
7386
|
-
difficultyToTier:
|
|
7390
|
+
difficultyToTier: z9.record(z9.enum(["easy", "medium", "hard"]), z9.enum(["fast", "balanced", "powerful"])).default(DEFAULT_DIFFICULTY_TO_TIER),
|
|
7387
7391
|
/** Mapping from model tier to CLI preference order */
|
|
7388
|
-
tierToClis:
|
|
7389
|
-
|
|
7390
|
-
|
|
7392
|
+
tierToClis: z9.record(
|
|
7393
|
+
z9.enum(["fast", "balanced", "powerful"]),
|
|
7394
|
+
z9.array(z9.enum(["claude", "gemini", "codex", "opencode"]))
|
|
7391
7395
|
).default(DEFAULT_TIER_TO_CLIS),
|
|
7392
7396
|
/** Enable adaptive calibration from outcomes */
|
|
7393
|
-
enableCalibration:
|
|
7397
|
+
enableCalibration: z9.boolean().default(true),
|
|
7394
7398
|
/** Maximum outcomes to store for calibration */
|
|
7395
|
-
maxCalibrationOutcomes:
|
|
7399
|
+
maxCalibrationOutcomes: z9.number().int().positive().default(1e3),
|
|
7396
7400
|
/** Minimum outcomes before applying calibration adjustments */
|
|
7397
|
-
minCalibrationOutcomes:
|
|
7401
|
+
minCalibrationOutcomes: z9.number().int().positive().default(50),
|
|
7398
7402
|
/** Verbose logging */
|
|
7399
|
-
verbose:
|
|
7403
|
+
verbose: z9.boolean().default(false)
|
|
7400
7404
|
});
|
|
7401
7405
|
var DEFAULT_ZERO_ROUTER_CONFIG = {
|
|
7402
7406
|
thresholds: DEFAULT_DIFFICULTY_THRESHOLDS,
|
|
@@ -7920,16 +7924,16 @@ var ZeroRouter = class {
|
|
|
7920
7924
|
};
|
|
7921
7925
|
|
|
7922
7926
|
// src/cli-adapters/latency-tracker-types.ts
|
|
7923
|
-
import { z as
|
|
7924
|
-
var LatencyTrackerConfigSchema =
|
|
7927
|
+
import { z as z10 } from "zod";
|
|
7928
|
+
var LatencyTrackerConfigSchema = z10.object({
|
|
7925
7929
|
/** Maximum number of samples to keep per CLI (default: 100) */
|
|
7926
|
-
windowSize:
|
|
7930
|
+
windowSize: z10.number().int().positive().default(100),
|
|
7927
7931
|
/** Time-weighted decay factor (0-1, higher = more weight to recent) (default: 0.95) */
|
|
7928
|
-
decayFactor:
|
|
7932
|
+
decayFactor: z10.number().min(0).max(1).default(0.95),
|
|
7929
7933
|
/** Maximum age of samples in milliseconds before forced eviction (default: 3600000 = 1 hour) */
|
|
7930
|
-
maxSampleAgeMs:
|
|
7934
|
+
maxSampleAgeMs: z10.number().int().positive().default(36e5),
|
|
7931
7935
|
/** Percentiles to calculate (default: [50, 95, 99]) */
|
|
7932
|
-
percentiles:
|
|
7936
|
+
percentiles: z10.array(z10.number().min(0).max(100)).default([50, 95, 99])
|
|
7933
7937
|
});
|
|
7934
7938
|
var EMPTY_LATENCY_STATS = {
|
|
7935
7939
|
count: 0,
|
|
@@ -8164,19 +8168,19 @@ var LatencyTracker = class {
|
|
|
8164
8168
|
};
|
|
8165
8169
|
|
|
8166
8170
|
// src/cli-adapters/routing/router-stage.ts
|
|
8167
|
-
import { z as
|
|
8168
|
-
var StageConfigSchema =
|
|
8169
|
-
enabled:
|
|
8170
|
-
priority:
|
|
8171
|
-
options:
|
|
8171
|
+
import { z as z11 } from "zod";
|
|
8172
|
+
var StageConfigSchema = z11.object({
|
|
8173
|
+
enabled: z11.boolean().default(true),
|
|
8174
|
+
priority: z11.number().int().min(0).max(100).default(50),
|
|
8175
|
+
options: z11.record(z11.string(), z11.unknown()).optional()
|
|
8172
8176
|
});
|
|
8173
|
-
var RoutingOutcomeSchema =
|
|
8177
|
+
var RoutingOutcomeSchema = z11.object({
|
|
8174
8178
|
selectedCli: CliNameSchema,
|
|
8175
|
-
task:
|
|
8176
|
-
success:
|
|
8177
|
-
qualityScore:
|
|
8178
|
-
latencyMs:
|
|
8179
|
-
tokensUsed:
|
|
8179
|
+
task: z11.string(),
|
|
8180
|
+
success: z11.boolean(),
|
|
8181
|
+
qualityScore: z11.number().min(0).max(1).optional(),
|
|
8182
|
+
latencyMs: z11.number().int().positive().optional(),
|
|
8183
|
+
tokensUsed: z11.number().int().positive().optional()
|
|
8180
8184
|
});
|
|
8181
8185
|
function createRoutingContext(task, availableClis = ["claude", "gemini", "codex", "opencode"], metadata) {
|
|
8182
8186
|
return {
|
|
@@ -9675,10 +9679,10 @@ function createPersistentDistillerOrFallback(outcomeStore, logger15) {
|
|
|
9675
9679
|
}
|
|
9676
9680
|
|
|
9677
9681
|
// src/orchestration/outcomes/outcome-types.ts
|
|
9678
|
-
import { z as
|
|
9682
|
+
import { z as z12 } from "zod";
|
|
9679
9683
|
var logger7 = createLogger({ component: "outcome-error-taxonomy" });
|
|
9680
|
-
var OutcomeSourceSchema =
|
|
9681
|
-
var OutcomeFailureCategorySchema =
|
|
9684
|
+
var OutcomeSourceSchema = z12.enum(["delegate", "consensus", "manual"]);
|
|
9685
|
+
var OutcomeFailureCategorySchema = z12.enum([
|
|
9682
9686
|
"timeout",
|
|
9683
9687
|
"authentication",
|
|
9684
9688
|
"rate_limit",
|
|
@@ -9691,37 +9695,37 @@ var OutcomeFailureCategorySchema = z11.enum([
|
|
|
9691
9695
|
"generic",
|
|
9692
9696
|
"unknown"
|
|
9693
9697
|
]);
|
|
9694
|
-
var OutcomeCliSchema =
|
|
9695
|
-
var TaskOutcomeSchema =
|
|
9696
|
-
id:
|
|
9698
|
+
var OutcomeCliSchema = z12.union([CliNameSchema, ApiArmIdSchema, z12.literal("unknown")]);
|
|
9699
|
+
var TaskOutcomeSchema = z12.object({
|
|
9700
|
+
id: z12.string().min(1),
|
|
9697
9701
|
cli: OutcomeCliSchema,
|
|
9698
9702
|
category: TaskCategorySchema,
|
|
9699
|
-
model:
|
|
9700
|
-
success:
|
|
9701
|
-
durationMs:
|
|
9702
|
-
timestamp:
|
|
9703
|
-
qualitySignals:
|
|
9703
|
+
model: z12.string().min(1),
|
|
9704
|
+
success: z12.boolean(),
|
|
9705
|
+
durationMs: z12.number().nonnegative(),
|
|
9706
|
+
timestamp: z12.string().min(1),
|
|
9707
|
+
qualitySignals: z12.array(z12.string()).optional(),
|
|
9704
9708
|
failureCategory: OutcomeFailureCategorySchema.optional(),
|
|
9705
|
-
errorMessage:
|
|
9709
|
+
errorMessage: z12.string().max(500).optional(),
|
|
9706
9710
|
source: OutcomeSourceSchema,
|
|
9707
9711
|
/** Whether this outcome came from a triage-initiated retry (#1506). */
|
|
9708
|
-
wasRetried:
|
|
9712
|
+
wasRetried: z12.boolean().optional(),
|
|
9709
9713
|
/** Triage action taken on the failure (#1506). */
|
|
9710
|
-
triageAction:
|
|
9714
|
+
triageAction: z12.string().max(30).optional(),
|
|
9711
9715
|
/** Routing stage that selected this CLI (#1785). */
|
|
9712
|
-
routingStage:
|
|
9716
|
+
routingStage: z12.string().max(50).optional(),
|
|
9713
9717
|
/** Number of retry attempts before this outcome (#1785). */
|
|
9714
|
-
retryCount:
|
|
9718
|
+
retryCount: z12.number().int().nonnegative().optional(),
|
|
9715
9719
|
/** Vendor resolved from `model` via ModelRegistry at write time (#2548). */
|
|
9716
|
-
vendor:
|
|
9720
|
+
vendor: z12.string().min(1).max(40).optional(),
|
|
9717
9721
|
/** Family resolved from `model` via ModelRegistry at write time (#2548). */
|
|
9718
|
-
family:
|
|
9722
|
+
family: z12.string().min(1).max(80).optional(),
|
|
9719
9723
|
/**
|
|
9720
9724
|
* Voter role for `source: 'consensus'` outcomes (#2662) — `architect`,
|
|
9721
9725
|
* `security`, etc. Absent on non-consensus outcomes. Lets the
|
|
9722
9726
|
* stratified outcome report break results down by voter role.
|
|
9723
9727
|
*/
|
|
9724
|
-
voterRole:
|
|
9728
|
+
voterRole: z12.string().min(1).max(40).optional(),
|
|
9725
9729
|
/**
|
|
9726
9730
|
* Baseline this outcome forked from (#2697 / Epic F follow-up to #2665).
|
|
9727
9731
|
* Set on outcomes recorded inside a fork-then-merge graph branch so
|
|
@@ -9730,27 +9734,27 @@ var TaskOutcomeSchema = z11.object({
|
|
|
9730
9734
|
* cohort. Free-form string (caller-assigned); typically the parent
|
|
9731
9735
|
* node's `executionId` or `taskId`.
|
|
9732
9736
|
*/
|
|
9733
|
-
baselineId:
|
|
9737
|
+
baselineId: z12.string().min(1).max(64).optional(),
|
|
9734
9738
|
/**
|
|
9735
9739
|
* Distributed trace id correlating this outcome across the pipeline (#3146).
|
|
9736
9740
|
* Optional + backward-compatible: older JSONL records without it hydrate fine.
|
|
9737
9741
|
*/
|
|
9738
|
-
traceId:
|
|
9742
|
+
traceId: z12.string().min(1).max(128).optional(),
|
|
9739
9743
|
/** Request id correlating this outcome to its originating invocation (#3146). */
|
|
9740
|
-
requestId:
|
|
9744
|
+
requestId: z12.string().min(1).max(128).optional()
|
|
9741
9745
|
});
|
|
9742
|
-
var OutcomeQuerySchema =
|
|
9746
|
+
var OutcomeQuerySchema = z12.object({
|
|
9743
9747
|
cli: OutcomeCliSchema.optional(),
|
|
9744
9748
|
category: TaskCategorySchema.optional(),
|
|
9745
9749
|
source: OutcomeSourceSchema.optional(),
|
|
9746
|
-
success:
|
|
9750
|
+
success: z12.boolean().optional(),
|
|
9747
9751
|
failureCategory: OutcomeFailureCategorySchema.optional(),
|
|
9748
|
-
since:
|
|
9749
|
-
limit:
|
|
9752
|
+
since: z12.string().optional(),
|
|
9753
|
+
limit: z12.number().int().positive().optional(),
|
|
9750
9754
|
/** Exclude outcomes with any of these quality signals (#1680). */
|
|
9751
|
-
excludeQualitySignals:
|
|
9755
|
+
excludeQualitySignals: z12.array(z12.string()).optional(),
|
|
9752
9756
|
/** Restrict to outcomes recorded against a specific baseline (#2697). */
|
|
9753
|
-
baselineId:
|
|
9757
|
+
baselineId: z12.string().min(1).max(64).optional()
|
|
9754
9758
|
});
|
|
9755
9759
|
var TIMEOUT_PATTERNS = ["timeout", "timed out", "deadline exceeded", "socket hang up", "aborted"];
|
|
9756
9760
|
var AUTH_PATTERNS = [
|
|
@@ -10400,52 +10404,52 @@ function runWarmUp(logger15) {
|
|
|
10400
10404
|
}
|
|
10401
10405
|
|
|
10402
10406
|
// src/cli-adapters/composite-router-types.ts
|
|
10403
|
-
import { z as
|
|
10404
|
-
var CompositeRouterConfigSchema =
|
|
10407
|
+
import { z as z13 } from "zod";
|
|
10408
|
+
var CompositeRouterConfigSchema = z13.object({
|
|
10405
10409
|
/** Enable confidence cascade stage (default: false) (Issue #755, ADR-0005) */
|
|
10406
|
-
enableConfidenceCascade:
|
|
10410
|
+
enableConfidenceCascade: z13.boolean().default(false),
|
|
10407
10411
|
/** Enable budget filtering stage (default: true) */
|
|
10408
|
-
enableBudgetFilter:
|
|
10412
|
+
enableBudgetFilter: z13.boolean().default(true),
|
|
10409
10413
|
/** Enable capability match stage (default: false) (Issue #755, ADR-0005) */
|
|
10410
|
-
enableCapabilityMatch:
|
|
10414
|
+
enableCapabilityMatch: z13.boolean().default(false),
|
|
10411
10415
|
/** Enable ZeroRouter difficulty-based routing stage (default: true) (Issue #473) */
|
|
10412
|
-
enableZeroRouter:
|
|
10416
|
+
enableZeroRouter: z13.boolean().default(true),
|
|
10413
10417
|
/** Enable preference-trained routing stage (default: false) */
|
|
10414
|
-
enablePreferenceRouting:
|
|
10418
|
+
enablePreferenceRouting: z13.boolean().default(false),
|
|
10415
10419
|
/** Enable TOPSIS ranking stage (default: true) */
|
|
10416
|
-
enableTopsisRanking:
|
|
10420
|
+
enableTopsisRanking: z13.boolean().default(true),
|
|
10417
10421
|
/** Enable LinUCB selection stage (default: true) */
|
|
10418
|
-
enableLinUCBSelection:
|
|
10422
|
+
enableLinUCBSelection: z13.boolean().default(true),
|
|
10419
10423
|
/** Enable quality constraint stage (default: false) (Issue #755, ADR-0005) */
|
|
10420
|
-
enableQualityConstraint:
|
|
10424
|
+
enableQualityConstraint: z13.boolean().default(false),
|
|
10421
10425
|
/** Enable resource strategy stage for budget-aware oscillation (default: true) (Issue #998) */
|
|
10422
|
-
enableResourceStrategy:
|
|
10426
|
+
enableResourceStrategy: z13.boolean().default(true),
|
|
10423
10427
|
/** Enable strategy distillation for learned routing rules (default: false) (Issue #999) */
|
|
10424
|
-
enableStrategyDistillation:
|
|
10428
|
+
enableStrategyDistillation: z13.boolean().default(false),
|
|
10425
10429
|
/** Enable latency tracking for routing decisions (default: true) (Issue #361) */
|
|
10426
|
-
enableLatencyTracking:
|
|
10430
|
+
enableLatencyTracking: z13.boolean().default(true),
|
|
10427
10431
|
/** Enable routing memory for learned routing (default: false) (Issue #463, #461) */
|
|
10428
|
-
enableRoutingMemory:
|
|
10432
|
+
enableRoutingMemory: z13.boolean().default(false),
|
|
10429
10433
|
/** Enable KNN experience-based routing (default: false) (arXiv:2505.12601) */
|
|
10430
|
-
enableKnnRouting:
|
|
10434
|
+
enableKnnRouting: z13.boolean().default(false),
|
|
10431
10435
|
/** Weight for latency score in final routing (0-1, default: 0.2) */
|
|
10432
|
-
latencyScoreWeight:
|
|
10436
|
+
latencyScoreWeight: z13.number().min(0).max(1).default(0.2),
|
|
10433
10437
|
/** Budget constraints (optional) */
|
|
10434
|
-
budgetConstraints:
|
|
10435
|
-
maxTokens:
|
|
10436
|
-
maxCostUsd:
|
|
10437
|
-
maxLatencyMs:
|
|
10438
|
+
budgetConstraints: z13.object({
|
|
10439
|
+
maxTokens: z13.number().positive(),
|
|
10440
|
+
maxCostUsd: z13.number().positive(),
|
|
10441
|
+
maxLatencyMs: z13.number().positive(),
|
|
10438
10442
|
/** Per-task-class cost ceilings in USD, keyed by TaskCategory (#4196).
|
|
10439
10443
|
* Keys are validated against the TaskCategory enum (#4214) so a typo'd
|
|
10440
10444
|
* class fails config parsing instead of silently configuring nothing.
|
|
10441
10445
|
* Default: absent → no ceiling (OFF/unlimited). Enforced only under
|
|
10442
10446
|
* billingMode 'api'; missing candidate pricing fails CLOSED. */
|
|
10443
|
-
taskClassMaxCostUsd:
|
|
10447
|
+
taskClassMaxCostUsd: z13.partialRecord(TaskCategorySchema, z13.number().positive())
|
|
10444
10448
|
}).partial().optional(),
|
|
10445
10449
|
/** LinUCB exploration parameter (default: 1.0) */
|
|
10446
|
-
linucbAlpha:
|
|
10450
|
+
linucbAlpha: z13.number().positive().default(1),
|
|
10447
10451
|
/** Billing mode: 'plan' zeroes cost weight, 'api' preserves current behavior (default: 'plan') */
|
|
10448
|
-
billingMode:
|
|
10452
|
+
billingMode: z13.enum(["plan", "api"]).default("plan"),
|
|
10449
10453
|
/**
|
|
10450
10454
|
* Enable capacity-aware routing exclusion — remove a candidate whose adapter
|
|
10451
10455
|
* reports *measurably* exhausted capacity (default: true) (#807, #4373).
|
|
@@ -10457,11 +10461,11 @@ var CompositeRouterConfigSchema = z12.object({
|
|
|
10457
10461
|
* to "exclude" to match #4351 criterion 3; nothing can depend on the former,
|
|
10458
10462
|
* since no deprioritization was ever implemented.
|
|
10459
10463
|
*/
|
|
10460
|
-
enableCapacityBalancing:
|
|
10464
|
+
enableCapacityBalancing: z13.boolean().default(true),
|
|
10461
10465
|
/** Maximum routing decision time in ms (default: 50) */
|
|
10462
|
-
maxDecisionTimeMs:
|
|
10466
|
+
maxDecisionTimeMs: z13.number().positive().default(50),
|
|
10463
10467
|
/** Minimum preference data points before using learned routing (default: 10) */
|
|
10464
|
-
preferenceMinDataPoints:
|
|
10468
|
+
preferenceMinDataPoints: z13.number().int().positive().default(10)
|
|
10465
10469
|
});
|
|
10466
10470
|
var DEFAULT_COMPOSITE_CONFIG = {
|
|
10467
10471
|
enableConfidenceCascade: false,
|
|
@@ -10858,12 +10862,12 @@ All defaults can be overridden via environment variables using the NEXUS_ prefix
|
|
|
10858
10862
|
}
|
|
10859
10863
|
|
|
10860
10864
|
// src/mcp/tools/weather-report-types.ts
|
|
10861
|
-
import { z as
|
|
10862
|
-
var WeatherReportInputSchema =
|
|
10865
|
+
import { z as z14 } from "zod";
|
|
10866
|
+
var WeatherReportInputSchema = z14.object({
|
|
10863
10867
|
/** Filter by CLI name. */
|
|
10864
|
-
cli:
|
|
10868
|
+
cli: z14.enum(CLI_NAMES).optional().describe("Filter by CLI"),
|
|
10865
10869
|
/** Filter by task category. */
|
|
10866
|
-
category:
|
|
10870
|
+
category: z14.enum([
|
|
10867
10871
|
"architecture",
|
|
10868
10872
|
"code_generation",
|
|
10869
10873
|
"code_review",
|
|
@@ -10876,22 +10880,22 @@ var WeatherReportInputSchema = z13.object({
|
|
|
10876
10880
|
"exploration"
|
|
10877
10881
|
]).optional().describe("Filter by task category"),
|
|
10878
10882
|
/** Include adaptive routing bonus data. */
|
|
10879
|
-
includeAdaptive:
|
|
10883
|
+
includeAdaptive: z14.boolean().optional().default(true).describe("Include adaptive routing bonuses (default: true)")
|
|
10880
10884
|
});
|
|
10881
10885
|
var DEFAULT_OUTCOME_LOOKBACK_MS = 7 * 24 * 60 * 60 * 1e3;
|
|
10882
|
-
var WeatherReportConfigSchema =
|
|
10886
|
+
var WeatherReportConfigSchema = z14.object({
|
|
10883
10887
|
/** Minimum observations before adjusting bonuses (lowered for faster activation). */
|
|
10884
|
-
coldStartThreshold:
|
|
10888
|
+
coldStartThreshold: z14.number().int().min(1).max(1e3).default(3),
|
|
10885
10889
|
/** Exploration rate: fraction of random routing (0.0-1.0). */
|
|
10886
|
-
explorationRate:
|
|
10890
|
+
explorationRate: z14.number().min(0).max(1).default(0.1),
|
|
10887
10891
|
/** Max adaptive bonus adjustment (+/-). */
|
|
10888
|
-
maxBonusAdjustment:
|
|
10892
|
+
maxBonusAdjustment: z14.number().min(0).max(20).default(10),
|
|
10889
10893
|
/**
|
|
10890
10894
|
* Lookback window for outcome queries (ms). Only outcomes within this
|
|
10891
10895
|
* window are used for adaptive bonuses. Falls back to all history if
|
|
10892
10896
|
* the window has fewer samples than coldStartThreshold. Default: 7 days.
|
|
10893
10897
|
*/
|
|
10894
|
-
outcomeLookbackMs:
|
|
10898
|
+
outcomeLookbackMs: z14.number().int().min(0).default(DEFAULT_OUTCOME_LOOKBACK_MS)
|
|
10895
10899
|
});
|
|
10896
10900
|
function createDefaultWeatherConfig() {
|
|
10897
10901
|
return WeatherReportConfigSchema.parse({});
|
|
@@ -11307,47 +11311,47 @@ function createMetricsMiddleware() {
|
|
|
11307
11311
|
import { randomBytes as randomBytes3 } from "crypto";
|
|
11308
11312
|
|
|
11309
11313
|
// src/config/defaults-types.ts
|
|
11310
|
-
import { z as
|
|
11314
|
+
import { z as z15 } from "zod";
|
|
11311
11315
|
function isKnownCliName(cli) {
|
|
11312
11316
|
return cli === "claude" || cli === "gemini" || cli === "codex" || cli === "opencode" || cli === "default";
|
|
11313
11317
|
}
|
|
11314
|
-
var positiveInt =
|
|
11315
|
-
var nonNegativeInt =
|
|
11316
|
-
var durationMs =
|
|
11317
|
-
var TimeoutProfileSchema =
|
|
11318
|
+
var positiveInt = z15.number().int().positive();
|
|
11319
|
+
var nonNegativeInt = z15.number().int().nonnegative();
|
|
11320
|
+
var durationMs = z15.number().int().positive().describe("Duration in milliseconds");
|
|
11321
|
+
var TimeoutProfileSchema = z15.object({
|
|
11318
11322
|
simple: durationMs.describe("Timeout for simple tasks"),
|
|
11319
11323
|
standard: durationMs.describe("Timeout for standard tasks"),
|
|
11320
11324
|
complex: durationMs.describe("Timeout for complex tasks")
|
|
11321
11325
|
});
|
|
11322
|
-
var RetryDefaultsSchema =
|
|
11326
|
+
var RetryDefaultsSchema = z15.object({
|
|
11323
11327
|
maxRetries: nonNegativeInt.max(10).describe("Maximum retry attempts"),
|
|
11324
11328
|
baseDelayMs: durationMs.describe("Base delay between retries"),
|
|
11325
11329
|
maxDelayMs: durationMs.describe("Maximum delay between retries"),
|
|
11326
|
-
jitterFactor:
|
|
11330
|
+
jitterFactor: z15.number().min(0).max(1).describe("Jitter factor (0-1)")
|
|
11327
11331
|
});
|
|
11328
|
-
var RateLimitDefaultsSchema =
|
|
11332
|
+
var RateLimitDefaultsSchema = z15.object({
|
|
11329
11333
|
requestsPerMinute: positiveInt.max(1e3).describe("Max requests per minute"),
|
|
11330
|
-
enabled:
|
|
11334
|
+
enabled: z15.boolean().describe("Whether rate limiting is enabled"),
|
|
11331
11335
|
maxConcurrent: positiveInt.max(100).describe("Max concurrent requests"),
|
|
11332
11336
|
capacity: positiveInt.describe("Token bucket capacity"),
|
|
11333
11337
|
refillRate: positiveInt.describe("Token refill rate"),
|
|
11334
11338
|
refillIntervalMs: durationMs.describe("Token refill interval")
|
|
11335
11339
|
});
|
|
11336
|
-
var CircuitBreakerDefaultsSchema =
|
|
11337
|
-
failureThreshold:
|
|
11340
|
+
var CircuitBreakerDefaultsSchema = z15.object({
|
|
11341
|
+
failureThreshold: z15.number().int().min(1).max(100).describe("Failures before opening"),
|
|
11338
11342
|
resetTimeoutMs: durationMs.describe("Time before attempting reset"),
|
|
11339
|
-
halfOpenSuccessThreshold:
|
|
11340
|
-
countTimeoutsAsFailures:
|
|
11341
|
-
countAuthFailuresAsFailures:
|
|
11342
|
-
countRateLimitsAsFailures:
|
|
11343
|
+
halfOpenSuccessThreshold: z15.number().int().min(1).max(10).describe("Successes to close"),
|
|
11344
|
+
countTimeoutsAsFailures: z15.boolean().describe("Count timeouts as failures"),
|
|
11345
|
+
countAuthFailuresAsFailures: z15.boolean().describe("Count auth failures as failures"),
|
|
11346
|
+
countRateLimitsAsFailures: z15.boolean().describe("Count rate limit errors as failures"),
|
|
11343
11347
|
halfOpenMaxRequests: positiveInt.describe("Max requests in half-open state")
|
|
11344
11348
|
});
|
|
11345
|
-
var ToolRateLimitConfigSchema =
|
|
11349
|
+
var ToolRateLimitConfigSchema = z15.object({
|
|
11346
11350
|
capacity: positiveInt.describe("Token bucket capacity"),
|
|
11347
11351
|
refillRate: positiveInt.describe("Token refill rate"),
|
|
11348
11352
|
refillIntervalMs: durationMs.describe("Token refill interval")
|
|
11349
11353
|
});
|
|
11350
|
-
var TimeoutDefaultsSchema =
|
|
11354
|
+
var TimeoutDefaultsSchema = z15.object({
|
|
11351
11355
|
cliMs: durationMs.describe("Default CLI timeout"),
|
|
11352
11356
|
// cliSimpleMs / cliComplexMs removed in #4180 — see config/defaults.ts.
|
|
11353
11357
|
apiMs: durationMs.describe("Default API timeout"),
|
|
@@ -11960,7 +11964,7 @@ function aggregateDecisionCosts(records, windowMs) {
|
|
|
11960
11964
|
}
|
|
11961
11965
|
|
|
11962
11966
|
// src/observability/decision-cost-store.ts
|
|
11963
|
-
import { z as
|
|
11967
|
+
import { z as z17 } from "zod";
|
|
11964
11968
|
|
|
11965
11969
|
// src/config/jsonl-store.ts
|
|
11966
11970
|
import { appendFileSync, existsSync as existsSync5, mkdirSync as mkdirSync2, readFileSync as readFileSync4, writeFileSync as writeFileSync2 } from "fs";
|
|
@@ -12095,38 +12099,40 @@ var JsonlStore = class {
|
|
|
12095
12099
|
};
|
|
12096
12100
|
|
|
12097
12101
|
// src/observability/decision-cost.ts
|
|
12098
|
-
import { z as
|
|
12102
|
+
import { z as z16 } from "zod";
|
|
12099
12103
|
var UNKNOWN_MODEL = "unknown";
|
|
12100
|
-
var DecisionCostSummarySchema =
|
|
12101
|
-
billingMode:
|
|
12102
|
-
voterCount:
|
|
12103
|
-
measuredVoters:
|
|
12104
|
-
unmeasuredVoters:
|
|
12105
|
-
totalInputTokens:
|
|
12106
|
-
totalOutputTokens:
|
|
12107
|
-
totalTokens:
|
|
12108
|
-
totalCostUsd:
|
|
12109
|
-
|
|
12110
|
-
|
|
12111
|
-
|
|
12112
|
-
|
|
12113
|
-
|
|
12114
|
-
|
|
12115
|
-
|
|
12116
|
-
|
|
12117
|
-
|
|
12118
|
-
|
|
12119
|
-
|
|
12104
|
+
var DecisionCostSummarySchema = z16.object({
|
|
12105
|
+
billingMode: z16.enum(["plan", "api"]),
|
|
12106
|
+
voterCount: z16.number(),
|
|
12107
|
+
measuredVoters: z16.number(),
|
|
12108
|
+
unmeasuredVoters: z16.number(),
|
|
12109
|
+
totalInputTokens: z16.number(),
|
|
12110
|
+
totalOutputTokens: z16.number(),
|
|
12111
|
+
totalTokens: z16.number(),
|
|
12112
|
+
totalCostUsd: z16.number(),
|
|
12113
|
+
priceBasis: PriceBasisSchema.optional(),
|
|
12114
|
+
perVoter: z16.array(
|
|
12115
|
+
z16.object({
|
|
12116
|
+
role: z16.string(),
|
|
12117
|
+
model: z16.string(),
|
|
12118
|
+
inputTokens: z16.number(),
|
|
12119
|
+
outputTokens: z16.number(),
|
|
12120
|
+
totalTokens: z16.number(),
|
|
12121
|
+
cachedInputTokens: z16.number().optional(),
|
|
12122
|
+
cacheCreationInputTokens: z16.number().optional(),
|
|
12123
|
+
costUsd: z16.number(),
|
|
12124
|
+
unmeasured: z16.boolean(),
|
|
12125
|
+
priceBasis: PriceBasisSchema.optional()
|
|
12120
12126
|
})
|
|
12121
12127
|
),
|
|
12122
|
-
perModel:
|
|
12123
|
-
|
|
12124
|
-
model:
|
|
12125
|
-
voterCount:
|
|
12126
|
-
inputTokens:
|
|
12127
|
-
outputTokens:
|
|
12128
|
-
totalTokens:
|
|
12129
|
-
costUsd:
|
|
12128
|
+
perModel: z16.array(
|
|
12129
|
+
z16.object({
|
|
12130
|
+
model: z16.string(),
|
|
12131
|
+
voterCount: z16.number(),
|
|
12132
|
+
inputTokens: z16.number(),
|
|
12133
|
+
outputTokens: z16.number(),
|
|
12134
|
+
totalTokens: z16.number(),
|
|
12135
|
+
costUsd: z16.number()
|
|
12130
12136
|
})
|
|
12131
12137
|
)
|
|
12132
12138
|
});
|
|
@@ -12151,9 +12157,20 @@ function toVoterBreakdown(v, isPlan) {
|
|
|
12151
12157
|
...v.cachedInputTokens !== void 0 ? { cachedInputTokens: v.cachedInputTokens } : {},
|
|
12152
12158
|
...v.cacheCreationInputTokens !== void 0 ? { cacheCreationInputTokens: v.cacheCreationInputTokens } : {},
|
|
12153
12159
|
costUsd,
|
|
12154
|
-
unmeasured: !measured
|
|
12160
|
+
unmeasured: !measured,
|
|
12161
|
+
// Plan mode forced `costUsd` to 0, so this row's money figure rests on no
|
|
12162
|
+
// price — the same reasoning the decision total applies (#4406 review).
|
|
12163
|
+
// Echoing 'list' here would attribute a $0 to a rate that produced nothing,
|
|
12164
|
+
// and since `plan` is the DEFAULT billing mode that fiction would be on
|
|
12165
|
+
// most persisted rows. `billingMode` already explains the zero.
|
|
12166
|
+
...isPlan ? {} : basisField(v.priceBasis)
|
|
12155
12167
|
};
|
|
12156
12168
|
}
|
|
12169
|
+
function decisionPriceBasis(voters) {
|
|
12170
|
+
const stated = voters.filter((v) => v.priceBasis !== void 0);
|
|
12171
|
+
if (stated.length === 0) return void 0;
|
|
12172
|
+
return stated.some((v) => v.priceBasis === "list") ? "list" : "unknown";
|
|
12173
|
+
}
|
|
12157
12174
|
function rollupDecisionCost(voters, billingMode) {
|
|
12158
12175
|
const isPlan = billingMode === "plan";
|
|
12159
12176
|
const perVoter = [];
|
|
@@ -12186,10 +12203,16 @@ function rollupDecisionCost(voters, billingMode) {
|
|
|
12186
12203
|
totalOutputTokens,
|
|
12187
12204
|
totalTokens: totalInputTokens + totalOutputTokens,
|
|
12188
12205
|
totalCostUsd: roundUsd2(totalCostUsd),
|
|
12206
|
+
// Plan mode's $0 is pre-covered spend, not a priced figure — no basis to
|
|
12207
|
+
// report, so the field stays off rather than crediting a rate.
|
|
12208
|
+
...isPlan ? {} : basisField(decisionPriceBasis(voters)),
|
|
12189
12209
|
perVoter,
|
|
12190
12210
|
perModel
|
|
12191
12211
|
};
|
|
12192
12212
|
}
|
|
12213
|
+
function basisField(basis) {
|
|
12214
|
+
return basis === void 0 ? {} : { priceBasis: basis };
|
|
12215
|
+
}
|
|
12193
12216
|
function buildPerModelBreakdowns(modelAcc) {
|
|
12194
12217
|
return [...modelAcc.entries()].map(([model, a]) => ({
|
|
12195
12218
|
model,
|
|
@@ -12204,47 +12227,53 @@ function buildPerModelBreakdowns(modelAcc) {
|
|
|
12204
12227
|
}
|
|
12205
12228
|
|
|
12206
12229
|
// src/observability/decision-cost-store.ts
|
|
12207
|
-
var DecisionGateSchema =
|
|
12208
|
-
var VoterCostBreakdownSchema =
|
|
12209
|
-
role:
|
|
12210
|
-
model:
|
|
12211
|
-
inputTokens:
|
|
12212
|
-
outputTokens:
|
|
12213
|
-
totalTokens:
|
|
12230
|
+
var DecisionGateSchema = z17.enum(["consensus_vote", "pr_review"]);
|
|
12231
|
+
var VoterCostBreakdownSchema = z17.object({
|
|
12232
|
+
role: z17.string().min(1).max(64),
|
|
12233
|
+
model: z17.string().min(1).max(120),
|
|
12234
|
+
inputTokens: z17.number().int().nonnegative(),
|
|
12235
|
+
outputTokens: z17.number().int().nonnegative(),
|
|
12236
|
+
totalTokens: z17.number().int().nonnegative(),
|
|
12214
12237
|
// #4435 — optional: absent means the adapter reported no cache activity,
|
|
12215
12238
|
// which is a different claim from "zero cache tokens were used".
|
|
12216
|
-
cachedInputTokens:
|
|
12217
|
-
cacheCreationInputTokens:
|
|
12218
|
-
costUsd:
|
|
12219
|
-
unmeasured:
|
|
12239
|
+
cachedInputTokens: z17.number().int().nonnegative().optional(),
|
|
12240
|
+
cacheCreationInputTokens: z17.number().int().nonnegative().optional(),
|
|
12241
|
+
costUsd: z17.number().nonnegative(),
|
|
12242
|
+
unmeasured: z17.boolean(),
|
|
12243
|
+
// #4406 — optional: records written before the basis existed carry no
|
|
12244
|
+
// provenance at all, and absent must stay absent rather than becoming the
|
|
12245
|
+
// positive claim 'unknown'.
|
|
12246
|
+
priceBasis: PriceBasisSchema.optional()
|
|
12220
12247
|
});
|
|
12221
|
-
var ModelCostBreakdownSchema =
|
|
12222
|
-
model:
|
|
12223
|
-
voterCount:
|
|
12224
|
-
inputTokens:
|
|
12225
|
-
outputTokens:
|
|
12226
|
-
totalTokens:
|
|
12227
|
-
costUsd:
|
|
12248
|
+
var ModelCostBreakdownSchema = z17.object({
|
|
12249
|
+
model: z17.string().min(1).max(120),
|
|
12250
|
+
voterCount: z17.number().int().nonnegative(),
|
|
12251
|
+
inputTokens: z17.number().int().nonnegative(),
|
|
12252
|
+
outputTokens: z17.number().int().nonnegative(),
|
|
12253
|
+
totalTokens: z17.number().int().nonnegative(),
|
|
12254
|
+
costUsd: z17.number().nonnegative()
|
|
12228
12255
|
});
|
|
12229
|
-
var DecisionCostSummarySchema2 =
|
|
12230
|
-
billingMode:
|
|
12231
|
-
voterCount:
|
|
12232
|
-
measuredVoters:
|
|
12233
|
-
unmeasuredVoters:
|
|
12234
|
-
totalInputTokens:
|
|
12235
|
-
totalOutputTokens:
|
|
12236
|
-
totalTokens:
|
|
12237
|
-
totalCostUsd:
|
|
12238
|
-
|
|
12239
|
-
|
|
12256
|
+
var DecisionCostSummarySchema2 = z17.object({
|
|
12257
|
+
billingMode: z17.enum(["plan", "api"]),
|
|
12258
|
+
voterCount: z17.number().int().nonnegative(),
|
|
12259
|
+
measuredVoters: z17.number().int().nonnegative(),
|
|
12260
|
+
unmeasuredVoters: z17.number().int().nonnegative(),
|
|
12261
|
+
totalInputTokens: z17.number().int().nonnegative(),
|
|
12262
|
+
totalOutputTokens: z17.number().int().nonnegative(),
|
|
12263
|
+
totalTokens: z17.number().int().nonnegative(),
|
|
12264
|
+
totalCostUsd: z17.number().nonnegative(),
|
|
12265
|
+
// #4406 — optional for the same reason as the per-voter field above.
|
|
12266
|
+
priceBasis: PriceBasisSchema.optional(),
|
|
12267
|
+
perVoter: z17.array(VoterCostBreakdownSchema).readonly(),
|
|
12268
|
+
perModel: z17.array(ModelCostBreakdownSchema).readonly()
|
|
12240
12269
|
});
|
|
12241
|
-
var DecisionCostRecordSchema =
|
|
12270
|
+
var DecisionCostRecordSchema = z17.object({
|
|
12242
12271
|
/** Stable id for the decision (correlation id / jobId / minted decision id). */
|
|
12243
|
-
decisionId:
|
|
12272
|
+
decisionId: z17.string().min(1).max(160),
|
|
12244
12273
|
/** Which gate type incurred the cost. */
|
|
12245
12274
|
gate: DecisionGateSchema,
|
|
12246
12275
|
/** ISO 8601 timestamp the rollup was recorded. */
|
|
12247
|
-
timestamp:
|
|
12276
|
+
timestamp: z17.string().min(1).max(40),
|
|
12248
12277
|
/** The rolled-up cost summary. */
|
|
12249
12278
|
summary: DecisionCostSummarySchema2
|
|
12250
12279
|
});
|
|
@@ -12304,7 +12333,7 @@ var DecisionCostStore = class {
|
|
|
12304
12333
|
// src/orchestration/strategy-manifest.ts
|
|
12305
12334
|
import { existsSync as existsSync6, readFileSync as readFileSync5 } from "fs";
|
|
12306
12335
|
import { parse as parseYaml2 } from "yaml";
|
|
12307
|
-
import { z as
|
|
12336
|
+
import { z as z18 } from "zod";
|
|
12308
12337
|
var STRATEGY_MANIFEST_SCHEMA_VERSION = 1;
|
|
12309
12338
|
var EXECUTION_STRATEGY_NAMES = [
|
|
12310
12339
|
"single-shot",
|
|
@@ -12316,41 +12345,41 @@ var EXECUTION_STRATEGY_NAMES = [
|
|
|
12316
12345
|
"spec",
|
|
12317
12346
|
"research"
|
|
12318
12347
|
];
|
|
12319
|
-
var StrategyNameSchema =
|
|
12320
|
-
var AuthorityTierSchema =
|
|
12321
|
-
var PromotionEvidenceSchema =
|
|
12348
|
+
var StrategyNameSchema = z18.enum(EXECUTION_STRATEGY_NAMES);
|
|
12349
|
+
var AuthorityTierSchema = z18.enum(["observe", "suggest", "advisory", "enforce"]);
|
|
12350
|
+
var PromotionEvidenceSchema = z18.object({
|
|
12322
12351
|
/** The loop/strategy being promoted (manifest `id`). */
|
|
12323
|
-
loopId:
|
|
12352
|
+
loopId: z18.string().min(1),
|
|
12324
12353
|
/** Current tier before promotion. */
|
|
12325
12354
|
fromTier: AuthorityTierSchema,
|
|
12326
12355
|
/** Target tier; must be exactly one step up (checked by the gate). */
|
|
12327
12356
|
toTier: AuthorityTierSchema,
|
|
12328
12357
|
/** Number of independent, judged evaluations behind the metric. */
|
|
12329
|
-
evalN:
|
|
12358
|
+
evalN: z18.number().int().nonnegative(),
|
|
12330
12359
|
/** Precision on judged output (0–1); required for advisory+ promotions. */
|
|
12331
|
-
precision:
|
|
12360
|
+
precision: z18.number().min(0).max(1).optional(),
|
|
12332
12361
|
/** Recall (0–1); required for enforce promotions (missed-action cost). */
|
|
12333
|
-
recall:
|
|
12362
|
+
recall: z18.number().min(0).max(1).optional(),
|
|
12334
12363
|
/** The loop-specific promotion metric: name, value, and CI bounds. */
|
|
12335
|
-
primaryMetric:
|
|
12336
|
-
name:
|
|
12337
|
-
value:
|
|
12338
|
-
ci:
|
|
12364
|
+
primaryMetric: z18.object({
|
|
12365
|
+
name: z18.string().min(1),
|
|
12366
|
+
value: z18.number(),
|
|
12367
|
+
ci: z18.tuple([z18.number(), z18.number()])
|
|
12339
12368
|
}).strict(),
|
|
12340
12369
|
/** ISO-8601 duration of soak at the lower tier with no intervention. */
|
|
12341
|
-
soakDuration:
|
|
12370
|
+
soakDuration: z18.string().regex(/^P/, "soakDuration must be an ISO-8601 duration (e.g. P30D)"),
|
|
12342
12371
|
/** Confounders the primaryMetric controls for. */
|
|
12343
|
-
controlledFor:
|
|
12372
|
+
controlledFor: z18.array(z18.string()).optional(),
|
|
12344
12373
|
/** The recorded consensus_vote ref that ratifies the promotion. */
|
|
12345
|
-
ratificationVote:
|
|
12374
|
+
ratificationVote: z18.string().min(1),
|
|
12346
12375
|
/** Link to the measurement surface / report that produced the numbers. */
|
|
12347
|
-
evidenceUri:
|
|
12376
|
+
evidenceUri: z18.string().min(1)
|
|
12348
12377
|
}).strict();
|
|
12349
|
-
var PromotionEvidenceLedgerSchema =
|
|
12350
|
-
version:
|
|
12351
|
-
evidence:
|
|
12378
|
+
var PromotionEvidenceLedgerSchema = z18.object({
|
|
12379
|
+
version: z18.number().int().positive(),
|
|
12380
|
+
evidence: z18.array(PromotionEvidenceSchema)
|
|
12352
12381
|
}).strict();
|
|
12353
|
-
var LatencyClassSchema =
|
|
12382
|
+
var LatencyClassSchema = z18.enum([
|
|
12354
12383
|
"interactive",
|
|
12355
12384
|
"single-llm",
|
|
12356
12385
|
"multi-llm-panel",
|
|
@@ -12358,9 +12387,9 @@ var LatencyClassSchema = z17.enum([
|
|
|
12358
12387
|
"network-fetch",
|
|
12359
12388
|
"async-job-body"
|
|
12360
12389
|
]);
|
|
12361
|
-
var MaturityTierSchema =
|
|
12362
|
-
var CostProfileSchema =
|
|
12363
|
-
var WorkflowPatternSchema =
|
|
12390
|
+
var MaturityTierSchema = z18.enum(["experimental", "beta", "stable"]);
|
|
12391
|
+
var CostProfileSchema = z18.enum(["low", "medium", "high", "variable"]);
|
|
12392
|
+
var WorkflowPatternSchema = z18.enum([
|
|
12364
12393
|
"sequential",
|
|
12365
12394
|
"wave",
|
|
12366
12395
|
"graph",
|
|
@@ -12368,34 +12397,34 @@ var WorkflowPatternSchema = z17.enum([
|
|
|
12368
12397
|
"aflow",
|
|
12369
12398
|
"puppeteer"
|
|
12370
12399
|
]);
|
|
12371
|
-
var PipelineTypeSchema =
|
|
12372
|
-
var ComplexityTierSchema =
|
|
12373
|
-
var SelectionRuleSchema =
|
|
12400
|
+
var PipelineTypeSchema = z18.enum(["dev", "research", "audit", "greenfield", "general"]);
|
|
12401
|
+
var ComplexityTierSchema = z18.enum(["simple", "moderate", "complex", "expert"]);
|
|
12402
|
+
var SelectionRuleSchema = z18.object({
|
|
12374
12403
|
/** Higher wins. Distinctive templates outrank the structural-pattern fallback. */
|
|
12375
|
-
priority:
|
|
12404
|
+
priority: z18.number().int(),
|
|
12376
12405
|
/** Matches only when the routed workflow pattern is one of these. */
|
|
12377
|
-
patterns:
|
|
12406
|
+
patterns: z18.array(WorkflowPatternSchema).min(1).optional(),
|
|
12378
12407
|
/** Matches only when the classified pipeline template is one of these. */
|
|
12379
|
-
pipelineTypes:
|
|
12408
|
+
pipelineTypes: z18.array(PipelineTypeSchema).min(1).optional(),
|
|
12380
12409
|
/** Matches only when the analyzed complexity is one of these. */
|
|
12381
|
-
complexities:
|
|
12410
|
+
complexities: z18.array(ComplexityTierSchema).min(1).optional()
|
|
12382
12411
|
}).strict().refine((r) => r.patterns !== void 0 || r.pipelineTypes !== void 0, {
|
|
12383
12412
|
message: "a selection rule must constrain at least patterns or pipelineTypes"
|
|
12384
12413
|
});
|
|
12385
|
-
var StrategyManifestSchema =
|
|
12414
|
+
var StrategyManifestSchema = z18.object({
|
|
12386
12415
|
/**
|
|
12387
12416
|
* Stable kebab-case identifier; never reused. For the initial 8 this equals
|
|
12388
12417
|
* the strategy name, but `id` is a distinct field so future strategies can
|
|
12389
12418
|
* carry a more specific id without colliding with the {@link StrategyName}
|
|
12390
12419
|
* enum.
|
|
12391
12420
|
*/
|
|
12392
|
-
id:
|
|
12421
|
+
id: z18.string().regex(/^[a-z0-9]+(-[a-z0-9]+)*$/, "id must be kebab-case"),
|
|
12393
12422
|
/**
|
|
12394
12423
|
* The manifest-shape version this entry was authored against. Must equal
|
|
12395
12424
|
* {@link STRATEGY_MANIFEST_SCHEMA_VERSION}; a mismatch fails closed so a
|
|
12396
12425
|
* manifest written for a future shape is never misread.
|
|
12397
12426
|
*/
|
|
12398
|
-
schemaVersion:
|
|
12427
|
+
schemaVersion: z18.literal(STRATEGY_MANIFEST_SCHEMA_VERSION),
|
|
12399
12428
|
/** The execution strategy this manifest describes (router enum). */
|
|
12400
12429
|
strategy: StrategyNameSchema,
|
|
12401
12430
|
/**
|
|
@@ -12403,7 +12432,7 @@ var StrategyManifestSchema = z17.object({
|
|
|
12403
12432
|
* force-strategy entry point (generalizes `STRATEGY_ENTRYPOINT_TOOL`,
|
|
12404
12433
|
* run-tool.ts). Non-empty.
|
|
12405
12434
|
*/
|
|
12406
|
-
entrypointTool:
|
|
12435
|
+
entrypointTool: z18.string().min(1),
|
|
12407
12436
|
/**
|
|
12408
12437
|
* Whether a wired executor exists for this strategy (run-tool.ts
|
|
12409
12438
|
* `buildDefaultExecutors`). FAIL-CLOSED routing key: only 4/8 are `true`
|
|
@@ -12417,15 +12446,15 @@ var StrategyManifestSchema = z17.object({
|
|
|
12417
12446
|
* (#3881), so declaring `true` for a strategy with no wired executor (silent
|
|
12418
12447
|
* fail-OPEN) fails the build rather than mis-advertising routability.
|
|
12419
12448
|
*/
|
|
12420
|
-
executorAvailable:
|
|
12449
|
+
executorAvailable: z18.boolean(),
|
|
12421
12450
|
/** One-line human description of what this strategy is for (#3838 docs). */
|
|
12422
|
-
description:
|
|
12451
|
+
description: z18.string().min(1),
|
|
12423
12452
|
/**
|
|
12424
12453
|
* Guidance on when to FORCE this strategy via `run({ forceStrategy })` —
|
|
12425
12454
|
* the escape-hatch docs surfaced in #3838. Optional: the router selects by
|
|
12426
12455
|
* capability; this is operator guidance, not a routing input.
|
|
12427
12456
|
*/
|
|
12428
|
-
whenToForce:
|
|
12457
|
+
whenToForce: z18.string().min(1).optional(),
|
|
12429
12458
|
/** Maturity tier; defaults are not assumed — author states it explicitly. */
|
|
12430
12459
|
maturityTier: MaturityTierSchema,
|
|
12431
12460
|
/** Expected latency class (#3734 taxonomy). */
|
|
@@ -12449,11 +12478,11 @@ var StrategyManifestSchema = z17.object({
|
|
|
12449
12478
|
* no claim on any signal). Each rule is a {@link SelectionRule}; the router
|
|
12450
12479
|
* applies the highest-priority matching rule across the whole registry.
|
|
12451
12480
|
*/
|
|
12452
|
-
selectionRules:
|
|
12481
|
+
selectionRules: z18.array(SelectionRuleSchema).min(1).optional()
|
|
12453
12482
|
}).strict();
|
|
12454
|
-
var StrategyManifestRegistrySchema =
|
|
12455
|
-
version:
|
|
12456
|
-
manifests:
|
|
12483
|
+
var StrategyManifestRegistrySchema = z18.object({
|
|
12484
|
+
version: z18.number().int().positive(),
|
|
12485
|
+
manifests: z18.array(StrategyManifestSchema).min(1).superRefine((manifests, ctx) => {
|
|
12457
12486
|
const seenIds = /* @__PURE__ */ new Set();
|
|
12458
12487
|
const seenStrategies = /* @__PURE__ */ new Set();
|
|
12459
12488
|
for (const [i, m] of manifests.entries()) {
|
|
@@ -13271,9 +13300,9 @@ function convertBonusesToScoreMap(bonuses, taskCategory) {
|
|
|
13271
13300
|
}
|
|
13272
13301
|
|
|
13273
13302
|
// src/cli-adapters/fallback-chains.ts
|
|
13274
|
-
import { z as
|
|
13275
|
-
var FallbackChainSchema =
|
|
13276
|
-
var FallbackChainRegistrySchema =
|
|
13303
|
+
import { z as z19 } from "zod";
|
|
13304
|
+
var FallbackChainSchema = z19.array(z19.enum(["claude", "gemini", "codex", "opencode"])).min(1).readonly();
|
|
13305
|
+
var FallbackChainRegistrySchema = z19.object({
|
|
13277
13306
|
code: FallbackChainSchema,
|
|
13278
13307
|
research: FallbackChainSchema,
|
|
13279
13308
|
documentation: FallbackChainSchema,
|
|
@@ -14030,20 +14059,20 @@ function setDefaultAvailableModelsCache(cache) {
|
|
|
14030
14059
|
}
|
|
14031
14060
|
|
|
14032
14061
|
// src/config/openrouter-models-source.ts
|
|
14033
|
-
import { z as
|
|
14062
|
+
import { z as z20 } from "zod";
|
|
14034
14063
|
var OPENROUTER_MODELS_URL = "https://openrouter.ai/api/v1/models";
|
|
14035
14064
|
var DEFAULT_TIMEOUT_MS = 8e3;
|
|
14036
14065
|
var MAX_MODELS = 5e3;
|
|
14037
14066
|
var MAX_BYTES = 8e6;
|
|
14038
14067
|
var MAX_SUPPORTED_PARAMETERS = 256;
|
|
14039
|
-
var OpenRouterModelSchema =
|
|
14040
|
-
id:
|
|
14068
|
+
var OpenRouterModelSchema = z20.object({
|
|
14069
|
+
id: z20.string().min(1).max(256),
|
|
14041
14070
|
// #4121: the provider's machine-readable capability list. Optional & additive —
|
|
14042
14071
|
// older catalogs (and our older fixtures) omit it; consumers reading only `.id`
|
|
14043
14072
|
// are unaffected. Bounded so a hostile payload can't blow memory.
|
|
14044
|
-
supported_parameters:
|
|
14073
|
+
supported_parameters: z20.array(z20.string().max(256)).max(MAX_SUPPORTED_PARAMETERS).optional()
|
|
14045
14074
|
});
|
|
14046
|
-
var OpenRouterModelsResponseSchema =
|
|
14075
|
+
var OpenRouterModelsResponseSchema = z20.object({ data: z20.array(OpenRouterModelSchema) });
|
|
14047
14076
|
var logger12 = createLogger({ component: "openrouter-models-source" });
|
|
14048
14077
|
function parseCatalog(text) {
|
|
14049
14078
|
if (text.length > MAX_BYTES) {
|
|
@@ -14182,32 +14211,32 @@ function resolveModelForTier(cliName, tier, opts = {}) {
|
|
|
14182
14211
|
|
|
14183
14212
|
// src/cli-adapters/model-selection-shadow.ts
|
|
14184
14213
|
import { appendFileSync as appendFileSync2, existsSync as existsSync7, readFileSync as readFileSync6 } from "fs";
|
|
14185
|
-
import { z as
|
|
14214
|
+
import { z as z21 } from "zod";
|
|
14186
14215
|
function isRouteModelShadowEnabled() {
|
|
14187
14216
|
return process.env["NEXUS_ROUTE_MODEL_SHADOW"] === "1" && isPersistenceEnabled();
|
|
14188
14217
|
}
|
|
14189
14218
|
var MODEL_SELECTION_SHADOW_SCHEMA_VERSION = 1;
|
|
14190
14219
|
var READ_LOOKBACK_DAYS = 30;
|
|
14191
14220
|
var READ_LOOKBACK_MS = READ_LOOKBACK_DAYS * 24 * 60 * 60 * 1e3;
|
|
14192
|
-
var ModelTierSchema =
|
|
14193
|
-
var ModelSelectionShadowRecordSchema =
|
|
14194
|
-
schema:
|
|
14221
|
+
var ModelTierSchema = z21.enum(["fast", "balanced", "powerful"]);
|
|
14222
|
+
var ModelSelectionShadowRecordSchema = z21.object({
|
|
14223
|
+
schema: z21.literal(MODEL_SELECTION_SHADOW_SCHEMA_VERSION),
|
|
14195
14224
|
/** ISO timestamp of the outcome join. */
|
|
14196
|
-
timestamp:
|
|
14225
|
+
timestamp: z21.string().min(1),
|
|
14197
14226
|
/** Display slot of the routed CLI (api:* arms collapse to their slot). */
|
|
14198
|
-
cli:
|
|
14227
|
+
cli: z21.string().min(1).max(40),
|
|
14199
14228
|
/** Difficulty tier the ZeroRouter computed for the task. */
|
|
14200
14229
|
tier: ModelTierSchema,
|
|
14201
14230
|
/** Model the live decision actually used (or the CLI default when route-time selection is off). */
|
|
14202
|
-
actualModel:
|
|
14231
|
+
actualModel: z21.string().min(1).max(120),
|
|
14203
14232
|
/** Model `resolveModelForTier` WOULD have picked (never executed). */
|
|
14204
|
-
shadowModel:
|
|
14233
|
+
shadowModel: z21.string().min(1).max(120),
|
|
14205
14234
|
/** Whether shadow and actual agree. */
|
|
14206
|
-
agree:
|
|
14235
|
+
agree: z21.boolean(),
|
|
14207
14236
|
/** Whether the actually-executed decision succeeded. */
|
|
14208
|
-
success:
|
|
14237
|
+
success: z21.boolean(),
|
|
14209
14238
|
/** Measured cost of the actual execution, when available (unmeasured today on the routing path). */
|
|
14210
|
-
costUsd:
|
|
14239
|
+
costUsd: z21.number().nonnegative().optional()
|
|
14211
14240
|
});
|
|
14212
14241
|
function computeModelSelectionShadow(cli, tier, actualModel) {
|
|
14213
14242
|
const shadowModel = resolveModelForTier(cli, tier);
|
|
@@ -14747,7 +14776,7 @@ var CompositeRouter = class _CompositeRouter {
|
|
|
14747
14776
|
*/
|
|
14748
14777
|
async consultUnifiedContext(task) {
|
|
14749
14778
|
try {
|
|
14750
|
-
const { getContextForTask, inferTaskCategory } = await import("./context-retriever-
|
|
14779
|
+
const { getContextForTask, inferTaskCategory } = await import("./context-retriever-DIKQ7QZA.js");
|
|
14751
14780
|
const ctx = await getContextForTask({
|
|
14752
14781
|
task: task.content,
|
|
14753
14782
|
category: inferTaskCategory(task.content),
|
|
@@ -15245,7 +15274,7 @@ import { dirname as dirname5 } from "path";
|
|
|
15245
15274
|
import { mkdirSync as mkdirSync3 } from "fs";
|
|
15246
15275
|
|
|
15247
15276
|
// src/context/mobimem-types.ts
|
|
15248
|
-
import { z as
|
|
15277
|
+
import { z as z22 } from "zod";
|
|
15249
15278
|
var DEFAULT_MOBIMEM_CONFIG = {
|
|
15250
15279
|
dbPath: ":memory:",
|
|
15251
15280
|
maxProfileEntries: 100,
|
|
@@ -15257,15 +15286,15 @@ var DEFAULT_MOBIMEM_CONFIG = {
|
|
|
15257
15286
|
minExperienceSuccessRate: 0.7,
|
|
15258
15287
|
autoEviction: true
|
|
15259
15288
|
};
|
|
15260
|
-
var MobiMemConfigSchema =
|
|
15261
|
-
dbPath:
|
|
15262
|
-
maxProfileEntries:
|
|
15263
|
-
maxExperiencePatterns:
|
|
15264
|
-
maxActionCacheEntries:
|
|
15265
|
-
actionCacheTtlMs:
|
|
15266
|
-
minProfileConfidence:
|
|
15267
|
-
minExperienceSuccessRate:
|
|
15268
|
-
autoEviction:
|
|
15289
|
+
var MobiMemConfigSchema = z22.object({
|
|
15290
|
+
dbPath: z22.string(),
|
|
15291
|
+
maxProfileEntries: z22.number().int().positive().default(100),
|
|
15292
|
+
maxExperiencePatterns: z22.number().int().positive().default(500),
|
|
15293
|
+
maxActionCacheEntries: z22.number().int().positive().default(1e3),
|
|
15294
|
+
actionCacheTtlMs: z22.number().int().positive().default(36e5),
|
|
15295
|
+
minProfileConfidence: z22.number().min(0).max(1).default(0.6),
|
|
15296
|
+
minExperienceSuccessRate: z22.number().min(0).max(1).default(0.7),
|
|
15297
|
+
autoEviction: z22.boolean().default(true)
|
|
15269
15298
|
});
|
|
15270
15299
|
|
|
15271
15300
|
// src/context/mobimem-impl.ts
|
|
@@ -16333,4 +16362,4 @@ export {
|
|
|
16333
16362
|
AgentCapability,
|
|
16334
16363
|
OrchestratorError
|
|
16335
16364
|
};
|
|
16336
|
-
//# sourceMappingURL=chunk-
|
|
16365
|
+
//# sourceMappingURL=chunk-YSE3VQ4A.js.map
|