gnosys 4.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.
Files changed (188) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +1387 -0
  3. package/dist/cli.d.ts +7 -0
  4. package/dist/cli.d.ts.map +1 -0
  5. package/dist/cli.js +3753 -0
  6. package/dist/cli.js.map +1 -0
  7. package/dist/index.d.ts +8 -0
  8. package/dist/index.d.ts.map +1 -0
  9. package/dist/index.js +2267 -0
  10. package/dist/index.js.map +1 -0
  11. package/dist/lib/archive.d.ts +95 -0
  12. package/dist/lib/archive.d.ts.map +1 -0
  13. package/dist/lib/archive.js +311 -0
  14. package/dist/lib/archive.js.map +1 -0
  15. package/dist/lib/ask.d.ts +77 -0
  16. package/dist/lib/ask.d.ts.map +1 -0
  17. package/dist/lib/ask.js +316 -0
  18. package/dist/lib/ask.js.map +1 -0
  19. package/dist/lib/audit.d.ts +47 -0
  20. package/dist/lib/audit.d.ts.map +1 -0
  21. package/dist/lib/audit.js +136 -0
  22. package/dist/lib/audit.js.map +1 -0
  23. package/dist/lib/bootstrap.d.ts +56 -0
  24. package/dist/lib/bootstrap.d.ts.map +1 -0
  25. package/dist/lib/bootstrap.js +163 -0
  26. package/dist/lib/bootstrap.js.map +1 -0
  27. package/dist/lib/config.d.ts +239 -0
  28. package/dist/lib/config.d.ts.map +1 -0
  29. package/dist/lib/config.js +371 -0
  30. package/dist/lib/config.js.map +1 -0
  31. package/dist/lib/dashboard.d.ts +81 -0
  32. package/dist/lib/dashboard.d.ts.map +1 -0
  33. package/dist/lib/dashboard.js +314 -0
  34. package/dist/lib/dashboard.js.map +1 -0
  35. package/dist/lib/db.d.ts +182 -0
  36. package/dist/lib/db.d.ts.map +1 -0
  37. package/dist/lib/db.js +620 -0
  38. package/dist/lib/db.js.map +1 -0
  39. package/dist/lib/dbSearch.d.ts +65 -0
  40. package/dist/lib/dbSearch.d.ts.map +1 -0
  41. package/dist/lib/dbSearch.js +239 -0
  42. package/dist/lib/dbSearch.js.map +1 -0
  43. package/dist/lib/dbWrite.d.ts +56 -0
  44. package/dist/lib/dbWrite.d.ts.map +1 -0
  45. package/dist/lib/dbWrite.js +171 -0
  46. package/dist/lib/dbWrite.js.map +1 -0
  47. package/dist/lib/dream.d.ts +170 -0
  48. package/dist/lib/dream.d.ts.map +1 -0
  49. package/dist/lib/dream.js +706 -0
  50. package/dist/lib/dream.js.map +1 -0
  51. package/dist/lib/embeddings.d.ts +84 -0
  52. package/dist/lib/embeddings.d.ts.map +1 -0
  53. package/dist/lib/embeddings.js +226 -0
  54. package/dist/lib/embeddings.js.map +1 -0
  55. package/dist/lib/export.d.ts +92 -0
  56. package/dist/lib/export.d.ts.map +1 -0
  57. package/dist/lib/export.js +362 -0
  58. package/dist/lib/export.js.map +1 -0
  59. package/dist/lib/federated.d.ts +113 -0
  60. package/dist/lib/federated.d.ts.map +1 -0
  61. package/dist/lib/federated.js +346 -0
  62. package/dist/lib/federated.js.map +1 -0
  63. package/dist/lib/graph.d.ts +50 -0
  64. package/dist/lib/graph.d.ts.map +1 -0
  65. package/dist/lib/graph.js +118 -0
  66. package/dist/lib/graph.js.map +1 -0
  67. package/dist/lib/history.d.ts +39 -0
  68. package/dist/lib/history.d.ts.map +1 -0
  69. package/dist/lib/history.js +112 -0
  70. package/dist/lib/history.js.map +1 -0
  71. package/dist/lib/hybridSearch.d.ts +80 -0
  72. package/dist/lib/hybridSearch.d.ts.map +1 -0
  73. package/dist/lib/hybridSearch.js +296 -0
  74. package/dist/lib/hybridSearch.js.map +1 -0
  75. package/dist/lib/import.d.ts +52 -0
  76. package/dist/lib/import.d.ts.map +1 -0
  77. package/dist/lib/import.js +365 -0
  78. package/dist/lib/import.js.map +1 -0
  79. package/dist/lib/ingest.d.ts +51 -0
  80. package/dist/lib/ingest.d.ts.map +1 -0
  81. package/dist/lib/ingest.js +144 -0
  82. package/dist/lib/ingest.js.map +1 -0
  83. package/dist/lib/lensing.d.ts +35 -0
  84. package/dist/lib/lensing.d.ts.map +1 -0
  85. package/dist/lib/lensing.js +85 -0
  86. package/dist/lib/lensing.js.map +1 -0
  87. package/dist/lib/llm.d.ts +84 -0
  88. package/dist/lib/llm.d.ts.map +1 -0
  89. package/dist/lib/llm.js +386 -0
  90. package/dist/lib/llm.js.map +1 -0
  91. package/dist/lib/lock.d.ts +28 -0
  92. package/dist/lib/lock.d.ts.map +1 -0
  93. package/dist/lib/lock.js +145 -0
  94. package/dist/lib/lock.js.map +1 -0
  95. package/dist/lib/maintenance.d.ts +124 -0
  96. package/dist/lib/maintenance.d.ts.map +1 -0
  97. package/dist/lib/maintenance.js +587 -0
  98. package/dist/lib/maintenance.js.map +1 -0
  99. package/dist/lib/migrate.d.ts +19 -0
  100. package/dist/lib/migrate.d.ts.map +1 -0
  101. package/dist/lib/migrate.js +260 -0
  102. package/dist/lib/migrate.js.map +1 -0
  103. package/dist/lib/preferences.d.ts +49 -0
  104. package/dist/lib/preferences.d.ts.map +1 -0
  105. package/dist/lib/preferences.js +149 -0
  106. package/dist/lib/preferences.js.map +1 -0
  107. package/dist/lib/projectIdentity.d.ts +66 -0
  108. package/dist/lib/projectIdentity.d.ts.map +1 -0
  109. package/dist/lib/projectIdentity.js +148 -0
  110. package/dist/lib/projectIdentity.js.map +1 -0
  111. package/dist/lib/recall.d.ts +82 -0
  112. package/dist/lib/recall.d.ts.map +1 -0
  113. package/dist/lib/recall.js +289 -0
  114. package/dist/lib/recall.js.map +1 -0
  115. package/dist/lib/resolver.d.ts +116 -0
  116. package/dist/lib/resolver.d.ts.map +1 -0
  117. package/dist/lib/resolver.js +372 -0
  118. package/dist/lib/resolver.js.map +1 -0
  119. package/dist/lib/retry.d.ts +24 -0
  120. package/dist/lib/retry.d.ts.map +1 -0
  121. package/dist/lib/retry.js +60 -0
  122. package/dist/lib/retry.js.map +1 -0
  123. package/dist/lib/rulesGen.d.ts +51 -0
  124. package/dist/lib/rulesGen.d.ts.map +1 -0
  125. package/dist/lib/rulesGen.js +167 -0
  126. package/dist/lib/rulesGen.js.map +1 -0
  127. package/dist/lib/search.d.ts +51 -0
  128. package/dist/lib/search.d.ts.map +1 -0
  129. package/dist/lib/search.js +190 -0
  130. package/dist/lib/search.js.map +1 -0
  131. package/dist/lib/staticSearch.d.ts +70 -0
  132. package/dist/lib/staticSearch.d.ts.map +1 -0
  133. package/dist/lib/staticSearch.js +162 -0
  134. package/dist/lib/staticSearch.js.map +1 -0
  135. package/dist/lib/store.d.ts +79 -0
  136. package/dist/lib/store.d.ts.map +1 -0
  137. package/dist/lib/store.js +227 -0
  138. package/dist/lib/store.js.map +1 -0
  139. package/dist/lib/structuredIngest.d.ts +37 -0
  140. package/dist/lib/structuredIngest.d.ts.map +1 -0
  141. package/dist/lib/structuredIngest.js +208 -0
  142. package/dist/lib/structuredIngest.js.map +1 -0
  143. package/dist/lib/tags.d.ts +26 -0
  144. package/dist/lib/tags.d.ts.map +1 -0
  145. package/dist/lib/tags.js +109 -0
  146. package/dist/lib/tags.js.map +1 -0
  147. package/dist/lib/timeline.d.ts +34 -0
  148. package/dist/lib/timeline.d.ts.map +1 -0
  149. package/dist/lib/timeline.js +116 -0
  150. package/dist/lib/timeline.js.map +1 -0
  151. package/dist/lib/trace.d.ts +42 -0
  152. package/dist/lib/trace.d.ts.map +1 -0
  153. package/dist/lib/trace.js +338 -0
  154. package/dist/lib/trace.js.map +1 -0
  155. package/dist/lib/webIndex.d.ts +28 -0
  156. package/dist/lib/webIndex.d.ts.map +1 -0
  157. package/dist/lib/webIndex.js +208 -0
  158. package/dist/lib/webIndex.js.map +1 -0
  159. package/dist/lib/webIngest.d.ts +51 -0
  160. package/dist/lib/webIngest.d.ts.map +1 -0
  161. package/dist/lib/webIngest.js +533 -0
  162. package/dist/lib/webIngest.js.map +1 -0
  163. package/dist/lib/wikilinks.d.ts +63 -0
  164. package/dist/lib/wikilinks.d.ts.map +1 -0
  165. package/dist/lib/wikilinks.js +146 -0
  166. package/dist/lib/wikilinks.js.map +1 -0
  167. package/dist/sandbox/client.d.ts +82 -0
  168. package/dist/sandbox/client.d.ts.map +1 -0
  169. package/dist/sandbox/client.js +128 -0
  170. package/dist/sandbox/client.js.map +1 -0
  171. package/dist/sandbox/helper-template.d.ts +14 -0
  172. package/dist/sandbox/helper-template.d.ts.map +1 -0
  173. package/dist/sandbox/helper-template.js +285 -0
  174. package/dist/sandbox/helper-template.js.map +1 -0
  175. package/dist/sandbox/index.d.ts +10 -0
  176. package/dist/sandbox/index.d.ts.map +1 -0
  177. package/dist/sandbox/index.js +10 -0
  178. package/dist/sandbox/index.js.map +1 -0
  179. package/dist/sandbox/manager.d.ts +40 -0
  180. package/dist/sandbox/manager.d.ts.map +1 -0
  181. package/dist/sandbox/manager.js +220 -0
  182. package/dist/sandbox/manager.js.map +1 -0
  183. package/dist/sandbox/server.d.ts +44 -0
  184. package/dist/sandbox/server.d.ts.map +1 -0
  185. package/dist/sandbox/server.js +661 -0
  186. package/dist/sandbox/server.js.map +1 -0
  187. package/package.json +103 -0
  188. package/prompts/synthesize.md +21 -0
