nodebench-mcp 1.0.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 (65) hide show
  1. package/README.md +237 -0
  2. package/dist/__tests__/tools.test.d.ts +1 -0
  3. package/dist/__tests__/tools.test.js +402 -0
  4. package/dist/__tests__/tools.test.js.map +1 -0
  5. package/dist/db.d.ts +4 -0
  6. package/dist/db.js +198 -0
  7. package/dist/db.js.map +1 -0
  8. package/dist/index.d.ts +19 -0
  9. package/dist/index.js +237 -0
  10. package/dist/index.js.map +1 -0
  11. package/dist/tools/documentTools.d.ts +5 -0
  12. package/dist/tools/documentTools.js +524 -0
  13. package/dist/tools/documentTools.js.map +1 -0
  14. package/dist/tools/documentationTools.d.ts +12 -0
  15. package/dist/tools/documentationTools.js +647 -0
  16. package/dist/tools/documentationTools.js.map +1 -0
  17. package/dist/tools/evalTools.d.ts +6 -0
  18. package/dist/tools/evalTools.js +335 -0
  19. package/dist/tools/evalTools.js.map +1 -0
  20. package/dist/tools/financialTools.d.ts +10 -0
  21. package/dist/tools/financialTools.js +403 -0
  22. package/dist/tools/financialTools.js.map +1 -0
  23. package/dist/tools/flywheelTools.d.ts +6 -0
  24. package/dist/tools/flywheelTools.js +366 -0
  25. package/dist/tools/flywheelTools.js.map +1 -0
  26. package/dist/tools/githubTools.d.ts +12 -0
  27. package/dist/tools/githubTools.js +432 -0
  28. package/dist/tools/githubTools.js.map +1 -0
  29. package/dist/tools/learningTools.d.ts +6 -0
  30. package/dist/tools/learningTools.js +199 -0
  31. package/dist/tools/learningTools.js.map +1 -0
  32. package/dist/tools/memoryTools.d.ts +5 -0
  33. package/dist/tools/memoryTools.js +137 -0
  34. package/dist/tools/memoryTools.js.map +1 -0
  35. package/dist/tools/metaTools.d.ts +7 -0
  36. package/dist/tools/metaTools.js +837 -0
  37. package/dist/tools/metaTools.js.map +1 -0
  38. package/dist/tools/planningTools.d.ts +5 -0
  39. package/dist/tools/planningTools.js +147 -0
  40. package/dist/tools/planningTools.js.map +1 -0
  41. package/dist/tools/qualityGateTools.d.ts +6 -0
  42. package/dist/tools/qualityGateTools.js +347 -0
  43. package/dist/tools/qualityGateTools.js.map +1 -0
  44. package/dist/tools/reconTools.d.ts +8 -0
  45. package/dist/tools/reconTools.js +729 -0
  46. package/dist/tools/reconTools.js.map +1 -0
  47. package/dist/tools/searchTools.d.ts +5 -0
  48. package/dist/tools/searchTools.js +145 -0
  49. package/dist/tools/searchTools.js.map +1 -0
  50. package/dist/tools/uiCaptureTools.d.ts +8 -0
  51. package/dist/tools/uiCaptureTools.js +339 -0
  52. package/dist/tools/uiCaptureTools.js.map +1 -0
  53. package/dist/tools/verificationTools.d.ts +6 -0
  54. package/dist/tools/verificationTools.js +472 -0
  55. package/dist/tools/verificationTools.js.map +1 -0
  56. package/dist/tools/visionTools.d.ts +12 -0
  57. package/dist/tools/visionTools.js +553 -0
  58. package/dist/tools/visionTools.js.map +1 -0
  59. package/dist/tools/webTools.d.ts +12 -0
  60. package/dist/tools/webTools.js +443 -0
  61. package/dist/tools/webTools.js.map +1 -0
  62. package/dist/types.d.ts +16 -0
  63. package/dist/types.js +2 -0
  64. package/dist/types.js.map +1 -0
  65. package/package.json +66 -0
