remnote-mcp-server 0.14.2 → 0.16.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.
Files changed (53) hide show
  1. package/CHANGELOG.md +78 -0
  2. package/README.md +74 -30
  3. package/dist/cli.d.ts +2 -1
  4. package/dist/cli.js +9 -2
  5. package/dist/cli.js.map +1 -1
  6. package/dist/config.d.ts +14 -2
  7. package/dist/config.js +210 -10
  8. package/dist/config.js.map +1 -1
  9. package/dist/daemon.d.ts +61 -0
  10. package/dist/daemon.js +735 -0
  11. package/dist/daemon.js.map +1 -0
  12. package/dist/index.js +8 -10
  13. package/dist/index.js.map +1 -1
  14. package/dist/remnote-cli/cli.js +8 -1
  15. package/dist/remnote-cli/cli.js.map +1 -1
  16. package/dist/remnote-cli/client/mcp-server-client.d.ts +1 -0
  17. package/dist/remnote-cli/client/mcp-server-client.js +14 -5
  18. package/dist/remnote-cli/client/mcp-server-client.js.map +1 -1
  19. package/dist/remnote-cli/commands/content-input.d.ts +0 -12
  20. package/dist/remnote-cli/commands/content-input.js +0 -20
  21. package/dist/remnote-cli/commands/content-input.js.map +1 -1
  22. package/dist/remnote-cli/commands/create.js +6 -3
  23. package/dist/remnote-cli/commands/create.js.map +1 -1
  24. package/dist/remnote-cli/commands/journal.js +3 -0
  25. package/dist/remnote-cli/commands/journal.js.map +1 -1
  26. package/dist/remnote-cli/commands/read.js +37 -5
  27. package/dist/remnote-cli/commands/read.js.map +1 -1
  28. package/dist/remnote-cli/commands/search.d.ts +1 -0
  29. package/dist/remnote-cli/commands/search.js +111 -11
  30. package/dist/remnote-cli/commands/search.js.map +1 -1
  31. package/dist/remnote-cli/commands/update.js +5 -24
  32. package/dist/remnote-cli/commands/update.js.map +1 -1
  33. package/dist/remnote-cli/commands/write-actions.d.ts +6 -0
  34. package/dist/remnote-cli/commands/write-actions.js +229 -0
  35. package/dist/remnote-cli/commands/write-actions.js.map +1 -0
  36. package/dist/schemas/remnote-schemas.d.ts +105 -18
  37. package/dist/schemas/remnote-schemas.js +179 -60
  38. package/dist/schemas/remnote-schemas.js.map +1 -1
  39. package/dist/shutdown.d.ts +15 -0
  40. package/dist/shutdown.js +59 -0
  41. package/dist/shutdown.js.map +1 -0
  42. package/dist/tools/index.d.ts +3722 -173
  43. package/dist/tools/index.js +595 -66
  44. package/dist/tools/index.js.map +1 -1
  45. package/dist/websocket-server.d.ts +2 -1
  46. package/dist/websocket-server.js +6 -2
  47. package/dist/websocket-server.js.map +1 -1
  48. package/mcpb/remnote-local/manifest.json +40 -26
  49. package/mcpb/remnote-local/package.json +1 -1
  50. package/mcpb/remnote-local/remnote-local.mcpb +0 -0
  51. package/mcpb/remnote-local/server/fallback-tools.generated.js +477 -0
  52. package/mcpb/remnote-local/server/index.js +11 -124
  53. package/package.json +5 -3
@@ -11,9 +11,30 @@ const TYPE_TAG = {
11
11
  descriptor: '[desc] ',
12
12
  portal: '[portal] ',
13
13
  };