@@ -0,0 +1,362 @@
1
+ /**
2
+ * Gnosys Obsidian Export Bridge — One-way export from gnosys.db to Obsidian vault.
3
+ *
4
+ * Converts the agent-native SQLite store into human-friendly atomic Markdown
5
+ * files with YAML frontmatter, [[wikilinks]], and proper folder structure.
6
+ *
7
+ * This is a completely separate module — it reads from gnosys.db and writes
8
+ * to a target directory. It never modifies gnosys.db.
9
+ *
10
+ * Output structure:
11
+ * target/
12
+ * category/
13
+ * memory-title.md (YAML frontmatter + content + wikilinks)
14
+ * _summaries/
15
+ * category.md (category-level summaries from dream mode)
16
+ * _review/
17
+ * suggested-reviews.md (review suggestions from dream mode)
18
+ * _graph/
19
+ * relationships.md (relationship index)
20
+ */
21
+ import path from "path";
22
+ import fs from "fs/promises";
23
+ // ─── Export Engine ────────────────────────────────────────────────────────
24
+ export class GnosysExporter {
25
+ db;
26
+ constructor(db) {
27
+ this.db = db;
28
+ }
29
+ /**
30
+ * Export gnosys.db contents to an Obsidian-compatible vault structure.
31
+ */
32
+ async export(options) {
33
+ const { targetDir, activeOnly = true, includeSummaries = true, includeReviews = true, includeGraph = true, overwrite = false, onProgress, } = options;
34
+ const report = {
35
+ memoriesExported: 0,
36
+ memoriesSkipped: 0,
37
+ summariesExported: 0,
38
+ reviewsExported: false,
39
+ graphExported: false,
40
+ targetDir,
41
+ errors: [],
42
+ };
43
+ // Ensure target directory exists
44
+ await fs.mkdir(targetDir, { recursive: true });
45
+ // Get memories to export
46
+ const memories = activeOnly
47
+ ? this.db.getActiveMemories()
48
+ : this.db.getAllMemories();
49
+ const total = memories.length;
50
+ // Export each memory as a Markdown file
51
+ for (let i = 0; i < memories.length; i++) {
52
+ const mem = memories[i];
53
+ try {
54
+ const exported = await this.exportMemory(mem, targetDir, overwrite);
55
+ if (exported) {
56
+ report.memoriesExported++;
57
+ }
58
+ else {
59
+ report.memoriesSkipped++;
60
+ }
61
+ }
62
+ catch (err) {
63
+ report.errors.push(`${mem.id}: ${err instanceof Error ? err.message : String(err)}`);
64
+ }
65
+ onProgress?.(i + 1, total, mem.title);
66
+ }
67
+ // Export summaries
68
+ if (includeSummaries) {
69
+ try {
70
+ report.summariesExported = await this.exportSummaries(targetDir, overwrite);
71
+ }
72
+ catch (err) {
73
+ report.errors.push(`summaries: ${err instanceof Error ? err.message : String(err)}`);
74
+ }
75
+ }
76
+ // Export review suggestions
77
+ if (includeReviews) {
78
+ try {
79
+ report.reviewsExported = await this.exportReviews(targetDir, overwrite);
80
+ }
81
+ catch (err) {
82
+ report.errors.push(`reviews: ${err instanceof Error ? err.message : String(err)}`);
83
+ }
84
+ }
85
+ // Export relationship graph
86
+ if (includeGraph) {
87
+ try {
88
+ report.graphExported = await this.exportGraph(targetDir, memories, overwrite);
89
+ }
90
+ catch (err) {
91
+ report.errors.push(`graph: ${err instanceof Error ? err.message : String(err)}`);
92
+ }
93
+ }
94
+ return report;
95
+ }
96
+ // ─── Memory Export ───────────────────────────────────────────────────
97
+ /**
98
+ * Export a single memory as a Markdown file with YAML frontmatter.
99
+ * Returns true if exported, false if skipped (already exists).
100
+ */
101
+ async exportMemory(mem, targetDir, overwrite) {
102
+ const categoryDir = path.join(targetDir, mem.category);
103
+ await fs.mkdir(categoryDir, { recursive: true });
104
+ const filename = this.slugify(mem.title) + ".md";
105
+ const filePath = path.join(categoryDir, filename);
106
+ // Check if file exists
107
+ if (!overwrite) {
108
+ try {
109
+ await fs.access(filePath);
110
+ return false; // File exists, skip
111
+ }
112
+ catch {
113
+ // File doesn't exist, proceed
114
+ }
115
+ }
116
+ // Build YAML frontmatter
117
+ const tags = this.parseTags(mem.tags);
118
+ const relationships = this.getMemoryRelationships(mem.id);
119
+ const wikilinks = this.buildWikilinks(relationships);
120
+ const frontmatter = [
121
+ "---",
122
+ `id: ${mem.id}`,
123
+ `title: '${mem.title.replace(/'/g, "''")}'`,
124
+ `category: ${mem.category}`,
125
+ `tags:`,
126
+ ...tags.map((t) => `- ${t}`),
127
+ `relevance: ${mem.relevance}`,
128
+ `author: ${mem.author}`,
129
+ `authority: ${mem.authority}`,
130
+ `confidence: ${mem.confidence}`,
131
+ `reinforcement_count: ${mem.reinforcement_count}`,
132
+ `created: '${mem.created}'`,
133
+ `modified: '${mem.modified}'`,
134
+ `status: ${mem.status}`,
135
+ ...(mem.supersedes ? [`supersedes: ${mem.supersedes}`] : []),
136
+ ...(mem.superseded_by ? [`superseded_by: ${mem.superseded_by}`] : []),
137
+ ...(mem.last_reinforced ? [`last_reinforced: '${mem.last_reinforced}'`] : []),
138
+ "---",
139
+ ].join("\n");
140
+ // Build content with wikilinks section
141
+ let content = `${frontmatter}\n\n# ${mem.title}\n\n${mem.content}`;
142
+ if (wikilinks.length > 0) {
143
+ content += `\n\n---\n\n## Related\n\n${wikilinks.join("\n")}`;
144
+ }
145
+ await fs.writeFile(filePath, content, "utf-8");
146
+ return true;
147
+ }
148
+ // ─── Summaries Export ────────────────────────────────────────────────
149
+ /**
150
+ * Export category summaries from the summaries table.
151
+ */
152
+ async exportSummaries(targetDir, overwrite) {
153
+ const summaryDir = path.join(targetDir, "_summaries");
154
+ await fs.mkdir(summaryDir, { recursive: true });
155
+ const summaries = this.db.getAllSummaries();
156
+ let exported = 0;
157
+ for (const summary of summaries) {
158
+ if (summary.scope !== "category")
159
+ continue;
160
+ const filename = `${this.slugify(summary.scope_key)}.md`;
161
+ const filePath = path.join(summaryDir, filename);
162
+ if (!overwrite) {
163
+ try {
164
+ await fs.access(filePath);
165
+ continue; // Skip existing
166
+ }
167
+ catch {
168
+ // Proceed
169
+ }
170
+ }
171
+ const content = [
172
+ "---",
173
+ `scope: ${summary.scope}`,
174
+ `scope_key: ${summary.scope_key}`,
175
+ `created: '${summary.created}'`,
176
+ `modified: '${summary.modified}'`,
177
+ "---",
178
+ "",
179
+ `# ${summary.scope_key} — Summary`,
180
+ "",
181
+ summary.content,
182
+ ].join("\n");
183
+ await fs.writeFile(filePath, content, "utf-8");
184
+ exported++;
185
+ }
186
+ return exported;
187
+ }
188
+ // ─── Reviews Export ──────────────────────────────────────────────────
189
+ /**
190
+ * Export review suggestions from dream mode.
191
+ */
192
+ async exportReviews(targetDir, overwrite) {
193
+ const reviewDir = path.join(targetDir, "_review");
194
+ await fs.mkdir(reviewDir, { recursive: true });
195
+ // Find the latest review summary
196
+ const summaries = this.db.getAllSummaries();
197
+ const reviews = summaries
198
+ .filter((s) => s.scope === "dream" && s.scope_key.startsWith("review-"))
199
+ .sort((a, b) => b.modified.localeCompare(a.modified));
200
+ if (reviews.length === 0)
201
+ return false;
202
+ const filePath = path.join(reviewDir, "suggested-reviews.md");
203
+ if (!overwrite) {
204
+ try {
205
+ await fs.access(filePath);
206
+ return false;
207
+ }
208
+ catch {
209
+ // Proceed
210
+ }
211
+ }
212
+ // Parse and format review suggestions
213
+ const lines = ["# Suggested Reviews", "", "Generated by Dream Mode. These memories may need attention.", ""];
214
+ for (const review of reviews) {
215
+ try {
216
+ const suggestions = JSON.parse(review.content);
217
+ if (!Array.isArray(suggestions))
218
+ continue;
219
+ lines.push(`## Review from ${review.scope_key.replace("review-", "")}`, "");
220
+ for (const s of suggestions) {
221
+ lines.push(`### ${s.title}`);
222
+ lines.push(`- **ID**: ${s.memoryId}`);
223
+ lines.push(`- **Action**: ${s.suggestedAction}`);
224
+ lines.push(`- **Confidence**: ${s.currentConfidence}`);
225
+ lines.push(`- **Reason**: ${s.reason}`);
226
+ lines.push("");
227
+ }
228
+ }
229
+ catch {
230
+ // Skip malformed reviews
231
+ }
232
+ }
233
+ await fs.writeFile(filePath, lines.join("\n"), "utf-8");
234
+ return true;
235
+ }
236
+ // ─── Graph Export ────────────────────────────────────────────────────
237
+ /**
238
+ * Export the relationship graph as a navigable index with wikilinks.
239
+ */
240
+ async exportGraph(targetDir, memories, overwrite) {
241
+ const graphDir = path.join(targetDir, "_graph");
242
+ await fs.mkdir(graphDir, { recursive: true });
243
+ const filePath = path.join(graphDir, "relationships.md");
244
+ if (!overwrite) {
245
+ try {
246
+ await fs.access(filePath);
247
+ return false;
248
+ }
249
+ catch {
250
+ // Proceed
251
+ }
252
+ }
253
+ // Build the relationship index
254
+ const lines = ["# Relationship Graph", "", "Auto-generated from gnosys.db relationships table.", ""];
255
+ // Build a title lookup
256
+ const titleMap = new Map();
257
+ for (const mem of memories) {
258
+ titleMap.set(mem.id, mem.title);
259
+ }
260
+ // Group relationships by source
261
+ const bySource = new Map();
262
+ for (const mem of memories) {
263
+ const rels = this.db.getRelationshipsFrom(mem.id);
264
+ if (rels.length > 0) {
265
+ bySource.set(mem.id, rels);
266
+ }
267
+ }
268
+ for (const [sourceId, rels] of bySource) {
269
+ const sourceTitle = titleMap.get(sourceId) || sourceId;
270
+ lines.push(`## [[${sourceTitle}]]`, "");
271
+ for (const rel of rels) {
272
+ const targetTitle = titleMap.get(rel.target_id) || rel.target_id;
273
+ const label = rel.label ? ` — ${rel.label}` : "";
274
+ lines.push(`- **${rel.rel_type}** → [[${targetTitle}]]${label} (confidence: ${rel.confidence})`);
275
+ }
276
+ lines.push("");
277
+ }
278
+ if (bySource.size === 0) {
279
+ lines.push("No relationships discovered yet. Run `gnosys dream` to discover relationships.");
280
+ }
281
+ await fs.writeFile(filePath, lines.join("\n"), "utf-8");
282
+ return true;
283
+ }
284
+ // ─── Helpers ─────────────────────────────────────────────────────────
285
+ /**
286
+ * Get all relationships for a memory (both directions).
287
+ */
288
+ getMemoryRelationships(id) {
289
+ const from = this.db.getRelationshipsFrom(id);
290
+ const to = this.db.getRelationshipsTo(id);
291
+ return [...from, ...to];
292
+ }
293
+ /**
294
+ * Build [[wikilinks]] from relationships.
295
+ */
296
+ buildWikilinks(relationships) {
297
+ const links = [];
298
+ const seen = new Set();
299
+ for (const rel of relationships) {
300
+ // Look up target memory title
301
+ const targetId = rel.target_id;
302
+ if (seen.has(targetId))
303
+ continue;
304
+ seen.add(targetId);
305
+ const target = this.db.getMemory(targetId);
306
+ if (target) {
307
+ const label = rel.label ? ` — ${rel.label}` : "";
308
+ links.push(`- ${rel.rel_type}: [[${target.title}]]${label}`);
309
+ }
310
+ }
311
+ return links;
312
+ }
313
+ /**
314
+ * Parse tags from JSON string.
315
+ */
316
+ parseTags(tagsJson) {
317
+ try {
318
+ const parsed = JSON.parse(tagsJson || "[]");
319
+ if (Array.isArray(parsed))
320
+ return parsed;
321
+ return Object.values(parsed).flat();
322
+ }
323
+ catch {
324
+ return [];
325
+ }
326
+ }
327
+ /**
328
+ * Slugify a title for use as a filename.
329
+ */
330
+ slugify(text) {
331
+ return text
332
+ .toLowerCase()
333
+ .replace(/[^a-z0-9]+/g, "-")
334
+ .replace(/^-|-$/g, "")
335
+ .substring(0, 80);
336
+ }
337
+ }
338
+ // ─── Format Helper ───────────────────────────────────────────────────────
339
+ /**
340
+ * Format an export report as human-readable text.
341
+ */
342
+ export function formatExportReport(report) {
343
+ const lines = [];
344
+ lines.push("Gnosys Obsidian Export Report");
345
+ lines.push("=".repeat(40));
346
+ lines.push("");
347
+ lines.push(`Target: ${report.targetDir}`);
348
+ lines.push(`Memories exported: ${report.memoriesExported}`);
349
+ lines.push(`Memories skipped (already exist): ${report.memoriesSkipped}`);
350
+ lines.push(`Summaries exported: ${report.summariesExported}`);
351
+ lines.push(`Reviews exported: ${report.reviewsExported ? "yes" : "no"}`);
352
+ lines.push(`Graph exported: ${report.graphExported ? "yes" : "no"}`);
353
+ if (report.errors.length > 0) {
354
+ lines.push("");
355
+ lines.push(`Errors (${report.errors.length}):`);
356
+ for (const e of report.errors) {
357
+ lines.push(` ! ${e}`);
358
+ }
359
+ }
360
+ return lines.join("\n");
361
+ }
362
+ //# sourceMappingURL=export.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"export.js","sourceRoot":"","sources":["../../src/lib/export.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,113 @@
1
+ /**
2
+ * Gnosys Federated Search — Phase 8d
3
+ *
4
+ * Searches across all scopes (project → user → global) with tier boosting,
5
+ * multi-project ambiguity detection, implicit working set recency boost,
6
+ * and project briefing generation.
7
+ *
8
+ * Tier boosting order: project (1.5x) > user (1.0x) > global (0.7x)
9
+ * Recency boost: memories accessed/modified in the last 24h get a 1.3x boost
10
+ */
11
+ import { GnosysDB, DbMemory, MemoryScope } from "./db.js";
12
+ export interface FederatedResult {
13
+ id: string;
14
+ title: string;
15
+ category: string;
16
+ snippet: string;
17
+ score: number;
18
+ scope: MemoryScope;
19
+ projectId: string | null;
20
+ projectName: string | null;
21
+ /** Boost factors applied */
22
+ boosts: string[];
23
+ }
24
+ export interface AmbiguityError {
25
+ type: "ambiguous_project";
26
+ message: string;
27
+ candidates: Array<{
28
+ projectId: string;
29
+ projectName: string;
30
+ workingDirectory: string;
31
+ memoryCount: number;
32
+ }>;
33
+ }
34
+ export interface ProjectBriefing {
35
+ projectId: string;
36
+ projectName: string;
37
+ workingDirectory: string;
38
+ totalMemories: number;
39
+ activeMemories: number;
40
+ categories: Record<string, number>;
41
+ recentActivity: Array<{
42
+ id: string;
43
+ title: string;
44
+ modified: string;
45
+ }>;
46
+ topTags: Array<{
47
+ tag: string;
48
+ count: number;
49
+ }>;
50
+ summary: string;
51
+ }
52
+ export interface FederatedSearchOptions {
53
+ /** Limit total results */
54
+ limit?: number;
55
+ /** Current project ID (auto-detected if omitted) */
56
+ projectId?: string | null;
57
+ /** Working directory for project auto-detection */
58
+ workingDir?: string;
59
+ /** Include global scope in results */
60
+ includeGlobal?: boolean;
61
+ /** Recency window in hours (default: 24) */
62
+ recencyWindowHours?: number;
63
+ /** Filter to specific scope(s). If set, only memories in these scopes are returned. */
64
+ scopeFilter?: MemoryScope[];
65
+ }
66
+ /**
67
+ * Search across all scopes with tier boosting and recency awareness.
68
+ * Results from the current project rank highest, then user-scoped, then global.
69
+ */
70
+ export declare function federatedSearch(db: GnosysDB, query: string, opts?: FederatedSearchOptions): FederatedResult[];
71
+ /**
72
+ * Discover across all scopes — lightweight metadata search
73
+ * with the same tier boosting logic.
74
+ */
75
+ export declare function federatedDiscover(db: GnosysDB, query: string, opts?: FederatedSearchOptions): FederatedResult[];
76
+ /**
77
+ * Detect ambiguity when multiple projects match a query.
78
+ * Used by write operations — if the user doesn't specify a project and
79
+ * multiple projects have matching content, raise an ambiguity error
80
+ * listing all candidates.
81
+ */
82
+ export declare function detectAmbiguity(db: GnosysDB, query: string, opts?: {
83
+ threshold?: number;
84
+ }): AmbiguityError | null;
85
+ /**
86
+ * Auto-detect the current project from a working directory.
87
+ * Returns the projectId or null.
88
+ */
89
+ export declare function detectCurrentProject(db: GnosysDB, workingDir?: string): Promise<string | null>;
90
+ /**
91
+ * Generate a project briefing — a pre-computed summary of a project's
92
+ * memory state. Designed for "dream mode" pre-computation or on-demand
93
+ * project status checks.
94
+ */
95
+ export declare function generateBriefing(db: GnosysDB, projectId: string): ProjectBriefing | null;
96
+ /**
97
+ * Generate briefings for ALL registered projects.
98
+ * Used by dream mode to pre-compute briefings.
99
+ */
100
+ export declare function generateAllBriefings(db: GnosysDB): ProjectBriefing[];
101
+ /**
102
+ * Get the implicit working set — recently accessed/modified memories
103
+ * for the current project. These get boosted in federated search results.
104
+ */
105
+ export declare function getWorkingSet(db: GnosysDB, projectId: string, opts?: {
106
+ windowHours?: number;
107
+ limit?: number;
108
+ }): DbMemory[];
109
+ /**
110
+ * Format the working set as a concise context block for agent consumption.
111
+ */
112
+ export declare function formatWorkingSet(memories: DbMemory[]): string;
113
+ //# sourceMappingURL=federated.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"federated.d.ts","sourceRoot":"","sources":["../../src/lib/federated.ts"],"names":[],"mappings":"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"}