@noesis-brain/mcp-server 2.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 (47) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +218 -0
  3. package/dist/api/NoesisClient.d.ts +501 -0
  4. package/dist/api/NoesisClient.d.ts.map +1 -0
  5. package/dist/api/NoesisClient.js +654 -0
  6. package/dist/api/NoesisClient.js.map +1 -0
  7. package/dist/cli/setup.d.ts +8 -0
  8. package/dist/cli/setup.d.ts.map +1 -0
  9. package/dist/cli/setup.js +148 -0
  10. package/dist/cli/setup.js.map +1 -0
  11. package/dist/database/PostgresAdapter.d.ts +385 -0
  12. package/dist/database/PostgresAdapter.d.ts.map +1 -0
  13. package/dist/database/PostgresAdapter.js +1043 -0
  14. package/dist/database/PostgresAdapter.js.map +1 -0
  15. package/dist/index.d.ts +31 -0
  16. package/dist/index.d.ts.map +1 -0
  17. package/dist/index.js +126 -0
  18. package/dist/index.js.map +1 -0
  19. package/dist/services/embedding.d.ts +38 -0
  20. package/dist/services/embedding.d.ts.map +1 -0
  21. package/dist/services/embedding.js +126 -0
  22. package/dist/services/embedding.js.map +1 -0
  23. package/dist/tools/SyncStateManager.d.ts +65 -0
  24. package/dist/tools/SyncStateManager.d.ts.map +1 -0
  25. package/dist/tools/SyncStateManager.js +217 -0
  26. package/dist/tools/SyncStateManager.js.map +1 -0
  27. package/dist/tools/index.d.ts +14 -0
  28. package/dist/tools/index.d.ts.map +1 -0
  29. package/dist/tools/index.js +3345 -0
  30. package/dist/tools/index.js.map +1 -0
  31. package/dist/tools/navis.d.ts +11 -0
  32. package/dist/tools/navis.d.ts.map +1 -0
  33. package/dist/tools/navis.js +231 -0
  34. package/dist/tools/navis.js.map +1 -0
  35. package/dist/types/index.d.ts +104 -0
  36. package/dist/types/index.d.ts.map +1 -0
  37. package/dist/types/index.js +5 -0
  38. package/dist/types/index.js.map +1 -0
  39. package/dist/utils/suggestPath.d.ts +15 -0
  40. package/dist/utils/suggestPath.d.ts.map +1 -0
  41. package/dist/utils/suggestPath.js +52 -0
  42. package/dist/utils/suggestPath.js.map +1 -0
  43. package/package.json +71 -0
  44. package/scripts/noesis-sync.mjs +469 -0
  45. package/skill-templates/noesis-refine-note.md +92 -0
  46. package/skill-templates/noesis-sync.md +110 -0
  47. package/templates/claude-md-block.md +22 -0
