@zhixuan92/multi-model-agent-core 0.4.0 → 1.1.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.
Files changed (128) hide show
  1. package/README.md +33 -93
  2. package/dist/config/load.js +9 -9
  3. package/dist/config/load.js.map +1 -1
  4. package/dist/config/schema.d.ts +169 -275
  5. package/dist/config/schema.d.ts.map +1 -1
  6. package/dist/config/schema.js +31 -40
  7. package/dist/config/schema.js.map +1 -1
  8. package/dist/cost/cost-meter.d.ts +13 -0
  9. package/dist/cost/cost-meter.d.ts.map +1 -0
  10. package/dist/cost/cost-meter.js +20 -0
  11. package/dist/cost/cost-meter.js.map +1 -0
  12. package/dist/delegate-with-escalation.d.ts +1 -28
  13. package/dist/delegate-with-escalation.d.ts.map +1 -1
  14. package/dist/delegate-with-escalation.js +9 -89
  15. package/dist/delegate-with-escalation.js.map +1 -1
  16. package/dist/error-codes.d.ts +4 -0
  17. package/dist/error-codes.d.ts.map +1 -0
  18. package/dist/error-codes.js +16 -0
  19. package/dist/error-codes.js.map +1 -0
  20. package/dist/index.d.ts +5 -5
  21. package/dist/index.d.ts.map +1 -1
  22. package/dist/index.js +4 -5
  23. package/dist/index.js.map +1 -1
  24. package/dist/model-profiles.json +10 -5
  25. package/dist/provider.d.ts +2 -2
  26. package/dist/provider.d.ts.map +1 -1
  27. package/dist/provider.js +10 -13
  28. package/dist/provider.js.map +1 -1
  29. package/dist/readiness/normalization-budget.d.ts +2 -0
  30. package/dist/readiness/normalization-budget.d.ts.map +1 -0
  31. package/dist/readiness/normalization-budget.js +9 -0
  32. package/dist/readiness/normalization-budget.js.map +1 -0
  33. package/dist/readiness/normalize-brief.d.ts +17 -0
  34. package/dist/readiness/normalize-brief.d.ts.map +1 -0
  35. package/dist/readiness/normalize-brief.js +124 -0
  36. package/dist/readiness/normalize-brief.js.map +1 -0
  37. package/dist/readiness/readiness.d.ts +16 -0
  38. package/dist/readiness/readiness.d.ts.map +1 -0
  39. package/dist/readiness/readiness.js +160 -0
  40. package/dist/readiness/readiness.js.map +1 -0
  41. package/dist/reporting/structured-report.d.ts +18 -0
  42. package/dist/reporting/structured-report.d.ts.map +1 -0
  43. package/dist/reporting/structured-report.js +100 -0
  44. package/dist/reporting/structured-report.js.map +1 -0
  45. package/dist/review/aggregate-result.d.ts +3 -0
  46. package/dist/review/aggregate-result.d.ts.map +1 -0
  47. package/dist/review/aggregate-result.js +31 -0
  48. package/dist/review/aggregate-result.js.map +1 -0
  49. package/dist/review/quality-reviewer.d.ts +13 -0
  50. package/dist/review/quality-reviewer.d.ts.map +1 -0
  51. package/dist/review/quality-reviewer.js +39 -0
  52. package/dist/review/quality-reviewer.js.map +1 -0
  53. package/dist/review/reviewer-prompt.d.ts +10 -0
  54. package/dist/review/reviewer-prompt.d.ts.map +1 -0
  55. package/dist/review/reviewer-prompt.js +58 -0
  56. package/dist/review/reviewer-prompt.js.map +1 -0
  57. package/dist/review/spec-reviewer.d.ts +13 -0
  58. package/dist/review/spec-reviewer.d.ts.map +1 -0
  59. package/dist/review/spec-reviewer.js +37 -0
  60. package/dist/review/spec-reviewer.js.map +1 -0
  61. package/dist/routing/model-profiles.d.ts +5 -0
  62. package/dist/routing/model-profiles.d.ts.map +1 -1
  63. package/dist/routing/model-profiles.js +5 -0
  64. package/dist/routing/model-profiles.js.map +1 -1
  65. package/dist/routing/resolve-agent.d.ts +8 -0
  66. package/dist/routing/resolve-agent.d.ts.map +1 -0
  67. package/dist/routing/resolve-agent.js +45 -0
  68. package/dist/routing/resolve-agent.js.map +1 -0
  69. package/dist/run-tasks.d.ts +0 -23
  70. package/dist/run-tasks.d.ts.map +1 -1
  71. package/dist/run-tasks.js +241 -72
  72. package/dist/run-tasks.js.map +1 -1
  73. package/dist/runners/claude-runner.d.ts +2 -2
  74. package/dist/runners/claude-runner.d.ts.map +1 -1
  75. package/dist/runners/claude-runner.js +76 -28
  76. package/dist/runners/claude-runner.js.map +1 -1
  77. package/dist/runners/codex-runner.d.ts +2 -2
  78. package/dist/runners/codex-runner.d.ts.map +1 -1
  79. package/dist/runners/codex-runner.js +77 -24
  80. package/dist/runners/codex-runner.js.map +1 -1
  81. package/dist/runners/openai-runner.d.ts +2 -2
  82. package/dist/runners/openai-runner.d.ts.map +1 -1
  83. package/dist/runners/openai-runner.js +141 -22
  84. package/dist/runners/openai-runner.js.map +1 -1
  85. package/dist/runners/prevention.d.ts +2 -0
  86. package/dist/runners/prevention.d.ts.map +1 -1
  87. package/dist/runners/prevention.js +12 -0
  88. package/dist/runners/prevention.js.map +1 -1
  89. package/dist/runners/supervision.d.ts +1 -5
  90. package/dist/runners/supervision.d.ts.map +1 -1
  91. package/dist/runners/supervision.js +0 -68
  92. package/dist/runners/supervision.js.map +1 -1
  93. package/dist/tools/call-cache.d.ts +16 -0
  94. package/dist/tools/call-cache.d.ts.map +1 -0
  95. package/dist/tools/call-cache.js +28 -0
  96. package/dist/tools/call-cache.js.map +1 -0
  97. package/dist/tools/claude-adapter.d.ts +2 -2
  98. package/dist/tools/claude-adapter.d.ts.map +1 -1
  99. package/dist/tools/claude-adapter.js +12 -5
  100. package/dist/tools/claude-adapter.js.map +1 -1
  101. package/dist/tools/definitions.d.ts +4 -0
  102. package/dist/tools/definitions.d.ts.map +1 -1
  103. package/dist/tools/definitions.js +4 -0
  104. package/dist/tools/definitions.js.map +1 -1
  105. package/dist/tools/openai-adapter.d.ts +4 -4
  106. package/dist/tools/openai-adapter.d.ts.map +1 -1
  107. package/dist/tools/openai-adapter.js +9 -2
  108. package/dist/tools/openai-adapter.js.map +1 -1
  109. package/dist/types.d.ts +79 -31
  110. package/dist/types.d.ts.map +1 -1
  111. package/dist/types.js.map +1 -1
  112. package/package.json +48 -16
  113. package/dist/routing/capabilities.d.ts +0 -3
  114. package/dist/routing/capabilities.d.ts.map +0 -1
  115. package/dist/routing/capabilities.js +0 -26
  116. package/dist/routing/capabilities.js.map +0 -1
  117. package/dist/routing/get-provider-eligibility.d.ts +0 -8
  118. package/dist/routing/get-provider-eligibility.d.ts.map +0 -1
  119. package/dist/routing/get-provider-eligibility.js +0 -53
  120. package/dist/routing/get-provider-eligibility.js.map +0 -1
  121. package/dist/routing/resolve-task-capabilities.d.ts +0 -7
  122. package/dist/routing/resolve-task-capabilities.d.ts.map +0 -1
  123. package/dist/routing/resolve-task-capabilities.js +0 -19
  124. package/dist/routing/resolve-task-capabilities.js.map +0 -1
  125. package/dist/routing/select-provider-for-task.d.ts +0 -18
  126. package/dist/routing/select-provider-for-task.d.ts.map +0 -1
  127. package/dist/routing/select-provider-for-task.js +0 -50
  128. package/dist/routing/select-provider-for-task.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reviewer-prompt.d.ts","sourceRoot":"","sources":["../../src/review/reviewer-prompt.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAC;AAEhF,UAAU,mBAAmB;IAC3B,gBAAgB,EAAE,MAAM,CAAC;IACzB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,mBAAmB,EAC3B,UAAU,EAAE,sBAAsB,EAClC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACpC,WAAW,EAAE,MAAM,EAAE,GACpB,MAAM,CA6BR;AAED,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,mBAAmB,EAC3B,UAAU,EAAE,sBAAsB,EAClC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACpC,WAAW,EAAE,MAAM,EAAE,GACpB,MAAM,CA4BR"}
