@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,341 @@
1
+ // Date utilities for NotePlan filename conversions
2
+ import { getFirstDayOfWeekCached } from '../noteplan/preferences.js';
3
+ /**
4
+ * Get the start of the week for a given date, respecting NotePlan's firstDayOfWeek setting
5
+ * @param date The reference date
6
+ * @param firstDayOfWeek 0 = Sunday, 1 = Monday, ..., 6 = Saturday
7
+ */
8
+ function getStartOfWeekDate(date, firstDayOfWeek) {
9
+ const day = date.getDay();
10
+ const daysToSubtract = (day - firstDayOfWeek + 7) % 7;
11
+ const weekStart = new Date(date);
12
+ weekStart.setDate(date.getDate() - daysToSubtract);
13
+ weekStart.setHours(0, 0, 0, 0);
14
+ return weekStart;
15
+ }
16
+ /**
17
+ * Get today's date in YYYYMMDD format
18
+ */
19
+ export function getTodayDateString() {
20
+ const now = new Date();
21
+ return formatDateString(now);
22
+ }
23
+ /**
24
+ * Format a Date object to YYYYMMDD string
25
+ */
26
+ export function formatDateString(date) {
27
+ const year = date.getFullYear();
28
+ const month = String(date.getMonth() + 1).padStart(2, '0');
29
+ const day = String(date.getDate()).padStart(2, '0');
30
+ return `${year}${month}${day}`;
31
+ }
32
+ /**
33
+ * Parse YYYYMMDD string to Date object
34
+ */
35
+ export function parseDateString(dateStr) {
36
+ const match = dateStr.match(/^(\d{4})(\d{2})(\d{2})$/);
37
+ if (!match)
38
+ return null;
39
+ const [, year, month, day] = match;
40
+ return new Date(parseInt(year), parseInt(month) - 1, parseInt(day));
41
+ }
42
+ /**
43
+ * Get the calendar note filename for a date
44
+ * Returns path like Calendar/2024/20240115.md
45
+ */
46
+ export function getCalendarNotePath(dateStr) {
47
+ const year = dateStr.substring(0, 4);
48
+ return `Calendar/${year}/${dateStr}.md`;
49
+ }
50
+ /**
51
+ * Get the weekly note filename for a date
52
+ * Returns path like Calendar/2024/2024-W03.md
53
+ */
54
+ export function getWeeklyNotePath(date) {
55
+ const year = date.getFullYear();
56
+ const week = getWeekNumber(date);
57
+ const weekStr = String(week).padStart(2, '0');
58
+ return `Calendar/${year}/${year}-W${weekStr}.md`;
59
+ }
60
+ /**
61
+ * Get ISO week number for a date
62
+ */
63
+ export function getWeekNumber(date) {
64
+ const d = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate()));
65
+ const dayNum = d.getUTCDay() || 7;
66
+ d.setUTCDate(d.getUTCDate() + 4 - dayNum);
67
+ const yearStart = new Date(Date.UTC(d.getUTCFullYear(), 0, 1));
68
+ return Math.ceil((((d.getTime() - yearStart.getTime()) / 86400000) + 1) / 7);
69
+ }
70
+ /**
71
+ * Get ISO week year for a date (can differ from calendar year at year boundaries)
72
+ * For example: Dec 30, 2024 is in Week 1 of 2025
73
+ */
74
+ export function getISOWeekYear(date) {
75
+ const d = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate()));
76
+ const dayNum = d.getUTCDay() || 7;
77
+ d.setUTCDate(d.getUTCDate() + 4 - dayNum);
78
+ return d.getUTCFullYear();
79
+ }
80
+ /**
81
+ * Get both ISO week number and year
82
+ */
83
+ export function getISOWeek(date) {
84
+ return {
85
+ week: getWeekNumber(date),
86
+ year: getISOWeekYear(date),
87
+ };
88
+ }
89
+ /**
90
+ * Get week number respecting a custom first day of week
91
+ * @param date The date to get the week for
92
+ * @param firstDayOfWeek 0 = Sunday, 1 = Monday, ..., 6 = Saturday
93
+ * @returns Week number and year
94
+ *
95
+ * Week 1 is defined as the week containing January 1
96
+ */
97
+ export function getWeekWithFirstDay(date, firstDayOfWeek) {
98
+ // Find the start of the week containing the given date
99
+ const day = date.getDay();
100
+ const daysToSubtract = (day - firstDayOfWeek + 7) % 7;
101
+ const weekStart = new Date(date);
102
+ weekStart.setDate(date.getDate() - daysToSubtract);
103
+ weekStart.setHours(0, 0, 0, 0);
104
+ // Determine which year this week belongs to
105
+ // A week belongs to the year that contains the majority of its days
106
+ // For simplicity, we use the year of the week's Thursday (or mid-week)
107
+ const midWeek = new Date(weekStart);
108
+ midWeek.setDate(weekStart.getDate() + 3); // Thursday of the week
109
+ const weekYear = midWeek.getFullYear();
110
+ // Find the start of week 1 of that year
111
+ // Week 1 is the week containing January 1
112
+ const jan1 = new Date(weekYear, 0, 1);
113
+ const jan1Day = jan1.getDay();
114
+ const daysToWeekStart = (jan1Day - firstDayOfWeek + 7) % 7;
115
+ const week1Start = new Date(jan1);
116
+ week1Start.setDate(jan1.getDate() - daysToWeekStart);
117
+ week1Start.setHours(0, 0, 0, 0);
118
+ // Calculate the week number
119
+ const msPerWeek = 7 * 24 * 60 * 60 * 1000;
120
+ const weeksDiff = Math.floor((weekStart.getTime() - week1Start.getTime()) / msPerWeek);
121
+ const weekNum = weeksDiff + 1;
122
+ // Handle edge case: if week number is 0 or negative, it's the last week of the previous year
123
+ if (weekNum <= 0) {
124
+ // Recalculate for previous year
125
+ const prevYearDec31 = new Date(weekYear - 1, 11, 31);
126
+ return getWeekWithFirstDay(prevYearDec31, firstDayOfWeek);
127
+ }
128
+ // Handle edge case: check if this might be week 1 of next year
129
+ // (if the week mostly falls in the next year)
130
+ const nextJan1 = new Date(weekYear + 1, 0, 1);
131
+ if (weekStart.getTime() >= nextJan1.getTime() - 3 * 24 * 60 * 60 * 1000) {
132
+ // This week might belong to next year - check if Jan 1 is in this week
133
+ const nextJan1Day = nextJan1.getDay();
134
+ const daysToNextWeekStart = (nextJan1Day - firstDayOfWeek + 7) % 7;
135
+ const nextWeek1Start = new Date(nextJan1);
136
+ nextWeek1Start.setDate(nextJan1.getDate() - daysToNextWeekStart);
137
+ if (weekStart.getTime() === nextWeek1Start.getTime()) {
138
+ return { week: 1, year: weekYear + 1 };
139
+ }
140
+ }
141
+ return { week: weekNum, year: weekYear };
142
+ }
143
+ /**
144
+ * Get week number and year respecting NotePlan's firstDayOfWeek preference
145
+ */
146
+ export function getWeekRespectingPreference(date) {
147
+ const firstDayOfWeek = getFirstDayOfWeekCached();
148
+ return getWeekWithFirstDay(date, firstDayOfWeek);
149
+ }
150
+ /**
151
+ * Parse a date input string that could be:
152
+ * - YYYYMMDD
153
+ * - YYYY-MM-DD
154
+ * - today
155
+ * - tomorrow
156
+ * - yesterday
157
+ */
158
+ export function parseFlexibleDate(input) {
159
+ const lower = input.toLowerCase().trim();
160
+ const now = new Date();
161
+ if (lower === 'today') {
162
+ return formatDateString(now);
163
+ }
164
+ if (lower === 'tomorrow') {
165
+ const tomorrow = new Date(now);
166
+ tomorrow.setDate(tomorrow.getDate() + 1);
167
+ return formatDateString(tomorrow);
168
+ }
169
+ if (lower === 'yesterday') {
170
+ const yesterday = new Date(now);
171
+ yesterday.setDate(yesterday.getDate() - 1);
172
+ return formatDateString(yesterday);
173
+ }
174
+ // YYYY-MM-DD format
175
+ const isoMatch = input.match(/^(\d{4})-(\d{2})-(\d{2})$/);
176
+ if (isoMatch) {
177
+ return `${isoMatch[1]}${isoMatch[2]}${isoMatch[3]}`;
178
+ }
179
+ // Already YYYYMMDD format
180
+ if (/^\d{8}$/.test(input)) {
181
+ return input;
182
+ }
183
+ // Default to input as-is
184
+ return input;
185
+ }
186
+ /**
187
+ * Format a date string for display
188
+ */
189
+ export function formatDateForDisplay(dateStr) {
190
+ const date = parseDateString(dateStr);
191
+ if (!date)
192
+ return dateStr;
193
+ return date.toLocaleDateString('en-US', {
194
+ weekday: 'long',
195
+ year: 'numeric',
196
+ month: 'long',
197
+ day: 'numeric',
198
+ });
199
+ }
200
+ /**
201
+ * Check if a filename is a calendar note
202
+ */
203
+ export function isCalendarNoteFilename(filename) {
204
+ // Match patterns like 20240115.txt, 20240115.md, 2024-W03.txt, 2024-W03.md
205
+ return /^\d{8}\.\w+$/.test(filename) || /^\d{4}-W\d{2}\.\w+$/.test(filename);
206
+ }
207
+ /**
208
+ * Extract date from calendar note filename
209
+ */
210
+ export function extractDateFromFilename(filename) {
211
+ // Match YYYYMMDD with any extension
212
+ const dailyMatch = filename.match(/(\d{8})\.\w+$/);
213
+ if (dailyMatch)
214
+ return dailyMatch[1];
215
+ // Match YYYY-Www (weekly) with any extension
216
+ const weeklyMatch = filename.match(/(\d{4}-W\d{2})\.\w+$/);
217
+ if (weeklyMatch)
218
+ return weeklyMatch[1];
219
+ // Match YYYY-MM (monthly) with any extension
220
+ const monthlyMatch = filename.match(/(\d{4}-\d{2})\.\w+$/);
221
+ if (monthlyMatch)
222
+ return monthlyMatch[1];
223
+ // Match YYYY-Qq (quarterly) with any extension
224
+ const quarterlyMatch = filename.match(/(\d{4}-Q[1-4])\.\w+$/);
225
+ if (quarterlyMatch)
226
+ return quarterlyMatch[1];
227
+ // Match YYYY (yearly) with any extension
228
+ const yearlyMatch = filename.match(/(\d{4})\.\w+$/);
229
+ if (yearlyMatch)
230
+ return yearlyMatch[1];
231
+ return null;
232
+ }
233
+ /**
234
+ * Get the type of calendar note from its filename
235
+ */
236
+ export function getCalendarNoteType(filename) {
237
+ if (/\d{8}\.\w+$/.test(filename))
238
+ return 'daily';
239
+ if (/\d{4}-W\d{2}\.\w+$/.test(filename))
240
+ return 'weekly';
241
+ if (/\d{4}-\d{2}\.\w+$/.test(filename))
242
+ return 'monthly';
243
+ if (/\d{4}-Q[1-4]\.\w+$/.test(filename))
244
+ return 'quarterly';
245
+ if (/\d{4}\.\w+$/.test(filename))
246
+ return 'yearly';
247
+ return null;
248
+ }
249
+ /**
250
+ * Get the monthly note filename for a date
251
+ * Returns path like Calendar/2024/2024-01.md
252
+ */
253
+ export function getMonthlyNotePath(date, hasYearSubfolders = true) {
254
+ const year = date.getFullYear();
255
+ const month = String(date.getMonth() + 1).padStart(2, '0');
256
+ const filename = `${year}-${month}.md`;
257
+ return hasYearSubfolders ? `Calendar/${year}/${filename}` : `Calendar/${filename}`;
258
+ }
259
+ /**
260
+ * Get the quarterly note filename for a date
261
+ * Returns path like Calendar/2024/2024-Q1.md
262
+ */
263
+ export function getQuarterlyNotePath(date, hasYearSubfolders = true) {
264
+ const year = date.getFullYear();
265
+ const quarter = Math.floor(date.getMonth() / 3) + 1;
266
+ const filename = `${year}-Q${quarter}.md`;
267
+ return hasYearSubfolders ? `Calendar/${year}/${filename}` : `Calendar/${filename}`;
268
+ }
269
+ /**
270
+ * Get the yearly note filename for a date
271
+ * Returns path like Calendar/2024/2024.md
272
+ */
273
+ export function getYearlyNotePath(date, hasYearSubfolders = true) {
274
+ const year = date.getFullYear();
275
+ const filename = `${year}.md`;
276
+ return hasYearSubfolders ? `Calendar/${year}/${filename}` : `Calendar/${filename}`;
277
+ }
278
+ /**
279
+ * Get a date range for a period
280
+ */
281
+ export function getDateRange(period, customStart, customEnd) {
282
+ const now = new Date();
283
+ now.setHours(0, 0, 0, 0);
284
+ switch (period) {
285
+ case 'today':
286
+ return { start: now, end: now };
287
+ case 'yesterday': {
288
+ const yesterday = new Date(now);
289
+ yesterday.setDate(yesterday.getDate() - 1);
290
+ return { start: yesterday, end: yesterday };
291
+ }
292
+ case 'this-week': {
293
+ const firstDayOfWeek = getFirstDayOfWeekCached();
294
+ const start = getStartOfWeekDate(now, firstDayOfWeek);
295
+ const end = new Date(start);
296
+ end.setDate(end.getDate() + 6);
297
+ return { start, end };
298
+ }
299
+ case 'last-week': {
300
+ const firstDayOfWeek = getFirstDayOfWeekCached();
301
+ const thisWeekStart = getStartOfWeekDate(now, firstDayOfWeek);
302
+ const start = new Date(thisWeekStart);
303
+ start.setDate(start.getDate() - 7);
304
+ const end = new Date(start);
305
+ end.setDate(end.getDate() + 6);
306
+ return { start, end };
307
+ }
308
+ case 'this-month': {
309
+ const start = new Date(now.getFullYear(), now.getMonth(), 1);
310
+ const end = new Date(now.getFullYear(), now.getMonth() + 1, 0);
311
+ return { start, end };
312
+ }
313
+ case 'last-month': {
314
+ const start = new Date(now.getFullYear(), now.getMonth() - 1, 1);
315
+ const end = new Date(now.getFullYear(), now.getMonth(), 0);
316
+ return { start, end };
317
+ }
318
+ default:
319
+ // Custom range
320
+ if (customStart && customEnd) {
321
+ return {
322
+ start: new Date(customStart),
323
+ end: new Date(customEnd),
324
+ };
325
+ }
326
+ return { start: now, end: now };
327
+ }
328
+ }
329
+ /**
330
+ * Generate all dates in a range
331
+ */
332
+ export function getDatesInRange(start, end) {
333
+ const dates = [];
334
+ const current = new Date(start);
335
+ while (current <= end) {
336
+ dates.push(new Date(current));
337
+ current.setDate(current.getDate() + 1);
338
+ }
339
+ return dates;
340
+ }
341
+ //# sourceMappingURL=date-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"date-utils.js","sourceRoot":"","sources":["../../src/utils/date-utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import { Folder } from '../noteplan/types.js';
2
+ export interface FolderMatchResult {
3
+ matched: boolean;
4
+ folder: Folder | null;
5
+ score: number;
6
+ alternatives: Folder[];
7
+ ambiguous: boolean;
8
+ }
9
+ /**
10
+ * Match a user query against available folders
11
+ * Returns the best match with alternatives, flagging ambiguity
12
+ */
13
+ export declare function matchFolder(query: string, folders: Folder[]): FolderMatchResult;
14
+ //# sourceMappingURL=folder-matcher.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"folder-matcher.d.ts","sourceRoot":"","sources":["../../src/utils/folder-matcher.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAE9C,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,SAAS,EAAE,OAAO,CAAC;CACpB;AAuID;;;GAGG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,iBAAiB,CAiF/E"}
@@ -0,0 +1,191 @@
1
+ // Smart folder matching for user-friendly folder resolution
2
+ /**
3
+ * Strip common prefixes from folder names for matching
4
+ * Handles: numbered (10 - ), emoji (📥 ), special (@)
5
+ * Returns original name if stripping would result in empty string
6
+ */
7
+ function stripCommonPrefixes(name) {
8
+ let result = name;
9
+ // Strip numbered prefixes: "10 - ", "01. ", "1) ", "10-", "01.", etc.
10
+ result = result.replace(/^\d+[\s.\-_)]+\s*/, '');
11
+ // Strip emoji prefixes (one or more emojis followed by space)
12
+ result = result.replace(/^[\p{Emoji}\p{Emoji_Presentation}\p{Emoji_Modifier}\p{Emoji_Component}]+\s*/u, '');
13
+ // Strip special prefixes like @
14
+ result = result.replace(/^@/, '');
15
+ result = result.trim();
16
+ // Return original if stripping removed everything
17
+ return result || name;
18
+ }
19
+ /**
20
+ * Normalize a string for matching (lowercase, strip prefixes)
21
+ */
22
+ function normalizeForMatching(name) {
23
+ return stripCommonPrefixes(name).toLowerCase();
24
+ }
25
+ /**
26
+ * Calculate bigram similarity between two strings
27
+ * Returns a score between 0 and 1
28
+ */
29
+ function bigramSimilarity(a, b) {
30
+ if (a.length < 2 || b.length < 2) {
31
+ return a === b ? 1 : 0;
32
+ }
33
+ const getBigrams = (str) => {
34
+ const bigrams = new Set();
35
+ for (let i = 0; i < str.length - 1; i++) {
36
+ bigrams.add(str.slice(i, i + 2));
37
+ }
38
+ return bigrams;
39
+ };
40
+ const bigramsA = getBigrams(a);
41
+ const bigramsB = getBigrams(b);
42
+ let intersection = 0;
43
+ for (const bigram of bigramsA) {
44
+ if (bigramsB.has(bigram)) {
45
+ intersection++;
46
+ }
47
+ }
48
+ // Dice coefficient
49
+ return (2 * intersection) / (bigramsA.size + bigramsB.size);
50
+ }
51
+ /**
52
+ * Calculate depth penalty - prefer shallower folders
53
+ * Depth 1 = no penalty, each additional level reduces score
54
+ */
55
+ function getDepthPenalty(folderPath) {
56
+ const depth = folderPath.split('/').length;
57
+ // Depth 1: 1.0, Depth 2: 0.95, Depth 3: 0.90, Depth 4: 0.85, etc.
58
+ return Math.max(0.5, 1.0 - (depth - 1) * 0.05);
59
+ }
60
+ /**
61
+ * Score a folder against a query
62
+ * Returns a score between 0 and 1
63
+ */
64
+ function scoreFolder(query, folder) {
65
+ const queryLower = query.toLowerCase();
66
+ const nameLower = folder.name.toLowerCase();
67
+ const normalizedName = normalizeForMatching(folder.name);
68
+ // For nested folders, also check the last path segment
69
+ const pathSegments = folder.path.split('/');
70
+ const lastSegment = pathSegments[pathSegments.length - 1];
71
+ const lastSegmentLower = lastSegment.toLowerCase();
72
+ const normalizedLastSegment = normalizeForMatching(lastSegment);
73
+ // Also check the full path (with and without Notes/ prefix)
74
+ const pathLower = folder.path.toLowerCase();
75
+ const pathNormalized = pathLower.replace(/^notes\//, '');
76
+ const queryNormalized = queryLower.replace(/^notes\//, '');
77
+ let baseScore = 0;
78
+ // Exact match on full path (case-insensitive, with or without Notes/ prefix)
79
+ if (pathLower === queryLower || pathNormalized === queryNormalized
80
+ || pathLower === queryNormalized || pathNormalized === queryLower) {
81
+ baseScore = 1.0;
82
+ }
83
+ // Exact match on full name (case-insensitive)
84
+ else if (nameLower === queryLower || lastSegmentLower === queryLower) {
85
+ baseScore = 1.0;
86
+ }
87
+ // Exact match on normalized name
88
+ else if (normalizedName === queryLower || normalizedLastSegment === queryLower) {
89
+ baseScore = 0.95;
90
+ }
91
+ // Normalized name starts with query
92
+ else if (normalizedName.startsWith(queryLower) || normalizedLastSegment.startsWith(queryLower)) {
93
+ baseScore = 0.90;
94
+ }
95
+ // Query contained in normalized name
96
+ else if (normalizedName.includes(queryLower) || normalizedLastSegment.includes(queryLower)) {
97
+ baseScore = 0.85;
98
+ }
99
+ // Query contained in full name (with prefixes)
100
+ else if (nameLower.includes(queryLower) || lastSegmentLower.includes(queryLower)) {
101
+ baseScore = 0.80;
102
+ }
103
+ // Fuzzy match using bigram similarity
104
+ else {
105
+ const similarity = Math.max(bigramSimilarity(queryLower, normalizedName), bigramSimilarity(queryLower, normalizedLastSegment));
106
+ baseScore = similarity > 0.5 ? 0.70 + similarity * 0.10 : similarity * 0.50;
107
+ }
108
+ // Apply depth penalty - shallower folders score higher
109
+ const depthPenalty = getDepthPenalty(folder.path);
110
+ return baseScore * depthPenalty;
111
+ }
112
+ /**
113
+ * Match a user query against available folders
114
+ * Returns the best match with alternatives, flagging ambiguity
115
+ */
116
+ export function matchFolder(query, folders) {
117
+ if (!query || folders.length === 0) {
118
+ return {
119
+ matched: false,
120
+ folder: null,
121
+ score: 0,
122
+ alternatives: [],
123
+ ambiguous: false,
124
+ };
125
+ }
126
+ // When the query looks like a path (contains "/"), try exact path match first.
127
+ // This avoids fuzzy ambiguity when the caller already knows the full path.
128
+ if (query.includes('/')) {
129
+ const queryLower = query.toLowerCase();
130
+ // Strip optional "Notes/" prefix for comparison
131
+ const queryNormalized = queryLower.replace(/^notes\//, '');
132
+ const exactMatch = folders.find((f) => {
133
+ const pathLower = f.path.toLowerCase();
134
+ const pathNormalized = pathLower.replace(/^notes\//, '');
135
+ return pathLower === queryLower || pathNormalized === queryNormalized
136
+ || pathLower === queryNormalized || pathNormalized === queryLower;
137
+ });
138
+ if (exactMatch) {
139
+ return {
140
+ matched: true,
141
+ folder: exactMatch,
142
+ score: 1.0,
143
+ alternatives: [],
144
+ ambiguous: false,
145
+ };
146
+ }
147
+ }
148
+ // Short queries (1-2 chars) need higher threshold
149
+ const minThreshold = query.length <= 2 ? 0.9 : 0.7;
150
+ // Score all folders
151
+ const scored = folders
152
+ .map((folder) => ({
153
+ folder,
154
+ score: scoreFolder(query, folder),
155
+ }))
156
+ .filter((item) => item.score >= minThreshold)
157
+ .sort((a, b) => {
158
+ // Sort by score, then deprioritize special folders
159
+ if (Math.abs(a.score - b.score) > 0.01) {
160
+ return b.score - a.score;
161
+ }
162
+ // Deprioritize @Archive, @Trash
163
+ const aIsSpecial = a.folder.name.startsWith('@');
164
+ const bIsSpecial = b.folder.name.startsWith('@');
165
+ if (aIsSpecial !== bIsSpecial) {
166
+ return aIsSpecial ? 1 : -1;
167
+ }
168
+ return 0;
169
+ });
170
+ if (scored.length === 0) {
171
+ return {
172
+ matched: false,
173
+ folder: null,
174
+ score: 0,
175
+ alternatives: [],
176
+ ambiguous: false,
177
+ };
178
+ }
179
+ const best = scored[0];
180
+ const alternatives = scored.slice(1, 4).map((item) => item.folder);
181
+ // Check for ambiguity: multiple matches with similar scores (within 0.15)
182
+ const ambiguous = scored.length > 1 && (scored[1].score >= best.score - 0.15);
183
+ return {
184
+ matched: true,
185
+ folder: best.folder,
186
+ score: best.score,
187
+ alternatives,
188
+ ambiguous,
189
+ };
190
+ }
191
+ //# sourceMappingURL=folder-matcher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"folder-matcher.js","sourceRoot":"","sources":["../../src/utils/folder-matcher.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ export interface NotePlanVersion {
2
+ version: string;
3
+ build: number;
4
+ source: 'applescript' | 'plist' | 'unknown';
5
+ }
6
+ export declare const MIN_BUILD_ADVANCED_FEATURES = 1300;
7
+ export declare function getNotePlanVersion(forceRefresh?: boolean): NotePlanVersion;
8
+ export declare function isAdvancedFeaturesAvailable(forceRefresh?: boolean): boolean;
9
+ export declare function upgradeMessage(feature: string): string;
10
+ //# sourceMappingURL=version.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/utils/version.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,aAAa,GAAG,OAAO,GAAG,SAAS,CAAC;CAC7C;AAGD,eAAO,MAAM,2BAA2B,OAAO,CAAC;AAmEhD,wBAAgB,kBAAkB,CAAC,YAAY,UAAQ,GAAG,eAAe,CAUxE;AAED,wBAAgB,2BAA2B,CAAC,YAAY,UAAQ,GAAG,OAAO,CAGzE;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEtD"}