@noteplanco/noteplan-mcp 1.1.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 (155) hide show
  1. package/README.md +257 -0
  2. package/dist/index.d.ts +3 -0
  3. package/dist/index.d.ts.map +1 -0
  4. package/dist/index.js +8 -0
  5. package/dist/index.js.map +1 -0
  6. package/dist/noteplan/embeddings.d.ts +170 -0
  7. package/dist/noteplan/embeddings.d.ts.map +1 -0
  8. package/dist/noteplan/embeddings.js +684 -0
  9. package/dist/noteplan/embeddings.js.map +1 -0
  10. package/dist/noteplan/file-reader.d.ts +77 -0
  11. package/dist/noteplan/file-reader.d.ts.map +1 -0
  12. package/dist/noteplan/file-reader.js +488 -0
  13. package/dist/noteplan/file-reader.js.map +1 -0
  14. package/dist/noteplan/file-writer.d.ts +108 -0
  15. package/dist/noteplan/file-writer.d.ts.map +1 -0
  16. package/dist/noteplan/file-writer.js +621 -0
  17. package/dist/noteplan/file-writer.js.map +1 -0
  18. package/dist/noteplan/filter-store.d.ts +28 -0
  19. package/dist/noteplan/filter-store.d.ts.map +1 -0
  20. package/dist/noteplan/filter-store.js +180 -0
  21. package/dist/noteplan/filter-store.js.map +1 -0
  22. package/dist/noteplan/frontmatter-parser.d.ts +45 -0
  23. package/dist/noteplan/frontmatter-parser.d.ts.map +1 -0
  24. package/dist/noteplan/frontmatter-parser.js +259 -0
  25. package/dist/noteplan/frontmatter-parser.js.map +1 -0
  26. package/dist/noteplan/fuzzy-search.d.ts +7 -0
  27. package/dist/noteplan/fuzzy-search.d.ts.map +1 -0
  28. package/dist/noteplan/fuzzy-search.js +66 -0
  29. package/dist/noteplan/fuzzy-search.js.map +1 -0
  30. package/dist/noteplan/markdown-parser.d.ts +87 -0
  31. package/dist/noteplan/markdown-parser.d.ts.map +1 -0
  32. package/dist/noteplan/markdown-parser.js +519 -0
  33. package/dist/noteplan/markdown-parser.js.map +1 -0
  34. package/dist/noteplan/preferences.d.ts +44 -0
  35. package/dist/noteplan/preferences.d.ts.map +1 -0
  36. package/dist/noteplan/preferences.js +156 -0
  37. package/dist/noteplan/preferences.js.map +1 -0
  38. package/dist/noteplan/ripgrep-search.d.ts +29 -0
  39. package/dist/noteplan/ripgrep-search.d.ts.map +1 -0
  40. package/dist/noteplan/ripgrep-search.js +110 -0
  41. package/dist/noteplan/ripgrep-search.js.map +1 -0
  42. package/dist/noteplan/sqlite-reader.d.ts +77 -0
  43. package/dist/noteplan/sqlite-reader.d.ts.map +1 -0
  44. package/dist/noteplan/sqlite-reader.js +605 -0
  45. package/dist/noteplan/sqlite-reader.js.map +1 -0
  46. package/dist/noteplan/sqlite-writer.d.ts +63 -0
  47. package/dist/noteplan/sqlite-writer.d.ts.map +1 -0
  48. package/dist/noteplan/sqlite-writer.js +574 -0
  49. package/dist/noteplan/sqlite-writer.js.map +1 -0
  50. package/dist/noteplan/types.d.ts +97 -0
  51. package/dist/noteplan/types.d.ts.map +1 -0
  52. package/dist/noteplan/types.js +33 -0
  53. package/dist/noteplan/types.js.map +1 -0
  54. package/dist/noteplan/unified-store.d.ts +289 -0
  55. package/dist/noteplan/unified-store.d.ts.map +1 -0
  56. package/dist/noteplan/unified-store.js +1308 -0
  57. package/dist/noteplan/unified-store.js.map +1 -0
  58. package/dist/server.d.ts +4 -0
  59. package/dist/server.d.ts.map +1 -0
  60. package/dist/server.js +2468 -0
  61. package/dist/server.js.map +1 -0
  62. package/dist/tools/calendar.d.ts +311 -0
  63. package/dist/tools/calendar.d.ts.map +1 -0
  64. package/dist/tools/calendar.js +504 -0
  65. package/dist/tools/calendar.js.map +1 -0
  66. package/dist/tools/embeddings.d.ts +244 -0
  67. package/dist/tools/embeddings.d.ts.map +1 -0
  68. package/dist/tools/embeddings.js +226 -0
  69. package/dist/tools/embeddings.js.map +1 -0
  70. package/dist/tools/events.d.ts +176 -0
  71. package/dist/tools/events.d.ts.map +1 -0
  72. package/dist/tools/events.js +326 -0
  73. package/dist/tools/events.js.map +1 -0
  74. package/dist/tools/filters.d.ts +205 -0
  75. package/dist/tools/filters.d.ts.map +1 -0
  76. package/dist/tools/filters.js +347 -0
  77. package/dist/tools/filters.js.map +1 -0
  78. package/dist/tools/memory.d.ts +6 -0
  79. package/dist/tools/memory.d.ts.map +1 -0
  80. package/dist/tools/memory.js +161 -0
  81. package/dist/tools/memory.js.map +1 -0
  82. package/dist/tools/notes.d.ts +1221 -0
  83. package/dist/tools/notes.d.ts.map +1 -0
  84. package/dist/tools/notes.js +1868 -0
  85. package/dist/tools/notes.js.map +1 -0
  86. package/dist/tools/plugins.d.ts +140 -0
  87. package/dist/tools/plugins.d.ts.map +1 -0
  88. package/dist/tools/plugins.js +782 -0
  89. package/dist/tools/plugins.js.map +1 -0
  90. package/dist/tools/reminders.d.ts +207 -0
  91. package/dist/tools/reminders.d.ts.map +1 -0
  92. package/dist/tools/reminders.js +323 -0
  93. package/dist/tools/reminders.js.map +1 -0
  94. package/dist/tools/search.d.ts +58 -0
  95. package/dist/tools/search.d.ts.map +1 -0
  96. package/dist/tools/search.js +373 -0
  97. package/dist/tools/search.js.map +1 -0
  98. package/dist/tools/spaces.d.ts +484 -0
  99. package/dist/tools/spaces.d.ts.map +1 -0
  100. package/dist/tools/spaces.js +870 -0
  101. package/dist/tools/spaces.js.map +1 -0
  102. package/dist/tools/tasks.d.ts +313 -0
  103. package/dist/tools/tasks.d.ts.map +1 -0
  104. package/dist/tools/tasks.js +690 -0
  105. package/dist/tools/tasks.js.map +1 -0
  106. package/dist/tools/themes.d.ts +91 -0
  107. package/dist/tools/themes.d.ts.map +1 -0
  108. package/dist/tools/themes.js +294 -0
  109. package/dist/tools/themes.js.map +1 -0
  110. package/dist/tools/ui.d.ts +89 -0
  111. package/dist/tools/ui.d.ts.map +1 -0
  112. package/dist/tools/ui.js +137 -0
  113. package/dist/tools/ui.js.map +1 -0
  114. package/dist/utils/applescript.d.ts +5 -0
  115. package/dist/utils/applescript.d.ts.map +1 -0
  116. package/dist/utils/applescript.js +27 -0
  117. package/dist/utils/applescript.js.map +1 -0
  118. package/dist/utils/confirmation-tokens.d.ts +19 -0
  119. package/dist/utils/confirmation-tokens.d.ts.map +1 -0
  120. package/dist/utils/confirmation-tokens.js +58 -0
  121. package/dist/utils/confirmation-tokens.js.map +1 -0
  122. package/dist/utils/date-filters.d.ts +15 -0
  123. package/dist/utils/date-filters.d.ts.map +1 -0
  124. package/dist/utils/date-filters.js +129 -0
  125. package/dist/utils/date-filters.js.map +1 -0
  126. package/dist/utils/date-utils.d.ts +113 -0
  127. package/dist/utils/date-utils.d.ts.map +1 -0
  128. package/dist/utils/date-utils.js +341 -0
  129. package/dist/utils/date-utils.js.map +1 -0
  130. package/dist/utils/folder-matcher.d.ts +14 -0
  131. package/dist/utils/folder-matcher.d.ts.map +1 -0
  132. package/dist/utils/folder-matcher.js +191 -0
  133. package/dist/utils/folder-matcher.js.map +1 -0
  134. package/dist/utils/version.d.ts +10 -0
  135. package/dist/utils/version.d.ts.map +1 -0
  136. package/dist/utils/version.js +88 -0
  137. package/dist/utils/version.js.map +1 -0
  138. package/docs/plugin-api/Calendar.md +448 -0
  139. package/docs/plugin-api/CalendarItem.md +198 -0
  140. package/docs/plugin-api/Clipboard.md +101 -0
  141. package/docs/plugin-api/CommandBar.md +251 -0
  142. package/docs/plugin-api/DataStore.md +700 -0
  143. package/docs/plugin-api/Editor.md +982 -0
  144. package/docs/plugin-api/HTMLView.md +337 -0
  145. package/docs/plugin-api/NoteObject.md +588 -0
  146. package/docs/plugin-api/NotePlan.md +398 -0
  147. package/docs/plugin-api/ParagraphObject.md +242 -0
  148. package/docs/plugin-api/RangeObject.md +56 -0
  149. package/docs/plugin-api/getting-started.md +545 -0
  150. package/docs/plugin-api/plugin-api-condensed.md +526 -0
  151. package/docs/plugin-api/plugin.json +26 -0
  152. package/docs/plugin-api/script.js +542 -0
  153. package/package.json +60 -0
  154. package/scripts/calendar-helper +0 -0
  155. package/scripts/reminders-helper +0 -0
