synabun 2026.3.307 → 2026.3.310
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/CLAUDE.md +150 -0
- package/hooks/claude-code/post-plan.mjs +1 -1
- package/hooks/claude-code/session-start.mjs +2 -0
- package/mcp-server/dist/config.d.ts +13 -0
- package/mcp-server/dist/config.d.ts.map +1 -0
- package/mcp-server/dist/config.js +59 -0
- package/mcp-server/dist/config.js.map +1 -0
- package/mcp-server/dist/http.d.ts +13 -0
- package/mcp-server/dist/http.d.ts.map +1 -0
- package/mcp-server/dist/http.js +86 -0
- package/mcp-server/dist/http.js.map +1 -0
- package/mcp-server/dist/index.d.ts +10 -0
- package/mcp-server/dist/index.d.ts.map +1 -0
- package/mcp-server/dist/index.js +189 -0
- package/mcp-server/dist/index.js.map +1 -0
- package/mcp-server/dist/preload-http.d.ts +3 -0
- package/mcp-server/dist/preload-http.d.ts.map +1 -0
- package/mcp-server/dist/preload-http.js +26 -0
- package/mcp-server/dist/preload-http.js.map +1 -0
- package/mcp-server/dist/preload.d.ts +3 -0
- package/mcp-server/dist/preload.d.ts.map +1 -0
- package/mcp-server/dist/preload.js +30 -0
- package/mcp-server/dist/preload.js.map +1 -0
- package/mcp-server/dist/scripts/migrate-qdrant-to-sqlite.d.ts +19 -0
- package/mcp-server/dist/scripts/migrate-qdrant-to-sqlite.d.ts.map +1 -0
- package/mcp-server/dist/scripts/migrate-qdrant-to-sqlite.js +403 -0
- package/mcp-server/dist/scripts/migrate-qdrant-to-sqlite.js.map +1 -0
- package/mcp-server/dist/services/categories.d.ts +61 -0
- package/mcp-server/dist/services/categories.d.ts.map +1 -0
- package/mcp-server/dist/services/categories.js +356 -0
- package/mcp-server/dist/services/categories.js.map +1 -0
- package/mcp-server/dist/services/discord.d.ts +112 -0
- package/mcp-server/dist/services/discord.d.ts.map +1 -0
- package/mcp-server/dist/services/discord.js +477 -0
- package/mcp-server/dist/services/discord.js.map +1 -0
- package/mcp-server/dist/services/file-checksums.d.ts +14 -0
- package/mcp-server/dist/services/file-checksums.d.ts.map +1 -0
- package/mcp-server/dist/services/file-checksums.js +34 -0
- package/mcp-server/dist/services/file-checksums.js.map +1 -0
- package/mcp-server/dist/services/local-embeddings.d.ts +23 -0
- package/mcp-server/dist/services/local-embeddings.d.ts.map +1 -0
- package/mcp-server/dist/services/local-embeddings.js +71 -0
- package/mcp-server/dist/services/local-embeddings.js.map +1 -0
- package/mcp-server/dist/services/neural-interface.d.ts +92 -0
- package/mcp-server/dist/services/neural-interface.d.ts.map +1 -0
- package/mcp-server/dist/services/neural-interface.js +238 -0
- package/mcp-server/dist/services/neural-interface.js.map +1 -0
- package/mcp-server/dist/services/sqlite.d.ts +85 -0
- package/mcp-server/dist/services/sqlite.d.ts.map +1 -0
- package/mcp-server/dist/services/sqlite.js +660 -0
- package/mcp-server/dist/services/sqlite.js.map +1 -0
- package/mcp-server/dist/tools/browser-advanced.d.ts +54 -0
- package/mcp-server/dist/tools/browser-advanced.d.ts.map +1 -0
- package/mcp-server/dist/tools/browser-advanced.js +97 -0
- package/mcp-server/dist/tools/browser-advanced.js.map +1 -0
- package/mcp-server/dist/tools/browser-interact.d.ts +138 -0
- package/mcp-server/dist/tools/browser-interact.d.ts.map +1 -0
- package/mcp-server/dist/tools/browser-interact.js +216 -0
- package/mcp-server/dist/tools/browser-interact.js.map +1 -0
- package/mcp-server/dist/tools/browser-navigate.d.ts +52 -0
- package/mcp-server/dist/tools/browser-navigate.d.ts.map +1 -0
- package/mcp-server/dist/tools/browser-navigate.js +61 -0
- package/mcp-server/dist/tools/browser-navigate.js.map +1 -0
- package/mcp-server/dist/tools/browser-observe.d.ts +298 -0
- package/mcp-server/dist/tools/browser-observe.d.ts.map +1 -0
- package/mcp-server/dist/tools/browser-observe.js +1154 -0
- package/mcp-server/dist/tools/browser-observe.js.map +1 -0
- package/mcp-server/dist/tools/browser.d.ts +7 -0
- package/mcp-server/dist/tools/browser.d.ts.map +1 -0
- package/mcp-server/dist/tools/browser.js +55 -0
- package/mcp-server/dist/tools/browser.js.map +1 -0
- package/mcp-server/dist/tools/card-tools.d.ts +82 -0
- package/mcp-server/dist/tools/card-tools.d.ts.map +1 -0
- package/mcp-server/dist/tools/card-tools.js +137 -0
- package/mcp-server/dist/tools/card-tools.js.map +1 -0
- package/mcp-server/dist/tools/card.d.ts +8 -0
- package/mcp-server/dist/tools/card.d.ts.map +1 -0
- package/mcp-server/dist/tools/card.js +14 -0
- package/mcp-server/dist/tools/card.js.map +1 -0
- package/mcp-server/dist/tools/category.d.ts +32 -0
- package/mcp-server/dist/tools/category.d.ts.map +1 -0
- package/mcp-server/dist/tools/category.js +290 -0
- package/mcp-server/dist/tools/category.js.map +1 -0
- package/mcp-server/dist/tools/discord-channel.d.ts +44 -0
- package/mcp-server/dist/tools/discord-channel.d.ts.map +1 -0
- package/mcp-server/dist/tools/discord-channel.js +236 -0
- package/mcp-server/dist/tools/discord-channel.js.map +1 -0
- package/mcp-server/dist/tools/discord-guild.d.ts +20 -0
- package/mcp-server/dist/tools/discord-guild.d.ts.map +1 -0
- package/mcp-server/dist/tools/discord-guild.js +138 -0
- package/mcp-server/dist/tools/discord-guild.js.map +1 -0
- package/mcp-server/dist/tools/discord-member.d.ts +26 -0
- package/mcp-server/dist/tools/discord-member.d.ts.map +1 -0
- package/mcp-server/dist/tools/discord-member.js +122 -0
- package/mcp-server/dist/tools/discord-member.js.map +1 -0
- package/mcp-server/dist/tools/discord-message.d.ts +36 -0
- package/mcp-server/dist/tools/discord-message.d.ts.map +1 -0
- package/mcp-server/dist/tools/discord-message.js +184 -0
- package/mcp-server/dist/tools/discord-message.js.map +1 -0
- package/mcp-server/dist/tools/discord-onboarding.d.ts +32 -0
- package/mcp-server/dist/tools/discord-onboarding.d.ts.map +1 -0
- package/mcp-server/dist/tools/discord-onboarding.js +179 -0
- package/mcp-server/dist/tools/discord-onboarding.js.map +1 -0
- package/mcp-server/dist/tools/discord-role.d.ts +34 -0
- package/mcp-server/dist/tools/discord-role.d.ts.map +1 -0
- package/mcp-server/dist/tools/discord-role.js +178 -0
- package/mcp-server/dist/tools/discord-role.js.map +1 -0
- package/mcp-server/dist/tools/discord-thread.d.ts +28 -0
- package/mcp-server/dist/tools/discord-thread.d.ts.map +1 -0
- package/mcp-server/dist/tools/discord-thread.js +88 -0
- package/mcp-server/dist/tools/discord-thread.js.map +1 -0
- package/mcp-server/dist/tools/discord-webhook.d.ts +32 -0
- package/mcp-server/dist/tools/discord-webhook.d.ts.map +1 -0
- package/mcp-server/dist/tools/discord-webhook.js +154 -0
- package/mcp-server/dist/tools/discord-webhook.js.map +1 -0
- package/mcp-server/dist/tools/discord.d.ts +7 -0
- package/mcp-server/dist/tools/discord.d.ts.map +1 -0
- package/mcp-server/dist/tools/discord.js +31 -0
- package/mcp-server/dist/tools/discord.js.map +1 -0
- package/mcp-server/dist/tools/forget.d.ts +14 -0
- package/mcp-server/dist/tools/forget.d.ts.map +1 -0
- package/mcp-server/dist/tools/forget.js +26 -0
- package/mcp-server/dist/tools/forget.js.map +1 -0
- package/mcp-server/dist/tools/git-tools.d.ts +24 -0
- package/mcp-server/dist/tools/git-tools.d.ts.map +1 -0
- package/mcp-server/dist/tools/git-tools.js +107 -0
- package/mcp-server/dist/tools/git-tools.js.map +1 -0
- package/mcp-server/dist/tools/git.d.ts +7 -0
- package/mcp-server/dist/tools/git.d.ts.map +1 -0
- package/mcp-server/dist/tools/git.js +9 -0
- package/mcp-server/dist/tools/git.js.map +1 -0
- package/mcp-server/dist/tools/image-tools.d.ts +24 -0
- package/mcp-server/dist/tools/image-tools.d.ts.map +1 -0
- package/mcp-server/dist/tools/image-tools.js +80 -0
- package/mcp-server/dist/tools/image-tools.js.map +1 -0
- package/mcp-server/dist/tools/image.d.ts +10 -0
- package/mcp-server/dist/tools/image.d.ts.map +1 -0
- package/mcp-server/dist/tools/image.js +12 -0
- package/mcp-server/dist/tools/image.js.map +1 -0
- package/mcp-server/dist/tools/leonardo-browser-tools.d.ts +77 -0
- package/mcp-server/dist/tools/leonardo-browser-tools.d.ts.map +1 -0
- package/mcp-server/dist/tools/leonardo-browser-tools.js +223 -0
- package/mcp-server/dist/tools/leonardo-browser-tools.js.map +1 -0
- package/mcp-server/dist/tools/leonardo.d.ts +13 -0
- package/mcp-server/dist/tools/leonardo.d.ts.map +1 -0
- package/mcp-server/dist/tools/leonardo.js +19 -0
- package/mcp-server/dist/tools/leonardo.js.map +1 -0
- package/mcp-server/dist/tools/loop.d.ts +30 -0
- package/mcp-server/dist/tools/loop.d.ts.map +1 -0
- package/mcp-server/dist/tools/loop.js +302 -0
- package/mcp-server/dist/tools/loop.js.map +1 -0
- package/mcp-server/dist/tools/memories.d.ts +26 -0
- package/mcp-server/dist/tools/memories.d.ts.map +1 -0
- package/mcp-server/dist/tools/memories.js +96 -0
- package/mcp-server/dist/tools/memories.js.map +1 -0
- package/mcp-server/dist/tools/recall.d.ts +41 -0
- package/mcp-server/dist/tools/recall.d.ts.map +1 -0
- package/mcp-server/dist/tools/recall.js +275 -0
- package/mcp-server/dist/tools/recall.js.map +1 -0
- package/mcp-server/dist/tools/reflect.d.ts +44 -0
- package/mcp-server/dist/tools/reflect.d.ts.map +1 -0
- package/mcp-server/dist/tools/reflect.js +118 -0
- package/mcp-server/dist/tools/reflect.js.map +1 -0
- package/mcp-server/dist/tools/remember.d.ts +38 -0
- package/mcp-server/dist/tools/remember.d.ts.map +1 -0
- package/mcp-server/dist/tools/remember.js +88 -0
- package/mcp-server/dist/tools/remember.js.map +1 -0
- package/mcp-server/dist/tools/response.d.ts +23 -0
- package/mcp-server/dist/tools/response.d.ts.map +1 -0
- package/mcp-server/dist/tools/response.js +24 -0
- package/mcp-server/dist/tools/response.js.map +1 -0
- package/mcp-server/dist/tools/restore.d.ts +14 -0
- package/mcp-server/dist/tools/restore.d.ts.map +1 -0
- package/mcp-server/dist/tools/restore.js +23 -0
- package/mcp-server/dist/tools/restore.js.map +1 -0
- package/mcp-server/dist/tools/sync.d.ts +18 -0
- package/mcp-server/dist/tools/sync.d.ts.map +1 -0
- package/mcp-server/dist/tools/sync.js +93 -0
- package/mcp-server/dist/tools/sync.js.map +1 -0
- package/mcp-server/dist/tools/tictactoe-tools.d.ts +18 -0
- package/mcp-server/dist/tools/tictactoe-tools.d.ts.map +1 -0
- package/mcp-server/dist/tools/tictactoe-tools.js +78 -0
- package/mcp-server/dist/tools/tictactoe-tools.js.map +1 -0
- package/mcp-server/dist/tools/tictactoe.d.ts +7 -0
- package/mcp-server/dist/tools/tictactoe.d.ts.map +1 -0
- package/mcp-server/dist/tools/tictactoe.js +9 -0
- package/mcp-server/dist/tools/tictactoe.js.map +1 -0
- package/mcp-server/dist/tools/utils.d.ts +10 -0
- package/mcp-server/dist/tools/utils.d.ts.map +1 -0
- package/mcp-server/dist/tools/utils.js +30 -0
- package/mcp-server/dist/tools/utils.js.map +1 -0
- package/mcp-server/dist/tools/whiteboard-tools.d.ts +194 -0
- package/mcp-server/dist/tools/whiteboard-tools.d.ts.map +1 -0
- package/mcp-server/dist/tools/whiteboard-tools.js +198 -0
- package/mcp-server/dist/tools/whiteboard-tools.js.map +1 -0
- package/mcp-server/dist/tools/whiteboard.d.ts +8 -0
- package/mcp-server/dist/tools/whiteboard.d.ts.map +1 -0
- package/mcp-server/dist/tools/whiteboard.js +14 -0
- package/mcp-server/dist/tools/whiteboard.js.map +1 -0
- package/mcp-server/dist/tui.d.ts +3 -0
- package/mcp-server/dist/tui.d.ts.map +1 -0
- package/mcp-server/dist/tui.js +807 -0
- package/mcp-server/dist/tui.js.map +1 -0
- package/mcp-server/dist/types.d.ts +77 -0
- package/mcp-server/dist/types.d.ts.map +1 -0
- package/mcp-server/dist/types.js +2 -0
- package/mcp-server/dist/types.js.map +1 -0
- package/neural-interface/public/shared/styles.css +2 -2
- package/neural-interface/public/shared/ui-settings.js +2 -2
- package/neural-interface/server.js +82 -8
- package/neural-interface/templates/CLAUDE-template.md +9 -1
- package/package.json +4 -2
- package/preuninstall.js +28 -0
- package/setup.js +86 -1
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Local embedding generation using Transformers.js (ONNX runtime).
|
|
3
|
+
* Drop-in replacement for embeddings.ts — same exported function signatures.
|
|
4
|
+
* Uses all-MiniLM-L6-v2 (384 dimensions, ~23MB quantized model).
|
|
5
|
+
* No API key, no internet required after first model download.
|
|
6
|
+
*/
|
|
7
|
+
const MODEL_NAME = 'Xenova/all-MiniLM-L6-v2';
|
|
8
|
+
export const EMBEDDING_DIMENSIONS = 384;
|
|
9
|
+
let extractor = null;
|
|
10
|
+
let initPromise = null;
|
|
11
|
+
/**
|
|
12
|
+
* Lazy-loads the embedding pipeline. First call downloads the model (~23MB)
|
|
13
|
+
* and caches it permanently in ~/.cache/huggingface/. Subsequent calls reuse
|
|
14
|
+
* the cached model with no network access needed.
|
|
15
|
+
*/
|
|
16
|
+
async function getExtractor() {
|
|
17
|
+
if (extractor)
|
|
18
|
+
return extractor;
|
|
19
|
+
// Prevent concurrent initialization (multiple tools calling at once)
|
|
20
|
+
if (initPromise)
|
|
21
|
+
return initPromise;
|
|
22
|
+
initPromise = (async () => {
|
|
23
|
+
// Dynamic import to avoid blocking module load
|
|
24
|
+
const { pipeline } = await import('@huggingface/transformers');
|
|
25
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
26
|
+
extractor = await pipeline('feature-extraction', MODEL_NAME, {
|
|
27
|
+
dtype: 'fp32',
|
|
28
|
+
});
|
|
29
|
+
return extractor;
|
|
30
|
+
})();
|
|
31
|
+
try {
|
|
32
|
+
return await initPromise;
|
|
33
|
+
}
|
|
34
|
+
finally {
|
|
35
|
+
initPromise = null;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Generate a single embedding vector for the given text.
|
|
40
|
+
* Returns a 384-dimensional normalized vector (unit length).
|
|
41
|
+
*/
|
|
42
|
+
export async function generateEmbedding(text) {
|
|
43
|
+
const ext = await getExtractor();
|
|
44
|
+
const output = await ext(text, { pooling: 'mean', normalize: true });
|
|
45
|
+
return Array.from(output.data);
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Generate embeddings for multiple texts.
|
|
49
|
+
* Processes sequentially to avoid memory spikes on large batches.
|
|
50
|
+
*/
|
|
51
|
+
export async function generateEmbeddingBatch(texts) {
|
|
52
|
+
if (texts.length === 0)
|
|
53
|
+
return [];
|
|
54
|
+
if (texts.length === 1)
|
|
55
|
+
return [await generateEmbedding(texts[0])];
|
|
56
|
+
const ext = await getExtractor();
|
|
57
|
+
const results = [];
|
|
58
|
+
for (const text of texts) {
|
|
59
|
+
const output = await ext(text, { pooling: 'mean', normalize: true });
|
|
60
|
+
results.push(Array.from(output.data));
|
|
61
|
+
}
|
|
62
|
+
return results;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Trigger model download/warmup without generating an actual embedding.
|
|
66
|
+
* Call this at server startup for faster first-use latency.
|
|
67
|
+
*/
|
|
68
|
+
export async function warmupEmbeddings() {
|
|
69
|
+
await getExtractor();
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=local-embeddings.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"local-embeddings.js","sourceRoot":"","sources":["../../src/services/local-embeddings.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,MAAM,UAAU,GAAG,yBAAyB,CAAC;AAC7C,MAAM,CAAC,MAAM,oBAAoB,GAAG,GAAG,CAAC;AAExC,IAAI,SAAS,GAAqC,IAAI,CAAC;AACvD,IAAI,WAAW,GAA8C,IAAI,CAAC;AAElE;;;;GAIG;AACH,KAAK,UAAU,YAAY;IACzB,IAAI,SAAS;QAAE,OAAO,SAAS,CAAC;IAEhC,qEAAqE;IACrE,IAAI,WAAW;QAAE,OAAO,WAAW,CAAC;IAEpC,WAAW,GAAG,CAAC,KAAK,IAAI,EAAE;QACxB,+CAA+C;QAC/C,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,2BAA2B,CAAC,CAAC;QAC/D,8DAA8D;QAC9D,SAAS,GAAG,MAAO,QAAgB,CAAC,oBAAoB,EAAE,UAAU,EAAE;YACpE,KAAK,EAAE,MAAM;SACd,CAA8B,CAAC;QAChC,OAAO,SAAS,CAAC;IACnB,CAAC,CAAC,EAAE,CAAC;IAEL,IAAI,CAAC;QACH,OAAO,MAAM,WAAW,CAAC;IAC3B,CAAC;YAAS,CAAC;QACT,WAAW,GAAG,IAAI,CAAC;IACrB,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,IAAY;IAClD,MAAM,GAAG,GAAG,MAAM,YAAY,EAAE,CAAC;IACjC,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACrE,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAoB,CAAC,CAAC;AACjD,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,KAAe;IAC1D,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAClC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,CAAC,MAAM,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAEnE,MAAM,GAAG,GAAG,MAAM,YAAY,EAAE,CAAC;IACjC,MAAM,OAAO,GAAe,EAAE,CAAC;IAC/B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACrE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAoB,CAAC,CAAC,CAAC;IACxD,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB;IACpC,MAAM,YAAY,EAAE,CAAC;AACvB,CAAC"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* HTTP client for communicating with the Neural Interface Express server.
|
|
3
|
+
* The MCP server delegates all browser operations to the Neural Interface
|
|
4
|
+
* which manages Playwright sessions, CDP screencast, stealth, etc.
|
|
5
|
+
*/
|
|
6
|
+
export interface BrowserSessionInfo {
|
|
7
|
+
id: string;
|
|
8
|
+
url: string;
|
|
9
|
+
title: string;
|
|
10
|
+
createdAt: number;
|
|
11
|
+
clients: number;
|
|
12
|
+
}
|
|
13
|
+
interface NiResponse {
|
|
14
|
+
ok?: boolean;
|
|
15
|
+
error?: string;
|
|
16
|
+
[key: string]: unknown;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Resolve which session ID to use.
|
|
20
|
+
* - If sessionId provided, return it immediately (server returns 404 if invalid).
|
|
21
|
+
* - If 1 session exists, auto-select it.
|
|
22
|
+
* - If 0 sessions exist and autoCreate is true, create one.
|
|
23
|
+
* - If multiple sessions and no ID, return error listing them.
|
|
24
|
+
*/
|
|
25
|
+
export declare function resolveSession(sessionId?: string, autoCreate?: {
|
|
26
|
+
url?: string;
|
|
27
|
+
}): Promise<{
|
|
28
|
+
sessionId: string;
|
|
29
|
+
} | {
|
|
30
|
+
error: string;
|
|
31
|
+
}>;
|
|
32
|
+
export declare function invalidateCache(reason: string): Promise<void>;
|
|
33
|
+
export declare function listSessions(): Promise<NiResponse>;
|
|
34
|
+
export declare function createSession(url?: string): Promise<NiResponse>;
|
|
35
|
+
export declare function closeSession(sessionId: string): Promise<NiResponse>;
|
|
36
|
+
export declare function navigate(sessionId: string, url: string): Promise<NiResponse>;
|
|
37
|
+
export declare function goBack(sessionId: string): Promise<NiResponse>;
|
|
38
|
+
export declare function goForward(sessionId: string): Promise<NiResponse>;
|
|
39
|
+
export declare function reload(sessionId: string): Promise<NiResponse>;
|
|
40
|
+
export declare function click(sessionId: string, selector: string, nthMatch?: number): Promise<NiResponse>;
|
|
41
|
+
export declare function fill(sessionId: string, selector: string, value: string, nthMatch?: number): Promise<NiResponse>;
|
|
42
|
+
export declare function type(sessionId: string, selector: string | null, text: string, nthMatch?: number): Promise<NiResponse>;
|
|
43
|
+
export declare function hover(sessionId: string, selector: string, nthMatch?: number): Promise<NiResponse>;
|
|
44
|
+
export declare function selectOption(sessionId: string, selector: string, value: string, nthMatch?: number): Promise<NiResponse>;
|
|
45
|
+
export declare function pressKey(sessionId: string, key: string): Promise<NiResponse>;
|
|
46
|
+
export declare function scroll(sessionId: string, opts: {
|
|
47
|
+
direction: string;
|
|
48
|
+
distance?: number;
|
|
49
|
+
selector?: string;
|
|
50
|
+
}): Promise<NiResponse>;
|
|
51
|
+
export declare function upload(sessionId: string, selector: string, filePaths: string[], nthMatch?: number): Promise<NiResponse>;
|
|
52
|
+
export declare function snapshot(sessionId: string, selector?: string): Promise<NiResponse>;
|
|
53
|
+
export declare function getContent(sessionId: string): Promise<NiResponse>;
|
|
54
|
+
export declare function getMarkdown(sessionId: string): Promise<NiResponse>;
|
|
55
|
+
export declare function fetchMarkdown(url: string, timeout?: number): Promise<NiResponse>;
|
|
56
|
+
export declare function screenshot(sessionId: string): Promise<NiResponse>;
|
|
57
|
+
export declare function evaluate(sessionId: string, script: string): Promise<NiResponse>;
|
|
58
|
+
export declare function waitFor(sessionId: string, opts: {
|
|
59
|
+
selector?: string;
|
|
60
|
+
state?: string;
|
|
61
|
+
loadState?: string;
|
|
62
|
+
timeout?: number;
|
|
63
|
+
}): Promise<NiResponse>;
|
|
64
|
+
export declare function getWhiteboard(): Promise<NiResponse>;
|
|
65
|
+
export declare function addWhiteboardElements(elements: Record<string, unknown>[], coordMode?: string, layout?: string): Promise<NiResponse>;
|
|
66
|
+
export declare function updateWhiteboardElement(id: string, updates: Record<string, unknown>, coordMode?: string): Promise<NiResponse>;
|
|
67
|
+
export declare function removeWhiteboardElement(id: string): Promise<NiResponse>;
|
|
68
|
+
export declare function clearWhiteboard(): Promise<NiResponse>;
|
|
69
|
+
export declare function whiteboardScreenshot(): Promise<NiResponse>;
|
|
70
|
+
export declare function getCards(): Promise<NiResponse>;
|
|
71
|
+
export declare function openCard(memoryId: string, opts?: {
|
|
72
|
+
left?: number;
|
|
73
|
+
top?: number;
|
|
74
|
+
compact?: boolean;
|
|
75
|
+
coordMode?: string;
|
|
76
|
+
}): Promise<NiResponse>;
|
|
77
|
+
export declare function closeCard(memoryId?: string): Promise<NiResponse>;
|
|
78
|
+
export declare function updateCard(memoryId: string, updates: Record<string, unknown>, coordMode?: string): Promise<NiResponse>;
|
|
79
|
+
export declare function cardsScreenshot(): Promise<NiResponse>;
|
|
80
|
+
export declare function tictactoeStart(piece?: string): Promise<NiResponse>;
|
|
81
|
+
export declare function tictactoeMove(cell: number): Promise<NiResponse>;
|
|
82
|
+
export declare function tictactoeState(): Promise<NiResponse>;
|
|
83
|
+
export declare function tictactoeEnd(): Promise<NiResponse>;
|
|
84
|
+
export declare function gitStatus(path: string): Promise<NiResponse>;
|
|
85
|
+
export declare function gitDiff(path: string, maxLines?: number): Promise<NiResponse>;
|
|
86
|
+
export declare function gitCommit(path: string, message: string, files?: string[]): Promise<NiResponse>;
|
|
87
|
+
export declare function gitLog(path: string, count?: number): Promise<NiResponse>;
|
|
88
|
+
export declare function gitBranches(path: string): Promise<NiResponse>;
|
|
89
|
+
export declare function listImages(): Promise<NiResponse>;
|
|
90
|
+
export declare function deleteImage(filename: string): Promise<NiResponse>;
|
|
91
|
+
export {};
|
|
92
|
+
//# sourceMappingURL=neural-interface.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"neural-interface.d.ts","sourceRoot":"","sources":["../../src/services/neural-interface.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,238 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* HTTP client for communicating with the Neural Interface Express server.
|
|
3
|
+
* The MCP server delegates all browser operations to the Neural Interface
|
|
4
|
+
* which manages Playwright sessions, CDP screencast, stealth, etc.
|
|
5
|
+
*/
|
|
6
|
+
const BASE_URL = process.env.NEURAL_INTERFACE_URL
|
|
7
|
+
|| `http://localhost:${process.env.NEURAL_PORT || '3344'}`;
|
|
8
|
+
const DEFAULT_TIMEOUT = 10_000;
|
|
9
|
+
const LONG_TIMEOUT = 30_000;
|
|
10
|
+
async function request(method, path, body, timeout = DEFAULT_TIMEOUT) {
|
|
11
|
+
const controller = new AbortController();
|
|
12
|
+
const timer = setTimeout(() => controller.abort(), timeout);
|
|
13
|
+
try {
|
|
14
|
+
const opts = {
|
|
15
|
+
method,
|
|
16
|
+
headers: { 'Content-Type': 'application/json' },
|
|
17
|
+
signal: controller.signal,
|
|
18
|
+
};
|
|
19
|
+
if (body && method !== 'GET') {
|
|
20
|
+
opts.body = JSON.stringify(body);
|
|
21
|
+
}
|
|
22
|
+
const res = await fetch(`${BASE_URL}${path}`, opts);
|
|
23
|
+
const data = await res.json();
|
|
24
|
+
if (!res.ok && !data.error) {
|
|
25
|
+
data.error = `HTTP ${res.status}`;
|
|
26
|
+
}
|
|
27
|
+
return data;
|
|
28
|
+
}
|
|
29
|
+
catch (err) {
|
|
30
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
31
|
+
if (msg.includes('abort')) {
|
|
32
|
+
return { error: `Request timed out after ${timeout}ms` };
|
|
33
|
+
}
|
|
34
|
+
return { error: `Neural Interface unreachable: ${msg}. Is the Neural Interface server running?` };
|
|
35
|
+
}
|
|
36
|
+
finally {
|
|
37
|
+
clearTimeout(timer);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Resolve which session ID to use.
|
|
42
|
+
* - If sessionId provided, return it immediately (server returns 404 if invalid).
|
|
43
|
+
* - If 1 session exists, auto-select it.
|
|
44
|
+
* - If 0 sessions exist and autoCreate is true, create one.
|
|
45
|
+
* - If multiple sessions and no ID, return error listing them.
|
|
46
|
+
*/
|
|
47
|
+
export async function resolveSession(sessionId, autoCreate) {
|
|
48
|
+
// Agent-scoped browser session — set by the agent orchestrator to pin
|
|
49
|
+
// this MCP instance to a specific browser session (multi-agent isolation).
|
|
50
|
+
const pinnedSession = process.env.SYNABUN_BROWSER_SESSION;
|
|
51
|
+
if (pinnedSession && !sessionId) {
|
|
52
|
+
return { sessionId: pinnedSession };
|
|
53
|
+
}
|
|
54
|
+
if (sessionId) {
|
|
55
|
+
// Trust the server — it will 404 if the session doesn't exist.
|
|
56
|
+
// Skipping the extra GET /api/browser/sessions verification call saves a full round-trip.
|
|
57
|
+
return { sessionId };
|
|
58
|
+
}
|
|
59
|
+
// List sessions
|
|
60
|
+
const data = await request('GET', '/api/browser/sessions');
|
|
61
|
+
if (data.error)
|
|
62
|
+
return { error: data.error };
|
|
63
|
+
const sessions = (data.sessions || []);
|
|
64
|
+
if (sessions.length === 1) {
|
|
65
|
+
return { sessionId: sessions[0].id };
|
|
66
|
+
}
|
|
67
|
+
if (sessions.length === 0) {
|
|
68
|
+
if (autoCreate) {
|
|
69
|
+
const created = await request('POST', '/api/browser/sessions', {
|
|
70
|
+
url: autoCreate.url || 'about:blank',
|
|
71
|
+
});
|
|
72
|
+
if (created.error)
|
|
73
|
+
return { error: `Failed to auto-create session: ${created.error}` };
|
|
74
|
+
return { sessionId: created.sessionId };
|
|
75
|
+
}
|
|
76
|
+
return { error: 'No browser sessions open. Use browser_session to create one first, or use browser_navigate with a URL to auto-create.' };
|
|
77
|
+
}
|
|
78
|
+
// Multiple sessions — require explicit ID
|
|
79
|
+
const list = sessions.map(s => ` ${s.id} — ${s.title || s.url}`).join('\n');
|
|
80
|
+
return { error: `Multiple browser sessions open. Specify sessionId:\n${list}` };
|
|
81
|
+
}
|
|
82
|
+
// ── Cache invalidation ──
|
|
83
|
+
export async function invalidateCache(reason) {
|
|
84
|
+
try {
|
|
85
|
+
await request('POST', '/api/cache/invalidate', { reason });
|
|
86
|
+
}
|
|
87
|
+
catch {
|
|
88
|
+
// Fire-and-forget — don't block MCP tools if Neural Interface is down
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
// ── Session management ──
|
|
92
|
+
export async function listSessions() {
|
|
93
|
+
return request('GET', '/api/browser/sessions');
|
|
94
|
+
}
|
|
95
|
+
export async function createSession(url) {
|
|
96
|
+
return request('POST', '/api/browser/sessions', {
|
|
97
|
+
url: url || 'about:blank',
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
export async function closeSession(sessionId) {
|
|
101
|
+
return request('DELETE', `/api/browser/sessions/${sessionId}`);
|
|
102
|
+
}
|
|
103
|
+
// ── Navigation ──
|
|
104
|
+
export async function navigate(sessionId, url) {
|
|
105
|
+
return request('POST', `/api/browser/sessions/${sessionId}/navigate`, { url }, LONG_TIMEOUT);
|
|
106
|
+
}
|
|
107
|
+
export async function goBack(sessionId) {
|
|
108
|
+
return request('POST', `/api/browser/sessions/${sessionId}/back`);
|
|
109
|
+
}
|
|
110
|
+
export async function goForward(sessionId) {
|
|
111
|
+
return request('POST', `/api/browser/sessions/${sessionId}/forward`);
|
|
112
|
+
}
|
|
113
|
+
export async function reload(sessionId) {
|
|
114
|
+
return request('POST', `/api/browser/sessions/${sessionId}/reload`, undefined, LONG_TIMEOUT);
|
|
115
|
+
}
|
|
116
|
+
// ── Interaction (selector-based) ──
|
|
117
|
+
export async function click(sessionId, selector, nthMatch) {
|
|
118
|
+
return request('POST', `/api/browser/sessions/${sessionId}/click`, { selector, ...(nthMatch !== undefined && { nthMatch }) });
|
|
119
|
+
}
|
|
120
|
+
export async function fill(sessionId, selector, value, nthMatch) {
|
|
121
|
+
return request('POST', `/api/browser/sessions/${sessionId}/fill`, { selector, value, ...(nthMatch !== undefined && { nthMatch }) });
|
|
122
|
+
}
|
|
123
|
+
export async function type(sessionId, selector, text, nthMatch) {
|
|
124
|
+
return request('POST', `/api/browser/sessions/${sessionId}/type`, { selector, text, ...(nthMatch !== undefined && { nthMatch }) });
|
|
125
|
+
}
|
|
126
|
+
export async function hover(sessionId, selector, nthMatch) {
|
|
127
|
+
return request('POST', `/api/browser/sessions/${sessionId}/hover`, { selector, ...(nthMatch !== undefined && { nthMatch }) });
|
|
128
|
+
}
|
|
129
|
+
export async function selectOption(sessionId, selector, value, nthMatch) {
|
|
130
|
+
return request('POST', `/api/browser/sessions/${sessionId}/select`, { selector, value, ...(nthMatch !== undefined && { nthMatch }) });
|
|
131
|
+
}
|
|
132
|
+
export async function pressKey(sessionId, key) {
|
|
133
|
+
return request('POST', `/api/browser/sessions/${sessionId}/press`, { key });
|
|
134
|
+
}
|
|
135
|
+
export async function scroll(sessionId, opts) {
|
|
136
|
+
return request('POST', `/api/browser/sessions/${sessionId}/scroll`, opts);
|
|
137
|
+
}
|
|
138
|
+
export async function upload(sessionId, selector, filePaths, nthMatch) {
|
|
139
|
+
return request('POST', `/api/browser/sessions/${sessionId}/upload`, { selector, filePaths, ...(nthMatch !== undefined && { nthMatch }) }, LONG_TIMEOUT);
|
|
140
|
+
}
|
|
141
|
+
// ── Observation ──
|
|
142
|
+
export async function snapshot(sessionId, selector) {
|
|
143
|
+
if (selector)
|
|
144
|
+
return request('POST', `/api/browser/sessions/${sessionId}/snapshot`, { selector });
|
|
145
|
+
return request('GET', `/api/browser/sessions/${sessionId}/snapshot`);
|
|
146
|
+
}
|
|
147
|
+
export async function getContent(sessionId) {
|
|
148
|
+
return request('GET', `/api/browser/sessions/${sessionId}/content`);
|
|
149
|
+
}
|
|
150
|
+
export async function getMarkdown(sessionId) {
|
|
151
|
+
return request('GET', `/api/browser/sessions/${sessionId}/markdown`, undefined, LONG_TIMEOUT);
|
|
152
|
+
}
|
|
153
|
+
export async function fetchMarkdown(url, timeout) {
|
|
154
|
+
return request('POST', '/api/fetch-markdown', { url, timeout }, LONG_TIMEOUT);
|
|
155
|
+
}
|
|
156
|
+
export async function screenshot(sessionId) {
|
|
157
|
+
return request('GET', `/api/browser/sessions/${sessionId}/screenshot-base64`);
|
|
158
|
+
}
|
|
159
|
+
// ── Advanced ──
|
|
160
|
+
export async function evaluate(sessionId, script) {
|
|
161
|
+
return request('POST', `/api/browser/sessions/${sessionId}/evaluate`, { script }, LONG_TIMEOUT);
|
|
162
|
+
}
|
|
163
|
+
export async function waitFor(sessionId, opts) {
|
|
164
|
+
return request('POST', `/api/browser/sessions/${sessionId}/wait`, opts, LONG_TIMEOUT);
|
|
165
|
+
}
|
|
166
|
+
// ── Whiteboard ──
|
|
167
|
+
export async function getWhiteboard() {
|
|
168
|
+
return request('GET', '/api/whiteboard');
|
|
169
|
+
}
|
|
170
|
+
export async function addWhiteboardElements(elements, coordMode, layout) {
|
|
171
|
+
return request('POST', '/api/whiteboard/elements', { elements, coordMode, layout });
|
|
172
|
+
}
|
|
173
|
+
export async function updateWhiteboardElement(id, updates, coordMode) {
|
|
174
|
+
return request('PUT', `/api/whiteboard/elements/${id}`, { updates, coordMode });
|
|
175
|
+
}
|
|
176
|
+
export async function removeWhiteboardElement(id) {
|
|
177
|
+
return request('DELETE', `/api/whiteboard/elements/${id}`);
|
|
178
|
+
}
|
|
179
|
+
export async function clearWhiteboard() {
|
|
180
|
+
return request('POST', '/api/whiteboard/clear');
|
|
181
|
+
}
|
|
182
|
+
export async function whiteboardScreenshot() {
|
|
183
|
+
return request('GET', '/api/whiteboard/screenshot', undefined, 15_000);
|
|
184
|
+
}
|
|
185
|
+
// ── Cards (Memory Card MCP integration) ──
|
|
186
|
+
export async function getCards() {
|
|
187
|
+
return request('GET', '/api/cards');
|
|
188
|
+
}
|
|
189
|
+
export async function openCard(memoryId, opts) {
|
|
190
|
+
return request('POST', '/api/cards/open', { memoryId, ...opts });
|
|
191
|
+
}
|
|
192
|
+
export async function closeCard(memoryId) {
|
|
193
|
+
return request('POST', '/api/cards/close', memoryId ? { memoryId } : {});
|
|
194
|
+
}
|
|
195
|
+
export async function updateCard(memoryId, updates, coordMode) {
|
|
196
|
+
return request('PUT', `/api/cards/${memoryId}`, { ...updates, coordMode });
|
|
197
|
+
}
|
|
198
|
+
export async function cardsScreenshot() {
|
|
199
|
+
return request('GET', '/api/cards/screenshot', undefined, 15_000);
|
|
200
|
+
}
|
|
201
|
+
// ── TicTacToe ──
|
|
202
|
+
export async function tictactoeStart(piece) {
|
|
203
|
+
return request('POST', '/api/games/tictactoe/start', { piece });
|
|
204
|
+
}
|
|
205
|
+
export async function tictactoeMove(cell) {
|
|
206
|
+
return request('POST', '/api/games/tictactoe/move', { cell });
|
|
207
|
+
}
|
|
208
|
+
export async function tictactoeState() {
|
|
209
|
+
return request('GET', '/api/games/tictactoe/state');
|
|
210
|
+
}
|
|
211
|
+
export async function tictactoeEnd() {
|
|
212
|
+
return request('POST', '/api/games/tictactoe/end');
|
|
213
|
+
}
|
|
214
|
+
// ── Git ──
|
|
215
|
+
export async function gitStatus(path) {
|
|
216
|
+
return request('GET', `/api/git/status?path=${encodeURIComponent(path)}`);
|
|
217
|
+
}
|
|
218
|
+
export async function gitDiff(path, maxLines) {
|
|
219
|
+
const qs = `path=${encodeURIComponent(path)}${maxLines ? `&maxLines=${maxLines}` : ''}`;
|
|
220
|
+
return request('GET', `/api/git/diff?${qs}`, undefined, LONG_TIMEOUT);
|
|
221
|
+
}
|
|
222
|
+
export async function gitCommit(path, message, files) {
|
|
223
|
+
return request('POST', '/api/git/commit', { path, message, files });
|
|
224
|
+
}
|
|
225
|
+
export async function gitLog(path, count) {
|
|
226
|
+
return request('GET', `/api/git/log?path=${encodeURIComponent(path)}&count=${count || 10}`);
|
|
227
|
+
}
|
|
228
|
+
export async function gitBranches(path) {
|
|
229
|
+
return request('GET', `/api/terminal/branches?path=${encodeURIComponent(path)}`);
|
|
230
|
+
}
|
|
231
|
+
// ── Image store ──
|
|
232
|
+
export async function listImages() {
|
|
233
|
+
return request('GET', '/api/images');
|
|
234
|
+
}
|
|
235
|
+
export async function deleteImage(filename) {
|
|
236
|
+
return request('DELETE', `/api/images/${encodeURIComponent(filename)}`);
|
|
237
|
+
}
|
|
238
|
+
//# sourceMappingURL=neural-interface.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"neural-interface.js","sourceRoot":"","sources":["../../src/services/neural-interface.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SQLite storage layer.
|
|
3
|
+
* Uses Node.js built-in node:sqlite (available since Node 22.5.0).
|
|
4
|
+
* Vectors stored as Float32Array BLOBs, cosine similarity computed in JS.
|
|
5
|
+
*/
|
|
6
|
+
import type { MemoryPayload, MemoryStats, SessionChunkPayload } from '../types.js';
|
|
7
|
+
export declare const CATEGORIES_POINT_ID = "00000000-0000-0000-0000-000000000000";
|
|
8
|
+
export declare function ensureCollection(): Promise<void>;
|
|
9
|
+
export declare function ensureSessionCollection(): Promise<void>;
|
|
10
|
+
/** Combined init function for cleaner startup */
|
|
11
|
+
export declare function ensureDatabase(): Promise<void>;
|
|
12
|
+
export declare function upsertMemory(id: string, vector: number[], payload: MemoryPayload): Promise<void>;
|
|
13
|
+
export declare function searchMemories(vector: number[], limit: number, filter?: Record<string, unknown>, scoreThreshold?: number): Promise<{
|
|
14
|
+
id: string;
|
|
15
|
+
score: number;
|
|
16
|
+
payload: MemoryPayload;
|
|
17
|
+
}[]>;
|
|
18
|
+
export declare function getMemory(id: string): Promise<{
|
|
19
|
+
id: string;
|
|
20
|
+
payload: MemoryPayload;
|
|
21
|
+
} | null>;
|
|
22
|
+
export declare function updatePayload(id: string, payload: Partial<MemoryPayload>): Promise<void>;
|
|
23
|
+
export declare function updateVector(id: string, vector: number[], payload: MemoryPayload): Promise<void>;
|
|
24
|
+
export declare function updatePayloadByFilter(filter: Record<string, unknown>, payload: Partial<MemoryPayload>): Promise<void>;
|
|
25
|
+
export declare function deleteMemory(id: string): Promise<void>;
|
|
26
|
+
export declare function softDeleteMemory(id: string): Promise<void>;
|
|
27
|
+
export declare function restoreMemory(id: string): Promise<void>;
|
|
28
|
+
export declare function scrollMemories(filter?: Record<string, unknown>, limit?: number, offset?: string): Promise<{
|
|
29
|
+
points: {
|
|
30
|
+
id: string;
|
|
31
|
+
payload: MemoryPayload;
|
|
32
|
+
}[];
|
|
33
|
+
next_page_offset: string | null;
|
|
34
|
+
}>;
|
|
35
|
+
export declare function countMemories(filter?: Record<string, unknown>): Promise<number>;
|
|
36
|
+
export declare function getMemoryStats(): Promise<MemoryStats>;
|
|
37
|
+
/**
|
|
38
|
+
* Search memories using FTS5 full-text search (keyword fallback).
|
|
39
|
+
* Returns results scored by BM25 relevance. Used when vector similarity
|
|
40
|
+
* scores are low (exact identifiers, error codes, proper nouns).
|
|
41
|
+
*/
|
|
42
|
+
export declare function searchMemoriesFTS(query: string, limit: number, filter?: Record<string, unknown>, excludeIds?: Set<string>): Promise<Array<{
|
|
43
|
+
id: string;
|
|
44
|
+
score: number;
|
|
45
|
+
payload: MemoryPayload;
|
|
46
|
+
}>>;
|
|
47
|
+
export declare function searchSessionChunks(vector: number[], limit: number, filter?: Record<string, unknown>, scoreThreshold?: number): Promise<{
|
|
48
|
+
id: string;
|
|
49
|
+
score: number;
|
|
50
|
+
payload: SessionChunkPayload;
|
|
51
|
+
}[]>;
|
|
52
|
+
export declare function upsertSessionChunks(points: Array<{
|
|
53
|
+
id: string;
|
|
54
|
+
vector: number[];
|
|
55
|
+
payload: SessionChunkPayload;
|
|
56
|
+
}>): Promise<void>;
|
|
57
|
+
export declare function scrollSessionChunks(filter?: Record<string, unknown>, limit?: number, offset?: string): Promise<{
|
|
58
|
+
points: {
|
|
59
|
+
id: string;
|
|
60
|
+
payload: SessionChunkPayload;
|
|
61
|
+
}[];
|
|
62
|
+
next_page_offset: string | null;
|
|
63
|
+
}>;
|
|
64
|
+
export declare function countSessionChunks(filter?: Record<string, unknown>): Promise<number>;
|
|
65
|
+
interface StoredCategory {
|
|
66
|
+
name: string;
|
|
67
|
+
description: string;
|
|
68
|
+
created_at: string;
|
|
69
|
+
parent?: string;
|
|
70
|
+
color?: string;
|
|
71
|
+
is_parent?: boolean;
|
|
72
|
+
}
|
|
73
|
+
export declare function getCategories(): Promise<StoredCategory[] | null>;
|
|
74
|
+
export declare function saveCategories(categories: StoredCategory[]): Promise<void>;
|
|
75
|
+
/**
|
|
76
|
+
* Close the database connection. Call on process exit.
|
|
77
|
+
*/
|
|
78
|
+
export declare function closeDatabase(): void;
|
|
79
|
+
/**
|
|
80
|
+
* Reopen the database at the current SQLITE_DB_PATH.
|
|
81
|
+
* Call after updating process.env.SQLITE_DB_PATH to switch databases.
|
|
82
|
+
*/
|
|
83
|
+
export declare function reopenDatabase(): Promise<void>;
|
|
84
|
+
export {};
|
|
85
|
+
//# sourceMappingURL=sqlite.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sqlite.d.ts","sourceRoot":"","sources":["../../src/services/sqlite.ts"],"names":[],"mappings":"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"}
|