@@ -0,0 +1,524 @@
1
+ /**
2
+ * Document, folder, spreadsheet tools backed by local SQLite.
3
+ */
4
+ import { getDb, genId } from "../db.js";
5
+ // ─── ProseMirror JSON → Markdown converter ──────────────────────────────────
6
+ function prosemirrorToMarkdown(jsonStr) {
7
+ if (!jsonStr)
8
+ return "";
9
+ let doc;
10
+ try {
11
+ doc = JSON.parse(jsonStr);
12
+ }
13
+ catch {
14
+ return jsonStr;
15
+ }
16
+ if (!doc || !doc.content)
17
+ return jsonStr;
18
+ return renderNodes(doc.content);
19
+ }
20
+ function renderNodes(nodes) {
21
+ return (nodes || []).map(renderNode).join("");
22
+ }
23
+ function renderNode(node) {
24
+ switch (node.type) {
25
+ case "paragraph":
26
+ return renderInline(node.content) + "\n\n";
27
+ case "heading": {
28
+ const level = node.attrs?.level ?? 1;
29
+ return "#".repeat(level) + " " + renderInline(node.content) + "\n\n";
30
+ }
31
+ case "bulletList":
32
+ return (node.content || []).map((li) => "- " + renderInline(li.content?.[0]?.content).trim()).join("\n") + "\n\n";
33
+ case "orderedList":
34
+ return (node.content || []).map((li, i) => `${i + 1}. ` + renderInline(li.content?.[0]?.content).trim()).join("\n") + "\n\n";
35
+ case "codeBlock": {
36
+ const lang = node.attrs?.language ?? "";
37
+ return "```" + lang + "\n" + renderInline(node.content) + "\n```\n\n";
38
+ }
39
+ case "blockquote":
40
+ return renderNodes(node.content || []).split("\n").map((l) => "> " + l).join("\n") + "\n\n";
41
+ case "horizontalRule":
42
+ return "---\n\n";
43
+ case "text": {
44
+ let t = node.text ?? "";
45
+ for (const mark of node.marks || []) {
46
+ if (mark.type === "bold")
47
+ t = `**${t}**`;
48
+ else if (mark.type === "italic")
49
+ t = `*${t}*`;
50
+ else if (mark.type === "code")
51
+ t = "`" + t + "`";
52
+ else if (mark.type === "link")
53
+ t = `[${t}](${mark.attrs?.href ?? ""})`;
54
+ }
55
+ return t;
56
+ }
57
+ default:
58
+ if (node.content)
59
+ return renderNodes(node.content);
60
+ if (node.text)
61
+ return node.text;
62
+ return "";
63
+ }
64
+ }
65
+ function renderInline(content) {
66
+ if (!content)
67
+ return "";
68
+ return content.map(renderNode).join("");
69
+ }
70
+ // ─── tool definitions ───────────────────────────────────────────────────────
71
+ export const documentTools = [
72
+ // ── Document CRUD ─────────────────────────────────────────────
73
+ {
74
+ name: "createDocument",
75
+ description: "Create a new rich-text document with a title and optional initial content blocks.",
76
+ inputSchema: {
77
+ type: "object",
78
+ properties: {
79
+ title: { type: "string", description: "Document title" },
80
+ parentId: { type: "string", description: "Optional parent document ID for hierarchy" },
81
+ },
82
+ required: ["title"],
83
+ },
84
+ handler: async (args) => {
85
+ const db = getDb();
86
+ const id = genId("doc");
87
+ db.prepare("INSERT INTO documents (id, title, parent_id) VALUES (?, ?, ?)").run(id, args.title, args.parentId ?? null);
88
+ return { id, title: args.title };
89
+ },
90
+ },
91
+ {
92
+ name: "createDocumentWithContent",
93
+ description: "Create a document with pre-built ProseMirror JSON content string.",
94
+ inputSchema: {
95
+ type: "object",
96
+ properties: {
97
+ title: { type: "string", description: "Document title" },
98
+ content: { type: "string", description: "ProseMirror JSON content string" },
99
+ parentId: { type: "string", description: "Optional parent document ID" },
100
+ },
101
+ required: ["title", "content"],
102
+ },
103
+ handler: async (args) => {
104
+ const db = getDb();
105
+ const id = genId("doc");
106
+ db.prepare("INSERT INTO documents (id, title, content, parent_id) VALUES (?, ?, ?, ?)").run(id, args.title, args.content, args.parentId ?? null);
107
+ return { id, title: args.title };
108
+ },
109
+ },
110
+ {
111
+ name: "getDocument",
112
+ description: "Get a document by ID, including title, content, metadata, and file info.",
113
+ inputSchema: {
114
+ type: "object",
115
+ properties: {
116
+ documentId: { type: "string", description: "Document ID" },
117
+ },
118
+ required: ["documentId"],
119
+ },
120
+ handler: async (args) => {
121
+ const db = getDb();
122
+ const row = db.prepare("SELECT * FROM documents WHERE id = ? AND is_archived = 0").get(args.documentId);
123
+ if (!row)
124
+ throw new Error(`Document not found: ${args.documentId}`);
125
+ return {
126
+ id: row.id, title: row.title, content: row.content, icon: row.icon,
127
+ parentId: row.parent_id, isArchived: !!row.is_archived, docType: row.doc_type,
128
+ createdAt: row.created_at, updatedAt: row.updated_at,
129
+ };
130
+ },
131
+ },
132
+ {
133
+ name: "updateDocument",
134
+ description: "Update document fields: title, content, icon, visibility, favorite status.",
135
+ inputSchema: {
136
+ type: "object",
137
+ properties: {
138
+ id: { type: "string", description: "Document ID" },
139
+ title: { type: "string", description: "New title" },
140
+ content: { type: "string", description: "New ProseMirror JSON content string" },
141
+ icon: { type: "string", description: "Emoji icon" },
142
+ isPublic: { type: "boolean", description: "Public visibility" },
143
+ isFavorite: { type: "boolean", description: "Favorite status" },
144
+ },
145
+ required: ["id"],
146
+ },
147
+ handler: async (args) => {
148
+ const db = getDb();
149
+ const sets = [];
150
+ const vals = [];
151
+ if (args.title !== undefined) {
152
+ sets.push("title = ?");
153
+ vals.push(args.title);
154
+ }
155
+ if (args.content !== undefined) {
156
+ sets.push("content = ?");
157
+ vals.push(args.content);
158
+ }
159
+ if (args.icon !== undefined) {
160
+ sets.push("icon = ?");
161
+ vals.push(args.icon);
162
+ }
163
+ sets.push("updated_at = ?");
164
+ vals.push(new Date().toISOString());
165
+ vals.push(args.id);
166
+ if (sets.length <= 1)
167
+ throw new Error("No fields to update");
168
+ db.prepare(`UPDATE documents SET ${sets.join(", ")} WHERE id = ?`).run(...vals);
169
+ return { success: true, id: args.id };
170
+ },
171
+ },
172
+ {
173
+ name: "archiveDocument",
174
+ description: "Archive (soft-delete) a document and all its children recursively.",
175
+ inputSchema: {
176
+ type: "object",
177
+ properties: {
178
+ id: { type: "string", description: "Document ID" },
179
+ },
180
+ required: ["id"],
181
+ },
182
+ handler: async (args) => {
183
+ const db = getDb();
184
+ const now = new Date().toISOString();
185
+ db.prepare(`
186
+ WITH RECURSIVE children(id) AS (
187
+ SELECT id FROM documents WHERE id = ?
188
+ UNION ALL
189
+ SELECT d.id FROM documents d JOIN children c ON d.parent_id = c.id
190
+ )
191
+ UPDATE documents SET is_archived = 1, updated_at = ?
192
+ WHERE id IN (SELECT id FROM children)
193
+ `).run(args.id, now);
194
+ return { success: true, id: args.id };
195
+ },
196
+ },
197
+ {
198
+ name: "restoreDocument",
199
+ description: "Restore an archived document and its children.",
200
+ inputSchema: {
201
+ type: "object",
202
+ properties: {
203
+ id: { type: "string", description: "Document ID" },
204
+ },
205
+ required: ["id"],
206
+ },
207
+ handler: async (args) => {
208
+ const db = getDb();
209
+ const now = new Date().toISOString();
210
+ db.prepare(`
211
+ WITH RECURSIVE children(id) AS (
212
+ SELECT id FROM documents WHERE id = ?
213
+ UNION ALL
214
+ SELECT d.id FROM documents d JOIN children c ON d.parent_id = c.id
215
+ )
216
+ UPDATE documents SET is_archived = 0, updated_at = ?
217
+ WHERE id IN (SELECT id FROM children)
218
+ `).run(args.id, now);
219
+ return { success: true, id: args.id };
220
+ },
221
+ },
222
+ {
223
+ name: "searchDocuments",
224
+ description: "Search documents by title and content (full-text search).",
225
+ inputSchema: {
226
+ type: "object",
227
+ properties: {
228
+ query: { type: "string", description: "Search query" },
229
+ },
230
+ required: ["query"],
231
+ },
232
+ handler: async (args) => {
233
+ const db = getDb();
234
+ const rows = db.prepare(`
235
+ SELECT d.id, d.title, snippet(documents_fts, 1, '**', '**', '...', 48) as snippet
236
+ FROM documents_fts
237
+ JOIN documents d ON d.rowid = documents_fts.rowid
238
+ WHERE documents_fts MATCH ?
239
+ AND d.is_archived = 0
240
+ ORDER BY rank
241
+ LIMIT 50
242
+ `).all(args.query);
243
+ return {
244
+ count: rows.length,
245
+ results: rows.map((r) => ({ id: r.id, title: r.title, snippet: r.snippet })),
246
+ };
247
+ },
248
+ },
249
+ {
250
+ name: "listDocuments",
251
+ description: "List all user documents sorted by last modified (most recent first, up to 200).",
252
+ inputSchema: {
253
+ type: "object",
254
+ properties: {
255
+ limit: { type: "number", description: "Max results (default 100)" },
256
+ },
257
+ },
258
+ handler: async (args) => {
259
+ const db = getDb();
260
+ const limit = Math.min(args.limit ?? 100, 200);
261
+ const rows = db.prepare("SELECT id, title, doc_type, icon, parent_id, created_at, updated_at FROM documents WHERE is_archived = 0 ORDER BY updated_at DESC LIMIT ?").all(limit);
262
+ return {
263
+ count: rows.length,
264
+ documents: rows.map((r) => ({
265
+ id: r.id, title: r.title, docType: r.doc_type, icon: r.icon,
266
+ parentId: r.parent_id, createdAt: r.created_at, updatedAt: r.updated_at,
267
+ })),
268
+ };
269
+ },
270
+ },
271
+ {
272
+ name: "exportDocumentToMarkdown",
273
+ description: "Export a document to Markdown format. Returns { title, markdown }.",
274
+ inputSchema: {
275
+ type: "object",
276
+ properties: {
277
+ documentId: { type: "string", description: "Document ID" },
278
+ },
279
+ required: ["documentId"],
280
+ },
281
+ handler: async (args) => {
282
+ const db = getDb();
283
+ const row = db.prepare("SELECT title, content FROM documents WHERE id = ?").get(args.documentId);
284
+ if (!row)
285
+ throw new Error(`Document not found: ${args.documentId}`);
286
+ return {
287
+ title: row.title,
288
+ markdown: `# ${row.title}\n\n${prosemirrorToMarkdown(row.content)}`,
289
+ };
290
+ },
291
+ },
292
+ {
293
+ name: "duplicateDocument",
294
+ description: "Duplicate a document. Clones content, icon, type. Resets visibility and favorite.",
295
+ inputSchema: {
296
+ type: "object",
297
+ properties: {
298
+ documentId: { type: "string", description: "Document ID to clone" },
299
+ title: { type: "string", description: "Override title (default: original + ' (Copy)')" },
300
+ },
301
+ required: ["documentId"],
302
+ },
303
+ handler: async (args) => {
304
+ const db = getDb();
305
+ const original = db.prepare("SELECT * FROM documents WHERE id = ?").get(args.documentId);
306
+ if (!original)
307
+ throw new Error(`Document not found: ${args.documentId}`);
308
+ const newId = genId("doc");
309
+ const newTitle = args.title ?? `${original.title} (Copy)`;
310
+ db.prepare("INSERT INTO documents (id, title, content, icon, doc_type) VALUES (?, ?, ?, ?, ?)").run(newId, newTitle, original.content, original.icon, original.doc_type);
311
+ return { id: newId, title: newTitle };
312
+ },
313
+ },
314
+ // ── Folder Management ─────────────────────────────────────────
315
+ {
316
+ name: "createFolder",
317
+ description: "Create a new folder for organizing documents.",
318
+ inputSchema: {
319
+ type: "object",
320
+ properties: {
321
+ name: { type: "string", description: "Folder name" },
322
+ color: { type: "string", description: "CSS color class (e.g. 'blue', 'red', 'green')" },
323
+ },
324
+ required: ["name", "color"],
325
+ },
326
+ handler: async (args) => {
327
+ const db = getDb();
328
+ const id = genId("folder");
329
+ db.prepare("INSERT INTO folders (id, name, color) VALUES (?, ?, ?)").run(id, args.name, args.color);
330
+ return { id, name: args.name, color: args.color };
331
+ },
332
+ },
333
+ {
334
+ name: "listFolders",
335
+ description: "List all user folders.",
336
+ inputSchema: { type: "object", properties: {} },
337
+ handler: async () => {
338
+ const db = getDb();
339
+ const rows = db.prepare("SELECT * FROM folders ORDER BY created_at DESC").all();
340
+ return {
341
+ count: rows.length,
342
+ folders: rows.map((r) => ({ id: r.id, name: r.name, color: r.color, createdAt: r.created_at })),
343
+ };
344
+ },
345
+ },
346
+ {
347
+ name: "getFolderWithDocuments",
348
+ description: "Get a folder and all documents inside it.",
349
+ inputSchema: {
350
+ type: "object",
351
+ properties: {
352
+ folderId: { type: "string", description: "Folder ID" },
353
+ },
354
+ required: ["folderId"],
355
+ },
356
+ handler: async (args) => {
357
+ const db = getDb();
358
+ const folder = db.prepare("SELECT * FROM folders WHERE id = ?").get(args.folderId);
359
+ if (!folder)
360
+ throw new Error(`Folder not found: ${args.folderId}`);
361
+ const docs = db.prepare(`
362
+ SELECT d.id, d.title, d.doc_type, d.icon, d.updated_at
363
+ FROM folder_documents fd
364
+ JOIN documents d ON d.id = fd.document_id
365
+ WHERE fd.folder_id = ? AND d.is_archived = 0
366
+ ORDER BY d.updated_at DESC
367
+ `).all(args.folderId);
368
+ return {
369
+ folder: { id: folder.id, name: folder.name, color: folder.color },
370
+ documents: docs.map((d) => ({
371
+ id: d.id, title: d.title, docType: d.doc_type, icon: d.icon, updatedAt: d.updated_at,
372
+ })),
373
+ };
374
+ },
375
+ },
376
+ {
377
+ name: "addDocumentToFolder",
378
+ description: "Add a document to a folder.",
379
+ inputSchema: {
380
+ type: "object",
381
+ properties: {
382
+ documentId: { type: "string", description: "Document ID" },
383
+ folderId: { type: "string", description: "Folder ID" },
384
+ },
385
+ required: ["documentId", "folderId"],
386
+ },
387
+ handler: async (args) => {
388
+ const db = getDb();
389
+ db.prepare("INSERT OR IGNORE INTO folder_documents (folder_id, document_id) VALUES (?, ?)").run(args.folderId, args.documentId);
390
+ return { success: true };
391
+ },
392
+ },
393
+ {
394
+ name: "removeDocumentFromFolder",
395
+ description: "Remove a document from a folder.",
396
+ inputSchema: {
397
+ type: "object",
398
+ properties: {
399
+ documentId: { type: "string", description: "Document ID" },
400
+ folderId: { type: "string", description: "Folder ID" },
401
+ },
402
+ required: ["documentId", "folderId"],
403
+ },
404
+ handler: async (args) => {
405
+ const db = getDb();
406
+ db.prepare("DELETE FROM folder_documents WHERE folder_id = ? AND document_id = ?").run(args.folderId, args.documentId);
407
+ return { success: true };
408
+ },
409
+ },
410
+ // ── Spreadsheet Operations ────────────────────────────────────
411
+ {
412
+ name: "createSpreadsheet",
413
+ description: "Create a new spreadsheet with a name.",
414
+ inputSchema: {
415
+ type: "object",
416
+ properties: {
417
+ name: { type: "string", description: "Spreadsheet name" },
418
+ },
419
+ required: ["name"],
420
+ },
421
+ handler: async (args) => {
422
+ const db = getDb();
423
+ const id = genId("sheet");
424
+ db.prepare("INSERT INTO documents (id, title, doc_type) VALUES (?, ?, 'spreadsheet')").run(id, args.name);
425
+ return { id, name: args.name };
426
+ },
427
+ },
428
+ {
429
+ name: "listSpreadsheets",
430
+ description: "List user spreadsheets sorted by last updated.",
431
+ inputSchema: {
432
+ type: "object",
433
+ properties: {
434
+ limit: { type: "number", description: "Max results (default 25)" },
435
+ },
436
+ },
437
+ handler: async (args) => {
438
+ const db = getDb();
439
+ const limit = args.limit ?? 25;
440
+ const rows = db.prepare("SELECT id, title, created_at, updated_at FROM documents WHERE doc_type = 'spreadsheet' AND is_archived = 0 ORDER BY updated_at DESC LIMIT ?").all(limit);
441
+ return {
442
+ count: rows.length,
443
+ spreadsheets: rows.map((r) => ({
444
+ id: r.id, name: r.title, createdAt: r.created_at, updatedAt: r.updated_at,
445
+ })),
446
+ };
447
+ },
448
+ },
449
+ {
450
+ name: "getSpreadsheetRange",
451
+ description: "Get cells within a range from a spreadsheet (row/col coordinates).",
452
+ inputSchema: {
453
+ type: "object",
454
+ properties: {
455
+ sheetId: { type: "string", description: "Spreadsheet ID" },
456
+ startRow: { type: "number", description: "Start row (0-based)" },
457
+ endRow: { type: "number", description: "End row (inclusive)" },
458
+ startCol: { type: "number", description: "Start column (0-based)" },
459
+ endCol: { type: "number", description: "End column (inclusive)" },
460
+ },
461
+ required: ["sheetId", "startRow", "endRow", "startCol", "endCol"],
462
+ },
463
+ handler: async (args) => {
464
+ const db = getDb();
465
+ const rows = db.prepare(`
466
+ SELECT row, col, value, cell_type
467
+ FROM spreadsheet_cells
468
+ WHERE sheet_id = ? AND row BETWEEN ? AND ? AND col BETWEEN ? AND ?
469
+ ORDER BY row, col
470
+ `).all(args.sheetId, args.startRow, args.endRow, args.startCol, args.endCol);
471
+ return {
472
+ sheetId: args.sheetId,
473
+ range: { startRow: args.startRow, endRow: args.endRow, startCol: args.startCol, endCol: args.endCol },
474
+ cells: rows.map((r) => ({ row: r.row, col: r.col, value: r.value, type: r.cell_type })),
475
+ };
476
+ },
477
+ },
478
+ {
479
+ name: "applySpreadsheetOperations",
480
+ description: 'Apply batch cell operations to a spreadsheet. Operations: setCell ({op:"setCell", row, col, value, type?}), clearCell ({op:"clearCell", row, col}).',
481
+ inputSchema: {
482
+ type: "object",
483
+ properties: {
484
+ sheetId: { type: "string", description: "Spreadsheet ID" },
485
+ operations: {
486
+ type: "array",
487
+ description: "Array of cell operations",
488
+ items: {
489
+ type: "object",
490
+ properties: {
491
+ op: { type: "string", enum: ["setCell", "clearCell"] },
492
+ row: { type: "number" },
493
+ col: { type: "number" },
494
+ value: { type: "string" },
495
+ type: { type: "string" },
496
+ },
497
+ required: ["op"],
498
+ },
499
+ },
500
+ },
501
+ required: ["sheetId", "operations"],
502
+ },
503
+ handler: async (args) => {
504
+ const db = getDb();
505
+ const setStmt = db.prepare("INSERT OR REPLACE INTO spreadsheet_cells (sheet_id, row, col, value, cell_type) VALUES (?, ?, ?, ?, ?)");
506
+ const clearStmt = db.prepare("DELETE FROM spreadsheet_cells WHERE sheet_id = ? AND row = ? AND col = ?");
507
+ const tx = db.transaction(() => {
508
+ for (const op of args.operations) {
509
+ if (op.op === "setCell") {
510
+ setStmt.run(args.sheetId, op.row, op.col, op.value ?? "", op.type ?? "text");
511
+ }
512
+ else if (op.op === "clearCell") {
513
+ clearStmt.run(args.sheetId, op.row, op.col);
514
+ }
515
+ }
516
+ });
517
+ tx();
518
+ // Update the document's updated_at
519
+ db.prepare("UPDATE documents SET updated_at = ? WHERE id = ?").run(new Date().toISOString(), args.sheetId);
520
+ return { success: true, operationsApplied: args.operations.length };
521
+ },
522
+ },
523
+ ];
524
+ //# sourceMappingURL=documentTools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"documentTools.js","sourceRoot":"","sources":["../../src/tools/documentTools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Documentation & Research tools — Self-maintenance and market research.
3
+ * Enables agents to maintain AGENTS.md, research job markets, and set up local environments.
4
+ *
5
+ * - update_agents_md: Read/append/update sections in AGENTS.md
6
+ * - research_job_market: Aggregate job requirements for roles/skills
7
+ * - setup_local_env: Help agents configure their local environment
8
+ *
9
+ * Designed for fully local operation — helps agents bootstrap their own tooling.
10
+ */
11
+ import type { McpTool } from "../types.js";
12
+ export declare const documentationTools: McpTool[];