@bevel-software/platform-core-backend 0.11.2 → 0.12.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/THIRD-PARTY-NOTICES.md +1163 -425
- package/dist/core/create-core-server.js +1 -1
- package/dist/core/create-core-server.js.map +1 -1
- package/dist/core/create-core-services.d.ts +2 -0
- package/dist/core/create-core-services.d.ts.map +1 -1
- package/dist/core/create-core-services.js +5 -0
- package/dist/core/create-core-services.js.map +1 -1
- package/dist/core-config.d.ts +7 -0
- package/dist/core-config.d.ts.map +1 -1
- package/dist/core-config.js +9 -0
- package/dist/core-config.js.map +1 -1
- package/dist/modules/code-mode/code-mode.tool.d.ts.map +1 -1
- package/dist/modules/code-mode/code-mode.tool.js +7 -1
- package/dist/modules/code-mode/code-mode.tool.js.map +1 -1
- package/dist/modules/workspace/file-readers/doc-extract.service.d.ts +71 -0
- package/dist/modules/workspace/file-readers/doc-extract.service.d.ts.map +1 -0
- package/dist/modules/workspace/file-readers/doc-extract.service.js +90 -0
- package/dist/modules/workspace/file-readers/doc-extract.service.js.map +1 -0
- package/dist/modules/workspace/file-readers/doc-extract.types.d.ts +55 -0
- package/dist/modules/workspace/file-readers/doc-extract.types.d.ts.map +1 -0
- package/dist/modules/workspace/file-readers/doc-extract.types.js +34 -0
- package/dist/modules/workspace/file-readers/doc-extract.types.js.map +1 -0
- package/dist/modules/workspace/file-readers/document-reader.d.ts +32 -0
- package/dist/modules/workspace/file-readers/document-reader.d.ts.map +1 -0
- package/dist/modules/workspace/file-readers/document-reader.js +59 -0
- package/dist/modules/workspace/file-readers/document-reader.js.map +1 -0
- package/dist/modules/workspace/file-readers/email-reader.d.ts +15 -0
- package/dist/modules/workspace/file-readers/email-reader.d.ts.map +1 -0
- package/dist/modules/workspace/file-readers/email-reader.js +19 -0
- package/dist/modules/workspace/file-readers/email-reader.js.map +1 -0
- package/dist/modules/workspace/file-readers/email-text.d.ts +51 -0
- package/dist/modules/workspace/file-readers/email-text.d.ts.map +1 -0
- package/dist/modules/workspace/file-readers/email-text.js +151 -0
- package/dist/modules/workspace/file-readers/email-text.js.map +1 -0
- package/dist/modules/workspace/file-readers/extract-docx.d.ts +13 -0
- package/dist/modules/workspace/file-readers/extract-docx.d.ts.map +1 -0
- package/dist/modules/workspace/file-readers/extract-docx.js +67 -0
- package/dist/modules/workspace/file-readers/extract-docx.js.map +1 -0
- package/dist/modules/workspace/file-readers/extract-eml.d.ts +18 -0
- package/dist/modules/workspace/file-readers/extract-eml.d.ts.map +1 -0
- package/dist/modules/workspace/file-readers/extract-eml.js +87 -0
- package/dist/modules/workspace/file-readers/extract-eml.js.map +1 -0
- package/dist/modules/workspace/file-readers/extract-msg.d.ts +17 -0
- package/dist/modules/workspace/file-readers/extract-msg.d.ts.map +1 -0
- package/dist/modules/workspace/file-readers/extract-msg.js +121 -0
- package/dist/modules/workspace/file-readers/extract-msg.js.map +1 -0
- package/dist/modules/workspace/file-readers/extract-odp.d.ts +13 -0
- package/dist/modules/workspace/file-readers/extract-odp.d.ts.map +1 -0
- package/dist/modules/workspace/file-readers/extract-odp.js +60 -0
- package/dist/modules/workspace/file-readers/extract-odp.js.map +1 -0
- package/dist/modules/workspace/file-readers/extract-ods.d.ts +10 -0
- package/dist/modules/workspace/file-readers/extract-ods.d.ts.map +1 -0
- package/dist/modules/workspace/file-readers/extract-ods.js +173 -0
- package/dist/modules/workspace/file-readers/extract-ods.js.map +1 -0
- package/dist/modules/workspace/file-readers/extract-odt.d.ts +17 -0
- package/dist/modules/workspace/file-readers/extract-odt.d.ts.map +1 -0
- package/dist/modules/workspace/file-readers/extract-odt.js +45 -0
- package/dist/modules/workspace/file-readers/extract-odt.js.map +1 -0
- package/dist/modules/workspace/file-readers/extract-pdf.d.ts +3 -0
- package/dist/modules/workspace/file-readers/extract-pdf.d.ts.map +1 -0
- package/dist/modules/workspace/file-readers/extract-pdf.js +176 -0
- package/dist/modules/workspace/file-readers/extract-pdf.js.map +1 -0
- package/dist/modules/workspace/file-readers/extract-pptx.d.ts +37 -0
- package/dist/modules/workspace/file-readers/extract-pptx.d.ts.map +1 -0
- package/dist/modules/workspace/file-readers/extract-pptx.js +288 -0
- package/dist/modules/workspace/file-readers/extract-pptx.js.map +1 -0
- package/dist/modules/workspace/file-readers/extract-xlsx.d.ts +10 -0
- package/dist/modules/workspace/file-readers/extract-xlsx.d.ts.map +1 -0
- package/dist/modules/workspace/file-readers/extract-xlsx.js +98 -0
- package/dist/modules/workspace/file-readers/extract-xlsx.js.map +1 -0
- package/dist/modules/workspace/file-readers/extraction-cache.d.ts +61 -0
- package/dist/modules/workspace/file-readers/extraction-cache.d.ts.map +1 -0
- package/dist/modules/workspace/file-readers/extraction-cache.js +135 -0
- package/dist/modules/workspace/file-readers/extraction-cache.js.map +1 -0
- package/dist/modules/workspace/file-readers/file-reader.d.ts +76 -0
- package/dist/modules/workspace/file-readers/file-reader.d.ts.map +1 -0
- package/dist/modules/workspace/file-readers/file-reader.js +55 -0
- package/dist/modules/workspace/file-readers/file-reader.js.map +1 -0
- package/dist/modules/workspace/file-readers/file-reader.registry.d.ts +13 -0
- package/dist/modules/workspace/file-readers/file-reader.registry.d.ts.map +1 -0
- package/dist/modules/workspace/file-readers/file-reader.registry.js +41 -0
- package/dist/modules/workspace/file-readers/file-reader.registry.js.map +1 -0
- package/dist/modules/workspace/file-readers/image-read.d.ts +35 -0
- package/dist/modules/workspace/file-readers/image-read.d.ts.map +1 -0
- package/dist/modules/workspace/file-readers/image-read.js +108 -0
- package/dist/modules/workspace/file-readers/image-read.js.map +1 -0
- package/dist/modules/workspace/file-readers/image-reader.d.ts +19 -0
- package/dist/modules/workspace/file-readers/image-reader.d.ts.map +1 -0
- package/dist/modules/workspace/file-readers/image-reader.js +30 -0
- package/dist/modules/workspace/file-readers/image-reader.js.map +1 -0
- package/dist/modules/workspace/file-readers/odf-text.d.ts +26 -0
- package/dist/modules/workspace/file-readers/odf-text.d.ts.map +1 -0
- package/dist/modules/workspace/file-readers/odf-text.js +116 -0
- package/dist/modules/workspace/file-readers/odf-text.js.map +1 -0
- package/dist/modules/workspace/file-readers/ooxml-text.d.ts +172 -0
- package/dist/modules/workspace/file-readers/ooxml-text.d.ts.map +1 -0
- package/dist/modules/workspace/file-readers/ooxml-text.js +439 -0
- package/dist/modules/workspace/file-readers/ooxml-text.js.map +1 -0
- package/dist/modules/workspace/file-readers/text-reader.d.ts +47 -0
- package/dist/modules/workspace/file-readers/text-reader.d.ts.map +1 -0
- package/dist/modules/workspace/file-readers/text-reader.js +117 -0
- package/dist/modules/workspace/file-readers/text-reader.js.map +1 -0
- package/dist/modules/workspace/workspace.tools.d.ts +2 -1
- package/dist/modules/workspace/workspace.tools.d.ts.map +1 -1
- package/dist/modules/workspace/workspace.tools.js +158 -15
- package/dist/modules/workspace/workspace.tools.js.map +1 -1
- package/package.json +9 -4
- package/src/core/create-core-server.ts +1 -1
- package/src/core/create-core-services.ts +6 -0
- package/src/core-config.ts +9 -0
- package/src/modules/code-mode/__tests__/code-mode.tool.test.ts +30 -0
- package/src/modules/code-mode/code-mode.tool.ts +7 -1
- package/src/modules/tool-helpers/__tests__/phase4-tools.test.ts +2 -1
- package/src/modules/workspace/__tests__/workspace.tools.test.ts +500 -2
- package/src/modules/workspace/file-readers/__tests__/doc-extract.test.ts +1658 -0
- package/src/modules/workspace/file-readers/__tests__/email-extract.test.ts +485 -0
- package/src/modules/workspace/file-readers/__tests__/file-reader.registry.test.ts +97 -0
- package/src/modules/workspace/file-readers/__tests__/image-read.test.ts +100 -0
- package/src/modules/workspace/file-readers/doc-extract.service.ts +104 -0
- package/src/modules/workspace/file-readers/doc-extract.types.ts +63 -0
- package/src/modules/workspace/file-readers/document-reader.ts +64 -0
- package/src/modules/workspace/file-readers/email-reader.ts +21 -0
- package/src/modules/workspace/file-readers/email-text.ts +193 -0
- package/src/modules/workspace/file-readers/extract-docx.ts +67 -0
- package/src/modules/workspace/file-readers/extract-eml.ts +92 -0
- package/src/modules/workspace/file-readers/extract-msg.ts +134 -0
- package/src/modules/workspace/file-readers/extract-odp.ts +63 -0
- package/src/modules/workspace/file-readers/extract-ods.ts +182 -0
- package/src/modules/workspace/file-readers/extract-odt.ts +48 -0
- package/src/modules/workspace/file-readers/extract-pdf.ts +178 -0
- package/src/modules/workspace/file-readers/extract-pptx.ts +302 -0
- package/src/modules/workspace/file-readers/extract-xlsx.ts +96 -0
- package/src/modules/workspace/file-readers/extraction-cache.ts +142 -0
- package/src/modules/workspace/file-readers/file-reader.registry.ts +45 -0
- package/src/modules/workspace/file-readers/file-reader.ts +104 -0
- package/src/modules/workspace/file-readers/image-read.ts +122 -0
- package/src/modules/workspace/file-readers/image-reader.ts +39 -0
- package/src/modules/workspace/file-readers/odf-text.ts +123 -0
- package/src/modules/workspace/file-readers/ooxml-text.ts +477 -0
- package/src/modules/workspace/file-readers/text-reader.ts +131 -0
- package/src/modules/workspace/workspace.tools.ts +174 -12
|
@@ -9,6 +9,9 @@ import { workspaceIdForBranch } from '../../shared/workspace-id.js';
|
|
|
9
9
|
// relies on) — not a workflow service, so this stays inside the module boundary.
|
|
10
10
|
import { assertValidBranchName } from '../kb-fs/branch-name.js';
|
|
11
11
|
import { toKbRelative, resolveReadableMap } from '../access-model/kb-read-filter.js';
|
|
12
|
+
import { createFileReaderRegistry } from './file-readers/file-reader.registry.js';
|
|
13
|
+
import { DocumentReader } from './file-readers/document-reader.js';
|
|
14
|
+
import { mcpImageResult } from '@bevel-software/platform-mcp-core';
|
|
12
15
|
/** Throw a 403 ToolError if the gate denies reading `wsPath` (a KB node). */
|
|
13
16
|
async function assertCanRead(gate, wsPath) {
|
|
14
17
|
const rel = toKbRelative(wsPath, gate.kbDirName);
|
|
@@ -62,8 +65,74 @@ const str = (description) => ({ type: 'string', description });
|
|
|
62
65
|
function asText(content) {
|
|
63
66
|
return typeof content === 'string' ? content : content.toString('utf8');
|
|
64
67
|
}
|
|
68
|
+
function asBytes(content) {
|
|
69
|
+
return Buffer.isBuffer(content) ? content : Buffer.from(content, 'utf8');
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* How many NOT-yet-cached documents one `grep` call will extract. Extraction
|
|
73
|
+
* is the expensive step (unzip + parse; pdf.js for PDFs) and a cold grep over
|
|
74
|
+
* a document-heavy KB would otherwise extract the whole tree inside a single
|
|
75
|
+
* walk. Cached extractions are always searched (a cache hit costs one small
|
|
76
|
+
* JSON read); beyond the budget the walk skips the document and the result
|
|
77
|
+
* carries a note with the count, so the caller knows a re-run (or a
|
|
78
|
+
* `read_file`, which extracts unbudgeted) will cover the rest.
|
|
79
|
+
*/
|
|
80
|
+
const UNCACHED_DOCS_PER_GREP = 20;
|
|
81
|
+
/**
|
|
82
|
+
* The write-refusal for office documents/PDFs on the agent TEXT-editing tools
|
|
83
|
+
* (write_file / write_files / edit_file). `read_file` returns an EXTRACTION
|
|
84
|
+
* for these types — their reader declares `textEditable: false` — so an agent
|
|
85
|
+
* that "read" one and writes text back would
|
|
86
|
+
* silently destroy the real document. Uploads and the plain HTTP write routes
|
|
87
|
+
* are untouched — humans replacing a document is exactly the right move — and
|
|
88
|
+
* `unzip` stays the raw-access escape hatch.
|
|
89
|
+
*/
|
|
90
|
+
function assertNotDocumentEdit(readers, path) {
|
|
91
|
+
const reader = readers.readerFor(path);
|
|
92
|
+
if (reader.textEditable)
|
|
93
|
+
return;
|
|
94
|
+
throw new ToolError(reader.editRefusal?.(path) ??
|
|
95
|
+
`"${path}" is an office document/PDF. read_file returns EXTRACTED text for it — not the file's real ` +
|
|
96
|
+
'content — so text written back cannot round-trip and would corrupt the document. To change it, ' +
|
|
97
|
+
'replace the document by uploading a new version.', 400);
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* The write-refusal for what a path ALREADY holds, as opposed to what its
|
|
101
|
+
* extension means (see `assertNotDocumentEdit` for that half). Only the
|
|
102
|
+
* fallback reader answers here today: an extensionless file may hold anything,
|
|
103
|
+
* and `read_file` refuses binary content — so a write gate that never asked
|
|
104
|
+
* would let an agent overwrite bytes it was not allowed to read.
|
|
105
|
+
*
|
|
106
|
+
* Costs one read of the existing file, and only for readers that ask the
|
|
107
|
+
* question. A path with nothing at it is a CREATE: there is nothing to destroy.
|
|
108
|
+
* Returns the bytes it read (so a caller that needs the content next —
|
|
109
|
+
* `edit_file` — does not read the file a second time), or undefined when it
|
|
110
|
+
* had no reason to read or nothing existed.
|
|
111
|
+
*/
|
|
112
|
+
async function assertNotBinaryOverwrite(readers, path, fs) {
|
|
113
|
+
const reader = readers.readerFor(path);
|
|
114
|
+
if (reader.editRefusalForExisting === undefined)
|
|
115
|
+
return undefined;
|
|
116
|
+
let existing;
|
|
117
|
+
try {
|
|
118
|
+
existing = asBytes(await fs.readFile(path));
|
|
119
|
+
}
|
|
120
|
+
catch (err) {
|
|
121
|
+
// Only a MISSING file is a create (both raw Node errors and Mastra's
|
|
122
|
+
// FileNotFoundError carry code 'ENOENT'). Any other failure — permissions,
|
|
123
|
+
// I/O — means the existing content could not be inspected: propagate it
|
|
124
|
+
// rather than let the write destroy bytes the gate never saw.
|
|
125
|
+
if (err?.code === 'ENOENT')
|
|
126
|
+
return undefined; // nothing there yet
|
|
127
|
+
throw err;
|
|
128
|
+
}
|
|
129
|
+
const refusal = reader.editRefusalForExisting(existing, path);
|
|
130
|
+
if (refusal !== null)
|
|
131
|
+
throw new ToolError(refusal, 400);
|
|
132
|
+
return existing;
|
|
133
|
+
}
|
|
65
134
|
/** JS grep over the workspace tree (read methods only) — bounded by match + depth caps. */
|
|
66
|
-
async function grepWalk(fs, dir, re, out, max, depth, gate, recordOntologyRead) {
|
|
135
|
+
async function grepWalk(fs, dir, re, out, max, depth, gate, recordOntologyRead, docs) {
|
|
67
136
|
if (out.length >= max || depth > 12)
|
|
68
137
|
return;
|
|
69
138
|
let entries;
|
|
@@ -83,22 +152,42 @@ async function grepWalk(fs, dir, re, out, max, depth, gate, recordOntologyRead)
|
|
|
83
152
|
continue;
|
|
84
153
|
const p = dir ? `${dir}/${e.name}` : e.name;
|
|
85
154
|
if (e.type === 'directory') {
|
|
86
|
-
await grepWalk(fs, p, re, out, max, depth + 1, gate, recordOntologyRead);
|
|
155
|
+
await grepWalk(fs, p, re, out, max, depth + 1, gate, recordOntologyRead, docs);
|
|
87
156
|
}
|
|
88
157
|
else {
|
|
89
158
|
// Opening a file under a named ontology is a read of that ontology — even
|
|
90
159
|
// for a root-level grep that resolves to a neutral root. Record it so a
|
|
91
160
|
// cross-ontology grep poisons later writes (closes the read-leak).
|
|
92
161
|
await recordOntologyRead(p);
|
|
162
|
+
// What grep searches is the file's reader's business: text content for
|
|
163
|
+
// the text reader (null on NUL bytes — binary is not searchable), the
|
|
164
|
+
// EXTRACTION for a document reader (marker line included, so the
|
|
165
|
+
// [slide N]/[sheet: …]/[page N] lines are themselves searchable and
|
|
166
|
+
// line numbers match what read_file returns), nothing for images.
|
|
167
|
+
const reader = docs.readers.readerFor(p);
|
|
93
168
|
let content;
|
|
94
169
|
try {
|
|
95
|
-
|
|
170
|
+
const bytes = asBytes(await fs.readFile(p));
|
|
171
|
+
content = reader.greppableText ? await reader.greppableText(bytes, p) : null;
|
|
172
|
+
if (content === null && reader instanceof DocumentReader) {
|
|
173
|
+
// Cold document (extraction not yet cached): cached ones above are
|
|
174
|
+
// free, extracting draws on the per-walk budget (see
|
|
175
|
+
// UNCACHED_DOCS_PER_GREP) — beyond it the walk skips and counts.
|
|
176
|
+
if (docs.uncachedBudget <= 0) {
|
|
177
|
+
docs.skippedUncached++;
|
|
178
|
+
continue;
|
|
179
|
+
}
|
|
180
|
+
docs.uncachedBudget--;
|
|
181
|
+
const res = await reader.read(bytes, p);
|
|
182
|
+
// A non-text outcome is a corrupt document — nothing searchable.
|
|
183
|
+
content = res.kind === 'text' ? res.text : null;
|
|
184
|
+
}
|
|
96
185
|
}
|
|
97
186
|
catch {
|
|
98
187
|
continue;
|
|
99
188
|
}
|
|
100
|
-
if (content
|
|
101
|
-
continue;
|
|
189
|
+
if (content === null)
|
|
190
|
+
continue;
|
|
102
191
|
const lines = content.split('\n');
|
|
103
192
|
for (let i = 0; i < lines.length && out.length < max; i++) {
|
|
104
193
|
re.lastIndex = 0;
|
|
@@ -117,7 +206,14 @@ async function grepWalk(fs, dir, re, out, max, depth, gate, recordOntologyRead)
|
|
|
117
206
|
* method), so they're implemented here. File ops are `both`; `execute_command`
|
|
118
207
|
* is INTERNAL-only (arbitrary shell as the caller is too dangerous to expose).
|
|
119
208
|
*/
|
|
120
|
-
export function registerWorkspaceTools(registry, router, toolAuth, toolHandler, spillStore, accessControl, kbDirName, sessionOntologyGate, writePolicy, sessionSink) {
|
|
209
|
+
export function registerWorkspaceTools(registry, router, toolAuth, toolHandler, spillStore, docExtract, accessControl, kbDirName, sessionOntologyGate, writePolicy, sessionSink) {
|
|
210
|
+
/**
|
|
211
|
+
* The one extension→reader registry every read-shaped decision routes
|
|
212
|
+
* through: read_file dispatches on it, grep asks it for searchable text,
|
|
213
|
+
* and the write-refusal consults its `textEditable`. Built once per mount
|
|
214
|
+
* around the shared extraction cache.
|
|
215
|
+
*/
|
|
216
|
+
const readers = createFileReaderRegistry(docExtract);
|
|
121
217
|
/** Build the per-call read gate from the tool's branch input + caller identity. */
|
|
122
218
|
const readGateFor = (branch, ctx) => ({
|
|
123
219
|
accessControl,
|
|
@@ -192,7 +288,7 @@ export function registerWorkspaceTools(registry, router, toolAuth, toolHandler,
|
|
|
192
288
|
// ── reads ──────────────────────────────────────────────────────────────
|
|
193
289
|
mount({
|
|
194
290
|
name: 'read_file',
|
|
195
|
-
description: 'Read a workspace file as text. Returns `{ path, content }`. Optional `offset`/`limit` slice the content (characters for a file, bytes for a `__tool_chain_spill__/…` ref) — use them to page through large files or a `call_tool_chain` spill rather than reading multi-MB in full. A spill ref is workspace-independent: `branch` is ignored for it.' +
|
|
291
|
+
description: 'Read a workspace file as text. Returns `{ path, content }`. Images (.png/.jpg/.jpeg/.gif/.webp) return the IMAGE ITSELF as native MCP image content (plus a one-line text note naming the file), so you can look at the picture — up to 3.5 MB of raw image data; a larger image gets an honest refusal asking for a locally downscaled copy or a smaller export (`.svg` is text and reads as text). Images come back only on a DIRECT call: inside `call_tool_chain` an image read yields an `{ image_omitted, note }` stub instead. Office and OpenDocument files (.docx/.pptx/.xlsx, .odt/.odp/.ods) and PDFs return their EXTRACTED text under an honest `[extracted text of …]` header, with `[slide N]`/`[sheet: Name]`/`[page N]` markers — the extraction is READ-ONLY (layout/images omitted; such files cannot be edited as text, only replaced by uploading a new version). Email files (.eml/.msg) return their EXTRACTED text the same way: a `[from]`/`[to]`/`[subject]`/`[date]` header block, the body (plain-text part preferred; an HTML-only body is stripped to text), and an `[attachments]` name list — attachments are listed, never extracted. Other binary files return a one-line description instead of raw bytes. Optional `offset`/`limit` slice the content (characters for a file, bytes for a `__tool_chain_spill__/…` ref; ignored for an image) — use them to page through large files or a `call_tool_chain` spill rather than reading multi-MB in full. A spill ref is workspace-independent: `branch` is ignored for it.' +
|
|
196
292
|
ONTOLOGY_BOUNDARY_NOTE,
|
|
197
293
|
inputs: {
|
|
198
294
|
type: 'object',
|
|
@@ -222,7 +318,30 @@ export function registerWorkspaceTools(registry, router, toolAuth, toolHandler,
|
|
|
222
318
|
await recordOntologyRead(sessionOntologyGate, ctx, p);
|
|
223
319
|
await assertCanRead(readGateFor(a.branch, ctx), p);
|
|
224
320
|
const fs = await ctx.getFilesystem(a.branch);
|
|
225
|
-
|
|
321
|
+
// Reading (extraction, image and binary handling included) happens AFTER
|
|
322
|
+
// the access gate and the ontology-read recording above — a document
|
|
323
|
+
// read is still a KB read. ONE registry dispatch picks the reader by
|
|
324
|
+
// extension; everything below just maps its ReadResult onto the tool's
|
|
325
|
+
// result shape.
|
|
326
|
+
const result = await readers.readerFor(p).read(asBytes(await fs.readFile(p)), p);
|
|
327
|
+
// Images return the picture itself as an MCP image content block, so a
|
|
328
|
+
// multimodal model SEES it. The handler returns the `McpImageResult`
|
|
329
|
+
// sentinel; the MCP result shaping (`toCallToolResult` in
|
|
330
|
+
// platform-mcp-core) turns it into `content: [image, text-note]`. The
|
|
331
|
+
// declared `outputs` schema (`{ path, content }`) intentionally does NOT
|
|
332
|
+
// cover this shape: `outputs` is advisory documentation — never enforced
|
|
333
|
+
// at the route, and not advertised over MCP (`toListedTool` exposes
|
|
334
|
+
// `inputSchema` only) — and the image result is replaced wholesale by
|
|
335
|
+
// content blocks before any client could try to validate it, so the
|
|
336
|
+
// schema keeps describing the text path it has always described.
|
|
337
|
+
// `offset`/`limit` are meaningless on a picture and are ignored.
|
|
338
|
+
if (result.kind === 'image') {
|
|
339
|
+
return mcpImageResult(result.data, result.mimeType, result.note);
|
|
340
|
+
}
|
|
341
|
+
// Text and refusals alike land in `content` — a refusal (corrupt
|
|
342
|
+
// document, unreadable binary, oversized image) IS the file's honest
|
|
343
|
+
// textual answer, sliced like any other content.
|
|
344
|
+
const content = result.kind === 'text' ? result.text : result.message;
|
|
226
345
|
const start = offset && offset > 0 ? offset : 0;
|
|
227
346
|
const sliced = offset !== undefined || limit !== undefined
|
|
228
347
|
? content.slice(start, limit !== undefined ? start + limit : undefined)
|
|
@@ -300,7 +419,7 @@ export function registerWorkspaceTools(registry, router, toolAuth, toolHandler,
|
|
|
300
419
|
});
|
|
301
420
|
mount({
|
|
302
421
|
name: 'grep',
|
|
303
|
-
description: 'Regex content search across the workspace. Returns `{ matches: [{ path, line, text }] }` (capped). Use to find where something is defined/referenced.' +
|
|
422
|
+
description: 'Regex content search across the workspace. Returns `{ matches: [{ path, line, text }] }` (capped). Use to find where something is defined/referenced. Searches INSIDE Office and OpenDocument files (.docx/.pptx/.xlsx, .odt/.odp/.ods), PDFs and email files (.eml/.msg) via their extracted text — matches there carry the extraction\'s line numbers, and the `[slide N]`/`[sheet: Name]`/`[page N]`/`[from]`/`[subject]` marker lines locate them; a bounded number of not-yet-extracted documents is extracted per call, and the result notes how many were skipped (re-run to cover them).' +
|
|
304
423
|
ONTOLOGY_BOUNDARY_NOTE,
|
|
305
424
|
inputs: {
|
|
306
425
|
type: 'object',
|
|
@@ -328,6 +447,7 @@ export function registerWorkspaceTools(registry, router, toolAuth, toolHandler,
|
|
|
328
447
|
},
|
|
329
448
|
},
|
|
330
449
|
truncated: { type: 'boolean', description: 'True if the match cap was hit and results may be incomplete.' },
|
|
450
|
+
note: str('Present when some documents (office/PDF/email files) were not searched because their text was not yet extracted and the per-call extraction budget ran out — re-run grep to cover them.'),
|
|
331
451
|
},
|
|
332
452
|
required: ['matches', 'truncated'],
|
|
333
453
|
},
|
|
@@ -348,14 +468,25 @@ export function registerWorkspaceTools(registry, router, toolAuth, toolHandler,
|
|
|
348
468
|
await recordOntologyRead(sessionOntologyGate, ctx, searchRoot);
|
|
349
469
|
const out = [];
|
|
350
470
|
const max = typeof a.max_results === 'number' ? Math.min(a.max_results, 1000) : 200;
|
|
351
|
-
|
|
352
|
-
|
|
471
|
+
const docs = { readers, uncachedBudget: UNCACHED_DOCS_PER_GREP, skippedUncached: 0 };
|
|
472
|
+
await grepWalk(await ctx.getFilesystem(a.branch), searchRoot, re, out, max, 0, readGateFor(a.branch, ctx), (p) => recordOntologyRead(sessionOntologyGate, ctx, p), docs);
|
|
473
|
+
return {
|
|
474
|
+
matches: out,
|
|
475
|
+
truncated: out.length >= max,
|
|
476
|
+
...(docs.skippedUncached > 0
|
|
477
|
+
? {
|
|
478
|
+
note: `${docs.skippedUncached} document(s) (office/PDF/email files) were not searched: their text was not yet ` +
|
|
479
|
+
`extracted and this call's extraction budget (${UNCACHED_DOCS_PER_GREP}) ran out. Re-run the ` +
|
|
480
|
+
'same grep to extract and search the next batch.',
|
|
481
|
+
}
|
|
482
|
+
: {}),
|
|
483
|
+
};
|
|
353
484
|
},
|
|
354
485
|
});
|
|
355
486
|
// ── writes (through the lock/commit pipeline) ───────────────────────────
|
|
356
487
|
mount({
|
|
357
488
|
name: 'write_file',
|
|
358
|
-
description: 'Write (create or overwrite) a workspace file. The change is committed + pushed as you. Returns `{ path, bytes }`.' +
|
|
489
|
+
description: 'Write (create or overwrite) a workspace file. The change is committed + pushed as you. Returns `{ path, bytes }`. Refuses document formats: Office/OpenDocument files and PDFs (.docx/.pptx/.xlsx/.odt/.odp/.ods/.pdf) and email files (.eml/.msg), whose reads are text EXTRACTIONS that cannot round-trip, and legacy binary Office files (.doc/.ppt/.xls), which cannot be extracted at all; replace such a file by uploading a new version instead.' +
|
|
359
490
|
ONTOLOGY_BOUNDARY_NOTE,
|
|
360
491
|
inputs: {
|
|
361
492
|
type: 'object',
|
|
@@ -375,6 +506,7 @@ export function registerWorkspaceTools(registry, router, toolAuth, toolHandler,
|
|
|
375
506
|
},
|
|
376
507
|
write: true,
|
|
377
508
|
handler: async (a, ctx) => {
|
|
509
|
+
assertNotDocumentEdit(readers, a.path);
|
|
378
510
|
// NB: this is a no-op for chat + `ontology_ingest` — it only bites when a
|
|
379
511
|
// routine executor has explicitly restricted THIS session's `ctx.sessionId`
|
|
380
512
|
// (today only `watchlist_check`, to `.html`). Unrestricted sessions pass straight
|
|
@@ -382,6 +514,7 @@ export function registerWorkspaceTools(registry, router, toolAuth, toolHandler,
|
|
|
382
514
|
writePolicy.assertPathWritable(ctx.sessionId, a.path);
|
|
383
515
|
await assertOntologyWriteAllowed(sessionOntologyGate, ctx, a.path);
|
|
384
516
|
const fs = await ctx.getFilesystem(a.branch);
|
|
517
|
+
await assertNotBinaryOverwrite(readers, a.path, fs);
|
|
385
518
|
await fs.writeFile(a.path, a.content);
|
|
386
519
|
return { path: a.path, bytes: Buffer.byteLength(a.content, 'utf8') };
|
|
387
520
|
},
|
|
@@ -391,7 +524,9 @@ export function registerWorkspaceTools(registry, router, toolAuth, toolHandler,
|
|
|
391
524
|
description: 'Batch-write many files in ONE commit — far faster than calling write_file once per file when ' +
|
|
392
525
|
'creating many files at once (e.g. seeding a knowledge base). Each entry is `{ path, content }`; all ' +
|
|
393
526
|
'are created/overwritten and committed + pushed together as you. Prefer this over many write_file ' +
|
|
394
|
-
'calls. All files must be in the SAME ontology (the boundary below applies to the batch).
|
|
527
|
+
'calls. All files must be in the SAME ontology (the boundary below applies to the batch). Refuses document formats: ' +
|
|
528
|
+
'Office/OpenDocument files and PDFs (.docx/.pptx/.xlsx/.odt/.odp/.ods/.pdf) and email files (.eml/.msg), whose reads are text EXTRACTIONS that cannot ' +
|
|
529
|
+
'round-trip, and legacy binary Office files (.doc/.ppt/.xls); replace such a file by uploading a new version instead. Returns `{ count }`.' +
|
|
395
530
|
ONTOLOGY_BOUNDARY_NOTE,
|
|
396
531
|
inputs: {
|
|
397
532
|
type: 'object',
|
|
@@ -424,6 +559,8 @@ export function registerWorkspaceTools(registry, router, toolAuth, toolHandler,
|
|
|
424
559
|
return { count: 0 };
|
|
425
560
|
// Gate every path first (records ontology touches; a cross-ontology batch
|
|
426
561
|
// is blocked exactly like the per-file write tools).
|
|
562
|
+
for (const f of files)
|
|
563
|
+
assertNotDocumentEdit(readers, f.path);
|
|
427
564
|
for (const f of files)
|
|
428
565
|
writePolicy.assertPathWritable(ctx.sessionId, f.path);
|
|
429
566
|
for (const f of files)
|
|
@@ -431,13 +568,15 @@ export function registerWorkspaceTools(registry, router, toolAuth, toolHandler,
|
|
|
431
568
|
// `write: true` guarantees a LockingFilesystem here; `writeFiles` lands the
|
|
432
569
|
// whole batch as one commit. Structural cast avoids a workflow-internal import.
|
|
433
570
|
const fs = (await ctx.getFilesystem(a.branch));
|
|
571
|
+
for (const f of files)
|
|
572
|
+
await assertNotBinaryOverwrite(readers, f.path, fs);
|
|
434
573
|
await fs.writeFiles(files.map((f) => ({ path: f.path, content: f.content })), `Write ${files.length} file(s)`);
|
|
435
574
|
return { count: files.length };
|
|
436
575
|
},
|
|
437
576
|
});
|
|
438
577
|
mount({
|
|
439
578
|
name: 'edit_file',
|
|
440
|
-
description: 'Replace an exact string in a workspace file. `old_string` must appear exactly once unless `replace_all`. Committed + pushed as you.' +
|
|
579
|
+
description: 'Replace an exact string in a workspace file. `old_string` must appear exactly once unless `replace_all`. Committed + pushed as you. Refuses document formats: Office/OpenDocument files and PDFs (.docx/.pptx/.xlsx/.odt/.odp/.ods/.pdf) and email files (.eml/.msg), whose reads are text EXTRACTIONS that cannot round-trip, and legacy binary Office files (.doc/.ppt/.xls), which cannot be extracted at all; replace such a file by uploading a new version instead.' +
|
|
441
580
|
ONTOLOGY_BOUNDARY_NOTE,
|
|
442
581
|
inputs: {
|
|
443
582
|
type: 'object',
|
|
@@ -459,13 +598,17 @@ export function registerWorkspaceTools(registry, router, toolAuth, toolHandler,
|
|
|
459
598
|
},
|
|
460
599
|
write: true,
|
|
461
600
|
handler: async (a, ctx) => {
|
|
601
|
+
assertNotDocumentEdit(readers, a.path);
|
|
462
602
|
writePolicy.assertPathWritable(ctx.sessionId, a.path);
|
|
463
603
|
await assertOntologyWriteAllowed(sessionOntologyGate, ctx, a.path);
|
|
464
604
|
const fs = await ctx.getFilesystem(a.branch);
|
|
465
605
|
const path = a.path;
|
|
466
606
|
const oldStr = a.old_string;
|
|
467
607
|
const newStr = a.new_string;
|
|
468
|
-
|
|
608
|
+
// The overwrite gate already read the file when its reader asked the
|
|
609
|
+
// binary question — reuse those bytes instead of reading twice.
|
|
610
|
+
const existing = await assertNotBinaryOverwrite(readers, path, fs);
|
|
611
|
+
const content = asText(existing ?? (await fs.readFile(path)));
|
|
469
612
|
const count = oldStr ? content.split(oldStr).length - 1 : 0;
|
|
470
613
|
if (count === 0)
|
|
471
614
|
throw new ToolError('old_string not found in the file.', 400);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workspace.tools.js","sourceRoot":"","sources":["../../../src/modules/workspace/workspace.tools.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"workspace.tools.js","sourceRoot":"","sources":["../../../src/modules/workspace/workspace.tools.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bevel-software/platform-core-backend",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.12.0",
|
|
4
4
|
"description": "Open-source core backend of the Bevel platform: git-backed knowledge workspace, workflow (branches/change requests/locks/SSE), skills, tools, secrets vault, access control and the remote MCP surface.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -26,9 +26,10 @@
|
|
|
26
26
|
"THIRD-PARTY-NOTICES.md"
|
|
27
27
|
],
|
|
28
28
|
"engines": {
|
|
29
|
-
"node": ">=22 <23"
|
|
29
|
+
"node": ">=22.13 <23"
|
|
30
30
|
},
|
|
31
31
|
"dependencies": {
|
|
32
|
+
"@kenjiuno/msgreader": "^1.28.0",
|
|
32
33
|
"@mastra/core": "1.35.0",
|
|
33
34
|
"@modelcontextprotocol/sdk": "^1.29.0",
|
|
34
35
|
"@utcp/code-mode": "^1.2.12",
|
|
@@ -41,13 +42,17 @@
|
|
|
41
42
|
"dotenv": "^16.4.0",
|
|
42
43
|
"drizzle-orm": "^0.45.2",
|
|
43
44
|
"express": "^5.1.0",
|
|
45
|
+
"htmlparser2": "^12.0.0",
|
|
44
46
|
"ignore": "^7.0.5",
|
|
45
47
|
"jsonwebtoken": "^9.0.3",
|
|
48
|
+
"pdfjs-dist": "^5.4.624",
|
|
46
49
|
"pg": "^8.20.0",
|
|
50
|
+
"postal-mime": "^3.0.0",
|
|
51
|
+
"xlsx": "https://cdn.sheetjs.com/xlsx-0.20.3/xlsx-0.20.3.tgz",
|
|
47
52
|
"yaml": "^2.9.0",
|
|
48
53
|
"zod": "^3.24.0",
|
|
49
|
-
"@bevel-software/platform-mcp-core": "0.
|
|
50
|
-
"@bevel-software/platform-shared": "0.
|
|
54
|
+
"@bevel-software/platform-mcp-core": "0.12.0",
|
|
55
|
+
"@bevel-software/platform-shared": "0.12.0"
|
|
51
56
|
},
|
|
52
57
|
"devDependencies": {
|
|
53
58
|
"@types/adm-zip": "^0.5.8",
|
|
@@ -330,7 +330,7 @@ export async function createCoreServer(
|
|
|
330
330
|
hooks: core.workflowService.hooks,
|
|
331
331
|
};
|
|
332
332
|
registerWorkflowTools(core.toolRegistry, toolsRouter, ta, th);
|
|
333
|
-
registerWorkspaceTools(core.toolRegistry, toolsRouter, ta, th, core.spillStore, core.accessControl, core.kbDirName, sessionOntologyGate, core.routineWritePolicy, core.sessionSink);
|
|
333
|
+
registerWorkspaceTools(core.toolRegistry, toolsRouter, ta, th, core.spillStore, core.docExtractService, core.accessControl, core.kbDirName, sessionOntologyGate, core.routineWritePolicy, core.sessionSink);
|
|
334
334
|
registerSkillsTools(core.toolRegistry, toolsRouter, ta, th, core.skillService);
|
|
335
335
|
registerToolManualsTools(core.toolRegistry, toolsRouter, ta, th, core.toolManualService, {
|
|
336
336
|
accessControl: core.accessControl,
|
|
@@ -28,6 +28,7 @@ function parseDomainList(raw: string): string[] {
|
|
|
28
28
|
.filter((d) => d.length > 0);
|
|
29
29
|
}
|
|
30
30
|
import { SpillStore } from '../modules/workspace/spill-store.js';
|
|
31
|
+
import { DocExtractService } from '../modules/workspace/file-readers/doc-extract.service.js';
|
|
31
32
|
import { UuidSessionSink, type ISessionSink } from '../modules/workspace/session-sink.js';
|
|
32
33
|
import { AuthService } from '../modules/auth/auth.service.js';
|
|
33
34
|
import { AccountErasureService } from '../modules/auth/account-erasure.service.js';
|
|
@@ -114,6 +115,7 @@ export interface CoreServices {
|
|
|
114
115
|
*/
|
|
115
116
|
kbStartupRunner: KbStartupRunner;
|
|
116
117
|
spillStore: SpillStore;
|
|
118
|
+
docExtractService: DocExtractService;
|
|
117
119
|
accessControl: AccessControlService;
|
|
118
120
|
creatorAccess: CreatorAccessService;
|
|
119
121
|
sessionOntologyService: SessionOntologyService;
|
|
@@ -289,6 +291,9 @@ export async function createCoreServices(
|
|
|
289
291
|
// Shared, workspace-independent store for oversized `call_tool_chain` results,
|
|
290
292
|
// read back via `read_file`. Sibling of `workspacesRoot`, never committed.
|
|
291
293
|
const spillStore = new SpillStore(config.spillRoot);
|
|
294
|
+
// Office-document/PDF text extraction for `read_file`/`grep`, cached by
|
|
295
|
+
// content hash beside the workspaces root (see `DocExtractionCache`).
|
|
296
|
+
const docExtractService = new DocExtractService(config.docExtractCacheRoot);
|
|
292
297
|
// The deployment owner counts as Admin for the two hardcoded `write`
|
|
293
298
|
// rescues (`roles.yaml` and any `access.md`) — the SAME list
|
|
294
299
|
// `AdminAccessService` below is given, so the admin surfaces and the write
|
|
@@ -799,6 +804,7 @@ export async function createCoreServices(
|
|
|
799
804
|
settings,
|
|
800
805
|
kbDirName,
|
|
801
806
|
spillStore,
|
|
807
|
+
docExtractService,
|
|
802
808
|
accessControl,
|
|
803
809
|
creatorAccess,
|
|
804
810
|
sessionOntologyService,
|
package/src/core-config.ts
CHANGED
|
@@ -71,6 +71,13 @@ export class CoreConfig {
|
|
|
71
71
|
* never committed, best-effort GC'd on write.
|
|
72
72
|
*/
|
|
73
73
|
readonly spillRoot: string;
|
|
74
|
+
/**
|
|
75
|
+
* Sibling-to-`workspacesRoot` location for the document-extraction cache —
|
|
76
|
+
* text extracted from office documents/PDFs (`read_file`/`grep`), keyed by
|
|
77
|
+
* git blob sha. Derived data only: safe to delete at any time, never
|
|
78
|
+
* committed, size-bounded by the cache itself.
|
|
79
|
+
*/
|
|
80
|
+
readonly docExtractCacheRoot: string;
|
|
74
81
|
readonly jwtSecret: string;
|
|
75
82
|
/**
|
|
76
83
|
* The deployment's owner. REQUIRED — three separate jobs rest on it, and a
|
|
@@ -244,6 +251,8 @@ export class CoreConfig {
|
|
|
244
251
|
this.workspacesRoot = process.env.WORKSPACES_ROOT || path.resolve(process.cwd(), 'workspaces');
|
|
245
252
|
this.backupsRoot = process.env.BACKUPS_ROOT || path.resolve(this.workspacesRoot, '..', 'backups');
|
|
246
253
|
this.spillRoot = process.env.SPILL_ROOT || path.resolve(this.workspacesRoot, '..', 'tool-chain-spills');
|
|
254
|
+
this.docExtractCacheRoot =
|
|
255
|
+
process.env.DOC_EXTRACT_CACHE_ROOT || path.resolve(this.workspacesRoot, '..', 'doc-extract-cache');
|
|
247
256
|
// Required, and checked BEFORE the auth routes it signs for are ever
|
|
248
257
|
// mounted. Empty, the first login attempt fails deep inside the JWT library
|
|
249
258
|
// with a message about a missing key — a boot error naming the variable is
|
|
@@ -65,3 +65,33 @@ describe('tools_info', () => {
|
|
|
65
65
|
await expect(run(['solo.run', 'down.run'])).rejects.toThrow(/repository unavailable/);
|
|
66
66
|
});
|
|
67
67
|
});
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* The in-process agent's `call_tool_chain` shares the MCP surfaces' image
|
|
71
|
+
* policy: a chain result is stringified into the transcript, so an image read
|
|
72
|
+
* inside it must come back as an omitted-image note — never inline base64.
|
|
73
|
+
*/
|
|
74
|
+
describe('call_tool_chain image scrub', () => {
|
|
75
|
+
it('replaces a chained image sentinel with a note before serialization', async () => {
|
|
76
|
+
const { createCallToolChainTool } = await import('../code-mode.tool.js');
|
|
77
|
+
const sentinel = {
|
|
78
|
+
kind: 'bevel/mcp-image@v1',
|
|
79
|
+
data: 'QUJDREVG',
|
|
80
|
+
mimeType: 'image/png',
|
|
81
|
+
note: '[image: Files/logo.png — image/png, 6 bytes]',
|
|
82
|
+
};
|
|
83
|
+
const chainClient = {
|
|
84
|
+
callToolChain: vi.fn(async () => ({ result: { pic: sentinel, ok: true }, logs: [] as string[] })),
|
|
85
|
+
} as unknown as CodeModeUtcpClient;
|
|
86
|
+
const spill = { write: vi.fn(async () => ({ ref: '__tool_chain_spill__/x.json', bytes: 1 })) };
|
|
87
|
+
const tool = createCallToolChainTool(chainClient, spill as never) as unknown as {
|
|
88
|
+
execute: (input: { code: string }) => Promise<unknown>;
|
|
89
|
+
};
|
|
90
|
+
const out = JSON.stringify(await tool.execute({ code: 'return 1' }));
|
|
91
|
+
expect(out).not.toContain('QUJDREVG');
|
|
92
|
+
expect(out).toContain('image_omitted');
|
|
93
|
+
expect(out).toContain('Files/logo.png');
|
|
94
|
+
expect(out).toContain('"ok":true');
|
|
95
|
+
expect(spill.write).not.toHaveBeenCalled();
|
|
96
|
+
});
|
|
97
|
+
});
|
|
@@ -2,6 +2,7 @@ import '@utcp/direct-call';
|
|
|
2
2
|
import { createTool } from '@mastra/core/tools';
|
|
3
3
|
import { z } from 'zod';
|
|
4
4
|
import { CodeModeUtcpClient } from '@utcp/code-mode';
|
|
5
|
+
import { omitImagePayloads } from '@bevel-software/platform-mcp-core';
|
|
5
6
|
import type { SpillStore } from '../workspace/spill-store.js';
|
|
6
7
|
import { utcpNameToTsInterfaceName, findToolByName, AmbiguousToolNameError } from './code-mode-names.js';
|
|
7
8
|
|
|
@@ -43,7 +44,12 @@ export function createCallToolChainTool(
|
|
|
43
44
|
const timeout = input.timeout ?? 30_000;
|
|
44
45
|
const maxOutputSize = input.max_output_size ?? 200_000;
|
|
45
46
|
try {
|
|
46
|
-
const { result, logs } = await client.callToolChain(input.code, timeout);
|
|
47
|
+
const { result: rawResult, logs } = await client.callToolChain(input.code, timeout);
|
|
48
|
+
// Same policy as the MCP surfaces' `call_tool_chain` (see
|
|
49
|
+
// `omitImagePayloads`): a chain result is stringified JSON, so an image
|
|
50
|
+
// read inside it comes back as an omitted-image note instead of a
|
|
51
|
+
// base64 flood — images are only delivered on a direct `read_file`.
|
|
52
|
+
const result = omitImagePayloads(rawResult, 'result');
|
|
47
53
|
const json = JSON.stringify({ success: true, result, logs });
|
|
48
54
|
if (json.length <= maxOutputSize) {
|
|
49
55
|
return { success: true, result, logs };
|
|
@@ -11,6 +11,7 @@ import { registerWorkspaceTools } from '../../workspace/workspace.tools.js';
|
|
|
11
11
|
import { RoutineWritePolicyService } from '../../workspace/routine-write-policy.js';
|
|
12
12
|
import { WorkflowHooks } from '../../workflow/workflow-hooks.js';
|
|
13
13
|
import { SpillStore } from '../../workspace/spill-store.js';
|
|
14
|
+
import { DocExtractService } from '../../workspace/file-readers/doc-extract.service.js';
|
|
14
15
|
|
|
15
16
|
const WS = 'target-company-state';
|
|
16
17
|
let recorded: unknown[][] = [];
|
|
@@ -48,7 +49,7 @@ async function start(): Promise<string> {
|
|
|
48
49
|
// kb (citation) tools alongside the workspace tools. Those registrations —
|
|
49
50
|
// and their web_search / submit_feedback / cite_kb_node cases — moved to
|
|
50
51
|
// the enterprise repo with their modules; core registers only core tools.
|
|
51
|
-
registerWorkspaceTools(registry, router, toolAuth, th, new SpillStore('/tmp/bevel-test-spills'), accessControl, 'knowledge-base', {
|
|
52
|
+
registerWorkspaceTools(registry, router, toolAuth, th, new SpillStore('/tmp/bevel-test-spills'), new DocExtractService('/tmp/bevel-test-doc-extract'), accessControl, 'knowledge-base', {
|
|
52
53
|
service: {} as never,
|
|
53
54
|
enabled: false, // ontology boundary not under test here
|
|
54
55
|
kbDirName: 'knowledge-base',
|