@noteplanco/noteplan-mcp 1.1.7 → 1.1.9

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 (79) hide show
  1. package/dist/noteplan/embeddings.d.ts +8 -0
  2. package/dist/noteplan/embeddings.d.ts.map +1 -1
  3. package/dist/noteplan/embeddings.js +3 -3
  4. package/dist/noteplan/embeddings.js.map +1 -1
  5. package/dist/noteplan/file-reader.d.ts +6 -0
  6. package/dist/noteplan/file-reader.d.ts.map +1 -1
  7. package/dist/noteplan/file-reader.js +15 -0
  8. package/dist/noteplan/file-reader.js.map +1 -1
  9. package/dist/noteplan/file-writer.d.ts.map +1 -1
  10. package/dist/noteplan/file-writer.js +13 -1
  11. package/dist/noteplan/file-writer.js.map +1 -1
  12. package/dist/noteplan/file-writer.test.js +4 -0
  13. package/dist/noteplan/file-writer.test.js.map +1 -1
  14. package/dist/noteplan/frontmatter-parser.d.ts +4 -4
  15. package/dist/noteplan/frontmatter-parser.d.ts.map +1 -1
  16. package/dist/noteplan/frontmatter-parser.js +11 -14
  17. package/dist/noteplan/frontmatter-parser.js.map +1 -1
  18. package/dist/noteplan/frontmatter-parser.test.js +92 -0
  19. package/dist/noteplan/frontmatter-parser.test.js.map +1 -1
  20. package/dist/noteplan/markdown-parser.d.ts.map +1 -1
  21. package/dist/noteplan/markdown-parser.js +4 -2
  22. package/dist/noteplan/markdown-parser.js.map +1 -1
  23. package/dist/noteplan/markdown-parser.test.js +129 -0
  24. package/dist/noteplan/markdown-parser.test.js.map +1 -1
  25. package/dist/noteplan/sqlite-loader.d.ts +11 -2
  26. package/dist/noteplan/sqlite-loader.d.ts.map +1 -1
  27. package/dist/noteplan/sqlite-loader.js +143 -15
  28. package/dist/noteplan/sqlite-loader.js.map +1 -1
  29. package/dist/noteplan/sqlite-writer.d.ts.map +1 -1
  30. package/dist/noteplan/sqlite-writer.js +3 -0
  31. package/dist/noteplan/sqlite-writer.js.map +1 -1
  32. package/dist/noteplan/template-docs.d.ts +35 -0
  33. package/dist/noteplan/template-docs.d.ts.map +1 -0
  34. package/dist/noteplan/template-docs.js +184 -0
  35. package/dist/noteplan/template-docs.js.map +1 -0
  36. package/dist/noteplan/unified-store.d.ts +2 -0
  37. package/dist/noteplan/unified-store.d.ts.map +1 -1
  38. package/dist/noteplan/unified-store.js +30 -7
  39. package/dist/noteplan/unified-store.js.map +1 -1
  40. package/dist/server.d.ts.map +1 -1
  41. package/dist/server.js +307 -65
  42. package/dist/server.js.map +1 -1
  43. package/dist/tools/calendar.d.ts +2 -2
  44. package/dist/tools/events.d.ts +16 -16
  45. package/dist/tools/events.d.ts.map +1 -1
  46. package/dist/tools/events.js +17 -2
  47. package/dist/tools/events.js.map +1 -1
  48. package/dist/tools/notes.d.ts +327 -45
  49. package/dist/tools/notes.d.ts.map +1 -1
  50. package/dist/tools/notes.js +391 -51
  51. package/dist/tools/notes.js.map +1 -1
  52. package/dist/tools/notes.test.js +959 -1
  53. package/dist/tools/notes.test.js.map +1 -1
  54. package/dist/tools/plugins.d.ts.map +1 -1
  55. package/dist/tools/plugins.js +1 -0
  56. package/dist/tools/plugins.js.map +1 -1
  57. package/dist/tools/search.d.ts +2 -2
  58. package/dist/tools/search.d.ts.map +1 -1
  59. package/dist/tools/search.js +32 -4
  60. package/dist/tools/search.js.map +1 -1
  61. package/dist/tools/tasks.d.ts +86 -10
  62. package/dist/tools/tasks.d.ts.map +1 -1
  63. package/dist/tools/tasks.js +84 -25
  64. package/dist/tools/tasks.js.map +1 -1
  65. package/dist/tools/templates.d.ts +64 -3
  66. package/dist/tools/templates.d.ts.map +1 -1
  67. package/dist/tools/templates.js +73 -1
  68. package/dist/tools/templates.js.map +1 -1
  69. package/dist/tools/ui-automation.d.ts +74 -0
  70. package/dist/tools/ui-automation.d.ts.map +1 -0
  71. package/dist/tools/ui-automation.js +209 -0
  72. package/dist/tools/ui-automation.js.map +1 -0
  73. package/dist/utils/version.d.ts +1 -0
  74. package/dist/utils/version.d.ts.map +1 -1
  75. package/dist/utils/version.js +89 -27
  76. package/dist/utils/version.js.map +1 -1
  77. package/docs/templates.db.gz +0 -0
  78. package/docs/x-callback-url.md +318 -0
  79. package/package.json +1 -1
