@monoes/monomindcli 2.13.0 → 2.14.1

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 (251) hide show
  1. package/.claude/skills/monodesign/scripts/context.mjs +1 -1
  2. package/.claude/skills/monodesign/scripts/detector/detect-antipatterns-browser.js +2 -2
  3. package/.claude/skills/monodesign/scripts/detector/rules/checks.mjs +2 -2
  4. package/.claude/skills/monodesign/scripts/live-browser.js +1 -1
  5. package/bin/cli.js +21 -1
  6. package/bin/mcp-server.js +21 -1
  7. package/dist/src/capabilities/cap-documents.d.ts.map +1 -1
  8. package/dist/src/capabilities/cap-documents.js +23 -0
  9. package/dist/src/capabilities/cap-documents.js.map +1 -1
  10. package/dist/src/commands/doc-filters.d.ts +19 -0
  11. package/dist/src/commands/doc-filters.d.ts.map +1 -0
  12. package/dist/src/commands/doc-filters.js +58 -0
  13. package/dist/src/commands/doc-filters.js.map +1 -0
  14. package/dist/src/commands/doc-library.d.ts +21 -0
  15. package/dist/src/commands/doc-library.d.ts.map +1 -0
  16. package/dist/src/commands/doc-library.js +390 -0
  17. package/dist/src/commands/doc-library.js.map +1 -0
  18. package/dist/src/commands/doc-list.d.ts +9 -0
  19. package/dist/src/commands/doc-list.d.ts.map +1 -0
  20. package/dist/src/commands/doc-list.js +99 -0
  21. package/dist/src/commands/doc-list.js.map +1 -0
  22. package/dist/src/commands/doc.d.ts.map +1 -1
  23. package/dist/src/commands/doc.js +49 -37
  24. package/dist/src/commands/doc.js.map +1 -1
  25. package/dist/src/commands/doctor-mcp-probe.d.ts +48 -0
  26. package/dist/src/commands/doctor-mcp-probe.d.ts.map +1 -0
  27. package/dist/src/commands/doctor-mcp-probe.js +205 -0
  28. package/dist/src/commands/doctor-mcp-probe.js.map +1 -0
  29. package/dist/src/commands/doctor-project-checks.d.ts +12 -1
  30. package/dist/src/commands/doctor-project-checks.d.ts.map +1 -1
  31. package/dist/src/commands/doctor-project-checks.js +55 -4
  32. package/dist/src/commands/doctor-project-checks.js.map +1 -1
  33. package/dist/src/commands/doctor.d.ts.map +1 -1
  34. package/dist/src/commands/doctor.js +10 -1
  35. package/dist/src/commands/doctor.js.map +1 -1
  36. package/dist/src/commands/init.d.ts.map +1 -1
  37. package/dist/src/commands/init.js +17 -0
  38. package/dist/src/commands/init.js.map +1 -1
  39. package/dist/src/commands/mcp.d.ts.map +1 -1
  40. package/dist/src/commands/mcp.js +4 -3
  41. package/dist/src/commands/mcp.js.map +1 -1
  42. package/dist/src/commands/org-observe.d.ts.map +1 -1
  43. package/dist/src/commands/org-observe.js +14 -0
  44. package/dist/src/commands/org-observe.js.map +1 -1
  45. package/dist/src/commands/org.d.ts.map +1 -1
  46. package/dist/src/commands/org.js +12 -2
  47. package/dist/src/commands/org.js.map +1 -1
  48. package/dist/src/init/claudemd-generator.d.ts.map +1 -1
  49. package/dist/src/init/claudemd-generator.js +2 -1
  50. package/dist/src/init/claudemd-generator.js.map +1 -1
  51. package/dist/src/init/mcp-generator.d.ts.map +1 -1
  52. package/dist/src/init/mcp-generator.js +3 -3
  53. package/dist/src/init/mcp-generator.js.map +1 -1
  54. package/dist/src/init/types.d.ts +6 -0
  55. package/dist/src/init/types.d.ts.map +1 -1
  56. package/dist/src/init/types.js.map +1 -1
  57. package/dist/src/init/write-runtime-config.d.ts.map +1 -1
  58. package/dist/src/init/write-runtime-config.js +12 -2
  59. package/dist/src/init/write-runtime-config.js.map +1 -1
  60. package/dist/src/knowledge/capture-envelope.d.ts +80 -0
  61. package/dist/src/knowledge/capture-envelope.d.ts.map +1 -0
  62. package/dist/src/knowledge/capture-envelope.js +165 -0
  63. package/dist/src/knowledge/capture-envelope.js.map +1 -0
  64. package/dist/src/knowledge/capture-text.d.ts +23 -0
  65. package/dist/src/knowledge/capture-text.d.ts.map +1 -0
  66. package/dist/src/knowledge/capture-text.js +49 -0
  67. package/dist/src/knowledge/capture-text.js.map +1 -0
  68. package/dist/src/knowledge/citation.d.ts +121 -0
  69. package/dist/src/knowledge/citation.d.ts.map +1 -0
  70. package/dist/src/knowledge/citation.js +252 -0
  71. package/dist/src/knowledge/citation.js.map +1 -0
  72. package/dist/src/knowledge/document-pipeline.d.ts +60 -0
  73. package/dist/src/knowledge/document-pipeline.d.ts.map +1 -1
  74. package/dist/src/knowledge/document-pipeline.js +188 -4
  75. package/dist/src/knowledge/document-pipeline.js.map +1 -1
  76. package/dist/src/knowledge/html-extract.d.ts +43 -0
  77. package/dist/src/knowledge/html-extract.d.ts.map +1 -0
  78. package/dist/src/knowledge/html-extract.js +286 -0
  79. package/dist/src/knowledge/html-extract.js.map +1 -0
  80. package/dist/src/knowledge/html-tags.d.ts +30 -0
  81. package/dist/src/knowledge/html-tags.d.ts.map +1 -0
  82. package/dist/src/knowledge/html-tags.js +229 -0
  83. package/dist/src/knowledge/html-tags.js.map +1 -0
  84. package/dist/src/knowledge/library.d.ts +106 -0
  85. package/dist/src/knowledge/library.d.ts.map +1 -0
  86. package/dist/src/knowledge/library.js +195 -0
  87. package/dist/src/knowledge/library.js.map +1 -0
  88. package/dist/src/knowledge/mhtml.d.ts +60 -0
  89. package/dist/src/knowledge/mhtml.d.ts.map +1 -0
  90. package/dist/src/knowledge/mhtml.js +154 -0
  91. package/dist/src/knowledge/mhtml.js.map +1 -0
  92. package/dist/src/knowledge/related.d.ts +58 -0
  93. package/dist/src/knowledge/related.d.ts.map +1 -0
  94. package/dist/src/knowledge/related.js +222 -0
  95. package/dist/src/knowledge/related.js.map +1 -0
  96. package/dist/src/knowledge/section-diff.d.ts +48 -0
  97. package/dist/src/knowledge/section-diff.d.ts.map +1 -0
  98. package/dist/src/knowledge/section-diff.js +151 -0
  99. package/dist/src/knowledge/section-diff.js.map +1 -0
  100. package/dist/src/knowledge/watch.d.ts +92 -0
  101. package/dist/src/knowledge/watch.d.ts.map +1 -0
  102. package/dist/src/knowledge/watch.js +221 -0
  103. package/dist/src/knowledge/watch.js.map +1 -0
  104. package/dist/src/mcp-server.d.ts.map +1 -1
  105. package/dist/src/mcp-server.js +44 -87
  106. package/dist/src/mcp-server.js.map +1 -1
  107. package/dist/src/mcp-tools/browser-instrument-tools.d.ts +35 -0
  108. package/dist/src/mcp-tools/browser-instrument-tools.d.ts.map +1 -0
  109. package/dist/src/mcp-tools/browser-instrument-tools.js +359 -0
  110. package/dist/src/mcp-tools/browser-instrument-tools.js.map +1 -0
  111. package/dist/src/mcp-tools/browser-metrics.d.ts +42 -0
  112. package/dist/src/mcp-tools/browser-metrics.d.ts.map +1 -0
  113. package/dist/src/mcp-tools/browser-metrics.js +91 -0
  114. package/dist/src/mcp-tools/browser-metrics.js.map +1 -0
  115. package/dist/src/mcp-tools/browser-profile-tools.d.ts +16 -0
  116. package/dist/src/mcp-tools/browser-profile-tools.d.ts.map +1 -0
  117. package/dist/src/mcp-tools/browser-profile-tools.js +324 -0
  118. package/dist/src/mcp-tools/browser-profile-tools.js.map +1 -0
  119. package/dist/src/mcp-tools/browser-session.d.ts +68 -0
  120. package/dist/src/mcp-tools/browser-session.d.ts.map +1 -0
  121. package/dist/src/mcp-tools/browser-session.js +224 -0
  122. package/dist/src/mcp-tools/browser-session.js.map +1 -0
  123. package/dist/src/mcp-tools/browser-tools.d.ts.map +1 -1
  124. package/dist/src/mcp-tools/browser-tools.js +10 -176
  125. package/dist/src/mcp-tools/browser-tools.js.map +1 -1
  126. package/dist/src/mcp-tools/capture-resource-read.d.ts +115 -0
  127. package/dist/src/mcp-tools/capture-resource-read.d.ts.map +1 -0
  128. package/dist/src/mcp-tools/capture-resource-read.js +296 -0
  129. package/dist/src/mcp-tools/capture-resource-read.js.map +1 -0
  130. package/dist/src/mcp-tools/capture-resource-tools.d.ts +22 -0
  131. package/dist/src/mcp-tools/capture-resource-tools.d.ts.map +1 -0
  132. package/dist/src/mcp-tools/capture-resource-tools.js +182 -0
  133. package/dist/src/mcp-tools/capture-resource-tools.js.map +1 -0
  134. package/dist/src/mcp-tools/capture-resources.d.ts +142 -0
  135. package/dist/src/mcp-tools/capture-resources.d.ts.map +1 -0
  136. package/dist/src/mcp-tools/capture-resources.js +289 -0
  137. package/dist/src/mcp-tools/capture-resources.js.map +1 -0
  138. package/dist/src/mcp-tools/index.d.ts +3 -0
  139. package/dist/src/mcp-tools/index.d.ts.map +1 -1
  140. package/dist/src/mcp-tools/index.js +6 -0
  141. package/dist/src/mcp-tools/index.js.map +1 -1
  142. package/dist/src/mcp-tools/knowledge-tools.d.ts.map +1 -1
  143. package/dist/src/mcp-tools/knowledge-tools.js +9 -1
  144. package/dist/src/mcp-tools/knowledge-tools.js.map +1 -1
  145. package/dist/src/mcp-tools/resource-router.d.ts +86 -0
  146. package/dist/src/mcp-tools/resource-router.d.ts.map +1 -0
  147. package/dist/src/mcp-tools/resource-router.js +181 -0
  148. package/dist/src/mcp-tools/resource-router.js.map +1 -0
  149. package/dist/src/memory/memory-bridge.js +1 -1
  150. package/dist/src/memory/memory-bridge.js.map +1 -1
  151. package/dist/src/orgrt/agent-runner.d.ts +38 -0
  152. package/dist/src/orgrt/agent-runner.d.ts.map +1 -1
  153. package/dist/src/orgrt/agent-runner.js +47 -0
  154. package/dist/src/orgrt/agent-runner.js.map +1 -1
  155. package/dist/src/orgrt/checkpoint.d.ts +12 -1
  156. package/dist/src/orgrt/checkpoint.d.ts.map +1 -1
  157. package/dist/src/orgrt/checkpoint.js +15 -6
  158. package/dist/src/orgrt/checkpoint.js.map +1 -1
  159. package/dist/src/orgrt/completion-gate.d.ts +74 -0
  160. package/dist/src/orgrt/completion-gate.d.ts.map +1 -1
  161. package/dist/src/orgrt/completion-gate.js +45 -0
  162. package/dist/src/orgrt/completion-gate.js.map +1 -1
  163. package/dist/src/orgrt/cost-tier.d.ts +144 -0
  164. package/dist/src/orgrt/cost-tier.d.ts.map +1 -0
  165. package/dist/src/orgrt/cost-tier.js +183 -0
  166. package/dist/src/orgrt/cost-tier.js.map +1 -0
  167. package/dist/src/orgrt/cross-org.d.ts.map +1 -1
  168. package/dist/src/orgrt/cross-org.js +14 -0
  169. package/dist/src/orgrt/cross-org.js.map +1 -1
  170. package/dist/src/orgrt/daemon.d.ts +12 -1
  171. package/dist/src/orgrt/daemon.d.ts.map +1 -1
  172. package/dist/src/orgrt/daemon.js +216 -49
  173. package/dist/src/orgrt/daemon.js.map +1 -1
  174. package/dist/src/orgrt/decisions.d.ts +14 -2
  175. package/dist/src/orgrt/decisions.d.ts.map +1 -1
  176. package/dist/src/orgrt/decisions.js +216 -10
  177. package/dist/src/orgrt/decisions.js.map +1 -1
  178. package/dist/src/orgrt/file-roots.d.ts +7 -0
  179. package/dist/src/orgrt/file-roots.d.ts.map +1 -1
  180. package/dist/src/orgrt/file-roots.js +38 -1
  181. package/dist/src/orgrt/file-roots.js.map +1 -1
  182. package/dist/src/orgrt/forwarder.d.ts.map +1 -1
  183. package/dist/src/orgrt/forwarder.js +16 -2
  184. package/dist/src/orgrt/forwarder.js.map +1 -1
  185. package/dist/src/orgrt/idle-deadline.d.ts +74 -1
  186. package/dist/src/orgrt/idle-deadline.d.ts.map +1 -1
  187. package/dist/src/orgrt/idle-deadline.js +52 -2
  188. package/dist/src/orgrt/idle-deadline.js.map +1 -1
  189. package/dist/src/orgrt/loadouts.d.ts +38 -0
  190. package/dist/src/orgrt/loadouts.d.ts.map +1 -0
  191. package/dist/src/orgrt/loadouts.js +129 -0
  192. package/dist/src/orgrt/loadouts.js.map +1 -0
  193. package/dist/src/orgrt/mailbox.d.ts +17 -1
  194. package/dist/src/orgrt/mailbox.d.ts.map +1 -1
  195. package/dist/src/orgrt/mailbox.js +50 -3
  196. package/dist/src/orgrt/mailbox.js.map +1 -1
  197. package/dist/src/orgrt/policy.d.ts +42 -2
  198. package/dist/src/orgrt/policy.d.ts.map +1 -1
  199. package/dist/src/orgrt/policy.js +53 -8
  200. package/dist/src/orgrt/policy.js.map +1 -1
  201. package/dist/src/orgrt/prompt-vars.d.ts +11 -0
  202. package/dist/src/orgrt/prompt-vars.d.ts.map +1 -0
  203. package/dist/src/orgrt/prompt-vars.js +49 -0
  204. package/dist/src/orgrt/prompt-vars.js.map +1 -0
  205. package/dist/src/orgrt/questions.d.ts +22 -1
  206. package/dist/src/orgrt/questions.d.ts.map +1 -1
  207. package/dist/src/orgrt/questions.js +24 -3
  208. package/dist/src/orgrt/questions.js.map +1 -1
  209. package/dist/src/orgrt/review-packet.d.ts +29 -0
  210. package/dist/src/orgrt/review-packet.d.ts.map +1 -0
  211. package/dist/src/orgrt/review-packet.js +67 -0
  212. package/dist/src/orgrt/review-packet.js.map +1 -0
  213. package/dist/src/orgrt/role-sandbox.d.ts.map +1 -1
  214. package/dist/src/orgrt/role-sandbox.js +16 -3
  215. package/dist/src/orgrt/role-sandbox.js.map +1 -1
  216. package/dist/src/orgrt/session-ledger.d.ts +68 -0
  217. package/dist/src/orgrt/session-ledger.d.ts.map +1 -0
  218. package/dist/src/orgrt/session-ledger.js +128 -0
  219. package/dist/src/orgrt/session-ledger.js.map +1 -0
  220. package/dist/src/orgrt/session.d.ts +45 -5
  221. package/dist/src/orgrt/session.d.ts.map +1 -1
  222. package/dist/src/orgrt/session.js +397 -27
  223. package/dist/src/orgrt/session.js.map +1 -1
  224. package/dist/src/orgrt/task-dag.d.ts +34 -1
  225. package/dist/src/orgrt/task-dag.d.ts.map +1 -1
  226. package/dist/src/orgrt/task-dag.js +58 -7
  227. package/dist/src/orgrt/task-dag.js.map +1 -1
  228. package/dist/src/orgrt/tool-spill.d.ts +94 -0
  229. package/dist/src/orgrt/tool-spill.d.ts.map +1 -0
  230. package/dist/src/orgrt/tool-spill.js +180 -0
  231. package/dist/src/orgrt/tool-spill.js.map +1 -0
  232. package/dist/src/orgrt/types.d.ts +138 -0
  233. package/dist/src/orgrt/types.d.ts.map +1 -1
  234. package/dist/src/orgrt/types.js +148 -0
  235. package/dist/src/orgrt/types.js.map +1 -1
  236. package/dist/src/platform-adapters/renderers/mcp.d.ts +20 -2
  237. package/dist/src/platform-adapters/renderers/mcp.d.ts.map +1 -1
  238. package/dist/src/platform-adapters/renderers/mcp.js +25 -5
  239. package/dist/src/platform-adapters/renderers/mcp.js.map +1 -1
  240. package/dist/src/protocol-capabilities.d.ts +2 -1
  241. package/dist/src/protocol-capabilities.d.ts.map +1 -1
  242. package/dist/src/protocol-capabilities.js +2 -1
  243. package/dist/src/protocol-capabilities.js.map +1 -1
  244. package/dist/src/ui/dashboard.html +450 -164
  245. package/dist/src/ui/org-hil.mjs +276 -0
  246. package/dist/src/ui/org-runtime.mjs +350 -0
  247. package/dist/src/ui/orgs.html +15 -4
  248. package/dist/src/ui/routes-org.mjs +290 -541
  249. package/dist/src/ui/server.mjs +25 -5
  250. package/dist/tsconfig.tsbuildinfo +1 -1
  251. package/package.json +9 -8
