squish-memory 0.9.3 → 1.0.1

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 (223) hide show
  1. package/.env.mcp.example +14 -11
  2. package/CHANGELOG.md +68 -0
  3. package/README.md +82 -9
  4. package/bin/squish-add.mjs +32 -0
  5. package/bin/squish-rm.mjs +21 -0
  6. package/config/plugin-manifest.json +152 -0
  7. package/config/plugin-manifest.schema.json +244 -0
  8. package/config/settings.json +51 -0
  9. package/dist/algorithms/{merge/analytics → analytics}/token-estimator.d.ts +1 -1
  10. package/dist/algorithms/analytics/token-estimator.d.ts.map +1 -0
  11. package/dist/algorithms/{merge/analytics → analytics}/token-estimator.js +3 -3
  12. package/dist/algorithms/analytics/token-estimator.js.map +1 -0
  13. package/dist/algorithms/detection/hash-filters.d.ts.map +1 -0
  14. package/dist/algorithms/detection/hash-filters.js.map +1 -0
  15. package/dist/algorithms/{merge/detection → detection}/semantic-ranker.d.ts +1 -1
  16. package/dist/algorithms/detection/semantic-ranker.d.ts.map +1 -0
  17. package/dist/algorithms/{merge/detection → detection}/semantic-ranker.js +1 -1
  18. package/dist/algorithms/detection/semantic-ranker.js.map +1 -0
  19. package/dist/algorithms/{merge/detection → detection}/two-stage-detector.d.ts +1 -1
  20. package/dist/algorithms/detection/two-stage-detector.d.ts.map +1 -0
  21. package/dist/algorithms/{merge/detection → detection}/two-stage-detector.js +4 -4
  22. package/dist/algorithms/detection/two-stage-detector.js.map +1 -0
  23. package/dist/algorithms/handlers/approve-merge.d.ts.map +1 -0
  24. package/dist/algorithms/{merge/handlers → handlers}/approve-merge.js +4 -4
  25. package/dist/algorithms/handlers/approve-merge.js.map +1 -0
  26. package/dist/algorithms/{merge/handlers → handlers}/detect-duplicates.d.ts +1 -1
  27. package/dist/algorithms/handlers/detect-duplicates.d.ts.map +1 -0
  28. package/dist/algorithms/{merge/handlers → handlers}/detect-duplicates.js +55 -75
  29. package/dist/algorithms/handlers/detect-duplicates.js.map +1 -0
  30. package/dist/algorithms/handlers/get-stats.d.ts.map +1 -0
  31. package/dist/algorithms/{merge/handlers → handlers}/get-stats.js +3 -3
  32. package/dist/algorithms/handlers/get-stats.js.map +1 -0
  33. package/dist/algorithms/handlers/list-proposals.d.ts.map +1 -0
  34. package/dist/algorithms/{merge/handlers → handlers}/list-proposals.js +3 -3
  35. package/dist/algorithms/handlers/list-proposals.js.map +1 -0
  36. package/dist/algorithms/handlers/preview-merge.d.ts.map +1 -0
  37. package/dist/algorithms/{merge/handlers → handlers}/preview-merge.js +3 -3
  38. package/dist/algorithms/handlers/preview-merge.js.map +1 -0
  39. package/dist/algorithms/handlers/reject-merge.d.ts.map +1 -0
  40. package/dist/algorithms/{merge/handlers → handlers}/reject-merge.js +3 -3
  41. package/dist/algorithms/handlers/reject-merge.js.map +1 -0
  42. package/dist/algorithms/handlers/reverse-merge.d.ts.map +1 -0
  43. package/dist/algorithms/{merge/handlers → handlers}/reverse-merge.js +3 -3
  44. package/dist/algorithms/handlers/reverse-merge.js.map +1 -0
  45. package/dist/algorithms/{merge/safety → safety}/safety-checks.d.ts +1 -1
  46. package/dist/algorithms/safety/safety-checks.d.ts.map +1 -0
  47. package/dist/algorithms/safety/safety-checks.js +179 -0
  48. package/dist/algorithms/safety/safety-checks.js.map +1 -0
  49. package/dist/algorithms/{merge/strategies → strategies}/merge-strategies.d.ts +1 -1
  50. package/dist/algorithms/strategies/merge-strategies.d.ts.map +1 -0
  51. package/dist/algorithms/strategies/merge-strategies.js.map +1 -0
  52. package/dist/algorithms/utils/response-builder.d.ts +28 -0
  53. package/dist/algorithms/utils/response-builder.d.ts.map +1 -0
  54. package/dist/algorithms/utils/response-builder.js +37 -0
  55. package/dist/algorithms/utils/response-builder.js.map +1 -0
  56. package/dist/api/web/web.d.ts.map +1 -1
  57. package/dist/api/web/web.js +452 -472
  58. package/dist/api/web/web.js.map +1 -1
  59. package/dist/commands/mcp-server.js +7 -3
  60. package/dist/commands/mcp-server.js.map +1 -1
  61. package/dist/config.d.ts +10 -10
  62. package/dist/config.d.ts.map +1 -1
  63. package/dist/config.js +102 -55
  64. package/dist/config.js.map +1 -1
  65. package/dist/core/associations.js +2 -2
  66. package/dist/core/associations.js.map +1 -1
  67. package/dist/core/embeddings.d.ts +1 -1
  68. package/dist/core/embeddings.d.ts.map +1 -1
  69. package/dist/core/embeddings.js +10 -67
  70. package/dist/core/embeddings.js.map +1 -1
  71. package/dist/core/layers/generator.d.ts +25 -0
  72. package/dist/core/layers/generator.d.ts.map +1 -0
  73. package/dist/core/layers/generator.js +76 -0
  74. package/dist/core/layers/generator.js.map +1 -0
  75. package/dist/core/local-embeddings.d.ts +3 -11
  76. package/dist/core/local-embeddings.d.ts.map +1 -1
  77. package/dist/core/local-embeddings.js +2 -76
  78. package/dist/core/local-embeddings.js.map +1 -1
  79. package/dist/core/mcp/tools.d.ts.map +1 -1
  80. package/dist/core/mcp/tools.js +71 -0
  81. package/dist/core/mcp/tools.js.map +1 -1
  82. package/dist/core/memory/context-collector.d.ts.map +1 -1
  83. package/dist/core/memory/context-collector.js +3 -2
  84. package/dist/core/memory/context-collector.js.map +1 -1
  85. package/dist/core/memory/feedback-tracker.d.ts.map +1 -1
  86. package/dist/core/memory/feedback-tracker.js +10 -6
  87. package/dist/core/memory/feedback-tracker.js.map +1 -1
  88. package/dist/core/memory/hybrid-retrieval.d.ts.map +1 -1
  89. package/dist/core/memory/hybrid-retrieval.js +49 -1
  90. package/dist/core/memory/hybrid-retrieval.js.map +1 -1
  91. package/dist/core/memory/hybrid-search.d.ts.map +1 -1
  92. package/dist/core/memory/hybrid-search.js +32 -39
  93. package/dist/core/memory/hybrid-search.js.map +1 -1
  94. package/dist/core/memory/memories.d.ts.map +1 -1
  95. package/dist/core/memory/memories.js +1 -7
  96. package/dist/core/memory/memories.js.map +1 -1
  97. package/dist/core/memory/progressive-disclosure.d.ts.map +1 -1
  98. package/dist/core/memory/progressive-disclosure.js.map +1 -1
  99. package/dist/core/memory/query-rewriter.js +9 -9
  100. package/dist/core/memory/stats.js +5 -5
  101. package/dist/core/namespaces/index.d.ts +71 -0
  102. package/dist/core/namespaces/index.d.ts.map +1 -0
  103. package/dist/core/namespaces/index.js +305 -0
  104. package/dist/core/namespaces/index.js.map +1 -0
  105. package/dist/core/namespaces/uri-parser.d.ts +31 -0
  106. package/dist/core/namespaces/uri-parser.d.ts.map +1 -0
  107. package/dist/core/namespaces/uri-parser.js +74 -0
  108. package/dist/core/namespaces/uri-parser.js.map +1 -0
  109. package/dist/core/observations.d.ts.map +1 -1
  110. package/dist/core/observations.js +3 -12
  111. package/dist/core/observations.js.map +1 -1
  112. package/dist/core/projects.d.ts.map +1 -1
  113. package/dist/core/projects.js +0 -12
  114. package/dist/core/projects.js.map +1 -1
  115. package/dist/core/scheduler/cron-scheduler.d.ts.map +1 -1
  116. package/dist/core/scheduler/cron-scheduler.js +26 -7
  117. package/dist/core/scheduler/cron-scheduler.js.map +1 -1
  118. package/dist/core/scheduler/job-runner.js +8 -5
  119. package/dist/core/scheduler/job-runner.js.map +1 -1
  120. package/dist/core/search/conversations.js +33 -33
  121. package/dist/core/session-hooks/self-iteration-job.d.ts +20 -0
  122. package/dist/core/session-hooks/self-iteration-job.d.ts.map +1 -0
  123. package/dist/core/session-hooks/self-iteration-job.js +282 -0
  124. package/dist/core/session-hooks/self-iteration-job.js.map +1 -0
  125. package/dist/core/session-hooks/session-hooks.d.ts +18 -0
  126. package/dist/core/session-hooks/session-hooks.d.ts.map +1 -0
  127. package/dist/core/session-hooks/session-hooks.js +58 -0
  128. package/dist/core/session-hooks/session-hooks.js.map +1 -0
  129. package/dist/core/tracing/collector.d.ts +111 -0
  130. package/dist/core/tracing/collector.d.ts.map +1 -0
  131. package/dist/core/tracing/collector.js +350 -0
  132. package/dist/core/tracing/collector.js.map +1 -0
  133. package/dist/core/tracing/visualizer.d.ts +32 -0
  134. package/dist/core/tracing/visualizer.d.ts.map +1 -0
  135. package/dist/core/tracing/visualizer.js +165 -0
  136. package/dist/core/tracing/visualizer.js.map +1 -0
  137. package/dist/db/adapter.d.ts +6 -1
  138. package/dist/db/adapter.d.ts.map +1 -1
  139. package/dist/db/adapter.js +54 -126
  140. package/dist/db/adapter.js.map +1 -1
  141. package/dist/db/bootstrap.js +477 -477
  142. package/dist/db/index.d.ts +5 -1
  143. package/dist/db/index.d.ts.map +1 -1
  144. package/dist/drizzle/schema-sqlite.d.ts +384 -0
  145. package/dist/drizzle/schema-sqlite.d.ts.map +1 -1
  146. package/dist/drizzle/schema-sqlite.js +65 -0
  147. package/dist/drizzle/schema-sqlite.js.map +1 -1
  148. package/dist/drizzle/schema.d.ts +368 -0
  149. package/dist/drizzle/schema.d.ts.map +1 -1
  150. package/dist/drizzle/schema.js +63 -0
  151. package/dist/drizzle/schema.js.map +1 -1
  152. package/dist/index.d.ts +4 -4
  153. package/dist/index.js +101 -62
  154. package/dist/index.js.map +1 -1
  155. package/generated/mcp/manifest.json +23 -0
  156. package/generated/mcp/mcp-servers.json +25 -0
  157. package/generated/mcp/mcporter.json +34 -0
  158. package/generated/mcp/openclaw-memory-qmd.json +17 -0
  159. package/generated/mcp/runtime.json +12 -0
  160. package/package.json +70 -28
  161. package/packages/plugin-claude-code/README.md +73 -0
  162. package/packages/plugin-claude-code/dist/plugin-wrapper.d.ts +35 -0
  163. package/packages/plugin-claude-code/dist/plugin-wrapper.d.ts.map +1 -0
  164. package/packages/plugin-claude-code/dist/plugin-wrapper.js +191 -0
  165. package/packages/plugin-claude-code/dist/plugin-wrapper.js.map +1 -0
  166. package/packages/plugin-claude-code/package.json +31 -0
  167. package/packages/plugin-openclaw/README.md +70 -0
  168. package/packages/plugin-openclaw/dist/index.d.ts +49 -0
  169. package/packages/plugin-openclaw/dist/index.d.ts.map +1 -0
  170. package/packages/plugin-openclaw/dist/index.js +262 -0
  171. package/packages/plugin-openclaw/dist/index.js.map +1 -0
  172. package/packages/plugin-openclaw/openclaw.plugin.json +94 -0
  173. package/packages/plugin-openclaw/package.json +31 -0
  174. package/packages/plugin-opencode/install.mjs +217 -0
  175. package/packages/plugin-opencode/package.json +21 -0
  176. package/scripts/dependency-manager.mjs +217 -0
  177. package/scripts/detect-clients.mjs +78 -0
  178. package/scripts/install-interactive.mjs +674 -0
  179. package/scripts/install-plugin.mjs +415 -0
  180. package/scripts/test-interactive.mjs +131 -0
  181. package/commands/managed-sync.ts +0 -69
  182. package/commands/mcp-server.ts +0 -519
  183. package/dist/algorithms/merge/analytics/token-estimator.d.ts.map +0 -1
  184. package/dist/algorithms/merge/analytics/token-estimator.js.map +0 -1
  185. package/dist/algorithms/merge/detection/hash-filters.d.ts.map +0 -1
  186. package/dist/algorithms/merge/detection/hash-filters.js.map +0 -1
  187. package/dist/algorithms/merge/detection/semantic-ranker.d.ts.map +0 -1
  188. package/dist/algorithms/merge/detection/semantic-ranker.js.map +0 -1
  189. package/dist/algorithms/merge/detection/two-stage-detector.d.ts.map +0 -1
  190. package/dist/algorithms/merge/detection/two-stage-detector.js.map +0 -1
  191. package/dist/algorithms/merge/handlers/approve-merge.d.ts.map +0 -1
  192. package/dist/algorithms/merge/handlers/approve-merge.js.map +0 -1
  193. package/dist/algorithms/merge/handlers/detect-duplicates.d.ts.map +0 -1
  194. package/dist/algorithms/merge/handlers/detect-duplicates.js.map +0 -1
  195. package/dist/algorithms/merge/handlers/get-stats.d.ts.map +0 -1
  196. package/dist/algorithms/merge/handlers/get-stats.js.map +0 -1
  197. package/dist/algorithms/merge/handlers/list-proposals.d.ts.map +0 -1
  198. package/dist/algorithms/merge/handlers/list-proposals.js.map +0 -1
  199. package/dist/algorithms/merge/handlers/preview-merge.d.ts.map +0 -1
  200. package/dist/algorithms/merge/handlers/preview-merge.js.map +0 -1
  201. package/dist/algorithms/merge/handlers/reject-merge.d.ts.map +0 -1
  202. package/dist/algorithms/merge/handlers/reject-merge.js.map +0 -1
  203. package/dist/algorithms/merge/handlers/reverse-merge.d.ts.map +0 -1
  204. package/dist/algorithms/merge/handlers/reverse-merge.js.map +0 -1
  205. package/dist/algorithms/merge/safety/safety-checks.d.ts.map +0 -1
  206. package/dist/algorithms/merge/safety/safety-checks.js +0 -215
  207. package/dist/algorithms/merge/safety/safety-checks.js.map +0 -1
  208. package/dist/algorithms/merge/strategies/merge-strategies.d.ts.map +0 -1
  209. package/dist/algorithms/merge/strategies/merge-strategies.js.map +0 -1
  210. package/dist/core/embeddings/qmd-provider.d.ts +0 -65
  211. package/dist/core/embeddings/qmd-provider.d.ts.map +0 -1
  212. package/dist/core/embeddings/qmd-provider.js +0 -133
  213. package/dist/core/embeddings/qmd-provider.js.map +0 -1
  214. package/scripts/init-dirs.ts +0 -15
  215. /package/dist/algorithms/{merge/detection → detection}/hash-filters.d.ts +0 -0
  216. /package/dist/algorithms/{merge/detection → detection}/hash-filters.js +0 -0
  217. /package/dist/algorithms/{merge/handlers → handlers}/approve-merge.d.ts +0 -0
  218. /package/dist/algorithms/{merge/handlers → handlers}/get-stats.d.ts +0 -0
  219. /package/dist/algorithms/{merge/handlers → handlers}/list-proposals.d.ts +0 -0
  220. /package/dist/algorithms/{merge/handlers → handlers}/preview-merge.d.ts +0 -0
  221. /package/dist/algorithms/{merge/handlers → handlers}/reject-merge.d.ts +0 -0
  222. /package/dist/algorithms/{merge/handlers → handlers}/reverse-merge.d.ts +0 -0
  223. /package/dist/algorithms/{merge/strategies → strategies}/merge-strategies.js +0 -0
