mcp-perplexity-pro 1.1.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.
Files changed (96) hide show
  1. package/README.md +638 -0
  2. package/bin/mcp-perplexity-pro +8 -0
  3. package/bin/mcp-perplexity-pro-stdio +9 -0
  4. package/dist/claude-code-bridge.d.ts +3 -0
  5. package/dist/claude-code-bridge.d.ts.map +1 -0
  6. package/dist/claude-code-bridge.js +111 -0
  7. package/dist/claude-code-bridge.js.map +1 -0
  8. package/dist/http-index.d.ts +3 -0
  9. package/dist/http-index.d.ts.map +1 -0
  10. package/dist/http-index.js +38 -0
  11. package/dist/http-index.js.map +1 -0
  12. package/dist/http-server.d.ts +33 -0
  13. package/dist/http-server.d.ts.map +1 -0
  14. package/dist/http-server.js +362 -0
  15. package/dist/http-server.js.map +1 -0
  16. package/dist/http-streaming-server.d.ts +4 -0
  17. package/dist/http-streaming-server.d.ts.map +1 -0
  18. package/dist/http-streaming-server.js +514 -0
  19. package/dist/http-streaming-server.js.map +1 -0
  20. package/dist/index.d.ts +3 -0
  21. package/dist/index.d.ts.map +1 -0
  22. package/dist/index.js +43 -0
  23. package/dist/index.js.map +1 -0
  24. package/dist/launcher.d.ts +3 -0
  25. package/dist/launcher.d.ts.map +1 -0
  26. package/dist/launcher.js +209 -0
  27. package/dist/launcher.js.map +1 -0
  28. package/dist/mcp-server.d.ts +5 -0
  29. package/dist/mcp-server.d.ts.map +1 -0
  30. package/dist/mcp-server.js +329 -0
  31. package/dist/mcp-server.js.map +1 -0
  32. package/dist/models.d.ts +45 -0
  33. package/dist/models.d.ts.map +1 -0
  34. package/dist/models.js +284 -0
  35. package/dist/models.js.map +1 -0
  36. package/dist/perplexity-api.d.ts +59 -0
  37. package/dist/perplexity-api.d.ts.map +1 -0
  38. package/dist/perplexity-api.js +455 -0
  39. package/dist/perplexity-api.js.map +1 -0
  40. package/dist/port-utils.d.ts +31 -0
  41. package/dist/port-utils.d.ts.map +1 -0
  42. package/dist/port-utils.js +114 -0
  43. package/dist/port-utils.js.map +1 -0
  44. package/dist/project-manager.d.ts +91 -0
  45. package/dist/project-manager.d.ts.map +1 -0
  46. package/dist/project-manager.js +422 -0
  47. package/dist/project-manager.js.map +1 -0
  48. package/dist/simple-streaming.d.ts +26 -0
  49. package/dist/simple-streaming.d.ts.map +1 -0
  50. package/dist/simple-streaming.js +75 -0
  51. package/dist/simple-streaming.js.map +1 -0
  52. package/dist/sse-index.d.ts +3 -0
  53. package/dist/sse-index.d.ts.map +1 -0
  54. package/dist/sse-index.js +38 -0
  55. package/dist/sse-index.js.map +1 -0
  56. package/dist/sse-server.d.ts +4 -0
  57. package/dist/sse-server.d.ts.map +1 -0
  58. package/dist/sse-server.js +208 -0
  59. package/dist/sse-server.js.map +1 -0
  60. package/dist/stdio-bridge.d.ts +21 -0
  61. package/dist/stdio-bridge.d.ts.map +1 -0
  62. package/dist/stdio-bridge.js +157 -0
  63. package/dist/stdio-bridge.js.map +1 -0
  64. package/dist/stdio-server.d.ts +7 -0
  65. package/dist/stdio-server.d.ts.map +1 -0
  66. package/dist/stdio-server.js +396 -0
  67. package/dist/stdio-server.js.map +1 -0
  68. package/dist/storage.d.ts +65 -0
  69. package/dist/storage.d.ts.map +1 -0
  70. package/dist/storage.js +328 -0
  71. package/dist/storage.js.map +1 -0
  72. package/dist/streaming-wrapper.d.ts +63 -0
  73. package/dist/streaming-wrapper.d.ts.map +1 -0
  74. package/dist/streaming-wrapper.js +452 -0
  75. package/dist/streaming-wrapper.js.map +1 -0
  76. package/dist/tools/async.d.ts +28 -0
  77. package/dist/tools/async.d.ts.map +1 -0
  78. package/dist/tools/async.js +167 -0
  79. package/dist/tools/async.js.map +1 -0
  80. package/dist/tools/chat.d.ts +29 -0
  81. package/dist/tools/chat.d.ts.map +1 -0
  82. package/dist/tools/chat.js +233 -0
  83. package/dist/tools/chat.js.map +1 -0
  84. package/dist/tools/projects.d.ts +19 -0
  85. package/dist/tools/projects.d.ts.map +1 -0
  86. package/dist/tools/projects.js +219 -0
  87. package/dist/tools/projects.js.map +1 -0
  88. package/dist/tools/query.d.ts +13 -0
  89. package/dist/tools/query.d.ts.map +1 -0
  90. package/dist/tools/query.js +178 -0
  91. package/dist/tools/query.js.map +1 -0
  92. package/dist/types.d.ts +330 -0
  93. package/dist/types.d.ts.map +1 -0
  94. package/dist/types.js +90 -0
  95. package/dist/types.js.map +1 -0
  96. package/package.json +89 -0