@@ -3,14 +3,19 @@ import { z } from 'zod';
3
3
  import * as store from '../noteplan/unified-store.js';
4
4
  import { runAppleScript, escapeAppleScript, APP_NAME } from '../utils/applescript.js';
5
5
  import { getNotePlanVersion, MIN_BUILD_RENDER_TEMPLATE } from '../utils/version.js';
6
+ import { tryEmbedQuery, searchTemplateDocs, textSearchTemplateDocs, getDocChunk } from '../noteplan/template-docs.js';
6
7
  export const templatesSchema = z.object({
7
- action: z.enum(['list', 'render']).describe('Action to perform'),
8
+ action: z.enum(['list', 'render', 'search_docs', 'get_doc']).describe('Action to perform'),
8
9
  templateTitle: z.string().optional().describe('Template title — used by render (loads a saved template by title)'),
9
10
  content: z.string().optional().describe('Raw template content string — used by render (renders arbitrary template code for debugging)'),
10
11
  folder: z.string().optional().describe('Template subfolder — used by list (default: @Templates)'),
11
12
  limit: z.number().min(1).max(200).optional().default(50).describe('Maximum results — used by list'),
12
13
  offset: z.number().min(0).optional().default(0).describe('Pagination offset — used by list'),
13
14
  cursor: z.string().optional().describe('Cursor from previous page — used by list'),
15
+ query: z.string().optional().describe('Search query — used by search_docs'),
16
+ includeContent: z.boolean().optional().describe('Include full chunk text in results — used by search_docs'),
17
+ noteTitle: z.string().optional().describe('Doc note title — used by get_doc (from search_docs results)'),
18
+ chunkIndex: z.number().optional().describe('Chunk index — used by get_doc (from search_docs results, default 0)'),
14
19
  });
15
20
  // ── Frontmatter helpers ──
