multimodemind 0.0.1 → 0.1.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.
Files changed (84) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +71 -4
  3. package/dist/cli/config.d.ts +14 -0
  4. package/dist/cli/config.d.ts.map +1 -0
  5. package/dist/cli/config.js +30 -0
  6. package/dist/cli/config.js.map +1 -0
  7. package/dist/cli/dashboard.d.ts +14 -0
  8. package/dist/cli/dashboard.d.ts.map +1 -0
  9. package/dist/cli/dashboard.js +277 -0
  10. package/dist/cli/dashboard.js.map +1 -0
  11. package/dist/embeddings/base.d.ts +19 -0
  12. package/dist/embeddings/base.d.ts.map +1 -0
  13. package/dist/embeddings/base.js +6 -0
  14. package/dist/embeddings/base.js.map +1 -0
  15. package/dist/embeddings/index.d.ts +11 -0
  16. package/dist/embeddings/index.d.ts.map +1 -0
  17. package/dist/embeddings/index.js +18 -0
  18. package/dist/embeddings/index.js.map +1 -0
  19. package/dist/embeddings/local.d.ts +19 -0
  20. package/dist/embeddings/local.d.ts.map +1 -0
  21. package/dist/embeddings/local.js +40 -0
  22. package/dist/embeddings/local.js.map +1 -0
  23. package/dist/embeddings/openai.d.ts +15 -0
  24. package/dist/embeddings/openai.d.ts.map +1 -0
  25. package/dist/embeddings/openai.js +33 -0
  26. package/dist/embeddings/openai.js.map +1 -0
  27. package/dist/index.d.ts +12 -0
  28. package/dist/index.d.ts.map +1 -0
  29. package/dist/index.js +79 -0
  30. package/dist/index.js.map +1 -0
  31. package/dist/router/index.d.ts +25 -0
  32. package/dist/router/index.d.ts.map +1 -0
  33. package/dist/router/index.js +82 -0
  34. package/dist/router/index.js.map +1 -0
  35. package/dist/stores/base.d.ts +40 -0
  36. package/dist/stores/base.d.ts.map +1 -0
  37. package/dist/stores/base.js +6 -0
  38. package/dist/stores/base.js.map +1 -0
  39. package/dist/stores/files.d.ts +23 -0
  40. package/dist/stores/files.d.ts.map +1 -0
  41. package/dist/stores/files.js +144 -0
  42. package/dist/stores/files.js.map +1 -0
  43. package/dist/stores/index.d.ts +7 -0
  44. package/dist/stores/index.d.ts.map +1 -0
  45. package/dist/stores/index.js +6 -0
  46. package/dist/stores/index.js.map +1 -0
  47. package/dist/stores/leveldb.d.ts +21 -0
  48. package/dist/stores/leveldb.d.ts.map +1 -0
  49. package/dist/stores/leveldb.js +99 -0
  50. package/dist/stores/leveldb.js.map +1 -0
  51. package/dist/stores/markdown.d.ts +25 -0
  52. package/dist/stores/markdown.d.ts.map +1 -0
  53. package/dist/stores/markdown.js +133 -0
  54. package/dist/stores/markdown.js.map +1 -0
  55. package/dist/stores/sqlite.d.ts +22 -0
  56. package/dist/stores/sqlite.d.ts.map +1 -0
  57. package/dist/stores/sqlite.js +125 -0
  58. package/dist/stores/sqlite.js.map +1 -0
  59. package/dist/stores/utils.d.ts +17 -0
  60. package/dist/stores/utils.d.ts.map +1 -0
  61. package/dist/stores/utils.js +40 -0
  62. package/dist/stores/utils.js.map +1 -0
  63. package/dist/stores/vector.d.ts +26 -0
  64. package/dist/stores/vector.d.ts.map +1 -0
  65. package/dist/stores/vector.js +106 -0
  66. package/dist/stores/vector.js.map +1 -0
  67. package/dist/tools/retrieve.d.ts +9 -0
  68. package/dist/tools/retrieve.d.ts.map +1 -0
  69. package/dist/tools/retrieve.js +41 -0
  70. package/dist/tools/retrieve.js.map +1 -0
  71. package/dist/tools/sources.d.ts +9 -0
  72. package/dist/tools/sources.d.ts.map +1 -0
  73. package/dist/tools/sources.js +34 -0
  74. package/dist/tools/sources.js.map +1 -0
  75. package/dist/tools/store.d.ts +10 -0
  76. package/dist/tools/store.d.ts.map +1 -0
  77. package/dist/tools/store.js +51 -0
  78. package/dist/tools/store.js.map +1 -0
  79. package/dist/types.d.ts +59 -0
  80. package/dist/types.d.ts.map +1 -0
  81. package/dist/types.js +6 -0
  82. package/dist/types.js.map +1 -0
  83. package/package.json +56 -13
  84. package/index.js +0 -1