package/dist/models.js ADDED
@@ -0,0 +1,284 @@
1
+ // Comprehensive model registry with capabilities and use cases
2
+ export const MODEL_REGISTRY = {
3
+ sonar: {
4
+ type: 'search',
5
+ speed: 'fast',
6
+ cost: 'low',
7
+ bestFor: [
8
+ 'quick facts',
9
+ 'simple queries',
10
+ 'basic summaries',
11
+ 'current events',
12
+ 'straightforward questions',
13
+ ],
14
+ description: 'Lightweight, cost-effective search model with grounding. Best for quick factual queries and simple information retrieval.',
15
+ capabilities: {
16
+ search: true,
17
+ reasoning: false,
18
+ realTime: true,
19
+ research: false,
20
+ },
21
+ },
22
+ 'sonar-pro': {
23
+ type: 'search',
24
+ speed: 'medium',
25
+ cost: 'medium',
26
+ bestFor: [
27
+ 'complex queries',
28
+ 'follow-up questions',
29
+ 'detailed summaries',
30
+ 'product comparisons',
31
+ 'multi-part questions',
32
+ ],
33
+ description: 'Advanced search offering with grounding, supporting complex queries and follow-ups. Ideal for detailed information synthesis.',
34
+ capabilities: {
35
+ search: true,
36
+ reasoning: false,
37
+ realTime: true,
38
+ research: false,
39
+ },
40
+ },
41
+ 'sonar-reasoning': {
42
+ type: 'reasoning',
43
+ speed: 'fast',
44
+ cost: 'medium',
45
+ bestFor: [
46
+ 'problem-solving',
47
+ 'analysis',
48
+ 'step-by-step thinking',
49
+ 'logical deduction',
50
+ 'quick reasoning tasks',
51
+ ],
52
+ description: 'Fast, real-time reasoning model designed for problem-solving with search capabilities. Excellent for analytical tasks.',
53
+ capabilities: {
54
+ search: true,
55
+ reasoning: true,
56
+ realTime: true,
57
+ research: false,
58
+ },
59
+ },
60
+ 'sonar-reasoning-pro': {
61
+ type: 'reasoning',
62
+ speed: 'medium',
63
+ cost: 'high',
64
+ bestFor: [
65
+ 'complex analysis',
66
+ 'detailed reasoning',
67
+ 'multi-step problems',
68
+ 'chain of thought',
69
+ 'informed recommendations',
70
+ ],
71
+ description: 'Precise reasoning offering powered by DeepSeek-R1 with Chain of Thought (CoT). Best for complex analytical tasks requiring detailed thinking.',
72
+ capabilities: {
73
+ search: true,
74
+ reasoning: true,
75
+ realTime: true,
76
+ research: false,
77
+ },
78
+ },
79
+ 'sonar-deep-research': {
80
+ type: 'research',
81
+ speed: 'slow',
82
+ cost: 'high',
83
+ bestFor: [
84
+ 'comprehensive reports',
85
+ 'exhaustive research',
86
+ 'literature reviews',
87
+ 'market analysis',
88
+ 'in-depth investigations',
89
+ ],
90
+ description: 'Expert-level research model conducting exhaustive searches and generating comprehensive reports. Ideal for thorough research projects.',
91
+ capabilities: {
92
+ search: true,
93
+ reasoning: true,
94
+ realTime: false,
95
+ research: true,
96
+ },
97
+ },
98
+ };
99
+ /**
100
+ * Intelligent model selection based on query characteristics
101
+ * Analyzes the query content and selects the most appropriate model
102
+ */
103
+ export function selectOptimalModel(query, explicitModel, defaultModel = 'sonar-reasoning-pro') {
104
+ // If user explicitly specified a model, use it
105
+ if (explicitModel && isValidModel(explicitModel)) {
106
+ return explicitModel;
107
+ }
108
+ // Analyze query characteristics
109
+ const queryLower = query.toLowerCase();
110
+ const words = queryLower.split(/\s+/);
111
+ // Deep research indicators - high priority
112
+ const researchKeywords = [
113
+ 'comprehensive',
114
+ 'exhaustive',
115
+ 'detailed report',
116
+ 'research',
117
+ 'analyze all',
118
+ 'investigate',
119
+ 'literature review',
120
+ 'market analysis',
121
+ 'in-depth',
122
+ 'thorough',
123
+ 'complete analysis',
124
+ ];
125
+ if (researchKeywords.some(keyword => queryLower.includes(keyword))) {
126
+ return 'sonar-deep-research';
127
+ }
128
+ // Complex reasoning indicators
129
+ const complexReasoningKeywords = [
130
+ 'step by step',
131
+ 'step-by-step',
132
+ 'analyze',
133
+ 'explain how',
134
+ 'reasoning',
135
+ 'solve',
136
+ 'complex',
137
+ 'chain of thought',
138
+ 'think through',
139
+ 'break down',
140
+ 'detailed explanation',
141
+ ];
142
+ if (complexReasoningKeywords.some(keyword => queryLower.includes(keyword))) {
143
+ return 'sonar-reasoning-pro';
144
+ }
145
+ // Quick reasoning needs
146
+ const quickReasoningKeywords = [
147
+ 'why',
148
+ 'how does',
149
+ 'explain',
150
+ 'compare',
151
+ 'analyze briefly',
152
+ 'quick analysis',
153
+ 'understand',
154
+ 'logic',
155
+ ];
156
+ if (quickReasoningKeywords.some(keyword => queryLower.includes(keyword))) {
157
+ return 'sonar-reasoning';
158
+ }
159
+ // Enhanced search needs
160
+ const enhancedSearchKeywords = [
161
+ 'detailed',
162
+ 'multiple',
163
+ 'various',
164
+ 'follow up',
165
+ 'follow-up',
166
+ 'comparison',
167
+ 'pros and cons',
168
+ 'alternatives',
169
+ 'options',
170
+ ];
171
+ if (enhancedSearchKeywords.some(keyword => queryLower.includes(keyword))) {
172
+ return 'sonar-pro';
173
+ }
174
+ // Simple factual queries
175
+ const simpleQueryIndicators = [
176
+ 'what is',
177
+ 'when',
178
+ 'where',
179
+ 'who',
180
+ 'simple',
181
+ 'quick',
182
+ 'brief',
183
+ 'fact',
184
+ 'date',
185
+ 'price',
186
+ 'cost',
187
+ ];
188
+ if (simpleQueryIndicators.some(indicator => queryLower.includes(indicator)) ||
189
+ words.length <= 5) {
190
+ return 'sonar';
191
+ }
192
+ // Default to balanced model for general queries
193
+ return defaultModel;
194
+ }
195
+ /**
196
+ * Validates if a model name is supported
197
+ */
198
+ export function isValidModel(model) {
199
+ return Object.keys(MODEL_REGISTRY).includes(model);
200
+ }
201
+ /**
202
+ * Gets model information by name
203
+ */
204
+ export function getModelInfo(model) {
205
+ return MODEL_REGISTRY[model];
206
+ }
207
+ /**
208
+ * Gets model capabilities in boolean format for compatibility
209
+ */
210
+ export function getModelCapabilities(model) {
211
+ if (!isValidModel(model)) {
212
+ return undefined;
213
+ }
214
+ const info = MODEL_REGISTRY[model];
215
+ return info.capabilities;
216
+ }
217
+ /**
218
+ * Suggests a fallback model based on the original model and context
219
+ */
220
+ export function suggestFallbackModel(originalModel, errorType) {
221
+ const modelInfo = MODEL_REGISTRY[originalModel];
222
+ // If rate limited, suggest a faster/cheaper alternative
223
+ if (errorType === 'rate_limit') {
224
+ switch (originalModel) {
225
+ case 'sonar-deep-research':
226
+ return 'sonar-reasoning-pro';
227
+ case 'sonar-reasoning-pro':
228
+ return 'sonar-reasoning';
229
+ case 'sonar-pro':
230
+ return 'sonar';
231
+ default:
232
+ return 'sonar';
233
+ }
234
+ }
235
+ // For other errors, suggest a model of the same type but different tier
236
+ switch (modelInfo.type) {
237
+ case 'research':
238
+ return 'sonar-reasoning-pro';
239
+ case 'reasoning':
240
+ return originalModel === 'sonar-reasoning-pro' ? 'sonar-reasoning' : 'sonar-reasoning-pro';
241
+ case 'search':
242
+ return originalModel === 'sonar-pro' ? 'sonar' : 'sonar-pro';
243
+ default:
244
+ return 'sonar-reasoning-pro';
245
+ }
246
+ }
247
+ /**
248
+ * Gets all models of a specific type
249
+ */
250
+ export function getModelsByType(type) {
251
+ return Object.entries(MODEL_REGISTRY)
252
+ .filter(([, info]) => info.type === type)
253
+ .map(([model]) => model);
254
+ }
255
+ /**
256
+ * Gets model recommendations based on use case
257
+ */
258
+ export function getModelRecommendations(useCase) {
259
+ const useCaseLower = useCase.toLowerCase();
260
+ const recommendations = [];
261
+ Object.entries(MODEL_REGISTRY).forEach(([model, info]) => {
262
+ if (info.bestFor.some(use => useCaseLower.includes(use.toLowerCase()))) {
263
+ recommendations.push(model);
264
+ }
265
+ });
266
+ return recommendations.length > 0 ? recommendations : ['sonar-reasoning-pro'];
267
+ }
268
+ /**
269
+ * Formats model information for display
270
+ */
271
+ export function formatModelInfo(model) {
272
+ const info = MODEL_REGISTRY[model];
273
+ return `${model} (${info.type}, ${info.speed} speed, ${info.cost} cost): ${info.description}`;
274
+ }
275
+ /**
276
+ * Gets a summary of all available models
277
+ */
278
+ export function getModelSummary() {
279
+ const summary = Object.entries(MODEL_REGISTRY)
280
+ .map(([model, info]) => `- ${model}: ${info.description}`)
281
+ .join('\n');
282
+ return `Available Perplexity Models:\n${summary}`;
283
+ }
284
+ //# sourceMappingURL=models.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"models.js","sourceRoot":"","sources":["../src/models.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,59 @@
1
+ import type { PerplexityRequest, PerplexityResponse, StreamingCallbacks, AsyncJob, ErrorResponse, Config } from './types.js';
2
+ export declare class PerplexityApiError extends Error {
3
+ status?: number | undefined;
4
+ response?: any | undefined;
5
+ constructor(message: string, status?: number | undefined, response?: any | undefined);
6
+ }
7
+ export declare class PerplexityApiClient {
8
+ private apiKey;
9
+ private baseUrl;
10
+ constructor(config: Config);
11
+ /**
12
+ * Makes a request to the Perplexity API with proper error handling
13
+ */
14
+ private makeRequest;
15
+ /**
16
+ * Sends a chat completion request to Perplexity
17
+ */
18
+ chatCompletion(request: PerplexityRequest): Promise<PerplexityResponse>;
19
+ /**
20
+ * Sends a streaming chat completion request to Perplexity
21
+ */
22
+ chatCompletionStream(request: PerplexityRequest, callbacks: StreamingCallbacks): Promise<PerplexityResponse>;
23
+ /**
24
+ * Processes Server-Sent Events from Perplexity's streaming API
25
+ */
26
+ private processStreamingResponse;
27
+ /**
28
+ * Processes a single Server-Sent Event line
29
+ */
30
+ private processSSELine;
31
+ /**
32
+ * Creates an async chat completion job
33
+ */
34
+ createAsyncChatCompletion(request: PerplexityRequest): Promise<AsyncJob>;
35
+ /**
36
+ * Alias for backward compatibility
37
+ */
38
+ createAsyncChat(request: PerplexityRequest): Promise<AsyncJob>;
39
+ /**
40
+ * Lists async chat completion jobs
41
+ */
42
+ listAsyncJobs(limit?: number, nextToken?: string): Promise<{
43
+ jobs: AsyncJob[];
44
+ next_token?: string;
45
+ }>;
46
+ /**
47
+ * Gets the status and result of an async job
48
+ */
49
+ getAsyncJob(jobId: string): Promise<AsyncJob>;
50
+ /**
51
+ * Handles API errors and creates structured error responses
52
+ */
53
+ static handleError(error: unknown, context?: {
54
+ model?: string;
55
+ query?: string;
56
+ }): ErrorResponse;
57
+ }
58
+ export { PerplexityApiClient as PerplexityAPI };
59
+ //# sourceMappingURL=perplexity-api.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"perplexity-api.d.ts","sourceRoot":"","sources":["../src/perplexity-api.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,iBAAiB,EACjB,kBAAkB,EAElB,kBAAkB,EAClB,QAAQ,EACR,aAAa,EACb,MAAM,EACP,MAAM,YAAY,CAAC;AAQpB,qBAAa,kBAAmB,SAAQ,KAAK;IAGlC,MAAM,CAAC,EAAE,MAAM;IACf,QAAQ,CAAC,EAAE,GAAG;gBAFrB,OAAO,EAAE,MAAM,EACR,MAAM,CAAC,EAAE,MAAM,YAAA,EACf,QAAQ,CAAC,EAAE,GAAG,YAAA;CAKxB;AAED,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,OAAO,CAAS;gBAEZ,MAAM,EAAE,MAAM;IAK1B;;OAEG;YACW,WAAW;IAiDzB;;OAEG;IACG,cAAc,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IA6C7E;;OAEG;IACG,oBAAoB,CACxB,OAAO,EAAE,iBAAiB,EAC1B,SAAS,EAAE,kBAAkB,GAC5B,OAAO,CAAC,kBAAkB,CAAC;IAiF9B;;OAEG;YACW,wBAAwB;IA4FtC;;OAEG;IACH,OAAO,CAAC,cAAc;IAuBtB;;OAEG;IACG,yBAAyB,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,QAAQ,CAAC;IAgD9E;;OAEG;IACG,eAAe,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,QAAQ,CAAC;IAIpE;;OAEG;IACG,aAAa,CACjB,KAAK,SAAK,EACV,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC;QAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAWrD;;OAEG;IACG,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAKnD;;OAEG;IACH,MAAM,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,aAAa;CAuFhG;AAGD,OAAO,EAAE,mBAAmB,IAAI,aAAa,EAAE,CAAC"}