@zhixuan92/multi-model-agent-core 5.2.2 → 5.3.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 (62) hide show
  1. package/dist/config/model-profile-registry.d.ts +0 -1
  2. package/dist/config/model-profile-registry.d.ts.map +1 -1
  3. package/dist/config/model-profile-registry.js +0 -3
  4. package/dist/config/model-profile-registry.js.map +1 -1
  5. package/dist/config/schema.d.ts +10 -17
  6. package/dist/config/schema.d.ts.map +1 -1
  7. package/dist/config/schema.js +11 -22
  8. package/dist/config/schema.js.map +1 -1
  9. package/dist/error-codes.d.ts +0 -2
  10. package/dist/error-codes.d.ts.map +1 -1
  11. package/dist/error-codes.js +0 -15
  12. package/dist/error-codes.js.map +1 -1
  13. package/dist/events/to-wire-record.d.ts.map +1 -1
  14. package/dist/events/to-wire-record.js +2 -4
  15. package/dist/events/to-wire-record.js.map +1 -1
  16. package/dist/research/adapters/crossref.d.ts +7 -0
  17. package/dist/research/adapters/crossref.d.ts.map +1 -0
  18. package/dist/research/adapters/crossref.js +80 -0
  19. package/dist/research/adapters/crossref.js.map +1 -0
  20. package/dist/research/adapters/index.d.ts +4 -0
  21. package/dist/research/adapters/index.d.ts.map +1 -1
  22. package/dist/research/adapters/index.js +10 -1
  23. package/dist/research/adapters/index.js.map +1 -1
  24. package/dist/research/adapters/openalex.d.ts +7 -0
  25. package/dist/research/adapters/openalex.d.ts.map +1 -0
  26. package/dist/research/adapters/openalex.js +77 -0
  27. package/dist/research/adapters/openalex.js.map +1 -0
  28. package/dist/research/adapters/pubmed.d.ts +7 -0
  29. package/dist/research/adapters/pubmed.d.ts.map +1 -0
  30. package/dist/research/adapters/pubmed.js +108 -0
  31. package/dist/research/adapters/pubmed.js.map +1 -0
  32. package/dist/research/adapters/redact-adapter-url.d.ts +3 -0
  33. package/dist/research/adapters/redact-adapter-url.d.ts.map +1 -0
  34. package/dist/research/adapters/redact-adapter-url.js +21 -0
  35. package/dist/research/adapters/redact-adapter-url.js.map +1 -0
  36. package/dist/research/adapters/types.d.ts +1 -1
  37. package/dist/research/adapters/types.d.ts.map +1 -1
  38. package/dist/research/evidence-pack.d.ts +2 -2
  39. package/dist/research/evidence-pack.d.ts.map +1 -1
  40. package/dist/research/evidence-pack.js +6 -3
  41. package/dist/research/evidence-pack.js.map +1 -1
  42. package/dist/research/index.d.ts +2 -2
  43. package/dist/research/index.d.ts.map +1 -1
  44. package/dist/research/index.js +1 -1
  45. package/dist/research/index.js.map +1 -1
  46. package/dist/research/orchestrator.d.ts +40 -2
  47. package/dist/research/orchestrator.d.ts.map +1 -1
  48. package/dist/research/orchestrator.js +102 -16
  49. package/dist/research/orchestrator.js.map +1 -1
  50. package/dist/research/query-plan.d.ts +17 -1
  51. package/dist/research/query-plan.d.ts.map +1 -1
  52. package/dist/research/query-plan.js +13 -3
  53. package/dist/research/query-plan.js.map +1 -1
  54. package/dist/research/web-search.d.ts +8 -1
  55. package/dist/research/web-search.d.ts.map +1 -1
  56. package/dist/research/web-search.js +16 -4
  57. package/dist/research/web-search.js.map +1 -1
  58. package/dist/unified/two-phase-pipeline.d.ts.map +1 -1
  59. package/dist/unified/two-phase-pipeline.js +11 -1
  60. package/dist/unified/two-phase-pipeline.js.map +1 -1
  61. package/package.json +1 -5
  62. package/src/skills/research/implement.md +30 -2
@@ -1,34 +1,86 @@
1
- //
2
- // Step 2 of the /research pipeline. Deterministic Node-only fan-out across
3
- // enabled adapters + Brave, with per-adapter timeout, concurrency cap scoped
4
- // to this single call, and post-budget evidence pack assembly.
5
1
  import { applyBudget, } from './evidence-pack.js';
