@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
@@ -0,0 +1,44 @@
1
+ import { geminiApiKey } from './supabase.js';
2
+ /** Generate a 768-dim embedding vector using Gemini. Retries once on 429/5xx. */
3
+ export async function generateEmbedding(text) {
4
+ if (!geminiApiKey) {
5
+ throw new Error('GEMINI_API_KEY is not configured. Set it in ~/.splicr/config.json or environment.');
6
+ }
7
+ for (let attempt = 0; attempt < 2; attempt++) {
8
+ try {
9
+ const url = 'https://generativelanguage.googleapis.com/v1beta/models/gemini-embedding-001:embedContent';
10
+ const response = await fetch(url, {
11
+ method: 'POST',
12
+ headers: {
13
+ 'Content-Type': 'application/json',
14
+ 'x-goog-api-key': geminiApiKey,
15
+ },
16
+ signal: AbortSignal.timeout(10000),
17
+ body: JSON.stringify({
18
+ model: 'models/gemini-embedding-001',
19
+ content: { parts: [{ text }] },
20
+ outputDimensionality: 768,
21
+ }),
22
+ });
23
+ if (!response.ok) {
24
+ const errText = await response.text();
25
+ if (attempt === 0 && (response.status === 429 || response.status >= 500)) {
26
+ await new Promise(r => setTimeout(r, 1000));
27
+ continue;
28
+ }
29
+ throw new Error(`Gemini embedding failed (${response.status}): ${errText}`);
30
+ }
31
+ const result = await response.json();
32
+ return result.embedding.values;
33
+ }
34
+ catch (err) {
35
+ if (attempt === 0) {
36
+ await new Promise(r => setTimeout(r, 1000));
37
+ continue;
38
+ }
39
+ throw err;
40
+ }
41
+ }
42
+ throw new Error('Gemini embedding failed after retries');
43
+ }
44
+ //# sourceMappingURL=embedding.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"embedding.js","sourceRoot":"","sources":["../../src/lib/embedding.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE7C,iFAAiF;AACjF,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,IAAY;IAClD,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CAAC,mFAAmF,CAAC,CAAC;IACvG,CAAC;IAED,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,CAAC,EAAE,OAAO,EAAE,EAAE,CAAC;QAC7C,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,2FAA2F,CAAC;YACxG,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;gBAChC,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE;oBACP,cAAc,EAAE,kBAAkB;oBAClC,gBAAgB,EAAE,YAAY;iBAC/B;gBACD,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC;gBAClC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;oBACnB,KAAK,EAAE,6BAA6B;oBACpC,OAAO,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE;oBAC9B,oBAAoB,EAAE,GAAG;iBAC1B,CAAC;aACH,CAAC,CAAC;YACH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;gBACtC,IAAI,OAAO,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,GAAG,IAAI,QAAQ,CAAC,MAAM,IAAI,GAAG,CAAC,EAAE,CAAC;oBACzE,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;oBAC5C,SAAS;gBACX,CAAC;gBACD,MAAM,IAAI,KAAK,CAAC,4BAA4B,QAAQ,CAAC,MAAM,MAAM,OAAO,EAAE,CAAC,CAAC;YAC9E,CAAC;YACD,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAyC,CAAC;YAC5E,OAAO,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC;QACjC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,OAAO,KAAK,CAAC,EAAE,CAAC;gBAClB,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;gBAC5C,SAAS;YACX,CAAC;YACD,MAAM,GAAG,CAAC;QACZ,CAAC;IACH,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;AAC3D,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"project-detector.d.ts","sourceRoot":"","sources":["../../src/lib/project-detector.ts"],"names":[],"mappings":"AAIA,UAAU,eAAe;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,OAAO,GAAG,UAAU,CAAC;CAClC;AAED,sEAAsE;AACtE,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAK/C;AAED,wBAAsB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CA2ChF;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAO1D;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAInD"}
1
+ {"version":3,"file":"project-detector.d.ts","sourceRoot":"","sources":["../../src/lib/project-detector.ts"],"names":[],"mappings":"AAKA,UAAU,eAAe;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,OAAO,GAAG,UAAU,CAAC;CAClC;AAED,sEAAsE;AACtE,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAK/C;AAED,wBAAsB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CAmChF;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAO1D;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAInD"}
@@ -1,6 +1,7 @@
1
1
  import { execSync } from 'child_process';
2
- import { getSupabase } from './supabase.js';
3
- import { autoRegisterProject } from './auto-register.js';
2
+ import { readFileSync, existsSync } from 'fs';
3
+ import { join } from 'path';
4
+ import { resolveProject } from './api-client.js';
4
5
  /** Normalize path for consistent DB lookups across Windows/WSL/Mac */