@@ -0,0 +1,605 @@
1
+ // SQLite reader for space notes
2
+ import Database from 'better-sqlite3';
3
+ import * as path from 'path';
4
+ import * as os from 'os';
5
+ import * as fs from 'fs';
6
+ import { SQLITE_NOTE_TYPES } from './types.js';
7
+ import { extractTitle, extractTagsFromContent } from './markdown-parser.js';
8
+ // Possible NotePlan storage paths (same as file-reader.ts)
9
+ const POSSIBLE_PATHS = [
10
+ // Direct local paths (AppStore version) - preferred for local dev
11
+ path.join(os.homedir(), 'Library/Containers/co.noteplan.NotePlan3/Data/Library/Application Support/co.noteplan.NotePlan3'),
12
+ // Direct local paths (Setapp version)
13
+ path.join(os.homedir(), 'Library/Containers/co.noteplan.NotePlan-setapp/Data/Library/Application Support/co.noteplan.NotePlan-setapp'),
14
+ // Today app iCloud
15
+ path.join(os.homedir(), 'Library/Mobile Documents/iCloud~co~noteplan~Today/Documents'),
16
+ // NotePlan 3 iCloud
17
+ path.join(os.homedir(), 'Library/Mobile Documents/iCloud~co~noteplan~NotePlan3/Documents'),
18
+ // NotePlan iCloud
19
+ path.join(os.homedir(), 'Library/Mobile Documents/iCloud~co~noteplan~NotePlan/Documents'),
20
+ // NotePlan Setapp iCloud
21
+ path.join(os.homedir(), 'Library/Mobile Documents/iCloud~co~noteplan~NotePlan-setapp/Documents'),
22
+ ];
23
+ let db = null;
24
+ let dbChecked = false;
25
+ let cachedDbPath = null;
26
+ const SPACE_TRASH_FOLDER_TITLE = '@Trash';
27
+ /**
28
+ * Find the spaces database path
29
+ */
30
+ function findDatabasePath() {
31
+ for (const basePath of POSSIBLE_PATHS) {
32
+ const dbPath = path.join(basePath, 'Caches', 'teamspace.db');
33
+ if (fs.existsSync(dbPath)) {
34
+ return dbPath;
35
+ }
36
+ }
37
+ return null;
38
+ }
39
+ /**
40
+ * Get or create the database connection
41
+ */
42
+ export function getDatabase() {
43
+ if (db)
44
+ return db;
45
+ if (dbChecked)
46
+ return null; // Already checked, no DB available
47
+ dbChecked = true;
48
+ cachedDbPath = findDatabasePath();
49
+ if (!cachedDbPath) {
50
+ // Only log once in stderr for MCP compatibility
51
+ console.error('Note: Spaces database not found (spaces unavailable)');
52
+ return null;
53
+ }
54
+ try {
55
+ // Try read-write first (needed for sqlite-writer operations)
56
+ db = new Database(cachedDbPath, { readonly: false });
57
+ return db;
58
+ }
59
+ catch (error) {
60
+ // If read-write fails (e.g., database locked), try read-only
61
+ try {
62
+ console.error('Note: Opening spaces database in read-only mode');
63
+ db = new Database(cachedDbPath, { readonly: true });
64
+ return db;
65
+ }
66
+ catch (readOnlyError) {
67
+ console.error('Failed to open spaces database:', readOnlyError);
68
+ return null;
69
+ }
70
+ }
71
+ }
72
+ /**
73
+ * Get resolved teamspace database path (if available)
74
+ */
75
+ export function getDatabasePath() {
76
+ if (cachedDbPath)
77
+ return cachedDbPath;
78
+ cachedDbPath = findDatabasePath();
79
+ return cachedDbPath;
80
+ }
81
+ /**
82
+ * Close the database connection
83
+ */
84
+ export function closeDatabase() {
85
+ if (db) {
86
+ db.close();
87
+ db = null;
88
+ }
89
+ }
90
+ /**
91
+ * List all spaces
92
+ */
93
+ export function listSpaces() {
94
+ const database = getDatabase();
95
+ if (!database)
96
+ return [];
97
+ try {
98
+ // Spaces are stored as note_type = 10 with is_dir = 1
99
+ const rows = database
100
+ .prepare(`
101
+ SELECT
102
+ id,
103
+ title,
104
+ (SELECT COUNT(*) FROM notes n2 WHERE n2.parent = notes.id AND n2.note_type IN (?, ?)) as note_count
105
+ FROM notes
106
+ WHERE note_type = ?
107
+ AND is_dir = 1
108
+ `)
109
+ .all(SQLITE_NOTE_TYPES.TEAMSPACE_NOTE, SQLITE_NOTE_TYPES.TEAMSPACE_CALENDAR, SQLITE_NOTE_TYPES.TEAMSPACE);
110
+ return rows.map((row) => ({
111
+ id: row.id,
112
+ name: row.title || row.id,
113
+ noteCount: row.note_count,
114
+ }));
115
+ }
116
+ catch (error) {
117
+ console.error('Error listing spaces:', error);
118
+ return [];
119
+ }
120
+ }
121
+ /**
122
+ * Get all descendant IDs of a space (folders and notes)
123
+ * Uses recursive CTE to traverse parent hierarchy
124
+ */
125
+ function getSpaceDescendantIds(database, spaceId) {
126
+ try {
127
+ const rows = database.prepare(`
128
+ WITH RECURSIVE space_tree AS (
129
+ -- Base case: direct children of the space
130
+ SELECT id FROM notes WHERE parent = ?
131
+ UNION ALL
132
+ -- Recursive: children of folders in the tree
133
+ SELECT n.id FROM notes n
134
+ INNER JOIN space_tree st ON n.parent = st.id
135
+ )
136
+ SELECT id FROM space_tree
137
+ `).all(spaceId);
138
+ return rows.map(r => r.id);
139
+ }
140
+ catch (error) {
141
+ console.error('Error getting space descendants:', error);
142
+ return [];
143
+ }
144
+ }
145
+ /**
146
+ * Count notes and subfolders under a space folder (recursive)
147
+ */
148
+ export function countSpaceFolderContents(folderId) {
149
+ const database = getDatabase();
150
+ if (!database)
151
+ return { noteCount: 0, folderCount: 0 };
152
+ try {
153
+ const row = database.prepare(`
154
+ WITH RECURSIVE subtree AS (
155
+ SELECT id, is_dir FROM notes WHERE parent = ?
156
+ UNION ALL
157
+ SELECT n.id, n.is_dir FROM notes n
158
+ INNER JOIN subtree s ON n.parent = s.id
159
+ )
160
+ SELECT
161
+ COUNT(CASE WHEN is_dir = 0 THEN 1 END) AS noteCount,
162
+ COUNT(CASE WHEN is_dir = 1 THEN 1 END) AS folderCount
163
+ FROM subtree
164
+ `).get(folderId);
165
+ return row ?? { noteCount: 0, folderCount: 0 };
166
+ }
167
+ catch {
168
+ return { noteCount: 0, folderCount: 0 };
169
+ }
170
+ }
171
+ function getDescendantIdsForRoots(database, rootIds) {
172
+ if (rootIds.length === 0)
173
+ return [];
174
+ try {
175
+ const placeholders = rootIds.map(() => '?').join(',');
176
+ const rows = database
177
+ .prepare(`
178
+ WITH RECURSIVE subtree AS (
179
+ SELECT id FROM notes WHERE id IN (${placeholders})
180
+ UNION ALL
181
+ SELECT n.id FROM notes n
182
+ INNER JOIN subtree s ON n.parent = s.id
183
+ )
184
+ SELECT id FROM subtree
185
+ `)
186
+ .all(...rootIds);
187
+ return rows.map((row) => row.id);
188
+ }
189
+ catch (error) {
190
+ console.error('Error getting descendants from roots:', error);
191
+ return [];
192
+ }
193
+ }
194
+ function getTrashDescendantIds(database, spaceId) {
195
+ try {
196
+ let trashFolderRows = database
197
+ .prepare(`
198
+ SELECT id
199
+ FROM notes
200
+ WHERE is_dir = 1
201
+ AND lower(title) = lower(?)
202
+ `)
203
+ .all(SPACE_TRASH_FOLDER_TITLE);
204
+ if (spaceId) {
205
+ const spaceDescendantIds = new Set(getSpaceDescendantIds(database, spaceId));
206
+ trashFolderRows = trashFolderRows.filter((row) => spaceDescendantIds.has(row.id));
207
+ }
208
+ const trashFolderIds = trashFolderRows.map((row) => row.id);
209
+ if (trashFolderIds.length === 0)
210
+ return new Set();
211
+ return new Set(getDescendantIdsForRoots(database, trashFolderIds));
212
+ }
213
+ catch (error) {
214
+ console.error('Error getting trash descendants:', error);
215
+ return new Set();
216
+ }
217
+ }
218
+ function filterRowsByTrash(database, rows, spaceId, includeTrash = false) {
219
+ if (includeTrash)
220
+ return rows;
221
+ const trashDescendants = getTrashDescendantIds(database, spaceId);
222
+ if (trashDescendants.size === 0)
223
+ return rows;
224
+ return rows.filter((row) => !trashDescendants.has(row.id));
225
+ }
226
+ function normalizeListSpaceOptions(spaceIdOrOptions) {
227
+ if (typeof spaceIdOrOptions === 'string') {
228
+ return { spaceId: spaceIdOrOptions, includeTrash: false };
229
+ }
230
+ return {
231
+ spaceId: spaceIdOrOptions?.spaceId,
232
+ includeTrash: spaceIdOrOptions?.includeTrash === true,
233
+ };
234
+ }
235
+ /**
236
+ * Find the root space ID by traversing parent chain
237
+ */
238
+ function findRootSpaceId(database, noteId) {
239
+ try {
240
+ const row = database.prepare(`
241
+ WITH RECURSIVE parent_chain AS (
242
+ SELECT id, parent, note_type FROM notes WHERE id = ?
243
+ UNION ALL
244
+ SELECT n.id, n.parent, n.note_type FROM notes n
245
+ INNER JOIN parent_chain pc ON n.id = pc.parent
246
+ )
247
+ SELECT id FROM parent_chain WHERE note_type = ?
248
+ `).get(noteId, SQLITE_NOTE_TYPES.TEAMSPACE);
249
+ return row?.id;
250
+ }
251
+ catch {
252
+ return undefined;
253
+ }
254
+ }
255
+ /**
256
+ * Convert SQLite row to Note object
257
+ */
258
+ function rowToNote(row, database) {
259
+ const spaceId = database ? findRootSpaceId(database, row.id) : undefined;
260
+ const isCalendar = row.note_type === SQLITE_NOTE_TYPES.TEAMSPACE_CALENDAR;
261
+ return {
262
+ id: row.id,
263
+ title: row.title || extractTitle(row.content || ''),
264
+ filename: row.filename,
265
+ content: row.content || '',
266
+ type: isCalendar ? 'calendar' : 'note',
267
+ source: 'space',
268
+ spaceId,
269
+ folder: row.parent || undefined,
270
+ modifiedAt: row.modified_at ? new Date(row.modified_at) : undefined,
271
+ createdAt: row.created_at ? new Date(row.created_at) : undefined,
272
+ };
273
+ }
274
+ /**
275
+ * List notes in a teamspace
276
+ */
277
+ export function listSpaceNotes(spaceIdOrOptions) {
278
+ const database = getDatabase();
279
+ if (!database)
280
+ return [];
281
+ const { spaceId, includeTrash } = normalizeListSpaceOptions(spaceIdOrOptions);
282
+ try {
283
+ let query = `
284
+ SELECT id, content, note_type, title, filename, parent, is_dir, created_at, modified_at
285
+ FROM notes
286
+ WHERE note_type IN (?, ?)
287
+ AND is_dir = 0
288
+ `;
289
+ const params = [
290
+ SQLITE_NOTE_TYPES.TEAMSPACE_NOTE,
291
+ SQLITE_NOTE_TYPES.TEAMSPACE_CALENDAR,
292
+ ];
293
+ if (spaceId) {
294
+ const descendantIds = getSpaceDescendantIds(database, spaceId);
295
+ if (descendantIds.length === 0)
296
+ return [];
297
+ const placeholders = descendantIds.map(() => '?').join(',');
298
+ query += ` AND id IN (${placeholders})`;
299
+ params.push(...descendantIds);
300
+ }
301
+ const rows = database.prepare(query).all(...params);
302
+ const filteredRows = filterRowsByTrash(database, rows, spaceId, includeTrash);
303
+ return filteredRows.map(row => rowToNote(row, database));
304
+ }
305
+ catch (error) {
306
+ console.error('Error listing teamspace notes:', error);
307
+ return [];
308
+ }
309
+ }
310
+ /**
311
+ * Get a specific teamspace note by ID or filename
312
+ */
313
+ export function getSpaceNote(identifier) {
314
+ const database = getDatabase();
315
+ if (!database)
316
+ return null;
317
+ try {
318
+ const row = database
319
+ .prepare(`
320
+ SELECT id, content, note_type, title, filename, parent, is_dir, created_at, modified_at
321
+ FROM notes
322
+ WHERE (id = ? OR filename = ?)
323
+ AND is_dir = 0
324
+ `)
325
+ .get(identifier, identifier);
326
+ return row ? rowToNote(row, database) : null;
327
+ }
328
+ catch (error) {
329
+ console.error('Error getting teamspace note:', error);
330
+ return null;
331
+ }
332
+ }
333
+ /**
334
+ * Get a teamspace note by title
335
+ */
336
+ export function getSpaceNoteByTitle(title, spaceId, includeTrash = false) {
337
+ const database = getDatabase();
338
+ if (!database)
339
+ return null;
340
+ try {
341
+ let query = `
342
+ SELECT id, content, note_type, title, filename, parent, is_dir, created_at, modified_at
343
+ FROM notes
344
+ WHERE title = ?
345
+ AND note_type IN (?, ?)
346
+ AND is_dir = 0
347
+ `;
348
+ const params = [
349
+ title,
350
+ SQLITE_NOTE_TYPES.TEAMSPACE_NOTE,
351
+ SQLITE_NOTE_TYPES.TEAMSPACE_CALENDAR,
352
+ ];
353
+ if (spaceId) {
354
+ const descendantIds = getSpaceDescendantIds(database, spaceId);
355
+ if (descendantIds.length === 0)
356
+ return null;
357
+ const placeholders = descendantIds.map(() => '?').join(',');
358
+ query += ` AND id IN (${placeholders})`;
359
+ params.push(...descendantIds);
360
+ }
361
+ const rows = database.prepare(query).all(...params);
362
+ const filteredRows = filterRowsByTrash(database, rows, spaceId, includeTrash);
363
+ const row = filteredRows[0];
364
+ return row ? rowToNote(row, database) : null;
365
+ }
366
+ catch (error) {
367
+ console.error('Error getting teamspace note by title:', error);
368
+ return null;
369
+ }
370
+ }
371
+ /**
372
+ * Search teamspace notes using LIKE pattern (fallback)
373
+ */
374
+ export function searchSpaceNotes(query, options = {}) {
375
+ const database = getDatabase();
376
+ if (!database)
377
+ return [];
378
+ const { spaceId, limit = 50, includeTrash = false } = options;
379
+ try {
380
+ let sql = `
381
+ SELECT id, content, note_type, title, filename, parent, is_dir, created_at, modified_at
382
+ FROM notes
383
+ WHERE (content LIKE ? OR title LIKE ?)
384
+ AND note_type IN (?, ?)
385
+ AND is_dir = 0
386
+ `;
387
+ const searchPattern = `%${query}%`;
388
+ const params = [
389
+ searchPattern,
390
+ searchPattern,
391
+ SQLITE_NOTE_TYPES.TEAMSPACE_NOTE,
392
+ SQLITE_NOTE_TYPES.TEAMSPACE_CALENDAR,
393
+ ];
394
+ if (spaceId) {
395
+ const descendantIds = getSpaceDescendantIds(database, spaceId);
396
+ if (descendantIds.length === 0)
397
+ return [];
398
+ const placeholders = descendantIds.map(() => '?').join(',');
399
+ sql += ` AND id IN (${placeholders})`;
400
+ params.push(...descendantIds);
401
+ }
402
+ sql += ` LIMIT ?`;
403
+ params.push(limit);
404
+ const rows = database.prepare(sql).all(...params);
405
+ const filteredRows = filterRowsByTrash(database, rows, spaceId, includeTrash);
406
+ return filteredRows.map(row => rowToNote(row, database));
407
+ }
408
+ catch (error) {
409
+ console.error('Error searching teamspace notes:', error);
410
+ return [];
411
+ }
412
+ }
413
+ /**
414
+ * Build search patterns from user input
415
+ * Handles OR patterns: "meeting|standup" -> ['meeting', 'standup']
416
+ */
417
+ function parseSearchPatterns(input) {
418
+ // Split by | for OR patterns
419
+ return input.split('|').map((p) => p.trim()).filter((p) => p.length > 0);
420
+ }
421
+ /**
422
+ * Search space notes using LIKE with OR pattern support
423
+ * This is the primary search method - we don't modify NotePlan's database
424
+ */
425
+ export function searchSpaceNotesFTS(query, options = {}) {
426
+ const database = getDatabase();
427
+ if (!database)
428
+ return [];
429
+ const { spaceId, limit = 50, includeTrash = false } = options;
430
+ // Parse OR patterns
431
+ const patterns = parseSearchPatterns(query);
432
+ if (patterns.length === 0)
433
+ return [];
434
+ try {
435
+ // Build OR conditions for multiple patterns
436
+ const orConditions = patterns
437
+ .map(() => '(content LIKE ? OR title LIKE ?)')
438
+ .join(' OR ');
439
+ let sql = `
440
+ SELECT id, content, note_type, title, filename, parent, is_dir, created_at, modified_at
441
+ FROM notes
442
+ WHERE (${orConditions})
443
+ AND note_type IN (?, ?)
444
+ AND is_dir = 0
445
+ `;
446
+ // Build params: each pattern needs two placeholders (content, title)
447
+ const params = [];
448
+ for (const pattern of patterns) {
449
+ const searchPattern = `%${pattern}%`;
450
+ params.push(searchPattern, searchPattern);
451
+ }
452
+ params.push(SQLITE_NOTE_TYPES.TEAMSPACE_NOTE, SQLITE_NOTE_TYPES.TEAMSPACE_CALENDAR);
453
+ if (spaceId) {
454
+ const descendantIds = getSpaceDescendantIds(database, spaceId);
455
+ if (descendantIds.length === 0)
456
+ return [];
457
+ const placeholders = descendantIds.map(() => '?').join(',');
458
+ sql += ` AND id IN (${placeholders})`;
459
+ params.push(...descendantIds);
460
+ }
461
+ // Order by modified_at (most recent first) for relevance
462
+ sql += ` ORDER BY modified_at DESC LIMIT ?`;
463
+ params.push(limit);
464
+ const rows = database.prepare(sql).all(...params);
465
+ const filteredRows = filterRowsByTrash(database, rows, spaceId, includeTrash);
466
+ return filteredRows.map((row) => rowToNote(row, database));
467
+ }
468
+ catch (error) {
469
+ console.error('Error searching space notes:', error);
470
+ return [];
471
+ }
472
+ }
473
+ /**
474
+ * List folders in teamspace
475
+ */
476
+ export function listSpaceFolders(spaceIdOrOptions) {
477
+ const database = getDatabase();
478
+ if (!database)
479
+ return [];
480
+ const { spaceId, includeTrash } = normalizeListSpaceOptions(spaceIdOrOptions);
481
+ try {
482
+ let query = `
483
+ SELECT id, title, filename, parent
484
+ FROM notes
485
+ WHERE is_dir = 1
486
+ `;
487
+ const params = [];
488
+ if (spaceId) {
489
+ const descendantIds = getSpaceDescendantIds(database, spaceId);
490
+ if (descendantIds.length === 0)
491
+ return [];
492
+ const placeholders = descendantIds.map(() => '?').join(',');
493
+ query += ` AND id IN (${placeholders})`;
494
+ params.push(...descendantIds);
495
+ }
496
+ let rows = database.prepare(query).all(...params);
497
+ if (!includeTrash) {
498
+ rows = rows.filter((row) => row.title?.toLowerCase() !== SPACE_TRASH_FOLDER_TITLE.toLowerCase());
499
+ }
500
+ return rows.map((row) => ({
501
+ id: row.id,
502
+ path: row.filename,
503
+ name: row.title || row.id,
504
+ source: 'space',
505
+ spaceId: findRootSpaceId(database, row.id),
506
+ }));
507
+ }
508
+ catch (error) {
509
+ console.error('Error listing teamspace folders:', error);
510
+ return [];
511
+ }
512
+ }
513
+ export function resolveSpaceFolder(spaceId, identifier, options = {}) {
514
+ const query = identifier.trim();
515
+ if (!query)
516
+ return null;
517
+ const lowerQuery = query.toLowerCase();
518
+ const folders = listSpaceFolders({ spaceId, includeTrash: options.includeTrash === true });
519
+ const exactById = folders.find((folder) => folder.id === query);
520
+ if (exactById)
521
+ return exactById;
522
+ const exactByPath = folders.find((folder) => folder.path.toLowerCase() === lowerQuery);
523
+ if (exactByPath)
524
+ return exactByPath;
525
+ const exactByName = folders.filter((folder) => folder.name.toLowerCase() === lowerQuery);
526
+ if (exactByName.length === 1) {
527
+ return exactByName[0];
528
+ }
529
+ return null;
530
+ }
531
+ export function isSpaceNoteInTrash(identifier) {
532
+ const database = getDatabase();
533
+ if (!database)
534
+ return false;
535
+ try {
536
+ const row = database
537
+ .prepare(`
538
+ WITH RECURSIVE parent_chain AS (
539
+ SELECT id, parent, is_dir, title
540
+ FROM notes
541
+ WHERE (id = ? OR filename = ?)
542
+ AND is_dir = 0
543
+ UNION ALL
544
+ SELECT n.id, n.parent, n.is_dir, n.title
545
+ FROM notes n
546
+ INNER JOIN parent_chain pc ON n.id = pc.parent
547
+ )
548
+ SELECT id
549
+ FROM parent_chain
550
+ WHERE is_dir = 1
551
+ AND lower(title) = lower(?)
552
+ LIMIT 1
553
+ `)
554
+ .get(identifier, identifier, SPACE_TRASH_FOLDER_TITLE);
555
+ return Boolean(row?.id);
556
+ }
557
+ catch (error) {
558
+ console.error('Error checking TeamSpace trash status:', error);
559
+ return false;
560
+ }
561
+ }
562
+ /**
563
+ * Extract all unique tags from teamspace notes
564
+ */
565
+ export function extractSpaceTags(spaceId) {
566
+ const notes = listSpaceNotes(spaceId);
567
+ const tags = new Set();
568
+ for (const note of notes) {
569
+ for (const tag of extractTagsFromContent(note.content)) {
570
+ tags.add(tag);
571
+ }
572
+ }
573
+ return Array.from(tags).sort();
574
+ }
575
+ /**
576
+ * Get calendar note from teamspace by date
577
+ */
578
+ export function getSpaceCalendarNote(dateStr, spaceId) {
579
+ const database = getDatabase();
580
+ if (!database)
581
+ return null;
582
+ try {
583
+ // Get descendants first
584
+ const descendantIds = getSpaceDescendantIds(database, spaceId);
585
+ if (descendantIds.length === 0)
586
+ return null;
587
+ const placeholders = descendantIds.map(() => '?').join(',');
588
+ const row = database
589
+ .prepare(`
590
+ SELECT id, content, note_type, title, filename, parent, is_dir, created_at, modified_at
591
+ FROM notes
592
+ WHERE note_type = ?
593
+ AND id IN (${placeholders})
594
+ AND filename LIKE ?
595
+ AND is_dir = 0
596
+ `)
597
+ .get(SQLITE_NOTE_TYPES.TEAMSPACE_CALENDAR, ...descendantIds, `%${dateStr}%`);
598
+ return row ? rowToNote(row, database) : null;
599
+ }
600
+ catch (error) {
601
+ console.error('Error getting teamspace calendar note:', error);
602
+ return null;
603
+ }
604
+ }
605
+ //# sourceMappingURL=sqlite-reader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sqlite-reader.js","sourceRoot":"","sources":["../../src/noteplan/sqlite-reader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,63 @@
1
+ export interface SpaceMoveResult {
2
+ noteId: string;
3
+ previousParent: string | null;
4
+ destinationParentId: string;
5
+ }
6
+ export interface SpaceTrashResult extends SpaceMoveResult {
7
+ spaceId: string;
8
+ trashFolderId: string;
9
+ }
10
+ export interface SpaceRenameResult {
11
+ folderId: string;
12
+ previousTitle: string;
13
+ title: string;
14
+ }
15
+ /**
16
+ * Create a new note in a space
17
+ */
18
+ export declare function createSpaceNote(spaceId: string, title: string, content?: string, parent?: string): string;
19
+ /**
20
+ * Create a calendar note in a space
21
+ */
22
+ export declare function createSpaceCalendarNote(spaceId: string, dateStr: string, content?: string): string;
23
+ /**
24
+ * Update a space note's content
25
+ */
26
+ export declare function updateSpaceNote(identifier: string, content: string): void;
27
+ /**
28
+ * Update a space note's title
29
+ */
30
+ export declare function updateSpaceNoteTitle(identifier: string, title: string): void;
31
+ /**
32
+ * Move a space note to another folder in the same space
33
+ */
34
+ export declare function moveSpaceNote(identifier: string, destinationParentId: string): SpaceMoveResult;
35
+ /**
36
+ * Delete a space note by moving it into the space @Trash folder
37
+ */
38
+ export declare function deleteSpaceNote(identifier: string): SpaceTrashResult;
39
+ /**
40
+ * Restore a space note from @Trash
41
+ */
42
+ export declare function restoreSpaceNote(identifier: string, destinationParentId?: string): SpaceMoveResult;
43
+ /**
44
+ * Create a folder in a space
45
+ */
46
+ export declare function createSpaceFolder(spaceId: string, name: string, parent?: string): string;
47
+ /**
48
+ * Move a space folder to another folder in the same space
49
+ */
50
+ export declare function moveSpaceFolder(identifier: string, destinationParentId: string): SpaceMoveResult;
51
+ /**
52
+ * Delete a space folder by moving it into the space @Trash folder
53
+ */
54
+ export declare function deleteSpaceFolder(identifier: string): SpaceTrashResult;
55
+ /**
56
+ * Rename a space folder in place
57
+ */
58
+ export declare function renameSpaceFolder(identifier: string, title: string): SpaceRenameResult;
59
+ /**
60
+ * Get the default space ID (first one found)
61
+ */
62
+ export declare function getDefaultSpaceId(): string | null;
63
+ //# sourceMappingURL=sqlite-writer.d.ts.map