@lincoln504/pi-research 0.1.12 → 1.0.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/LICENSE +1 -1
- package/README.md +64 -115
- package/dist/cli.mjs +23211 -0
- package/dist/prompts/research-knowledge-relevance-triage.md +35 -0
- package/dist/prompts/research-knowledge-search-extractor.md +41 -0
- package/dist/prompts/research-tool-usage.md +92 -0
- package/dist/prompts/researcher.md +89 -0
- package/dist/prompts/system-coordinator.md +75 -0
- package/dist/prompts/system-lead-evaluator.md +118 -0
- package/dist/thread-worker.mjs +2611 -0
- package/dist/webgpu-probe.mjs +80 -0
- package/docs/AGENT-SKILL.md +102 -0
- package/docs/ARCHITECTURE.md +306 -80
- package/docs/CONFIGURATION.md +249 -0
- package/docs/KNOWLEDGE-STORE.md +213 -0
- package/docs/PI-EXTENSION.md +91 -0
- package/docs/SDK.md +113 -0
- package/docs/THIRD-PARTY-NOTICES.md +64 -0
- package/package.json +102 -36
- package/scripts/build.cjs +140 -0
- package/scripts/cleanup.cjs +149 -0
- package/scripts/prepare.cjs +28 -0
- package/scripts/setup.cjs +134 -0
- package/skills/pi-research/README.md +90 -0
- package/skills/pi-research/SKILL.md +102 -0
- package/skills/pi-research/references/configuration.md +77 -0
- package/skills/pi-research/scripts/run.mjs +237 -0
- package/src/cleanup/research-cleanup.ts +140 -0
- package/src/cli.ts +1044 -0
- package/src/config.ts +1036 -147
- package/src/constants.ts +115 -84
- package/src/core/health-check-service.ts +265 -0
- package/src/core/interfaces/health-check-interfaces.ts +50 -0
- package/src/core/interfaces/knowledge-interfaces.ts +190 -0
- package/src/core/interfaces/observer-interfaces.ts +67 -0
- package/src/core/interfaces/orchestration-interfaces.ts +86 -0
- package/src/core/interfaces/planning-interfaces.ts +100 -0
- package/src/core/interfaces/process-interfaces.ts +37 -0
- package/src/core/interfaces/research-plan-types.ts +52 -0
- package/src/core/interfaces/scheduler-interfaces.ts +91 -0
- package/src/core/interfaces/service-names.ts +39 -0
- package/src/core/interfaces/state-manager-interfaces.ts +29 -0
- package/src/core/interfaces/steering-interfaces.ts +31 -0
- package/src/core/llm/agentic-repair.ts +169 -0
- package/src/core/llm/inject-date.ts +52 -0
- package/src/core/llm/llm-timeout.ts +64 -0
- package/src/core/llm/llm-utils.ts +86 -0
- package/src/core/llm/model-registry-factory.ts +287 -0
- package/src/core/llm/pi-ai-completion.ts +29 -0
- package/src/core/llm/prompts.ts +50 -0
- package/src/core/llm/research-model-resolver.ts +91 -0
- package/src/core/planning-constants.ts +13 -0
- package/src/core/planning-service.ts +649 -0
- package/src/core/planning-utils.ts +299 -0
- package/src/core/scheduler-factory.ts +48 -0
- package/src/core/scheduler-service.ts +123 -0
- package/src/core/service-initialization.ts +194 -0
- package/src/core/service-interfaces.ts +48 -0
- package/src/core/service-registry.ts +659 -0
- package/src/healthcheck/index.ts +271 -265
- package/src/healthcheck/registry.ts +130 -0
- package/src/index.ts +639 -50
- package/src/infrastructure/browser/browser-cleanup.ts +309 -0
- package/src/infrastructure/browser/browser-client.ts +199 -0
- package/src/infrastructure/browser/browser-error-utils.ts +160 -0
- package/src/infrastructure/browser/browser-lifecycle.ts +120 -0
- package/src/infrastructure/browser/browser-server.ts +174 -0
- package/src/infrastructure/browser/browser-task-scheduler.ts +461 -0
- package/src/infrastructure/browser/cleanup-utils.ts +155 -0
- package/src/infrastructure/browser/client-agent.ts +31 -0
- package/src/infrastructure/browser/config.ts +288 -0
- package/src/infrastructure/browser/ensure-browser.ts +205 -0
- package/src/infrastructure/browser/index.ts +37 -0
- package/src/infrastructure/browser/priority-task-queue.ts +226 -0
- package/src/infrastructure/browser/scheduler-factory.ts +354 -0
- package/src/infrastructure/browser/task-execution-service.ts +209 -0
- package/src/infrastructure/browser/thread-worker-browser.ts +282 -0
- package/src/infrastructure/browser/thread-worker-lifecycle.ts +323 -0
- package/src/infrastructure/browser/thread-worker-messaging.ts +662 -0
- package/src/infrastructure/browser/thread-worker-types.ts +25 -0
- package/src/infrastructure/browser/thread-worker.mjs +2611 -0
- package/src/infrastructure/browser/thread-worker.ts +168 -0
- package/src/infrastructure/browser/worker-pool-manager.ts +449 -0
- package/src/infrastructure/embedding/embedding-client.ts +205 -0
- package/src/infrastructure/embedding/embedding-factory.ts +324 -0
- package/src/infrastructure/embedding/embedding-server.ts +535 -0
- package/src/infrastructure/file-lock-service.ts +592 -0
- package/src/infrastructure/gpu-resource-service.ts +191 -0
- package/src/infrastructure/knowledge-store-service.ts +475 -0
- package/src/infrastructure/metrics-service.ts +129 -0
- package/src/infrastructure/process-lifecycle-service.ts +253 -0
- package/src/infrastructure/scheduler-factory-service.ts +58 -0
- package/src/infrastructure/service-initialization.ts +292 -0
- package/src/infrastructure/state/state-backup-manager.ts +290 -0
- package/src/infrastructure/state/state-browser-api.ts +62 -0
- package/src/infrastructure/state/state-browser-manager.ts +70 -0
- package/src/infrastructure/state/state-manager-service.ts +264 -0
- package/src/infrastructure/state/state-manager.ts +547 -0
- package/src/infrastructure/state/state-metrics.ts +92 -0
- package/src/infrastructure/state/state-migration.ts +103 -0
- package/src/infrastructure/state/state-path-configuration.ts +119 -0
- package/src/infrastructure/state/state-session-api.ts +94 -0
- package/src/infrastructure/state/state-session-manager.ts +127 -0
- package/src/infrastructure/state/state-validator.ts +93 -0
- package/src/infrastructure/types/state-types.ts +85 -0
- package/src/knowledge/chunker.ts +157 -0
- package/src/knowledge/embedder-init.ts +413 -0
- package/src/knowledge/embedder-utils.ts +296 -0
- package/src/knowledge/embedder.ts +592 -0
- package/src/knowledge/index.ts +126 -0
- package/src/knowledge/lancedb-loader.ts +35 -0
- package/src/knowledge/migration.ts +17 -0
- package/src/knowledge/model-config.ts +132 -0
- package/src/knowledge/onnx-env.ts +48 -0
- package/src/knowledge/store-operations.ts +291 -0
- package/src/knowledge/store-schema.ts +79 -0
- package/src/knowledge/store.ts +1251 -0
- package/src/knowledge/transformers-loader.ts +31 -0
- package/src/knowledge/webgpu-probe.mjs +80 -0
- package/src/knowledge/webgpu-viability.ts +255 -0
- package/src/knowledge/writer-queue.ts +252 -0
- package/src/logger.ts +316 -122
- package/src/observers/research-observer-impl.ts +459 -0
- package/src/orchestration/deep-research-orchestrator.ts +524 -773
- package/src/orchestration/deep-research-types.ts +47 -35
- package/src/orchestration/headless-observer.ts +114 -0
- package/src/orchestration/orchestration-types.ts +33 -0
- package/src/orchestration/quick-research-orchestrator.ts +463 -0
- package/src/orchestration/research-orchestration-service.ts +549 -0
- package/src/orchestration/research-session-service.ts +178 -0
- package/src/orchestration/research-synthesis-service.ts +348 -0
- package/src/orchestration/researcher-executor.ts +394 -0
- package/src/orchestration/researcher.ts +115 -42
- package/src/orchestration/service-initialization.ts +109 -0
- package/src/orchestration/session-context.ts +7 -3
- package/src/orchestration/session-state.ts +672 -0
- package/src/prompts/research-knowledge-relevance-triage.md +35 -0
- package/src/prompts/research-knowledge-search-extractor.md +41 -0
- package/src/prompts/research-tool-usage.md +63 -16
- package/src/prompts/researcher.md +59 -136
- package/src/prompts/system-coordinator.md +64 -13
- package/src/prompts/system-lead-evaluator.md +82 -189
- package/src/research-config.ts +872 -0
- package/src/sdk.ts +847 -0
- package/src/security/cisa-kev.ts +72 -9
- package/src/security/cvss.ts +92 -0
- package/src/security/ecosystem.ts +45 -0
- package/src/security/github-advisories.ts +168 -428
- package/src/security/github-advisory-types.ts +282 -0
- package/src/security/index.ts +63 -177
- package/src/security/nvd-client.ts +550 -0
- package/src/security/nvd-types.ts +179 -0
- package/src/security/osv-client.ts +246 -0
- package/src/security/osv-types.ts +285 -0
- package/src/security/types.ts +67 -53
- package/src/skill-install/skill-installer.ts +519 -0
- package/src/stackexchange/index.ts +81 -27
- package/src/stackexchange/output/compact.ts +7 -6
- package/src/stackexchange/output/table.ts +11 -7
- package/src/stackexchange/queries.ts +0 -10
- package/src/stackexchange/rest-client.ts +141 -66
- package/src/stackexchange/types.ts +0 -17
- package/src/tool.ts +15 -423
- package/src/tools/grep.ts +32 -310
- package/src/tools/health-tool-definition.ts +101 -0
- package/src/tools/index.ts +38 -9
- package/src/tools/research-knowledge-search.ts +974 -0
- package/src/tools/research-knowledge-types.ts +77 -0
- package/src/tools/research-tool-definition.ts +494 -0
- package/src/tools/scrape.ts +286 -388
- package/src/tools/search.ts +98 -153
- package/src/tools/security.ts +107 -80
- package/src/tools/stackexchange.ts +58 -35
- package/src/tools/youtube-transcript.ts +163 -0
- package/src/tui/knowledge-search-panel.ts +86 -0
- package/src/tui/pulse.ts +86 -0
- package/src/tui/research-health.ts +124 -0
- package/src/tui/research-panel-color-utils.ts +340 -0
- package/src/tui/research-panel-format.ts +54 -0
- package/src/tui/research-panel-state.ts +404 -0
- package/src/tui/research-panel-wave.ts +280 -0
- package/src/tui/research-panel.ts +339 -435
- package/src/tui/research-tui-manager.ts +233 -0
- package/src/tui/tui-controller.ts +137 -0
- package/src/types/extension-context.ts +18 -49
- package/src/types/index.ts +61 -0
- package/src/types/llm.ts +68 -29
- package/src/types/research-panel-types.ts +61 -0
- package/src/utils/circuit-breaker.ts +146 -0
- package/src/utils/citation-utils.ts +97 -0
- package/src/utils/disk-space-checker.ts +55 -0
- package/src/utils/error-tracker.ts +265 -0
- package/src/utils/host-config.ts +45 -0
- package/src/utils/input-validation.ts +8 -10
- package/src/utils/json-utils.ts +150 -16
- package/src/utils/llm-usage.ts +54 -0
- package/src/utils/log-rotation.ts +125 -0
- package/src/utils/log-utils.ts +159 -0
- package/src/utils/make-resource-loader.ts +3 -1
- package/src/utils/metrics-summary.ts +459 -0
- package/src/utils/metrics.ts +302 -0
- package/src/utils/research-export.ts +28 -12
- package/src/utils/safe-unref.ts +31 -0
- package/src/utils/shared-links.ts +195 -90
- package/src/utils/shutdown-manager.ts +65 -0
- package/src/utils/stdio-capture.ts +407 -0
- package/src/utils/text-utils.ts +264 -7
- package/src/utils/tool-usage-tracker.ts +83 -16
- package/src/utils/url-utils.ts +255 -0
- package/src/utils/user-agent.ts +28 -0
- package/src/web-research/browser-search.ts +179 -0
- package/src/web-research/retry-utils.ts +173 -77
- package/src/web-research/scraper-types.ts +72 -0
- package/src/web-research/scraper-utils.ts +434 -0
- package/src/web-research/search.ts +78 -218
- package/src/web-research/types.ts +9 -24
- package/src/web-research/utils.ts +2 -143
- package/src/web-research/web-scraper.ts +477 -0
- package/src/youtube/index.ts +154 -0
- package/src/youtube/potoken.ts +259 -0
- package/src/youtube/transcript-client.ts +390 -0
- package/src/youtube/video-id.ts +118 -0
- package/config/searxng/default-settings.yml +0 -189
- package/config/searxng/limiter.toml +0 -34
- package/config/tooling/eslint.config.js +0 -73
- package/config/tooling/vitest.config.integration.ts +0 -17
- package/config/tooling/vitest.config.ts +0 -40
- package/config/tooling/vitest.config.unit.ts +0 -12
- package/docs/assets/README-banner.jpg +0 -0
- package/scripts/setup.js +0 -174
- package/src/infrastructure/searxng-lifecycle.ts +0 -577
- package/src/infrastructure/searxng-manager.ts +0 -1183
- package/src/infrastructure/state-manager.ts +0 -918
- package/src/orchestration/deep-research-reducer.ts +0 -129
- package/src/orchestration/id-utils.ts +0 -63
- package/src/security/nvd.ts +0 -532
- package/src/security/osv.ts +0 -487
- package/src/stackexchange/cache.ts +0 -111
- package/src/stackexchange/output/index.ts +0 -7
- package/src/stackexchange/output/json.ts +0 -21
- package/src/tui/searxng-status.ts +0 -80
- package/src/utils/inject-date.ts +0 -29
- package/src/utils/research-error.ts +0 -205
- package/src/utils/searxng-config.ts +0 -94
- package/src/utils/session-state.ts +0 -295
- package/src/web-research/dependencies.ts +0 -20
- package/src/web-research/scrapers.ts +0 -935
- package/tsconfig.json +0 -40
|
@@ -4,51 +4,63 @@
|
|
|
4
4
|
* Defines the schema for the monolithic ResearchState persisted in the session tree.
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
export type SiblingStatus = 'pending' | 'running' | 'completed' | 'failed';
|
|
7
|
+
import { Type, type Static } from 'typebox';
|
|
9
8
|
|
|
10
|
-
export
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
| { type: 'SIBLING_TOKENS'; id: string; tokens: number; cost: number };
|
|
9
|
+
export const ResearchStatusSchema = Type.Union([
|
|
10
|
+
Type.Literal('planning'),
|
|
11
|
+
Type.Literal('researching'),
|
|
12
|
+
Type.Literal('evaluating'),
|
|
13
|
+
Type.Literal('synthesizing'),
|
|
14
|
+
Type.Literal('completed'),
|
|
15
|
+
Type.Literal('failed')
|
|
16
|
+
]);
|
|
19
17
|
|
|
20
|
-
export
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
tokens?: number;
|
|
27
|
-
cost?: number;
|
|
28
|
-
}
|
|
18
|
+
export const SiblingStatusSchema = Type.Union([
|
|
19
|
+
Type.Literal('pending'),
|
|
20
|
+
Type.Literal('running'),
|
|
21
|
+
Type.Literal('completed'),
|
|
22
|
+
Type.Literal('failed')
|
|
23
|
+
]);
|
|
29
24
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
25
|
+
/**
|
|
26
|
+
* Individual research researcher (sibling) schema
|
|
27
|
+
*/
|
|
28
|
+
export const ResearchSiblingSchema = Type.Object({
|
|
29
|
+
id: Type.String(), // e.g. "1.1", "2.1"
|
|
30
|
+
query: Type.String(),
|
|
31
|
+
status: SiblingStatusSchema,
|
|
32
|
+
report: Type.Optional(Type.String()),
|
|
33
|
+
error: Type.Optional(Type.String()),
|
|
34
|
+
tokens: Type.Optional(Type.Number()),
|
|
35
|
+
cost: Type.Optional(Type.Number()),
|
|
36
|
+
});
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* Main deep research state schema
|
|
40
|
+
*/
|
|
41
|
+
export const SystemResearchStateSchema = Type.Object({
|
|
42
|
+
version: Type.Number(),
|
|
43
|
+
researchId: Type.String(), // Unique session ID
|
|
44
|
+
rootQuery: Type.String(),
|
|
45
|
+
complexity: Type.Union([Type.Literal(1), Type.Literal(2), Type.Literal(3)]), // 1: Normal, 2: Deep, 3: Ultra
|
|
46
|
+
currentRound: Type.Number(),
|
|
47
|
+
status: ResearchStatusSchema,
|
|
48
|
+
lastUpdated: Type.Number(),
|
|
37
49
|
|
|
38
50
|
// The full exhaustive list of aspects planned by the initial coordinator
|
|
39
|
-
initialAgenda:
|
|
51
|
+
initialAgenda: Type.Array(Type.String()),
|
|
40
52
|
|
|
41
53
|
// Global pool updated IMMEDIATELY by the scrape tool
|
|
42
|
-
allScrapedLinks:
|
|
54
|
+
allScrapedLinks: Type.Array(Type.String()),
|
|
43
55
|
|
|
44
56
|
// Sequence of research aspects actively being worked or completed
|
|
45
|
-
aspects:
|
|
46
|
-
[id: string]: ResearchSibling;
|
|
47
|
-
};
|
|
57
|
+
aspects: Type.Record(Type.String(), ResearchSiblingSchema),
|
|
48
58
|
|
|
49
59
|
// Track who was promoted to Lead Evaluator in this round to prevent race conditions
|
|
50
|
-
promotedId
|
|
60
|
+
promotedId: Type.Optional(Type.String()),
|
|
51
61
|
|
|
52
62
|
// Final result if completed
|
|
53
|
-
finalSynthesis
|
|
54
|
-
}
|
|
63
|
+
finalSynthesis: Type.Optional(Type.String()),
|
|
64
|
+
});
|
|
65
|
+
|
|
66
|
+
export type SystemResearchState = Static<typeof SystemResearchStateSchema>;
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Headless Research Observer
|
|
3
|
+
*
|
|
4
|
+
* A clean implementation of the ResearchObserver interface that forwards
|
|
5
|
+
* events to callbacks or logs them, rather than updating a TUI.
|
|
6
|
+
* Ideal for programmatic SDK use.
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
import { logger } from '../logger.ts';
|
|
10
|
+
import type { ResearchObserver, HeadlessObserverOptions } from '../core/interfaces/observer-interfaces.ts';
|
|
11
|
+
import type { ResearchPlan } from '../core/interfaces/research-plan-types.ts';
|
|
12
|
+
|
|
13
|
+
export type { HeadlessObserverOptions };
|
|
14
|
+
|
|
15
|
+
export class HeadlessObserver implements ResearchObserver {
|
|
16
|
+
constructor(private options: HeadlessObserverOptions = {}) {}
|
|
17
|
+
|
|
18
|
+
private emit(event: string, data?: any) {
|
|
19
|
+
if (this.options.enableLogging) {
|
|
20
|
+
logger.debug(`[HeadlessObserver] ${event}`, data);
|
|
21
|
+
}
|
|
22
|
+
// User-supplied SDK callback: a throw must not propagate into research
|
|
23
|
+
// event dispatch (same isolation TuiPulse applies to its subscribers).
|
|
24
|
+
try {
|
|
25
|
+
this.options.onProgress?.(event, data);
|
|
26
|
+
} catch (err) {
|
|
27
|
+
logger.debug('[HeadlessObserver] onProgress callback threw:', err);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
onStart(query: string, complexity: number): void {
|
|
32
|
+
this.emit('start', { query, complexity });
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
onPlanningStart(attempt: number): void {
|
|
36
|
+
this.emit('planning_start', { attempt });
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
onPlanningProgress(status: string): void {
|
|
40
|
+
this.emit('planning_progress', { status });
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
onPlanningTokens(tokens: number, cost: number): void {
|
|
44
|
+
this.emit('planning_tokens', { tokens, cost });
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
onPlanningSuccess(plan: ResearchPlan): void {
|
|
48
|
+
this.emit('planning_success', { plan });
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
onRoundStart(round: number): void {
|
|
52
|
+
this.emit('round_start', { round });
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
onSearchStart(queries: string[]): void {
|
|
56
|
+
this.emit('search_start', { queries });
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
onSearchProgress(resultsCount: number): void {
|
|
60
|
+
this.emit('search_progress', { resultsCount });
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
onSearchComplete(resultsCount: number): void {
|
|
64
|
+
this.emit('search_complete', { resultsCount });
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
onResearcherStart(id: string, name: string, goal: string, roundNumber?: number): void {
|
|
68
|
+
this.emit('researcher_start', { id, name, goal, roundNumber });
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
onResearcherProgress(id: string, status?: string, tokens?: number, cost?: number): void {
|
|
72
|
+
this.emit('researcher_progress', { id, status, tokens, cost });
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
onResearcherComplete(id: string, report: string): void {
|
|
76
|
+
this.emit('researcher_complete', { id, report });
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
onResearcherFailure(id: string, error: string): void {
|
|
80
|
+
this.emit('researcher_failure', { id, error });
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
onToolResult(researcherId: string, success: boolean): void {
|
|
84
|
+
this.emit('tool_result', { researcherId, success });
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
onEvaluationStart(round: number): void {
|
|
88
|
+
this.emit('evaluation_start', { round });
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
onEvaluationProgress(status: string): void {
|
|
92
|
+
this.emit('evaluation_progress', { status });
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
onEvaluationTokens(tokens: number, cost: number): void {
|
|
96
|
+
this.emit('evaluation_tokens', { tokens, cost });
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
onEvaluationDecision(action: 'synthesize' | 'delegate', plan?: ResearchPlan, round?: number): void {
|
|
100
|
+
this.emit('evaluation_decision', { action, plan, round });
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
onComplete(result: string): void {
|
|
104
|
+
this.emit('complete', { result });
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
onError(error: Error): void {
|
|
108
|
+
this.emit('error', { message: error.message });
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
onTokensConsumed(tokens: number, cost: number): void {
|
|
112
|
+
this.emit('tokens_consumed', { tokens, cost });
|
|
113
|
+
}
|
|
114
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Research Orchestration Types
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
import type { ExtensionContext } from '@earendil-works/pi-coding-agent';
|
|
6
|
+
import type { Model } from '@earendil-works/pi-ai';
|
|
7
|
+
import type { ResearcherConfig } from '../core/service-interfaces.ts';
|
|
8
|
+
import type { IPlanningService } from '../core/interfaces/planning-interfaces.ts';
|
|
9
|
+
import type { StoreUrlEntry } from '../core/interfaces/knowledge-interfaces.ts';
|
|
10
|
+
import type { Config } from '../config.ts';
|
|
11
|
+
import type { ResearchObserver } from '../core/interfaces/observer-interfaces.ts';
|
|
12
|
+
export type { RunResearchersOptions } from '../core/interfaces/orchestration-interfaces.ts';
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Options for running a single researcher
|
|
16
|
+
*/
|
|
17
|
+
export interface RunResearcherOptions {
|
|
18
|
+
config: ResearcherConfig;
|
|
19
|
+
initialLinks: string[];
|
|
20
|
+
historicalUrls: StoreUrlEntry[];
|
|
21
|
+
sessionId: string;
|
|
22
|
+
researchId: string;
|
|
23
|
+
round: number;
|
|
24
|
+
query: string;
|
|
25
|
+
complexity: 1 | 2 | 3;
|
|
26
|
+
ctx: ExtensionContext;
|
|
27
|
+
model: Model<any>;
|
|
28
|
+
researchConfig: Config;
|
|
29
|
+
planningService: IPlanningService;
|
|
30
|
+
observer?: ResearchObserver;
|
|
31
|
+
signal?: AbortSignal;
|
|
32
|
+
excludeTools?: string[];
|
|
33
|
+
}
|