@noteplanco/noteplan-mcp 1.1.23 → 1.1.25

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 (165) hide show
  1. package/README.md +7 -0
  2. package/dist/index.js +6 -0
  3. package/dist/index.js.map +1 -1
  4. package/dist/noteplan/attachments-paths.d.ts +13 -0
  5. package/dist/noteplan/attachments-paths.d.ts.map +1 -0
  6. package/dist/noteplan/attachments-paths.js +27 -0
  7. package/dist/noteplan/attachments-paths.js.map +1 -0
  8. package/dist/noteplan/embeddings.js +1 -1
  9. package/dist/noteplan/embeddings.js.map +1 -1
  10. package/dist/noteplan/file-reader.d.ts +37 -46
  11. package/dist/noteplan/file-reader.d.ts.map +1 -1
  12. package/dist/noteplan/file-reader.js +200 -202
  13. package/dist/noteplan/file-reader.js.map +1 -1
  14. package/dist/noteplan/file-reader.test.d.ts +2 -0
  15. package/dist/noteplan/file-reader.test.d.ts.map +1 -0
  16. package/dist/noteplan/file-reader.test.js +67 -0
  17. package/dist/noteplan/file-reader.test.js.map +1 -0
  18. package/dist/noteplan/file-writer.d.ts +35 -31
  19. package/dist/noteplan/file-writer.d.ts.map +1 -1
  20. package/dist/noteplan/file-writer.js +280 -164
  21. package/dist/noteplan/file-writer.js.map +1 -1
  22. package/dist/noteplan/file-writer.test.js +704 -191
  23. package/dist/noteplan/file-writer.test.js.map +1 -1
  24. package/dist/noteplan/filter-store.d.ts +5 -5
  25. package/dist/noteplan/filter-store.d.ts.map +1 -1
  26. package/dist/noteplan/filter-store.js +94 -79
  27. package/dist/noteplan/filter-store.js.map +1 -1
  28. package/dist/noteplan/ripgrep-search.d.ts +25 -2
  29. package/dist/noteplan/ripgrep-search.d.ts.map +1 -1
  30. package/dist/noteplan/ripgrep-search.js +75 -2
  31. package/dist/noteplan/ripgrep-search.js.map +1 -1
  32. package/dist/noteplan/space-row-utils.d.ts +20 -0
  33. package/dist/noteplan/space-row-utils.d.ts.map +1 -0
  34. package/dist/noteplan/space-row-utils.js +78 -0
  35. package/dist/noteplan/space-row-utils.js.map +1 -0
  36. package/dist/noteplan/space-row-utils.test.d.ts +2 -0
  37. package/dist/noteplan/space-row-utils.test.d.ts.map +1 -0
  38. package/dist/noteplan/space-row-utils.test.js +123 -0
  39. package/dist/noteplan/space-row-utils.test.js.map +1 -0
  40. package/dist/noteplan/sqlite-reader.d.ts +12 -27
  41. package/dist/noteplan/sqlite-reader.d.ts.map +1 -1
  42. package/dist/noteplan/sqlite-reader.js +315 -221
  43. package/dist/noteplan/sqlite-reader.js.map +1 -1
  44. package/dist/noteplan/sqlite-writer.d.ts +1 -1
  45. package/dist/noteplan/sqlite-writer.d.ts.map +1 -1
  46. package/dist/noteplan/sqlite-writer.js +2 -2
  47. package/dist/noteplan/sqlite-writer.js.map +1 -1
  48. package/dist/noteplan/unified-store.d.ts +41 -30
  49. package/dist/noteplan/unified-store.d.ts.map +1 -1
  50. package/dist/noteplan/unified-store.js +257 -159
  51. package/dist/noteplan/unified-store.js.map +1 -1
  52. package/dist/server.d.ts.map +1 -1
  53. package/dist/server.js +142 -61
  54. package/dist/server.js.map +1 -1
  55. package/dist/tools/attachments.d.ts +9 -9
  56. package/dist/tools/attachments.d.ts.map +1 -1
  57. package/dist/tools/attachments.js +74 -83
  58. package/dist/tools/attachments.js.map +1 -1
  59. package/dist/tools/attachments.test.js +170 -129
  60. package/dist/tools/attachments.test.js.map +1 -1
  61. package/dist/tools/calendar.d.ts +16 -13
  62. package/dist/tools/calendar.d.ts.map +1 -1
  63. package/dist/tools/calendar.js +17 -16
  64. package/dist/tools/calendar.js.map +1 -1
  65. package/dist/tools/embeddings.d.ts +6 -6
  66. package/dist/tools/embeddings.d.ts.map +1 -1
  67. package/dist/tools/embeddings.js +6 -6
  68. package/dist/tools/embeddings.js.map +1 -1
  69. package/dist/tools/events.d.ts +7 -3
  70. package/dist/tools/events.d.ts.map +1 -1
  71. package/dist/tools/events.js +51 -16
  72. package/dist/tools/events.js.map +1 -1
  73. package/dist/tools/filters.d.ts +28 -33
  74. package/dist/tools/filters.d.ts.map +1 -1
  75. package/dist/tools/filters.js +42 -105
  76. package/dist/tools/filters.js.map +1 -1
  77. package/dist/tools/notes.d.ts +80 -218
  78. package/dist/tools/notes.d.ts.map +1 -1
  79. package/dist/tools/notes.js +180 -177
  80. package/dist/tools/notes.js.map +1 -1
  81. package/dist/tools/notes.test.js +242 -21
  82. package/dist/tools/notes.test.js.map +1 -1
  83. package/dist/tools/search.d.ts +4 -3
  84. package/dist/tools/search.d.ts.map +1 -1
  85. package/dist/tools/search.js +9 -5
  86. package/dist/tools/search.js.map +1 -1
  87. package/dist/tools/search.test.d.ts +2 -0
  88. package/dist/tools/search.test.d.ts.map +1 -0
  89. package/dist/tools/search.test.js +37 -0
  90. package/dist/tools/search.test.js.map +1 -0
  91. package/dist/tools/spaces.d.ts +20 -20
  92. package/dist/tools/spaces.d.ts.map +1 -1
  93. package/dist/tools/spaces.js +28 -28
  94. package/dist/tools/spaces.js.map +1 -1
  95. package/dist/tools/tasks.d.ts +22 -22
  96. package/dist/tools/tasks.d.ts.map +1 -1
  97. package/dist/tools/tasks.js +22 -22
  98. package/dist/tools/tasks.js.map +1 -1
  99. package/dist/tools/templates.d.ts +7 -7
  100. package/dist/tools/templates.d.ts.map +1 -1
  101. package/dist/tools/templates.js +4 -4
  102. package/dist/tools/templates.js.map +1 -1
  103. package/dist/tools/themes.d.ts.map +1 -1
  104. package/dist/tools/themes.js +26 -35
  105. package/dist/tools/themes.js.map +1 -1
  106. package/dist/transport/bridge-availability.d.ts +5 -0
  107. package/dist/transport/bridge-availability.d.ts.map +1 -0
  108. package/dist/transport/bridge-availability.js +92 -0
  109. package/dist/transport/bridge-availability.js.map +1 -0
  110. package/dist/transport/bridge-cascade.d.ts +18 -0
  111. package/dist/transport/bridge-cascade.d.ts.map +1 -0
  112. package/dist/transport/bridge-cascade.js +78 -0
  113. package/dist/transport/bridge-cascade.js.map +1 -0
  114. package/dist/transport/bridge-cascade.test.d.ts +2 -0
  115. package/dist/transport/bridge-cascade.test.d.ts.map +1 -0
  116. package/dist/transport/bridge-cascade.test.js +160 -0
  117. package/dist/transport/bridge-cascade.test.js.map +1 -0
  118. package/dist/transport/bridge-client.d.ts +197 -0
  119. package/dist/transport/bridge-client.d.ts.map +1 -0
  120. package/dist/transport/bridge-client.js +288 -0
  121. package/dist/transport/bridge-client.js.map +1 -0
  122. package/dist/transport/bridge-client.test.d.ts +2 -0
  123. package/dist/transport/bridge-client.test.d.ts.map +1 -0
  124. package/dist/transport/bridge-client.test.js +384 -0
  125. package/dist/transport/bridge-client.test.js.map +1 -0
  126. package/dist/transport/bridge-context.d.ts +10 -0
  127. package/dist/transport/bridge-context.d.ts.map +1 -0
  128. package/dist/transport/bridge-context.js +18 -0
  129. package/dist/transport/bridge-context.js.map +1 -0
  130. package/dist/transport/bridge-fs.d.ts +25 -0
  131. package/dist/transport/bridge-fs.d.ts.map +1 -0
  132. package/dist/transport/bridge-fs.js +129 -0
  133. package/dist/transport/bridge-fs.js.map +1 -0
  134. package/dist/utils/date-utils.d.ts +24 -0
  135. package/dist/utils/date-utils.d.ts.map +1 -1
  136. package/dist/utils/date-utils.js +55 -0
  137. package/dist/utils/date-utils.js.map +1 -1
  138. package/dist/utils/date-utils.test.d.ts +2 -0
  139. package/dist/utils/date-utils.test.d.ts.map +1 -0
  140. package/dist/utils/date-utils.test.js +109 -0
  141. package/dist/utils/date-utils.test.js.map +1 -0
  142. package/dist/utils/folder-access.d.ts +23 -0
  143. package/dist/utils/folder-access.d.ts.map +1 -0
  144. package/dist/utils/folder-access.js +131 -0
  145. package/dist/utils/folder-access.js.map +1 -0
  146. package/dist/utils/folder-access.test.d.ts +2 -0
  147. package/dist/utils/folder-access.test.d.ts.map +1 -0
  148. package/dist/utils/folder-access.test.js +182 -0
  149. package/dist/utils/folder-access.test.js.map +1 -0
  150. package/dist/utils/folder-matcher.d.ts.map +1 -1
  151. package/dist/utils/folder-matcher.js +16 -0
  152. package/dist/utils/folder-matcher.js.map +1 -1
  153. package/dist/utils/folder-matcher.test.js +42 -0
  154. package/dist/utils/folder-matcher.test.js.map +1 -1
  155. package/dist/utils/server-config.d.ts +10 -2
  156. package/dist/utils/server-config.d.ts.map +1 -1
  157. package/dist/utils/server-config.js +16 -2
  158. package/dist/utils/server-config.js.map +1 -1
  159. package/dist/utils/version.d.ts +2 -0
  160. package/dist/utils/version.d.ts.map +1 -1
  161. package/dist/utils/version.js +5 -1
  162. package/dist/utils/version.js.map +1 -1
  163. package/package.json +4 -3
  164. package/scripts/calendar-helper +0 -0
  165. package/scripts/reminders-helper +0 -0