@@ -0,0 +1,58 @@
1
+ export function buildSpecReviewPrompt(packet, implReport, fileContents, toolCallLog) {
2
+ return [
3
+ 'You are a spec compliance reviewer. Check whether the implementer satisfied the task exactly.',
4
+ '',
5
+ '## Execution Packet (what was asked)',
6
+ packet.normalizedPrompt,
7
+ `Scope: ${packet.scope.join(', ')}`,
8
+ `Done condition: ${packet.doneCondition}`,
9
+ '',
10
+ '## Implementer Structured Report',
11
+ `Summary: ${implReport.summary ?? 'N/A'}`,
12
+ `Files changed: ${implReport.filesChanged.map((f) => `${f.path}: ${f.summary}`).join('; ')}`,
13
+ `Validations run: ${implReport.validationsRun.map((v) => `${v.command}: ${v.result}`).join('; ')}`,
14
+ `Deviations: ${implReport.deviationsFromBrief.join('; ') || 'none'}`,
15
+ `Unresolved: ${implReport.unresolved.join('; ') || 'none'}`,
16
+ '',
17
+ '## Actual File Contents',
18
+ ...Object.entries(fileContents).map(([path, content]) => `### ${path}\n\`\`\`\n${content}\n\`\`\``),
19
+ '',
20
+ '## Tool-Call Log',
21
+ toolCallLog.join('\n'),
22
+ '',
23
+ '## Your Task',
24
+ 'Return a structured report. In ## Summary, state your verdict: "approved" or "changes_required".',
25
+ 'In ## Deviations from brief, list specific issues found.',
26
+ 'In ## Unresolved, list items needing parent judgment.',
27
+ 'Check: scope coverage, acceptance criteria met, required markers present, no out-of-scope changes.',
28
+ ].join('\n');
29
+ }
30
+ export function buildQualityReviewPrompt(packet, implReport, fileContents, toolCallLog) {
31
+ return [
32
+ 'You are a code quality reviewer. Check whether the implementation is sound, safe, and maintainable.',
33
+ '',
34
+ '## Execution Packet',
35
+ packet.normalizedPrompt,
36
+ '',
37
+ '## Implementer Structured Report',
38
+ `Summary: ${implReport.summary ?? 'N/A'}`,
39
+ `Files changed: ${implReport.filesChanged.map((f) => `${f.path}: ${f.summary}`).join('; ')}`,
40
+ '',
41
+ '## Actual File Contents',
42
+ ...Object.entries(fileContents).map(([path, content]) => `### ${path}\n\`\`\`\n${content}\n\`\`\``),
43
+ '',
44
+ '## Tool-Call Log',
45
+ toolCallLog.join('\n'),
46
+ '',
47
+ '## Your Task',
48
+ 'Return a structured report. In ## Summary, state: "approved" or "changes_required".',
49
+ 'In ## Deviations from brief, list code quality issues:',
50
+ '- error handling gaps',
51
+ '- edge cases not covered',
52
+ '- null safety issues',
53
+ '- maintainability concerns',
54
+ '- security surface issues',
55
+ 'In ## Unresolved, list items the implementer should address.',
56
+ ].join('\n');
57
+ }
58
+ //# sourceMappingURL=reviewer-prompt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reviewer-prompt.js","sourceRoot":"","sources":["../../src/review/reviewer-prompt.ts"],"names":[],"mappings":"AAQA,MAAM,UAAU,qBAAqB,CACnC,MAA2B,EAC3B,UAAkC,EAClC,YAAoC,EACpC,WAAqB;IAErB,OAAO;QACL,+FAA+F;QAC/F,EAAE;QACF,sCAAsC;QACtC,MAAM,CAAC,gBAAgB;QACvB,UAAU,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;QACnC,mBAAmB,MAAM,CAAC,aAAa,EAAE;QACzC,EAAE;QACF,kCAAkC;QAClC,YAAY,UAAU,CAAC,OAAO,IAAI,KAAK,EAAE;QACzC,kBAAkB,UAAU,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;QAC5F,oBAAoB,UAAU,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;QAClG,eAAe,UAAU,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,MAAM,EAAE;QACpE,eAAe,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,MAAM,EAAE;QAC3D,EAAE;QACF,yBAAyB;QACzB,GAAG,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,EAAE,CACtD,OAAO,IAAI,aAAa,OAAO,UAAU,CAAC;QAC5C,EAAE;QACF,kBAAkB;QAClB,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;QACtB,EAAE;QACF,cAAc;QACd,kGAAkG;QAClG,0DAA0D;QAC1D,uDAAuD;QACvD,oGAAoG;KACrG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED,MAAM,UAAU,wBAAwB,CACtC,MAA2B,EAC3B,UAAkC,EAClC,YAAoC,EACpC,WAAqB;IAErB,OAAO;QACL,qGAAqG;QACrG,EAAE;QACF,qBAAqB;QACrB,MAAM,CAAC,gBAAgB;QACvB,EAAE;QACF,kCAAkC;QAClC,YAAY,UAAU,CAAC,OAAO,IAAI,KAAK,EAAE;QACzC,kBAAkB,UAAU,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;QAC5F,EAAE;QACF,yBAAyB;QACzB,GAAG,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,EAAE,CACtD,OAAO,IAAI,aAAa,OAAO,UAAU,CAAC;QAC5C,EAAE;QACF,kBAAkB;QAClB,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;QACtB,EAAE;QACF,cAAc;QACd,qFAAqF;QACrF,wDAAwD;QACxD,uBAAuB;QACvB,0BAA0B;QAC1B,sBAAsB;QACtB,4BAA4B;QAC5B,2BAA2B;QAC3B,8DAA8D;KAC/D,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC"}
@@ -0,0 +1,13 @@
1
+ import type { Provider } from '../types.js';
2
+ import type { ParsedStructuredReport } from '../reporting/structured-report.js';
3
+ export interface SpecReviewResult {
4
+ status: 'approved' | 'changes_required' | 'not_run';
5
+ report?: ParsedStructuredReport;
6
+ findings: string[];
7
+ }
8
+ export declare function runSpecReview(reviewerProvider: Provider, packet: {
9
+ normalizedPrompt: string;
10
+ scope: string[];
11
+ doneCondition: string;
12
+ }, implReport: ParsedStructuredReport, fileContents: Record<string, string>, toolCallLog: string[]): Promise<SpecReviewResult>;
13
+ //# sourceMappingURL=spec-reviewer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spec-reviewer.d.ts","sourceRoot":"","sources":["../../src/review/spec-reviewer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAG5C,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAC;AAGhF,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,UAAU,GAAG,kBAAkB,GAAG,SAAS,CAAC;IACpD,MAAM,CAAC,EAAE,sBAAsB,CAAC;IAChC,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,wBAAsB,aAAa,CACjC,gBAAgB,EAAE,QAAQ,EAC1B,MAAM,EAAE;IAAE,gBAAgB,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,EAAE,CAAC;IAAC,aAAa,EAAE,MAAM,CAAA;CAAE,EAC5E,UAAU,EAAE,sBAAsB,EAClC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACpC,WAAW,EAAE,MAAM,EAAE,GACpB,OAAO,CAAC,gBAAgB,CAAC,CA0C3B"}
@@ -0,0 +1,37 @@
1
+ import { delegateWithEscalation } from '../delegate-with-escalation.js';
2
+ import { buildSpecReviewPrompt } from './reviewer-prompt.js';
3
+ import { parseStructuredReport } from '../reporting/structured-report.js';
4
+ export async function runSpecReview(reviewerProvider, packet, implReport, fileContents, toolCallLog) {
5
+ const prompt = buildSpecReviewPrompt(packet, implReport, fileContents, toolCallLog);
6
+ let result;
7
+ try {
8
+ const reviewerSlot = reviewerProvider.name === 'standard' ? 'standard' : 'complex';
9
+ result = await delegateWithEscalation({
10
+ prompt,
11
+ agentType: reviewerSlot,
12
+ briefQualityPolicy: 'off',
13
+ maxTurns: 20,
14
+ timeoutMs: 120_000,
15
+ }, [reviewerProvider], { explicitlyPinned: true });
16
+ }
17
+ catch {
18
+ return { status: 'not_run', findings: [] };
19
+ }
20
+ if (result.status !== 'ok') {
21
+ return { status: 'not_run', findings: [] };
22
+ }
23
+ const report = parseStructuredReport(result.output);
24
+ if (!report.summary) {
25
+ return { status: 'not_run', findings: [] };
26
+ }
27
+ const summaryLower = report.summary.toLowerCase();
28
+ if (summaryLower.includes('changes_required')) {
29
+ return {
30
+ status: 'changes_required',
31
+ report,
32
+ findings: [...(report.deviationsFromBrief ?? []), ...(report.unresolved ?? [])],
33
+ };
34
+ }
35
+ return { status: 'approved', report, findings: [] };
36
+ }
37
+ //# sourceMappingURL=spec-reviewer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spec-reviewer.js","sourceRoot":"","sources":["../../src/review/spec-reviewer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AACxE,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAE7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAQ1E,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,gBAA0B,EAC1B,MAA4E,EAC5E,UAAkC,EAClC,YAAoC,EACpC,WAAqB;IAErB,MAAM,MAAM,GAAG,qBAAqB,CAAC,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,CAAC,CAAC;IAEpF,IAAI,MAAM,CAAC;IACX,IAAI,CAAC;QACH,MAAM,YAAY,GAChB,gBAAgB,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;QAChE,MAAM,GAAG,MAAM,sBAAsB,CACnC;YACE,MAAM;YACN,SAAS,EAAE,YAAY;YACvB,kBAAkB,EAAE,KAAK;YACzB,QAAQ,EAAE,EAAE;YACZ,SAAS,EAAE,OAAO;SACnB,EACD,CAAC,gBAAgB,CAAC,EAClB,EAAE,gBAAgB,EAAE,IAAI,EAAE,CAC3B,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;IAC7C,CAAC;IAED,IAAI,MAAM,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;QAC3B,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;IAC7C,CAAC;IAED,MAAM,MAAM,GAAG,qBAAqB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACpD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;IAC7C,CAAC;IAED,MAAM,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;IAElD,IAAI,YAAY,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAAC;QAC9C,OAAO;YACL,MAAM,EAAE,kBAAkB;YAC1B,MAAM;YACN,QAAQ,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,mBAAmB,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC;SAChF,CAAC;IACJ,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;AACtD,CAAC"}
@@ -22,8 +22,13 @@ export declare const modelProfileSchema: z.ZodObject<{
22
22
  rateSource: z.ZodOptional<z.ZodString>;
23
23
  rateLookupDate: z.ZodOptional<z.ZodString>;
24
24
  inputTokenSoftLimit: z.ZodNumber;
25
+ capabilities: z.ZodDefault<z.ZodArray<z.ZodEnum<{
26
+ web_search: "web_search";
27
+ web_fetch: "web_fetch";
28
+ }>>>;
25
29
  }, z.core.$strip>;
