@zhixuan92/multi-model-agent-core 2.2.0 → 2.4.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 (46) hide show
  1. package/README.md +2 -1
  2. package/dist/heartbeat.d.ts +18 -0
  3. package/dist/heartbeat.d.ts.map +1 -0
  4. package/dist/heartbeat.js +47 -0
  5. package/dist/heartbeat.js.map +1 -0
  6. package/dist/index.d.ts +3 -0
  7. package/dist/index.d.ts.map +1 -1
  8. package/dist/index.js +2 -0
  9. package/dist/index.js.map +1 -1
  10. package/dist/readiness/readiness.d.ts.map +1 -1
  11. package/dist/readiness/readiness.js +2 -10
  12. package/dist/readiness/readiness.js.map +1 -1
  13. package/dist/reporting/structured-report.d.ts +0 -1
  14. package/dist/reporting/structured-report.d.ts.map +1 -1
  15. package/dist/reporting/structured-report.js +0 -20
  16. package/dist/reporting/structured-report.js.map +1 -1
  17. package/dist/review/aggregate-result.d.ts.map +1 -1
  18. package/dist/review/aggregate-result.js +0 -1
  19. package/dist/review/aggregate-result.js.map +1 -1
  20. package/dist/review/quality-reviewer.d.ts +2 -1
  21. package/dist/review/quality-reviewer.d.ts.map +1 -1
  22. package/dist/review/quality-reviewer.js +5 -5
  23. package/dist/review/quality-reviewer.js.map +1 -1
  24. package/dist/review/reviewer-prompt.d.ts +1 -1
  25. package/dist/review/reviewer-prompt.d.ts.map +1 -1
  26. package/dist/review/reviewer-prompt.js +2 -2
  27. package/dist/review/reviewer-prompt.js.map +1 -1
  28. package/dist/review/spec-reviewer.d.ts +2 -1
  29. package/dist/review/spec-reviewer.d.ts.map +1 -1
  30. package/dist/review/spec-reviewer.js +4 -4
  31. package/dist/review/spec-reviewer.js.map +1 -1
  32. package/dist/run-tasks.d.ts.map +1 -1
  33. package/dist/run-tasks.js +214 -163
  34. package/dist/run-tasks.js.map +1 -1
  35. package/dist/types.d.ts +21 -7
  36. package/dist/types.d.ts.map +1 -1
  37. package/dist/types.js.map +1 -1
  38. package/package.json +5 -9
  39. package/dist/readiness/normalization-budget.d.ts +0 -2
  40. package/dist/readiness/normalization-budget.d.ts.map +0 -1
  41. package/dist/readiness/normalization-budget.js +0 -9
  42. package/dist/readiness/normalization-budget.js.map +0 -1
  43. package/dist/readiness/normalize-brief.d.ts +0 -17
  44. package/dist/readiness/normalize-brief.d.ts.map +0 -1
  45. package/dist/readiness/normalize-brief.js +0 -124
  46. package/dist/readiness/normalize-brief.js.map +0 -1
package/dist/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zhixuan92/multi-model-agent-core",
3
- "version": "2.2.0",
3
+ "version": "2.4.0",
4
4
  "type": "module",
5
5
  "license": "MIT",
6
6
  "description": "Core library for multi-model-agent: provider runners (Claude, Codex, OpenAI-compatible), routing logic, config schema, and tool/sandbox primitives.",
@@ -56,6 +56,10 @@
56
56
  "types": "./dist/run-tasks.d.ts",
57
57
  "import": "./dist/run-tasks.js"
58
58
  },
59
+ "./heartbeat": {
60
+ "types": "./dist/heartbeat.d.ts",
61
+ "import": "./dist/heartbeat.js"
62
+ },
59
63
  "./types": {
60
64
  "types": "./dist/types.d.ts",
61
65
  "import": "./dist/types.js"
@@ -64,14 +68,6 @@
64
68
  "types": "./dist/readiness/readiness.d.ts",
65
69
  "import": "./dist/readiness/readiness.js"
66
70
  },
