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,371 @@
1
+ /**
2
+ * Gnosys Configuration — Loads and validates gnosys.json config files.
3
+ * Uses Zod for schema validation with sensible defaults.
4
+ */
5
+ import { z } from "zod";
6
+ import fs from "fs/promises";
7
+ import path from "path";
8
+ // ─── LLM Provider Schemas ───────────────────────────────────────────────
9
+ const LLMProviderEnum = z.enum(["anthropic", "ollama", "groq", "openai", "lmstudio"]);
10
+ const AnthropicConfigSchema = z.object({
11
+ model: z.string().default("claude-sonnet-4-20250514"),
12
+ apiKey: z.string().optional(), // Falls back to ANTHROPIC_API_KEY env var
13
+ });
14
+ const OllamaConfigSchema = z.object({
15
+ model: z.string().default("llama3.2"),
16
+ baseUrl: z.string().default("http://localhost:11434"),
17
+ });
18
+ const GroqConfigSchema = z.object({
19
+ model: z.string().default("llama-3.3-70b-versatile"),
20
+ apiKey: z.string().optional(), // Falls back to GROQ_API_KEY env var
21
+ });
22
+ const OpenAIConfigSchema = z.object({
23
+ model: z.string().default("gpt-4o-mini"),
24
+ apiKey: z.string().optional(), // Falls back to OPENAI_API_KEY env var
25
+ baseUrl: z.string().default("https://api.openai.com/v1"),
26
+ });
27
+ const LMStudioConfigSchema = z.object({
28
+ model: z.string().default("default"),
29
+ baseUrl: z.string().default("http://localhost:1234/v1"),
30
+ });
31
+ const TaskModelSchema = z.object({
32
+ provider: LLMProviderEnum,
33
+ model: z.string(),
34
+ });
35
+ const LLMConfigSchema = z.object({
36
+ defaultProvider: LLMProviderEnum.default("anthropic"),
37
+ anthropic: AnthropicConfigSchema.default({ model: "claude-sonnet-4-20250514" }),
38
+ ollama: OllamaConfigSchema.default({ model: "llama3.2", baseUrl: "http://localhost:11434" }),
39
+ groq: GroqConfigSchema.default({ model: "llama-3.3-70b-versatile" }),
40
+ openai: OpenAIConfigSchema.default({ model: "gpt-4o-mini", baseUrl: "https://api.openai.com/v1" }),
41
+ lmstudio: LMStudioConfigSchema.default({ model: "default", baseUrl: "http://localhost:1234/v1" }),
42
+ });
43
+ const TaskModelsSchema = z.object({
44
+ structuring: TaskModelSchema.optional(),
45
+ synthesis: TaskModelSchema.optional(),
46
+ });
47
+ // ─── Archive Schema ─────────────────────────────────────────────────────
48
+ const ArchiveConfigSchema = z.object({
49
+ /** Days since last reinforcement before a memory becomes archive-eligible */
50
+ maxActiveDays: z.number().int().min(1).default(90),
51
+ /** Minimum confidence threshold — below this, eligible for archive */
52
+ minConfidence: z.number().min(0).max(1).default(0.3),
53
+ });
54
+ // ─── Dream Schema ──────────────────────────────────────────────────────
55
+ const DreamConfigSchema = z.object({
56
+ /** Enable dream mode (default: false — must be explicitly enabled) */
57
+ enabled: z.boolean().default(false),
58
+ /** Idle time in minutes before triggering dream cycle */
59
+ idleMinutes: z.number().int().min(1).default(10),
60
+ /** Max runtime in minutes for a single dream cycle */
61
+ maxRuntimeMinutes: z.number().int().min(1).max(120).default(30),
62
+ /** LLM provider to use for dream operations */
63
+ provider: LLMProviderEnum.default("ollama"),
64
+ /** LLM model override for dream (leave empty to use provider default) */
65
+ model: z.string().optional(),
66
+ /** Enable self-critique scoring (never deletes, only suggests) */
67
+ selfCritique: z.boolean().default(true),
68
+ /** Enable category summary generation */
69
+ generateSummaries: z.boolean().default(true),
70
+ /** Enable relationship discovery between memories */
71
+ discoverRelationships: z.boolean().default(true),
72
+ /** Min memory count before dream mode activates */
73
+ minMemories: z.number().int().min(1).default(10),
74
+ });
75
+ // ─── Recall Schema ─────────────────────────────────────────────────────
76
+ const RecallConfigSchema = z.object({
77
+ /** When true, inject memories even at medium relevance (boosts recall for long sessions) */
78
+ aggressive: z.boolean().default(true),
79
+ /** Max memories to inject per turn */
80
+ maxMemories: z.number().int().min(1).max(20).default(8),
81
+ /** Minimum relevance score (0-1). Lower = more memories returned. Aggressive mode uses this as a soft floor. */
82
+ minRelevance: z.number().min(0).max(1).default(0.4),
83
+ });
84
+ // ─── Web Knowledge Base Schema ──────────────────────────────────────────
85
+ const WebConfigSchema = z.object({
86
+ /** Source type for web knowledge base ingestion */
87
+ source: z.enum(["sitemap", "directory", "urls"]).default("sitemap"),
88
+ /** Sitemap URL for sitemap source */
89
+ sitemapUrl: z.string().optional(),
90
+ /** Content directory for directory source */
91
+ contentDir: z.string().optional(),
92
+ /** URL list for urls source */
93
+ urls: z.array(z.string()).optional(),
94
+ /** Output directory for knowledge files */
95
+ outputDir: z.string().default("./knowledge"),
96
+ /** URL path patterns to exclude from ingestion */
97
+ exclude: z.array(z.string()).default(["/api", "/admin", "/_next"]),
98
+ /** URL glob → category name mapping */
99
+ categories: z.record(z.string(), z.string()).default({
100
+ "/blog/*": "blog",
101
+ "/services/*": "services",
102
+ "/products/*": "products",
103
+ }),
104
+ /** Use LLM for enriched frontmatter generation */
105
+ llmEnrich: z.boolean().default(true),
106
+ /** Remove knowledge files for pages no longer in source */
107
+ prune: z.boolean().default(false),
108
+ /** Max parallel ingestion requests */
109
+ concurrency: z.number().min(1).max(10).default(3),
110
+ /** Delay in ms between crawl requests (skip for localhost) */
111
+ crawlDelayMs: z.number().min(0).default(200),
112
+ });
113
+ // ─── Main Config Schema ─────────────────────────────────────────────────
114
+ export const GnosysConfigSchema = z.object({
115
+ /** LLM configuration */
116
+ llm: LLMConfigSchema.default({
117
+ defaultProvider: "anthropic",
118
+ anthropic: { model: "claude-sonnet-4-20250514" },
119
+ ollama: { model: "llama3.2", baseUrl: "http://localhost:11434" },
120
+ groq: { model: "llama-3.3-70b-versatile" },
121
+ openai: { model: "gpt-4o-mini", baseUrl: "https://api.openai.com/v1" },
122
+ lmstudio: { model: "default", baseUrl: "http://localhost:1234/v1" },
123
+ }),
124
+ /** Task-specific model overrides */
125
+ taskModels: TaskModelsSchema.default({}),
126
+ // Legacy fields — kept for backward compat, mapped to llm.defaultProvider/anthropic.model
127
+ /** @deprecated Use llm.defaultProvider instead */
128
+ defaultLLMProvider: z
129
+ .enum(["anthropic", "ollama", "openai", "groq"])
130
+ .optional(),
131
+ /** @deprecated Use llm.anthropic.model or llm.ollama.model instead */
132
+ defaultModel: z.string().optional(),
133
+ /** Max records per batch commit during bulk import */
134
+ bulkIngestionBatchSize: z.number().int().min(1).max(10000).default(500),
135
+ /** Parallel LLM calls during import */
136
+ importConcurrency: z.number().int().min(1).max(20).default(5),
137
+ /** Enable auto-commit on every write (disable for manual git) */
138
+ autoCommit: z.boolean().default(true),
139
+ /** LLM retry attempts on transient failures */
140
+ llmRetryAttempts: z.number().int().min(0).max(10).default(3),
141
+ /** Base delay in ms for exponential backoff between retries */
142
+ llmRetryBaseDelayMs: z.number().int().min(100).max(30000).default(1000),
143
+ /** Default author for imported memories */
144
+ defaultAuthor: z
145
+ .enum(["human", "ai", "human+ai"])
146
+ .default("ai"),
147
+ /** Default authority for imported memories */
148
+ defaultAuthority: z
149
+ .enum(["declared", "observed", "imported", "inferred"])
150
+ .default("imported"),
151
+ /** Default confidence for structured (non-LLM) imports */
152
+ defaultConfidence: z.number().min(0).max(1).default(0.8),
153
+ /** Store path override (relative to project root, or absolute) */
154
+ storePath: z.string().optional(),
155
+ /** Two-tier memory archive settings */
156
+ archive: ArchiveConfigSchema.default({ maxActiveDays: 90, minConfidence: 0.3 }),
157
+ /** Recall — automatic memory injection on every turn */
158
+ recall: RecallConfigSchema.default({
159
+ aggressive: true,
160
+ maxMemories: 8,
161
+ minRelevance: 0.4,
162
+ }),
163
+ /** Dream Mode — sleep-time consolidation (off by default) */
164
+ dream: DreamConfigSchema.default({
165
+ enabled: false,
166
+ idleMinutes: 10,
167
+ maxRuntimeMinutes: 30,
168
+ provider: "ollama",
169
+ selfCritique: true,
170
+ generateSummaries: true,
171
+ discoverRelationships: true,
172
+ minMemories: 10,
173
+ }),
174
+ /** Web Knowledge Base — read-only, file-based mode for serverless chatbots */
175
+ web: WebConfigSchema.optional(),
176
+ });
177
+ // ─── Defaults ────────────────────────────────────────────────────────────
178
+ export const DEFAULT_CONFIG = GnosysConfigSchema.parse({});
179
+ // ─── Helpers ─────────────────────────────────────────────────────────────
180
+ /**
181
+ * Resolve the effective LLM provider and model for a given task.
182
+ * Priority: taskModels override > llm config > legacy fields > defaults.
183
+ */
184
+ export function resolveTaskModel(config, task) {
185
+ // 1. Task-specific override
186
+ const taskOverride = config.taskModels?.[task];
187
+ if (taskOverride) {
188
+ return { provider: taskOverride.provider, model: taskOverride.model };
189
+ }
190
+ // 2. Default provider from llm config
191
+ const provider = config.llm.defaultProvider;
192
+ // 3. Model from provider-specific config
193
+ const model = getProviderModel(config, provider);
194
+ return { provider, model };
195
+ }
196
+ /**
197
+ * Get the configured model for a specific provider.
198
+ */
199
+ export function getProviderModel(config, provider) {
200
+ switch (provider) {
201
+ case "anthropic": return config.llm.anthropic.model;
202
+ case "ollama": return config.llm.ollama.model;
203
+ case "groq": return config.llm.groq.model;
204
+ case "openai": return config.llm.openai.model;
205
+ case "lmstudio": return config.llm.lmstudio.model;
206
+ default: return config.llm.anthropic.model;
207
+ }
208
+ }
209
+ /**
210
+ * Get the Groq API key, checking config first then env var.
211
+ */
212
+ export function getGroqApiKey(config) {
213
+ return config.llm.groq.apiKey || process.env.GROQ_API_KEY;
214
+ }
215
+ /**
216
+ * Get the OpenAI API key, checking config first then env var.
217
+ */
218
+ export function getOpenAIApiKey(config) {
219
+ return config.llm.openai.apiKey || process.env.OPENAI_API_KEY;
220
+ }
221
+ /**
222
+ * Get the OpenAI base URL from config.
223
+ */
224
+ export function getOpenAIBaseUrl(config) {
225
+ return config.llm.openai.baseUrl;
226
+ }
227
+ /**
228
+ * Get the LM Studio base URL from config.
229
+ */
230
+ export function getLMStudioBaseUrl(config) {
231
+ return config.llm.lmstudio.baseUrl;
232
+ }
233
+ /**
234
+ * Get the Anthropic API key, checking config first then env var.
235
+ */
236
+ export function getAnthropicApiKey(config) {
237
+ return config.llm.anthropic.apiKey || process.env.ANTHROPIC_API_KEY;
238
+ }
239
+ /**
240
+ * Get the Ollama base URL from config.
241
+ */
242
+ export function getOllamaBaseUrl(config) {
243
+ return config.llm.ollama.baseUrl;
244
+ }
245
+ // ─── Migration ───────────────────────────────────────────────────────────
246
+ /**
247
+ * Migrate legacy config fields to the new llm structure.
248
+ * Called during loading to ensure backward compatibility.
249
+ */
250
+ function migrateConfig(raw) {
251
+ const migrated = { ...raw };
252
+ // Migrate legacy defaultLLMProvider → llm.defaultProvider
253
+ if (migrated.defaultLLMProvider && !migrated.llm) {
254
+ const provider = migrated.defaultLLMProvider;
255
+ if (provider === "anthropic" || provider === "ollama") {
256
+ migrated.llm = {
257
+ defaultProvider: provider,
258
+ ...(typeof migrated.llm === "object" && migrated.llm !== null ? migrated.llm : {}),
259
+ };
260
+ }
261
+ }
262
+ // Migrate legacy defaultModel → provider-specific model
263
+ if (migrated.defaultModel && !migrated.llm) {
264
+ migrated.llm = { anthropic: { model: migrated.defaultModel } };
265
+ }
266
+ else if (migrated.defaultModel && typeof migrated.llm === "object" && migrated.llm !== null) {
267
+ const llm = migrated.llm;
268
+ if (!llm.anthropic) {
269
+ llm.anthropic = { model: migrated.defaultModel };
270
+ }
271
+ }
272
+ return migrated;
273
+ }
274
+ // ─── Loader ──────────────────────────────────────────────────────────────
275
+ /**
276
+ * Load gnosys.json from a .gnosys directory.
277
+ * Returns defaults if no config file exists.
278
+ * Throws on invalid config with descriptive error messages.
279
+ */
280
+ export async function loadConfig(storePath) {
281
+ const configPath = path.join(storePath, "gnosys.json");
282
+ try {
283
+ const raw = await fs.readFile(configPath, "utf-8");
284
+ const parsed = JSON.parse(raw);
285
+ const migrated = migrateConfig(parsed);
286
+ return GnosysConfigSchema.parse(migrated);
287
+ }
288
+ catch (err) {
289
+ if (err instanceof Error && "code" in err && err.code === "ENOENT") {
290
+ // No config file — use defaults
291
+ return DEFAULT_CONFIG;
292
+ }
293
+ if (err instanceof SyntaxError) {
294
+ throw new Error(`Invalid JSON in ${configPath}: ${err.message}`);
295
+ }
296
+ if (err instanceof z.ZodError) {
297
+ const issues = err.issues
298
+ .map((i) => ` - ${i.path.join(".")}: ${i.message}`)
299
+ .join("\n");
300
+ throw new Error(`Invalid gnosys.json at ${configPath}:\n${issues}`);
301
+ }
302
+ throw err;
303
+ }
304
+ }
305
+ /**
306
+ * Write a gnosys.json config file to a .gnosys directory.
307
+ */
308
+ export async function writeConfig(storePath, config) {
309
+ const configPath = path.join(storePath, "gnosys.json");
310
+ const merged = GnosysConfigSchema.parse(config);
311
+ await fs.writeFile(configPath, JSON.stringify(merged, null, 2) + "\n", "utf-8");
312
+ }
313
+ /**
314
+ * Update specific fields in gnosys.json without overwriting the whole file.
315
+ */
316
+ export async function updateConfig(storePath, updates) {
317
+ const existing = await loadConfig(storePath);
318
+ const merged = { ...existing, ...updates };
319
+ const validated = GnosysConfigSchema.parse(merged);
320
+ const configPath = path.join(storePath, "gnosys.json");
321
+ await fs.writeFile(configPath, JSON.stringify(validated, null, 2) + "\n", "utf-8");
322
+ return validated;
323
+ }
324
+ /**
325
+ * Generate a default gnosys.json with the new llm config structure.
326
+ */
327
+ export function generateConfigTemplate() {
328
+ return JSON.stringify({
329
+ llm: {
330
+ defaultProvider: "anthropic",
331
+ anthropic: { model: "claude-sonnet-4-20250514" },
332
+ ollama: { model: "llama3.2", baseUrl: "http://localhost:11434" },
333
+ groq: { model: "llama-3.3-70b-versatile" },
334
+ openai: { model: "gpt-4o-mini", baseUrl: "https://api.openai.com/v1" },
335
+ lmstudio: { model: "default", baseUrl: "http://localhost:1234/v1" },
336
+ },
337
+ taskModels: {},
338
+ bulkIngestionBatchSize: 500,
339
+ importConcurrency: 5,
340
+ autoCommit: true,
341
+ llmRetryAttempts: 3,
342
+ llmRetryBaseDelayMs: 1000,
343
+ defaultAuthor: "ai",
344
+ defaultAuthority: "imported",
345
+ defaultConfidence: 0.8,
346
+ archive: {
347
+ maxActiveDays: 90,
348
+ minConfidence: 0.3,
349
+ },
350
+ recall: {
351
+ aggressive: true,
352
+ maxMemories: 8,
353
+ minRelevance: 0.4,
354
+ },
355
+ dream: {
356
+ enabled: false,
357
+ idleMinutes: 10,
358
+ maxRuntimeMinutes: 30,
359
+ provider: "ollama",
360
+ selfCritique: true,
361
+ generateSummaries: true,
362
+ discoverRelationships: true,
363
+ minMemories: 10,
364
+ },
365
+ }, null, 2);
366
+ }
367
+ /**
368
+ * All supported provider names.
369
+ */
370
+ export const ALL_PROVIDERS = ["anthropic", "ollama", "groq", "openai", "lmstudio"];
371
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,81 @@
1
+ /**
2
+ * Gnosys Dashboard — Aggregated system status in a pretty terminal display.
3
+ * Combines memory stats, maintenance health, graph stats, and LLM routing.
4
+ */
5
+ import { GnosysResolver } from "./resolver.js";
6
+ import { GnosysConfig, LLMProviderName } from "./config.js";
7
+ import { GnosysDB } from "./db.js";
8
+ export interface DashboardData {
9
+ stores: Array<{
10
+ label: string;
11
+ path: string;
12
+ memoryCount: number;
13
+ }>;
14
+ totalMemories: number;
15
+ /** v2.0: gnosys.db unified store stats */
16
+ gnosysDb: {
17
+ migrated: boolean;
18
+ schemaVersion: number;
19
+ activeCount: number;
20
+ archivedCount: number;
21
+ totalCount: number;
22
+ embeddingCount: number;
23
+ categories: string[];
24
+ } | null;
25
+ archive: {
26
+ totalArchived: number;
27
+ dbSizeMB: number;
28
+ archiveEligible: number;
29
+ } | null;
30
+ maintenance: {
31
+ staleCount: number;
32
+ avgConfidence: number;
33
+ avgDecayedConfidence: number;
34
+ neverReinforced: number;
35
+ totalReinforcements: number;
36
+ } | null;
37
+ embeddings: {
38
+ count: number;
39
+ dbSizeMB: number;
40
+ } | null;
41
+ graph: {
42
+ nodes: number;
43
+ edges: number;
44
+ orphans: number;
45
+ mostConnected: string | null;
46
+ } | null;
47
+ soc: {
48
+ defaultProvider: LLMProviderName;
49
+ structuring: {
50
+ provider: LLMProviderName;
51
+ model: string;
52
+ };
53
+ synthesis: {
54
+ provider: LLMProviderName;
55
+ model: string;
56
+ };
57
+ providerStatus: Array<{
58
+ name: LLMProviderName;
59
+ available: boolean;
60
+ note: string;
61
+ }>;
62
+ };
63
+ recall: {
64
+ aggressive: boolean;
65
+ maxMemories: number;
66
+ minRelevance: number;
67
+ };
68
+ performance: {
69
+ activeSearchMs: number;
70
+ archiveSearchMs: number;
71
+ recallMs: number;
72
+ } | null;
73
+ version: string;
74
+ }
75
+ export declare function collectDashboardData(resolver: GnosysResolver, config: GnosysConfig, version: string, gnosysDb?: GnosysDB): Promise<DashboardData>;
76
+ export declare function formatDashboard(data: DashboardData): string;
77
+ /**
78
+ * Format dashboard data as structured JSON for MCP tool consumption.
79
+ */
80
+ export declare function formatDashboardJSON(data: DashboardData): string;
81
+ //# sourceMappingURL=dashboard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dashboard.d.ts","sourceRoot":"","sources":["../../src/lib/dashboard.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EACL,YAAY,EAIZ,eAAe,EAChB,MAAM,aAAa,CAAC;AAGrB,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAMnC,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACpE,aAAa,EAAE,MAAM,CAAC;IACtB,0CAA0C;IAC1C,QAAQ,EAAE;QACR,QAAQ,EAAE,OAAO,CAAC;QAClB,aAAa,EAAE,MAAM,CAAC;QACtB,WAAW,EAAE,MAAM,CAAC;QACpB,aAAa,EAAE,MAAM,CAAC;QACtB,UAAU,EAAE,MAAM,CAAC;QACnB,cAAc,EAAE,MAAM,CAAC;QACvB,UAAU,EAAE,MAAM,EAAE,CAAC;KACtB,GAAG,IAAI,CAAC;IACT,OAAO,EAAE;QACP,aAAa,EAAE,MAAM,CAAC;QACtB,QAAQ,EAAE,MAAM,CAAC;QACjB,eAAe,EAAE,MAAM,CAAC;KACzB,GAAG,IAAI,CAAC;IACT,WAAW,EAAE;QACX,UAAU,EAAE,MAAM,CAAC;QACnB,aAAa,EAAE,MAAM,CAAC;QACtB,oBAAoB,EAAE,MAAM,CAAC;QAC7B,eAAe,EAAE,MAAM,CAAC;QACxB,mBAAmB,EAAE,MAAM,CAAC;KAC7B,GAAG,IAAI,CAAC;IACT,UAAU,EAAE;QACV,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,EAAE,MAAM,CAAC;KAClB,GAAG,IAAI,CAAC;IACT,KAAK,EAAE;QACL,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,CAAC;QAChB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;KAC9B,GAAG,IAAI,CAAC;IACT,GAAG,EAAE;QACH,eAAe,EAAE,eAAe,CAAC;QACjC,WAAW,EAAE;YAAE,QAAQ,EAAE,eAAe,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAE,CAAC;QAC1D,SAAS,EAAE;YAAE,QAAQ,EAAE,eAAe,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAE,CAAC;QACxD,cAAc,EAAE,KAAK,CAAC;YACpB,IAAI,EAAE,eAAe,CAAC;YACtB,SAAS,EAAE,OAAO,CAAC;YACnB,IAAI,EAAE,MAAM,CAAC;SACd,CAAC,CAAC;KACJ,CAAC;IACF,MAAM,EAAE;QACN,UAAU,EAAE,OAAO,CAAC;QACpB,WAAW,EAAE,MAAM,CAAC;QACpB,YAAY,EAAE,MAAM,CAAC;KACtB,CAAC;IACF,WAAW,EAAE;QACX,cAAc,EAAE,MAAM,CAAC;QACvB,eAAe,EAAE,MAAM,CAAC;QACxB,QAAQ,EAAE,MAAM,CAAC;KAClB,GAAG,IAAI,CAAC;IACT,OAAO,EAAE,MAAM,CAAC;CACjB;AAID,wBAAsB,oBAAoB,CACxC,QAAQ,EAAE,cAAc,EACxB,MAAM,EAAE,YAAY,EACpB,OAAO,EAAE,MAAM,EACf,QAAQ,CAAC,EAAE,QAAQ,GAClB,OAAO,CAAC,aAAa,CAAC,CAqLxB;AAID,wBAAgB,eAAe,CAAC,IAAI,EAAE,aAAa,GAAG,MAAM,CAsI3D;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,aAAa,GAAG,MAAM,CAE/D"}