@merabylabs/promptarchitect-mcp 0.1.0 → 0.1.1

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 CHANGED
@@ -1,7 +1,13 @@
1
- # @promptarchitect/mcp-server
1
+ # @merabylabs/promptarchitect-mcp
2
+
3
+ [![npm version](https://img.shields.io/npm/v/@merabylabs/promptarchitect-mcp.svg)](https://www.npmjs.com/package/@merabylabs/promptarchitect-mcp)
4
+ [![MCP Compatible](https://img.shields.io/badge/MCP-Compatible-blue)](https://modelcontextprotocol.io)
5
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
2
6
 
3
7
  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.
4
8
 
9
+ **Works with:** Claude Desktop • VS Code (Copilot) • Cursor • Windsurf • Zed • JetBrains IDEs • Continue.dev • Cline
10
+
5
11
  ## Features
6
12
 
7
13
  ### 🛠️ Tools
@@ -20,53 +26,214 @@ A Model Context Protocol (MCP) server that refines your prompts using PromptArch
20
26
  ## Installation
21
27
 
22
28
  ```bash
23
- npm install @promptarchitect/mcp-server
29
+ npm install @merabylabs/promptarchitect-mcp
24
30
  ```
25
31
 
26
32
  Or install globally:
27
33
 
28
34
  ```bash
29
- npm install -g @promptarchitect/mcp-server
35
+ npm install -g @merabylabs/promptarchitect-mcp
30
36
  ```
31
37
 
32
38
  ## Usage
33
39
 
34
- ### With Claude Desktop
40
+ 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
+
42
+ > **No API key required!** The MCP server uses the PromptArchitect backend API by default, so you don't need your own Gemini API key. Usage is automatically tracked for billing.
43
+
44
+ ---
35
45
 
36
- Add to your Claude Desktop configuration (`claude_desktop_config.json`):
46
+ ### Claude Desktop
47
+
48
+ Add to your Claude Desktop configuration file:
49
+ - **macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json`
50
+ - **Windows**: `%APPDATA%\Claude\claude_desktop_config.json`
37
51
 
38
52
  ```json
39
53
  {
40
54
  "mcpServers": {
41
55
  "promptarchitect": {
42
56
  "command": "npx",
43
- "args": ["@promptarchitect/mcp-server"],
44
- "env": {
45
- "GEMINI_API_KEY": "your-api-key-here"
46
- }
57
+ "args": ["@merabylabs/promptarchitect-mcp"]
47
58
  }
48
59
  }
49
60
  }
50
61
  ```
51
62
 
52
- ### With VS Code (Copilot)
63
+ ---
64
+
65
+ ### VS Code (GitHub Copilot)
53
66
 
54
- Add to your VS Code settings:
67
+ Add to your VS Code `settings.json` (Cmd/Ctrl+Shift+P → "Preferences: Open Settings (JSON)"):
55
68
 
56
69
  ```json
57
70
  {
58
71
  "github.copilot.chat.mcp.servers": {
59
72
  "promptarchitect": {
60
73
  "command": "npx",
61
- "args": ["@promptarchitect/mcp-server"],
62
- "env": {
63
- "GEMINI_API_KEY": "your-api-key-here"
74
+ "args": ["@merabylabs/promptarchitect-mcp"]
75
+ }
76
+ }
77
+ }
78
+ ```
79
+
80
+ ---
81
+
82
+ ### Cursor
83
+
84
+ Add to your Cursor MCP settings:
85
+ - **macOS/Linux**: `~/.cursor/mcp.json`
86
+ - **Windows**: `%USERPROFILE%\.cursor\mcp.json`
87
+ - Or via: Settings → MCP
88
+
89
+ ```json
90
+ {
91
+ "mcpServers": {
92
+ "promptarchitect": {
93
+ "command": "npx",
94
+ "args": ["@merabylabs/promptarchitect-mcp"]
95
+ }
96
+ }
97
+ }
98
+ ```
99
+
100
+ 📖 [Cursor MCP Documentation](https://docs.cursor.com/advanced/model-context-protocol)
101
+
102
+ ---
103
+
104
+ ### Windsurf (Codeium)
105
+
106
+ Add to your Windsurf MCP configuration:
107
+ - **macOS/Linux**: `~/.codeium/windsurf/mcp_config.json`
108
+ - **Windows**: `%USERPROFILE%\.codeium\windsurf\mcp_config.json`
109
+
110
+ ```json
111
+ {
112
+ "mcpServers": {
113
+ "promptarchitect": {
114
+ "command": "npx",
115
+ "args": ["@merabylabs/promptarchitect-mcp"]
116
+ }
117
+ }
118
+ }
119
+ ```
120
+
121
+ 📖 [Windsurf MCP Documentation](https://docs.codeium.com/windsurf/mcp)
122
+
123
+ ---
124
+
125
+ ### Zed
126
+
127
+ Add to your Zed settings:
128
+ - **macOS**: `~/.config/zed/settings.json`
129
+ - **Linux**: `~/.config/zed/settings.json`
130
+
131
+ ```json
132
+ {
133
+ "context_servers": {
134
+ "promptarchitect": {
135
+ "command": {
136
+ "path": "npx",
137
+ "args": ["@merabylabs/promptarchitect-mcp"]
138
+ },
139
+ "settings": {}
140
+ }
141
+ }
142
+ }
143
+ ```
144
+
145
+ 📖 [Zed MCP Documentation](https://zed.dev/docs/assistant/model-context-protocol)
146
+
147
+ ---
148
+
149
+ ### JetBrains IDEs
150
+
151
+ Works with **IntelliJ IDEA, PyCharm, WebStorm, PhpStorm, GoLand, RubyMine, CLion, DataGrip, Rider, Android Studio**.
152
+
153
+ 1. Install the **MCP Client** plugin from JetBrains Marketplace
154
+ 2. Go to Settings → Tools → MCP Servers
155
+ 3. Add a new server with this configuration:
156
+
157
+ ```json
158
+ {
159
+ "mcpServers": {
160
+ "promptarchitect": {
161
+ "command": "npx",
162
+ "args": ["@merabylabs/promptarchitect-mcp"]
163
+ }
164
+ }
165
+ }
166
+ ```
167
+
168
+ Or add to `.idea/mcp.json` in your project.
169
+
170
+ 📖 [JetBrains MCP Plugin](https://plugins.jetbrains.com/plugin/mcp-client)
171
+
172
+ ---
173
+
174
+ ### Continue.dev
175
+
176
+ Add to your Continue configuration:
177
+ - **Global**: `~/.continue/config.json`
178
+ - **Project**: `.continue/config.json`
179
+
180
+ ```json
181
+ {
182
+ "experimental": {
183
+ "modelContextProtocolServers": [
184
+ {
185
+ "transport": {
186
+ "type": "stdio",
187
+ "command": "npx",
188
+ "args": ["@merabylabs/promptarchitect-mcp"]
189
+ }
64
190
  }
191
+ ]
192
+ }
193
+ }
194
+ ```
195
+
196
+ 📖 [Continue MCP Documentation](https://docs.continue.dev/customize/model-context-protocol)
197
+
198
+ ---
199
+
200
+ ### Cline (VS Code Extension)
201
+
202
+ Open Cline Settings → MCP Servers, or edit `cline_mcp_settings.json`:
203
+
204
+ ```json
205
+ {
206
+ "mcpServers": {
207
+ "promptarchitect": {
208
+ "command": "npx",
209
+ "args": ["@merabylabs/promptarchitect-mcp"],
210
+ "disabled": false
65
211
  }
66
212
  }
67
213
  }
68
214
  ```
69
215
 
216
+ 📖 [Cline MCP Documentation](https://github.com/cline/cline#mcp-support)
217
+
218
+ ---
219
+
220
+ ### Other MCP-Compatible Applications
221
+
222
+ Any application supporting MCP can use this server. The standard configuration is:
223
+
224
+ | Property | Value |
225
+ |----------|-------|
226
+ | Command | `npx` |
227
+ | Args | `["@merabylabs/promptarchitect-mcp"]` |
228
+ | Environment | `GEMINI_API_KEY` (optional) |
229
+
230
+ For global installation, use `promptarchitect-mcp` as the command after running:
231
+ ```bash
232
+ npm install -g @merabylabs/promptarchitect-mcp
233
+ ```
234
+
235
+ ---
236
+
70
237
  ### Programmatic Usage
71
238
 
72
239
  ```typescript
@@ -95,9 +262,32 @@ console.log(analysis.suggestions); // ["Be more specific about...", ...]
95
262
 
96
263
  | Variable | Required | Description |
97
264
  |----------|----------|-------------|
98
- | `GEMINI_API_KEY` | No | Google Gemini API key for AI-powered refinement. Falls back to rule-based refinement if not provided. |
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`. |
99
269
  | `LOG_LEVEL` | No | Logging level: `debug`, `info`, `warn`, `error`. Default: `info` |
100
270
 
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
+
101
291
  ## Tool Reference
102
292
 
103
293
  ### refine_prompt
@@ -228,3 +418,4 @@ MIT
228
418
  - [PromptArchitect](https://github.com/promptarchitect) - Full web application
229
419
  - [Model Context Protocol](https://modelcontextprotocol.io) - MCP specification
230
420
  - [MCP TypeScript SDK](https://github.com/modelcontextprotocol/typescript-sdk) - SDK used by this server
421
+
@@ -1,6 +1,11 @@
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
9
  */
5
10
  import { z } from 'zod';
6
11
  export declare const analyzePromptSchema: z.ZodObject<{
@@ -1 +1 @@
1
- {"version":3,"file":"analyzePrompt.d.ts","sourceRoot":"","sources":["../../src/tools/analyzePrompt.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,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,CAyCtF;AA6JD,eAAe,aAAa,CAAC"}
1
+ {"version":3,"file":"analyzePrompt.d.ts","sourceRoot":"","sources":["../../src/tools/analyzePrompt.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAYxB,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,CA4EtF;AA6JD,eAAe,aAAa,CAAC"}
@@ -1,9 +1,16 @@
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
9
  */
5
10
  import { z } from 'zod';
6
- import { analyzePromptQuality, isGeminiAvailable, logger } from '../utils/index.js';
11
+ import { analyzePromptQuality, isGeminiAvailable, logger, apiAnalyzePrompt, isApiClientAvailable, } from '../utils/index.js';
12
+ // Check if user explicitly wants direct Gemini (bypasses billing)
13
+ const USE_DIRECT_GEMINI = process.env.USE_DIRECT_GEMINI === 'true';
7
14
  export const analyzePromptSchema = z.object({
8
15
  prompt: z.string().min(1).describe('The prompt to analyze'),
9
16
  evaluationCriteria: z.array(z.string()).optional().describe('Specific criteria to evaluate'),
@@ -20,14 +27,45 @@ export async function analyzePrompt(input) {
20
27
  promptLength: prompt.length,
21
28
  criteria: evaluationCriteria
22
29
  });
23
- // Calculate structural metadata
30
+ // Calculate structural metadata (always needed)
24
31
  const metadata = calculateMetadata(prompt);
32
+ // Priority 1: Use PromptArchitect API for billing tracking (default)
33
+ if (isApiClientAvailable() && !USE_DIRECT_GEMINI) {
34
+ try {
35
+ const response = await apiAnalyzePrompt({
36
+ prompt,
37
+ evaluationCriteria,
38
+ });
39
+ logger.info('Analyzed via PromptArchitect API (billing tracked)');
40
+ return {
41
+ scores: {
42
+ overall: response.overallScore,
43
+ clarity: response.scores.clarity,
44
+ specificity: response.scores.specificity,
45
+ structure: response.scores.structure,
46
+ actionability: response.scores.actionability,
47
+ },
48
+ suggestions: response.suggestions || [],
49
+ strengths: response.strengths || identifyStrengths(prompt, metadata),
50
+ weaknesses: response.weaknesses || identifyWeaknesses(prompt, metadata),
51
+ metadata,
52
+ };
53
+ }
54
+ catch (error) {
55
+ logger.warn('API request failed, trying fallback', {
56
+ error: error instanceof Error ? error.message : 'Unknown error'
57
+ });
58
+ // Fall through to other options
59
+ }
60
+ }
61
+ // Priority 2: Direct Gemini API (if explicitly enabled or API failed)
25
62
  if (isGeminiAvailable()) {
26
63
  try {
27
64
  const quality = await analyzePromptQuality(prompt);
28
65
  // Calculate overall score from individual scores
29
66
  const overallScore = Math.round((quality.scores.clarity + quality.scores.specificity +
30
67
  quality.scores.actionability + quality.scores.completeness) / 4 * 10);
68
+ logger.info('Analyzed via direct Gemini API (billing NOT tracked)');
31
69
  return {
32
70
  scores: {
33
71
  overall: overallScore,
@@ -43,10 +81,11 @@ export async function analyzePrompt(input) {
43
81
  };
44
82
  }
45
83
  catch (error) {
46
- logger.warn('LLM analysis failed, using rule-based fallback', { error });
84
+ logger.warn('Direct Gemini analysis failed, using rule-based fallback', { error });
47
85
  }
48
86
  }
49
- // Fallback: Rule-based analysis
87
+ // Priority 3: Fallback rule-based analysis
88
+ logger.warn('Using fallback rule-based analysis (no API available)');
50
89
  return performRuleBasedAnalysis(prompt, metadata);
51
90
  }
52
91
  function calculateMetadata(prompt) {
@@ -1 +1 @@
1
- {"version":3,"file":"analyzePrompt.js","sourceRoot":"","sources":["../../src/tools/analyzePrompt.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAEpF,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,gCAAgC;IAChC,MAAM,QAAQ,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAE3C,IAAI,iBAAiB,EAAE,EAAE,CAAC;QACxB,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,oBAAoB,CAAC,MAAM,CAAC,CAAC;YAEnD,iDAAiD;YACjD,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAC7B,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,WAAW;gBACnD,OAAO,CAAC,MAAM,CAAC,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,CACtE,CAAC;YAEF,OAAO;gBACL,MAAM,EAAE;oBACN,OAAO,EAAE,YAAY;oBACrB,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,OAAO,GAAG,EAAE;oBACpC,WAAW,EAAE,OAAO,CAAC,MAAM,CAAC,WAAW,GAAG,EAAE;oBAC5C,SAAS,EAAE,gBAAgB,CAAC,MAAM,EAAE,WAAW,EAAE,YAAY,CAAC;oBAC9D,aAAa,EAAE,OAAO,CAAC,MAAM,CAAC,aAAa,GAAG,EAAE;iBACjD;gBACD,WAAW,EAAE,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;gBAC5C,SAAS,EAAE,iBAAiB,CAAC,MAAM,EAAE,QAAQ,CAAC;gBAC9C,UAAU,EAAE,kBAAkB,CAAC,MAAM,EAAE,QAAQ,CAAC;gBAChD,QAAQ;aACT,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,IAAI,CAAC,gDAAgD,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QAC3E,CAAC;IACH,CAAC;IAED,gCAAgC;IAChC,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,gBAAgB,CAAC,MAAc,EAAE,SAAiB,EAAE,SAAiB;IAC5E,2DAA2D;IAC3D,IAAI,UAAU,GAAG,CAAC,CAAC;IAEnB,QAAQ,SAAS,EAAE,CAAC;QAClB,KAAK,SAAS;YACZ,8BAA8B;YAC9B,MAAM,iBAAiB,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC;YAC/E,UAAU,GAAG,iBAAiB,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,iBAAiB,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YAC7E,MAAM;QAER,KAAK,aAAa;YAChB,sCAAsC;YACtC,MAAM,kBAAkB,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,gDAAgD,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;YACzG,MAAM,eAAe,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,4CAA4C,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;YAClG,UAAU,GAAG,kBAAkB,GAAG,CAAC,GAAG,eAAe,GAAG,CAAC,CAAC;YAC1D,MAAM;QAER,KAAK,WAAW;YACd,2BAA2B;YAC3B,MAAM,UAAU,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACzC,MAAM,OAAO,GAAG,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC7C,UAAU,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACvD,MAAM;QAER,KAAK,eAAe;YAClB,+BAA+B;YAC/B,MAAM,aAAa,GAAG,sEAAsE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC1G,UAAU,GAAG,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACrC,MAAM;IACV,CAAC;IAED,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,SAAS,GAAG,UAAU,CAAC,CAAC,CAAC;AAC5D,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"}
1
+ {"version":3,"file":"analyzePrompt.js","sourceRoot":"","sources":["../../src/tools/analyzePrompt.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,11 @@
1
1
  /**
2
2
  * Generate Prompt Tool
3
3
  * Transforms user ideas into well-structured prompts
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 template generation (no API available)
4
9
  */
5
10
  import { z } from 'zod';
6
11
  export declare const generatePromptSchema: z.ZodObject<{
@@ -9,15 +14,15 @@ export declare const generatePromptSchema: z.ZodObject<{
9
14
  context: z.ZodOptional<z.ZodString>;
10
15
  targetModel: z.ZodDefault<z.ZodOptional<z.ZodEnum<["gpt-4", "claude", "gemini", "general"]>>>;
11
16
  }, "strip", z.ZodTypeAny, {
17
+ template: "general" | "coding" | "writing" | "research" | "analysis" | "factcheck";
12
18
  idea: string;
13
- template: "coding" | "writing" | "research" | "analysis" | "factcheck" | "general";
14
- targetModel: "general" | "gpt-4" | "claude" | "gemini";
19
+ targetModel: "general" | "gemini" | "gpt-4" | "claude";
15
20
  context?: string | undefined;
16
21
  }, {
17
22
  idea: string;
18
- template?: "coding" | "writing" | "research" | "analysis" | "factcheck" | "general" | undefined;
23
+ template?: "general" | "coding" | "writing" | "research" | "analysis" | "factcheck" | undefined;
19
24
  context?: string | undefined;
20
- targetModel?: "general" | "gpt-4" | "claude" | "gemini" | undefined;
25
+ targetModel?: "general" | "gemini" | "gpt-4" | "claude" | undefined;
21
26
  }>;
22
27
  export type GeneratePromptInput = z.infer<typeof generatePromptSchema>;
23
28
  export declare function generatePrompt(input: GeneratePromptInput): Promise<{
@@ -1 +1 @@
1
- {"version":3,"file":"generatePrompt.d.ts","sourceRoot":"","sources":["../../src/tools/generatePrompt.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;EAW/B,CAAC;AAEH,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAyDvE,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,CAyCD;AA0BD,eAAe,cAAc,CAAC"}
1
+ {"version":3,"file":"generatePrompt.d.ts","sourceRoot":"","sources":["../../src/tools/generatePrompt.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAYxB,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;EAW/B,CAAC;AAEH,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAyDvE,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,CAgED;AA0BD,eAAe,cAAc,CAAC"}
@@ -1,9 +1,16 @@
1
1
  /**
2
2
  * Generate Prompt Tool
3
3
  * Transforms user ideas into well-structured prompts
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 template generation (no API available)
4
9
  */
5
10
  import { z } from 'zod';
6
- import { generateContent, isGeminiAvailable, logger } from '../utils/index.js';
11
+ import { generateContent, isGeminiAvailable, logger, apiGeneratePrompt, isApiClientAvailable, } from '../utils/index.js';
12
+ // Check if user explicitly wants direct Gemini (bypasses billing)
13
+ const USE_DIRECT_GEMINI = process.env.USE_DIRECT_GEMINI === 'true';
7
14
  export const generatePromptSchema = z.object({
8
15
  idea: z.string().min(1).describe('The user\'s raw prompt idea or concept'),
9
16
  template: z.enum(['coding', 'writing', 'research', 'analysis', 'factcheck', 'general'])
@@ -68,23 +75,44 @@ Request: `,
68
75
  export async function generatePrompt(input) {
69
76
  const { idea, template = 'general', context, targetModel } = input;
70
77
  logger.info('Generating prompt', { template, targetModel, ideaLength: idea.length });
71
- // Build the generation request
72
- const templatePrefix = TEMPLATE_PREFIXES[template] || TEMPLATE_PREFIXES.general;
73
- let fullRequest = templatePrefix + idea;
74
- if (context) {
75
- fullRequest += `\n\nAdditional context: ${context}`;
78
+ let generatedPrompt = '';
79
+ // Priority 1: Use PromptArchitect API for billing tracking (default)
80
+ if (isApiClientAvailable() && !USE_DIRECT_GEMINI) {
81
+ try {
82
+ const response = await apiGeneratePrompt({
83
+ idea,
84
+ template,
85
+ context,
86
+ targetModel,
87
+ });
88
+ generatedPrompt = response.prompt;
89
+ logger.info('Generated via PromptArchitect API (billing tracked)');
90
+ }
91
+ catch (error) {
92
+ logger.warn('API request failed, trying fallback', {
93
+ error: error instanceof Error ? error.message : 'Unknown error'
94
+ });
95
+ // Fall through to other options
96
+ generatedPrompt = '';
97
+ }
76
98
  }
77
- if (targetModel && targetModel !== 'general') {
78
- fullRequest += `\n\nOptimize this prompt specifically for ${targetModel}.`;
79
- }
80
- let generatedPrompt;
81
- if (isGeminiAvailable()) {
99
+ // Priority 2: Direct Gemini API (if explicitly enabled or API failed)
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
+ }
82
109
  generatedPrompt = await generateContent(fullRequest);
110
+ logger.info('Generated via direct Gemini API (billing NOT tracked)');
83
111
  }
84
- else {
85
- // Fallback: Return a structured template without AI
112
+ // Priority 3: Fallback template generation
113
+ if (!generatedPrompt) {
86
114
  generatedPrompt = createFallbackPrompt(idea, template, context);
87
- logger.warn('Using fallback prompt generation (Gemini unavailable)');
115
+ logger.warn('Using fallback prompt generation (no API available)');
88
116
  }
89
117
  // Calculate metadata
90
118
  const wordCount = generatedPrompt.split(/\s+/).length;
@@ -1 +1 @@
1
- {"version":3,"file":"generatePrompt.js","sourceRoot":"","sources":["../../src/tools/generatePrompt.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generatePrompt.js","sourceRoot":"","sources":["../../src/tools/generatePrompt.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,11 @@
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
9
  */
5
10
  import { z } from 'zod';
6
11
  export declare const refinePromptSchema: z.ZodObject<{
@@ -9,14 +14,14 @@ export declare const refinePromptSchema: z.ZodObject<{
9
14
  preserveStructure: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
10
15
  targetModel: z.ZodDefault<z.ZodOptional<z.ZodEnum<["gpt-4", "claude", "gemini", "general"]>>>;
11
16
  }, "strip", z.ZodTypeAny, {
12
- targetModel: "general" | "gpt-4" | "claude" | "gemini";
17
+ targetModel: "general" | "gemini" | "gpt-4" | "claude";
13
18
  prompt: string;
14
19
  feedback: string;
15
20
  preserveStructure: boolean;
16
21
  }, {
17
22
  prompt: string;
18
23
  feedback: string;
19
- targetModel?: "general" | "gpt-4" | "claude" | "gemini" | undefined;
24
+ targetModel?: "general" | "gemini" | "gpt-4" | "claude" | undefined;
20
25
  preserveStructure?: boolean | undefined;
21
26
  }>;
22
27
  export type RefinePromptInput = z.infer<typeof refinePromptSchema>;
@@ -1 +1 @@
1
- {"version":3,"file":"refinePrompt.d.ts","sourceRoot":"","sources":["../../src/tools/refinePrompt.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,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,CAyED;AA6BD,eAAe,YAAY,CAAC"}
1
+ {"version":3,"file":"refinePrompt.d.ts","sourceRoot":"","sources":["../../src/tools/refinePrompt.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAYxB,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,CAiGD;AA6BD,eAAe,YAAY,CAAC"}
@@ -1,9 +1,16 @@
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
9
  */
5
10
  import { z } from 'zod';
6
- import { generateContent, isGeminiAvailable, logger } from '../utils/index.js';
11
+ import { generateContent, isGeminiAvailable, logger, apiRefinePrompt, isApiClientAvailable, } from '../utils/index.js';
12
+ // Check if user explicitly wants direct Gemini (bypasses billing)
13
+ const USE_DIRECT_GEMINI = process.env.USE_DIRECT_GEMINI === 'true';
7
14
  export const refinePromptSchema = z.object({
8
15
  prompt: z.string().min(1).describe('The current prompt to refine'),
9
16
  feedback: z.string().min(1).describe('What should be improved or changed'),
@@ -21,7 +28,31 @@ export async function refinePrompt(input) {
21
28
  preserveStructure,
22
29
  targetModel
23
30
  });
24
- const refinementRequest = `You are a prompt engineering expert. Refine the following prompt based on the given feedback.
31
+ let refinedPrompt = '';
32
+ let changes = [];
33
+ // Priority 1: Use PromptArchitect API for billing tracking (default)
34
+ if (isApiClientAvailable() && !USE_DIRECT_GEMINI) {
35
+ try {
36
+ const response = await apiRefinePrompt({
37
+ prompt,
38
+ feedback,
39
+ preserveStructure,
40
+ targetModel,
41
+ });
42
+ refinedPrompt = response.refinedPrompt;
43
+ changes = response.changes || ['Prompt refined based on feedback'];
44
+ logger.info('Refined via PromptArchitect API (billing tracked)');
45
+ }
46
+ catch (error) {
47
+ logger.warn('API request failed, trying fallback', {
48
+ error: error instanceof Error ? error.message : 'Unknown error'
49
+ });
50
+ // Fall through to other options
51
+ }
52
+ }
53
+ // Priority 2: Direct Gemini API (if explicitly enabled or API failed)
54
+ if (!refinedPrompt && isGeminiAvailable()) {
55
+ const refinementRequest = `You are a prompt engineering expert. Refine the following prompt based on the given feedback.
25
56
 
26
57
  ## Original Prompt
27
58
  ${prompt}
@@ -42,9 +73,6 @@ Then, list 2-4 specific changes you made in a "Changes:" section.
42
73
 
43
74
  ---
44
75
  REFINED PROMPT:`;
45
- let refinedPrompt;
46
- let changes = [];
47
- if (isGeminiAvailable()) {
48
76
  const response = await generateContent(refinementRequest);
49
77
  // Parse response to extract prompt and changes
50
78
  const changesMatch = response.match(/Changes?:?\s*([\s\S]*?)$/i);
@@ -59,12 +87,13 @@ REFINED PROMPT:`;
59
87
  refinedPrompt = response.trim();
60
88
  changes = ['Prompt refined based on feedback'];
61
89
  }
90
+ logger.info('Refined via direct Gemini API (billing NOT tracked)');
62
91
  }
63
- else {
64
- // Fallback: Apply basic transformations
92
+ // Priority 3: Fallback basic refinement
93
+ if (!refinedPrompt) {
65
94
  refinedPrompt = applyBasicRefinements(prompt, feedback);
66
- changes = ['Applied basic refinements (AI unavailable)'];
67
- logger.warn('Using fallback refinement (Gemini unavailable)');
95
+ changes = ['Applied basic refinements (no API available)'];
96
+ logger.warn('Using fallback refinement (no API available)');
68
97
  }
69
98
  // Calculate metadata
70
99
  const originalWordCount = prompt.split(/\s+/).length;
@@ -1 +1 @@
1
- {"version":3,"file":"refinePrompt.js","sourceRoot":"","sources":["../../src/tools/refinePrompt.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"refinePrompt.js","sourceRoot":"","sources":["../../src/tools/refinePrompt.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,83 @@
1
+ /**
2
+ * PromptArchitect API Client
3
+ *
4
+ * Routes requests through the PromptArchitect backend for:
5
+ * - Proper billing and credit tracking
6
+ * - Usage analytics
7
+ * - Consistent model access across all clients
8
+ *
9
+ * Environment Variables:
10
+ * - PROMPTARCHITECT_API_URL: Backend API URL (default: production)
11
+ * - PROMPTARCHITECT_API_KEY: Optional API key for authenticated requests
12
+ */
13
+ /**
14
+ * Initialize the API client
15
+ */
16
+ export declare function initializeApiClient(options?: {
17
+ apiUrl?: string;
18
+ apiKey?: string;
19
+ }): void;
20
+ /**
21
+ * Check if API client is configured
22
+ */
23
+ export declare function isApiClientAvailable(): boolean;
24
+ /**
25
+ * Get the configured API URL
26
+ */
27
+ export declare function getApiUrl(): string;
28
+ interface GenerateResponse {
29
+ prompt: string;
30
+ template?: string;
31
+ metadata?: {
32
+ wordCount: number;
33
+ targetModel?: string;
34
+ };
35
+ }
36
+ interface RefineResponse {
37
+ refinedPrompt: string;
38
+ changes: string[];
39
+ metadata?: {
40
+ originalWordCount: number;
41
+ refinedWordCount: number;
42
+ structurePreserved: boolean;
43
+ };
44
+ }
45
+ interface AnalyzeResponse {
46
+ overallScore: number;
47
+ scores: {
48
+ clarity: number;
49
+ specificity: number;
50
+ structure: number;
51
+ actionability: number;
52
+ };
53
+ strengths: string[];
54
+ weaknesses: string[];
55
+ suggestions: string[];
56
+ }
57
+ /**
58
+ * Generate a prompt using the backend API
59
+ */
60
+ export declare function apiGeneratePrompt(params: {
61
+ idea: string;
62
+ template?: string;
63
+ context?: string;
64
+ targetModel?: string;
65
+ }): Promise<GenerateResponse>;
66
+ /**
67
+ * Refine a prompt using the backend API
68
+ */
69
+ export declare function apiRefinePrompt(params: {
70
+ prompt: string;
71
+ feedback: string;
72
+ preserveStructure?: boolean;
73
+ targetModel?: string;
74
+ }): Promise<RefineResponse>;
75
+ /**
76
+ * Analyze a prompt using the backend API
77
+ */
78
+ export declare function apiAnalyzePrompt(params: {
79
+ prompt: string;
80
+ evaluationCriteria?: string[];
81
+ }): Promise<AnalyzeResponse>;
82
+ export {};
83
+ //# sourceMappingURL=apiClient.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apiClient.d.ts","sourceRoot":"","sources":["../../src/utils/apiClient.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AASH;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAQxF;AAED;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,OAAO,CAE9C;AAED;;GAEG;AACH,wBAAgB,SAAS,IAAI,MAAM,CAElC;AAED,UAAU,gBAAgB;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE;QACT,SAAS,EAAE,MAAM,CAAC;QAClB,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC;CACH;AAED,UAAU,cAAc;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,CAAC,EAAE;QACT,iBAAiB,EAAE,MAAM,CAAC;QAC1B,gBAAgB,EAAE,MAAM,CAAC;QACzB,kBAAkB,EAAE,OAAO,CAAC;KAC7B,CAAC;CACH;AAED,UAAU,eAAe;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE;QACN,OAAO,EAAE,MAAM,CAAC;QAChB,WAAW,EAAE,MAAM,CAAC;QACpB,SAAS,EAAE,MAAM,CAAC;QAClB,aAAa,EAAE,MAAM,CAAC;KACvB,CAAC;IACF,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAuCD;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,MAAM,EAAE;IAC9C,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAc5B;AAED;;GAEG;AACH,wBAAsB,eAAe,CAAC,MAAM,EAAE;IAC5C,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,GAAG,OAAO,CAAC,cAAc,CAAC,CAc1B;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,MAAM,EAAE;IAC7C,MAAM,EAAE,MAAM,CAAC;IACf,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC/B,GAAG,OAAO,CAAC,eAAe,CAAC,CAW3B"}
@@ -0,0 +1,117 @@
1
+ /**
2
+ * PromptArchitect API Client
3
+ *
4
+ * Routes requests through the PromptArchitect backend for:
5
+ * - Proper billing and credit tracking
6
+ * - Usage analytics
7
+ * - Consistent model access across all clients
8
+ *
9
+ * Environment Variables:
10
+ * - PROMPTARCHITECT_API_URL: Backend API URL (default: production)
11
+ * - PROMPTARCHITECT_API_KEY: Optional API key for authenticated requests
12
+ */
13
+ import { logger } from './logger.js';
14
+ const DEFAULT_API_URL = 'https://us-central1-prompt-architect-3df7a.cloudfunctions.net/api';
15
+ let apiUrl = DEFAULT_API_URL;
16
+ let apiKey = null;
17
+ /**
18
+ * Initialize the API client
19
+ */
20
+ export function initializeApiClient(options) {
21
+ apiUrl = options?.apiUrl || process.env.PROMPTARCHITECT_API_URL || DEFAULT_API_URL;
22
+ apiKey = options?.apiKey || process.env.PROMPTARCHITECT_API_KEY || null;
23
+ logger.info('API client initialized', {
24
+ apiUrl: apiUrl.replace(/^(https?:\/\/[^\/]+).*/, '$1/...'),
25
+ hasApiKey: !!apiKey
26
+ });
27
+ }
28
+ /**
29
+ * Check if API client is configured
30
+ */
31
+ export function isApiClientAvailable() {
32
+ return !!apiUrl;
33
+ }
34
+ /**
35
+ * Get the configured API URL
36
+ */
37
+ export function getApiUrl() {
38
+ return apiUrl;
39
+ }
40
+ /**
41
+ * Make authenticated API request
42
+ */
43
+ async function apiRequest(endpoint, body) {
44
+ const url = `${apiUrl}/vscode${endpoint}`;
45
+ const headers = {
46
+ 'Content-Type': 'application/json',
47
+ 'X-Client': 'mcp-server',
48
+ 'X-Client-Version': '0.1.0',
49
+ };
50
+ if (apiKey) {
51
+ headers['Authorization'] = `Bearer ${apiKey}`;
52
+ }
53
+ logger.debug('API request', { endpoint, bodyKeys: Object.keys(body) });
54
+ const response = await fetch(url, {
55
+ method: 'POST',
56
+ headers,
57
+ body: JSON.stringify(body),
58
+ });
59
+ if (!response.ok) {
60
+ const errorText = await response.text();
61
+ logger.error('API request failed', {
62
+ endpoint,
63
+ status: response.status,
64
+ error: errorText.slice(0, 200)
65
+ });
66
+ throw new Error(`API request failed: ${response.status} ${response.statusText}`);
67
+ }
68
+ return response.json();
69
+ }
70
+ /**
71
+ * Generate a prompt using the backend API
72
+ */
73
+ export async function apiGeneratePrompt(params) {
74
+ logger.info('Generating prompt via API', {
75
+ template: params.template,
76
+ ideaLength: params.idea.length
77
+ });
78
+ const response = await apiRequest('/generate', {
79
+ idea: params.idea,
80
+ template: params.template || 'general',
81
+ context: params.context,
82
+ targetModel: params.targetModel || 'gemini',
83
+ });
84
+ return response;
85
+ }
86
+ /**
87
+ * Refine a prompt using the backend API
88
+ */
89
+ export async function apiRefinePrompt(params) {
90
+ logger.info('Refining prompt via API', {
91
+ promptLength: params.prompt.length,
92
+ feedbackLength: params.feedback.length
93
+ });
94
+ const response = await apiRequest('/refine', {
95
+ prompt: params.prompt,
96
+ feedback: params.feedback,
97
+ preserveStructure: params.preserveStructure ?? true,
98
+ targetModel: params.targetModel || 'gemini',
99
+ });
100
+ return response;
101
+ }
102
+ /**
103
+ * Analyze a prompt using the backend API
104
+ */
105
+ export async function apiAnalyzePrompt(params) {
106
+ logger.info('Analyzing prompt via API', {
107
+ promptLength: params.prompt.length
108
+ });
109
+ const response = await apiRequest('/analyze', {
110
+ prompt: params.prompt,
111
+ evaluationCriteria: params.evaluationCriteria,
112
+ });
113
+ return response;
114
+ }
115
+ // Auto-initialize on module load
116
+ initializeApiClient();
117
+ //# sourceMappingURL=apiClient.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apiClient.js","sourceRoot":"","sources":["../../src/utils/apiClient.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
1
  export { logger, setLogLevel, type LogLevel } from './logger.js';
2
2
  export { initializeGemini, isGeminiAvailable, generateContent, analyzePromptQuality, getStats, } from './gemini.js';
3
+ export { initializeApiClient, isApiClientAvailable, getApiUrl, apiGeneratePrompt, apiRefinePrompt, apiAnalyzePrompt, } from './apiClient.js';
3
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,QAAQ,EAAE,MAAM,aAAa,CAAC;AACjE,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,eAAe,EACf,oBAAoB,EACpB,QAAQ,GACT,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,QAAQ,EAAE,MAAM,aAAa,CAAC;AACjE,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,eAAe,EACf,oBAAoB,EACpB,QAAQ,GACT,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,mBAAmB,EACnB,oBAAoB,EACpB,SAAS,EACT,iBAAiB,EACjB,eAAe,EACf,gBAAgB,GACjB,MAAM,gBAAgB,CAAC"}
@@ -1,3 +1,4 @@
1
1
  export { logger, setLogLevel } from './logger.js';
2
2
  export { initializeGemini, isGeminiAvailable, generateContent, analyzePromptQuality, getStats, } from './gemini.js';
3
+ export { initializeApiClient, isApiClientAvailable, getApiUrl, apiGeneratePrompt, apiRefinePrompt, apiAnalyzePrompt, } from './apiClient.js';
3
4
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,WAAW,EAAiB,MAAM,aAAa,CAAC;AACjE,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,eAAe,EACf,oBAAoB,EACpB,QAAQ,GACT,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,WAAW,EAAiB,MAAM,aAAa,CAAC;AACjE,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,eAAe,EACf,oBAAoB,EACpB,QAAQ,GACT,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,mBAAmB,EACnB,oBAAoB,EACpB,SAAS,EACT,iBAAiB,EACjB,eAAe,EACf,gBAAgB,GACjB,MAAM,gBAAgB,CAAC"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@merabylabs/promptarchitect-mcp",
3
- "version": "0.1.0",
4
- "description": "MCP (Model Context Protocol) server for PromptArchitect - AI-powered prompt engineering tools",
3
+ "version": "0.1.1",
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",
7
7
  "model-context-protocol",
@@ -9,8 +9,21 @@
9
9
  "ai",
10
10
  "llm",
11
11
  "claude",
12
+ "cursor",
13
+ "copilot",
14
+ "vscode",
15
+ "windsurf",
16
+ "codeium",
17
+ "zed",
18
+ "jetbrains",
19
+ "continue",
20
+ "cline",
12
21
  "gemini",
13
- "prompt-generation"
22
+ "prompt-generation",
23
+ "prompt-refinement",
24
+ "ai-assistant",
25
+ "developer-tools",
26
+ "code-assistant"
14
27
  ],
15
28
  "author": "PromptArchitect Team",
16
29
  "license": "MIT",