@open-agreements/open-agreements 0.2.2 → 0.3.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 (143) hide show
  1. package/README.md +30 -0
  2. package/content/templates/closing-checklist/template.docx +0 -0
  3. package/content/templates/common-paper-ai-addendum/README.md +18 -0
  4. package/content/templates/common-paper-ai-addendum/metadata.yaml +136 -0
  5. package/content/templates/common-paper-ai-addendum/replacements.json +5 -0
  6. package/content/templates/common-paper-ai-addendum/selections.json +62 -0
  7. package/content/templates/common-paper-ai-addendum/template.docx +0 -0
  8. package/content/templates/common-paper-ai-addendum-in-app/metadata.yaml +88 -0
  9. package/content/templates/common-paper-ai-addendum-in-app/replacements.json +5 -0
  10. package/content/templates/common-paper-ai-addendum-in-app/selections.json +62 -0
  11. package/content/templates/common-paper-amendment/README.md +18 -0
  12. package/content/templates/common-paper-amendment/metadata.yaml +48 -0
  13. package/content/templates/common-paper-amendment/template.docx +0 -0
  14. package/content/templates/common-paper-business-associate-agreement/README.md +20 -1
  15. package/content/templates/common-paper-business-associate-agreement/metadata.yaml +111 -3
  16. package/content/templates/common-paper-business-associate-agreement/replacements.json +2 -1
  17. package/content/templates/common-paper-business-associate-agreement/selections.json +38 -0
  18. package/content/templates/common-paper-business-associate-agreement/template.docx +0 -0
  19. package/content/templates/common-paper-cloud-service-agreement/README.md +18 -0
  20. package/content/templates/common-paper-cloud-service-agreement/metadata.yaml +48 -0
  21. package/content/templates/common-paper-cloud-service-agreement/template.docx +0 -0
  22. package/content/templates/common-paper-csa-with-ai/README.md +18 -0
  23. package/content/templates/common-paper-csa-with-ai/metadata.yaml +462 -2
  24. package/content/templates/common-paper-csa-with-ai/replacements.json +5 -2
  25. package/content/templates/common-paper-csa-with-ai/selections.json +291 -0
  26. package/content/templates/common-paper-csa-with-ai/template.docx +0 -0
  27. package/content/templates/common-paper-csa-with-sla/README.md +18 -0
  28. package/content/templates/common-paper-csa-with-sla/metadata.yaml +387 -2
  29. package/content/templates/common-paper-csa-with-sla/replacements.json +4 -2
  30. package/content/templates/common-paper-csa-with-sla/selections.json +257 -0
  31. package/content/templates/common-paper-csa-with-sla/template.docx +0 -0
  32. package/content/templates/common-paper-csa-without-sla/README.md +18 -0
  33. package/content/templates/common-paper-csa-without-sla/metadata.yaml +380 -2
  34. package/content/templates/common-paper-csa-without-sla/replacements.json +5 -2
  35. package/content/templates/common-paper-csa-without-sla/selections.json +250 -0
  36. package/content/templates/common-paper-csa-without-sla/template.docx +0 -0
  37. package/content/templates/common-paper-data-processing-agreement/README.md +16 -0
  38. package/content/templates/common-paper-data-processing-agreement/metadata.yaml +397 -3
  39. package/content/templates/common-paper-data-processing-agreement/replacements.json +2 -1
  40. package/content/templates/common-paper-data-processing-agreement/selections.json +211 -0
  41. package/content/templates/common-paper-data-processing-agreement/template.docx +0 -0
  42. package/content/templates/common-paper-design-partner-agreement/README.md +18 -0
  43. package/content/templates/common-paper-design-partner-agreement/metadata.yaml +99 -3
  44. package/content/templates/common-paper-design-partner-agreement/selections.json +27 -0
  45. package/content/templates/common-paper-design-partner-agreement/template.docx +0 -0
  46. package/content/templates/common-paper-independent-contractor-agreement/README.md +18 -0
  47. package/content/templates/common-paper-independent-contractor-agreement/clean.json +8 -0
  48. package/content/templates/common-paper-independent-contractor-agreement/metadata.yaml +52 -0
  49. package/content/templates/common-paper-independent-contractor-agreement/replacements.json +3 -0
  50. package/content/templates/common-paper-independent-contractor-agreement/template.docx +0 -0
  51. package/content/templates/common-paper-letter-of-intent/README.md +18 -0
  52. package/content/templates/common-paper-letter-of-intent/metadata.yaml +48 -0
  53. package/content/templates/common-paper-letter-of-intent/template.docx +0 -0
  54. package/content/templates/common-paper-mutual-nda/README.md +29 -7
  55. package/content/templates/common-paper-mutual-nda/metadata.yaml +48 -0
  56. package/content/templates/common-paper-mutual-nda/template.docx +0 -0
  57. package/content/templates/common-paper-one-way-nda/README.md +13 -0
  58. package/content/templates/common-paper-one-way-nda/metadata.yaml +24 -0
  59. package/content/templates/common-paper-one-way-nda/selections.json +38 -0
  60. package/content/templates/common-paper-one-way-nda/template.docx +0 -0
  61. package/content/templates/common-paper-order-form/README.md +18 -0
  62. package/content/templates/common-paper-order-form/metadata.yaml +115 -3
  63. package/content/templates/common-paper-order-form/replacements.json +5 -2
  64. package/content/templates/common-paper-order-form/selections.json +56 -0
  65. package/content/templates/common-paper-order-form/template.docx +0 -0
  66. package/content/templates/common-paper-order-form-with-sla/README.md +18 -0
  67. package/content/templates/common-paper-order-form-with-sla/metadata.yaml +149 -3
  68. package/content/templates/common-paper-order-form-with-sla/replacements.json +6 -2
  69. package/content/templates/common-paper-order-form-with-sla/selections.json +64 -0
  70. package/content/templates/common-paper-order-form-with-sla/template.docx +0 -0
  71. package/content/templates/common-paper-partnership-agreement/README.md +18 -0
  72. package/content/templates/common-paper-partnership-agreement/metadata.yaml +293 -4
  73. package/content/templates/common-paper-partnership-agreement/replacements.json +5 -2
  74. package/content/templates/common-paper-partnership-agreement/selections.json +138 -0
  75. package/content/templates/common-paper-partnership-agreement/template.docx +0 -0
  76. package/content/templates/common-paper-pilot-agreement/README.md +18 -0
  77. package/content/templates/common-paper-pilot-agreement/metadata.yaml +48 -0
  78. package/content/templates/common-paper-pilot-agreement/template.docx +0 -0
  79. package/content/templates/common-paper-professional-services-agreement/README.md +18 -0
  80. package/content/templates/common-paper-professional-services-agreement/metadata.yaml +338 -4
  81. package/content/templates/common-paper-professional-services-agreement/replacements.json +7 -4
  82. package/content/templates/common-paper-professional-services-agreement/selections.json +207 -0
  83. package/content/templates/common-paper-professional-services-agreement/template.docx +0 -0
  84. package/content/templates/common-paper-statement-of-work/README.md +18 -0
  85. package/content/templates/common-paper-statement-of-work/metadata.yaml +110 -2
  86. package/content/templates/common-paper-statement-of-work/replacements.json +4 -1
  87. package/content/templates/common-paper-statement-of-work/selections.json +55 -0
  88. package/content/templates/common-paper-statement-of-work/template.docx +0 -0
  89. package/content/templates/common-paper-term-sheet/README.md +18 -0
  90. package/content/templates/common-paper-term-sheet/metadata.yaml +48 -0
  91. package/content/templates/common-paper-term-sheet/template.docx +0 -0
  92. package/content/templates/working-group-list/template.docx +0 -0
  93. package/dist/commands/checklist.d.ts.map +1 -1
  94. package/dist/commands/checklist.js +2 -1
  95. package/dist/commands/checklist.js.map +1 -1
  96. package/dist/commands/list.d.ts.map +1 -1
  97. package/dist/commands/list.js +1 -46
  98. package/dist/commands/list.js.map +1 -1
  99. package/dist/core/checklist/format-checklist-docx.d.ts +10 -0
  100. package/dist/core/checklist/format-checklist-docx.d.ts.map +1 -0
  101. package/dist/core/checklist/format-checklist-docx.js +321 -0
  102. package/dist/core/checklist/format-checklist-docx.js.map +1 -0
  103. package/dist/core/checklist/index.d.ts +1 -0
  104. package/dist/core/checklist/index.d.ts.map +1 -1
  105. package/dist/core/checklist/index.js +7 -3
  106. package/dist/core/checklist/index.js.map +1 -1
  107. package/dist/core/engine.d.ts +1 -0
  108. package/dist/core/engine.d.ts.map +1 -1
  109. package/dist/core/engine.js +72 -11
  110. package/dist/core/engine.js.map +1 -1
  111. package/dist/core/selector.d.ts +2 -0
  112. package/dist/core/selector.d.ts.map +1 -1
  113. package/dist/core/selector.js +181 -39
  114. package/dist/core/selector.js.map +1 -1
  115. package/dist/core/template-listing.d.ts +40 -0
  116. package/dist/core/template-listing.d.ts.map +1 -0
  117. package/dist/core/template-listing.js +91 -0
  118. package/dist/core/template-listing.js.map +1 -0
  119. package/dist/core/validation/template.d.ts.map +1 -1
  120. package/dist/core/validation/template.js +10 -2
  121. package/dist/core/validation/template.js.map +1 -1
  122. package/dist/index.d.ts +2 -0
  123. package/dist/index.d.ts.map +1 -1
  124. package/dist/index.js +4 -0
  125. package/dist/index.js.map +1 -1
  126. package/package.json +8 -2
  127. package/skills/iso-27001-evidence-collection/CONNECTORS.md +25 -9
  128. package/skills/iso-27001-evidence-collection/SKILL.md +10 -6
  129. package/skills/iso-27001-internal-audit/CONNECTORS.md +25 -9
  130. package/skills/iso-27001-internal-audit/SKILL.md +12 -9
  131. package/skills/soc2-readiness/CONNECTORS.md +25 -9
  132. package/skills/soc2-readiness/SKILL.md +17 -5
  133. package/skills/soc2-readiness/rules/change-vendor-management.md +104 -0
  134. package/skills/soc2-readiness/rules/communication-info.md +85 -0
  135. package/skills/soc2-readiness/rules/control-activities.md +95 -0
  136. package/skills/soc2-readiness/rules/control-environment.md +126 -0
  137. package/skills/soc2-readiness/rules/logical-access.md +264 -0
  138. package/skills/soc2-readiness/rules/monitoring-activities.md +66 -0
  139. package/skills/soc2-readiness/rules/optional-categories.md +264 -0
  140. package/skills/soc2-readiness/rules/privacy-criteria.md +359 -0
  141. package/skills/soc2-readiness/rules/risk-assessment.md +100 -0
  142. package/skills/soc2-readiness/rules/system-operations.md +170 -0
  143. package/skills/soc2-readiness/rules/trust-services.md +0 -230
