@bendyline/docblocks-cli 2.0.0 → 2.1.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 (114) hide show
  1. package/README.md +5 -16
  2. package/dist/index.d.ts +2 -2
  3. package/dist/index.js +7183 -18
  4. package/dist/index.js.map +1 -1
  5. package/package.json +9 -9
  6. package/dist/commands/build.d.ts +0 -14
  7. package/dist/commands/build.d.ts.map +0 -1
  8. package/dist/commands/build.js +0 -74
  9. package/dist/commands/build.js.map +0 -1
  10. package/dist/commands/convert.d.ts +0 -42
  11. package/dist/commands/convert.d.ts.map +0 -1
  12. package/dist/commands/convert.js +0 -339
  13. package/dist/commands/convert.js.map +0 -1
  14. package/dist/commands/init.d.ts +0 -3
  15. package/dist/commands/init.d.ts.map +0 -1
  16. package/dist/commands/init.js +0 -23
  17. package/dist/commands/init.js.map +0 -1
  18. package/dist/commands/mcp.d.ts +0 -12
  19. package/dist/commands/mcp.d.ts.map +0 -1
  20. package/dist/commands/mcp.js +0 -106
  21. package/dist/commands/mcp.js.map +0 -1
  22. package/dist/commands/parse.d.ts +0 -6
  23. package/dist/commands/parse.d.ts.map +0 -1
  24. package/dist/commands/parse.js +0 -38
  25. package/dist/commands/parse.js.map +0 -1
  26. package/dist/commands/serve.d.ts +0 -36
  27. package/dist/commands/serve.d.ts.map +0 -1
  28. package/dist/commands/serve.js +0 -347
  29. package/dist/commands/serve.js.map +0 -1
  30. package/dist/commands/themes.d.ts +0 -6
  31. package/dist/commands/themes.d.ts.map +0 -1
  32. package/dist/commands/themes.js +0 -15
  33. package/dist/commands/themes.js.map +0 -1
  34. package/dist/commands/transforms.d.ts +0 -6
  35. package/dist/commands/transforms.d.ts.map +0 -1
  36. package/dist/commands/transforms.js +0 -15
  37. package/dist/commands/transforms.js.map +0 -1
  38. package/dist/commands/video.d.ts +0 -38
  39. package/dist/commands/video.d.ts.map +0 -1
  40. package/dist/commands/video.js +0 -136
  41. package/dist/commands/video.js.map +0 -1
  42. package/dist/contained-file.d.ts +0 -8
  43. package/dist/contained-file.d.ts.map +0 -1
  44. package/dist/contained-file.js +0 -77
  45. package/dist/contained-file.js.map +0 -1
  46. package/dist/index.d.ts.map +0 -1
  47. package/dist/mcp/agentic-tools.d.ts +0 -16
  48. package/dist/mcp/agentic-tools.d.ts.map +0 -1
  49. package/dist/mcp/agentic-tools.js +0 -967
  50. package/dist/mcp/agentic-tools.js.map +0 -1
  51. package/dist/mcp/artifact-store.d.ts +0 -98
  52. package/dist/mcp/artifact-store.d.ts.map +0 -1
  53. package/dist/mcp/artifact-store.js +0 -542
  54. package/dist/mcp/artifact-store.js.map +0 -1
  55. package/dist/mcp/authority.d.ts +0 -53
  56. package/dist/mcp/authority.d.ts.map +0 -1
  57. package/dist/mcp/authority.js +0 -433
  58. package/dist/mcp/authority.js.map +0 -1
  59. package/dist/mcp/conversion-service.d.ts +0 -111
  60. package/dist/mcp/conversion-service.d.ts.map +0 -1
  61. package/dist/mcp/conversion-service.js +0 -512
  62. package/dist/mcp/conversion-service.js.map +0 -1
  63. package/dist/mcp/discovery-tools.d.ts +0 -4
  64. package/dist/mcp/discovery-tools.d.ts.map +0 -1
  65. package/dist/mcp/discovery-tools.js +0 -114
  66. package/dist/mcp/discovery-tools.js.map +0 -1
  67. package/dist/mcp/document-service.d.ts +0 -47
  68. package/dist/mcp/document-service.d.ts.map +0 -1
  69. package/dist/mcp/document-service.js +0 -424
  70. package/dist/mcp/document-service.js.map +0 -1
  71. package/dist/mcp/error-result.d.ts +0 -17
  72. package/dist/mcp/error-result.d.ts.map +0 -1
  73. package/dist/mcp/error-result.js +0 -82
  74. package/dist/mcp/error-result.js.map +0 -1
  75. package/dist/mcp/intelligence.d.ts +0 -15
  76. package/dist/mcp/intelligence.d.ts.map +0 -1
  77. package/dist/mcp/intelligence.js +0 -855
  78. package/dist/mcp/intelligence.js.map +0 -1
  79. package/dist/mcp/output-bounds.d.ts +0 -13
  80. package/dist/mcp/output-bounds.d.ts.map +0 -1
  81. package/dist/mcp/output-bounds.js +0 -61
  82. package/dist/mcp/output-bounds.js.map +0 -1
  83. package/dist/mcp/preview-service.d.ts +0 -54
  84. package/dist/mcp/preview-service.d.ts.map +0 -1
  85. package/dist/mcp/preview-service.js +0 -454
  86. package/dist/mcp/preview-service.js.map +0 -1
  87. package/dist/mcp/progress.d.ts +0 -18
  88. package/dist/mcp/progress.d.ts.map +0 -1
  89. package/dist/mcp/progress.js +0 -28
  90. package/dist/mcp/progress.js.map +0 -1
  91. package/dist/mcp/prompts.d.ts +0 -4
  92. package/dist/mcp/prompts.d.ts.map +0 -1
  93. package/dist/mcp/prompts.js +0 -124
  94. package/dist/mcp/prompts.js.map +0 -1
  95. package/dist/mcp/rendered-conversion.d.ts +0 -34
  96. package/dist/mcp/rendered-conversion.d.ts.map +0 -1
  97. package/dist/mcp/rendered-conversion.js +0 -364
  98. package/dist/mcp/rendered-conversion.js.map +0 -1
  99. package/dist/mcp/server.d.ts +0 -69
  100. package/dist/mcp/server.d.ts.map +0 -1
  101. package/dist/mcp/server.js +0 -249
  102. package/dist/mcp/server.js.map +0 -1
  103. package/dist/preview-policy.d.ts +0 -8
  104. package/dist/preview-policy.d.ts.map +0 -1
  105. package/dist/preview-policy.js +0 -85
  106. package/dist/preview-policy.js.map +0 -1
  107. package/dist/render-html.d.ts +0 -17
  108. package/dist/render-html.d.ts.map +0 -1
  109. package/dist/render-html.js +0 -85
  110. package/dist/render-html.js.map +0 -1
  111. package/dist/version.d.ts +0 -6
  112. package/dist/version.d.ts.map +0 -1
  113. package/dist/version.js +0 -104
  114. package/dist/version.js.map +0 -1