5
6
  export function normalizePath(p) {
6
7
  return p
@@ -9,46 +10,36 @@ export function normalizePath(p) {
9
10
  .replace(/^([A-Z]):/, (_, d) => `${d.toLowerCase()}:`); // C: → c:
10
11
  }
11
12
  export async function detectProject(cwd) {
12
- const { supabase, userId } = await getSupabase();
13
13
  const normalizedCwd = normalizePath(cwd);
14
- // 1. Direct path match (try both raw and normalized)
15
- const { data: byPath } = await supabase
16
- .from('projects')
17
- .select('id, name')
18
- .eq('user_id', userId)
19
- .eq('local_path', normalizedCwd)
20
- .single();
21
- if (byPath)
22
- return { ...byPath, confidence: 'exact' };
23
- // 2. Git remote match
24
14
  const gitRemote = getGitRemoteUrl(cwd);
25
- if (gitRemote) {
26
- const normalized = normalizeGitUrl(gitRemote);
27
- const { data: byRepo } = await supabase
28
- .from('projects')
29
- .select('id, name')
30
- .eq('user_id', userId)
31
- .eq('github_repo_url', normalized)
32
- .single();
33
- if (byRepo)
34
- return { ...byRepo, confidence: 'exact' };
35
- }
36
- // 3. Fuzzy match by directory name
15
+ const normalizedRemote = gitRemote ? normalizeGitUrl(gitRemote) : undefined;
37
16
  const dirName = normalizedCwd.split('/').pop()?.toLowerCase();
38
- if (dirName) {
39
- const { data: projects } = await supabase
40
- .from('projects')
41
- .select('id, name')
42
- .eq('user_id', userId)
43
- .eq('status', 'active');
44
- const match = projects?.find(p => p.name.toLowerCase() === dirName);
45
- if (match)
46
- return { ...match, confidence: 'inferred' };
17
+ // Build auto-register data from local files
18
+ const autoRegister = {
19
+ name: detectProjectName(cwd),
20
+ description: detectDescription(cwd),
21
+ tech_stack: detectTechStack(cwd),
22
+ local_path: normalizedCwd,
23
+ github_repo_url: normalizedRemote,
24
+ };
25
+ try {
26
+ const result = await resolveProject({
27
+ local_path: normalizedCwd,
28
+ git_remote_url: normalizedRemote,
29
+ dir_name: dirName,
30
+ auto_register: autoRegister,
31
+ });
32
+ if (result) {
33
+ return {
34
+ id: result.id,
35
+ name: result.name,
36
+ confidence: result.confidence,
37
+ };
38
+ }
39
+ }
40
+ catch {
41
+ // API unavailable — can't resolve project
47
42
  }
48
- // 4. Auto-register from local files
49
- const registered = await autoRegisterProject(cwd);
50
- if (registered)
51
- return { ...registered, confidence: 'inferred' };
52
43
  return null;
53
44
  }
54
45
  export function getGitRemoteUrl(cwd) {
@@ -65,4 +56,97 @@ export function normalizeGitUrl(url) {
65
56
  .replace(/^git@github\.com:/, 'https://github.com/')
66
57
  .replace(/\.git$/, '');
67
58
  }
59
+ function detectProjectName(cwd) {
60
+ const pkgPath = join(cwd, 'package.json');
61
+ if (existsSync(pkgPath)) {
62
+ try {
63
+ const pkg = JSON.parse(readFileSync(pkgPath, 'utf-8'));
64
+ if (pkg.name)
65
+ return pkg.name.replace(/^@[^/]+\//, '');
66
+ }
67
+ catch { /* ignore */ }
68
+ }
69
+ return cwd.replace(/\\/g, '/').split('/').pop() || 'unnamed-project';
70
+ }
71
+ function detectDescription(cwd) {
72
+ for (const file of ['CLAUDE.md', 'README.md']) {
73
+ const filePath = join(cwd, file);
74
+ if (existsSync(filePath)) {
75
+ try {
76
+ const content = readFileSync(filePath, 'utf-8');
77
+ const desc = extractFirstParagraph(content);
78
+ if (desc)
79
+ return desc;
80
+ }
81
+ catch { /* ignore */ }
82
+ }
83
+ }
84
+ const pkgPath = join(cwd, 'package.json');
85
+ if (existsSync(pkgPath)) {
86
+ try {
87
+ const pkg = JSON.parse(readFileSync(pkgPath, 'utf-8'));
88
+ if (pkg.description)
89
+ return pkg.description;
90
+ }
91
+ catch { /* ignore */ }
92
+ }
93
+ return `Local project at ${cwd}`;
94
+ }
95
+ function extractFirstParagraph(markdown) {
96
+ const lines = markdown.split('\n');
97
+ let paragraph = '';
98
+ let foundContent = false;
99
+ for (const line of lines) {
100
+ const trimmed = line.trim();
101
+ if (trimmed.startsWith('#') || trimmed.startsWith('---') || trimmed.startsWith('```')) {
102
+ if (foundContent)
103
+ break;
104
+ continue;
105
+ }
106
+ if (trimmed === '') {
107
+ if (foundContent)
108
+ break;
109
+ continue;
110
+ }
111
+ if (trimmed.startsWith('|'))
112
+ continue;
113
+ foundContent = true;
114
+ paragraph += (paragraph ? ' ' : '') + trimmed;
115
+ }
116
+ if (!paragraph)
117
+ return null;
118
+ return paragraph.length > 500 ? paragraph.substring(0, 497) + '...' : paragraph;
119
+ }
120
+ const KNOWN_TECH = [
121
+ 'react', 'next', 'express', 'fastify', 'vue', 'angular', 'svelte',
122
+ 'tailwindcss', 'prisma', '@supabase/supabase-js', 'typescript',
123
+ 'react-native', 'expo', 'electron', '@modelcontextprotocol/sdk',
124
+ 'zod', 'drizzle-orm', 'mongoose', 'graphql', 'trpc',
125
+ ];
126
+ function detectTechStack(cwd) {
127
+ const techStack = [];
128
+ const pkgPath = join(cwd, 'package.json');
129
+ if (existsSync(pkgPath)) {
130
+ try {
131
+ const pkg = JSON.parse(readFileSync(pkgPath, 'utf-8'));
132
+ const allDeps = { ...pkg.dependencies, ...pkg.devDependencies };
133
+ for (const tech of KNOWN_TECH) {
134
+ if (allDeps[tech]) {
135
+ techStack.push(tech.replace('@supabase/supabase-js', 'supabase').replace('@modelcontextprotocol/sdk', 'mcp'));
136
+ }
137
+ }
138
+ if (!allDeps['typescript'] && existsSync(join(cwd, 'tsconfig.json'))) {
139
+ techStack.push('typescript');
140
+ }
141
+ }
142
+ catch { /* ignore */ }
143
+ }
144
+ if (existsSync(join(cwd, 'requirements.txt')) || existsSync(join(cwd, 'pyproject.toml')))
145
+ techStack.push('python');
146
+ if (existsSync(join(cwd, 'go.mod')))
147
+ techStack.push('go');
148
+ if (existsSync(join(cwd, 'Cargo.toml')))
149
+ techStack.push('rust');
150
+ return techStack;
151
+ }
68
152
  //# sourceMappingURL=project-detector.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"project-detector.js","sourceRoot":"","sources":["../../src/lib/project-detector.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"project-detector.js","sourceRoot":"","sources":["../../src/lib/project-detector.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"get-project-context.d.ts","sourceRoot":"","sources":["../../src/tools/get-project-context.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;CAanC,CAAC;AAEF,wBAAsB,uBAAuB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CA6C5F"}
1
+ {"version":3,"file":"get-project-context.d.ts","sourceRoot":"","sources":["../../src/tools/get-project-context.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;CAanC,CAAC;AAEF,wBAAsB,uBAAuB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAkC5F"}
@@ -1,4 +1,4 @@
1
- import { getSupabase } from '../lib/supabase.js';
1
+ import { getProjectContext } from '../lib/api-client.js';
2
2
  import { detectProject } from '../lib/project-detector.js';
3
3
  export const getProjectContextSchema = {
4
4
  name: 'get_project_context',
@@ -15,12 +15,10 @@ Uses a watermark system — only returns captures saved since the last time cont
15
15
  },
16
16
  };
17
17
  export async function handleGetProjectContext(args) {
18
- const { supabase, userId } = await getSupabase();
19
18
  const projectArg = args.project;
20
19
  const limit = Math.min(Math.max(1, Number(args.limit) || 20), 100);
21
- // Resolve project
22
- let projectId;
23
20
  let projectName;
21
+ let projectId;
24
22
  if (projectArg === 'auto') {
25
23
  const detected = await detectProject(process.cwd());
26
24
  if (!detected)
@@ -29,31 +27,20 @@ export async function handleGetProjectContext(args) {
29
27
  projectName = detected.name;
30
28
  }
31
29
  else {
32
- const { data, error: lookupError } = await supabase
33
- .from('projects')
34
- .select('id, name')
35
- .eq('user_id', userId)
36
- .ilike('name', projectArg)
37
- .limit(1);
38
- if (lookupError || !data?.[0]?.id) {
39
- return `Project "${projectArg}" not found.`;
40
- }
41
- projectId = data[0].id;
42
- projectName = data[0].name;
30
+ projectName = projectArg;
43
31
  }
44
- // Call DB function (reads watermark, updates it, returns only new captures)
45
- const { data, error } = await supabase.rpc('get_project_context', {
46
- p_user_id: userId,
47
- p_project_id: projectId,
48
- p_limit: limit,
32
+ const data = await getProjectContext({
33
+ project_name: projectName,
34
+ project_id: projectId,
35
+ limit,
49
36
  });
50
- if (error)
51
- return `Error: ${error.message}`;
52
- if (!data || data.length === 0)
53
- return `No new saves for ${projectName} since last check.`;
54
- const items = data.map((r, i) => `${i + 1}. **${r.title || 'Untitled'}** · splicr [${r.relevance}]\n` +
37
+ const results = data.results;
38
+ const name = data.project_name || projectName;
39
+ if (!results || results.length === 0)
40
+ return `No new saves for ${name} since last check.`;
41
+ const items = results.map((r, i) => `${i + 1}. **${r.title || 'Untitled'}** · splicr [${r.relevance}]\n` +
55
42
  ` ${r.insight}\n` +
56
43
  ` Tags: ${r.tags?.join(', ') || 'none'}${r.source_url ? ` | ${r.source_url}` : ''}`).join('\n\n');
57
- return `*From Splicr — ${data.length} new save(s) for ${projectName}:*\n\n${items}`;
44
+ return `*From Splicr — ${results.length} new save(s) for ${name}:*\n\n${items}`;
58
45
  }
59
46
  //# sourceMappingURL=get-project-context.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"get-project-context.js","sourceRoot":"","sources":["../../src/tools/get-project-context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAE3D,MAAM,CAAC,MAAM,uBAAuB,GAAG;IACrC,IAAI,EAAE,qBAA8B;IACpC,WAAW,EAAE;;gLAEiK;IAC9K,WAAW,EAAE;QACX,IAAI,EAAE,QAAiB;QACvB,UAAU,EAAE;YACV,OAAO,EAAE,EAAE,IAAI,EAAE,QAAiB,EAAE,WAAW,EAAE,2CAA2C,EAAE;YAC9F,KAAK,EAAE,EAAE,IAAI,EAAE,QAAiB,EAAE,WAAW,EAAE,2BAA2B,EAAE;SAC7E;QACD,QAAQ,EAAE,CAAC,SAAkB,CAAC;KAC/B;CACF,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAAC,IAA6B;IACzE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM,WAAW,EAAE,CAAC;IACjD,MAAM,UAAU,GAAG,IAAI,CAAC,OAAiB,CAAC;IAC1C,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;IAEnE,kBAAkB;IAClB,IAAI,SAA6B,CAAC;IAClC,IAAI,WAA+B,CAAC;IAEpC,IAAI,UAAU,KAAK,MAAM,EAAE,CAAC;QAC1B,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;QACpD,IAAI,CAAC,QAAQ;YAAE,OAAO,+EAA+E,CAAC;QACtG,SAAS,GAAG,QAAQ,CAAC,EAAE,CAAC;QACxB,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC;IAC9B,CAAC;SAAM,CAAC;QACN,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,MAAM,QAAQ;aAChD,IAAI,CAAC,UAAU,CAAC;aAChB,MAAM,CAAC,UAAU,CAAC;aAClB,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC;aACrB,KAAK,CAAC,MAAM,EAAE,UAAU,CAAC;aACzB,KAAK,CAAC,CAAC,CAAC,CAAC;QACZ,IAAI,WAAW,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC;YAClC,OAAO,YAAY,UAAU,cAAc,CAAC;QAC9C,CAAC;QACD,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACvB,WAAW,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC7B,CAAC;IAED,4EAA4E;IAC5E,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,QAAQ,CAAC,GAAG,CAAC,qBAAqB,EAAE;QAChE,SAAS,EAAE,MAAM;QACjB,YAAY,EAAE,SAAS;QACvB,OAAO,EAAE,KAAK;KACf,CAAC,CAAC;IAEH,IAAI,KAAK;QAAE,OAAO,UAAU,KAAK,CAAC,OAAO,EAAE,CAAC;IAC5C,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,oBAAoB,WAAW,oBAAoB,CAAC;IAE3F,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,CAAS,EAAE,EAAE,CAC3C,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,KAAK,IAAI,UAAU,gBAAgB,CAAC,CAAC,SAAS,KAAK;QACpE,MAAM,CAAC,CAAC,OAAO,IAAI;QACnB,YAAY,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,MAAM,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CACtF,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAEf,OAAO,kBAAkB,IAAI,CAAC,MAAM,oBAAoB,WAAW,SAAS,KAAK,EAAE,CAAC;AACtF,CAAC"}
1
+ {"version":3,"file":"get-project-context.js","sourceRoot":"","sources":["../../src/tools/get-project-context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAE3D,MAAM,CAAC,MAAM,uBAAuB,GAAG;IACrC,IAAI,EAAE,qBAA8B;IACpC,WAAW,EAAE;;gLAEiK;IAC9K,WAAW,EAAE;QACX,IAAI,EAAE,QAAiB;QACvB,UAAU,EAAE;YACV,OAAO,EAAE,EAAE,IAAI,EAAE,QAAiB,EAAE,WAAW,EAAE,2CAA2C,EAAE;YAC9F,KAAK,EAAE,EAAE,IAAI,EAAE,QAAiB,EAAE,WAAW,EAAE,2BAA2B,EAAE;SAC7E;QACD,QAAQ,EAAE,CAAC,SAAkB,CAAC;KAC/B;CACF,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAAC,IAA6B;IACzE,MAAM,UAAU,GAAG,IAAI,CAAC,OAAiB,CAAC;IAC1C,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;IAEnE,IAAI,WAA+B,CAAC;IACpC,IAAI,SAA6B,CAAC;IAElC,IAAI,UAAU,KAAK,MAAM,EAAE,CAAC;QAC1B,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;QACpD,IAAI,CAAC,QAAQ;YAAE,OAAO,+EAA+E,CAAC;QACtG,SAAS,GAAG,QAAQ,CAAC,EAAE,CAAC;QACxB,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC;IAC9B,CAAC;SAAM,CAAC;QACN,WAAW,GAAG,UAAU,CAAC;IAC3B,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,iBAAiB,CAAC;QACnC,YAAY,EAAE,WAAW;QACzB,UAAU,EAAE,SAAS;QACrB,KAAK;KACN,CAAC,CAAC;IAEH,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;IAC7B,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,IAAI,WAAW,CAAC;IAE9C,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,oBAAoB,IAAI,oBAAoB,CAAC;IAE1F,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,CAAS,EAAE,EAAE,CAC9C,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,KAAK,IAAI,UAAU,gBAAgB,CAAC,CAAC,SAAS,KAAK;QACpE,MAAM,CAAC,CAAC,OAAO,IAAI;QACnB,YAAY,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,MAAM,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CACtF,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAEf,OAAO,kBAAkB,OAAO,CAAC,MAAM,oBAAoB,IAAI,SAAS,KAAK,EAAE,CAAC;AAClF,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"get-recent-insights.d.ts","sourceRoot":"","sources":["../../src/tools/get-recent-insights.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;CAUnC,CAAC;AAEF,wBAAsB,uBAAuB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CA6C5F"}
1
+ {"version":3,"file":"get-recent-insights.d.ts","sourceRoot":"","sources":["../../src/tools/get-recent-insights.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;CAUnC,CAAC;AAEF,wBAAsB,uBAAuB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAuB5F"}
@@ -1,4 +1,4 @@
1
- import { getSupabase } from '../lib/supabase.js';
1
+ import { getRecentInsights } from '../lib/api-client.js';
2
2
  export const getRecentInsightsSchema = {
3
3
  name: 'get_recent_insights',
4
4
  description: `Show everything the user saved recently across all projects in Splicr. Only call when the user explicitly asks to see their recent saves or wants a cross-project overview.`,
@@ -11,27 +11,12 @@ export const getRecentInsightsSchema = {
11
11
  },
12
12
  };
13
13
  export async function handleGetRecentInsights(args) {
14
- const { supabase, userId } = await getSupabase();
15
14
  const days = Math.min(Math.max(1, Number(args.days) || 3), 365);
16
15
  const limit = Math.min(Math.max(1, Number(args.limit) || 15), 100);
17
- const since = new Date();
18
- since.setDate(since.getDate() - days);
19
- const { data, error } = await supabase
20
- .from('captures')
21
- .select(`
22
- id, title, insight, source_url, source_type, content_category, tags, created_at,
23
- project_captures ( project_id, relevance, projects:project_id ( name ) )
24
- `)
25
- .eq('user_id', userId)
26
- .eq('status', 'complete')
27
- .gte('created_at', since.toISOString())
28
- .order('created_at', { ascending: false })
29
- .limit(limit);
30
- if (error)
31
- return `Error: ${error.message}`;
32
- if (!data || data.length === 0)
16
+ const data = await getRecentInsights({ days, limit });
17
+ if (!data.captures || data.captures.length === 0)
33
18
  return `No saves in the last ${days} days.`;
34
- const items = data.map((c, i) => {
19
+ const items = data.captures.map((c, i) => {
35
20
  const projects = c.project_captures
36
21
  ?.map((pc) => pc.projects?.name)
37
22
  .filter(Boolean)
@@ -40,15 +25,9 @@ export async function handleGetRecentInsights(args) {
40
25
  ` ${c.insight}\n` +
41
26
  ` ${c.content_category} | ${c.tags?.join(', ') || 'no tags'}`;
42
27
  }).join('\n\n');
43
- // Check for failed captures
44
- const { count: failedCount } = await supabase
45
- .from('captures')
46
- .select('*', { count: 'exact', head: true })
47
- .eq('user_id', userId)
48
- .eq('status', 'failed');
49
- let output = `*From Splicr — ${data.length} recent save(s):*\n\n${items}`;
50
- if (failedCount && failedCount > 0) {
51
- output += `\n\n_Note: ${failedCount} capture(s) failed processing. Use retry_failed to reprocess._`;
28
+ let output = `*From Splicr — ${data.captures.length} recent save(s):*\n\n${items}`;
29
+ if (data.failed_count > 0) {
30
+ output += `\n\n_Note: ${data.failed_count} capture(s) failed processing. Use retry_failed to reprocess._`;
52
31
  }
53
32
  return output;
54
33
  }
@@ -1 +1 @@
1
- {"version":3,"file":"get-recent-insights.js","sourceRoot":"","sources":["../../src/tools/get-recent-insights.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"get-recent-insights.js","sourceRoot":"","sources":["../../src/tools/get-recent-insights.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAEzD,MAAM,CAAC,MAAM,uBAAuB,GAAG;IACrC,IAAI,EAAE,qBAA8B;IACpC,WAAW,EAAE,6KAA6K;IAC1L,WAAW,EAAE;QACX,IAAI,EAAE,QAAiB;QACvB,UAAU,EAAE;YACV,IAAI,EAAE,EAAE,IAAI,EAAE,QAAiB,EAAE,WAAW,EAAE,0BAA0B,EAAE;YAC1E,KAAK,EAAE,EAAE,IAAI,EAAE,QAAiB,EAAE,WAAW,EAAE,2BAA2B,EAAE;SAC7E;KACF;CACF,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAAC,IAA6B;IACzE,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAChE,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;IAEnE,MAAM,IAAI,GAAG,MAAM,iBAAiB,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAEtD,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,wBAAwB,IAAI,QAAQ,CAAC;IAE9F,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,CAAS,EAAE,EAAE;QACpD,MAAM,QAAQ,GAAG,CAAC,CAAC,gBAAgB;YACjC,EAAE,GAAG,CAAC,CAAC,EAAO,EAAE,EAAE,CAAC,EAAE,CAAC,QAAQ,EAAE,IAAI,CAAC;aACpC,MAAM,CAAC,OAAO,CAAC;aACf,IAAI,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC;QAC3B,OAAO,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,KAAK,IAAI,UAAU,iBAAiB,QAAQ,IAAI;YACtE,MAAM,CAAC,CAAC,OAAO,IAAI;YACnB,MAAM,CAAC,CAAC,gBAAgB,MAAM,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,SAAS,EAAE,CAAC;IACpE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAEhB,IAAI,MAAM,GAAG,kBAAkB,IAAI,CAAC,QAAQ,CAAC,MAAM,wBAAwB,KAAK,EAAE,CAAC;IACnF,IAAI,IAAI,CAAC,YAAY,GAAG,CAAC,EAAE,CAAC;QAC1B,MAAM,IAAI,cAAc,IAAI,CAAC,YAAY,gEAAgE,CAAC;IAC5G,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"retry-failed.d.ts","sourceRoot":"","sources":["../../src/tools/retry-failed.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,iBAAiB;;;;;;;CAO7B,CAAC;AAEF,wBAAsB,iBAAiB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAuCvF"}
1
+ {"version":3,"file":"retry-failed.d.ts","sourceRoot":"","sources":["../../src/tools/retry-failed.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,iBAAiB;;;;;;;CAO7B,CAAC;AAEF,wBAAsB,iBAAiB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAMvF"}
@@ -1,5 +1,4 @@
1
- import { loadAuth, hasAuth } from '../auth.js';
2
- import { loadConfig } from '../config.js';
1
+ import { retryFailed } from '../lib/api-client.js';
3
2
  export const retryFailedSchema = {
4
3
  name: 'retry_failed',
5
4
  description: `Retry processing of failed captures in Splicr. Some captures may fail during AI processing (extraction, distillation, or routing). This tool requeues them for reprocessing. Returns the number of captures queued for retry.`,
@@ -9,45 +8,10 @@ export const retryFailedSchema = {
9
8
  },
10
9
  };
11
10
  export async function handleRetryFailed(_args) {
12
- const config = loadConfig();
13
- // Get auth token for API call
14
- let token;
15
- if (hasAuth()) {
16
- const auth = await loadAuth();
17
- token = auth.accessToken;
18
- }
19
- else {
20
- return 'Not authenticated. Run `splicr login` first to enable retry.';
21
- }
22
- // Call API server's retry endpoint
23
- const url = `${config.apiServerUrl}/captures/retry-failed`;
24
- try {
25
- const response = await fetch(url, {
26
- method: 'POST',
27
- headers: {
28
- 'Authorization': `Bearer ${token}`,
29
- 'Content-Type': 'application/json',
30
- },
31
- signal: AbortSignal.timeout(15000),
32
- });
33
- if (!response.ok) {
34
- let body = '';
35
- try {
36
- body = await response.text();
37
- }
38
- catch { }
39
- return `Retry request failed (${response.status}): ${body}`;
40
- }
41
- const result = await response.json();
42
- if (result.data.retried === 0) {
43
- return 'No failed captures to retry.';
44
- }
45
- return `*Splicr:* ${result.data.message}`;
46
- }
47
- catch (err) {
48
- if (err.name === 'TimeoutError')
49
- return 'Retry request timed out after 15s.';
50
- return `Retry request failed: ${err.message}`;
11
+ const result = await retryFailed();
12
+ if (result.retried === 0) {
13
+ return 'No failed captures to retry.';
51
14
  }
15
+ return `*Splicr:* ${result.message}`;
52
16
  }
53
17
  //# sourceMappingURL=retry-failed.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"retry-failed.js","sourceRoot":"","sources":["../../src/tools/retry-failed.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,IAAI,EAAE,cAAuB;IAC7B,WAAW,EAAE,+NAA+N;IAC5O,WAAW,EAAE;QACX,IAAI,EAAE,QAAiB;QACvB,UAAU,EAAE,EAAE;KACf;CACF,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,KAA8B;IACpE,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;IAE5B,8BAA8B;IAC9B,IAAI,KAAa,CAAC;IAClB,IAAI,OAAO,EAAE,EAAE,CAAC;QACd,MAAM,IAAI,GAAG,MAAM,QAAQ,EAAE,CAAC;QAC9B,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC;IAC3B,CAAC;SAAM,CAAC;QACN,OAAO,8DAA8D,CAAC;IACxE,CAAC;IAED,mCAAmC;IACnC,MAAM,GAAG,GAAG,GAAG,MAAM,CAAC,YAAY,wBAAwB,CAAC;IAC3D,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;YAChC,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,eAAe,EAAE,UAAU,KAAK,EAAE;gBAClC,cAAc,EAAE,kBAAkB;aACnC;YACD,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC;SACnC,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,IAAI,IAAI,GAAG,EAAE,CAAC;YACd,IAAI,CAAC;gBAAC,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAA,CAAC;YAC9C,OAAO,yBAAyB,QAAQ,CAAC,MAAM,MAAM,IAAI,EAAE,CAAC;QAC9D,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAoD,CAAC;QACvF,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,KAAK,CAAC,EAAE,CAAC;YAC9B,OAAO,8BAA8B,CAAC;QACxC,CAAC;QACD,OAAO,aAAa,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;IAC5C,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,IAAI,GAAG,CAAC,IAAI,KAAK,cAAc;YAAE,OAAO,oCAAoC,CAAC;QAC7E,OAAO,yBAAyB,GAAG,CAAC,OAAO,EAAE,CAAC;IAChD,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"retry-failed.js","sourceRoot":"","sources":["../../src/tools/retry-failed.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEnD,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,IAAI,EAAE,cAAuB;IAC7B,WAAW,EAAE,+NAA+N;IAC5O,WAAW,EAAE;QACX,IAAI,EAAE,QAAiB;QACvB,UAAU,EAAE,EAAE;KACf;CACF,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,KAA8B;IACpE,MAAM,MAAM,GAAG,MAAM,WAAW,EAAE,CAAC;IACnC,IAAI,MAAM,CAAC,OAAO,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,8BAA8B,CAAC;IACxC,CAAC;IACD,OAAO,aAAa,MAAM,CAAC,OAAO,EAAE,CAAC;AACvC,CAAC"}
@@ -24,7 +24,7 @@ export declare const saveFromAgentSchema: {
24
24
  description: string;
25
25
  };
26
26
  };
27
- required: ("title" | "content")[];
27
+ required: ("content" | "title")[];
28
28
  };
29
29
  };
30
30
  export declare function handleSaveFromAgent(args: Record<string, unknown>): Promise<string>;
@@ -1 +1 @@
1
- {"version":3,"file":"save-from-agent.d.ts","sourceRoot":"","sources":["../../src/tools/save-from-agent.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAa/B,CAAC;AAEF,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAqExF"}
1
+ {"version":3,"file":"save-from-agent.d.ts","sourceRoot":"","sources":["../../src/tools/save-from-agent.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAa/B,CAAC;AAEF,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CA2BxF"}
@@ -1,5 +1,4 @@
1
- import { createHash } from 'crypto';
2
- import { getSupabase } from '../lib/supabase.js';
1
+ import { saveFromAgent } from '../lib/api-client.js';
3
2
  import { detectProject } from '../lib/project-detector.js';
4
3
  export const saveFromAgentSchema = {
5
4
  name: 'save_from_agent',
@@ -16,69 +15,28 @@ export const saveFromAgentSchema = {
16
15
  },
17
16
  };
18
17
  export async function handleSaveFromAgent(args) {
19
- const { supabase, userId } = await getSupabase();
20
18
  const content = args.content;
21
19
  const title = args.title;
22
20
  const projectArg = args.project;
23
21
  const tags = args.tags || [];
24
- // Content hash for dedup
25
- const contentHash = createHash('sha256').update(content).digest('hex').substring(0, 16);
26
- // Insert capture (agent saves are already distilled — skip AI pipeline)
27
- const { data: capture, error } = await supabase
28
- .from('captures')
29
- .insert({
30
- user_id: userId,
31
- source_type: 'agent',
32
- captured_from: 'ide_agent',
22
+ // Resolve project name
23
+ let projectName;
24
+ if (projectArg === 'auto') {
25
+ const detected = await detectProject(process.cwd());
26
+ projectName = detected?.name;
27
+ }
28
+ else if (projectArg && projectArg !== 'all') {
29
+ projectName = projectArg;
30
+ }
31
+ const result = await saveFromAgent({
32
+ content,
33
33
  title,
34
- raw_content: content,
35
- insight: content,
36
- content_category: 'technique',
34
+ project_name: projectName,
37
35
  tags,
38
- content_hash: contentHash,
39
- status: 'complete',
40
- processed_at: new Date().toISOString(),
41
- })
42
- .select()
43
- .single();
44
- // Duplicate detected by DB constraint
45
- if (error?.code === '23505' || error?.message?.includes('duplicate key')) {
36
+ });
37
+ if (result.duplicate) {
46
38
  return `*Already saved in Splicr:* "${title}"`;
47
39
  }
48
- if (error)
49
- return `Error saving: ${error.message}`;
50
- if (!capture)
51
- return 'Error saving: no data returned from insert';
52
- // Route to project if specified
53
- if (projectArg && projectArg !== 'all') {
54
- let projectId;
55
- if (projectArg === 'auto') {
56
- const detected = await detectProject(process.cwd());
57
- projectId = detected?.id;
58
- }
59
- else {
60
- const { data, error: lookupError } = await supabase
61
- .from('projects')
62
- .select('id')
63
- .eq('user_id', userId)
64
- .ilike('name', projectArg)
65
- .limit(1);
66
- if (!lookupError) {
67
- projectId = data?.[0]?.id;
68
- }
69
- }
70
- if (projectId) {
71
- const { error: routeError } = await supabase.from('project_captures').insert({
72
- project_id: projectId,
73
- capture_id: capture.id,
74
- relevance: 'high',
75
- routed_by: 'agent',
76
- });
77
- if (routeError) {
78
- return `*Saved to Splicr:* "${title}" (warning: routing to project failed)`;
79
- }
80
- }
81
- }
82
- return `*Saved to Splicr:* "${title}"${projectArg ? ` → routed to ${projectArg}` : ''}`;
40
+ return `*Saved to Splicr:* "${title}"${result.project_name ? ` → routed to ${result.project_name}` : ''}`;
83
41
  }
84
42
  //# sourceMappingURL=save-from-agent.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"save-from-agent.js","sourceRoot":"","sources":["../../src/tools/save-from-agent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"save-from-agent.js","sourceRoot":"","sources":["../../src/tools/save-from-agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAE3D,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,IAAI,EAAE,iBAA0B;IAChC,WAAW,EAAE,6NAA6N;IAC1O,WAAW,EAAE;QACX,IAAI,EAAE,QAAiB;QACvB,UAAU,EAAE;YACV,OAAO,EAAE,EAAE,IAAI,EAAE,QAAiB,EAAE,WAAW,EAAE,uBAAuB,EAAE;YAC1E,KAAK,EAAE,EAAE,IAAI,EAAE,QAAiB,EAAE,WAAW,EAAE,aAAa,EAAE;YAC9D,OAAO,EAAE,EAAE,IAAI,EAAE,QAAiB,EAAE,WAAW,EAAE,gCAAgC,EAAE;YACnF,IAAI,EAAE,EAAE,IAAI,EAAE,OAAgB,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAiB,EAAE,EAAE,WAAW,EAAE,MAAM,EAAE;SAC1F;QACD,QAAQ,EAAE,CAAC,SAAkB,EAAE,OAAgB,CAAC;KACjD;CACF,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,IAA6B;IACrE,MAAM,OAAO,GAAG,IAAI,CAAC,OAAiB,CAAC;IACvC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAe,CAAC;IACnC,MAAM,UAAU,GAAG,IAAI,CAAC,OAA6B,CAAC;IACtD,MAAM,IAAI,GAAI,IAAI,CAAC,IAAiB,IAAI,EAAE,CAAC;IAE3C,uBAAuB;IACvB,IAAI,WAA+B,CAAC;IACpC,IAAI,UAAU,KAAK,MAAM,EAAE,CAAC;QAC1B,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;QACpD,WAAW,GAAG,QAAQ,EAAE,IAAI,CAAC;IAC/B,CAAC;SAAM,IAAI,UAAU,IAAI,UAAU,KAAK,KAAK,EAAE,CAAC;QAC9C,WAAW,GAAG,UAAU,CAAC;IAC3B,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC;QACjC,OAAO;QACP,KAAK;QACL,YAAY,EAAE,WAAW;QACzB,IAAI;KACL,CAAC,CAAC;IAEH,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;QACrB,OAAO,+BAA+B,KAAK,GAAG,CAAC;IACjD,CAAC;IAED,OAAO,uBAAuB,KAAK,IAAI,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,gBAAgB,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;AAC5G,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"search-knowledge.d.ts","sourceRoot":"","sources":["../../src/tools/search-knowledge.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;CAsBjC,CAAC;AAyDF,wBAAsB,qBAAqB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CA2E1F"}
1
+ {"version":3,"file":"search-knowledge.d.ts","sourceRoot":"","sources":["../../src/tools/search-knowledge.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;CAsBjC,CAAC;AAeF,wBAAsB,qBAAqB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CA6B1F"}