@@ -0,0 +1,34 @@
1
+ /**
2
+ * MCP tool: sources
3
+ * Returns health and metadata for all configured stores.
4
+ * Copyright Old Cart Technology LLC — MIT License
5
+ */
6
+ export function registerSourcesTool(server, stores) {
7
+ server.tool('sources', 'List all configured memory stores, their availability, and entry counts.', {}, // no input params
8
+ async () => {
9
+ const results = await Promise.allSettled(stores.map((s) => s.sources()));
10
+ const lines = ['# Memory sources\n'];
11
+ for (let i = 0; i < results.length; i++) {
12
+ const result = results[i];
13
+ const store = stores[i];
14
+ if (result.status === 'fulfilled') {
15
+ const info = result.value;
16
+ const status = info.available ? '✓' : '✗';
17
+ const count = info.entryCount !== undefined ? ` | ${info.entryCount} entries` : '';
18
+ const size = info.sizeBytes !== undefined
19
+ ? ` | ${(info.sizeBytes / 1024).toFixed(1)}KB`
20
+ : '';
21
+ const path = info.path ? ` | path: ${info.path}` : '';
22
+ const err = info.error ? ` | error: ${info.error}` : '';
23
+ lines.push(`${status} **${info.type}** (${info.name})${count}${size}${path}${err}`);
24
+ }
25
+ else {
26
+ lines.push(`✗ **${store.type}** — failed to query: ${String(result.reason)}`);
27
+ }
28
+ }
29
+ return {
30
+ content: [{ type: 'text', text: lines.join('\n') }],
31
+ };
32
+ });
33
+ }
34
+ //# sourceMappingURL=sources.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sources.js","sourceRoot":"","sources":["../../src/tools/sources.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,MAAM,UAAU,mBAAmB,CAAC,MAAiB,EAAE,MAAqB;IAC1E,MAAM,CAAC,IAAI,CACT,SAAS,EACT,0EAA0E,EAC1E,EAAE,EAAE,kBAAkB;IACtB,KAAK,IAAI,EAAE;QACT,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QAEzE,MAAM,KAAK,GAAa,CAAC,oBAAoB,CAAC,CAAC;QAE/C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACxC,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAE,CAAC;YAC3B,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAE,CAAC;YAEzB,IAAI,MAAM,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;gBAClC,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC;gBAC1B,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;gBAC1C,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,UAAU,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;gBACnF,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,KAAK,SAAS;oBACvC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI;oBAC9C,CAAC,CAAC,EAAE,CAAC;gBACP,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACtD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,aAAa,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACxD,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,MAAM,IAAI,CAAC,IAAI,OAAO,IAAI,CAAC,IAAI,IAAI,KAAK,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,EAAE,CAAC,CAAC;YACtF,CAAC;iBAAM,CAAC;gBACN,KAAK,CAAC,IAAI,CAAC,OAAO,KAAK,CAAC,IAAI,yBAAyB,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YAChF,CAAC;QACH,CAAC;QAED,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;SAC7D,CAAC;IACJ,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * MCP tool: store
3
+ * Persists a memory entry, generates an embedding, routes to the target store.
4
+ * Copyright Old Cart Technology LLC — MIT License
5
+ */
6
+ import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
7
+ import type { MemoryStore } from '../stores/base.js';
8
+ import type { EmbeddingProvider } from '../embeddings/base.js';
9
+ export declare function registerStoreTool(server: McpServer, stores: MemoryStore[], embedder: EmbeddingProvider): void;
10
+ //# sourceMappingURL=store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/tools/store.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAa/D,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,SAAS,EACjB,MAAM,EAAE,WAAW,EAAE,EACrB,QAAQ,EAAE,iBAAiB,GAC1B,IAAI,CA2CN"}
@@ -0,0 +1,51 @@
1
+ /**
2
+ * MCP tool: store
3
+ * Persists a memory entry, generates an embedding, routes to the target store.
4
+ * Copyright Old Cart Technology LLC — MIT License
5
+ */
6
+ import { z } from 'zod';
7
+ const STORE_TYPES = ['sqlite', 'leveldb', 'markdown', 'files', 'vector'];
8
+ const StoreInput = z.object({
9
+ content: z.string().min(1).describe('The text content to store in memory'),
10
+ metadata: z.record(z.string(), z.unknown()).optional()
11
+ .describe('Arbitrary key-value metadata to attach to this entry'),
12
+ store: z.enum(STORE_TYPES).optional()
13
+ .describe('Target store type. Omit to use auto-routing (sqlite by default in v1)'),
14
+ });
15
+ export function registerStoreTool(server, stores, embedder) {
16
+ server.tool('store', 'Persist content to agent memory with optional metadata and target store.', StoreInput.shape, async ({ content, metadata = {}, store: storeType }) => {
17
+ // Auto-route: in v1, default to sqlite; v2 will classify content type
18
+ const targetType = storeType ?? 'sqlite';
19
+ const target = stores.find((s) => s.type === targetType);
20
+ if (!target) {
21
+ return {
22
+ content: [{
23
+ type: 'text',
24
+ text: `Error: store type "${targetType}" is not configured.`,
25
+ }],
26
+ isError: true,
27
+ };
28
+ }
29
+ // Generate embedding
30
+ let embedding;
31
+ try {
32
+ embedding = await embedder.embed(content);
33
+ }
34
+ catch (err) {
35
+ console.warn('[mmind:store] Embedding failed, storing without vector:', err);
36
+ }
37
+ const id = await target.store({
38
+ content,
39
+ metadata: metadata,
40
+ storeType: targetType,
41
+ embedding,
42
+ });
43
+ return {
44
+ content: [{
45
+ type: 'text',
46
+ text: `Stored to ${targetType} (id: ${id})`,
47
+ }],
48
+ };
49
+ });
50
+ }
51
+ //# sourceMappingURL=store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/tools/store.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAMxB,MAAM,WAAW,GAAgC,CAAC,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;AAEtG,MAAM,UAAU,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1B,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,qCAAqC,CAAC;IAC1E,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE;SACnD,QAAQ,CAAC,sDAAsD,CAAC;IACnE,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,QAAQ,EAAE;SAClC,QAAQ,CAAC,uEAAuE,CAAC;CACrF,CAAC,CAAC;AAEH,MAAM,UAAU,iBAAiB,CAC/B,MAAiB,EACjB,MAAqB,EACrB,QAA2B;IAE3B,MAAM,CAAC,IAAI,CACT,OAAO,EACP,0EAA0E,EAC1E,UAAU,CAAC,KAAK,EAChB,KAAK,EAAE,EAAE,OAAO,EAAE,QAAQ,GAAG,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE;QACrD,sEAAsE;QACtE,MAAM,UAAU,GAAc,SAAS,IAAI,QAAQ,CAAC;QACpD,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC;QAEzD,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO;gBACL,OAAO,EAAE,CAAC;wBACR,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,sBAAsB,UAAU,sBAAsB;qBAC7D,CAAC;gBACF,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;QAED,qBAAqB;QACrB,IAAI,SAA+B,CAAC;QACpC,IAAI,CAAC;YACH,SAAS,GAAG,MAAM,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC5C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,IAAI,CAAC,yDAAyD,EAAE,GAAG,CAAC,CAAC;QAC/E,CAAC;QAED,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC;YAC5B,OAAO;YACP,QAAQ,EAAE,QAAmC;YAC7C,SAAS,EAAE,UAAU;YACrB,SAAS;SACV,CAAC,CAAC;QAEH,OAAO;YACL,OAAO,EAAE,CAAC;oBACR,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,aAAa,UAAU,SAAS,EAAE,GAAG;iBAC5C,CAAC;SACH,CAAC;IACJ,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,59 @@
1
+ /**
2
+ * Core types for Multimode Mind
3
+ * Copyright Old Cart Technology LLC — MIT License
4
+ */
5
+ export type StoreType = 'sqlite' | 'leveldb' | 'markdown' | 'files' | 'vector';
6
+ export interface MemoryEntry {
7
+ id: string;
8
+ content: string;
9
+ metadata: Record<string, unknown>;
10
+ storeType: StoreType;
11
+ createdAt: string;
12
+ updatedAt: string;
13
+ embedding?: number[];
14
+ }
15
+ export interface RankedEntry {
16
+ entry: MemoryEntry;
17
+ /** 0–1, higher is more relevant */
18
+ score: number;
19
+ /** Human-readable provenance: "sqlite:notes", "markdown:vault/ideas.md" */
20
+ source: string;
21
+ }
22
+ export interface RetrieveResult {
23
+ entries: RankedEntry[];
24
+ query: string;
25
+ totalCandidates: number;
26
+ storesQueried: StoreType[];
27
+ conflicts?: ConflictNote[];
28
+ }
29
+ /** Reserved for v2 conflict detection */
30
+ export interface ConflictNote {
31
+ entryIds: [string, string];
32
+ description: string;
33
+ }
34
+ export interface SourceInfo {
35
+ type: StoreType;
36
+ name: string;
37
+ available: boolean;
38
+ path?: string;
39
+ entryCount?: number;
40
+ sizeBytes?: number;
41
+ error?: string;
42
+ }
43
+ export interface MultimodeMindConfig {
44
+ /** Absolute path to the Markdown vault directory */
45
+ vaultPath?: string;
46
+ /** Absolute path to the general files directory */
47
+ filesPath?: string;
48
+ /** Absolute path to the SQLite database file */
49
+ sqlitePath?: string;
50
+ /** Absolute path to the LevelDB directory */
51
+ leveldbPath?: string;
52
+ /** Absolute path to persist the Vectra vector index */
53
+ vectorIndexPath?: string;
54
+ /** OpenAI API key — falls back to OPENAI_API_KEY env var */
55
+ openAiApiKey?: string;
56
+ /** Max results returned by retrieve() across all stores */
57
+ retrieveLimit?: number;
58
+ }
59
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,MAAM,MAAM,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG,UAAU,GAAG,OAAO,GAAG,QAAQ,CAAC;AAI/E,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,SAAS,EAAE,SAAS,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB;AAID,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,WAAW,CAAC;IACnB,mCAAmC;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,2EAA2E;IAC3E,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,SAAS,EAAE,CAAC;IAC3B,SAAS,CAAC,EAAE,YAAY,EAAE,CAAC;CAC5B;AAED,yCAAyC;AACzC,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC3B,WAAW,EAAE,MAAM,CAAC;CACrB;AAID,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,SAAS,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAID,MAAM,WAAW,mBAAmB;IAClC,oDAAoD;IACpD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mDAAmD;IACnD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gDAAgD;IAChD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,6CAA6C;IAC7C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,uDAAuD;IACvD,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,4DAA4D;IAC5D,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,2DAA2D;IAC3D,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB"}
package/dist/types.js ADDED
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Core types for Multimode Mind
3
+ * Copyright Old Cart Technology LLC — MIT License
4
+ */
5
+ export {};
6
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
package/package.json CHANGED
@@ -1,19 +1,62 @@
1
1
  {
2
2
  "name": "multimodemind",
3
- "version": "0.0.1",
4
- "description": "Placeholder. This package name is reserved; a real release is coming.",
5
- "license": "MIT",
6
- "author": "benmclendon@gmail.com",
7
- "keywords": [
8
- "mmind",
9
- "multimodemind"
10
- ],
11
- "main": "index.js",
3
+ "version": "0.1.0",
4
+ "description": "Multi-store memory layer for AI agents, exposed over MCP",
5
+ "main": "dist/index.js",
6
+ "types": "dist/index.d.ts",
7
+ "bin": {
8
+ "mmind": "dist/index.js"
9
+ },
10
+ "type": "module",
11
+ "engines": {
12
+ "node": ">=20.0.0"
13
+ },
12
14
  "files": [
13
- "index.js",
14
- "README.md"
15
+ "dist",
16
+ "README.md",
17
+ "LICENSE"
15
18
  ],
16
- "publishConfig": {
17
- "access": "public"
19
+ "scripts": {
20
+ "build": "tsc",
21
+ "dev": "tsx src/index.ts",
22
+ "test": "vitest run",
23
+ "test:watch": "vitest",
24
+ "typecheck": "tsc --noEmit",
25
+ "lint": "tsc --noEmit",
26
+ "dashboard": "tsx src/cli/dashboard.ts",
27
+ "prepublishOnly": "npm run build"
28
+ },
29
+ "keywords": [
30
+ "mcp",
31
+ "memory",
32
+ "ai-agent",
33
+ "sqlite",
34
+ "vector",
35
+ "leveldb",
36
+ "obsidian"
37
+ ],
38
+ "author": "Old Cart Technology LLC",
39
+ "license": "MIT",
40
+ "dependencies": {
41
+ "@huggingface/transformers": "^4.2.0",
42
+ "@modelcontextprotocol/sdk": "^1.29.0",
43
+ "better-sqlite3": "^12.11.1",
44
+ "fast-glob": "^3.3.3",
45
+ "gray-matter": "^4.0.3",
46
+ "level": "^10.0.0",
47
+ "openai": "^6.48.0",
48
+ "user": "^0.0.0",
49
+ "vectra": "^0.15.0",
50
+ "zod": "^4.4.3"
51
+ },
52
+ "overrides": {
53
+ "adm-zip": ">=0.6.0"
54
+ },
55
+ "devDependencies": {
56
+ "@types/better-sqlite3": "^7.6.13",
57
+ "@types/node": "^26.1.1",
58
+ "tsx": "^4.23.1",
59
+ "typescript": "^7.0.2",
60
+ "vitest": "^4.1.10"
18
61
  }
19
62
  }
package/index.js DELETED
@@ -1 +0,0 @@
1
- module.exports = {};