@nac3/forge-cli 1.3.6 → 1.6.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/dist/bin/heap_bootstrap.d.ts +34 -0
  2. package/dist/bin/heap_bootstrap.d.ts.map +1 -0
  3. package/dist/bin/heap_bootstrap.js +134 -0
  4. package/dist/bin/heap_bootstrap.js.map +1 -0
  5. package/dist/bin/yf.js +30 -21
  6. package/dist/bin/yf.js.map +1 -1
  7. package/dist/chat/claude.d.ts.map +1 -1
  8. package/dist/chat/claude.js +20 -1
  9. package/dist/chat/claude.js.map +1 -1
  10. package/dist/chat/claude_cli.d.ts.map +1 -1
  11. package/dist/chat/claude_cli.js +22 -3
  12. package/dist/chat/claude_cli.js.map +1 -1
  13. package/dist/chat/graph_auto_ingest.d.ts +3 -0
  14. package/dist/chat/graph_auto_ingest.d.ts.map +1 -1
  15. package/dist/chat/graph_auto_ingest.js +18 -0
  16. package/dist/chat/graph_auto_ingest.js.map +1 -1
  17. package/dist/chat/graph_component_watcher.d.ts +41 -0
  18. package/dist/chat/graph_component_watcher.d.ts.map +1 -1
  19. package/dist/chat/graph_component_watcher.js +144 -2
  20. package/dist/chat/graph_component_watcher.js.map +1 -1
  21. package/dist/chat/graph_snapshot.d.ts +8 -0
  22. package/dist/chat/graph_snapshot.d.ts.map +1 -1
  23. package/dist/chat/graph_snapshot.js +142 -44
  24. package/dist/chat/graph_snapshot.js.map +1 -1
  25. package/dist/chat/panel.d.ts.map +1 -1
  26. package/dist/chat/panel.js +12728 -12719
  27. package/dist/chat/panel.js.map +1 -1
  28. package/dist/chat/persistence.d.ts.map +1 -1
  29. package/dist/chat/persistence.js +18 -8
  30. package/dist/chat/persistence.js.map +1 -1
  31. package/dist/chat/server.d.ts.map +1 -1
  32. package/dist/chat/server.js +22 -8
  33. package/dist/chat/server.js.map +1 -1
  34. package/dist/chat/session_store.d.ts +13 -0
  35. package/dist/chat/session_store.d.ts.map +1 -1
  36. package/dist/chat/session_store.js +36 -1
  37. package/dist/chat/session_store.js.map +1 -1
  38. package/dist/chat/tools/native_fs.d.ts.map +1 -1
  39. package/dist/chat/tools/native_fs.js +7 -5
  40. package/dist/chat/tools/native_fs.js.map +1 -1
  41. package/dist/chat/tools.d.ts.map +1 -1
  42. package/dist/chat/tools.js +36 -24
  43. package/dist/chat/tools.js.map +1 -1
  44. package/dist/commands/chat.d.ts.map +1 -1
  45. package/dist/commands/chat.js +59 -0
  46. package/dist/commands/chat.js.map +1 -1
  47. package/dist/core/brain_behaviour.d.ts.map +1 -1
  48. package/dist/core/brain_behaviour.js +8 -1
  49. package/dist/core/brain_behaviour.js.map +1 -1
  50. package/dist/core/brain_config.d.ts +23 -0
  51. package/dist/core/brain_config.d.ts.map +1 -1
  52. package/dist/core/brain_config.js +33 -0
  53. package/dist/core/brain_config.js.map +1 -1
  54. package/dist/core/federation_config.js +1 -1
  55. package/dist/core/federation_config.js.map +1 -1
  56. package/dist/core/heap_watch.d.ts +33 -0
  57. package/dist/core/heap_watch.d.ts.map +1 -0
  58. package/dist/core/heap_watch.js +82 -0
  59. package/dist/core/heap_watch.js.map +1 -0
  60. package/dist/core/keys_envelope.d.ts +1 -1
  61. package/dist/core/keys_envelope.d.ts.map +1 -1
  62. package/dist/core/keys_envelope.js.map +1 -1
  63. package/dist/core/limits_config.d.ts +43 -0
  64. package/dist/core/limits_config.d.ts.map +1 -1
  65. package/dist/core/limits_config.js +128 -0
  66. package/dist/core/limits_config.js.map +1 -1
  67. package/dist/core/provider_models.d.ts +5 -0
  68. package/dist/core/provider_models.d.ts.map +1 -1
  69. package/dist/core/provider_models.js +17 -4
  70. package/dist/core/provider_models.js.map +1 -1
  71. package/dist/lan/announce.d.ts +53 -0
  72. package/dist/lan/announce.d.ts.map +1 -0
  73. package/dist/lan/announce.js +111 -0
  74. package/dist/lan/announce.js.map +1 -0
  75. package/dist/llm/cohere_client.d.ts.map +1 -1
  76. package/dist/llm/cohere_client.js +13 -3
  77. package/dist/llm/cohere_client.js.map +1 -1
  78. package/dist/llm/context_compaction.d.ts +25 -0
  79. package/dist/llm/context_compaction.d.ts.map +1 -1
  80. package/dist/llm/context_compaction.js +81 -13
  81. package/dist/llm/context_compaction.js.map +1 -1
  82. package/dist/llm/deepseek_client.d.ts +10 -3
  83. package/dist/llm/deepseek_client.d.ts.map +1 -1
  84. package/dist/llm/deepseek_client.js +12 -2
  85. package/dist/llm/deepseek_client.js.map +1 -1
  86. package/dist/llm/gemini_client.d.ts.map +1 -1
  87. package/dist/llm/gemini_client.js +0 -0
  88. package/dist/llm/gemini_client.js.map +1 -1
  89. package/dist/llm/mistral_client.d.ts.map +1 -1
  90. package/dist/llm/mistral_client.js +13 -3
  91. package/dist/llm/mistral_client.js.map +1 -1
  92. package/dist/llm/ollama_client.d.ts.map +1 -1
  93. package/dist/llm/ollama_client.js +13 -3
  94. package/dist/llm/ollama_client.js.map +1 -1
  95. package/dist/llm/openai_client.d.ts.map +1 -1
  96. package/dist/llm/openai_client.js +13 -3
  97. package/dist/llm/openai_client.js.map +1 -1
  98. package/dist/llm/xai_client.d.ts.map +1 -1
  99. package/dist/llm/xai_client.js +13 -3
  100. package/dist/llm/xai_client.js.map +1 -1
  101. package/dist/nac3/internal_manifest.d.ts.map +1 -1
  102. package/dist/nac3/internal_manifest.js +12 -6
  103. package/dist/nac3/internal_manifest.js.map +1 -1
  104. package/dist/office/word.d.ts +48 -10
  105. package/dist/office/word.d.ts.map +1 -1
  106. package/dist/office/word.js +288 -30
  107. package/dist/office/word.js.map +1 -1
  108. package/dist/qa/brain_matrix/brains.json +80 -80
  109. package/dist/semantic_graph/store.d.ts.map +1 -1
  110. package/dist/semantic_graph/store.js +119 -88
  111. package/dist/semantic_graph/store.js.map +1 -1
  112. package/dist/version.d.ts +1 -1
  113. package/dist/version.js +1 -1
  114. package/package.json +117 -117
