remnote-mcp-server 0.14.1 → 0.15.0
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/CHANGELOG.md +56 -0
- package/README.md +82 -28
- package/dist/cli.d.ts +2 -1
- package/dist/cli.js +9 -2
- package/dist/cli.js.map +1 -1
- package/dist/config.d.ts +14 -2
- package/dist/config.js +210 -10
- package/dist/config.js.map +1 -1
- package/dist/daemon.d.ts +61 -0
- package/dist/daemon.js +735 -0
- package/dist/daemon.js.map +1 -0
- package/dist/index.js +6 -3
- package/dist/index.js.map +1 -1
- package/dist/remnote-cli/cli.js +4 -0
- package/dist/remnote-cli/cli.js.map +1 -1
- package/dist/remnote-cli/client/mcp-server-client.js +7 -1
- package/dist/remnote-cli/client/mcp-server-client.js.map +1 -1
- package/dist/remnote-cli/commands/content-input.d.ts +0 -12
- package/dist/remnote-cli/commands/content-input.js +0 -20
- package/dist/remnote-cli/commands/content-input.js.map +1 -1
- package/dist/remnote-cli/commands/create.js +3 -3
- package/dist/remnote-cli/commands/create.js.map +1 -1
- package/dist/remnote-cli/commands/journal.js +3 -0
- package/dist/remnote-cli/commands/journal.js.map +1 -1
- package/dist/remnote-cli/commands/read.js +20 -2
- package/dist/remnote-cli/commands/read.js.map +1 -1
- package/dist/remnote-cli/commands/search.js +24 -5
- package/dist/remnote-cli/commands/search.js.map +1 -1
- package/dist/remnote-cli/commands/update.js +5 -24
- package/dist/remnote-cli/commands/update.js.map +1 -1
- package/dist/remnote-cli/commands/write-actions.d.ts +4 -0
- package/dist/remnote-cli/commands/write-actions.js +123 -0
- package/dist/remnote-cli/commands/write-actions.js.map +1 -0
- package/dist/schemas/remnote-schemas.d.ts +33 -10
- package/dist/schemas/remnote-schemas.js +58 -16
- package/dist/schemas/remnote-schemas.js.map +1 -1
- package/dist/tools/index.d.ts +1264 -12
- package/dist/tools/index.js +157 -47
- package/dist/tools/index.js.map +1 -1
- package/dist/websocket-server.d.ts +5 -0
- package/dist/websocket-server.js +64 -10
- package/dist/websocket-server.js.map +1 -1
- package/mcpb/remnote-local/README.md +4 -3
- package/mcpb/remnote-local/manifest.json +30 -28
- package/mcpb/remnote-local/package.json +1 -1
- package/mcpb/remnote-local/remnote-local.mcpb +0 -0
- package/mcpb/remnote-local/server/fallback-tools.generated.js +323 -0
- package/mcpb/remnote-local/server/index.js +7 -122
- package/package.json +5 -3
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
import { createCommandClient } from '../client/command-client.js';
|
|
2
|
+
import { formatResult, formatError } from '../output/formatter.js';
|
|
3
|
+
import { EXIT } from '../config.js';
|
|
4
|
+
import { resolveOptionalInlineOrFileContent } from './content-input.js';
|
|
5
|
+
import { validateNotFlag } from './arg-utils.js';
|
|
6
|
+
function formatRemResult(data, emptyMessage) {
|
|
7
|
+
const r = data;
|
|
8
|
+
const ids = r.remIds || [];
|
|
9
|
+
const titles = r.titles || [];
|
|
10
|
+
if (ids.length === 0)
|
|
11
|
+
return emptyMessage;
|
|
12
|
+
return ids.map((id, i) => `Updated/Created: ${titles[i] || '(untitled)'} (ID: ${id})`).join('\n');
|
|
13
|
+
}
|
|
14
|
+
async function resolveRequiredContent(options) {
|
|
15
|
+
const content = await resolveOptionalInlineOrFileContent({
|
|
16
|
+
inlineText: options.content,
|
|
17
|
+
filePath: options.contentFile,
|
|
18
|
+
inlineFlag: '--content',
|
|
19
|
+
fileFlag: '--content-file',
|
|
20
|
+
});
|
|
21
|
+
if (content === undefined) {
|
|
22
|
+
throw new Error('Provide exactly one content source: --content <text> or --content-file <path|->');
|
|
23
|
+
}
|
|
24
|
+
return content;
|
|
25
|
+
}
|
|
26
|
+
export function registerInsertChildrenCommand(program) {
|
|
27
|
+
const subprogram = program.command('insert-children <parent-rem-id>');
|
|
28
|
+
const validate = (val) => validateNotFlag(val, subprogram);
|
|
29
|
+
subprogram
|
|
30
|
+
.description('Insert child Rems under a parent at a deterministic position')
|
|
31
|
+
.option('--content <text>', 'Content to insert', validate)
|
|
32
|
+
.option('--content-file <path>', 'Read inserted content from UTF-8 file ("-" for stdin)', validate)
|
|
33
|
+
.requiredOption('--position <position>', 'Insert position: first, last, before, or after', validate)
|
|
34
|
+
.option('--sibling-rem-id <id>', 'Sibling Rem ID for before/after positions', validate)
|
|
35
|
+
.action(async (parentRemId, opts) => {
|
|
36
|
+
const globalOpts = program.opts();
|
|
37
|
+
const format = globalOpts.text ? 'text' : 'json';
|
|
38
|
+
const client = createCommandClient(program);
|
|
39
|
+
try {
|
|
40
|
+
const content = await resolveRequiredContent({
|
|
41
|
+
content: opts.content,
|
|
42
|
+
contentFile: opts.contentFile,
|
|
43
|
+
});
|
|
44
|
+
const position = opts.position;
|
|
45
|
+
const payload = {
|
|
46
|
+
parentRemId,
|
|
47
|
+
content,
|
|
48
|
+
position,
|
|
49
|
+
};
|
|
50
|
+
if (opts.siblingRemId)
|
|
51
|
+
payload.siblingRemId = opts.siblingRemId;
|
|
52
|
+
const result = await client.execute('insert_children', payload);
|
|
53
|
+
console.log(formatResult(result, format, (data) => formatRemResult(data, `Inserted children under ${parentRemId}`)));
|
|
54
|
+
}
|
|
55
|
+
catch (error) {
|
|
56
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
57
|
+
console.error(formatError(message, format));
|
|
58
|
+
process.exit(EXIT.ERROR);
|
|
59
|
+
}
|
|
60
|
+
finally {
|
|
61
|
+
await client.close();
|
|
62
|
+
}
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
export function registerReplaceChildrenCommand(program) {
|
|
66
|
+
const subprogram = program.command('replace-children <parent-rem-id>');
|
|
67
|
+
const validate = (val) => validateNotFlag(val, subprogram);
|
|
68
|
+
subprogram
|
|
69
|
+
.description('Replace all direct child Rems under a parent')
|
|
70
|
+
.option('--content <text>', 'Replacement content', validate)
|
|
71
|
+
.option('--content-file <path>', 'Read replacement content from UTF-8 file ("-" for stdin; empty file clears children)', validate)
|
|
72
|
+
.action(async (parentRemId, opts) => {
|
|
73
|
+
const globalOpts = program.opts();
|
|
74
|
+
const format = globalOpts.text ? 'text' : 'json';
|
|
75
|
+
const client = createCommandClient(program);
|
|
76
|
+
try {
|
|
77
|
+
const content = await resolveRequiredContent({
|
|
78
|
+
content: opts.content,
|
|
79
|
+
contentFile: opts.contentFile,
|
|
80
|
+
});
|
|
81
|
+
const result = await client.execute('replace_children', { parentRemId, content });
|
|
82
|
+
console.log(formatResult(result, format, (data) => formatRemResult(data, `Replaced children under ${parentRemId}`)));
|
|
83
|
+
}
|
|
84
|
+
catch (error) {
|
|
85
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
86
|
+
console.error(formatError(message, format));
|
|
87
|
+
process.exit(EXIT.ERROR);
|
|
88
|
+
}
|
|
89
|
+
finally {
|
|
90
|
+
await client.close();
|
|
91
|
+
}
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
export function registerUpdateTagsCommand(program) {
|
|
95
|
+
const subprogram = program.command('update-tags <rem-id>');
|
|
96
|
+
subprogram
|
|
97
|
+
.description('Add or remove tags by exact tag Rem ID')
|
|
98
|
+
.option('--add-tag-ids <tag-rem-ids...>', 'Exact tag Rem IDs to add')
|
|
99
|
+
.option('--remove-tag-ids <tag-rem-ids...>', 'Exact tag Rem IDs to remove')
|
|
100
|
+
.action(async (remId, opts) => {
|
|
101
|
+
const globalOpts = program.opts();
|
|
102
|
+
const format = globalOpts.text ? 'text' : 'json';
|
|
103
|
+
const client = createCommandClient(program);
|
|
104
|
+
try {
|
|
105
|
+
const payload = { remId };
|
|
106
|
+
if (opts.addTagIds?.length)
|
|
107
|
+
payload.addTagRemIds = opts.addTagIds;
|
|
108
|
+
if (opts.removeTagIds?.length)
|
|
109
|
+
payload.removeTagRemIds = opts.removeTagIds;
|
|
110
|
+
const result = await client.execute('update_tags', payload);
|
|
111
|
+
console.log(formatResult(result, format, (data) => formatRemResult(data, `Updated tags on ${remId}`)));
|
|
112
|
+
}
|
|
113
|
+
catch (error) {
|
|
114
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
115
|
+
console.error(formatError(message, format));
|
|
116
|
+
process.exit(EXIT.ERROR);
|
|
117
|
+
}
|
|
118
|
+
finally {
|
|
119
|
+
await client.close();
|
|
120
|
+
}
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
//# sourceMappingURL=write-actions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"write-actions.js","sourceRoot":"","sources":["../../../src/remnote-cli/commands/write-actions.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,8 +3,8 @@ export declare const CreateNoteSchema: z.ZodObject<{
|
|
|
3
3
|
title: z.ZodOptional<z.ZodString>;
|
|
4
4
|
content: z.ZodOptional<z.ZodString>;
|
|
5
5
|
parentId: z.ZodOptional<z.ZodString>;
|
|
6
|
-
|
|
7
|
-
}, z.core.$
|
|
6
|
+
tagRemIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
7
|
+
}, z.core.$strict>;
|
|
8
8
|
export declare const SearchSchema: z.ZodObject<{
|
|
9
9
|
query: z.ZodString;
|
|
10
10
|
limit: z.ZodDefault<z.ZodNumber>;
|
|
@@ -18,7 +18,7 @@ export declare const SearchSchema: z.ZodObject<{
|
|
|
18
18
|
maxContentLength: z.ZodDefault<z.ZodNumber>;
|
|
19
19
|
}, z.core.$strip>;
|
|
20
20
|
export declare const SearchByTagSchema: z.ZodObject<{
|
|
21
|
-
|
|
21
|
+
tagRemId: z.ZodString;
|
|
22
22
|
limit: z.ZodDefault<z.ZodNumber>;
|
|
23
23
|
includeContent: z.ZodDefault<z.ZodEnum<{
|
|
24
24
|
none: "none";
|
|
@@ -28,7 +28,7 @@ export declare const SearchByTagSchema: z.ZodObject<{
|
|
|
28
28
|
depth: z.ZodDefault<z.ZodNumber>;
|
|
29
29
|
childLimit: z.ZodDefault<z.ZodNumber>;
|
|
30
30
|
maxContentLength: z.ZodDefault<z.ZodNumber>;
|
|
31
|
-
}, z.core.$
|
|
31
|
+
}, z.core.$strict>;
|
|
32
32
|
export declare const ReadNoteSchema: z.ZodObject<{
|
|
33
33
|
remId: z.ZodString;
|
|
34
34
|
depth: z.ZodDefault<z.ZodNumber>;
|
|
@@ -40,18 +40,41 @@ export declare const ReadNoteSchema: z.ZodObject<{
|
|
|
40
40
|
childLimit: z.ZodDefault<z.ZodNumber>;
|
|
41
41
|
maxContentLength: z.ZodDefault<z.ZodNumber>;
|
|
42
42
|
}, z.core.$strip>;
|
|
43
|
+
export declare const InsertChildrenPositionSchema: z.ZodEnum<{
|
|
44
|
+
before: "before";
|
|
45
|
+
after: "after";
|
|
46
|
+
first: "first";
|
|
47
|
+
last: "last";
|
|
48
|
+
}>;
|
|
43
49
|
export declare const UpdateNoteSchema: z.ZodObject<{
|
|
44
50
|
remId: z.ZodString;
|
|
45
51
|
title: z.ZodOptional<z.ZodString>;
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
52
|
+
}, z.core.$strict>;
|
|
53
|
+
export declare const InsertChildrenSchema: z.ZodObject<{
|
|
54
|
+
parentRemId: z.ZodString;
|
|
55
|
+
content: z.ZodString;
|
|
56
|
+
position: z.ZodEnum<{
|
|
57
|
+
before: "before";
|
|
58
|
+
after: "after";
|
|
59
|
+
first: "first";
|
|
60
|
+
last: "last";
|
|
61
|
+
}>;
|
|
62
|
+
siblingRemId: z.ZodOptional<z.ZodString>;
|
|
63
|
+
}, z.core.$strict>;
|
|
64
|
+
export declare const ReplaceChildrenSchema: z.ZodObject<{
|
|
65
|
+
parentRemId: z.ZodString;
|
|
66
|
+
content: z.ZodString;
|
|
67
|
+
}, z.core.$strict>;
|
|
68
|
+
export declare const UpdateTagsSchema: z.ZodObject<{
|
|
69
|
+
remId: z.ZodString;
|
|
70
|
+
addTagRemIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
71
|
+
removeTagRemIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
72
|
+
}, z.core.$strict>;
|
|
51
73
|
export declare const AppendJournalSchema: z.ZodObject<{
|
|
52
74
|
content: z.ZodString;
|
|
53
75
|
timestamp: z.ZodDefault<z.ZodBoolean>;
|
|
54
|
-
|
|
76
|
+
tagRemIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
77
|
+
}, z.core.$strict>;
|
|
55
78
|
export declare const ReadTableSchema: z.ZodObject<{
|
|
56
79
|
tableRemId: z.ZodOptional<z.ZodString>;
|
|
57
80
|
tableTitle: z.ZodOptional<z.ZodString>;
|
|
@@ -4,8 +4,9 @@ export const CreateNoteSchema = z
|
|
|
4
4
|
title: z.string().optional().describe('The title of the note'),
|
|
5
5
|
content: z.string().optional().describe('Content as child bullets (markdown supported)'),
|
|
6
6
|
parentId: z.string().optional().describe('Parent Rem ID'),
|
|
7
|
-
|
|
7
|
+
tagRemIds: z.array(z.string()).optional().describe('Exact tag Rem IDs to apply'),
|
|
8
8
|
})
|
|
9
|
+
.strict()
|
|
9
10
|
.refine((value) => value.title !== undefined || value.content !== undefined, {
|
|
10
11
|
message: 'create_note requires either title or content',
|
|
11
12
|
});
|
|
@@ -38,8 +39,9 @@ export const SearchSchema = z.object({
|
|
|
38
39
|
.default(3000)
|
|
39
40
|
.describe('Maximum character length for rendered content'),
|
|
40
41
|
});
|
|
41
|
-
export const SearchByTagSchema = z
|
|
42
|
-
|
|
42
|
+
export const SearchByTagSchema = z
|
|
43
|
+
.object({
|
|
44
|
+
tagRemId: z.string().min(1).describe('Exact tag Rem ID to search'),
|
|
43
45
|
limit: z.number().int().min(1).max(150).default(50).describe('Maximum results'),
|
|
44
46
|
includeContent: z
|
|
45
47
|
.enum(['none', 'markdown', 'structured'])
|
|
@@ -66,7 +68,8 @@ export const SearchByTagSchema = z.object({
|
|
|
66
68
|
.max(200000)
|
|
67
69
|
.default(3000)
|
|
68
70
|
.describe('Maximum character length for rendered content'),
|
|
69
|
-
})
|
|
71
|
+
})
|
|
72
|
+
.strict();
|
|
70
73
|
export const ReadNoteSchema = z.object({
|
|
71
74
|
remId: z.string().describe('The Rem ID to read'),
|
|
72
75
|
depth: z.number().int().min(0).max(10).default(5).describe('Depth of child hierarchy to render'),
|
|
@@ -89,26 +92,65 @@ export const ReadNoteSchema = z.object({
|
|
|
89
92
|
.default(100000)
|
|
90
93
|
.describe('Maximum character length for rendered content'),
|
|
91
94
|
});
|
|
95
|
+
export const InsertChildrenPositionSchema = z.enum(['first', 'last', 'before', 'after']);
|
|
92
96
|
export const UpdateNoteSchema = z
|
|
93
97
|
.object({
|
|
94
98
|
remId: z.string().describe('The Rem ID to update'),
|
|
95
99
|
title: z.string().optional().describe('New title'),
|
|
96
|
-
appendContent: z.string().optional().describe('Content to append as children'),
|
|
97
|
-
replaceContent: z
|
|
98
|
-
.string()
|
|
99
|
-
.optional()
|
|
100
|
-
.describe('Content to replace direct children (empty string clears children)'),
|
|
101
|
-
addTags: z.array(z.string()).optional().describe('Tags to add'),
|
|
102
|
-
removeTags: z.array(z.string()).optional().describe('Tags to remove'),
|
|
103
100
|
})
|
|
104
|
-
.
|
|
105
|
-
|
|
106
|
-
|
|
101
|
+
.strict()
|
|
102
|
+
.refine((value) => value.title !== undefined, {
|
|
103
|
+
message: 'remnote_update_note requires title',
|
|
104
|
+
path: ['title'],
|
|
107
105
|
});
|
|
108
|
-
export const
|
|
106
|
+
export const InsertChildrenSchema = z
|
|
107
|
+
.object({
|
|
108
|
+
parentRemId: z.string().describe('Parent Rem ID that will receive the new children'),
|
|
109
|
+
content: z.string().describe('Markdown content to insert as child Rems'),
|
|
110
|
+
position: InsertChildrenPositionSchema.describe('Where to insert the new child Rems'),
|
|
111
|
+
siblingRemId: z.string().optional().describe('Sibling Rem ID required for before/after'),
|
|
112
|
+
})
|
|
113
|
+
.strict()
|
|
114
|
+
.superRefine((value, ctx) => {
|
|
115
|
+
if ((value.position === 'before' || value.position === 'after') && !value.siblingRemId) {
|
|
116
|
+
ctx.addIssue({
|
|
117
|
+
code: z.ZodIssueCode.custom,
|
|
118
|
+
message: `siblingRemId is required when position is ${value.position}`,
|
|
119
|
+
path: ['siblingRemId'],
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
if ((value.position === 'first' || value.position === 'last') && value.siblingRemId) {
|
|
123
|
+
ctx.addIssue({
|
|
124
|
+
code: z.ZodIssueCode.custom,
|
|
125
|
+
message: `siblingRemId must not be provided when position is ${value.position}`,
|
|
126
|
+
path: ['siblingRemId'],
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
});
|
|
130
|
+
export const ReplaceChildrenSchema = z
|
|
131
|
+
.object({
|
|
132
|
+
parentRemId: z.string().describe('Parent Rem ID whose direct children will be replaced'),
|
|
133
|
+
content: z.string().describe('Markdown content to use as replacement children'),
|
|
134
|
+
})
|
|
135
|
+
.strict();
|
|
136
|
+
export const UpdateTagsSchema = z
|
|
137
|
+
.object({
|
|
138
|
+
remId: z.string().describe('The Rem ID whose tags should change'),
|
|
139
|
+
addTagRemIds: z.array(z.string()).optional().describe('Exact tag Rem IDs to add'),
|
|
140
|
+
removeTagRemIds: z.array(z.string()).optional().describe('Exact tag Rem IDs to remove'),
|
|
141
|
+
})
|
|
142
|
+
.strict()
|
|
143
|
+
.refine((value) => Boolean(value.addTagRemIds?.length || value.removeTagRemIds?.length), {
|
|
144
|
+
message: 'remnote_update_tags requires addTagRemIds or removeTagRemIds',
|
|
145
|
+
path: ['addTagRemIds'],
|
|
146
|
+
});
|
|
147
|
+
export const AppendJournalSchema = z
|
|
148
|
+
.object({
|
|
109
149
|
content: z.string().describe("Content to append to today's daily document"),
|
|
110
150
|
timestamp: z.boolean().default(true).describe('Include timestamp'),
|
|
111
|
-
|
|
151
|
+
tagRemIds: z.array(z.string()).optional().describe('Exact tag Rem IDs to apply'),
|
|
152
|
+
})
|
|
153
|
+
.strict();
|
|
112
154
|
export const ReadTableSchema = z
|
|
113
155
|
.object({
|
|
114
156
|
tableRemId: z.string().min(1).optional().describe('Table Rem ID'),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"remnote-schemas.js","sourceRoot":"","sources":["../../src/schemas/remnote-schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC;KAC9B,MAAM,CAAC;IACN,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC;IAC9D,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,+CAA+C,CAAC;IACxF,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC;IACzD,
|
|
1
|
+
{"version":3,"file":"remnote-schemas.js","sourceRoot":"","sources":["../../src/schemas/remnote-schemas.ts"],"names":[],"mappings":"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"}
|