exovault-mcp-server 1.0.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/dist/auth.d.ts +41 -0
- package/dist/auth.d.ts.map +1 -0
- package/dist/auth.js +236 -0
- package/dist/auth.js.map +1 -0
- package/dist/auto-session.d.ts +39 -0
- package/dist/auto-session.d.ts.map +1 -0
- package/dist/auto-session.js +128 -0
- package/dist/auto-session.js.map +1 -0
- package/dist/buffer-persistence.d.ts +35 -0
- package/dist/buffer-persistence.d.ts.map +1 -0
- package/dist/buffer-persistence.js +110 -0
- package/dist/buffer-persistence.js.map +1 -0
- package/dist/coerce-params.d.ts +36 -0
- package/dist/coerce-params.d.ts.map +1 -0
- package/dist/coerce-params.js +120 -0
- package/dist/coerce-params.js.map +1 -0
- package/dist/crypto.d.ts +39 -0
- package/dist/crypto.d.ts.map +1 -0
- package/dist/crypto.js +119 -0
- package/dist/crypto.js.map +1 -0
- package/dist/db.d.ts +350 -0
- package/dist/db.d.ts.map +1 -0
- package/dist/db.js +866 -0
- package/dist/db.js.map +1 -0
- package/dist/embedding-config.d.ts +11 -0
- package/dist/embedding-config.d.ts.map +1 -0
- package/dist/embedding-config.js +24 -0
- package/dist/embedding-config.js.map +1 -0
- package/dist/entity-extraction.d.ts +22 -0
- package/dist/entity-extraction.d.ts.map +1 -0
- package/dist/entity-extraction.js +140 -0
- package/dist/entity-extraction.js.map +1 -0
- package/dist/episodic-headline.d.ts +6 -0
- package/dist/episodic-headline.d.ts.map +1 -0
- package/dist/episodic-headline.js +62 -0
- package/dist/episodic-headline.js.map +1 -0
- package/dist/error-sanitizer.d.ts +20 -0
- package/dist/error-sanitizer.d.ts.map +1 -0
- package/dist/error-sanitizer.js +54 -0
- package/dist/error-sanitizer.js.map +1 -0
- package/dist/extraction-budget.d.ts +39 -0
- package/dist/extraction-budget.d.ts.map +1 -0
- package/dist/extraction-budget.js +122 -0
- package/dist/extraction-budget.js.map +1 -0
- package/dist/extraction-llm.d.ts +22 -0
- package/dist/extraction-llm.d.ts.map +1 -0
- package/dist/extraction-llm.js +32 -0
- package/dist/extraction-llm.js.map +1 -0
- package/dist/extraction-prompt.d.ts +40 -0
- package/dist/extraction-prompt.d.ts.map +1 -0
- package/dist/extraction-prompt.js +176 -0
- package/dist/extraction-prompt.js.map +1 -0
- package/dist/gateway-client.d.ts +303 -0
- package/dist/gateway-client.d.ts.map +1 -0
- package/dist/gateway-client.js +285 -0
- package/dist/gateway-client.js.map +1 -0
- package/dist/gateway-init.d.ts +32 -0
- package/dist/gateway-init.d.ts.map +1 -0
- package/dist/gateway-init.js +71 -0
- package/dist/gateway-init.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +1242 -0
- package/dist/index.js.map +1 -0
- package/dist/infer-task-status.d.ts +7 -0
- package/dist/infer-task-status.d.ts.map +1 -0
- package/dist/infer-task-status.js +23 -0
- package/dist/infer-task-status.js.map +1 -0
- package/dist/normalize-agent-id.d.ts +21 -0
- package/dist/normalize-agent-id.d.ts.map +1 -0
- package/dist/normalize-agent-id.js +54 -0
- package/dist/normalize-agent-id.js.map +1 -0
- package/dist/openai.d.ts +14 -0
- package/dist/openai.d.ts.map +1 -0
- package/dist/openai.js +43 -0
- package/dist/openai.js.map +1 -0
- package/dist/rlm/actions.d.ts +31 -0
- package/dist/rlm/actions.d.ts.map +1 -0
- package/dist/rlm/actions.js +241 -0
- package/dist/rlm/actions.js.map +1 -0
- package/dist/rlm/benchmark.d.ts +2 -0
- package/dist/rlm/benchmark.d.ts.map +1 -0
- package/dist/rlm/benchmark.js +215 -0
- package/dist/rlm/benchmark.js.map +1 -0
- package/dist/rlm/execute.d.ts +13 -0
- package/dist/rlm/execute.d.ts.map +1 -0
- package/dist/rlm/execute.js +366 -0
- package/dist/rlm/execute.js.map +1 -0
- package/dist/rlm/index.d.ts +6 -0
- package/dist/rlm/index.d.ts.map +1 -0
- package/dist/rlm/index.js +147 -0
- package/dist/rlm/index.js.map +1 -0
- package/dist/rlm/profiles.d.ts +9 -0
- package/dist/rlm/profiles.d.ts.map +1 -0
- package/dist/rlm/profiles.js +46 -0
- package/dist/rlm/profiles.js.map +1 -0
- package/dist/rlm/types.d.ts +98 -0
- package/dist/rlm/types.d.ts.map +1 -0
- package/dist/rlm/types.js +6 -0
- package/dist/rlm/types.js.map +1 -0
- package/dist/rlm/verify.d.ts +13 -0
- package/dist/rlm/verify.d.ts.map +1 -0
- package/dist/rlm/verify.js +58 -0
- package/dist/rlm/verify.js.map +1 -0
- package/dist/rlm/writeback.d.ts +7 -0
- package/dist/rlm/writeback.d.ts.map +1 -0
- package/dist/rlm/writeback.js +77 -0
- package/dist/rlm/writeback.js.map +1 -0
- package/dist/scripts/backfill-memory-embeddings.d.ts +2 -0
- package/dist/scripts/backfill-memory-embeddings.d.ts.map +1 -0
- package/dist/scripts/backfill-memory-embeddings.js +153 -0
- package/dist/scripts/backfill-memory-embeddings.js.map +1 -0
- package/dist/session-buffer.d.ts +104 -0
- package/dist/session-buffer.d.ts.map +1 -0
- package/dist/session-buffer.js +466 -0
- package/dist/session-buffer.js.map +1 -0
- package/dist/session-dedup.d.ts +30 -0
- package/dist/session-dedup.d.ts.map +1 -0
- package/dist/session-dedup.js +67 -0
- package/dist/session-dedup.js.map +1 -0
- package/dist/session-flush.d.ts +81 -0
- package/dist/session-flush.d.ts.map +1 -0
- package/dist/session-flush.js +169 -0
- package/dist/session-flush.js.map +1 -0
- package/dist/session-lifecycle.d.ts +72 -0
- package/dist/session-lifecycle.d.ts.map +1 -0
- package/dist/session-lifecycle.js +247 -0
- package/dist/session-lifecycle.js.map +1 -0
- package/dist/setup.d.ts +2 -0
- package/dist/setup.d.ts.map +1 -0
- package/dist/setup.js +260 -0
- package/dist/setup.js.map +1 -0
- package/dist/stopwords.d.ts +2 -0
- package/dist/stopwords.d.ts.map +1 -0
- package/dist/stopwords.js +20 -0
- package/dist/stopwords.js.map +1 -0
- package/dist/strip-html.d.ts +5 -0
- package/dist/strip-html.d.ts.map +1 -0
- package/dist/strip-html.js +35 -0
- package/dist/strip-html.js.map +1 -0
- package/dist/task-completion-flush.d.ts +36 -0
- package/dist/task-completion-flush.d.ts.map +1 -0
- package/dist/task-completion-flush.js +97 -0
- package/dist/task-completion-flush.js.map +1 -0
- package/dist/task-lifecycle-types.d.ts +13 -0
- package/dist/task-lifecycle-types.d.ts.map +1 -0
- package/dist/task-lifecycle-types.js +12 -0
- package/dist/task-lifecycle-types.js.map +1 -0
- package/dist/task-lifecycle.d.ts +78 -0
- package/dist/task-lifecycle.d.ts.map +1 -0
- package/dist/task-lifecycle.js +256 -0
- package/dist/task-lifecycle.js.map +1 -0
- package/dist/tools/agent-messages.d.ts +26 -0
- package/dist/tools/agent-messages.d.ts.map +1 -0
- package/dist/tools/agent-messages.js +123 -0
- package/dist/tools/agent-messages.js.map +1 -0
- package/dist/tools/agent-tasks.d.ts +24 -0
- package/dist/tools/agent-tasks.d.ts.map +1 -0
- package/dist/tools/agent-tasks.js +162 -0
- package/dist/tools/agent-tasks.js.map +1 -0
- package/dist/tools/archive-memory.d.ts +2 -0
- package/dist/tools/archive-memory.d.ts.map +1 -0
- package/dist/tools/archive-memory.js +19 -0
- package/dist/tools/archive-memory.js.map +1 -0
- package/dist/tools/blind-index.d.ts +29 -0
- package/dist/tools/blind-index.d.ts.map +1 -0
- package/dist/tools/blind-index.js +53 -0
- package/dist/tools/blind-index.js.map +1 -0
- package/dist/tools/cleanup-memories.d.ts +44 -0
- package/dist/tools/cleanup-memories.d.ts.map +1 -0
- package/dist/tools/cleanup-memories.js +126 -0
- package/dist/tools/cleanup-memories.js.map +1 -0
- package/dist/tools/context-checkpoint.d.ts +28 -0
- package/dist/tools/context-checkpoint.d.ts.map +1 -0
- package/dist/tools/context-checkpoint.js +140 -0
- package/dist/tools/context-checkpoint.js.map +1 -0
- package/dist/tools/context-profiles.d.ts +67 -0
- package/dist/tools/context-profiles.d.ts.map +1 -0
- package/dist/tools/context-profiles.js +30 -0
- package/dist/tools/context-profiles.js.map +1 -0
- package/dist/tools/create-note.d.ts +2 -0
- package/dist/tools/create-note.d.ts.map +1 -0
- package/dist/tools/create-note.js +60 -0
- package/dist/tools/create-note.js.map +1 -0
- package/dist/tools/create-vault.d.ts +5 -0
- package/dist/tools/create-vault.d.ts.map +1 -0
- package/dist/tools/create-vault.js +121 -0
- package/dist/tools/create-vault.js.map +1 -0
- package/dist/tools/decrypt-helpers.d.ts +31 -0
- package/dist/tools/decrypt-helpers.d.ts.map +1 -0
- package/dist/tools/decrypt-helpers.js +33 -0
- package/dist/tools/decrypt-helpers.js.map +1 -0
- package/dist/tools/delete-note.d.ts +2 -0
- package/dist/tools/delete-note.d.ts.map +1 -0
- package/dist/tools/delete-note.js +21 -0
- package/dist/tools/delete-note.js.map +1 -0
- package/dist/tools/explore-graph.d.ts +11 -0
- package/dist/tools/explore-graph.d.ts.map +1 -0
- package/dist/tools/explore-graph.js +169 -0
- package/dist/tools/explore-graph.js.map +1 -0
- package/dist/tools/get-related-memories.d.ts +2 -0
- package/dist/tools/get-related-memories.d.ts.map +1 -0
- package/dist/tools/get-related-memories.js +59 -0
- package/dist/tools/get-related-memories.js.map +1 -0
- package/dist/tools/knowledge-links.d.ts +17 -0
- package/dist/tools/knowledge-links.d.ts.map +1 -0
- package/dist/tools/knowledge-links.js +102 -0
- package/dist/tools/knowledge-links.js.map +1 -0
- package/dist/tools/list-active-agents.d.ts +5 -0
- package/dist/tools/list-active-agents.d.ts.map +1 -0
- package/dist/tools/list-active-agents.js +15 -0
- package/dist/tools/list-active-agents.js.map +1 -0
- package/dist/tools/list-notes.d.ts +2 -0
- package/dist/tools/list-notes.d.ts.map +1 -0
- package/dist/tools/list-notes.js +19 -0
- package/dist/tools/list-notes.js.map +1 -0
- package/dist/tools/list-vaults.d.ts +2 -0
- package/dist/tools/list-vaults.d.ts.map +1 -0
- package/dist/tools/list-vaults.js +19 -0
- package/dist/tools/list-vaults.js.map +1 -0
- package/dist/tools/mmr.d.ts +18 -0
- package/dist/tools/mmr.d.ts.map +1 -0
- package/dist/tools/mmr.js +67 -0
- package/dist/tools/mmr.js.map +1 -0
- package/dist/tools/read-memories.d.ts +2 -0
- package/dist/tools/read-memories.d.ts.map +1 -0
- package/dist/tools/read-memories.js +46 -0
- package/dist/tools/read-memories.js.map +1 -0
- package/dist/tools/read-note.d.ts +2 -0
- package/dist/tools/read-note.d.ts.map +1 -0
- package/dist/tools/read-note.js +35 -0
- package/dist/tools/read-note.js.map +1 -0
- package/dist/tools/read-notes.d.ts +6 -0
- package/dist/tools/read-notes.d.ts.map +1 -0
- package/dist/tools/read-notes.js +45 -0
- package/dist/tools/read-notes.js.map +1 -0
- package/dist/tools/resolve-vault-id.d.ts +6 -0
- package/dist/tools/resolve-vault-id.d.ts.map +1 -0
- package/dist/tools/resolve-vault-id.js +7 -0
- package/dist/tools/resolve-vault-id.js.map +1 -0
- package/dist/tools/rrf.d.ts +28 -0
- package/dist/tools/rrf.d.ts.map +1 -0
- package/dist/tools/rrf.js +19 -0
- package/dist/tools/rrf.js.map +1 -0
- package/dist/tools/search-and-read.d.ts +11 -0
- package/dist/tools/search-and-read.d.ts.map +1 -0
- package/dist/tools/search-and-read.js +208 -0
- package/dist/tools/search-and-read.js.map +1 -0
- package/dist/tools/search-memories.d.ts +13 -0
- package/dist/tools/search-memories.d.ts.map +1 -0
- package/dist/tools/search-memories.js +272 -0
- package/dist/tools/search-memories.js.map +1 -0
- package/dist/tools/search-notes.d.ts +2 -0
- package/dist/tools/search-notes.d.ts.map +1 -0
- package/dist/tools/search-notes.js +94 -0
- package/dist/tools/search-notes.js.map +1 -0
- package/dist/tools/semantic-search.d.ts +7 -0
- package/dist/tools/semantic-search.d.ts.map +1 -0
- package/dist/tools/semantic-search.js +85 -0
- package/dist/tools/semantic-search.js.map +1 -0
- package/dist/tools/session-start.d.ts +24 -0
- package/dist/tools/session-start.d.ts.map +1 -0
- package/dist/tools/session-start.js +256 -0
- package/dist/tools/session-start.js.map +1 -0
- package/dist/tools/stale-tasks.d.ts +22 -0
- package/dist/tools/stale-tasks.d.ts.map +1 -0
- package/dist/tools/stale-tasks.js +39 -0
- package/dist/tools/stale-tasks.js.map +1 -0
- package/dist/tools/temporal-decay.d.ts +21 -0
- package/dist/tools/temporal-decay.d.ts.map +1 -0
- package/dist/tools/temporal-decay.js +32 -0
- package/dist/tools/temporal-decay.js.map +1 -0
- package/dist/tools/update-memory.d.ts +19 -0
- package/dist/tools/update-memory.d.ts.map +1 -0
- package/dist/tools/update-memory.js +230 -0
- package/dist/tools/update-memory.js.map +1 -0
- package/dist/tools/update-note.d.ts +2 -0
- package/dist/tools/update-note.d.ts.map +1 -0
- package/dist/tools/update-note.js +79 -0
- package/dist/tools/update-note.js.map +1 -0
- package/dist/tools/vault-instruction-template.d.ts +17 -0
- package/dist/tools/vault-instruction-template.d.ts.map +1 -0
- package/dist/tools/vault-instruction-template.js +77 -0
- package/dist/tools/vault-instruction-template.js.map +1 -0
- package/dist/tools/wiki-link-sync.d.ts +34 -0
- package/dist/tools/wiki-link-sync.d.ts.map +1 -0
- package/dist/tools/wiki-link-sync.js +132 -0
- package/dist/tools/wiki-link-sync.js.map +1 -0
- package/dist/tools/wrap-tool-handler.d.ts +8 -0
- package/dist/tools/wrap-tool-handler.d.ts.map +1 -0
- package/dist/tools/wrap-tool-handler.js +32 -0
- package/dist/tools/wrap-tool-handler.js.map +1 -0
- package/dist/tools/write-memory.d.ts +34 -0
- package/dist/tools/write-memory.d.ts.map +1 -0
- package/dist/tools/write-memory.js +359 -0
- package/dist/tools/write-memory.js.map +1 -0
- package/dist/usage.d.ts +11 -0
- package/dist/usage.d.ts.map +1 -0
- package/dist/usage.js +38 -0
- package/dist/usage.js.map +1 -0
- package/dist/wiki-link-parser.d.ts +27 -0
- package/dist/wiki-link-parser.d.ts.map +1 -0
- package/dist/wiki-link-parser.js +93 -0
- package/dist/wiki-link-parser.js.map +1 -0
- package/package.json +38 -0
package/dist/db.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"db.js","sourceRoot":"","sources":["../src/db.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { McpContext } from "./auth.js";
|
|
2
|
+
export interface EmbeddingConfig {
|
|
3
|
+
apiKey: string;
|
|
4
|
+
baseUrl: string;
|
|
5
|
+
model: string;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Resolve embedding API configuration from env vars or MCP context.
|
|
9
|
+
* Priority: env vars > ctx.openaiApiKey > null.
|
|
10
|
+
*/
|
|
11
|
+
export declare function resolveEmbeddingConfig(ctx: McpContext): EmbeddingConfig | null;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"embedding-config.d.ts","sourceRoot":"","sources":["../src/embedding-config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAI5C,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,UAAU,GAAG,eAAe,GAAG,IAAI,CAsB9E"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
const OPENAI_EMBEDDING_MODEL = "text-embedding-3-small";
|
|
2
|
+
/**
|
|
3
|
+
* Resolve embedding API configuration from env vars or MCP context.
|
|
4
|
+
* Priority: env vars > ctx.openaiApiKey > null.
|
|
5
|
+
*/
|
|
6
|
+
export function resolveEmbeddingConfig(ctx) {
|
|
7
|
+
const envApiKey = process.env.EMBEDDING_API_KEY ??
|
|
8
|
+
process.env.OPENAI_API_KEY;
|
|
9
|
+
if (envApiKey) {
|
|
10
|
+
return {
|
|
11
|
+
apiKey: envApiKey,
|
|
12
|
+
baseUrl: process.env.EMBEDDING_BASE_URL ?? "https://api.openai.com/v1",
|
|
13
|
+
model: process.env.EMBEDDING_MODEL ?? OPENAI_EMBEDDING_MODEL,
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
if (ctx.openaiApiKey) {
|
|
17
|
+
return {
|
|
18
|
+
apiKey: ctx.openaiApiKey,
|
|
19
|
+
baseUrl: "https://api.openai.com/v1",
|
|
20
|
+
model: OPENAI_EMBEDDING_MODEL,
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
return null;
|
|
24
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"embedding-config.js","sourceRoot":"","sources":["../src/embedding-config.ts"],"names":[],"mappings":"AAEA,MAAM,sBAAsB,GAAG,wBAAwB,CAAC;AAQxD;;;GAGG;AACH,MAAM,UAAU,sBAAsB,CAAC,GAAe;IACpD,MAAM,SAAS,GACb,OAAO,CAAC,GAAG,CAAC,iBAAiB;QAC7B,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;IAE7B,IAAI,SAAS,EAAE,CAAC;QACd,OAAO;YACL,MAAM,EAAE,SAAS;YACjB,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,2BAA2B;YACtE,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,sBAAsB;SAC7D,CAAC;IACJ,CAAC;IAED,IAAI,GAAG,CAAC,YAAY,EAAE,CAAC;QACrB,OAAO;YACL,MAAM,EAAE,GAAG,CAAC,YAAY;YACxB,OAAO,EAAE,2BAA2B;YACpC,KAAK,EAAE,sBAAsB;SAC9B,CAAC;IACJ,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { McpContext } from "./auth.js";
|
|
2
|
+
export interface EntityExtractionConfig {
|
|
3
|
+
apiKey: string;
|
|
4
|
+
baseUrl: string;
|
|
5
|
+
model: string;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Resolve entity extraction config from env vars, server LLM config, or OpenAI key.
|
|
9
|
+
* Priority: env vars > ctx.llmConfig > ctx.openaiApiKey > null.
|
|
10
|
+
* Returns `null` if explicitly disabled or no API key is available.
|
|
11
|
+
*/
|
|
12
|
+
export declare function resolveEntityExtractionConfig(ctx: McpContext): EntityExtractionConfig | null;
|
|
13
|
+
/**
|
|
14
|
+
* Parse the LLM response into a string array of entities.
|
|
15
|
+
* Handles markdown fences, invalid JSON, noise filtering, and caps at MAX_ENTITIES.
|
|
16
|
+
*/
|
|
17
|
+
export declare function parseEntityResponse(raw: string): string[] | null;
|
|
18
|
+
/**
|
|
19
|
+
* Extract entities from memory content using a cheap LLM call.
|
|
20
|
+
* Returns `null` on any error, timeout, or missing config (fail-open).
|
|
21
|
+
*/
|
|
22
|
+
export declare function extractEntities(ctx: McpContext, content: string, summary?: string): Promise<string[] | null>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entity-extraction.d.ts","sourceRoot":"","sources":["../src/entity-extraction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAQ5C,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;;GAIG;AACH,wBAAgB,6BAA6B,CAC3C,GAAG,EAAE,UAAU,GACd,sBAAsB,GAAG,IAAI,CAkC/B;AAoCD;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,CAsBhE;AAED;;;GAGG;AACH,wBAAsB,eAAe,CACnC,GAAG,EAAE,UAAU,EACf,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,MAAM,GACf,OAAO,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CA0C1B"}
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
const DEFAULT_MODEL = "gpt-4o-mini";
|
|
2
|
+
const DEFAULT_BASE_URL = "https://api.openai.com/v1";
|
|
3
|
+
const MAX_INPUT_CHARS = 4000;
|
|
4
|
+
const TIMEOUT_MS = 10_000;
|
|
5
|
+
const MAX_ENTITIES = 20;
|
|
6
|
+
/**
|
|
7
|
+
* Resolve entity extraction config from env vars, server LLM config, or OpenAI key.
|
|
8
|
+
* Priority: env vars > ctx.llmConfig > ctx.openaiApiKey > null.
|
|
9
|
+
* Returns `null` if explicitly disabled or no API key is available.
|
|
10
|
+
*/
|
|
11
|
+
export function resolveEntityExtractionConfig(ctx) {
|
|
12
|
+
if (process.env.ENTITY_EXTRACTION_ENABLED === "false") {
|
|
13
|
+
return null;
|
|
14
|
+
}
|
|
15
|
+
// Env vars override everything
|
|
16
|
+
const envKey = process.env.ENTITY_EXTRACTION_API_KEY ?? process.env.OPENAI_API_KEY;
|
|
17
|
+
if (envKey) {
|
|
18
|
+
return {
|
|
19
|
+
apiKey: envKey,
|
|
20
|
+
baseUrl: process.env.ENTITY_EXTRACTION_BASE_URL ?? DEFAULT_BASE_URL,
|
|
21
|
+
model: process.env.ENTITY_EXTRACTION_MODEL ?? DEFAULT_MODEL,
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
// Server-side LLM config (llmApiKey/llmBaseUrl/llmModelId from config.json)
|
|
25
|
+
if (ctx.llmConfig) {
|
|
26
|
+
return {
|
|
27
|
+
apiKey: ctx.llmConfig.apiKey,
|
|
28
|
+
baseUrl: ctx.llmConfig.baseUrl,
|
|
29
|
+
model: ctx.llmConfig.modelId,
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
// Fallback to openaiApiKey with defaults
|
|
33
|
+
if (ctx.openaiApiKey) {
|
|
34
|
+
return {
|
|
35
|
+
apiKey: ctx.openaiApiKey,
|
|
36
|
+
baseUrl: DEFAULT_BASE_URL,
|
|
37
|
+
model: DEFAULT_MODEL,
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
return null;
|
|
41
|
+
}
|
|
42
|
+
const SYSTEM_PROMPT = `You are a precise entity extractor for a knowledge management system. Given text, extract ONLY meaningful, reusable entities that would be useful for cross-linking related memories.
|
|
43
|
+
|
|
44
|
+
Extract these types:
|
|
45
|
+
- People (names, not pronouns): "John Smith", "Alice"
|
|
46
|
+
- Projects/Products: "ExoVault", "React", "Kubernetes"
|
|
47
|
+
- Technologies/Tools: "TypeScript", "PostgreSQL", "Vercel"
|
|
48
|
+
- Organizations: "Anthropic", "OpenAI"
|
|
49
|
+
- Domain concepts (specific, not generic): "RLS", "E2E encryption", "semantic search"
|
|
50
|
+
|
|
51
|
+
Do NOT extract:
|
|
52
|
+
- Generic words: "memory", "update", "test", "data", "system", "config"
|
|
53
|
+
- Ordinals or labels: "Step 1", "Test 2", "Phase 3", "Sprint 1"
|
|
54
|
+
- Actions or verbs: "building", "fixing", "deploying"
|
|
55
|
+
- Session-specific noise: "checkpoint", "smoke test", "dry run"
|
|
56
|
+
- Vague concepts: "stuff", "things", "issue", "problem"
|
|
57
|
+
|
|
58
|
+
Return ONLY a JSON array of strings. Example: ["TypeScript","React","John","Acme Corp"]. If no meaningful entities are found, return [].`;
|
|
59
|
+
// Noise patterns that should never be entities
|
|
60
|
+
const NOISE_PATTERNS = [
|
|
61
|
+
/^(step|phase|sprint|test|checkpoint|session|rule|item)\s*\d*$/i,
|
|
62
|
+
/^(the|a|an|this|that|it|they|we|you|i)$/i,
|
|
63
|
+
/^(true|false|null|undefined|none|n\/a)$/i,
|
|
64
|
+
/^\d+$/, // Pure numbers
|
|
65
|
+
];
|
|
66
|
+
const MIN_ENTITY_LENGTH = 2;
|
|
67
|
+
const MAX_ENTITY_LENGTH = 100;
|
|
68
|
+
function isNoiseEntity(entity) {
|
|
69
|
+
if (entity.length < MIN_ENTITY_LENGTH || entity.length > MAX_ENTITY_LENGTH)
|
|
70
|
+
return true;
|
|
71
|
+
return NOISE_PATTERNS.some((p) => p.test(entity));
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Parse the LLM response into a string array of entities.
|
|
75
|
+
* Handles markdown fences, invalid JSON, noise filtering, and caps at MAX_ENTITIES.
|
|
76
|
+
*/
|
|
77
|
+
export function parseEntityResponse(raw) {
|
|
78
|
+
let cleaned = raw.trim();
|
|
79
|
+
// Strip markdown code fences
|
|
80
|
+
if (cleaned.startsWith("```")) {
|
|
81
|
+
cleaned = cleaned.replace(/^```(?:json)?\s*/, "").replace(/\s*```$/, "");
|
|
82
|
+
}
|
|
83
|
+
try {
|
|
84
|
+
const parsed = JSON.parse(cleaned);
|
|
85
|
+
if (!Array.isArray(parsed))
|
|
86
|
+
return null;
|
|
87
|
+
const entities = parsed
|
|
88
|
+
.filter((item) => typeof item === "string" && item.trim().length > 0)
|
|
89
|
+
.map((s) => s.trim())
|
|
90
|
+
.filter((s) => !isNoiseEntity(s))
|
|
91
|
+
.slice(0, MAX_ENTITIES);
|
|
92
|
+
return entities.length > 0 ? entities : null;
|
|
93
|
+
}
|
|
94
|
+
catch {
|
|
95
|
+
return null;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Extract entities from memory content using a cheap LLM call.
|
|
100
|
+
* Returns `null` on any error, timeout, or missing config (fail-open).
|
|
101
|
+
*/
|
|
102
|
+
export async function extractEntities(ctx, content, summary) {
|
|
103
|
+
const config = resolveEntityExtractionConfig(ctx);
|
|
104
|
+
if (!config)
|
|
105
|
+
return null;
|
|
106
|
+
const input = summary?.trim()
|
|
107
|
+
? `Summary: ${summary.trim()}\n\n${content.trim()}`
|
|
108
|
+
: content.trim();
|
|
109
|
+
const truncated = input.slice(0, MAX_INPUT_CHARS);
|
|
110
|
+
const baseUrl = config.baseUrl.replace(/\/$/, "");
|
|
111
|
+
try {
|
|
112
|
+
const response = await fetch(`${baseUrl}/chat/completions`, {
|
|
113
|
+
method: "POST",
|
|
114
|
+
headers: {
|
|
115
|
+
"Content-Type": "application/json",
|
|
116
|
+
Authorization: `Bearer ${config.apiKey}`,
|
|
117
|
+
},
|
|
118
|
+
body: JSON.stringify({
|
|
119
|
+
model: config.model,
|
|
120
|
+
temperature: 0,
|
|
121
|
+
messages: [
|
|
122
|
+
{ role: "system", content: SYSTEM_PROMPT },
|
|
123
|
+
{ role: "user", content: truncated },
|
|
124
|
+
],
|
|
125
|
+
}),
|
|
126
|
+
signal: AbortSignal.timeout(TIMEOUT_MS),
|
|
127
|
+
});
|
|
128
|
+
if (!response.ok)
|
|
129
|
+
return null;
|
|
130
|
+
const json = (await response.json());
|
|
131
|
+
const text = json.choices?.[0]?.message?.content;
|
|
132
|
+
if (!text)
|
|
133
|
+
return null;
|
|
134
|
+
return parseEntityResponse(text);
|
|
135
|
+
}
|
|
136
|
+
catch {
|
|
137
|
+
// Fail open — network errors, timeouts, parse failures all return null
|
|
138
|
+
return null;
|
|
139
|
+
}
|
|
140
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entity-extraction.js","sourceRoot":"","sources":["../src/entity-extraction.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Extracts a short headline (max 200 chars) from episodic memory content.
|
|
3
|
+
* Strips the "Session: Xm, agent=Y." metadata prefix and returns the
|
|
4
|
+
* first 1-2 substantive sentences. Pure function, no LLM calls.
|
|
5
|
+
*/
|
|
6
|
+
export declare function generateEpisodicHeadline(content: string): string;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"episodic-headline.d.ts","sourceRoot":"","sources":["../src/episodic-headline.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAOH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAkChE"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Extracts a short headline (max 200 chars) from episodic memory content.
|
|
3
|
+
* Strips the "Session: Xm, agent=Y." metadata prefix and returns the
|
|
4
|
+
* first 1-2 substantive sentences. Pure function, no LLM calls.
|
|
5
|
+
*/
|
|
6
|
+
const MAX_HEADLINE_CHARS = 200;
|
|
7
|
+
// Matches "Session: <duration>, agent=<name>." prefix (with optional newlines after)
|
|
8
|
+
const SESSION_PREFIX_RE = /^Session:\s*\S+,\s*agent=\S+\.\s*/;
|
|
9
|
+
export function generateEpisodicHeadline(content) {
|
|
10
|
+
if (!content)
|
|
11
|
+
return "";
|
|
12
|
+
// Strip the metadata prefix
|
|
13
|
+
const body = content.replace(SESSION_PREFIX_RE, "").trim();
|
|
14
|
+
// If stripping left nothing, return original content
|
|
15
|
+
if (!body)
|
|
16
|
+
return content;
|
|
17
|
+
// For rule-based format ("Explored: ...\nOutcomes: ..."), join lines
|
|
18
|
+
// For LLM narrative, take first 1-2 sentences
|
|
19
|
+
const sentences = splitIntoSentences(body);
|
|
20
|
+
// Take enough sentences to fill ~200 chars
|
|
21
|
+
let headline = "";
|
|
22
|
+
for (const sentence of sentences) {
|
|
23
|
+
if (!sentence.trim())
|
|
24
|
+
continue;
|
|
25
|
+
const candidate = headline ? `${headline} ${sentence}` : sentence;
|
|
26
|
+
if (candidate.length > MAX_HEADLINE_CHARS) {
|
|
27
|
+
// If we have nothing yet, take this sentence (will be clipped)
|
|
28
|
+
if (!headline)
|
|
29
|
+
headline = sentence;
|
|
30
|
+
break;
|
|
31
|
+
}
|
|
32
|
+
headline = candidate;
|
|
33
|
+
}
|
|
34
|
+
if (!headline)
|
|
35
|
+
return content;
|
|
36
|
+
// Clip if still too long
|
|
37
|
+
if (headline.length > MAX_HEADLINE_CHARS) {
|
|
38
|
+
return headline.slice(0, MAX_HEADLINE_CHARS) + "...";
|
|
39
|
+
}
|
|
40
|
+
return headline;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Split text into sentences, handling:
|
|
44
|
+
* - Period-terminated sentences
|
|
45
|
+
* - Newline-separated lines (rule-based format)
|
|
46
|
+
* - Numbered list items
|
|
47
|
+
*/
|
|
48
|
+
function splitIntoSentences(text) {
|
|
49
|
+
// First split by double newlines (paragraph boundaries)
|
|
50
|
+
const paragraphs = text.split(/\n\n+/);
|
|
51
|
+
const sentences = [];
|
|
52
|
+
for (const para of paragraphs) {
|
|
53
|
+
// Split by newlines (for rule-based "Explored:\nOutcomes:" format)
|
|
54
|
+
const lines = para.split(/\n/);
|
|
55
|
+
for (const line of lines) {
|
|
56
|
+
const trimmed = line.trim();
|
|
57
|
+
if (trimmed)
|
|
58
|
+
sentences.push(trimmed);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
return sentences;
|
|
62
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"episodic-headline.js","sourceRoot":"","sources":["../src/episodic-headline.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,kBAAkB,GAAG,GAAG,CAAC;AAE/B,qFAAqF;AACrF,MAAM,iBAAiB,GAAG,mCAAmC,CAAC;AAE9D,MAAM,UAAU,wBAAwB,CAAC,OAAe;IACtD,IAAI,CAAC,OAAO;QAAE,OAAO,EAAE,CAAC;IAExB,4BAA4B;IAC5B,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAE3D,qDAAqD;IACrD,IAAI,CAAC,IAAI;QAAE,OAAO,OAAO,CAAC;IAE1B,qEAAqE;IACrE,8CAA8C;IAC9C,MAAM,SAAS,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;IAE3C,2CAA2C;IAC3C,IAAI,QAAQ,GAAG,EAAE,CAAC;IAClB,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;YAAE,SAAS;QAC/B,MAAM,SAAS,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,QAAQ,IAAI,QAAQ,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC;QAClE,IAAI,SAAS,CAAC,MAAM,GAAG,kBAAkB,EAAE,CAAC;YAC1C,+DAA+D;YAC/D,IAAI,CAAC,QAAQ;gBAAE,QAAQ,GAAG,QAAQ,CAAC;YACnC,MAAM;QACR,CAAC;QACD,QAAQ,GAAG,SAAS,CAAC;IACvB,CAAC;IAED,IAAI,CAAC,QAAQ;QAAE,OAAO,OAAO,CAAC;IAE9B,yBAAyB;IACzB,IAAI,QAAQ,CAAC,MAAM,GAAG,kBAAkB,EAAE,CAAC;QACzC,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,kBAAkB,CAAC,GAAG,KAAK,CAAC;IACvD,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;;;GAKG;AACH,SAAS,kBAAkB,CAAC,IAAY;IACtC,wDAAwD;IACxD,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAEvC,MAAM,SAAS,GAAa,EAAE,CAAC;IAC/B,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;QAC9B,mEAAmE;QACnE,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC/B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;YAC5B,IAAI,OAAO;gBAAE,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Error sanitization utilities.
|
|
3
|
+
*
|
|
4
|
+
* These functions strip internal details (table names, column names,
|
|
5
|
+
* constraint names, API response bodies) from error messages before
|
|
6
|
+
* they reach clients or MCP tool output.
|
|
7
|
+
*
|
|
8
|
+
* Pattern: log the raw error to stderr for debugging, return a
|
|
9
|
+
* generic message to the caller.
|
|
10
|
+
*/
|
|
11
|
+
/**
|
|
12
|
+
* Sanitize a Supabase/PostgreSQL error into a safe, generic message.
|
|
13
|
+
* The operation name (e.g. "fetch vaults") is preserved for context.
|
|
14
|
+
*/
|
|
15
|
+
export declare function sanitizeDbError(operation: string, rawMessage: string): string;
|
|
16
|
+
/**
|
|
17
|
+
* Sanitize an external API error (OpenAI, embedding providers) into
|
|
18
|
+
* a safe message. Never includes the response body.
|
|
19
|
+
*/
|
|
20
|
+
export declare function sanitizeApiError(status: number, rawBody: string): string;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error-sanitizer.d.ts","sourceRoot":"","sources":["../src/error-sanitizer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH;;;GAGG;AACH,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAiB7E;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAoBxE"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Error sanitization utilities.
|
|
3
|
+
*
|
|
4
|
+
* These functions strip internal details (table names, column names,
|
|
5
|
+
* constraint names, API response bodies) from error messages before
|
|
6
|
+
* they reach clients or MCP tool output.
|
|
7
|
+
*
|
|
8
|
+
* Pattern: log the raw error to stderr for debugging, return a
|
|
9
|
+
* generic message to the caller.
|
|
10
|
+
*/
|
|
11
|
+
/**
|
|
12
|
+
* Sanitize a Supabase/PostgreSQL error into a safe, generic message.
|
|
13
|
+
* The operation name (e.g. "fetch vaults") is preserved for context.
|
|
14
|
+
*/
|
|
15
|
+
export function sanitizeDbError(operation, rawMessage) {
|
|
16
|
+
// Log full details to stderr for debugging
|
|
17
|
+
process.stderr.write(`[db] ${operation} failed: ${rawMessage}\n`);
|
|
18
|
+
// Detect common patterns and map to user-friendly messages
|
|
19
|
+
if (/duplicate key/i.test(rawMessage)) {
|
|
20
|
+
return `Failed to ${operation}: record already exists.`;
|
|
21
|
+
}
|
|
22
|
+
if (/row-level security/i.test(rawMessage) || /permission denied/i.test(rawMessage)) {
|
|
23
|
+
return `Failed to ${operation}: access denied.`;
|
|
24
|
+
}
|
|
25
|
+
if (/multiple \(or no\) rows returned/i.test(rawMessage) || /PGRST116/i.test(rawMessage)) {
|
|
26
|
+
return `Failed to ${operation}: record not found.`;
|
|
27
|
+
}
|
|
28
|
+
// Default: generic message, never include raw details
|
|
29
|
+
return `Failed to ${operation}. Please try again.`;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Sanitize an external API error (OpenAI, embedding providers) into
|
|
33
|
+
* a safe message. Never includes the response body.
|
|
34
|
+
*/
|
|
35
|
+
export function sanitizeApiError(status, rawBody) {
|
|
36
|
+
// Log full details to stderr for debugging
|
|
37
|
+
process.stderr.write(`[api] External API error ${status}: ${rawBody}\n`);
|
|
38
|
+
switch (status) {
|
|
39
|
+
case 401:
|
|
40
|
+
return "External API authentication failed.";
|
|
41
|
+
case 403:
|
|
42
|
+
return "External API access denied.";
|
|
43
|
+
case 429:
|
|
44
|
+
return "External API rate limit exceeded. Please retry later.";
|
|
45
|
+
case 413:
|
|
46
|
+
return "Request too large for external API.";
|
|
47
|
+
case 500:
|
|
48
|
+
case 502:
|
|
49
|
+
case 503:
|
|
50
|
+
return "External API service temporarily unavailable.";
|
|
51
|
+
default:
|
|
52
|
+
return "External API request failed.";
|
|
53
|
+
}
|
|
54
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error-sanitizer.js","sourceRoot":"","sources":["../src/error-sanitizer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,SAAiB,EAAE,UAAkB;IACnE,2CAA2C;IAC3C,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,SAAS,YAAY,UAAU,IAAI,CAAC,CAAC;IAElE,2DAA2D;IAC3D,IAAI,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;QACtC,OAAO,aAAa,SAAS,0BAA0B,CAAC;IAC1D,CAAC;IACD,IAAI,qBAAqB,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,oBAAoB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;QACpF,OAAO,aAAa,SAAS,kBAAkB,CAAC;IAClD,CAAC;IACD,IAAI,mCAAmC,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;QACzF,OAAO,aAAa,SAAS,qBAAqB,CAAC;IACrD,CAAC;IAED,sDAAsD;IACtD,OAAO,aAAa,SAAS,qBAAqB,CAAC;AACrD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,MAAc,EAAE,OAAe;IAC9D,2CAA2C;IAC3C,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,4BAA4B,MAAM,KAAK,OAAO,IAAI,CAAC,CAAC;IAEzE,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,GAAG;YACN,OAAO,qCAAqC,CAAC;QAC/C,KAAK,GAAG;YACN,OAAO,6BAA6B,CAAC;QACvC,KAAK,GAAG;YACN,OAAO,uDAAuD,CAAC;QACjE,KAAK,GAAG;YACN,OAAO,qCAAqC,CAAC;QAC/C,KAAK,GAAG,CAAC;QACT,KAAK,GAAG,CAAC;QACT,KAAK,GAAG;YACN,OAAO,+CAA+C,CAAC;QACzD;YACE,OAAO,8BAA8B,CAAC;IAC1C,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Extraction budget — daily limits and circuit breaker for LLM extraction.
|
|
3
|
+
*
|
|
4
|
+
* Pure budget functions (easy to test) + file I/O for persistence.
|
|
5
|
+
* Budget resets daily. Circuit breaker pauses extraction after repeated
|
|
6
|
+
* empty results or errors.
|
|
7
|
+
*
|
|
8
|
+
* Budget file: ~/.exovault-mcp/extraction-budget.json
|
|
9
|
+
*/
|
|
10
|
+
export interface ExtractionBudget {
|
|
11
|
+
date: string;
|
|
12
|
+
extractionCount: number;
|
|
13
|
+
inputTokensUsed: number;
|
|
14
|
+
outputTokensUsed: number;
|
|
15
|
+
consecutiveEmptyResults: number;
|
|
16
|
+
consecutiveErrors: number;
|
|
17
|
+
pausedUntil: string | null;
|
|
18
|
+
}
|
|
19
|
+
export declare const DAILY_MAX_EXTRACTIONS = 100;
|
|
20
|
+
export declare const DAILY_MAX_INPUT_TOKENS = 150000;
|
|
21
|
+
export declare const DAILY_MAX_OUTPUT_TOKENS = 30000;
|
|
22
|
+
export declare const CIRCUIT_EMPTY_MAX = 3;
|
|
23
|
+
export declare const CIRCUIT_ERROR_MAX = 2;
|
|
24
|
+
export declare const CIRCUIT_EMPTY_PAUSE_MS: number;
|
|
25
|
+
export declare const CIRCUIT_ERROR_PAUSE_MS: number;
|
|
26
|
+
export declare function createEmptyBudget(): ExtractionBudget;
|
|
27
|
+
export declare function isBudgetExhausted(budget: ExtractionBudget): {
|
|
28
|
+
exhausted: boolean;
|
|
29
|
+
reason?: string;
|
|
30
|
+
};
|
|
31
|
+
export declare function isCircuitBroken(budget: ExtractionBudget): {
|
|
32
|
+
broken: boolean;
|
|
33
|
+
reason?: string;
|
|
34
|
+
};
|
|
35
|
+
export declare function recordSuccess(budget: ExtractionBudget, inputTokens: number, outputTokens: number, memoryCount: number): ExtractionBudget;
|
|
36
|
+
export declare function recordEmpty(budget: ExtractionBudget): ExtractionBudget;
|
|
37
|
+
export declare function recordError(budget: ExtractionBudget): ExtractionBudget;
|
|
38
|
+
export declare function readBudget(): Promise<ExtractionBudget>;
|
|
39
|
+
export declare function writeBudget(budget: ExtractionBudget): Promise<void>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extraction-budget.d.ts","sourceRoot":"","sources":["../src/extraction-budget.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAQH,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;IACzB,uBAAuB,EAAE,MAAM,CAAC;IAChC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAID,eAAO,MAAM,qBAAqB,MAAM,CAAC;AACzC,eAAO,MAAM,sBAAsB,SAAU,CAAC;AAC9C,eAAO,MAAM,uBAAuB,QAAS,CAAC;AAC9C,eAAO,MAAM,iBAAiB,IAAI,CAAC;AACnC,eAAO,MAAM,iBAAiB,IAAI,CAAC;AACnC,eAAO,MAAM,sBAAsB,QAAiB,CAAC;AACrD,eAAO,MAAM,sBAAsB,QAAiB,CAAC;AAWrD,wBAAgB,iBAAiB,IAAI,gBAAgB,CAUpD;AAED,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,gBAAgB,GACvB;IAAE,SAAS,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAWzC;AAED,wBAAgB,eAAe,CAC7B,MAAM,EAAE,gBAAgB,GACvB;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAoBtC;AAED,wBAAgB,aAAa,CAC3B,MAAM,EAAE,gBAAgB,EACxB,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,EAEpB,WAAW,EAAE,MAAM,GAClB,gBAAgB,CAUlB;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,gBAAgB,GAAG,gBAAgB,CAUtE;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,gBAAgB,GAAG,gBAAgB,CAUtE;AAID,wBAAsB,UAAU,IAAI,OAAO,CAAC,gBAAgB,CAAC,CAc5D;AAED,wBAAsB,WAAW,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAOzE"}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Extraction budget — daily limits and circuit breaker for LLM extraction.
|
|
3
|
+
*
|
|
4
|
+
* Pure budget functions (easy to test) + file I/O for persistence.
|
|
5
|
+
* Budget resets daily. Circuit breaker pauses extraction after repeated
|
|
6
|
+
* empty results or errors.
|
|
7
|
+
*
|
|
8
|
+
* Budget file: ~/.exovault-mcp/extraction-budget.json
|
|
9
|
+
*/
|
|
10
|
+
import { readFile, writeFile, mkdir } from "node:fs/promises";
|
|
11
|
+
import { join } from "node:path";
|
|
12
|
+
import { homedir } from "node:os";
|
|
13
|
+
// ─── Constants ────────────────────────────────────────────────────────
|
|
14
|
+
export const DAILY_MAX_EXTRACTIONS = 100;
|
|
15
|
+
export const DAILY_MAX_INPUT_TOKENS = 150_000;
|
|
16
|
+
export const DAILY_MAX_OUTPUT_TOKENS = 30_000;
|
|
17
|
+
export const CIRCUIT_EMPTY_MAX = 3;
|
|
18
|
+
export const CIRCUIT_ERROR_MAX = 2;
|
|
19
|
+
export const CIRCUIT_EMPTY_PAUSE_MS = 60 * 60 * 1000; // 60 min
|
|
20
|
+
export const CIRCUIT_ERROR_PAUSE_MS = 30 * 60 * 1000; // 30 min
|
|
21
|
+
const CONFIG_DIR = join(homedir(), ".exovault-mcp");
|
|
22
|
+
const BUDGET_FILE = join(CONFIG_DIR, "extraction-budget.json");
|
|
23
|
+
// ─── Pure functions ───────────────────────────────────────────────────
|
|
24
|
+
function todayString() {
|
|
25
|
+
return new Date().toISOString().slice(0, 10);
|
|
26
|
+
}
|
|
27
|
+
export function createEmptyBudget() {
|
|
28
|
+
return {
|
|
29
|
+
date: todayString(),
|
|
30
|
+
extractionCount: 0,
|
|
31
|
+
inputTokensUsed: 0,
|
|
32
|
+
outputTokensUsed: 0,
|
|
33
|
+
consecutiveEmptyResults: 0,
|
|
34
|
+
consecutiveErrors: 0,
|
|
35
|
+
pausedUntil: null,
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
export function isBudgetExhausted(budget) {
|
|
39
|
+
if (budget.extractionCount >= DAILY_MAX_EXTRACTIONS) {
|
|
40
|
+
return { exhausted: true, reason: `Daily extraction limit reached (${DAILY_MAX_EXTRACTIONS})` };
|
|
41
|
+
}
|
|
42
|
+
if (budget.inputTokensUsed >= DAILY_MAX_INPUT_TOKENS) {
|
|
43
|
+
return { exhausted: true, reason: `Daily input token limit reached (${DAILY_MAX_INPUT_TOKENS})` };
|
|
44
|
+
}
|
|
45
|
+
if (budget.outputTokensUsed >= DAILY_MAX_OUTPUT_TOKENS) {
|
|
46
|
+
return { exhausted: true, reason: `Daily output token limit reached (${DAILY_MAX_OUTPUT_TOKENS})` };
|
|
47
|
+
}
|
|
48
|
+
return { exhausted: false };
|
|
49
|
+
}
|
|
50
|
+
export function isCircuitBroken(budget) {
|
|
51
|
+
// Check pause timer
|
|
52
|
+
if (budget.pausedUntil) {
|
|
53
|
+
const pauseEnd = new Date(budget.pausedUntil).getTime();
|
|
54
|
+
if (pauseEnd > Date.now()) {
|
|
55
|
+
return { broken: true, reason: `Circuit paused until ${budget.pausedUntil}` };
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
// Check consecutive empties
|
|
59
|
+
if (budget.consecutiveEmptyResults >= CIRCUIT_EMPTY_MAX) {
|
|
60
|
+
return { broken: true, reason: `${budget.consecutiveEmptyResults} consecutive empty results` };
|
|
61
|
+
}
|
|
62
|
+
// Check consecutive errors
|
|
63
|
+
if (budget.consecutiveErrors >= CIRCUIT_ERROR_MAX) {
|
|
64
|
+
return { broken: true, reason: `${budget.consecutiveErrors} consecutive errors` };
|
|
65
|
+
}
|
|
66
|
+
return { broken: false };
|
|
67
|
+
}
|
|
68
|
+
export function recordSuccess(budget, inputTokens, outputTokens,
|
|
69
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
70
|
+
memoryCount) {
|
|
71
|
+
return {
|
|
72
|
+
...budget,
|
|
73
|
+
extractionCount: budget.extractionCount + 1,
|
|
74
|
+
inputTokensUsed: budget.inputTokensUsed + inputTokens,
|
|
75
|
+
outputTokensUsed: budget.outputTokensUsed + outputTokens,
|
|
76
|
+
consecutiveEmptyResults: 0,
|
|
77
|
+
consecutiveErrors: 0,
|
|
78
|
+
pausedUntil: null,
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
export function recordEmpty(budget) {
|
|
82
|
+
const newEmptyCount = budget.consecutiveEmptyResults + 1;
|
|
83
|
+
return {
|
|
84
|
+
...budget,
|
|
85
|
+
extractionCount: budget.extractionCount + 1,
|
|
86
|
+
consecutiveEmptyResults: newEmptyCount,
|
|
87
|
+
pausedUntil: newEmptyCount >= CIRCUIT_EMPTY_MAX
|
|
88
|
+
? new Date(Date.now() + CIRCUIT_EMPTY_PAUSE_MS).toISOString()
|
|
89
|
+
: budget.pausedUntil,
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
export function recordError(budget) {
|
|
93
|
+
const newErrorCount = budget.consecutiveErrors + 1;
|
|
94
|
+
return {
|
|
95
|
+
...budget,
|
|
96
|
+
// Do NOT increment extractionCount — error means no extraction happened
|
|
97
|
+
consecutiveErrors: newErrorCount,
|
|
98
|
+
pausedUntil: newErrorCount >= CIRCUIT_ERROR_MAX
|
|
99
|
+
? new Date(Date.now() + CIRCUIT_ERROR_PAUSE_MS).toISOString()
|
|
100
|
+
: budget.pausedUntil,
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
// ─── File I/O ─────────────────────────────────────────────────────────
|
|
104
|
+
export async function readBudget() {
|
|
105
|
+
try {
|
|
106
|
+
const raw = await readFile(BUDGET_FILE, "utf-8");
|
|
107
|
+
const parsed = JSON.parse(raw);
|
|
108
|
+
// Reset if date changed (new day)
|
|
109
|
+
if (parsed.date !== todayString()) {
|
|
110
|
+
return createEmptyBudget();
|
|
111
|
+
}
|
|
112
|
+
return parsed;
|
|
113
|
+
}
|
|
114
|
+
catch {
|
|
115
|
+
// File missing, corrupt, or unreadable
|
|
116
|
+
return createEmptyBudget();
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
export async function writeBudget(budget) {
|
|
120
|
+
await mkdir(CONFIG_DIR, { recursive: true, mode: 0o700 });
|
|
121
|
+
await writeFile(BUDGET_FILE, JSON.stringify(budget, null, 2), { encoding: "utf-8", mode: 0o600 });
|
|
122
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extraction-budget.js","sourceRoot":"","sources":["../src/extraction-budget.ts"],"names":[],"mappings":"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"}
|