@open-agreements/open-agreements 0.2.0 → 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 (189) hide show
  1. package/README.md +40 -2
  2. package/content/templates/closing-checklist/metadata.yaml +6 -13
  3. package/content/templates/closing-checklist/template.docx +0 -0
  4. package/content/templates/common-paper-ai-addendum/README.md +18 -0
  5. package/content/templates/common-paper-ai-addendum/metadata.yaml +136 -0
  6. package/content/templates/common-paper-ai-addendum/replacements.json +5 -0
  7. package/content/templates/common-paper-ai-addendum/selections.json +62 -0
  8. package/content/templates/common-paper-ai-addendum/template.docx +0 -0
  9. package/content/templates/common-paper-ai-addendum-in-app/metadata.yaml +88 -0
  10. package/content/templates/common-paper-ai-addendum-in-app/replacements.json +5 -0
  11. package/content/templates/common-paper-ai-addendum-in-app/selections.json +62 -0
  12. package/content/templates/common-paper-amendment/README.md +18 -0
  13. package/content/templates/common-paper-amendment/metadata.yaml +48 -0
  14. package/content/templates/common-paper-amendment/template.docx +0 -0
  15. package/content/templates/common-paper-business-associate-agreement/README.md +20 -1
  16. package/content/templates/common-paper-business-associate-agreement/metadata.yaml +111 -3
  17. package/content/templates/common-paper-business-associate-agreement/replacements.json +2 -1
  18. package/content/templates/common-paper-business-associate-agreement/selections.json +38 -0
  19. package/content/templates/common-paper-business-associate-agreement/template.docx +0 -0
  20. package/content/templates/common-paper-cloud-service-agreement/README.md +18 -0
  21. package/content/templates/common-paper-cloud-service-agreement/metadata.yaml +48 -0
  22. package/content/templates/common-paper-cloud-service-agreement/template.docx +0 -0
  23. package/content/templates/common-paper-csa-with-ai/README.md +18 -0
  24. package/content/templates/common-paper-csa-with-ai/metadata.yaml +462 -2
  25. package/content/templates/common-paper-csa-with-ai/replacements.json +5 -2
  26. package/content/templates/common-paper-csa-with-ai/selections.json +291 -0
  27. package/content/templates/common-paper-csa-with-ai/template.docx +0 -0
  28. package/content/templates/common-paper-csa-with-sla/README.md +18 -0
  29. package/content/templates/common-paper-csa-with-sla/metadata.yaml +387 -2
  30. package/content/templates/common-paper-csa-with-sla/replacements.json +4 -2
  31. package/content/templates/common-paper-csa-with-sla/selections.json +257 -0
  32. package/content/templates/common-paper-csa-with-sla/template.docx +0 -0
  33. package/content/templates/common-paper-csa-without-sla/README.md +18 -0
  34. package/content/templates/common-paper-csa-without-sla/metadata.yaml +380 -2
  35. package/content/templates/common-paper-csa-without-sla/replacements.json +5 -2
  36. package/content/templates/common-paper-csa-without-sla/selections.json +250 -0
  37. package/content/templates/common-paper-csa-without-sla/template.docx +0 -0
  38. package/content/templates/common-paper-data-processing-agreement/README.md +16 -0
  39. package/content/templates/common-paper-data-processing-agreement/metadata.yaml +397 -3
  40. package/content/templates/common-paper-data-processing-agreement/replacements.json +2 -1
  41. package/content/templates/common-paper-data-processing-agreement/selections.json +211 -0
  42. package/content/templates/common-paper-data-processing-agreement/template.docx +0 -0
  43. package/content/templates/common-paper-design-partner-agreement/README.md +18 -0
  44. package/content/templates/common-paper-design-partner-agreement/metadata.yaml +99 -3
  45. package/content/templates/common-paper-design-partner-agreement/selections.json +27 -0
  46. package/content/templates/common-paper-design-partner-agreement/template.docx +0 -0
  47. package/content/templates/common-paper-independent-contractor-agreement/README.md +18 -0
  48. package/content/templates/common-paper-independent-contractor-agreement/clean.json +8 -0
  49. package/content/templates/common-paper-independent-contractor-agreement/metadata.yaml +52 -0
  50. package/content/templates/common-paper-independent-contractor-agreement/replacements.json +3 -0
  51. package/content/templates/common-paper-independent-contractor-agreement/template.docx +0 -0
  52. package/content/templates/common-paper-letter-of-intent/README.md +18 -0
  53. package/content/templates/common-paper-letter-of-intent/metadata.yaml +48 -0
  54. package/content/templates/common-paper-letter-of-intent/template.docx +0 -0
  55. package/content/templates/common-paper-mutual-nda/README.md +29 -7
  56. package/content/templates/common-paper-mutual-nda/metadata.yaml +48 -0
  57. package/content/templates/common-paper-mutual-nda/template.docx +0 -0
  58. package/content/templates/common-paper-one-way-nda/README.md +13 -0
  59. package/content/templates/common-paper-one-way-nda/metadata.yaml +24 -0
  60. package/content/templates/common-paper-one-way-nda/selections.json +38 -0
  61. package/content/templates/common-paper-one-way-nda/template.docx +0 -0
  62. package/content/templates/common-paper-order-form/README.md +18 -0
  63. package/content/templates/common-paper-order-form/metadata.yaml +115 -3
  64. package/content/templates/common-paper-order-form/replacements.json +5 -2
  65. package/content/templates/common-paper-order-form/selections.json +56 -0
  66. package/content/templates/common-paper-order-form/template.docx +0 -0
  67. package/content/templates/common-paper-order-form-with-sla/README.md +18 -0
  68. package/content/templates/common-paper-order-form-with-sla/metadata.yaml +149 -3
  69. package/content/templates/common-paper-order-form-with-sla/replacements.json +6 -2
  70. package/content/templates/common-paper-order-form-with-sla/selections.json +64 -0
  71. package/content/templates/common-paper-order-form-with-sla/template.docx +0 -0
  72. package/content/templates/common-paper-partnership-agreement/README.md +18 -0
  73. package/content/templates/common-paper-partnership-agreement/metadata.yaml +293 -4
  74. package/content/templates/common-paper-partnership-agreement/replacements.json +5 -2
  75. package/content/templates/common-paper-partnership-agreement/selections.json +138 -0
  76. package/content/templates/common-paper-partnership-agreement/template.docx +0 -0
  77. package/content/templates/common-paper-pilot-agreement/README.md +18 -0
  78. package/content/templates/common-paper-pilot-agreement/metadata.yaml +48 -0
  79. package/content/templates/common-paper-pilot-agreement/template.docx +0 -0
  80. package/content/templates/common-paper-professional-services-agreement/README.md +18 -0
  81. package/content/templates/common-paper-professional-services-agreement/metadata.yaml +338 -4
  82. package/content/templates/common-paper-professional-services-agreement/replacements.json +7 -4
  83. package/content/templates/common-paper-professional-services-agreement/selections.json +207 -0
  84. package/content/templates/common-paper-professional-services-agreement/template.docx +0 -0
  85. package/content/templates/common-paper-statement-of-work/README.md +18 -0
  86. package/content/templates/common-paper-statement-of-work/metadata.yaml +110 -2
  87. package/content/templates/common-paper-statement-of-work/replacements.json +4 -1
  88. package/content/templates/common-paper-statement-of-work/selections.json +55 -0
  89. package/content/templates/common-paper-statement-of-work/template.docx +0 -0
  90. package/content/templates/common-paper-term-sheet/README.md +18 -0
  91. package/content/templates/common-paper-term-sheet/metadata.yaml +48 -0
  92. package/content/templates/common-paper-term-sheet/template.docx +0 -0
  93. package/content/templates/working-group-list/template.docx +0 -0
  94. package/dist/cli/index.d.ts.map +1 -1
  95. package/dist/cli/index.js +47 -10
  96. package/dist/cli/index.js.map +1 -1
  97. package/dist/commands/checklist.d.ts +21 -1
  98. package/dist/commands/checklist.d.ts.map +1 -1
  99. package/dist/commands/checklist.js +176 -44
  100. package/dist/commands/checklist.js.map +1 -1
  101. package/dist/commands/list.d.ts.map +1 -1
  102. package/dist/commands/list.js +1 -46
  103. package/dist/commands/list.js.map +1 -1
  104. package/dist/commands/recipe.js +3 -11
  105. package/dist/commands/recipe.js.map +1 -1
  106. package/dist/core/checklist/format-checklist-docx.d.ts +10 -0
  107. package/dist/core/checklist/format-checklist-docx.d.ts.map +1 -0
  108. package/dist/core/checklist/format-checklist-docx.js +321 -0
  109. package/dist/core/checklist/format-checklist-docx.js.map +1 -0
  110. package/dist/core/checklist/index.d.ts +23 -14
  111. package/dist/core/checklist/index.d.ts.map +1 -1
  112. package/dist/core/checklist/index.js +83 -39
  113. package/dist/core/checklist/index.js.map +1 -1
  114. package/dist/core/checklist/jsonl-stores.d.ts +3 -0
  115. package/dist/core/checklist/jsonl-stores.d.ts.map +1 -0
  116. package/dist/core/checklist/jsonl-stores.js +16 -0
  117. package/dist/core/checklist/jsonl-stores.js.map +1 -0
  118. package/dist/core/checklist/schemas.d.ts +2 -2
  119. package/dist/core/checklist/schemas.js +1 -1
  120. package/dist/core/checklist/schemas.js.map +1 -1
  121. package/dist/core/checklist/state-manager.d.ts +146 -0
  122. package/dist/core/checklist/state-manager.d.ts.map +1 -0
  123. package/dist/core/checklist/state-manager.js +147 -0
  124. package/dist/core/checklist/state-manager.js.map +1 -0
  125. package/dist/core/checklist/status-labels.d.ts +6 -0
  126. package/dist/core/checklist/status-labels.d.ts.map +1 -0
  127. package/dist/core/checklist/status-labels.js +29 -0
  128. package/dist/core/checklist/status-labels.js.map +1 -0
  129. package/dist/core/engine.d.ts +1 -0
  130. package/dist/core/engine.d.ts.map +1 -1
  131. package/dist/core/engine.js +72 -11
  132. package/dist/core/engine.js.map +1 -1
  133. package/dist/core/selector.d.ts +2 -0
  134. package/dist/core/selector.d.ts.map +1 -1
  135. package/dist/core/selector.js +181 -39
  136. package/dist/core/selector.js.map +1 -1
  137. package/dist/core/template-listing.d.ts +40 -0
  138. package/dist/core/template-listing.d.ts.map +1 -0
  139. package/dist/core/template-listing.js +91 -0
  140. package/dist/core/template-listing.js.map +1 -0
  141. package/dist/core/validation/recipe.d.ts.map +1 -1
  142. package/dist/core/validation/recipe.js +47 -61
  143. package/dist/core/validation/recipe.js.map +1 -1
  144. package/dist/core/validation/template.d.ts.map +1 -1
  145. package/dist/core/validation/template.js +10 -2
  146. package/dist/core/validation/template.js.map +1 -1
  147. package/dist/index.d.ts +2 -0
  148. package/dist/index.d.ts.map +1 -1
  149. package/dist/index.js +4 -0
  150. package/dist/index.js.map +1 -1
  151. package/package.json +8 -2
  152. package/skills/cloud-service-agreement/SKILL.md +9 -0
  153. package/skills/data-privacy-agreement/SKILL.md +9 -0
  154. package/skills/edit-docx-agreement/CONNECTORS.md +20 -0
  155. package/skills/edit-docx-agreement/SKILL.md +77 -0
  156. package/skills/employment-contract/SKILL.md +9 -0
  157. package/skills/iso-27001-evidence-collection/CONNECTORS.md +39 -0
  158. package/skills/iso-27001-evidence-collection/SKILL.md +304 -0
  159. package/skills/iso-27001-evidence-collection/rules/api-exports.md +191 -0
  160. package/skills/iso-27001-evidence-collection/rules/evidence-types.md +107 -0
  161. package/skills/iso-27001-evidence-collection/rules/screenshot-guide.md +77 -0
  162. package/skills/iso-27001-internal-audit/CONNECTORS.md +39 -0
  163. package/skills/iso-27001-internal-audit/SKILL.md +275 -0
  164. package/skills/iso-27001-internal-audit/rules/access-control.md +191 -0
  165. package/skills/iso-27001-internal-audit/rules/business-continuity.md +94 -0
  166. package/skills/iso-27001-internal-audit/rules/change-management.md +211 -0
  167. package/skills/iso-27001-internal-audit/rules/encryption.md +93 -0
  168. package/skills/iso-27001-internal-audit/rules/incident-response.md +127 -0
  169. package/skills/iso-27001-internal-audit/rules/isms-management.md +164 -0
  170. package/skills/iso-27001-internal-audit/rules/logging-monitoring.md +96 -0
  171. package/skills/iso-27001-internal-audit/rules/people-controls.md +161 -0
  172. package/skills/iso-27001-internal-audit/rules/supplier-management.md +92 -0
  173. package/skills/nda/SKILL.md +9 -0
  174. package/skills/open-agreements/SKILL.md +9 -0
  175. package/skills/safe/SKILL.md +9 -0
  176. package/skills/services-agreement/SKILL.md +9 -0
  177. package/skills/soc2-readiness/CONNECTORS.md +39 -0
  178. package/skills/soc2-readiness/SKILL.md +301 -0
  179. package/skills/soc2-readiness/rules/change-vendor-management.md +104 -0
  180. package/skills/soc2-readiness/rules/communication-info.md +85 -0
  181. package/skills/soc2-readiness/rules/control-activities.md +95 -0
  182. package/skills/soc2-readiness/rules/control-environment.md +126 -0
  183. package/skills/soc2-readiness/rules/logical-access.md +264 -0
  184. package/skills/soc2-readiness/rules/monitoring-activities.md +66 -0
  185. package/skills/soc2-readiness/rules/optional-categories.md +264 -0
  186. package/skills/soc2-readiness/rules/privacy-criteria.md +359 -0
  187. package/skills/soc2-readiness/rules/risk-assessment.md +100 -0
  188. package/skills/soc2-readiness/rules/system-operations.md +170 -0
  189. package/skills/venture-financing/SKILL.md +9 -0
