open-agreements 0.7.4 → 0.7.6

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 (391) hide show
  1. package/README.de.md +300 -255
  2. package/README.es.md +301 -254
  3. package/README.md +391 -90
  4. package/README.pt-br.md +301 -254
  5. package/README.template.md +333 -0
  6. package/README.zh.md +300 -253
  7. package/SECURITY.md +34 -0
  8. package/content/recipes/nvca-stock-purchase-agreement/README.md +39 -0
  9. package/content/recipes/nvca-voting-agreement/README.md +43 -0
  10. package/content/templates/bonterms-mutual-nda/README.md +2 -2
  11. package/content/templates/bonterms-mutual-nda/metadata.yaml +5 -11
  12. package/content/templates/bonterms-professional-services-agreement/README.md +2 -2
  13. package/content/templates/bonterms-professional-services-agreement/metadata.yaml +2 -2
  14. package/content/templates/closing-checklist/template.docx +0 -0
  15. package/content/templates/closing-checklist/template.md +30 -0
  16. package/content/templates/common-paper-ai-addendum/template.docx +0 -0
  17. package/content/templates/common-paper-ai-addendum-in-app/template.docx +0 -0
  18. package/content/templates/common-paper-csa-with-ai/template.docx +0 -0
  19. package/content/templates/common-paper-independent-contractor-agreement/template.docx +0 -0
  20. package/content/templates/common-paper-mutual-nda/README.md +28 -0
  21. package/content/templates/common-paper-one-way-nda/metadata.yaml +1 -1
  22. package/content/templates/common-paper-term-sheet/template.docx +0 -0
  23. package/content/templates/openagreements-board-consent-safe/.template.generated.json +74 -0
  24. package/content/templates/openagreements-board-consent-safe/README.md +61 -0
  25. package/content/templates/openagreements-board-consent-safe/metadata.yaml +53 -0
  26. package/content/templates/openagreements-board-consent-safe/reference-source.docx +0 -0
  27. package/content/templates/openagreements-board-consent-safe/template.docx +0 -0
  28. package/content/templates/openagreements-board-consent-safe/template.md +66 -0
  29. package/content/templates/openagreements-due-diligence-request-list/README.md +68 -0
  30. package/content/templates/openagreements-due-diligence-request-list/metadata.yaml +300 -0
  31. package/content/templates/openagreements-due-diligence-request-list/template.docx +0 -0
  32. package/content/templates/openagreements-due-diligence-request-list/template.md +318 -0
  33. package/content/templates/openagreements-employee-ip-inventions-assignment/.template.generated.json +230 -0
  34. package/content/templates/openagreements-employee-ip-inventions-assignment/metadata.yaml +1 -1
  35. package/content/templates/openagreements-employee-ip-inventions-assignment/template.docx +0 -0
  36. package/content/templates/openagreements-employee-ip-inventions-assignment/template.md +96 -35
  37. package/content/templates/openagreements-employment-confidentiality-acknowledgement/README.md +1 -1
  38. package/content/templates/openagreements-employment-confidentiality-acknowledgement/metadata.yaml +2 -2
  39. package/content/templates/openagreements-employment-confidentiality-acknowledgement/template.docx +0 -0
  40. package/content/templates/openagreements-employment-confidentiality-acknowledgement/template.json +75 -0
  41. package/content/templates/openagreements-employment-confidentiality-acknowledgement/template.md +8 -4
  42. package/content/templates/openagreements-employment-offer-letter/.template.generated.json +224 -0
  43. package/content/templates/openagreements-employment-offer-letter/README.md +65 -1
  44. package/content/templates/openagreements-employment-offer-letter/metadata.yaml +1 -1
  45. package/content/templates/openagreements-employment-offer-letter/template.docx +0 -0
  46. package/content/templates/openagreements-employment-offer-letter/template.md +70 -30
  47. package/content/templates/openagreements-restrictive-covenant-florida/.template.generated.json +456 -0
  48. package/content/templates/openagreements-restrictive-covenant-florida/README.md +141 -0
  49. package/content/templates/openagreements-restrictive-covenant-florida/metadata.yaml +419 -0
  50. package/content/templates/openagreements-restrictive-covenant-florida/template.docx +0 -0
  51. package/content/templates/openagreements-restrictive-covenant-florida/template.md +233 -0
  52. package/content/templates/openagreements-restrictive-covenant-wyoming/.template.generated.json +399 -0
  53. package/content/templates/openagreements-restrictive-covenant-wyoming/metadata.yaml +69 -12
  54. package/content/templates/openagreements-restrictive-covenant-wyoming/template.docx +0 -0
  55. package/content/templates/openagreements-restrictive-covenant-wyoming/template.md +110 -59
  56. package/content/templates/openagreements-stockholder-consent-safe/.template.generated.json +74 -0
  57. package/content/templates/openagreements-stockholder-consent-safe/README.md +62 -0
  58. package/content/templates/openagreements-stockholder-consent-safe/metadata.yaml +53 -0
  59. package/content/templates/openagreements-stockholder-consent-safe/reference-source.docx +0 -0
  60. package/content/templates/openagreements-stockholder-consent-safe/template.docx +0 -0
  61. package/content/templates/openagreements-stockholder-consent-safe/template.md +62 -0
  62. package/content/templates/working-group-list/template.docx +0 -0
  63. package/content/templates/working-group-list/template.md +18 -0
  64. package/dist/cli/index.js.map +1 -1
  65. package/dist/commands/fill.d.ts +1 -1
  66. package/dist/commands/fill.d.ts.map +1 -1
  67. package/dist/commands/fill.js +4 -1
  68. package/dist/commands/fill.js.map +1 -1
  69. package/dist/commands/list.js +11 -1
  70. package/dist/commands/list.js.map +1 -1
  71. package/dist/commands/recipe.js.map +1 -1
  72. package/dist/core/checklist/docx-import.d.ts.map +1 -1
  73. package/dist/core/employment/jurisdiction-rules.js +2 -2
  74. package/dist/core/employment/jurisdiction-rules.js.map +1 -1
  75. package/dist/core/employment/memo.d.ts +1 -1
  76. package/dist/core/employment/memo.d.ts.map +1 -1
  77. package/dist/core/employment/memo.js +14 -6
  78. package/dist/core/employment/memo.js.map +1 -1
  79. package/dist/core/engine.d.ts.map +1 -1
  80. package/dist/core/engine.js +28 -0
  81. package/dist/core/engine.js.map +1 -1
  82. package/dist/core/fill-pipeline.d.ts +30 -5
  83. package/dist/core/fill-pipeline.d.ts.map +1 -1
  84. package/dist/core/fill-pipeline.js +173 -9
  85. package/dist/core/fill-pipeline.js.map +1 -1
  86. package/dist/core/humanize-docx.d.ts +21 -0
  87. package/dist/core/humanize-docx.d.ts.map +1 -0
  88. package/dist/core/humanize-docx.js +492 -0
  89. package/dist/core/humanize-docx.js.map +1 -0
  90. package/dist/core/metadata.d.ts +119 -65
  91. package/dist/core/metadata.d.ts.map +1 -1
  92. package/dist/core/metadata.js +269 -13
  93. package/dist/core/metadata.js.map +1 -1
  94. package/dist/core/recipe/bracket-normalizer.d.ts +1 -1
  95. package/dist/core/recipe/bracket-normalizer.d.ts.map +1 -1
  96. package/dist/core/recipe/bracket-normalizer.js +3 -0
  97. package/dist/core/recipe/bracket-normalizer.js.map +1 -1
  98. package/dist/core/recipe/computed.d.ts +1 -1
  99. package/dist/core/recipe/computed.d.ts.map +1 -1
  100. package/dist/core/recipe/index.d.ts.map +1 -1
  101. package/dist/core/recipe/index.js +22 -4
  102. package/dist/core/recipe/index.js.map +1 -1
  103. package/dist/core/recipe/patcher.js +0 -24
  104. package/dist/core/recipe/patcher.js.map +1 -1
  105. package/dist/core/recipe/types.d.ts +1 -1
  106. package/dist/core/recipe/types.d.ts.map +1 -1
  107. package/dist/core/recipe/verifier.js.map +1 -1
  108. package/dist/core/selector.js +0 -1
  109. package/dist/core/selector.js.map +1 -1
  110. package/dist/core/template-listing.d.ts +6 -8
  111. package/dist/core/template-listing.d.ts.map +1 -1
  112. package/dist/core/template-listing.js +24 -0
  113. package/dist/core/template-listing.js.map +1 -1
  114. package/dist/core/template-search.d.ts +36 -0
  115. package/dist/core/template-search.d.ts.map +1 -0
  116. package/dist/core/template-search.js +84 -0
  117. package/dist/core/template-search.js.map +1 -0
  118. package/dist/core/unified-pipeline.d.ts +2 -0
  119. package/dist/core/unified-pipeline.d.ts.map +1 -1
  120. package/dist/core/unified-pipeline.js +19 -1
  121. package/dist/core/unified-pipeline.js.map +1 -1
  122. package/dist/core/validation/template.d.ts +32 -0
  123. package/dist/core/validation/template.d.ts.map +1 -1
  124. package/dist/core/validation/template.js +163 -3
  125. package/dist/core/validation/template.js.map +1 -1
  126. package/dist/index.d.ts +1 -0
  127. package/dist/index.d.ts.map +1 -1
  128. package/dist/index.js +2 -0
  129. package/dist/index.js.map +1 -1
  130. package/gemini-extension.json +1 -1
  131. package/node_modules/@usejunior/docx-core/dist/.tsbuildinfo +1 -1
  132. package/node_modules/@usejunior/docx-core/dist/atomizer.d.ts.map +1 -1
  133. package/node_modules/@usejunior/docx-core/dist/atomizer.js +12 -4
  134. package/node_modules/@usejunior/docx-core/dist/atomizer.js.map +1 -1
  135. package/node_modules/@usejunior/docx-core/dist/baselines/atomizer/atomLcs.d.ts +0 -14
  136. package/node_modules/@usejunior/docx-core/dist/baselines/atomizer/atomLcs.d.ts.map +1 -1
  137. package/node_modules/@usejunior/docx-core/dist/baselines/atomizer/atomLcs.js +31 -2
  138. package/node_modules/@usejunior/docx-core/dist/baselines/atomizer/atomLcs.js.map +1 -1
  139. package/node_modules/@usejunior/docx-core/dist/baselines/atomizer/documentReconstructor.d.ts +11 -0
  140. package/node_modules/@usejunior/docx-core/dist/baselines/atomizer/documentReconstructor.d.ts.map +1 -1
  141. package/node_modules/@usejunior/docx-core/dist/baselines/atomizer/documentReconstructor.js +180 -6
  142. package/node_modules/@usejunior/docx-core/dist/baselines/atomizer/documentReconstructor.js.map +1 -1
  143. package/node_modules/@usejunior/docx-core/dist/baselines/atomizer/hierarchicalLcs.d.ts +14 -4
  144. package/node_modules/@usejunior/docx-core/dist/baselines/atomizer/hierarchicalLcs.d.ts.map +1 -1
  145. package/node_modules/@usejunior/docx-core/dist/baselines/atomizer/hierarchicalLcs.js +344 -60
  146. package/node_modules/@usejunior/docx-core/dist/baselines/atomizer/hierarchicalLcs.js.map +1 -1
  147. package/node_modules/@usejunior/docx-core/dist/baselines/atomizer/inPlaceModifier.d.ts +35 -1
  148. package/node_modules/@usejunior/docx-core/dist/baselines/atomizer/inPlaceModifier.d.ts.map +1 -1
  149. package/node_modules/@usejunior/docx-core/dist/baselines/atomizer/inPlaceModifier.js +186 -12
  150. package/node_modules/@usejunior/docx-core/dist/baselines/atomizer/inPlaceModifier.js.map +1 -1
  151. package/node_modules/@usejunior/docx-core/dist/baselines/atomizer/pipeline.d.ts.map +1 -1
  152. package/node_modules/@usejunior/docx-core/dist/baselines/atomizer/pipeline.js +31 -13
  153. package/node_modules/@usejunior/docx-core/dist/baselines/atomizer/pipeline.js.map +1 -1
  154. package/node_modules/@usejunior/docx-core/dist/baselines/atomizer/xmlToWmlElement.d.ts.map +1 -1
  155. package/node_modules/@usejunior/docx-core/dist/baselines/atomizer/xmlToWmlElement.js +3 -2
  156. package/node_modules/@usejunior/docx-core/dist/baselines/atomizer/xmlToWmlElement.js.map +1 -1
  157. package/node_modules/@usejunior/docx-core/dist/format-detection.d.ts.map +1 -1
  158. package/node_modules/@usejunior/docx-core/dist/format-detection.js +2 -1
  159. package/node_modules/@usejunior/docx-core/dist/format-detection.js.map +1 -1
  160. package/node_modules/@usejunior/docx-core/dist/move-detection.d.ts.map +1 -1
  161. package/node_modules/@usejunior/docx-core/dist/move-detection.js +3 -4
  162. package/node_modules/@usejunior/docx-core/dist/move-detection.js.map +1 -1
  163. package/node_modules/@usejunior/docx-core/dist/primitives/comments.d.ts +2 -2
  164. package/node_modules/@usejunior/docx-core/dist/primitives/comments.d.ts.map +1 -1
  165. package/node_modules/@usejunior/docx-core/dist/primitives/comments.js +7 -2
  166. package/node_modules/@usejunior/docx-core/dist/primitives/comments.js.map +1 -1
  167. package/node_modules/@usejunior/docx-core/dist/primitives/document.d.ts +2 -2
  168. package/node_modules/@usejunior/docx-core/dist/primitives/document.d.ts.map +1 -1
  169. package/node_modules/@usejunior/docx-core/dist/primitives/dom-helpers.d.ts +1 -5
  170. package/node_modules/@usejunior/docx-core/dist/primitives/dom-helpers.d.ts.map +1 -1
  171. package/node_modules/@usejunior/docx-core/dist/primitives/dom-helpers.js +12 -25
  172. package/node_modules/@usejunior/docx-core/dist/primitives/dom-helpers.js.map +1 -1
  173. package/node_modules/@usejunior/docx-core/dist/primitives/layout.d.ts.map +1 -1
  174. package/node_modules/@usejunior/docx-core/dist/primitives/layout.js +4 -6
  175. package/node_modules/@usejunior/docx-core/dist/primitives/layout.js.map +1 -1
  176. package/node_modules/@usejunior/docx-core/dist/primitives/xml.d.ts.map +1 -1
  177. package/node_modules/@usejunior/docx-core/dist/primitives/xml.js +2 -0
  178. package/node_modules/@usejunior/docx-core/dist/primitives/xml.js.map +1 -1
  179. package/node_modules/@usejunior/docx-core/package.json +3 -3
  180. package/package.json +29 -15
  181. package/skills/canonical-markdown-authoring/CONNECTORS.md +67 -0
  182. package/skills/canonical-markdown-authoring/SKILL.md +565 -0
  183. package/skills/client-email/SKILL.md +2 -0
  184. package/skills/cloud-service-agreement/CONNECTORS.md +2 -2
  185. package/skills/cloud-service-agreement/SKILL.md +39 -2
  186. package/skills/cloud-service-agreement/template-filling-execution.md +92 -0
  187. package/skills/data-privacy-agreement/CONNECTORS.md +2 -2
  188. package/skills/data-privacy-agreement/SKILL.md +2 -0
  189. package/skills/delaware-franchise-tax/SKILL.md +2 -0
  190. package/skills/edit-docx-agreement/SKILL.md +2 -0
  191. package/skills/employment-contract/CONNECTORS.md +2 -2
  192. package/skills/employment-contract/SKILL.md +2 -0
  193. package/skills/iso-27001-evidence-collection/SKILL.md +2 -0
  194. package/skills/iso-27001-internal-audit/SKILL.md +2 -0
  195. package/skills/nda/CONNECTORS.md +2 -2
  196. package/skills/nda/SKILL.md +46 -2
  197. package/skills/nda/template-filling-execution.md +98 -0
  198. package/skills/non-compete-contract-explainer/SKILL.md +107 -0
  199. package/skills/non-compete-contract-explainer/content/wyoming.md +286 -0
  200. package/skills/non-compete-contract-explainer/manifest.json +18 -0
  201. package/skills/open-agreements/CONNECTORS.md +2 -2
  202. package/skills/open-agreements/SKILL.md +165 -67
  203. package/skills/open-agreements/template-filling-execution.md +92 -0
  204. package/skills/recipe-quality-audit/SKILL.md +2 -0
  205. package/skills/safe/CONNECTORS.md +2 -2
  206. package/skills/safe/SKILL.md +39 -2
  207. package/skills/safe/template-filling-execution.md +92 -0
  208. package/skills/services-agreement/CONNECTORS.md +2 -2
  209. package/skills/services-agreement/SKILL.md +40 -1
  210. package/skills/services-agreement/template-filling-execution.md +81 -0
  211. package/skills/shared/template-filling-execution.md +2 -2
  212. package/skills/soc2-readiness/SKILL.md +2 -0
  213. package/skills/unit-test-philosophy/SKILL.md +3 -0
  214. package/skills/venture-financing/CONNECTORS.md +2 -2
  215. package/skills/venture-financing/SKILL.md +2 -0
  216. package/content/templates/openagreements-restrictive-covenant-wyoming/practice-note.md +0 -103
  217. package/node_modules/@usejunior/docx-core/node_modules/@xmldom/xmldom/CHANGELOG.md +0 -468
  218. package/node_modules/@usejunior/docx-core/node_modules/@xmldom/xmldom/LICENSE +0 -8
  219. package/node_modules/@usejunior/docx-core/node_modules/@xmldom/xmldom/SECURITY.md +0 -50
  220. package/node_modules/@usejunior/docx-core/node_modules/@xmldom/xmldom/index.d.ts +0 -43
  221. package/node_modules/@usejunior/docx-core/node_modules/@xmldom/xmldom/lib/.eslintrc.yml +0 -2
  222. package/node_modules/@usejunior/docx-core/node_modules/@xmldom/xmldom/lib/conventions.js +0 -203
  223. package/node_modules/@usejunior/docx-core/node_modules/@xmldom/xmldom/lib/dom-parser.js +0 -322
  224. package/node_modules/@usejunior/docx-core/node_modules/@xmldom/xmldom/lib/dom.js +0 -1879
  225. package/node_modules/@usejunior/docx-core/node_modules/@xmldom/xmldom/lib/entities.js +0 -2166
  226. package/node_modules/@usejunior/docx-core/node_modules/@xmldom/xmldom/lib/index.js +0 -4
  227. package/node_modules/@usejunior/docx-core/node_modules/@xmldom/xmldom/lib/sax.js +0 -662
  228. package/node_modules/@usejunior/docx-core/node_modules/@xmldom/xmldom/package.json +0 -71
  229. package/node_modules/@usejunior/docx-core/node_modules/@xmldom/xmldom/readme.md +0 -356
  230. package/node_modules/core-util-is/LICENSE +0 -19
  231. package/node_modules/core-util-is/README.md +0 -3
  232. package/node_modules/core-util-is/lib/util.js +0 -107
  233. package/node_modules/core-util-is/package.json +0 -38
  234. package/node_modules/immediate/LICENSE.txt +0 -20
  235. package/node_modules/immediate/README.md +0 -93
  236. package/node_modules/immediate/dist/immediate.js +0 -75
  237. package/node_modules/immediate/dist/immediate.min.js +0 -1
  238. package/node_modules/immediate/lib/browser.js +0 -69
  239. package/node_modules/immediate/lib/index.js +0 -73
  240. package/node_modules/immediate/package.json +0 -42
  241. package/node_modules/inherits/LICENSE +0 -16
  242. package/node_modules/inherits/README.md +0 -42
  243. package/node_modules/inherits/inherits.js +0 -9
  244. package/node_modules/inherits/inherits_browser.js +0 -27
  245. package/node_modules/inherits/package.json +0 -29
  246. package/node_modules/isarray/.npmignore +0 -1
  247. package/node_modules/isarray/.travis.yml +0 -4
  248. package/node_modules/isarray/Makefile +0 -6
  249. package/node_modules/isarray/README.md +0 -60
  250. package/node_modules/isarray/component.json +0 -19
  251. package/node_modules/isarray/index.js +0 -5
  252. package/node_modules/isarray/package.json +0 -45
  253. package/node_modules/isarray/test.js +0 -20
  254. package/node_modules/jszip/.codeclimate.yml +0 -16
  255. package/node_modules/jszip/.editorconfig +0 -8
  256. package/node_modules/jszip/.eslintrc.js +0 -43
  257. package/node_modules/jszip/.github/workflows/pr.yaml +0 -58
  258. package/node_modules/jszip/.jekyll-metadata +0 -0
  259. package/node_modules/jszip/.travis.yml +0 -17
  260. package/node_modules/jszip/CHANGES.md +0 -204
  261. package/node_modules/jszip/LICENSE.markdown +0 -651
  262. package/node_modules/jszip/README.markdown +0 -33
  263. package/node_modules/jszip/deps.js +0 -37
  264. package/node_modules/jszip/dist/jszip.js +0 -11577
  265. package/node_modules/jszip/dist/jszip.min.js +0 -13
  266. package/node_modules/jszip/graph.svg +0 -601
  267. package/node_modules/jszip/index.d.ts +0 -330
  268. package/node_modules/jszip/lib/base64.js +0 -106
  269. package/node_modules/jszip/lib/compressedObject.js +0 -74
  270. package/node_modules/jszip/lib/compressions.js +0 -14
  271. package/node_modules/jszip/lib/crc32.js +0 -77
  272. package/node_modules/jszip/lib/defaults.js +0 -11
  273. package/node_modules/jszip/lib/external.js +0 -18
  274. package/node_modules/jszip/lib/flate.js +0 -85
  275. package/node_modules/jszip/lib/generate/ZipFileWorker.js +0 -539
  276. package/node_modules/jszip/lib/generate/index.js +0 -57
  277. package/node_modules/jszip/lib/index.js +0 -55
  278. package/node_modules/jszip/lib/license_header.js +0 -11
  279. package/node_modules/jszip/lib/load.js +0 -88
  280. package/node_modules/jszip/lib/nodejs/NodejsStreamInputAdapter.js +0 -74
  281. package/node_modules/jszip/lib/nodejs/NodejsStreamOutputAdapter.js +0 -42
  282. package/node_modules/jszip/lib/nodejsUtils.js +0 -57
  283. package/node_modules/jszip/lib/object.js +0 -384
  284. package/node_modules/jszip/lib/readable-stream-browser.js +0 -10
  285. package/node_modules/jszip/lib/reader/ArrayReader.js +0 -57
  286. package/node_modules/jszip/lib/reader/DataReader.js +0 -116
  287. package/node_modules/jszip/lib/reader/NodeBufferReader.js +0 -19
  288. package/node_modules/jszip/lib/reader/StringReader.js +0 -38
  289. package/node_modules/jszip/lib/reader/Uint8ArrayReader.js +0 -22
  290. package/node_modules/jszip/lib/reader/readerFor.js +0 -28
  291. package/node_modules/jszip/lib/signature.js +0 -7
  292. package/node_modules/jszip/lib/stream/ConvertWorker.js +0 -26
  293. package/node_modules/jszip/lib/stream/Crc32Probe.js +0 -24
  294. package/node_modules/jszip/lib/stream/DataLengthProbe.js +0 -29
  295. package/node_modules/jszip/lib/stream/DataWorker.js +0 -116
  296. package/node_modules/jszip/lib/stream/GenericWorker.js +0 -263
  297. package/node_modules/jszip/lib/stream/StreamHelper.js +0 -214
  298. package/node_modules/jszip/lib/support.js +0 -38
  299. package/node_modules/jszip/lib/utf8.js +0 -275
  300. package/node_modules/jszip/lib/utils.js +0 -501
  301. package/node_modules/jszip/lib/zipEntries.js +0 -261
  302. package/node_modules/jszip/lib/zipEntry.js +0 -293
  303. package/node_modules/jszip/lib/zipObject.js +0 -133
  304. package/node_modules/jszip/package.json +0 -67
  305. package/node_modules/jszip/sponsors.md +0 -21
  306. package/node_modules/jszip/tsconfig.json +0 -101
  307. package/node_modules/jszip/vendor/FileSaver.js +0 -247
  308. package/node_modules/lie/README.md +0 -62
  309. package/node_modules/lie/dist/lie.js +0 -350
  310. package/node_modules/lie/dist/lie.min.js +0 -1
  311. package/node_modules/lie/dist/lie.polyfill.js +0 -358
  312. package/node_modules/lie/dist/lie.polyfill.min.js +0 -1
  313. package/node_modules/lie/lib/browser.js +0 -273
  314. package/node_modules/lie/lib/index.js +0 -298
  315. package/node_modules/lie/license.md +0 -7
  316. package/node_modules/lie/lie.d.ts +0 -244
  317. package/node_modules/lie/package.json +0 -69
  318. package/node_modules/lie/polyfill.js +0 -4
  319. package/node_modules/pako/LICENSE +0 -21
  320. package/node_modules/pako/README.md +0 -191
  321. package/node_modules/pako/dist/pako.js +0 -6818
  322. package/node_modules/pako/dist/pako.min.js +0 -1
  323. package/node_modules/pako/dist/pako_deflate.js +0 -3997
  324. package/node_modules/pako/dist/pako_deflate.min.js +0 -1
  325. package/node_modules/pako/dist/pako_inflate.js +0 -3300
  326. package/node_modules/pako/dist/pako_inflate.min.js +0 -1
  327. package/node_modules/pako/index.js +0 -14
  328. package/node_modules/pako/lib/deflate.js +0 -400
  329. package/node_modules/pako/lib/inflate.js +0 -423
  330. package/node_modules/pako/lib/utils/common.js +0 -105
  331. package/node_modules/pako/lib/utils/strings.js +0 -187
  332. package/node_modules/pako/lib/zlib/README +0 -59
  333. package/node_modules/pako/lib/zlib/adler32.js +0 -51
  334. package/node_modules/pako/lib/zlib/constants.js +0 -68
  335. package/node_modules/pako/lib/zlib/crc32.js +0 -59
  336. package/node_modules/pako/lib/zlib/deflate.js +0 -1874
  337. package/node_modules/pako/lib/zlib/gzheader.js +0 -58
  338. package/node_modules/pako/lib/zlib/inffast.js +0 -345
  339. package/node_modules/pako/lib/zlib/inflate.js +0 -1556
  340. package/node_modules/pako/lib/zlib/inftrees.js +0 -343
  341. package/node_modules/pako/lib/zlib/messages.js +0 -32
  342. package/node_modules/pako/lib/zlib/trees.js +0 -1222
  343. package/node_modules/pako/lib/zlib/zstream.js +0 -47
  344. package/node_modules/pako/package.json +0 -44
  345. package/node_modules/process-nextick-args/index.js +0 -45
  346. package/node_modules/process-nextick-args/license.md +0 -19
  347. package/node_modules/process-nextick-args/package.json +0 -25
  348. package/node_modules/process-nextick-args/readme.md +0 -18
  349. package/node_modules/readable-stream/.travis.yml +0 -34
  350. package/node_modules/readable-stream/CONTRIBUTING.md +0 -38
  351. package/node_modules/readable-stream/GOVERNANCE.md +0 -136
  352. package/node_modules/readable-stream/LICENSE +0 -47
  353. package/node_modules/readable-stream/README.md +0 -58
  354. package/node_modules/readable-stream/doc/wg-meetings/2015-01-30.md +0 -60
  355. package/node_modules/readable-stream/duplex-browser.js +0 -1
  356. package/node_modules/readable-stream/duplex.js +0 -1
  357. package/node_modules/readable-stream/lib/_stream_duplex.js +0 -131
  358. package/node_modules/readable-stream/lib/_stream_passthrough.js +0 -47
  359. package/node_modules/readable-stream/lib/_stream_readable.js +0 -1019
  360. package/node_modules/readable-stream/lib/_stream_transform.js +0 -214
  361. package/node_modules/readable-stream/lib/_stream_writable.js +0 -685
  362. package/node_modules/readable-stream/lib/internal/streams/BufferList.js +0 -78
  363. package/node_modules/readable-stream/lib/internal/streams/destroy.js +0 -84
  364. package/node_modules/readable-stream/lib/internal/streams/stream-browser.js +0 -1
  365. package/node_modules/readable-stream/lib/internal/streams/stream.js +0 -1
  366. package/node_modules/readable-stream/package.json +0 -52
  367. package/node_modules/readable-stream/passthrough.js +0 -1
  368. package/node_modules/readable-stream/readable-browser.js +0 -7
  369. package/node_modules/readable-stream/readable.js +0 -19
  370. package/node_modules/readable-stream/transform.js +0 -1
  371. package/node_modules/readable-stream/writable-browser.js +0 -1
  372. package/node_modules/readable-stream/writable.js +0 -8
  373. package/node_modules/safe-buffer/LICENSE +0 -21
  374. package/node_modules/safe-buffer/README.md +0 -584
  375. package/node_modules/safe-buffer/index.d.ts +0 -187
  376. package/node_modules/safe-buffer/index.js +0 -62
  377. package/node_modules/safe-buffer/package.json +0 -37
  378. package/node_modules/setimmediate/LICENSE.txt +0 -20
  379. package/node_modules/setimmediate/package.json +0 -30
  380. package/node_modules/setimmediate/setImmediate.js +0 -186
  381. package/node_modules/string_decoder/.travis.yml +0 -50
  382. package/node_modules/string_decoder/LICENSE +0 -48
  383. package/node_modules/string_decoder/README.md +0 -47
  384. package/node_modules/string_decoder/lib/string_decoder.js +0 -296
  385. package/node_modules/string_decoder/package.json +0 -31
  386. package/node_modules/util-deprecate/History.md +0 -16
  387. package/node_modules/util-deprecate/LICENSE +0 -24
  388. package/node_modules/util-deprecate/README.md +0 -53
  389. package/node_modules/util-deprecate/browser.js +0 -67
  390. package/node_modules/util-deprecate/node.js +0 -6
  391. package/node_modules/util-deprecate/package.json +0 -27
