gitmem-mcp 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.
- package/CHANGELOG.md +47 -0
- package/CLAUDE.md.template +65 -0
- package/LICENSE +21 -0
- package/README.md +221 -0
- package/bin/gitmem.js +383 -0
- package/dist/commands/check.d.ts +33 -0
- package/dist/commands/check.d.ts.map +1 -0
- package/dist/commands/check.js +492 -0
- package/dist/commands/check.js.map +1 -0
- package/dist/constants/closing-questions.d.ts +40 -0
- package/dist/constants/closing-questions.d.ts.map +1 -0
- package/dist/constants/closing-questions.js +107 -0
- package/dist/constants/closing-questions.js.map +1 -0
- package/dist/diagnostics/anonymizer.d.ts +55 -0
- package/dist/diagnostics/anonymizer.d.ts.map +1 -0
- package/dist/diagnostics/anonymizer.js +191 -0
- package/dist/diagnostics/anonymizer.js.map +1 -0
- package/dist/diagnostics/channels.d.ts +132 -0
- package/dist/diagnostics/channels.d.ts.map +1 -0
- package/dist/diagnostics/channels.js +150 -0
- package/dist/diagnostics/channels.js.map +1 -0
- package/dist/diagnostics/collector.d.ts +183 -0
- package/dist/diagnostics/collector.d.ts.map +1 -0
- package/dist/diagnostics/collector.js +227 -0
- package/dist/diagnostics/collector.js.map +1 -0
- package/dist/diagnostics/index.d.ts +28 -0
- package/dist/diagnostics/index.d.ts.map +1 -0
- package/dist/diagnostics/index.js +31 -0
- package/dist/diagnostics/index.js.map +1 -0
- package/dist/index.d.ts +13 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +18 -0
- package/dist/index.js.map +1 -0
- package/dist/schemas/absorb-observations.d.ts +63 -0
- package/dist/schemas/absorb-observations.d.ts.map +1 -0
- package/dist/schemas/absorb-observations.js +25 -0
- package/dist/schemas/absorb-observations.js.map +1 -0
- package/dist/schemas/active-sessions.d.ts +71 -0
- package/dist/schemas/active-sessions.d.ts.map +1 -0
- package/dist/schemas/active-sessions.js +19 -0
- package/dist/schemas/active-sessions.js.map +1 -0
- package/dist/schemas/analyze.d.ts +38 -0
- package/dist/schemas/analyze.d.ts.map +1 -0
- package/dist/schemas/analyze.js +30 -0
- package/dist/schemas/analyze.js.map +1 -0
- package/dist/schemas/common.d.ts +55 -0
- package/dist/schemas/common.d.ts.map +1 -0
- package/dist/schemas/common.js +65 -0
- package/dist/schemas/common.js.map +1 -0
- package/dist/schemas/create-decision.d.ts +48 -0
- package/dist/schemas/create-decision.d.ts.map +1 -0
- package/dist/schemas/create-decision.js +31 -0
- package/dist/schemas/create-decision.js.map +1 -0
- package/dist/schemas/create-learning.d.ts +107 -0
- package/dist/schemas/create-learning.d.ts.map +1 -0
- package/dist/schemas/create-learning.js +64 -0
- package/dist/schemas/create-learning.js.map +1 -0
- package/dist/schemas/get-transcript.d.ts +24 -0
- package/dist/schemas/get-transcript.d.ts.map +1 -0
- package/dist/schemas/get-transcript.js +22 -0
- package/dist/schemas/get-transcript.js.map +1 -0
- package/dist/schemas/index.d.ts +23 -0
- package/dist/schemas/index.d.ts.map +1 -0
- package/dist/schemas/index.js +23 -0
- package/dist/schemas/index.js.map +1 -0
- package/dist/schemas/log.d.ts +36 -0
- package/dist/schemas/log.d.ts.map +1 -0
- package/dist/schemas/log.js +27 -0
- package/dist/schemas/log.js.map +1 -0
- package/dist/schemas/prepare-context.d.ts +41 -0
- package/dist/schemas/prepare-context.d.ts.map +1 -0
- package/dist/schemas/prepare-context.js +31 -0
- package/dist/schemas/prepare-context.js.map +1 -0
- package/dist/schemas/recall.d.ts +41 -0
- package/dist/schemas/recall.d.ts.map +1 -0
- package/dist/schemas/recall.js +47 -0
- package/dist/schemas/recall.js.map +1 -0
- package/dist/schemas/record-scar-usage-batch.d.ts +82 -0
- package/dist/schemas/record-scar-usage-batch.d.ts.map +1 -0
- package/dist/schemas/record-scar-usage-batch.js +25 -0
- package/dist/schemas/record-scar-usage-batch.js.map +1 -0
- package/dist/schemas/record-scar-usage.d.ts +51 -0
- package/dist/schemas/record-scar-usage.d.ts.map +1 -0
- package/dist/schemas/record-scar-usage.js +32 -0
- package/dist/schemas/record-scar-usage.js.map +1 -0
- package/dist/schemas/save-transcript.d.ts +38 -0
- package/dist/schemas/save-transcript.d.ts.map +1 -0
- package/dist/schemas/save-transcript.js +30 -0
- package/dist/schemas/save-transcript.js.map +1 -0
- package/dist/schemas/search.d.ts +36 -0
- package/dist/schemas/search.d.ts.map +1 -0
- package/dist/schemas/search.js +27 -0
- package/dist/schemas/search.js.map +1 -0
- package/dist/schemas/session-close.d.ts +371 -0
- package/dist/schemas/session-close.d.ts.map +1 -0
- package/dist/schemas/session-close.js +95 -0
- package/dist/schemas/session-close.js.map +1 -0
- package/dist/schemas/session-start.d.ts +46 -0
- package/dist/schemas/session-start.d.ts.map +1 -0
- package/dist/schemas/session-start.js +33 -0
- package/dist/schemas/session-start.js.map +1 -0
- package/dist/schemas/thread.d.ts +72 -0
- package/dist/schemas/thread.d.ts.map +1 -0
- package/dist/schemas/thread.js +39 -0
- package/dist/schemas/thread.js.map +1 -0
- package/dist/server.d.ts +22 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +313 -0
- package/dist/server.js.map +1 -0
- package/dist/services/active-sessions.d.ts +66 -0
- package/dist/services/active-sessions.d.ts.map +1 -0
- package/dist/services/active-sessions.js +311 -0
- package/dist/services/active-sessions.js.map +1 -0
- package/dist/services/agent-detection.d.ts +25 -0
- package/dist/services/agent-detection.d.ts.map +1 -0
- package/dist/services/agent-detection.js +93 -0
- package/dist/services/agent-detection.js.map +1 -0
- package/dist/services/analytics.d.ts +201 -0
- package/dist/services/analytics.d.ts.map +1 -0
- package/dist/services/analytics.js +483 -0
- package/dist/services/analytics.js.map +1 -0
- package/dist/services/cache.d.ts +148 -0
- package/dist/services/cache.d.ts.map +1 -0
- package/dist/services/cache.js +384 -0
- package/dist/services/cache.js.map +1 -0
- package/dist/services/cache.test.d.ts +8 -0
- package/dist/services/cache.test.d.ts.map +1 -0
- package/dist/services/cache.test.js +267 -0
- package/dist/services/cache.test.js.map +1 -0
- package/dist/services/compliance-validator.d.ts +30 -0
- package/dist/services/compliance-validator.d.ts.map +1 -0
- package/dist/services/compliance-validator.js +257 -0
- package/dist/services/compliance-validator.js.map +1 -0
- package/dist/services/config.d.ts +48 -0
- package/dist/services/config.d.ts.map +1 -0
- package/dist/services/config.js +128 -0
- package/dist/services/config.js.map +1 -0
- package/dist/services/embedding.d.ts +58 -0
- package/dist/services/embedding.d.ts.map +1 -0
- package/dist/services/embedding.js +243 -0
- package/dist/services/embedding.js.map +1 -0
- package/dist/services/gitmem-dir.d.ts +38 -0
- package/dist/services/gitmem-dir.d.ts.map +1 -0
- package/dist/services/gitmem-dir.js +84 -0
- package/dist/services/gitmem-dir.js.map +1 -0
- package/dist/services/local-file-storage.d.ts +56 -0
- package/dist/services/local-file-storage.d.ts.map +1 -0
- package/dist/services/local-file-storage.js +213 -0
- package/dist/services/local-file-storage.js.map +1 -0
- package/dist/services/local-vector-search.d.ts +137 -0
- package/dist/services/local-vector-search.d.ts.map +1 -0
- package/dist/services/local-vector-search.js +311 -0
- package/dist/services/local-vector-search.js.map +1 -0
- package/dist/services/metrics.d.ts +104 -0
- package/dist/services/metrics.d.ts.map +1 -0
- package/dist/services/metrics.js +264 -0
- package/dist/services/metrics.js.map +1 -0
- package/dist/services/session-state.d.ts +113 -0
- package/dist/services/session-state.d.ts.map +1 -0
- package/dist/services/session-state.js +203 -0
- package/dist/services/session-state.js.map +1 -0
- package/dist/services/startup.d.ts +112 -0
- package/dist/services/startup.d.ts.map +1 -0
- package/dist/services/startup.js +436 -0
- package/dist/services/startup.js.map +1 -0
- package/dist/services/storage.d.ts +43 -0
- package/dist/services/storage.d.ts.map +1 -0
- package/dist/services/storage.js +92 -0
- package/dist/services/storage.js.map +1 -0
- package/dist/services/supabase-client.d.ts +163 -0
- package/dist/services/supabase-client.d.ts.map +1 -0
- package/dist/services/supabase-client.js +510 -0
- package/dist/services/supabase-client.js.map +1 -0
- package/dist/services/thread-dedup.d.ts +44 -0
- package/dist/services/thread-dedup.d.ts.map +1 -0
- package/dist/services/thread-dedup.js +113 -0
- package/dist/services/thread-dedup.js.map +1 -0
- package/dist/services/thread-manager.d.ts +77 -0
- package/dist/services/thread-manager.d.ts.map +1 -0
- package/dist/services/thread-manager.js +250 -0
- package/dist/services/thread-manager.js.map +1 -0
- package/dist/services/thread-suggestions.d.ts +66 -0
- package/dist/services/thread-suggestions.d.ts.map +1 -0
- package/dist/services/thread-suggestions.js +243 -0
- package/dist/services/thread-suggestions.js.map +1 -0
- package/dist/services/thread-supabase.d.ts +111 -0
- package/dist/services/thread-supabase.d.ts.map +1 -0
- package/dist/services/thread-supabase.js +459 -0
- package/dist/services/thread-supabase.js.map +1 -0
- package/dist/services/thread-vitality.d.ts +65 -0
- package/dist/services/thread-vitality.d.ts.map +1 -0
- package/dist/services/thread-vitality.js +143 -0
- package/dist/services/thread-vitality.js.map +1 -0
- package/dist/services/tier.d.ts +52 -0
- package/dist/services/tier.d.ts.map +1 -0
- package/dist/services/tier.js +109 -0
- package/dist/services/tier.js.map +1 -0
- package/dist/services/timezone.d.ts +37 -0
- package/dist/services/timezone.d.ts.map +1 -0
- package/dist/services/timezone.js +147 -0
- package/dist/services/timezone.js.map +1 -0
- package/dist/services/transcript-chunker.d.ts +18 -0
- package/dist/services/transcript-chunker.d.ts.map +1 -0
- package/dist/services/transcript-chunker.js +237 -0
- package/dist/services/transcript-chunker.js.map +1 -0
- package/dist/services/triple-writer.d.ts +128 -0
- package/dist/services/triple-writer.d.ts.map +1 -0
- package/dist/services/triple-writer.js +338 -0
- package/dist/services/triple-writer.js.map +1 -0
- package/dist/services/variant-assignment.d.ts +92 -0
- package/dist/services/variant-assignment.d.ts.map +1 -0
- package/dist/services/variant-assignment.js +196 -0
- package/dist/services/variant-assignment.js.map +1 -0
- package/dist/tools/absorb-observations.d.ts +16 -0
- package/dist/tools/absorb-observations.d.ts.map +1 -0
- package/dist/tools/absorb-observations.js +82 -0
- package/dist/tools/absorb-observations.js.map +1 -0
- package/dist/tools/analyze.d.ts +55 -0
- package/dist/tools/analyze.d.ts.map +1 -0
- package/dist/tools/analyze.js +139 -0
- package/dist/tools/analyze.js.map +1 -0
- package/dist/tools/cleanup-threads.d.ts +47 -0
- package/dist/tools/cleanup-threads.d.ts.map +1 -0
- package/dist/tools/cleanup-threads.js +127 -0
- package/dist/tools/cleanup-threads.js.map +1 -0
- package/dist/tools/confirm-scars.d.ts +23 -0
- package/dist/tools/confirm-scars.d.ts.map +1 -0
- package/dist/tools/confirm-scars.js +209 -0
- package/dist/tools/confirm-scars.js.map +1 -0
- package/dist/tools/create-decision.d.ts +15 -0
- package/dist/tools/create-decision.d.ts.map +1 -0
- package/dist/tools/create-decision.js +138 -0
- package/dist/tools/create-decision.js.map +1 -0
- package/dist/tools/create-learning.d.ts +15 -0
- package/dist/tools/create-learning.d.ts.map +1 -0
- package/dist/tools/create-learning.js +226 -0
- package/dist/tools/create-learning.js.map +1 -0
- package/dist/tools/create-thread.d.ts +42 -0
- package/dist/tools/create-thread.d.ts.map +1 -0
- package/dist/tools/create-thread.js +180 -0
- package/dist/tools/create-thread.js.map +1 -0
- package/dist/tools/definitions.d.ts +5013 -0
- package/dist/tools/definitions.d.ts.map +1 -0
- package/dist/tools/definitions.js +2017 -0
- package/dist/tools/definitions.js.map +1 -0
- package/dist/tools/dismiss-suggestion.d.ts +20 -0
- package/dist/tools/dismiss-suggestion.d.ts.map +1 -0
- package/dist/tools/dismiss-suggestion.js +40 -0
- package/dist/tools/dismiss-suggestion.js.map +1 -0
- package/dist/tools/get-transcript.d.ts +24 -0
- package/dist/tools/get-transcript.d.ts.map +1 -0
- package/dist/tools/get-transcript.js +52 -0
- package/dist/tools/get-transcript.js.map +1 -0
- package/dist/tools/graph-traverse.d.ts +83 -0
- package/dist/tools/graph-traverse.d.ts.map +1 -0
- package/dist/tools/graph-traverse.js +394 -0
- package/dist/tools/graph-traverse.js.map +1 -0
- package/dist/tools/list-threads.d.ts +15 -0
- package/dist/tools/list-threads.d.ts.map +1 -0
- package/dist/tools/list-threads.js +114 -0
- package/dist/tools/list-threads.js.map +1 -0
- package/dist/tools/log.d.ts +43 -0
- package/dist/tools/log.d.ts.map +1 -0
- package/dist/tools/log.js +157 -0
- package/dist/tools/log.js.map +1 -0
- package/dist/tools/prepare-context.d.ts +36 -0
- package/dist/tools/prepare-context.d.ts.map +1 -0
- package/dist/tools/prepare-context.js +353 -0
- package/dist/tools/prepare-context.js.map +1 -0
- package/dist/tools/promote-suggestion.d.ts +25 -0
- package/dist/tools/promote-suggestion.d.ts.map +1 -0
- package/dist/tools/promote-suggestion.js +60 -0
- package/dist/tools/promote-suggestion.js.map +1 -0
- package/dist/tools/recall.d.ts +77 -0
- package/dist/tools/recall.d.ts.map +1 -0
- package/dist/tools/recall.js +423 -0
- package/dist/tools/recall.js.map +1 -0
- package/dist/tools/recall.test.d.ts +5 -0
- package/dist/tools/recall.test.d.ts.map +1 -0
- package/dist/tools/recall.test.js +155 -0
- package/dist/tools/recall.test.js.map +1 -0
- package/dist/tools/record-scar-usage-batch.d.ts +10 -0
- package/dist/tools/record-scar-usage-batch.d.ts.map +1 -0
- package/dist/tools/record-scar-usage-batch.js +153 -0
- package/dist/tools/record-scar-usage-batch.js.map +1 -0
- package/dist/tools/record-scar-usage.d.ts +14 -0
- package/dist/tools/record-scar-usage.d.ts.map +1 -0
- package/dist/tools/record-scar-usage.js +94 -0
- package/dist/tools/record-scar-usage.js.map +1 -0
- package/dist/tools/resolve-thread.d.ts +16 -0
- package/dist/tools/resolve-thread.d.ts.map +1 -0
- package/dist/tools/resolve-thread.js +102 -0
- package/dist/tools/resolve-thread.js.map +1 -0
- package/dist/tools/save-transcript.d.ts +29 -0
- package/dist/tools/save-transcript.d.ts.map +1 -0
- package/dist/tools/save-transcript.js +97 -0
- package/dist/tools/save-transcript.js.map +1 -0
- package/dist/tools/search.d.ts +46 -0
- package/dist/tools/search.d.ts.map +1 -0
- package/dist/tools/search.js +186 -0
- package/dist/tools/search.js.map +1 -0
- package/dist/tools/session-close.d.ts +14 -0
- package/dist/tools/session-close.d.ts.map +1 -0
- package/dist/tools/session-close.js +881 -0
- package/dist/tools/session-close.js.map +1 -0
- package/dist/tools/session-start.d.ts +38 -0
- package/dist/tools/session-start.d.ts.map +1 -0
- package/dist/tools/session-start.js +1104 -0
- package/dist/tools/session-start.js.map +1 -0
- package/dist/types/index.d.ts +456 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +5 -0
- package/dist/types/index.js.map +1 -0
- package/package.json +76 -0
- package/schema/setup.sql +193 -0
- package/schema/starter-scars.json +206 -0
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Unified Storage Abstraction
|
|
3
|
+
*
|
|
4
|
+
* Routes to LocalFileStorage (free tier) or Supabase (pro/dev tier)
|
|
5
|
+
* based on the detected tier. Tools call getStorage() instead of
|
|
6
|
+
* importing supabase-client directly.
|
|
7
|
+
*/
|
|
8
|
+
import { hasSupabase, getTableName } from "./tier.js";
|
|
9
|
+
/**
|
|
10
|
+
* Supabase storage backend (pro/dev tier)
|
|
11
|
+
*/
|
|
12
|
+
class SupabaseStorage {
|
|
13
|
+
async query(collection, options = {}) {
|
|
14
|
+
// Dynamic import to avoid loading Supabase in free tier
|
|
15
|
+
const supabase = await import("./supabase-client.js");
|
|
16
|
+
const table = getTableName(collection);
|
|
17
|
+
return supabase.directQuery(table, {
|
|
18
|
+
select: options.select || "*",
|
|
19
|
+
filters: options.filters || {},
|
|
20
|
+
order: options.order,
|
|
21
|
+
limit: options.limit,
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
async get(collection, id) {
|
|
25
|
+
const results = await this.query(collection, {
|
|
26
|
+
filters: { id: `eq.${id}` },
|
|
27
|
+
limit: 1,
|
|
28
|
+
});
|
|
29
|
+
return results[0] || null;
|
|
30
|
+
}
|
|
31
|
+
async upsert(collection, data) {
|
|
32
|
+
const supabase = await import("./supabase-client.js");
|
|
33
|
+
const table = getTableName(collection);
|
|
34
|
+
return supabase.directUpsert(table, data);
|
|
35
|
+
}
|
|
36
|
+
async search(query, k = 5) {
|
|
37
|
+
// For pro/dev, local vector search is handled separately in recall.ts
|
|
38
|
+
// This is a fallback that uses Supabase scar search via MCP
|
|
39
|
+
const supabase = await import("./supabase-client.js");
|
|
40
|
+
try {
|
|
41
|
+
const results = await supabase.scarSearch(query, k);
|
|
42
|
+
return Array.isArray(results) ? results : [];
|
|
43
|
+
}
|
|
44
|
+
catch (error) {
|
|
45
|
+
console.error("[storage] Supabase search failed:", error);
|
|
46
|
+
return [];
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Local file storage backend (free tier)
|
|
52
|
+
*/
|
|
53
|
+
class LocalStorage {
|
|
54
|
+
async query(collection, options = {}) {
|
|
55
|
+
const { getLocalFileStorage } = await import("./local-file-storage.js");
|
|
56
|
+
const storage = getLocalFileStorage();
|
|
57
|
+
return storage.list(collection, options);
|
|
58
|
+
}
|
|
59
|
+
async get(collection, id) {
|
|
60
|
+
const { getLocalFileStorage } = await import("./local-file-storage.js");
|
|
61
|
+
const storage = getLocalFileStorage();
|
|
62
|
+
return storage.get(collection, id);
|
|
63
|
+
}
|
|
64
|
+
async upsert(collection, data) {
|
|
65
|
+
const { getLocalFileStorage } = await import("./local-file-storage.js");
|
|
66
|
+
const storage = getLocalFileStorage();
|
|
67
|
+
return storage.upsert(collection, data);
|
|
68
|
+
}
|
|
69
|
+
async search(query, k = 5) {
|
|
70
|
+
const { getLocalFileStorage } = await import("./local-file-storage.js");
|
|
71
|
+
const storage = getLocalFileStorage();
|
|
72
|
+
return storage.keywordSearch(query, k);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
// Singleton
|
|
76
|
+
let _storage = null;
|
|
77
|
+
/**
|
|
78
|
+
* Get the storage backend for the current tier
|
|
79
|
+
*/
|
|
80
|
+
export function getStorage() {
|
|
81
|
+
if (!_storage) {
|
|
82
|
+
_storage = hasSupabase() ? new SupabaseStorage() : new LocalStorage();
|
|
83
|
+
}
|
|
84
|
+
return _storage;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Reset storage (for testing)
|
|
88
|
+
*/
|
|
89
|
+
export function resetStorage() {
|
|
90
|
+
_storage = null;
|
|
91
|
+
}
|
|
92
|
+
//# sourceMappingURL=storage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"storage.js","sourceRoot":"","sources":["../../src/services/storage.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Supabase MCP Client
|
|
3
|
+
*
|
|
4
|
+
* HTTP client for ww-mcp Edge Function following the pattern from
|
|
5
|
+
* agents/coda/src/services/supabase-mcp.js
|
|
6
|
+
*
|
|
7
|
+
* Uses JSON-RPC 2.0 protocol over HTTPS.
|
|
8
|
+
* Integrates with CacheService for performance (OD-473).
|
|
9
|
+
*/
|
|
10
|
+
import type { Project, SupabaseListOptions, SupabaseSearchOptions } from "../types/index.js";
|
|
11
|
+
/**
|
|
12
|
+
* Check if Supabase is configured
|
|
13
|
+
*/
|
|
14
|
+
export declare function isConfigured(): boolean;
|
|
15
|
+
/**
|
|
16
|
+
* List records from a table with optional filters
|
|
17
|
+
*/
|
|
18
|
+
export declare function listRecords<T = unknown>(options: SupabaseListOptions): Promise<T[]>;
|
|
19
|
+
/**
|
|
20
|
+
* Get a single record by ID
|
|
21
|
+
*/
|
|
22
|
+
export declare function getRecord<T = unknown>(table: string, id: string): Promise<T | null>;
|
|
23
|
+
/**
|
|
24
|
+
* Upsert (insert or update) a record
|
|
25
|
+
*/
|
|
26
|
+
export declare function upsertRecord<T = unknown>(table: string, data: Record<string, unknown>): Promise<T>;
|
|
27
|
+
/**
|
|
28
|
+
* Semantic search across tables
|
|
29
|
+
*/
|
|
30
|
+
export declare function semanticSearch<T = unknown>(options: SupabaseSearchOptions): Promise<T[]>;
|
|
31
|
+
/**
|
|
32
|
+
* Query Supabase REST API directly (bypasses ww-mcp)
|
|
33
|
+
*
|
|
34
|
+
* Used for bulk operations like loading all scars with embeddings.
|
|
35
|
+
* ww-mcp doesn't return embeddings by default to avoid bloated responses,
|
|
36
|
+
* but for local vector search we need them.
|
|
37
|
+
*/
|
|
38
|
+
export declare function directQuery<T = unknown>(table: string, options?: {
|
|
39
|
+
select?: string;
|
|
40
|
+
filters?: Record<string, string>;
|
|
41
|
+
order?: string;
|
|
42
|
+
limit?: number;
|
|
43
|
+
}): Promise<T[]>;
|
|
44
|
+
/**
|
|
45
|
+
* Paginated fetch — retrieves ALL matching rows using PostgREST Range headers.
|
|
46
|
+
* Use instead of directQuery when the result set may exceed a single page.
|
|
47
|
+
*
|
|
48
|
+
* @param pageSize Rows per request (default 1000)
|
|
49
|
+
* @param maxRows Safety cap to prevent runaway queries (default 10000)
|
|
50
|
+
*/
|
|
51
|
+
export declare function directQueryAll<T = unknown>(table: string, options?: {
|
|
52
|
+
select?: string;
|
|
53
|
+
filters?: Record<string, string>;
|
|
54
|
+
order?: string;
|
|
55
|
+
}, pageSize?: number, maxRows?: number): Promise<T[]>;
|
|
56
|
+
/**
|
|
57
|
+
* Knowledge triple from knowledge_triples table (OD-466)
|
|
58
|
+
*/
|
|
59
|
+
export interface KnowledgeTriple {
|
|
60
|
+
subject: string;
|
|
61
|
+
predicate: string;
|
|
62
|
+
object: string;
|
|
63
|
+
event_time: string;
|
|
64
|
+
decay_weight: number;
|
|
65
|
+
half_life_days: number;
|
|
66
|
+
decay_floor: number;
|
|
67
|
+
source_id: string;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Fetch related knowledge triples for a set of scar IDs (OD-466)
|
|
71
|
+
*
|
|
72
|
+
* Queries knowledge_triples table where source_id matches any of the provided scar IDs.
|
|
73
|
+
* Returns triples grouped by source_id for easy attachment to scars.
|
|
74
|
+
*/
|
|
75
|
+
export declare function fetchRelatedTriples(scarIds: string[]): Promise<Map<string, KnowledgeTriple[]>>;
|
|
76
|
+
/**
|
|
77
|
+
* Upsert a record directly to Supabase REST API (bypasses ww-mcp)
|
|
78
|
+
*
|
|
79
|
+
* Used for tests where ww-mcp authentication is problematic.
|
|
80
|
+
* Uses Supabase REST API's upsert capability with Prefer: resolution=merge-duplicates.
|
|
81
|
+
*/
|
|
82
|
+
export declare function directUpsert<T = unknown>(table: string, data: Record<string, unknown>): Promise<T>;
|
|
83
|
+
/**
|
|
84
|
+
* Patch (partial update) existing records in Supabase REST API.
|
|
85
|
+
*
|
|
86
|
+
* Uses HTTP PATCH for true partial updates — only the provided fields are
|
|
87
|
+
* modified. Unlike directUpsert (POST + merge-duplicates), this does NOT
|
|
88
|
+
* try to INSERT first, so NOT NULL columns that aren't changing can be
|
|
89
|
+
* omitted from `data`.
|
|
90
|
+
*
|
|
91
|
+
* @param table Target table name
|
|
92
|
+
* @param filters PostgREST filter to identify the row(s) to update
|
|
93
|
+
* @param data Fields to update (partial — omitted columns stay unchanged)
|
|
94
|
+
*/
|
|
95
|
+
export declare function directPatch<T = unknown>(table: string, filters: Record<string, string>, data: Record<string, unknown>): Promise<T[]>;
|
|
96
|
+
/**
|
|
97
|
+
* Load all learnings with embeddings directly from Supabase
|
|
98
|
+
*
|
|
99
|
+
* This bypasses ww-mcp because we need the embedding vectors for local search.
|
|
100
|
+
* Returns learnings (scars, patterns, wins, anti-patterns) with full embedding data.
|
|
101
|
+
*
|
|
102
|
+
* NOTE: Changed from "scars only" to "all learning types" (OD-542 related fix)
|
|
103
|
+
*/
|
|
104
|
+
export declare function loadScarsWithEmbeddings<T = unknown>(project: string, limit?: number): Promise<T[]>;
|
|
105
|
+
/**
|
|
106
|
+
* Scar search with severity weighting
|
|
107
|
+
*/
|
|
108
|
+
export declare function scarSearch<T = unknown>(query: string, matchCount?: number, project?: Project): Promise<T[]>;
|
|
109
|
+
/**
|
|
110
|
+
* Scar search with caching (OD-473)
|
|
111
|
+
*
|
|
112
|
+
* Returns cached results if available, otherwise fetches and caches.
|
|
113
|
+
*/
|
|
114
|
+
export declare function cachedScarSearch<T = unknown>(query: string, matchCount?: number, project?: Project): Promise<{
|
|
115
|
+
results: T[];
|
|
116
|
+
cache_hit: boolean;
|
|
117
|
+
cache_age_ms?: number;
|
|
118
|
+
}>;
|
|
119
|
+
/**
|
|
120
|
+
* List records with caching for decisions (OD-473)
|
|
121
|
+
*/
|
|
122
|
+
export declare function cachedListDecisions<T = unknown>(project?: Project, limit?: number): Promise<{
|
|
123
|
+
data: T[];
|
|
124
|
+
cache_hit: boolean;
|
|
125
|
+
cache_age_ms?: number;
|
|
126
|
+
}>;
|
|
127
|
+
/**
|
|
128
|
+
* List records with caching for wins
|
|
129
|
+
*/
|
|
130
|
+
export declare function cachedListWins<T = unknown>(project?: Project, limit?: number, columns?: string): Promise<{
|
|
131
|
+
data: T[];
|
|
132
|
+
cache_hit: boolean;
|
|
133
|
+
cache_age_ms?: number;
|
|
134
|
+
}>;
|
|
135
|
+
/**
|
|
136
|
+
* Upload a file to Supabase Storage
|
|
137
|
+
*/
|
|
138
|
+
export declare function uploadFile(bucket: string, path: string, content: string | Buffer, contentType?: string): Promise<{
|
|
139
|
+
path: string;
|
|
140
|
+
}>;
|
|
141
|
+
/**
|
|
142
|
+
* Download a file from Supabase Storage
|
|
143
|
+
*/
|
|
144
|
+
export declare function downloadFile(bucket: string, path: string): Promise<string>;
|
|
145
|
+
/**
|
|
146
|
+
* Save a session transcript to storage
|
|
147
|
+
*/
|
|
148
|
+
export declare function saveTranscript(sessionId: string, transcript: string, metadata?: {
|
|
149
|
+
project?: string;
|
|
150
|
+
agent?: string;
|
|
151
|
+
format?: "json" | "markdown";
|
|
152
|
+
}): Promise<{
|
|
153
|
+
transcript_path: string;
|
|
154
|
+
size_bytes: number;
|
|
155
|
+
}>;
|
|
156
|
+
/**
|
|
157
|
+
* Retrieve a session transcript from storage
|
|
158
|
+
*/
|
|
159
|
+
export declare function getTranscript(sessionId: string): Promise<{
|
|
160
|
+
transcript: string;
|
|
161
|
+
path: string;
|
|
162
|
+
} | null>;
|
|
163
|
+
//# sourceMappingURL=supabase-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"supabase-client.d.ts","sourceRoot":"","sources":["../../src/services/supabase-client.ts"],"names":[],"mappings":"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"}
|