@splicr/mcp-server 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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 +162 -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,129 @@
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
38
+ {
39
+ name: 'Cursor',
40
+ configPath: isWindows
41
+ ? join(appData, 'Cursor', 'User', 'globalStorage', 'cursor.mcp', 'mcp.json')
42
+ : join(home, '.cursor', 'mcp.json'),
43
+ serversKey: 'mcpServers',
44
+ },
45
+ // Cline (VS Code extension)
46
+ {
47
+ name: 'Cline',
48
+ configPath: isWindows
49
+ ? join(appData, 'Code', 'User', 'globalStorage', 'saoudrizwan.claude-dev', 'settings', 'cline_mcp_settings.json')
50
+ : join(home, '.vscode', 'globalStorage', 'saoudrizwan.claude-dev', 'settings', 'cline_mcp_settings.json'),
51
+ serversKey: 'mcpServers',
52
+ },
53
+ // Antigravity (Google)
54
+ {
55
+ name: 'Antigravity',
56
+ configPath: join(home, '.gemini', 'antigravity', 'mcp_config.json'),
57
+ serversKey: 'mcpServers',
58
+ },
59
+ ];
60
+ }
61
+ function detectInstalledAgents() {
62
+ const agents = getAgents();
63
+ const installed = [];
64
+ for (const agent of agents) {
65
+ if (agent.cliSetup) {
66
+ // Check if CLI exists
67
+ try {
68
+ const { execSync } = require('child_process');
69
+ execSync(`${agent.cliSetup.split(' ')[0]} --version`, { stdio: 'ignore' });
70
+ installed.push(agent);
71
+ }
72
+ catch {
73
+ // CLI not found
74
+ }
75
+ }
76
+ else if (agent.configPath) {
77
+ // Check if config file or parent directory exists (agent is installed)
78
+ const dir = join(agent.configPath, '..');
79
+ if (existsSync(dir) || existsSync(agent.configPath)) {
80
+ installed.push(agent);
81
+ }
82
+ }
83
+ }
84
+ return installed;
85
+ }
86
+ function configureAgent(agent) {
87
+ if (agent.cliSetup) {
88
+ try {
89
+ const { execSync } = require('child_process');
90
+ execSync(agent.cliSetup, { stdio: 'inherit' });
91
+ return true;
92
+ }
93
+ catch {
94
+ return false;
95
+ }
96
+ }
97
+ // JSON file config
98
+ try {
99
+ let config = {};
100
+ if (existsSync(agent.configPath)) {
101
+ try {
102
+ config = JSON.parse(readFileSync(agent.configPath, 'utf-8'));
103
+ }
104
+ catch {
105
+ config = {};
106
+ }
107
+ }
108
+ if (!config[agent.serversKey]) {
109
+ config[agent.serversKey] = {};
110
+ }
111
+ // Check if already configured
112
+ if (config[agent.serversKey].splicr) {
113
+ return true; // Already there
114
+ }
115
+ config[agent.serversKey].splicr = MCP_CONFIG;
116
+ // Ensure directory exists
117
+ const dir = join(agent.configPath, '..');
118
+ if (!existsSync(dir)) {
119
+ mkdirSync(dir, { recursive: true });
120
+ }
121
+ writeFileSync(agent.configPath, JSON.stringify(config, null, 2));
122
+ return true;
123
+ }
124
+ catch {
125
+ return false;
126
+ }
127
+ }
11
128
  async function main() {
12
129
  switch (command) {
13
130
  case 'setup':
@@ -24,7 +141,6 @@ async function main() {
24
141
  printHelp();
25
142
  break;
26
143
  case undefined:
27
- // No args → start MCP server (this is what Claude Code calls)
28
144
  await import('./index.js');
29
145
  break;
30
146
  default:
@@ -35,46 +151,72 @@ async function main() {
35
151
  }
36
152
  async function setup() {
37
153
  const { login } = await import('./auth.js');
38
- const { execSync } = await import('child_process');
39
154
  console.error('\n Splicr — route what you read to what you\'re building\n');
40
155
  // Step 1: Login
41
156
  console.error(' Step 1/2: Authenticate\n');
42
157
  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.');
158
+ // Step 2: Detect and configure coding agents
159
+ console.error('\n Step 2/2: Configure coding agents\n');
160
+ const detected = detectInstalledAgents();
161
+ if (detected.length === 0) {
162
+ console.error(' No coding agents detected. Add Splicr manually to your agent\'s MCP config:\n');
163
+ printManualConfig();
164
+ return;
165
+ }
166
+ console.error(` Found ${detected.length} agent(s):\n`);
167
+ let configured = 0;
168
+ for (const agent of detected) {
169
+ process.stderr.write(` • ${agent.name}... `);
170
+ if (configureAgent(agent)) {
171
+ console.error('✓ configured');
172
+ configured++;
173
+ }
174
+ else {
175
+ console.error('✗ failed (configure manually)');
176
+ }
177
+ }
178
+ if (configured > 0) {
179
+ console.error(`\n Done! Splicr is connected to ${configured} agent(s).`);
180
+ console.error(' Start a new session in any agent to use it.');
50
181
  console.error(' Save articles from your phone or browser — they\'ll show up when you code.\n');
51
182
  }
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');
183
+ else {
184
+ console.error('\n Could not auto-configure any agents. Add manually:\n');
185
+ printManualConfig();
57
186
  }
58
187
  }
188
+ function printManualConfig() {
189
+ console.error(' Add this to your agent\'s MCP settings:\n');
190
+ console.error(' {');
191
+ console.error(' "mcpServers": {');
192
+ console.error(' "splicr": {');
193
+ console.error(' "command": "npx",');
194
+ console.error(' "args": ["-y", "@splicr/mcp-server"]');
195
+ console.error(' }');
196
+ console.error(' }');
197
+ console.error(' }\n');
198
+ }
59
199
  function printHelp() {
60
200
  console.error(`
61
201
  Splicr MCP Server — route what you read to what you're building
62
202
 
63
203
  Usage:
64
- npx @splicr/mcp-server setup One-time setup: login + configure Claude Code
204
+ npx @splicr/mcp-server setup One-time setup: login + auto-configure agents
65
205
  npx @splicr/mcp-server login Authenticate with your Splicr account
66
- npx @splicr/mcp-server Start MCP server (used by Claude Code)
206
+ npx @splicr/mcp-server Start MCP server (used by coding agents)
207
+
208
+ Supported agents (auto-detected):
209
+ Claude Code, Codex, Cursor, Cline, Antigravity
67
210
 
68
211
  Quick start:
69
212
  1. Sign up at splicr.dev
70
213
  2. Run: npx @splicr/mcp-server setup
71
214
  3. Start saving articles from your phone or browser
72
- 4. Open Claude Code — your saves show up when relevant
215
+ 4. Open any coding agent — your saves show up when relevant
73
216
  `);
74
217
  }
75
218
  main().catch(err => {
76
219
  console.error(`Error: ${err.message}`);
77
220
  process.exit(1);
78
221
  });
79
- export {};
80
222
  //# 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"}