6
2
  const TASK_TO_GROUP = {
7
3
  brave: 'brave',
4
+ brave_news: 'brave_news',
8
5
  arxiv: 'arxiv',
9
6
  ss: 'semantic_scholar',
10
7
  gh_repo: 'github_repo',
11
8
  gh_code: 'github_code',
9
+ openalex: 'openalex',
10
+ crossref: 'crossref',
11
+ pubmed: 'pubmed',
12
12
  };
13
13
  function buildTasks(plan) {
14
14
  const tasks = [];
15
- for (const q of plan.braveQueries)
16
- tasks.push({ kind: 'brave', query: q });
15
+ for (const bq of plan.braveQueries) {
16
+ const query = bq.siteFilter ? `${bq.siteFilter} ${bq.q}` : bq.q;
17
+ if (bq.endpoint === 'news') {
18
+ tasks.push({ kind: 'brave_news', query, freshness: bq.freshness, siteFilter: bq.siteFilter });
19
+ }
20
+ else {
21
+ tasks.push({ kind: 'brave', query, freshness: bq.freshness, siteFilter: bq.siteFilter });
22
+ }
23
+ }
17
24
  for (const q of plan.arxivQueries)
18
25
  tasks.push({ kind: 'arxiv', query: q });
19
26
  for (const q of plan.semanticScholarQueries)
20
27
  tasks.push({ kind: 'ss', query: q });
21
28
  for (const g of plan.githubQueries)
22
29
  tasks.push({ kind: g.kind === 'repo' ? 'gh_repo' : 'gh_code', query: g.q });
30
+ for (const q of plan.openalexQueries)
31
+ tasks.push({ kind: 'openalex', query: q });
32
+ for (const q of plan.crossrefQueries)
33
+ tasks.push({ kind: 'crossref', query: q });
34
+ for (const q of plan.pubmedQueries)
35
+ tasks.push({ kind: 'pubmed', query: q });
23
36
  return tasks;
24
37
  }
25
38
  function isAdapterEnabled(kind, enabled) {
26
39
  switch (kind) {
40
+ case 'brave':
41
+ case 'brave_news': return true;
27
42
  case 'arxiv': return enabled.includes('arxiv');
28
43
  case 'ss': return enabled.includes('semantic_scholar');
29
44
  case 'gh_repo':
30
45
  case 'gh_code': return enabled.includes('github_search');
31
- case 'brave': return true;
46
+ case 'openalex': return enabled.includes('openalex');
47
+ case 'crossref': return enabled.includes('crossref');
48
+ case 'pubmed': return enabled.includes('pubmed');
49
+ }
50
+ }
51
+ /** Per-adapter concurrency limits per spec (rate-limiting, timeouts, and error recovery). */
52
+ const ADAPTER_CONCURRENCY = {
53
+ brave: 5,
54
+ brave_news: 5,
55
+ openalex: 10,
56
+ crossref: 5,
57
+ pubmed: 2, // 3 req/s hard limit without key; conservative
58
+ arxiv: 1, // arXiv asks for sequential access
59
+ ss: 3,
60
+ gh_repo: 3,
61
+ gh_code: 3,
62
+ };
63
+ /** Simple semaphore for per-adapter concurrency control. */
64
+ class Semaphore {
65
+ max;
66
+ running = 0;
67
+ queue = [];
68
+ constructor(max) {
69
+ this.max = max;
70
+ }
71
+ async acquire() {
72
+ if (this.running < this.max) {
73
+ this.running++;
74
+ return;
75
+ }
76
+ await new Promise(resolve => this.queue.push(resolve));
77
+ this.running++;
78
+ }
79
+ release() {
80
+ this.running--;
81
+ const next = this.queue.shift();
82
+ if (next)
83
+ next();
32
84
  }
33
85
  }
34
86
  function withTimeout(p, ms) {
@@ -37,7 +89,7 @@ function withTimeout(p, ms) {
37
89
  p.then(v => { clearTimeout(t); resolve(v); }, e => { clearTimeout(t); reject(e); });
38
90
  });
39
91
  }