@@ -0,0 +1,501 @@
1
+ /**
2
+ * NoesisClient - HTTP client for Noesis API
3
+ *
4
+ * Replaces direct PostgreSQL access in MCP server.
5
+ * All operations go through authenticated API calls.
6
+ */
7
+ export type OsKey = 'win32' | 'darwin' | 'linux';
8
+ export declare const CLIENT_OS: OsKey;
9
+ /**
10
+ * Expand a leading `~` or `%USERPROFILE%` (home-directory shortcut) against
11
+ * this machine's home directory. Cloud-flow root paths are stored as
12
+ * `~/Noesis/...` in the cloud DB because the cloud cannot know each machine's
13
+ * $HOME -- the MCP server expands here at sync time. No-op for already-absolute
14
+ * paths.
15
+ *
16
+ * `%USERPROFILE%` is accepted because the frontend renders Windows-row root
17
+ * paths as `%USERPROFILE%\Noesis` for display (Windows shells don't expand `~`),
18
+ * and that displayed form ends up on the clipboard via the note's "Copy file
19
+ * path" button. Recognising it here keeps Copy → Paste → `sync_notes` working
20
+ * end-to-end on Windows.
21
+ *
22
+ * Phase 34 introduced this expansion. Older MCP server versions stored
23
+ * `cloud://` sentinels and never expanded; that path is gone.
24
+ */
25
+ export declare function expandHome(p: string): string;
26
+ /**
27
+ * Return the OS-active path from a root's local_paths map, or '' if
28
+ * missing. Tilde-prefixed values are expanded against `os.homedir()` for
29
+ * direct fs use. Callers that need an error on miss should use
30
+ * requireActiveRootPath in tools/index.ts instead.
31
+ */
32
+ export declare function getActivePathFromMap(localPaths: Record<string, string> | null | undefined): string;
33
+ export interface Codebase {
34
+ id: number;
35
+ path: string;
36
+ label?: string;
37
+ branch?: string;
38
+ description?: string;
39
+ repo_url?: string;
40
+ is_archived?: boolean;
41
+ created_at?: string;
42
+ modified_at?: string;
43
+ }
44
+ export interface Note {
45
+ id: number;
46
+ title: string;
47
+ file_path: string;
48
+ relative_path?: string;
49
+ content?: string;
50
+ description?: string;
51
+ keywords?: string[];
52
+ aliases?: string[];
53
+ related_codes?: number[];
54
+ related_codebases?: Codebase[];
55
+ catalogs?: string[];
56
+ points?: number;
57
+ is_favorite?: boolean;
58
+ modified_at?: string;
59
+ root_id?: number;
60
+ importance_score?: number;
61
+ quality_score?: number;
62
+ relations?: Array<{
63
+ type: string;
64
+ target_id: number;
65
+ context?: string;
66
+ }>;
67
+ edited_online_at?: string | null;
68
+ conflict_marker?: Record<string, unknown> | null;
69
+ }
70
+ export interface EditedOnlineNote {
71
+ id: number;
72
+ title: string | null;
73
+ relative_path: string;
74
+ hash: string;
75
+ edited_online_at: string;
76
+ root_id: number;
77
+ root_path: string;
78
+ root_local_paths?: Record<string, string>;
79
+ }
80
+ export interface SearchResult {
81
+ id: number;
82
+ title: string;
83
+ file_path: string;
84
+ content?: string;
85
+ description?: string;
86
+ relevance_score?: number;
87
+ relevance?: number;
88
+ excerpt?: string;
89
+ modified_at?: string;
90
+ }
91
+ export interface SearchOptions {
92
+ limit?: number;
93
+ root?: string;
94
+ catalog?: string;
95
+ }
96
+ export interface Catalog {
97
+ id: number;
98
+ name: string;
99
+ color: string;
100
+ icon?: string;
101
+ description?: string;
102
+ sort_order: number;
103
+ is_builtin: boolean;
104
+ note_count: number;
105
+ }
106
+ export interface Root {
107
+ id: number;
108
+ name: string;
109
+ local_paths: Record<string, string>;
110
+ path?: string;
111
+ is_visible?: boolean;
112
+ last_scanned_at?: string;
113
+ }
114
+ export interface LocalFile {
115
+ path: string;
116
+ relativePath: string;
117
+ content: string;
118
+ rootId: number;
119
+ rootName?: string;
120
+ project?: string;
121
+ title?: string;
122
+ hash?: string;
123
+ mtime?: Date;
124
+ size?: number;
125
+ }
126
+ export interface Navi {
127
+ id: number;
128
+ user_id: number | null;
129
+ name: string;
130
+ description: string | null;
131
+ system_prompt: string;
132
+ icon: string;
133
+ icon_type: 'lucide' | 'custom';
134
+ icon_url: string | null;
135
+ color: string;
136
+ is_template: boolean;
137
+ is_active: boolean;
138
+ use_knowledge_base: boolean;
139
+ use_web_search?: boolean;
140
+ use_conversation_history: boolean;
141
+ animation_presets: string[];
142
+ animation_triggers: string[];
143
+ tts_provider: 'speechify' | 'webspeech' | 'minimax' | 'edgetts' | null;
144
+ tts_voice_id: string | null;
145
+ tts_rate: number | null;
146
+ tts_pitch: number | null;
147
+ tts_autoplay?: boolean;
148
+ ai_provider: 'claude' | 'gemini' | null;
149
+ ai_model: string | null;
150
+ created_at: string;
151
+ updated_at: string;
152
+ }
153
+ export interface ChatSession {
154
+ id: number;
155
+ title: string | null;
156
+ is_pinned: number;
157
+ navi_id: number | null;
158
+ created_at: string;
159
+ updated_at: string;
160
+ }
161
+ export interface ChatMessage {
162
+ id: number;
163
+ role: 'user' | 'assistant';
164
+ content: string;
165
+ navi_id: number | null;
166
+ created_at: string;
167
+ }
168
+ export interface ChatSessionResult {
169
+ session: ChatSession;
170
+ navi: {
171
+ id: number;
172
+ name: string;
173
+ description: string | null;
174
+ } | null;
175
+ messages: ChatMessage[];
176
+ hasMore: boolean;
177
+ }
178
+ export interface CreateNaviInput {
179
+ name: string;
180
+ system_prompt: string;
181
+ description?: string | null;
182
+ icon?: string;
183
+ icon_type?: 'lucide' | 'custom';
184
+ icon_url?: string | null;
185
+ color?: string;
186
+ use_knowledge_base?: boolean;
187
+ use_web_search?: boolean;
188
+ use_conversation_history?: boolean;
189
+ animation_presets?: string[];
190
+ animation_triggers?: string[];
191
+ tts_provider?: 'speechify' | 'webspeech' | 'minimax' | 'edgetts' | null;
192
+ tts_voice_id?: string | null;
193
+ tts_rate?: number | null;
194
+ tts_pitch?: number | null;
195
+ tts_autoplay?: boolean;
196
+ ai_provider?: 'claude' | 'gemini' | null;
197
+ ai_model?: string | null;
198
+ }
199
+ export type UpdateNaviInput = Partial<CreateNaviInput> & {
200
+ is_active?: boolean;
201
+ };
202
+ export interface SyncLogOptions {
203
+ rootId: number;
204
+ filesScanned: number;
205
+ filesAdded: number;
206
+ filesUpdated: number;
207
+ filesDeleted: number;
208
+ source: string;
209
+ machineName?: string;
210
+ notes?: string;
211
+ }
212
+ /**
213
+ * HTTP client for Noesis API
214
+ */
215
+ export declare class NoesisClient {
216
+ private baseUrl;
217
+ private apiToken;
218
+ constructor(baseUrl: string, apiToken: string);
219
+ /**
220
+ * Make an authenticated HTTP request
221
+ */
222
+ private request;
223
+ getRoots(): Promise<Root[]>;
224
+ getRootsForSync(): Promise<Array<{
225
+ id: number;
226
+ name: string;
227
+ path: string;
228
+ local_paths: Record<string, string>;
229
+ lastScannedAt: string | null;
230
+ }>>;
231
+ /**
232
+ * Create a new root.
233
+ *
234
+ * Accepts either:
235
+ * - `{ name, local_paths: { win32?, darwin?, linux? } }` (preferred; phase32+),
236
+ * - `{ name, path }` (legacy single-path — auto-routed into local_paths[CLIENT_OS]).
237
+ */
238
+ createRoot(options: {
239
+ name: string;
240
+ type?: string;
241
+ local_paths?: Record<string, string>;
242
+ path?: string;
243
+ }): Promise<Root>;
244
+ getRootByPath(path: string): Promise<Root | undefined>;
245
+ /**
246
+ * Look up a note by (root_id, relative_path). Used by the MCP server's
247
+ * cross-platform `get_note` resolver after it has prefix-matched the input
248
+ * path against a root.
249
+ */
250
+ getNoteByRelativePath(rootId: number, relativePath: string): Promise<Note | undefined>;
251
+ getNoteHashesByRoot(rootId: number): Promise<Map<string, string>>;
252
+ /**
253
+ * Get notes with hash, modified_at, content, and metadata for bidirectional sync comparison
254
+ */
255
+ getNotesForSync(rootId: number): Promise<Array<{
256
+ id: number;
257
+ relative_path: string;
258
+ hash: string;
259
+ modified_at: string;
260
+ content: string;
261
+ title: string | null;
262
+ description: string | null;
263
+ keywords: string | null;
264
+ edited_online_at: string | null;
265
+ }>>;
266
+ /**
267
+ * Mark a cloud note as having an unresolved sync conflict.
268
+ * The structured BASE/LOCAL/CLOUD payload is stored in notes.conflict_marker (JSONB).
269
+ * Web UI surfaces a yellow banner when this is set.
270
+ */
271
+ markConflict(noteId: number, payload: object): Promise<void>;
272
+ /** Clear the conflict marker after a successful merge + push. */
273
+ clearConflict(noteId: number): Promise<void>;
274
+ /**
275
+ * List notes with edited_online_at set — pending local sync from web UI edits.
276
+ * Optionally filter to a specific root by ID.
277
+ */
278
+ getEditedOnlineNotes(rootId?: number): Promise<EditedOnlineNote[]>;
279
+ listCatalogs(): Promise<Catalog[]>;
280
+ setNoteCatalogs(noteId: number, catalogs: string[]): Promise<void>;
281
+ setNoteRelatedCodes(noteId: number, codes: number[] | string[]): Promise<void>;
282
+ listCodebases(includeArchived?: boolean): Promise<Codebase[]>;
283
+ getCodebase(id: number): Promise<Codebase>;
284
+ getCodebaseUsage(id: number): Promise<{
285
+ note_count: number;
286
+ notes: Array<{
287
+ id: number;
288
+ title: string;
289
+ }>;
290
+ }>;
291
+ createCodebase(input: {
292
+ path: string;
293
+ label?: string;
294
+ branch?: string;
295
+ description?: string;
296
+ repo_url?: string;
297
+ }): Promise<Codebase>;
298
+ findOrCreateCodebase(input: {
299
+ path: string;
300
+ label?: string;
301
+ }): Promise<Codebase>;
302
+ updateCodebase(id: number, patch: {
303
+ path?: string;
304
+ label?: string | null;
305
+ branch?: string | null;
306
+ description?: string | null;
307
+ repo_url?: string | null;
308
+ is_archived?: boolean;
309
+ }): Promise<Codebase>;
310
+ deleteCodebase(id: number): Promise<{
311
+ success: boolean;
312
+ unlinked_from_note_count: number;
313
+ }>;
314
+ updateRootScanTime(rootId: number): Promise<void>;
315
+ searchNotes(query: string, options?: SearchOptions): Promise<SearchResult[]>;
316
+ getNote(id: number): Promise<Note | undefined>;
317
+ getBookmarkContext(noteId: number, bookmarkId: string, contextParagraphs?: number): Promise<{
318
+ bookmark: any;
319
+ note_title: string;
320
+ context_before: string;
321
+ context_anchor: string;
322
+ context_after: string;
323
+ } | undefined>;
324
+ getChatSession(id: number, opts?: {
325
+ limit?: number;
326
+ }): Promise<ChatSessionResult | undefined>;
327
+ getNoteByPath(filePath: string): Promise<Note | undefined>;
328
+ searchByRelatedCode(path: string, limit?: number): Promise<any[]>;
329
+ getRelationGraph(noteId: number, depth?: number): Promise<any[]>;
330
+ listNotes(options?: {
331
+ limit?: number;
332
+ offset?: number;
333
+ root?: string;
334
+ catalog?: string;
335
+ }): Promise<Note[]>;
336
+ getRecentNotes(days?: number, limit?: number): Promise<Note[]>;
337
+ /**
338
+ * Get notes for pulling to local files
339
+ */
340
+ getNotesForPull(options?: {
341
+ root?: string;
342
+ }): Promise<Array<{
343
+ id: number;
344
+ title: string;
345
+ content: string;
346
+ relative_path: string;
347
+ root_name: string;
348
+ }>>;
349
+ /**
350
+ * Get note count by root for sync status
351
+ */
352
+ getNoteCountByRoot(): Promise<Map<number, number>>;
353
+ upsertNote(file: LocalFile, metadata?: {
354
+ title?: string;
355
+ description?: string;
356
+ keywords?: string[];
357
+ }, options?: {
358
+ force?: boolean;
359
+ regenerateMetadata?: boolean;
360
+ preserveMetadata?: boolean;
361
+ lastSyncedHash?: string;
362
+ }): Promise<{
363
+ action: 'created' | 'updated' | 'skipped';
364
+ aiMetadataGenerated?: boolean;
365
+ }>;
366
+ logSyncOperation(options: SyncLogOptions): Promise<void>;
367
+ getNoteForEnhancement(id: number): Promise<{
368
+ id: number;
369
+ title: string;
370
+ description: string | null;
371
+ keywords: string[];
372
+ aliases: string[];
373
+ content: string;
374
+ file_path: string;
375
+ root_name: string;
376
+ ai_enhanced_at: string | null;
377
+ related_codes?: number[];
378
+ related_codebases?: Codebase[];
379
+ } | undefined>;
380
+ updateNoteMetadata(id: number, metadata: {
381
+ title?: string;
382
+ description?: string;
383
+ keywords?: string[];
384
+ aliases?: string[];
385
+ }): Promise<boolean>;
386
+ /**
387
+ * Update file metadata (file_size, hash) after pulling from cloud.
388
+ * Phase32: prefer (root_id, relative_path); falls back to legacy file_path
389
+ * if the caller hasn't been updated.
390
+ */
391
+ updateFileMetadata(filePathOrIds: string | {
392
+ rootId: number;
393
+ relativePath: string;
394
+ }, fileSize: number, hash: string): Promise<boolean>;
395
+ getNotesNeedingEnhancement(options?: {
396
+ limit?: number;
397
+ importantOnly?: boolean;
398
+ root?: string;
399
+ catalog?: string;
400
+ }): Promise<any[]>;
401
+ updateImportanceScore(id: number, score: number): Promise<boolean>;
402
+ updateQualityScore(id: number, score: number): Promise<boolean>;
403
+ updateRelations(id: number, relations: Array<{
404
+ type: string;
405
+ target_id: number;
406
+ context?: string;
407
+ }>): Promise<{
408
+ updated: number;
409
+ inversesCreated: number;
410
+ }>;
411
+ moveNote(id: number, newPath: string, options?: {
412
+ newRelativePath?: string;
413
+ newRootName?: string;
414
+ }): Promise<{
415
+ id: number;
416
+ file_path: string;
417
+ root_name: string;
418
+ relative_path: string;
419
+ } | null>;
420
+ updateNoteSignals(id: number, signals: {
421
+ is_favorite?: boolean;
422
+ points?: number;
423
+ }): Promise<boolean>;
424
+ trashNote(id: number): Promise<boolean>;
425
+ getNoteForScoring(id: number): Promise<any | undefined>;
426
+ getNotesForRelationAnalysis(excludeId: number, options?: {
427
+ limit?: number;
428
+ root?: string;
429
+ }): Promise<any[]>;
430
+ getNotesWithoutEmbeddings(options?: {
431
+ limit?: number;
432
+ root?: string;
433
+ }): Promise<any[]>;
434
+ updateNoteEmbedding(id: number, embedding: number[]): Promise<boolean>;
435
+ searchByEmbedding(embedding: number[], options?: {
436
+ limit?: number;
437
+ root?: string;
438
+ minSimilarity?: number;
439
+ }): Promise<any[]>;
440
+ findSimilarNotes(noteId: number, options?: {
441
+ limit?: number;
442
+ }): Promise<any[]>;
443
+ getNoteEmbedding(id: number): Promise<{
444
+ id: number;
445
+ embedding: number[];
446
+ } | undefined>;
447
+ getEmbeddingStats(): Promise<{
448
+ total: number;
449
+ withEmbeddings: number;
450
+ withoutEmbeddings: number;
451
+ }>;
452
+ getLastSyncTime(): Promise<string | null>;
453
+ setLastSyncTime(timestamp: string): Promise<void>;
454
+ getKnowledgeBaseStats(options?: {
455
+ limit?: number;
456
+ root?: string;
457
+ }): Promise<any>;
458
+ getSyncLogs(rootId?: number, limit?: number): Promise<any[]>;
459
+ /**
460
+ * Normalize line endings to LF for cross-platform consistency
461
+ * Matches backend behavior in src/backend/routes/mcp.ts
462
+ */
463
+ static normalizeLineEndings(content: string): string;
464
+ getNewsPreferences(): Promise<any>;
465
+ updateNewsPreferences(data: {
466
+ settings?: {
467
+ preferred_language?: string;
468
+ daily_article_limit?: number;
469
+ };
470
+ preferences?: any;
471
+ }): Promise<void>;
472
+ addNewsSource(data: {
473
+ name: string;
474
+ url: string;
475
+ domain?: string;
476
+ topic?: string;
477
+ language?: string;
478
+ source_type?: string;
479
+ }): Promise<any>;
480
+ /**
481
+ * Compute SHA-256 hash of content (for sync comparison)
482
+ * Static method - can be used without API call
483
+ * Note: Normalizes line endings to match backend hash computation
484
+ */
485
+ static computeHash(content: string): string;
486
+ listNavis(): Promise<{
487
+ navis: Navi[];
488
+ templates: Navi[];
489
+ default_navi_id: number | null;
490
+ }>;
491
+ getNavi(id: number): Promise<Navi>;
492
+ createNavi(body: CreateNaviInput): Promise<Navi>;
493
+ updateNavi(id: number, body: UpdateNaviInput): Promise<Navi>;
494
+ deleteNavi(id: number): Promise<void>;
495
+ duplicateNavi(id: number, name?: string): Promise<Navi>;
496
+ /**
497
+ * Close the client (no-op for HTTP client)
498
+ */
499
+ close(): Promise<void>;
500
+ }
501
+ //# sourceMappingURL=NoesisClient.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NoesisClient.d.ts","sourceRoot":"","sources":["../../src/api/NoesisClient.ts"],"names":[],"mappings":"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"}