paracosm 0.8.503 → 0.8.520
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/cli/actors-resolver.d.ts.map +1 -1
- package/dist/cli/actors-resolver.js +10 -1
- package/dist/cli/actors-resolver.js.map +1 -1
- package/dist/cli/quickstart-routes.d.ts +25 -0
- package/dist/cli/quickstart-routes.d.ts.map +1 -1
- package/dist/cli/quickstart-routes.js +60 -0
- package/dist/cli/quickstart-routes.js.map +1 -1
- package/dist/cli/server/deep-research.d.ts +133 -0
- package/dist/cli/server/deep-research.d.ts.map +1 -0
- package/dist/cli/server/deep-research.js +271 -0
- package/dist/cli/server/deep-research.js.map +1 -0
- package/dist/cli/server/library-import-route.d.ts.map +1 -1
- package/dist/cli/server/library-import-route.js +35 -7
- package/dist/cli/server/library-import-route.js.map +1 -1
- package/dist/cli/server-app.d.ts.map +1 -1
- package/dist/cli/server-app.js +106 -20
- package/dist/cli/server-app.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"actors-resolver.d.ts","sourceRoot":"","sources":["../../src/cli/actors-resolver.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAK9C,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB;qEACiE;IACjE,UAAU,EAAE,MAAM,CAAC;IACnB;mEAC+D;IAC/D,SAAS,EAAE,OAAO,CAAC;CACpB;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,OAAO,GAAE;IAAE,YAAY,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,cAAc,
|
|
1
|
+
{"version":3,"file":"actors-resolver.d.ts","sourceRoot":"","sources":["../../src/cli/actors-resolver.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAK9C,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB;qEACiE;IACjE,UAAU,EAAE,MAAM,CAAC;IACnB;mEAC+D;IAC/D,SAAS,EAAE,OAAO,CAAC;CACpB;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,OAAO,GAAE;IAAE,YAAY,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,cAAc,CAgCrF;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,GAAG,SAAS,CAM3E"}
|
|
@@ -41,7 +41,16 @@ export function resolveActors(options = {}) {
|
|
|
41
41
|
for (const { path, isExample } of candidates) {
|
|
42
42
|
if (!existsSync(path))
|
|
43
43
|
continue;
|
|
44
|
-
|
|
44
|
+
let raw;
|
|
45
|
+
try {
|
|
46
|
+
raw = JSON.parse(readFileSync(path, 'utf-8'));
|
|
47
|
+
}
|
|
48
|
+
catch (err) {
|
|
49
|
+
// Surface the offending file path so users don't have to hunt
|
|
50
|
+
// through the candidate list to figure out which JSON broke.
|
|
51
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
52
|
+
throw new Error(`paracosm: failed to parse actors JSON at ${path}: ${message}`);
|
|
53
|
+
}
|
|
45
54
|
const actors = Array.isArray(raw.actors) ? raw.actors : [];
|
|
46
55
|
return { actors, sourcePath: path, isExample };
|
|
47
56
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"actors-resolver.js","sourceRoot":"","sources":["../../src/cli/actors-resolver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAGzC,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AAYtC;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,UAAqC,EAAE;IACnE,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC1B,MAAM,WAAW,GAAG,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IACnD,MAAM,UAAU,GAAgD,EAAE,CAAC;IAEnE,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;QACzB,UAAU,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,YAAY,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;IAClF,CAAC;IACD,UAAU,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,GAAG,EAAE,aAAa,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;IACzE,UAAU,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,GAAG,EAAE,QAAQ,EAAE,aAAa,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;IACnF,UAAU,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,WAAW,EAAE,QAAQ,EAAE,aAAa,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;IAC3F,UAAU,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,WAAW,EAAE,QAAQ,EAAE,qBAAqB,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAElG,KAAK,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,UAAU,EAAE,CAAC;QAC7C,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;YAAE,SAAS;QAChC,
|
|
1
|
+
{"version":3,"file":"actors-resolver.js","sourceRoot":"","sources":["../../src/cli/actors-resolver.ts"],"names":[],"mappings":"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"}
|
|
@@ -28,8 +28,33 @@ export interface QuickstartDeps {
|
|
|
28
28
|
/** Default provider + model for the LLM calls. */
|
|
29
29
|
defaultProvider: string;
|
|
30
30
|
defaultModel: string;
|
|
31
|
+
/** Stash deep-research citations keyed by scenario id. Optional so
|
|
32
|
+
* legacy callers (older test fixtures) don't have to construct the
|
|
33
|
+
* full record. The grounding route is the only writer; future
|
|
34
|
+
* actor-generation prompts can read via a sibling helper. */
|
|
35
|
+
recordGroundingCitations?: (scenarioId: string, citations: Array<{
|
|
36
|
+
query: string;
|
|
37
|
+
sources: Array<{
|
|
38
|
+
title: string;
|
|
39
|
+
link: string;
|
|
40
|
+
domain: string;
|
|
41
|
+
}>;
|
|
42
|
+
}>) => void;
|
|
31
43
|
}
|
|
32
44
|
export declare function handleFetchSeed(_req: IncomingMessage, res: ServerResponse, body: unknown, deps: QuickstartDeps): Promise<void>;
|
|
33
45
|
export declare function handleCompileFromSeed(_req: IncomingMessage, res: ServerResponse, body: unknown, deps: QuickstartDeps): Promise<void>;
|
|
34
46
|
export declare function handleGenerateActors(_req: IncomingMessage, res: ServerResponse, body: unknown, deps: QuickstartDeps): Promise<void>;
|
|
47
|
+
/**
|
|
48
|
+
* POST /api/quickstart/ground-scenario
|
|
49
|
+
*
|
|
50
|
+
* Runs the deep-research grounding pass over a previously-compiled
|
|
51
|
+
* scenario. Returns citations + the ScenarioPackage gets the same
|
|
52
|
+
* citations attached to its `metadata.groundingCitations` slot so the
|
|
53
|
+
* subsequent actor-generation + run prompts can reference them.
|
|
54
|
+
*
|
|
55
|
+
* Returns `{ skipped: true, reason }` rather than 4xx when SERPER_API_KEY
|
|
56
|
+
* isn't configured — the Quickstart flow continues without grounding
|
|
57
|
+
* rather than failing the whole run.
|
|
58
|
+
*/
|
|
59
|
+
export declare function handleGroundScenario(_req: IncomingMessage, res: ServerResponse, body: unknown, deps: QuickstartDeps): Promise<void>;
|
|
35
60
|
//# sourceMappingURL=quickstart-routes.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"quickstart-routes.d.ts","sourceRoot":"","sources":["../../src/cli/quickstart-routes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAIjE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"quickstart-routes.d.ts","sourceRoot":"","sources":["../../src/cli/quickstart-routes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAIjE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AA4B1D,MAAM,WAAW,cAAc;IAC7B,2DAA2D;IAC3D,iBAAiB,EAAE,CAAC,QAAQ,EAAE,eAAe,KAAK,IAAI,CAAC;IACvD,oEAAoE;IACpE,eAAe,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,eAAe,GAAG,SAAS,CAAC;IAC7D,6EAA6E;IAC7E,gBAAgB,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC/F,kDAAkD;IAClD,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB;;;kEAG8D;IAC9D,wBAAwB,CAAC,EAAE,CACzB,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,KAAK,CAAC;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAA;SAAE,CAAC,CAAA;KAAE,CAAC,KACjG,IAAI,CAAC;CACX;AAED,wBAAsB,eAAe,CACnC,IAAI,EAAE,eAAe,EACrB,GAAG,EAAE,cAAc,EACnB,IAAI,EAAE,OAAO,EACb,IAAI,EAAE,cAAc,GACnB,OAAO,CAAC,IAAI,CAAC,CA+Bf;AAED,wBAAsB,qBAAqB,CACzC,IAAI,EAAE,eAAe,EACrB,GAAG,EAAE,cAAc,EACnB,IAAI,EAAE,OAAO,EACb,IAAI,EAAE,cAAc,GACnB,OAAO,CAAC,IAAI,CAAC,CAsBf;AAED,wBAAsB,oBAAoB,CACxC,IAAI,EAAE,eAAe,EACrB,GAAG,EAAE,cAAc,EACnB,IAAI,EAAE,OAAO,EACb,IAAI,EAAE,cAAc,GACnB,OAAO,CAAC,IAAI,CAAC,CAwBf;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,oBAAoB,CACxC,IAAI,EAAE,eAAe,EACrB,GAAG,EAAE,cAAc,EACnB,IAAI,EAAE,OAAO,EACb,IAAI,EAAE,cAAc,GACnB,OAAO,CAAC,IAAI,CAAC,CA0Cf"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
import { compileFromSeed } from '../engine/compiler/compile-from-seed.js';
|
|
3
3
|
import { generateQuickstartActors } from '../runtime/world-model/index.js';
|
|
4
|
+
import { groundScenario } from './server/deep-research.js';
|
|
4
5
|
const FetchSeedSchema = z.object({
|
|
5
6
|
url: z.string().url().max(2048),
|
|
6
7
|
});
|
|
@@ -19,6 +20,9 @@ const GenerateActorsSchema = z.object({
|
|
|
19
20
|
// SeedInput cost preview surfaces this so users opt in consciously.
|
|
20
21
|
count: z.number().int().min(2).max(50).default(3),
|
|
21
22
|
});
|
|
23
|
+
const GroundScenarioSchema = z.object({
|
|
24
|
+
scenarioId: z.string().min(3).max(64),
|
|
25
|
+
});
|
|
22
26
|
export async function handleFetchSeed(_req, res, body, deps) {
|
|
23
27
|
const parsed = FetchSeedSchema.safeParse(body);
|
|
24
28
|
if (!parsed.success) {
|
|
@@ -103,4 +107,60 @@ export async function handleGenerateActors(_req, res, body, deps) {
|
|
|
103
107
|
res.end(JSON.stringify({ error: `Actor generation failed: ${String(err)}` }));
|
|
104
108
|
}
|
|
105
109
|
}
|
|
110
|
+
/**
|
|
111
|
+
* POST /api/quickstart/ground-scenario
|
|
112
|
+
*
|
|
113
|
+
* Runs the deep-research grounding pass over a previously-compiled
|
|
114
|
+
* scenario. Returns citations + the ScenarioPackage gets the same
|
|
115
|
+
* citations attached to its `metadata.groundingCitations` slot so the
|
|
116
|
+
* subsequent actor-generation + run prompts can reference them.
|
|
117
|
+
*
|
|
118
|
+
* Returns `{ skipped: true, reason }` rather than 4xx when SERPER_API_KEY
|
|
119
|
+
* isn't configured — the Quickstart flow continues without grounding
|
|
120
|
+
* rather than failing the whole run.
|
|
121
|
+
*/
|
|
122
|
+
export async function handleGroundScenario(_req, res, body, deps) {
|
|
123
|
+
const parsed = GroundScenarioSchema.safeParse(body);
|
|
124
|
+
if (!parsed.success) {
|
|
125
|
+
res.writeHead(400, { 'Content-Type': 'application/json' });
|
|
126
|
+
res.end(JSON.stringify({ error: 'Invalid payload', issues: parsed.error.issues.slice(0, 3).map(i => i.message) }));
|
|
127
|
+
return;
|
|
128
|
+
}
|
|
129
|
+
const scenario = deps.getScenarioById(parsed.data.scenarioId);
|
|
130
|
+
if (!scenario) {
|
|
131
|
+
res.writeHead(404, { 'Content-Type': 'application/json' });
|
|
132
|
+
res.end(JSON.stringify({ error: `Scenario '${parsed.data.scenarioId}' not found. Compile it via /api/quickstart/compile-from-seed first.` }));
|
|
133
|
+
return;
|
|
134
|
+
}
|
|
135
|
+
try {
|
|
136
|
+
const result = await groundScenario(scenario);
|
|
137
|
+
if (!result) {
|
|
138
|
+
// SERPER_API_KEY missing — skip gracefully so the Quickstart UI
|
|
139
|
+
// can show a single "skipped: no API key" line instead of breaking
|
|
140
|
+
// the run.
|
|
141
|
+
res.writeHead(200, { 'Content-Type': 'application/json' });
|
|
142
|
+
res.end(JSON.stringify({ skipped: true, reason: 'SERPER_API_KEY not configured' }));
|
|
143
|
+
return;
|
|
144
|
+
}
|
|
145
|
+
// Stash citations under the scenario id so future actor-generation
|
|
146
|
+
// and narration prompts can read them. ScenarioPackage doesn't have
|
|
147
|
+
// a free-form metadata slot today; this in-memory side-channel is
|
|
148
|
+
// intentionally scoped to the server process so a restart drops
|
|
149
|
+
// citations along with the scenario itself.
|
|
150
|
+
deps.recordGroundingCitations?.(scenario.id, result.citations);
|
|
151
|
+
res.writeHead(200, { 'Content-Type': 'application/json' });
|
|
152
|
+
res.end(JSON.stringify({
|
|
153
|
+
citations: result.citations,
|
|
154
|
+
totalSources: result.totalSources,
|
|
155
|
+
durationMs: result.durationMs,
|
|
156
|
+
emptyQueries: result.emptyQueries,
|
|
157
|
+
providersUsed: result.providersUsed,
|
|
158
|
+
providersFailed: result.providersFailed,
|
|
159
|
+
}));
|
|
160
|
+
}
|
|
161
|
+
catch (err) {
|
|
162
|
+
res.writeHead(500, { 'Content-Type': 'application/json' });
|
|
163
|
+
res.end(JSON.stringify({ error: `Grounding failed: ${String(err)}` }));
|
|
164
|
+
}
|
|
165
|
+
}
|
|
106
166
|
//# sourceMappingURL=quickstart-routes.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"quickstart-routes.js","sourceRoot":"","sources":["../../src/cli/quickstart-routes.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,eAAe,EAAE,MAAM,yCAAyC,CAAC;AAC1E,OAAO,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;
|
|
1
|
+
{"version":3,"file":"quickstart-routes.js","sourceRoot":"","sources":["../../src/cli/quickstart-routes.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Quickstart "Ground with citations" stage. Takes a freshly-compiled
|
|
3
|
+
* ScenarioPackage and runs it through a small batch of Serper web
|
|
4
|
+
* searches, returning citations the actor-generation + run prompts
|
|
5
|
+
* can ground against. The goal is "the simulation is informed by real
|
|
6
|
+
* sources" rather than "every claim cites a footnote" — we surface 3-5
|
|
7
|
+
* citations per derived query, deduplicated by URL.
|
|
8
|
+
*
|
|
9
|
+
* Why Serper rather than the wilds-ai deep-research stack: Serper is a
|
|
10
|
+
* plain HTTPS POST + JSON response and has no internal-package
|
|
11
|
+
* dependencies (no Cohere reranker, no Tavily, no Firecrawl). Paracosm
|
|
12
|
+
* already has SERPER_API_KEY in .env, so this works without new deps.
|
|
13
|
+
* The wilds-ai stack is preferable when reranking quality matters
|
|
14
|
+
* (game-design research, lore enrichment), but for a 4-second grounding
|
|
15
|
+
* pass a single search provider is enough — the LLM judge that consumes
|
|
16
|
+
* citations will weight them by reading the snippets.
|
|
17
|
+
*
|
|
18
|
+
* @module paracosm/cli/server/deep-research
|
|
19
|
+
*/
|
|
20
|
+
import type { ScenarioPackage } from '../../engine/types.js';
|
|
21
|
+
/** Identifier for the search provider that surfaced a given result.
|
|
22
|
+
* Lets the UI render a per-source provider chip and lets the
|
|
23
|
+
* grounding pass dedupe across providers. */
|
|
24
|
+
export type SearchProvider = 'serper' | 'tavily' | 'firecrawl';
|
|
25
|
+
export interface SerperResult {
|
|
26
|
+
/** Result title from the search provider. */
|
|
27
|
+
title: string;
|
|
28
|
+
/** Canonical URL of the source. */
|
|
29
|
+
link: string;
|
|
30
|
+
/** Free-text snippet, usually 100-200 chars. */
|
|
31
|
+
snippet: string;
|
|
32
|
+
/** Optional date string, present for news-style results. */
|
|
33
|
+
date?: string;
|
|
34
|
+
/** Origin domain (e.g. "wikipedia.org"); derived from `link`. */
|
|
35
|
+
domain: string;
|
|
36
|
+
/** Which provider surfaced this result. Surfaced in the citation
|
|
37
|
+
* log so the demo viewer sees parallel-provider grounding. */
|
|
38
|
+
provider: SearchProvider;
|
|
39
|
+
}
|
|
40
|
+
export interface GroundingCitation {
|
|
41
|
+
/** Query that surfaced this result. Useful for showing the user
|
|
42
|
+
* WHY a particular source was attached. */
|
|
43
|
+
query: string;
|
|
44
|
+
/** Top results for that query (deduplicated by URL across queries). */
|
|
45
|
+
sources: SerperResult[];
|
|
46
|
+
}
|
|
47
|
+
export interface GroundingProgressEvent {
|
|
48
|
+
/** Phase tag drives the log-line tone in the Quickstart card. */
|
|
49
|
+
kind: 'query_started' | 'query_done' | 'query_failed' | 'complete';
|
|
50
|
+
/** Query string. Populated for query_started/query_done/query_failed. */
|
|
51
|
+
query?: string;
|
|
52
|
+
/** Result count. Populated for query_done/complete. */
|
|
53
|
+
resultCount?: number;
|
|
54
|
+
/** Total citations collected so far. Populated for query_done/complete. */
|
|
55
|
+
totalCitations?: number;
|
|
56
|
+
/** Error message. Populated for query_failed. */
|
|
57
|
+
error?: string;
|
|
58
|
+
/** Wall-clock ms since the grounding pass started. */
|
|
59
|
+
elapsedMs: number;
|
|
60
|
+
}
|
|
61
|
+
export interface GroundingResult {
|
|
62
|
+
/** Per-query citation buckets. */
|
|
63
|
+
citations: GroundingCitation[];
|
|
64
|
+
/** Total unique sources across all queries. */
|
|
65
|
+
totalSources: number;
|
|
66
|
+
/** Wall-clock duration of the grounding pass in ms. */
|
|
67
|
+
durationMs: number;
|
|
68
|
+
/** Queries that returned 0 results or failed. Used to surface gaps. */
|
|
69
|
+
emptyQueries: string[];
|
|
70
|
+
/** Providers that successfully returned at least one result on at
|
|
71
|
+
* least one query. Surfaced as a chip row in the Quickstart card so
|
|
72
|
+
* the demo viewer sees which sources backed the run. */
|
|
73
|
+
providersUsed: SearchProvider[];
|
|
74
|
+
/** Providers that errored out for every query (e.g. Firecrawl when
|
|
75
|
+
* the account is out of credits). Logged as warn lines so the user
|
|
76
|
+
* knows why a provider didn't contribute. */
|
|
77
|
+
providersFailed: Array<{
|
|
78
|
+
provider: SearchProvider;
|
|
79
|
+
reason: string;
|
|
80
|
+
}>;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Derive 3 search queries from the ScenarioPackage. We pick the
|
|
84
|
+
* scenario's primary subject (compiled from the seed text), one
|
|
85
|
+
* department-or-context query, and one crisis-flavored query so the
|
|
86
|
+
* citations cover the world's setting + people + threats. Queries are
|
|
87
|
+
* generic enough that Serper finds Wikipedia/news/research links
|
|
88
|
+
* rather than Twitter or random forums.
|
|
89
|
+
*/
|
|
90
|
+
export declare function deriveGroundingQueries(scenario: ScenarioPackage): string[];
|
|
91
|
+
/**
|
|
92
|
+
* One Serper search. Returns up to `maxResults` results. Throws on
|
|
93
|
+
* network/parse errors so the caller can mark the query as failed
|
|
94
|
+
* in its progress log; never returns null/undefined.
|
|
95
|
+
*/
|
|
96
|
+
export declare function searchSerper(query: string, apiKey: string, maxResults?: number, fetchImpl?: typeof fetch): Promise<SerperResult[]>;
|
|
97
|
+
/**
|
|
98
|
+
* One Tavily search. Tavily ships its own AI-summarized results so
|
|
99
|
+
* the snippets are denser than Serper's. Auth is body-based
|
|
100
|
+
* (api_key field) rather than header — we use the modern body shape.
|
|
101
|
+
*/
|
|
102
|
+
export declare function searchTavily(query: string, apiKey: string, maxResults?: number, fetchImpl?: typeof fetch): Promise<SerperResult[]>;
|
|
103
|
+
/**
|
|
104
|
+
* One Firecrawl search. Currently disabled in the grounding pass
|
|
105
|
+
* because the production account is out of credits (HTTP 402). Kept
|
|
106
|
+
* for completeness so the grounding helper can light up Firecrawl
|
|
107
|
+
* automatically once credits are topped up — no code change required.
|
|
108
|
+
*/
|
|
109
|
+
export declare function searchFirecrawl(query: string, apiKey: string, maxResults?: number, fetchImpl?: typeof fetch): Promise<SerperResult[]>;
|
|
110
|
+
/**
|
|
111
|
+
* Run the grounding pass for a scenario. For each derived query, fans
|
|
112
|
+
* out to every configured search provider (Serper, Tavily, Firecrawl)
|
|
113
|
+
* in parallel, dedupes by URL across providers + queries, and emits
|
|
114
|
+
* progress callbacks for the Quickstart UI.
|
|
115
|
+
*
|
|
116
|
+
* Provider selection: every provider whose API key is non-empty is
|
|
117
|
+
* tried. A provider that fails on every query (e.g. Firecrawl HTTP 402
|
|
118
|
+
* when out of credits) is reported in `providersFailed` rather than
|
|
119
|
+
* crashing the whole pass — the run continues with whatever providers
|
|
120
|
+
* are healthy.
|
|
121
|
+
*
|
|
122
|
+
* Returns null only when ALL providers are missing API keys; otherwise
|
|
123
|
+
* returns a result that may be partially-populated.
|
|
124
|
+
*/
|
|
125
|
+
export declare function groundScenario(scenario: ScenarioPackage, options?: {
|
|
126
|
+
serperApiKey?: string;
|
|
127
|
+
tavilyApiKey?: string;
|
|
128
|
+
firecrawlApiKey?: string;
|
|
129
|
+
maxResultsPerQuery?: number;
|
|
130
|
+
onProgress?: (event: GroundingProgressEvent) => void;
|
|
131
|
+
fetchImpl?: typeof fetch;
|
|
132
|
+
}): Promise<GroundingResult | null>;
|
|
133
|
+
//# sourceMappingURL=deep-research.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deep-research.d.ts","sourceRoot":"","sources":["../../../src/cli/server/deep-research.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAM7D;;8CAE8C;AAC9C,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,QAAQ,GAAG,WAAW,CAAC;AAE/D,MAAM,WAAW,YAAY;IAC3B,6CAA6C;IAC7C,KAAK,EAAE,MAAM,CAAC;IACd,mCAAmC;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,gDAAgD;IAChD,OAAO,EAAE,MAAM,CAAC;IAChB,4DAA4D;IAC5D,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,iEAAiE;IACjE,MAAM,EAAE,MAAM,CAAC;IACf;mEAC+D;IAC/D,QAAQ,EAAE,cAAc,CAAC;CAC1B;AAED,MAAM,WAAW,iBAAiB;IAChC;gDAC4C;IAC5C,KAAK,EAAE,MAAM,CAAC;IACd,uEAAuE;IACvE,OAAO,EAAE,YAAY,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,sBAAsB;IACrC,iEAAiE;IACjE,IAAI,EAAE,eAAe,GAAG,YAAY,GAAG,cAAc,GAAG,UAAU,CAAC;IACnE,yEAAyE;IACzE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,uDAAuD;IACvD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,2EAA2E;IAC3E,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,iDAAiD;IACjD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,sDAAsD;IACtD,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,eAAe;IAC9B,kCAAkC;IAClC,SAAS,EAAE,iBAAiB,EAAE,CAAC;IAC/B,+CAA+C;IAC/C,YAAY,EAAE,MAAM,CAAC;IACrB,uDAAuD;IACvD,UAAU,EAAE,MAAM,CAAC;IACnB,uEAAuE;IACvE,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB;;6DAEyD;IACzD,aAAa,EAAE,cAAc,EAAE,CAAC;IAChC;;kDAE8C;IAC9C,eAAe,EAAE,KAAK,CAAC;QAAE,QAAQ,EAAE,cAAc,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACtE;AAED;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,eAAe,GAAG,MAAM,EAAE,CAgC1E;AAgCD;;;;GAIG;AACH,wBAAsB,YAAY,CAChC,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,UAAU,SAAI,EACd,SAAS,GAAE,OAAO,KAAa,GAC9B,OAAO,CAAC,YAAY,EAAE,CAAC,CA0BzB;AAED;;;;GAIG;AACH,wBAAsB,YAAY,CAChC,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,UAAU,SAAI,EACd,SAAS,GAAE,OAAO,KAAa,GAC9B,OAAO,CAAC,YAAY,EAAE,CAAC,CAuBzB;AAED;;;;;GAKG;AACH,wBAAsB,eAAe,CACnC,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,UAAU,SAAI,EACd,SAAS,GAAE,OAAO,KAAa,GAC9B,OAAO,CAAC,YAAY,EAAE,CAAC,CAyBzB;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,cAAc,CAClC,QAAQ,EAAE,eAAe,EACzB,OAAO,GAAE;IACP,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,sBAAsB,KAAK,IAAI,CAAC;IACrD,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;CACrB,GACL,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CAuHjC"}
|
|
@@ -0,0 +1,271 @@
|
|
|
1
|
+
const SERPER_ENDPOINT = 'https://google.serper.dev/search';
|
|
2
|
+
const TAVILY_ENDPOINT = 'https://api.tavily.com/search';
|
|
3
|
+
const FIRECRAWL_ENDPOINT = 'https://api.firecrawl.dev/v1/search';
|
|
4
|
+
/**
|
|
5
|
+
* Derive 3 search queries from the ScenarioPackage. We pick the
|
|
6
|
+
* scenario's primary subject (compiled from the seed text), one
|
|
7
|
+
* department-or-context query, and one crisis-flavored query so the
|
|
8
|
+
* citations cover the world's setting + people + threats. Queries are
|
|
9
|
+
* generic enough that Serper finds Wikipedia/news/research links
|
|
10
|
+
* rather than Twitter or random forums.
|
|
11
|
+
*/
|
|
12
|
+
export function deriveGroundingQueries(scenario) {
|
|
13
|
+
const queries = [];
|
|
14
|
+
const subject = scenario.labels?.name || scenario.id || 'simulation scenario';
|
|
15
|
+
queries.push(subject);
|
|
16
|
+
// Department or context query: pick the first department label that
|
|
17
|
+
// looks domain-ish (avoid generic "Operations", "Leadership"). Falls
|
|
18
|
+
// back to the settlement noun + the scenario subject when no
|
|
19
|
+
// departments survive the filter.
|
|
20
|
+
const dept = (scenario.departments ?? [])
|
|
21
|
+
.map((d) => d.label || d.id)
|
|
22
|
+
.find((label) => !!label && label.length > 4 && !/operations|leadership|admin/i.test(label));
|
|
23
|
+
if (dept) {
|
|
24
|
+
queries.push(`${dept} best practices`);
|
|
25
|
+
}
|
|
26
|
+
else if (scenario.labels?.settlementNoun) {
|
|
27
|
+
queries.push(`${scenario.labels.settlementNoun} ${subject}`);
|
|
28
|
+
}
|
|
29
|
+
// Crisis-flavored query so the run's stress-test events have
|
|
30
|
+
// grounding. EventDefinition is the closest thing to a "crisis" in
|
|
31
|
+
// ScenarioPackage; we pick the first event label that isn't a generic
|
|
32
|
+
// "decision" / "outcome" wrapper.
|
|
33
|
+
const eventLabel = (scenario.events ?? [])
|
|
34
|
+
.map((e) => e.label)
|
|
35
|
+
.find((label) => !!label && !/decision|outcome|notice/i.test(label));
|
|
36
|
+
if (eventLabel) {
|
|
37
|
+
queries.push(`${eventLabel} response strategies`);
|
|
38
|
+
}
|
|
39
|
+
else {
|
|
40
|
+
queries.push(`${subject} crisis decision making`);
|
|
41
|
+
}
|
|
42
|
+
return [...new Set(queries.filter(Boolean))].slice(0, 3);
|
|
43
|
+
}
|
|
44
|
+
/** Extract the registrable domain (host minus leading "www.") from a URL. */
|
|
45
|
+
function urlDomain(url) {
|
|
46
|
+
try {
|
|
47
|
+
const u = new URL(url);
|
|
48
|
+
return u.hostname.replace(/^www\./, '');
|
|
49
|
+
}
|
|
50
|
+
catch {
|
|
51
|
+
return '';
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* One Serper search. Returns up to `maxResults` results. Throws on
|
|
56
|
+
* network/parse errors so the caller can mark the query as failed
|
|
57
|
+
* in its progress log; never returns null/undefined.
|
|
58
|
+
*/
|
|
59
|
+
export async function searchSerper(query, apiKey, maxResults = 5, fetchImpl = fetch) {
|
|
60
|
+
const res = await fetchImpl(SERPER_ENDPOINT, {
|
|
61
|
+
method: 'POST',
|
|
62
|
+
headers: {
|
|
63
|
+
'X-API-KEY': apiKey,
|
|
64
|
+
'Content-Type': 'application/json',
|
|
65
|
+
},
|
|
66
|
+
body: JSON.stringify({ q: query, num: maxResults }),
|
|
67
|
+
});
|
|
68
|
+
if (!res.ok) {
|
|
69
|
+
throw new Error(`Serper HTTP ${res.status}: ${await res.text().catch(() => '<no body>')}`);
|
|
70
|
+
}
|
|
71
|
+
const body = (await res.json());
|
|
72
|
+
const organic = body.organic ?? [];
|
|
73
|
+
return organic
|
|
74
|
+
.filter((r) => typeof r.title === 'string' && typeof r.link === 'string')
|
|
75
|
+
.slice(0, maxResults)
|
|
76
|
+
.map((r) => ({
|
|
77
|
+
title: r.title,
|
|
78
|
+
link: r.link,
|
|
79
|
+
snippet: typeof r.snippet === 'string' ? r.snippet : '',
|
|
80
|
+
date: typeof r.date === 'string' ? r.date : undefined,
|
|
81
|
+
domain: urlDomain(r.link),
|
|
82
|
+
provider: 'serper',
|
|
83
|
+
}));
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* One Tavily search. Tavily ships its own AI-summarized results so
|
|
87
|
+
* the snippets are denser than Serper's. Auth is body-based
|
|
88
|
+
* (api_key field) rather than header — we use the modern body shape.
|
|
89
|
+
*/
|
|
90
|
+
export async function searchTavily(query, apiKey, maxResults = 5, fetchImpl = fetch) {
|
|
91
|
+
const res = await fetchImpl(TAVILY_ENDPOINT, {
|
|
92
|
+
method: 'POST',
|
|
93
|
+
headers: { 'Content-Type': 'application/json' },
|
|
94
|
+
body: JSON.stringify({ api_key: apiKey, query, max_results: maxResults }),
|
|
95
|
+
});
|
|
96
|
+
if (!res.ok) {
|
|
97
|
+
throw new Error(`Tavily HTTP ${res.status}: ${await res.text().catch(() => '<no body>')}`);
|
|
98
|
+
}
|
|
99
|
+
const body = (await res.json());
|
|
100
|
+
const results = body.results ?? [];
|
|
101
|
+
return results
|
|
102
|
+
.filter((r) => typeof r.title === 'string' && typeof r.url === 'string')
|
|
103
|
+
.slice(0, maxResults)
|
|
104
|
+
.map((r) => ({
|
|
105
|
+
title: r.title,
|
|
106
|
+
link: r.url,
|
|
107
|
+
snippet: typeof r.content === 'string' ? r.content : '',
|
|
108
|
+
date: typeof r.published_date === 'string' ? r.published_date : undefined,
|
|
109
|
+
domain: urlDomain(r.url),
|
|
110
|
+
provider: 'tavily',
|
|
111
|
+
}));
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* One Firecrawl search. Currently disabled in the grounding pass
|
|
115
|
+
* because the production account is out of credits (HTTP 402). Kept
|
|
116
|
+
* for completeness so the grounding helper can light up Firecrawl
|
|
117
|
+
* automatically once credits are topped up — no code change required.
|
|
118
|
+
*/
|
|
119
|
+
export async function searchFirecrawl(query, apiKey, maxResults = 5, fetchImpl = fetch) {
|
|
120
|
+
const res = await fetchImpl(FIRECRAWL_ENDPOINT, {
|
|
121
|
+
method: 'POST',
|
|
122
|
+
headers: {
|
|
123
|
+
'Authorization': `Bearer ${apiKey}`,
|
|
124
|
+
'Content-Type': 'application/json',
|
|
125
|
+
},
|
|
126
|
+
body: JSON.stringify({ query, limit: maxResults }),
|
|
127
|
+
});
|
|
128
|
+
if (!res.ok) {
|
|
129
|
+
throw new Error(`Firecrawl HTTP ${res.status}: ${await res.text().catch(() => '<no body>')}`);
|
|
130
|
+
}
|
|
131
|
+
const body = (await res.json());
|
|
132
|
+
const data = body.data ?? [];
|
|
133
|
+
return data
|
|
134
|
+
.filter((r) => typeof r.title === 'string' && typeof r.url === 'string')
|
|
135
|
+
.slice(0, maxResults)
|
|
136
|
+
.map((r) => ({
|
|
137
|
+
title: r.title,
|
|
138
|
+
link: r.url,
|
|
139
|
+
snippet: typeof r.description === 'string' ? r.description : '',
|
|
140
|
+
domain: urlDomain(r.url),
|
|
141
|
+
provider: 'firecrawl',
|
|
142
|
+
}));
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Run the grounding pass for a scenario. For each derived query, fans
|
|
146
|
+
* out to every configured search provider (Serper, Tavily, Firecrawl)
|
|
147
|
+
* in parallel, dedupes by URL across providers + queries, and emits
|
|
148
|
+
* progress callbacks for the Quickstart UI.
|
|
149
|
+
*
|
|
150
|
+
* Provider selection: every provider whose API key is non-empty is
|
|
151
|
+
* tried. A provider that fails on every query (e.g. Firecrawl HTTP 402
|
|
152
|
+
* when out of credits) is reported in `providersFailed` rather than
|
|
153
|
+
* crashing the whole pass — the run continues with whatever providers
|
|
154
|
+
* are healthy.
|
|
155
|
+
*
|
|
156
|
+
* Returns null only when ALL providers are missing API keys; otherwise
|
|
157
|
+
* returns a result that may be partially-populated.
|
|
158
|
+
*/
|
|
159
|
+
export async function groundScenario(scenario, options = {}) {
|
|
160
|
+
const serperKey = options.serperApiKey ?? process.env.SERPER_API_KEY ?? '';
|
|
161
|
+
const tavilyKey = options.tavilyApiKey ?? process.env.TAVILY_API_KEY ?? '';
|
|
162
|
+
const firecrawlKey = options.firecrawlApiKey ?? process.env.FIRECRAWL_API_KEY ?? '';
|
|
163
|
+
if (!serperKey && !tavilyKey && !firecrawlKey)
|
|
164
|
+
return null;
|
|
165
|
+
const maxPerQuery = options.maxResultsPerQuery ?? 4;
|
|
166
|
+
const fetchImpl = options.fetchImpl ?? fetch;
|
|
167
|
+
const t0 = Date.now();
|
|
168
|
+
const queries = deriveGroundingQueries(scenario);
|
|
169
|
+
const seenUrls = new Set();
|
|
170
|
+
const citations = [];
|
|
171
|
+
const emptyQueries = [];
|
|
172
|
+
// Track per-provider success/failure across all queries so we can
|
|
173
|
+
// surface providersUsed / providersFailed at the end. We treat a
|
|
174
|
+
// provider as "used" when it returned at least one result for any
|
|
175
|
+
// query, "failed" when it errored on every query that asked it.
|
|
176
|
+
const providerSucceededAtLeastOnce = new Set();
|
|
177
|
+
const providerFailureMessages = new Map();
|
|
178
|
+
const providerCallCount = new Map();
|
|
179
|
+
const providerFailureCount = new Map();
|
|
180
|
+
const providersForQuery = (q) => {
|
|
181
|
+
const calls = [];
|
|
182
|
+
if (serperKey) {
|
|
183
|
+
calls.push({ provider: 'serper', fn: () => searchSerper(q, serperKey, maxPerQuery, fetchImpl) });
|
|
184
|
+
}
|
|
185
|
+
if (tavilyKey) {
|
|
186
|
+
calls.push({ provider: 'tavily', fn: () => searchTavily(q, tavilyKey, maxPerQuery, fetchImpl) });
|
|
187
|
+
}
|
|
188
|
+
if (firecrawlKey) {
|
|
189
|
+
calls.push({ provider: 'firecrawl', fn: () => searchFirecrawl(q, firecrawlKey, maxPerQuery, fetchImpl) });
|
|
190
|
+
}
|
|
191
|
+
return calls;
|
|
192
|
+
};
|
|
193
|
+
await Promise.all(queries.map(async (q) => {
|
|
194
|
+
options.onProgress?.({
|
|
195
|
+
kind: 'query_started',
|
|
196
|
+
query: q,
|
|
197
|
+
elapsedMs: Date.now() - t0,
|
|
198
|
+
});
|
|
199
|
+
const calls = providersForQuery(q);
|
|
200
|
+
const settled = await Promise.allSettled(calls.map((c) => c.fn()));
|
|
201
|
+
const merged = [];
|
|
202
|
+
for (let i = 0; i < calls.length; i += 1) {
|
|
203
|
+
const { provider } = calls[i];
|
|
204
|
+
const result = settled[i];
|
|
205
|
+
providerCallCount.set(provider, (providerCallCount.get(provider) ?? 0) + 1);
|
|
206
|
+
if (result.status === 'fulfilled') {
|
|
207
|
+
if (result.value.length > 0)
|
|
208
|
+
providerSucceededAtLeastOnce.add(provider);
|
|
209
|
+
merged.push(...result.value);
|
|
210
|
+
}
|
|
211
|
+
else {
|
|
212
|
+
providerFailureCount.set(provider, (providerFailureCount.get(provider) ?? 0) + 1);
|
|
213
|
+
const msg = result.reason instanceof Error ? result.reason.message : String(result.reason);
|
|
214
|
+
providerFailureMessages.set(provider, msg);
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
// Dedup by URL across providers and prior queries so a Wikipedia
|
|
218
|
+
// hit that appears on both Serper + Tavily is shown once. The
|
|
219
|
+
// surviving copy is the first one we saw; later copies could
|
|
220
|
+
// theoretically merge metadata but the simple-first-wins rule
|
|
221
|
+
// is what the UI expects.
|
|
222
|
+
const deduped = merged.filter((r) => {
|
|
223
|
+
if (seenUrls.has(r.link))
|
|
224
|
+
return false;
|
|
225
|
+
seenUrls.add(r.link);
|
|
226
|
+
return true;
|
|
227
|
+
});
|
|
228
|
+
if (deduped.length === 0)
|
|
229
|
+
emptyQueries.push(q);
|
|
230
|
+
citations.push({ query: q, sources: deduped });
|
|
231
|
+
options.onProgress?.({
|
|
232
|
+
kind: 'query_done',
|
|
233
|
+
query: q,
|
|
234
|
+
resultCount: deduped.length,
|
|
235
|
+
totalCitations: seenUrls.size,
|
|
236
|
+
elapsedMs: Date.now() - t0,
|
|
237
|
+
});
|
|
238
|
+
}));
|
|
239
|
+
// A provider is "failed" iff it was called for every query and
|
|
240
|
+
// failed every call. A provider that hit credits-exhausted on the
|
|
241
|
+
// first query and was therefore tried again on the second / third
|
|
242
|
+
// (and failed there too) gets reported. A provider that succeeded
|
|
243
|
+
// even once goes into providersUsed instead.
|
|
244
|
+
const providersFailed = [];
|
|
245
|
+
for (const [provider, fails] of providerFailureCount.entries()) {
|
|
246
|
+
if (providerSucceededAtLeastOnce.has(provider))
|
|
247
|
+
continue;
|
|
248
|
+
const calls = providerCallCount.get(provider) ?? 0;
|
|
249
|
+
if (calls > 0 && fails === calls) {
|
|
250
|
+
providersFailed.push({
|
|
251
|
+
provider,
|
|
252
|
+
reason: providerFailureMessages.get(provider) ?? 'unknown',
|
|
253
|
+
});
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
const result = {
|
|
257
|
+
citations,
|
|
258
|
+
totalSources: seenUrls.size,
|
|
259
|
+
durationMs: Date.now() - t0,
|
|
260
|
+
emptyQueries,
|
|
261
|
+
providersUsed: [...providerSucceededAtLeastOnce],
|
|
262
|
+
providersFailed,
|
|
263
|
+
};
|
|
264
|
+
options.onProgress?.({
|
|
265
|
+
kind: 'complete',
|
|
266
|
+
totalCitations: seenUrls.size,
|
|
267
|
+
elapsedMs: result.durationMs,
|
|
268
|
+
});
|
|
269
|
+
return result;
|
|
270
|
+
}
|
|
271
|
+
//# sourceMappingURL=deep-research.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deep-research.js","sourceRoot":"","sources":["../../../src/cli/server/deep-research.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"library-import-route.d.ts","sourceRoot":"","sources":["../../../src/cli/server/library-import-route.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAIjE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAI9D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAO3D,MAAM,WAAW,iBAAiB;IAChC,eAAe,EAAE,eAAe,CAAC;IACjC,UAAU,EAAE,kBAAkB,CAAC;CAChC;AAED,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,eAAe,EACrB,GAAG,EAAE,cAAc,EACnB,IAAI,EAAE,OAAO,EACb,IAAI,EAAE,iBAAiB,GACtB,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"library-import-route.d.ts","sourceRoot":"","sources":["../../../src/cli/server/library-import-route.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAIjE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAI9D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAO3D,MAAM,WAAW,iBAAiB;IAChC,eAAe,EAAE,eAAe,CAAC;IACjC,UAAU,EAAE,kBAAkB,CAAC;CAChC;AAED,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,eAAe,EACrB,GAAG,EAAE,cAAc,EACnB,IAAI,EAAE,OAAO,EACb,IAAI,EAAE,iBAAiB,GACtB,OAAO,CAAC,IAAI,CAAC,CA6Ff"}
|