@@ -1,27 +1,82 @@
1
1
  import { z } from 'zod';
2
+ /**
3
+ * License values accepted by template metadata.
4
+ *
5
+ * CC-BY-4.0 and CC0-1.0 templates may be redistributed as OpenAgreements
6
+ * content. CC-BY-ND-4.0 templates are vendored only when unmodified and must
7
+ * declare `allow_derivatives: false`.
8
+ */
2
9
  export declare const LicenseEnum: z.ZodEnum<{
3
10
  "CC-BY-4.0": "CC-BY-4.0";
4
11
  "CC0-1.0": "CC0-1.0";
5
12
  "CC-BY-ND-4.0": "CC-BY-ND-4.0";
6
13
  }>;
7
14
  export type License = z.infer<typeof LicenseEnum>;
8
- export declare const FieldDefinitionSchema: z.ZodObject<{
9
- name: z.ZodString;
10
- type: z.ZodEnum<{
11
- string: "string";
12
- number: "number";
13
- boolean: "boolean";
14
- date: "date";
15
- enum: "enum";
16
- array: "array";
17
- }>;
18
- description: z.ZodString;
19
- default: z.ZodOptional<z.ZodString>;
20
- default_value_rationale: z.ZodOptional<z.ZodString>;
21
- options: z.ZodOptional<z.ZodArray<z.ZodString>>;
22
- section: z.ZodOptional<z.ZodString>;
23
- }, z.core.$strip>;
24
- export type FieldDefinition = z.infer<typeof FieldDefinitionSchema>;
15
+ /** Field kinds supported by template, external-template, and recipe metadata. */
16
+ declare const FieldTypeEnum: z.ZodEnum<{
17
+ string: "string";
18
+ number: "number";
19
+ boolean: "boolean";
20
+ date: "date";
21
+ enum: "enum";
22
+ array: "array";
23
+ multiselect: "multiselect";
24
+ }>;
25
+ export type FieldType = z.infer<typeof FieldTypeEnum>;
26
+ /**
27
+ * Metadata definition for a fillable field.
28
+ *
29
+ * `name`, `type`, and `description` are required. `enum` and `multiselect`
30
+ * fields must declare non-empty `options`; `array` fields may declare nested
31
+ * `items`; `display_label` is a presentation hint and never replaces `name`.
32
+ */
33
+ export interface FieldDefinition {
34
+ name: string;
35
+ type: FieldType;
36
+ description: string;
37
+ display_label?: string;
38
+ default?: string;
39
+ default_value_rationale?: string;
40
+ options?: string[];
41
+ derive_booleans?: boolean;
42
+ section?: string;
43
+ items?: FieldDefinition[];
44
+ /**
45
+ * Marks this boolean field as a *statutory compliance representation*: its
46
+ * `true` value asserts a past real-world fact that is a statutory precondition
47
+ * to the agreement's enforceability/validity (e.g. a required advance notice
48
+ * or written advisal that must actually have been given before signing).
49
+ *
50
+ * Deliberately NARROW — opt-in per field and reserved for the few reps that
51
+ * gate enforceability, NOT general representations (a purchase agreement may
52
+ * carry dozens of ordinary reps that should not all demand per-rep
53
+ * confirmation). When set, the field MUST be boolean with `default: 'false'`
54
+ * and MUST declare `authority_url`. A template clause references it via the
55
+ * renderer's `confirm=` directive, which renders the recital clean when the
56
+ * field is true and as a highlighted `[CONFIRM …]` bracket when it is false
57
+ * (never silently dropped). The broad confirmation warning rides in
58
+ * `description`; the short reason shown inside the rendered bracket rides in
59
+ * `confirm_note`.
60
+ */
61
+ statutory_compliance_representation?: boolean;
62
+ /**
63
+ * Statute / practice-note link used as the learn-more reference for a
64
+ * `statutory_compliance_representation` field (surfaced in the field
65
+ * description and the rendered `[CONFIRM …; see <authority_url>]` bracket).
66
+ * Only valid on a `statutory_compliance_representation` field.
67
+ */
68
+ authority_url?: string;
69
+ /**
70
+ * Short, human-readable reason rendered inside the
71
+ * `[CONFIRM before signing: <confirm_note>; see <authority_url>]` bracket of a
72
+ * `statutory_compliance_representation` field. This is the single source of
73
+ * truth for the bracket note — a `confirm=<field>` clause directive resolves
74
+ * it from here rather than restating it. Only valid on (and required for) a
75
+ * `statutory_compliance_representation` field.
76
+ */
77
+ confirm_note?: string;
78
+ }
79
+ export declare const FieldDefinitionSchema: z.ZodType<FieldDefinition>;
25
80
  export declare const TemplateMetadataSchema: z.ZodObject<{
26
81
  name: z.ZodString;
27
82
  description: z.ZodOptional<z.ZodString>;
@@ -35,25 +90,28 @@ export declare const TemplateMetadataSchema: z.ZodObject<{
35
90
  }>;
36
91
  allow_derivatives: z.ZodBoolean;
37
92
  attribution_text: z.ZodString;
38
- fields: z.ZodArray<z.ZodObject<{
93
+ fields: z.ZodArray<z.ZodType<FieldDefinition, unknown, z.core.$ZodTypeInternals<FieldDefinition, unknown>>>;
94
+ priority_fields: z.ZodDefault<z.ZodArray<z.ZodString>>;
95
+ credits: z.ZodDefault<z.ZodArray<z.ZodObject<{
39
96
  name: z.ZodString;
40
- type: z.ZodEnum<{
41
- string: "string";
42
- number: "number";
43
- boolean: "boolean";
44
- date: "date";
45
- enum: "enum";
46
- array: "array";
97
+ role: z.ZodEnum<{
98
+ drafter: "drafter";
99
+ drafting_editor: "drafting_editor";
100
+ reviewer: "reviewer";
101
+ maintainer: "maintainer";
47
102
  }>;
48
- description: z.ZodString;
49
- default: z.ZodOptional<z.ZodString>;
50
- default_value_rationale: z.ZodOptional<z.ZodString>;
51
- options: z.ZodOptional<z.ZodArray<z.ZodString>>;
52
- section: z.ZodOptional<z.ZodString>;
53
- }, z.core.$strip>>;
54
- priority_fields: z.ZodDefault<z.ZodArray<z.ZodString>>;
103
+ profile_url: z.ZodOptional<z.ZodString>;
104
+ }, z.core.$strip>>>;
105
+ derived_from: z.ZodOptional<z.ZodString>;
55
106
  }, z.core.$strip>;
56
107
  export type TemplateMetadata = z.infer<typeof TemplateMetadataSchema>;
108
+ /**
109
+ * Metadata for vendored external templates.
110
+ *
111
+ * `source_sha256` records the checksum of the unmodified upstream document so
112
+ * validation can verify provenance for no-derivatives templates before local
113
+ * transient fills or CI license checks rely on that source.
114
+ */
57
115
  export declare const ExternalMetadataSchema: z.ZodObject<{
58
116
  name: z.ZodString;
59
117
  description: z.ZodOptional<z.ZodString>;
@@ -67,26 +125,23 @@ export declare const ExternalMetadataSchema: z.ZodObject<{
67
125
  }>;
68
126
  allow_derivatives: z.ZodBoolean;
69
127
  attribution_text: z.ZodString;
70
- fields: z.ZodArray<z.ZodObject<{
128
+ fields: z.ZodArray<z.ZodType<FieldDefinition, unknown, z.core.$ZodTypeInternals<FieldDefinition, unknown>>>;
129
+ priority_fields: z.ZodDefault<z.ZodArray<z.ZodString>>;
130
+ credits: z.ZodDefault<z.ZodArray<z.ZodObject<{
71
131
  name: z.ZodString;
72
- type: z.ZodEnum<{
73
- string: "string";
74
- number: "number";
75
- boolean: "boolean";
76
- date: "date";
77
- enum: "enum";
78
- array: "array";
132
+ role: z.ZodEnum<{
133
+ drafter: "drafter";
134
+ drafting_editor: "drafting_editor";
135
+ reviewer: "reviewer";
136
+ maintainer: "maintainer";
79
137
  }>;
80
- description: z.ZodString;
81
- default: z.ZodOptional<z.ZodString>;
82
- default_value_rationale: z.ZodOptional<z.ZodString>;
83
- options: z.ZodOptional<z.ZodArray<z.ZodString>>;
84
- section: z.ZodOptional<z.ZodString>;
85
- }, z.core.$strip>>;
86
- priority_fields: z.ZodDefault<z.ZodArray<z.ZodString>>;
138
+ profile_url: z.ZodOptional<z.ZodString>;
139
+ }, z.core.$strip>>>;
140
+ derived_from: z.ZodOptional<z.ZodString>;
87
141
  source_sha256: z.ZodString;
88
142
  }, z.core.$strip>;
89
143
  export type ExternalMetadata = z.infer<typeof ExternalMetadataSchema>;
144
+ /** Declarative cleaner configuration for recipe DOCX preprocessing. */
90
145
  export declare const CleanConfigSchema: z.ZodObject<{
91
146
  removeFootnotes: z.ZodDefault<z.ZodBoolean>;
92
147
  removeBeforePattern: z.ZodOptional<z.ZodString>;
@@ -126,8 +181,8 @@ export declare const NormalizeConfigSchema: z.ZodObject<{
126
181
  export type NormalizeConfig = z.infer<typeof NormalizeConfigSchema>;
127
182
  export declare const GuidanceEntrySchema: z.ZodObject<{
128
183
  source: z.ZodEnum<{
129
- footnote: "footnote";
130
184
  pattern: "pattern";
185
+ footnote: "footnote";
131
186
  range: "range";
132
187
  }>;
133
188
  part: z.ZodString;
@@ -136,6 +191,7 @@ export declare const GuidanceEntrySchema: z.ZodObject<{
136
191
  groupId: z.ZodOptional<z.ZodString>;
137
192
  }, z.core.$strip>;
138
193
  export type GuidanceEntry = z.infer<typeof GuidanceEntrySchema>;
194
+ /** Machine-readable guidance artifact produced from recipe cleaning inputs. */
139
195
  export declare const GuidanceOutputSchema: z.ZodObject<{
140
196
  extractedFrom: z.ZodObject<{
141
197
  sourceHash: z.ZodString;
@@ -143,8 +199,8 @@ export declare const GuidanceOutputSchema: z.ZodObject<{
143
199
  }, z.core.$strip>;
144
200
  entries: z.ZodArray<z.ZodObject<{
145
201
  source: z.ZodEnum<{
146
- footnote: "footnote";
147
202
  pattern: "pattern";
203
+ footnote: "footnote";
148
204
  range: "range";
149
205
  }>;
150
206
  part: z.ZodString;
@@ -154,30 +210,27 @@ export declare const GuidanceOutputSchema: z.ZodObject<{
154
210
  }, z.core.$strip>>;
155
211
  }, z.core.$strip>;
156
212
  export type GuidanceOutput = z.infer<typeof GuidanceOutputSchema>;
213
+ /**
214
+ * Metadata required for recipe-based templates.
215
+ *
216
+ * Recipes point at non-redistributable upstream source DOCX files and ship only
217
+ * transformation instructions. Required fields are `name`, `source_url`,
218
+ * `source_version`, and `license_note`; `fields` and `priority_fields` reuse
219
+ * the same field-definition semantics as template metadata and default to
220
+ * empty arrays. `optional` defaults to `false`. `source_sha256` verifies
221
+ * provenance for upstream sources when present. `market_data_citations`
222
+ * records optional external citation metadata used by recipe guidance.
223
+ */
157
224
  export declare const RecipeMetadataSchema: z.ZodObject<{
158
225
  name: z.ZodString;
226
+ category: z.ZodOptional<z.ZodString>;
159
227
  description: z.ZodOptional<z.ZodString>;
160
228
  source_url: z.ZodString;
161
229
  source_version: z.ZodString;
162
230
  license_note: z.ZodString;
163
231
  optional: z.ZodDefault<z.ZodBoolean>;
164
232
  source_sha256: z.ZodOptional<z.ZodString>;
165
- fields: z.ZodDefault<z.ZodArray<z.ZodObject<{
166
- name: z.ZodString;
167
- type: z.ZodEnum<{
168
- string: "string";
169
- number: "number";
170
- boolean: "boolean";
171
- date: "date";
172
- enum: "enum";
173
- array: "array";
174
- }>;
175
- description: z.ZodString;
176
- default: z.ZodOptional<z.ZodString>;
177
- default_value_rationale: z.ZodOptional<z.ZodString>;
178
- options: z.ZodOptional<z.ZodArray<z.ZodString>>;
179
- section: z.ZodOptional<z.ZodString>;
180
- }, z.core.$strip>>>;
233
+ fields: z.ZodDefault<z.ZodArray<z.ZodType<FieldDefinition, unknown, z.core.$ZodTypeInternals<FieldDefinition, unknown>>>>;
181
234
  priority_fields: z.ZodDefault<z.ZodArray<z.ZodString>>;
182
235
  market_data_citations: z.ZodOptional<z.ZodArray<z.ZodObject<{
183
236
  id: z.ZodString;
@@ -203,4 +256,5 @@ export declare function validateRecipeMetadata(recipeDir: string): {
203
256
  valid: boolean;
204
257
  errors: string[];
205
258
  };
259
+ export {};
206
260
  //# sourceMappingURL=metadata.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"metadata.d.ts","sourceRoot":"","sources":["../../src/core/metadata.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,eAAO,MAAM,WAAW;;;;EAAmD,CAAC;AAC5E,MAAM,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AAElD,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;iBAmBjC,CAAC;AACF,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AA2CpE,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAEjC,CAAC;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAItE,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAIjC,CAAC;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAItE,eAAO,MAAM,iBAAiB;;;;;;;;;iBAS5B,CAAC;AACH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAE5D,eAAO,MAAM,uCAAuC;;;;;;;;;;iBAUlD,CAAC;AACH,MAAM,MAAM,iCAAiC,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uCAAuC,CAAC,CAAC;AAExG,eAAO,MAAM,qBAAqB;;;;;;;;;;;;iBAEhC,CAAC;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAEpE,eAAO,MAAM,mBAAmB;;;;;;;;;;iBAM9B,CAAC;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEhE,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;iBAM/B,CAAC;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAQlE,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAa/B,CAAC;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAIlE,wBAAgB,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,gBAAgB,CAKlE;AAED,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,CAe1F;AAID,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,gBAAgB,CAK1E;AAED,wBAAgB,wBAAwB,CAAC,WAAW,EAAE,MAAM,GAAG;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,CAelG;AAID,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,cAAc,CAKpE;AAED,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,WAAW,CAO9D;AAED,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,eAAe,CAOtE;AAED,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,MAAM,GAAG;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,CAe9F"}
1
+ {"version":3,"file":"metadata.d.ts","sourceRoot":"","sources":["../../src/core/metadata.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB;;;;;;GAMG;AACH,eAAO,MAAM,WAAW;;;;EAAmD,CAAC;AAC5E,MAAM,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AAElD,iFAAiF;AACjF,QAAA,MAAM,aAAa;;;;;;;;EAAkF,CAAC;AACtG,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AAGtD;;;;;;GAMG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,SAAS,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,eAAe,EAAE,CAAC;IAC1B;;;;;;;;;;;;;;;;OAgBG;IACH,mCAAmC,CAAC,EAAE,OAAO,CAAC;IAC9C;;;;;OAKG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;;;;;OAOG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,eAAO,MAAM,qBAAqB,EAAE,CAAC,CAAC,OAAO,CAAC,eAAe,CAoM5D,CAAC;AAyGF,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;iBAGjC,CAAC;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAItE;;;;;;GAMG;AACH,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAKjC,CAAC;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAItE,uEAAuE;AACvE,eAAO,MAAM,iBAAiB;;;;;;;;;iBAS5B,CAAC;AACH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAE5D,eAAO,MAAM,uCAAuC;;;;;;;;;;iBAUlD,CAAC;AACH,MAAM,MAAM,iCAAiC,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uCAAuC,CAAC,CAAC;AAExG,eAAO,MAAM,qBAAqB;;;;;;;;;;;;iBAEhC,CAAC;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAEpE,eAAO,MAAM,mBAAmB;;;;;;;;;;iBAM9B,CAAC;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEhE,+EAA+E;AAC/E,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;iBAM/B,CAAC;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAQlE;;;;;;;;;;GAUG;AACH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;iBAe/B,CAAC;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAIlE,wBAAgB,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,gBAAgB,CAKlE;AAED,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,CAe1F;AAID,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,gBAAgB,CAK1E;AAED,wBAAgB,wBAAwB,CAAC,WAAW,EAAE,MAAM,GAAG;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,CAelG;AAID,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,cAAc,CAKpE;AAED,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,WAAW,CAO9D;AAED,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,eAAe,CAOtE;AAED,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,MAAM,GAAG;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,CAe9F"}
@@ -2,24 +2,215 @@ import { z } from 'zod';
2
2
  import { readFileSync, existsSync } from 'node:fs';
3
3
  import { join } from 'node:path';
4
4
  import yaml from 'js-yaml';
5
+ /**
6
+ * License values accepted by template metadata.
7
+ *
8
+ * CC-BY-4.0 and CC0-1.0 templates may be redistributed as OpenAgreements
9
+ * content. CC-BY-ND-4.0 templates are vendored only when unmodified and must
10
+ * declare `allow_derivatives: false`.
11
+ */
5
12
  export const LicenseEnum = z.enum(['CC-BY-4.0', 'CC0-1.0', 'CC-BY-ND-4.0']);
6
- export const FieldDefinitionSchema = z.object({
13
+ /** Field kinds supported by template, external-template, and recipe metadata. */
14
+ const FieldTypeEnum = z.enum(['string', 'date', 'number', 'boolean', 'enum', 'array', 'multiselect']);
15
+ const MULTISELECT_OPTION_RE = /^[A-Za-z_][A-Za-z0-9_]*$/;
16
+ export const FieldDefinitionSchema = z.lazy(() => z.object({
7
17
  name: z.string(),
8
- type: z.enum(['string', 'date', 'number', 'boolean', 'enum', 'array']),
18
+ type: FieldTypeEnum,
9
19
  description: z.string(),
20
+ display_label: z.string().optional(),
10
21
  default: z.string().optional(),
11
22
  default_value_rationale: z.string().optional(),
12
23
  options: z.array(z.string()).optional(),
24
+ derive_booleans: z.boolean().optional(),
13
25
  section: z.string().optional(),
14
- }).refine((f) => f.type !== 'enum' || (f.options !== undefined && f.options.length > 0), { message: 'Fields with type "enum" must have a non-empty options array' }).refine((f) => {
15
- if (f.default === undefined)
16
- return true;
17
- if (f.type === 'number')
18
- return !isNaN(Number(f.default));
19
- if (f.type === 'boolean')
20
- return f.default === 'true' || f.default === 'false';
21
- return true;
22
- }, { message: 'Default value must be valid for the declared field type' });
26
+ items: z.array(FieldDefinitionSchema).nonempty().optional(),
27
+ statutory_compliance_representation: z.boolean().optional(),
28
+ authority_url: z.string().optional(),
29
+ confirm_note: z.string().optional(),
30
+ }).superRefine((field, ctx) => {
31
+ if ((field.type === 'enum' || field.type === 'multiselect') &&
32
+ (field.options === undefined || field.options.length === 0)) {
33
+ ctx.addIssue({
34
+ code: z.ZodIssueCode.custom,
35
+ path: ['options'],
36
+ message: `Fields with type "${field.type}" must have a non-empty options array`,
37
+ });
38
+ }
39
+ if (field.type === 'multiselect' && field.options) {
40
+ const seenOptions = new Set();
41
+ field.options.forEach((option, index) => {
42
+ if (!MULTISELECT_OPTION_RE.test(option)) {
43
+ ctx.addIssue({
44
+ code: z.ZodIssueCode.custom,
45
+ path: ['options', index],
46
+ message: 'Multiselect options must be valid identifiers matching /^[A-Za-z_][A-Za-z0-9_]*$/',
47
+ });
48
+ }
49
+ if (seenOptions.has(option)) {
50
+ ctx.addIssue({
51
+ code: z.ZodIssueCode.custom,
52
+ path: ['options', index],
53
+ message: `Duplicate multiselect option "${option}"`,
54
+ });
55
+ return;
56
+ }
57
+ seenOptions.add(option);
58
+ });
59
+ }
60
+ if (field.derive_booleans !== undefined && field.type !== 'multiselect') {
61
+ ctx.addIssue({
62
+ code: z.ZodIssueCode.custom,
63
+ path: ['derive_booleans'],
64
+ message: 'derive_booleans is only valid for fields with type "multiselect"',
65
+ });
66
+ }
67
+ if (field.items !== undefined && field.type !== 'array') {
68
+ ctx.addIssue({
69
+ code: z.ZodIssueCode.custom,
70
+ path: ['items'],
71
+ message: 'Only fields with type "array" may define nested items',
72
+ });
73
+ }
74
+ // `statutory_compliance_representation` is a NARROW opt-in category for the
75
+ // few boolean reps whose truth is a statutory precondition to
76
+ // enforceability. Enforce its shape so the renderer's `confirm=` mechanism
77
+ // and the get_template confirmation surface stay sound.
78
+ if (field.statutory_compliance_representation === true) {
79
+ if (field.type !== 'boolean') {
80
+ ctx.addIssue({
81
+ code: z.ZodIssueCode.custom,
82
+ path: ['statutory_compliance_representation'],
83
+ message: 'statutory_compliance_representation is only valid on a boolean field',
84
+ });
85
+ }
86
+ if (field.default !== 'false') {
87
+ ctx.addIssue({
88
+ code: z.ZodIssueCode.custom,
89
+ path: ['default'],
90
+ message: "statutory_compliance_representation fields must declare default: 'false' (a compliance fact is unconfirmed until a human confirms it)",
91
+ });
92
+ }
93
+ if (field.authority_url === undefined) {
94
+ ctx.addIssue({
95
+ code: z.ZodIssueCode.custom,
96
+ path: ['authority_url'],
97
+ message: 'statutory_compliance_representation fields must declare an authority_url (statute / practice-note link)',
98
+ });
99
+ }
100
+ else if (!/^https?:\/\/\S+$/.test(field.authority_url)) {
101
+ ctx.addIssue({
102
+ code: z.ZodIssueCode.custom,
103
+ path: ['authority_url'],
104
+ message: 'authority_url must be an http(s) URL',
105
+ });
106
+ }
107
+ // confirm_note is the SSOT for the rendered `[CONFIRM …]` bracket note, so
108
+ // it must be present and non-empty (after trimming) on these fields.
109
+ if (field.confirm_note === undefined || field.confirm_note.trim().length === 0) {
110
+ ctx.addIssue({
111
+ code: z.ZodIssueCode.custom,
112
+ path: ['confirm_note'],
113
+ message: 'statutory_compliance_representation fields must declare a non-empty confirm_note (the short reason shown in the rendered [CONFIRM …] bracket)',
114
+ });
115
+ }
116
+ }
117
+ else {
118
+ // Keep these properties scoped: they have no meaning outside the
119
+ // statutory_compliance_representation category.
120
+ if (field.authority_url !== undefined) {
121
+ ctx.addIssue({
122
+ code: z.ZodIssueCode.custom,
123
+ path: ['authority_url'],
124
+ message: 'authority_url is only valid on a statutory_compliance_representation field',
125
+ });
126
+ }
127
+ if (field.confirm_note !== undefined) {
128
+ ctx.addIssue({
129
+ code: z.ZodIssueCode.custom,
130
+ path: ['confirm_note'],
131
+ message: 'confirm_note is only valid on a statutory_compliance_representation field',
132
+ });
133
+ }
134
+ }
135
+ if (field.default !== undefined) {
136
+ if (field.type === 'number' && isNaN(Number(field.default))) {
137
+ ctx.addIssue({
138
+ code: z.ZodIssueCode.custom,
139
+ path: ['default'],
140
+ message: 'Default value must be valid for the declared field type',
141
+ });
142
+ }
143
+ if (field.type === 'boolean' && field.default !== 'true' && field.default !== 'false') {
144
+ ctx.addIssue({
145
+ code: z.ZodIssueCode.custom,
146
+ path: ['default'],
147
+ message: 'Default value must be valid for the declared field type',
148
+ });
149
+ }
150
+ if (field.type === 'multiselect') {
151
+ let parsedDefault;
152
+ try {
153
+ parsedDefault = JSON.parse(field.default);
154
+ }
155
+ catch {
156
+ ctx.addIssue({
157
+ code: z.ZodIssueCode.custom,
158
+ path: ['default'],
159
+ message: 'Default value must be a JSON-encoded array of strings for multiselect fields',
160
+ });
161
+ return;
162
+ }
163
+ if (!Array.isArray(parsedDefault)) {
164
+ ctx.addIssue({
165
+ code: z.ZodIssueCode.custom,
166
+ path: ['default'],
167
+ message: 'Default value must be a JSON-encoded array of strings for multiselect fields',
168
+ });
169
+ return;
170
+ }
171
+ const seenDefaults = new Set();
172
+ parsedDefault.forEach((entry) => {
173
+ if (typeof entry !== 'string') {
174
+ ctx.addIssue({
175
+ code: z.ZodIssueCode.custom,
176
+ path: ['default'],
177
+ message: 'Default value must be a JSON-encoded array of strings for multiselect fields',
178
+ });
179
+ return;
180
+ }
181
+ if (seenDefaults.has(entry)) {
182
+ ctx.addIssue({
183
+ code: z.ZodIssueCode.custom,
184
+ path: ['default'],
185
+ message: `Default value contains duplicate multiselect option "${entry}"`,
186
+ });
187
+ return;
188
+ }
189
+ seenDefaults.add(entry);
190
+ if (field.options && !field.options.includes(entry)) {
191
+ ctx.addIssue({
192
+ code: z.ZodIssueCode.custom,
193
+ path: ['default'],
194
+ message: `Default value references option "${entry}" which is not declared in options`,
195
+ });
196
+ }
197
+ });
198
+ }
199
+ }
200
+ }));
201
+ /** Closed set of provenance roles accepted in template `credits` entries. */
202
+ const TemplateCreditRoleEnum = z.enum([
203
+ 'drafter',
204
+ 'drafting_editor',
205
+ 'reviewer',
206
+ 'maintainer',
207
+ ]);
208
+ /** Optional template provenance entry surfaced by CLI discovery output. */
209
+ const TemplateCreditSchema = z.object({
210
+ name: z.string(),
211
+ role: TemplateCreditRoleEnum,
212
+ profile_url: z.string().url().optional(),
213
+ });
23
214
  function validatePriorityFields(fields, priorityFields, ctx) {
24
215
  const fieldNames = new Set(fields.map((field) => field.name));
25
216
  const seen = new Set();
@@ -42,8 +233,47 @@ function validatePriorityFields(fields, priorityFields, ctx) {
42
233
  }
43
234
  });
44
235
  }
236
+ function validateDerivedBooleanCollisions(fields, ctx) {
237
+ const topLevelFieldNames = new Set(fields.map((field) => field.name));
238
+ const derivedKeyOwners = new Map();
239
+ fields.forEach((field, fieldIndex) => {
240
+ if (field.type !== 'multiselect' || field.derive_booleans !== true || !field.options) {
241
+ return;
242
+ }
243
+ field.options.forEach((option, optionIndex) => {
244
+ const derivedKey = `${option}_enabled`;
245
+ if (topLevelFieldNames.has(derivedKey)) {
246
+ ctx.addIssue({
247
+ code: z.ZodIssueCode.custom,
248
+ path: ['fields', fieldIndex, 'options', optionIndex],
249
+ message: `Derived boolean key "${derivedKey}" from multiselect "${field.name}" collides with another top-level field name`,
250
+ });
251
+ }
252
+ const existingOwner = derivedKeyOwners.get(derivedKey);
253
+ if (existingOwner) {
254
+ ctx.addIssue({
255
+ code: z.ZodIssueCode.custom,
256
+ path: ['fields', fieldIndex, 'options', optionIndex],
257
+ message: `Derived boolean key "${derivedKey}" from multiselect "${field.name}" collides with derived key from multiselect "${existingOwner}"`,
258
+ });
259
+ return;
260
+ }
261
+ derivedKeyOwners.set(derivedKey, field.name);
262
+ });
263
+ });
264
+ }
265
+ /**
266
+ * Base metadata required for first-party and external templates.
267
+ *
268
+ * Template directories must provide `metadata.yaml` with a non-empty display
269
+ * name, source URL, version, license, derivative flag, attribution text, and
270
+ * field definitions. `category` is optional discovery grouping metadata.
271
+ * `priority_fields` reference required fill fields. `credits` records
272
+ * contributor provenance and defaults to an empty array; `derived_from` is
273
+ * expository provenance text and does not affect licensing.
274
+ */
45
275
  const TemplateMetadataBaseSchema = z.object({
46
- name: z.string(),
276
+ name: z.string().trim().min(1, 'name must be a non-empty string (used as display_name on list_templates)'),
47
277
  description: z.string().optional(),
48
278
  category: z.string().optional(),
49
279
  source_url: z.string().url(),
@@ -53,17 +283,29 @@ const TemplateMetadataBaseSchema = z.object({
53
283
  attribution_text: z.string(),
54
284
  fields: z.array(FieldDefinitionSchema),
55
285
  priority_fields: z.array(z.string()).default([]),
286
+ credits: z.array(TemplateCreditSchema).default([]),
287
+ derived_from: z.string().optional(),
56
288
  });
57
289
  export const TemplateMetadataSchema = TemplateMetadataBaseSchema.superRefine((meta, ctx) => {
58
290
  validatePriorityFields(meta.fields, meta.priority_fields, ctx);
291
+ validateDerivedBooleanCollisions(meta.fields, ctx);
59
292
  });
60
293
  // --- External template schemas ---
294
+ /**
295
+ * Metadata for vendored external templates.
296
+ *
297
+ * `source_sha256` records the checksum of the unmodified upstream document so
298
+ * validation can verify provenance for no-derivatives templates before local
299
+ * transient fills or CI license checks rely on that source.
300
+ */
61
301
  export const ExternalMetadataSchema = TemplateMetadataBaseSchema.extend({
62
302
  source_sha256: z.string(),
63
303
  }).superRefine((meta, ctx) => {
64
304
  validatePriorityFields(meta.fields, meta.priority_fields, ctx);
305
+ validateDerivedBooleanCollisions(meta.fields, ctx);
65
306
  });
66
307
  // --- Recipe schemas ---
308
+ /** Declarative cleaner configuration for recipe DOCX preprocessing. */
67
309
  export const CleanConfigSchema = z.object({
68
310
  removeFootnotes: z.boolean().default(false),
69
311
  removeBeforePattern: z.string().optional(),
@@ -95,6 +337,7 @@ export const GuidanceEntrySchema = z.object({
95
337
  text: z.string(),
96
338
  groupId: z.string().optional(),
97
339
  });
340
+ /** Machine-readable guidance artifact produced from recipe cleaning inputs. */
98
341
  export const GuidanceOutputSchema = z.object({
99
342
  extractedFrom: z.object({
100
343
  sourceHash: z.string(),
@@ -107,8 +350,20 @@ const MarketDataCitationSchema = z.object({
107
350
  label: z.string(),
108
351
  url: z.string().optional(),
109
352
  });
353
+ /**
354
+ * Metadata required for recipe-based templates.
355
+ *
356
+ * Recipes point at non-redistributable upstream source DOCX files and ship only
357
+ * transformation instructions. Required fields are `name`, `source_url`,
358
+ * `source_version`, and `license_note`; `fields` and `priority_fields` reuse
359
+ * the same field-definition semantics as template metadata and default to
360
+ * empty arrays. `optional` defaults to `false`. `source_sha256` verifies
361
+ * provenance for upstream sources when present. `market_data_citations`
362
+ * records optional external citation metadata used by recipe guidance.
363
+ */
110
364
  export const RecipeMetadataSchema = z.object({
111
- name: z.string(),
365
+ name: z.string().trim().min(1, 'name must be a non-empty string (used as display_name on list_templates)'),
366
+ category: z.string().optional(),
112
367
  description: z.string().optional(),
113
368
  source_url: z.string().url(),
114
369
  source_version: z.string(),
@@ -120,6 +375,7 @@ export const RecipeMetadataSchema = z.object({
120
375
  market_data_citations: z.array(MarketDataCitationSchema).optional(),
121
376
  }).superRefine((meta, ctx) => {
122
377
  validatePriorityFields(meta.fields, meta.priority_fields, ctx);
378
+ validateDerivedBooleanCollisions(meta.fields, ctx);
123
379
  });
124
380
  // --- Template loaders ---
125
381
  export function loadMetadata(templateDir) {