@@ -0,0 +1,321 @@
1
+ /**
2
+ * Post-fill formatter for closing-checklist DOCX files.
3
+ *
4
+ * After docx-templates fills the template, every row looks identical.
5
+ * This formatter opens the DOCX, finds the Documents table, classifies
6
+ * each row (stage heading, main entry, citation, signatory, action, issue),
7
+ * and applies semantic XML formatting: bold, italic, color, indentation.
8
+ */
9
+ import AdmZip from 'adm-zip';
10
+ import { DOMParser, XMLSerializer } from '@xmldom/xmldom';
11
+ const W_NS = 'http://schemas.openxmlformats.org/wordprocessingml/2006/main';
12
+ const DOCUMENTS_HEADERS = ['No.', 'Title', 'Status', 'Responsible Party'];
13
+ function classifyRow(numberText, titleText) {
14
+ // Stage heading: number cell empty, title matches roman numeral pattern
15
+ if (!numberText.trim() && /^[IVX]+\.\s/.test(titleText.trim())) {
16
+ return 'stage_heading';
17
+ }
18
+ // Main entry: number cell non-empty
19
+ if (numberText.trim()) {
20
+ return 'main_entry';
21
+ }
22
+ // Sub-rows: number cell empty, classify by title content
23
+ const stripped = titleText.replace(/^\u00A0+/, '').trim();
24
+ if (stripped.startsWith('Ref:'))
25
+ return 'citation';
26
+ if (/^\u2610\s+Signatory:|^\u2611\s+Signatory:|^Signatory:/.test(stripped))
27
+ return 'signatory';
28
+ if (/^\u2610\s+Action\s|^\u2611\s+Action\s|^Action\s/.test(stripped))
29
+ return 'action';
30
+ if (/^\u2610\s+Issue\s|^\u2611\s+Issue\s|^Issue\s/.test(stripped))
31
+ return 'issue';
32
+ return 'unknown';
33
+ }
34
+ // ---------------------------------------------------------------------------
35
+ // XML helpers (same patterns as recipe/patcher.ts)
36
+ // ---------------------------------------------------------------------------
37
+ function ensureRunProperties(run) {
38
+ const doc = run.ownerDocument;
39
+ const children = run.childNodes;
40
+ for (let i = 0; i < children.length; i++) {
41
+ const child = children[i];
42
+ if (child.localName === 'rPr' && child.namespaceURI === W_NS) {
43
+ return child;
44
+ }
45
+ }
46
+ const rPr = doc.createElementNS(W_NS, 'w:rPr');
47
+ run.insertBefore(rPr, run.firstChild);
48
+ return rPr;
49
+ }
50
+ function setRunBold(run) {
51
+ const rPr = ensureRunProperties(run);
52
+ // Check if <w:b/> already exists
53
+ const children = rPr.childNodes;
54
+ for (let i = 0; i < children.length; i++) {
55
+ const child = children[i];
56
+ if (child.localName === 'b' && child.namespaceURI === W_NS)
57
+ return;
58
+ }
59
+ const doc = run.ownerDocument;
60
+ const b = doc.createElementNS(W_NS, 'w:b');
61
+ rPr.appendChild(b);
62
+ }
63
+ function setRunItalic(run) {
64
+ const rPr = ensureRunProperties(run);
65
+ const children = rPr.childNodes;
66
+ for (let i = 0; i < children.length; i++) {
67
+ const child = children[i];
68
+ if (child.localName === 'i' && child.namespaceURI === W_NS)
69
+ return;
70
+ }
71
+ const doc = run.ownerDocument;
72
+ const iEl = doc.createElementNS(W_NS, 'w:i');
73
+ rPr.appendChild(iEl);
74
+ }
75
+ function setRunColor(run, colorHex) {
76
+ const rPr = ensureRunProperties(run);
77
+ const doc = run.ownerDocument;
78
+ const children = rPr.childNodes;
79
+ for (let i = 0; i < children.length; i++) {
80
+ const child = children[i];
81
+ if (child.localName === 'color' && child.namespaceURI === W_NS) {
82
+ child.setAttributeNS(W_NS, 'w:val', colorHex);
83
+ return;
84
+ }
85
+ }
86
+ const color = doc.createElementNS(W_NS, 'w:color');
87
+ color.setAttributeNS(W_NS, 'w:val', colorHex);
88
+ rPr.appendChild(color);
89
+ }
90
+ function ensureParagraphProperties(para) {
91
+ const doc = para.ownerDocument;
92
+ const children = para.childNodes;
93
+ for (let i = 0; i < children.length; i++) {
94
+ const child = children[i];
95
+ if (child.localName === 'pPr' && child.namespaceURI === W_NS) {
96
+ return child;
97
+ }
98
+ }
99
+ const pPr = doc.createElementNS(W_NS, 'w:pPr');
100
+ para.insertBefore(pPr, para.firstChild);
101
+ return pPr;
102
+ }
103
+ function setParagraphIndent(para, leftDxa) {
104
+ const pPr = ensureParagraphProperties(para);
105
+ const doc = para.ownerDocument;
106
+ // Find or create <w:ind>
107
+ const children = pPr.childNodes;
108
+ for (let i = 0; i < children.length; i++) {
109
+ const child = children[i];
110
+ if (child.localName === 'ind' && child.namespaceURI === W_NS) {
111
+ child.setAttributeNS(W_NS, 'w:left', String(leftDxa));
112
+ return;
113
+ }
114
+ }
115
+ const ind = doc.createElementNS(W_NS, 'w:ind');
116
+ ind.setAttributeNS(W_NS, 'w:left', String(leftDxa));
117
+ pPr.appendChild(ind);
118
+ }
119
+ // ---------------------------------------------------------------------------
120
+ // NBSP indent handling
121
+ // ---------------------------------------------------------------------------
122
+ const NBSP = '\u00A0';
123
+ const DXA_PER_LEVEL = 360;
124
+ /**
125
+ * Count leading NBSP pairs in all text nodes of a table cell,
126
+ * strip them from the text content, and return the indent level.
127
+ */
128
+ function countAndStripNbspIndent(tc) {
129
+ const paragraphs = tc.getElementsByTagNameNS(W_NS, 'p');
130
+ let maxLevel = 0;
131
+ for (let p = 0; p < paragraphs.length; p++) {
132
+ const runs = paragraphs[p].getElementsByTagNameNS(W_NS, 'r');
133
+ if (runs.length === 0)
134
+ continue;
135
+ // Collect full text to count leading NBSPs
136
+ let fullText = '';
137
+ for (let r = 0; r < runs.length; r++) {
138
+ const tEls = runs[r].getElementsByTagNameNS(W_NS, 't');
139
+ for (let t = 0; t < tEls.length; t++) {
140
+ fullText += tEls[t].textContent ?? '';
141
+ }
142
+ }
143
+ // Count leading NBSP pairs
144
+ let nbspCount = 0;
145
+ for (let i = 0; i < fullText.length; i++) {
146
+ if (fullText[i] === NBSP) {
147
+ nbspCount++;
148
+ }
149
+ else {
150
+ break;
151
+ }
152
+ }
153
+ const level = Math.floor(nbspCount / 2);
154
+ if (level > maxLevel)
155
+ maxLevel = level;
156
+ if (nbspCount > 0) {
157
+ // Strip leading NBSPs from text runs
158
+ let remaining = nbspCount;
159
+ for (let r = 0; r < runs.length && remaining > 0; r++) {
160
+ const tEls = runs[r].getElementsByTagNameNS(W_NS, 't');
161
+ for (let t = 0; t < tEls.length && remaining > 0; t++) {
162
+ const text = tEls[t].textContent ?? '';
163
+ let stripCount = 0;
164
+ for (let c = 0; c < text.length && remaining > 0; c++) {
165
+ if (text[c] === NBSP) {
166
+ stripCount++;
167
+ remaining--;
168
+ }
169
+ else {
170
+ break;
171
+ }
172
+ }
173
+ if (stripCount > 0) {
174
+ const newText = text.slice(stripCount);
175
+ tEls[t].textContent = newText;
176
+ if (newText.startsWith(' ') || newText.endsWith(' ') || newText === '') {
177
+ tEls[t].setAttribute('xml:space', 'preserve');
178
+ }
179
+ }
180
+ }
181
+ }
182
+ // Set paragraph indent
183
+ if (level > 0) {
184
+ setParagraphIndent(paragraphs[p], level * DXA_PER_LEVEL);
185
+ }
186
+ }
187
+ }
188
+ return maxLevel;
189
+ }
190
+ // ---------------------------------------------------------------------------
191
+ // Cell text extraction
192
+ // ---------------------------------------------------------------------------
193
+ function getCellText(tc) {
194
+ const tNodes = tc.getElementsByTagNameNS(W_NS, 't');
195
+ const parts = [];
196
+ for (let i = 0; i < tNodes.length; i++) {
197
+ parts.push(tNodes[i].textContent ?? '');
198
+ }
199
+ return parts.join('');
200
+ }
201
+ // ---------------------------------------------------------------------------
202
+ // Apply formatting to all runs in a cell
203
+ // ---------------------------------------------------------------------------
204
+ function getAllRunsInCell(tc) {
205
+ const runs = [];
206
+ const rNodes = tc.getElementsByTagNameNS(W_NS, 'r');
207
+ for (let i = 0; i < rNodes.length; i++) {
208
+ runs.push(rNodes[i]);
209
+ }
210
+ return runs;
211
+ }
212
+ function formatCellRuns(tc, format) {
213
+ const runs = getAllRunsInCell(tc);
214
+ for (const run of runs) {
215
+ if (format.bold)
216
+ setRunBold(run);
217
+ if (format.italic)
218
+ setRunItalic(run);
219
+ if (format.color)
220
+ setRunColor(run, format.color);
221
+ }
222
+ }
223
+ // ---------------------------------------------------------------------------
224
+ // Find Documents table by matching header row
225
+ // ---------------------------------------------------------------------------
226
+ function findDocumentsTable(xmlDoc) {
227
+ const tables = xmlDoc.getElementsByTagNameNS(W_NS, 'tbl');
228
+ for (let t = 0; t < tables.length; t++) {
229
+ const table = tables[t];
230
+ const rows = getDirectChildRows(table);
231
+ if (rows.length === 0)
232
+ continue;
233
+ const headerRow = rows[0];
234
+ const cells = getDirectChildCells(headerRow);
235
+ const headerTexts = cells.map((c) => getCellText(c).trim());
236
+ if (headerTexts.length === DOCUMENTS_HEADERS.length &&
237
+ headerTexts.every((text, i) => text === DOCUMENTS_HEADERS[i])) {
238
+ return table;
239
+ }
240
+ }
241
+ return null;
242
+ }
243
+ function getDirectChildRows(table) {
244
+ const rows = [];
245
+ const children = table.childNodes;
246
+ for (let i = 0; i < children.length; i++) {
247
+ const child = children[i];
248
+ if (child.nodeType === 1) {
249
+ const el = child;
250
+ if (el.localName === 'tr' && el.namespaceURI === W_NS) {
251
+ rows.push(el);
252
+ }
253
+ }
254
+ }
255
+ return rows;
256
+ }
257
+ function getDirectChildCells(row) {
258
+ const cells = [];
259
+ const children = row.childNodes;
260
+ for (let i = 0; i < children.length; i++) {
261
+ const child = children[i];
262
+ if (child.nodeType === 1) {
263
+ const el = child;
264
+ if (el.localName === 'tc' && el.namespaceURI === W_NS) {
265
+ cells.push(el);
266
+ }
267
+ }
268
+ }
269
+ return cells;
270
+ }
271
+ // ---------------------------------------------------------------------------
272
+ // Main formatter
273
+ // ---------------------------------------------------------------------------
274
+ export async function formatChecklistDocx(docxPath) {
275
+ const zip = new AdmZip(docxPath);
276
+ const entry = zip.getEntry('word/document.xml');
277
+ if (!entry)
278
+ return;
279
+ const xmlStr = entry.getData().toString('utf-8');
280
+ const xmlDoc = new DOMParser().parseFromString(xmlStr, 'text/xml');
281
+ const docsTable = findDocumentsTable(xmlDoc);
282
+ if (!docsTable)
283
+ return;
284
+ const rows = getDirectChildRows(docsTable);
285
+ // Skip header row (index 0)
286
+ for (let r = 1; r < rows.length; r++) {
287
+ const cells = getDirectChildCells(rows[r]);
288
+ if (cells.length < 2)
289
+ continue;
290
+ const numberText = getCellText(cells[0]);
291
+ const titleText = getCellText(cells[1]);
292
+ const rowType = classifyRow(numberText, titleText);
293
+ // Convert NBSP indentation to OOXML indent on title cell
294
+ countAndStripNbspIndent(cells[1]);
295
+ const titleCell = cells[1];
296
+ switch (rowType) {
297
+ case 'stage_heading':
298
+ formatCellRuns(titleCell, { italic: true, color: '8C8D8E' });
299
+ break;
300
+ case 'main_entry':
301
+ formatCellRuns(titleCell, { bold: true });
302
+ break;
303
+ case 'citation':
304
+ formatCellRuns(titleCell, { italic: true, color: '494A4B' });
305
+ break;
306
+ case 'signatory':
307
+ case 'action':
308
+ case 'issue':
309
+ // Normal formatting; checkboxes already in text
310
+ break;
311
+ case 'unknown':
312
+ break;
313
+ }
314
+ }
315
+ // Serialize and write back
316
+ const serializer = new XMLSerializer();
317
+ const updatedXml = serializer.serializeToString(xmlDoc);
318
+ zip.updateFile('word/document.xml', Buffer.from(updatedXml, 'utf-8'));
319
+ zip.writeZip(docxPath);
320
+ }
321
+ //# sourceMappingURL=format-checklist-docx.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format-checklist-docx.js","sourceRoot":"","sources":["../../../src/core/checklist/format-checklist-docx.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,7 @@ export { applyChecklistPatch, setChecklistAppliedPatchStore, getChecklistApplied
5
5
  export { humanStatus, STATUS_LABELS } from './status-labels.js';