@@ -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,
@@ -1 +1 @@
1
- {"version":3,"file":"engine.js","sourceRoot":"","sources":["../../src/core/engine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"engine.js","sourceRoot":"","sources":["../../src/core/engine.ts"],"names":[],"mappings":"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"}
@@ -13,6 +13,8 @@ export declare const SelectionsConfigSchema: z.ZodObject<{
13
13
  radio: "radio";
14
14
  checkbox: "checkbox";
15
15
  }>;
16
+ standalone: z.ZodOptional<z.ZodBoolean>;
17
+ cellContext: z.ZodOptional<z.ZodString>;
16
18
  options: z.ZodArray<z.ZodObject<{
17
19
  marker: z.ZodString;
18
20
  trigger: z.ZodUnion<readonly [z.ZodLiteral<"default">, z.ZodObject<{
@@ -1 +1 @@
1
- {"version":3,"file":"selector.d.ts","sourceRoot":"","sources":["../../src/core/selector.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AA8BxB,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;iBAEjC,CAAC;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAMtE,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,CAGnE;AAgID;;;;;;;;;;GAUG;AACH,wBAAsB,eAAe,CACnC,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,gBAAgB,EACxB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,OAAO,CAAC,IAAI,CAAC,CAmCf"}
1
+ {"version":3,"file":"selector.d.ts","sourceRoot":"","sources":["../../src/core/selector.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAqCxB,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;iBAEjC,CAAC;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAMtE,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,CAGnE;AA0ID;;;;;;;;;;GAUG;AACH,wBAAsB,eAAe,CACnC,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,gBAAgB,EACxB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,OAAO,CAAC,IAAI,CAAC,CAkCf"}
@@ -23,11 +23,15 @@ const OptionSchema = z.object({
23
23
  marker: z.string(),
24
24
  trigger: TriggerSchema,
25
25
  });
26
- const GroupSchema = z.object({
26
+ const GroupSchema = z
27
+ .object({
27
28
  id: z.string(),
28
29
  type: z.enum(['radio', 'checkbox']),
29
- options: z.array(OptionSchema).min(2),
30
- });
30
+ standalone: z.boolean().optional(),
31
+ cellContext: z.string().optional(),
32
+ options: z.array(OptionSchema).min(1),
33
+ })
34
+ .refine((g) => g.standalone === true || g.options.length >= 2, { message: 'Non-standalone groups require at least 2 options' });
31
35
  export const SelectionsConfigSchema = z.object({
32
36
  groups: z.array(GroupSchema).min(1),
33
37
  });
@@ -52,6 +56,15 @@ function extractParagraphText(para) {
52
56
  }
53
57
  return parts.join('').trim();
54
58
  }
59
+ /** Extract all text from a table cell by concatenating its paragraph texts. */
60
+ function extractCellText(cell) {
61
+ const paras = cell.getElementsByTagNameNS(W_NS, 'p');
62
+ const parts = [];
63
+ for (let i = 0; i < paras.length; i++) {
64
+ parts.push(extractParagraphText(paras[i]));
65
+ }
66
+ return parts.join(' ');
67
+ }
55
68
  /** Check if a paragraph's text starts with a radio or checkbox marker. */
56
69
  const MARKER_RE = /^\(\s*x?\s*\)|^\[\s*x?\s*\]|^[\u2610\u2611\u2612]/i;
57
70
  function hasOptionPrefix(text) {
@@ -173,19 +186,19 @@ export async function applySelections(inputPath, outputPath, config, data) {
173
186
  const serializer = new XMLSerializer();
174
187
  const parts = enumerateTextParts(zip);
175
188
  const partNames = getGeneralTextPartNames(parts);
176
- let modified = false;
177
189
  for (const partName of partNames) {
178
190
  const entry = zip.getEntry(partName);
179
191
  if (!entry)
180
192
  continue;
181
193
  const xml = entry.getData().toString('utf-8');
182
194
  const doc = parser.parseFromString(xml, 'text/xml');
195
+ let partModified = false;
183
196
  for (const group of config.groups) {
184
197
  const result = processGroup(doc, group, data);
185
198
  if (result)
186
- modified = true;
199
+ partModified = true;
187
200
  }
188
- if (modified) {
201
+ if (partModified) {
189
202
  const outXml = serializer.serializeToString(doc);
190
203
  zip.updateFile(partName, Buffer.from(outXml, 'utf-8'));
191
204
  }
@@ -203,28 +216,83 @@ export async function applySelections(inputPath, outputPath, config, data) {
203
216
  * Returns true if any modifications were made.
204
217
  */
205
218
  function processGroup(doc, group, data) {
206
- // Step 1: Find paragraphs matching each option's marker
219
+ if (group.standalone) {
220
+ return processStandaloneGroup(doc, group, data);
221
+ }
222
+ // Step 1: Find ALL candidate paragraphs for each option's marker
207
223
  const allParagraphs = doc.getElementsByTagNameNS(W_NS, 'p');
208
- const optionMatches = [];
224
+ const candidatesPerOption = group.options.map(() => []);
209
225
  for (let oi = 0; oi < group.options.length; oi++) {
210
226
  const option = group.options[oi];
211
227
  for (let pi = 0; pi < allParagraphs.length; pi++) {
212
228
  const para = allParagraphs[pi];
213
229
  const text = extractParagraphText(para);
214
230
  if (text && hasOptionPrefix(text) && text.includes(option.marker)) {
215
- optionMatches.push({ para, optionIndex: oi });
216
- break; // first match per option
231
+ candidatesPerOption[oi].push({ para, optionIndex: oi });
217
232
  }
218
233
  }
219
234
  }
220
- // If we couldn't find all option markers, skip this group
221
- if (optionMatches.length < 2)
222
- return false;
223
- // Step 2: Verify all matched paragraphs share the same parent <w:tc>
224
- const cells = optionMatches.map((m) => findAncestor(m.para, 'tc'));
225
- const cell = cells[0];
226
- if (!cell || !cells.every((c) => c === cell))
235
+ // Step 2: Find a cell where ALL options have at least one candidate
236
+ // Group candidates by their parent cell
237
+ const cellCandidates = new Map();
238
+ for (const candidates of candidatesPerOption) {
239
+ for (const match of candidates) {
240
+ const cell = findAncestor(match.para, 'tc');
241
+ if (!cell)
242
+ continue;
243
+ if (!cellCandidates.has(cell))
244
+ cellCandidates.set(cell, []);
245
+ cellCandidates.get(cell).push(match);
246
+ }
247
+ }
248
+ // Collect all qualifying cells (where all options are represented)
249
+ const qualifyingCells = [];
250
+ for (const [candidateCell, matches] of cellCandidates) {
251
+ const representedOptions = new Set(matches.map((m) => m.optionIndex));
252
+ if (representedOptions.size >= 2 && representedOptions.size >= group.options.length) {
253
+ const seen = new Set();
254
+ const deduped = [];
255
+ for (const match of matches) {
256
+ if (!seen.has(match.optionIndex)) {
257
+ seen.add(match.optionIndex);
258
+ deduped.push(match);
259
+ }
260
+ }
261
+ qualifyingCells.push({ cell: candidateCell, matches: deduped });
262
+ }
263
+ }
264
+ if (qualifyingCells.length === 0)
227
265
  return false;
266
+ let cell;
267
+ let optionMatches;
268
+ if (qualifyingCells.length === 1) {
269
+ cell = qualifyingCells[0].cell;
270
+ optionMatches = qualifyingCells[0].matches;
271
+ }
272
+ else if (group.cellContext) {
273
+ const filtered = qualifyingCells.filter(({ cell: c }) => {
274
+ const cellText = extractCellText(c);
275
+ return cellText.includes(group.cellContext);
276
+ });
277
+ if (filtered.length === 1) {
278
+ cell = filtered[0].cell;
279
+ optionMatches = filtered[0].matches;
280
+ }
281
+ else if (filtered.length === 0) {
282
+ throw new Error(`[selector] Group "${group.id}": cellContext "${group.cellContext}" did not match any of ${qualifyingCells.length} candidate cells.`);
283
+ }
284
+ else {
285
+ throw new Error(`[selector] Group "${group.id}": cellContext "${group.cellContext}" matched ${filtered.length} cells (expected 1). Use a more specific cellContext.`);
286
+ }
287
+ }
288
+ else {
289
+ const snippets = qualifyingCells.map(({ cell: c }, i) => {
290
+ const text = extractCellText(c);
291
+ return ` Cell ${i + 1}: "${text.substring(0, 120)}..."`;
292
+ });
293
+ throw new Error(`[selector] Group "${group.id}": ${qualifyingCells.length} candidate cells with identical markers. ` +
294
+ `Add "cellContext" to disambiguate.\nCandidates:\n${snippets.join('\n')}`);
295
+ }
228
296
  // Step 3: Collect all <w:p> in this cell and classify them
229
297
  const cellParas = cell.getElementsByTagNameNS(W_NS, 'p');
230
298
  const classified = [];
@@ -241,6 +309,37 @@ function processGroup(doc, group, data) {
241
309
  }
242
310
  }
243
311
  // Step 4: Evaluate triggers to determine selected options
312
+ const selectedIndices = evaluateTriggers(group, data);
313
+ // Step 5 & 6: Remove unselected options + sub-clauses, mark selected as checked
314
+ let madeChanges = false;
315
+ for (const item of classified) {
316
+ if (item.ownerOptionIndex === -1)
317
+ continue; // header — always keep
318
+ if (selectedIndices.has(item.ownerOptionIndex)) {
319
+ // Selected: mark the option paragraph as checked
320
+ if (item.isOption) {
321
+ setChecked(item.para, group.type);
322
+ madeChanges = true;
323
+ }
324
+ }
325
+ else {
326
+ // Unselected: remove paragraph
327
+ item.para.parentNode?.removeChild(item.para);
328
+ madeChanges = true;
329
+ }
330
+ }
331
+ // Ensure at least one <w:p> remains in the cell (OOXML requirement)
332
+ const remainingParas = cell.getElementsByTagNameNS(W_NS, 'p');
333
+ if (remainingParas.length === 0) {
334
+ const newP = doc.createElementNS(W_NS, 'w:p');
335
+ cell.appendChild(newP);
336
+ }
337
+ return madeChanges;
338
+ }
339
+ /**
340
+ * Evaluate triggers against fill data and return the set of selected option indices.
341
+ */
342
+ function evaluateTriggers(group, data) {
244
343
  const selectedIndices = new Set();
245
344
  if (group.type === 'radio') {
246
345
  // Radio: first trigger that fires wins; if none, use default
@@ -253,7 +352,6 @@ function processGroup(doc, group, data) {
253
352
  }
254
353
  }
255
354
  if (!found) {
256
- // Find the default option
257
355
  const defaultIdx = group.options.findIndex((o) => o.trigger === 'default');
258
356
  if (defaultIdx >= 0)
259
357
  selectedIndices.add(defaultIdx);
@@ -262,11 +360,8 @@ function processGroup(doc, group, data) {
262
360
  else {
263
361
  // Checkbox: select each option whose trigger fires
264
362
  for (let i = 0; i < group.options.length; i++) {
265
- if (group.options[i].trigger === 'default') {
266
- // Default for checkbox: selected if no other option fires
267
- // (evaluated after checking all others)
363
+ if (group.options[i].trigger === 'default')
268
364
  continue;
269
- }
270
365
  if (triggerFires(group.options[i].trigger, data)) {
271
366
  selectedIndices.add(i);
272
367
  }
@@ -280,30 +375,77 @@ function processGroup(doc, group, data) {
280
375
  }
281
376
  }
282
377
  }
283
- // Step 5 & 6: Remove unselected options + sub-clauses, mark selected as checked
378
+ return selectedIndices;
379
+ }
380
+ /**
381
+ * Process a standalone checkbox group where each option may be in a different
382
+ * table cell. If trigger fires → mark checked; if not → remove the option
383
+ * paragraph and any non-option sub-clause paragraphs that follow it in the
384
+ * same cell.
385
+ */
386
+ function processStandaloneGroup(doc, group, data) {
387
+ const allParagraphs = doc.getElementsByTagNameNS(W_NS, 'p');
388
+ const selectedIndices = evaluateTriggers(group, data);
284
389
  let madeChanges = false;
285
- for (const item of classified) {
286
- if (item.ownerOptionIndex === -1)
287
- continue; // header always keep
288
- if (selectedIndices.has(item.ownerOptionIndex)) {
289
- // Selected: mark the option paragraph as checked
290
- if (item.isOption) {
291
- setChecked(item.para, group.type);
292
- madeChanges = true;
390
+ for (let oi = 0; oi < group.options.length; oi++) {
391
+ const option = group.options[oi];
392
+ // Find the marker paragraph
393
+ let markerPara = null;
394
+ for (let pi = 0; pi < allParagraphs.length; pi++) {
395
+ const para = allParagraphs[pi];
396
+ const text = extractParagraphText(para);
397
+ if (text && hasOptionPrefix(text) && text.includes(option.marker)) {
398
+ markerPara = para;
399
+ break;
293
400
  }
294
401
  }
402
+ if (!markerPara)
403
+ continue;
404
+ if (selectedIndices.has(oi)) {
405
+ setChecked(markerPara, group.type);
406
+ madeChanges = true;
407
+ }
295
408
  else {
296
- // Unselected: remove paragraph
297
- item.para.parentNode?.removeChild(item.para);
409
+ // Remove: marker paragraph + consecutive non-option sub-clauses in same cell
410
+ const cell = findAncestor(markerPara, 'tc');
411
+ if (cell) {
412
+ const cellParas = cell.getElementsByTagNameNS(W_NS, 'p');
413
+ // Find marker index within cell
414
+ let markerIdx = -1;
415
+ for (let ci = 0; ci < cellParas.length; ci++) {
416
+ if (cellParas[ci] === markerPara) {
417
+ markerIdx = ci;
418
+ break;
419
+ }
420
+ }
421
+ if (markerIdx >= 0) {
422
+ // Collect sub-clause paragraphs after the marker (until next option or end)
423
+ const toRemove = [markerPara];
424
+ for (let ci = markerIdx + 1; ci < cellParas.length; ci++) {
425
+ const p = cellParas[ci];
426
+ const text = extractParagraphText(p);
427
+ if (text && hasOptionPrefix(text))
428
+ break; // next option — stop
429
+ toRemove.push(p);
430
+ }
431
+ for (const p of toRemove) {
432
+ p.parentNode?.removeChild(p);
433
+ }
434
+ // Ensure at least one <w:p> remains in cell
435
+ const remaining = cell.getElementsByTagNameNS(W_NS, 'p');
436
+ if (remaining.length === 0) {
437
+ const newP = doc.createElementNS(W_NS, 'w:p');
438
+ cell.appendChild(newP);
439
+ }
440
+ }
441
+ }
442
+ else {
443
+ // No cell parent — just remove the paragraph
444
+ markerPara.parentNode?.removeChild(markerPara);
445
+ }
298
446
  madeChanges = true;
299
447
  }
300
448
  }
301
- // Ensure at least one <w:p> remains in the cell (OOXML requirement)
302
- const remainingParas = cell.getElementsByTagNameNS(W_NS, 'p');
303
- if (remainingParas.length === 0) {
304
- const newP = doc.createElementNS(W_NS, 'w:p');
305
- cell.appendChild(newP);
306
- }
307
449
  return madeChanges;
308
450
  }
309
451
  /** Walk up the DOM to find an ancestor with the given local name. */
@@ -1 +1 @@
1
- {"version":3,"file":"selector.js","sourceRoot":"","sources":["../../src/core/selector.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"selector.js","sourceRoot":"","sources":["../../src/core/selector.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACtD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,MAAM,MAAM,SAAS,CAAC;AAC7B,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAE1D,OAAO,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAEtF,MAAM,IAAI,GAAG,8DAA8D,CAAC;AAE5E,8EAA8E;AAC9E,SAAS;AACT,8EAA8E;AAE9E,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC;IAC5B,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC;IACpB,CAAC,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC;IAC3E,CAAC,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;CAChC,CAAC,CAAC;AAGH,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5B,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;IAClB,OAAO,EAAE,aAAa;CACvB,CAAC,CAAC;AAEH,MAAM,WAAW,GAAG,CAAC;KAClB,MAAM,CAAC;IACN,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;IACd,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IACnC,UAAU,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAClC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;CACtC,CAAC;KACD,MAAM,CACL,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,IAAI,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,EACrD,EAAE,OAAO,EAAE,kDAAkD,EAAE,CAChE,CAAC;AAEJ,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7C,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;CACpC,CAAC,CAAC;AAGH,8EAA8E;AAC9E,SAAS;AACT,8EAA8E;AAE9E,MAAM,UAAU,oBAAoB,CAAC,IAAY;IAC/C,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACxC,OAAO,sBAAsB,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;AACvD,CAAC;AAED,8EAA8E;AAC9E,UAAU;AACV,8EAA8E;AAE9E,kEAAkE;AAClE,SAAS,oBAAoB,CAAC,IAAa;IACzC,IAAI,CAAC,IAAI,CAAC,sBAAsB;QAAE,OAAO,EAAE,CAAC;IAC5C,MAAM,SAAS,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IACzD,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC1C,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC;IAC7C,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;AAC/B,CAAC;AAED,+EAA+E;AAC/E,SAAS,eAAe,CAAC,IAAa;IACpC,MAAM,KAAK,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IACrD,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7C,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACzB,CAAC;AAED,0EAA0E;AAC1E,MAAM,SAAS,GAAG,oDAAoD,CAAC;AAEvE,SAAS,eAAe,CAAC,IAAY;IACnC,OAAO,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC9B,CAAC;AAED,2DAA2D;AAC3D,SAAS,UAAU,CAAC,IAAa,EAAE,IAA0B;IAC3D,MAAM,SAAS,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IACzD,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IAEnC,oDAAoD;IACpD,MAAM,QAAQ,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAC;IAC5C,IAAI,CAAC,QAAQ;QAAE,OAAO;IAEtB,mCAAmC;IACnC,IAAI,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;QACrC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC1C,MAAM,OAAO,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,WAAW,IAAI,EAAE,CAAC;YAC/C,IAAI,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;gBACnC,SAAS,CAAC,CAAC,CAAC,CAAC,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAC;gBACvE,OAAO;YACT,CAAC;QACH,CAAC;QACD,OAAO;IACT,CAAC;IAED,2EAA2E;IAC3E,qDAAqD;IACrD,IAAI,WAAW,GAAG,GAAG,CAAC;IACtB,IAAI,YAAY,GAAG,GAAG,CAAC;IACvB,IAAI,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;QACrC,WAAW,GAAG,GAAG,CAAC;QAClB,YAAY,GAAG,GAAG,CAAC;IACrB,CAAC;SAAM,IAAI,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC5C,WAAW,GAAG,GAAG,CAAC;QAClB,YAAY,GAAG,GAAG,CAAC;IACrB,CAAC;SAAM,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;QAC5B,WAAW,GAAG,GAAG,CAAC;QAClB,YAAY,GAAG,GAAG,CAAC;IACrB,CAAC;IAED,MAAM,aAAa,GAAG,WAAW,KAAK,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;IAE9D,6DAA6D;IAC7D,IAAI,SAAS,GAAG,KAAK,CAAC;IACtB,IAAI,UAAU,GAAG,KAAK,CAAC;IACvB,MAAM,QAAQ,GAAc,EAAE,CAAC;IAE/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC1C,MAAM,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;QACvB,MAAM,OAAO,GAAG,CAAC,CAAC,WAAW,IAAI,EAAE,CAAC;QAEpC,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;YAC7C,IAAI,OAAO,IAAI,CAAC,EAAE,CAAC;gBACjB,SAAS,GAAG,IAAI,CAAC;gBAEjB,8CAA8C;gBAC9C,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,YAAY,EAAE,OAAO,GAAG,CAAC,CAAC,CAAC;gBAC5D,IAAI,QAAQ,IAAI,CAAC,EAAE,CAAC;oBAClB,qDAAqD;oBACrD,MAAM,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;oBAC7C,MAAM,KAAK,GAAG,OAAO,CAAC,SAAS,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;oBAC9C,CAAC,CAAC,WAAW,GAAG,MAAM,GAAG,aAAa,GAAG,KAAK,CAAC;oBAC/C,UAAU,GAAG,IAAI,CAAC;oBAClB,MAAM;gBACR,CAAC;qBAAM,CAAC;oBACN,uDAAuD;oBACvD,CAAC,CAAC,WAAW,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,OAAO,CAAC,GAAG,aAAa,CAAC;gBAChE,CAAC;YACH,CAAC;QACH,CAAC;aAAM,IAAI,CAAC,UAAU,EAAE,CAAC;YACvB,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;YAC/C,IAAI,QAAQ,IAAI,CAAC,EAAE,CAAC;gBAClB,uDAAuD;gBACvD,CAAC,CAAC,WAAW,GAAG,OAAO,CAAC,SAAS,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;gBAChD,UAAU,GAAG,IAAI,CAAC;gBAClB,MAAM;YACR,CAAC;iBAAM,CAAC;gBACN,oDAAoD;gBACpD,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACnB,CAAC;QACH,CAAC;IACH,CAAC;IAED,sEAAsE;IACtE,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;QACzB,CAAC,CAAC,WAAW,GAAG,EAAE,CAAC;IACrB,CAAC;AACH,CAAC;AAED,4CAA4C;AAC5C,SAAS,YAAY,CAAC,OAAgB,EAAE,IAA6B;IACnE,IAAI,OAAO,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC,CAAC,4CAA4C;IAErF,IAAI,QAAQ,IAAI,OAAO,EAAE,CAAC;QACxB,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAChC,OAAO,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,EAAE,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACnF,CAAC;IAED,gCAAgC;IAChC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAChC,OAAO,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,EAAE,IAAI,GAAG,KAAK,KAAK,IAAI,GAAG,KAAK,OAAO,CAAC;AAC7E,CAAC;AAED,8EAA8E;AAC9E,iBAAiB;AACjB,8EAA8E;AAE9E;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,SAAiB,EACjB,UAAkB,EAClB,MAAwB,EACxB,IAA6B;IAE7B,MAAM,QAAQ,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC;IACzC,MAAM,GAAG,GAAG,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC;IACjC,MAAM,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;IAC/B,MAAM,UAAU,GAAG,IAAI,aAAa,EAAE,CAAC;IACvC,MAAM,KAAK,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC;IACtC,MAAM,SAAS,GAAG,uBAAuB,CAAC,KAAK,CAAC,CAAC;IAEjD,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,MAAM,KAAK,GAAG,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACrC,IAAI,CAAC,KAAK;YAAE,SAAS;QAErB,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAC9C,MAAM,GAAG,GAAG,MAAM,CAAC,eAAe,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;QAEpD,IAAI,YAAY,GAAG,KAAK,CAAC;QACzB,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YAClC,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;YAC9C,IAAI,MAAM;gBAAE,YAAY,GAAG,IAAI,CAAC;QAClC,CAAC;QAED,IAAI,YAAY,EAAE,CAAC;YACjB,MAAM,MAAM,GAAG,UAAU,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC;YACjD,GAAG,CAAC,UAAU,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;QACzD,CAAC;IACH,CAAC;IAED,gEAAgE;IAChE,MAAM,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;IAC5B,KAAK,MAAM,KAAK,IAAI,GAAG,CAAC,UAAU,EAAE,EAAE,CAAC;QACrC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IACnD,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;IACjC,aAAa,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;AACpC,CAAC;AAOD;;;GAGG;AACH,SAAS,YAAY,CACnB,GAAa,EACb,KAAkC,EAClC,IAA6B;IAE7B,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;QACrB,OAAO,sBAAsB,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;IAClD,CAAC;IAED,iEAAiE;IACjE,MAAM,aAAa,GAAG,GAAG,CAAC,sBAAsB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAC5D,MAAM,mBAAmB,GAAoB,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;IAEzE,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC;QACjD,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACjC,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,aAAa,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC;YACjD,MAAM,IAAI,GAAG,aAAa,CAAC,EAAE,CAAC,CAAC;YAC/B,MAAM,IAAI,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAC;YACxC,IAAI,IAAI,IAAI,eAAe,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;gBAClE,mBAAmB,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC;YAC1D,CAAC;QACH,CAAC;IACH,CAAC;IAED,oEAAoE;IACpE,wCAAwC;IACxC,MAAM,cAAc,GAAG,IAAI,GAAG,EAA0B,CAAC;IAEzD,KAAK,MAAM,UAAU,IAAI,mBAAmB,EAAE,CAAC;QAC7C,KAAK,MAAM,KAAK,IAAI,UAAU,EAAE,CAAC;YAC/B,MAAM,IAAI,GAAG,YAAY,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAC5C,IAAI,CAAC,IAAI;gBAAE,SAAS;YACpB,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC;gBAAE,cAAc,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YAC5D,cAAc,CAAC,GAAG,CAAC,IAAI,CAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACxC,CAAC;IACH,CAAC;IAED,mEAAmE;IACnE,MAAM,eAAe,GAAgD,EAAE,CAAC;IAExE,KAAK,MAAM,CAAC,aAAa,EAAE,OAAO,CAAC,IAAI,cAAc,EAAE,CAAC;QACtD,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;QACtE,IAAI,kBAAkB,CAAC,IAAI,IAAI,CAAC,IAAI,kBAAkB,CAAC,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;YACpF,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;YAC/B,MAAM,OAAO,GAAkB,EAAE,CAAC;YAClC,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;gBAC5B,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC;oBACjC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;oBAC5B,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACtB,CAAC;YACH,CAAC;YACD,eAAe,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QAClE,CAAC;IACH,CAAC;IAED,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAE/C,IAAI,IAAa,CAAC;IAClB,IAAI,aAA4B,CAAC;IAEjC,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACjC,IAAI,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAC/B,aAAa,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;IAC7C,CAAC;SAAM,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;QAC7B,MAAM,QAAQ,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE;YACtD,MAAM,QAAQ,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC;YACpC,OAAO,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAY,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;QACH,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YACxB,aAAa,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;QACtC,CAAC;aAAM,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACjC,MAAM,IAAI,KAAK,CACb,qBAAqB,KAAK,CAAC,EAAE,mBAAmB,KAAK,CAAC,WAAW,0BAA0B,eAAe,CAAC,MAAM,mBAAmB,CACrI,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,KAAK,CACb,qBAAqB,KAAK,CAAC,EAAE,mBAAmB,KAAK,CAAC,WAAW,aAAa,QAAQ,CAAC,MAAM,uDAAuD,CACrJ,CAAC;QACJ,CAAC;IACH,CAAC;SAAM,CAAC;QACN,MAAM,QAAQ,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE;YACtD,MAAM,IAAI,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC;YAChC,OAAO,UAAU,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC;QAC3D,CAAC,CAAC,CAAC;QACH,MAAM,IAAI,KAAK,CACb,qBAAqB,KAAK,CAAC,EAAE,MAAM,eAAe,CAAC,MAAM,2CAA2C;YACpG,oDAAoD,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAC1E,CAAC;IACJ,CAAC;IAED,2DAA2D;IAC3D,MAAM,SAAS,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IASzD,MAAM,UAAU,GAAqB,EAAE,CAAC;IACxC,IAAI,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,cAAc;IAErC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC1C,MAAM,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;QACvB,MAAM,KAAK,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC;QACtD,IAAI,KAAK,EAAE,CAAC;YACV,YAAY,GAAG,KAAK,CAAC,WAAW,CAAC;YACjC,UAAU,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,gBAAgB,EAAE,YAAY,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/E,CAAC;aAAM,CAAC;YACN,UAAU,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,gBAAgB,EAAE,YAAY,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;QAChF,CAAC;IACH,CAAC;IAED,0DAA0D;IAC1D,MAAM,eAAe,GAAG,gBAAgB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAEtD,gFAAgF;IAChF,IAAI,WAAW,GAAG,KAAK,CAAC;IAExB,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;QAC9B,IAAI,IAAI,CAAC,gBAAgB,KAAK,CAAC,CAAC;YAAE,SAAS,CAAC,uBAAuB;QAEnE,IAAI,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC;YAC/C,iDAAiD;YACjD,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAClB,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;gBAClC,WAAW,GAAG,IAAI,CAAC;YACrB,CAAC;QACH,CAAC;aAAM,CAAC;YACN,+BAA+B;YAC/B,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC7C,WAAW,GAAG,IAAI,CAAC;QACrB,CAAC;IACH,CAAC;IAED,oEAAoE;IACpE,MAAM,cAAc,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAC9D,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAChC,MAAM,IAAI,GAAG,GAAG,CAAC,eAAe,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAC9C,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IACzB,CAAC;IAED,OAAO,WAAW,CAAC;AACrB,CAAC;AAED;;GAEG;AACH,SAAS,gBAAgB,CACvB,KAAkC,EAClC,IAA6B;IAE7B,MAAM,eAAe,GAAG,IAAI,GAAG,EAAU,CAAC;IAE1C,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QAC3B,6DAA6D;QAC7D,IAAI,KAAK,GAAG,KAAK,CAAC;QAClB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC9C,IAAI,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC;gBACjD,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBACvB,KAAK,GAAG,IAAI,CAAC;gBACb,MAAM;YACR,CAAC;QACH,CAAC;QACD,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC;YAC3E,IAAI,UAAU,IAAI,CAAC;gBAAE,eAAe,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACvD,CAAC;IACH,CAAC;SAAM,CAAC;QACN,mDAAmD;QACnD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC9C,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,KAAK,SAAS;gBAAE,SAAS;YACrD,IAAI,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC;gBACjD,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACzB,CAAC;QACH,CAAC;QACD,+BAA+B;QAC/B,IAAI,eAAe,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;YAC/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC9C,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;oBAC3C,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBACzB,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,eAAe,CAAC;AACzB,CAAC;AAED;;;;;GAKG;AACH,SAAS,sBAAsB,CAC7B,GAAa,EACb,KAAkC,EAClC,IAA6B;IAE7B,MAAM,aAAa,GAAG,GAAG,CAAC,sBAAsB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAC5D,MAAM,eAAe,GAAG,gBAAgB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IACtD,IAAI,WAAW,GAAG,KAAK,CAAC;IAExB,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC;QACjD,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAEjC,4BAA4B;QAC5B,IAAI,UAAU,GAAmB,IAAI,CAAC;QACtC,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,aAAa,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC;YACjD,MAAM,IAAI,GAAG,aAAa,CAAC,EAAE,CAAC,CAAC;YAC/B,MAAM,IAAI,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAC;YACxC,IAAI,IAAI,IAAI,eAAe,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;gBAClE,UAAU,GAAG,IAAI,CAAC;gBAClB,MAAM;YACR,CAAC;QACH,CAAC;QACD,IAAI,CAAC,UAAU;YAAE,SAAS;QAE1B,IAAI,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;YAC5B,UAAU,CAAC,UAAU,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;YACnC,WAAW,GAAG,IAAI,CAAC;QACrB,CAAC;aAAM,CAAC;YACN,6EAA6E;YAC7E,MAAM,IAAI,GAAG,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;YAC5C,IAAI,IAAI,EAAE,CAAC;gBACT,MAAM,SAAS,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;gBACzD,gCAAgC;gBAChC,IAAI,SAAS,GAAG,CAAC,CAAC,CAAC;gBACnB,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,SAAS,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC;oBAC7C,IAAI,SAAS,CAAC,EAAE,CAAC,KAAK,UAAU,EAAE,CAAC;wBAAC,SAAS,GAAG,EAAE,CAAC;wBAAC,MAAM;oBAAC,CAAC;gBAC9D,CAAC;gBACD,IAAI,SAAS,IAAI,CAAC,EAAE,CAAC;oBACnB,4EAA4E;oBAC5E,MAAM,QAAQ,GAAc,CAAC,UAAU,CAAC,CAAC;oBACzC,KAAK,IAAI,EAAE,GAAG,SAAS,GAAG,CAAC,EAAE,EAAE,GAAG,SAAS,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC;wBACzD,MAAM,CAAC,GAAG,SAAS,CAAC,EAAE,CAAC,CAAC;wBACxB,MAAM,IAAI,GAAG,oBAAoB,CAAC,CAAC,CAAC,CAAC;wBACrC,IAAI,IAAI,IAAI,eAAe,CAAC,IAAI,CAAC;4BAAE,MAAM,CAAC,qBAAqB;wBAC/D,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;oBACnB,CAAC;oBACD,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;wBACzB,CAAC,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;oBAC/B,CAAC;oBACD,4CAA4C;oBAC5C,MAAM,SAAS,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;oBACzD,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;wBAC3B,MAAM,IAAI,GAAG,GAAG,CAAC,eAAe,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;wBAC9C,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;oBACzB,CAAC;gBACH,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,6CAA6C;gBAC7C,UAAU,CAAC,UAAU,EAAE,WAAW,CAAC,UAAU,CAAC,CAAC;YACjD,CAAC;YACD,WAAW,GAAG,IAAI,CAAC;QACrB,CAAC;IACH,CAAC;IAED,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,qEAAqE;AACrE,SAAS,YAAY,CAAC,IAAa,EAAE,SAAiB;IACpD,IAAI,OAAO,GAAgB,IAAI,CAAC,UAAU,CAAC;IAC3C,OAAO,OAAO,EAAE,CAAC;QACf,IAAI,OAAO,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;YAC3B,MAAM,OAAO,GAAG,OAAkB,CAAC;YACnC,IAAI,OAAO,CAAC,SAAS,KAAK,SAAS,IAAI,OAAO,CAAC,YAAY,KAAK,IAAI,EAAE,CAAC;gBACrE,OAAO,OAAO,CAAC;YACjB,CAAC;QACH,CAAC;QACD,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC;IAC/B,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Shared template-listing module.
3
+ *
4
+ * Canonical helpers for listing templates with metadata, used by:
5
+ * - CLI `list --json` command
6
+ * - Vercel API `_shared.ts`
7
+ * - MCP `tools.ts` (via dynamic import or npm dependency)
8
+ */
9
+ export interface TemplateListField {
10
+ name: string;
11
+ type: string;
12
+ required: boolean;
13
+ section: string | null;
14
+ description: string;
15
+ default: string | null;
16
+ }
17
+ export interface TemplateListItem {
18
+ name: string;
19
+ category: string;
20
+ description: string;
21
+ license?: string;
22
+ source_url: string;
23
+ source: string | null;
24
+ attribution_text?: string;
25
+ fields: TemplateListField[];
26
+ }
27
+ export declare function categoryFromId(id: string): string;
28
+ /** Extract a human-friendly source name from a URL */
29
+ export declare function sourceName(url: string): string | null;
30
+ export declare function mapFields(fields: {
31
+ name: string;
32
+ type: string;
33
+ section?: string;
34
+ description: string;
35
+ default?: string;
36
+ }[], requiredFields: string[]): TemplateListField[];
37
+ export declare function listTemplateItems(opts?: {
38
+ templatesOnly?: boolean;
39
+ }): TemplateListItem[];
40
+ //# sourceMappingURL=template-listing.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"template-listing.d.ts","sourceRoot":"","sources":["../../src/core/template-listing.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AASH,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CACxB;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,MAAM,EAAE,iBAAiB,EAAE,CAAC;CAC7B;AAMD,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAKjD;AAED,sDAAsD;AACtD,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CA4BrD;AAED,wBAAgB,SAAS,CACvB,MAAM,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,EAAE,EACjG,cAAc,EAAE,MAAM,EAAE,GACvB,iBAAiB,EAAE,CAUrB;AAMD,wBAAgB,iBAAiB,CAAC,IAAI,CAAC,EAAE;IAAE,aAAa,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,gBAAgB,EAAE,CA6BxF"}