26
30
  export type ModelProfile = z.infer<typeof modelProfileSchema>;
27
31
  export declare function findModelProfile(modelId: string): ModelProfile;
32
+ export declare function findModelCapabilities(modelId: string): ('web_search' | 'web_fetch')[];
28
33
  export declare function getEffectiveCostTier(config: ProviderConfig): CostTier;
29
34
  //# sourceMappingURL=model-profiles.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"model-profiles.d.ts","sourceRoot":"","sources":["../../src/routing/model-profiles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAQ,MAAM,aAAa,CAAC;AAMlE,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;iBAe7B,CAAC;AAEH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAoB9D,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,YAAY,CAQ9D;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,cAAc,GAAG,QAAQ,CAErE"}
1
+ {"version":3,"file":"model-profiles.d.ts","sourceRoot":"","sources":["../../src/routing/model-profiles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAM5D,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;iBAgB7B,CAAC;AAEH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAqB9D,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,YAAY,CAQ9D;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,CAAC,YAAY,GAAG,WAAW,CAAC,EAAE,CAErF;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,cAAc,GAAG,QAAQ,CAErE"}
@@ -17,6 +17,7 @@ export const modelProfileSchema = z.object({
17
17
  /** Per-model-family default for the watchdog input-token soft limit.
18
18
  * See spec A.1.4. */
19
19
  inputTokenSoftLimit: z.number().int().positive(),
20
+ capabilities: z.array(z.enum(['web_search', 'web_fetch'])).default([]),
20
21
  });
21
22
  const DEFAULT_PROFILE = {
22
23
  prefix: '',
@@ -25,6 +26,7 @@ const DEFAULT_PROFILE = {
25
26
  bestFor: 'general tasks (unprofiled model — defaults applied)',
26
27
  supportsEffort: false,
27
28
  inputTokenSoftLimit: 100_000,
29
+ capabilities: [],
28
30
  };
29
31
  // Validate and sort once at module load — longest prefix wins
30
32
  const PROFILE_ENTRIES = (() => {
@@ -43,6 +45,9 @@ export function findModelProfile(modelId) {
43
45
  }
44
46
  return { ...DEFAULT_PROFILE };
45
47
  }
48
+ export function findModelCapabilities(modelId) {
49
+ return findModelProfile(modelId).capabilities ?? [];
50
+ }
46
51
  export function getEffectiveCostTier(config) {
47
52
  return config.costTier ?? findModelProfile(config.model).defaultCost;
48
53
  }
@@ -1 +1 @@
1
- {"version":3,"file":"model-profiles.js","sourceRoot":"","sources":["../../src/routing/model-profiles.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"model-profiles.js","sourceRoot":"","sources":["../../src/routing/model-profiles.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import type { AgentType, AgentCapability, MultiModelConfig, Provider } from '../types.js';
2
+ export interface ResolvedAgent {
3
+ slot: AgentType;
4
+ provider: Provider;
5
+ capabilityOverride: boolean;
6
+ }
7
+ export declare function resolveAgent(agentType: AgentType, requiredCapabilities: AgentCapability[], config: MultiModelConfig): ResolvedAgent;
8
+ //# sourceMappingURL=resolve-agent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolve-agent.d.ts","sourceRoot":"","sources":["../../src/routing/resolve-agent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,eAAe,EAAe,gBAAgB,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAIvG,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,SAAS,CAAC;IAChB,QAAQ,EAAE,QAAQ,CAAC;IACnB,kBAAkB,EAAE,OAAO,CAAC;CAC7B;AAoBD,wBAAgB,YAAY,CAC1B,SAAS,EAAE,SAAS,EACpB,oBAAoB,EAAE,eAAe,EAAE,EACvC,MAAM,EAAE,gBAAgB,GACvB,aAAa,CAmCf"}
@@ -0,0 +1,45 @@
1
+ import { findModelCapabilities } from './model-profiles.js';
2
+ import { createProvider } from '../provider.js';
3
+ function resolveCapabilities(agent) {
4
+ return agent.capabilities ?? findModelCapabilities(agent.model) ?? [];
5
+ }
6
+ function hasAllCapabilities(agent, required) {
7
+ if (required.length === 0)
8
+ return true;
9
+ const available = resolveCapabilities(agent) ?? [];
10
+ return required.every((cap) => available.includes(cap));
11
+ }
12
+ const OTHER_SLOT = {
13
+ standard: 'complex',
14
+ complex: 'standard',
15
+ };
16
+ export function resolveAgent(agentType, requiredCapabilities, config) {
17
+ const agents = config.agents;
18
+ if (!agents) {
19
+ throw new Error('capability_missing: config must have agents defined');
20
+ }
21
+ const declared = agents[agentType];
22
+ if (!declared) {
23
+ throw new Error(`capability_missing: agent "${agentType}" not found in config`);
24
+ }
25
+ if (hasAllCapabilities(declared, requiredCapabilities)) {
26
+ return {
27
+ slot: agentType,
28
+ provider: createProvider(agentType, config),
29
+ capabilityOverride: false,
30
+ };
31
+ }
32
+ const otherSlot = OTHER_SLOT[agentType];
33
+ const other = agents[otherSlot];
34
+ if (other && hasAllCapabilities(other, requiredCapabilities)) {
35
+ return {
36
+ slot: otherSlot,
37
+ provider: createProvider(otherSlot, config),
38
+ capabilityOverride: true,
39
+ };
40
+ }
41
+ const missing = requiredCapabilities.filter((cap) => !resolveCapabilities(declared).includes(cap) &&
42
+ (other ? resolveCapabilities(other).includes(cap) : true));
43
+ throw new Error(`capability_missing: neither standard nor complex agent has: ${missing.join(', ')}`);
44
+ }
45
+ //# sourceMappingURL=resolve-agent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolve-agent.js","sourceRoot":"","sources":["../../src/routing/resolve-agent.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAQhD,SAAS,mBAAmB,CAAC,KAAkB;IAC7C,OAAO,KAAK,CAAC,YAAY,IAAI,qBAAqB,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;AACxE,CAAC;AAED,SAAS,kBAAkB,CACzB,KAAkB,EAClB,QAA2B;IAE3B,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACvC,MAAM,SAAS,GAAG,mBAAmB,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;IACnD,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;AAC1D,CAAC;AAED,MAAM,UAAU,GAAiC;IAC/C,QAAQ,EAAE,SAAS;IACnB,OAAO,EAAE,UAAU;CACpB,CAAC;AAEF,MAAM,UAAU,YAAY,CAC1B,SAAoB,EACpB,oBAAuC,EACvC,MAAwB;IAExB,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;IAC7B,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;IACzE,CAAC;IACD,MAAM,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;IACnC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CAAC,8BAA8B,SAAS,uBAAuB,CAAC,CAAC;IAClF,CAAC;IACD,IAAI,kBAAkB,CAAC,QAAQ,EAAE,oBAAoB,CAAC,EAAE,CAAC;QACvD,OAAO;YACL,IAAI,EAAE,SAAS;YACf,QAAQ,EAAE,cAAc,CAAC,SAAS,EAAE,MAAM,CAAC;YAC3C,kBAAkB,EAAE,KAAK;SAC1B,CAAC;IACJ,CAAC;IAED,MAAM,SAAS,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC;IACxC,MAAM,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;IAChC,IAAI,KAAK,IAAI,kBAAkB,CAAC,KAAK,EAAE,oBAAoB,CAAC,EAAE,CAAC;QAC7D,OAAO;YACL,IAAI,EAAE,SAAS;YACf,QAAQ,EAAE,cAAc,CAAC,SAAS,EAAE,MAAM,CAAC;YAC3C,kBAAkB,EAAE,IAAI;SACzB,CAAC;IACJ,CAAC;IAED,MAAM,OAAO,GAAG,oBAAoB,CAAC,MAAM,CACzC,CAAC,GAAG,EAAE,EAAE,CACN,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC;QAC5C,CAAC,KAAK,CAAC,CAAC,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAC5D,CAAC;IACF,MAAM,IAAI,KAAK,CACb,+DAA+D,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACpF,CAAC;AACJ,CAAC"}
@@ -1,31 +1,8 @@
1
1
  import type { RunResult, TaskSpec, MultiModelConfig, ProgressEvent, RunTasksRuntime } from './types.js';
2
- /**
3
- * Per-task progress sink. `runTasks` invokes this for every
4
- * `ProgressEvent` emitted while working on task at `taskIndex`. The caller
5
- * (today: the MCP cli bridge) is responsible for disambiguating which task
6
- * emitted which event — this is the cheapest contract: the orchestrator
7
- * already knows each task's position in the input array, so the caller
8
- * doesn't have to wrap N closures.
9
- */
10
2
  export type RunTasksProgressCallback = (taskIndex: number, event: ProgressEvent) => void;
11
3
  export interface RunTasksOptions {
12
- /** Optional progress sink. See `RunTasksProgressCallback`. When omitted,
13
- * no progress events are produced — backward-compatible with callers
14
- * that predate Task 8. */
15
4
  onProgress?: RunTasksProgressCallback;
16
- /** Runtime dependencies the orchestrator needs at dispatch time. Today
17
- * this is just the context-block store used to expand
18
- * `TaskSpec.contextBlockIds`. Kept as a nested field so existing callers
19
- * that only pass `onProgress` don't break. */
20
5
  runtime?: RunTasksRuntime;
21
6
  }
22
- /**
23
- * Run tasks concurrently. Each RunResult corresponds to the matching TaskSpec
24
- * at the same index. One task failing does not affect others.
25
- *
26
- * When `options.onProgress` is supplied, it is called with `(taskIndex, event)`
27
- * for every progress event emitted by that task's provider run or the
28
- * escalation orchestrator. See `ProgressEvent` for variants.
29
- */
30
7
  export declare function runTasks(tasks: TaskSpec[], config: MultiModelConfig, options?: RunTasksOptions): Promise<RunResult[]>;
31
8
  //# sourceMappingURL=run-tasks.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"run-tasks.d.ts","sourceRoot":"","sources":["../src/run-tasks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,SAAS,EACT,QAAQ,EACR,gBAAgB,EAChB,aAAa,EACb,eAAe,EAChB,MAAM,YAAY,CAAC;AAOpB;;;;;;;GAOG;AACH,MAAM,MAAM,wBAAwB,GAAG,CACrC,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,aAAa,KACjB,IAAI,CAAC;AAEV,MAAM,WAAW,eAAe;IAC9B;;+BAE2B;IAC3B,UAAU,CAAC,EAAE,wBAAwB,CAAC;IACtC;;;mDAG+C;IAC/C,OAAO,CAAC,EAAE,eAAe,CAAC;CAC3B;AAoDD;;;;;;;GAOG;AACH,wBAAsB,QAAQ,CAC5B,KAAK,EAAE,QAAQ,EAAE,EACjB,MAAM,EAAE,gBAAgB,EACxB,OAAO,GAAE,eAAoB,GAC5B,OAAO,CAAC,SAAS,EAAE,CAAC,CA4EtB"}
1
+ {"version":3,"file":"run-tasks.d.ts","sourceRoot":"","sources":["../src/run-tasks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,SAAS,EACT,QAAQ,EACR,gBAAgB,EAChB,aAAa,EACb,eAAe,EAIhB,MAAM,YAAY,CAAC;AAepB,MAAM,MAAM,wBAAwB,GAAG,CACrC,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,aAAa,KACjB,IAAI,CAAC;AAEV,MAAM,WAAW,eAAe;IAC9B,UAAU,CAAC,EAAE,wBAAwB,CAAC;IACtC,OAAO,CAAC,EAAE,eAAe,CAAC;CAC3B;AAmRD,wBAAsB,QAAQ,CAC5B,KAAK,EAAE,QAAQ,EAAE,EACjB,MAAM,EAAE,gBAAgB,EACxB,OAAO,GAAE,eAAoB,GAC5B,OAAO,CAAC,SAAS,EAAE,CAAC,CAyGtB"}