@@ -3,14 +3,29 @@
3
3
  *
4
4
  * Read: uses `mammoth` (already in deps for the document-reader
5
5
  * pipeline) to extract text + a heading outline from a .docx file.
6
- * Write: builds a minimal .docx file by hand (Office Open XML
7
- * minimal subset) -- no extra deps. Covers headings + paragraphs.
8
6
  *
9
- * This sticks to plain content. Tables / images / styles are out of
10
- * scope for the first cut. Adopters that need rich docs can drop
11
- * to lower-level docx libs themselves.
7
+ * Write: builds a real .docx (Office Open XML) by hand -- no extra
8
+ * deps. Supports a rich-enough subset for attractive business docs:
12
9
  *
13
- * ASCII-only source. The .docx output IS binary (ZIP).
10
+ * - title / heading (levels 1..6) -- now backed by a real
11
+ * word/styles.xml so Word renders them styled (previously the
12
+ * paragraphs referenced "Heading1" etc. that were NEVER defined,
13
+ * so everything collapsed to plain text -- the F106 bug).
14
+ * - paragraph, with optional alignment (left/center/right).
15
+ * - bullet / numbered list items (real w:numPr backed by
16
+ * word/numbering.xml, not faked with a leading "- ").
17
+ * - tables (rows of cells, optional styled header row) -- ideal
18
+ * for price lists / schedules instead of a run-on paragraph.
19
+ * - page breaks.
20
+ * - inline bold/italic/underline via an explicit `runs` array, or
21
+ * lightweight `**bold**` markers inside `text`.
22
+ *
23
+ * Backward compatible: the original {kind:'heading'|'paragraph', text}
24
+ * sections still work unchanged.
25
+ *
26
+ * ASCII-only source. The .docx output IS binary (ZIP). Non-ASCII
27
+ * glyphs (e.g. the bullet) are emitted as XML numeric entities so the
28
+ * source stays ASCII.
14
29
  */
15
30
  import { readFile, writeFile, stat } from 'node:fs/promises';
16
31
  import path from 'node:path';
@@ -20,6 +35,8 @@ import mammoth from 'mammoth';
20
35
  const MAX_BYTES_READ = 16 * 1024 * 1024; /* 16 MB */
21
36
  const MAX_SECTIONS_WRITE = 50_000;
22
37
  const MAX_SECTION_TEXT = 100_000;
38
+ const MAX_TABLE_ROWS = 5_000;
39
+ const MAX_TABLE_COLS = 64;
23
40
  function resolveSafePath(p, projectRoot) {
24
41
  return path.isAbsolute(p) ? p : path.join(projectRoot, p);
25
42
  }
@@ -71,10 +88,13 @@ export async function readWord(req, projectRoot = process.cwd()) {
71
88
  }
72
89
  /* ===========================================================
73
90
  * Minimal .docx builder
74
- * .docx is a ZIP archive with a specific XML layout. We build
75
- * the minimum viable file with [Content_Types].xml + _rels +
76
- * word/document.xml. No styles xml -- Word renders our
77
- * paragraphs / headings with built-in styles.
91
+ * .docx is a ZIP archive with a specific XML layout. We build:
92
+ * [Content_Types].xml
93
+ * _rels/.rels
94
+ * word/document.xml
95
+ * word/styles.xml <- defines Title / Heading1..6 / ...
96
+ * word/numbering.xml <- bullet + decimal list definitions
97
+ * word/_rels/document.xml.rels <- links document -> styles + numbering
78
98
  * =========================================================== */
