@ratio-mcp/setup 1.4.0 → 1.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../src/setup.ts"],"names":[],"mappings":"AA+JA,wBAAgB,GAAG,IAAI,IAAI,CAiC1B"}
1
+ {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../src/setup.ts"],"names":[],"mappings":"AA8VA,wBAAgB,GAAG,IAAI,IAAI,CAiD1B"}
package/dist/setup.js CHANGED
@@ -29,25 +29,25 @@ function buildEnvPath(npxFullPath) {
29
29
  function getMcpServerEntries() {
30
30
  const npxPath = resolveNpxPath();
31
31
  const isAbsolute = path.isAbsolute(npxPath);
32
- const entry = {
33
- command: npxPath,
34
- args: ['-y', '@ratio-mcp/dev-server@latest'],
32
+ const makeEntry = (pkg) => {
33
+ const entry = {
34
+ command: npxPath,
35
+ args: ['-y', `${pkg}@latest`],
36
+ };
37
+ if (isAbsolute) {
38
+ entry.env = { PATH: buildEnvPath(npxPath) };
39
+ }
40
+ return entry;
35
41
  };
36
- // Only add env.PATH when we have an absolute npx path (needed for Claude Desktop)
37
- if (isAbsolute) {
38
- entry.env = { PATH: buildEnvPath(npxPath) };
39
- }
40
42
  return {
41
- 'ratio-dev': entry,
43
+ 'ratio-mcp-dev': makeEntry('@ratio-mcp/dev-server'),
44
+ 'ratio-mcp-doc': makeEntry('@ratio-mcp/docs-server'),
42
45
  };
43
46
  }
44
- function getConfigPaths() {
47
+ function getDesktopConfigPaths() {
45
48
  const home = os.homedir();
46
49
  const platform = process.platform;
47
- const paths = [
48
- // Claude Code (all platforms)
49
- path.join(home, '.claude', 'claude_desktop_config.json'),
50
- ];
50
+ const paths = [];
51
51
  // Claude Desktop (platform-specific)
52
52
  if (platform === 'darwin') {
53
53
  paths.push(path.join(home, 'Library', 'Application Support', 'Claude', 'claude_desktop_config.json'));
@@ -62,6 +62,200 @@ function getConfigPaths() {
62
62
  }
63
63
  return paths;
64
64
  }
65
+ /**
66
+ * Get the Claude Code CLI config path (~/.claude.json).
67
+ * This is a separate file from Desktop — CLI doesn't read Desktop's config.
68
+ */
69
+ function getCliConfigPath() {
70
+ return path.join(os.homedir(), '.claude.json');
71
+ }
72
+ /**
73
+ * Get the path to the Ratio skill's SKILL.md file.
74
+ * Claude Code CLI auto-loads skills from ~/.claude/skills/<name>/SKILL.md.
75
+ * Verified Desktop does NOT read from here (tested empirically).
76
+ */
77
+ function getSkillPath() {
78
+ return path.join(os.homedir(), '.claude', 'skills', 'ratio-agent-builder', 'SKILL.md');
79
+ }
80
+ /**
81
+ * The content of the ratio-agent-builder skill.
82
+ * Installed into ~/.claude/skills/ so Claude Code CLI auto-loads it.
83
+ * Claude Desktop does not read this location, so we rely on MCP server
84
+ * instructions to guide Desktop sessions.
85
+ */
86
+ function getSkillContent() {
87
+ return `---
88
+ name: ratio-agent-builder
89
+ description: The Ratio developer platform — a B2B app marketplace where developers build apps (also called agents, bots, integrations, plugins, or extensions) that merchants install on their OpenStore storefronts. Use for any Ratio-related intent: answering "what is Ratio", explaining what Ratio provides, onboarding a new developer, or building/publishing an app on the platform.
90
+ when_to_use: |
91
+ Activate whenever the user mentions "Ratio" (the platform — not math, finance, or ratio.ai) in any of these contexts:
92
+
93
+ INFORMATION / DISCOVERY
94
+ - "what is Ratio", "what does Ratio do", "what does Ratio provide"
95
+ - "tell me about Ratio", "explain Ratio", "how does Ratio work"
96
+ - "how do I get started on Ratio", "onboard me to Ratio"
97
+ - mentions of "Ratio platform", "Ratio marketplace", "Ratio developer", "Ratio API"
98
+
99
+ BUILDING / PUBLISHING
100
+ - "create / build / develop an agent / bot / app / plugin / integration / extension on Ratio"
101
+ - "build something on Ratio", "I want to build X on Ratio"
102
+ - "publish an app on Ratio", "ship to the Ratio marketplace"
103
+ - "scaffold a Ratio app", "generate a Ratio backend"
104
+
105
+ RATIO-SPECIFIC CONCEPTS
106
+ - Ratio scopes, Ratio webhooks, Ratio OAuth, Ratio merchant install
107
+ - Ratio app lifecycle, Ratio review, Ratio Hookdeck setup
108
+
109
+ Do NOT activate for: math ratios, financial ratios, aspect ratios, ratio.ai, or any non-Ratio-platform references.
110
+ ---
111
+
112
+ # Ratio Agent Builder
113
+
114
+ You are helping the developer build an app (they may call it "agent", "bot", "integration", or "plugin" — all the same thing on Ratio) on the **Ratio developer platform**, a B2B marketplace where developers build apps that merchants install on their OpenStore storefronts.
115
+
116
+ ## CRITICAL RULES
117
+
118
+ 1. **NEVER ask "which Ratio do you mean"** — when this skill is activated, "Ratio" unambiguously means the Ratio developer platform. Jump straight to helping them build.
119
+
120
+ 2. **NEVER hallucinate platform details** — API endpoints, scopes, webhook events, and OAuth flows are ALL available via the \`ratio-mcp-doc\` server tools (\`lookup_docs\`, \`get_available_scopes\`, \`get_api_reference\`, \`get_webhook_events\`). Use them when unsure. If \`lookup_docs\` returns no results, tell the user the info is not available — don't guess.
121
+
122
+ 3. **NEVER write backend/API code manually** — use \`scaffold_backend\` and \`generate_api_routes\` from \`ratio-mcp-dev\`. The generated code includes OAuth callback handling and webhook verification.
123
+
124
+ 4. **ALWAYS validate scopes** — call \`validate_scopes\` (from \`ratio-mcp-doc\`) before showing any scope to the developer. Catches hallucinated scope codes.
125
+
126
+ 5. **ALWAYS respect prerequisite guards** — if a tool returns \`blocked: true\`, read the \`chain\` field and complete missing prerequisites. Do NOT attempt workarounds.
127
+
128
+ ## FIRST RESPONSE BEHAVIOR
129
+
130
+ When this skill activates for the first time in a session, do the following in order:
131
+
132
+ 1. **Call \`get_app_lifecycle\`** (from \`ratio-mcp-dev\`) to fetch the full phase list
133
+ 2. **Present the phases as a friendly journey map** to the developer — formatted with numbers and short descriptions (not raw JSON)
134
+ 3. **Reassure them** — "We'll tackle one phase at a time, I'll guide you through each step"
135
+ 4. **Start phase 1** — ask if they have a Ratio developer account (\`developer_login\`) or need to sign up (\`developer_signup\`)
136
+
137
+ Example journey map format (fill from \`get_app_lifecycle\` output):
138
+
139
+ \`\`\`
140
+ Here's what building on Ratio looks like:
141
+
142
+ Phase 1 — Authentication (sign up or log in)
143
+ Phase 2 — App creation (name, categories, callback URL)
144
+ Phase 3 — Scope selection (what data your app needs)
145
+ Phase 4 — Webhooks (optional) (real-time event subscriptions)
146
+ Phase 5 — Build & submit (scaffold, build, zip, submit for review)
147
+ Phase 6 — Admin approval (wait for review)
148
+ Phase 7 — Publish (go live on marketplace)
149
+ Phase 8 — Backend (auto-generated NestJS backend with API routes)
150
+
151
+ We'll go one phase at a time. Ready to start with authentication?
152
+ \`\`\`
153
+
154
+ ## FLOW OVERVIEW
155
+
156
+ \`\`\`
157
+ developer_login OR (developer_signup → developer_verify_otp → developer_login)
158
+
159
+ get_categories → ask developer which fit → setup_hookdeck (always — before create_app) → create_app
160
+
161
+ gather_requirements → validate_scopes → define_app_requirements (preview → confirm)
162
+
163
+ create_webhooks (optional, based on scope recommendations)
164
+
165
+ scaffold_frontend → build_frontend → validate_build → create_submission_zip → upload_build → submit_for_review
166
+
167
+ get_app_status (poll until approved) → publish_app
168
+
169
+ scaffold_backend → generate_api_routes (auto-starts the NestJS server)
170
+ \`\`\`
171
+
172
+ ## PER-PHASE GUIDANCE
173
+
174
+ ### Phase 1 — Authentication
175
+ - Ask: existing account (login) or new developer (signup)?
176
+ - Signup flow needs OTP verification before login works
177
+ - Once \`developer_login\` succeeds, you can move on
178
+
179
+ ### Phase 2 — App creation
180
+
181
+ **Order matters: \`setup_hookdeck\` MUST run before \`create_app\`.** The callback URL it returns is what \`create_app\` needs as \`redirect_uri\`.
182
+
183
+ - Call \`get_categories\` and let the developer pick — do NOT auto-pick categories
184
+ - Ask warmly: "Do you have your own public callback URL, or should I set up a free Hookdeck tunnel so merchant installs can reach your localhost?" Briefly explain WHY this step exists — merchant installs come from the public internet, localhost can't be reached, we need a bridge.
185
+ - Own URL → call \`setup_hookdeck\` with \`hookdeck_url\` set to their URL + \`app_name\`
186
+ - No URL → call \`setup_hookdeck\` with \`app_name\` (the app the developer is building)
187
+ - The tool handles everything: CLI install check, login check, auto-provisions a Hookdeck source with all HTTP methods enabled. Each response includes friendly, explanatory \`_instruction\` text — **relay that to the developer warmly, always explaining the WHY, not just the command**. Re-call \`setup_hookdeck\` with the same \`app_name\` once they confirm each step.
188
+ - Once the tunnel is live, call \`create_app\` with the confirmed categories, the app name, and the \`callback_url\` returned by \`setup_hookdeck\`.
189
+ - Save the returned \`client_id\` and \`client_secret\` — the developer needs these for OAuth.
190
+
191
+ ### Phase 3 — Scope selection
192
+ - Call \`gather_requirements\` with the developer's natural language description
193
+ - Call \`validate_scopes\` on recommended scopes — present ONLY validated ones
194
+ - Call \`define_app_requirements\` with \`confirmed: false\` first (preview)
195
+ - After developer approves, call again with \`confirmed: true\`
196
+
197
+ ### Phase 4 — Webhooks
198
+ - Only ask if scope recommendations include event-driven use cases
199
+ - Call \`create_webhooks\` — the secret automatically matches \`client_secret\` (for signature verification in scaffolded backend)
200
+
201
+ ### Phase 5 — Build & submit
202
+ - \`scaffold_frontend\` → creates React + Vite template on developer's Desktop
203
+ - \`build_frontend\` → compiles
204
+ - \`validate_build\` → size + structure checks
205
+ - \`create_submission_zip\` → packages
206
+ - \`upload_build\` → uploads to Ratio
207
+ - \`submit_for_review\` → queues for admin approval
208
+
209
+ ### Phase 6 — Admin approval
210
+ - Call \`get_app_status\` to check — tell developer to come back when approved
211
+
212
+ ### Phase 7 — Publish
213
+ - Once approved, call \`publish_app\` — returns live marketplace URL
214
+
215
+ ### Phase 8 — Backend
216
+ - \`scaffold_backend\` → creates NestJS project with OAuth callback handler
217
+ - \`generate_api_routes\` → generates service/controller/module per scope, auto-starts the server
218
+ - Webhook handler is auto-generated if webhooks were configured
219
+ - OAuth is **merchant-initiated** — never construct OAuth URLs manually. When a merchant installs the app, the callback is automatic.
220
+
221
+ ## COMMON MISTAKES TO AVOID
222
+
223
+ - Asking "what do you mean by Ratio?" (skill already disambiguated)
224
+ - Writing API client code from scratch (use \`generate_api_routes\`)
225
+ - Constructing OAuth URLs manually (it's merchant-initiated)
226
+ - Guessing scope names (always \`validate_scopes\` first)
227
+ - Skipping \`get_app_lifecycle\` on first activation
228
+ - Calling \`generate_api_routes\` before \`scaffold_backend\` (guard will block)
229
+
230
+ ## WHEN STUCK
231
+
232
+ - Call \`get_status\` to see what's been completed and what's blocked
233
+ - Call \`lookup_docs\` with the user's question if unsure about platform details
234
+ - If a tool returns \`blocked: true\`, follow the \`chain\` it provides
235
+ `;
236
+ }
237
+ /**
238
+ * Install the ratio-agent-builder skill to ~/.claude/skills/ for Claude Code CLI.
239
+ * Overwrites existing file (safe — it's our own content).
240
+ * Returns true on success, false on failure.
241
+ */
242
+ function installSkill() {
243
+ const skillPath = getSkillPath();
244
+ console.log(`\nInstalling skill: ${skillPath}`);
245
+ try {
246
+ const dir = path.dirname(skillPath);
247
+ fs.mkdirSync(dir, { recursive: true });
248
+ atomicWrite(skillPath, getSkillContent());
249
+ console.log(' Skill installed. Claude Code CLI will auto-load it on next session.');
250
+ console.log(' Note: Claude Desktop does not support skills; it relies on MCP server instructions.');
251
+ return true;
252
+ }
253
+ catch (err) {
254
+ const msg = err instanceof Error ? err.message : String(err);
255
+ console.error(` Error installing skill: ${msg}`);
256
+ return false;
257
+ }
258
+ }
65
259
  function backupFile(filePath) {
66
260
  const backupPath = filePath + '.bak';
67
261
  fs.copyFileSync(filePath, backupPath);
@@ -74,7 +268,6 @@ function atomicWrite(filePath, content) {
74
268
  }
75
269
  function updateConfig(filePath) {
76
270
  console.log(`\nFound config: ${filePath}`);
77
- // Read existing file
78
271
  let raw;
79
272
  try {
80
273
  raw = fs.readFileSync(filePath, 'utf-8');
@@ -83,7 +276,6 @@ function updateConfig(filePath) {
83
276
  console.error(` Error: Could not read file. Skipping.`);
84
277
  return false;
85
278
  }
86
- // Validate JSON
87
279
  let config;
88
280
  try {
89
281
  config = JSON.parse(raw);
@@ -93,14 +285,11 @@ function updateConfig(filePath) {
93
285
  console.error(` Fix the JSON manually or restore from a backup.`);
94
286
  return false;
95
287
  }
96
- // Validate config is an object
97
288
  if (typeof config !== 'object' || config === null || Array.isArray(config)) {
98
289
  console.error(` Error: Config is not a JSON object. Skipping.`);
99
290
  return false;
100
291
  }
101
- // Backup before modifying
102
292
  backupFile(filePath);
103
- // Ensure mcpServers exists and is an object
104
293
  if (!('mcpServers' in config)) {
105
294
  config.mcpServers = {};
106
295
  }
@@ -115,49 +304,62 @@ function updateConfig(filePath) {
115
304
  for (const [name, entry] of Object.entries(getMcpServerEntries())) {
116
305
  servers[name] = entry;
117
306
  }
118
- // Atomic write
119
307
  atomicWrite(filePath, JSON.stringify(config, null, 2) + '\n');
120
- console.log(` Configured ratio-dev server.`);
308
+ console.log(` Configured ratio-mcp-dev and ratio-mcp-doc servers.`);
121
309
  return true;
122
310
  }
123
311
  function createFreshConfig(filePath) {
124
312
  console.log(`\nNo existing Claude config found.`);
125
313
  console.log(`Creating new config at: ${filePath}`);
126
- // Create directory if needed
127
314
  const dir = path.dirname(filePath);
128
315
  fs.mkdirSync(dir, { recursive: true });
129
316
  const config = {
130
317
  mcpServers: { ...getMcpServerEntries() },
131
318
  };
132
319
  atomicWrite(filePath, JSON.stringify(config, null, 2) + '\n');
133
- console.log(` Configured ratio-dev server.`);
320
+ console.log(` Configured ratio-mcp-dev and ratio-mcp-doc servers.`);
134
321
  return true;
135
322
  }
136
323
  export function run() {
137
324
  console.log('');
138
325
  console.log('Ratio MCP Server Setup');
139
326
  console.log('======================');
140
- const allPaths = getConfigPaths();
141
- const existingPaths = allPaths.filter((p) => fs.existsSync(p));
142
327
  let configured = 0;
143
- if (existingPaths.length > 0) {
144
- // Update all existing config files
145
- for (const configPath of existingPaths) {
328
+ // 1. Configure Claude Desktop
329
+ const desktopPaths = getDesktopConfigPaths();
330
+ const existingDesktopPaths = desktopPaths.filter((p) => fs.existsSync(p));
331
+ if (existingDesktopPaths.length > 0) {
332
+ for (const configPath of existingDesktopPaths) {
146
333
  if (updateConfig(configPath)) {
147
334
  configured++;
148
335
  }
149
336
  }
150
337
  }
151
338
  else {
152
- // No config found create Claude Code config as default
153
- const defaultPath = allPaths[0]; // ~/.claude/claude_desktop_config.json
339
+ // Create Desktop config if none exists
340
+ const defaultPath = desktopPaths[0];
154
341
  if (createFreshConfig(defaultPath)) {
155
342
  configured++;
156
343
  }
157
344
  }
345
+ // 2. Configure Claude Code CLI (~/.claude.json)
346
+ const cliPath = getCliConfigPath();
347
+ if (fs.existsSync(cliPath)) {
348
+ if (updateConfig(cliPath)) {
349
+ configured++;
350
+ }
351
+ }
352
+ else {
353
+ if (createFreshConfig(cliPath)) {
354
+ configured++;
355
+ }
356
+ }
357
+ // 3. Install the ratio-agent-builder skill (Claude Code CLI auto-loads it)
358
+ const skillInstalled = installSkill();
158
359
  console.log('');
159
360
  if (configured > 0) {
160
- console.log(`Done! ${configured} config file(s) updated.`);
361
+ console.log(`Done! ${configured} config file(s) updated${skillInstalled ? ' and skill installed' : ''}.`);
362
+ console.log('Servers configured for both Claude Desktop and Claude Code CLI.');
161
363
  console.log('Open Claude and start building!');
162
364
  }
163
365
  else {
package/dist/setup.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"setup.js","sourceRoot":"","sources":["../src/setup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAE9C;;;;GAIG;AACH,SAAS,cAAc;IACrB,IAAI,CAAC;QACH,OAAO,QAAQ,CAAC,WAAW,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAC7D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC,CAAC,kEAAkE;IAClF,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,SAAS,YAAY,CAAC,WAAmB;IACvC,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IACzC,MAAM,YAAY,GAAG,CAAC,gBAAgB,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;IAC5D,MAAM,IAAI,GAAG,CAAC,MAAM,EAAE,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC;IACnE,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACxB,CAAC;AAED,SAAS,mBAAmB;IAC1B,MAAM,OAAO,GAAG,cAAc,EAAE,CAAC;IACjC,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;IAE5C,MAAM,KAAK,GAA4B;QACrC,OAAO,EAAE,OAAO;QAChB,IAAI,EAAE,CAAC,IAAI,EAAE,8BAA8B,CAAC;KAC7C,CAAC;IACF,kFAAkF;IAClF,IAAI,UAAU,EAAE,CAAC;QACf,KAAK,CAAC,GAAG,GAAG,EAAE,IAAI,EAAE,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC;IAC9C,CAAC;IAED,OAAO;QACL,WAAW,EAAE,KAAK;KACnB,CAAC;AACJ,CAAC;AAED,SAAS,cAAc;IACrB,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;IAC1B,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;IAElC,MAAM,KAAK,GAAa;QACtB,8BAA8B;QAC9B,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,4BAA4B,CAAC;KACzD,CAAC;IAEF,qCAAqC;IACrC,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAC1B,KAAK,CAAC,IAAI,CACR,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,qBAAqB,EAAE,QAAQ,EAAE,4BAA4B,CAAC,CAC1F,CAAC;IACJ,CAAC;SAAM,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;QAChC,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;QAC7E,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,4BAA4B,CAAC,CAAC,CAAC;IACzE,CAAC;SAAM,CAAC;QACN,QAAQ;QACR,KAAK,CAAC,IAAI,CACR,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,4BAA4B,CAAC,CACnE,CAAC;IACJ,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,UAAU,CAAC,QAAgB;IAClC,MAAM,UAAU,GAAG,QAAQ,GAAG,MAAM,CAAC;IACrC,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;IACtC,OAAO,CAAC,GAAG,CAAC,qBAAqB,UAAU,EAAE,CAAC,CAAC;AACjD,CAAC;AAED,SAAS,WAAW,CAAC,QAAgB,EAAE,OAAe;IACpD,MAAM,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAC;IAClC,EAAE,CAAC,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAC5C,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;AACnC,CAAC;AAED,SAAS,YAAY,CAAC,QAAgB;IACpC,OAAO,CAAC,GAAG,CAAC,mBAAmB,QAAQ,EAAE,CAAC,CAAC;IAE3C,qBAAqB;IACrB,IAAI,GAAW,CAAC;IAChB,IAAI,CAAC;QACH,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC3C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,KAAK,CAAC,yCAAyC,CAAC,CAAC;QACzD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,gBAAgB;IAChB,IAAI,MAA+B,CAAC;IACpC,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,KAAK,CAAC,4CAA4C,CAAC,CAAC;QAC5D,OAAO,CAAC,KAAK,CAAC,mDAAmD,CAAC,CAAC;QACnE,OAAO,KAAK,CAAC;IACf,CAAC;IAED,+BAA+B;IAC/B,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3E,OAAO,CAAC,KAAK,CAAC,iDAAiD,CAAC,CAAC;QACjE,OAAO,KAAK,CAAC;IACf,CAAC;IAED,0BAA0B;IAC1B,UAAU,CAAC,QAAQ,CAAC,CAAC;IAErB,4CAA4C;IAC5C,IAAI,CAAC,CAAC,YAAY,IAAI,MAAM,CAAC,EAAE,CAAC;QAC9B,MAAM,CAAC,UAAU,GAAG,EAAE,CAAC;IACzB,CAAC;SAAM,IACL,OAAO,MAAM,CAAC,UAAU,KAAK,QAAQ;QACrC,MAAM,CAAC,UAAU,KAAK,IAAI;QAC1B,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,EAChC,CAAC;QACD,OAAO,CAAC,KAAK,CAAC,uDAAuD,CAAC,CAAC;QACvE,MAAM,CAAC,UAAU,GAAG,EAAE,CAAC;IACzB,CAAC;IAED,wDAAwD;IACxD,MAAM,OAAO,GAAG,MAAM,CAAC,UAAqC,CAAC;IAC7D,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,mBAAmB,EAAE,CAAC,EAAE,CAAC;QAClE,OAAO,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;IACxB,CAAC;IAED,eAAe;IACf,WAAW,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IAC9D,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;IAC9C,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,iBAAiB,CAAC,QAAgB;IACzC,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC;IAClD,OAAO,CAAC,GAAG,CAAC,2BAA2B,QAAQ,EAAE,CAAC,CAAC;IAEnD,6BAA6B;IAC7B,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACnC,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAEvC,MAAM,MAAM,GAAG;QACb,UAAU,EAAE,EAAE,GAAG,mBAAmB,EAAE,EAAE;KACzC,CAAC;IAEF,WAAW,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IAC9D,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;IAC9C,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,GAAG;IACjB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;IACtC,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;IAEtC,MAAM,QAAQ,GAAG,cAAc,EAAE,CAAC;IAClC,MAAM,aAAa,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;IAE/D,IAAI,UAAU,GAAG,CAAC,CAAC;IAEnB,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC7B,mCAAmC;QACnC,KAAK,MAAM,UAAU,IAAI,aAAa,EAAE,CAAC;YACvC,IAAI,YAAY,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC7B,UAAU,EAAE,CAAC;YACf,CAAC;QACH,CAAC;IACH,CAAC;SAAM,CAAC;QACN,yDAAyD;QACzD,MAAM,WAAW,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,uCAAuC;QACxE,IAAI,iBAAiB,CAAC,WAAW,CAAC,EAAE,CAAC;YACnC,UAAU,EAAE,CAAC;QACf,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;QACnB,OAAO,CAAC,GAAG,CAAC,SAAS,UAAU,0BAA0B,CAAC,CAAC;QAC3D,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;IACjD,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,8DAA8D,CAAC,CAAC;IAC9E,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAClB,CAAC"}
1
+ {"version":3,"file":"setup.js","sourceRoot":"","sources":["../src/setup.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ratio-mcp/setup",
3
- "version": "1.4.0",
3
+ "version": "1.5.0",
4
4
  "description": "One-command setup for Ratio MCP servers in Claude",
5
5
  "type": "module",
6
6
  "bin": {