@@ -0,0 +1,197 @@
1
+ export interface BridgeConfig {
2
+ storagePath: string;
3
+ fileExtension: string;
4
+ hasYearSubfolders: boolean;
5
+ appVersion: string;
6
+ appBuild: number;
7
+ appName: string;
8
+ isUsingCloudKit: boolean;
9
+ }
10
+ export interface BridgeFsEntry {
11
+ /** Filename only (last path component). */
12
+ name: string;
13
+ /** Path relative to the listed directory. For non-recursive listings this equals name. */
14
+ path: string;
15
+ isDir: boolean;
16
+ size: number;
17
+ /** ms since epoch. 0 if unavailable. */
18
+ mtime: number;
19
+ /** ms since epoch. 0 if unavailable. */
20
+ ctime: number;
21
+ }
22
+ export interface BridgeReadResult {
23
+ /** UTF-8 decoded file content. */
24
+ content: string;
25
+ size: number;
26
+ mtime: number;
27
+ ctime: number;
28
+ }
29
+ export type BridgeStatResult = {
30
+ exists: false;
31
+ } | {
32
+ exists: true;
33
+ isDir: boolean;
34
+ size: number;
35
+ mtime: number;
36
+ ctime: number;
37
+ };
38
+ export interface BridgeListOptions {
39
+ recursive?: boolean;
40
+ }
41
+ export interface BridgeWriteResult {
42
+ ok: true;
43
+ size: number;
44
+ /** ms since epoch. */
45
+ mtime: number;
46
+ }
47
+ export interface BridgeWriteOptions {
48
+ /** Fail with 409 if the path already exists (matches `wx` flag in fs.writeFile). */
49
+ exclusive?: boolean;
50
+ }
51
+ /** A `FilterItem` in NotePlan's plist shape. `value` is always a string
52
+ * (the on-disk format); FilterHelper parses it back into the typed value
53
+ * client-side via `parseValue()`. */
54
+ export interface BridgeFilterItem {
55
+ param: string;
56
+ value: string;
57
+ display: boolean;
58
+ }
59
+ export interface BridgeFilterEntry {
60
+ name: string;
61
+ modifiedAt?: number;
62
+ createdAt?: number;
63
+ }
64
+ export interface BridgeFilterTaskMatch {
65
+ file: string;
66
+ line: number;
67
+ content: string;
68
+ matchStart: number;
69
+ matchEnd: number;
70
+ }
71
+ /** Mirrors the MCP's `SQLiteNoteRow`: same field names, same shapes,
72
+ * so the existing `rowToNote` converter can consume bridge responses. */
73
+ export interface BridgeSpaceRow {
74
+ id: string;
75
+ content: string;
76
+ note_type: number;
77
+ title: string;
78
+ filename: string;
79
+ parent: string | null;
80
+ is_dir: number;
81
+ created_at?: string;
82
+ modified_at?: string;
83
+ }
84
+ export interface BridgeClientOptions {
85
+ defaultTimeoutMs?: number;
86
+ /** Called when a request fails fatally (connection refused, 401, timeout) so the discoverer can drop its cache. */
87
+ onFailure?: () => void;
88
+ }
89
+ export declare class BridgeHttpError extends Error {
90
+ readonly status: number;
91
+ constructor(message: string, status: number);
92
+ get isClientError(): boolean;
93
+ }
94
+ export declare class BridgeClient {
95
+ readonly host = "127.0.0.1";
96
+ readonly port: number;
97
+ private readonly token;
98
+ private readonly defaultTimeoutMs;
99
+ private readonly onFailure?;
100
+ constructor(port: number, token: string, options?: BridgeClientOptions);
101
+ config(): Promise<BridgeConfig>;
102
+ /** Reachability probe — does NOT trigger onFailure since callers expect false on failure. */
103
+ health(): Promise<boolean>;
104
+ /** Read a UTF-8 text file relative to NotePlan's storage root. */
105
+ read(relativePath: string): Promise<BridgeReadResult>;
106
+ /** Read arbitrary bytes (e.g. attachment images/PDFs) as a Buffer. */
107
+ readBinary(relativePath: string): Promise<{
108
+ data: Buffer;
109
+ size: number;
110
+ mtime: number;
111
+ ctime: number;
112
+ }>;
113
+ /** List a directory relative to NotePlan's storage root. */
114
+ list(relativePath: string, options?: BridgeListOptions): Promise<BridgeFsEntry[]>;
115
+ /** Probe a path's existence and metadata without reading content. */
116
+ stat(relativePath: string): Promise<BridgeStatResult>;
117
+ /** Server-side tag scan over Notes/ + Calendar/. One round-trip instead of N. */
118
+ tags(): Promise<string[]>;
119
+ /** Write `content` to `relativePath` as UTF-8. Creates parent dirs. */
120
+ write(relativePath: string, content: string, options?: BridgeWriteOptions): Promise<BridgeWriteResult>;
121
+ /** Write raw bytes to `relativePath`. Used for attachment uploads. */
122
+ writeBinary(relativePath: string, data: Buffer): Promise<BridgeWriteResult>;
123
+ /** Create a directory (recursively by default). */
124
+ mkdir(relativePath: string, recursive?: boolean): Promise<void>;
125
+ /** Rename or move a file/directory. */
126
+ rename(fromRelativePath: string, toRelativePath: string): Promise<void>;
127
+ /** Delete a file or directory (recursive for directories). */
128
+ delete(relativePath: string): Promise<void>;
129
+ /**
130
+ * Rewrite every `[[from]]` wikilink across the vault to `[[to]]`. Uses
131
+ * NotePlan's indexed reverse-link lookup and posts `.noteTitleChanged`,
132
+ * matching what the in-app rename does. Returns the number of distinct
133
+ * notes updated.
134
+ */
135
+ rewriteWikilinks(from: string, to: string): Promise<{
136
+ updatedCount: number;
137
+ }>;
138
+ /**
139
+ * Server-side full-text search via NotePlan's SearchHelper (the same
140
+ * engine used by the app's UI and JS plugin bridge). All-words match,
141
+ * case-insensitive, multi-threaded, supports inline operators like
142
+ * `[is:open] meeting`. Returns ripgrep-compatible match records.
143
+ */
144
+ search(pattern: string, options?: {
145
+ limit?: number;
146
+ }): Promise<Array<{
147
+ file: string;
148
+ line: number;
149
+ content: string;
150
+ matchStart: number;
151
+ matchEnd: number;
152
+ }>>;
153
+ /** Teamspace metadata pulled via NotePlan's `LocalSupabaseDatabase`. The
154
+ * rows match the MCP's `SQLiteNoteRow` shape so the existing converter
155
+ * consumes them unchanged.
156
+ */
157
+ listTeamspaces(): Promise<BridgeSpaceRow[]>;
158
+ /** Returns notes AND folders (including @Trash) so the MCP can filter
159
+ * trash descendants client-side without running SQL. */
160
+ listSpaceNoteRows(options?: {
161
+ spaceId?: string;
162
+ }): Promise<BridgeSpaceRow[]>;
163
+ getSpaceNoteRow(by: {
164
+ id?: string;
165
+ filename?: string;
166
+ }): Promise<BridgeSpaceRow | null>;
167
+ getSpaceParentRows(id: string): Promise<BridgeSpaceRow[]>;
168
+ searchSpaceNoteRows(pattern: string, options?: {
169
+ spaceId?: string;
170
+ limit?: number;
171
+ }): Promise<BridgeSpaceRow[]>;
172
+ /** Filter file ops — wrap NotePlan's FilterHelper.shared so we never have
173
+ * to read or write the binary plist directly. */
174
+ listFilters(): Promise<BridgeFilterEntry[]>;
175
+ getFilter(name: string): Promise<{
176
+ name: string;
177
+ items: BridgeFilterItem[];
178
+ } | null>;
179
+ saveFilter(input: {
180
+ name: string;
181
+ items: BridgeFilterItem[];
182
+ keyword?: string;
183
+ overwrite?: boolean;
184
+ }): Promise<{
185
+ name: string;
186
+ items: BridgeFilterItem[];
187
+ }>;
188
+ renameFilter(oldName: string, newName: string): Promise<void>;
189
+ deleteFilter(name: string): Promise<void>;
190
+ /** Run NotePlan's SearchHelper with the named filter and return ripgrep-
191
+ * shaped task matches. Replaces the MCP's mapFilterToTaskQuery hack. */
192
+ filterTasks(name: string, options?: {
193
+ limit?: number;
194
+ }): Promise<BridgeFilterTaskMatch[]>;
195
+ private requestJson;
196
+ }
197
+ //# sourceMappingURL=bridge-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bridge-client.d.ts","sourceRoot":"","sources":["../../src/transport/bridge-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,288 @@
1
+ import * as http from 'http';
2
+ export class BridgeHttpError extends Error {
3
+ status;
4
+ constructor(message, status) {
5
+ super(message);
6
+ this.name = 'BridgeHttpError';
7
+ this.status = status;
8
+ }
9
+ get isClientError() {
10
+ return this.status >= 400 && this.status < 500;
11
+ }
12
+ }
13
+ export class BridgeClient {
14
+ host = '127.0.0.1';
15
+ port;
16
+ token;
17
+ defaultTimeoutMs;
18
+ onFailure;
19
+ constructor(port, token, options = {}) {
20
+ this.port = port;
21
+ this.token = token;
22
+ // 30s default — full-text search across thousands of notes can run
23
+ // several seconds on a cold cache. Reads/stats finish in <100ms so
24
+ // the higher timeout doesn't slow the typical case.
25
+ this.defaultTimeoutMs = options.defaultTimeoutMs ?? 30_000;
26
+ this.onFailure = options.onFailure;
27
+ }
28
+ async config() {
29
+ return this.requestJson('GET', '/config');
30
+ }
31
+ /** Reachability probe — does NOT trigger onFailure since callers expect false on failure. */
32
+ async health() {
33
+ try {
34
+ const res = await this.requestJson('GET', '/health', undefined, 2_000, false);
35
+ return res.ok === true;
36
+ }
37
+ catch {
38
+ return false;
39
+ }
40
+ }
41
+ /** Read a UTF-8 text file relative to NotePlan's storage root. */
42
+ async read(relativePath) {
43
+ return this.requestJson('GET', `/fs/read?path=${encodeURIComponent(relativePath)}`);
44
+ }
45
+ /** Read arbitrary bytes (e.g. attachment images/PDFs) as a Buffer. */
46
+ async readBinary(relativePath) {
47
+ const res = await this.requestJson('GET', `/fs/read-binary?path=${encodeURIComponent(relativePath)}`);
48
+ return {
49
+ data: Buffer.from(res.data, 'base64'),
50
+ size: res.size,
51
+ mtime: res.mtime,
52
+ ctime: res.ctime,
53
+ };
54
+ }
55
+ /** List a directory relative to NotePlan's storage root. */
56
+ async list(relativePath, options = {}) {
57
+ // encodeURIComponent (spaces → %20), not URLSearchParams (spaces → +) — Swift's removingPercentEncoding doesn't decode +.
58
+ let path = `/fs/list?path=${encodeURIComponent(relativePath)}`;
59
+ if (options.recursive)
60
+ path += '&recursive=true';
61
+ const res = await this.requestJson('GET', path);
62
+ return res.entries;
63
+ }
64
+ /** Probe a path's existence and metadata without reading content. */
65
+ async stat(relativePath) {
66
+ return this.requestJson('GET', `/fs/stat?path=${encodeURIComponent(relativePath)}`);
67
+ }
68
+ /** Server-side tag scan over Notes/ + Calendar/. One round-trip instead of N. */
69
+ async tags() {
70
+ const res = await this.requestJson('GET', '/notes/tags');
71
+ return res.tags;
72
+ }
73
+ /** Write `content` to `relativePath` as UTF-8. Creates parent dirs. */
74
+ async write(relativePath, content, options = {}) {
75
+ return this.requestJson('POST', '/fs/write', {
76
+ path: relativePath,
77
+ content,
78
+ exclusive: options.exclusive ?? false,
79
+ });
80
+ }
81
+ /** Write raw bytes to `relativePath`. Used for attachment uploads. */
82
+ async writeBinary(relativePath, data) {
83
+ return this.requestJson('POST', '/fs/write-binary', {
84
+ path: relativePath,
85
+ data: data.toString('base64'),
86
+ });
87
+ }
88
+ /** Create a directory (recursively by default). */
89
+ async mkdir(relativePath, recursive = true) {
90
+ await this.requestJson('POST', '/fs/mkdir', {
91
+ path: relativePath,
92
+ recursive,
93
+ });
94
+ }
95
+ /** Rename or move a file/directory. */
96
+ async rename(fromRelativePath, toRelativePath) {
97
+ await this.requestJson('POST', '/fs/rename', {
98
+ from: fromRelativePath,
99
+ to: toRelativePath,
100
+ });
101
+ }
102
+ /** Delete a file or directory (recursive for directories). */
103
+ async delete(relativePath) {
104
+ await this.requestJson('POST', '/fs/delete', {
105
+ path: relativePath,
106
+ });
107
+ }
108
+ /**
109
+ * Rewrite every `[[from]]` wikilink across the vault to `[[to]]`. Uses
110
+ * NotePlan's indexed reverse-link lookup and posts `.noteTitleChanged`,
111
+ * matching what the in-app rename does. Returns the number of distinct
112
+ * notes updated.
113
+ */
114
+ async rewriteWikilinks(from, to) {
115
+ const res = await this.requestJson('POST', '/notes/rewrite-wikilinks', { from, to });
116
+ return { updatedCount: res.updatedCount };
117
+ }
118
+ /**
119
+ * Server-side full-text search via NotePlan's SearchHelper (the same
120
+ * engine used by the app's UI and JS plugin bridge). All-words match,
121
+ * case-insensitive, multi-threaded, supports inline operators like
122
+ * `[is:open] meeting`. Returns ripgrep-compatible match records.
123
+ */
124
+ async search(pattern, options = {}) {
125
+ let path = `/notes/search?q=${encodeURIComponent(pattern)}`;
126
+ if (options.limit !== undefined)
127
+ path += `&limit=${options.limit}`;
128
+ const res = await this.requestJson('GET', path);
129
+ return res.matches;
130
+ }
131
+ /** Teamspace metadata pulled via NotePlan's `LocalSupabaseDatabase`. The
132
+ * rows match the MCP's `SQLiteNoteRow` shape so the existing converter
133
+ * consumes them unchanged.
134
+ */
135
+ async listTeamspaces() {
136
+ const res = await this.requestJson('GET', '/spaces/teamspaces');
137
+ return res.rows;
138
+ }
139
+ /** Returns notes AND folders (including @Trash) so the MCP can filter
140
+ * trash descendants client-side without running SQL. */
141
+ async listSpaceNoteRows(options = {}) {
142
+ const path = options.spaceId
143
+ ? `/spaces/notes?spaceId=${encodeURIComponent(options.spaceId)}`
144
+ : '/spaces/notes';
145
+ const res = await this.requestJson('GET', path);
146
+ return res.rows;
147
+ }
148
+ async getSpaceNoteRow(by) {
149
+ const parts = [];
150
+ if (by.id)
151
+ parts.push(`id=${encodeURIComponent(by.id)}`);
152
+ if (by.filename)
153
+ parts.push(`filename=${encodeURIComponent(by.filename)}`);
154
+ if (!parts.length)
155
+ throw new Error('getSpaceNoteRow requires id or filename');
156
+ try {
157
+ const res = await this.requestJson('GET', `/spaces/note?${parts.join('&')}`);
158
+ return res.row;
159
+ }
160
+ catch (err) {
161
+ if (err instanceof BridgeHttpError && err.status === 404)
162
+ return null;
163
+ throw err;
164
+ }
165
+ }
166
+ async getSpaceParentRows(id) {
167
+ const res = await this.requestJson('GET', `/spaces/parents?id=${encodeURIComponent(id)}`);
168
+ return res.rows;
169
+ }
170
+ async searchSpaceNoteRows(pattern, options = {}) {
171
+ const parts = [`q=${encodeURIComponent(pattern)}`];
172
+ if (options.spaceId)
173
+ parts.push(`spaceId=${encodeURIComponent(options.spaceId)}`);
174
+ if (options.limit !== undefined)
175
+ parts.push(`limit=${options.limit}`);
176
+ const res = await this.requestJson('GET', `/spaces/search?${parts.join('&')}`);
177
+ return res.rows;
178
+ }
179
+ /** Filter file ops — wrap NotePlan's FilterHelper.shared so we never have
180
+ * to read or write the binary plist directly. */
181
+ async listFilters() {
182
+ const res = await this.requestJson('GET', '/filters/list');
183
+ return res.filters;
184
+ }
185
+ async getFilter(name) {
186
+ try {
187
+ return await this.requestJson('GET', `/filters/get?name=${encodeURIComponent(name)}`);
188
+ }
189
+ catch (err) {
190
+ if (err instanceof BridgeHttpError && err.status === 404)
191
+ return null;
192
+ throw err;
193
+ }
194
+ }
195
+ async saveFilter(input) {
196
+ return this.requestJson('POST', '/filters/save', input);
197
+ }
198
+ async renameFilter(oldName, newName) {
199
+ await this.requestJson('POST', '/filters/rename', { oldName, newName });
200
+ }
201
+ async deleteFilter(name) {
202
+ await this.requestJson('POST', '/filters/delete', { name });
203
+ }
204
+ /** Run NotePlan's SearchHelper with the named filter and return ripgrep-
205
+ * shaped task matches. Replaces the MCP's mapFilterToTaskQuery hack. */
206
+ async filterTasks(name, options = {}) {
207
+ const parts = [`name=${encodeURIComponent(name)}`];
208
+ if (options.limit !== undefined)
209
+ parts.push(`limit=${options.limit}`);
210
+ const res = await this.requestJson('GET', `/filters/tasks?${parts.join('&')}`);
211
+ return res.matches;
212
+ }
213
+ requestJson(method, path, body, timeoutMs, notifyFailure = true) {
214
+ return new Promise((resolve, reject) => {
215
+ let settled = false;
216
+ // 4xx = bridge healthy, request invalid — don't drop the cached client.
217
+ // 5xx / connection / malformed JSON = bridge problem — invalidate.
218
+ const failBridgeUnreachable = (err) => {
219
+ if (settled)
220
+ return;
221
+ settled = true;
222
+ if (notifyFailure)
223
+ this.onFailure?.();
224
+ reject(err);
225
+ };
226
+ const failClient = (err) => {
227
+ if (settled)
228
+ return;
229
+ settled = true;
230
+ reject(err);
231
+ };
232
+ const succeed = (value) => {
233
+ if (settled)
234
+ return;
235
+ settled = true;
236
+ resolve(value);
237
+ };
238
+ const payload = body === undefined ? undefined : Buffer.from(JSON.stringify(body), 'utf-8');
239
+ const req = http.request({
240
+ host: this.host,
241
+ port: this.port,
242
+ method,
243
+ path,
244
+ headers: {
245
+ authorization: `Bearer ${this.token}`,
246
+ ...(payload ? { 'content-type': 'application/json', 'content-length': payload.length } : {}),
247
+ },
248
+ }, (res) => {
249
+ const chunks = [];
250
+ res.on('data', (chunk) => chunks.push(Buffer.from(chunk)));
251
+ res.on('end', () => {
252
+ const text = Buffer.concat(chunks).toString('utf-8');
253
+ const status = res.statusCode ?? 0;
254
+ if (status >= 200 && status < 300) {
255
+ if (text.length === 0) {
256
+ // 204 / empty body — `T` callers all expect an object,
257
+ // so treat as a bridge bug rather than crashing the JSON parse.
258
+ failBridgeUnreachable(new Error(`bridge ${method} ${path}: empty response body`));
259
+ return;
260
+ }
261
+ try {
262
+ succeed(JSON.parse(text));
263
+ }
264
+ catch {
265
+ failBridgeUnreachable(new Error(`bridge ${method} ${path}: invalid JSON response`));
266
+ }
267
+ return;
268
+ }
269
+ const err = new BridgeHttpError(`bridge ${method} ${path} -> ${status}: ${text.slice(0, 200)}`, status);
270
+ if (err.isClientError) {
271
+ failClient(err);
272
+ }
273
+ else {
274
+ failBridgeUnreachable(err);
275
+ }
276
+ });
277
+ });
278
+ req.on('error', failBridgeUnreachable);
279
+ req.setTimeout(timeoutMs ?? this.defaultTimeoutMs, () => {
280
+ req.destroy(new Error(`bridge ${method} ${path}: timeout`));
281
+ });
282
+ if (payload)
283
+ req.write(payload);
284
+ req.end();
285
+ });
286
+ }
287
+ }
288
+ //# sourceMappingURL=bridge-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bridge-client.js","sourceRoot":"","sources":["../../src/transport/bridge-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=bridge-client.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bridge-client.test.d.ts","sourceRoot":"","sources":["../../src/transport/bridge-client.test.ts"],"names":[],"mappings":""}