@merabylabs/promptarchitect-mcp 0.1.1 → 0.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +40 -0
- package/README.md +5 -33
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +5 -13
- package/dist/server.js.map +1 -1
- package/dist/tools/analyzePrompt.d.ts +1 -5
- package/dist/tools/analyzePrompt.d.ts.map +1 -1
- package/dist/tools/analyzePrompt.js +8 -70
- package/dist/tools/analyzePrompt.js.map +1 -1
- package/dist/tools/generatePrompt.d.ts +1 -4
- package/dist/tools/generatePrompt.d.ts.map +1 -1
- package/dist/tools/generatePrompt.js +8 -77
- package/dist/tools/generatePrompt.js.map +1 -1
- package/dist/tools/refinePrompt.d.ts +1 -5
- package/dist/tools/refinePrompt.d.ts.map +1 -1
- package/dist/tools/refinePrompt.js +9 -55
- package/dist/tools/refinePrompt.js.map +1 -1
- package/package.json +4 -4
package/LICENSE
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
PROPRIETARY SOFTWARE LICENSE
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 Meraby Labs. All rights reserved.
|
|
4
|
+
|
|
5
|
+
TERMS AND CONDITIONS
|
|
6
|
+
|
|
7
|
+
1. GRANT OF LICENSE
|
|
8
|
+
This software is provided solely for use with the PromptArchitect service
|
|
9
|
+
(https://promptarchitectlabs.com). You are granted a limited, non-exclusive,
|
|
10
|
+
non-transferable license to use this software only as an MCP server client
|
|
11
|
+
connecting to the PromptArchitect backend API.
|
|
12
|
+
|
|
13
|
+
2. RESTRICTIONS
|
|
14
|
+
You may NOT:
|
|
15
|
+
- Modify, adapt, translate, or create derivative works of this software
|
|
16
|
+
- Reverse engineer, decompile, or disassemble this software
|
|
17
|
+
- Distribute, sublicense, lease, rent, or lend this software
|
|
18
|
+
- Use this software for any purpose other than connecting to PromptArchitect
|
|
19
|
+
- Remove or alter any proprietary notices, labels, or marks
|
|
20
|
+
- Use this software to bypass or circumvent PromptArchitect services
|
|
21
|
+
|
|
22
|
+
3. OWNERSHIP
|
|
23
|
+
This software is the intellectual property of Meraby Labs. All rights not
|
|
24
|
+
expressly granted herein are reserved by Meraby Labs.
|
|
25
|
+
|
|
26
|
+
4. NO WARRANTY
|
|
27
|
+
THIS SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
28
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
29
|
+
FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT.
|
|
30
|
+
|
|
31
|
+
5. LIMITATION OF LIABILITY
|
|
32
|
+
IN NO EVENT SHALL MERABY LABS BE LIABLE FOR ANY CLAIM, DAMAGES, OR OTHER
|
|
33
|
+
LIABILITY ARISING FROM THE USE OF THIS SOFTWARE.
|
|
34
|
+
|
|
35
|
+
6. TERMINATION
|
|
36
|
+
This license is effective until terminated. It will terminate automatically
|
|
37
|
+
if you fail to comply with any term. Upon termination, you must destroy all
|
|
38
|
+
copies of this software.
|
|
39
|
+
|
|
40
|
+
For inquiries, contact: support@promptarchitectlabs.com
|
package/README.md
CHANGED
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
|
|
3
3
|
[](https://www.npmjs.com/package/@merabylabs/promptarchitect-mcp)
|
|
4
4
|
[](https://modelcontextprotocol.io)
|
|
5
|
-
[](https://opensource.org/licenses/MIT)
|
|
6
5
|
|
|
7
6
|
A Model Context Protocol (MCP) server that refines your prompts using PromptArchitect's AI-powered prompt engineering. Simply pass your current prompt and get an improved version back.
|
|
8
7
|
|
|
@@ -39,7 +38,7 @@ npm install -g @merabylabs/promptarchitect-mcp
|
|
|
39
38
|
|
|
40
39
|
PromptArchitect MCP server works with any IDE or application that supports the [Model Context Protocol](https://modelcontextprotocol.io). Below are configuration examples for popular editors.
|
|
41
40
|
|
|
42
|
-
> **No API key required!** The MCP server uses the PromptArchitect backend API
|
|
41
|
+
> **No API key required!** The MCP server uses the PromptArchitect backend API, so you don't need your own Gemini API key.
|
|
43
42
|
|
|
44
43
|
---
|
|
45
44
|
|
|
@@ -225,7 +224,6 @@ Any application supporting MCP can use this server. The standard configuration i
|
|
|
225
224
|
|----------|-------|
|
|
226
225
|
| Command | `npx` |
|
|
227
226
|
| Args | `["@merabylabs/promptarchitect-mcp"]` |
|
|
228
|
-
| Environment | `GEMINI_API_KEY` (optional) |
|
|
229
227
|
|
|
230
228
|
For global installation, use `promptarchitect-mcp` as the command after running:
|
|
231
229
|
```bash
|
|
@@ -262,32 +260,8 @@ console.log(analysis.suggestions); // ["Be more specific about...", ...]
|
|
|
262
260
|
|
|
263
261
|
| Variable | Required | Description |
|
|
264
262
|
|----------|----------|-------------|
|
|
265
|
-
| `PROMPTARCHITECT_API_URL` | No | PromptArchitect backend API URL. Default: production API. All requests are tracked for billing. |
|
|
266
|
-
| `PROMPTARCHITECT_API_KEY` | No | API key for authenticated requests (future: premium features). |
|
|
267
|
-
| `USE_DIRECT_GEMINI` | No | Set to `true` to bypass PromptArchitect API and call Gemini directly. **Note: Usage won't be tracked for billing.** |
|
|
268
|
-
| `GEMINI_API_KEY` | No | Google Gemini API key. Only used if `USE_DIRECT_GEMINI=true`. |
|
|
269
263
|
| `LOG_LEVEL` | No | Logging level: `debug`, `info`, `warn`, `error`. Default: `info` |
|
|
270
264
|
|
|
271
|
-
### Billing & Usage Tracking
|
|
272
|
-
|
|
273
|
-
By default, all MCP server requests route through the PromptArchitect backend API, which:
|
|
274
|
-
- Tracks usage for billing and analytics
|
|
275
|
-
- Provides consistent model access
|
|
276
|
-
- Enables credit-based pricing
|
|
277
|
-
|
|
278
|
-
**No API key required!** The server uses the PromptArchitect backend (like the VS Code extension) so you don't need your own Gemini API key.
|
|
279
|
-
|
|
280
|
-
If you want to bypass billing and use your own Gemini API key directly:
|
|
281
|
-
|
|
282
|
-
```json
|
|
283
|
-
{
|
|
284
|
-
"env": {
|
|
285
|
-
"USE_DIRECT_GEMINI": "true",
|
|
286
|
-
"GEMINI_API_KEY": "your-api-key-here"
|
|
287
|
-
}
|
|
288
|
-
}
|
|
289
|
-
```
|
|
290
|
-
|
|
291
265
|
## Tool Reference
|
|
292
266
|
|
|
293
267
|
### refine_prompt
|
|
@@ -388,10 +362,6 @@ npm test
|
|
|
388
362
|
### Running Locally
|
|
389
363
|
|
|
390
364
|
```bash
|
|
391
|
-
# With Gemini API
|
|
392
|
-
GEMINI_API_KEY=your-key npm start
|
|
393
|
-
|
|
394
|
-
# Without API (fallback mode)
|
|
395
365
|
npm start
|
|
396
366
|
```
|
|
397
367
|
|
|
@@ -411,11 +381,13 @@ mcp-server/
|
|
|
411
381
|
|
|
412
382
|
## License
|
|
413
383
|
|
|
414
|
-
|
|
384
|
+
Proprietary - © 2025 Meraby Labs. All rights reserved.
|
|
385
|
+
|
|
386
|
+
This software is provided for use exclusively with the PromptArchitect service. Unauthorized copying, modification, distribution, or use outside the intended scope is prohibited.
|
|
415
387
|
|
|
416
388
|
## Related
|
|
417
389
|
|
|
418
|
-
- [PromptArchitect](https://
|
|
390
|
+
- [PromptArchitect](https://promptarchitectlabs.com/) - Full web application
|
|
419
391
|
- [Model Context Protocol](https://modelcontextprotocol.io) - MCP specification
|
|
420
392
|
- [MCP TypeScript SDK](https://github.com/modelcontextprotocol/typescript-sdk) - SDK used by this server
|
|
421
393
|
|
package/dist/index.d.ts
CHANGED
|
@@ -5,5 +5,5 @@
|
|
|
5
5
|
export { createServer, runServer } from './server.js';
|
|
6
6
|
export { generatePrompt, generatePromptSchema, type GeneratePromptInput, refinePrompt, refinePromptSchema, type RefinePromptInput, analyzePrompt, analyzePromptSchema, type AnalyzePromptInput, type AnalysisResult, } from './tools/index.js';
|
|
7
7
|
export { getAllTemplates, getTemplateById, getTemplatesByCategory, getCategories, fillTemplate, type PromptTemplate, } from './resources/templates.js';
|
|
8
|
-
export { logger,
|
|
8
|
+
export { logger, isApiClientAvailable, initializeApiClient, } from './utils/index.js';
|
|
9
9
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAGtD,OAAO,EACL,cAAc,EACd,oBAAoB,EACpB,KAAK,mBAAmB,EACxB,YAAY,EACZ,kBAAkB,EAClB,KAAK,iBAAiB,EACtB,aAAa,EACb,mBAAmB,EACnB,KAAK,kBAAkB,EACvB,KAAK,cAAc,GACpB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EACL,eAAe,EACf,eAAe,EACf,sBAAsB,EACtB,aAAa,EACb,YAAY,EACZ,KAAK,cAAc,GACpB,MAAM,0BAA0B,CAAC;AAGlC,OAAO,EACL,MAAM,EACN,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAGtD,OAAO,EACL,cAAc,EACd,oBAAoB,EACpB,KAAK,mBAAmB,EACxB,YAAY,EACZ,kBAAkB,EAClB,KAAK,iBAAiB,EACtB,aAAa,EACb,mBAAmB,EACnB,KAAK,kBAAkB,EACvB,KAAK,cAAc,GACpB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EACL,eAAe,EACf,eAAe,EACf,sBAAsB,EACtB,aAAa,EACb,YAAY,EACZ,KAAK,cAAc,GACpB,MAAM,0BAA0B,CAAC;AAGlC,OAAO,EACL,MAAM,EACN,oBAAoB,EACpB,mBAAmB,GACpB,MAAM,kBAAkB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -9,5 +9,5 @@ export { generatePrompt, generatePromptSchema, refinePrompt, refinePromptSchema,
|
|
|
9
9
|
// Resource exports
|
|
10
10
|
export { getAllTemplates, getTemplateById, getTemplatesByCategory, getCategories, fillTemplate, } from './resources/templates.js';
|
|
11
11
|
// Utility exports
|
|
12
|
-
export { logger,
|
|
12
|
+
export { logger, isApiClientAvailable, initializeApiClient, } from './utils/index.js';
|
|
13
13
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,iBAAiB;AACjB,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAEtD,eAAe;AACf,OAAO,EACL,cAAc,EACd,oBAAoB,EAEpB,YAAY,EACZ,kBAAkB,EAElB,aAAa,EACb,mBAAmB,GAGpB,MAAM,kBAAkB,CAAC;AAE1B,mBAAmB;AACnB,OAAO,EACL,eAAe,EACf,eAAe,EACf,sBAAsB,EACtB,aAAa,EACb,YAAY,GAEb,MAAM,0BAA0B,CAAC;AAElC,kBAAkB;AAClB,OAAO,EACL,MAAM,EACN,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,iBAAiB;AACjB,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAEtD,eAAe;AACf,OAAO,EACL,cAAc,EACd,oBAAoB,EAEpB,YAAY,EACZ,kBAAkB,EAElB,aAAa,EACb,mBAAmB,GAGpB,MAAM,kBAAkB,CAAC;AAE1B,mBAAmB;AACnB,OAAO,EACL,eAAe,EACf,eAAe,EACf,sBAAsB,EACtB,aAAa,EACb,YAAY,GAEb,MAAM,0BAA0B,CAAC;AAElC,kBAAkB;AAClB,OAAO,EACL,MAAM,EACN,oBAAoB,EACpB,mBAAmB,GACpB,MAAM,kBAAkB,CAAC"}
|
package/dist/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AA4BnE;;GAEG;AACH,wBAAgB,YAAY,IAAI,MAAM,
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AA4BnE;;GAEG;AACH,wBAAgB,YAAY,IAAI,MAAM,CA6BrC;AAwTD;;GAEG;AACH,wBAAsB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CAmB/C;AAED,eAAe,YAAY,CAAC"}
|
package/dist/server.js
CHANGED
|
@@ -7,7 +7,7 @@ import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js'
|
|
|
7
7
|
import { CallToolRequestSchema, ListToolsRequestSchema, ListResourcesRequestSchema, ReadResourceRequestSchema, ErrorCode, McpError, } from '@modelcontextprotocol/sdk/types.js';
|
|
8
8
|
import { generatePrompt, generatePromptSchema, refinePrompt, refinePromptSchema, analyzePrompt, analyzePromptSchema, } from './tools/index.js';
|
|
9
9
|
import { getAllTemplates, getTemplateById, getCategories, } from './resources/templates.js';
|
|
10
|
-
import { logger,
|
|
10
|
+
import { logger, getStats, isApiClientAvailable } from './utils/index.js';
|
|
11
11
|
/**
|
|
12
12
|
* Create and configure the MCP server
|
|
13
13
|
*/
|
|
@@ -21,16 +21,8 @@ export function createServer() {
|
|
|
21
21
|
resources: {},
|
|
22
22
|
},
|
|
23
23
|
});
|
|
24
|
-
//
|
|
25
|
-
|
|
26
|
-
const apiKey = process.env.GEMINI_API_KEY || process.env.VITE_GEMINI_API_KEY;
|
|
27
|
-
if (apiKey) {
|
|
28
|
-
initializeGemini(apiKey);
|
|
29
|
-
logger.info('Gemini API initialized');
|
|
30
|
-
}
|
|
31
|
-
else {
|
|
32
|
-
logger.warn('GEMINI_API_KEY not set - using fallback generation');
|
|
33
|
-
}
|
|
24
|
+
// API client is auto-initialized - no API key needed from user
|
|
25
|
+
logger.info('PromptArchitect API client ready');
|
|
34
26
|
// Register tool handlers
|
|
35
27
|
registerToolHandlers(server);
|
|
36
28
|
// Register resource handlers
|
|
@@ -207,7 +199,7 @@ Use this tool to check:
|
|
|
207
199
|
const status = {
|
|
208
200
|
server: 'promptarchitect-mcp',
|
|
209
201
|
version: '1.0.0',
|
|
210
|
-
|
|
202
|
+
apiAvailable: isApiClientAvailable(),
|
|
211
203
|
performance: {
|
|
212
204
|
totalRequests: stats.totalRequests,
|
|
213
205
|
cacheHits: stats.cacheHits,
|
|
@@ -216,7 +208,7 @@ Use this tool to check:
|
|
|
216
208
|
: 'N/A',
|
|
217
209
|
avgLatencyMs: stats.avgLatencyMs,
|
|
218
210
|
},
|
|
219
|
-
status:
|
|
211
|
+
status: isApiClientAvailable() ? 'ready' : 'degraded (using fallbacks)',
|
|
220
212
|
};
|
|
221
213
|
return {
|
|
222
214
|
content: [
|
package/dist/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EACL,qBAAqB,EACrB,sBAAsB,EACtB,0BAA0B,EAC1B,yBAAyB,EACzB,SAAS,EACT,QAAQ,GACT,MAAM,oCAAoC,CAAC;AAE5C,OAAO,EACL,cAAc,EACd,oBAAoB,EACpB,YAAY,EACZ,kBAAkB,EAClB,aAAa,EACb,mBAAmB,GACpB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,eAAe,EACf,eAAe,EACf,aAAa,GACd,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Analyze Prompt Tool
|
|
3
3
|
* Evaluates prompt quality and provides improvement suggestions
|
|
4
|
-
*
|
|
5
|
-
* Priority order:
|
|
6
|
-
* 1. PromptArchitect API (for billing tracking) - default
|
|
7
|
-
* 2. Direct Gemini API (if GEMINI_API_KEY set and USE_DIRECT_GEMINI=true)
|
|
8
|
-
* 3. Fallback rule-based analysis (no API available)
|
|
4
|
+
* Uses PromptArchitect API with local fallback
|
|
9
5
|
*/
|
|
10
6
|
import { z } from 'zod';
|
|
11
7
|
export declare const analyzePromptSchema: z.ZodObject<{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analyzePrompt.d.ts","sourceRoot":"","sources":["../../src/tools/analyzePrompt.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"analyzePrompt.d.ts","sourceRoot":"","sources":["../../src/tools/analyzePrompt.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAOxB,eAAO,MAAM,mBAAmB;;;;;;;;;EAG9B,CAAC;AAEH,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAErE,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE;QACN,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;QAChB,WAAW,EAAE,MAAM,CAAC;QACpB,SAAS,EAAE,MAAM,CAAC;QAClB,aAAa,EAAE,MAAM,CAAC;KACvB,CAAC;IACF,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,QAAQ,EAAE;QACR,SAAS,EAAE,MAAM,CAAC;QAClB,aAAa,EAAE,MAAM,CAAC;QACtB,YAAY,EAAE,OAAO,CAAC;QACtB,WAAW,EAAE,OAAO,CAAC;QACrB,cAAc,EAAE,OAAO,CAAC;KACzB,CAAC;CACH;AASD,wBAAsB,aAAa,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,cAAc,CAAC,CA4CtF;AA0HD,eAAe,aAAa,CAAC"}
|
|
@@ -1,16 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Analyze Prompt Tool
|
|
3
3
|
* Evaluates prompt quality and provides improvement suggestions
|
|
4
|
-
*
|
|
5
|
-
* Priority order:
|
|
6
|
-
* 1. PromptArchitect API (for billing tracking) - default
|
|
7
|
-
* 2. Direct Gemini API (if GEMINI_API_KEY set and USE_DIRECT_GEMINI=true)
|
|
8
|
-
* 3. Fallback rule-based analysis (no API available)
|
|
4
|
+
* Uses PromptArchitect API with local fallback
|
|
9
5
|
*/
|
|
10
6
|
import { z } from 'zod';
|
|
11
|
-
import {
|
|
12
|
-
// Check if user explicitly wants direct Gemini (bypasses billing)
|
|
13
|
-
const USE_DIRECT_GEMINI = process.env.USE_DIRECT_GEMINI === 'true';
|
|
7
|
+
import { logger, apiAnalyzePrompt, isApiClientAvailable, } from '../utils/index.js';
|
|
14
8
|
export const analyzePromptSchema = z.object({
|
|
15
9
|
prompt: z.string().min(1).describe('The prompt to analyze'),
|
|
16
10
|
evaluationCriteria: z.array(z.string()).optional().describe('Specific criteria to evaluate'),
|
|
@@ -29,14 +23,14 @@ export async function analyzePrompt(input) {
|
|
|
29
23
|
});
|
|
30
24
|
// Calculate structural metadata (always needed)
|
|
31
25
|
const metadata = calculateMetadata(prompt);
|
|
32
|
-
//
|
|
33
|
-
if (isApiClientAvailable()
|
|
26
|
+
// Use PromptArchitect API
|
|
27
|
+
if (isApiClientAvailable()) {
|
|
34
28
|
try {
|
|
35
29
|
const response = await apiAnalyzePrompt({
|
|
36
30
|
prompt,
|
|
37
31
|
evaluationCriteria,
|
|
38
32
|
});
|
|
39
|
-
logger.info('Analyzed via PromptArchitect API
|
|
33
|
+
logger.info('Analyzed via PromptArchitect API');
|
|
40
34
|
return {
|
|
41
35
|
scores: {
|
|
42
36
|
overall: response.overallScore,
|
|
@@ -52,40 +46,13 @@ export async function analyzePrompt(input) {
|
|
|
52
46
|
};
|
|
53
47
|
}
|
|
54
48
|
catch (error) {
|
|
55
|
-
logger.warn('API request failed,
|
|
49
|
+
logger.warn('API request failed, using fallback', {
|
|
56
50
|
error: error instanceof Error ? error.message : 'Unknown error'
|
|
57
51
|
});
|
|
58
|
-
// Fall through to other options
|
|
59
52
|
}
|
|
60
53
|
}
|
|
61
|
-
//
|
|
62
|
-
|
|
63
|
-
try {
|
|
64
|
-
const quality = await analyzePromptQuality(prompt);
|
|
65
|
-
// Calculate overall score from individual scores
|
|
66
|
-
const overallScore = Math.round((quality.scores.clarity + quality.scores.specificity +
|
|
67
|
-
quality.scores.actionability + quality.scores.completeness) / 4 * 10);
|
|
68
|
-
logger.info('Analyzed via direct Gemini API (billing NOT tracked)');
|
|
69
|
-
return {
|
|
70
|
-
scores: {
|
|
71
|
-
overall: overallScore,
|
|
72
|
-
clarity: quality.scores.clarity * 10,
|
|
73
|
-
specificity: quality.scores.specificity * 10,
|
|
74
|
-
structure: estimateSubscore(prompt, 'structure', overallScore),
|
|
75
|
-
actionability: quality.scores.actionability * 10,
|
|
76
|
-
},
|
|
77
|
-
suggestions: quality.suggestions.slice(0, 5),
|
|
78
|
-
strengths: identifyStrengths(prompt, metadata),
|
|
79
|
-
weaknesses: identifyWeaknesses(prompt, metadata),
|
|
80
|
-
metadata,
|
|
81
|
-
};
|
|
82
|
-
}
|
|
83
|
-
catch (error) {
|
|
84
|
-
logger.warn('Direct Gemini analysis failed, using rule-based fallback', { error });
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
// Priority 3: Fallback rule-based analysis
|
|
88
|
-
logger.warn('Using fallback rule-based analysis (no API available)');
|
|
54
|
+
// Fallback rule-based analysis
|
|
55
|
+
logger.warn('Using fallback rule-based analysis');
|
|
89
56
|
return performRuleBasedAnalysis(prompt, metadata);
|
|
90
57
|
}
|
|
91
58
|
function calculateMetadata(prompt) {
|
|
@@ -99,35 +66,6 @@ function calculateMetadata(prompt) {
|
|
|
99
66
|
hasConstraints: /must|should|avoid|don't|do not|never|always|required/i.test(prompt),
|
|
100
67
|
};
|
|
101
68
|
}
|
|
102
|
-
function estimateSubscore(prompt, criterion, baseScore) {
|
|
103
|
-
// Adjust base score based on criterion-specific heuristics
|
|
104
|
-
let adjustment = 0;
|
|
105
|
-
switch (criterion) {
|
|
106
|
-
case 'clarity':
|
|
107
|
-
// Shorter sentences = clearer
|
|
108
|
-
const avgSentenceLength = prompt.length / (prompt.split(/[.!?]+/).length || 1);
|
|
109
|
-
adjustment = avgSentenceLength < 100 ? 5 : avgSentenceLength > 200 ? -10 : 0;
|
|
110
|
-
break;
|
|
111
|
-
case 'specificity':
|
|
112
|
-
// Specific words indicate specificity
|
|
113
|
-
const specificIndicators = (prompt.match(/specific|exact|precisely|particular|detailed/gi) || []).length;
|
|
114
|
-
const vagueIndicators = (prompt.match(/something|anything|whatever|stuff|things/gi) || []).length;
|
|
115
|
-
adjustment = specificIndicators * 3 - vagueIndicators * 5;
|
|
116
|
-
break;
|
|
117
|
-
case 'structure':
|
|
118
|
-
// Headers, lists, sections
|
|
119
|
-
const hasHeaders = /^#+\s/m.test(prompt);
|
|
120
|
-
const hasList = /^[-*•\d.]+\s/m.test(prompt);
|
|
121
|
-
adjustment = (hasHeaders ? 10 : 0) + (hasList ? 5 : 0);
|
|
122
|
-
break;
|
|
123
|
-
case 'actionability':
|
|
124
|
-
// Clear actions/verbs at start
|
|
125
|
-
const hasActionVerb = /^(create|generate|write|analyze|explain|list|describe|build|design)/i.test(prompt);
|
|
126
|
-
adjustment = hasActionVerb ? 10 : -5;
|
|
127
|
-
break;
|
|
128
|
-
}
|
|
129
|
-
return Math.max(0, Math.min(100, baseScore + adjustment));
|
|
130
|
-
}
|
|
131
69
|
function identifyStrengths(prompt, metadata) {
|
|
132
70
|
const strengths = [];
|
|
133
71
|
if (metadata.hasStructure) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analyzePrompt.js","sourceRoot":"","sources":["../../src/tools/analyzePrompt.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"analyzePrompt.js","sourceRoot":"","sources":["../../src/tools/analyzePrompt.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,MAAM,EACN,gBAAgB,EAChB,oBAAoB,GACrB,MAAM,mBAAmB,CAAC;AAE3B,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,uBAAuB,CAAC;IAC3D,kBAAkB,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,+BAA+B,CAAC;CAC7F,CAAC,CAAC;AAwBH,MAAM,gBAAgB,GAAG;IACvB,SAAS;IACT,aAAa;IACb,WAAW;IACX,eAAe;CAChB,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,KAAyB;IAC3D,MAAM,EAAE,MAAM,EAAE,kBAAkB,GAAG,gBAAgB,EAAE,GAAG,KAAK,CAAC;IAEhE,MAAM,CAAC,IAAI,CAAC,kBAAkB,EAAE;QAC9B,YAAY,EAAE,MAAM,CAAC,MAAM;QAC3B,QAAQ,EAAE,kBAAkB;KAC7B,CAAC,CAAC;IAEH,gDAAgD;IAChD,MAAM,QAAQ,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAE3C,0BAA0B;IAC1B,IAAI,oBAAoB,EAAE,EAAE,CAAC;QAC3B,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,gBAAgB,CAAC;gBACtC,MAAM;gBACN,kBAAkB;aACnB,CAAC,CAAC;YAEH,MAAM,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;YAEhD,OAAO;gBACL,MAAM,EAAE;oBACN,OAAO,EAAE,QAAQ,CAAC,YAAY;oBAC9B,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,OAAO;oBAChC,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,WAAW;oBACxC,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,SAAS;oBACpC,aAAa,EAAE,QAAQ,CAAC,MAAM,CAAC,aAAa;iBAC7C;gBACD,WAAW,EAAE,QAAQ,CAAC,WAAW,IAAI,EAAE;gBACvC,SAAS,EAAE,QAAQ,CAAC,SAAS,IAAI,iBAAiB,CAAC,MAAM,EAAE,QAAQ,CAAC;gBACpE,UAAU,EAAE,QAAQ,CAAC,UAAU,IAAI,kBAAkB,CAAC,MAAM,EAAE,QAAQ,CAAC;gBACvE,QAAQ;aACT,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,IAAI,CAAC,oCAAoC,EAAE;gBAChD,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe;aAChE,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,+BAA+B;IAC/B,MAAM,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;IAClD,OAAO,wBAAwB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;AACpD,CAAC;AAED,SAAS,iBAAiB,CAAC,MAAc;IACvC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC5D,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAE1E,OAAO;QACL,SAAS,EAAE,KAAK,CAAC,MAAM;QACvB,aAAa,EAAE,SAAS,CAAC,MAAM;QAC/B,YAAY,EAAE,gCAAgC,CAAC,IAAI,CAAC,MAAM,CAAC;QAC3D,WAAW,EAAE,gDAAgD,CAAC,IAAI,CAAC,MAAM,CAAC;QAC1E,cAAc,EAAE,uDAAuD,CAAC,IAAI,CAAC,MAAM,CAAC;KACrF,CAAC;AACJ,CAAC;AAED,SAAS,iBAAiB,CAAC,MAAc,EAAE,QAAoC;IAC7E,MAAM,SAAS,GAAa,EAAE,CAAC;IAE/B,IAAI,QAAQ,CAAC,YAAY,EAAE,CAAC;QAC1B,SAAS,CAAC,IAAI,CAAC,mDAAmD,CAAC,CAAC;IACtE,CAAC;IACD,IAAI,QAAQ,CAAC,WAAW,EAAE,CAAC;QACzB,SAAS,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;IAClD,CAAC;IACD,IAAI,QAAQ,CAAC,cAAc,EAAE,CAAC;QAC5B,SAAS,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAC;IAChE,CAAC;IACD,IAAI,QAAQ,CAAC,SAAS,IAAI,EAAE,IAAI,QAAQ,CAAC,SAAS,IAAI,GAAG,EAAE,CAAC;QAC1D,SAAS,CAAC,IAAI,CAAC,oDAAoD,CAAC,CAAC;IACvE,CAAC;IACD,IAAI,kCAAkC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QACpD,SAAS,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;IAC5C,CAAC;IACD,IAAI,gCAAgC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QAClD,SAAS,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;IACrD,CAAC;IAED,OAAO,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,gCAAgC,CAAC,CAAC;AAC/E,CAAC;AAED,SAAS,kBAAkB,CAAC,MAAc,EAAE,QAAoC;IAC9E,MAAM,UAAU,GAAa,EAAE,CAAC;IAEhC,IAAI,CAAC,QAAQ,CAAC,YAAY,IAAI,QAAQ,CAAC,SAAS,GAAG,GAAG,EAAE,CAAC;QACvD,UAAU,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;IACzD,CAAC;IACD,IAAI,CAAC,QAAQ,CAAC,WAAW,IAAI,QAAQ,CAAC,SAAS,GAAG,EAAE,EAAE,CAAC;QACrD,UAAU,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;IACjD,CAAC;IACD,IAAI,QAAQ,CAAC,SAAS,GAAG,EAAE,EAAE,CAAC;QAC5B,UAAU,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAC;IAC7D,CAAC;IACD,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,wCAAwC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QAClF,UAAU,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;IACrD,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,QAAQ,CAAC,SAAS,GAAG,EAAE,EAAE,CAAC;QACxE,UAAU,CAAC,IAAI,CAAC,sDAAsD,CAAC,CAAC;IAC1E,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,SAAS,wBAAwB,CAAC,MAAc,EAAE,QAAoC;IACpF,uCAAuC;IACvC,IAAI,YAAY,GAAG,EAAE,CAAC;IACtB,IAAI,gBAAgB,GAAG,EAAE,CAAC;IAC1B,IAAI,cAAc,GAAG,EAAE,CAAC;IACxB,IAAI,kBAAkB,GAAG,EAAE,CAAC;IAE5B,sBAAsB;IACtB,MAAM,iBAAiB,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,QAAQ,CAAC,aAAa,IAAI,CAAC,CAAC,CAAC;IACxE,IAAI,iBAAiB,GAAG,GAAG;QAAE,YAAY,IAAI,EAAE,CAAC;IAChD,IAAI,iBAAiB,GAAG,GAAG;QAAE,YAAY,IAAI,EAAE,CAAC;IAEhD,0BAA0B;IAC1B,IAAI,QAAQ,CAAC,WAAW;QAAE,gBAAgB,IAAI,EAAE,CAAC;IACjD,IAAI,QAAQ,CAAC,cAAc;QAAE,gBAAgB,IAAI,EAAE,CAAC;IAEpD,wBAAwB;IACxB,IAAI,QAAQ,CAAC,YAAY;QAAE,cAAc,IAAI,EAAE,CAAC;IAChD,IAAI,QAAQ,CAAC,SAAS,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY;QAAE,cAAc,IAAI,EAAE,CAAC;IAE7E,4BAA4B;IAC5B,IAAI,+DAA+D,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QACjF,kBAAkB,IAAI,EAAE,CAAC;IAC3B,CAAC;IACD,IAAI,gCAAgC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QAClD,kBAAkB,IAAI,EAAE,CAAC;IAC3B,CAAC;IAED,mBAAmB;IACnB,MAAM,KAAK,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;IAC3D,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC,CAAC;IACnC,gBAAgB,GAAG,KAAK,CAAC,gBAAgB,CAAC,CAAC;IAC3C,cAAc,GAAG,KAAK,CAAC,cAAc,CAAC,CAAC;IACvC,kBAAkB,GAAG,KAAK,CAAC,kBAAkB,CAAC,CAAC;IAE/C,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,YAAY,GAAG,gBAAgB,GAAG,cAAc,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC;IAExG,uBAAuB;IACvB,MAAM,WAAW,GAAa,EAAE,CAAC;IACjC,IAAI,cAAc,GAAG,EAAE;QAAE,WAAW,CAAC,IAAI,CAAC,qDAAqD,CAAC,CAAC;IACjG,IAAI,gBAAgB,GAAG,EAAE;QAAE,WAAW,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAC;IACzF,IAAI,kBAAkB,GAAG,EAAE;QAAE,WAAW,CAAC,IAAI,CAAC,gEAAgE,CAAC,CAAC;IAChH,IAAI,YAAY,GAAG,EAAE;QAAE,WAAW,CAAC,IAAI,CAAC,iDAAiD,CAAC,CAAC;IAC3F,IAAI,CAAC,QAAQ,CAAC,WAAW;QAAE,WAAW,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;IAEjF,OAAO;QACL,MAAM,EAAE;YACN,OAAO;YACP,OAAO,EAAE,YAAY;YACrB,WAAW,EAAE,gBAAgB;YAC7B,SAAS,EAAE,cAAc;YACzB,aAAa,EAAE,kBAAkB;SAClC;QACD,WAAW,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;QACpC,SAAS,EAAE,iBAAiB,CAAC,MAAM,EAAE,QAAQ,CAAC;QAC9C,UAAU,EAAE,kBAAkB,CAAC,MAAM,EAAE,QAAQ,CAAC;QAChD,QAAQ;KACT,CAAC;AACJ,CAAC;AAED,eAAe,aAAa,CAAC"}
|
|
@@ -2,10 +2,7 @@
|
|
|
2
2
|
* Generate Prompt Tool
|
|
3
3
|
* Transforms user ideas into well-structured prompts
|
|
4
4
|
*
|
|
5
|
-
*
|
|
6
|
-
* 1. PromptArchitect API (for billing tracking) - default
|
|
7
|
-
* 2. Direct Gemini API (if GEMINI_API_KEY set and USE_DIRECT_GEMINI=true)
|
|
8
|
-
* 3. Fallback template generation (no API available)
|
|
5
|
+
* Uses PromptArchitect backend API with fallback to local template generation.
|
|
9
6
|
*/
|
|
10
7
|
import { z } from 'zod';
|
|
11
8
|
export declare const generatePromptSchema: z.ZodObject<{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generatePrompt.d.ts","sourceRoot":"","sources":["../../src/tools/generatePrompt.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"generatePrompt.d.ts","sourceRoot":"","sources":["../../src/tools/generatePrompt.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAOxB,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;EAW/B,CAAC;AAEH,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAEvE,wBAAsB,cAAc,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC;IACxE,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE;QACR,eAAe,EAAE,MAAM,CAAC;QACxB,SAAS,EAAE,MAAM,CAAC;QAClB,YAAY,EAAE,OAAO,CAAC;KACvB,CAAC;CACH,CAAC,CA6CD;AA0BD,eAAe,cAAc,CAAC"}
|
|
@@ -2,15 +2,10 @@
|
|
|
2
2
|
* Generate Prompt Tool
|
|
3
3
|
* Transforms user ideas into well-structured prompts
|
|
4
4
|
*
|
|
5
|
-
*
|
|
6
|
-
* 1. PromptArchitect API (for billing tracking) - default
|
|
7
|
-
* 2. Direct Gemini API (if GEMINI_API_KEY set and USE_DIRECT_GEMINI=true)
|
|
8
|
-
* 3. Fallback template generation (no API available)
|
|
5
|
+
* Uses PromptArchitect backend API with fallback to local template generation.
|
|
9
6
|
*/
|
|
10
7
|
import { z } from 'zod';
|
|
11
|
-
import {
|
|
12
|
-
// Check if user explicitly wants direct Gemini (bypasses billing)
|
|
13
|
-
const USE_DIRECT_GEMINI = process.env.USE_DIRECT_GEMINI === 'true';
|
|
8
|
+
import { logger, apiGeneratePrompt, isApiClientAvailable, } from '../utils/index.js';
|
|
14
9
|
export const generatePromptSchema = z.object({
|
|
15
10
|
idea: z.string().min(1).describe('The user\'s raw prompt idea or concept'),
|
|
16
11
|
template: z.enum(['coding', 'writing', 'research', 'analysis', 'factcheck', 'general'])
|
|
@@ -23,61 +18,12 @@ export const generatePromptSchema = z.object({
|
|
|
23
18
|
.default('general')
|
|
24
19
|
.describe('Target AI model to optimize for'),
|
|
25
20
|
});
|
|
26
|
-
const TEMPLATE_PREFIXES = {
|
|
27
|
-
coding: `Generate a detailed coding/development prompt for the following task. Include:
|
|
28
|
-
- Clear problem statement
|
|
29
|
-
- Technical requirements and constraints
|
|
30
|
-
- Expected input/output specifications
|
|
31
|
-
- Edge cases to consider
|
|
32
|
-
- Code quality expectations
|
|
33
|
-
|
|
34
|
-
Task: `,
|
|
35
|
-
writing: `Generate a comprehensive writing prompt for the following. Include:
|
|
36
|
-
- Clear writing objective
|
|
37
|
-
- Target audience and tone
|
|
38
|
-
- Structure/format requirements
|
|
39
|
-
- Key points to cover
|
|
40
|
-
- Style guidelines
|
|
41
|
-
|
|
42
|
-
Topic: `,
|
|
43
|
-
research: `Generate a thorough research prompt for the following topic. Include:
|
|
44
|
-
- Research questions to answer
|
|
45
|
-
- Scope and depth expectations
|
|
46
|
-
- Source requirements
|
|
47
|
-
- Output format (report, summary, etc.)
|
|
48
|
-
- Key areas to investigate
|
|
49
|
-
|
|
50
|
-
Topic: `,
|
|
51
|
-
analysis: `Generate an analytical prompt for the following. Include:
|
|
52
|
-
- What to analyze and why
|
|
53
|
-
- Analytical framework or approach
|
|
54
|
-
- Data/evidence expectations
|
|
55
|
-
- Output format and structure
|
|
56
|
-
- Key insights to uncover
|
|
57
|
-
|
|
58
|
-
Subject: `,
|
|
59
|
-
factcheck: `Generate a fact-checking prompt for the following claim. Include:
|
|
60
|
-
- The claim to verify
|
|
61
|
-
- Evidence standards required
|
|
62
|
-
- Source credibility criteria
|
|
63
|
-
- Output format (verdict, confidence, sources)
|
|
64
|
-
- Edge cases and nuances
|
|
65
|
-
|
|
66
|
-
Claim: `,
|
|
67
|
-
general: `Generate a well-structured prompt for the following request. Include:
|
|
68
|
-
- Clear objective
|
|
69
|
-
- Context and constraints
|
|
70
|
-
- Expected output format
|
|
71
|
-
- Quality criteria
|
|
72
|
-
|
|
73
|
-
Request: `,
|
|
74
|
-
};
|
|
75
21
|
export async function generatePrompt(input) {
|
|
76
22
|
const { idea, template = 'general', context, targetModel } = input;
|
|
77
23
|
logger.info('Generating prompt', { template, targetModel, ideaLength: idea.length });
|
|
78
24
|
let generatedPrompt = '';
|
|
79
|
-
//
|
|
80
|
-
if (isApiClientAvailable()
|
|
25
|
+
// Use PromptArchitect API
|
|
26
|
+
if (isApiClientAvailable()) {
|
|
81
27
|
try {
|
|
82
28
|
const response = await apiGeneratePrompt({
|
|
83
29
|
idea,
|
|
@@ -86,33 +32,18 @@ export async function generatePrompt(input) {
|
|
|
86
32
|
targetModel,
|
|
87
33
|
});
|
|
88
34
|
generatedPrompt = response.prompt;
|
|
89
|
-
logger.info('Generated via PromptArchitect API
|
|
35
|
+
logger.info('Generated via PromptArchitect API');
|
|
90
36
|
}
|
|
91
37
|
catch (error) {
|
|
92
|
-
logger.warn('API request failed,
|
|
38
|
+
logger.warn('API request failed, using fallback', {
|
|
93
39
|
error: error instanceof Error ? error.message : 'Unknown error'
|
|
94
40
|
});
|
|
95
|
-
// Fall through to other options
|
|
96
|
-
generatedPrompt = '';
|
|
97
41
|
}
|
|
98
42
|
}
|
|
99
|
-
//
|
|
100
|
-
if (!generatedPrompt && isGeminiAvailable()) {
|
|
101
|
-
const templatePrefix = TEMPLATE_PREFIXES[template] || TEMPLATE_PREFIXES.general;
|
|
102
|
-
let fullRequest = templatePrefix + idea;
|
|
103
|
-
if (context) {
|
|
104
|
-
fullRequest += `\n\nAdditional context: ${context}`;
|
|
105
|
-
}
|
|
106
|
-
if (targetModel && targetModel !== 'general') {
|
|
107
|
-
fullRequest += `\n\nOptimize this prompt specifically for ${targetModel}.`;
|
|
108
|
-
}
|
|
109
|
-
generatedPrompt = await generateContent(fullRequest);
|
|
110
|
-
logger.info('Generated via direct Gemini API (billing NOT tracked)');
|
|
111
|
-
}
|
|
112
|
-
// Priority 3: Fallback template generation
|
|
43
|
+
// Fallback template generation
|
|
113
44
|
if (!generatedPrompt) {
|
|
114
45
|
generatedPrompt = createFallbackPrompt(idea, template, context);
|
|
115
|
-
logger.warn('Using fallback prompt generation
|
|
46
|
+
logger.warn('Using fallback prompt generation');
|
|
116
47
|
}
|
|
117
48
|
// Calculate metadata
|
|
118
49
|
const wordCount = generatedPrompt.split(/\s+/).length;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generatePrompt.js","sourceRoot":"","sources":["../../src/tools/generatePrompt.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"generatePrompt.js","sourceRoot":"","sources":["../../src/tools/generatePrompt.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Refine Prompt Tool
|
|
3
3
|
* Iteratively improves existing prompts based on feedback
|
|
4
|
-
*
|
|
5
|
-
* Priority order:
|
|
6
|
-
* 1. PromptArchitect API (for billing tracking) - default
|
|
7
|
-
* 2. Direct Gemini API (if GEMINI_API_KEY set and USE_DIRECT_GEMINI=true)
|
|
8
|
-
* 3. Fallback basic refinement (no API available)
|
|
4
|
+
* Uses PromptArchitect API with local fallback
|
|
9
5
|
*/
|
|
10
6
|
import { z } from 'zod';
|
|
11
7
|
export declare const refinePromptSchema: z.ZodObject<{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"refinePrompt.d.ts","sourceRoot":"","sources":["../../src/tools/refinePrompt.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"refinePrompt.d.ts","sourceRoot":"","sources":["../../src/tools/refinePrompt.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAOxB,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;EAQ7B,CAAC;AAEH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAEnE,wBAAsB,YAAY,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC;IACpE,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,EAAE;QACR,iBAAiB,EAAE,MAAM,CAAC;QAC1B,gBAAgB,EAAE,MAAM,CAAC;QACzB,kBAAkB,EAAE,OAAO,CAAC;KAC7B,CAAC;CACH,CAAC,CAuDD;AA6BD,eAAe,YAAY,CAAC"}
|
|
@@ -1,16 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Refine Prompt Tool
|
|
3
3
|
* Iteratively improves existing prompts based on feedback
|
|
4
|
-
*
|
|
5
|
-
* Priority order:
|
|
6
|
-
* 1. PromptArchitect API (for billing tracking) - default
|
|
7
|
-
* 2. Direct Gemini API (if GEMINI_API_KEY set and USE_DIRECT_GEMINI=true)
|
|
8
|
-
* 3. Fallback basic refinement (no API available)
|
|
4
|
+
* Uses PromptArchitect API with local fallback
|
|
9
5
|
*/
|
|
10
6
|
import { z } from 'zod';
|
|
11
|
-
import {
|
|
12
|
-
// Check if user explicitly wants direct Gemini (bypasses billing)
|
|
13
|
-
const USE_DIRECT_GEMINI = process.env.USE_DIRECT_GEMINI === 'true';
|
|
7
|
+
import { logger, apiRefinePrompt, isApiClientAvailable, } from '../utils/index.js';
|
|
14
8
|
export const refinePromptSchema = z.object({
|
|
15
9
|
prompt: z.string().min(1).describe('The current prompt to refine'),
|
|
16
10
|
feedback: z.string().min(1).describe('What should be improved or changed'),
|
|
@@ -30,8 +24,8 @@ export async function refinePrompt(input) {
|
|
|
30
24
|
});
|
|
31
25
|
let refinedPrompt = '';
|
|
32
26
|
let changes = [];
|
|
33
|
-
//
|
|
34
|
-
if (isApiClientAvailable()
|
|
27
|
+
// Use PromptArchitect API
|
|
28
|
+
if (isApiClientAvailable()) {
|
|
35
29
|
try {
|
|
36
30
|
const response = await apiRefinePrompt({
|
|
37
31
|
prompt,
|
|
@@ -41,59 +35,19 @@ export async function refinePrompt(input) {
|
|
|
41
35
|
});
|
|
42
36
|
refinedPrompt = response.refinedPrompt;
|
|
43
37
|
changes = response.changes || ['Prompt refined based on feedback'];
|
|
44
|
-
logger.info('Refined via PromptArchitect API
|
|
38
|
+
logger.info('Refined via PromptArchitect API');
|
|
45
39
|
}
|
|
46
40
|
catch (error) {
|
|
47
|
-
logger.warn('API request failed,
|
|
41
|
+
logger.warn('API request failed, using fallback', {
|
|
48
42
|
error: error instanceof Error ? error.message : 'Unknown error'
|
|
49
43
|
});
|
|
50
|
-
// Fall through to other options
|
|
51
44
|
}
|
|
52
45
|
}
|
|
53
|
-
//
|
|
54
|
-
if (!refinedPrompt && isGeminiAvailable()) {
|
|
55
|
-
const refinementRequest = `You are a prompt engineering expert. Refine the following prompt based on the given feedback.
|
|
56
|
-
|
|
57
|
-
## Original Prompt
|
|
58
|
-
${prompt}
|
|
59
|
-
|
|
60
|
-
## Feedback / Improvement Request
|
|
61
|
-
${feedback}
|
|
62
|
-
|
|
63
|
-
## Instructions
|
|
64
|
-
${preserveStructure ? '- Preserve the overall structure and format of the original prompt' : '- Feel free to restructure the prompt if it improves clarity'}
|
|
65
|
-
- Apply the feedback to improve the prompt
|
|
66
|
-
- Maintain clarity and actionability
|
|
67
|
-
- Keep the core intent intact
|
|
68
|
-
${targetModel !== 'general' ? `- Optimize for ${targetModel}` : ''}
|
|
69
|
-
|
|
70
|
-
## Output Format
|
|
71
|
-
First, provide the refined prompt.
|
|
72
|
-
Then, list 2-4 specific changes you made in a "Changes:" section.
|
|
73
|
-
|
|
74
|
-
---
|
|
75
|
-
REFINED PROMPT:`;
|
|
76
|
-
const response = await generateContent(refinementRequest);
|
|
77
|
-
// Parse response to extract prompt and changes
|
|
78
|
-
const changesMatch = response.match(/Changes?:?\s*([\s\S]*?)$/i);
|
|
79
|
-
if (changesMatch) {
|
|
80
|
-
refinedPrompt = response.slice(0, changesMatch.index).trim();
|
|
81
|
-
changes = changesMatch[1]
|
|
82
|
-
.split(/\n/)
|
|
83
|
-
.map(line => line.replace(/^[-*•]\s*/, '').trim())
|
|
84
|
-
.filter(line => line.length > 0);
|
|
85
|
-
}
|
|
86
|
-
else {
|
|
87
|
-
refinedPrompt = response.trim();
|
|
88
|
-
changes = ['Prompt refined based on feedback'];
|
|
89
|
-
}
|
|
90
|
-
logger.info('Refined via direct Gemini API (billing NOT tracked)');
|
|
91
|
-
}
|
|
92
|
-
// Priority 3: Fallback basic refinement
|
|
46
|
+
// Fallback basic refinement
|
|
93
47
|
if (!refinedPrompt) {
|
|
94
48
|
refinedPrompt = applyBasicRefinements(prompt, feedback);
|
|
95
|
-
changes = ['Applied basic refinements
|
|
96
|
-
logger.warn('Using fallback refinement
|
|
49
|
+
changes = ['Applied basic refinements'];
|
|
50
|
+
logger.warn('Using fallback refinement');
|
|
97
51
|
}
|
|
98
52
|
// Calculate metadata
|
|
99
53
|
const originalWordCount = prompt.split(/\s+/).length;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"refinePrompt.js","sourceRoot":"","sources":["../../src/tools/refinePrompt.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"refinePrompt.js","sourceRoot":"","sources":["../../src/tools/refinePrompt.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@merabylabs/promptarchitect-mcp",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.3",
|
|
4
4
|
"description": "MCP (Model Context Protocol) server for PromptArchitect - AI-powered prompt engineering tools for Claude, Cursor, VS Code, Windsurf, Zed & more",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"mcp",
|
|
@@ -25,13 +25,13 @@
|
|
|
25
25
|
"developer-tools",
|
|
26
26
|
"code-assistant"
|
|
27
27
|
],
|
|
28
|
-
"author": "
|
|
29
|
-
"license": "
|
|
28
|
+
"author": "Meraby Labs",
|
|
29
|
+
"license": "SEE LICENSE IN LICENSE",
|
|
30
30
|
"repository": {
|
|
31
31
|
"type": "git",
|
|
32
32
|
"url": "https://github.com/promptarchitect/mcp-server"
|
|
33
33
|
},
|
|
34
|
-
"homepage": "https://
|
|
34
|
+
"homepage": "https://promptarchitectlabs.com",
|
|
35
35
|
"bugs": {
|
|
36
36
|
"url": "https://github.com/promptarchitect/mcp-server/issues"
|
|
37
37
|
},
|