@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.
- package/dist/config/model-profile-registry.d.ts +0 -1
- package/dist/config/model-profile-registry.d.ts.map +1 -1
- package/dist/config/model-profile-registry.js +0 -3
- package/dist/config/model-profile-registry.js.map +1 -1
- package/dist/config/schema.d.ts +10 -17
- package/dist/config/schema.d.ts.map +1 -1
- package/dist/config/schema.js +11 -22
- package/dist/config/schema.js.map +1 -1
- package/dist/error-codes.d.ts +0 -2
- package/dist/error-codes.d.ts.map +1 -1
- package/dist/error-codes.js +0 -15
- package/dist/error-codes.js.map +1 -1
- package/dist/events/to-wire-record.d.ts.map +1 -1
- package/dist/events/to-wire-record.js +2 -4
- package/dist/events/to-wire-record.js.map +1 -1
- package/dist/research/adapters/crossref.d.ts +7 -0
- package/dist/research/adapters/crossref.d.ts.map +1 -0
- package/dist/research/adapters/crossref.js +80 -0
- package/dist/research/adapters/crossref.js.map +1 -0
- package/dist/research/adapters/index.d.ts +4 -0
- package/dist/research/adapters/index.d.ts.map +1 -1
- package/dist/research/adapters/index.js +10 -1
- package/dist/research/adapters/index.js.map +1 -1
- package/dist/research/adapters/openalex.d.ts +7 -0
- package/dist/research/adapters/openalex.d.ts.map +1 -0
- package/dist/research/adapters/openalex.js +77 -0
- package/dist/research/adapters/openalex.js.map +1 -0
- package/dist/research/adapters/pubmed.d.ts +7 -0
- package/dist/research/adapters/pubmed.d.ts.map +1 -0
- package/dist/research/adapters/pubmed.js +108 -0
- package/dist/research/adapters/pubmed.js.map +1 -0
- package/dist/research/adapters/redact-adapter-url.d.ts +3 -0
- package/dist/research/adapters/redact-adapter-url.d.ts.map +1 -0
- package/dist/research/adapters/redact-adapter-url.js +21 -0
- package/dist/research/adapters/redact-adapter-url.js.map +1 -0
- package/dist/research/adapters/types.d.ts +1 -1
- package/dist/research/adapters/types.d.ts.map +1 -1
- package/dist/research/evidence-pack.d.ts +2 -2
- package/dist/research/evidence-pack.d.ts.map +1 -1
- package/dist/research/evidence-pack.js +6 -3
- package/dist/research/evidence-pack.js.map +1 -1
- package/dist/research/index.d.ts +2 -2
- package/dist/research/index.d.ts.map +1 -1
- package/dist/research/index.js +1 -1
- package/dist/research/index.js.map +1 -1
- package/dist/research/orchestrator.d.ts +40 -2
- package/dist/research/orchestrator.d.ts.map +1 -1
- package/dist/research/orchestrator.js +102 -16
- package/dist/research/orchestrator.js.map +1 -1
- package/dist/research/query-plan.d.ts +17 -1
- package/dist/research/query-plan.d.ts.map +1 -1
- package/dist/research/query-plan.js +13 -3
- package/dist/research/query-plan.js.map +1 -1
- package/dist/research/web-search.d.ts +8 -1
- package/dist/research/web-search.d.ts.map +1 -1
- package/dist/research/web-search.js +16 -4
- package/dist/research/web-search.js.map +1 -1
- package/dist/unified/two-phase-pipeline.d.ts.map +1 -1
- package/dist/unified/two-phase-pipeline.js +11 -1
- package/dist/unified/two-phase-pipeline.js.map +1 -1
- package/package.json +1 -5
- 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
|
|
16
|
-
|
|
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 '
|
|
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
|
-
|
|
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
|
-
|
|
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) =>
|
|
73
|
-
|
|
74
|
-
|
|
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":"
|
|
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.
|
|
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":"
|
|
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:
|
|
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,
|
|
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,
|
|
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;
|
|
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,
|
|
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
|
|
85
|
-
|
|
86
|
-
|
|
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":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AACjC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;
|
|
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,
|
|
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${
|
|
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":"AAGA,OAAO,EAAE,mBAAmB,EAAuB,MAAM,6BAA6B,CAAC;AACvF,OAAO,EAAE,eAAe,EAAqB,MAAM,uBAAuB,CAAC;AAkD3E,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,KAAoB;IAC5D,MAAM,EAAE,GAAG,IAAI,eAAe,EAAE,CAAC;IACjC,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,KAAK,CAAC,SAAS,IAAI,SAAS,CAAC,CAAC;IAE7D,yBAAyB;IACzB,IAAI,YAAY,GAAG,KAAK,CAAC,GAAG,CAAC;IAC7B,IAAI,SAAsC,CAAC;IAC3C,IAAI,MAAoD,CAAC;IAEzD,IAAI,KAAK,CAAC,eAAe,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;QAC1C,SAAS,GAAG,IAAI,eAAe,EAAE,CAAC;QAClC,MAAM,OAAO,GAAG,MAAM,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAC5E,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;QAC5B,MAAM,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC;IAC1D,CAAC;IAED,MAAM,QAAQ,GAAc,EAAE,CAAC;IAE/B,kCAAkC;IAClC,MAAM,eAAe,GAAG,KAAK,IAAkC,EAAE;QAC/D,IAAI,CAAC,SAAS,IAAI,CAAC,MAAM;YAAE,OAAO,IAAI,CAAC;QACvC,MAAM,SAAS,GAAG,MAAM,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;QACtE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC;IAC7E,CAAC,CAAC;IAEF,6DAA6D;IAC7D,MAAM,aAAa,GAAG,KAAK,IAAmB,EAAE;QAC9C,MAAM,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IACzD,CAAC,CAAC;IAEF,IAAI,CAAC;QACH,MAAM,WAAW,GAAG,KAAK,CAAC,mBAAmB,CAAC,WAAW,CAAC;YACxD,GAAG,EAAE,YAAY;YACjB,iBAAiB,EAAE,QAAQ;YAC3B,WAAW,EAAE,EAAE,CAAC,MAAM;YACtB,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,UAAU;YAClC,SAAS,EAAE,CAAC;SACb,CAAC,CAAC;QACH,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAE3B,MAAM,UAAU,GAAG,GAAG,KAAK,CAAC,gBAAgB,yBAAyB,
|
|
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.
|
|
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": ["<
|
|
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:
|