67
- "./readiness/normalization-budget": {
68
- "types": "./dist/readiness/normalization-budget.d.ts",
69
- "import": "./dist/readiness/normalization-budget.js"
70
- },
71
- "./readiness/normalize-brief": {
72
- "types": "./dist/readiness/normalize-brief.d.ts",
73
- "import": "./dist/readiness/normalize-brief.js"
74
- },
75
71
  "./reporting/structured-report": {
76
72
  "types": "./dist/reporting/structured-report.d.ts",
77
73
  "import": "./dist/reporting/structured-report.js"
@@ -1,2 +0,0 @@
1
- export declare function computeNormalizationBudget(maxCostUSD: number | undefined): number;
2
- //# sourceMappingURL=normalization-budget.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"normalization-budget.d.ts","sourceRoot":"","sources":["../../src/readiness/normalization-budget.ts"],"names":[],"mappings":"AAAA,wBAAgB,0BAA0B,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAKjF"}
@@ -1,9 +0,0 @@
1
- export function computeNormalizationBudget(maxCostUSD) {
2
- const FLAT_CEIL = 0.01;
3
- if (maxCostUSD === undefined)
4
- return FLAT_CEIL;
5
- if (maxCostUSD <= 0)
6
- return 0;
7
- return Math.min(FLAT_CEIL, 0.2 * maxCostUSD);
8
- }
9
- //# sourceMappingURL=normalization-budget.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"normalization-budget.js","sourceRoot":"","sources":["../../src/readiness/normalization-budget.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,0BAA0B,CAAC,UAA8B;IACvE,MAAM,SAAS,GAAG,IAAI,CAAC;IACvB,IAAI,UAAU,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC/C,IAAI,UAAU,IAAI,CAAC;QAAE,OAAO,CAAC,CAAC;IAC9B,OAAO,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,GAAG,GAAG,UAAU,CAAC,CAAC;AAC/C,CAAC"}
@@ -1,17 +0,0 @@
1
- import type { TaskSpec, MultiModelConfig } from '../types.js';
2
- export interface NormalizationDecision {
3
- original: string;
4
- resolved: string;
5
- reason: string;
6
- }
7
- export interface NormalizationResult {
8
- normalizedPrompt: string;
9
- decisions: NormalizationDecision[];
10
- writeSet: string[];
11
- verificationPlan: string[];
12
- unresolved: string[];
13
- spentCostUSD: number;
14
- skipped: boolean;
15
- }
16
- export declare function normalizeBrief(task: TaskSpec, config: MultiModelConfig): Promise<NormalizationResult>;
17
- //# sourceMappingURL=normalize-brief.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"normalize-brief.d.ts","sourceRoot":"","sources":["../../src/readiness/normalize-brief.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAK9D,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,mBAAmB;IAClC,gBAAgB,EAAE,MAAM,CAAC;IACzB,SAAS,EAAE,qBAAqB,EAAE,CAAC;IACnC,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,OAAO,CAAC;CAClB;AA4BD,wBAAsB,cAAc,CAClC,IAAI,EAAE,QAAQ,EACd,MAAM,EAAE,gBAAgB,GACvB,OAAO,CAAC,mBAAmB,CAAC,CA2C9B"}
@@ -1,124 +0,0 @@
1
- import { createProvider } from '../provider.js';
2
- import { delegateWithEscalation } from '../delegate-with-escalation.js';
3
- import { computeNormalizationBudget } from './normalization-budget.js';
4
- const NORMALIZER_PROMPT = `You are a brief normalizer. Given a task brief, analyze it for vagueness and provide concrete normalization.
5
-
6
- Brief to normalize:
7
- {prompt}
8
-
9
- Respond with a structured normalization using these sections:
10
-
11
- ## Summary
12
- One sentence summary of what needs to be done.
13
-
14
- ## Normalization decisions
15
- - "original phrase" → "concrete interpretation"
16
- List each vague element and its concrete resolution.
17
-
18
- ## Files to change
19
- List the specific files that need modification.
20
-
21
- ## Verification plan
22
- How to verify the task is done correctly.
23
-
24
- ## Unresolved
25
- Any elements that still need clarification.
26
-
27
- ## Done condition
28
- The specific criterion for marking this task complete.`;
29
- export async function normalizeBrief(task, config) {
30
- const budget = computeNormalizationBudget(task.maxCostUSD);
31
- const normalizerTask = {
32
- prompt: NORMALIZER_PROMPT.replace('{prompt}', task.prompt),
33
- agentType: 'standard',
34
- briefQualityPolicy: 'off',
35
- maxCostUSD: budget,
36
- tools: 'none',
37
- };
38
- try {
39
- const provider = createProvider('standard', config);
40
- const result = await delegateWithEscalation(normalizerTask, [provider], { explicitlyPinned: true });
41
- if (result.status !== 'ok') {
42
- return {
43
- normalizedPrompt: task.prompt,
44
- decisions: [],
45
- writeSet: [],
46
- verificationPlan: [],
47
- unresolved: ['Normalization failed: ' + (result.error || result.status)],
48
- spentCostUSD: result.usage.costUSD ?? 0,
49
- skipped: true,
50
- };
51
- }
52
- return parseNormalizationReport(result.output, task.prompt, result.usage.costUSD ?? 0);
53
- }
54
- catch (err) {
55
- return {
56
- normalizedPrompt: task.prompt,
57
- decisions: [],
58
- writeSet: [],
59
- verificationPlan: [],
60
- unresolved: [err instanceof Error ? err.message : String(err)],
61
- spentCostUSD: 0,
62
- skipped: true,
63
- };
64
- }
65
- }
66
- function parseNormalizationReport(output, originalPrompt, costUSD) {
67
- const decisions = [];
68
- const writeSet = [];
69
- const verificationPlan = [];
70
- const unresolved = [];
71
- const decisionMatch = output.match(/## Normalization decisions\n([\s\S]*?)(?=\n##|\n##|$)/i);
72
- if (decisionMatch) {
73
- const lines = decisionMatch[1].split('\n').filter(l => l.trim().startsWith('-'));
74
- for (const line of lines) {
75
- const match = line.match(/- "([^"]+)" → "?([^"\n]+)"?/);
76
- if (match) {
77
- decisions.push({ original: match[1], resolved: match[2], reason: 'normalized' });
78
- }
79
- }
80
- }
81
- const filesMatch = output.match(/## Files to change\n([\s\S]*?)(?=\n##|\n##|$)/i);
82
- if (filesMatch) {
83
- const lines = filesMatch[1].split('\n').filter(l => l.trim() && !l.trim().startsWith('#'));
84
- for (const line of lines) {
85
- const file = line.replace(/^[-*]\s*/, '').trim();
86
- if (file && !file.startsWith('#')) {
87
- writeSet.push(file);
88
- }
89
- }
90
- }
91
- const verifyMatch = output.match(/## Verification plan\n([\s\S]*?)(?=\n##|\n##|$)/i);
92
- if (verifyMatch) {
93
- const lines = verifyMatch[1].split('\n').filter(l => l.trim() && !l.trim().startsWith('#'));
94
- for (const line of lines) {
95
- const item = line.replace(/^[-*]\s*/, '').trim();
96
- if (item && !item.startsWith('#')) {
97
- verificationPlan.push(item);
98
- }
99
- }
100
- }
101
- const unresolvedMatch = output.match(/## Unresolved\n([\s\S]*?)(?=\n##|\n##|$)/i);
102
- if (unresolvedMatch) {
103
- const lines = unresolvedMatch[1].split('\n').filter(l => l.trim() && !l.trim().startsWith('#'));
104
- for (const line of lines) {
105
- const item = line.replace(/^[-*]\s*/, '').trim();
106
- if (item && !item.startsWith('#')) {
107
- unresolved.push(item);
108
- }
109
- }
110
- }
111
- const normalizedPrompt = decisions.length > 0
112
- ? decisions.reduce((prompt, d) => prompt.replace(d.original, d.resolved), originalPrompt)
113
- : originalPrompt;
114
- return {
115
- normalizedPrompt,
116
- decisions,
117
- writeSet,
118
- verificationPlan,
119
- unresolved,
120
- spentCostUSD: costUSD,
121
- skipped: false,
122
- };
123
- }
124
- //# sourceMappingURL=normalize-brief.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"normalize-brief.js","sourceRoot":"","sources":["../../src/readiness/normalize-brief.ts"],"names":[],"mappings":"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"}