79
99
  const CRC32_TABLE = (() => {
80
100
  const t = new Uint32Array(256);
@@ -162,35 +182,279 @@ function xmlEscape(s) {
162
182
  .replace(/"/g, '&quot;')
163
183
  .replace(/'/g, '&apos;');
164
184
  }
185
+ /* ----- run / paragraph / table builders -------------------- */
186
+ /** Split text into runs honouring `**bold**` markers. Only the
187
+ * double-asterisk form is parsed (single `*` is left literal to avoid
188
+ * mangling prose like "5 * 3"). Unmatched markers stay literal. */
189
+ function parseInlineRuns(text) {
190
+ const runs = [];
191
+ const re = /\*\*([^*]+)\*\*/g;
192
+ let last = 0;
193
+ let m;
194
+ while ((m = re.exec(text)) !== null) {
195
+ if (m.index > last)
196
+ runs.push({ text: text.slice(last, m.index) });
197
+ runs.push({ text: m[1] || '', bold: true });
198
+ last = m.index + m[0].length;
199
+ }
200
+ if (last < text.length)
201
+ runs.push({ text: text.slice(last) });
202
+ if (runs.length === 0)
203
+ runs.push({ text: '' });
204
+ return runs;
205
+ }
206
+ /** Resolve a section's content into runs: explicit `runs` win; otherwise
207
+ * parse inline markers from `text`. */
208
+ function sectionRuns(sec) {
209
+ if (Array.isArray(sec.runs) && sec.runs.length) {
210
+ return sec.runs.map((r) => ({
211
+ text: typeof r.text === 'string' ? r.text : '',
212
+ bold: !!r.bold,
213
+ italic: !!r.italic,
214
+ underline: !!r.underline,
215
+ }));
216
+ }
217
+ return parseInlineRuns(typeof sec.text === 'string' ? sec.text : '');
218
+ }
219
+ function buildRunXml(run) {
220
+ const rpr = [];
221
+ if (run.bold)
222
+ rpr.push('<w:b/>');
223
+ if (run.italic)
224
+ rpr.push('<w:i/>');
225
+ if (run.underline)
226
+ rpr.push('<w:u w:val="single"/>');
227
+ const rprXml = rpr.length ? '<w:rPr>' + rpr.join('') + '</w:rPr>' : '';
228
+ return '<w:r>' + rprXml + '<w:t xml:space="preserve">' + xmlEscape(run.text) + '</w:t></w:r>';
229
+ }
230
+ function alignVal(a) {
231
+ if (a === 'center')
232
+ return 'center';
233
+ if (a === 'right')
234
+ return 'right';
235
+ return null;
236
+ }
237
+ function buildParagraph(runs, opts = {}) {
238
+ const pPr = [];
239
+ if (opts.pStyle)
240
+ pPr.push('<w:pStyle w:val="' + opts.pStyle + '"/>');
241
+ if (typeof opts.numId === 'number') {
242
+ pPr.push('<w:numPr><w:ilvl w:val="' + (opts.ilvl ?? 0) + '"/><w:numId w:val="' + opts.numId + '"/></w:numPr>');
243
+ }
244
+ const jc = alignVal(opts.align);
245
+ if (jc)
246
+ pPr.push('<w:jc w:val="' + jc + '"/>');
247
+ const pPrXml = pPr.length ? '<w:pPr>' + pPr.join('') + '</w:pPr>' : '';
248
+ const runsXml = (runs.length ? runs : [{ text: '' }]).map(buildRunXml).join('');
249
+ return '<w:p>' + pPrXml + runsXml + '</w:p>';
250
+ }
251
+ function cellRuns(cell) {
252
+ if (typeof cell === 'string')
253
+ return { runs: parseInlineRuns(cell), bold: false };
254
+ const bold = !!cell.bold;
255
+ if (Array.isArray(cell.runs) && cell.runs.length) {
256
+ return { runs: cell.runs.map((r) => ({ ...r })), bold };
257
+ }
258
+ return { runs: parseInlineRuns(typeof cell.text === 'string' ? cell.text : ''), bold };
259
+ }
260
+ function buildTable(rows, headerRow) {
261
+ const cols = rows.reduce((mx, r) => Math.max(mx, r.length), 0) || 1;
262
+ /* ~9360 twips of usable width on a margined A4/Letter page. */
263
+ const colW = Math.floor(9360 / cols);
264
+ const grid = '<w:tblGrid>' + Array.from({ length: cols }, () => '<w:gridCol w:w="' + colW + '"/>').join('') + '</w:tblGrid>';
265
+ const tblPr = '<w:tblPr>'
266
+ + '<w:tblStyle w:val="TableGrid"/>'
267
+ + '<w:tblW w:w="5000" w:type="pct"/>'
268
+ + '<w:tblBorders>'
269
+ + '<w:top w:val="single" w:sz="4" w:space="0" w:color="9AA6B2"/>'
270
+ + '<w:left w:val="single" w:sz="4" w:space="0" w:color="9AA6B2"/>'
271
+ + '<w:bottom w:val="single" w:sz="4" w:space="0" w:color="9AA6B2"/>'
272
+ + '<w:right w:val="single" w:sz="4" w:space="0" w:color="9AA6B2"/>'
273
+ + '<w:insideH w:val="single" w:sz="4" w:space="0" w:color="9AA6B2"/>'
274
+ + '<w:insideV w:val="single" w:sz="4" w:space="0" w:color="9AA6B2"/>'
275
+ + '</w:tblBorders>'
276
+ + '<w:tblLook w:val="04A0" w:firstRow="1" w:lastRow="0" w:firstColumn="1" w:lastColumn="0" w:noHBand="0" w:noVBand="1"/>'
277
+ + '</w:tblPr>';
278
+ const trs = [];
279
+ for (let ri = 0; ri < rows.length; ri++) {
280
+ const isHeader = headerRow && ri === 0;
281
+ const cells = rows[ri] || [];
282
+ const tcs = [];
283
+ for (let ci = 0; ci < cols; ci++) {
284
+ const raw = cells[ci] ?? '';
285
+ const { runs, bold } = cellRuns(raw);
286
+ const effRuns = runs.map((r) => ({ ...r, bold: r.bold || bold || isHeader }));
287
+ const shd = isHeader ? '<w:shd w:val="clear" w:color="auto" w:fill="D9E2F3"/>' : '';
288
+ const tcPr = '<w:tcPr><w:tcW w:w="' + colW + '" w:type="dxa"/>' + shd + '</w:tcPr>';
289
+ const para = buildParagraph(effRuns, {});
290
+ tcs.push('<w:tc>' + tcPr + para + '</w:tc>');
291
+ }
292
+ const trPr = isHeader ? '<w:trPr><w:tblHeader/></w:trPr>' : '';
293
+ trs.push('<w:tr>' + trPr + tcs.join('') + '</w:tr>');
294
+ }
295
+ return '<w:tbl>' + tblPr + grid + trs.join('') + '</w:tbl>';
296
+ }
297
+ const PAGE_BREAK_P = '<w:p><w:r><w:br w:type="page"/></w:r></w:p>';
298
+ const SECT_PR = '<w:sectPr>'
299
+ + '<w:pgSz w:w="11906" w:h="16838"/>'
300
+ + '<w:pgMar w:top="1440" w:right="1440" w:bottom="1440" w:left="1440" w:header="720" w:footer="720" w:gutter="0"/>'
301
+ + '</w:sectPr>';
165
302
  function buildDocumentXml(sections) {
166
303
  const parts = [];
167
304
  parts.push('<?xml version="1.0" encoding="UTF-8" standalone="yes"?>');
168
305
  parts.push('<w:document xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main">');
169
306
  parts.push('<w:body>');
170
307
  for (const sec of sections) {
171
- const text = xmlEscape(sec.text || '');
172
- if (sec.kind === 'heading') {
173
- const level = sec.level && sec.level >= 1 && sec.level <= 6 ? sec.level : 1;
174
- parts.push('<w:p><w:pPr><w:pStyle w:val="Heading' + level + '"/></w:pPr>'
175
- + '<w:r><w:t xml:space="preserve">' + text + '</w:t></w:r></w:p>');
176
- }
177
- else {
178
- parts.push('<w:p><w:r><w:t xml:space="preserve">' + text + '</w:t></w:r></w:p>');
308
+ switch (sec.kind) {
309
+ case 'pagebreak':
310
+ parts.push(PAGE_BREAK_P);
311
+ break;
312
+ case 'table':
313
+ parts.push(buildTable(sec.rows || [], sec.header_row !== false));
314
+ break;
315
+ case 'title':
316
+ parts.push(buildParagraph(sectionRuns(sec), { pStyle: 'Title', align: sec.align }));
317
+ break;
318
+ case 'heading': {
319
+ const level = sec.level && sec.level >= 1 && sec.level <= 6 ? sec.level : 1;
320
+ parts.push(buildParagraph(sectionRuns(sec), { pStyle: 'Heading' + level, align: sec.align }));
321
+ break;
322
+ }
323
+ case 'bullet':
324
+ parts.push(buildParagraph(sectionRuns(sec), { pStyle: 'ListParagraph', numId: 1, ilvl: 0, align: sec.align }));
325
+ break;
326
+ case 'numbered':
327
+ parts.push(buildParagraph(sectionRuns(sec), { pStyle: 'ListParagraph', numId: 2, ilvl: 0, align: sec.align }));
328
+ break;
329
+ case 'paragraph':
330
+ default:
331
+ parts.push(buildParagraph(sectionRuns(sec), { align: sec.align }));
332
+ break;
179
333
  }
180
334
  }
335
+ parts.push(SECT_PR);
181
336
  parts.push('</w:body></w:document>');
182
337
  return parts.join('');
183
338
  }
339
+ /* ----- static parts --------------------------------------- */
184
340
  const CONTENT_TYPES_XML = '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>'
185
341
  + '<Types xmlns="http://schemas.openxmlformats.org/package/2006/content-types">'
186
342
  + '<Default Extension="rels" ContentType="application/vnd.openxmlformats-package.relationships+xml"/>'
187
343
  + '<Default Extension="xml" ContentType="application/xml"/>'
188
344
  + '<Override PartName="/word/document.xml" ContentType="application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml"/>'
345
+ + '<Override PartName="/word/styles.xml" ContentType="application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml"/>'
346
+ + '<Override PartName="/word/numbering.xml" ContentType="application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml"/>'
189
347
  + '</Types>';
190
348
  const RELS_XML = '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>'
191
349
  + '<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">'
192
350
  + '<Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument" Target="word/document.xml"/>'
193
351
  + '</Relationships>';
352
+ const DOCUMENT_RELS_XML = '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>'
353
+ + '<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">'
354
+ + '<Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles" Target="styles.xml"/>'
355
+ + '<Relationship Id="rId2" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/numbering" Target="numbering.xml"/>'
356
+ + '</Relationships>';
357
+ /** Heading style block -- varying size/colour per level so the
358
+ * hierarchy is visible, with outlineLvl so Word's navigation pane +
359
+ * mammoth's outline detection both pick them up. */
360
+ function headingStyle(level, sz, color) {
361
+ return '<w:style w:type="paragraph" w:styleId="Heading' + level + '">'
362
+ + '<w:name w:val="heading ' + level + '"/>'
363
+ + '<w:basedOn w:val="Normal"/><w:next w:val="Normal"/><w:qFormat/>'
364
+ + '<w:pPr><w:keepNext/><w:keepLines/><w:spacing w:before="240" w:after="80"/><w:outlineLvl w:val="' + (level - 1) + '"/></w:pPr>'
365
+ + '<w:rPr><w:b/><w:color w:val="' + color + '"/><w:sz w:val="' + sz + '"/><w:szCs w:val="' + sz + '"/></w:rPr>'
366
+ + '</w:style>';
367
+ }
368
+ const STYLES_XML = '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>'
369
+ + '<w:styles xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main">'
370
+ + '<w:docDefaults>'
371
+ + '<w:rPrDefault><w:rPr><w:rFonts w:ascii="Calibri" w:hAnsi="Calibri" w:cs="Calibri"/><w:sz w:val="22"/><w:szCs w:val="22"/></w:rPr></w:rPrDefault>'
372
+ + '<w:pPrDefault><w:pPr><w:spacing w:after="160" w:line="259" w:lineRule="auto"/></w:pPr></w:pPrDefault>'
373
+ + '</w:docDefaults>'
374
+ + '<w:style w:type="paragraph" w:default="1" w:styleId="Normal"><w:name w:val="Normal"/><w:qFormat/></w:style>'
375
+ + '<w:style w:type="table" w:default="1" w:styleId="TableNormal"><w:name w:val="Normal Table"/><w:tblPr><w:tblInd w:w="0" w:type="dxa"/><w:tblCellMar><w:top w:w="0" w:type="dxa"/><w:left w:w="108" w:type="dxa"/><w:bottom w:w="0" w:type="dxa"/><w:right w:w="108" w:type="dxa"/></w:tblCellMar></w:tblPr></w:style>'
376
+ + '<w:style w:type="paragraph" w:styleId="Title"><w:name w:val="Title"/><w:basedOn w:val="Normal"/><w:next w:val="Normal"/><w:qFormat/>'
377
+ + '<w:pPr><w:spacing w:after="300"/><w:contextualSpacing/></w:pPr>'
378
+ + '<w:rPr><w:b/><w:color w:val="1F3864"/><w:sz w:val="52"/><w:szCs w:val="52"/></w:rPr></w:style>'
379
+ + headingStyle(1, 32, '2F5496')
380
+ + headingStyle(2, 28, '2F5496')
381
+ + headingStyle(3, 26, '1F3864')
382
+ + headingStyle(4, 24, '2F5496')
383
+ + headingStyle(5, 22, '2F5496')
384
+ + headingStyle(6, 22, '595959')
385
+ + '<w:style w:type="paragraph" w:styleId="ListParagraph"><w:name w:val="List Paragraph"/><w:basedOn w:val="Normal"/><w:qFormat/>'
386
+ + '<w:pPr><w:ind w:left="720"/><w:contextualSpacing/></w:pPr></w:style>'
387
+ + '<w:style w:type="table" w:styleId="TableGrid"><w:name w:val="Table Grid"/><w:basedOn w:val="TableNormal"/>'
388
+ + '<w:tblPr><w:tblBorders>'
389
+ + '<w:top w:val="single" w:sz="4" w:space="0" w:color="9AA6B2"/>'
390
+ + '<w:left w:val="single" w:sz="4" w:space="0" w:color="9AA6B2"/>'
391
+ + '<w:bottom w:val="single" w:sz="4" w:space="0" w:color="9AA6B2"/>'
392
+ + '<w:right w:val="single" w:sz="4" w:space="0" w:color="9AA6B2"/>'
393
+ + '<w:insideH w:val="single" w:sz="4" w:space="0" w:color="9AA6B2"/>'
394
+ + '<w:insideV w:val="single" w:sz="4" w:space="0" w:color="9AA6B2"/>'
395
+ + '</w:tblBorders></w:tblPr></w:style>'
396
+ + '</w:styles>';
397
+ const NUMBERING_XML = '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>'
398
+ + '<w:numbering xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main">'
399
+ + '<w:abstractNum w:abstractNumId="0">'
400
+ + '<w:lvl w:ilvl="0"><w:start w:val="1"/><w:numFmt w:val="bullet"/><w:lvlText w:val="&#8226;"/><w:lvlJc w:val="left"/>'
401
+ + '<w:pPr><w:ind w:left="720" w:hanging="360"/></w:pPr></w:lvl>'
402
+ + '</w:abstractNum>'
403
+ + '<w:abstractNum w:abstractNumId="1">'
404
+ + '<w:lvl w:ilvl="0"><w:start w:val="1"/><w:numFmt w:val="decimal"/><w:lvlText w:val="%1."/><w:lvlJc w:val="left"/>'
405
+ + '<w:pPr><w:ind w:left="720" w:hanging="360"/></w:pPr></w:lvl>'
406
+ + '</w:abstractNum>'
407
+ + '<w:num w:numId="1"><w:abstractNumId w:val="0"/></w:num>'
408
+ + '<w:num w:numId="2"><w:abstractNumId w:val="1"/></w:num>'
409
+ + '</w:numbering>';
410
+ /* ----- validation ----------------------------------------- */
411
+ const VALID_KINDS = new Set([
412
+ 'title', 'heading', 'paragraph', 'bullet', 'numbered', 'table', 'pagebreak',
413
+ ]);
414
+ function validateSection(s) {
415
+ if (!s || typeof s !== 'object')
416
+ return 'each section must be an object';
417
+ if (!VALID_KINDS.has(s.kind)) {
418
+ return 'kind must be one of title|heading|paragraph|bullet|numbered|table|pagebreak';
419
+ }
420
+ if (s.kind === 'pagebreak')
421
+ return null;
422
+ if (s.kind === 'table') {
423
+ if (!Array.isArray(s.rows) || s.rows.length === 0)
424
+ return 'table sections require a non-empty rows array';
425
+ if (s.rows.length > MAX_TABLE_ROWS)
426
+ return 'too many table rows (> ' + MAX_TABLE_ROWS + ')';
427
+ for (const row of s.rows) {
428
+ if (!Array.isArray(row))
429
+ return 'each table row must be an array of cells';
430
+ if (row.length > MAX_TABLE_COLS)
431
+ return 'too many table columns (> ' + MAX_TABLE_COLS + ')';
432
+ for (const cell of row) {
433
+ if (typeof cell !== 'string' && (typeof cell !== 'object' || cell === null)) {
434
+ return 'each table cell must be a string or a {text|runs|bold} object';
435
+ }
436
+ }
437
+ }
438
+ return null;
439
+ }
440
+ /* title / heading / paragraph / bullet / numbered: need text or runs. */
441
+ const hasRuns = Array.isArray(s.runs) && s.runs.length > 0;
442
+ const hasText = typeof s.text === 'string';
443
+ if (!hasRuns && !hasText)
444
+ return 'section needs a "text" string or a non-empty "runs" array';
445
+ if (hasText && s.text.length > MAX_SECTION_TEXT) {
446
+ return 'text too long (' + s.text.length + ' > ' + MAX_SECTION_TEXT + ')';
447
+ }
448
+ if (hasRuns) {
449
+ for (const r of s.runs) {
450
+ if (!r || typeof r !== 'object' || typeof r.text !== 'string')
451
+ return 'each run must be a {text:string,...} object';
452
+ if (r.text.length > MAX_SECTION_TEXT)
453
+ return 'run text too long (> ' + MAX_SECTION_TEXT + ')';
454
+ }
455
+ }
456
+ return null;
457
+ }
194
458
  export async function writeWord(req, projectRoot = process.cwd()) {
195
459
  if (!req.path || typeof req.path !== 'string') {
196
460
  return { ok: false, error: 'invalid_args', detail: 'path is required' };
@@ -202,18 +466,9 @@ export async function writeWord(req, projectRoot = process.cwd()) {
202
466
  return { ok: false, error: 'too_many_sections', detail: req.sections.length + ' > ' + MAX_SECTIONS_WRITE };
203
467
  }
204
468
  for (const s of req.sections) {
205
- if (!s || typeof s !== 'object') {
206
- return { ok: false, error: 'invalid_section', detail: 'each section must be an object' };
207
- }
208
- if (s.kind !== 'heading' && s.kind !== 'paragraph') {
209
- return { ok: false, error: 'invalid_section', detail: 'kind must be heading or paragraph' };
210
- }
211
- if (typeof s.text !== 'string') {
212
- return { ok: false, error: 'invalid_section', detail: 'text must be a string' };
213
- }
214
- if (s.text.length > MAX_SECTION_TEXT) {
215
- return { ok: false, error: 'section_too_long', detail: s.text.length + ' > ' + MAX_SECTION_TEXT };
216
- }
469
+ const err = validateSection(s);
470
+ if (err)
471
+ return { ok: false, error: 'invalid_section', detail: err };
217
472
  }
218
473
  if (!req.path.toLowerCase().endsWith('.docx')) {
219
474
  return { ok: false, error: 'unsupported_extension', detail: 'only .docx output is supported' };
@@ -231,6 +486,9 @@ export async function writeWord(req, projectRoot = process.cwd()) {
231
486
  { name: '[Content_Types].xml', data: Buffer.from(CONTENT_TYPES_XML, 'utf-8') },
232
487
  { name: '_rels/.rels', data: Buffer.from(RELS_XML, 'utf-8') },
233
488
  { name: 'word/document.xml', data: Buffer.from(docXml, 'utf-8') },
489
+ { name: 'word/_rels/document.xml.rels', data: Buffer.from(DOCUMENT_RELS_XML, 'utf-8') },
490
+ { name: 'word/styles.xml', data: Buffer.from(STYLES_XML, 'utf-8') },
491
+ { name: 'word/numbering.xml', data: Buffer.from(NUMBERING_XML, 'utf-8') },
234
492
  ]);
235
493
  try {
236
494
  await writeFile(abs, zip);
@@ -1 +1 @@
1
- {"version":3,"file":"word.js","sourceRoot":"","sources":["../../src/office/word.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"word.js","sourceRoot":"","sources":["../../src/office/word.ts"],"names":[],"mappings":"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"}
@@ -1,80 +1,80 @@
1
- {
2
- "_doc": "Brain matrix QA -- providers/models to test against. ASCII only. Edit to add/remove brains. The harness skips brains whose vault_slot is empty (no API key configured). `fake` is the dry-run brain used in CI; it never makes network calls.",
3
- "brains": [
4
- {
5
- "id": "fake-scripted",
6
- "provider": "fake",
7
- "model": "scripted",
8
- "tier": "eco",
9
- "vault_slot": "",
10
- "notes": "Dry-run fake brain. Tests the harness itself without spending money. Reads scripted responses from the scenario fixture's `fake_responses` field."
11
- },
12
- {
13
- "id": "gemini-flash-lite",
14
- "provider": "google_ai",
15
- "model": "gemini-2.5-flash-lite",
16
- "tier": "eco",
17
- "vault_slot": "GEMINI_API_KEY",
18
- "notes": "Eco. ~$0.10/1M in, ~$0.40/1M out. Fast, smallest context handling."
19
- },
20
- {
21
- "id": "haiku-4-5",
22
- "provider": "anthropic",
23
- "model": "claude-haiku-4-5-20251001",
24
- "tier": "eco",
25
- "vault_slot": "CLAUDE_API_KEY",
26
- "notes": "Eco. ~$1/1M in, ~$5/1M out. Anthropic small model."
27
- },
28
- {
29
- "id": "sonnet-4-6",
30
- "provider": "anthropic",
31
- "model": "claude-sonnet-4-6",
32
- "tier": "frontier",
33
- "vault_slot": "CLAUDE_API_KEY",
34
- "notes": "Frontier mid. ~$3/1M in, ~$15/1M out. Default Forge brain."
35
- },
36
- {
37
- "id": "opus-4-7",
38
- "provider": "anthropic",
39
- "model": "claude-opus-4-7",
40
- "tier": "frontier",
41
- "vault_slot": "CLAUDE_API_KEY",
42
- "notes": "Frontier top. ~$15/1M in, ~$75/1M out. Skip default to save $$.",
43
- "skip_default": true
44
- },
45
- {
46
- "id": "opus-4-8",
47
- "provider": "anthropic",
48
- "model": "claude-opus-4-8",
49
- "tier": "frontier",
50
- "vault_slot": "CLAUDE_API_KEY",
51
- "notes": "Frontier top, released after 4-7. Incorporates effort indicator (low/medium/high/extra/max) and complex reasoning. Skip default to save $$ (manual invoke via --brains opus-4-8).",
52
- "skip_default": true
53
- },
54
- {
55
- "id": "deepseek-v3",
56
- "provider": "deepseek",
57
- "model": "deepseek-chat",
58
- "tier": "eco",
59
- "vault_slot": "DEEPSEEK_API_KEY",
60
- "notes": "Eco. Cheap multilingual."
61
- },
62
- {
63
- "id": "gpt-4o-mini",
64
- "provider": "openai",
65
- "model": "gpt-4o-mini",
66
- "tier": "eco",
67
- "vault_slot": "OPENAI_API_KEY",
68
- "notes": "Eco. ~$0.15/1M in, ~$0.60/1M out."
69
- },
70
- {
71
- "id": "gpt-4o",
72
- "provider": "openai",
73
- "model": "gpt-4o",
74
- "tier": "frontier",
75
- "vault_slot": "OPENAI_API_KEY",
76
- "notes": "Frontier alt. Skip default to save $$.",
77
- "skip_default": true
78
- }
79
- ]
80
- }
1
+ {
2
+ "_doc": "Brain matrix QA -- providers/models to test against. ASCII only. Edit to add/remove brains. The harness skips brains whose vault_slot is empty (no API key configured). `fake` is the dry-run brain used in CI; it never makes network calls.",
3
+ "brains": [
4
+ {
5
+ "id": "fake-scripted",
6
+ "provider": "fake",
7
+ "model": "scripted",
8
+ "tier": "eco",
9
+ "vault_slot": "",
10
+ "notes": "Dry-run fake brain. Tests the harness itself without spending money. Reads scripted responses from the scenario fixture's `fake_responses` field."
11
+ },
12
+ {
13
+ "id": "gemini-flash-lite",
14
+ "provider": "google_ai",
15
+ "model": "gemini-2.5-flash-lite",
16
+ "tier": "eco",
17
+ "vault_slot": "GEMINI_API_KEY",
18
+ "notes": "Eco. ~$0.10/1M in, ~$0.40/1M out. Fast, smallest context handling."
19
+ },
20
+ {
21
+ "id": "haiku-4-5",
22
+ "provider": "anthropic",
23
+ "model": "claude-haiku-4-5-20251001",
24
+ "tier": "eco",
25
+ "vault_slot": "CLAUDE_API_KEY",
26
+ "notes": "Eco. ~$1/1M in, ~$5/1M out. Anthropic small model."
27
+ },
28
+ {
29
+ "id": "sonnet-4-6",
30
+ "provider": "anthropic",
31
+ "model": "claude-sonnet-4-6",
32
+ "tier": "frontier",
33
+ "vault_slot": "CLAUDE_API_KEY",
34
+ "notes": "Frontier mid. ~$3/1M in, ~$15/1M out. Default Forge brain."
35
+ },
36
+ {
37
+ "id": "opus-4-7",
38
+ "provider": "anthropic",
39
+ "model": "claude-opus-4-7",
40
+ "tier": "frontier",
41
+ "vault_slot": "CLAUDE_API_KEY",
42
+ "notes": "Frontier top. ~$15/1M in, ~$75/1M out. Skip default to save $$.",
43
+ "skip_default": true
44
+ },
45
+ {
46
+ "id": "opus-4-8",
47
+ "provider": "anthropic",
48
+ "model": "claude-opus-4-8",
49
+ "tier": "frontier",
50
+ "vault_slot": "CLAUDE_API_KEY",
51
+ "notes": "Frontier top, released after 4-7. Incorporates effort indicator (low/medium/high/extra/max) and complex reasoning. Skip default to save $$ (manual invoke via --brains opus-4-8).",
52
+ "skip_default": true
53
+ },
54
+ {
55
+ "id": "deepseek-flash",
56
+ "provider": "deepseek",
57
+ "model": "deepseek-flash",
58
+ "tier": "eco",
59
+ "vault_slot": "DEEPSEEK_API_KEY",
60
+ "notes": "Eco. Cheap multilingual."
61
+ },
62
+ {
63
+ "id": "gpt-4o-mini",
64
+ "provider": "openai",
65
+ "model": "gpt-4o-mini",
66
+ "tier": "eco",
67
+ "vault_slot": "OPENAI_API_KEY",
68
+ "notes": "Eco. ~$0.15/1M in, ~$0.60/1M out."
69
+ },
70
+ {
71
+ "id": "gpt-4o",
72
+ "provider": "openai",
73
+ "model": "gpt-4o",
74
+ "tier": "frontier",
75
+ "vault_slot": "OPENAI_API_KEY",
76
+ "notes": "Frontier alt. Skip default to save $$.",
77
+ "skip_default": true
78
+ }
79
+ ]
80
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/semantic_graph/store.ts"],"names":[],"mappings":"AA2BA,OAAO,EACL,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,KAAK,YAAY,EACjD,KAAK,aAAa,EACnB,MAAM,YAAY,CAAC;AAiHpB,MAAM,WAAW,iBAAiB;IAAG,QAAQ,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;CAAE;AACzE,MAAM,WAAW,iBAAiB;IAAG,QAAQ,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;CAAE;AAEzE,wBAAsB,WAAW,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAmDtG;AAED,wBAAsB,WAAW,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAgCtG;AAED,MAAM,WAAW,aAAa;IAC5B,mEAAmE;IACnE,IAAI,CAAC,EAAK,MAAM,CAAC;IACjB,KAAK,CAAC,EAAI,aAAa,EAAE,CAAC;IAC1B,KAAK,CAAC,EAAI,MAAM,CAAC;IACjB;4CACwC;IACxC,cAAc,CAAC,EAAE,SAAS,GAAG,MAAM,GAAG,UAAU,CAAC;CAClD;AAID,wBAAsB,YAAY,CAAC,YAAY,EAAE,MAAM,EAAE,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CA2B/F;AAED,wBAAsB,OAAO,CAAC,YAAY,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,CAOzF;AAED,wBAAsB,aAAa,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CAO/F;AAED;;;oEAGoE;AACpE,wBAAsB,YAAY,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CAO7E;AAED,wBAAsB,SAAS,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAsB3E;AAED;;;;oEAIoE;AACpE,wBAAsB,kBAAkB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CAY3F;AAED;;;;;;;6EAO6E;AAC7E,wBAAsB,sBAAsB,CAC1C,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,GAC9C,OAAO,CAAC;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CAiB9B;AAED;;;;oEAIoE;AACpE,wBAAsB,iBAAiB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAS7E;AAED,wDAAwD;AACxD,wBAAsB,WAAW,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAUrE;AAyCD;;mCAEmC;AACnC,wBAAgB,gBAAgB,IAAI,IAAI,CAAgB"}
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/semantic_graph/store.ts"],"names":[],"mappings":"AA2BA,OAAO,EACL,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,KAAK,YAAY,EACjD,KAAK,aAAa,EACnB,MAAM,YAAY,CAAC;AA8HpB,MAAM,WAAW,iBAAiB;IAAG,QAAQ,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;CAAE;AACzE,MAAM,WAAW,iBAAiB;IAAG,QAAQ,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;CAAE;AAEzE,wBAAsB,WAAW,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAmDtG;AAED,wBAAsB,WAAW,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAgCtG;AAED,MAAM,WAAW,aAAa;IAC5B,mEAAmE;IACnE,IAAI,CAAC,EAAK,MAAM,CAAC;IACjB,KAAK,CAAC,EAAI,aAAa,EAAE,CAAC;IAC1B,KAAK,CAAC,EAAI,MAAM,CAAC;IACjB;4CACwC;IACxC,cAAc,CAAC,EAAE,SAAS,GAAG,MAAM,GAAG,UAAU,CAAC;CAClD;AAID,wBAAsB,YAAY,CAAC,YAAY,EAAE,MAAM,EAAE,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CA6C/F;AAED,wBAAsB,OAAO,CAAC,YAAY,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,CAOzF;AAED,wBAAsB,aAAa,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CAO/F;AAED;;;oEAGoE;AACpE,wBAAsB,YAAY,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CAO7E;AAED,wBAAsB,SAAS,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAsB3E;AAED;;;;oEAIoE;AACpE,wBAAsB,kBAAkB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CAY3F;AAED;;;;;;;6EAO6E;AAC7E,wBAAsB,sBAAsB,CAC1C,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,GAC9C,OAAO,CAAC;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CAiB9B;AAED;;;;oEAIoE;AACpE,wBAAsB,iBAAiB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAS7E;AAED,wDAAwD;AACxD,wBAAsB,WAAW,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAUrE;AAyCD;;mCAEmC;AACnC,wBAAgB,gBAAgB,IAAI,IAAI,CAAgB"}