@@ -0,0 +1,71 @@
1
+ /** Namespace Management - Hierarchical folder-like namespaces for memories */
2
+ export type NamespaceType = 'root' | 'user' | 'agent' | 'project' | 'custom';
3
+ export interface Namespace {
4
+ id: string;
5
+ projectId: string;
6
+ name: string;
7
+ parentId: string | null;
8
+ type: NamespaceType;
9
+ description: string | null;
10
+ path: string;
11
+ children?: Namespace[];
12
+ createdAt: Date;
13
+ updatedAt: Date;
14
+ }
15
+ export interface NamespaceCreateInput {
16
+ projectId: string;
17
+ name: string;
18
+ type: NamespaceType;
19
+ parentId?: string | null;
20
+ description?: string;
21
+ }
22
+ export interface NamespaceTree {
23
+ id: string;
24
+ name: string;
25
+ type: NamespaceType;
26
+ description: string | null;
27
+ path: string;
28
+ children: NamespaceTree[];
29
+ }
30
+ /**
31
+ * Create a new namespace
32
+ */
33
+ export declare function createNamespace(input: NamespaceCreateInput): Promise<Namespace>;
34
+ /**
35
+ * Get a namespace by ID
36
+ */
37
+ export declare function getNamespaceById(id: string): Promise<Namespace | null>;
38
+ /**
39
+ * Resolve a namespace path to a namespace ID
40
+ * @example resolveNamespacePath('my-project', ['user', 'preferences']) -> namespaceId
41
+ */
42
+ export declare function resolveNamespacePath(projectId: string, path: string[]): Promise<string | null>;
43
+ /**
44
+ * Get namespace tree for a project
45
+ */
46
+ export declare function getNamespaceTree(projectId: string): Promise<NamespaceTree[]>;
47
+ /**
48
+ * Get or create default namespaces for a project
49
+ */
50
+ export declare function getDefaultNamespaces(projectId: string): Promise<Namespace[]>;
51
+ /**
52
+ * List namespaces with optional filtering
53
+ */
54
+ export declare function listNamespaces(options?: {
55
+ projectId?: string;
56
+ type?: NamespaceType;
57
+ parentId?: string;
58
+ recursive?: boolean;
59
+ }): Promise<Namespace[]>;
60
+ /**
61
+ * Delete a namespace (cascades to child namespaces)
62
+ */
63
+ export declare function deleteNamespace(id: string): Promise<void>;
64
+ /**
65
+ * Update namespace
66
+ */
67
+ export declare function updateNamespace(id: string, updates: Partial<{
68
+ name: string;
69
+ description: string;
70
+ }>): Promise<void>;
71
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../core/namespaces/index.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAS9E,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,QAAQ,CAAC;AAE7E,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,IAAI,EAAE,aAAa,CAAC;IACpB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,SAAS,EAAE,CAAC;IACvB,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,EAAE,IAAI,CAAC;CACjB;AAED,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,aAAa,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,aAAa,CAAC;IACpB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,aAAa,EAAE,CAAC;CAC3B;AAED;;GAEG;AACH,wBAAsB,eAAe,CAAC,KAAK,EAAE,oBAAoB,GAAG,OAAO,CAAC,SAAS,CAAC,CAqDrF;AA8BD;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,CAwB5E;AAED;;;GAGG;AACH,wBAAsB,oBAAoB,CACxC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,EAAE,GACb,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAgCxB;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CAuClF;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CAmFlF;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,OAAO,GAAE;IAC5C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,aAAa,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,CAAC;CAChB,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CAsC5B;AAED;;GAEG;AACH,wBAAsB,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAS/D;AAED;;GAEG;AACH,wBAAsB,eAAe,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC;IACjE,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAYjB"}
@@ -0,0 +1,305 @@
1
+ /** Namespace Management - Hierarchical folder-like namespaces for memories */
2
+ import { randomUUID } from 'crypto';
3
+ import { eq, and, isNull } from 'drizzle-orm';
4
+ import { getDb } from '../../db/index.js';
5
+ import { getSchema } from '../../db/schema.js';
6
+ import { logger } from '../logger.js';
7
+ /**
8
+ * Create a new namespace
9
+ */
10
+ export async function createNamespace(input) {
11
+ const db = await getDb();
12
+ if (!db) {
13
+ throw new Error('Database unavailable');
14
+ }
15
+ const schema = await getSchema();
16
+ const id = randomUUID();
17
+ // Check if namespace with same name exists under parent
18
+ const sqliteDb = db;
19
+ const existing = await sqliteDb.select()
20
+ .from(schema.namespaces)
21
+ .where(and(eq(schema.namespaces.projectId, input.projectId), eq(schema.namespaces.name, input.name), input.parentId
22
+ ? eq(schema.namespaces.parentId, input.parentId)
23
+ : isNull(schema.namespaces.parentId)))
24
+ .limit(1);
25
+ if (existing.length > 0) {
26
+ throw new Error(`Namespace "${input.name}" already exists under ${input.parentId || 'root'}`);
27
+ }
28
+ // Build namespace path
29
+ const path = await buildNamespacePath(input.projectId, input.name, input.parentId ?? null);
30
+ await sqliteDb.insert(schema.namespaces).values({
31
+ id,
32
+ projectId: input.projectId,
33
+ name: input.name,
34
+ type: input.type,
35
+ parentId: input.parentId || null,
36
+ description: input.description || null,
37
+ createdAt: new Date(),
38
+ updatedAt: new Date(),
39
+ });
40
+ logger.info(`[Namespaces] Created namespace: ${path}`);
41
+ return {
42
+ id,
43
+ projectId: input.projectId,
44
+ name: input.name,
45
+ type: input.type,
46
+ parentId: input.parentId || null,
47
+ description: input.description || null,
48
+ path,
49
+ createdAt: new Date(),
50
+ updatedAt: new Date(),
51
+ };
52
+ }
53
+ /**
54
+ * Build full namespace path from parent
55
+ */
56
+ async function buildNamespacePath(projectId, name, parentId) {
57
+ if (!parentId) {
58
+ return name;
59
+ }
60
+ const db = await getDb();
61
+ const schema = await getSchema();
62
+ const sqliteDb = db;
63
+ const [parent] = await sqliteDb.select()
64
+ .from(schema.namespaces)
65
+ .where(eq(schema.namespaces.id, parentId))
66
+ .limit(1);
67
+ if (!parent) {
68
+ return name;
69
+ }
70
+ return `${parent.path}/${name}`;
71
+ }
72
+ /**
73
+ * Get a namespace by ID
74
+ */
75
+ export async function getNamespaceById(id) {
76
+ const db = await getDb();
77
+ if (!db)
78
+ return null;
79
+ const schema = await getSchema();
80
+ const sqliteDb = db;
81
+ const [row] = await sqliteDb.select()
82
+ .from(schema.namespaces)
83
+ .where(eq(schema.namespaces.id, id))
84
+ .limit(1);
85
+ if (!row)
86
+ return null;
87
+ return {
88
+ id: row.id,
89
+ projectId: row.projectId,
90
+ name: row.name,
91
+ type: row.type,
92
+ parentId: row.parentId,
93
+ description: row.description,
94
+ path: row.path,
95
+ createdAt: new Date(row.createdAt),
96
+ updatedAt: new Date(row.updatedAt),
97
+ };
98
+ }
99
+ /**
100
+ * Resolve a namespace path to a namespace ID
101
+ * @example resolveNamespacePath('my-project', ['user', 'preferences']) -> namespaceId
102
+ */
103
+ export async function resolveNamespacePath(projectId, path) {
104
+ if (path.length === 0)
105
+ return null;
106
+ const db = await getDb();
107
+ if (!db)
108
+ return null;
109
+ const schema = await getSchema();
110
+ const sqliteDb = db;
111
+ let parentId = null;
112
+ let targetNamespace = null;
113
+ // Traverse path segments
114
+ for (const segment of path) {
115
+ const [result] = await sqliteDb.select()
116
+ .from(schema.namespaces)
117
+ .where(and(eq(schema.namespaces.projectId, projectId), eq(schema.namespaces.name, segment), parentId
118
+ ? eq(schema.namespaces.parentId, parentId)
119
+ : isNull(schema.namespaces.parentId)))
120
+ .limit(1);
121
+ if (!result)
122
+ return null;
123
+ targetNamespace = result;
124
+ parentId = result.id;
125
+ }
126
+ return targetNamespace?.id || null;
127
+ }
128
+ /**
129
+ * Get namespace tree for a project
130
+ */
131
+ export async function getNamespaceTree(projectId) {
132
+ const db = await getDb();
133
+ if (!db)
134
+ return [];
135
+ const schema = await getSchema();
136
+ const sqliteDb = db;
137
+ // Get all namespaces for project
138
+ const all = await sqliteDb.select()
139
+ .from(schema.namespaces)
140
+ .where(eq(schema.namespaces.projectId, projectId))
141
+ .orderBy(schema.namespaces.name);
142
+ // Build tree structure
143
+ const map = new Map();
144
+ const roots = [];
145
+ for (const row of all) {
146
+ const node = {
147
+ id: row.id,
148
+ name: row.name,
149
+ type: row.type,
150
+ description: row.description,
151
+ path: row.path,
152
+ children: [],
153
+ };
154
+ map.set(row.id, node);
155
+ if (!row.parentId) {
156
+ roots.push(node);
157
+ }
158
+ else {
159
+ const parent = map.get(row.parentId);
160
+ if (parent) {
161
+ parent.children.push(node);
162
+ }
163
+ }
164
+ }
165
+ return roots;
166
+ }
167
+ /**
168
+ * Get or create default namespaces for a project
169
+ */
170
+ export async function getDefaultNamespaces(projectId) {
171
+ const db = await getDb();
172
+ if (!db)
173
+ return [];
174
+ const schema = await getSchema();
175
+ const sqliteDb = db;
176
+ const created = [];
177
+ const defaults = [
178
+ { name: 'user', type: 'user', description: 'User-specific memories and preferences' },
179
+ { name: 'agent', type: 'agent', description: 'Agent-specific knowledge and state' },
180
+ { name: 'project', type: 'project', description: 'Project-specific decisions and context' },
181
+ ];
182
+ const defaultNames = ['user', 'agent', 'project'];
183
+ // Check all default namespaces at once with IN clause
184
+ const existing = await sqliteDb.select()
185
+ .from(schema.namespaces)
186
+ .where(and(eq(schema.namespaces.projectId, projectId), eq(schema.namespaces.name, defaultNames[0]), eq(schema.namespaces.type, 'user'), isNull(schema.namespaces.parentId)));
187
+ if (existing.length > 0) {
188
+ const ns = await createNamespace({
189
+ projectId,
190
+ name: defaultNames[0],
191
+ type: 'user',
192
+ parentId: null,
193
+ });
194
+ created.push({
195
+ id: ns.id,
196
+ projectId: ns.projectId,
197
+ name: ns.name,
198
+ type: ns.type,
199
+ parentId: ns.parentId,
200
+ description: ns.description,
201
+ path: ns.path,
202
+ createdAt: new Date(ns.createdAt),
203
+ updatedAt: new Date(ns.updatedAt),
204
+ });
205
+ }
206
+ // Check remaining defaults sequentially (agent and project)
207
+ for (const defName of defaultNames.slice(1)) {
208
+ const existing = await sqliteDb.select()
209
+ .from(schema.namespaces)
210
+ .where(and(eq(schema.namespaces.projectId, projectId), eq(schema.namespaces.name, defName), eq(schema.namespaces.type, defName), isNull(schema.namespaces.parentId)))
211
+ .limit(1);
212
+ if (existing.length === 0) {
213
+ const ns = await createNamespace({
214
+ projectId,
215
+ name: defName,
216
+ type: defName === 'agent' ? 'agent' : 'project',
217
+ parentId: null,
218
+ });
219
+ created.push(ns);
220
+ }
221
+ else {
222
+ created.push({
223
+ id: existing[0].id,
224
+ projectId: existing[0].projectId,
225
+ name: existing[0].name,
226
+ type: existing[0].type,
227
+ parentId: existing[0].parentId,
228
+ description: existing[0].description,
229
+ path: existing[0].path,
230
+ createdAt: new Date(existing[0].createdAt),
231
+ updatedAt: new Date(existing[0].updatedAt),
232
+ });
233
+ }
234
+ }
235
+ logger.info(`[Namespaces] Default namespaces ready for project: ${projectId}`);
236
+ return created;
237
+ }
238
+ /**
239
+ * List namespaces with optional filtering
240
+ */
241
+ export async function listNamespaces(options = {}) {
242
+ const db = await getDb();
243
+ if (!db)
244
+ return [];
245
+ const schema = await getSchema();
246
+ const sqliteDb = db;
247
+ const conditions = [];
248
+ if (options.projectId) {
249
+ conditions.push(eq(schema.namespaces.projectId, options.projectId));
250
+ }
251
+ if (options.type) {
252
+ conditions.push(eq(schema.namespaces.type, options.type));
253
+ }
254
+ if (options.parentId !== undefined) {
255
+ if (options.parentId === null) {
256
+ conditions.push(isNull(schema.namespaces.parentId));
257
+ }
258
+ else {
259
+ conditions.push(eq(schema.namespaces.parentId, options.parentId));
260
+ }
261
+ }
262
+ const rows = await sqliteDb.select()
263
+ .from(schema.namespaces)
264
+ .where(conditions.length > 0 ? and(...conditions) : undefined)
265
+ .orderBy(schema.namespaces.name);
266
+ return rows.map((row) => ({
267
+ id: row.id,
268
+ projectId: row.projectId,
269
+ name: row.name,
270
+ type: row.type,
271
+ parentId: row.parentId,
272
+ description: row.description,
273
+ path: row.path,
274
+ createdAt: new Date(row.createdAt),
275
+ updatedAt: new Date(row.updatedAt),
276
+ }));
277
+ }
278
+ /**
279
+ * Delete a namespace (cascades to child namespaces)
280
+ */
281
+ export async function deleteNamespace(id) {
282
+ const db = await getDb();
283
+ if (!db)
284
+ return;
285
+ const schema = await getSchema();
286
+ const sqliteDb = db;
287
+ await sqliteDb.delete(schema.namespaces).where(eq(schema.namespaces.id, id));
288
+ logger.info(`[Namespaces] Deleted namespace: ${id}`);
289
+ }
290
+ /**
291
+ * Update namespace
292
+ */
293
+ export async function updateNamespace(id, updates) {
294
+ const db = await getDb();
295
+ if (!db)
296
+ return;
297
+ const schema = await getSchema();
298
+ const sqliteDb = db;
299
+ await sqliteDb.update(schema.namespaces).set({
300
+ ...updates,
301
+ updatedAt: new Date(),
302
+ }).where(eq(schema.namespaces.id, id));
303
+ logger.info(`[Namespaces] Updated namespace: ${id}`);
304
+ }
305
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../core/namespaces/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ /** URI Parser for Squish namespace scheme (squish://) */
2
+ export interface SquishURIParsed {
3
+ type: 'namespace';
4
+ projectId: string;
5
+ namespacePath: string[];
6
+ memoryId?: string;
7
+ }
8
+ /**
9
+ * Parse a squish:// URI into components
10
+ * @example parseSquishURI('squish://my-project/user/preferences') -> { type: 'namespace', projectId: 'my-project', namespacePath: ['user', 'preferences'] }
11
+ */
12
+ export declare function parseSquishURI(uri: string): SquishURIParsed | null;
13
+ /**
14
+ * Build a squish:// URI from components
15
+ * @example buildSquishURI('my-project', ['user', 'preferences']) -> 'squish://my-project/user/preferences'
16
+ */
17
+ export declare function buildSquishURI(projectId: string, path: string[], memoryId?: string): string;
18
+ /**
19
+ * Validate a namespace path (no "..", no empty segments)
20
+ */
21
+ export declare function validateNamespacePath(path: string[]): boolean;
22
+ /**
23
+ * Get parent namespace path
24
+ * @example getParentPath(['user', 'preferences', 'coding']) -> ['user', 'preferences']
25
+ */
26
+ export declare function getParentPath(path: string[]): string[] | null;
27
+ /**
28
+ * Join namespace path segments
29
+ */
30
+ export declare function joinNamespacePath(...segments: (string | string[])[]): string[];
31
+ //# sourceMappingURL=uri-parser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uri-parser.d.ts","sourceRoot":"","sources":["../../../core/namespaces/uri-parser.ts"],"names":[],"mappings":"AAAA,yDAAyD;AAEzD,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,WAAW,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI,CA8BlE;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAC5B,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,EAAE,EACd,QAAQ,CAAC,EAAE,MAAM,GAChB,MAAM,CASR;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAa7D;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,GAAG,IAAI,CAG7D;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,QAAQ,EAAE,CAAC,MAAM,GAAG,MAAM,EAAE,CAAC,EAAE,GAAG,MAAM,EAAE,CAE9E"}
@@ -0,0 +1,74 @@
1
+ /** URI Parser for Squish namespace scheme (squish://) */
2
+ /**
3
+ * Parse a squish:// URI into components
4
+ * @example parseSquishURI('squish://my-project/user/preferences') -> { type: 'namespace', projectId: 'my-project', namespacePath: ['user', 'preferences'] }
5
+ */
6
+ export function parseSquishURI(uri) {
7
+ if (!uri || typeof uri !== 'string') {
8
+ return null;
9
+ }
10
+ // Match squish://project/path/to/memory
11
+ const match = uri.match(/^squish:\/\/([^\/]+)\/(.*)$/);
12
+ if (!match) {
13
+ return null;
14
+ }
15
+ const [, projectId, pathPart] = match;
16
+ const namespacePath = pathPart ? pathPart.split('/').filter(Boolean) : [];
17
+ // If path ends with a UUID, it's a memory ID
18
+ const lastSegment = namespacePath[namespacePath.length - 1];
19
+ let memoryId;
20
+ if (lastSegment && /^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$/.test(lastSegment)) {
21
+ memoryId = lastSegment;
22
+ namespacePath.pop();
23
+ }
24
+ return {
25
+ type: 'namespace',
26
+ projectId,
27
+ namespacePath,
28
+ memoryId,
29
+ };
30
+ }
31
+ /**
32
+ * Build a squish:// URI from components
33
+ * @example buildSquishURI('my-project', ['user', 'preferences']) -> 'squish://my-project/user/preferences'
34
+ */
35
+ export function buildSquishURI(projectId, path, memoryId) {
36
+ if (!projectId) {
37
+ throw new Error('Project ID is required');
38
+ }
39
+ const cleanPath = path.filter(Boolean);
40
+ const basePath = `squish://${projectId}${cleanPath.length > 0 ? '/' + cleanPath.join('/') : ''}`;
41
+ return memoryId ? `${basePath}/${memoryId}` : basePath;
42
+ }
43
+ /**
44
+ * Validate a namespace path (no "..", no empty segments)
45
+ */
46
+ export function validateNamespacePath(path) {
47
+ if (path.length === 0)
48
+ return true;
49
+ for (const segment of path) {
50
+ if (!segment || segment.length === 0) {
51
+ return false;
52
+ }
53
+ if (segment.includes('..')) {
54
+ return false;
55
+ }
56
+ }
57
+ return true;
58
+ }
59
+ /**
60
+ * Get parent namespace path
61
+ * @example getParentPath(['user', 'preferences', 'coding']) -> ['user', 'preferences']
62
+ */
63
+ export function getParentPath(path) {
64
+ if (path.length <= 1)
65
+ return null;
66
+ return path.slice(0, -1);
67
+ }
68
+ /**
69
+ * Join namespace path segments
70
+ */
71
+ export function joinNamespacePath(...segments) {
72
+ return segments.flat().filter(Boolean);
73
+ }
74
+ //# sourceMappingURL=uri-parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uri-parser.js","sourceRoot":"","sources":["../../../core/namespaces/uri-parser.ts"],"names":[],"mappings":"AAAA,yDAAyD;AASzD;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,GAAW;IACxC,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QACpC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,wCAAwC;IACxC,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;IAEvD,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,CAAC,EAAE,SAAS,EAAE,QAAQ,CAAC,GAAG,KAAK,CAAC;IACtC,MAAM,aAAa,GAAG,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAE1E,6CAA6C;IAC7C,MAAM,WAAW,GAAG,aAAa,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC5D,IAAI,QAA4B,CAAC;IAEjC,IAAI,WAAW,IAAI,gEAAgE,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;QACtG,QAAQ,GAAG,WAAW,CAAC;QACvB,aAAa,CAAC,GAAG,EAAE,CAAC;IACtB,CAAC;IAED,OAAO;QACL,IAAI,EAAE,WAAW;QACjB,SAAS;QACT,aAAa;QACb,QAAQ;KACT,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc,CAC5B,SAAiB,EACjB,IAAc,EACd,QAAiB;IAEjB,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;IAC5C,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACvC,MAAM,QAAQ,GAAG,YAAY,SAAS,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IAEjG,OAAO,QAAQ,CAAC,CAAC,CAAC,GAAG,QAAQ,IAAI,QAAQ,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC;AACzD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,qBAAqB,CAAC,IAAc;IAClD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAEnC,KAAK,MAAM,OAAO,IAAI,IAAI,EAAE,CAAC;QAC3B,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACrC,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YAC3B,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,IAAc;IAC1C,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAClC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC3B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,GAAG,QAA+B;IAClE,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AACzC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"observations.d.ts","sourceRoot":"","sources":["../../core/observations.ts"],"names":[],"mappings":"AAYA,MAAM,MAAM,eAAe,GAAG,UAAU,GAAG,aAAa,GAAG,OAAO,GAAG,SAAS,GAAG,SAAS,CAAC;AAE3F,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,eAAe,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,IAAI,EAAE,eAAe,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IACzC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAED,wBAAsB,iBAAiB,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAoC3F;AAED,wBAAsB,yBAAyB,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAmBhH;AAED,wBAAsB,qBAAqB,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,GAAE,MAAW,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAoBjH;AAED,wBAAsB,kBAAkB,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAkBjG"}
1
+ {"version":3,"file":"observations.d.ts","sourceRoot":"","sources":["../../core/observations.ts"],"names":[],"mappings":"AAYA,MAAM,MAAM,eAAe,GAAG,UAAU,GAAG,aAAa,GAAG,OAAO,GAAG,SAAS,GAAG,SAAS,CAAC;AAE3F,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,eAAe,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,IAAI,EAAE,eAAe,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IACzC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAED,wBAAsB,iBAAiB,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAoC3F;AAED,wBAAsB,yBAAyB,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAgBhH;AAED,wBAAsB,qBAAqB,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,GAAE,MAAW,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAiBjH;AAED,wBAAsB,kBAAkB,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAejG"}
@@ -7,7 +7,7 @@ import { getEmbedding } from './embeddings.js';
7
7
  import { ensureProject, getProjectByPath } from './projects.js';
