research-powerpack-mcp 3.4.8 → 3.5.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/README.md +63 -674
- package/dist/clients/reddit.d.ts +1 -6
- package/dist/clients/reddit.d.ts.map +1 -1
- package/dist/clients/reddit.js +24 -60
- package/dist/clients/reddit.js.map +1 -1
- package/dist/clients/scraper.d.ts +1 -6
- package/dist/clients/scraper.d.ts.map +1 -1
- package/dist/clients/scraper.js +33 -71
- package/dist/clients/scraper.js.map +1 -1
- package/dist/clients/search.d.ts +2 -2
- package/dist/clients/search.d.ts.map +1 -1
- package/dist/clients/search.js +6 -11
- package/dist/clients/search.js.map +1 -1
- package/dist/config/env.d.ts +75 -0
- package/dist/config/env.d.ts.map +1 -0
- package/dist/config/env.js +87 -0
- package/dist/config/env.js.map +1 -0
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/index.js +1 -5
- package/dist/config/index.js.map +1 -1
- package/dist/config/loader.d.ts.map +1 -1
- package/dist/config/loader.js +1 -6
- package/dist/config/loader.js.map +1 -1
- package/dist/config/yaml/tools-enhanced.yaml +0 -0
- package/dist/index.js +85 -25
- package/dist/index.js.map +1 -1
- package/dist/schemas/web-search.js +1 -1
- package/dist/schemas/web-search.js.map +1 -1
- package/dist/services/file-attachment.d.ts.map +1 -1
- package/dist/services/file-attachment.js +22 -25
- package/dist/services/file-attachment.js.map +1 -1
- package/dist/services/llm-processor.js +0 -25
- package/dist/services/llm-processor.js.map +1 -1
- package/dist/tools/reddit.d.ts.map +1 -1
- package/dist/tools/reddit.js +77 -29
- package/dist/tools/reddit.js.map +1 -1
- package/dist/tools/registry.js +2 -2
- package/dist/tools/registry.js.map +1 -1
- package/dist/tools/research.d.ts +2 -6
- package/dist/tools/research.d.ts.map +1 -1
- package/dist/tools/research.js +64 -53
- package/dist/tools/research.js.map +1 -1
- package/dist/tools/scrape.d.ts +1 -5
- package/dist/tools/scrape.d.ts.map +1 -1
- package/dist/tools/scrape.js +108 -66
- package/dist/tools/scrape.js.map +1 -1
- package/dist/tools/search.d.ts +1 -5
- package/dist/tools/search.d.ts.map +1 -1
- package/dist/tools/search.js +26 -16
- package/dist/tools/search.js.map +1 -1
- package/dist/tools/utils.d.ts +20 -59
- package/dist/tools/utils.d.ts.map +1 -1
- package/dist/tools/utils.js +25 -61
- package/dist/tools/utils.js.map +1 -1
- package/dist/utils/logger.d.ts +36 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +40 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/response.d.ts +101 -0
- package/dist/utils/response.d.ts.map +1 -0
- package/dist/utils/response.js +183 -0
- package/dist/utils/response.js.map +1 -0
- package/dist/utils/url-aggregator.d.ts.map +1 -1
- package/dist/utils/url-aggregator.js +4 -6
- package/dist/utils/url-aggregator.js.map +1 -1
- package/package.json +8 -2
- package/dist/utils/concurrency.d.ts +0 -29
- package/dist/utils/concurrency.d.ts.map +0 -1
- package/dist/utils/concurrency.js +0 -73
- package/dist/utils/concurrency.js.map +0 -1
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Centralized Environment Variable Validation
|
|
3
|
+
* Uses Zod for type-safe parsing with helpful error messages
|
|
4
|
+
*/
|
|
5
|
+
import { z } from 'zod';
|
|
6
|
+
// ============================================================================
|
|
7
|
+
// Environment Schema
|
|
8
|
+
// ============================================================================
|
|
9
|
+
const envSchema = z.object({
|
|
10
|
+
// Scraper API (required for scrape_links)
|
|
11
|
+
SCRAPEDO_API_KEY: z.string().optional(),
|
|
12
|
+
// Search API (required for web_search and search_reddit)
|
|
13
|
+
SERPER_API_KEY: z.string().optional(),
|
|
14
|
+
// Reddit API (required for get_reddit_post)
|
|
15
|
+
REDDIT_CLIENT_ID: z.string().optional(),
|
|
16
|
+
REDDIT_CLIENT_SECRET: z.string().optional(),
|
|
17
|
+
// OpenRouter API (required for deep_research and LLM extraction)
|
|
18
|
+
OPENROUTER_API_KEY: z.string().optional(),
|
|
19
|
+
OPENROUTER_BASE_URL: z.string().url().optional().default('https://openrouter.ai/api/v1'),
|
|
20
|
+
// Research configuration
|
|
21
|
+
RESEARCH_MODEL: z.string().optional().default('x-ai/grok-4-fast'),
|
|
22
|
+
RESEARCH_FALLBACK_MODEL: z.string().optional().default('google/gemini-2.5-flash'),
|
|
23
|
+
DEFAULT_REASONING_EFFORT: z.enum(['low', 'medium', 'high']).optional().default('high'),
|
|
24
|
+
DEFAULT_MAX_URLS: z.coerce.number().min(10).max(200).optional().default(100),
|
|
25
|
+
API_TIMEOUT_MS: z.coerce.number().min(1000).max(3600000).optional().default(1800000),
|
|
26
|
+
// LLM extraction configuration
|
|
27
|
+
LLM_EXTRACTION_MODEL: z.string().optional().default('openai/gpt-oss-120b:nitro'),
|
|
28
|
+
LLM_ENABLE_REASONING: z.string().transform(v => v !== 'false').optional().default('true'),
|
|
29
|
+
});
|
|
30
|
+
// ============================================================================
|
|
31
|
+
// Parse and Validate Environment
|
|
32
|
+
// ============================================================================
|
|
33
|
+
let cachedEnv = null;
|
|
34
|
+
/**
|
|
35
|
+
* Parse and validate environment variables
|
|
36
|
+
* Returns cached result on subsequent calls
|
|
37
|
+
*/
|
|
38
|
+
export function getEnv() {
|
|
39
|
+
if (cachedEnv)
|
|
40
|
+
return cachedEnv;
|
|
41
|
+
try {
|
|
42
|
+
cachedEnv = envSchema.parse(process.env);
|
|
43
|
+
return cachedEnv;
|
|
44
|
+
}
|
|
45
|
+
catch (error) {
|
|
46
|
+
if (error instanceof z.ZodError) {
|
|
47
|
+
const issues = error.issues.map(i => ` - ${i.path.join('.')}: ${i.message}`).join('\n');
|
|
48
|
+
console.error(`[Config] Environment validation failed:\n${issues}`);
|
|
49
|
+
}
|
|
50
|
+
// Return defaults on error to avoid crashing
|
|
51
|
+
cachedEnv = envSchema.parse({});
|
|
52
|
+
return cachedEnv;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Clear cached environment (useful for testing)
|
|
57
|
+
*/
|
|
58
|
+
export function clearEnvCache() {
|
|
59
|
+
cachedEnv = null;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Get available capabilities based on configured API keys
|
|
63
|
+
*/
|
|
64
|
+
export function getCapabilitiesFromEnv() {
|
|
65
|
+
const env = getEnv();
|
|
66
|
+
return {
|
|
67
|
+
reddit: !!(env.REDDIT_CLIENT_ID && env.REDDIT_CLIENT_SECRET),
|
|
68
|
+
search: !!env.SERPER_API_KEY,
|
|
69
|
+
scraping: !!env.SCRAPEDO_API_KEY,
|
|
70
|
+
deepResearch: !!env.OPENROUTER_API_KEY,
|
|
71
|
+
llmExtraction: !!env.OPENROUTER_API_KEY,
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Get user-friendly message for missing capability
|
|
76
|
+
*/
|
|
77
|
+
export function getMissingCapabilityMessage(capability) {
|
|
78
|
+
const messages = {
|
|
79
|
+
reddit: '❌ **Reddit tools unavailable.** Set `REDDIT_CLIENT_ID` and `REDDIT_CLIENT_SECRET` to enable.\n\n👉 Create a Reddit app at: https://www.reddit.com/prefs/apps (select "script" type)',
|
|
80
|
+
search: '❌ **Search unavailable.** Set `SERPER_API_KEY` to enable web search and Reddit search.\n\n👉 Get your free API key at: https://serper.dev (2,500 free queries)',
|
|
81
|
+
scraping: '❌ **Web scraping unavailable.** Set `SCRAPEDO_API_KEY` to enable URL content extraction.\n\n👉 Sign up at: https://scrape.do (1,000 free credits)',
|
|
82
|
+
deepResearch: '❌ **Deep research unavailable.** Set `OPENROUTER_API_KEY` to enable AI-powered research.\n\n👉 Get your API key at: https://openrouter.ai/keys',
|
|
83
|
+
llmExtraction: '⚠️ **AI extraction disabled.** The `use_llm` and `what_to_extract` features require `OPENROUTER_API_KEY`.\n\nScraping will work but without intelligent content filtering.',
|
|
84
|
+
};
|
|
85
|
+
return messages[capability];
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=env.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"env.js","sourceRoot":"","sources":["../../src/config/env.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,+EAA+E;AAC/E,qBAAqB;AACrB,+EAA+E;AAE/E,MAAM,SAAS,GAAG,CAAC,CAAC,MAAM,CAAC;IACzB,0CAA0C;IAC1C,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAEvC,yDAAyD;IACzD,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAErC,4CAA4C;IAC5C,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACvC,oBAAoB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAE3C,iEAAiE;IACjE,kBAAkB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACzC,mBAAmB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,8BAA8B,CAAC;IAExF,yBAAyB;IACzB,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,kBAAkB,CAAC;IACjE,uBAAuB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,yBAAyB,CAAC;IACjF,wBAAwB,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC;IACtF,gBAAgB,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC;IAC5E,cAAc,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC;IAEpF,+BAA+B;IAC/B,oBAAoB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,2BAA2B,CAAC;IAChF,oBAAoB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC;CAC1F,CAAC,CAAC;AAIH,+EAA+E;AAC/E,iCAAiC;AACjC,+EAA+E;AAE/E,IAAI,SAAS,GAAqB,IAAI,CAAC;AAEvC;;;GAGG;AACH,MAAM,UAAU,MAAM;IACpB,IAAI,SAAS;QAAE,OAAO,SAAS,CAAC;IAEhC,IAAI,CAAC;QACH,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACzC,OAAO,SAAS,CAAC;IACnB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,CAAC,CAAC,QAAQ,EAAE,CAAC;YAChC,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACzF,OAAO,CAAC,KAAK,CAAC,4CAA4C,MAAM,EAAE,CAAC,CAAC;QACtE,CAAC;QACD,6CAA6C;QAC7C,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAChC,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa;IAC3B,SAAS,GAAG,IAAI,CAAC;AACnB,CAAC;AAcD;;GAEG;AACH,MAAM,UAAU,sBAAsB;IACpC,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC;IACrB,OAAO;QACL,MAAM,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,gBAAgB,IAAI,GAAG,CAAC,oBAAoB,CAAC;QAC5D,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,cAAc;QAC5B,QAAQ,EAAE,CAAC,CAAC,GAAG,CAAC,gBAAgB;QAChC,YAAY,EAAE,CAAC,CAAC,GAAG,CAAC,kBAAkB;QACtC,aAAa,EAAE,CAAC,CAAC,GAAG,CAAC,kBAAkB;KACxC,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,2BAA2B,CAAC,UAA8B;IACxE,MAAM,QAAQ,GAAuC;QACnD,MAAM,EAAE,qLAAqL;QAC7L,MAAM,EAAE,gKAAgK;QACxK,QAAQ,EAAE,mJAAmJ;QAC7J,YAAY,EAAE,gJAAgJ;QAC9J,aAAa,EAAE,4KAA4K;KAC5L,CAAC;IACF,OAAO,QAAQ,CAAC,UAAU,CAAC,CAAC;AAC9B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
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;
|
|
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
|
@@ -34,17 +34,13 @@ function safeParseInt(value, defaultVal, min, max) {
|
|
|
34
34
|
}
|
|
35
35
|
return parsed;
|
|
36
36
|
}
|
|
37
|
-
let cachedEnv = null;
|
|
38
37
|
export function parseEnv() {
|
|
39
|
-
|
|
40
|
-
return cachedEnv;
|
|
41
|
-
cachedEnv = {
|
|
38
|
+
return {
|
|
42
39
|
SCRAPER_API_KEY: process.env.SCRAPEDO_API_KEY || '',
|
|
43
40
|
SEARCH_API_KEY: process.env.SERPER_API_KEY || undefined,
|
|
44
41
|
REDDIT_CLIENT_ID: process.env.REDDIT_CLIENT_ID || undefined,
|
|
45
42
|
REDDIT_CLIENT_SECRET: process.env.REDDIT_CLIENT_SECRET || undefined,
|
|
46
43
|
};
|
|
47
|
-
return cachedEnv;
|
|
48
44
|
}
|
|
49
45
|
// ============================================================================
|
|
50
46
|
// Research API Configuration
|
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,iGAAiG;AAEjG,+EAA+E;AAC/E,8BAA8B;AAC9B,+EAA+E;AAE/E;;;;;;;GAOG;AACH,SAAS,YAAY,CACnB,KAAyB,EACzB,UAAkB,EAClB,GAAW,EACX,GAAW;IAEX,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAEnC,IAAI,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;QAClB,OAAO,CAAC,IAAI,CAAC,4BAA4B,KAAK,oBAAoB,UAAU,EAAE,CAAC,CAAC;QAChF,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,IAAI,MAAM,GAAG,GAAG,EAAE,CAAC;QACjB,OAAO,CAAC,IAAI,CAAC,kBAAkB,MAAM,kBAAkB,GAAG,iBAAiB,GAAG,EAAE,CAAC,CAAC;QAClF,OAAO,GAAG,CAAC;IACb,CAAC;IAED,IAAI,MAAM,GAAG,GAAG,EAAE,CAAC;QACjB,OAAO,CAAC,IAAI,CAAC,kBAAkB,MAAM,kBAAkB,GAAG,iBAAiB,GAAG,EAAE,CAAC,CAAC;QAClF,OAAO,GAAG,CAAC;IACb,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAaD,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +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;
|
|
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"}
|
package/dist/config/loader.js
CHANGED
|
@@ -11,8 +11,6 @@ import { zodToJsonSchema } from 'zod-to-json-schema';
|
|
|
11
11
|
// Get directory of this file for relative YAML path
|
|
12
12
|
const __filename = fileURLToPath(import.meta.url);
|
|
13
13
|
const __dirname = dirname(__filename);
|
|
14
|
-
// Cached YAML config - loaded once, reused for all subsequent calls
|
|
15
|
-
let cachedYamlConfig = null;
|
|
16
14
|
// ============================================================================
|
|
17
15
|
// YAML to Zod Schema Conversion
|
|
18
16
|
// ============================================================================
|
|
@@ -175,12 +173,9 @@ function zodToMcpInputSchema(schema) {
|
|
|
175
173
|
* Load and parse tools.yaml
|
|
176
174
|
*/
|
|
177
175
|
export function loadYamlConfig() {
|
|
178
|
-
if (cachedYamlConfig)
|
|
179
|
-
return cachedYamlConfig;
|
|
180
176
|
const yamlPath = join(__dirname, 'yaml', 'tools.yaml');
|
|
181
177
|
const yamlContent = readFileSync(yamlPath, 'utf8');
|
|
182
|
-
|
|
183
|
-
return cachedYamlConfig;
|
|
178
|
+
return parseYaml(yamlContent);
|
|
184
179
|
}
|
|
185
180
|
/**
|
|
186
181
|
* Convert a single YAML tool config to MCP Tool
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/config/loader.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,EAAE,KAAK,IAAI,SAAS,EAAE,MAAM,MAAM,CAAC;AAC1C,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAWrD,oDAAoD;AACpD,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AAEtC
|
|
1
|
+
{"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/config/loader.ts"],"names":[],"mappings":"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"}
|
|
File without changes
|
package/dist/index.js
CHANGED
|
@@ -61,70 +61,130 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
61
61
|
// Track shutdown state to prevent double shutdown
|
|
62
62
|
let isShuttingDown = false;
|
|
63
63
|
/**
|
|
64
|
-
*
|
|
65
|
-
*
|
|
64
|
+
* Safe stderr write that never throws. When stderr (FD 2) is a dead unix
|
|
65
|
+
* domain socket, console.error() throws an uncaught exception (EPIPE /
|
|
66
|
+
* ERR_STREAM_DESTROYED / write-after-end). This helper swallows those errors
|
|
67
|
+
* so that shutdown code paths never enter an infinite exception loop.
|
|
68
|
+
*/
|
|
69
|
+
function safeStderrWrite(msg) {
|
|
70
|
+
try {
|
|
71
|
+
process.stderr.write(msg + '\n');
|
|
72
|
+
}
|
|
73
|
+
catch {
|
|
74
|
+
// stderr is dead — silently discard. Nothing we can do.
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Graceful shutdown handler - closes server and exits.
|
|
79
|
+
*
|
|
80
|
+
* IMPORTANT: This function guarantees process.exit() is always reached by:
|
|
81
|
+
* 1. Using safeStderrWrite instead of console.error (prevents throw on dead FD)
|
|
82
|
+
* 2. Setting a hard 2-second deadline via setTimeout + process.exit()
|
|
83
|
+
* 3. Calling process.exit() synchronously on re-entrant calls instead of
|
|
84
|
+
* silently returning (prevents the "isShuttingDown guard eats the exit" bug)
|
|
66
85
|
*/
|
|
67
86
|
async function gracefulShutdown(exitCode) {
|
|
68
|
-
if (isShuttingDown)
|
|
69
|
-
|
|
87
|
+
if (isShuttingDown) {
|
|
88
|
+
// Already shutting down — force-exit immediately instead of returning.
|
|
89
|
+
// Returning here was the original bug: the first call could be stuck in
|
|
90
|
+
// await server.close(), and all subsequent calls would return without
|
|
91
|
+
// ever reaching process.exit().
|
|
92
|
+
process.exit(exitCode);
|
|
93
|
+
return; // unreachable, but satisfies TypeScript
|
|
94
|
+
}
|
|
70
95
|
isShuttingDown = true;
|
|
96
|
+
// Hard deadline: if server.close() hangs or anything else goes wrong,
|
|
97
|
+
// force-exit after 2 seconds. unref() so this timer doesn't keep the
|
|
98
|
+
// event loop alive on its own.
|
|
99
|
+
const forceExitTimer = setTimeout(() => {
|
|
100
|
+
process.exit(exitCode);
|
|
101
|
+
}, 2000);
|
|
102
|
+
forceExitTimer.unref();
|
|
71
103
|
try {
|
|
72
104
|
await server.close();
|
|
73
|
-
|
|
105
|
+
safeStderrWrite(`[MCP Server] Server closed at ${new Date().toISOString()}`);
|
|
74
106
|
}
|
|
75
|
-
catch
|
|
76
|
-
|
|
107
|
+
catch {
|
|
108
|
+
safeStderrWrite('[MCP Server] Error closing server during shutdown');
|
|
77
109
|
}
|
|
78
110
|
finally {
|
|
79
111
|
process.exit(exitCode);
|
|
80
112
|
}
|
|
81
113
|
}
|
|
82
114
|
// Handle uncaught exceptions - MUST EXIT per Node.js docs
|
|
83
|
-
// The VM is in an unstable state after uncaught exception
|
|
115
|
+
// The VM is in an unstable state after uncaught exception.
|
|
116
|
+
//
|
|
117
|
+
// CRITICAL: This handler must NEVER call console.error() because stderr may
|
|
118
|
+
// be a dead unix socket. Writing to a dead socket throws a NEW uncaught
|
|
119
|
+
// exception, creating an infinite loop that consumes 60%+ CPU forever.
|
|
120
|
+
// Instead, we use safeStderrWrite and call process.exit() synchronously.
|
|
84
121
|
process.on('uncaughtException', (error) => {
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
122
|
+
safeStderrWrite(`[MCP Server] FATAL uncaughtException: ${error.message}`);
|
|
123
|
+
// Exit synchronously — do NOT go through async gracefulShutdown.
|
|
124
|
+
// Node.js docs: "The correct use of 'uncaughtException' is to perform
|
|
125
|
+
// synchronous cleanup of allocated resources... It is not safe to resume
|
|
126
|
+
// normal operation after 'uncaughtException'."
|
|
127
|
+
process.exit(1);
|
|
89
128
|
});
|
|
90
129
|
// Handle unhandled promise rejections - MUST EXIT (Node v15+ behavior)
|
|
91
130
|
// Suppressing this risks memory leaks and corrupted state
|
|
92
131
|
process.on('unhandledRejection', (reason) => {
|
|
93
|
-
const
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
gracefulShutdown(1);
|
|
132
|
+
const msg = reason instanceof Error ? reason.message : String(reason);
|
|
133
|
+
safeStderrWrite(`[MCP Server] FATAL unhandledRejection: ${msg}`);
|
|
134
|
+
// Exit synchronously — same rationale as uncaughtException above.
|
|
135
|
+
process.exit(1);
|
|
98
136
|
});
|
|
99
137
|
// Handle SIGTERM gracefully (Docker/Kubernetes stop signal)
|
|
100
138
|
process.on('SIGTERM', () => {
|
|
101
|
-
|
|
139
|
+
safeStderrWrite(`[MCP Server] Received SIGTERM, shutting down`);
|
|
102
140
|
gracefulShutdown(0);
|
|
103
141
|
});
|
|
104
142
|
// Handle SIGINT gracefully (Ctrl+C) - use once() to prevent double-fire
|
|
105
143
|
process.once('SIGINT', () => {
|
|
106
|
-
|
|
144
|
+
safeStderrWrite(`[MCP Server] Received SIGINT, shutting down`);
|
|
107
145
|
gracefulShutdown(0);
|
|
108
146
|
});
|
|
109
147
|
// ============================================================================
|
|
110
148
|
// Stdin disconnect detection
|
|
149
|
+
//
|
|
111
150
|
// The MCP SDK's StdioServerTransport does NOT listen for stdin 'close'/'end'.
|
|
112
151
|
// When the parent process disconnects (closes the pipe), stdin emits these
|
|
113
|
-
// events but nobody handles them — Node.js keeps polling the dead fd
|
|
114
|
-
//
|
|
152
|
+
// events but nobody handles them — Node.js keeps polling the dead fd.
|
|
153
|
+
//
|
|
154
|
+
// HOWEVER: When FD 0 is a unix domain socket (as when spawned via `npx`),
|
|
155
|
+
// 'close'/'end' events may NOT fire reliably on macOS. To handle this case,
|
|
156
|
+
// we also poll stdin every 5 seconds using a read() probe. If the read
|
|
157
|
+
// returns null AND stdin has ended, we trigger shutdown.
|
|
115
158
|
// ============================================================================
|
|
116
159
|
process.stdin.on('close', () => {
|
|
117
|
-
|
|
160
|
+
safeStderrWrite(`[MCP Server] stdin closed (parent disconnected), shutting down`);
|
|
118
161
|
gracefulShutdown(0);
|
|
119
162
|
});
|
|
120
163
|
process.stdin.on('end', () => {
|
|
121
|
-
|
|
164
|
+
safeStderrWrite(`[MCP Server] stdin ended (parent disconnected), shutting down`);
|
|
165
|
+
gracefulShutdown(0);
|
|
166
|
+
});
|
|
167
|
+
// Periodic stdin liveness check for unix domain sockets where 'close'/'end'
|
|
168
|
+
// don't fire. If stdin becomes unreadable, the parent is gone.
|
|
169
|
+
const stdinWatchdog = setInterval(() => {
|
|
170
|
+
// readableEnded is true once the 'end' event has been emitted.
|
|
171
|
+
// destroyed is true if the stream has been explicitly destroyed.
|
|
172
|
+
if (process.stdin.readableEnded || process.stdin.destroyed) {
|
|
173
|
+
safeStderrWrite(`[MCP Server] stdin watchdog: stream ended/destroyed, shutting down`);
|
|
174
|
+
gracefulShutdown(0);
|
|
175
|
+
}
|
|
176
|
+
}, 5000);
|
|
177
|
+
stdinWatchdog.unref(); // Don't let this timer keep the process alive
|
|
178
|
+
// Also handle stderr errors — prevents throws from propagating into
|
|
179
|
+
// uncaughtException when stderr is dead
|
|
180
|
+
process.stderr.on('error', () => {
|
|
181
|
+
// stderr is dead. Trigger shutdown without trying to log.
|
|
122
182
|
gracefulShutdown(0);
|
|
123
183
|
});
|
|
124
|
-
//
|
|
184
|
+
// Handle stdout errors (broken pipe when parent is gone)
|
|
125
185
|
process.stdout.on('error', (err) => {
|
|
126
186
|
if (err.code === 'EPIPE' || err.code === 'ERR_STREAM_DESTROYED') {
|
|
127
|
-
|
|
187
|
+
safeStderrWrite(`[MCP Server] stdout broken pipe, shutting down`);
|
|
128
188
|
gracefulShutdown(0);
|
|
129
189
|
}
|
|
130
190
|
});
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;;GAGG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,QAAQ,EAAE,MAAM,oCAAoC,CAAC;AAE7G,OAAO,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AACvE,OAAO,EAAE,aAAa,EAAE,6BAA6B,EAAE,MAAM,mBAAmB,CAAC;AACjF,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAE5D,+EAA+E;AAC/E,mEAAmE;AACnE,+EAA+E;AAE/E,MAAM,YAAY,GAAG,eAAe,EAAE,CAAC;AACvC,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,aAAa,EAAE,GAAG,mBAAmB,EAAE,CAAC;AAEjF,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;IAC5B,OAAO,CAAC,KAAK,CAAC,oBAAoB,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC/D,CAAC;AACD,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;IAC7B,OAAO,CAAC,KAAK,CAAC,oCAAoC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAChF,CAAC;AACD,IAAI,YAAY,CAAC,QAAQ,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,CAAC;IACzD,OAAO,CAAC,KAAK,CAAC,sFAAsF,CAAC,CAAC;AACxG,CAAC;AAED,+EAA+E;AAC/E,eAAe;AACf,+EAA+E;AAE/E,MAAM,MAAM,GAAG,IAAI,MAAM,CACvB,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,EAC9C,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,CAChC,CAAC;AAEF,MAAM,CAAC,iBAAiB,CAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AAEjF;;;GAGG;AACH,MAAM,CAAC,iBAAiB,CAAC,qBAAqB,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;IAChE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IAEjD,IAAI,CAAC;QACH,4DAA4D;QAC5D,OAAO,MAAM,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC;IACrD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,kDAAkD;QAClD,IAAI,KAAK,YAAY,QAAQ,EAAE,CAAC;YAC9B,MAAM,KAAK,CAAC;QACd,CAAC;QAED,0CAA0C;QAC1C,MAAM,eAAe,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;QAC7C,OAAO,CAAC,KAAK,CAAC,sBAAsB,IAAI,UAAU,EAAE;YAClD,IAAI,EAAE,eAAe,CAAC,IAAI;YAC1B,OAAO,EAAE,eAAe,CAAC,OAAO;YAChC,SAAS,EAAE,eAAe,CAAC,SAAS;SACrC,CAAC,CAAC;QACH,OAAO,6BAA6B,CAAC,eAAe,CAAC,CAAC;IACxD,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,+EAA+E;AAC/E,+EAA+E;AAC/E,qFAAqF;AACrF,+EAA+E;AAE/E,kDAAkD;AAClD,IAAI,cAAc,GAAG,KAAK,CAAC;AAE3B
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,7 +11,7 @@ const keywordsSchema = z
|
|
|
11
11
|
required_error: 'web_search: Keywords array is required',
|
|
12
12
|
invalid_type_error: 'web_search: Keywords must be an array'
|
|
13
13
|
})
|
|
14
|
-
.min(3, { message: 'web_search: MINIMUM 3 keywords required. Add more diverse keywords covering different perspectives.' })
|
|
14
|
+
.min(3, { message: 'web_search: MINIMUM 3 keywords required. You provided {#}. Add {#} more diverse keywords covering different perspectives.' })
|
|
15
15
|
.max(100, { message: 'web_search: Maximum 100 keywords allowed per request' })
|
|
16
16
|
.describe('Array of search keywords (MINIMUM 3, RECOMMENDED 5-7, MAX 100). Each keyword runs as a separate Google search in parallel. Use diverse keywords covering different angles for comprehensive results.');
|
|
17
17
|
const webSearchParamsShape = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"web-search.js","sourceRoot":"","sources":["../../src/schemas/web-search.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,iCAAiC;AACjC,MAAM,aAAa,GAAG,CAAC;KACpB,MAAM,CAAC,EAAE,cAAc,EAAE,iCAAiC,EAAE,CAAC;KAC7D,GAAG,CAAC,CAAC,EAAE,EAAE,OAAO,EAAE,qCAAqC,EAAE,CAAC;KAC1D,GAAG,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,mDAAmD,EAAE,CAAC;KAC1E,MAAM,CACL,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EACxB,EAAE,OAAO,EAAE,+CAA+C,EAAE,CAC7D,CAAC;AAEJ,mCAAmC;AACnC,MAAM,cAAc,GAAG,CAAC;KACrB,KAAK,CAAC,aAAa,EAAE;IACpB,cAAc,EAAE,wCAAwC;IACxD,kBAAkB,EAAE,uCAAuC;CAC5D,CAAC;KACD,GAAG,CAAC,CAAC,EAAE,EAAE,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"web-search.js","sourceRoot":"","sources":["../../src/schemas/web-search.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,iCAAiC;AACjC,MAAM,aAAa,GAAG,CAAC;KACpB,MAAM,CAAC,EAAE,cAAc,EAAE,iCAAiC,EAAE,CAAC;KAC7D,GAAG,CAAC,CAAC,EAAE,EAAE,OAAO,EAAE,qCAAqC,EAAE,CAAC;KAC1D,GAAG,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,mDAAmD,EAAE,CAAC;KAC1E,MAAM,CACL,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EACxB,EAAE,OAAO,EAAE,+CAA+C,EAAE,CAC7D,CAAC;AAEJ,mCAAmC;AACnC,MAAM,cAAc,GAAG,CAAC;KACrB,KAAK,CAAC,aAAa,EAAE;IACpB,cAAc,EAAE,wCAAwC;IACxD,kBAAkB,EAAE,uCAAuC;CAC5D,CAAC;KACD,GAAG,CAAC,CAAC,EAAE,EAAE,OAAO,EAAE,2HAA2H,EAAE,CAAC;KAChJ,GAAG,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,sDAAsD,EAAE,CAAC;KAC7E,QAAQ,CAAC,sMAAsM,CAAC,CAAC;AAEpN,MAAM,oBAAoB,GAAG;IAC3B,QAAQ,EAAE,cAAc;CACzB,CAAC;AAEF,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-attachment.d.ts","sourceRoot":"","sources":["../../src/services/file-attachment.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH,UAAU,cAAc;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAClC;AASD,qBAAa,qBAAqB;IAChC;;OAEG;IACG,iBAAiB,CAAC,WAAW,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"file-attachment.d.ts","sourceRoot":"","sources":["../../src/services/file-attachment.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH,UAAU,cAAc;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAClC;AASD,qBAAa,qBAAqB;IAChC;;OAEG;IACG,iBAAiB,CAAC,WAAW,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IAqBvE;;OAEG;YACW,gBAAgB;IAoE9B;;OAEG;IACH,OAAO,CAAC,eAAe;IAiCvB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAoEzB,OAAO,CAAC,cAAc;CAcvB"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* File attachment service for reading and formatting file contents
|
|
3
3
|
*/
|
|
4
|
-
import {
|
|
4
|
+
import { existsSync } from 'node:fs';
|
|
5
|
+
import { readFile } from 'node:fs/promises';
|
|
5
6
|
import { extname } from 'node:path';
|
|
6
|
-
import { pMap } from '../utils/concurrency.js';
|
|
7
7
|
export class FileAttachmentService {
|
|
8
8
|
/**
|
|
9
9
|
* Format multiple file attachments into a markdown section
|
|
@@ -12,15 +12,15 @@ export class FileAttachmentService {
|
|
|
12
12
|
if (!attachments || attachments.length === 0) {
|
|
13
13
|
return '';
|
|
14
14
|
}
|
|
15
|
-
const results = await
|
|
15
|
+
const results = await Promise.all(attachments.map((attachment) => this.formatSingleFile(attachment)));
|
|
16
16
|
// Build the attachments section
|
|
17
|
-
|
|
18
|
-
|
|
17
|
+
let output = '\n\n---\n\n# 📎 ATTACHED FILES\n\n';
|
|
18
|
+
output += `*${results.length} file${results.length > 1 ? 's' : ''} attached for context*\n\n`;
|
|
19
19
|
for (const result of results) {
|
|
20
|
-
|
|
21
|
-
|
|
20
|
+
output += result.content;
|
|
21
|
+
output += '\n\n';
|
|
22
22
|
}
|
|
23
|
-
return
|
|
23
|
+
return output;
|
|
24
24
|
}
|
|
25
25
|
/**
|
|
26
26
|
* Format a single file attachment
|
|
@@ -28,10 +28,7 @@ export class FileAttachmentService {
|
|
|
28
28
|
async formatSingleFile(attachment) {
|
|
29
29
|
const { path, start_line, end_line, description } = attachment;
|
|
30
30
|
// Check if file exists
|
|
31
|
-
|
|
32
|
-
await access(path);
|
|
33
|
-
}
|
|
34
|
-
catch {
|
|
31
|
+
if (!existsSync(path)) {
|
|
35
32
|
return {
|
|
36
33
|
success: false,
|
|
37
34
|
path,
|
|
@@ -90,33 +87,33 @@ export class FileAttachmentService {
|
|
|
90
87
|
* Format code block with line numbers and smart truncation
|
|
91
88
|
*/
|
|
92
89
|
formatCodeBlock(lines, language, startIdx) {
|
|
93
|
-
|
|
90
|
+
let output = `\`\`\`${language.toLowerCase()}\n`;
|
|
94
91
|
// Smart truncation for very large files (keep first 500 lines + last 100 lines)
|
|
95
92
|
if (lines.length > 600) {
|
|
96
93
|
// First 500 lines
|
|
97
94
|
const firstLines = lines.slice(0, 500);
|
|
98
|
-
|
|
95
|
+
firstLines.forEach((line, idx) => {
|
|
99
96
|
const lineNumber = startIdx + idx + 1;
|
|
100
|
-
|
|
101
|
-
}
|
|
97
|
+
output += `${lineNumber.toString().padStart(4, ' ')}: ${line}\n`;
|
|
98
|
+
});
|
|
102
99
|
// Truncation marker
|
|
103
|
-
|
|
100
|
+
output += `\n... [${lines.length - 600} lines truncated for brevity] ...\n\n`;
|
|
104
101
|
// Last 100 lines
|
|
105
102
|
const lastLines = lines.slice(-100);
|
|
106
|
-
|
|
103
|
+
lastLines.forEach((line, idx) => {
|
|
107
104
|
const lineNumber = startIdx + lines.length - 100 + idx + 1;
|
|
108
|
-
|
|
109
|
-
}
|
|
105
|
+
output += `${lineNumber.toString().padStart(4, ' ')}: ${line}\n`;
|
|
106
|
+
});
|
|
110
107
|
}
|
|
111
108
|
else {
|
|
112
109
|
// Show all lines with numbers
|
|
113
|
-
|
|
110
|
+
lines.forEach((line, idx) => {
|
|
114
111
|
const lineNumber = startIdx + idx + 1;
|
|
115
|
-
|
|
116
|
-
}
|
|
112
|
+
output += `${lineNumber.toString().padStart(4, ' ')}: ${line}\n`;
|
|
113
|
+
});
|
|
117
114
|
}
|
|
118
|
-
|
|
119
|
-
return
|
|
115
|
+
output += '```';
|
|
116
|
+
return output;
|
|
120
117
|
}
|
|
121
118
|
/**
|
|
122
119
|
* Validate line range and return corrected values
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-attachment.js","sourceRoot":"","sources":["../../src/services/file-attachment.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"file-attachment.js","sourceRoot":"","sources":["../../src/services/file-attachment.ts"],"names":[],"mappings":"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"}
|
|
@@ -176,29 +176,4 @@ export async function processContentWithLLM(content, config, processor) {
|
|
|
176
176
|
},
|
|
177
177
|
};
|
|
178
178
|
}
|
|
179
|
-
/**
|
|
180
|
-
* Process multiple contents with LLM in parallel with rate limiting
|
|
181
|
-
* NEVER throws - always returns results array
|
|
182
|
-
*/
|
|
183
|
-
// @internal - Currently unused but kept for future batch LLM processing
|
|
184
|
-
async function processMultipleWithLLM(contents, config, processor, concurrency = 3) {
|
|
185
|
-
if (!config.use_llm || !processor || contents.length === 0) {
|
|
186
|
-
return contents.map(c => ({ content: c.content, processed: false, url: c.url }));
|
|
187
|
-
}
|
|
188
|
-
const results = [];
|
|
189
|
-
// Process in batches to avoid overwhelming the API
|
|
190
|
-
for (let i = 0; i < contents.length; i += concurrency) {
|
|
191
|
-
const batch = contents.slice(i, i + concurrency);
|
|
192
|
-
const batchResults = await Promise.all(batch.map(async ({ content, url }) => {
|
|
193
|
-
const result = await processContentWithLLM(content, config, processor);
|
|
194
|
-
return { ...result, url };
|
|
195
|
-
}));
|
|
196
|
-
results.push(...batchResults);
|
|
197
|
-
// Small delay between batches if more batches to process
|
|
198
|
-
if (i + concurrency < contents.length) {
|
|
199
|
-
await sleep(500);
|
|
200
|
-
}
|
|
201
|
-
}
|
|
202
|
-
return results;
|
|
203
|
-
}
|
|
204
179
|
//# sourceMappingURL=llm-processor.js.map
|