6
6
  export { createChecklist, listChecklists, resolveChecklist, getChecklistState, saveChecklistState, appendHistory, getHistory, ChecklistStateSchema, type ChecklistState, type ChecklistMeta, type ChecklistSummary, type HistoryRecord, } from './state-manager.js';
7
7
  export { appendJsonl, readJsonl } from './jsonl-stores.js';
8
+ export { formatChecklistDocx } from './format-checklist-docx.js';
8
9
  interface TemplateDocumentRow {
9
10
  number: string;
10
11
  title: string;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/checklist/index.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,sBAAsB,EAAE,KAAK,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAC7E,OAAO,EACL,sBAAsB,EACtB,iBAAiB,EACjB,mBAAmB,EACnB,+BAA+B,EAC/B,6BAA6B,EAC7B,4BAA4B,EAC5B,gCAAgC,EAChC,KAAK,kBAAkB,EACvB,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,KAAK,yBAAyB,EAC9B,KAAK,uBAAuB,EAC5B,KAAK,sBAAsB,EAC3B,KAAK,0BAA0B,GAChC,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,iCAAiC,EACjC,cAAc,EACd,6BAA6B,EAC7B,yBAAyB,EACzB,sBAAsB,EACtB,mCAAmC,EACnC,gCAAgC,EAChC,gCAAgC,EAChC,KAAK,iCAAiC,EACtC,KAAK,kCAAkC,EACvC,KAAK,+BAA+B,EACpC,KAAK,gCAAgC,EACrC,KAAK,6BAA6B,EAClC,KAAK,2BAA2B,EAChC,KAAK,+BAA+B,EACpC,KAAK,+BAA+B,EACpC,KAAK,8BAA8B,GACpC,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,mBAAmB,EACnB,6BAA6B,EAC7B,6BAA6B,EAC7B,8BAA8B,EAC9B,8BAA8B,EAC9B,KAAK,2BAA2B,EAChC,KAAK,0BAA0B,EAC/B,KAAK,4BAA4B,EACjC,KAAK,2BAA2B,EAChC,KAAK,4BAA4B,EACjC,KAAK,0BAA0B,EAC/B,KAAK,0BAA0B,EAC/B,KAAK,yBAAyB,EAC9B,KAAK,wBAAwB,GAC9B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,EACL,eAAe,EACf,cAAc,EACd,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAClB,aAAa,EACb,UAAU,EACV,oBAAoB,EACpB,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,KAAK,gBAAgB,EACrB,KAAK,aAAa,GACnB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AA+B3D,UAAU,mBAAmB;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED,UAAU,iBAAiB;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,UAAU,gBAAgB;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,wBAAwB;IACvC,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,mBAAmB,EAAE,CAAC;IACjC,YAAY,EAAE,iBAAiB,EAAE,CAAC;IAClC,WAAW,EAAE,gBAAgB,EAAE,CAAC;CACjC;AAkLD;;;;;;;;;;GAUG;AACH,wBAAgB,6BAA6B,CAAC,IAAI,EAAE,OAAO,GAAG,wBAAwB,CA8FrF"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/checklist/index.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,sBAAsB,EAAE,KAAK,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAC7E,OAAO,EACL,sBAAsB,EACtB,iBAAiB,EACjB,mBAAmB,EACnB,+BAA+B,EAC/B,6BAA6B,EAC7B,4BAA4B,EAC5B,gCAAgC,EAChC,KAAK,kBAAkB,EACvB,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,KAAK,yBAAyB,EAC9B,KAAK,uBAAuB,EAC5B,KAAK,sBAAsB,EAC3B,KAAK,0BAA0B,GAChC,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,iCAAiC,EACjC,cAAc,EACd,6BAA6B,EAC7B,yBAAyB,EACzB,sBAAsB,EACtB,mCAAmC,EACnC,gCAAgC,EAChC,gCAAgC,EAChC,KAAK,iCAAiC,EACtC,KAAK,kCAAkC,EACvC,KAAK,+BAA+B,EACpC,KAAK,gCAAgC,EACrC,KAAK,6BAA6B,EAClC,KAAK,2BAA2B,EAChC,KAAK,+BAA+B,EACpC,KAAK,+BAA+B,EACpC,KAAK,8BAA8B,GACpC,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,mBAAmB,EACnB,6BAA6B,EAC7B,6BAA6B,EAC7B,8BAA8B,EAC9B,8BAA8B,EAC9B,KAAK,2BAA2B,EAChC,KAAK,0BAA0B,EAC/B,KAAK,4BAA4B,EACjC,KAAK,2BAA2B,EAChC,KAAK,4BAA4B,EACjC,KAAK,0BAA0B,EAC/B,KAAK,0BAA0B,EAC/B,KAAK,yBAAyB,EAC9B,KAAK,wBAAwB,GAC9B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,EACL,eAAe,EACf,cAAc,EACd,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAClB,aAAa,EACb,UAAU,EACV,oBAAoB,EACpB,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,KAAK,gBAAgB,EACrB,KAAK,aAAa,GACnB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AA+BjE,UAAU,mBAAmB;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED,UAAU,iBAAiB;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,UAAU,gBAAgB;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,wBAAwB;IACvC,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,mBAAmB,EAAE,CAAC;IACjC,YAAY,EAAE,iBAAiB,EAAE,CAAC;IAClC,WAAW,EAAE,gBAAgB,EAAE,CAAC;CACjC;AAkLD;;;;;;;;;;GAUG;AACH,wBAAgB,6BAA6B,CAAC,IAAI,EAAE,OAAO,GAAG,wBAAwB,CAiGrF"}
