@splicr/mcp-server 0.1.0 → 0.2.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.
Files changed (39) hide show
  1. package/dist/auth.d.ts +1 -1
  2. package/dist/auth.d.ts.map +1 -1
  3. package/dist/auth.js +30 -36
  4. package/dist/auth.js.map +1 -1
  5. package/dist/cli.d.ts +2 -2
  6. package/dist/cli.js +167 -20
  7. package/dist/cli.js.map +1 -1
  8. package/dist/config.d.ts +0 -5
  9. package/dist/config.d.ts.map +1 -1
  10. package/dist/config.js +14 -22
  11. package/dist/config.js.map +1 -1
  12. package/dist/lib/api-client.d.ts +54 -0
  13. package/dist/lib/api-client.d.ts.map +1 -0
  14. package/dist/lib/api-client.js +56 -0
  15. package/dist/lib/api-client.js.map +1 -0
  16. package/dist/lib/embedding.d.ts +3 -0
  17. package/dist/lib/embedding.d.ts.map +1 -0
  18. package/dist/lib/embedding.js +44 -0
  19. package/dist/lib/embedding.js.map +1 -0
  20. package/dist/lib/project-detector.d.ts.map +1 -1
  21. package/dist/lib/project-detector.js +122 -38
  22. package/dist/lib/project-detector.js.map +1 -1
  23. package/dist/tools/get-project-context.d.ts.map +1 -1
  24. package/dist/tools/get-project-context.js +13 -26
  25. package/dist/tools/get-project-context.js.map +1 -1
  26. package/dist/tools/get-recent-insights.d.ts.map +1 -1
  27. package/dist/tools/get-recent-insights.js +7 -28
  28. package/dist/tools/get-recent-insights.js.map +1 -1
  29. package/dist/tools/retry-failed.d.ts.map +1 -1
  30. package/dist/tools/retry-failed.js +5 -41
  31. package/dist/tools/retry-failed.js.map +1 -1
  32. package/dist/tools/save-from-agent.d.ts +1 -1
  33. package/dist/tools/save-from-agent.d.ts.map +1 -1
  34. package/dist/tools/save-from-agent.js +16 -58
  35. package/dist/tools/save-from-agent.js.map +1 -1
  36. package/dist/tools/search-knowledge.d.ts.map +1 -1
  37. package/dist/tools/search-knowledge.js +10 -96
  38. package/dist/tools/search-knowledge.js.map +1 -1
  39. package/package.json +1 -4
package/dist/auth.d.ts CHANGED
@@ -8,7 +8,7 @@ export declare function loadAuth(): Promise<{
8
8
  userId: string;
9
9
  }>;
10
10
  /**
11
- * Interactive login flow — prompts for email + password.
11
+ * Interactive login flow — prompts for email + password, authenticates via API server.
12
12
  */
13
13
  export declare function login(): Promise<void>;
14
14
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AA8DA;;;GAGG;AACH,wBAAsB,QAAQ,IAAI,OAAO,CAAC;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAqBvG;AAED;;GAEG;AACH,wBAAsB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAuC3C;AAED;;GAEG;AACH,wBAAgB,OAAO,IAAI,OAAO,CAEjC"}
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AA0DA;;;GAGG;AACH,wBAAsB,QAAQ,IAAI,OAAO,CAAC;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAqBvG;AAED;;GAEG;AACH,wBAAsB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAqC3C;AAED;;GAEG;AACH,wBAAgB,OAAO,IAAI,OAAO,CAEjC"}
package/dist/auth.js CHANGED
@@ -1,8 +1,7 @@
1
1
  import { readFileSync, writeFileSync, existsSync, mkdirSync } from 'fs';
2
2
  import { homedir } from 'os';
3
3
  import { join } from 'path';
4
- import { createClient } from '@supabase/supabase-js';
5
- import { loadConfig } from './config.js';
4
+ const API_URL = 'https://api-production-d889.up.railway.app';
6
5
  // Check ~/.splicr first, fall back to ~/.cortex for backward compat
7
6
  const SPLICR_AUTH = join(homedir(), '.splicr', 'auth.json');
8
7
  const CORTEX_AUTH = join(homedir(), '.cortex', 'auth.json');
@@ -26,23 +25,20 @@ function writeAuthFile(auth) {
26
25
  writeFileSync(AUTH_FILE, JSON.stringify(auth, null, 2));
27
26
  }
