@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.
- package/README.md +5 -16
- package/dist/index.d.ts +2 -2
- package/dist/index.js +7183 -18
- package/dist/index.js.map +1 -1
- package/package.json +9 -9
- package/dist/commands/build.d.ts +0 -14
- package/dist/commands/build.d.ts.map +0 -1
- package/dist/commands/build.js +0 -74
- package/dist/commands/build.js.map +0 -1
- package/dist/commands/convert.d.ts +0 -42
- package/dist/commands/convert.d.ts.map +0 -1
- package/dist/commands/convert.js +0 -339
- package/dist/commands/convert.js.map +0 -1
- package/dist/commands/init.d.ts +0 -3
- package/dist/commands/init.d.ts.map +0 -1
- package/dist/commands/init.js +0 -23
- package/dist/commands/init.js.map +0 -1
- package/dist/commands/mcp.d.ts +0 -12
- package/dist/commands/mcp.d.ts.map +0 -1
- package/dist/commands/mcp.js +0 -106
- package/dist/commands/mcp.js.map +0 -1
- package/dist/commands/parse.d.ts +0 -6
- package/dist/commands/parse.d.ts.map +0 -1
- package/dist/commands/parse.js +0 -38
- package/dist/commands/parse.js.map +0 -1
- package/dist/commands/serve.d.ts +0 -36
- package/dist/commands/serve.d.ts.map +0 -1
- package/dist/commands/serve.js +0 -347
- package/dist/commands/serve.js.map +0 -1
- package/dist/commands/themes.d.ts +0 -6
- package/dist/commands/themes.d.ts.map +0 -1
- package/dist/commands/themes.js +0 -15
- package/dist/commands/themes.js.map +0 -1
- package/dist/commands/transforms.d.ts +0 -6
- package/dist/commands/transforms.d.ts.map +0 -1
- package/dist/commands/transforms.js +0 -15
- package/dist/commands/transforms.js.map +0 -1
- package/dist/commands/video.d.ts +0 -38
- package/dist/commands/video.d.ts.map +0 -1
- package/dist/commands/video.js +0 -136
- package/dist/commands/video.js.map +0 -1
- package/dist/contained-file.d.ts +0 -8
- package/dist/contained-file.d.ts.map +0 -1
- package/dist/contained-file.js +0 -77
- package/dist/contained-file.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/mcp/agentic-tools.d.ts +0 -16
- package/dist/mcp/agentic-tools.d.ts.map +0 -1
- package/dist/mcp/agentic-tools.js +0 -967
- package/dist/mcp/agentic-tools.js.map +0 -1
- package/dist/mcp/artifact-store.d.ts +0 -98
- package/dist/mcp/artifact-store.d.ts.map +0 -1
- package/dist/mcp/artifact-store.js +0 -542
- package/dist/mcp/artifact-store.js.map +0 -1
- package/dist/mcp/authority.d.ts +0 -53
- package/dist/mcp/authority.d.ts.map +0 -1
- package/dist/mcp/authority.js +0 -433
- package/dist/mcp/authority.js.map +0 -1
- package/dist/mcp/conversion-service.d.ts +0 -111
- package/dist/mcp/conversion-service.d.ts.map +0 -1
- package/dist/mcp/conversion-service.js +0 -512
- package/dist/mcp/conversion-service.js.map +0 -1
- package/dist/mcp/discovery-tools.d.ts +0 -4
- package/dist/mcp/discovery-tools.d.ts.map +0 -1
- package/dist/mcp/discovery-tools.js +0 -114
- package/dist/mcp/discovery-tools.js.map +0 -1
- package/dist/mcp/document-service.d.ts +0 -47
- package/dist/mcp/document-service.d.ts.map +0 -1
- package/dist/mcp/document-service.js +0 -424
- package/dist/mcp/document-service.js.map +0 -1
- package/dist/mcp/error-result.d.ts +0 -17
- package/dist/mcp/error-result.d.ts.map +0 -1
- package/dist/mcp/error-result.js +0 -82
- package/dist/mcp/error-result.js.map +0 -1
- package/dist/mcp/intelligence.d.ts +0 -15
- package/dist/mcp/intelligence.d.ts.map +0 -1
- package/dist/mcp/intelligence.js +0 -855
- package/dist/mcp/intelligence.js.map +0 -1
- package/dist/mcp/output-bounds.d.ts +0 -13
- package/dist/mcp/output-bounds.d.ts.map +0 -1
- package/dist/mcp/output-bounds.js +0 -61
- package/dist/mcp/output-bounds.js.map +0 -1
- package/dist/mcp/preview-service.d.ts +0 -54
- package/dist/mcp/preview-service.d.ts.map +0 -1
- package/dist/mcp/preview-service.js +0 -454
- package/dist/mcp/preview-service.js.map +0 -1
- package/dist/mcp/progress.d.ts +0 -18
- package/dist/mcp/progress.d.ts.map +0 -1
- package/dist/mcp/progress.js +0 -28
- package/dist/mcp/progress.js.map +0 -1
- package/dist/mcp/prompts.d.ts +0 -4
- package/dist/mcp/prompts.d.ts.map +0 -1
- package/dist/mcp/prompts.js +0 -124
- package/dist/mcp/prompts.js.map +0 -1
- package/dist/mcp/rendered-conversion.d.ts +0 -34
- package/dist/mcp/rendered-conversion.d.ts.map +0 -1
- package/dist/mcp/rendered-conversion.js +0 -364
- package/dist/mcp/rendered-conversion.js.map +0 -1
- package/dist/mcp/server.d.ts +0 -69
- package/dist/mcp/server.d.ts.map +0 -1
- package/dist/mcp/server.js +0 -249
- package/dist/mcp/server.js.map +0 -1
- package/dist/preview-policy.d.ts +0 -8
- package/dist/preview-policy.d.ts.map +0 -1
- package/dist/preview-policy.js +0 -85
- package/dist/preview-policy.js.map +0 -1
- package/dist/render-html.d.ts +0 -17
- package/dist/render-html.d.ts.map +0 -1
- package/dist/render-html.js +0 -85
- package/dist/render-html.js.map +0 -1
- package/dist/version.d.ts +0 -6
- package/dist/version.d.ts.map +0 -1
- package/dist/version.js +0 -104
- package/dist/version.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"discovery-tools.js","sourceRoot":"","sources":["../../src/mcp/discovery-tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
import type { AssetSummary, DocumentSource, McpDiagnostic } from '@bendyline/docblocks/mcp';
|
|
2
|
-
import type { MarkdownDocument } from '@bendyline/squisq/markdown';
|
|
3
|
-
import type { Doc } from '@bendyline/squisq/schemas';
|
|
4
|
-
import type { ContentContainer } from '@bendyline/squisq/storage';
|
|
5
|
-
import type { FormatRegistry } from '@bendyline/squisq-cli/api';
|
|
6
|
-
import { ArtifactStore } from './artifact-store.js';
|
|
7
|
-
import { McpFileAuthority } from './authority.js';
|
|
8
|
-
export declare const MCP_ARCHIVE_LIMITS: {
|
|
9
|
-
readonly maxEntries: 2048;
|
|
10
|
-
readonly maxEntryUncompressedBytes: number;
|
|
11
|
-
readonly maxUncompressedBytes: number;
|
|
12
|
-
readonly maxCompressionRatio: 1000;
|
|
13
|
-
};
|
|
14
|
-
export interface PreparedDocument {
|
|
15
|
-
markdown: string;
|
|
16
|
-
markdownDoc: MarkdownDocument;
|
|
17
|
-
doc: Doc;
|
|
18
|
-
container: ContentContainer;
|
|
19
|
-
baseName: string;
|
|
20
|
-
sourceFormat: string;
|
|
21
|
-
sourceSha256: string;
|
|
22
|
-
assets: AssetSummary[];
|
|
23
|
-
diagnostics: McpDiagnostic[];
|
|
24
|
-
}
|
|
25
|
-
/** Authority-aware normalization shared by every artifact-native MCP tool. */
|
|
26
|
-
export declare class DocumentService {
|
|
27
|
-
private readonly authority;
|
|
28
|
-
private readonly artifacts;
|
|
29
|
-
private readonly registry?;
|
|
30
|
-
constructor(authority: McpFileAuthority, artifacts: ArtifactStore, registry?: FormatRegistry | undefined);
|
|
31
|
-
prepare(source: DocumentSource, signal?: AbortSignal): Promise<PreparedDocument>;
|
|
32
|
-
readBinarySource(source: DocumentSource, signal?: AbortSignal): Promise<{
|
|
33
|
-
bytes: Buffer;
|
|
34
|
-
filename: string;
|
|
35
|
-
format: string;
|
|
36
|
-
sha256: string;
|
|
37
|
-
}>;
|
|
38
|
-
assetSummaries(container: ContentContainer, signal?: AbortSignal): Promise<AssetSummary[]>;
|
|
39
|
-
private resolve;
|
|
40
|
-
private resolveMarkdown;
|
|
41
|
-
private resolveBundle;
|
|
42
|
-
private resolveAsset;
|
|
43
|
-
}
|
|
44
|
-
export declare function warningDiagnostic(message: string, stage: McpDiagnostic['stage'], format?: string | null): McpDiagnostic;
|
|
45
|
-
export declare function sha256(bytes: Uint8Array): string;
|
|
46
|
-
export declare function throwIfAborted(signal?: AbortSignal): void;
|
|
47
|
-
//# sourceMappingURL=document-service.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"document-service.d.ts","sourceRoot":"","sources":["../../src/mcp/document-service.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,YAAY,EAEZ,cAAc,EACd,aAAa,EACd,MAAM,0BAA0B,CAAC;AAGlC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,2BAA2B,CAAC;AACrD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,KAAK,EAAiB,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC/E,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAQlD,eAAO,MAAM,kBAAkB;;;;;CAKrB,CAAC;AAEX,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,gBAAgB,CAAC;IAC9B,GAAG,EAAE,GAAG,CAAC;IACT,SAAS,EAAE,gBAAgB,CAAC;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,YAAY,EAAE,CAAC;IACvB,WAAW,EAAE,aAAa,EAAE,CAAC;CAC9B;AAWD,8EAA8E;AAC9E,qBAAa,eAAe;IAExB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC;gBAFT,SAAS,EAAE,gBAAgB,EAC3B,SAAS,EAAE,aAAa,EACxB,QAAQ,CAAC,EAAE,cAAc,YAAA;IAG/B,OAAO,CAAC,MAAM,EAAE,cAAc,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAmDhF,gBAAgB,CAC3B,MAAM,EAAE,cAAc,EACtB,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IA6BlE,cAAc,CACzB,SAAS,EAAE,gBAAgB,EAC3B,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,YAAY,EAAE,CAAC;YA+BZ,OAAO;YA8BP,eAAe;YAmBf,aAAa;YAwDb,YAAY;CAK3B;AA8FD,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC,EAC7B,MAAM,GAAE,MAAM,GAAG,IAAW,GAC3B,aAAa,CAoBf;AAkGD,wBAAgB,MAAM,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAEhD;AAED,wBAAgB,cAAc,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,IAAI,CAMzD"}
|
|
@@ -1,424 +0,0 @@
|
|
|
1
|
-
import { createHash } from 'node:crypto';
|
|
2
|
-
import { basename, extname } from 'node:path';
|
|
3
|
-
import { MCP_WIRE_LIMITS } from '@bendyline/docblocks/mcp';
|
|
4
|
-
import { tryParseWorkspacePath } from '@bendyline/docblocks/filesystem';
|
|
5
|
-
import { boundWireText, isWireText } from './output-bounds.js';
|
|
6
|
-
const MAX_BUNDLE_ASSETS = 256;
|
|
7
|
-
const MAX_BUNDLE_BYTES = 100 * 1024 * 1024;
|
|
8
|
-
const MAX_ASSET_MANIFEST_BYTES = 1024 * 1024;
|
|
9
|
-
const MAX_METADATA_CHARACTERS = MCP_WIRE_LIMITS.labelCharacters;
|
|
10
|
-
const ASSET_MANIFEST_PATH = '.docblocks/assets.json';
|
|
11
|
-
export const MCP_ARCHIVE_LIMITS = {
|
|
12
|
-
maxEntries: 2048,
|
|
13
|
-
maxEntryUncompressedBytes: MAX_BUNDLE_BYTES,
|
|
14
|
-
maxUncompressedBytes: MAX_BUNDLE_BYTES,
|
|
15
|
-
maxCompressionRatio: 1000,
|
|
16
|
-
};
|
|
17
|
-
/** Authority-aware normalization shared by every artifact-native MCP tool. */
|
|
18
|
-
export class DocumentService {
|
|
19
|
-
constructor(authority, artifacts, registry) {
|
|
20
|
-
this.authority = authority;
|
|
21
|
-
this.artifacts = artifacts;
|
|
22
|
-
this.registry = registry;
|
|
23
|
-
}
|
|
24
|
-
async prepare(source, signal) {
|
|
25
|
-
throwIfAborted(signal);
|
|
26
|
-
const resolved = await this.resolve(source, signal);
|
|
27
|
-
throwIfAborted(signal);
|
|
28
|
-
let markdown = resolved.markdown;
|
|
29
|
-
let container = resolved.container;
|
|
30
|
-
const diagnostics = [];
|
|
31
|
-
if (markdown === undefined || container === undefined) {
|
|
32
|
-
const { convert } = await import('@bendyline/squisq-cli/api');
|
|
33
|
-
const converted = await convert(resolved.source, 'dbk', {
|
|
34
|
-
signal,
|
|
35
|
-
registry: this.registry,
|
|
36
|
-
from: resolved.sourceFormat === 'auto' ? undefined : resolved.sourceFormat,
|
|
37
|
-
formatOptions: {
|
|
38
|
-
dbk: { ...MCP_ARCHIVE_LIMITS, compression: 'STORE' },
|
|
39
|
-
docx: MCP_ARCHIVE_LIMITS,
|
|
40
|
-
pptx: MCP_ARCHIVE_LIMITS,
|
|
41
|
-
xlsx: MCP_ARCHIVE_LIMITS,
|
|
42
|
-
},
|
|
43
|
-
});
|
|
44
|
-
diagnostics.push(...converted.warnings.map((warning) => warningDiagnostic(warning, 'import')));
|
|
45
|
-
throwIfAborted(signal);
|
|
46
|
-
const { zipToContainer } = await import('@bendyline/squisq-formats/container');
|
|
47
|
-
container = await zipToContainer(converted.bytes, MCP_ARCHIVE_LIMITS);
|
|
48
|
-
const importedMarkdown = await container.readDocument();
|
|
49
|
-
if (importedMarkdown === null)
|
|
50
|
-
throw new Error('Imported document did not contain Markdown');
|
|
51
|
-
markdown = importedMarkdown;
|
|
52
|
-
}
|
|
53
|
-
const { parseMarkdown } = await import('@bendyline/squisq/markdown');
|
|
54
|
-
const { markdownToDoc } = await import('@bendyline/squisq/doc');
|
|
55
|
-
const markdownDoc = parseMarkdown(markdown);
|
|
56
|
-
const doc = markdownToDoc(markdownDoc);
|
|
57
|
-
const assets = await this.assetSummaries(container, signal);
|
|
58
|
-
throwIfAborted(signal);
|
|
59
|
-
return {
|
|
60
|
-
markdown,
|
|
61
|
-
markdownDoc,
|
|
62
|
-
doc,
|
|
63
|
-
container,
|
|
64
|
-
baseName: resolved.baseName,
|
|
65
|
-
sourceFormat: resolved.sourceFormat,
|
|
66
|
-
sourceSha256: resolved.sourceSha256,
|
|
67
|
-
assets,
|
|
68
|
-
diagnostics,
|
|
69
|
-
};
|
|
70
|
-
}
|
|
71
|
-
async readBinarySource(source, signal) {
|
|
72
|
-
throwIfAborted(signal);
|
|
73
|
-
if (source.kind === 'file') {
|
|
74
|
-
const physical = await this.authority.authorizeRootRead(source.rootId, source.path);
|
|
75
|
-
const bytes = await this.authority.readFile(physical, signal);
|
|
76
|
-
throwIfAborted(signal);
|
|
77
|
-
const filename = basename(source.path);
|
|
78
|
-
return {
|
|
79
|
-
bytes,
|
|
80
|
-
filename,
|
|
81
|
-
format: normalizeFormat(source.format ?? formatFromName(filename)),
|
|
82
|
-
sha256: sha256(bytes),
|
|
83
|
-
};
|
|
84
|
-
}
|
|
85
|
-
if (source.kind === 'artifact') {
|
|
86
|
-
const ref = await this.artifacts.get(source.uri, signal);
|
|
87
|
-
throwIfAborted(signal);
|
|
88
|
-
const bytes = await this.artifacts.read(source.uri, signal);
|
|
89
|
-
throwIfAborted(signal);
|
|
90
|
-
return {
|
|
91
|
-
bytes,
|
|
92
|
-
filename: ref.suggestedFilename,
|
|
93
|
-
format: normalizeFormat(ref.format),
|
|
94
|
-
sha256: ref.sha256,
|
|
95
|
-
};
|
|
96
|
-
}
|
|
97
|
-
throw new Error('This operation requires a file or artifact source');
|
|
98
|
-
}
|
|
99
|
-
async assetSummaries(container, signal) {
|
|
100
|
-
throwIfAborted(signal);
|
|
101
|
-
const entries = await container.listFiles();
|
|
102
|
-
const manifest = await readAssetManifest(container, signal);
|
|
103
|
-
const assets = [];
|
|
104
|
-
for (const entry of entries) {
|
|
105
|
-
throwIfAborted(signal);
|
|
106
|
-
if (entry.mimeType === 'text/markdown' ||
|
|
107
|
-
entry.path === 'index.md' ||
|
|
108
|
-
entry.path === ASSET_MANIFEST_PATH) {
|
|
109
|
-
continue;
|
|
110
|
-
}
|
|
111
|
-
const bytes = await container.readFile(entry.path);
|
|
112
|
-
throwIfAborted(signal);
|
|
113
|
-
if (!bytes)
|
|
114
|
-
continue;
|
|
115
|
-
const metadata = manifest.get(entry.path);
|
|
116
|
-
assets.push({
|
|
117
|
-
path: entry.path,
|
|
118
|
-
mimeType: metadata?.mimeType ?? entry.mimeType,
|
|
119
|
-
size: bytes.byteLength,
|
|
120
|
-
sha256: createHash('sha256').update(new Uint8Array(bytes)).digest('hex'),
|
|
121
|
-
altText: metadata?.altText ?? null,
|
|
122
|
-
credit: metadata?.credit ?? null,
|
|
123
|
-
license: metadata?.license ?? null,
|
|
124
|
-
});
|
|
125
|
-
}
|
|
126
|
-
return assets.sort((left, right) => left.path.localeCompare(right.path));
|
|
127
|
-
}
|
|
128
|
-
async resolve(source, signal) {
|
|
129
|
-
switch (source.kind) {
|
|
130
|
-
case 'markdown':
|
|
131
|
-
return this.resolveMarkdown(source.markdown, source.name);
|
|
132
|
-
case 'bundle':
|
|
133
|
-
return this.resolveBundle(source.markdown, source.name, source.assets, signal);
|
|
134
|
-
case 'file': {
|
|
135
|
-
const physical = await this.authority.authorizeRootRead(source.rootId, source.path);
|
|
136
|
-
const bytes = await this.authority.readFile(physical, signal);
|
|
137
|
-
const name = basename(source.path);
|
|
138
|
-
return {
|
|
139
|
-
source: { kind: 'bytes', data: bytes, filename: name },
|
|
140
|
-
sourceFormat: normalizeFormat(source.format ?? formatFromName(name)),
|
|
141
|
-
sourceSha256: sha256(bytes),
|
|
142
|
-
baseName: baseNameFromName(name),
|
|
143
|
-
};
|
|
144
|
-
}
|
|
145
|
-
case 'artifact': {
|
|
146
|
-
const ref = await this.artifacts.get(source.uri, signal);
|
|
147
|
-
const bytes = await this.artifacts.read(source.uri, signal);
|
|
148
|
-
return {
|
|
149
|
-
source: { kind: 'bytes', data: bytes, filename: ref.suggestedFilename },
|
|
150
|
-
sourceFormat: normalizeFormat(ref.format),
|
|
151
|
-
sourceSha256: ref.sha256,
|
|
152
|
-
baseName: baseNameFromName(ref.suggestedFilename),
|
|
153
|
-
};
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
}
|
|
157
|
-
async resolveMarkdown(markdown, name) {
|
|
158
|
-
const { MemoryContentContainer } = await import('@bendyline/squisq/storage');
|
|
159
|
-
const container = new MemoryContentContainer();
|
|
160
|
-
await container.writeDocument(markdown);
|
|
161
|
-
return {
|
|
162
|
-
source: {
|
|
163
|
-
kind: 'markdown',
|
|
164
|
-
markdown,
|
|
165
|
-
container,
|
|
166
|
-
baseName: baseNameFromName(name ?? 'document.md'),
|
|
167
|
-
},
|
|
168
|
-
sourceFormat: 'md',
|
|
169
|
-
sourceSha256: sha256(Buffer.from(markdown, 'utf8')),
|
|
170
|
-
baseName: baseNameFromName(name ?? 'document.md'),
|
|
171
|
-
container,
|
|
172
|
-
markdown,
|
|
173
|
-
};
|
|
174
|
-
}
|
|
175
|
-
async resolveBundle(markdown, name, assets, signal) {
|
|
176
|
-
if (assets.length > MAX_BUNDLE_ASSETS)
|
|
177
|
-
throw new Error('MCP bundle has too many assets');
|
|
178
|
-
const { MemoryContentContainer } = await import('@bendyline/squisq/storage');
|
|
179
|
-
const container = new MemoryContentContainer();
|
|
180
|
-
await container.writeDocument(markdown);
|
|
181
|
-
const hash = createHash('sha256').update(markdown, 'utf8');
|
|
182
|
-
const paths = new Set();
|
|
183
|
-
const manifest = [];
|
|
184
|
-
let totalBytes = 0;
|
|
185
|
-
for (const asset of [...assets].sort((left, right) => left.path.localeCompare(right.path))) {
|
|
186
|
-
throwIfAborted(signal);
|
|
187
|
-
if (!asset.path ||
|
|
188
|
-
asset.path === 'index.md' ||
|
|
189
|
-
asset.path.startsWith('.docblocks/') ||
|
|
190
|
-
paths.has(asset.path)) {
|
|
191
|
-
throw new Error('MCP bundle asset path is reserved or duplicated');
|
|
192
|
-
}
|
|
193
|
-
paths.add(asset.path);
|
|
194
|
-
const bytes = await this.resolveAsset(asset, signal);
|
|
195
|
-
totalBytes += bytes.byteLength;
|
|
196
|
-
if (totalBytes > MAX_BUNDLE_BYTES)
|
|
197
|
-
throw new Error('MCP bundle assets exceed the byte limit');
|
|
198
|
-
await container.writeFile(asset.path, bytes, asset.mimeType ?? undefined);
|
|
199
|
-
hash.update(asset.path, 'utf8').update(bytes);
|
|
200
|
-
manifest.push({
|
|
201
|
-
path: asset.path,
|
|
202
|
-
mimeType: asset.mimeType,
|
|
203
|
-
altText: asset.altText,
|
|
204
|
-
credit: asset.credit,
|
|
205
|
-
license: asset.license,
|
|
206
|
-
});
|
|
207
|
-
}
|
|
208
|
-
if (manifest.length > 0) {
|
|
209
|
-
await container.writeFile(ASSET_MANIFEST_PATH, Buffer.from(JSON.stringify({ version: 1, assets: manifest }), 'utf8'), 'application/json');
|
|
210
|
-
}
|
|
211
|
-
const baseName = baseNameFromName(name ?? 'document.md');
|
|
212
|
-
return {
|
|
213
|
-
source: { kind: 'markdown', markdown, container, baseName },
|
|
214
|
-
sourceFormat: 'md',
|
|
215
|
-
sourceSha256: hash.digest('hex'),
|
|
216
|
-
baseName,
|
|
217
|
-
container,
|
|
218
|
-
markdown,
|
|
219
|
-
};
|
|
220
|
-
}
|
|
221
|
-
async resolveAsset(asset, signal) {
|
|
222
|
-
if (asset.source.kind === 'artifact')
|
|
223
|
-
return this.artifacts.read(asset.source.uri, signal);
|
|
224
|
-
const physical = await this.authority.authorizeRootRead(asset.source.rootId, asset.source.path);
|
|
225
|
-
return this.authority.readFile(physical, signal);
|
|
226
|
-
}
|
|
227
|
-
}
|
|
228
|
-
async function readAssetManifest(container, signal) {
|
|
229
|
-
const bytes = await container.readFile(ASSET_MANIFEST_PATH);
|
|
230
|
-
if (!bytes)
|
|
231
|
-
return new Map();
|
|
232
|
-
throwIfAborted(signal);
|
|
233
|
-
if (bytes.byteLength > MAX_ASSET_MANIFEST_BYTES) {
|
|
234
|
-
throw new Error('The document asset manifest exceeds the byte limit');
|
|
235
|
-
}
|
|
236
|
-
try {
|
|
237
|
-
const parsed = JSON.parse(new TextDecoder().decode(bytes));
|
|
238
|
-
if (!isExactRecord(parsed, ['version', 'assets']) ||
|
|
239
|
-
parsed.version !== 1 ||
|
|
240
|
-
!Array.isArray(parsed.assets) ||
|
|
241
|
-
parsed.assets.length > MCP_ARCHIVE_LIMITS.maxEntries) {
|
|
242
|
-
throw new Error('The document asset manifest has an invalid root shape');
|
|
243
|
-
}
|
|
244
|
-
const entries = new Map();
|
|
245
|
-
for (const candidate of parsed.assets) {
|
|
246
|
-
throwIfAborted(signal);
|
|
247
|
-
if (!isExactRecord(candidate, ['path', 'mimeType', 'altText', 'credit', 'license'])) {
|
|
248
|
-
throw new Error('The document asset manifest contains an invalid entry');
|
|
249
|
-
}
|
|
250
|
-
const path = tryParseWorkspacePath(candidate.path);
|
|
251
|
-
if (path === null ||
|
|
252
|
-
path === '' ||
|
|
253
|
-
path === 'index.md' ||
|
|
254
|
-
path.startsWith('.docblocks/') ||
|
|
255
|
-
!isNullableMimeType(candidate.mimeType) ||
|
|
256
|
-
!isNullableMetadata(candidate.altText) ||
|
|
257
|
-
!isNullableMetadata(candidate.credit) ||
|
|
258
|
-
!isNullableMetadata(candidate.license) ||
|
|
259
|
-
entries.has(path)) {
|
|
260
|
-
throw new Error('The document asset manifest contains invalid metadata');
|
|
261
|
-
}
|
|
262
|
-
entries.set(path, {
|
|
263
|
-
path,
|
|
264
|
-
mimeType: candidate.mimeType,
|
|
265
|
-
altText: candidate.altText,
|
|
266
|
-
credit: candidate.credit,
|
|
267
|
-
license: candidate.license,
|
|
268
|
-
});
|
|
269
|
-
}
|
|
270
|
-
return entries;
|
|
271
|
-
}
|
|
272
|
-
catch (caught) {
|
|
273
|
-
if (caught instanceof Error && caught.message.startsWith('The document asset manifest')) {
|
|
274
|
-
throw caught;
|
|
275
|
-
}
|
|
276
|
-
const error = new Error('The document asset manifest is not valid JSON');
|
|
277
|
-
Object.defineProperty(error, 'cause', { value: caught, enumerable: false });
|
|
278
|
-
throw error;
|
|
279
|
-
}
|
|
280
|
-
}
|
|
281
|
-
function isExactRecord(value, keys) {
|
|
282
|
-
if (!value || typeof value !== 'object' || Array.isArray(value))
|
|
283
|
-
return false;
|
|
284
|
-
const actual = Object.keys(value);
|
|
285
|
-
return actual.length === keys.length && keys.every((key) => actual.includes(key));
|
|
286
|
-
}
|
|
287
|
-
function isNullableMetadata(value, maximumCharacters = MAX_METADATA_CHARACTERS) {
|
|
288
|
-
return (value === null ||
|
|
289
|
-
(typeof value === 'string' && value.length <= maximumCharacters && isWireText(value)));
|
|
290
|
-
}
|
|
291
|
-
function isNullableMimeType(value) {
|
|
292
|
-
return (value === null ||
|
|
293
|
-
(typeof value === 'string' &&
|
|
294
|
-
value.length <= 256 &&
|
|
295
|
-
/^[a-z0-9!#$&^_.+-]+\/[a-z0-9!#$&^_.+-]+$/iu.test(value)));
|
|
296
|
-
}
|
|
297
|
-
export function warningDiagnostic(message, stage, format = null) {
|
|
298
|
-
const classified = classifyWarning(message, format);
|
|
299
|
-
const normalizedFormat = format?.toLowerCase() ?? null;
|
|
300
|
-
return {
|
|
301
|
-
code: classified.code,
|
|
302
|
-
severity: 'warning',
|
|
303
|
-
stage,
|
|
304
|
-
format: normalizedFormat !== null && /^[a-z0-9][a-z0-9.+_-]{0,63}$/u.test(normalizedFormat)
|
|
305
|
-
? normalizedFormat
|
|
306
|
-
: null,
|
|
307
|
-
count: classified.count,
|
|
308
|
-
message: boundWireText(message, MCP_WIRE_LIMITS.messageCharacters, 'Conversion warning'),
|
|
309
|
-
remediation: classified.remediation === null
|
|
310
|
-
? null
|
|
311
|
-
: boundWireText(classified.remediation, MCP_WIRE_LIMITS.messageCharacters),
|
|
312
|
-
retryable: false,
|
|
313
|
-
location: null,
|
|
314
|
-
};
|
|
315
|
-
}
|
|
316
|
-
function classifyWarning(message, format) {
|
|
317
|
-
const normalized = message.toLowerCase();
|
|
318
|
-
if (normalized.includes('unsupported markdown node')) {
|
|
319
|
-
return {
|
|
320
|
-
code: 'unsupported-markdown-node',
|
|
321
|
-
count: warningCount(message, /omitted\s+(\d+)\s+unsupported/iu),
|
|
322
|
-
remediation: 'Replace unsupported directives with standard Markdown or choose a target that retains them.',
|
|
323
|
-
};
|
|
324
|
-
}
|
|
325
|
-
if (normalized.includes('csv export emitted only the first')) {
|
|
326
|
-
const tables = warningCount(message, /document has\s+(\d+)\s+tables/iu);
|
|
327
|
-
return {
|
|
328
|
-
code: 'csv-table-selection',
|
|
329
|
-
count: Math.max(1, tables - 1),
|
|
330
|
-
remediation: 'Set tableIndex explicitly or export the full workbook as XLSX.',
|
|
331
|
-
};
|
|
332
|
-
}
|
|
333
|
-
if (normalized.includes('xlsx export is tables-only')) {
|
|
334
|
-
return {
|
|
335
|
-
code: 'xlsx-content-omitted',
|
|
336
|
-
count: warningCount(message, /(\d+)\s+non-table block/iu),
|
|
337
|
-
remediation: 'Move required prose into tables or choose DOCX/PDF/HTML for mixed content.',
|
|
338
|
-
};
|
|
339
|
-
}
|
|
340
|
-
if (normalized.includes('pdf embedded images were skipped')) {
|
|
341
|
-
return {
|
|
342
|
-
code: 'pdf-image-omitted',
|
|
343
|
-
count: 1,
|
|
344
|
-
remediation: 'Import the PDF in an environment with canvas image decoding or provide the original image assets.',
|
|
345
|
-
};
|
|
346
|
-
}
|
|
347
|
-
if (normalized.includes('gif does not support audio') ||
|
|
348
|
-
normalized.includes('gif cannot retain audio')) {
|
|
349
|
-
return {
|
|
350
|
-
code: 'gif-audio-omitted',
|
|
351
|
-
count: 1,
|
|
352
|
-
remediation: 'Use MP4 when audio must be retained, or accept a silent GIF.',
|
|
353
|
-
};
|
|
354
|
-
}
|
|
355
|
-
if (normalized.includes('full-slide image') || normalized.includes('raster image')) {
|
|
356
|
-
return {
|
|
357
|
-
code: 'rendered-content-rasterized',
|
|
358
|
-
count: 1,
|
|
359
|
-
remediation: format === 'pptx'
|
|
360
|
-
? 'Choose editable-native PPTX when native shape editing matters more than exact pixels.'
|
|
361
|
-
: 'Choose semantic PDF when selectable structure matters more than exact pixels.',
|
|
362
|
-
};
|
|
363
|
-
}
|
|
364
|
-
if (normalized.includes('not a fully tagged accessible pdf')) {
|
|
365
|
-
return {
|
|
366
|
-
code: 'pdf-accessibility-limited',
|
|
367
|
-
count: 1,
|
|
368
|
-
remediation: 'Use an accessibility-aware tagged-PDF post-processing workflow.',
|
|
369
|
-
};
|
|
370
|
-
}
|
|
371
|
-
if (normalized.startsWith('theme:')) {
|
|
372
|
-
return {
|
|
373
|
-
code: 'theme-inference-adjusted',
|
|
374
|
-
count: 1,
|
|
375
|
-
remediation: 'Review the inferred theme and adjust its colors before reusing it broadly.',
|
|
376
|
-
};
|
|
377
|
-
}
|
|
378
|
-
if (normalized.includes('layout inference is only available')) {
|
|
379
|
-
return {
|
|
380
|
-
code: 'layout-inference-unsupported',
|
|
381
|
-
count: 1,
|
|
382
|
-
remediation: 'Use a PPTX source when reusable slide-layout inference is required.',
|
|
383
|
-
};
|
|
384
|
-
}
|
|
385
|
-
if ((normalized.startsWith('layout ') && normalized.includes('could not be read')) ||
|
|
386
|
-
normalized.includes('missing or unresolved layout')) {
|
|
387
|
-
return {
|
|
388
|
-
code: 'layout-inference-incomplete',
|
|
389
|
-
count: warningCount(message, /(\d+)\s+slide/iu),
|
|
390
|
-
remediation: 'Review the affected slides and supply explicit templates where inference was incomplete.',
|
|
391
|
-
};
|
|
392
|
-
}
|
|
393
|
-
return { code: 'fidelity-warning', count: 1, remediation: null };
|
|
394
|
-
}
|
|
395
|
-
function warningCount(message, pattern) {
|
|
396
|
-
const value = Number(pattern.exec(message)?.[1] ?? 1);
|
|
397
|
-
return Number.isSafeInteger(value) && value > 0 ? value : 1;
|
|
398
|
-
}
|
|
399
|
-
export function sha256(bytes) {
|
|
400
|
-
return createHash('sha256').update(bytes).digest('hex');
|
|
401
|
-
}
|
|
402
|
-
export function throwIfAborted(signal) {
|
|
403
|
-
if (!signal?.aborted)
|
|
404
|
-
return;
|
|
405
|
-
if (signal.reason !== undefined)
|
|
406
|
-
throw signal.reason;
|
|
407
|
-
const error = new Error('MCP operation was cancelled');
|
|
408
|
-
error.name = 'AbortError';
|
|
409
|
-
throw error;
|
|
410
|
-
}
|
|
411
|
-
function baseNameFromName(name) {
|
|
412
|
-
const leaf = basename(name.replace(/\\/gu, '/')) || 'document';
|
|
413
|
-
const extension = extname(leaf);
|
|
414
|
-
return (extension ? leaf.slice(0, -extension.length) : leaf) || 'document';
|
|
415
|
-
}
|
|
416
|
-
function formatFromName(name) {
|
|
417
|
-
const extension = extname(name).replace(/^\./u, '').toLowerCase();
|
|
418
|
-
return extension || 'auto';
|
|
419
|
-
}
|
|
420
|
-
function normalizeFormat(format) {
|
|
421
|
-
const normalized = format.toLowerCase().replace(/^\./u, '');
|
|
422
|
-
return normalized === 'markdown' ? 'md' : normalized || 'auto';
|
|
423
|
-
}
|
|
424
|
-
//# sourceMappingURL=document-service.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"document-service.js","sourceRoot":"","sources":["../../src/mcp/document-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { type DiagnosticStage } from '@bendyline/docblocks/mcp';
|
|
2
|
-
/** Produce one exact error envelope for every MCP tool generation. */
|
|
3
|
-
export declare function errorResult(caught: unknown, stage?: DiagnosticStage | null, formatOverride?: string | null, requestSignal?: AbortSignal): {
|
|
4
|
-
content: {
|
|
5
|
-
type: "text";
|
|
6
|
-
text: string;
|
|
7
|
-
}[];
|
|
8
|
-
structuredContent: Record<string, unknown>;
|
|
9
|
-
isError: true;
|
|
10
|
-
};
|
|
11
|
-
export declare function successResult<T extends object>(result: T): {
|
|
12
|
-
version: 1;
|
|
13
|
-
kind: "success";
|
|
14
|
-
result: T;
|
|
15
|
-
error: null;
|
|
16
|
-
};
|
|
17
|
-
//# sourceMappingURL=error-result.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"error-result.d.ts","sourceRoot":"","sources":["../../src/mcp/error-result.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,eAAe,EAErB,MAAM,0BAA0B,CAAC;AAGlC,sEAAsE;AACtE,wBAAgB,WAAW,CACzB,MAAM,EAAE,OAAO,EACf,KAAK,GAAE,eAAe,GAAG,IAAW,EACpC,cAAc,GAAE,MAAM,GAAG,IAAW,EACpC,aAAa,CAAC,EAAE,WAAW;;;;;uBAYgB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;;EAGnE;AAED,wBAAgB,aAAa,CAAC,CAAC,SAAS,MAAM,EAAE,MAAM,EAAE,CAAC;;;;;EAOxD"}
|
package/dist/mcp/error-result.js
DELETED
|
@@ -1,82 +0,0 @@
|
|
|
1
|
-
import { DOCBLOCKS_MCP_WIRE_VERSION, MCP_WIRE_LIMITS, parseMcpErrorResult, } from '@bendyline/docblocks/mcp';
|
|
2
|
-
import { boundWireText } from './output-bounds.js';
|
|
3
|
-
/** Produce one exact error envelope for every MCP tool generation. */
|
|
4
|
-
export function errorResult(caught, stage = null, formatOverride = null, requestSignal) {
|
|
5
|
-
const error = normalizeError(caught, stage, formatOverride, requestSignal?.aborted === true);
|
|
6
|
-
const payload = parseMcpErrorResult({
|
|
7
|
-
version: DOCBLOCKS_MCP_WIRE_VERSION,
|
|
8
|
-
kind: 'error',
|
|
9
|
-
result: null,
|
|
10
|
-
error,
|
|
11
|
-
});
|
|
12
|
-
if (!payload)
|
|
13
|
-
throw new Error('DocBlocks generated an invalid MCP error envelope');
|
|
14
|
-
return {
|
|
15
|
-
content: [{ type: 'text', text: JSON.stringify(payload) }],
|
|
16
|
-
structuredContent: payload,
|
|
17
|
-
isError: true,
|
|
18
|
-
};
|
|
19
|
-
}
|
|
20
|
-
export function successResult(result) {
|
|
21
|
-
return {
|
|
22
|
-
version: DOCBLOCKS_MCP_WIRE_VERSION,
|
|
23
|
-
kind: 'success',
|
|
24
|
-
result,
|
|
25
|
-
error: null,
|
|
26
|
-
};
|
|
27
|
-
}
|
|
28
|
-
function normalizeError(caught, stage, formatOverride, cancelled) {
|
|
29
|
-
const candidate = caught && typeof caught === 'object' ? caught : undefined;
|
|
30
|
-
const message = boundedErrorText(caught instanceof Error ? caught.message : String(caught));
|
|
31
|
-
const normalizedMessage = message.toLowerCase();
|
|
32
|
-
const stableCode = typeof candidate?.code === 'string' &&
|
|
33
|
-
/^[A-Za-z0-9][A-Za-z0-9._:-]{0,255}$/u.test(candidate.code)
|
|
34
|
-
? candidate.code
|
|
35
|
-
: undefined;
|
|
36
|
-
const code = (cancelled ? 'cancelled' : stableCode) ??
|
|
37
|
-
(normalizedMessage.includes('busy')
|
|
38
|
-
? 'busy'
|
|
39
|
-
: normalizedMessage.includes('timeout') || normalizedMessage.includes('runtime budget')
|
|
40
|
-
? 'timeout'
|
|
41
|
-
: normalizedMessage.includes('cancel') || normalizedMessage.includes('abort')
|
|
42
|
-
? 'cancelled'
|
|
43
|
-
: normalizedMessage.includes('outside') || normalizedMessage.includes('root')
|
|
44
|
-
? 'unauthorized-path'
|
|
45
|
-
: normalizedMessage.includes('already exists') ||
|
|
46
|
-
normalizedMessage.includes('precondition')
|
|
47
|
-
? 'conflict'
|
|
48
|
-
: normalizedMessage.includes('format')
|
|
49
|
-
? 'unknown-format'
|
|
50
|
-
: 'operation-failed');
|
|
51
|
-
const candidateFormat = typeof candidate?.format === 'string' ? candidate.format : formatOverride;
|
|
52
|
-
const active = candidate?.active;
|
|
53
|
-
const capacity = candidate?.capacity;
|
|
54
|
-
const operationLoad = Number.isSafeInteger(active) &&
|
|
55
|
-
typeof active === 'number' &&
|
|
56
|
-
active >= 0 &&
|
|
57
|
-
active <= 32 &&
|
|
58
|
-
Number.isSafeInteger(capacity) &&
|
|
59
|
-
typeof capacity === 'number' &&
|
|
60
|
-
capacity >= 1 &&
|
|
61
|
-
capacity <= 32 &&
|
|
62
|
-
active <= capacity
|
|
63
|
-
? { active, capacity }
|
|
64
|
-
: null;
|
|
65
|
-
return {
|
|
66
|
-
code,
|
|
67
|
-
message,
|
|
68
|
-
stage,
|
|
69
|
-
format: candidateFormat && /^[a-z0-9][a-z0-9.+_-]{0,63}$/u.test(candidateFormat)
|
|
70
|
-
? candidateFormat
|
|
71
|
-
: null,
|
|
72
|
-
hint: typeof candidate?.hint === 'string' ? boundedErrorText(candidate.hint) : null,
|
|
73
|
-
retryable: typeof candidate?.retryable === 'boolean'
|
|
74
|
-
? candidate.retryable
|
|
75
|
-
: code === 'busy' || code === 'cancelled' || code === 'timeout',
|
|
76
|
-
operationLoad,
|
|
77
|
-
};
|
|
78
|
-
}
|
|
79
|
-
function boundedErrorText(value) {
|
|
80
|
-
return boundWireText(value, MCP_WIRE_LIMITS.messageCharacters, 'MCP operation failed');
|
|
81
|
-
}
|
|
82
|
-
//# sourceMappingURL=error-result.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"error-result.js","sourceRoot":"","sources":["../../src/mcp/error-result.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,0BAA0B,EAC1B,eAAe,EACf,mBAAmB,GAGpB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,sEAAsE;AACtE,MAAM,UAAU,WAAW,CACzB,MAAe,EACf,QAAgC,IAAI,EACpC,iBAAgC,IAAI,EACpC,aAA2B;IAE3B,MAAM,KAAK,GAAG,cAAc,CAAC,MAAM,EAAE,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,OAAO,KAAK,IAAI,CAAC,CAAC;IAC7F,MAAM,OAAO,GAAG,mBAAmB,CAAC;QAClC,OAAO,EAAE,0BAA0B;QACnC,IAAI,EAAE,OAAO;QACb,MAAM,EAAE,IAAI;QACZ,KAAK;KACN,CAAC,CAAC;IACH,IAAI,CAAC,OAAO;QAAE,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;IACnF,OAAO;QACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC;QACnE,iBAAiB,EAAE,OAA6C;QAChE,OAAO,EAAE,IAAa;KACvB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,aAAa,CAAmB,MAAS;IACvD,OAAO;QACL,OAAO,EAAE,0BAA0B;QACnC,IAAI,EAAE,SAAkB;QACxB,MAAM;QACN,KAAK,EAAE,IAAI;KACZ,CAAC;AACJ,CAAC;AAED,SAAS,cAAc,CACrB,MAAe,EACf,KAA6B,EAC7B,cAA6B,EAC7B,SAAkB;IAElB,MAAM,SAAS,GACb,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAE,MAAkC,CAAC,CAAC,CAAC,SAAS,CAAC;IACzF,MAAM,OAAO,GAAG,gBAAgB,CAAC,MAAM,YAAY,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;IAC5F,MAAM,iBAAiB,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAChD,MAAM,UAAU,GACd,OAAO,SAAS,EAAE,IAAI,KAAK,QAAQ;QACnC,sCAAsC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;QACzD,CAAC,CAAC,SAAS,CAAC,IAAI;QAChB,CAAC,CAAC,SAAS,CAAC;IAChB,MAAM,IAAI,GACR,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC;QACtC,CAAC,iBAAiB,CAAC,QAAQ,CAAC,MAAM,CAAC;YACjC,CAAC,CAAC,MAAM;YACR,CAAC,CAAC,iBAAiB,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,iBAAiB,CAAC,QAAQ,CAAC,gBAAgB,CAAC;gBACrF,CAAC,CAAC,SAAS;gBACX,CAAC,CAAC,iBAAiB,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,iBAAiB,CAAC,QAAQ,CAAC,OAAO,CAAC;oBAC3E,CAAC,CAAC,WAAW;oBACb,CAAC,CAAC,iBAAiB,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,iBAAiB,CAAC,QAAQ,CAAC,MAAM,CAAC;wBAC3E,CAAC,CAAC,mBAAmB;wBACrB,CAAC,CAAC,iBAAiB,CAAC,QAAQ,CAAC,gBAAgB,CAAC;4BAC1C,iBAAiB,CAAC,QAAQ,CAAC,cAAc,CAAC;4BAC5C,CAAC,CAAC,UAAU;4BACZ,CAAC,CAAC,iBAAiB,CAAC,QAAQ,CAAC,QAAQ,CAAC;gCACpC,CAAC,CAAC,gBAAgB;gCAClB,CAAC,CAAC,kBAAkB,CAAC,CAAC;IACpC,MAAM,eAAe,GAAG,OAAO,SAAS,EAAE,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC;IAClG,MAAM,MAAM,GAAG,SAAS,EAAE,MAAM,CAAC;IACjC,MAAM,QAAQ,GAAG,SAAS,EAAE,QAAQ,CAAC;IACrC,MAAM,aAAa,GACjB,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC;QAC5B,OAAO,MAAM,KAAK,QAAQ;QAC1B,MAAM,IAAI,CAAC;QACX,MAAM,IAAI,EAAE;QACZ,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC;QAC9B,OAAO,QAAQ,KAAK,QAAQ;QAC5B,QAAQ,IAAI,CAAC;QACb,QAAQ,IAAI,EAAE;QACd,MAAM,IAAI,QAAQ;QAChB,CAAC,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE;QACtB,CAAC,CAAC,IAAI,CAAC;IACX,OAAO;QACL,IAAI;QACJ,OAAO;QACP,KAAK;QACL,MAAM,EACJ,eAAe,IAAI,+BAA+B,CAAC,IAAI,CAAC,eAAe,CAAC;YACtE,CAAC,CAAC,eAAe;YACjB,CAAC,CAAC,IAAI;QACV,IAAI,EAAE,OAAO,SAAS,EAAE,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,gBAAgB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI;QACnF,SAAS,EACP,OAAO,SAAS,EAAE,SAAS,KAAK,SAAS;YACvC,CAAC,CAAC,SAAS,CAAC,SAAS;YACrB,CAAC,CAAC,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,WAAW,IAAI,IAAI,KAAK,SAAS;QACnE,aAAa;KACd,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAa;IACrC,OAAO,aAAa,CAAC,KAAK,EAAE,eAAe,CAAC,iBAAiB,EAAE,sBAAsB,CAAC,CAAC;AACzF,CAAC"}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import type { ComparisonResult, DiagnosticStage, InspectionResult, McpDiagnostic, ValidationResult } from '@bendyline/docblocks/mcp';
|
|
2
|
-
import type { PreparedDocument } from './document-service.js';
|
|
3
|
-
import { DocumentService } from './document-service.js';
|
|
4
|
-
/** Producer budget keeps worst-case diagnostics comfortably within the default report quota. */
|
|
5
|
-
export declare const MCP_MAX_PUBLISHED_DIAGNOSTICS = 500;
|
|
6
|
-
export declare function inspectPreparedDocument(_documents: DocumentService, prepared: PreparedDocument, maximumBlocks?: number, cursor?: string | null, signal?: AbortSignal): Promise<InspectionResult>;
|
|
7
|
-
export declare function validatePreparedDocument(_documents: DocumentService, prepared: PreparedDocument, targetFormat: string | null, signal?: AbortSignal): Promise<ValidationResult>;
|
|
8
|
-
export declare function comparePreparedDocuments(documents: DocumentService, left: PreparedDocument, right: PreparedDocument, signal?: AbortSignal): Promise<ComparisonResult>;
|
|
9
|
-
/** Compute heading ranges in one reverse pass while allowing protocol cancellation to run. */
|
|
10
|
-
export declare function computeBlockSourceRanges(blocks: readonly Pick<PreparedDocument['doc']['blocks'][number], 'sourceHeading'>[], markdownLength: number, signal?: AbortSignal): Promise<Array<{
|
|
11
|
-
start: number;
|
|
12
|
-
end: number;
|
|
13
|
-
} | null>>;
|
|
14
|
-
export declare function boundDiagnostics(diagnostics: readonly McpDiagnostic[], stage: DiagnosticStage): McpDiagnostic[];
|
|
15
|
-
//# sourceMappingURL=intelligence.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"intelligence.d.ts","sourceRoot":"","sources":["../../src/mcp/intelligence.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAIV,gBAAgB,EAEhB,eAAe,EACf,gBAAgB,EAChB,aAAa,EAGb,gBAAgB,EACjB,MAAM,0BAA0B,CAAC;AAGlC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAqC,MAAM,uBAAuB,CAAC;AAK3F,gGAAgG;AAChG,eAAO,MAAM,6BAA6B,MAAM,CAAC;AAKjD,wBAAsB,uBAAuB,CAC3C,UAAU,EAAE,eAAe,EAC3B,QAAQ,EAAE,gBAAgB,EAC1B,aAAa,SAAgC,EAC7C,MAAM,GAAE,MAAM,GAAG,IAAW,EAC5B,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,gBAAgB,CAAC,CAyF3B;AAED,wBAAsB,wBAAwB,CAC5C,UAAU,EAAE,eAAe,EAC3B,QAAQ,EAAE,gBAAgB,EAC1B,YAAY,EAAE,MAAM,GAAG,IAAI,EAC3B,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,gBAAgB,CAAC,CAoC3B;AAED,wBAAsB,wBAAwB,CAC5C,SAAS,EAAE,eAAe,EAC1B,IAAI,EAAE,gBAAgB,EACtB,KAAK,EAAE,gBAAgB,EACvB,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,gBAAgB,CAAC,CA8K3B;AAsDD,8FAA8F;AAC9F,wBAAsB,wBAAwB,CAC5C,MAAM,EAAE,SAAS,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,EAAE,eAAe,CAAC,EAAE,EACnF,cAAc,EAAE,MAAM,EACtB,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,KAAK,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAAC,CAAC,CA4BvD;AA8XD,wBAAgB,gBAAgB,CAC9B,WAAW,EAAE,SAAS,aAAa,EAAE,EACrC,KAAK,EAAE,eAAe,GACrB,aAAa,EAAE,CAgCjB"}
|