research-powerpack-mcp 3.3.1 → 3.3.4
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/README.md +43 -0
- package/dist/clients/reddit.d.ts +4 -3
- package/dist/clients/reddit.d.ts.map +1 -1
- package/dist/clients/research.d.ts +12 -2
- package/dist/clients/research.d.ts.map +1 -1
- package/dist/clients/research.js +108 -36
- package/dist/clients/research.js.map +1 -1
- package/dist/clients/scraper.d.ts +4 -3
- package/dist/clients/scraper.d.ts.map +1 -1
- package/dist/clients/search.d.ts +3 -2
- package/dist/clients/search.d.ts.map +1 -1
- package/dist/config/index.d.ts +3 -2
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/index.js +3 -3
- package/dist/config/index.js.map +1 -1
- package/dist/config/loader.d.ts +40 -0
- package/dist/config/loader.d.ts.map +1 -0
- package/dist/config/loader.js +300 -0
- package/dist/config/loader.js.map +1 -0
- package/dist/config/types.d.ts +80 -0
- package/dist/config/types.d.ts.map +1 -0
- package/dist/config/types.js +6 -0
- package/dist/config/types.js.map +1 -0
- package/dist/config/yaml/tools.yaml +1308 -0
- package/dist/index.js +13 -122
- package/dist/index.js.map +1 -1
- package/dist/schemas/deep-research.d.ts +0 -37
- package/dist/schemas/deep-research.d.ts.map +1 -1
- package/dist/schemas/deep-research.js +2 -1
- package/dist/schemas/deep-research.js.map +1 -1
- package/dist/schemas/scrape-links.d.ts +0 -6
- package/dist/schemas/scrape-links.d.ts.map +1 -1
- package/dist/schemas/scrape-links.js +1 -1
- package/dist/schemas/scrape-links.js.map +1 -1
- package/dist/schemas/web-search.d.ts +0 -3
- package/dist/schemas/web-search.d.ts.map +1 -1
- package/dist/schemas/web-search.js +3 -3
- package/dist/schemas/web-search.js.map +1 -1
- package/dist/services/llm-processor.d.ts +0 -10
- package/dist/services/llm-processor.d.ts.map +1 -1
- package/dist/services/llm-processor.js +2 -1
- package/dist/services/llm-processor.js.map +1 -1
- package/dist/tools/definitions.d.ts +12 -62
- package/dist/tools/definitions.d.ts.map +1 -1
- package/dist/tools/definitions.js +13 -121
- package/dist/tools/definitions.js.map +1 -1
- package/dist/tools/reddit.d.ts +2 -1
- package/dist/tools/reddit.d.ts.map +1 -1
- package/dist/tools/reddit.js +3 -3
- package/dist/tools/reddit.js.map +1 -1
- package/dist/tools/registry.d.ts +71 -0
- package/dist/tools/registry.d.ts.map +1 -0
- package/dist/tools/registry.js +238 -0
- package/dist/tools/registry.js.map +1 -0
- package/dist/tools/utils.d.ts +92 -0
- package/dist/tools/utils.d.ts.map +1 -0
- package/dist/tools/utils.js +142 -0
- package/dist/tools/utils.js.map +1 -0
- package/dist/utils/errors.d.ts +3 -51
- package/dist/utils/errors.d.ts.map +1 -1
- package/dist/utils/errors.js +10 -7
- package/dist/utils/errors.js.map +1 -1
- package/dist/utils/url-aggregator.d.ts +5 -4
- package/dist/utils/url-aggregator.d.ts.map +1 -1
- package/dist/utils/url-aggregator.js +30 -1
- package/dist/utils/url-aggregator.js.map +1 -1
- package/dist/version.d.ts +0 -10
- package/dist/version.d.ts.map +1 -1
- package/dist/version.js +1 -10
- package/dist/version.js.map +1 -1
- package/package.json +3 -2
package/README.md
CHANGED
|
@@ -624,6 +624,49 @@ npm run typecheck
|
|
|
624
624
|
|
|
625
625
|
---
|
|
626
626
|
|
|
627
|
+
## 🏗️ Architecture (v3.4.0+)
|
|
628
|
+
|
|
629
|
+
The codebase uses a **YAML-driven configuration system** with **aggressive LLM optimization** (v3.5.0+):
|
|
630
|
+
|
|
631
|
+
### Core Architecture
|
|
632
|
+
|
|
633
|
+
| Component | File | Purpose |
|
|
634
|
+
|-----------|------|---------|
|
|
635
|
+
| **Tool Definitions** | `src/config/yaml/tools.yaml` | Single source of truth for all tool metadata |
|
|
636
|
+
| **Handler Registry** | `src/tools/registry.ts` | Declarative tool registration + `executeTool` wrapper |
|
|
637
|
+
| **YAML Loader** | `src/config/loader.ts` | Parses YAML, generates MCP-compatible definitions |
|
|
638
|
+
| **Shared Utils** | `src/tools/utils.ts` | Common utility functions |
|
|
639
|
+
|
|
640
|
+
**Adding a new tool:**
|
|
641
|
+
1. Add tool definition to `tools.yaml`
|
|
642
|
+
2. Create handler in `src/tools/`
|
|
643
|
+
3. Register in `src/tools/registry.ts`
|
|
644
|
+
|
|
645
|
+
See `docs/refactoring/04-migration-guide.md` for detailed instructions.
|
|
646
|
+
|
|
647
|
+
### LLM Optimization (v3.5.0+)
|
|
648
|
+
|
|
649
|
+
All tools include **aggressive guidance** to force LLMs to use them optimally:
|
|
650
|
+
|
|
651
|
+
| Feature | Description |
|
|
652
|
+
|---------|-------------|
|
|
653
|
+
| **Configurable Limits** | All min/max values in YAML (`limits` section) |
|
|
654
|
+
| **BAD vs GOOD Examples** | Every tool shows anti-patterns and perfect usage |
|
|
655
|
+
| **Aggressive Phrasing** | Changed from "you can" to "you MUST" |
|
|
656
|
+
| **Visual Formatting** | Emoji headers (🔥), section dividers (━━━), icons (📊🎯❌✅) |
|
|
657
|
+
| **Templates** | Structured formats for questions, extractions, file descriptions |
|
|
658
|
+
|
|
659
|
+
**Key Enhancements:**
|
|
660
|
+
- `search_reddit`: Minimum 10 queries (was 3), 10-category formula
|
|
661
|
+
- `deep_research`: 7-section question template, file attachment requirements
|
|
662
|
+
- `scrape_links`: Extraction template with OR statements, use_llm=true push
|
|
663
|
+
- `web_search`: Minimum 3 keywords, search operator examples
|
|
664
|
+
- `file_attachments`: Numbered 5-section description template
|
|
665
|
+
|
|
666
|
+
See `docs/refactoring/07-llm-optimization-summary.md` for full details.
|
|
667
|
+
|
|
668
|
+
---
|
|
669
|
+
|
|
627
670
|
## 🔥 Common Issues & Quick Fixes
|
|
628
671
|
|
|
629
672
|
<details>
|
package/dist/clients/reddit.d.ts
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* Fetches posts and comments sorted by score (most upvoted first)
|
|
4
4
|
* Implements robust error handling that NEVER crashes
|
|
5
5
|
*/
|
|
6
|
-
|
|
6
|
+
interface Post {
|
|
7
7
|
title: string;
|
|
8
8
|
author: string;
|
|
9
9
|
subreddit: string;
|
|
@@ -29,14 +29,14 @@ export interface PostResult {
|
|
|
29
29
|
allocatedComments: number;
|
|
30
30
|
actualComments: number;
|
|
31
31
|
}
|
|
32
|
-
|
|
32
|
+
interface BatchPostResult {
|
|
33
33
|
results: Map<string, PostResult | Error>;
|
|
34
34
|
batchesProcessed: number;
|
|
35
35
|
totalPosts: number;
|
|
36
36
|
rateLimitHits: number;
|
|
37
37
|
commentAllocation: CommentAllocation;
|
|
38
38
|
}
|
|
39
|
-
|
|
39
|
+
interface CommentAllocation {
|
|
40
40
|
totalBudget: number;
|
|
41
41
|
perPostBase: number;
|
|
42
42
|
perPostCapped: number;
|
|
@@ -65,4 +65,5 @@ export declare class RedditClient {
|
|
|
65
65
|
getPosts(urls: string[], maxComments?: number): Promise<Map<string, PostResult | Error>>;
|
|
66
66
|
batchGetPosts(urls: string[], maxCommentsOverride?: number, fetchComments?: boolean, onBatchComplete?: (batchNum: number, totalBatches: number, processed: number) => void): Promise<BatchPostResult>;
|
|
67
67
|
}
|
|
68
|
+
export {};
|
|
68
69
|
//# sourceMappingURL=reddit.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reddit.d.ts","sourceRoot":"","sources":["../../src/clients/reddit.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAYH,
|
|
1
|
+
{"version":3,"file":"reddit.d.ts","sourceRoot":"","sources":["../../src/clients/reddit.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAYH,UAAU,IAAI;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,IAAI,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,OAAO;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,OAAO,CAAC;CACf;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,IAAI,CAAC;IACX,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,UAAU,eAAe;IACvB,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,GAAG,KAAK,CAAC,CAAC;IACzC,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,iBAAiB,EAAE,iBAAiB,CAAC;CACtC;AAED,UAAU,iBAAiB;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,OAAO,CAAC;CACxB;AAED,wBAAgB,0BAA0B,CAAC,SAAS,EAAE,MAAM,GAAG,iBAAiB,CAK/E;AAWD,qBAAa,YAAY;IAKX,OAAO,CAAC,QAAQ;IAAU,OAAO,CAAC,YAAY;IAF1D,OAAO,CAAC,SAAS,CAA6D;gBAE1D,QAAQ,EAAE,MAAM,EAAU,YAAY,EAAE,MAAM;IAElE;;;;OAIG;YACW,IAAI;IA6ElB,OAAO,CAAC,QAAQ;IAKhB;;;OAGG;IACG,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,SAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IA2GlE,OAAO,CAAC,UAAU;IAOlB,OAAO,CAAC,eAAe;IA4BjB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,WAAW,SAAM,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,UAAU,GAAG,KAAK,CAAC,CAAC;IAUrF,aAAa,CACjB,IAAI,EAAE,MAAM,EAAE,EACd,mBAAmB,CAAC,EAAE,MAAM,EAC5B,aAAa,UAAO,EACpB,eAAe,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,IAAI,GACpF,OAAO,CAAC,eAAe,CAAC;CAkD5B"}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Implements robust retry logic and NEVER crashes the server
|
|
5
5
|
*/
|
|
6
6
|
import { type StructuredError } from '../utils/errors.js';
|
|
7
|
-
|
|
7
|
+
interface ResearchParams {
|
|
8
8
|
question: string;
|
|
9
9
|
systemPrompt?: string;
|
|
10
10
|
reasoningEffort?: 'low' | 'medium' | 'high';
|
|
@@ -48,10 +48,20 @@ export declare class ResearchClient {
|
|
|
48
48
|
*/
|
|
49
49
|
private calculateBackoff;
|
|
50
50
|
/**
|
|
51
|
-
*
|
|
51
|
+
* Build request payload based on model type
|
|
52
|
+
* Gemini models use tools with google_search, others use search_parameters
|
|
53
|
+
*/
|
|
54
|
+
private buildRequestPayload;
|
|
55
|
+
/**
|
|
56
|
+
* Execute a single research request with a specific model
|
|
57
|
+
*/
|
|
58
|
+
private executeResearch;
|
|
59
|
+
/**
|
|
60
|
+
* Perform research with retry logic and fallback to secondary model
|
|
52
61
|
* Returns a ResearchResponse - may contain error field on failure
|
|
53
62
|
* NEVER throws - always returns a valid response object
|
|
54
63
|
*/
|
|
55
64
|
research(params: ResearchParams): Promise<ResearchResponse>;
|
|
56
65
|
}
|
|
66
|
+
export {};
|
|
57
67
|
//# sourceMappingURL=research.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"research.d.ts","sourceRoot":"","sources":["../../src/clients/research.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EAIL,KAAK,eAAe,EACrB,MAAM,oBAAoB,CAAC;AAE5B,
|
|
1
|
+
{"version":3,"file":"research.d.ts","sourceRoot":"","sources":["../../src/clients/research.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EAIL,KAAK,eAAe,EACrB,MAAM,oBAAoB,CAAC;AAE5B,UAAU,cAAc;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;IAC5C,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE;QAAE,IAAI,EAAE,aAAa,GAAG,MAAM,CAAA;KAAE,CAAC;CACnD;AAED,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE;QACN,YAAY,EAAE,MAAM,CAAC;QACrB,gBAAgB,EAAE,MAAM,CAAC;QACzB,WAAW,EAAE,MAAM,CAAC;QACpB,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC;IACF,WAAW,CAAC,EAAE,KAAK,CAAC;QAClB,IAAI,EAAE,cAAc,CAAC;QACrB,GAAG,EAAE,MAAM,CAAC;QACZ,KAAK,EAAE,MAAM,CAAC;QACd,UAAU,EAAE,MAAM,CAAC;QACnB,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC,CAAC;IACH,KAAK,CAAC,EAAE,eAAe,CAAC;CACzB;AA4BD,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAS;;IAevB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IA6BxB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAMxB;;;OAGG;IACH,OAAO,CAAC,mBAAmB;IAqD3B;;OAEG;YACW,eAAe;IAiG7B;;;;OAIG;IACG,QAAQ,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,gBAAgB,CAAC;CAkElE"}
|
package/dist/clients/research.js
CHANGED
|
@@ -15,6 +15,19 @@ const RESEARCH_RETRY_CONFIG = {
|
|
|
15
15
|
};
|
|
16
16
|
// Retryable status codes for research API
|
|
17
17
|
const RETRYABLE_RESEARCH_CODES = new Set([429, 500, 502, 503, 504]);
|
|
18
|
+
// Models that use Gemini-style google_search tool instead of search_parameters
|
|
19
|
+
const GEMINI_STYLE_MODELS = new Set([
|
|
20
|
+
'google/gemini-2.5-flash',
|
|
21
|
+
'google/gemini-2.5-pro',
|
|
22
|
+
'google/gemini-2.0-flash',
|
|
23
|
+
'google/gemini-pro',
|
|
24
|
+
]);
|
|
25
|
+
/**
|
|
26
|
+
* Check if a model uses Gemini-style google_search tool
|
|
27
|
+
*/
|
|
28
|
+
function isGeminiStyleModel(model) {
|
|
29
|
+
return GEMINI_STYLE_MODELS.has(model) || model.startsWith('google/gemini');
|
|
30
|
+
}
|
|
18
31
|
export class ResearchClient {
|
|
19
32
|
client;
|
|
20
33
|
constructor() {
|
|
@@ -59,33 +72,33 @@ export class ResearchClient {
|
|
|
59
72
|
return Math.min(exponentialDelay + jitter, RESEARCH_RETRY_CONFIG.maxDelayMs);
|
|
60
73
|
}
|
|
61
74
|
/**
|
|
62
|
-
*
|
|
63
|
-
*
|
|
64
|
-
* NEVER throws - always returns a valid response object
|
|
75
|
+
* Build request payload based on model type
|
|
76
|
+
* Gemini models use tools with google_search, others use search_parameters
|
|
65
77
|
*/
|
|
66
|
-
|
|
67
|
-
const {
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
78
|
+
buildRequestPayload(model, messages, options) {
|
|
79
|
+
const { temperature, reasoningEffort, maxTokens, maxSearchResults, responseFormat } = options;
|
|
80
|
+
if (isGeminiStyleModel(model)) {
|
|
81
|
+
// Gemini uses tools with google_search
|
|
82
|
+
const payload = {
|
|
83
|
+
model,
|
|
84
|
+
messages,
|
|
85
|
+
temperature,
|
|
86
|
+
max_tokens: maxTokens,
|
|
87
|
+
tools: [
|
|
88
|
+
{
|
|
89
|
+
type: 'google_search',
|
|
90
|
+
googleSearch: {},
|
|
91
|
+
},
|
|
92
|
+
],
|
|
80
93
|
};
|
|
94
|
+
if (responseFormat) {
|
|
95
|
+
payload.response_format = responseFormat;
|
|
96
|
+
}
|
|
97
|
+
return payload;
|
|
81
98
|
}
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
}
|
|
86
|
-
messages.push({ role: 'user', content: question });
|
|
87
|
-
const requestPayload = {
|
|
88
|
-
model: RESEARCH.MODEL,
|
|
99
|
+
// Default: use search_parameters (for Grok, Perplexity, etc.)
|
|
100
|
+
const payload = {
|
|
101
|
+
model,
|
|
89
102
|
messages,
|
|
90
103
|
temperature,
|
|
91
104
|
reasoning_effort: reasoningEffort,
|
|
@@ -98,14 +111,21 @@ export class ResearchClient {
|
|
|
98
111
|
},
|
|
99
112
|
};
|
|
100
113
|
if (responseFormat) {
|
|
101
|
-
|
|
114
|
+
payload.response_format = responseFormat;
|
|
102
115
|
}
|
|
116
|
+
return payload;
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Execute a single research request with a specific model
|
|
120
|
+
*/
|
|
121
|
+
async executeResearch(model, messages, options) {
|
|
122
|
+
const requestPayload = this.buildRequestPayload(model, messages, options);
|
|
103
123
|
let lastError;
|
|
104
|
-
// Retry loop
|
|
124
|
+
// Retry loop for this model
|
|
105
125
|
for (let attempt = 0; attempt <= RESEARCH_RETRY_CONFIG.maxRetries; attempt++) {
|
|
106
126
|
try {
|
|
107
127
|
if (attempt > 0) {
|
|
108
|
-
console.error(`[Research] Retry attempt ${attempt}/${RESEARCH_RETRY_CONFIG.maxRetries}`);
|
|
128
|
+
console.error(`[Research] Retry attempt ${attempt}/${RESEARCH_RETRY_CONFIG.maxRetries} for ${model}`);
|
|
109
129
|
}
|
|
110
130
|
const response = await this.client.chat.completions.create(requestPayload);
|
|
111
131
|
const choice = response.choices?.[0];
|
|
@@ -115,7 +135,7 @@ export class ResearchClient {
|
|
|
115
135
|
lastError = {
|
|
116
136
|
code: ErrorCode.INTERNAL_ERROR,
|
|
117
137
|
message: 'Research API returned empty response',
|
|
118
|
-
retryable: true,
|
|
138
|
+
retryable: true,
|
|
119
139
|
};
|
|
120
140
|
if (attempt < RESEARCH_RETRY_CONFIG.maxRetries) {
|
|
121
141
|
const delayMs = this.calculateBackoff(attempt);
|
|
@@ -126,7 +146,7 @@ export class ResearchClient {
|
|
|
126
146
|
}
|
|
127
147
|
return {
|
|
128
148
|
id: response.id || '',
|
|
129
|
-
model: response.model ||
|
|
149
|
+
model: response.model || model,
|
|
130
150
|
created: response.created || Date.now(),
|
|
131
151
|
content: message?.content || '',
|
|
132
152
|
finishReason: choice?.finish_reason,
|
|
@@ -148,7 +168,7 @@ export class ResearchClient {
|
|
|
148
168
|
catch (error) {
|
|
149
169
|
lastError = classifyError(error);
|
|
150
170
|
const err = error;
|
|
151
|
-
console.error(`[Research] Error (attempt ${attempt + 1}): ${lastError.message}`, {
|
|
171
|
+
console.error(`[Research] Error with ${model} (attempt ${attempt + 1}): ${lastError.message}`, {
|
|
152
172
|
status: err.status,
|
|
153
173
|
});
|
|
154
174
|
// Check if we should retry
|
|
@@ -162,20 +182,72 @@ export class ResearchClient {
|
|
|
162
182
|
break;
|
|
163
183
|
}
|
|
164
184
|
}
|
|
165
|
-
//
|
|
166
|
-
const errorMessage = lastError?.message || 'Unknown research error';
|
|
167
|
-
console.error(`[Research] All attempts failed: ${errorMessage}`);
|
|
185
|
+
// Return error response
|
|
168
186
|
return {
|
|
169
187
|
id: '',
|
|
170
|
-
model
|
|
188
|
+
model,
|
|
171
189
|
created: Date.now(),
|
|
172
|
-
content:
|
|
190
|
+
content: '',
|
|
173
191
|
error: lastError || {
|
|
174
192
|
code: ErrorCode.UNKNOWN_ERROR,
|
|
175
|
-
message:
|
|
193
|
+
message: 'Unknown research error',
|
|
176
194
|
retryable: false,
|
|
177
195
|
},
|
|
178
196
|
};
|
|
179
197
|
}
|
|
198
|
+
/**
|
|
199
|
+
* Perform research with retry logic and fallback to secondary model
|
|
200
|
+
* Returns a ResearchResponse - may contain error field on failure
|
|
201
|
+
* NEVER throws - always returns a valid response object
|
|
202
|
+
*/
|
|
203
|
+
async research(params) {
|
|
204
|
+
const { question, systemPrompt, reasoningEffort = RESEARCH.REASONING_EFFORT, maxSearchResults = RESEARCH.MAX_URLS, maxTokens = 32000, temperature = 0.3, responseFormat, } = params;
|
|
205
|
+
// Validate input
|
|
206
|
+
if (!question?.trim()) {
|
|
207
|
+
return {
|
|
208
|
+
id: '',
|
|
209
|
+
model: RESEARCH.MODEL,
|
|
210
|
+
created: Date.now(),
|
|
211
|
+
content: '',
|
|
212
|
+
error: {
|
|
213
|
+
code: ErrorCode.INVALID_INPUT,
|
|
214
|
+
message: 'Research question cannot be empty',
|
|
215
|
+
retryable: false,
|
|
216
|
+
},
|
|
217
|
+
};
|
|
218
|
+
}
|
|
219
|
+
const messages = [];
|
|
220
|
+
if (systemPrompt) {
|
|
221
|
+
messages.push({ role: 'system', content: systemPrompt });
|
|
222
|
+
}
|
|
223
|
+
messages.push({ role: 'user', content: question });
|
|
224
|
+
const options = { temperature, reasoningEffort, maxTokens, maxSearchResults, responseFormat };
|
|
225
|
+
// Try primary model first
|
|
226
|
+
console.error(`[Research] Trying primary model: ${RESEARCH.MODEL}`);
|
|
227
|
+
const primaryResult = await this.executeResearch(RESEARCH.MODEL, messages, options);
|
|
228
|
+
if (!primaryResult.error) {
|
|
229
|
+
return primaryResult;
|
|
230
|
+
}
|
|
231
|
+
// Primary failed - try fallback model if different
|
|
232
|
+
if (RESEARCH.FALLBACK_MODEL && RESEARCH.FALLBACK_MODEL !== RESEARCH.MODEL) {
|
|
233
|
+
console.error(`[Research] Primary model failed, trying fallback: ${RESEARCH.FALLBACK_MODEL}`);
|
|
234
|
+
const fallbackResult = await this.executeResearch(RESEARCH.FALLBACK_MODEL, messages, options);
|
|
235
|
+
if (!fallbackResult.error) {
|
|
236
|
+
return fallbackResult;
|
|
237
|
+
}
|
|
238
|
+
// Both failed - return the fallback error (more recent)
|
|
239
|
+
console.error(`[Research] Both models failed. Primary: ${primaryResult.error?.message}, Fallback: ${fallbackResult.error?.message}`);
|
|
240
|
+
return {
|
|
241
|
+
...fallbackResult,
|
|
242
|
+
content: `Research failed with both models. Primary (${RESEARCH.MODEL}): ${primaryResult.error?.message}. Fallback (${RESEARCH.FALLBACK_MODEL}): ${fallbackResult.error?.message}`,
|
|
243
|
+
};
|
|
244
|
+
}
|
|
245
|
+
// No fallback or same model - return primary error
|
|
246
|
+
console.error(`[Research] All attempts failed: ${primaryResult.error?.message}`);
|
|
247
|
+
return {
|
|
248
|
+
...primaryResult,
|
|
249
|
+
content: `Research failed: ${primaryResult.error?.message}`,
|
|
250
|
+
};
|
|
251
|
+
}
|
|
180
252
|
}
|
|
181
253
|
//# sourceMappingURL=research.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"research.js","sourceRoot":"","sources":["../../src/clients/research.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EACL,aAAa,EACb,KAAK,EACL,SAAS,GAEV,MAAM,oBAAoB,CAAC;AAkC5B,wCAAwC;AACxC,iEAAiE;AACjE,MAAM,qBAAqB,GAAG;IAC5B,UAAU,EAAE,CAAC,EAAE,iDAAiD;IAChE,WAAW,EAAE,IAAI,EAAE,oBAAoB;IACvC,UAAU,EAAE,KAAK;CACT,CAAC;AAEX,0CAA0C;AAC1C,MAAM,wBAAwB,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;AAEpE,MAAM,OAAO,cAAc;IACjB,MAAM,CAAS;IAEvB;QACE,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;QACjE,CAAC;QAED,IAAI,CAAC,MAAM,GAAG,IAAI,MAAM,CAAC;YACvB,OAAO,EAAE,QAAQ,CAAC,QAAQ;YAC1B,MAAM,EAAE,QAAQ,CAAC,OAAO;YACxB,OAAO,EAAE,QAAQ,CAAC,UAAU;YAC5B,UAAU,EAAE,CAAC,EAAE,8BAA8B;SAC9C,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACK,gBAAgB,CAAC,KAAc;QACrC,IAAI,CAAC,KAAK;YAAE,OAAO,KAAK,CAAC;QAEzB,MAAM,GAAG,GAAG,KAIX,CAAC;QAEF,0BAA0B;QAC1B,IAAI,GAAG,CAAC,MAAM,IAAI,wBAAwB,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;YAC3D,OAAO,IAAI,CAAC;QACd,CAAC;QAED,yBAAyB;QACzB,MAAM,OAAO,GAAG,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;QAClD,IACE,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC;YAC9B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC;YAC3B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC;YAC7B,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAC;YACvC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,EAC9B,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;OAEG;IACK,gBAAgB,CAAC,OAAe;QACtC,MAAM,gBAAgB,GAAG,qBAAqB,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;QAClF,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,GAAG,gBAAgB,CAAC;QACtD,OAAO,IAAI,CAAC,GAAG,CAAC,gBAAgB,GAAG,MAAM,EAAE,qBAAqB,CAAC,UAAU,CAAC,CAAC;IAC/E,CAAC;IAED
|
|
1
|
+
{"version":3,"file":"research.js","sourceRoot":"","sources":["../../src/clients/research.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EACL,aAAa,EACb,KAAK,EACL,SAAS,GAEV,MAAM,oBAAoB,CAAC;AAkC5B,wCAAwC;AACxC,iEAAiE;AACjE,MAAM,qBAAqB,GAAG;IAC5B,UAAU,EAAE,CAAC,EAAE,iDAAiD;IAChE,WAAW,EAAE,IAAI,EAAE,oBAAoB;IACvC,UAAU,EAAE,KAAK;CACT,CAAC;AAEX,0CAA0C;AAC1C,MAAM,wBAAwB,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;AAEpE,+EAA+E;AAC/E,MAAM,mBAAmB,GAAG,IAAI,GAAG,CAAC;IAClC,yBAAyB;IACzB,uBAAuB;IACvB,yBAAyB;IACzB,mBAAmB;CACpB,CAAC,CAAC;AAEH;;GAEG;AACH,SAAS,kBAAkB,CAAC,KAAa;IACvC,OAAO,mBAAmB,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;AAC7E,CAAC;AAED,MAAM,OAAO,cAAc;IACjB,MAAM,CAAS;IAEvB;QACE,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;QACjE,CAAC;QAED,IAAI,CAAC,MAAM,GAAG,IAAI,MAAM,CAAC;YACvB,OAAO,EAAE,QAAQ,CAAC,QAAQ;YAC1B,MAAM,EAAE,QAAQ,CAAC,OAAO;YACxB,OAAO,EAAE,QAAQ,CAAC,UAAU;YAC5B,UAAU,EAAE,CAAC,EAAE,8BAA8B;SAC9C,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACK,gBAAgB,CAAC,KAAc;QACrC,IAAI,CAAC,KAAK;YAAE,OAAO,KAAK,CAAC;QAEzB,MAAM,GAAG,GAAG,KAIX,CAAC;QAEF,0BAA0B;QAC1B,IAAI,GAAG,CAAC,MAAM,IAAI,wBAAwB,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;YAC3D,OAAO,IAAI,CAAC;QACd,CAAC;QAED,yBAAyB;QACzB,MAAM,OAAO,GAAG,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;QAClD,IACE,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC;YAC9B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC;YAC3B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC;YAC7B,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAC;YACvC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,EAC9B,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;OAEG;IACK,gBAAgB,CAAC,OAAe;QACtC,MAAM,gBAAgB,GAAG,qBAAqB,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;QAClF,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,GAAG,gBAAgB,CAAC;QACtD,OAAO,IAAI,CAAC,GAAG,CAAC,gBAAgB,GAAG,MAAM,EAAE,qBAAqB,CAAC,UAAU,CAAC,CAAC;IAC/E,CAAC;IAED;;;OAGG;IACK,mBAAmB,CACzB,KAAa,EACb,QAA6D,EAC7D,OAMC;QAED,MAAM,EAAE,WAAW,EAAE,eAAe,EAAE,SAAS,EAAE,gBAAgB,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC;QAE9F,IAAI,kBAAkB,CAAC,KAAK,CAAC,EAAE,CAAC;YAC9B,uCAAuC;YACvC,MAAM,OAAO,GAA4B;gBACvC,KAAK;gBACL,QAAQ;gBACR,WAAW;gBACX,UAAU,EAAE,SAAS;gBACrB,KAAK,EAAE;oBACL;wBACE,IAAI,EAAE,eAAe;wBACrB,YAAY,EAAE,EAAE;qBACjB;iBACF;aACF,CAAC;YACF,IAAI,cAAc,EAAE,CAAC;gBACnB,OAAO,CAAC,eAAe,GAAG,cAAc,CAAC;YAC3C,CAAC;YACD,OAAO,OAAO,CAAC;QACjB,CAAC;QAED,8DAA8D;QAC9D,MAAM,OAAO,GAA4B;YACvC,KAAK;YACL,QAAQ;YACR,WAAW;YACX,gBAAgB,EAAE,eAAe;YACjC,qBAAqB,EAAE,SAAS;YAChC,iBAAiB,EAAE;gBACjB,IAAI,EAAE,IAAI;gBACV,kBAAkB,EAAE,IAAI,CAAC,GAAG,CAAC,gBAAgB,EAAE,EAAE,CAAC;gBAClD,gBAAgB,EAAE,IAAI;gBACtB,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;aAC3B;SACF,CAAC;QACF,IAAI,cAAc,EAAE,CAAC;YACnB,OAAO,CAAC,eAAe,GAAG,cAAc,CAAC;QAC3C,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,eAAe,CAC3B,KAAa,EACb,QAA6D,EAC7D,OAMC;QAED,MAAM,cAAc,GAAG,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC1E,IAAI,SAAsC,CAAC;QAE3C,4BAA4B;QAC5B,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,qBAAqB,CAAC,UAAU,EAAE,OAAO,EAAE,EAAE,CAAC;YAC7E,IAAI,CAAC;gBACH,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;oBAChB,OAAO,CAAC,KAAK,CAAC,4BAA4B,OAAO,IAAI,qBAAqB,CAAC,UAAU,QAAQ,KAAK,EAAE,CAAC,CAAC;gBACxG,CAAC;gBAED,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,cAAqB,CAAC,CAAC;gBAClF,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;gBACrC,MAAM,OAAO,GAAG,MAAM,EAAE,OAAc,CAAC;gBAEvC,oBAAoB;gBACpB,IAAI,CAAC,OAAO,EAAE,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;oBACjC,SAAS,GAAG;wBACV,IAAI,EAAE,SAAS,CAAC,cAAc;wBAC9B,OAAO,EAAE,sCAAsC;wBAC/C,SAAS,EAAE,IAAI;qBAChB,CAAC;oBAEF,IAAI,OAAO,GAAG,qBAAqB,CAAC,UAAU,EAAE,CAAC;wBAC/C,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;wBAC/C,OAAO,CAAC,KAAK,CAAC,0CAA0C,OAAO,OAAO,CAAC,CAAC;wBACxE,MAAM,KAAK,CAAC,OAAO,CAAC,CAAC;wBACrB,SAAS;oBACX,CAAC;gBACH,CAAC;gBAED,OAAO;oBACL,EAAE,EAAE,QAAQ,CAAC,EAAE,IAAI,EAAE;oBACrB,KAAK,EAAE,QAAQ,CAAC,KAAK,IAAI,KAAK;oBAC9B,OAAO,EAAE,QAAQ,CAAC,OAAO,IAAI,IAAI,CAAC,GAAG,EAAE;oBACvC,OAAO,EAAE,OAAO,EAAE,OAAO,IAAI,EAAE;oBAC/B,YAAY,EAAE,MAAM,EAAE,aAAa;oBACnC,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;wBACtB,YAAY,EAAE,QAAQ,CAAC,KAAK,CAAC,aAAa;wBAC1C,gBAAgB,EAAE,QAAQ,CAAC,KAAK,CAAC,iBAAiB;wBAClD,WAAW,EAAE,QAAQ,CAAC,KAAK,CAAC,YAAY;wBACxC,WAAW,EAAG,QAAQ,CAAC,KAAa,CAAC,gBAAgB;qBACtD,CAAC,CAAC,CAAC,SAAS;oBACb,WAAW,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC;wBAClD,IAAI,EAAE,cAAuB;wBAC7B,GAAG,EAAE,CAAC,CAAC,YAAY,EAAE,GAAG,IAAI,EAAE;wBAC9B,KAAK,EAAE,CAAC,CAAC,YAAY,EAAE,KAAK,IAAI,EAAE;wBAClC,UAAU,EAAE,CAAC,CAAC,YAAY,EAAE,WAAW,IAAI,CAAC;wBAC5C,QAAQ,EAAE,CAAC,CAAC,YAAY,EAAE,SAAS,IAAI,CAAC;qBACzC,CAAC,CAAC;iBACJ,CAAC;YAEJ,CAAC;YAAC,OAAO,KAAc,EAAE,CAAC;gBACxB,SAAS,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;gBAEjC,MAAM,GAAG,GAAG,KAA8C,CAAC;gBAC3D,OAAO,CAAC,KAAK,CAAC,yBAAyB,KAAK,aAAa,OAAO,GAAG,CAAC,MAAM,SAAS,CAAC,OAAO,EAAE,EAAE;oBAC7F,MAAM,EAAE,GAAG,CAAC,MAAM;iBACnB,CAAC,CAAC;gBAEH,2BAA2B;gBAC3B,IAAI,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,IAAI,OAAO,GAAG,qBAAqB,CAAC,UAAU,EAAE,CAAC;oBAC/E,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;oBAC/C,OAAO,CAAC,KAAK,CAAC,0BAA0B,OAAO,OAAO,CAAC,CAAC;oBACxD,MAAM,KAAK,CAAC,OAAO,CAAC,CAAC;oBACrB,SAAS;gBACX,CAAC;gBAED,uCAAuC;gBACvC,MAAM;YACR,CAAC;QACH,CAAC;QAED,wBAAwB;QACxB,OAAO;YACL,EAAE,EAAE,EAAE;YACN,KAAK;YACL,OAAO,EAAE,IAAI,CAAC,GAAG,EAAE;YACnB,OAAO,EAAE,EAAE;YACX,KAAK,EAAE,SAAS,IAAI;gBAClB,IAAI,EAAE,SAAS,CAAC,aAAa;gBAC7B,OAAO,EAAE,wBAAwB;gBACjC,SAAS,EAAE,KAAK;aACjB;SACF,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,QAAQ,CAAC,MAAsB;QACnC,MAAM,EACJ,QAAQ,EACR,YAAY,EACZ,eAAe,GAAG,QAAQ,CAAC,gBAAgB,EAC3C,gBAAgB,GAAG,QAAQ,CAAC,QAAQ,EACpC,SAAS,GAAG,KAAK,EACjB,WAAW,GAAG,GAAG,EACjB,cAAc,GACf,GAAG,MAAM,CAAC;QAEX,iBAAiB;QACjB,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,EAAE,CAAC;YACtB,OAAO;gBACL,EAAE,EAAE,EAAE;gBACN,KAAK,EAAE,QAAQ,CAAC,KAAK;gBACrB,OAAO,EAAE,IAAI,CAAC,GAAG,EAAE;gBACnB,OAAO,EAAE,EAAE;gBACX,KAAK,EAAE;oBACL,IAAI,EAAE,SAAS,CAAC,aAAa;oBAC7B,OAAO,EAAE,mCAAmC;oBAC5C,SAAS,EAAE,KAAK;iBACjB;aACF,CAAC;QACJ,CAAC;QAED,MAAM,QAAQ,GAAwD,EAAE,CAAC;QACzE,IAAI,YAAY,EAAE,CAAC;YACjB,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC,CAAC;QAC3D,CAAC;QACD,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;QAEnD,MAAM,OAAO,GAAG,EAAE,WAAW,EAAE,eAAe,EAAE,SAAS,EAAE,gBAAgB,EAAE,cAAc,EAAE,CAAC;QAE9F,0BAA0B;QAC1B,OAAO,CAAC,KAAK,CAAC,oCAAoC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;QACpE,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;QAEpF,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;YACzB,OAAO,aAAa,CAAC;QACvB,CAAC;QAED,mDAAmD;QACnD,IAAI,QAAQ,CAAC,cAAc,IAAI,QAAQ,CAAC,cAAc,KAAK,QAAQ,CAAC,KAAK,EAAE,CAAC;YAC1E,OAAO,CAAC,KAAK,CAAC,qDAAqD,QAAQ,CAAC,cAAc,EAAE,CAAC,CAAC;YAC9F,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,cAAc,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;YAE9F,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;gBAC1B,OAAO,cAAc,CAAC;YACxB,CAAC;YAED,wDAAwD;YACxD,OAAO,CAAC,KAAK,CAAC,2CAA2C,aAAa,CAAC,KAAK,EAAE,OAAO,eAAe,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;YACrI,OAAO;gBACL,GAAG,cAAc;gBACjB,OAAO,EAAE,8CAA8C,QAAQ,CAAC,KAAK,MAAM,aAAa,CAAC,KAAK,EAAE,OAAO,eAAe,QAAQ,CAAC,cAAc,MAAM,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE;aACnL,CAAC;QACJ,CAAC;QAED,mDAAmD;QACnD,OAAO,CAAC,KAAK,CAAC,mCAAmC,aAAa,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;QACjF,OAAO;YACL,GAAG,aAAa;YAChB,OAAO,EAAE,oBAAoB,aAAa,CAAC,KAAK,EAAE,OAAO,EAAE;SAC5D,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -4,20 +4,20 @@
|
|
|
4
4
|
* Implements robust error handling that NEVER crashes
|
|
5
5
|
*/
|
|
6
6
|
import { type StructuredError } from '../utils/errors.js';
|
|
7
|
-
|
|
7
|
+
interface ScrapeRequest {
|
|
8
8
|
url: string;
|
|
9
9
|
mode?: 'basic' | 'javascript';
|
|
10
10
|
timeout?: number;
|
|
11
11
|
country?: string;
|
|
12
12
|
}
|
|
13
|
-
|
|
13
|
+
interface ScrapeResponse {
|
|
14
14
|
content: string;
|
|
15
15
|
statusCode: number;
|
|
16
16
|
credits: number;
|
|
17
17
|
headers?: Record<string, string>;
|
|
18
18
|
error?: StructuredError;
|
|
19
19
|
}
|
|
20
|
-
|
|
20
|
+
interface BatchScrapeResult {
|
|
21
21
|
results: Array<ScrapeResponse & {
|
|
22
22
|
url: string;
|
|
23
23
|
}>;
|
|
@@ -67,4 +67,5 @@ export declare class ScraperClient {
|
|
|
67
67
|
*/
|
|
68
68
|
private processBatch;
|
|
69
69
|
}
|
|
70
|
+
export {};
|
|
70
71
|
//# sourceMappingURL=scraper.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scraper.d.ts","sourceRoot":"","sources":["../../src/clients/scraper.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAKL,KAAK,eAAe,EACrB,MAAM,oBAAoB,CAAC;AAE5B,
|
|
1
|
+
{"version":3,"file":"scraper.d.ts","sourceRoot":"","sources":["../../src/clients/scraper.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAKL,KAAK,eAAe,EACrB,MAAM,oBAAoB,CAAC;AAE5B,UAAU,aAAa;IACrB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,OAAO,GAAG,YAAY,CAAC;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,UAAU,cAAc;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,KAAK,CAAC,EAAE,eAAe,CAAC;CACzB;AAED,UAAU,iBAAiB;IACzB,OAAO,EAAE,KAAK,CAAC,cAAc,GAAG;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACjD,gBAAgB,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;CACvB;AAOD,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,OAAO,CAA2B;gBAE9B,MAAM,CAAC,EAAE,MAAM;IAS3B;;;OAGG;IACG,MAAM,CAAC,OAAO,EAAE,aAAa,EAAE,UAAU,IAAsB,GAAG,OAAO,CAAC,cAAc,CAAC;IA0J/F;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAMxB;;;OAGG;IACG,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAA;KAAO,GAAG,OAAO,CAAC,cAAc,CAAC;IA2DlG;;;OAGG;IACG,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,OAAO,GAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAA;KAAO,GAAG,OAAO,CAAC,KAAK,CAAC,cAAc,GAAG;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAa1H;;;OAGG;IACG,WAAW,CACf,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,GAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAA;KAAO,EAClC,eAAe,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,IAAI,GACpF,OAAO,CAAC,iBAAiB,CAAC;IAiE7B;;;OAGG;YACW,YAAY;CAoB3B"}
|
package/dist/clients/search.d.ts
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Implements robust error handling that NEVER crashes
|
|
5
5
|
*/
|
|
6
6
|
import { type StructuredError } from '../utils/errors.js';
|
|
7
|
-
|
|
7
|
+
interface SearchResult {
|
|
8
8
|
title: string;
|
|
9
9
|
link: string;
|
|
10
10
|
snippet: string;
|
|
@@ -18,7 +18,7 @@ export interface KeywordSearchResult {
|
|
|
18
18
|
related: string[];
|
|
19
19
|
error?: StructuredError;
|
|
20
20
|
}
|
|
21
|
-
|
|
21
|
+
interface MultipleSearchResponse {
|
|
22
22
|
searches: KeywordSearchResult[];
|
|
23
23
|
totalKeywords: number;
|
|
24
24
|
executionTime: number;
|
|
@@ -58,4 +58,5 @@ export declare class SearchClient {
|
|
|
58
58
|
*/
|
|
59
59
|
searchRedditMultiple(queries: string[], dateAfter?: string): Promise<Map<string, RedditSearchResult[]>>;
|
|
60
60
|
}
|
|
61
|
+
export {};
|
|
61
62
|
//# sourceMappingURL=search.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/clients/search.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAKL,KAAK,eAAe,EACrB,MAAM,oBAAoB,CAAC;AAE5B,
|
|
1
|
+
{"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/clients/search.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAKL,KAAK,eAAe,EACrB,MAAM,oBAAoB,CAAC;AAE5B,UAAU,YAAY;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,KAAK,CAAC,EAAE,eAAe,CAAC;CACzB;AAED,UAAU,sBAAsB;IAC9B,QAAQ,EAAE,mBAAmB,EAAE,CAAC;IAChC,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,eAAe,CAAC;CACzB;AAED,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAYD,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,OAAO,CAA+B;gBAElC,MAAM,CAAC,EAAE,MAAM;IAS3B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAMxB;;OAEG;IACH,OAAO,CAAC,WAAW;IAOnB;;;OAGG;IACG,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAsHzE;;;OAGG;IACG,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAuDpF;;;OAGG;IACG,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,kBAAkB,EAAE,CAAC,CAAC;CAY9G"}
|
package/dist/config/index.d.ts
CHANGED
|
@@ -2,8 +2,7 @@
|
|
|
2
2
|
* Consolidated configuration
|
|
3
3
|
* All environment variables, constants, and LLM config in one place
|
|
4
4
|
*/
|
|
5
|
-
|
|
6
|
-
export interface EnvConfig {
|
|
5
|
+
interface EnvConfig {
|
|
7
6
|
SCRAPER_API_KEY: string;
|
|
8
7
|
SEARCH_API_KEY: string | undefined;
|
|
9
8
|
REDDIT_CLIENT_ID: string | undefined;
|
|
@@ -13,6 +12,7 @@ export declare function parseEnv(): EnvConfig;
|
|
|
13
12
|
export declare const RESEARCH: {
|
|
14
13
|
readonly BASE_URL: string;
|
|
15
14
|
readonly MODEL: string;
|
|
15
|
+
readonly FALLBACK_MODEL: string;
|
|
16
16
|
readonly API_KEY: string;
|
|
17
17
|
readonly TIMEOUT_MS: number;
|
|
18
18
|
readonly REASONING_EFFORT: "low" | "medium" | "high";
|
|
@@ -58,4 +58,5 @@ export declare const LLM_EXTRACTION: {
|
|
|
58
58
|
readonly MAX_TOKENS: 8000;
|
|
59
59
|
readonly ENABLE_REASONING: boolean;
|
|
60
60
|
};
|
|
61
|
+
export {};
|
|
61
62
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAoDH,UAAU,SAAS;IACjB,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,gBAAgB,EAAE,MAAM,GAAG,SAAS,CAAC;IACrC,oBAAoB,EAAE,MAAM,GAAG,SAAS,CAAC;CAC1C;AAED,wBAAgB,QAAQ,IAAI,SAAS,CAOpC;AAMD,eAAO,MAAM,QAAQ;;;;;;;;CAUX,CAAC;AAQX,eAAO,MAAM,MAAM;;;;CAIT,CAAC;AAMX,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;IAClB,YAAY,EAAE,OAAO,CAAC;IACtB,aAAa,EAAE,OAAO,CAAC;CACxB;AAED,wBAAgB,eAAe,IAAI,YAAY,CAS9C;AAED,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,MAAM,YAAY,GAAG,MAAM,CAS3E;AAMD,eAAO,MAAM,OAAO;;;;;;;;;CASV,CAAC;AAMX,eAAO,MAAM,MAAM;;;;;;;;;CAST,CAAC;AAMX,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAWrC,CAAC;AAMX,eAAO,MAAM,cAAc;;;;CAIjB,CAAC"}
|
package/dist/config/index.js
CHANGED
|
@@ -3,8 +3,7 @@
|
|
|
3
3
|
* All environment variables, constants, and LLM config in one place
|
|
4
4
|
*/
|
|
5
5
|
import { VERSION, PACKAGE_NAME, PACKAGE_DESCRIPTION } from '../version.js';
|
|
6
|
-
//
|
|
7
|
-
export { VERSION, PACKAGE_NAME, PACKAGE_DESCRIPTION } from '../version.js';
|
|
6
|
+
// Import version utilities (not re-exported - use directly from version.ts if needed externally)
|
|
8
7
|
// ============================================================================
|
|
9
8
|
// Safe Integer Parsing Helper
|
|
10
9
|
// ============================================================================
|
|
@@ -48,7 +47,8 @@ export function parseEnv() {
|
|
|
48
47
|
// ============================================================================
|
|
49
48
|
export const RESEARCH = {
|
|
50
49
|
BASE_URL: process.env.OPENROUTER_BASE_URL || 'https://openrouter.ai/api/v1',
|
|
51
|
-
MODEL: process.env.RESEARCH_MODEL || 'x-ai/grok-4
|
|
50
|
+
MODEL: process.env.RESEARCH_MODEL || 'x-ai/grok-4-fast',
|
|
51
|
+
FALLBACK_MODEL: process.env.RESEARCH_FALLBACK_MODEL || 'google/gemini-2.5-flash',
|
|
52
52
|
API_KEY: process.env.OPENROUTER_API_KEY || '',
|
|
53
53
|
// Timeout: min 1s, max 1hr, default 30min
|
|
54
54
|
TIMEOUT_MS: safeParseInt(process.env.API_TIMEOUT_MS, 1800000, 1000, 3600000),
|
package/dist/config/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAE3E,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* YAML Configuration Loader
|
|
3
|
+
* Loads tools.yaml and generates MCP-compatible tool definitions
|
|
4
|
+
*/
|
|
5
|
+
import { z } from 'zod';
|
|
6
|
+
import type { YamlConfig, YamlToolConfig, YamlParameter, McpTool, LoadedTool } from './types.js';
|
|
7
|
+
/**
|
|
8
|
+
* Recursively convert YAML parameter to Zod schema
|
|
9
|
+
*/
|
|
10
|
+
declare function yamlParamToZod(param: YamlParameter): z.ZodTypeAny;
|
|
11
|
+
/**
|
|
12
|
+
* Convert YAML parameters to Zod object schema
|
|
13
|
+
*/
|
|
14
|
+
declare function yamlParamsToZodSchema(params: Record<string, YamlParameter>): z.ZodObject<Record<string, z.ZodTypeAny>>;
|
|
15
|
+
/**
|
|
16
|
+
* Load and parse tools.yaml
|
|
17
|
+
*/
|
|
18
|
+
export declare function loadYamlConfig(): YamlConfig;
|
|
19
|
+
/**
|
|
20
|
+
* Load all tools from YAML configuration
|
|
21
|
+
*/
|
|
22
|
+
export declare function loadToolsFromYaml(): LoadedTool[];
|
|
23
|
+
/**
|
|
24
|
+
* Get tool configuration by name
|
|
25
|
+
*/
|
|
26
|
+
export declare function getToolConfig(name: string): YamlToolConfig | undefined;
|
|
27
|
+
/**
|
|
28
|
+
* Get schema descriptions for a tool (for injecting into existing Zod schemas)
|
|
29
|
+
*/
|
|
30
|
+
export declare function getSchemaDescriptions(name: string): Record<string, string> | undefined;
|
|
31
|
+
/**
|
|
32
|
+
* Get Zod schema by reference name
|
|
33
|
+
*/
|
|
34
|
+
export declare function getZodSchemaByRef(ref: string): z.ZodTypeAny | undefined;
|
|
35
|
+
/**
|
|
36
|
+
* Generate complete MCP tools list with all schemas resolved
|
|
37
|
+
*/
|
|
38
|
+
export declare function generateMcpTools(): McpTool[];
|
|
39
|
+
export { yamlParamsToZodSchema, yamlParamToZod };
|
|
40
|
+
//# sourceMappingURL=loader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../src/config/loader.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,KAAK,EACV,UAAU,EACV,cAAc,EACd,aAAa,EAEb,OAAO,EACP,UAAU,EACX,MAAM,YAAY,CAAC;AA2DpB;;GAEG;AACH,iBAAS,cAAc,CAAC,KAAK,EAAE,aAAa,GAAG,CAAC,CAAC,UAAU,CAqE1D;AAED;;GAEG;AACH,iBAAS,qBAAqB,CAC5B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,GACpC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,CAU3C;AAyBD;;GAEG;AACH,wBAAgB,cAAc,IAAI,UAAU,CAI3C;AAwCD;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,UAAU,EAAE,CAYhD;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS,CAGtE;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAGtF;AAmBD;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,CAAC,CAAC,UAAU,GAAG,SAAS,CAEvE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,OAAO,EAAE,CA+B5C;AAMD,OAAO,EAAE,qBAAqB,EAAE,cAAc,EAAE,CAAC"}
|