28
27
  async function refreshToken(auth) {
29
- const config = loadConfig();
30
- const anonKey = config.supabaseAnonKey;
31
- if (!anonKey) {
32
- throw new Error('SUPABASE_ANON_KEY required for token refresh. Add it to ~/.splicr/config.json or env.');
33
- }
34
- const client = createClient(config.supabaseUrl, anonKey);
35
- const { data, error } = await client.auth.refreshSession({
36
- refresh_token: auth.refresh_token,
28
+ const res = await fetch(`${API_URL}/auth/refresh`, {
29
+ method: 'POST',
30
+ headers: { 'Content-Type': 'application/json' },
31
+ body: JSON.stringify({ refresh_token: auth.refresh_token }),
37
32
  });
38
- if (error || !data.session) {
39
- throw new Error('Session expired. Run `splicr login` to re-authenticate.');
33
+ if (!res.ok) {
34
+ throw new Error('Session expired. Run `npx @splicr/mcp-server login` to re-authenticate.');
40
35
  }
36
+ const body = await res.json();
41
37
  const newAuth = {
42
- access_token: data.session.access_token,
43
- refresh_token: data.session.refresh_token,
44
- expires_at: data.session.expires_at ?? Math.floor(Date.now() / 1000) + 3600,
45
- user_id: data.user?.id ?? auth.user_id,
38
+ access_token: body.data.access_token,
39
+ refresh_token: body.data.refresh_token,
40
+ expires_at: body.data.expires_at ?? Math.floor(Date.now() / 1000) + 3600,
41
+ user_id: auth.user_id,
46
42
  };
47
43
  writeAuthFile(newAuth);
48
44
  return newAuth;
@@ -54,7 +50,7 @@ async function refreshToken(auth) {
54
50
  export async function loadAuth() {
55
51
  const auth = readAuthFile();
56
52
  if (!auth) {
57
- throw new Error('Not authenticated. Run `splicr login` to sign in.');
53
+ throw new Error('Not authenticated. Run `npx @splicr/mcp-server login` to sign in.');
58
54
  }
59
55
  const now = Math.floor(Date.now() / 1000);
60
56
  const fiveMinutes = 300;
@@ -71,36 +67,34 @@ export async function loadAuth() {
71
67
  return { accessToken: auth.access_token, refreshToken: auth.refresh_token, userId: auth.user_id };
72
68
  }
73
69
  /**
74
- * Interactive login flow — prompts for email + password.
70
+ * Interactive login flow — prompts for email + password, authenticates via API server.
75
71
  */
76
72
  export async function login() {
77
73
  const readline = await import('readline');
78
74
  const rl = readline.createInterface({ input: process.stdin, output: process.stderr });
79
75
  const ask = (q) => new Promise(resolve => rl.question(q, resolve));
80
76
  try {
81
- const config = loadConfig();
82
- const anonKey = config.supabaseAnonKey;
83
- if (!anonKey) {
84
- console.error('Error: SUPABASE_ANON_KEY not found. Add it to ~/.splicr/config.json or env.');
85
- process.exit(1);
86
- }
87
- const email = await ask('Email: ');
88
- const password = await ask('Password: ');
89
- const client = createClient(config.supabaseUrl, anonKey);
90
- const { data, error } = await client.auth.signInWithPassword({ email, password });
91
- if (error || !data.session) {
92
- console.error(`Login failed: ${error?.message ?? 'Unknown error'}`);
77
+ const email = await ask(' Email: ');
78
+ const password = await ask(' Password: ');
79
+ const res = await fetch(`${API_URL}/auth/login`, {
80
+ method: 'POST',
81
+ headers: { 'Content-Type': 'application/json' },
82
+ body: JSON.stringify({ email, password }),
83
+ });
84
+ const body = await res.json();
85
+ if (!res.ok) {
86
+ console.error(`\n Login failed: ${body.error || 'Unknown error'}`);
93
87
  process.exit(1);
94
88
  }
95
89
  const auth = {
96
- access_token: data.session.access_token,
97
- refresh_token: data.session.refresh_token,
98
- expires_at: data.session.expires_at ?? Math.floor(Date.now() / 1000) + 3600,
99
- user_id: data.user.id,
90
+ access_token: body.data.access_token,
91
+ refresh_token: body.data.refresh_token,
92
+ expires_at: body.data.expires_at ?? Math.floor(Date.now() / 1000) + 3600,
93
+ user_id: body.data.user.id,
100
94
  };
101
95
  writeAuthFile(auth);
102
- console.error(`Authenticated as ${email} (${data.user.id})`);
103
- console.error(`Credentials saved to ${AUTH_FILE}`);
96
+ console.error(`\n Authenticated as ${email}`);
97
+ console.error(` Credentials saved to ${AUTH_FILE}`);
104
98
  }
105
99
  finally {
106
100
  rl.close();
package/dist/auth.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"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"}
package/dist/cli.d.ts CHANGED
@@ -2,8 +2,8 @@
2
2
  /**
3
3
  * Unified entry point for the Splicr MCP server.
4
4
  *
5
- * - No args → starts the MCP stdio server (Claude Code runs this)
6
- * - "setup" → one-time setup: login + configure Claude Code
5
+ * - No args → starts the MCP stdio server (coding agents run this)
6
+ * - "setup" → one-time setup: login + auto-configure all detected agents
7
7
  * - "login" → re-authenticate
8
8
  * - "help" → print usage
9
9
  */
package/dist/cli.js CHANGED
@@ -2,12 +2,134 @@
2
2
  /**
3
3
  * Unified entry point for the Splicr MCP server.
4
4
  *
5
- * - No args → starts the MCP stdio server (Claude Code runs this)
6
- * - "setup" → one-time setup: login + configure Claude Code
5
+ * - No args → starts the MCP stdio server (coding agents run this)
6
+ * - "setup" → one-time setup: login + auto-configure all detected agents
7
7
  * - "login" → re-authenticate
8
8
  * - "help" → print usage
9
9
  */
10
+ import { existsSync, readFileSync, writeFileSync, mkdirSync } from 'fs';
11
+ import { homedir } from 'os';
12
+ import { join } from 'path';
10
13
  const command = process.argv[2];
14
+ const MCP_CONFIG = {
15
+ command: 'npx',
16
+ args: ['-y', '@splicr/mcp-server'],
17
+ };
18
+ function getAgents() {
19
+ const home = homedir();
20
+ const isWindows = process.platform === 'win32';
21
+ const appData = process.env.APPDATA || join(home, 'AppData', 'Roaming');
22
+ return [
23
+ // Claude Code — uses CLI
24
+ {
25
+ name: 'Claude Code',
26
+ configPath: '',
27
+ cliSetup: 'claude mcp add splicr -- npx -y @splicr/mcp-server',
28
+ serversKey: 'mcpServers',
29
+ },
30
+ // OpenAI Codex — uses CLI (TOML config at ~/.codex/config.toml)
31
+ {
32
+ name: 'Codex',
33
+ configPath: '',
34
+ cliSetup: 'codex mcp add splicr -- npx -y @splicr/mcp-server',
35
+ serversKey: 'mcp_servers',
36
+ },
37
+ // Cursor — global MCP config (newer versions use ~/.cursor/mcp.json on all platforms)
38
+ {
39
+ name: 'Cursor',
40
+ configPath: join(home, '.cursor', 'mcp.json'),
41
+ serversKey: 'mcpServers',
42
+ },
43
+ // Cline (VS Code extension)
44
+ {
45
+ name: 'Cline',
46
+ configPath: isWindows
47
+ ? join(appData, 'Code', 'User', 'globalStorage', 'saoudrizwan.claude-dev', 'settings', 'cline_mcp_settings.json')
48
+ : join(home, '.vscode', 'globalStorage', 'saoudrizwan.claude-dev', 'settings', 'cline_mcp_settings.json'),
49
+ serversKey: 'mcpServers',
50
+ },
51
+ // Antigravity (Google)
52
+ {
53
+ name: 'Antigravity',
54
+ configPath: join(home, '.gemini', 'antigravity', 'mcp_config.json'),
55
+ serversKey: 'mcpServers',
56
+ },
57
+ ];
58
+ }
59
+ function detectInstalledAgents() {
60
+ const agents = getAgents();
61
+ const installed = [];
62
+ const { execSync } = require('child_process');
63
+ for (const agent of agents) {
64
+ if (agent.cliSetup) {
65
+ // Check if CLI binary exists in PATH
66
+ const binary = agent.cliSetup.split(' ')[0];
67
+ try {
68
+ execSync(process.platform === 'win32' ? `where ${binary}` : `which ${binary}`, { stdio: 'ignore' });
69
+ installed.push(agent);
70
+ }
71
+ catch {
72
+ // CLI not found
73
+ }
74
+ }
75
+ else if (agent.configPath) {
76
+ // Check if config file or parent directory exists (agent is installed)
77
+ const dir = join(agent.configPath, '..');
78
+ if (existsSync(dir) || existsSync(agent.configPath)) {
79
+ installed.push(agent);
80
+ }
81
+ }
82
+ }
83
+ return installed;
84
+ }
85
+ function configureAgent(agent) {
86
+ if (agent.cliSetup) {
87
+ try {
88
+ const { execSync } = require('child_process');
89
+ // Remove existing splicr config first (in case it exists with old settings)
90
+ const binary = agent.cliSetup.split(' ')[0];
91
+ try {
92
+ execSync(`${binary} mcp remove splicr`, { stdio: 'ignore' });
93
+ }
94
+ catch { /* didn't exist */ }
95
+ execSync(agent.cliSetup, { stdio: 'inherit' });
96
+ return true;
97
+ }
98
+ catch {
99
+ return false;
100
+ }
101
+ }
102
+ // JSON file config
103
+ try {
104
+ let config = {};
105
+ if (existsSync(agent.configPath)) {
106
+ try {
107
+ config = JSON.parse(readFileSync(agent.configPath, 'utf-8'));
108
+ }
109
+ catch {
110
+ config = {};
111
+ }
112
+ }
113
+ if (!config[agent.serversKey]) {
114
+ config[agent.serversKey] = {};
115
+ }
116
+ // Check if already configured
117
+ if (config[agent.serversKey].splicr) {
118
+ return true; // Already there
119
+ }
120
+ config[agent.serversKey].splicr = MCP_CONFIG;
121
+ // Ensure directory exists
122
+ const dir = join(agent.configPath, '..');
123
+ if (!existsSync(dir)) {
124
+ mkdirSync(dir, { recursive: true });
125
+ }
126
+ writeFileSync(agent.configPath, JSON.stringify(config, null, 2));
127
+ return true;
128
+ }
129
+ catch {
130
+ return false;
131
+ }
132
+ }
11
133
  async function main() {
12
134
  switch (command) {
13
135
  case 'setup':
@@ -24,7 +146,6 @@ async function main() {
24
146
  printHelp();
25
147
  break;
26
148
  case undefined:
27
- // No args → start MCP server (this is what Claude Code calls)
28
149
  await import('./index.js');
29
150
  break;
30
151
  default:
@@ -35,46 +156,72 @@ async function main() {
35
156
  }
36
157
  async function setup() {
37
158
  const { login } = await import('./auth.js');
38
- const { execSync } = await import('child_process');
39
159
  console.error('\n Splicr — route what you read to what you\'re building\n');
40
160
  // Step 1: Login
41
161
  console.error(' Step 1/2: Authenticate\n');
42
162
  await login();
43
- // Step 2: Configure Claude Code
44
- console.error('\n Step 2/2: Configure Claude Code\n');
45
- try {
46
- execSync('claude mcp add splicr -- npx -y @splicr/mcp-server', {
47
- stdio: 'inherit',
48
- });
49
- console.error('\n Done! Splicr is ready. Start a new Claude Code session to use it.');
163
+ // Step 2: Detect and configure coding agents
164
+ console.error('\n Step 2/2: Configure coding agents\n');
165
+ const detected = detectInstalledAgents();
166
+ if (detected.length === 0) {
167
+ console.error(' No coding agents detected. Add Splicr manually to your agent\'s MCP config:\n');
168
+ printManualConfig();
169
+ return;
170
+ }
171
+ console.error(` Found ${detected.length} agent(s):\n`);
172
+ let configured = 0;
173
+ for (const agent of detected) {
174
+ process.stderr.write(` • ${agent.name}... `);
175
+ if (configureAgent(agent)) {
176
+ console.error('✓ configured');
177
+ configured++;
178
+ }
179
+ else {
180
+ console.error('✗ failed (configure manually)');
181
+ }
182
+ }
183
+ if (configured > 0) {
184
+ console.error(`\n Done! Splicr is connected to ${configured} agent(s).`);
185
+ console.error(' Start a new session in any agent to use it.');
50
186
  console.error(' Save articles from your phone or browser — they\'ll show up when you code.\n');
51
187
  }
52
- catch {
53
- console.error(' Could not auto-configure Claude Code. Add this manually:\n');
54
- console.error(' claude mcp add splicr -- npx -y @splicr/mcp-server\n');
55
- console.error(' Or add to your MCP settings JSON:\n');
56
- console.error(' "splicr": { "command": "npx", "args": ["-y", "@splicr/mcp-server"] }\n');
188
+ else {
189
+ console.error('\n Could not auto-configure any agents. Add manually:\n');
190
+ printManualConfig();
57
191
  }
58
192
  }
193
+ function printManualConfig() {
194
+ console.error(' Add this to your agent\'s MCP settings:\n');
195
+ console.error(' {');
196
+ console.error(' "mcpServers": {');
197
+ console.error(' "splicr": {');
198
+ console.error(' "command": "npx",');
199
+ console.error(' "args": ["-y", "@splicr/mcp-server"]');
200
+ console.error(' }');
201
+ console.error(' }');
202
+ console.error(' }\n');
203
+ }
59
204
  function printHelp() {
60
205
  console.error(`
61
206
  Splicr MCP Server — route what you read to what you're building
62
207
 
63
208
  Usage:
64
- npx @splicr/mcp-server setup One-time setup: login + configure Claude Code
209
+ npx @splicr/mcp-server setup One-time setup: login + auto-configure agents
65
210
  npx @splicr/mcp-server login Authenticate with your Splicr account
66
- npx @splicr/mcp-server Start MCP server (used by Claude Code)
211
+ npx @splicr/mcp-server Start MCP server (used by coding agents)
212
+
213
+ Supported agents (auto-detected):
214
+ Claude Code, Codex, Cursor, Cline, Antigravity
67
215
 
68
216
  Quick start:
69
217
  1. Sign up at splicr.dev
70
218
  2. Run: npx @splicr/mcp-server setup
71
219
  3. Start saving articles from your phone or browser
72
- 4. Open Claude Code — your saves show up when relevant
220
+ 4. Open any coding agent — your saves show up when relevant
73
221
  `);
74
222
  }
75
223
  main().catch(err => {
76
224
  console.error(`Error: ${err.message}`);
77
225
  process.exit(1);
78
226
  });
79
- export {};
80
227
  //# sourceMappingURL=cli.js.map
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA;;;;;;;GAOG;AAEH,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAEhC,KAAK,UAAU,IAAI;IACjB,QAAQ,OAAO,EAAE,CAAC;QAChB,KAAK,OAAO;YACV,MAAM,KAAK,EAAE,CAAC;YACd,MAAM;QAER,KAAK,OAAO,CAAC,CAAC,CAAC;YACb,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,CAAC;YAC5C,MAAM,KAAK,EAAE,CAAC;YACd,MAAM;QACR,CAAC;QAED,KAAK,MAAM,CAAC;QACZ,KAAK,QAAQ,CAAC;QACd,KAAK,IAAI;YACP,SAAS,EAAE,CAAC;YACZ,MAAM;QAER,KAAK,SAAS;YACZ,8DAA8D;YAC9D,MAAM,MAAM,CAAC,YAAY,CAAC,CAAC;YAC3B,MAAM;QAER;YACE,OAAO,CAAC,KAAK,CAAC,oBAAoB,OAAO,IAAI,CAAC,CAAC;YAC/C,SAAS,EAAE,CAAC;YACZ,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;AACH,CAAC;AAED,KAAK,UAAU,KAAK;IAClB,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,CAAC;IAC5C,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC;IAEnD,OAAO,CAAC,KAAK,CAAC,6DAA6D,CAAC,CAAC;IAE7E,gBAAgB;IAChB,OAAO,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC;IAC5C,MAAM,KAAK,EAAE,CAAC;IAEd,gCAAgC;IAChC,OAAO,CAAC,KAAK,CAAC,uCAAuC,CAAC,CAAC;IACvD,IAAI,CAAC;QACH,QAAQ,CAAC,oDAAoD,EAAE;YAC7D,KAAK,EAAE,SAAS;SACjB,CAAC,CAAC;QACH,OAAO,CAAC,KAAK,CAAC,uEAAuE,CAAC,CAAC;QACvF,OAAO,CAAC,KAAK,CAAC,gFAAgF,CAAC,CAAC;IAClG,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,KAAK,CAAC,8DAA8D,CAAC,CAAC;QAC9E,OAAO,CAAC,KAAK,CAAC,0DAA0D,CAAC,CAAC;QAC1E,OAAO,CAAC,KAAK,CAAC,uCAAuC,CAAC,CAAC;QACvD,OAAO,CAAC,KAAK,CAAC,4EAA4E,CAAC,CAAC;IAC9F,CAAC;AACH,CAAC;AAED,SAAS,SAAS;IAChB,OAAO,CAAC,KAAK,CAAC;;;;;;;;;;;;;CAaf,CAAC,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;IACjB,OAAO,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;IACvC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
package/dist/config.d.ts CHANGED
@@ -1,9 +1,4 @@
1
1
  export interface SplicrConfig {
2
- supabaseUrl: string;
3
- supabaseServiceRoleKey: string;
4
- supabaseAnonKey: string;
5
- geminiApiKey: string;
6
- userId: string;
7
2
  apiServerUrl: string;
8
3
  }
9
4
  export declare function loadConfig(): SplicrConfig;
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,YAAY;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,sBAAsB,EAAE,MAAM,CAAC;IAC/B,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,wBAAgB,UAAU,IAAI,YAAY,CA+BzC"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,YAAY;IAC3B,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,wBAAgB,UAAU,IAAI,YAAY,CAuBzC"}
package/dist/config.js CHANGED
@@ -2,33 +2,25 @@ import { readFileSync, existsSync } from 'fs';
2
2
  import { homedir } from 'os';
3
3
  import { join } from 'path';
4
4
  export function loadConfig() {
5
- // Priority: env vars > ~/.splicr/config.json
6
- if (process.env.SUPABASE_URL && process.env.SUPABASE_SERVICE_ROLE_KEY) {
7
- return {
8
- supabaseUrl: process.env.SUPABASE_URL,
9
- supabaseServiceRoleKey: process.env.SUPABASE_SERVICE_ROLE_KEY,
10
- supabaseAnonKey: process.env.SUPABASE_ANON_KEY || '',
11
- geminiApiKey: process.env.GEMINI_API_KEY || '',
12
- userId: process.env.SPLICR_USER_ID || process.env.CORTEX_USER_ID || '',
13
- apiServerUrl: process.env.SPLICR_API_URL || process.env.CORTEX_API_URL || 'https://api-production-d889.up.railway.app',
14
- };
5
+ // Priority: env var > config file > default
6
+ if (process.env.SPLICR_API_URL) {
7
+ return { apiServerUrl: process.env.SPLICR_API_URL };
15
8
  }
16
- // Check ~/.splicr first, fall back to ~/.cortex for backward compat
9
+ // Check ~/.splicr/config.json for dev overrides
17
10
  let configPath = join(homedir(), '.splicr', 'config.json');
18
11
  if (!existsSync(configPath)) {
19
12
  configPath = join(homedir(), '.cortex', 'config.json');
20
13
  }
21
- if (!existsSync(configPath)) {
22
- throw new Error('No config found. Set SUPABASE_URL env var or create ~/.splicr/config.json');
14
+ if (existsSync(configPath)) {
15
+ try {
16
+ const raw = JSON.parse(readFileSync(configPath, 'utf-8'));
17
+ if (raw.api_server_url) {
18
+ return { apiServerUrl: raw.api_server_url };
19
+ }
20
+ }
21
+ catch { /* ignore parse errors */ }
23
22
  }
24
- const raw = JSON.parse(readFileSync(configPath, 'utf-8'));
25
- return {
26
- supabaseUrl: raw.supabase_url || raw.api_url,
27
- supabaseServiceRoleKey: raw.supabase_service_role_key || raw.api_key,
28
- supabaseAnonKey: raw.supabase_anon_key || '',
29
- geminiApiKey: raw.gemini_api_key || '',
30
- userId: raw.user_id,
31
- apiServerUrl: raw.api_server_url || 'http://localhost:3000',
32
- };
23
+ // Default production API
24
+ return { apiServerUrl: 'https://api-production-d889.up.railway.app' };
33
25
  }
34
26
  //# sourceMappingURL=config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAC7B,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAW5B,MAAM,UAAU,UAAU;IACxB,6CAA6C;IAC7C,IAAI,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,OAAO,CAAC,GAAG,CAAC,yBAAyB,EAAE,CAAC;QACtE,OAAO;YACL,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,YAAY;YACrC,sBAAsB,EAAE,OAAO,CAAC,GAAG,CAAC,yBAAyB;YAC7D,eAAe,EAAE,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,EAAE;YACpD,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,EAAE;YAC9C,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,EAAE;YACtE,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,4CAA4C;SACvH,CAAC;IACJ,CAAC;IAED,oEAAoE;IACpE,IAAI,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC;IAC3D,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5B,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC;IACzD,CAAC;IACD,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CAAC,2EAA2E,CAAC,CAAC;IAC/F,CAAC;IAED,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;IAC1D,OAAO;QACL,WAAW,EAAE,GAAG,CAAC,YAAY,IAAI,GAAG,CAAC,OAAO;QAC5C,sBAAsB,EAAE,GAAG,CAAC,yBAAyB,IAAI,GAAG,CAAC,OAAO;QACpE,eAAe,EAAE,GAAG,CAAC,iBAAiB,IAAI,EAAE;QAC5C,YAAY,EAAE,GAAG,CAAC,cAAc,IAAI,EAAE;QACtC,MAAM,EAAE,GAAG,CAAC,OAAO;QACnB,YAAY,EAAE,GAAG,CAAC,cAAc,IAAI,uBAAuB;KAC5D,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAC7B,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAM5B,MAAM,UAAU,UAAU;IACxB,4CAA4C;IAC5C,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC;QAC/B,OAAO,EAAE,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC;IACtD,CAAC;IAED,gDAAgD;IAChD,IAAI,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC;IAC3D,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5B,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC;IACzD,CAAC;IAED,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC3B,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;YAC1D,IAAI,GAAG,CAAC,cAAc,EAAE,CAAC;gBACvB,OAAO,EAAE,YAAY,EAAE,GAAG,CAAC,cAAc,EAAE,CAAC;YAC9C,CAAC;QACH,CAAC;QAAC,MAAM,CAAC,CAAC,yBAAyB,CAAC,CAAC;IACvC,CAAC;IAED,2BAA2B;IAC3B,OAAO,EAAE,YAAY,EAAE,4CAA4C,EAAE,CAAC;AACxE,CAAC"}
@@ -0,0 +1,54 @@
1
+ declare const API_URL: string;
2
+ export declare function searchKnowledge(params: {
3
+ query: string;
4
+ project_name?: string;
5
+ limit?: number;
6
+ }): Promise<any[]>;
7
+ export declare function getProjectContext(params: {
8
+ project_name?: string;
9
+ project_id?: string;
10
+ limit?: number;
11
+ }): Promise<{
12
+ results: any[];
13
+ project_name?: string;
14
+ }>;
15
+ export declare function getRecentInsights(params: {
16
+ days?: number;
17
+ limit?: number;
18
+ }): Promise<{
19
+ captures: any[];
20
+ failed_count: number;
21
+ }>;
22
+ export declare function saveFromAgent(params: {
23
+ content: string;
24
+ title: string;
25
+ project_name?: string;
26
+ tags?: string[];
27
+ }): Promise<{
28
+ id: string;
29
+ title: string;
30
+ project_name?: string;
31
+ duplicate: boolean;
32
+ }>;
33
+ export declare function resolveProject(params: {
34
+ local_path?: string;
35
+ git_remote_url?: string;
36
+ dir_name?: string;
37
+ auto_register?: {
38
+ name: string;
39
+ description: string;
40
+ tech_stack: string[];
41
+ local_path: string;
42
+ github_repo_url?: string;
43
+ };
44
+ }): Promise<{
45
+ id: string;
46
+ name: string;
47
+ confidence: string;
48
+ } | null>;
49
+ export declare function retryFailed(): Promise<{
50
+ retried: number;
51
+ message: string;
52
+ }>;
53
+ export { API_URL };
54
+ //# sourceMappingURL=api-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api-client.d.ts","sourceRoot":"","sources":["../../src/lib/api-client.ts"],"names":[],"mappings":"AAEA,QAAA,MAAM,OAAO,QAA6E,CAAC;AAmC3F,wBAAsB,eAAe,CAAC,MAAM,EAAE;IAC5C,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,CAGjB;AAED,wBAAsB,iBAAiB,CAAC,MAAM,EAAE;IAC9C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,GAAG,EAAE,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAErD;AAED,wBAAsB,iBAAiB,CAAC,MAAM,EAAE;IAC9C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,GAAG,OAAO,CAAC;IAAE,QAAQ,EAAE,GAAG,EAAE,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,CAAC,CAKrD;AAED,wBAAsB,aAAa,CAAC,MAAM,EAAE;IAC1C,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB,GAAG,OAAO,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,OAAO,CAAA;CAAE,CAAC,CAEpF;AAED,wBAAsB,cAAc,CAAC,MAAM,EAAE;IAC3C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE;QACd,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;QACpB,UAAU,EAAE,MAAM,EAAE,CAAC;QACrB,UAAU,EAAE,MAAM,CAAC;QACnB,eAAe,CAAC,EAAE,MAAM,CAAC;KAC1B,CAAC;CACH,GAAG,OAAO,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAAC,CAEnE;AAED,wBAAsB,WAAW,IAAI,OAAO,CAAC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CAEjF;AAED,OAAO,EAAE,OAAO,EAAE,CAAC"}
@@ -0,0 +1,56 @@
1
+ import { loadAuth } from '../auth.js';
2
+ const API_URL = process.env.SPLICR_API_URL || 'https://api-production-d889.up.railway.app';
3
+ async function apiRequest(method, path, body) {
4
+ const auth = await loadAuth();
5
+ const opts = {
6
+ method,
7
+ headers: {
8
+ 'Authorization': `Bearer ${auth.accessToken}`,
9
+ 'Content-Type': 'application/json',
10
+ },
11
+ signal: AbortSignal.timeout(25000),
12
+ };
13
+ if (body && method !== 'GET') {
14
+ opts.body = JSON.stringify(body);
15
+ }
16
+ const res = await fetch(`${API_URL}${path}`, opts);
17
+ if (!res.ok) {
18
+ let errorMsg;
19
+ try {
20
+ const errBody = await res.json();
21
+ errorMsg = errBody.error || `HTTP ${res.status}`;
22
+ }
23
+ catch {
24
+ errorMsg = `HTTP ${res.status}`;
25
+ }
26
+ throw new Error(errorMsg);
27
+ }
28
+ const json = await res.json();
29
+ return json.data;
30
+ }
31
+ export async function searchKnowledge(params) {
32
+ const data = await apiRequest('POST', '/mcp/search', params);
33
+ return data.results ?? [];
34
+ }
35
+ export async function getProjectContext(params) {
36
+ return await apiRequest('POST', '/mcp/project-context', params);
37
+ }
38
+ export async function getRecentInsights(params) {
39
+ const qs = new URLSearchParams();
40
+ if (params.days)
41
+ qs.set('days', String(params.days));
42
+ if (params.limit)
43
+ qs.set('limit', String(params.limit));
44
+ return await apiRequest('GET', `/mcp/recent?${qs.toString()}`);
45
+ }
46
+ export async function saveFromAgent(params) {
47
+ return await apiRequest('POST', '/mcp/save', params);
48
+ }
49
+ export async function resolveProject(params) {
50
+ return await apiRequest('POST', '/mcp/resolve-project', params);
51
+ }
52
+ export async function retryFailed() {
53
+ return await apiRequest('POST', '/captures/retry-failed', {});
54
+ }
55
+ export { API_URL };
56
+ //# sourceMappingURL=api-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api-client.js","sourceRoot":"","sources":["../../src/lib/api-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,4CAA4C,CAAC;AAE3F,KAAK,UAAU,UAAU,CAAC,MAAc,EAAE,IAAY,EAAE,IAAU;IAChE,MAAM,IAAI,GAAG,MAAM,QAAQ,EAAE,CAAC;IAE9B,MAAM,IAAI,GAAgB;QACxB,MAAM;QACN,OAAO,EAAE;YACP,eAAe,EAAE,UAAU,IAAI,CAAC,WAAW,EAAE;YAC7C,cAAc,EAAE,kBAAkB;SACnC;QACD,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC;KACnC,CAAC;IAEF,IAAI,IAAI,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;QAC7B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC;IAED,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,OAAO,GAAG,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC;IAEnD,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,IAAI,QAAgB,CAAC;QACrB,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,IAAI,EAAS,CAAC;YACxC,QAAQ,GAAG,OAAO,CAAC,KAAK,IAAI,QAAQ,GAAG,CAAC,MAAM,EAAE,CAAC;QACnD,CAAC;QAAC,MAAM,CAAC;YACP,QAAQ,GAAG,QAAQ,GAAG,CAAC,MAAM,EAAE,CAAC;QAClC,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC5B,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAS,CAAC;IACrC,OAAO,IAAI,CAAC,IAAI,CAAC;AACnB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,MAIrC;IACC,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,MAAM,EAAE,aAAa,EAAE,MAAM,CAAC,CAAC;IAC7D,OAAO,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC;AAC5B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,MAIvC;IACC,OAAO,MAAM,UAAU,CAAC,MAAM,EAAE,sBAAsB,EAAE,MAAM,CAAC,CAAC;AAClE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,MAGvC;IACC,MAAM,EAAE,GAAG,IAAI,eAAe,EAAE,CAAC;IACjC,IAAI,MAAM,CAAC,IAAI;QAAE,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IACrD,IAAI,MAAM,CAAC,KAAK;QAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IACxD,OAAO,MAAM,UAAU,CAAC,KAAK,EAAE,eAAe,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;AACjE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,MAKnC;IACC,OAAO,MAAM,UAAU,CAAC,MAAM,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;AACvD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,MAWpC;IACC,OAAO,MAAM,UAAU,CAAC,MAAM,EAAE,sBAAsB,EAAE,MAAM,CAAC,CAAC;AAClE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW;IAC/B,OAAO,MAAM,UAAU,CAAC,MAAM,EAAE,wBAAwB,EAAE,EAAE,CAAC,CAAC;AAChE,CAAC;AAED,OAAO,EAAE,OAAO,EAAE,CAAC"}
@@ -0,0 +1,3 @@
1
+ /** Generate a 768-dim embedding vector using Gemini. Retries once on 429/5xx. */
2
+ export declare function generateEmbedding(text: string): Promise<number[]>;
3
+ //# sourceMappingURL=embedding.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"embedding.d.ts","sourceRoot":"","sources":["../../src/lib/embedding.ts"],"names":[],"mappings":"AAEA,iFAAiF;AACjF,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAwCvE"}