14
+ function formatTags(tags) {
15
+ if (!Array.isArray(tags))
16
+ return '';
17
+ return tags
18
+ .map((tag) => {
19
+ if (tag &&
20
+ typeof tag === 'object' &&
21
+ typeof tag.name === 'string' &&
22
+ typeof tag.tagRemId === 'string') {
23
+ const { name, tagRemId } = tag;
24
+ return `${name} [${tagRemId}]`;
25
+ }
26
+ return typeof tag === 'string' ? tag : '';
27
+ })
28
+ .filter(Boolean)
29
+ .join(', ');
30
+ }
14
31
  function applySearchOptions(payload, opts) {
15
- if (opts.includeContent)
16
- payload.includeContent = opts.includeContent;
32
+ if (opts.contentMode)
33
+ payload.contentMode = opts.contentMode;
34
+ if (opts.view)
35
+ payload.view = opts.view;
36
+ if (opts.ancestorDepth)
37
+ payload.ancestorDepth = parseInt(opts.ancestorDepth, 10);
17
38
  if (opts.depth)
18
39
  payload.depth = parseInt(opts.depth, 10);
19
40
  if (opts.childLimit)
@@ -25,7 +46,7 @@ function formatSearchText(data) {
25
46
  const r = data;
26
47
  if (!r.results || r.results.length === 0)
27
48
  return 'No results found.';
28
- return r.results
49
+ const lines = r.results
29
50
  .map((note, i) => {
30
51
  const typeTag = TYPE_TAG[note.remType] ?? '';
31
52
  const headline = note.headline || note.title || '(untitled)';
@@ -34,28 +55,52 @@ function formatSearchText(data) {
34
55
  aliasesSuffix = ` (aka: ${note.aliases.join(', ')})`;
35
56
  }
36
57
  let tagsSuffix = '';
37
- if (note.tags && Array.isArray(note.tags) && note.tags.length > 0) {
38
- tagsSuffix = ` [tags: ${note.tags.join(', ')}]`;
58
+ const formattedTags = formatTags(note.tags);
59
+ if (formattedTags) {
60
+ tagsSuffix = ` [tags: ${formattedTags}]`;
39
61
  }
40
62
  let parentSuffix = '';
41
63
  if (typeof note.parentTitle === 'string' && note.parentTitle.length > 0) {
42
64
  const parentIdSuffix = typeof note.parentRemId === 'string' ? ` [${note.parentRemId}]` : '';
43
65
  parentSuffix = ` <- ${note.parentTitle}${parentIdSuffix}`;
44
66
  }
45
- return `${i + 1}. ${typeTag}${headline}${aliasesSuffix}${tagsSuffix}${parentSuffix} [${note.remId}]`;
67
+ let ancestorSuffix = '';
68
+ if (Array.isArray(note.ancestors) && note.ancestors.length > 0) {
69
+ ancestorSuffix = ` | ancestors: ${note.ancestors
70
+ .map((ancestor) => ancestor && typeof ancestor === 'object'
71
+ ? ancestor.title
72
+ : '')
73
+ .filter(Boolean)
74
+ .join(' <- ')}`;
75
+ }
76
+ return `${i + 1}. ${typeTag}${headline}${aliasesSuffix}${tagsSuffix}${parentSuffix}${ancestorSuffix} [${note.remId}]`;
46
77
  })
47
78
  .join('\n');
79
+ const pagingLines = [];
80
+ if (typeof r.nextCursor === 'string' &&
81
+ r.hasMore === true) {
82
+ pagingLines.push(`Next cursor: ${r.nextCursor}`);
83
+ }
84
+ if (r.truncated === true) {
85
+ const reason = r.truncationReason;
86
+ pagingLines.push(`Results truncated${typeof reason === 'string' ? `: ${reason}` : ''}`);
87
+ }
88
+ return pagingLines.length > 0 ? `${lines}\n${pagingLines.join('\n')}` : lines;
48
89
  }
49
90
  function registerCommonSearchOptions(command) {
50
91
  return command
51
92
  .option('-l, --limit <n>', `Maximum results (default: ${DEFAULT_SEARCH_LIMIT})`, String(DEFAULT_SEARCH_LIMIT))
52
- .option('--include-content <mode>', 'Content rendering mode: "none" (default), "markdown", or "structured"')
93
+ .option('--content-mode <mode>', 'Content rendering mode: "none" (default), "markdown", or "structured"')
94
+ .option('--view <view>', 'Output detail level: compact, standard, or full')
95
+ .option('--ancestor-depth <n>', 'Number of parent Rems to include, direct parent first')
53
96
  .option('--depth <n>', 'Depth of child hierarchy to render (default: 1)')
54
97
  .option('--child-limit <n>', 'Maximum children per level (default: 20)')
55
98
  .option('--max-content-length <n>', 'Maximum content character length (default: 3000)');
56
99
  }
57
100
  export function registerSearchCommand(program) {
58
- registerCommonSearchOptions(program.command('search <query>').description('Search for notes in RemNote')).action(async (query, opts) => {
101
+ registerCommonSearchOptions(program.command('search <query>').description('Search for notes in RemNote'))
102
+ .option('--cursor <cursor>', 'Opaque cursor returned by a previous search page')
103
+ .action(async (query, opts) => {
59
104
  const globalOpts = program.opts();
60
105
  const format = globalOpts.text ? 'text' : 'json';
61
106
  const client = createCommandClient(program);
@@ -64,6 +109,8 @@ export function registerSearchCommand(program) {
64
109
  query,
65
110
  limit: parseInt(opts.limit, 10),
66
111
  };
112
+ if (opts.cursor)
113
+ payload.cursor = opts.cursor;
67
114
  applySearchOptions(payload, opts);
68
115
  const result = await client.execute('search', payload);
69
116
  console.log(formatResult(result, format, (data) => formatSearchText(data)));
@@ -80,16 +127,26 @@ export function registerSearchCommand(program) {
80
127
  }
81
128
  export function registerSearchByTagCommand(program) {
82
129
  registerCommonSearchOptions(program
83
- .command('search-tag <tag>')
84
- .description('Search notes by tag with ancestor-context resolution')).action(async (tag, opts) => {
130
+ .command('search-by-tag')
131
+ .description('Search notes by exact tag Rem ID with ancestor-context resolution')
132
+ .requiredOption('--tag-id <tagRemId>', 'Exact tag Rem ID to search')
133
+ .option('--result-mode <mode>', 'Result mode: "context" returns ancestor context targets, "tagged" returns direct tagged Rems')
134
+ .option('--cursor <cursor>', 'Opaque cursor returned by a previous search-by-tag page')
135
+ .option('--timeout-ms <ms>', 'Per-call bridge wait timeout in milliseconds (max: 60000)')).action(async (opts) => {
85
136
  const globalOpts = program.opts();
86
137
  const format = globalOpts.text ? 'text' : 'json';
87
138
  const client = createCommandClient(program);
88
139
  try {
89
140
  const payload = {
90
- tag,
141
+ tagRemId: opts.tagId,
91
142
  limit: parseInt(opts.limit, 10),
92
143
  };
144
+ if (opts.resultMode)
145
+ payload.resultMode = opts.resultMode;
146
+ if (opts.cursor)
147
+ payload.cursor = opts.cursor;
148
+ if (opts.timeoutMs)
149
+ payload.timeoutMs = parseInt(opts.timeoutMs, 10);
93
150
  applySearchOptions(payload, opts);
94
151
  const result = await client.execute('search_by_tag', payload);
95
152
  console.log(formatResult(result, format, (data) => formatSearchText(data)));
@@ -104,4 +161,47 @@ export function registerSearchByTagCommand(program) {
104
161
  }
105
162
  });
106
163
  }
164
+ export function registerListChildrenCommand(program) {
165
+ program
166
+ .command('list-children <parent-rem-id>')
167
+ .description('List direct child Rems under a parent')
168
+ .option('-l, --limit <n>', 'Maximum direct children (default: 50)', '50')
169
+ .option('--cursor <cursor>', 'Opaque cursor returned by a previous list-children page')
170
+ .option('--view <view>', 'Output detail level: compact, standard, or full')
171
+ .option('--ancestor-depth <n>', 'Number of parent Rems to include, direct parent first')
172
+ .action(async (parentRemId, opts) => {
173
+ const globalOpts = program.opts();
174
+ const format = globalOpts.text ? 'text' : 'json';
175
+ const client = createCommandClient(program);
176
+ try {
177
+ const payload = {
178
+ parentRemId,
179
+ limit: parseInt(opts.limit, 10),
180
+ };
181
+ if (opts.cursor)
182
+ payload.cursor = opts.cursor;
183
+ if (opts.view)
184
+ payload.view = opts.view;
185
+ if (opts.ancestorDepth)
186
+ payload.ancestorDepth = parseInt(opts.ancestorDepth, 10);
187
+ const result = await client.execute('list_children', payload);
188
+ console.log(formatResult(result, format, (data) => {
189
+ const r = data;
190
+ return formatSearchText({
191
+ results: r.children,
192
+ hasMore: r.hasMore,
193
+ nextCursor: r.nextCursor,
194
+ });
195
+ }));
196
+ }
197
+ catch (error) {
198
+ const message = error instanceof Error ? error.message : String(error);
199
+ console.error(formatError(message, format));
200
+ process.exit(EXIT.ERROR);
201
+ }
202
+ finally {
203
+ await client.close();
204
+ }
205
+ });
206
+ }
107
207
  //# sourceMappingURL=search.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"search.js","sourceRoot":"","sources":["../../../src/remnote-cli/commands/search.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"search.js","sourceRoot":"","sources":["../../../src/remnote-cli/commands/search.ts"],"names":[],"mappings":"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"}
@@ -1,42 +1,23 @@
1
1
  import { createCommandClient } from '../client/command-client.js';
2
2
  import { formatResult, formatError } from '../output/formatter.js';
3
3
  import { EXIT } from '../config.js';
4
- import { resolveUpdateContent } from './content-input.js';
5
4
  import { validateNotFlag } from './arg-utils.js';
6
5
  export function registerUpdateCommand(program) {
7
6
  const subprogram = program.command('update <rem-id>');
8
7
  const validate = (val) => validateNotFlag(val, subprogram);
9
8
  subprogram
10
- .description('Update an existing note')
9
+ .description('Update note metadata')
11
10
  .option('--title <text>', 'New title', validate)
12
- .option('--append <text>', 'Append content', validate)
13
- .option('--append-file <path>', 'Read appended content from UTF-8 file ("-" for stdin)', validate)
14
- .option('--replace <text>', 'Replace direct child content (empty string clears all children)', validate)
15
- .option('--replace-file <path>', 'Read replacement content from UTF-8 file ("-" for stdin; empty file clears all children)', validate)
16
- .option('--add-tags <tags...>', 'Tags to add')
17
- .option('--remove-tags <tags...>', 'Tags to remove')
18
11
  .action(async (remId, opts) => {
19
12
  const globalOpts = program.opts();
20
13
  const format = globalOpts.text ? 'text' : 'json';
21
14
  const client = createCommandClient(program);
22
15
  try {
23
- const { appendContent, replaceContent } = await resolveUpdateContent({
24
- appendText: opts.append,
25
- appendFile: opts.appendFile,
26
- replaceText: opts.replace,
27
- replaceFile: opts.replaceFile,
28
- });
16
+ if (!opts.title) {
17
+ throw new Error('Provide --title for update. Use insert-children, replace-children, or update-tags for other writes.');
18
+ }
29
19
  const payload = { remId };
30
- if (opts.title)
31
- payload.title = opts.title;
32
- if (appendContent !== undefined)
33
- payload.appendContent = appendContent;
34
- if (replaceContent !== undefined)
35
- payload.replaceContent = replaceContent;
36
- if (opts.addTags && opts.addTags.length > 0)
37
- payload.addTags = opts.addTags;
38
- if (opts.removeTags && opts.removeTags.length > 0)
39
- payload.removeTags = opts.removeTags;
20
+ payload.title = opts.title;
40
21
  const result = await client.execute('update_note', payload);
41
22
  console.log(formatResult(result, format, (data) => {
42
23
  const r = data;
@@ -1 +1 @@
1
- {"version":3,"file":"update.js","sourceRoot":"","sources":["../../../src/remnote-cli/commands/update.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"update.js","sourceRoot":"","sources":["../../../src/remnote-cli/commands/update.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,WAAW,EAAqB,MAAM,wBAAwB,CAAC;AACtF,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AACpC,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEjD,MAAM,UAAU,qBAAqB,CAAC,OAAgB;IACpD,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;IACtD,MAAM,QAAQ,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,eAAe,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;IAEnE,UAAU;SACP,WAAW,CAAC,sBAAsB,CAAC;SACnC,MAAM,CAAC,gBAAgB,EAAE,WAAW,EAAE,QAAQ,CAAC;SAC/C,MAAM,CAAC,KAAK,EAAE,KAAa,EAAE,IAAI,EAAE,EAAE;QACpC,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;QAClC,MAAM,MAAM,GAAiB,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;QAC/D,MAAM,MAAM,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;QAE5C,IAAI,CAAC;YACH,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;gBAChB,MAAM,IAAI,KAAK,CACb,qGAAqG,CACtG,CAAC;YACJ,CAAC;YAED,MAAM,OAAO,GAA4B,EAAE,KAAK,EAAE,CAAC;YACnD,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;YAE3B,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;YAC5D,OAAO,CAAC,GAAG,CACT,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;gBACpC,MAAM,CAAC,GAAG,IAAgD,CAAC;gBAC3D,MAAM,GAAG,GAAG,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC;gBAC3B,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC;gBAC9B,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;oBAAE,OAAO,gBAAgB,KAAK,oBAAoB,CAAC;gBACvE,OAAO,MAAM;qBACV,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,oBAAoB,CAAC,IAAI,YAAY,SAAS,GAAG,CAAC,CAAC,CAAC,IAAI,SAAS,GAAG,CAAC;qBACnF,IAAI,CAAC,IAAI,CAAC,CAAC;YAChB,CAAC,CAAC,CACH,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACvE,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;YAC5C,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC3B,CAAC;gBAAS,CAAC;YACT,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;QACvB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { Command } from 'commander';
2
+ export declare function registerInsertChildrenCommand(program: Command): void;
3
+ export declare function registerReplaceChildrenCommand(program: Command): void;
4
+ export declare function registerUpdateTagsCommand(program: Command): void;
5
+ export declare function registerMoveNoteCommand(program: Command): void;
6
+ export declare function registerSetDocumentStatusCommand(program: Command): void;
@@ -0,0 +1,229 @@
1
+ import { InvalidArgumentError } from 'commander';
2
+ import { createCommandClient } from '../client/command-client.js';
3
+ import { formatResult, formatError } from '../output/formatter.js';
4
+ import { EXIT } from '../config.js';
5
+ import { resolveOptionalInlineOrFileContent } from './content-input.js';
6
+ import { validateNotFlag } from './arg-utils.js';
7
+ const REM_CLASSIFICATIONS = [
8
+ 'document',
9
+ 'dailyDocument',
10
+ 'concept',
11
+ 'descriptor',
12
+ 'portal',
13
+ 'text',
14
+ ];
15
+ function validateExpectedOldRemType(value, command) {
16
+ validateNotFlag(value, command);
17
+ if (!REM_CLASSIFICATIONS.includes(value)) {
18
+ throw new InvalidArgumentError(`expectedOldRemType must be one of: ${REM_CLASSIFICATIONS.join(', ')}`);
19
+ }
20
+ return value;
21
+ }
22
+ function formatRemResult(data, emptyMessage) {
23
+ const r = data;
24
+ const ids = r.remIds || [];
25
+ const titles = r.titles || [];
26
+ if (ids.length === 0)
27
+ return emptyMessage;
28
+ return ids.map((id, i) => `Updated/Created: ${titles[i] || '(untitled)'} (ID: ${id})`).join('\n');
29
+ }
30
+ async function resolveRequiredContent(options) {
31
+ const content = await resolveOptionalInlineOrFileContent({
32
+ inlineText: options.content,
33
+ filePath: options.contentFile,
34
+ inlineFlag: '--content',
35
+ fileFlag: '--content-file',
36
+ });
37
+ if (content === undefined) {
38
+ throw new Error('Provide exactly one content source: --content <text> or --content-file <path|->');
39
+ }
40
+ return content;
41
+ }
42
+ export function registerInsertChildrenCommand(program) {
43
+ const subprogram = program.command('insert-children <parent-rem-id>');
44
+ const validate = (val) => validateNotFlag(val, subprogram);
45
+ subprogram
46
+ .description('Insert child Rems under a parent at a deterministic position')
47
+ .option('--content <text>', 'Content to insert', validate)
48
+ .option('--content-file <path>', 'Read inserted content from UTF-8 file ("-" for stdin)', validate)
49
+ .requiredOption('--position <position>', 'Insert position: first, last, before, or after', validate)
50
+ .option('--sibling-rem-id <id>', 'Sibling Rem ID for before/after positions', validate)
51
+ .action(async (parentRemId, opts) => {
52
+ const globalOpts = program.opts();
53
+ const format = globalOpts.text ? 'text' : 'json';
54
+ const client = createCommandClient(program);
55
+ try {
56
+ const content = await resolveRequiredContent({
57
+ content: opts.content,
58
+ contentFile: opts.contentFile,
59
+ });
60
+ const position = opts.position;
61
+ const payload = {
62
+ parentRemId,
63
+ content,
64
+ position,
65
+ };
66
+ if (opts.siblingRemId)
67
+ payload.siblingRemId = opts.siblingRemId;
68
+ const result = await client.execute('insert_children', payload);
69
+ console.log(formatResult(result, format, (data) => formatRemResult(data, `Inserted children under ${parentRemId}`)));
70
+ }
71
+ catch (error) {
72
+ const message = error instanceof Error ? error.message : String(error);
73
+ console.error(formatError(message, format));
74
+ process.exit(EXIT.ERROR);
75
+ }
76
+ finally {
77
+ await client.close();
78
+ }
79
+ });
80
+ }
81
+ export function registerReplaceChildrenCommand(program) {
82
+ const subprogram = program.command('replace-children <parent-rem-id>');
83
+ const validate = (val) => validateNotFlag(val, subprogram);
84
+ subprogram
85
+ .description('Replace all direct child Rems under a parent')
86
+ .option('--content <text>', 'Replacement content', validate)
87
+ .option('--content-file <path>', 'Read replacement content from UTF-8 file ("-" for stdin; empty file clears children)', validate)
88
+ .action(async (parentRemId, opts) => {
89
+ const globalOpts = program.opts();
90
+ const format = globalOpts.text ? 'text' : 'json';
91
+ const client = createCommandClient(program);
92
+ try {
93
+ const content = await resolveRequiredContent({
94
+ content: opts.content,
95
+ contentFile: opts.contentFile,
96
+ });
97
+ const result = await client.execute('replace_children', { parentRemId, content });
98
+ console.log(formatResult(result, format, (data) => formatRemResult(data, `Replaced children under ${parentRemId}`)));
99
+ }
100
+ catch (error) {
101
+ const message = error instanceof Error ? error.message : String(error);
102
+ console.error(formatError(message, format));
103
+ process.exit(EXIT.ERROR);
104
+ }
105
+ finally {
106
+ await client.close();
107
+ }
108
+ });
109
+ }
110
+ export function registerUpdateTagsCommand(program) {
111
+ const subprogram = program.command('update-tags <rem-id>');
112
+ subprogram
113
+ .description('Add or remove tags by exact tag Rem ID')
114
+ .option('--add-tag-ids <tag-rem-ids...>', 'Exact tag Rem IDs to add')
115
+ .option('--remove-tag-ids <tag-rem-ids...>', 'Exact tag Rem IDs to remove')
116
+ .action(async (remId, opts) => {
117
+ const globalOpts = program.opts();
118
+ const format = globalOpts.text ? 'text' : 'json';
119
+ const client = createCommandClient(program);
120
+ try {
121
+ const payload = { remId };
122
+ if (opts.addTagIds?.length)
123
+ payload.addTagRemIds = opts.addTagIds;
124
+ if (opts.removeTagIds?.length)
125
+ payload.removeTagRemIds = opts.removeTagIds;
126
+ const result = await client.execute('update_tags', payload);
127
+ console.log(formatResult(result, format, (data) => formatRemResult(data, `Updated tags on ${remId}`)));
128
+ }
129
+ catch (error) {
130
+ const message = error instanceof Error ? error.message : String(error);
131
+ console.error(formatError(message, format));
132
+ process.exit(EXIT.ERROR);
133
+ }
134
+ finally {
135
+ await client.close();
136
+ }
137
+ });
138
+ }
139
+ export function registerMoveNoteCommand(program) {
140
+ const subprogram = program.command('move-note <rem-id>');
141
+ const validate = (val) => validateNotFlag(val, subprogram);
142
+ subprogram
143
+ .description('Move a Rem and its subtree under a new parent')
144
+ .requiredOption('--new-parent-rem-id <id>', 'New parent Rem ID', validate)
145
+ .option('--position <position>', 'Move position: first, last, before, or after', validate)
146
+ .option('--sibling-rem-id <id>', 'Sibling Rem ID for before/after positions', validate)
147
+ .option('--apply', 'Perform the move. Without this flag, the command runs as dry-run.')
148
+ .option('--expected-old-parent-rem-id <id>', 'Reject if current parent differs from this Rem ID', validate)
149
+ .option('--ancestor-depth <n>', 'Number of parent Rems to include before/after the move', validate)
150
+ .action(async (remId, opts) => {
151
+ const globalOpts = program.opts();
152
+ const format = globalOpts.text ? 'text' : 'json';
153
+ const client = createCommandClient(program);
154
+ try {
155
+ const payload = {
156
+ remId,
157
+ newParentRemId: opts.newParentRemId,
158
+ dryRun: !opts.apply,
159
+ };
160
+ if (opts.position)
161
+ payload.position = opts.position;
162
+ if (opts.siblingRemId)
163
+ payload.siblingRemId = opts.siblingRemId;
164
+ if (opts.expectedOldParentRemId)
165
+ payload.expectedOldParentRemId = opts.expectedOldParentRemId;
166
+ if (opts.ancestorDepth)
167
+ payload.ancestorDepth = parseInt(opts.ancestorDepth, 10);
168
+ const result = await client.execute('move_note', payload);
169
+ console.log(formatResult(result, format, (data) => {
170
+ const r = data;
171
+ return `${r.dryRun ? 'Dry-run move' : 'Moved'}: ${r.title ?? remId} (${r.remId ?? remId}) -> ${r.newParentTitle ?? r.newParentRemId}`;
172
+ }));
173
+ }
174
+ catch (error) {
175
+ const message = error instanceof Error ? error.message : String(error);
176
+ console.error(formatError(message, format));
177
+ process.exit(EXIT.ERROR);
178
+ }
179
+ finally {
180
+ await client.close();
181
+ }
182
+ });
183
+ }
184
+ export function registerSetDocumentStatusCommand(program) {
185
+ const subprogram = program.command('set-document-status <rem-id>');
186
+ const validateExpectedType = (val) => validateExpectedOldRemType(val, subprogram);
187
+ subprogram
188
+ .description('Preview or set document status on an existing Rem')
189
+ .option('--document', 'Mark the Rem as a document')
190
+ .option('--no-document', 'Unmark the Rem as a document')
191
+ .option('--apply', 'Apply the change. Without this flag, the command runs as dry-run.')
192
+ .option('--expected-old-rem-type <type>', `Reject if current remType differs from this value (${REM_CLASSIFICATIONS.join(', ')})`, validateExpectedType)
193
+ .action(async (remId, opts) => {
194
+ const globalOpts = program.opts();
195
+ const format = globalOpts.text ? 'text' : 'json';
196
+ const client = createCommandClient(program);
197
+ try {
198
+ if (typeof opts.document !== 'boolean') {
199
+ throw new Error('Provide --document or --no-document.');
200
+ }
201
+ const payload = {
202
+ remId,
203
+ isDocument: opts.document,
204
+ dryRun: !opts.apply,
205
+ };
206
+ if (opts.expectedOldRemType)
207
+ payload.expectedOldRemType = opts.expectedOldRemType;
208
+ const result = await client.execute('set_document_status', payload);
209
+ console.log(formatResult(result, format, (data) => {
210
+ const r = data;
211
+ const label = r.dryRun
212
+ ? 'Dry-run document status'
213
+ : r.changed
214
+ ? 'Updated document status'
215
+ : 'Document status unchanged';
216
+ return `${label}: ${r.title ?? remId} (${r.remId ?? remId}) ${r.oldRemType ?? '?'} -> ${r.newRemType ?? '?'}; isDocument=${String(r.newIsDocument ?? r.requestedIsDocument)}`;
217
+ }));
218
+ }
219
+ catch (error) {
220
+ const message = error instanceof Error ? error.message : String(error);
221
+ console.error(formatError(message, format));
222
+ process.exit(EXIT.ERROR);
223
+ }
224
+ finally {
225
+ await client.close();
226
+ }
227
+ });
228
+ }
229
+ //# 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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"}