16
21
  function extractFrontmatter(content) {
@@ -62,6 +67,7 @@ export function listTemplates(params) {
62
67
  const nextCursor = hasMore ? String(offset + page.length) : null;
63
68
  return {
64
69
  success: true,
70
+ tip: 'Before writing or editing templates, use action "search_docs" with a query to search the built-in documentation for syntax, helpers, DataStore API, and examples.',
65
71
  count: page.length,
66
72
  totalCount: notes.length,
67
73
  offset,
@@ -115,6 +121,7 @@ export function renderTemplate(params) {
115
121
  if (parsed.success === true) {
116
122
  return {
117
123
  success: true,
124
+ tip: 'Use action "search_docs" with a query to search the built-in documentation for template syntax, helpers, DataStore API, and examples.',
118
125
  renderedContent: parsed.rendered ?? raw,
119
126
  source: content ? 'raw_content' : 'saved_template',
120
127
  templateTitle: templateTitle || undefined,
@@ -142,4 +149,69 @@ export function renderTemplate(params) {
142
149
  };
143
150
  }
144
151
  }
152
+ // ── Get full doc chunk ──
153
+ export function getDoc(params) {
154
+ const noteTitle = params.noteTitle?.trim();
155
+ if (!noteTitle) {
156
+ return { success: false, error: 'noteTitle is required for get_doc' };
157
+ }
158
+ const chunkIndex = params.chunkIndex ?? 0;
159
+ const chunk = getDocChunk(noteTitle, chunkIndex);
160
+ if (!chunk) {
161
+ return {
162
+ success: false,
163
+ error: `No doc chunk found for noteTitle="${noteTitle}" chunkIndex=${chunkIndex}`,
164
+ };
165
+ }
166
+ return {
167
+ success: true,
168
+ noteTitle: chunk.noteTitle,
169
+ chunkIndex: chunk.chunkIndex,
170
+ totalChunks: chunk.totalChunks,
171
+ content: chunk.content,
172
+ };
173
+ }
174
+ // ── Search template docs ──
175
+ export async function searchDocs(params) {
176
+ const query = params.query?.trim();
177
+ if (!query) {
178
+ return {
179
+ success: false,
180
+ error: 'query is required for search_docs',
181
+ };
182
+ }
183
+ const searchOptions = {
184
+ limit: params.limit ?? 5,
185
+ includeContent: params.includeContent,
186
+ };
187
+ try {
188
+ const embedResult = await tryEmbedQuery(query);
189
+ if (embedResult.ok) {
190
+ // Semantic search using embeddings
191
+ const matches = searchTemplateDocs(embedResult.vector, searchOptions);
192
+ return {
193
+ success: true,
194
+ query,
195
+ count: matches.length,
196
+ embeddingSource: embedResult.source,
197
+ matches,
198
+ };
199
+ }
200
+ // No embedding source available — fall back to text search
201
+ const matches = textSearchTemplateDocs(query, searchOptions);
202
+ return {
203
+ success: true,
204
+ query,
205
+ count: matches.length,
206
+ embeddingSource: 'text',
207
+ matches,
208
+ };
209
+ }
210
+ catch (error) {
211
+ return {
212
+ success: false,
213
+ error: error instanceof Error ? error.message : 'Template doc search failed',
214
+ };
215
+ }
216
+ }
145
217
  //# sourceMappingURL=templates.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"templates.js","sourceRoot":"","sources":["../../src/tools/templates.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"templates.js","sourceRoot":"","sources":["../../src/tools/templates.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,74 @@
1
+ import { z } from 'zod';
2
+ export declare const screenshotSchema: z.ZodObject<{}, "strip", z.ZodTypeAny, {}, {}>;
3
+ export declare const clickSchema: z.ZodObject<{
4
+ x: z.ZodNumber;
5
+ y: z.ZodNumber;
6
+ doubleClick: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
7
+ rightClick: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
8
+ }, "strip", z.ZodTypeAny, {
9
+ x: number;
10
+ y: number;
11
+ doubleClick: boolean;
12
+ rightClick: boolean;
13
+ }, {
14
+ x: number;
15
+ y: number;
16
+ doubleClick?: boolean | undefined;
17
+ rightClick?: boolean | undefined;
18
+ }>;
19
+ export declare const clickAndScreenshotSchema: z.ZodObject<{
20
+ x: z.ZodNumber;
21
+ y: z.ZodNumber;
22
+ doubleClick: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
23
+ rightClick: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
24
+ }, "strip", z.ZodTypeAny, {
25
+ x: number;
26
+ y: number;
27
+ doubleClick: boolean;
28
+ rightClick: boolean;
29
+ }, {
30
+ x: number;
31
+ y: number;
32
+ doubleClick?: boolean | undefined;
33
+ rightClick?: boolean | undefined;
34
+ }>;
35
+ export declare const typeTextSchema: z.ZodObject<{
36
+ text: z.ZodString;
37
+ }, "strip", z.ZodTypeAny, {
38
+ text: string;
39
+ }, {
40
+ text: string;
41
+ }>;
42
+ export declare const scrollSchema: z.ZodObject<{
43
+ x: z.ZodNumber;
44
+ y: z.ZodNumber;
45
+ deltaX: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
46
+ deltaY: z.ZodNumber;
47
+ }, "strip", z.ZodTypeAny, {
48
+ x: number;
49
+ y: number;
50
+ deltaX: number;
51
+ deltaY: number;
52
+ }, {
53
+ x: number;
54
+ y: number;
55
+ deltaY: number;
56
+ deltaX?: number | undefined;
57
+ }>;
58
+ export declare const keyPressSchema: z.ZodObject<{
59
+ key: z.ZodString;
60
+ modifiers: z.ZodOptional<z.ZodString>;
61
+ }, "strip", z.ZodTypeAny, {
62
+ key: string;
63
+ modifiers?: string | undefined;
64
+ }, {
65
+ key: string;
66
+ modifiers?: string | undefined;
67
+ }>;
68
+ export declare function screenshot(_args: z.infer<typeof screenshotSchema>): Record<string, unknown>;
69
+ export declare function click(args: z.infer<typeof clickSchema>): Record<string, unknown>;
70
+ export declare function clickAndScreenshot(args: z.infer<typeof clickAndScreenshotSchema>): Record<string, unknown>;
71
+ export declare function typeText(args: z.infer<typeof typeTextSchema>): Record<string, unknown>;
72
+ export declare function scroll(args: z.infer<typeof scrollSchema>): Record<string, unknown>;
73
+ export declare function keyPress(args: z.infer<typeof keyPressSchema>): Record<string, unknown>;
74
+ //# sourceMappingURL=ui-automation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ui-automation.d.ts","sourceRoot":"","sources":["../../src/tools/ui-automation.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAMxB,eAAO,MAAM,gBAAgB,gDAAe,CAAC;AAE7C,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;EAKtB,CAAC;AAEH,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;EAKnC,CAAC;AAEH,eAAO,MAAM,cAAc;;;;;;EAEzB,CAAC;AAEH,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;EAKvB,CAAC;AAEH,eAAO,MAAM,cAAc;;;;;;;;;EAGzB,CAAC;AA6CH,wBAAgB,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAQ3F;AAED,wBAAgB,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAmChF;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAkB1G;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAsBtF;AAED,wBAAgB,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CA2BlF;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CA2BtF"}
@@ -0,0 +1,209 @@
1
+ // UI automation tools for visual interaction with the NotePlan window
2
+ // Enables AI agents to take screenshots, click, type, scroll, and press keys
3
+ import { z } from 'zod';
4
+ import * as fs from 'fs';
5
+ import { escapeAppleScript, runAppleScript, APP_NAME } from '../utils/applescript.js';
6
+ // --- Schemas ---
7
+ export const screenshotSchema = z.object({});
8
+ export const clickSchema = z.object({
9
+ x: z.number().describe('X coordinate in points (relative to window content area)'),
10
+ y: z.number().describe('Y coordinate in points (relative to window content area, 0 = top)'),
11
+ doubleClick: z.boolean().optional().default(false).describe('Perform a double click'),
12
+ rightClick: z.boolean().optional().default(false).describe('Perform a right click (context menu)'),
13
+ });
14
+ export const clickAndScreenshotSchema = z.object({
15
+ x: z.number().describe('X coordinate in points (relative to window content area)'),
16
+ y: z.number().describe('Y coordinate in points (relative to window content area, 0 = top)'),
17
+ doubleClick: z.boolean().optional().default(false).describe('Perform a double click'),
18
+ rightClick: z.boolean().optional().default(false).describe('Perform a right click (context menu)'),
19
+ });
20
+ export const typeTextSchema = z.object({
21
+ text: z.string().describe('Text to type into the currently focused element'),
22
+ });
23
+ export const scrollSchema = z.object({
24
+ x: z.number().describe('X coordinate in points where the scroll occurs'),
25
+ y: z.number().describe('Y coordinate in points where the scroll occurs (0 = top)'),
26
+ deltaX: z.number().optional().default(0).describe('Horizontal scroll amount in pixels (positive = right)'),
27
+ deltaY: z.number().describe('Vertical scroll amount in pixels (negative = scroll down, positive = scroll up)'),
28
+ });
29
+ export const keyPressSchema = z.object({
30
+ key: z.string().describe('Key name: return, tab, escape, delete, space, left, right, up, down, home, end, pageup, pagedown, f1-f12, a-z, 0-9, or punctuation characters'),
31
+ modifiers: z.string().optional().describe('Comma-separated modifiers: cmd, shift, opt, ctrl, fn'),
32
+ });
33
+ // --- Implementations ---
34
+ /** Parse a screenshot JSON response (with inline base64 or file path fallback) into an MCP image result. */
35
+ function parseScreenshotResponse(raw, errorContext) {
36
+ let parsed;
37
+ try {
38
+ parsed = JSON.parse(raw);
39
+ }
40
+ catch {
41
+ return { success: false, error: `Failed to parse ${errorContext} result from NotePlan` };
42
+ }
43
+ if (!parsed.success) {
44
+ return { success: false, error: parsed.error || `${errorContext} failed` };
45
+ }
46
+ // Prefer inline base64 (no file I/O) — fall back to file path for older builds
47
+ let base64Data;
48
+ if (parsed.imageBase64) {
49
+ base64Data = parsed.imageBase64;
50
+ }
51
+ else if (parsed.path) {
52
+ if (!fs.existsSync(parsed.path)) {
53
+ return { success: false, error: 'Screenshot file not found' };
54
+ }
55
+ base64Data = fs.readFileSync(parsed.path).toString('base64');
56
+ try {
57
+ fs.unlinkSync(parsed.path);
58
+ }
59
+ catch { /* ignore */ }
60
+ }
61
+ else {
62
+ return { success: false, error: 'No image data in response' };
63
+ }
64
+ const result = {
65
+ success: true,
66
+ width: parsed.width,
67
+ height: parsed.height,
68
+ scaleFactor: parsed.scaleFactor,
69
+ _imageData: base64Data,
70
+ _imageMimeType: 'image/jpeg',
71
+ };
72
+ if (parsed.debug) {
73
+ result.debug = parsed.debug;
74
+ }
75
+ return result;
76
+ }
77
+ export function screenshot(_args) {
78
+ let raw;
79
+ try {
80
+ raw = runAppleScript(`tell application "${APP_NAME}" to screenshotWindow`, 15_000);
81
+ }
82
+ catch (e) {
83
+ return { success: false, error: `Failed to capture screenshot: ${e.message}` };
84
+ }
85
+ return parseScreenshotResponse(raw, 'screenshot');
86
+ }
87
+ export function click(args) {
88
+ const { x, y, doubleClick, rightClick } = clickSchema.parse(args);
89
+ let params = ` at x ${x} at y ${y}`;
90
+ if (doubleClick) {
91
+ params += ' double click true';
92
+ }
93
+ if (rightClick) {
94
+ params += ' right click true';
95
+ }
96
+ let raw;
97
+ try {
98
+ raw = runAppleScript(`tell application "${APP_NAME}" to clickWindow${params}`);
99
+ }
100
+ catch (e) {
101
+ return { success: false, error: `Click failed: ${e.message}` };
102
+ }
103
+ const label = rightClick ? ' (right)' : doubleClick ? ' (double)' : '';
104
+ let parsed;
105
+ try {
106
+ parsed = JSON.parse(raw);
107
+ }
108
+ catch {
109
+ return { success: true, message: `Clicked at (${x}, ${y})${label}` };
110
+ }
111
+ if (!parsed.success) {
112
+ return { success: false, error: parsed.error || 'Click failed' };
113
+ }
114
+ const result = { success: true, message: `Clicked at (${x}, ${y})${label}` };
115
+ if (parsed.debug) {
116
+ result.debug = parsed.debug;
117
+ }
118
+ return result;
119
+ }
120
+ export function clickAndScreenshot(args) {
121
+ const { x, y, doubleClick, rightClick } = clickAndScreenshotSchema.parse(args);
122
+ let params = ` at x ${x} at y ${y}`;
123
+ if (doubleClick) {
124
+ params += ' double click true';
125
+ }
126
+ if (rightClick) {
127
+ params += ' right click true';
128
+ }
129
+ let raw;
130
+ try {
131
+ raw = runAppleScript(`tell application "${APP_NAME}" to clickAndScreenshot${params}`, 15_000);
132
+ }
133
+ catch (e) {
134
+ return { success: false, error: `Click and screenshot failed: ${e.message}` };
135
+ }
136
+ return parseScreenshotResponse(raw, 'click_and_screenshot');
137
+ }
138
+ export function typeText(args) {
139
+ const { text } = typeTextSchema.parse(args);
140
+ let raw;
141
+ try {
142
+ raw = runAppleScript(`tell application "${APP_NAME}" to typeInWindow with text "${escapeAppleScript(text)}"`);
143
+ }
144
+ catch (e) {
145
+ return { success: false, error: `Type failed: ${e.message}` };
146
+ }
147
+ let parsed;
148
+ try {
149
+ parsed = JSON.parse(raw);
150
+ }
151
+ catch {
152
+ return { success: true, message: `Typed ${text.length} characters` };
153
+ }
154
+ if (!parsed.success) {
155
+ return { success: false, error: parsed.error || 'Type failed' };
156
+ }
157
+ return { success: true, message: `Typed ${text.length} characters` };
158
+ }
159
+ export function scroll(args) {
160
+ const { x, y, deltaX, deltaY } = scrollSchema.parse(args);
161
+ let params = ` at x ${x} at y ${y} with deltaY ${deltaY}`;
162
+ if (deltaX !== 0) {
163
+ params += ` with deltaX ${deltaX}`;
164
+ }
165
+ let raw;
166
+ try {
167
+ raw = runAppleScript(`tell application "${APP_NAME}" to scrollWindow${params}`);
168
+ }
169
+ catch (e) {
170
+ return { success: false, error: `Scroll failed: ${e.message}` };
171
+ }
172
+ let parsed;
173
+ try {
174
+ parsed = JSON.parse(raw);
175
+ }
176
+ catch {
177
+ return { success: true, message: `Scrolled at (${x}, ${y}) deltaY=${deltaY}` };
178
+ }
179
+ if (!parsed.success) {
180
+ return { success: false, error: parsed.error || 'Scroll failed' };
181
+ }
182
+ return { success: true, message: `Scrolled at (${x}, ${y}) deltaY=${deltaY}${deltaX ? ` deltaX=${deltaX}` : ''}` };
183
+ }
184
+ export function keyPress(args) {
185
+ const { key, modifiers } = keyPressSchema.parse(args);
186
+ let params = ` with key "${escapeAppleScript(key)}"`;
187
+ if (modifiers) {
188
+ params += ` with modifiers "${escapeAppleScript(modifiers)}"`;
189
+ }
190
+ let raw;
191
+ try {
192
+ raw = runAppleScript(`tell application "${APP_NAME}" to keyPressWindow${params}`);
193
+ }
194
+ catch (e) {
195
+ return { success: false, error: `Key press failed: ${e.message}` };
196
+ }
197
+ let parsed;
198
+ try {
199
+ parsed = JSON.parse(raw);
200
+ }
201
+ catch {
202
+ return { success: true, message: `Pressed key "${key}"${modifiers ? ` with ${modifiers}` : ''}` };
203
+ }
204
+ if (!parsed.success) {
205
+ return { success: false, error: parsed.error || 'Key press failed' };
206
+ }
207
+ return { success: true, message: `Pressed key "${key}"${modifiers ? ` with ${modifiers}` : ''}` };
208
+ }
209
+ //# sourceMappingURL=ui-automation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ui-automation.js","sourceRoot":"","sources":["../../src/tools/ui-automation.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,7 @@ export interface NotePlanVersion {
5
5
  }
6
6
  export declare const MIN_BUILD_ADVANCED_FEATURES = 1300;
7
7
  export declare const MIN_BUILD_RENDER_TEMPLATE = 1400;
8
+ export declare const MIN_BUILD_EMBED_TEXT = 1490;
8
9
  export declare const MIN_BUILD_CREATE_BACKUP = 1492;
9
10
  export declare function getNotePlanVersion(forceRefresh?: boolean): NotePlanVersion;
10
11
  export declare function isAdvancedFeaturesAvailable(forceRefresh?: boolean): boolean;
@@ -1 +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;AAGhD,eAAO,MAAM,yBAAyB,OAAO,CAAC;AAG9C,eAAO,MAAM,uBAAuB,OAAO,CAAC;AAmE5C,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;AAID,wBAAgB,mBAAmB,IAAI,MAAM,CAU5C"}
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;AAGhD,eAAO,MAAM,yBAAyB,OAAO,CAAC;AAG9C,eAAO,MAAM,oBAAoB,OAAO,CAAC;AAGzC,eAAO,MAAM,uBAAuB,OAAO,CAAC;AA0H5C,wBAAgB,kBAAkB,CAAC,YAAY,UAAQ,GAAG,eAAe,CAgBxE;AAED,wBAAgB,2BAA2B,CAAC,YAAY,UAAQ,GAAG,OAAO,CAGzE;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEtD;AAID,wBAAgB,mBAAmB,IAAI,MAAM,CAU5C"}
@@ -6,50 +6,104 @@ import * as path from 'path';
6
6
  export const MIN_BUILD_ADVANCED_FEATURES = 1300;
7
7
  // Build that ships the renderTemplate AppleScript command
8
8
  export const MIN_BUILD_RENDER_TEMPLATE = 1400;
9
+ // Build that ships the embedText AppleScript command
10
+ export const MIN_BUILD_EMBED_TEXT = 1490;
9
11
  // Build that ships the createBackup AppleScript command
10
12
  export const MIN_BUILD_CREATE_BACKUP = 1492;
11
13
  const CACHE_TTL_MS = 60_000;
12
14
  let cachedVersion = null;
13
15
  let cachedAt = 0;
16
+ // AppleScript may resolve the app by CFBundleName or by .app filename depending on macOS version.
17
+ // MAS installs can use the store marketing name as the .app folder name, so we try multiple names.
18
+ const APPLESCRIPT_APP_NAMES = [
19
+ 'NotePlan',
20
+ 'NotePlan 3',
21
+ 'NotePlan Beta',
22
+ 'NotePlan - To-Do List & Notes',
23
+ ];
14
24
  function detectViaAppleScript() {
15
- try {
16
- // Check if NotePlan is running first to avoid launching it as a side effect
17
- const isRunning = execFileSync('osascript', ['-e', 'application "NotePlan" is running'], {
18
- encoding: 'utf-8',
19
- stdio: ['pipe', 'pipe', 'pipe'],
20
- timeout: 3_000,
21
- }).trim();
22
- if (isRunning !== 'true')
23
- return null;
24
- const raw = execFileSync('osascript', ['-e', 'tell application "NotePlan" to getVersion'], {
25
- encoding: 'utf-8',
26
- stdio: ['pipe', 'pipe', 'pipe'],
27
- timeout: 5_000,
28
- }).trim();
29
- const parsed = JSON.parse(raw);
30
- if (typeof parsed.version === 'string' && typeof parsed.build === 'number') {
31
- return { version: parsed.version, build: parsed.build, source: 'applescript' };
25
+ for (const appName of APPLESCRIPT_APP_NAMES) {
26
+ try {
27
+ const isRunning = execFileSync('osascript', ['-e', `application "${appName}" is running`], {
28
+ encoding: 'utf-8',
29
+ stdio: ['pipe', 'pipe', 'pipe'],
30
+ timeout: 3_000,
31
+ }).trim();
32
+ if (isRunning !== 'true') {
33
+ console.error(`[noteplan-mcp] AppleScript: "${appName}" not running, skipping`);
34
+ continue;
35
+ }
36
+ console.error(`[noteplan-mcp] AppleScript: "${appName}" is running, querying version...`);
37
+ const raw = execFileSync('osascript', ['-e', `tell application "${appName}" to getVersion`], {
38
+ encoding: 'utf-8',
39
+ stdio: ['pipe', 'pipe', 'pipe'],
40
+ timeout: 5_000,
41
+ }).trim();
42
+ const parsed = JSON.parse(raw);
43
+ if (typeof parsed.version === 'string' && typeof parsed.build === 'number') {
44
+ console.error(`[noteplan-mcp] AppleScript: detected "${appName}" v${parsed.version} build ${parsed.build}`);
45
+ return { version: parsed.version, build: parsed.build, source: 'applescript' };
46
+ }
47
+ }
48
+ catch (err) {
49
+ const msg = err instanceof Error ? err.message : String(err);
50
+ console.error(`[noteplan-mcp] AppleScript detection failed for "${appName}": ${msg}`);
51
+ if (msg.includes('not allowed') || msg.includes('permission') || msg.includes('1743') || msg.includes('assistive')) {
52
+ console.error('[noteplan-mcp] Hint: The parent app (e.g. Claude Desktop, Terminal) may need Automation permission for NotePlan. Check System Settings > Privacy & Security > Automation.');
53
+ return null; // Permission issue — no point trying other names
54
+ }
32
55
  }
33
56
  }
34
- catch {
35
- // App not running or command not available
36
- }
57
+ console.error('[noteplan-mcp] AppleScript: NotePlan not found running under any known name.');
37
58
  return null;
38
59
  }
39
60
  const KNOWN_APP_PATHS = [
40
61
  '/Applications/NotePlan 3.app',
41
62
  '/Applications/NotePlan.app',
63
+ '/Applications/NotePlan Beta.app',
64
+ '/Applications/NotePlan - To-Do List & Notes.app',
42
65
  path.join(process.env.HOME ?? '', 'Applications/NotePlan 3.app'),
43
66
  path.join(process.env.HOME ?? '', 'Applications/NotePlan.app'),
67
+ path.join(process.env.HOME ?? '', 'Applications/NotePlan Beta.app'),
68
+ path.join(process.env.HOME ?? '', 'Applications/NotePlan - To-Do List & Notes.app'),
44
69
  // Setapp
45
70
  '/Applications/Setapp/NotePlan 3.app',
46
71
  '/Applications/Setapp/NotePlan.app',
47
72
  ];
48
73
  function detectViaPlist() {
49
- for (const appPath of KNOWN_APP_PATHS) {
74
+ console.error(`[noteplan-mcp] Plist: scanning ${KNOWN_APP_PATHS.length} known app paths...`);
75
+ // First try hardcoded known paths
76
+ const result = readVersionFromAppPath(KNOWN_APP_PATHS);
77
+ if (result)
78
+ return result;
79
+ // Fallback: use mdfind (Spotlight) to locate the app bundle dynamically
80
+ console.error(`[noteplan-mcp] Plist: app not found at known paths, trying mdfind...`);
81
+ try {
82
+ const mdfindResult = execFileSync('mdfind', ['kMDItemCFBundleIdentifier == "co.noteplan.NotePlan3" || kMDItemCFBundleIdentifier == "co.noteplan.NotePlan-setapp" || kMDItemCFBundleIdentifier == "co.noteplan.NotePlan"'], {
83
+ encoding: 'utf-8',
84
+ stdio: ['pipe', 'pipe', 'pipe'],
85
+ timeout: 5_000,
86
+ }).trim();
87
+ if (mdfindResult) {
88
+ const discoveredPaths = mdfindResult.split('\n').filter(Boolean);
89
+ console.error(`[noteplan-mcp] mdfind discovered: ${discoveredPaths.join(', ')}`);
90
+ const found = readVersionFromAppPath(discoveredPaths);
91
+ if (found)
92
+ return found;
93
+ }
94
+ }
95
+ catch (err) {
96
+ console.error(`[noteplan-mcp] mdfind fallback failed: ${err instanceof Error ? err.message : String(err)}`);
97
+ }
98
+ return null;
99
+ }
100
+ function readVersionFromAppPath(appPaths) {
101
+ for (const appPath of appPaths) {
50
102
  const plistPath = path.join(appPath, 'Contents/Info.plist');
51
- if (!fs.existsSync(plistPath))
103
+ if (!fs.existsSync(plistPath)) {
104
+ console.error(`[noteplan-mcp] Plist: no Info.plist at ${appPath}`);
52
105
  continue;
106
+ }
53
107
  try {
54
108
  const version = execFileSync('defaults', ['read', path.join(appPath, 'Contents/Info'), 'CFBundleShortVersionString'], {
55
109
  encoding: 'utf-8',
@@ -63,11 +117,12 @@ function detectViaPlist() {
63
117
  }).trim();
64
118
  const build = parseInt(buildStr, 10) || 0;
65
119
  if (version) {
120
+ console.error(`[noteplan-mcp] Plist: found v${version} build ${build} at ${appPath}`);
66
121
  return { version, build, source: 'plist' };
67
122
  }
68
123
  }
69
- catch {
70
- // plist read failed for this path, try next
124
+ catch (err) {
125
+ console.error(`[noteplan-mcp] Plist read failed for ${appPath}: ${err instanceof Error ? err.message : String(err)}`);
71
126
  }
72
127
  }
73
128
  return null;
@@ -75,12 +130,19 @@ function detectViaPlist() {
75
130
  export function getNotePlanVersion(forceRefresh = false) {
76
131
  const now = Date.now();
77
132
  if (!forceRefresh && cachedVersion && (now - cachedAt) < CACHE_TTL_MS) {
133
+ console.error(`[noteplan-mcp] Version: serving from cache (v${cachedVersion.version} build ${cachedVersion.build})`);
78
134
  return cachedVersion;
79
135
  }
80
- const version = detectViaAppleScript() ?? detectViaPlist() ?? { version: '0.0.0', build: 0, source: 'unknown' };
81
- cachedVersion = version;
136
+ const version = detectViaAppleScript() ?? detectViaPlist() ?? null;
137
+ if (!version) {
138
+ console.error('[noteplan-mcp] Version: both AppleScript and Plist detection failed, falling back to 0.0.0');
139
+ cachedVersion = { version: '0.0.0', build: 0, source: 'unknown' };
140
+ }
141
+ else {
142
+ cachedVersion = version;
143
+ }
82
144
  cachedAt = now;
83
- return version;
145
+ return cachedVersion;
84
146
  }
85
147
  export function isAdvancedFeaturesAvailable(forceRefresh = false) {
86
148
  const { build } = getNotePlanVersion(forceRefresh);
@@ -1 +1 @@
1
- {"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/utils/version.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/utils/version.ts"],"names":[],"mappings":"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"}
Binary file