@@ -0,0 +1,296 @@
1
+ /**
2
+ * GLU-07 — reading a capture as an MCP resource.
3
+ *
4
+ * A read has one job beyond handing over the text: make the text QUOTABLE.
5
+ * A model that receives 8kB of markdown with no idea where it came from will
6
+ * paraphrase it as its own; the same markdown with the url, the title, the
7
+ * capture time and the version in front of it gets cited. So every read is
8
+ * two parts —
9
+ *
10
+ * contents[0] text/markdown provenance front matter, then the page
11
+ * contents[1] application/json the same provenance, structured, plus
12
+ * chunk spans and citation anchors
13
+ *
14
+ * — and `textStartsAt` says where the front matter ends, so the character
15
+ * offsets in the chunk list still line up with the document itself.
16
+ *
17
+ * `?chunk=` / `?anchor=` read ONE PASSAGE instead, straight through
18
+ * `resolveCitation` (RCL-10): same offsets, same anchor, same W3C text
19
+ * fragment link, and the same `stale: true` when the anchor was cut against a
20
+ * version this page no longer is. This module deliberately owns none of that
21
+ * logic — a second implementation of "which passage is this" is how a citation
22
+ * and its quote drift apart.
23
+ *
24
+ * @module v1/cli/mcp-tools/capture-resource-read
25
+ */
26
+ import * as crypto from 'node:crypto';
27
+ import * as fs from 'node:fs';
28
+ import * as path from 'node:path';
29
+ import { buildCaptureUri, CAPTURE_JSON_MIME_TYPE, CAPTURE_MIME_TYPE, captureLibraryIndex, captureStoreRoot, isCaptureUri, loadCaptureDocuments, parseCaptureUri, } from './capture-resources.js';
30
+ /** A document longer than this is served truncated: an MCP client pastes the
31
+ * whole resource into a context window, and a 5MB archive would blow it. */
32
+ const MAX_TEXT_CHARS = 200_000;
33
+ /** Chunk spans carried inline. Beyond this the list is cut and says so —
34
+ * `?chunk=` still addresses every one of them. */
35
+ const MAX_CHUNKS = 200;
36
+ // ── Helpers ────────────────────────────────────────────────────────
37
+ function fileEntry(absolutePath) {
38
+ const stat = fs.statSync(absolutePath);
39
+ return {
40
+ path: absolutePath,
41
+ absolutePath,
42
+ extension: path.extname(absolutePath).toLowerCase(),
43
+ size: stat.size,
44
+ modified: stat.mtime,
45
+ created: stat.birthtime,
46
+ };
47
+ }
48
+ const sha256 = (text) => crypto.createHash('sha256').update(text).digest('hex');
49
+ /** YAML-safe scalar: quoted only when it would otherwise be ambiguous. */
50
+ function scalar(value) {
51
+ return /^\s|\s$|[\n\r"']|:\s|^[-?[\]{}#&*!|>%@`]/.test(value) ? JSON.stringify(value) : value;
52
+ }
53
+ function frontMatter(fields) {
54
+ const lines = fields
55
+ .filter(([, v]) => v !== undefined && v !== '')
56
+ .map(([k, v]) => `${k}: ${typeof v === 'number' ? v : scalar(v)}`);
57
+ return `---\n${lines.join('\n')}\n---\n\n`;
58
+ }
59
+ async function readText(filePath) {
60
+ const { extractText } = await import('../capabilities/cap-documents.js');
61
+ if (!fs.existsSync(filePath)) {
62
+ throw new Error(`source file is gone: ${filePath} (re-ingest the capture to read it)`);
63
+ }
64
+ const text = await extractText(fileEntry(filePath));
65
+ if (!text)
66
+ throw new Error(`no text could be extracted from ${filePath}`);
67
+ return text;
68
+ }
69
+ function provenanceOf(record) {
70
+ return record.provenance ?? {};
71
+ }
72
+ function urlOf(record) {
73
+ const prov = provenanceOf(record);
74
+ return record.canonicalUrl ?? prov.canonicalUrl ?? prov.url;
75
+ }
76
+ async function versionsOf(rootDir, identity, scope) {
77
+ const { listDocumentVersions } = await import('../knowledge/document-pipeline.js');
78
+ const seen = new Map();
79
+ for (const record of listDocumentVersions(rootDir, identity, scope)) {
80
+ if (!record.version)
81
+ continue;
82
+ seen.set(record.version, {
83
+ version: record.version,
84
+ uri: buildCaptureUri(scope, identity, { version: record.version }),
85
+ indexedAt: record.indexedAt,
86
+ contentHash: record.contentHash,
87
+ filePath: record.filePath,
88
+ });
89
+ }
90
+ return [...seen.values()].sort((a, b) => a.version - b.version);
91
+ }
92
+ // ── Reads ──────────────────────────────────────────────────────────
93
+ /**
94
+ * Read a capture: the whole page, one stored version, or one passage.
95
+ *
96
+ * Throws with a message meant for a human — an unknown page, a file that has
97
+ * been deleted since it was indexed and a chunk that does not exist are all
98
+ * things a caller must see, not silently get an empty document for.
99
+ */
100
+ export async function readCapture(uri, opts = {}) {
101
+ const parsed = parseCaptureUri(uri);
102
+ if (!parsed)
103
+ throw new Error(`not a capture uri: ${uri}`);
104
+ if (!parsed.identity) {
105
+ throw new Error(`${uri} is a library index, not a document — read it as JSON`);
106
+ }
107
+ if (parsed.version !== undefined && (parsed.chunkIndex !== undefined || parsed.anchor)) {
108
+ throw new Error('a passage read already names its version through the anchor: drop either v= or chunk=/anchor=');
109
+ }
110
+ const { scope, identity } = parsed;
111
+ const rootDir = await captureStoreRoot(scope, opts);
112
+ const { findDocumentRecord } = await import('../knowledge/document-pipeline.js');
113
+ if (parsed.chunkIndex !== undefined || parsed.anchor) {
114
+ return readPassage(uri, parsed.scope, identity, rootDir, {
115
+ ...(parsed.chunkIndex !== undefined ? { chunkIndex: parsed.chunkIndex } : {}),
116
+ ...(parsed.anchor ? { anchor: parsed.anchor } : {}),
117
+ });
118
+ }
119
+ let record = findDocumentRecord(rootDir, identity, scope);
120
+ const versions = await versionsOf(rootDir, identity, scope);
121
+ if (parsed.version !== undefined) {
122
+ const wanted = versions.find((v) => v.version === parsed.version);
123
+ if (!wanted) {
124
+ throw new Error(`version ${parsed.version} is not recorded for ${identity}` +
125
+ (versions.length ? ` (have ${versions.map((v) => v.version).join(', ')})` : ''));
126
+ }
127
+ const { listDocumentVersions } = await import('../knowledge/document-pipeline.js');
128
+ record = listDocumentVersions(rootDir, identity, scope).find((m) => m.version === parsed.version);
129
+ }
130
+ if (!record)
131
+ throw new Error(`not indexed: ${identity} (nothing at ${uri})`);
132
+ const text = await readText(record.filePath);
133
+ const contentHash = sha256(text);
134
+ const limit = Math.max(1, opts.maxChars ?? MAX_TEXT_CHARS);
135
+ const body = text.length > limit ? text.slice(0, limit) : text;
136
+ const { chunkSpans } = await import('../knowledge/document-pipeline.js');
137
+ const { citationAnchor } = await import('../knowledge/citation.js');
138
+ const spans = await chunkSpans(text);
139
+ const chunks = spans.slice(0, MAX_CHUNKS).map((span) => ({
140
+ chunkIndex: span.chunkIndex,
141
+ startChar: span.startChar,
142
+ endChar: span.endChar,
143
+ anchor: citationAnchor(contentHash, span.startChar, span.endChar),
144
+ uri: buildCaptureUri(scope, identity, { chunkIndex: span.chunkIndex }),
145
+ }));
146
+ const prov = provenanceOf(record);
147
+ const url = urlOf(record);
148
+ const { documentSite } = await import('../knowledge/library.js');
149
+ const stale = contentHash !== record.contentHash;
150
+ const matter = frontMatter([
151
+ ['uri', uri],
152
+ ['title', prov.title],
153
+ ['url', url],
154
+ ['byline', prov.byline],
155
+ ['capturedAt', prov.capturedAt],
156
+ ['publishedAt', prov.publishedAt],
157
+ ['version', record.version],
158
+ ['source', prov.source],
159
+ ['collection', prov.collection],
160
+ ['tags', prov.tags?.join(', ')],
161
+ ['contentHash', contentHash.slice(0, 12)],
162
+ ['scope', scope],
163
+ ['stale', stale ? 'true' : undefined],
164
+ ['truncated', text.length > limit ? 'true' : undefined],
165
+ ]);
166
+ const info = {
167
+ uri,
168
+ scope,
169
+ filePath: record.filePath,
170
+ ...(prov.title ? { title: prov.title } : {}),
171
+ ...(url ? { url } : {}),
172
+ ...(documentSite(record) ? { site: documentSite(record) } : {}),
173
+ ...(prov.capturedAt ? { capturedAt: prov.capturedAt } : {}),
174
+ indexedAt: record.indexedAt,
175
+ ...(prov.publishedAt ? { publishedAt: prov.publishedAt } : {}),
176
+ ...(prov.byline ? { byline: prov.byline } : {}),
177
+ ...(prov.httpStatus !== undefined ? { httpStatus: prov.httpStatus } : {}),
178
+ ...(prov.note ? { note: prov.note } : {}),
179
+ ...(prov.source ? { source: prov.source } : {}),
180
+ ...(prov.collection ? { collection: prov.collection } : {}),
181
+ tags: prov.tags ?? [],
182
+ ...(record.version ? { version: record.version } : {}),
183
+ ...(versions.length > 1 ? { versions } : {}),
184
+ contentHash,
185
+ indexedContentHash: record.contentHash,
186
+ ...(stale ? { stale: true } : {}),
187
+ chunkCount: record.chunkCount,
188
+ size: record.size,
189
+ textChars: text.length,
190
+ ...(text.length > limit ? { truncated: true } : {}),
191
+ textStartsAt: matter.length,
192
+ chunks,
193
+ ...(spans.length > chunks.length ? { chunksTruncated: true } : {}),
194
+ };
195
+ return { uri, markdown: `${matter}${body}`, info };
196
+ }
197
+ /** One passage, through `resolveCitation` so the quote, the anchor, the link
198
+ * and the staleness verdict are the same ones `monomind doc cite` gives. */
199
+ async function readPassage(uri, scope, identity, rootDir, where) {
200
+ const { resolveCitation } = await import('../knowledge/citation.js');
201
+ const citation = await resolveCitation(identity, { rootDir, scope, ...where });
202
+ const matter = frontMatter([
203
+ ['uri', uri],
204
+ ['title', citation.title],
205
+ ['url', citation.url],
206
+ ['capturedAt', citation.capturedAt],
207
+ ['version', citation.version],
208
+ ['source', citation.source],
209
+ ['chunk', citation.chunkIndex],
210
+ ['anchor', citation.anchor],
211
+ ['citeUrl', citation.citeUrl],
212
+ ['scope', citation.scope],
213
+ ['stale', citation.stale ? 'true' : undefined],
214
+ ]);
215
+ const markdown = `${matter}> ${citation.quote}\n\n${citation.passage}`;
216
+ const prov = citation.provenance ?? {};
217
+ return {
218
+ uri,
219
+ markdown,
220
+ info: {
221
+ uri,
222
+ scope: citation.scope,
223
+ filePath: citation.filePath,
224
+ ...(citation.title ? { title: citation.title } : {}),
225
+ ...(citation.url ? { url: citation.url } : {}),
226
+ ...(citation.capturedAt ? { capturedAt: citation.capturedAt } : {}),
227
+ indexedAt: '',
228
+ ...(prov.byline ? { byline: prov.byline } : {}),
229
+ ...(citation.source ? { source: citation.source } : {}),
230
+ ...(prov.collection ? { collection: prov.collection } : {}),
231
+ tags: prov.tags ?? [],
232
+ ...(citation.version ? { version: citation.version } : {}),
233
+ contentHash: citation.contentHash,
234
+ indexedContentHash: citation.contentHash,
235
+ ...(citation.stale ? { stale: true } : {}),
236
+ chunkCount: 0,
237
+ size: citation.passage.length,
238
+ textChars: citation.passage.length,
239
+ textStartsAt: matter.length,
240
+ chunks: [],
241
+ chunkIndex: citation.chunkIndex,
242
+ startChar: citation.startChar,
243
+ endChar: citation.endChar,
244
+ anchor: citation.anchor,
245
+ passage: citation.passage,
246
+ quote: citation.quote,
247
+ ...(citation.citeUrl ? { citeUrl: citation.citeUrl } : {}),
248
+ },
249
+ };
250
+ }
251
+ /**
252
+ * MCP `resources/read` contents for any `capture://` uri: the scope's library
253
+ * index as JSON, or a document as markdown plus its provenance.
254
+ */
255
+ export async function captureResourceContents(uri, opts = {}) {
256
+ if (!isCaptureUri(uri))
257
+ throw new Error(`not a capture uri: ${uri}`);
258
+ const parsed = parseCaptureUri(uri);
259
+ if (!parsed)
260
+ throw new Error(`malformed capture uri: ${uri}`);
261
+ if (!parsed.identity) {
262
+ const docs = await loadCaptureDocuments(opts);
263
+ const index = captureLibraryIndex(docs, parsed.scope);
264
+ return {
265
+ contents: [{ uri, mimeType: CAPTURE_JSON_MIME_TYPE, text: JSON.stringify(index, null, 2) }],
266
+ };
267
+ }
268
+ const read = await readCapture(uri, opts);
269
+ return {
270
+ contents: [
271
+ { uri, mimeType: CAPTURE_MIME_TYPE, text: read.markdown },
272
+ { uri, mimeType: CAPTURE_JSON_MIME_TYPE, text: JSON.stringify(read.info, null, 2) },
273
+ ],
274
+ };
275
+ }
276
+ /** The uri for a page a caller names by url or path, searching both stores —
277
+ * captures live in the global brain, so a project-only lookup would deny
278
+ * knowing a page the user saved minutes ago. */
279
+ export async function resolveCaptureUri(target, opts = {}) {
280
+ const { findDocumentRecord } = await import('../knowledge/document-pipeline.js');
281
+ const { captureUriFor } = await import('./capture-resources.js');
282
+ const { getGlobalBrainDir, getProjectRoot } = await import('../memory/memory-bridge.js');
283
+ const store = opts.store ?? 'all';
284
+ const roots = [];
285
+ if (store !== 'global')
286
+ roots.push(opts.rootDir ?? getProjectRoot());
287
+ if (store !== 'project')
288
+ roots.push(opts.globalRoot ?? getGlobalBrainDir());
289
+ for (const root of roots) {
290
+ const record = findDocumentRecord(root, target);
291
+ if (record)
292
+ return captureUriFor(record);
293
+ }
294
+ return undefined;
295
+ }
296
+ //# sourceMappingURL=capture-resource-read.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capture-resource-read.js","sourceRoot":"","sources":["../../../src/mcp-tools/capture-resource-read.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * GLU-07 — the tool half of captures-as-resources.
3
+ *
4
+ * Resources are the point (`resource-router.ts`), but two things they cannot
5
+ * do are worth a tool each:
6
+ *
7
+ * - `resources/list` has no filter parameters in the protocol, and a library
8
+ * of thousands of pages needs "from this site, tagged that, since last
9
+ * week" rather than a cursor walk. `knowledge_captures` is that query, and
10
+ * it hands back the resource URI of every hit so the agent can switch to
11
+ * the resource surface for the actual read.
12
+ * - a client that does not implement resources at all still deserves the
13
+ * provenance-carrying read: `knowledge_capture_read`.
14
+ *
15
+ * Both are thin: the work lives in `capture-resources.ts`, `library.ts` and
16
+ * `citation.ts`.
17
+ *
18
+ * @module v1/cli/mcp-tools/capture-resource-tools
19
+ */
20
+ import type { MCPTool } from './types.js';
21
+ export declare const captureResourceTools: MCPTool[];
22
+ //# sourceMappingURL=capture-resource-tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capture-resource-tools.d.ts","sourceRoot":"","sources":["../../../src/mcp-tools/capture-resource-tools.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAiB,MAAM,YAAY,CAAC;AAmLzD,eAAO,MAAM,oBAAoB,EAAE,OAAO,EAA8C,CAAC"}
@@ -0,0 +1,182 @@
1
+ /**
2
+ * GLU-07 — the tool half of captures-as-resources.
3
+ *
4
+ * Resources are the point (`resource-router.ts`), but two things they cannot
5
+ * do are worth a tool each:
6
+ *
7
+ * - `resources/list` has no filter parameters in the protocol, and a library
8
+ * of thousands of pages needs "from this site, tagged that, since last
9
+ * week" rather than a cursor walk. `knowledge_captures` is that query, and
10
+ * it hands back the resource URI of every hit so the agent can switch to
11
+ * the resource surface for the actual read.
12
+ * - a client that does not implement resources at all still deserves the
13
+ * provenance-carrying read: `knowledge_capture_read`.
14
+ *
15
+ * Both are thin: the work lives in `capture-resources.ts`, `library.ts` and
16
+ * `citation.ts`.
17
+ *
18
+ * @module v1/cli/mcp-tools/capture-resource-tools
19
+ */
20
+ const json = (data, isError = false) => ({
21
+ content: [{ type: 'text', text: JSON.stringify(data) }],
22
+ ...(isError ? { isError: true } : {}),
23
+ });
24
+ const fail = (error) => json({ success: false, error }, true);
25
+ /** A repeated string filter, from a string or an array of them. */
26
+ function strList(value) {
27
+ const items = Array.isArray(value) ? value : typeof value === 'string' ? [value] : [];
28
+ const out = items.filter((v) => typeof v === 'string' && v.trim() !== '');
29
+ return out.length ? out : undefined;
30
+ }
31
+ const str = (value) => typeof value === 'string' && value.trim() ? value.trim() : undefined;
32
+ const MAX_TARGET_CHARS = 2048;
33
+ const knowledgeCaptures = {
34
+ name: 'knowledge_captures',
35
+ description: 'Browse captured pages in the second brain (the MCP `capture://` resources), filtered by ' +
36
+ 'site, tag, collection, source or capture date. Returns each page with its resource URI, ' +
37
+ 'title, URL, capture time and version — read one with knowledge_capture_read or by ' +
38
+ 'reading its resource URI directly. Searches both the project store and the personal ' +
39
+ 'global brain, which is where browser captures land.',
40
+ category: 'knowledge',
41
+ tags: ['captures', 'library', 'resources', 'second-brain'],
42
+ inputSchema: {
43
+ type: 'object',
44
+ properties: {
45
+ site: {
46
+ type: 'array',
47
+ items: { type: 'string' },
48
+ description: 'Host, or a parent domain of it (example.com matches docs.example.com)',
49
+ },
50
+ tag: { type: 'array', items: { type: 'string' }, description: 'Capture tags (OR)' },
51
+ collection: { type: 'array', items: { type: 'string' }, description: 'Collections (OR)' },
52
+ source: {
53
+ type: 'array',
54
+ items: { type: 'string' },
55
+ description: "'extension' | 'monobrowse' | 'crawl'",
56
+ },
57
+ since: { type: 'string', description: 'ISO date/time, or an age: 7d, 24h, 30m' },
58
+ until: { type: 'string', description: 'ISO date/time, or an age' },
59
+ text: { type: 'string', description: 'Substring over title, URL, path and note' },
60
+ scope: { type: 'string', description: 'Knowledge scope (e.g. global, shared)' },
61
+ store: { type: 'string', description: "'project' | 'global' | 'all' (default: all)" },
62
+ sort: { type: 'string', description: 'captured (default) | indexed | title | path | size' },
63
+ order: { type: 'string', description: "'desc' (default) | 'asc'" },
64
+ limit: { type: 'number', description: 'Page size (default 50, max 200)' },
65
+ cursor: { type: 'string', description: 'nextCursor from a previous call' },
66
+ includeLocal: {
67
+ type: 'boolean',
68
+ description: 'Also list ordinary indexed files, which are not captures',
69
+ },
70
+ facets: { type: 'boolean', description: 'Include site/tag/collection/source counts' },
71
+ },
72
+ },
73
+ handler: async (input) => {
74
+ try {
75
+ const { listCaptureResources, loadCaptureDocuments, selectCaptureDocuments } = await import('./capture-resources.js');
76
+ const store = str(input.store);
77
+ const docs = await loadCaptureDocuments(store === 'project' || store === 'global' || store === 'all' ? { store } : {});
78
+ const opts = {
79
+ ...(strList(input.site) ? { site: strList(input.site) } : {}),
80
+ ...(strList(input.tag) ? { tag: strList(input.tag) } : {}),
81
+ ...(strList(input.collection) ? { collection: strList(input.collection) } : {}),
82
+ ...(strList(input.source) ? { source: strList(input.source) } : {}),
83
+ ...(str(input.since) ? { since: str(input.since) } : {}),
84
+ ...(str(input.until) ? { until: str(input.until) } : {}),
85
+ ...(str(input.text) ? { text: str(input.text) } : {}),
86
+ ...(str(input.scope) ? { scope: str(input.scope) } : {}),
87
+ ...(str(input.sort) ? { sort: str(input.sort) } : {}),
88
+ ...(input.order === 'asc' ? { order: 'asc' } : {}),
89
+ ...(typeof input.limit === 'number' ? { pageSize: input.limit } : {}),
90
+ ...(str(input.cursor) ? { cursor: str(input.cursor) } : {}),
91
+ ...(input.includeLocal === true ? { includeLocal: true } : {}),
92
+ };
93
+ const page = listCaptureResources(docs, opts);
94
+ const body = {
95
+ success: true,
96
+ total: page.total,
97
+ captures: page.rows,
98
+ ...(page.nextCursor ? { nextCursor: page.nextCursor } : {}),
99
+ };
100
+ if (input.facets === true) {
101
+ const { libraryFacets } = await import('../knowledge/library.js');
102
+ body.facets = libraryFacets(selectCaptureDocuments(docs, opts));
103
+ }
104
+ return json(body);
105
+ }
106
+ catch (err) {
107
+ return fail(err instanceof Error ? err.message : String(err));
108
+ }
109
+ },
110
+ };
111
+ const knowledgeCaptureRead = {
112
+ name: 'knowledge_capture_read',
113
+ description: 'Read one captured page with its provenance: the readable Markdown plus url, title, ' +
114
+ 'capture time, version and citation anchors, so a quote can be cited. Takes a ' +
115
+ 'capture:// resource URI, or the page URL / indexed file path. `chunk` or `anchor` ' +
116
+ 'returns one passage with a link that lands on it; a passage or page whose file ' +
117
+ 'changed since it was indexed comes back flagged stale.',
118
+ category: 'knowledge',
119
+ tags: ['captures', 'citation', 'provenance', 'second-brain'],
120
+ inputSchema: {
121
+ type: 'object',
122
+ properties: {
123
+ uri: { type: 'string', description: 'capture://<scope>/<percent-encoded url>' },
124
+ url: { type: 'string', description: 'The page URL or indexed file path, instead of a uri' },
125
+ version: { type: 'number', description: 'A stored version (default: the current one)' },
126
+ chunk: { type: 'number', description: 'Return only this chunk, as a citable passage' },
127
+ anchor: { type: 'string', description: 'Citation anchor <hash12>#<start>-<end>' },
128
+ maxChars: { type: 'number', description: 'Truncate the document text (default 200000)' },
129
+ includeText: {
130
+ type: 'boolean',
131
+ description: 'Include the Markdown itself (default true)',
132
+ },
133
+ },
134
+ },
135
+ handler: async (input) => {
136
+ try {
137
+ const { buildCaptureUri, isCaptureUri, parseCaptureUri } = await import('./capture-resources.js');
138
+ const { readCapture, resolveCaptureUri } = await import('./capture-resource-read.js');
139
+ const rawUri = str(input.uri);
140
+ const target = str(input.url);
141
+ if (!rawUri && !target)
142
+ return fail('pass either uri or url');
143
+ if ((rawUri ?? target ?? '').length > MAX_TARGET_CHARS) {
144
+ return fail(`uri/url is longer than ${MAX_TARGET_CHARS} characters`);
145
+ }
146
+ let uri = rawUri;
147
+ if (!uri) {
148
+ uri = await resolveCaptureUri(target);
149
+ if (!uri)
150
+ return fail(`not indexed: ${target}`);
151
+ }
152
+ else if (!isCaptureUri(uri)) {
153
+ return fail(`not a capture uri: ${uri}`);
154
+ }
155
+ // Extras given as arguments win over anything already in the uri.
156
+ const parsed = parseCaptureUri(uri);
157
+ if (!parsed)
158
+ return fail(`malformed capture uri: ${uri}`);
159
+ const extras = {
160
+ ...(typeof input.version === 'number' ? { version: input.version } : {}),
161
+ ...(typeof input.chunk === 'number' ? { chunkIndex: input.chunk } : {}),
162
+ ...(str(input.anchor) ? { anchor: str(input.anchor) } : {}),
163
+ };
164
+ const finalUri = Object.keys(extras).length
165
+ ? buildCaptureUri(parsed.scope, parsed.identity, extras)
166
+ : uri;
167
+ const read = await readCapture(finalUri, {
168
+ ...(typeof input.maxChars === 'number' ? { maxChars: input.maxChars } : {}),
169
+ });
170
+ return json({
171
+ success: true,
172
+ ...read.info,
173
+ ...(input.includeText === false ? {} : { markdown: read.markdown }),
174
+ });
175
+ }
176
+ catch (err) {
177
+ return fail(err instanceof Error ? err.message : String(err));
178
+ }
179
+ },
180
+ };
181
+ export const captureResourceTools = [knowledgeCaptures, knowledgeCaptureRead];
182
+ //# sourceMappingURL=capture-resource-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capture-resource-tools.js","sourceRoot":"","sources":["../../../src/mcp-tools/capture-resource-tools.ts"],"names":[],"mappings":"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"}