@@ -7,6 +7,7 @@ export { applyChecklistPatch, setChecklistAppliedPatchStore, getChecklistApplied
7
7
  export { humanStatus, STATUS_LABELS } from './status-labels.js';
8
8
  export { createChecklist, listChecklists, resolveChecklist, getChecklistState, saveChecklistState, appendHistory, getHistory, ChecklistStateSchema, } from './state-manager.js';
9
9
  export { appendJsonl, readJsonl } from './jsonl-stores.js';
10
+ export { formatChecklistDocx } from './format-checklist-docx.js';
10
11
  const STAGE_ORDER = ['PRE_SIGNING', 'SIGNING', 'CLOSING', 'POST_CLOSING'];
11
12
  const STAGE_HEADINGS = {
12
13
  PRE_SIGNING: 'PRE-SIGNING',
@@ -216,29 +217,32 @@ export function buildChecklistTemplateContext(data) {
216
217
  }
217
218
  // Signatory sub-rows
218
219
  for (const signatory of row.entry.signatories) {
220
+ const sigCheckbox = signatory.status === 'RECEIVED' ? '\u2611' : '\u2610';
219
221
  documentRows.push({
220
222
  number: '',
221
- title: `${indent}\u00A0\u00A0Signatory: ${signatoryLabel(signatory)}`,
223
+ title: `${indent}\u00A0\u00A0${sigCheckbox} Signatory: ${signatoryLabel(signatory)}`,
222
224
  status: '',
223
225
  responsible_party: '',
224
226
  });
225
227
  }
226
228
  // Linked action sub-rows
227
229
  for (const action of row.linkedActions) {
230
+ const actCheckbox = action.status === 'COMPLETED' ? '\u2611' : '\u2610';
228
231
  const latestCitation = latestCitationLabel(action.citations);
229
232
  documentRows.push({
230
233
  number: '',
231
- title: `${indent}\u00A0\u00A0Action ${action.action_id}: ${action.description}`,
234
+ title: `${indent}\u00A0\u00A0${actCheckbox} Action ${action.action_id}: ${action.description}`,
232
235
  status: latestCitation ? `${humanStatus(action.status)} | ${latestCitation}` : humanStatus(action.status),
233
236
  responsible_party: responsibilityLabel(action.assigned_to),
234
237
  });
235
238
  }
236
239
  // Linked issue sub-rows
237
240
  for (const issue of row.linkedIssues) {
241
+ const issCheckbox = issue.status === 'CLOSED' ? '\u2611' : '\u2610';
238
242
  const latestCitation = latestCitationLabel(issue.citations);
239
243
  documentRows.push({
240
244
  number: '',
241
- title: `${indent}\u00A0\u00A0Issue ${issue.issue_id}: ${issue.title}`,
245
+ title: `${indent}\u00A0\u00A0${issCheckbox} Issue ${issue.issue_id}: ${issue.title}`,
242
246
  status: latestCitation ? `${humanStatus(issue.status)} | ${latestCitation}` : humanStatus(issue.status),
243
247
  responsible_party: '',
244
248
  });
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/checklist/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/checklist/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sBAAsB,GAUvB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD,OAAO,EAAE,sBAAsB,EAAyB,MAAM,cAAc,CAAC;AAC7E,OAAO,EACL,sBAAsB,EACtB,iBAAiB,EACjB,mBAAmB,EACnB,+BAA+B,EAC/B,6BAA6B,EAC7B,4BAA4B,EAC5B,gCAAgC,GAQjC,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,iCAAiC,EACjC,cAAc,EACd,6BAA6B,EAC7B,yBAAyB,EACzB,sBAAsB,EACtB,mCAAmC,EACnC,gCAAgC,EAChC,gCAAgC,GAUjC,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,mBAAmB,EACnB,6BAA6B,EAC7B,6BAA6B,EAC7B,8BAA8B,EAC9B,8BAA8B,GAU/B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,EACL,eAAe,EACf,cAAc,EACd,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAClB,aAAa,EACb,UAAU,EACV,oBAAoB,GAKrB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAEjE,MAAM,WAAW,GAAqB,CAAC,aAAa,EAAE,SAAS,EAAE,SAAS,EAAE,cAAc,CAAC,CAAC;AAC5F,MAAM,cAAc,GAAmC;IACrD,WAAW,EAAE,aAAa;IAC1B,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,SAAS;IAClB,YAAY,EAAE,cAAc;CAC7B,CAAC;AACF,MAAM,YAAY,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAU,CAAC;AAoDvD,SAAS,gBAAgB,CACvB,CAA0C,EAC1C,CAA0C;IAE1C,MAAM,IAAI,GAAG,CAAC,CAAC,QAAQ,IAAI,EAAE,CAAC;IAC9B,MAAM,IAAI,GAAG,CAAC,CAAC,QAAQ,IAAI,EAAE,CAAC;IAC9B,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;QACjB,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,CAAC;QAC/F,IAAI,UAAU,KAAK,CAAC;YAAE,OAAO,UAAU,CAAC;IAC1C,CAAC;IACD,OAAO,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;AAC9C,CAAC;AAED,SAAS,QAAQ,CAAC,MAAgB;IAChC,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACjE,CAAC;AAED,SAAS,mBAAmB,CAAC,cAA+B;IAC1D,IAAI,CAAC,cAAc;QAAE,OAAO,EAAE,CAAC;IAC/B,OAAO,QAAQ,CAAC;QACd,cAAc,CAAC,eAAe,IAAI,EAAE;QACpC,cAAc,CAAC,YAAY,IAAI,EAAE;QACjC,cAAc,CAAC,IAAI,IAAI,EAAE;KAC1B,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC;AAED,SAAS,aAAa,CAAC,QAAkB;IACvC,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,GAAG,IAAI,EAAE,CAAC;IACjD,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,QAAQ,CAAC,IAAI,IAAI,EAAE,EAAE,QAAQ,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,CAAC;IACzE,IAAI,CAAC,IAAI;QAAE,OAAO,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACtC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACtC,OAAO,GAAG,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;AAC5C,CAAC;AAED,SAAS,mBAAmB,CAAC,SAAqB;IAChD,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IACtC,OAAO,aAAa,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAE,CAAC,CAAC;AACzD,CAAC;AAED,SAAS,cAAc,CAAC,SAAoB;IAC1C,MAAM,GAAG,GAAG,QAAQ,CAAC,CAAC,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,IAAI,IAAI,EAAE,EAAE,SAAS,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC/F,OAAO,GAAG,GAAG,KAAK,WAAW,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;AACpD,CAAC;AAED,SAAS,OAAO,CAAI,UAAmC;IACrD,OAAO,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;AAC5E,CAAC;AAED,SAAS,kBAAkB,CAAC,OAAyB;IACnD,MAAM,OAAO,GAAG,IAAI,GAAG,EAA4B,CAAC;IACpD,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,IAAI,KAAK,CAAC,QAAQ;YAAE,SAAS;QAC7B,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QAC7C,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAClC,CAAC;IACD,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;QACrC,KAAK,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;YAC7B,KAAK,CAAC,QAAQ,GAAG,MAAM,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAa;IACrC,MAAM,SAAS,GAAG,sBAAsB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACrD,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IAC/C,MAAM,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;IACrD,MAAM,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;IAChD,MAAM,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAEzC,kBAAkB,CAAC,OAAO,CAAC,CAAC;IAE5B,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC7F,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAC9B,OAAO;SACJ,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC;SACjC,MAAM,CAAC,CAAC,UAAU,EAAwB,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CACrE,CAAC;IAEF,MAAM,iBAAiB,GAAG,IAAI,GAAG,EAAwB,CAAC;IAC1D,MAAM,eAAe,GAAiB,EAAE,CAAC;IACzC,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,iBAAiB,GAAG,MAAM,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,gBAAgB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;QAC/G,IAAI,iBAAiB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACnC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC7B,SAAS;QACX,CAAC;QACD,KAAK,MAAM,UAAU,IAAI,iBAAiB,EAAE,CAAC;YAC3C,MAAM,OAAO,GAAG,iBAAiB,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;YACxD,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACrB,iBAAiB,CAAC,GAAG,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC;IAED,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAmB,CAAC;IACpD,MAAM,cAAc,GAAY,EAAE,CAAC;IACnC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,iBAAiB,GAAG,KAAK,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,gBAAgB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;QAC9G,IAAI,iBAAiB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACnC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC3B,SAAS;QACX,CAAC;QACD,KAAK,MAAM,UAAU,IAAI,iBAAiB,EAAE,CAAC;YAC3C,MAAM,OAAO,GAAG,gBAAgB,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;YACvD,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACpB,gBAAgB,CAAC,GAAG,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC;IAED,KAAK,MAAM,WAAW,IAAI,iBAAiB,CAAC,MAAM,EAAE,EAAE,CAAC;QACrD,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;IACrE,CAAC;IACD,KAAK,MAAM,UAAU,IAAI,gBAAgB,CAAC,MAAM,EAAE,EAAE,CAAC;QACnD,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;IAClE,CAAC;IACD,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;IACvE,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;IAEpE,MAAM,WAAW,GAAG,IAAI,GAAG,EAA+B,CAAC;IAE3D,KAAK,MAAM,KAAK,IAAI,WAAW,EAAE,CAAC;QAChC,MAAM,YAAY,GAAG,OAAO;aACzB,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,KAAK,KAAK,CAAC;aACxC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAC1B,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;QACvF,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAA4B,CAAC;QAC7D,MAAM,KAAK,GAAqB,EAAE,CAAC;QAEnC,KAAK,MAAM,KAAK,IAAI,YAAY,EAAE,CAAC;YACjC,IAAI,KAAK,CAAC,eAAe,IAAI,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,eAAe,CAAC,EAAE,CAAC;gBACzE,MAAM,QAAQ,GAAG,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC;gBACnE,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACrB,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;YACxD,CAAC;iBAAM,CAAC;gBACN,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACpB,CAAC;QACH,CAAC;QAED,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAC7B,KAAK,MAAM,CAAC,EAAE,QAAQ,CAAC,IAAI,gBAAgB,CAAC,OAAO,EAAE,EAAE,CAAC;YACtD,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAClC,CAAC;QAED,MAAM,SAAS,GAAgB,EAAE,CAAC;QAClC,MAAM,KAAK,GAAG,CAAC,KAAqB,EAAE,KAAa,EAAE,MAAc,EAAQ,EAAE;YAC3E,MAAM,QAAQ,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YAC3F,SAAS,CAAC,IAAI,CAAC;gBACb,KAAK;gBACL,QAAQ;gBACR,MAAM;gBACN,KAAK;gBACL,aAAa,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE;gBACxF,YAAY,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE;aACvF,CAAC,CAAC;YAEH,MAAM,QAAQ,GAAG,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;YAC5D,QAAQ,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;gBAChC,KAAK,CAAC,KAAK,EAAE,KAAK,GAAG,CAAC,EAAE,GAAG,MAAM,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC;YACpD,CAAC,CAAC,CAAC;QACL,CAAC,CAAC;QAEF,KAAK,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;YAC7B,KAAK,CAAC,KAAK,EAAE,CAAC,EAAE,GAAG,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;QAEH,WAAW,CAAC,GAAG,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IACpC,CAAC;IAED,OAAO;QACL,SAAS;QACT,WAAW;QACX,eAAe;QACf,cAAc;KACf,CAAC;AACJ,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,6BAA6B,CAAC,IAAa;IACzD,MAAM,KAAK,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACrC,MAAM,YAAY,GAA0B,EAAE,CAAC;IAE/C,WAAW,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;QACnC,MAAM,SAAS,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QACrD,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QAEnC,oBAAoB;QACpB,YAAY,CAAC,IAAI,CAAC;YAChB,MAAM,EAAE,EAAE;YACV,KAAK,EAAE,GAAG,YAAY,CAAC,KAAK,CAAC,KAAK,cAAc,CAAC,KAAK,CAAC,EAAE;YACzD,MAAM,EAAE,EAAE;YACV,iBAAiB,EAAE,EAAE;SACtB,CAAC,CAAC;QAEH,KAAK,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;YAC5B,MAAM,MAAM,GAAG,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YAChD,MAAM,UAAU,GAAG,GAAG,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,QAAQ,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YAEvF,iBAAiB;YACjB,YAAY,CAAC,IAAI,CAAC;gBAChB,MAAM,EAAE,GAAG,CAAC,MAAM;gBAClB,KAAK,EAAE,GAAG,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,KAAK,GAAG,UAAU,EAAE;gBACjD,MAAM,EAAE,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC;gBACrC,iBAAiB,EAAE,mBAAmB,CAAC,GAAG,CAAC,KAAK,CAAC,iBAAiB,CAAC;aACpE,CAAC,CAAC;YAEH,oBAAoB;YACpB,KAAK,MAAM,QAAQ,IAAI,GAAG,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;gBAC3C,YAAY,CAAC,IAAI,CAAC;oBAChB,MAAM,EAAE,EAAE;oBACV,KAAK,EAAE,GAAG,MAAM,oBAAoB,aAAa,CAAC,QAAQ,CAAC,EAAE;oBAC7D,MAAM,EAAE,EAAE;oBACV,iBAAiB,EAAE,EAAE;iBACtB,CAAC,CAAC;YACL,CAAC;YAED,qBAAqB;YACrB,KAAK,MAAM,SAAS,IAAI,GAAG,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;gBAC9C,MAAM,WAAW,GAAG,SAAS,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC;gBAC1E,YAAY,CAAC,IAAI,CAAC;oBAChB,MAAM,EAAE,EAAE;oBACV,KAAK,EAAE,GAAG,MAAM,eAAe,WAAW,eAAe,cAAc,CAAC,SAAS,CAAC,EAAE;oBACpF,MAAM,EAAE,EAAE;oBACV,iBAAiB,EAAE,EAAE;iBACtB,CAAC,CAAC;YACL,CAAC;YAED,yBAAyB;YACzB,KAAK,MAAM,MAAM,IAAI,GAAG,CAAC,aAAa,EAAE,CAAC;gBACvC,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC;gBACxE,MAAM,cAAc,GAAG,mBAAmB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;gBAC7D,YAAY,CAAC,IAAI,CAAC;oBAChB,MAAM,EAAE,EAAE;oBACV,KAAK,EAAE,GAAG,MAAM,eAAe,WAAW,WAAW,MAAM,CAAC,SAAS,KAAK,MAAM,CAAC,WAAW,EAAE;oBAC9F,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,cAAc,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC;oBACzG,iBAAiB,EAAE,mBAAmB,CAAC,MAAM,CAAC,WAAW,CAAC;iBAC3D,CAAC,CAAC;YACL,CAAC;YAED,wBAAwB;YACxB,KAAK,MAAM,KAAK,IAAI,GAAG,CAAC,YAAY,EAAE,CAAC;gBACrC,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC;gBACpE,MAAM,cAAc,GAAG,mBAAmB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;gBAC5D,YAAY,CAAC,IAAI,CAAC;oBAChB,MAAM,EAAE,EAAE;oBACV,KAAK,EAAE,GAAG,MAAM,eAAe,WAAW,UAAU,KAAK,CAAC,QAAQ,KAAK,KAAK,CAAC,KAAK,EAAE;oBACpF,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,cAAc,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC;oBACvG,iBAAiB,EAAE,EAAE;iBACtB,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,MAAM,eAAe,GAAwB,KAAK,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAClF,OAAO,EAAE,MAAM,CAAC,SAAS;QACzB,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC;QAClC,WAAW,EAAE,mBAAmB,CAAC,MAAM,CAAC,WAAW,CAAC;QACpD,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,EAAE;KAChC,CAAC,CAAC,CAAC;IAEJ,MAAM,cAAc,GAAuB,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAC9E,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,MAAM,EAAE,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC;QACjC,OAAO,EAAE,QAAQ,CAAC,CAAC,KAAK,CAAC,OAAO,IAAI,EAAE,EAAE,mBAAmB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;KAC3F,CAAC,CAAC,CAAC;IAEJ,OAAO;QACL,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,SAAS;QACpC,UAAU,EAAE,KAAK,CAAC,SAAS,CAAC,UAAU;QACtC,SAAS,EAAE,YAAY;QACvB,YAAY,EAAE,eAAe;QAC7B,WAAW,EAAE,cAAc;KAC5B,CAAC;AACJ,CAAC"}
@@ -3,6 +3,7 @@ export interface FillOptions {
3
3
  templateDir: string;
4
4
  values: Record<string, unknown>;
5
5
  outputPath: string;
6
+ postProcess?: (outputPath: string) => void | Promise<void>;
6
7
  }
7
8
  export interface FillResult {
8
9
  outputPath: string;
@@ -1 +1 @@
1
- {"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../src/core/engine.ts"],"names":[],"mappings":"AAEA,OAAO,EAAiC,KAAK,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAMrF,MAAM,WAAW,WAAW;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,UAAU;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB;AA0ID,wBAAsB,YAAY,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC,CA+C5E"}
1
+ {"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../src/core/engine.ts"],"names":[],"mappings":"AAEA,OAAO,EAAiC,KAAK,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAMrF,MAAM,WAAW,WAAW;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5D;AAED,MAAM,WAAW,UAAU;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB;AA4MD,wBAAsB,YAAY,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC,CAqD5E"}
@@ -4,6 +4,39 @@ import { loadMetadata, loadCleanConfig } from './metadata.js';
4
4
  import { loadSelectionsConfig } from './selector.js';
5
5
  import { runFillPipeline } from './unified-pipeline.js';
6
6
  import { BLANK_PLACEHOLDER, verifyTemplateFill } from './fill-utils.js';
7
+ /** Derive signatory display fields for a given prefix. Reusable across templates. */
8
+ function deriveSignatoryFields(data, prefix, fieldNames, str, isBlankPlaceholder) {
9
+ const typeKey = `${prefix}_type`;
10
+ if (!fieldNames.has(typeKey))
11
+ return;
12
+ const typeVal = str(typeKey);
13
+ const isEntity = typeVal !== 'individual';
14
+ data[`${prefix}_is_entity`] = isEntity;
15
+ // Derive display fields: show value for entities, empty string for individuals
16
+ for (const suffix of ['title', 'company']) {
17
+ const srcKey = `${prefix}_${suffix}`;
18
+ const displayKey = `${prefix}_${suffix}_display`;
19
+ if (isEntity) {
20
+ const val = data[srcKey];
21
+ data[displayKey] = (val && !isBlankPlaceholder(val)) ? String(val) : '';
22
+ }
23
+ else {
24
+ data[displayKey] = '';
25
+ // Warn if entity-only fields are set for an individual
26
+ const val = data[srcKey];
27
+ if (val && !isBlankPlaceholder(val) && String(val).trim() !== '') {
28
+ console.warn(`Warning: ${srcKey} is set but ${prefix}_type is "individual" — value will be ignored`);
29
+ }
30
+ }
31
+ }
32
+ // Normalize signature fields: blank instead of BLANK_PLACEHOLDER underscores
33
+ for (const suffix of ['name', 'email', 'title', 'company']) {
34
+ const key = `${prefix}_${suffix}`;
35
+ if (isBlankPlaceholder(data[key])) {
36
+ data[key] = '';
37
+ }
38
+ }
39
+ }
7
40
  /**
8
41
  * Compute display fields for radio/checkbox groups in table rows.
9
42
  * docx-templates only allows one {IF} per table row, so multi-option rows
@@ -16,6 +49,11 @@ function computeDisplayFields(data, fieldNames) {
16
49
  const str = (key) => String(data[key] ?? '');
17
50
  const bool = (key) => data[key] === true;
18
51
  const isBlankPlaceholder = (value) => typeof value === 'string' && value.trim() === BLANK_PLACEHOLDER;
52
+ /** True when a display field should be computed (not yet set or defaulted to blank). */
53
+ const needsCompute = (key) => {
54
+ const val = data[key];
55
+ return !val || isBlankPlaceholder(val);
56
+ };
19
57
  const toGoogleDocUrl = (value) => {
20
58
  const raw = value.trim();
21
59
  if (raw === '')
@@ -28,6 +66,23 @@ function computeDisplayFields(data, fieldNames) {
28
66
  return `https://docs.google.com/document/d/${raw}/`;
29
67
  return raw;
30
68
  };
69
+ // ── Signatory type derivation ──
70
+ // Auto-discover role-based prefixes: match *_signatory_type
71
+ for (const key of fieldNames) {
72
+ if (key.endsWith('_signatory_type')) {
73
+ const prefix = key.slice(0, -5); // strip "_type" → e.g. "provider_signatory"
74
+ if (fieldNames.has(`${prefix}_name`) && fieldNames.has(`${prefix}_title`)) {
75
+ deriveSignatoryFields(data, prefix, fieldNames, str, isBlankPlaceholder);
76
+ }
77
+ }
78
+ }
79
+ // Legacy backward compat: party_1_type, party_2_type (mutual NDA)
80
+ for (const n of [1, 2]) {
81
+ const legacyKey = `party_${n}_type`;
82
+ if (fieldNames.has(legacyKey) && fieldNames.has(`party_${n}_name`) && fieldNames.has(`party_${n}_title`)) {
83
+ deriveSignatoryFields(data, `party_${n}`, fieldNames, str, isBlankPlaceholder);
84
+ }
85
+ }
31
86
  // Optional cover-table rows in employment templates should disappear when blank.
32
87
  // The default blank placeholder is intentionally visible in most contexts,
33
88
  // but for these optional rows we normalize blank placeholders to empty strings
@@ -47,19 +102,19 @@ function computeDisplayFields(data, fieldNames) {
47
102
  data['cloud_drive_id_footer'] = docUrl ? `Document URL: ${docUrl}` : '';
48
103
  }
49
104
  // Order Date: "Date of last signature" or custom date
50
- if (fieldNames.has('order_date_display') && !data['order_date_display']) {
105
+ if (fieldNames.has('order_date_display') && needsCompute('order_date_display')) {
51
106
  data['order_date_display'] = bool('order_date_is_last_signature')
52
107
  ? '( x )\tDate of last signature on this Order Form'
53
108
  : `( x )\t${str('custom_order_date')}`;
54
109
  }
55
110
  // Pilot fee: paid or free trial
56
- if (fieldNames.has('pilot_fee_display') && !data['pilot_fee_display']) {
111
+ if (fieldNames.has('pilot_fee_display') && needsCompute('pilot_fee_display')) {
57
112
  data['pilot_fee_display'] = bool('pilot_is_free')
58
113
  ? '( x )\tFree trial'
59
114
  : `( x )\tFee for Pilot Period: ${str('pilot_fee')}`;
60
115
  }
61
116
  // Cloud Service Fees: build from selected checkboxes
62
- if (fieldNames.has('fees_display') && !data['fees_display']) {
117
+ if (fieldNames.has('fees_display') && needsCompute('fees_display')) {
63
118
  const lines = [];
64
119
  if (bool('fee_is_per_unit')) {
65
120
  lines.push(`[ x ] ${str('fees')} per ${str('fee_unit')}`);
@@ -79,7 +134,7 @@ function computeDisplayFields(data, fieldNames) {
79
134
  data['fees_display'] = lines.join('\n');
80
135
  }
81
136
  // Payment Process: invoice or automatic
82
- if (fieldNames.has('payment_display') && !data['payment_display']) {
137
+ if (fieldNames.has('payment_display') && needsCompute('payment_display')) {
83
138
  if (bool('payment_by_invoice')) {
84
139
  const freq = str('payment_frequency');
85
140
  const days = str('payment_terms_days');
@@ -97,7 +152,7 @@ function computeDisplayFields(data, fieldNames) {
97
152
  }
98
153
  }
99
154
  // Auto-renewal
100
- if (fieldNames.has('auto_renewal_display') && !data['auto_renewal_display']) {
155
+ if (fieldNames.has('auto_renewal_display') && needsCompute('auto_renewal_display')) {
101
156
  if (bool('auto_renew')) {
102
157
  const days = str('non_renewal_notice_days');
103
158
  data['auto_renewal_display'] =
@@ -108,13 +163,13 @@ function computeDisplayFields(data, fieldNames) {
108
163
  }
109
164
  }
110
165
  // Effective Date
111
- if (fieldNames.has('effective_date_display') && !data['effective_date_display']) {
166
+ if (fieldNames.has('effective_date_display') && needsCompute('effective_date_display')) {
112
167
  data['effective_date_display'] = bool('effective_date_is_last_signature')
113
168
  ? '( x )\tDate of last Cover Page signature'
114
169
  : `( x )\t${str('custom_effective_date')}`;
115
170
  }
116
171
  // Covered Claims
117
- if (fieldNames.has('covered_claims_display') && !data['covered_claims_display']) {
172
+ if (fieldNames.has('covered_claims_display') && needsCompute('covered_claims_display')) {
118
173
  const lines = [];
119
174
  if (bool('has_provider_covered_claims')) {
120
175
  lines.push('[ x ] Provider Covered Claims: [Any action, proceeding, or claim that the Cloud Service, when used by Customer as permitted under the Agreement, infringes or misappropriates a third party\u2019s intellectual property rights.]');
@@ -125,7 +180,7 @@ function computeDisplayFields(data, fieldNames) {
125
180
  data['covered_claims_display'] = lines.join('\n');
126
181
  }
127
182
  // General Cap Amount
128
- if (fieldNames.has('general_cap_display') && !data['general_cap_display']) {
183
+ if (fieldNames.has('general_cap_display') && needsCompute('general_cap_display')) {
129
184
  if (bool('general_cap_is_multiplier')) {
130
185
  data['general_cap_display'] = `( x )\t${str('general_cap_multiplier')}x the Fees paid or payable by Customer in the 12 month period immediately preceding the claim`;
131
186
  }
@@ -146,13 +201,18 @@ export async function fillTemplate(options) {
146
201
  if (unknownKeys.length > 0) {
147
202
  console.warn(`Warning: unknown field(s) not in metadata: ${unknownKeys.join(', ')}`);
148
203
  }
149
- // Build cleanPatch if replacements.json exists
204
+ // Build cleanPatch if replacements.json or clean.json exists
150
205
  const templatePath = join(templateDir, 'template.docx');
151
206
  const replacementsPath = join(templateDir, 'replacements.json');
152
- const cleanPatch = existsSync(replacementsPath)
207
+ const cleanJsonPath = join(templateDir, 'clean.json');
208
+ const hasReplacements = existsSync(replacementsPath);
209
+ const hasCleanJson = existsSync(cleanJsonPath);
210
+ const cleanPatch = (hasReplacements || hasCleanJson)
153
211
  ? {
154
212
  cleanConfig: loadCleanConfig(templateDir),
155
- replacements: JSON.parse(readFileSync(replacementsPath, 'utf-8')),
213
+ replacements: hasReplacements
214
+ ? JSON.parse(readFileSync(replacementsPath, 'utf-8'))
215
+ : {},
156
216
  }
157
217
  : undefined;
158
218
  // Load selectionsConfig if selections.json exists
@@ -172,6 +232,7 @@ export async function fillTemplate(options) {
172
232
  computeDisplayFields: (d) => computeDisplayFields(d, fieldNames),
173
233
  fixSmartQuotes: true,
174
234
  verify: (p) => verifyTemplateFill(p),
235
+ postProcess: options.postProcess,
175
236
  });
176
237
  return {
177
238
  outputPath: result.outputPath,