40
- async function runOne(task, deps, sources, fails) {
92
+ async function runOne(task, deps, sources, fails, semaphores) {
41
93
  if (!isAdapterEnabled(task.kind, deps.enabledAdapters)) {
42
94
  fails.push({
43
95
  source: TASK_TO_GROUP[task.kind],
@@ -47,12 +99,21 @@ async function runOne(task, deps, sources, fails) {
47
99
  return;
48
100
  }
49
101
  const queryStr = task.query;
102
+ const sem = semaphores.get(task.kind);
103
+ await sem.acquire();
50
104
  try {
51
105
  let raw;
52
106
  switch (task.kind) {
53
107
  case 'brave':
54
- raw = await withTimeout(deps.brave.search(task.query), deps.perAdapterTimeoutMs);
108
+ case 'brave_news': {
109
+ const opts = {
110
+ endpoint: task.kind === 'brave_news' ? 'news' : 'web',
111
+ freshness: task.freshness,
112
+ extraSnippets: true,
113
+ };
114
+ raw = await withTimeout(deps.brave.search(task.query, opts), deps.perAdapterTimeoutMs);
55
115
  break;
116
+ }
56
117
  case 'arxiv':
57
118
  raw = await withTimeout(deps.adapters.arxiv(task.query), deps.perAdapterTimeoutMs);
58
119
  break;
@@ -65,14 +126,30 @@ async function runOne(task, deps, sources, fails) {
65
126
  case 'gh_code':
66
127
  raw = await withTimeout(deps.adapters.github(task.query, 'code'), deps.perAdapterTimeoutMs);
67
128
  break;
129
+ case 'openalex':
130
+ raw = await withTimeout(deps.adapters.openalex(task.query), deps.perAdapterTimeoutMs);
131
+ break;
132
+ case 'crossref':
133
+ raw = await withTimeout(deps.adapters.crossref(task.query), deps.perAdapterTimeoutMs);
134
+ break;
135
+ case 'pubmed':
136
+ raw = await withTimeout(deps.adapters.pubmed(task.query), deps.perAdapterTimeoutMs);
137
+ break;
68
138
  }
69
- // Normalize each task's result to EvidenceSource[].
70
- if (task.kind === 'brave') {
139
+ if (task.kind === 'brave' || task.kind === 'brave_news') {
71
140
  const br = raw;
72
- br.results.forEach((r, i) => sources.push({
73
- source: 'brave', query: queryStr,
74
- title: r.title, url: r.url, snippet: r.snippet, rank: i,
75
- }));
141
+ br.results.forEach((r, i) => {
142
+ const snippetParts = [r.snippet];
143
+ if (r.extraSnippets)
144
+ snippetParts.push(...r.extraSnippets);
145
+ sources.push({
146
+ source: TASK_TO_GROUP[task.kind], query: queryStr,
147
+ title: r.title, url: r.url,
148
+ snippet: snippetParts.join('\n'),
149
+ publishedAt: r.pageAge,
150
+ rank: i,
151
+ });
152
+ });
76
153
  }
77
154
  else {
78
155
  const arr = raw;
@@ -89,11 +166,19 @@ async function runOne(task, deps, sources, fails) {
89
166
  reason: e.message || 'unknown',
90
167
  });
91
168
  }
169
+ finally {
170
+ sem.release();
171
+ }
92
172
  }
93
173
  export async function runOrchestrator(plan, deps) {
94
174
  const tasks = buildTasks(plan);
95
175
  const sources = [];
96
176
  const fails = [];
177
+ // Per-adapter semaphores for concurrency enforcement
178
+ const semaphores = new Map();
179
+ for (const kind of Object.keys(ADAPTER_CONCURRENCY)) {
180
+ semaphores.set(kind, new Semaphore(ADAPTER_CONCURRENCY[kind]));
181
+ }
97
182
  let cursor = 0;
98
183
  const workers = [];
99
184
  const worker = async () => {
@@ -101,7 +186,7 @@ export async function runOrchestrator(plan, deps) {
101
186
  const idx = cursor++;
102
187
  if (idx >= tasks.length)
103
188
  return;
104
- await runOne(tasks[idx], deps, sources, fails);
189
+ await runOne(tasks[idx], deps, sources, fails, semaphores);
105
190
  }
106
191
  };
107
192
  for (let i = 0; i < Math.min(deps.concurrencyCap, tasks.length); i++) {
@@ -110,4 +195,5 @@ export async function runOrchestrator(plan, deps) {
110
195
  await Promise.all(workers);
111
196
  return applyBudget(sources, fails);
112
197
  }
198
+ export { ADAPTER_CONCURRENCY };
113
199
  //# sourceMappingURL=orchestrator.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"orchestrator.js","sourceRoot":"","sources":["../../src/research/orchestrator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"orchestrator.js","sourceRoot":"","sources":["../../src/research/orchestrator.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,19 @@
1
1
  import { z } from 'zod';
2
2
  export declare const QueryPlanSchema: z.ZodObject<{
3
- braveQueries: z.ZodArray<z.ZodString>;
3
+ braveQueries: z.ZodArray<z.ZodObject<{
4
+ q: z.ZodString;
5
+ freshness: z.ZodOptional<z.ZodUnion<readonly [z.ZodEnum<{
6
+ pd: "pd";
7
+ pw: "pw";
8
+ pm: "pm";
9
+ py: "py";
10
+ }>, z.ZodString]>>;
11
+ endpoint: z.ZodDefault<z.ZodEnum<{
12
+ web: "web";
13
+ news: "news";
14
+ }>>;
15
+ siteFilter: z.ZodOptional<z.ZodString>;
16
+ }, z.core.$strip>>;
4
17
  arxivQueries: z.ZodArray<z.ZodString>;
5
18
  semanticScholarQueries: z.ZodArray<z.ZodString>;
6
19
  githubQueries: z.ZodArray<z.ZodObject<{
@@ -10,6 +23,9 @@ export declare const QueryPlanSchema: z.ZodObject<{
10
23
  repo: "repo";
11
24
  }>;
12
25
  }, z.core.$strip>>;
26
+ openalexQueries: z.ZodDefault<z.ZodArray<z.ZodString>>;
27
+ crossrefQueries: z.ZodDefault<z.ZodArray<z.ZodString>>;
28
+ pubmedQueries: z.ZodDefault<z.ZodArray<z.ZodString>>;
13
29
  }, z.core.$strict>;
14
30
  export type QueryPlan = z.infer<typeof QueryPlanSchema>;
15
31
  export declare function parseQueryPlan(json: string): QueryPlan;
@@ -1 +1 @@
1
- {"version":3,"file":"query-plan.d.ts","sourceRoot":"","sources":["../../src/research/query-plan.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,eAAO,MAAM,eAAe;;;;;;;;;;;kBAQjB,CAAC;AAEZ,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAExD,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAYtD"}
1
+ {"version":3,"file":"query-plan.d.ts","sourceRoot":"","sources":["../../src/research/query-plan.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAexB,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAWjB,CAAC;AAEZ,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAExD,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAYtD"}
@@ -1,16 +1,26 @@
1
- // Zod schema for the structured output the worker emits in turn 1.
2
- // Bounds: 0..8 entries per query list, ≤ 200 chars per query.
3
1
  import { z } from 'zod';
4
2
  const Query200 = z.string().min(1).max(200);
5
3
  const Queries = z.array(Query200).max(8);
4
+ const BraveQuery = z.object({
5
+ q: Query200,
6
+ freshness: z.union([
7
+ z.enum(['pd', 'pw', 'pm', 'py']),
8
+ z.string().regex(/^\d{4}-\d{2}-\d{2}to\d{4}-\d{2}-\d{2}$/),
9
+ ]).optional(),
10
+ endpoint: z.enum(['web', 'news']).default('web'),
11
+ siteFilter: z.string().max(100).optional(),
12
+ });
6
13
  export const QueryPlanSchema = z.object({
7
- braveQueries: Queries,
14
+ braveQueries: z.array(BraveQuery).max(8),
8
15
  arxivQueries: Queries,
9
16
  semanticScholarQueries: Queries,
10
17
  githubQueries: z.array(z.object({
11
18
  q: Query200,
12
19
  kind: z.enum(['repo', 'code']),
13
20
  })).max(8),
21
+ openalexQueries: Queries.default([]),
22
+ crossrefQueries: Queries.default([]),
23
+ pubmedQueries: Queries.default([]),
14
24
  }).strict();
15
25
  export function parseQueryPlan(json) {
16
26
  let raw;
@@ -1 +1 @@
1
- {"version":3,"file":"query-plan.js","sourceRoot":"","sources":["../../src/research/query-plan.ts"],"names":[],"mappings":"AAAA,mEAAmE;AACnE,8DAA8D;AAC9D,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,QAAQ,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAC5C,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAEzC,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IACtC,YAAY,EAAY,OAAO;IAC/B,YAAY,EAAY,OAAO;IAC/B,sBAAsB,EAAE,OAAO;IAC/B,aAAa,EAAW,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;QACvC,CAAC,EAAK,QAAQ;QACd,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KAC/B,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;CACX,CAAC,CAAC,MAAM,EAAE,CAAC;AAIZ,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,IAAI,GAAY,CAAC;IACjB,IAAI,CAAC;QACH,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACzB,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,gCAAiC,CAAW,CAAC,OAAO,EAAE,CAAC,CAAC;IAC1E,CAAC;IACD,MAAM,CAAC,GAAG,eAAe,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IACzC,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IAC5E,CAAC;IACD,OAAO,CAAC,CAAC,IAAI,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"query-plan.js","sourceRoot":"","sources":["../../src/research/query-plan.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,QAAQ,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAC5C,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAEzC,MAAM,UAAU,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1B,CAAC,EAAW,QAAQ;IACpB,SAAS,EAAG,CAAC,CAAC,KAAK,CAAC;QAClB,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QAChC,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,wCAAwC,CAAC;KAC3D,CAAC,CAAC,QAAQ,EAAE;IACb,QAAQ,EAAI,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC;IAClD,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;CAC3C,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IACtC,YAAY,EAAY,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAClD,YAAY,EAAY,OAAO;IAC/B,sBAAsB,EAAE,OAAO;IAC/B,aAAa,EAAW,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;QACvC,CAAC,EAAK,QAAQ;QACd,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KAC/B,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACV,eAAe,EAAS,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;IAC3C,eAAe,EAAS,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;IAC3C,aAAa,EAAW,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;CAC5C,CAAC,CAAC,MAAM,EAAE,CAAC;AAIZ,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,IAAI,GAAY,CAAC;IACjB,IAAI,CAAC;QACH,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACzB,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,gCAAiC,CAAW,CAAC,OAAO,EAAE,CAAC,CAAC;IAC1E,CAAC;IACD,MAAM,CAAC,GAAG,eAAe,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IACzC,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IAC5E,CAAC;IACD,OAAO,CAAC,CAAC,IAAI,CAAC;AAChB,CAAC"}
@@ -1,8 +1,15 @@
1
1
  import type { ResearchConfig } from '../config/schema.js';
2
+ export interface BraveSearchOptions {
3
+ freshness?: string;
4
+ endpoint?: 'web' | 'news';
5
+ extraSnippets?: boolean;
6
+ }
2
7
  export interface BraveSearchResult {
3
8
  title: string;
4
9
  url: string;
5
10
  snippet: string;
11
+ pageAge?: string;
12
+ extraSnippets?: string[];
6
13
  }
7
14
  export interface BraveSearchResponse {
8
15
  results: BraveSearchResult[];
@@ -24,6 +31,6 @@ export declare class BraveClient {
24
31
  random?: () => number;
25
32
  });
26
33
  private takeKeySlot;
27
- search(query: string, siteFilter?: string): Promise<BraveSearchResponse>;
34
+ search(query: string, options?: BraveSearchOptions): Promise<BraveSearchResponse>;
28
35
  }
29
36
  //# sourceMappingURL=web-search.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"web-search.d.ts","sourceRoot":"","sources":["../../src/research/web-search.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAE1D,MAAM,WAAW,iBAAiB;IAAG,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;CAAE;AACnF,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,iBAAiB,EAAE,CAAC;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,KAAK,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAAC,CAAC;CACjE;AAsBD,qBAAa,WAAW;IAoBpB,OAAO,CAAC,QAAQ,CAAC,GAAG;IAnBtB,OAAO,CAAC,YAAY,CAAK;IAKzB,OAAO,CAAC,aAAa,CAAgB;IAOrC,OAAO,CAAC,SAAS,CAAoC;IAGrD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgC;IACvD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAe;gBAGpB,GAAG,EAAE,cAAc,CAAC,OAAO,CAAC,EAC7C,IAAI,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,MAAM,CAAA;KAAE;YAY3D,WAAW;IA2BnB,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC;CAgF/E"}
1
+ {"version":3,"file":"web-search.d.ts","sourceRoot":"","sources":["../../src/research/web-search.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAE1D,MAAM,WAAW,kBAAkB;IACjC,SAAS,CAAC,EAAM,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAO,KAAK,GAAG,MAAM,CAAC;IAC/B,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AACD,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;CAC1B;AACD,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,iBAAiB,EAAE,CAAC;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,KAAK,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAAC,CAAC;CACjE;AA2BD,qBAAa,WAAW;IAoBpB,OAAO,CAAC,QAAQ,CAAC,GAAG;IAnBtB,OAAO,CAAC,YAAY,CAAK;IAKzB,OAAO,CAAC,aAAa,CAAgB;IAOrC,OAAO,CAAC,SAAS,CAAoC;IAGrD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgC;IACvD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAe;gBAGpB,GAAG,EAAE,cAAc,CAAC,OAAO,CAAC,EAC7C,IAAI,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,MAAM,CAAA;KAAE;YAY3D,WAAW;IA2BnB,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,mBAAmB,CAAC;CAwFxF"}
@@ -15,10 +15,15 @@ function validateBraveResults(body) {
15
15
  return { title: `[invalid entry ${i}]`, url: '', snippet: '' };
16
16
  }
17
17
  const item = r;
18
+ const extraSnippets = Array.isArray(item.extra_snippets)
19
+ ? item.extra_snippets.filter((s) => typeof s === 'string')
20
+ : undefined;
18
21
  return {
19
22
  title: typeof item.title === 'string' ? item.title : `[missing title ${i}]`,
20
23
  url: typeof item.url === 'string' ? item.url : '',
21
24
  snippet: typeof item.snippet === 'string' ? item.snippet : '',
25
+ pageAge: typeof item.page_age === 'string' ? item.page_age : undefined,
26
+ extraSnippets: extraSnippets && extraSnippets.length > 0 ? extraSnippets : undefined,
22
27
  };
23
28
  });
24
29
  }
@@ -77,13 +82,20 @@ export class BraveClient {
77
82
  release();
78
83
  }
79
84
  }
80
- async search(query, siteFilter) {
85
+ async search(query, options) {
81
86
  if (this.cfg.apiKeys.length === 0) {
82
87
  throw new Error('brave_not_configured: no API keys configured');
83
88
  }
84
- const url = new URL('https://api.search.brave.com/res/v1/web/search');
85
- url.searchParams.set('q', siteFilter ? `${siteFilter} ${query}` : query);
86
- url.searchParams.set('count', String(this.cfg.maxResultsPerQuery));
89
+ const endpoint = options?.endpoint ?? 'web';
90
+ const basePath = endpoint === 'news' ? '/res/v1/news/search' : '/res/v1/web/search';
91
+ const count = endpoint === 'news' ? 50 : 20;
92
+ const url = new URL(`https://api.search.brave.com${basePath}`);
93
+ url.searchParams.set('q', query);
94
+ url.searchParams.set('count', String(count));
95
+ if (options?.freshness) {
96
+ url.searchParams.set('freshness', options.freshness);
97
+ }
98
+ url.searchParams.set('extra_snippets', 'true');
87
99
  const maxAttempts = Math.min(this.cfg.apiKeys.length, 4);
88
100
  const attempts = [];
89
101
  const deadline = Date.now() + this.cfg.timeoutMs;
@@ -1 +1 @@
1
- {"version":3,"file":"web-search.js","sourceRoot":"","sources":["../../src/research/web-search.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"web-search.js","sourceRoot":"","sources":["../../src/research/web-search.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"two-phase-pipeline.d.ts","sourceRoot":"","sources":["../../src/unified/two-phase-pipeline.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAW,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAC5E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAClE,OAAO,EAAuB,KAAK,cAAc,EAAE,MAAM,6BAA6B,CAAC;AACvF,OAAO,EAAmB,KAAK,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAE3E,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,QAAQ,CAAC;IACf,gBAAgB,EAAE,MAAM,CAAC;IACzB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,mBAAmB,EAAE,QAAQ,CAAC;IAC9B,gBAAgB,EAAE,QAAQ,CAAC;IAC3B,eAAe,EAAE,SAAS,CAAC;IAC3B,YAAY,EAAE,SAAS,CAAC;IACxB,YAAY,EAAE,UAAU,GAAG,MAAM,CAAC;IAClC,GAAG,EAAE,MAAM,CAAC;IACZ,aAAa,EAAE,aAAa,CAAC;IAC7B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,8EAA8E;IAC9E,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,uCAAuC;IACvC,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,SAAS,CAAC;IAChB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,eAAe,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,GAAG,oBAAoB,GAAG,QAAQ,CAAC;IACjD,iBAAiB,EAAE,MAAM,CAAC;IAC1B,eAAe,EAAE,UAAU,CAAC;IAC5B,cAAc,EAAE,cAAc,GAAG,IAAI,CAAC;IACtC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,YAAY,EAAE,UAAU,GAAG,IAAI,CAAC;IAChC,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,QAAQ,EAAE;QACR,WAAW,EAAE,WAAW,CAAC;QACzB,QAAQ,EAAE,WAAW,GAAG,IAAI,CAAC;KAC9B,CAAC;IACF,IAAI,EAAE;QACJ,cAAc,EAAE,MAAM,CAAC;QACvB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;KAC5B,CAAC;IACF,QAAQ,EAAE,YAAY,GAAG,IAAI,CAAC;CAC/B;AAED,wBAAsB,mBAAmB,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,cAAc,CAAC,CAsGvF"}
1
+ {"version":3,"file":"two-phase-pipeline.d.ts","sourceRoot":"","sources":["../../src/unified/two-phase-pipeline.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAW,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAC5E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAClE,OAAO,EAAuB,KAAK,cAAc,EAAE,MAAM,6BAA6B,CAAC;AACvF,OAAO,EAAmB,KAAK,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAE3E,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,QAAQ,CAAC;IACf,gBAAgB,EAAE,MAAM,CAAC;IACzB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,mBAAmB,EAAE,QAAQ,CAAC;IAC9B,gBAAgB,EAAE,QAAQ,CAAC;IAC3B,eAAe,EAAE,SAAS,CAAC;IAC3B,YAAY,EAAE,SAAS,CAAC;IACxB,YAAY,EAAE,UAAU,GAAG,MAAM,CAAC;IAClC,GAAG,EAAE,MAAM,CAAC;IACZ,aAAa,EAAE,aAAa,CAAC;IAC7B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,8EAA8E;IAC9E,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,uCAAuC;IACvC,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,SAAS,CAAC;IAChB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,eAAe,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,GAAG,oBAAoB,GAAG,QAAQ,CAAC;IACjD,iBAAiB,EAAE,MAAM,CAAC;IAC1B,eAAe,EAAE,UAAU,CAAC;IAC5B,cAAc,EAAE,cAAc,GAAG,IAAI,CAAC;IACtC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,YAAY,EAAE,UAAU,GAAG,IAAI,CAAC;IAChC,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,QAAQ,EAAE;QACR,WAAW,EAAE,WAAW,CAAC;QACzB,QAAQ,EAAE,WAAW,GAAG,IAAI,CAAC;KAC9B,CAAC;IACF,IAAI,EAAE;QACJ,cAAc,EAAE,MAAM,CAAC;QACvB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;KAC5B,CAAC;IACF,QAAQ,EAAE,YAAY,GAAG,IAAI,CAAC;CAC/B;AAED,wBAAsB,mBAAmB,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,cAAc,CAAC,CAiHvF"}
@@ -13,6 +13,16 @@ export async function runTwoPhasePipeline(input) {
13
13
  effectiveCwd = created.path;
14
14
  wtInfo = { branch: created.branch, path: created.path };
15
15
  }
16
+ // --- Rewrite file paths in the payload to use the worktree cwd ---
17
+ // When a worktree is active, the taskPayload may contain absolute paths
18
+ // referencing the original cwd (e.g. plan file paths). The implementer's
19
+ // session cwd is the worktree, so it will infer the repo root from those
20
+ // paths and write files to the original repo instead of the worktree.
21
+ // Rewriting the paths removes this ambiguity.
22
+ let effectivePayload = input.taskPayload;
23
+ if (effectiveCwd !== input.cwd) {
24
+ effectivePayload = input.taskPayload.replaceAll(input.cwd, effectiveCwd);
25
+ }
16
26
  const sessions = [];
17
27
  // --- Worktree cleanup helper ---
18
28
  const resolveWorktree = async () => {
@@ -34,7 +44,7 @@ export async function runTwoPhasePipeline(input) {
34
44
  taskIndex: 0,
35
45
  });
36
46
  sessions.push(implSession);
37
- const implPrompt = `${input.implementerSkill}\n\n---\n\n## Task\n\n${input.taskPayload}`;
47
+ const implPrompt = `${input.implementerSkill}\n\n---\n\n## Task\n\n${effectivePayload}`;
38
48
  const implTurn = await implSession.send(implPrompt, {
39
49
  ...(input.implementerGoal && { goalCondition: input.implementerGoal }),
40
50
  });
@@ -1 +1 @@
1
- {"version":3,"file":"two-phase-pipeline.js","sourceRoot":"","sources":["../../src/unified/two-phase-pipeline.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"two-phase-pipeline.js","sourceRoot":"","sources":["../../src/unified/two-phase-pipeline.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": "5.2.2",
3
+ "version": "5.3.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.",
@@ -89,10 +89,6 @@
89
89
  "types": "./dist/events/stderr-log-subscriber.d.ts",
90
90
  "import": "./dist/events/stderr-log-subscriber.js"
91
91
  },
92
- "./bounded-execution/file-artifact-check": {
93
- "types": "./dist/bounded-execution/file-artifact-check.d.ts",
94
- "import": "./dist/bounded-execution/file-artifact-check.js"
95
- },
96
92
  "./events/consent-rules": {
97
93
  "types": "./dist/events/consent-rules.d.ts",
98
94
  "import": "./dist/events/consent-rules.js"
@@ -46,6 +46,9 @@ Phrase Brave/adapter queries as topical keywords, not full sentences from the us
46
46
  - **semantic_scholar**: natural keywords, no field syntax. Example: `stablecoin adoption mechanism`.
47
47
  - **github repo**: qualifiers like `language:solidity stars:>50 topic:stablecoin`. Code search requires PAT (treat as may-fail).
48
48
  - **brave**: phrase as you would in a search engine; add `site:` filters for trusted domains.
49
+ - **openalex**: natural keywords, broadest academic coverage (250M+ works). Example: `stablecoin mechanism design`.
50
+ - **crossref**: natural keywords, targets DOI-registered publications. Example: `stablecoin adoption`.
51
+ - **pubmed**: MeSH terms preferred, biomedical focus. Example: `CRISPR delivery nanoparticle`.
49
52
 
50
53
  Constraints: <= 8 entries per adapter list, <= 200 chars per query string.
51
54
 
@@ -64,15 +67,40 @@ If this is the planning turn, emit ONLY a structured query plan as JSON (no pros
64
67
 
65
68
  ```json
66
69
  {
67
- "braveQueries": ["<string>"],
70
+ "braveQueries": [{"q": "<query>", "freshness": "pd|pw|pm|py", "endpoint": "web|news", "siteFilter": "site:domain.com"}],
68
71
  "arxivQueries": ["<string>"],
69
72
  "semanticScholarQueries": ["<string>"],
70
- "githubQueries": [{"q": "<string>", "kind": "repo|code"}]
73
+ "githubQueries": [{"q": "<string>", "kind": "repo|code"}],
74
+ "openalexQueries": ["<string>"],
75
+ "crossrefQueries": ["<string>"],
76
+ "pubmedQueries": ["<string>"]
71
77
  }
72
78
  ```
73
79
 
74
80
  Empty arrays are allowed for sources you do not need. Emit ONLY the JSON object — no prose, no preamble, no code fences.
75
81
 
82
+ ### Brave Search Strategy
83
+
84
+ Each brave query object can carry optional strategy fields:
85
+
86
+ - **freshness**: Use when the question involves recent/current data.
87
+ - 'pd' (past day): breaking news, today's prices
88
+ - 'pw' (past week): recent announcements, weekly reports
89
+ - 'pm' (past month): quarterly earnings, recent publications
90
+ - 'py' (past year): annual reports, year-in-review
91
+ - 'YYYY-MM-DDtoYYYY-MM-DD': specific date range
92
+ - Omit for historical/background questions.
93
+
94
+ - **endpoint**: 'web' (default) or 'news'.
95
+ - Use 'news' for: financial reports, earnings, current events, policy announcements, product launches.
96
+ - Use 'web' for: documentation, tutorials, technical references, historical information.
97
+
98
+ - **siteFilter**: restrict to a specific domain.
99
+ - Examples: 'site:sec.gov' (SEC filings), 'site:who.int' (WHO reports), 'site:arxiv.org' (preprints via web).
100
+ - Omit for broad searches.
101
+
102
+ A single research question should produce a mix of strategies — broad web queries for background, freshness-filtered queries for current data, and news queries when the topic has news coverage.
103
+
76
104
  ## Output Format
77
105
 
78
106
  After completing research, output exactly one JSON block: