mcpscraper-memory-db 1.0.0 → 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (53) hide show
  1. package/dist/db/chat-link.js +3 -3
  2. package/dist/db/chat-link.js.map +1 -1
  3. package/dist/db/facts.js +1 -1
  4. package/dist/db/facts.js.map +1 -1
  5. package/dist/db/interlink-state.js +1 -1
  6. package/dist/db/interlink-state.js.map +1 -1
  7. package/dist/db/keys.js +2 -2
  8. package/dist/db/keys.js.map +1 -1
  9. package/dist/db/messages.js +2 -2
  10. package/dist/db/messages.js.map +1 -1
  11. package/dist/db/notes.js +4 -4
  12. package/dist/db/notes.js.map +1 -1
  13. package/dist/db/pool.js +1 -1
  14. package/dist/db/pool.js.map +1 -1
  15. package/dist/db/presence.js +1 -1
  16. package/dist/db/presence.js.map +1 -1
  17. package/dist/db/props-snapshots.js +1 -1
  18. package/dist/db/props-snapshots.js.map +1 -1
  19. package/dist/db/provenance.js +1 -1
  20. package/dist/db/provenance.js.map +1 -1
  21. package/dist/db/schedule-entitlements.js +2 -2
  22. package/dist/db/schedule-entitlements.js.map +1 -1
  23. package/dist/db/schedule-link.js +3 -3
  24. package/dist/db/schedule-link.js.map +1 -1
  25. package/dist/db/scheduled-actions.js +1 -1
  26. package/dist/db/scheduled-actions.js.map +1 -1
  27. package/dist/db/secure-notes.js +2 -2
  28. package/dist/db/secure-notes.js.map +1 -1
  29. package/dist/db/shares.js +1 -1
  30. package/dist/db/shares.js.map +1 -1
  31. package/dist/db/tables.js +1 -1
  32. package/dist/db/tables.js.map +1 -1
  33. package/dist/db/trust.js +2 -2
  34. package/dist/db/trust.js.map +1 -1
  35. package/dist/db/usage.js +3 -3
  36. package/dist/db/usage.js.map +1 -1
  37. package/dist/db/vaults.js +3 -3
  38. package/dist/db/vaults.js.map +1 -1
  39. package/dist/db/video-runs.js +2 -2
  40. package/dist/db/video-runs.js.map +1 -1
  41. package/dist/db/webhooks.js +2 -2
  42. package/dist/db/webhooks.js.map +1 -1
  43. package/dist/lib/auth.js +3 -3
  44. package/dist/lib/auth.js.map +1 -1
  45. package/dist/lib/video-reaper.js.map +1 -1
  46. package/dist/rag/index-pipeline.js +4 -4
  47. package/dist/rag/index-pipeline.js.map +1 -1
  48. package/dist/rag/query-tool.d.ts +5 -1
  49. package/dist/rag/query-tool.js +2 -2
  50. package/dist/rag/query-tool.js.map +1 -1
  51. package/dist/rag/vector-store.js +1 -1
  52. package/dist/rag/vector-store.js.map +1 -1
  53. package/package.json +1 -1
@@ -1,10 +1,10 @@
1
1
  import { MDocument } from "@mastra/rag";
2
2
  import { embedMany } from "ai";
3
3
  import { createHash } from "node:crypto";
4
- import { jinaEmbedder } from "./embedder";
5
- import { memoryVectors, INDEX_NAME, ensureIndex } from "./vector-store";
6
- import { recordCost } from "../db/usage";
7
- import { embedCostUsd } from "../lib/cost-rates";
4
+ import { jinaEmbedder } from "./embedder.js";
5
+ import { memoryVectors, INDEX_NAME, ensureIndex } from "./vector-store.js";
6
+ import { recordCost } from "../db/usage.js";
7
+ import { embedCostUsd } from "../lib/cost-rates.js";
8
8
  async function indexDocument(args) {
9
9
  await ensureIndex();
10
10
  const doc = MDocument.fromText(args.text);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/rag/index-pipeline.ts"],"sourcesContent":["import { MDocument } from '@mastra/rag'\nimport { embedMany } from 'ai'\nimport { createHash } from 'node:crypto'\nimport { jinaEmbedder } from './embedder'\nimport { memoryVectors, INDEX_NAME, ensureIndex } from './vector-store'\nimport { recordCost } from '../db/usage'\nimport { embedCostUsd } from '../lib/cost-rates'\n\nexport async function indexDocument(args: {\n vault: string\n id: string\n text: string\n source: string\n capturedAt?: string\n identity?: string\n op?: string\n}): Promise<{ chunks: number; tokens: number; costUsd: number }> {\n await ensureIndex()\n\n const doc = MDocument.fromText(args.text)\n const chunks = await doc.chunk({ strategy: 'recursive', maxSize: 512, overlap: 50 })\n\n if (chunks.length === 0) {\n return { chunks: 0, tokens: 0, costUsd: 0 }\n }\n\n const { embeddings, usage } = await embedMany({\n model: jinaEmbedder,\n values: chunks.map((c) => c.text),\n })\n\n const tokens = usage?.tokens ?? 0\n const costUsd = embedCostUsd(tokens)\n if (args.identity) {\n try {\n await recordCost({ identity: args.identity, source: 'embed', op: args.op ?? 'index', tokens, costUsd, vault: args.vault })\n } catch {\n void 0\n }\n }\n\n const chunkIds = chunks.map((_, i) =>\n createHash('sha256').update(`${args.vault}::${args.id}::${i}`).digest('hex'),\n )\n\n const capturedAt = args.capturedAt ?? new Date().toISOString()\n\n await memoryVectors.upsert({\n indexName: INDEX_NAME,\n vectors: embeddings,\n ids: chunkIds,\n metadata: chunks.map((c) => ({\n text: c.text,\n source: args.source,\n vault: args.vault,\n docId: args.id,\n capturedAt,\n })),\n })\n\n return { chunks: chunks.length, tokens, costUsd }\n}\n\nexport async function removeDocument(args: { vault: string; id: string }): Promise<void> {\n await memoryVectors.deleteVectors({\n indexName: INDEX_NAME,\n filter: { vault: args.vault, docId: args.id },\n })\n}\n\nexport async function removeVaultVectors(args: { vault: string }): Promise<void> {\n await memoryVectors.deleteVectors({\n indexName: INDEX_NAME,\n filter: { vault: args.vault },\n })\n}\n"],"mappings":"AAAA,SAAS,iBAAiB;AAC1B,SAAS,iBAAiB;AAC1B,SAAS,kBAAkB;AAC3B,SAAS,oBAAoB;AAC7B,SAAS,eAAe,YAAY,mBAAmB;AACvD,SAAS,kBAAkB;AAC3B,SAAS,oBAAoB;AAE7B,eAAsB,cAAc,MAQ6B;AAC/D,QAAM,YAAY;AAElB,QAAM,MAAM,UAAU,SAAS,KAAK,IAAI;AACxC,QAAM,SAAS,MAAM,IAAI,MAAM,EAAE,UAAU,aAAa,SAAS,KAAK,SAAS,GAAG,CAAC;AAEnF,MAAI,OAAO,WAAW,GAAG;AACvB,WAAO,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,EAAE;AAAA,EAC5C;AAEA,QAAM,EAAE,YAAY,MAAM,IAAI,MAAM,UAAU;AAAA,IAC5C,OAAO;AAAA,IACP,QAAQ,OAAO,IAAI,CAAC,MAAM,EAAE,IAAI;AAAA,EAClC,CAAC;AAED,QAAM,SAAS,OAAO,UAAU;AAChC,QAAM,UAAU,aAAa,MAAM;AACnC,MAAI,KAAK,UAAU;AACjB,QAAI;AACF,YAAM,WAAW,EAAE,UAAU,KAAK,UAAU,QAAQ,SAAS,IAAI,KAAK,MAAM,SAAS,QAAQ,SAAS,OAAO,KAAK,MAAM,CAAC;AAAA,IAC3H,QAAQ;AAAA,IAER;AAAA,EACF;AAEA,QAAM,WAAW,OAAO;AAAA,IAAI,CAAC,GAAG,MAC9B,WAAW,QAAQ,EAAE,OAAO,GAAG,KAAK,KAAK,KAAK,KAAK,EAAE,KAAK,CAAC,EAAE,EAAE,OAAO,KAAK;AAAA,EAC7E;AAEA,QAAM,aAAa,KAAK,eAAc,oBAAI,KAAK,GAAE,YAAY;AAE7D,QAAM,cAAc,OAAO;AAAA,IACzB,WAAW;AAAA,IACX,SAAS;AAAA,IACT,KAAK;AAAA,IACL,UAAU,OAAO,IAAI,CAAC,OAAO;AAAA,MAC3B,MAAM,EAAE;AAAA,MACR,QAAQ,KAAK;AAAA,MACb,OAAO,KAAK;AAAA,MACZ,OAAO,KAAK;AAAA,MACZ;AAAA,IACF,EAAE;AAAA,EACJ,CAAC;AAED,SAAO,EAAE,QAAQ,OAAO,QAAQ,QAAQ,QAAQ;AAClD;AAEA,eAAsB,eAAe,MAAoD;AACvF,QAAM,cAAc,cAAc;AAAA,IAChC,WAAW;AAAA,IACX,QAAQ,EAAE,OAAO,KAAK,OAAO,OAAO,KAAK,GAAG;AAAA,EAC9C,CAAC;AACH;AAEA,eAAsB,mBAAmB,MAAwC;AAC/E,QAAM,cAAc,cAAc;AAAA,IAChC,WAAW;AAAA,IACX,QAAQ,EAAE,OAAO,KAAK,MAAM;AAAA,EAC9B,CAAC;AACH;","names":[]}
1
+ {"version":3,"sources":["../../src/rag/index-pipeline.ts"],"sourcesContent":["import { MDocument } from '@mastra/rag'\nimport { embedMany } from 'ai'\nimport { createHash } from 'node:crypto'\nimport { jinaEmbedder } from './embedder.js'\nimport { memoryVectors, INDEX_NAME, ensureIndex } from './vector-store.js'\nimport { recordCost } from '../db/usage.js'\nimport { embedCostUsd } from '../lib/cost-rates.js'\n\nexport async function indexDocument(args: {\n vault: string\n id: string\n text: string\n source: string\n capturedAt?: string\n identity?: string\n op?: string\n}): Promise<{ chunks: number; tokens: number; costUsd: number }> {\n await ensureIndex()\n\n const doc = MDocument.fromText(args.text)\n const chunks = await doc.chunk({ strategy: 'recursive', maxSize: 512, overlap: 50 })\n\n if (chunks.length === 0) {\n return { chunks: 0, tokens: 0, costUsd: 0 }\n }\n\n const { embeddings, usage } = await embedMany({\n model: jinaEmbedder,\n values: chunks.map((c) => c.text),\n })\n\n const tokens = usage?.tokens ?? 0\n const costUsd = embedCostUsd(tokens)\n if (args.identity) {\n try {\n await recordCost({ identity: args.identity, source: 'embed', op: args.op ?? 'index', tokens, costUsd, vault: args.vault })\n } catch {\n void 0\n }\n }\n\n const chunkIds = chunks.map((_, i) =>\n createHash('sha256').update(`${args.vault}::${args.id}::${i}`).digest('hex'),\n )\n\n const capturedAt = args.capturedAt ?? new Date().toISOString()\n\n await memoryVectors.upsert({\n indexName: INDEX_NAME,\n vectors: embeddings,\n ids: chunkIds,\n metadata: chunks.map((c) => ({\n text: c.text,\n source: args.source,\n vault: args.vault,\n docId: args.id,\n capturedAt,\n })),\n })\n\n return { chunks: chunks.length, tokens, costUsd }\n}\n\nexport async function removeDocument(args: { vault: string; id: string }): Promise<void> {\n await memoryVectors.deleteVectors({\n indexName: INDEX_NAME,\n filter: { vault: args.vault, docId: args.id },\n })\n}\n\nexport async function removeVaultVectors(args: { vault: string }): Promise<void> {\n await memoryVectors.deleteVectors({\n indexName: INDEX_NAME,\n filter: { vault: args.vault },\n })\n}\n"],"mappings":"AAAA,SAAS,iBAAiB;AAC1B,SAAS,iBAAiB;AAC1B,SAAS,kBAAkB;AAC3B,SAAS,oBAAoB;AAC7B,SAAS,eAAe,YAAY,mBAAmB;AACvD,SAAS,kBAAkB;AAC3B,SAAS,oBAAoB;AAE7B,eAAsB,cAAc,MAQ6B;AAC/D,QAAM,YAAY;AAElB,QAAM,MAAM,UAAU,SAAS,KAAK,IAAI;AACxC,QAAM,SAAS,MAAM,IAAI,MAAM,EAAE,UAAU,aAAa,SAAS,KAAK,SAAS,GAAG,CAAC;AAEnF,MAAI,OAAO,WAAW,GAAG;AACvB,WAAO,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,EAAE;AAAA,EAC5C;AAEA,QAAM,EAAE,YAAY,MAAM,IAAI,MAAM,UAAU;AAAA,IAC5C,OAAO;AAAA,IACP,QAAQ,OAAO,IAAI,CAAC,MAAM,EAAE,IAAI;AAAA,EAClC,CAAC;AAED,QAAM,SAAS,OAAO,UAAU;AAChC,QAAM,UAAU,aAAa,MAAM;AACnC,MAAI,KAAK,UAAU;AACjB,QAAI;AACF,YAAM,WAAW,EAAE,UAAU,KAAK,UAAU,QAAQ,SAAS,IAAI,KAAK,MAAM,SAAS,QAAQ,SAAS,OAAO,KAAK,MAAM,CAAC;AAAA,IAC3H,QAAQ;AAAA,IAER;AAAA,EACF;AAEA,QAAM,WAAW,OAAO;AAAA,IAAI,CAAC,GAAG,MAC9B,WAAW,QAAQ,EAAE,OAAO,GAAG,KAAK,KAAK,KAAK,KAAK,EAAE,KAAK,CAAC,EAAE,EAAE,OAAO,KAAK;AAAA,EAC7E;AAEA,QAAM,aAAa,KAAK,eAAc,oBAAI,KAAK,GAAE,YAAY;AAE7D,QAAM,cAAc,OAAO;AAAA,IACzB,WAAW;AAAA,IACX,SAAS;AAAA,IACT,KAAK;AAAA,IACL,UAAU,OAAO,IAAI,CAAC,OAAO;AAAA,MAC3B,MAAM,EAAE;AAAA,MACR,QAAQ,KAAK;AAAA,MACb,OAAO,KAAK;AAAA,MACZ,OAAO,KAAK;AAAA,MACZ;AAAA,IACF,EAAE;AAAA,EACJ,CAAC;AAED,SAAO,EAAE,QAAQ,OAAO,QAAQ,QAAQ,QAAQ;AAClD;AAEA,eAAsB,eAAe,MAAoD;AACvF,QAAM,cAAc,cAAc;AAAA,IAChC,WAAW;AAAA,IACX,QAAQ,EAAE,OAAO,KAAK,OAAO,OAAO,KAAK,GAAG;AAAA,EAC9C,CAAC;AACH;AAEA,eAAsB,mBAAmB,MAAwC;AAC/E,QAAM,cAAc,cAAc;AAAA,IAChC,WAAW;AAAA,IACX,QAAQ,EAAE,OAAO,KAAK,MAAM;AAAA,EAC9B,CAAC;AACH;","names":[]}
@@ -1,4 +1,8 @@
1
- import { RagTool } from './vector-search.js';
1
+ import { Tool } from '@mastra/core/tools';
2
+
3
+ type RagTool<TInput, TOutput> = Tool<TInput, TOutput, unknown, unknown> & {
4
+ execute: NonNullable<Tool<TInput, TOutput, unknown, unknown>['execute']>;
5
+ };
2
6
 
3
7
  declare const vectorQueryTool: RagTool<{
4
8
  queryText: string;
@@ -1,7 +1,7 @@
1
1
  import { createVectorQueryTool, createGraphRAGTool } from "@mastra/rag";
2
2
  import { embed } from "ai";
3
- import { jinaEmbedder } from "./embedder";
4
- import { memoryVectors, INDEX_NAME } from "./vector-store";
3
+ import { jinaEmbedder } from "./embedder.js";
4
+ import { memoryVectors, INDEX_NAME } from "./vector-store.js";
5
5
  const vectorQueryTool = createVectorQueryTool({
6
6
  vectorStoreName: "memoryVectors",
7
7
  indexName: INDEX_NAME,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/rag/query-tool.ts"],"sourcesContent":["import { createVectorQueryTool, createGraphRAGTool } from '@mastra/rag'\nimport { embed } from 'ai'\nimport { jinaEmbedder } from './embedder'\nimport { memoryVectors, INDEX_NAME } from './vector-store'\n\nexport const vectorQueryTool = createVectorQueryTool({\n vectorStoreName: 'memoryVectors',\n indexName: INDEX_NAME,\n model: jinaEmbedder,\n})\n\nexport const graphQueryTool = createGraphRAGTool({\n vectorStoreName: 'memoryVectors',\n indexName: INDEX_NAME,\n model: jinaEmbedder,\n graphOptions: { dimension: 1024 },\n})\n\nexport async function embedQuery(query: string): Promise<number[]> {\n const { embedding } = await embed({ model: jinaEmbedder, value: query })\n return embedding\n}\n\nexport async function queryWithEmbedding(args: {\n embedding: number[]\n vault: string | string[]\n topK?: number\n docId?: string\n}): Promise<{ results: { text: string; source: string; score: number; vault?: string }[] }> {\n const vaultFilter = Array.isArray(args.vault) ? { $in: args.vault } : args.vault\n const hits = await memoryVectors.query({\n indexName: INDEX_NAME,\n queryVector: args.embedding,\n topK: args.topK ?? 8,\n filter: args.docId ? { vault: vaultFilter, docId: args.docId } : { vault: vaultFilter },\n })\n const results = hits.map((h) => ({\n text: String(h.metadata?.text ?? ''),\n source: String(h.metadata?.source ?? ''),\n score: Number(h.score ?? 0),\n vault: h.metadata?.vault ? String(h.metadata.vault) : undefined,\n }))\n return { results }\n}\n\nexport async function semanticSearch(args: {\n vault: string | string[]\n query: string\n topK?: number\n docId?: string\n}): Promise<{ results: { text: string; source: string; score: number; vault?: string }[] }> {\n const embedding = await embedQuery(args.query)\n return queryWithEmbedding({ embedding, vault: args.vault, topK: args.topK, docId: args.docId })\n}\n"],"mappings":"AAAA,SAAS,uBAAuB,0BAA0B;AAC1D,SAAS,aAAa;AACtB,SAAS,oBAAoB;AAC7B,SAAS,eAAe,kBAAkB;AAEnC,MAAM,kBAAkB,sBAAsB;AAAA,EACnD,iBAAiB;AAAA,EACjB,WAAW;AAAA,EACX,OAAO;AACT,CAAC;AAEM,MAAM,iBAAiB,mBAAmB;AAAA,EAC/C,iBAAiB;AAAA,EACjB,WAAW;AAAA,EACX,OAAO;AAAA,EACP,cAAc,EAAE,WAAW,KAAK;AAClC,CAAC;AAED,eAAsB,WAAW,OAAkC;AACjE,QAAM,EAAE,UAAU,IAAI,MAAM,MAAM,EAAE,OAAO,cAAc,OAAO,MAAM,CAAC;AACvE,SAAO;AACT;AAEA,eAAsB,mBAAmB,MAKmD;AAC1F,QAAM,cAAc,MAAM,QAAQ,KAAK,KAAK,IAAI,EAAE,KAAK,KAAK,MAAM,IAAI,KAAK;AAC3E,QAAM,OAAO,MAAM,cAAc,MAAM;AAAA,IACrC,WAAW;AAAA,IACX,aAAa,KAAK;AAAA,IAClB,MAAM,KAAK,QAAQ;AAAA,IACnB,QAAQ,KAAK,QAAQ,EAAE,OAAO,aAAa,OAAO,KAAK,MAAM,IAAI,EAAE,OAAO,YAAY;AAAA,EACxF,CAAC;AACD,QAAM,UAAU,KAAK,IAAI,CAAC,OAAO;AAAA,IAC/B,MAAM,OAAO,EAAE,UAAU,QAAQ,EAAE;AAAA,IACnC,QAAQ,OAAO,EAAE,UAAU,UAAU,EAAE;AAAA,IACvC,OAAO,OAAO,EAAE,SAAS,CAAC;AAAA,IAC1B,OAAO,EAAE,UAAU,QAAQ,OAAO,EAAE,SAAS,KAAK,IAAI;AAAA,EACxD,EAAE;AACF,SAAO,EAAE,QAAQ;AACnB;AAEA,eAAsB,eAAe,MAKuD;AAC1F,QAAM,YAAY,MAAM,WAAW,KAAK,KAAK;AAC7C,SAAO,mBAAmB,EAAE,WAAW,OAAO,KAAK,OAAO,MAAM,KAAK,MAAM,OAAO,KAAK,MAAM,CAAC;AAChG;","names":[]}
1
+ {"version":3,"sources":["../../src/rag/query-tool.ts"],"sourcesContent":["import { createVectorQueryTool, createGraphRAGTool } from '@mastra/rag'\nimport { embed } from 'ai'\nimport { jinaEmbedder } from './embedder.js'\nimport { memoryVectors, INDEX_NAME } from './vector-store.js'\n\nexport const vectorQueryTool = createVectorQueryTool({\n vectorStoreName: 'memoryVectors',\n indexName: INDEX_NAME,\n model: jinaEmbedder,\n})\n\nexport const graphQueryTool = createGraphRAGTool({\n vectorStoreName: 'memoryVectors',\n indexName: INDEX_NAME,\n model: jinaEmbedder,\n graphOptions: { dimension: 1024 },\n})\n\nexport async function embedQuery(query: string): Promise<number[]> {\n const { embedding } = await embed({ model: jinaEmbedder, value: query })\n return embedding\n}\n\nexport async function queryWithEmbedding(args: {\n embedding: number[]\n vault: string | string[]\n topK?: number\n docId?: string\n}): Promise<{ results: { text: string; source: string; score: number; vault?: string }[] }> {\n const vaultFilter = Array.isArray(args.vault) ? { $in: args.vault } : args.vault\n const hits = await memoryVectors.query({\n indexName: INDEX_NAME,\n queryVector: args.embedding,\n topK: args.topK ?? 8,\n filter: args.docId ? { vault: vaultFilter, docId: args.docId } : { vault: vaultFilter },\n })\n const results = hits.map((h) => ({\n text: String(h.metadata?.text ?? ''),\n source: String(h.metadata?.source ?? ''),\n score: Number(h.score ?? 0),\n vault: h.metadata?.vault ? String(h.metadata.vault) : undefined,\n }))\n return { results }\n}\n\nexport async function semanticSearch(args: {\n vault: string | string[]\n query: string\n topK?: number\n docId?: string\n}): Promise<{ results: { text: string; source: string; score: number; vault?: string }[] }> {\n const embedding = await embedQuery(args.query)\n return queryWithEmbedding({ embedding, vault: args.vault, topK: args.topK, docId: args.docId })\n}\n"],"mappings":"AAAA,SAAS,uBAAuB,0BAA0B;AAC1D,SAAS,aAAa;AACtB,SAAS,oBAAoB;AAC7B,SAAS,eAAe,kBAAkB;AAEnC,MAAM,kBAAkB,sBAAsB;AAAA,EACnD,iBAAiB;AAAA,EACjB,WAAW;AAAA,EACX,OAAO;AACT,CAAC;AAEM,MAAM,iBAAiB,mBAAmB;AAAA,EAC/C,iBAAiB;AAAA,EACjB,WAAW;AAAA,EACX,OAAO;AAAA,EACP,cAAc,EAAE,WAAW,KAAK;AAClC,CAAC;AAED,eAAsB,WAAW,OAAkC;AACjE,QAAM,EAAE,UAAU,IAAI,MAAM,MAAM,EAAE,OAAO,cAAc,OAAO,MAAM,CAAC;AACvE,SAAO;AACT;AAEA,eAAsB,mBAAmB,MAKmD;AAC1F,QAAM,cAAc,MAAM,QAAQ,KAAK,KAAK,IAAI,EAAE,KAAK,KAAK,MAAM,IAAI,KAAK;AAC3E,QAAM,OAAO,MAAM,cAAc,MAAM;AAAA,IACrC,WAAW;AAAA,IACX,aAAa,KAAK;AAAA,IAClB,MAAM,KAAK,QAAQ;AAAA,IACnB,QAAQ,KAAK,QAAQ,EAAE,OAAO,aAAa,OAAO,KAAK,MAAM,IAAI,EAAE,OAAO,YAAY;AAAA,EACxF,CAAC;AACD,QAAM,UAAU,KAAK,IAAI,CAAC,OAAO;AAAA,IAC/B,MAAM,OAAO,EAAE,UAAU,QAAQ,EAAE;AAAA,IACnC,QAAQ,OAAO,EAAE,UAAU,UAAU,EAAE;AAAA,IACvC,OAAO,OAAO,EAAE,SAAS,CAAC;AAAA,IAC1B,OAAO,EAAE,UAAU,QAAQ,OAAO,EAAE,SAAS,KAAK,IAAI;AAAA,EACxD,EAAE;AACF,SAAO,EAAE,QAAQ;AACnB;AAEA,eAAsB,eAAe,MAKuD;AAC1F,QAAM,YAAY,MAAM,WAAW,KAAK,KAAK;AAC7C,SAAO,mBAAmB,EAAE,WAAW,OAAO,KAAK,OAAO,MAAM,KAAK,MAAM,OAAO,KAAK,MAAM,CAAC;AAChG;","names":[]}
@@ -1,5 +1,5 @@
1
1
  import { PgVector } from "@mastra/pg";
2
- import { EMBED_DIM } from "./embedder";
2
+ import { EMBED_DIM } from "./embedder.js";
3
3
  const INDEX_NAME = "memory";
4
4
  const memoryVectors = new PgVector({
5
5
  id: "memoryVectors",
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/rag/vector-store.ts"],"sourcesContent":["import { PgVector } from '@mastra/pg';\nimport { EMBED_DIM } from './embedder';\n\nexport const INDEX_NAME = 'memory';\n\nexport const memoryVectors = new PgVector({\n id: 'memoryVectors',\n connectionString: process.env.DATABASE_URL ?? '',\n});\n\nexport async function ensureIndex(): Promise<void> {\n try {\n await memoryVectors.createIndex({ indexName: INDEX_NAME, dimension: EMBED_DIM });\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n const normalized = message.toLowerCase();\n const alreadyExists =\n normalized.includes('already exists') || normalized.includes('duplicate');\n if (!alreadyExists) {\n throw error;\n }\n }\n}\n"],"mappings":"AAAA,SAAS,gBAAgB;AACzB,SAAS,iBAAiB;AAEnB,MAAM,aAAa;AAEnB,MAAM,gBAAgB,IAAI,SAAS;AAAA,EACxC,IAAI;AAAA,EACJ,kBAAkB,QAAQ,IAAI,gBAAgB;AAChD,CAAC;AAED,eAAsB,cAA6B;AACjD,MAAI;AACF,UAAM,cAAc,YAAY,EAAE,WAAW,YAAY,WAAW,UAAU,CAAC;AAAA,EACjF,SAAS,OAAO;AACd,UAAM,UAAU,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AACrE,UAAM,aAAa,QAAQ,YAAY;AACvC,UAAM,gBACJ,WAAW,SAAS,gBAAgB,KAAK,WAAW,SAAS,WAAW;AAC1E,QAAI,CAAC,eAAe;AAClB,YAAM;AAAA,IACR;AAAA,EACF;AACF;","names":[]}
1
+ {"version":3,"sources":["../../src/rag/vector-store.ts"],"sourcesContent":["import { PgVector } from '@mastra/pg';\nimport { EMBED_DIM } from './embedder.js';\n\nexport const INDEX_NAME = 'memory';\n\nexport const memoryVectors = new PgVector({\n id: 'memoryVectors',\n connectionString: process.env.DATABASE_URL ?? '',\n});\n\nexport async function ensureIndex(): Promise<void> {\n try {\n await memoryVectors.createIndex({ indexName: INDEX_NAME, dimension: EMBED_DIM });\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n const normalized = message.toLowerCase();\n const alreadyExists =\n normalized.includes('already exists') || normalized.includes('duplicate');\n if (!alreadyExists) {\n throw error;\n }\n }\n}\n"],"mappings":"AAAA,SAAS,gBAAgB;AACzB,SAAS,iBAAiB;AAEnB,MAAM,aAAa;AAEnB,MAAM,gBAAgB,IAAI,SAAS;AAAA,EACxC,IAAI;AAAA,EACJ,kBAAkB,QAAQ,IAAI,gBAAgB;AAChD,CAAC;AAED,eAAsB,cAA6B;AACjD,MAAI;AACF,UAAM,cAAc,YAAY,EAAE,WAAW,YAAY,WAAW,UAAU,CAAC;AAAA,EACjF,SAAS,OAAO;AACd,UAAM,UAAU,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AACrE,UAAM,aAAa,QAAQ,YAAY;AACvC,UAAM,gBACJ,WAAW,SAAS,gBAAgB,KAAK,WAAW,SAAS,WAAW;AAC1E,QAAI,CAAC,eAAe;AAClB,YAAM;AAAA,IACR;AAAA,EACF;AACF;","names":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mcpscraper-memory-db",
3
- "version": "1.0.0",
3
+ "version": "1.0.2",
4
4
  "description": "Shared data-access layer for the mcpscraper memory product — Postgres db/*.ts, the auth/crypto/vault lib/*.ts modules it depends on, and the Jina/pgvector rag/*.ts indexing layer. Consumed by mcp-memory and mcp-scraper-scheduler so both stay on one implementation instead of hand-copied duplicates.",
5
5
  "type": "module",
6
6
  "license": "UNLICENSED",