@@ -1,433 +0,0 @@
1
- import { lstat, link, open, realpath, rename, stat, unlink } from 'node:fs/promises';
2
- import path from 'node:path';
3
- import { createHash, randomUUID } from 'node:crypto';
4
- import { MCP_WIRE_LIMITS } from '@bendyline/docblocks/mcp';
5
- import { readContainedFile } from '../contained-file.js';
6
- const DEFAULT_MAX_INPUT_FILE_BYTES = 100 * 1024 * 1024;
7
- export const MCP_FILE_AUTHORITY_LIMITS = Object.freeze({
8
- maxInputFileBytes: 1024 * 1024 * 1024,
9
- maxRootsPerCapability: 64,
10
- });
11
- const MAX_PATH_CHARACTERS = 4096;
12
- const MATERIALIZATION_WRITE_CHUNK_BYTES = 1024 * 1024;
13
- const HASH_READ_CHUNK_BYTES = 64 * 1024;
14
- const materializationTails = new Map();
15
- /** Host-startup authority. Tool arguments can narrow it but can never expand it. */
16
- export class McpFileAuthority {
17
- constructor(readRoots, writeRoots, maxInputFileBytes, dependencies) {
18
- this.readRoots = readRoots;
19
- this.writeRoots = writeRoots;
20
- this.maxInputFileBytes = maxInputFileBytes;
21
- this.dependencies = dependencies;
22
- }
23
- static async create(options = {}, dependencies = {}) {
24
- const maxInputFileBytes = options.maxInputFileBytes ?? DEFAULT_MAX_INPUT_FILE_BYTES;
25
- if (!Number.isSafeInteger(maxInputFileBytes) ||
26
- maxInputFileBytes < 1 ||
27
- maxInputFileBytes > MCP_FILE_AUTHORITY_LIMITS.maxInputFileBytes) {
28
- throw new Error('Invalid MCP input file limit');
29
- }
30
- if ((options.readRoots?.length ?? 0) > MCP_FILE_AUTHORITY_LIMITS.maxRootsPerCapability ||
31
- (options.writeRoots?.length ?? 0) > MCP_FILE_AUTHORITY_LIMITS.maxRootsPerCapability) {
32
- throw new Error('MCP authority has too many configured roots');
33
- }
34
- return new McpFileAuthority(await resolveRoots(options.readRoots ?? []), await resolveRoots(options.writeRoots ?? []), maxInputFileBytes, dependencies);
35
- }
36
- async authorizeRead(requestedPath) {
37
- const candidate = validatePath(requestedPath);
38
- const physical = await realpath(candidate).catch(() => null);
39
- if (!physical || !this.readRoots.some((root) => isPathInside(root.physical, physical))) {
40
- throw new Error('MCP read path is outside the configured roots');
41
- }
42
- const info = await stat(physical);
43
- if (!info.isFile())
44
- throw new Error('MCP input must be a regular file');
45
- if (info.size > this.maxInputFileBytes) {
46
- throw new Error('MCP input exceeds the configured file-size limit');
47
- }
48
- return physical;
49
- }
50
- /** Opaque, non-authoritative aliases for the roots granted at server startup. */
51
- listRoots() {
52
- const roots = new Map();
53
- for (const root of this.readRoots) {
54
- roots.set(root.id, {
55
- id: root.id,
56
- label: rootLabel(root.physical),
57
- read: true,
58
- write: this.writeRoots.some((candidate) => candidate.id === root.id),
59
- });
60
- }
61
- for (const root of this.writeRoots) {
62
- const existing = roots.get(root.id);
63
- roots.set(root.id, {
64
- id: root.id,
65
- label: existing?.label ?? rootLabel(root.physical),
66
- read: existing?.read ?? false,
67
- write: true,
68
- });
69
- }
70
- return [...roots.values()].sort((left, right) => left.id.localeCompare(right.id));
71
- }
72
- /** Resolve a root-relative read without ever treating the alias as new authority. */
73
- async authorizeRootRead(rootId, workspacePath) {
74
- const root = this.readRoots.find((candidate) => candidate.id === rootId);
75
- if (!root)
76
- throw new Error('Unknown or unreadable MCP root');
77
- const candidate = path.join(root.physical, ...parseRootRelativePath(workspacePath));
78
- const physical = await realpath(candidate).catch(() => null);
79
- if (!physical || !isPathInside(root.physical, physical)) {
80
- throw new Error('MCP read path is outside the selected root');
81
- }
82
- return this.authorizeRead(physical);
83
- }
84
- /** Resolve a root-relative write without ever treating the alias as new authority. */
85
- async authorizeRootWrite(rootId, workspacePath) {
86
- const root = this.writeRoots.find((candidate) => candidate.id === rootId);
87
- if (!root)
88
- throw new Error('Unknown or unwritable MCP root');
89
- const candidate = path.join(root.physical, ...parseRootRelativePath(workspacePath));
90
- const authorized = await this.authorizeWrite(candidate);
91
- const physicalParent = await realpath(path.dirname(authorized));
92
- if (!isPathInside(root.physical, physicalParent)) {
93
- throw new Error('MCP write path is outside the selected root');
94
- }
95
- return authorized;
96
- }
97
- async readFile(requestedPath, signal) {
98
- signal?.throwIfAborted();
99
- const physical = await this.authorizeRead(requestedPath);
100
- signal?.throwIfAborted();
101
- const root = this.readRoots.find((candidate) => isPathInside(candidate.physical, physical));
102
- if (!root)
103
- throw new Error('MCP read path is outside the configured roots');
104
- return readContainedFile(root.physical, physical, this.maxInputFileBytes, {
105
- signal,
106
- afterReadChunk: this.dependencies.afterInputReadChunk,
107
- });
108
- }
109
- async authorizeWrite(requestedPath) {
110
- const candidate = validatePath(requestedPath);
111
- const filename = path.basename(candidate);
112
- validatePortableFilename(filename);
113
- const existing = await lstat(candidate).catch(() => null);
114
- if (existing?.isSymbolicLink()) {
115
- throw new Error('MCP output cannot replace a symbolic link or junction');
116
- }
117
- if (existing && !existing.isFile()) {
118
- throw new Error('MCP output target must be a regular file');
119
- }
120
- const nearest = await nearestExistingPath(existing ? candidate : path.dirname(candidate));
121
- const physicalTarget = existing ? await realpath(candidate) : null;
122
- const physicalParent = physicalTarget ? path.dirname(physicalTarget) : await realpath(nearest);
123
- if (!this.writeRoots.some((root) => isPathInside(root.physical, physicalParent))) {
124
- throw new Error('MCP write path is outside the configured roots');
125
- }
126
- // Preserve the caller's exact filename while anchoring it below the
127
- // physically authorized parent. Missing nested parents are intentionally
128
- // rejected; converters should not create arbitrary directory trees.
129
- if (!existing && !samePath(nearest, path.dirname(candidate))) {
130
- throw new Error('MCP output parent directory does not exist');
131
- }
132
- return physicalTarget ?? path.join(physicalParent, filename);
133
- }
134
- /** Publish bounded bytes through an operation-owned sibling file. */
135
- async materializeBytes(requestedPath, content, maximumBytes, options = {}) {
136
- const signal = options.signal;
137
- signal?.throwIfAborted();
138
- if (!Number.isSafeInteger(maximumBytes) ||
139
- maximumBytes < 0 ||
140
- content.byteLength > maximumBytes) {
141
- throw new Error('MCP binary output exceeds the configured limit');
142
- }
143
- const ifExists = options.ifExists ?? 'error';
144
- if (ifExists !== 'error' && ifExists !== 'replace') {
145
- throw new Error('Invalid MCP materialization mode');
146
- }
147
- const expectedSha256 = options.expectedSha256?.toLowerCase();
148
- if (expectedSha256 && !/^[a-f0-9]{64}$/u.test(expectedSha256)) {
149
- throw new Error('Invalid expected SHA-256');
150
- }
151
- if (ifExists === 'replace' && !expectedSha256) {
152
- throw new Error('MCP replacement requires an expected SHA-256');
153
- }
154
- if (ifExists === 'error' && expectedSha256) {
155
- throw new Error('MCP no-replace publication cannot include an expected SHA-256');
156
- }
157
- const initialTarget = await this.authorizeWrite(requestedPath);
158
- return withMaterializationLock(initialTarget, async () => {
159
- signal?.throwIfAborted();
160
- const target = await this.authorizeWrite(requestedPath);
161
- if (!samePath(initialTarget, target)) {
162
- throw new Error('MCP output changed physical identity before materialization');
163
- }
164
- const parentIdentity = await readMaterializationParentIdentity(target, this.writeRoots);
165
- const current = await lstat(target).catch(() => null);
166
- if (current?.isSymbolicLink())
167
- throw new Error('MCP output cannot replace a symbolic link');
168
- if (ifExists === 'error' && current)
169
- throw new Error('MCP output already exists');
170
- if (expectedSha256) {
171
- if (!current?.isFile())
172
- throw new Error('MCP output hash precondition failed');
173
- const actual = await hashFileBounded(target, this.maxInputFileBytes, signal, this.dependencies.afterMaterializationHashChunk);
174
- if (actual !== expectedSha256)
175
- throw new Error('MCP output hash precondition failed');
176
- }
177
- const temporary = path.join(path.dirname(target), `.${path.basename(target)}.${process.pid}.${randomUUID()}.tmp`);
178
- let handle = null;
179
- try {
180
- signal?.throwIfAborted();
181
- handle = await open(temporary, 'wx');
182
- await writeFileHandle(handle, content, signal, this.dependencies.afterMaterializationWriteChunk);
183
- signal?.throwIfAborted();
184
- await handle.sync();
185
- await handle.close();
186
- handle = null;
187
- await this.dependencies.afterMaterializationStage?.(temporary);
188
- signal?.throwIfAborted();
189
- if (expectedSha256) {
190
- // Staging can be expensive. Revalidate after it completes so a
191
- // writer that changed the target during staging is never silently
192
- // overwritten by this process.
193
- const actual = await hashFileBounded(target, this.maxInputFileBytes, signal, this.dependencies.afterMaterializationHashChunk);
194
- if (actual !== expectedSha256)
195
- throw new Error('MCP output hash precondition failed');
196
- }
197
- signal?.throwIfAborted();
198
- await assertMaterializationParentIdentity(target, parentIdentity, this.writeRoots);
199
- if (ifExists === 'error') {
200
- // Hard-link publication is an atomic create-if-absent operation on the
201
- // same filesystem. The operation-owned temporary is removed below.
202
- await link(temporary, target);
203
- }
204
- else {
205
- // Node exposes atomic replacement but not a cross-platform atomic
206
- // compare-and-swap primitive. The process lock and post-stage hash
207
- // recheck provide process-strong conditional replacement; the wire
208
- // contract deliberately does not claim storage-atomic strength.
209
- await rename(temporary, target);
210
- }
211
- notifyMaterializationPublished(this.dependencies.afterMaterializationPublish, target);
212
- return target;
213
- }
214
- finally {
215
- await handle?.close().catch(() => undefined);
216
- await unlink(temporary).catch(() => undefined);
217
- }
218
- });
219
- }
220
- }
221
- async function resolveRoots(values) {
222
- const roots = [];
223
- for (const value of values) {
224
- const lexical = validatePath(value);
225
- const physical = await realpath(lexical);
226
- const info = await stat(physical);
227
- if (!info.isDirectory())
228
- throw new Error(`MCP authority root is not a directory: ${value}`);
229
- if (!roots.some((root) => samePath(root.physical, physical))) {
230
- roots.push({ id: rootIdFor(physical), lexical, physical });
231
- }
232
- }
233
- return roots;
234
- }
235
- function rootIdFor(physicalPath) {
236
- const normalized = process.platform === 'win32' ? physicalPath.toLowerCase() : physicalPath;
237
- return `root-${createHash('sha256').update(normalized).digest('hex').slice(0, 16)}`;
238
- }
239
- function rootLabel(physicalPath) {
240
- const candidate = path.basename(physicalPath) || 'root';
241
- let label = '';
242
- for (const character of candidate) {
243
- const codePoint = character.codePointAt(0) ?? 0;
244
- if (codePoint === 0 || codePoint === 0x7f)
245
- continue;
246
- if (label.length + character.length > MCP_WIRE_LIMITS.labelCharacters)
247
- break;
248
- label += character;
249
- }
250
- return label || 'root';
251
- }
252
- function parseRootRelativePath(value) {
253
- if (!value ||
254
- value.length > MAX_PATH_CHARACTERS ||
255
- value.includes('\0') ||
256
- value.includes('\\') ||
257
- path.posix.isAbsolute(value) ||
258
- /^[a-zA-Z]:/u.test(value)) {
259
- throw new Error('Invalid MCP root-relative path');
260
- }
261
- const segments = value.split('/');
262
- if (segments.some((segment) => !segment ||
263
- segment === '.' ||
264
- segment === '..' ||
265
- [...segment].some((character) => (character.codePointAt(0) ?? 0) <= 0x1f))) {
266
- throw new Error('Invalid MCP root-relative path');
267
- }
268
- return segments;
269
- }
270
- async function nearestExistingPath(candidate) {
271
- let current = candidate;
272
- while (true) {
273
- try {
274
- await lstat(current);
275
- return current;
276
- }
277
- catch {
278
- const parent = path.dirname(current);
279
- if (parent === current)
280
- throw new Error('MCP output has no accessible parent directory');
281
- current = parent;
282
- }
283
- }
284
- }
285
- function validatePath(value) {
286
- if (!value || value.length > MAX_PATH_CHARACTERS || value.includes('\0')) {
287
- throw new Error('Invalid MCP filesystem path');
288
- }
289
- return path.resolve(value);
290
- }
291
- function validatePortableFilename(value) {
292
- const stem = value.split('.', 1)[0]?.toLowerCase() ?? '';
293
- if (!value ||
294
- hasUnsafeFilenameCharacter(value) ||
295
- /[ .]$/u.test(value) ||
296
- /^(?:con|prn|aux|nul|com[1-9]|lpt[1-9])$/u.test(stem)) {
297
- throw new Error('MCP output filename is not portable or safe');
298
- }
299
- }
300
- function hasUnsafeFilenameCharacter(value) {
301
- for (const character of value) {
302
- const codePoint = character.codePointAt(0) ?? 0;
303
- if (codePoint <= 0x1f || '<>:"/\\|?*'.includes(character))
304
- return true;
305
- }
306
- return false;
307
- }
308
- function samePath(left, right) {
309
- const normalize = (value) => {
310
- const resolved = path.resolve(value);
311
- return process.platform === 'win32' ? resolved.toLowerCase() : resolved;
312
- };
313
- return normalize(left) === normalize(right);
314
- }
315
- function isPathInside(root, candidate) {
316
- const relative = path.relative(path.resolve(root), path.resolve(candidate));
317
- return (relative === '' ||
318
- (!relative.startsWith(`..${path.sep}`) && relative !== '..' && !path.isAbsolute(relative)));
319
- }
320
- async function writeFileHandle(handle, content, signal, afterChunk) {
321
- const bytes = Buffer.from(content.buffer, content.byteOffset, content.byteLength);
322
- let offset = 0;
323
- while (offset < bytes.byteLength) {
324
- signal?.throwIfAborted();
325
- const length = Math.min(MATERIALIZATION_WRITE_CHUNK_BYTES, bytes.byteLength - offset);
326
- const { bytesWritten } = await handle.write(bytes, offset, length, null);
327
- if (bytesWritten < 1)
328
- throw new Error('MCP materialization write made no progress');
329
- offset += bytesWritten;
330
- await afterChunk?.(offset, bytes.byteLength);
331
- signal?.throwIfAborted();
332
- }
333
- signal?.throwIfAborted();
334
- }
335
- async function hashFileBounded(filePath, maximumBytes, signal, afterChunk) {
336
- signal?.throwIfAborted();
337
- const lexical = await lstat(filePath).catch(() => null);
338
- if (!lexical?.isFile() || lexical.isSymbolicLink()) {
339
- throw new Error('MCP output hash precondition failed');
340
- }
341
- if (lexical.size > maximumBytes) {
342
- throw new Error('MCP output hash precondition exceeds the configured file-size limit');
343
- }
344
- const handle = await open(filePath, 'r');
345
- try {
346
- const before = await handle.stat();
347
- if (!before.isFile() || before.size > maximumBytes) {
348
- throw new Error('MCP output hash precondition exceeds the configured file-size limit');
349
- }
350
- const digest = createHash('sha256');
351
- const buffer = Buffer.allocUnsafe(HASH_READ_CHUNK_BYTES);
352
- let position = 0;
353
- while (position < before.size) {
354
- signal?.throwIfAborted();
355
- const length = Math.min(buffer.byteLength, before.size - position);
356
- const { bytesRead } = await handle.read(buffer, 0, length, position);
357
- if (bytesRead < 1)
358
- throw new Error('MCP output changed while checking its hash');
359
- digest.update(buffer.subarray(0, bytesRead));
360
- position += bytesRead;
361
- await afterChunk?.(position, before.size);
362
- signal?.throwIfAborted();
363
- }
364
- signal?.throwIfAborted();
365
- const after = await handle.stat();
366
- const current = await lstat(filePath).catch(() => null);
367
- if (!current?.isFile() ||
368
- current.isSymbolicLink() ||
369
- after.size !== before.size ||
370
- after.mtimeMs !== before.mtimeMs ||
371
- after.ctimeMs !== before.ctimeMs ||
372
- current.dev !== after.dev ||
373
- current.ino !== after.ino) {
374
- throw new Error('MCP output changed while checking its hash');
375
- }
376
- return digest.digest('hex');
377
- }
378
- finally {
379
- await handle.close();
380
- }
381
- }
382
- async function readMaterializationParentIdentity(target, writeRoots) {
383
- const parent = path.dirname(target);
384
- let lexical;
385
- let physical;
386
- let info;
387
- try {
388
- [lexical, physical] = await Promise.all([lstat(parent), realpath(parent)]);
389
- info = await stat(physical);
390
- }
391
- catch {
392
- throw new Error('MCP output parent cannot be physically revalidated');
393
- }
394
- if (lexical.isSymbolicLink() || !lexical.isDirectory() || !info.isDirectory()) {
395
- throw new Error('MCP output parent changed physical identity before publication');
396
- }
397
- if (!writeRoots.some((root) => isPathInside(root.physical, physical))) {
398
- throw new Error('MCP output parent escaped the configured write roots before publication');
399
- }
400
- return { physical, dev: info.dev, ino: info.ino };
401
- }
402
- async function assertMaterializationParentIdentity(target, expected, writeRoots) {
403
- const current = await readMaterializationParentIdentity(target, writeRoots);
404
- if (!samePath(current.physical, expected.physical) ||
405
- current.dev !== expected.dev ||
406
- current.ino !== expected.ino) {
407
- throw new Error('MCP output parent changed physical identity before publication');
408
- }
409
- }
410
- function notifyMaterializationPublished(callback, target) {
411
- try {
412
- callback?.(target);
413
- }
414
- catch {
415
- // Publication is the commit boundary. No observer failure may turn a
416
- // successfully published file into a reported operation failure.
417
- }
418
- }
419
- async function withMaterializationLock(target, operation) {
420
- const key = process.platform === 'win32' ? target.toLowerCase() : target;
421
- const previous = materializationTails.get(key) ?? Promise.resolve();
422
- const run = previous.then(operation, operation);
423
- const tail = run.then(() => undefined, () => undefined);
424
- materializationTails.set(key, tail);
425
- try {
426
- return await run;
427
- }
428
- finally {
429
- if (materializationTails.get(key) === tail)
430
- materializationTails.delete(key);
431
- }
432
- }
433
- //# sourceMappingURL=authority.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"authority.js","sourceRoot":"","sources":["../../src/mcp/authority.ts"],"names":[],"mappings":"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"}
@@ -1,111 +0,0 @@
1
- import type { ConversionFidelity, ConversionResult, EngineVersion } from '@bendyline/docblocks/mcp';
2
- import { prepareConversion as prepareLinkedConversion } from '@bendyline/squisq-cli/api';
3
- import { ArtifactStore } from './artifact-store.js';
4
- import type { PreparedDocument } from './document-service.js';
5
- import { convertRenderedDocument } from './rendered-conversion.js';
6
- export interface ConversionTargetRequest {
7
- format: string;
8
- fidelity?: ConversionFidelity;
9
- options?: Readonly<Record<string, string | number | boolean | null>>;
10
- }
11
- export interface ConversionRequestOptions {
12
- themeId?: string;
13
- transformId?: string;
14
- autoTemplates?: boolean;
15
- title?: string;
16
- targets: readonly ConversionTargetRequest[];
17
- }
18
- /** Fidelity contracts that the current conversion implementations can actually honor. */
19
- export declare const MCP_FORMAT_FIDELITIES: {
20
- readonly md: readonly ["semantic"];
21
- readonly docx: readonly ["semantic", "editable-native"];
22
- readonly pdf: readonly ["semantic", "rendered-fidelity", "hybrid"];
23
- readonly pptx: readonly ["semantic", "editable-native", "rendered-fidelity", "hybrid"];
24
- readonly xlsx: readonly ["semantic", "editable-native"];
25
- readonly csv: readonly ["semantic"];
26
- readonly html: readonly ["semantic"];
27
- readonly htmlzip: readonly ["semantic"];
28
- readonly epub: readonly ["semantic"];
29
- readonly dbk: readonly ["semantic", "editable-native"];
30
- readonly mp4: readonly ["rendered-fidelity"];
31
- readonly gif: readonly ["rendered-fidelity"];
32
- };
33
- export declare const MCP_MEDIA_RENDER_LIMITS: Readonly<{
34
- mp4: Readonly<{
35
- maximumFps: 60;
36
- maximumDimension: 3840;
37
- maximumPixelsPerFrame: 8294400;
38
- maximumDurationSeconds: 300;
39
- maximumFrames: 18000;
40
- maximumPixelFrames: 2200000000;
41
- maximumCapturedFrameBytes: number;
42
- }>;
43
- gif: Readonly<{
44
- maximumFps: 30;
45
- maximumDimension: 1920;
46
- maximumPixelsPerFrame: 2073600;
47
- maximumDurationSeconds: 120;
48
- maximumFrames: 3600;
49
- maximumPixelFrames: 600000000;
50
- maximumCapturedFrameBytes: number;
51
- }>;
52
- }>;
53
- export type ConversionProgress = (completed: number, total: number, message: string) => Promise<void> | void;
54
- /** Injectable conversion boundaries used to test native staging without global module mocks. */
55
- export interface ConversionServiceDependencies {
56
- readonly prepareNativeConversion: typeof prepareLinkedConversion;
57
- readonly convertRenderedDocument: typeof convertRenderedDocument;
58
- }
59
- /** Linked registry metadata plus DocBlocks-only exposure policy. */
60
- export declare const MCP_FORMAT_CAPABILITIES: readonly Readonly<{
61
- id: string;
62
- label: string;
63
- mimeType: string;
64
- extensions: readonly string[];
65
- import: Readonly<{
66
- supported: true;
67
- tool: "inspect_document";
68
- }> | Readonly<{
69
- supported: false;
70
- excludedReason: "The linked registry is export-only.";
71
- }>;
72
- export: Readonly<{
73
- supported: true;
74
- tool: "convert_document";
75
- }> | Readonly<{
76
- supported: false;
77
- excludedReason: "The linked registry is import-only.";
78
- }>;
79
- }>[];
80
- /** Convert one normalized document to multiple immutable artifacts. */
81
- export declare function convertPreparedDocument(artifacts: ArtifactStore, prepared: PreparedDocument, request: ConversionRequestOptions, signal?: AbortSignal, progress?: ConversionProgress, dependencies?: ConversionServiceDependencies): Promise<ConversionResult[]>;
82
- /** Build the content-addressed cache key for one completed target conversion. */
83
- export declare function createConversionCacheKey(prepared: Pick<PreparedDocument, 'sourceSha256' | 'sourceFormat' | 'baseName' | 'assets' | 'diagnostics'>, request: Omit<ConversionRequestOptions, 'targets'>, target: ConversionTargetRequest, fidelity: ConversionFidelity, engineVersions: readonly EngineVersion[]): string;
84
- /** Reject media renders before browser/frame capture can consume unbounded memory. */
85
- export declare function assertMediaRenderBudget(prepared: Pick<PreparedDocument, 'doc'>, target: ConversionTargetRequest): void;
86
- export declare class MediaRenderBudgetError extends Error {
87
- readonly format: 'mp4' | 'gif';
88
- readonly code = "media-budget-exceeded";
89
- readonly retryable = false;
90
- readonly hint: string;
91
- constructor(format: 'mp4' | 'gif', violations: readonly string[], limits: (typeof MCP_MEDIA_RENDER_LIMITS)['mp4' | 'gif']);
92
- }
93
- export declare function supportedFidelities(format: string): readonly ConversionFidelity[];
94
- export declare function assertSupportedFidelity(format: string, fidelity: ConversionFidelity): void;
95
- export declare class UnsupportedFidelityError extends Error {
96
- readonly code = "unsupported-fidelity";
97
- readonly format: string;
98
- readonly hint: string;
99
- constructor(format: string, fidelity: ConversionFidelity, supported: readonly ConversionFidelity[]);
100
- }
101
- export declare class UnknownTransformError extends Error {
102
- readonly code = "unknown-transform";
103
- readonly hint = "Choose a transform id reported by list_transform_styles.";
104
- constructor(transformId: string);
105
- }
106
- export declare class UnknownThemeError extends Error {
107
- readonly code = "unknown-theme";
108
- readonly hint = "Choose a built-in id from list_themes or a custom theme embedded in the document.";
109
- constructor(themeId: string);
110
- }
111
- //# sourceMappingURL=conversion-service.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"conversion-service.d.ts","sourceRoot":"","sources":["../../src/mcp/conversion-service.ts"],"names":[],"mappings":"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"}