@zhixuan92/multi-model-agent-core 0.4.0 → 1.0.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/config/load.js +9 -9
- package/dist/config/load.js.map +1 -1
- package/dist/config/schema.d.ts +168 -275
- package/dist/config/schema.d.ts.map +1 -1
- package/dist/config/schema.js +30 -39
- package/dist/config/schema.js.map +1 -1
- package/dist/cost/cost-meter.d.ts +13 -0
- package/dist/cost/cost-meter.d.ts.map +1 -0
- package/dist/cost/cost-meter.js +20 -0
- package/dist/cost/cost-meter.js.map +1 -0
- package/dist/delegate-with-escalation.d.ts +1 -28
- package/dist/delegate-with-escalation.d.ts.map +1 -1
- package/dist/delegate-with-escalation.js +9 -89
- package/dist/delegate-with-escalation.js.map +1 -1
- package/dist/error-codes.d.ts +4 -0
- package/dist/error-codes.d.ts.map +1 -0
- package/dist/error-codes.js +16 -0
- package/dist/error-codes.js.map +1 -0
- package/dist/index.d.ts +5 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -5
- package/dist/index.js.map +1 -1
- package/dist/model-profiles.json +10 -5
- package/dist/provider.d.ts +2 -2
- package/dist/provider.d.ts.map +1 -1
- package/dist/provider.js +10 -13
- package/dist/provider.js.map +1 -1
- package/dist/readiness/normalization-budget.d.ts +2 -0
- package/dist/readiness/normalization-budget.d.ts.map +1 -0
- package/dist/readiness/normalization-budget.js +9 -0
- package/dist/readiness/normalization-budget.js.map +1 -0
- package/dist/readiness/normalize-brief.d.ts +17 -0
- package/dist/readiness/normalize-brief.d.ts.map +1 -0
- package/dist/readiness/normalize-brief.js +124 -0
- package/dist/readiness/normalize-brief.js.map +1 -0
- package/dist/readiness/readiness.d.ts +16 -0
- package/dist/readiness/readiness.d.ts.map +1 -0
- package/dist/readiness/readiness.js +160 -0
- package/dist/readiness/readiness.js.map +1 -0
- package/dist/reporting/structured-report.d.ts +18 -0
- package/dist/reporting/structured-report.d.ts.map +1 -0
- package/dist/reporting/structured-report.js +100 -0
- package/dist/reporting/structured-report.js.map +1 -0
- package/dist/review/aggregate-result.d.ts +3 -0
- package/dist/review/aggregate-result.d.ts.map +1 -0
- package/dist/review/aggregate-result.js +31 -0
- package/dist/review/aggregate-result.js.map +1 -0
- package/dist/review/quality-reviewer.d.ts +13 -0
- package/dist/review/quality-reviewer.d.ts.map +1 -0
- package/dist/review/quality-reviewer.js +39 -0
- package/dist/review/quality-reviewer.js.map +1 -0
- package/dist/review/reviewer-prompt.d.ts +10 -0
- package/dist/review/reviewer-prompt.d.ts.map +1 -0
- package/dist/review/reviewer-prompt.js +58 -0
- package/dist/review/reviewer-prompt.js.map +1 -0
- package/dist/review/spec-reviewer.d.ts +13 -0
- package/dist/review/spec-reviewer.d.ts.map +1 -0
- package/dist/review/spec-reviewer.js +37 -0
- package/dist/review/spec-reviewer.js.map +1 -0
- package/dist/routing/model-profiles.d.ts +5 -0
- package/dist/routing/model-profiles.d.ts.map +1 -1
- package/dist/routing/model-profiles.js +5 -0
- package/dist/routing/model-profiles.js.map +1 -1
- package/dist/routing/resolve-agent.d.ts +8 -0
- package/dist/routing/resolve-agent.d.ts.map +1 -0
- package/dist/routing/resolve-agent.js +45 -0
- package/dist/routing/resolve-agent.js.map +1 -0
- package/dist/run-tasks.d.ts +0 -23
- package/dist/run-tasks.d.ts.map +1 -1
- package/dist/run-tasks.js +241 -72
- package/dist/run-tasks.js.map +1 -1
- package/dist/runners/claude-runner.d.ts.map +1 -1
- package/dist/runners/claude-runner.js +67 -24
- package/dist/runners/claude-runner.js.map +1 -1
- package/dist/runners/codex-runner.d.ts.map +1 -1
- package/dist/runners/codex-runner.js +68 -21
- package/dist/runners/codex-runner.js.map +1 -1
- package/dist/runners/openai-runner.d.ts.map +1 -1
- package/dist/runners/openai-runner.js +139 -20
- package/dist/runners/openai-runner.js.map +1 -1
- package/dist/runners/prevention.d.ts +2 -0
- package/dist/runners/prevention.d.ts.map +1 -1
- package/dist/runners/prevention.js +12 -0
- package/dist/runners/prevention.js.map +1 -1
- package/dist/runners/supervision.d.ts +1 -5
- package/dist/runners/supervision.d.ts.map +1 -1
- package/dist/runners/supervision.js +0 -68
- package/dist/runners/supervision.js.map +1 -1
- package/dist/tools/call-cache.d.ts +16 -0
- package/dist/tools/call-cache.d.ts.map +1 -0
- package/dist/tools/call-cache.js +28 -0
- package/dist/tools/call-cache.js.map +1 -0
- package/dist/types.d.ts +78 -30
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/package.json +48 -16
- package/dist/routing/capabilities.d.ts +0 -3
- package/dist/routing/capabilities.d.ts.map +0 -1
- package/dist/routing/capabilities.js +0 -26
- package/dist/routing/capabilities.js.map +0 -1
- package/dist/routing/get-provider-eligibility.d.ts +0 -8
- package/dist/routing/get-provider-eligibility.d.ts.map +0 -1
- package/dist/routing/get-provider-eligibility.js +0 -53
- package/dist/routing/get-provider-eligibility.js.map +0 -1
- package/dist/routing/resolve-task-capabilities.d.ts +0 -7
- package/dist/routing/resolve-task-capabilities.d.ts.map +0 -1
- package/dist/routing/resolve-task-capabilities.js +0 -19
- package/dist/routing/resolve-task-capabilities.js.map +0 -1
- package/dist/routing/select-provider-for-task.d.ts +0 -18
- package/dist/routing/select-provider-for-task.d.ts.map +0 -1
- package/dist/routing/select-provider-for-task.js +0 -50
- package/dist/routing/select-provider-for-task.js.map +0 -1
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { getBaseCapabilities } from './capabilities.js';
|
|
2
|
-
/**
|
|
3
|
-
* Returns the capabilities a task will have at runtime, accounting for
|
|
4
|
-
* tools, sandboxPolicy, and hosted tools overrides.
|
|
5
|
-
*/
|
|
6
|
-
export function resolveTaskCapabilities(providerConfig, options) {
|
|
7
|
-
// If tools are disabled for this task, no capabilities are offered.
|
|
8
|
-
if (options.tools === 'none')
|
|
9
|
-
return [];
|
|
10
|
-
// Merge the per-task sandboxPolicy override (if any) into a config snapshot
|
|
11
|
-
// before asking getBaseCapabilities. The provider's persisted config is NOT
|
|
12
|
-
// mutated.
|
|
13
|
-
const mergedConfig = {
|
|
14
|
-
...providerConfig,
|
|
15
|
-
sandboxPolicy: options.sandboxPolicy ?? providerConfig.sandboxPolicy,
|
|
16
|
-
};
|
|
17
|
-
return getBaseCapabilities(mergedConfig);
|
|
18
|
-
}
|
|
19
|
-
//# sourceMappingURL=resolve-task-capabilities.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"resolve-task-capabilities.js","sourceRoot":"","sources":["../../src/routing/resolve-task-capabilities.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAExD;;;GAGG;AACH,MAAM,UAAU,uBAAuB,CACrC,cAA8B,EAC9B,OAAoD;IAEpD,oEAAoE;IACpE,IAAI,OAAO,CAAC,KAAK,KAAK,MAAM;QAAE,OAAO,EAAE,CAAC;IAExC,4EAA4E;IAC5E,4EAA4E;IAC5E,WAAW;IACX,MAAM,YAAY,GAAmB;QACnC,GAAG,cAAc;QACjB,aAAa,EAAE,OAAO,CAAC,aAAa,IAAI,cAAc,CAAC,aAAa;KACrE,CAAC;IAEF,OAAO,mBAAmB,CAAC,YAAY,CAAC,CAAC;AAC3C,CAAC"}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import type { ProviderConfig, TaskSpec, MultiModelConfig } from '../types.js';
|
|
2
|
-
export interface SelectedProvider {
|
|
3
|
-
name: string;
|
|
4
|
-
config: ProviderConfig;
|
|
5
|
-
}
|
|
6
|
-
/**
|
|
7
|
-
* Select which provider to use for a task (when provider is omitted).
|
|
8
|
-
* Algorithm:
|
|
9
|
-
* 1. Capability filter (HARD): exclude providers missing any requiredCapability.
|
|
10
|
-
* 2. Tier filter (HARD): exclude providers whose findModelProfile(model).tier < task.tier.
|
|
11
|
-
* Tier ordering: trivial < standard < reasoning.
|
|
12
|
-
* 3. Cost preference (STRONG): among remainder, select cheapest costTier.
|
|
13
|
-
* 4. Tiebreaker: ASCII/lexicographic by provider name.
|
|
14
|
-
*
|
|
15
|
-
* Returns null if no provider passes all filters.
|
|
16
|
-
*/
|
|
17
|
-
export declare function selectProviderForTask(task: TaskSpec, config: MultiModelConfig): SelectedProvider | null;
|
|
18
|
-
//# sourceMappingURL=select-provider-for-task.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"select-provider-for-task.d.ts","sourceRoot":"","sources":["../../src/routing/select-provider-for-task.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAI9E,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,cAAc,CAAA;CACvB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,QAAQ,EACd,MAAM,EAAE,gBAAgB,GACvB,gBAAgB,GAAG,IAAI,CAsCzB"}
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
import { resolveTaskCapabilities } from './resolve-task-capabilities.js';
|
|
2
|
-
import { findModelProfile, getEffectiveCostTier } from './model-profiles.js';
|
|
3
|
-
/**
|
|
4
|
-
* Select which provider to use for a task (when provider is omitted).
|
|
5
|
-
* Algorithm:
|
|
6
|
-
* 1. Capability filter (HARD): exclude providers missing any requiredCapability.
|
|
7
|
-
* 2. Tier filter (HARD): exclude providers whose findModelProfile(model).tier < task.tier.
|
|
8
|
-
* Tier ordering: trivial < standard < reasoning.
|
|
9
|
-
* 3. Cost preference (STRONG): among remainder, select cheapest costTier.
|
|
10
|
-
* 4. Tiebreaker: ASCII/lexicographic by provider name.
|
|
11
|
-
*
|
|
12
|
-
* Returns null if no provider passes all filters.
|
|
13
|
-
*/
|
|
14
|
-
export function selectProviderForTask(task, config) {
|
|
15
|
-
const TIER_ORDER = { trivial: 0, standard: 1, reasoning: 2 };
|
|
16
|
-
const eligible = [];
|
|
17
|
-
for (const [name, providerConfig] of Object.entries(config.providers)) {
|
|
18
|
-
// 1. Capability check
|
|
19
|
-
const caps = resolveTaskCapabilities(providerConfig, {
|
|
20
|
-
tools: task.tools ?? 'full',
|
|
21
|
-
sandboxPolicy: task.sandboxPolicy ?? providerConfig.sandboxPolicy,
|
|
22
|
-
});
|
|
23
|
-
const missing = task.requiredCapabilities.filter((c) => !caps.includes(c));
|
|
24
|
-
if (missing.length > 0)
|
|
25
|
-
continue;
|
|
26
|
-
// 2. Tier check
|
|
27
|
-
const profile = findModelProfile(providerConfig.model);
|
|
28
|
-
const requiredTierOrder = TIER_ORDER[task.tier] ?? 0;
|
|
29
|
-
const providerTierOrder = TIER_ORDER[profile.tier] ?? 0;
|
|
30
|
-
if (providerTierOrder < requiredTierOrder)
|
|
31
|
-
continue;
|
|
32
|
-
// Passed both filters — track for cost comparison
|
|
33
|
-
const costTier = getEffectiveCostTier(providerConfig);
|
|
34
|
-
eligible.push({ name, config: providerConfig, costTier });
|
|
35
|
-
}
|
|
36
|
-
if (eligible.length === 0)
|
|
37
|
-
return null;
|
|
38
|
-
// 3. Sort by cost tier: free < low < medium < high
|
|
39
|
-
const COST_ORDER = { free: 0, low: 1, medium: 2, high: 3 };
|
|
40
|
-
eligible.sort((a, b) => {
|
|
41
|
-
const costDiff = (COST_ORDER[a.costTier] ?? 3) - (COST_ORDER[b.costTier] ?? 3);
|
|
42
|
-
if (costDiff !== 0)
|
|
43
|
-
return costDiff;
|
|
44
|
-
// 4. Tiebreaker: provider name ascending
|
|
45
|
-
return a.name.localeCompare(b.name);
|
|
46
|
-
});
|
|
47
|
-
const winner = eligible[0];
|
|
48
|
-
return { name: winner.name, config: winner.config };
|
|
49
|
-
}
|
|
50
|
-
//# sourceMappingURL=select-provider-for-task.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"select-provider-for-task.js","sourceRoot":"","sources":["../../src/routing/select-provider-for-task.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AACzE,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAO7E;;;;;;;;;;GAUG;AACH,MAAM,UAAU,qBAAqB,CACnC,IAAc,EACd,MAAwB;IAExB,MAAM,UAAU,GAA2B,EAAE,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC;IAErF,MAAM,QAAQ,GAAiE,EAAE,CAAC;IAElF,KAAK,MAAM,CAAC,IAAI,EAAE,cAAc,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC;QACtE,sBAAsB;QACtB,MAAM,IAAI,GAAG,uBAAuB,CAAC,cAAc,EAAE;YACnD,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,MAAM;YAC3B,aAAa,EAAE,IAAI,CAAC,aAAa,IAAI,cAAc,CAAC,aAAa;SAClE,CAAC,CAAC;QACH,MAAM,OAAO,GAAG,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3E,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;YAAE,SAAS;QAEjC,gBAAgB;QAChB,MAAM,OAAO,GAAG,gBAAgB,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QACvD,MAAM,iBAAiB,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrD,MAAM,iBAAiB,GAAG,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxD,IAAI,iBAAiB,GAAG,iBAAiB;YAAE,SAAS;QAEpD,kDAAkD;QAClD,MAAM,QAAQ,GAAG,oBAAoB,CAAC,cAAc,CAAC,CAAC;QACtD,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,cAAc,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC5D,CAAC;IAED,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAEvC,mDAAmD;IACnD,MAAM,UAAU,GAA2B,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;IACnF,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACrB,MAAM,QAAQ,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;QAC/E,IAAI,QAAQ,KAAK,CAAC;YAAE,OAAO,QAAQ,CAAC;QACpC,yCAAyC;QACzC,OAAO,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC3B,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;AACtD,CAAC"}
|