8
8
  import { fromSqliteJson, toSqliteJson } from './memory/serialization.js';
9
9
  import { createDatabaseClient } from './database.js';
10
- import { normalizeTimestamp, isDatabaseUnavailableError, prepareEmbedding } from './utils.js';
10
+ import { normalizeTimestamp, prepareEmbedding } from './utils.js';
11
11
  import { logger } from './logger.js';
12
12
  export async function createObservation(input) {
13
13
  const db = createDatabaseClient(await getDb());
@@ -56,9 +56,6 @@ export async function getObservationsForProject(projectPath, limit) {
56
56
  return rows.map((row) => normalizeObservation(row));
57
57
  }
58
58
  catch (error) {
59
- if (isDatabaseUnavailableError(error)) {
60
- return []; // Graceful degradation - database unavailable
61
- }
62
59
  throw error;
63
60
  }
64
61
  }
@@ -76,11 +73,8 @@ export async function getRecentObservations(projectPath, limit = 10) {
76
73
  return rows.map((row) => normalizeObservation(row));
77
74
  }
78
75
  catch (error) {
79
- if (isDatabaseUnavailableError(error)) {
80
- return [];
81
- }
82
76
  logger.error('Error getting recent observations', error);
83
- return [];
77
+ throw error;
84
78
  }
