@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.
- package/README.md +7 -0
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -1
- package/dist/noteplan/attachments-paths.d.ts +13 -0
- package/dist/noteplan/attachments-paths.d.ts.map +1 -0
- package/dist/noteplan/attachments-paths.js +27 -0
- package/dist/noteplan/attachments-paths.js.map +1 -0
- package/dist/noteplan/embeddings.js +1 -1
- package/dist/noteplan/embeddings.js.map +1 -1
- package/dist/noteplan/file-reader.d.ts +37 -46
- package/dist/noteplan/file-reader.d.ts.map +1 -1
- package/dist/noteplan/file-reader.js +200 -202
- package/dist/noteplan/file-reader.js.map +1 -1
- package/dist/noteplan/file-reader.test.d.ts +2 -0
- package/dist/noteplan/file-reader.test.d.ts.map +1 -0
- package/dist/noteplan/file-reader.test.js +67 -0
- package/dist/noteplan/file-reader.test.js.map +1 -0
- package/dist/noteplan/file-writer.d.ts +35 -31
- package/dist/noteplan/file-writer.d.ts.map +1 -1
- package/dist/noteplan/file-writer.js +280 -164
- package/dist/noteplan/file-writer.js.map +1 -1
- package/dist/noteplan/file-writer.test.js +704 -191
- package/dist/noteplan/file-writer.test.js.map +1 -1
- package/dist/noteplan/filter-store.d.ts +5 -5
- package/dist/noteplan/filter-store.d.ts.map +1 -1
- package/dist/noteplan/filter-store.js +94 -79
- package/dist/noteplan/filter-store.js.map +1 -1
- package/dist/noteplan/ripgrep-search.d.ts +25 -2
- package/dist/noteplan/ripgrep-search.d.ts.map +1 -1
- package/dist/noteplan/ripgrep-search.js +75 -2
- package/dist/noteplan/ripgrep-search.js.map +1 -1
- package/dist/noteplan/space-row-utils.d.ts +20 -0
- package/dist/noteplan/space-row-utils.d.ts.map +1 -0
- package/dist/noteplan/space-row-utils.js +78 -0
- package/dist/noteplan/space-row-utils.js.map +1 -0
- package/dist/noteplan/space-row-utils.test.d.ts +2 -0
- package/dist/noteplan/space-row-utils.test.d.ts.map +1 -0
- package/dist/noteplan/space-row-utils.test.js +123 -0
- package/dist/noteplan/space-row-utils.test.js.map +1 -0
- package/dist/noteplan/sqlite-reader.d.ts +12 -27
- package/dist/noteplan/sqlite-reader.d.ts.map +1 -1
- package/dist/noteplan/sqlite-reader.js +315 -221
- package/dist/noteplan/sqlite-reader.js.map +1 -1
- package/dist/noteplan/sqlite-writer.d.ts +1 -1
- package/dist/noteplan/sqlite-writer.d.ts.map +1 -1
- package/dist/noteplan/sqlite-writer.js +2 -2
- package/dist/noteplan/sqlite-writer.js.map +1 -1
- package/dist/noteplan/unified-store.d.ts +41 -30
- package/dist/noteplan/unified-store.d.ts.map +1 -1
- package/dist/noteplan/unified-store.js +257 -159
- package/dist/noteplan/unified-store.js.map +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +142 -61
- package/dist/server.js.map +1 -1
- package/dist/tools/attachments.d.ts +9 -9
- package/dist/tools/attachments.d.ts.map +1 -1
- package/dist/tools/attachments.js +74 -83
- package/dist/tools/attachments.js.map +1 -1
- package/dist/tools/attachments.test.js +170 -129
- package/dist/tools/attachments.test.js.map +1 -1
- package/dist/tools/calendar.d.ts +16 -13
- package/dist/tools/calendar.d.ts.map +1 -1
- package/dist/tools/calendar.js +17 -16
- package/dist/tools/calendar.js.map +1 -1
- package/dist/tools/embeddings.d.ts +6 -6
- package/dist/tools/embeddings.d.ts.map +1 -1
- package/dist/tools/embeddings.js +6 -6
- package/dist/tools/embeddings.js.map +1 -1
- package/dist/tools/events.d.ts +7 -3
- package/dist/tools/events.d.ts.map +1 -1
- package/dist/tools/events.js +51 -16
- package/dist/tools/events.js.map +1 -1
- package/dist/tools/filters.d.ts +28 -33
- package/dist/tools/filters.d.ts.map +1 -1
- package/dist/tools/filters.js +42 -105
- package/dist/tools/filters.js.map +1 -1
- package/dist/tools/notes.d.ts +80 -218
- package/dist/tools/notes.d.ts.map +1 -1
- package/dist/tools/notes.js +180 -177
- package/dist/tools/notes.js.map +1 -1
- package/dist/tools/notes.test.js +242 -21
- package/dist/tools/notes.test.js.map +1 -1
- package/dist/tools/search.d.ts +4 -3
- package/dist/tools/search.d.ts.map +1 -1
- package/dist/tools/search.js +9 -5
- package/dist/tools/search.js.map +1 -1
- package/dist/tools/search.test.d.ts +2 -0
- package/dist/tools/search.test.d.ts.map +1 -0
- package/dist/tools/search.test.js +37 -0
- package/dist/tools/search.test.js.map +1 -0
- package/dist/tools/spaces.d.ts +20 -20
- package/dist/tools/spaces.d.ts.map +1 -1
- package/dist/tools/spaces.js +28 -28
- package/dist/tools/spaces.js.map +1 -1
- package/dist/tools/tasks.d.ts +22 -22
- package/dist/tools/tasks.d.ts.map +1 -1
- package/dist/tools/tasks.js +22 -22
- package/dist/tools/tasks.js.map +1 -1
- package/dist/tools/templates.d.ts +7 -7
- package/dist/tools/templates.d.ts.map +1 -1
- package/dist/tools/templates.js +4 -4
- package/dist/tools/templates.js.map +1 -1
- package/dist/tools/themes.d.ts.map +1 -1
- package/dist/tools/themes.js +26 -35
- package/dist/tools/themes.js.map +1 -1
- package/dist/transport/bridge-availability.d.ts +5 -0
- package/dist/transport/bridge-availability.d.ts.map +1 -0
- package/dist/transport/bridge-availability.js +92 -0
- package/dist/transport/bridge-availability.js.map +1 -0
- package/dist/transport/bridge-cascade.d.ts +18 -0
- package/dist/transport/bridge-cascade.d.ts.map +1 -0
- package/dist/transport/bridge-cascade.js +78 -0
- package/dist/transport/bridge-cascade.js.map +1 -0
- package/dist/transport/bridge-cascade.test.d.ts +2 -0
- package/dist/transport/bridge-cascade.test.d.ts.map +1 -0
- package/dist/transport/bridge-cascade.test.js +160 -0
- package/dist/transport/bridge-cascade.test.js.map +1 -0
- package/dist/transport/bridge-client.d.ts +197 -0
- package/dist/transport/bridge-client.d.ts.map +1 -0
- package/dist/transport/bridge-client.js +288 -0
- package/dist/transport/bridge-client.js.map +1 -0
- package/dist/transport/bridge-client.test.d.ts +2 -0
- package/dist/transport/bridge-client.test.d.ts.map +1 -0
- package/dist/transport/bridge-client.test.js +384 -0
- package/dist/transport/bridge-client.test.js.map +1 -0
- package/dist/transport/bridge-context.d.ts +10 -0
- package/dist/transport/bridge-context.d.ts.map +1 -0
- package/dist/transport/bridge-context.js +18 -0
- package/dist/transport/bridge-context.js.map +1 -0
- package/dist/transport/bridge-fs.d.ts +25 -0
- package/dist/transport/bridge-fs.d.ts.map +1 -0
- package/dist/transport/bridge-fs.js +129 -0
- package/dist/transport/bridge-fs.js.map +1 -0
- package/dist/utils/date-utils.d.ts +24 -0
- package/dist/utils/date-utils.d.ts.map +1 -1
- package/dist/utils/date-utils.js +55 -0
- package/dist/utils/date-utils.js.map +1 -1
- package/dist/utils/date-utils.test.d.ts +2 -0
- package/dist/utils/date-utils.test.d.ts.map +1 -0
- package/dist/utils/date-utils.test.js +109 -0
- package/dist/utils/date-utils.test.js.map +1 -0
- package/dist/utils/folder-access.d.ts +23 -0
- package/dist/utils/folder-access.d.ts.map +1 -0
- package/dist/utils/folder-access.js +131 -0
- package/dist/utils/folder-access.js.map +1 -0
- package/dist/utils/folder-access.test.d.ts +2 -0
- package/dist/utils/folder-access.test.d.ts.map +1 -0
- package/dist/utils/folder-access.test.js +182 -0
- package/dist/utils/folder-access.test.js.map +1 -0
- package/dist/utils/folder-matcher.d.ts.map +1 -1
- package/dist/utils/folder-matcher.js +16 -0
- package/dist/utils/folder-matcher.js.map +1 -1
- package/dist/utils/folder-matcher.test.js +42 -0
- package/dist/utils/folder-matcher.test.js.map +1 -1
- package/dist/utils/server-config.d.ts +10 -2
- package/dist/utils/server-config.d.ts.map +1 -1
- package/dist/utils/server-config.js +16 -2
- package/dist/utils/server-config.js.map +1 -1
- package/dist/utils/version.d.ts +2 -0
- package/dist/utils/version.d.ts.map +1 -1
- package/dist/utils/version.js +5 -1
- package/dist/utils/version.js.map +1 -1
- package/package.json +4 -3
- package/scripts/calendar-helper +0 -0
- 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 @@
|
|
|
1
|
+
{"version":3,"file":"bridge-client.test.d.ts","sourceRoot":"","sources":["../../src/transport/bridge-client.test.ts"],"names":[],"mappings":""}
|