85
79
  }
86
80
  export async function getObservationById(observationId) {
@@ -95,11 +89,8 @@ export async function getObservationById(observationId) {
95
89
  return normalizeObservation(rows[0]);
96
90
  }
97
91
  catch (error) {
98
- if (isDatabaseUnavailableError(error)) {
99
- return null;
100
- }
101
92
  logger.error('Error getting observation', error);
102
- return null;
93
+ throw error;
103
94
  }
104
95
  }
105
96
  function normalizeObservation(row) {
@@ -1 +1 @@
1
- {"version":3,"file":"observations.js","sourceRoot":"","sources":["../../core/observations.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"observations.js","sourceRoot":"","sources":["../../core/observations.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"projects.d.ts","sourceRoot":"","sources":["../../core/projects.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;CAC3C;AAED,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAelF;AAED,wBAAsB,aAAa,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CA4BhF;AAcD,wBAAsB,cAAc,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC,CAa/D;AAED,wBAAsB,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAe9E"}
1
+ {"version":3,"file":"projects.d.ts","sourceRoot":"","sources":["../../core/projects.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;CAC3C;AAED,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAWlF;AAED,wBAAsB,aAAa,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CA4BhF;AAcD,wBAAsB,cAAc,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC,CAS/D;AAED,wBAAsB,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAW9E"}
@@ -17,10 +17,6 @@ export async function getProjectByPath(path) {
17
17
  return normalizeProject(row);
18
18
  }
19
19
  catch (error) {
20
- if (error.message?.includes('Database unavailable') ||
21
- error.message?.includes('not a valid Win32 application')) {
22
- return null; // Graceful degradation - database unavailable
23
- }
24
20
  throw error;
25
21
  }
26
22
  }
@@ -71,10 +67,6 @@ export async function getAllProjects() {
71
67
  return rows.map(normalizeProject);
72
68
  }
73
69
  catch (error) {
74
- if (error.message?.includes('Database unavailable') ||
75
- error.message?.includes('not a valid Win32 application')) {
76
- return []; // Graceful degradation - database unavailable
77
- }
78
70
  throw error;
79
71
  }
80
72
  }
@@ -89,10 +81,6 @@ export async function getProjectById(id) {
89
81
  return normalizeProject(row);
90
82
  }
91
83
  catch (error) {
92
- if (error.message?.includes('Database unavailable') ||
93
- error.message?.includes('not a valid Win32 application')) {
94
- return null; // Graceful degradation - database unavailable
95
- }
96
84
  throw error;
97
85
  }
98
86
  }
@@ -1 +1 @@
1
- {"version":3,"file":"projects.js","sourceRoot":"","sources":["../../core/projects.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"projects.js","sourceRoot":"","sources":["../../core/projects.ts"],"names":[],"mappings":"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"}