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.
- package/README.de.md +300 -255
- package/README.es.md +301 -254
- package/README.md +391 -90
- package/README.pt-br.md +301 -254
- package/README.template.md +333 -0
- package/README.zh.md +300 -253
- package/SECURITY.md +34 -0
- package/content/recipes/nvca-stock-purchase-agreement/README.md +39 -0
- package/content/recipes/nvca-voting-agreement/README.md +43 -0
- package/content/templates/bonterms-mutual-nda/README.md +2 -2
- package/content/templates/bonterms-mutual-nda/metadata.yaml +5 -11
- package/content/templates/bonterms-professional-services-agreement/README.md +2 -2
- package/content/templates/bonterms-professional-services-agreement/metadata.yaml +2 -2
- package/content/templates/closing-checklist/template.docx +0 -0
- package/content/templates/closing-checklist/template.md +30 -0
- package/content/templates/common-paper-ai-addendum/template.docx +0 -0
- package/content/templates/common-paper-ai-addendum-in-app/template.docx +0 -0
- package/content/templates/common-paper-csa-with-ai/template.docx +0 -0
- package/content/templates/common-paper-independent-contractor-agreement/template.docx +0 -0
- package/content/templates/common-paper-mutual-nda/README.md +28 -0
- package/content/templates/common-paper-one-way-nda/metadata.yaml +1 -1
- package/content/templates/common-paper-term-sheet/template.docx +0 -0
- package/content/templates/openagreements-board-consent-safe/.template.generated.json +74 -0
- package/content/templates/openagreements-board-consent-safe/README.md +61 -0
- package/content/templates/openagreements-board-consent-safe/metadata.yaml +53 -0
- package/content/templates/openagreements-board-consent-safe/reference-source.docx +0 -0
- package/content/templates/openagreements-board-consent-safe/template.docx +0 -0
- package/content/templates/openagreements-board-consent-safe/template.md +66 -0
- package/content/templates/openagreements-due-diligence-request-list/README.md +68 -0
- package/content/templates/openagreements-due-diligence-request-list/metadata.yaml +300 -0
- package/content/templates/openagreements-due-diligence-request-list/template.docx +0 -0
- package/content/templates/openagreements-due-diligence-request-list/template.md +318 -0
- package/content/templates/openagreements-employee-ip-inventions-assignment/.template.generated.json +230 -0
- package/content/templates/openagreements-employee-ip-inventions-assignment/metadata.yaml +1 -1
- package/content/templates/openagreements-employee-ip-inventions-assignment/template.docx +0 -0
- package/content/templates/openagreements-employee-ip-inventions-assignment/template.md +96 -35
- package/content/templates/openagreements-employment-confidentiality-acknowledgement/README.md +1 -1
- package/content/templates/openagreements-employment-confidentiality-acknowledgement/metadata.yaml +2 -2
- package/content/templates/openagreements-employment-confidentiality-acknowledgement/template.docx +0 -0
- package/content/templates/openagreements-employment-confidentiality-acknowledgement/template.json +75 -0
- package/content/templates/openagreements-employment-confidentiality-acknowledgement/template.md +8 -4
- package/content/templates/openagreements-employment-offer-letter/.template.generated.json +224 -0
- package/content/templates/openagreements-employment-offer-letter/README.md +65 -1
- package/content/templates/openagreements-employment-offer-letter/metadata.yaml +1 -1
- package/content/templates/openagreements-employment-offer-letter/template.docx +0 -0
- package/content/templates/openagreements-employment-offer-letter/template.md +70 -30
- package/content/templates/openagreements-restrictive-covenant-florida/.template.generated.json +456 -0
- package/content/templates/openagreements-restrictive-covenant-florida/README.md +141 -0
- package/content/templates/openagreements-restrictive-covenant-florida/metadata.yaml +419 -0
- package/content/templates/openagreements-restrictive-covenant-florida/template.docx +0 -0
- package/content/templates/openagreements-restrictive-covenant-florida/template.md +233 -0
- package/content/templates/openagreements-restrictive-covenant-wyoming/.template.generated.json +399 -0
- package/content/templates/openagreements-restrictive-covenant-wyoming/metadata.yaml +69 -12
- package/content/templates/openagreements-restrictive-covenant-wyoming/template.docx +0 -0
- package/content/templates/openagreements-restrictive-covenant-wyoming/template.md +110 -59
- package/content/templates/openagreements-stockholder-consent-safe/.template.generated.json +74 -0
- package/content/templates/openagreements-stockholder-consent-safe/README.md +62 -0
- package/content/templates/openagreements-stockholder-consent-safe/metadata.yaml +53 -0
- package/content/templates/openagreements-stockholder-consent-safe/reference-source.docx +0 -0
- package/content/templates/openagreements-stockholder-consent-safe/template.docx +0 -0
- package/content/templates/openagreements-stockholder-consent-safe/template.md +62 -0
- package/content/templates/working-group-list/template.docx +0 -0
- package/content/templates/working-group-list/template.md +18 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/commands/fill.d.ts +1 -1
- package/dist/commands/fill.d.ts.map +1 -1
- package/dist/commands/fill.js +4 -1
- package/dist/commands/fill.js.map +1 -1
- package/dist/commands/list.js +11 -1
- package/dist/commands/list.js.map +1 -1
- package/dist/commands/recipe.js.map +1 -1
- package/dist/core/checklist/docx-import.d.ts.map +1 -1
- package/dist/core/employment/jurisdiction-rules.js +2 -2
- package/dist/core/employment/jurisdiction-rules.js.map +1 -1
- package/dist/core/employment/memo.d.ts +1 -1
- package/dist/core/employment/memo.d.ts.map +1 -1
- package/dist/core/employment/memo.js +14 -6
- package/dist/core/employment/memo.js.map +1 -1
- package/dist/core/engine.d.ts.map +1 -1
- package/dist/core/engine.js +28 -0
- package/dist/core/engine.js.map +1 -1
- package/dist/core/fill-pipeline.d.ts +30 -5
- package/dist/core/fill-pipeline.d.ts.map +1 -1
- package/dist/core/fill-pipeline.js +173 -9
- package/dist/core/fill-pipeline.js.map +1 -1
- package/dist/core/humanize-docx.d.ts +21 -0
- package/dist/core/humanize-docx.d.ts.map +1 -0
- package/dist/core/humanize-docx.js +492 -0
- package/dist/core/humanize-docx.js.map +1 -0
- package/dist/core/metadata.d.ts +119 -65
- package/dist/core/metadata.d.ts.map +1 -1
- package/dist/core/metadata.js +269 -13
- package/dist/core/metadata.js.map +1 -1
- package/dist/core/recipe/bracket-normalizer.d.ts +1 -1
- package/dist/core/recipe/bracket-normalizer.d.ts.map +1 -1
- package/dist/core/recipe/bracket-normalizer.js +3 -0
- package/dist/core/recipe/bracket-normalizer.js.map +1 -1
- package/dist/core/recipe/computed.d.ts +1 -1
- package/dist/core/recipe/computed.d.ts.map +1 -1
- package/dist/core/recipe/index.d.ts.map +1 -1
- package/dist/core/recipe/index.js +22 -4
- package/dist/core/recipe/index.js.map +1 -1
- package/dist/core/recipe/patcher.js +0 -24
- package/dist/core/recipe/patcher.js.map +1 -1
- package/dist/core/recipe/types.d.ts +1 -1
- package/dist/core/recipe/types.d.ts.map +1 -1
- package/dist/core/recipe/verifier.js.map +1 -1
- package/dist/core/selector.js +0 -1
- package/dist/core/selector.js.map +1 -1
- package/dist/core/template-listing.d.ts +6 -8
- package/dist/core/template-listing.d.ts.map +1 -1
- package/dist/core/template-listing.js +24 -0
- package/dist/core/template-listing.js.map +1 -1
- package/dist/core/template-search.d.ts +36 -0
- package/dist/core/template-search.d.ts.map +1 -0
- package/dist/core/template-search.js +84 -0
- package/dist/core/template-search.js.map +1 -0
- package/dist/core/unified-pipeline.d.ts +2 -0
- package/dist/core/unified-pipeline.d.ts.map +1 -1
- package/dist/core/unified-pipeline.js +19 -1
- package/dist/core/unified-pipeline.js.map +1 -1
- package/dist/core/validation/template.d.ts +32 -0
- package/dist/core/validation/template.d.ts.map +1 -1
- package/dist/core/validation/template.js +163 -3
- package/dist/core/validation/template.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/gemini-extension.json +1 -1
- package/node_modules/@usejunior/docx-core/dist/.tsbuildinfo +1 -1
- package/node_modules/@usejunior/docx-core/dist/atomizer.d.ts.map +1 -1
- package/node_modules/@usejunior/docx-core/dist/atomizer.js +12 -4
- package/node_modules/@usejunior/docx-core/dist/atomizer.js.map +1 -1
- package/node_modules/@usejunior/docx-core/dist/baselines/atomizer/atomLcs.d.ts +0 -14
- package/node_modules/@usejunior/docx-core/dist/baselines/atomizer/atomLcs.d.ts.map +1 -1
- package/node_modules/@usejunior/docx-core/dist/baselines/atomizer/atomLcs.js +31 -2
- package/node_modules/@usejunior/docx-core/dist/baselines/atomizer/atomLcs.js.map +1 -1
- package/node_modules/@usejunior/docx-core/dist/baselines/atomizer/documentReconstructor.d.ts +11 -0
- package/node_modules/@usejunior/docx-core/dist/baselines/atomizer/documentReconstructor.d.ts.map +1 -1
- package/node_modules/@usejunior/docx-core/dist/baselines/atomizer/documentReconstructor.js +180 -6
- package/node_modules/@usejunior/docx-core/dist/baselines/atomizer/documentReconstructor.js.map +1 -1
- package/node_modules/@usejunior/docx-core/dist/baselines/atomizer/hierarchicalLcs.d.ts +14 -4
- package/node_modules/@usejunior/docx-core/dist/baselines/atomizer/hierarchicalLcs.d.ts.map +1 -1
- package/node_modules/@usejunior/docx-core/dist/baselines/atomizer/hierarchicalLcs.js +344 -60
- package/node_modules/@usejunior/docx-core/dist/baselines/atomizer/hierarchicalLcs.js.map +1 -1
- package/node_modules/@usejunior/docx-core/dist/baselines/atomizer/inPlaceModifier.d.ts +35 -1
- package/node_modules/@usejunior/docx-core/dist/baselines/atomizer/inPlaceModifier.d.ts.map +1 -1
- package/node_modules/@usejunior/docx-core/dist/baselines/atomizer/inPlaceModifier.js +186 -12
- package/node_modules/@usejunior/docx-core/dist/baselines/atomizer/inPlaceModifier.js.map +1 -1
- package/node_modules/@usejunior/docx-core/dist/baselines/atomizer/pipeline.d.ts.map +1 -1
- package/node_modules/@usejunior/docx-core/dist/baselines/atomizer/pipeline.js +31 -13
- package/node_modules/@usejunior/docx-core/dist/baselines/atomizer/pipeline.js.map +1 -1
- package/node_modules/@usejunior/docx-core/dist/baselines/atomizer/xmlToWmlElement.d.ts.map +1 -1
- package/node_modules/@usejunior/docx-core/dist/baselines/atomizer/xmlToWmlElement.js +3 -2
- package/node_modules/@usejunior/docx-core/dist/baselines/atomizer/xmlToWmlElement.js.map +1 -1
- package/node_modules/@usejunior/docx-core/dist/format-detection.d.ts.map +1 -1
- package/node_modules/@usejunior/docx-core/dist/format-detection.js +2 -1
- package/node_modules/@usejunior/docx-core/dist/format-detection.js.map +1 -1
- package/node_modules/@usejunior/docx-core/dist/move-detection.d.ts.map +1 -1
- package/node_modules/@usejunior/docx-core/dist/move-detection.js +3 -4
- package/node_modules/@usejunior/docx-core/dist/move-detection.js.map +1 -1
- package/node_modules/@usejunior/docx-core/dist/primitives/comments.d.ts +2 -2
- package/node_modules/@usejunior/docx-core/dist/primitives/comments.d.ts.map +1 -1
- package/node_modules/@usejunior/docx-core/dist/primitives/comments.js +7 -2
- package/node_modules/@usejunior/docx-core/dist/primitives/comments.js.map +1 -1
- package/node_modules/@usejunior/docx-core/dist/primitives/document.d.ts +2 -2
- package/node_modules/@usejunior/docx-core/dist/primitives/document.d.ts.map +1 -1
- package/node_modules/@usejunior/docx-core/dist/primitives/dom-helpers.d.ts +1 -5
- package/node_modules/@usejunior/docx-core/dist/primitives/dom-helpers.d.ts.map +1 -1
- package/node_modules/@usejunior/docx-core/dist/primitives/dom-helpers.js +12 -25
- package/node_modules/@usejunior/docx-core/dist/primitives/dom-helpers.js.map +1 -1
- package/node_modules/@usejunior/docx-core/dist/primitives/layout.d.ts.map +1 -1
- package/node_modules/@usejunior/docx-core/dist/primitives/layout.js +4 -6
- package/node_modules/@usejunior/docx-core/dist/primitives/layout.js.map +1 -1
- package/node_modules/@usejunior/docx-core/dist/primitives/xml.d.ts.map +1 -1
- package/node_modules/@usejunior/docx-core/dist/primitives/xml.js +2 -0
- package/node_modules/@usejunior/docx-core/dist/primitives/xml.js.map +1 -1
- package/node_modules/@usejunior/docx-core/package.json +3 -3
- package/package.json +29 -15
- package/skills/canonical-markdown-authoring/CONNECTORS.md +67 -0
- package/skills/canonical-markdown-authoring/SKILL.md +565 -0
- package/skills/client-email/SKILL.md +2 -0
- package/skills/cloud-service-agreement/CONNECTORS.md +2 -2
- package/skills/cloud-service-agreement/SKILL.md +39 -2
- package/skills/cloud-service-agreement/template-filling-execution.md +92 -0
- package/skills/data-privacy-agreement/CONNECTORS.md +2 -2
- package/skills/data-privacy-agreement/SKILL.md +2 -0
- package/skills/delaware-franchise-tax/SKILL.md +2 -0
- package/skills/edit-docx-agreement/SKILL.md +2 -0
- package/skills/employment-contract/CONNECTORS.md +2 -2
- package/skills/employment-contract/SKILL.md +2 -0
- package/skills/iso-27001-evidence-collection/SKILL.md +2 -0
- package/skills/iso-27001-internal-audit/SKILL.md +2 -0
- package/skills/nda/CONNECTORS.md +2 -2
- package/skills/nda/SKILL.md +46 -2
- package/skills/nda/template-filling-execution.md +98 -0
- package/skills/non-compete-contract-explainer/SKILL.md +107 -0
- package/skills/non-compete-contract-explainer/content/wyoming.md +286 -0
- package/skills/non-compete-contract-explainer/manifest.json +18 -0
- package/skills/open-agreements/CONNECTORS.md +2 -2
- package/skills/open-agreements/SKILL.md +165 -67
- package/skills/open-agreements/template-filling-execution.md +92 -0
- package/skills/recipe-quality-audit/SKILL.md +2 -0
- package/skills/safe/CONNECTORS.md +2 -2
- package/skills/safe/SKILL.md +39 -2
- package/skills/safe/template-filling-execution.md +92 -0
- package/skills/services-agreement/CONNECTORS.md +2 -2
- package/skills/services-agreement/SKILL.md +40 -1
- package/skills/services-agreement/template-filling-execution.md +81 -0
- package/skills/shared/template-filling-execution.md +2 -2
- package/skills/soc2-readiness/SKILL.md +2 -0
- package/skills/unit-test-philosophy/SKILL.md +3 -0
- package/skills/venture-financing/CONNECTORS.md +2 -2
- package/skills/venture-financing/SKILL.md +2 -0
- package/content/templates/openagreements-restrictive-covenant-wyoming/practice-note.md +0 -103
- package/node_modules/@usejunior/docx-core/node_modules/@xmldom/xmldom/CHANGELOG.md +0 -468
- package/node_modules/@usejunior/docx-core/node_modules/@xmldom/xmldom/LICENSE +0 -8
- package/node_modules/@usejunior/docx-core/node_modules/@xmldom/xmldom/SECURITY.md +0 -50
- package/node_modules/@usejunior/docx-core/node_modules/@xmldom/xmldom/index.d.ts +0 -43
- package/node_modules/@usejunior/docx-core/node_modules/@xmldom/xmldom/lib/.eslintrc.yml +0 -2
- package/node_modules/@usejunior/docx-core/node_modules/@xmldom/xmldom/lib/conventions.js +0 -203
- package/node_modules/@usejunior/docx-core/node_modules/@xmldom/xmldom/lib/dom-parser.js +0 -322
- package/node_modules/@usejunior/docx-core/node_modules/@xmldom/xmldom/lib/dom.js +0 -1879
- package/node_modules/@usejunior/docx-core/node_modules/@xmldom/xmldom/lib/entities.js +0 -2166
- package/node_modules/@usejunior/docx-core/node_modules/@xmldom/xmldom/lib/index.js +0 -4
- package/node_modules/@usejunior/docx-core/node_modules/@xmldom/xmldom/lib/sax.js +0 -662
- package/node_modules/@usejunior/docx-core/node_modules/@xmldom/xmldom/package.json +0 -71
- package/node_modules/@usejunior/docx-core/node_modules/@xmldom/xmldom/readme.md +0 -356
- package/node_modules/core-util-is/LICENSE +0 -19
- package/node_modules/core-util-is/README.md +0 -3
- package/node_modules/core-util-is/lib/util.js +0 -107
- package/node_modules/core-util-is/package.json +0 -38
- package/node_modules/immediate/LICENSE.txt +0 -20
- package/node_modules/immediate/README.md +0 -93
- package/node_modules/immediate/dist/immediate.js +0 -75
- package/node_modules/immediate/dist/immediate.min.js +0 -1
- package/node_modules/immediate/lib/browser.js +0 -69
- package/node_modules/immediate/lib/index.js +0 -73
- package/node_modules/immediate/package.json +0 -42
- package/node_modules/inherits/LICENSE +0 -16
- package/node_modules/inherits/README.md +0 -42
- package/node_modules/inherits/inherits.js +0 -9
- package/node_modules/inherits/inherits_browser.js +0 -27
- package/node_modules/inherits/package.json +0 -29
- package/node_modules/isarray/.npmignore +0 -1
- package/node_modules/isarray/.travis.yml +0 -4
- package/node_modules/isarray/Makefile +0 -6
- package/node_modules/isarray/README.md +0 -60
- package/node_modules/isarray/component.json +0 -19
- package/node_modules/isarray/index.js +0 -5
- package/node_modules/isarray/package.json +0 -45
- package/node_modules/isarray/test.js +0 -20
- package/node_modules/jszip/.codeclimate.yml +0 -16
- package/node_modules/jszip/.editorconfig +0 -8
- package/node_modules/jszip/.eslintrc.js +0 -43
- package/node_modules/jszip/.github/workflows/pr.yaml +0 -58
- package/node_modules/jszip/.jekyll-metadata +0 -0
- package/node_modules/jszip/.travis.yml +0 -17
- package/node_modules/jszip/CHANGES.md +0 -204
- package/node_modules/jszip/LICENSE.markdown +0 -651
- package/node_modules/jszip/README.markdown +0 -33
- package/node_modules/jszip/deps.js +0 -37
- package/node_modules/jszip/dist/jszip.js +0 -11577
- package/node_modules/jszip/dist/jszip.min.js +0 -13
- package/node_modules/jszip/graph.svg +0 -601
- package/node_modules/jszip/index.d.ts +0 -330
- package/node_modules/jszip/lib/base64.js +0 -106
- package/node_modules/jszip/lib/compressedObject.js +0 -74
- package/node_modules/jszip/lib/compressions.js +0 -14
- package/node_modules/jszip/lib/crc32.js +0 -77
- package/node_modules/jszip/lib/defaults.js +0 -11
- package/node_modules/jszip/lib/external.js +0 -18
- package/node_modules/jszip/lib/flate.js +0 -85
- package/node_modules/jszip/lib/generate/ZipFileWorker.js +0 -539
- package/node_modules/jszip/lib/generate/index.js +0 -57
- package/node_modules/jszip/lib/index.js +0 -55
- package/node_modules/jszip/lib/license_header.js +0 -11
- package/node_modules/jszip/lib/load.js +0 -88
- package/node_modules/jszip/lib/nodejs/NodejsStreamInputAdapter.js +0 -74
- package/node_modules/jszip/lib/nodejs/NodejsStreamOutputAdapter.js +0 -42
- package/node_modules/jszip/lib/nodejsUtils.js +0 -57
- package/node_modules/jszip/lib/object.js +0 -384
- package/node_modules/jszip/lib/readable-stream-browser.js +0 -10
- package/node_modules/jszip/lib/reader/ArrayReader.js +0 -57
- package/node_modules/jszip/lib/reader/DataReader.js +0 -116
- package/node_modules/jszip/lib/reader/NodeBufferReader.js +0 -19
- package/node_modules/jszip/lib/reader/StringReader.js +0 -38
- package/node_modules/jszip/lib/reader/Uint8ArrayReader.js +0 -22
- package/node_modules/jszip/lib/reader/readerFor.js +0 -28
- package/node_modules/jszip/lib/signature.js +0 -7
- package/node_modules/jszip/lib/stream/ConvertWorker.js +0 -26
- package/node_modules/jszip/lib/stream/Crc32Probe.js +0 -24
- package/node_modules/jszip/lib/stream/DataLengthProbe.js +0 -29
- package/node_modules/jszip/lib/stream/DataWorker.js +0 -116
- package/node_modules/jszip/lib/stream/GenericWorker.js +0 -263
- package/node_modules/jszip/lib/stream/StreamHelper.js +0 -214
- package/node_modules/jszip/lib/support.js +0 -38
- package/node_modules/jszip/lib/utf8.js +0 -275
- package/node_modules/jszip/lib/utils.js +0 -501
- package/node_modules/jszip/lib/zipEntries.js +0 -261
- package/node_modules/jszip/lib/zipEntry.js +0 -293
- package/node_modules/jszip/lib/zipObject.js +0 -133
- package/node_modules/jszip/package.json +0 -67
- package/node_modules/jszip/sponsors.md +0 -21
- package/node_modules/jszip/tsconfig.json +0 -101
- package/node_modules/jszip/vendor/FileSaver.js +0 -247
- package/node_modules/lie/README.md +0 -62
- package/node_modules/lie/dist/lie.js +0 -350
- package/node_modules/lie/dist/lie.min.js +0 -1
- package/node_modules/lie/dist/lie.polyfill.js +0 -358
- package/node_modules/lie/dist/lie.polyfill.min.js +0 -1
- package/node_modules/lie/lib/browser.js +0 -273
- package/node_modules/lie/lib/index.js +0 -298
- package/node_modules/lie/license.md +0 -7
- package/node_modules/lie/lie.d.ts +0 -244
- package/node_modules/lie/package.json +0 -69
- package/node_modules/lie/polyfill.js +0 -4
- package/node_modules/pako/LICENSE +0 -21
- package/node_modules/pako/README.md +0 -191
- package/node_modules/pako/dist/pako.js +0 -6818
- package/node_modules/pako/dist/pako.min.js +0 -1
- package/node_modules/pako/dist/pako_deflate.js +0 -3997
- package/node_modules/pako/dist/pako_deflate.min.js +0 -1
- package/node_modules/pako/dist/pako_inflate.js +0 -3300
- package/node_modules/pako/dist/pako_inflate.min.js +0 -1
- package/node_modules/pako/index.js +0 -14
- package/node_modules/pako/lib/deflate.js +0 -400
- package/node_modules/pako/lib/inflate.js +0 -423
- package/node_modules/pako/lib/utils/common.js +0 -105
- package/node_modules/pako/lib/utils/strings.js +0 -187
- package/node_modules/pako/lib/zlib/README +0 -59
- package/node_modules/pako/lib/zlib/adler32.js +0 -51
- package/node_modules/pako/lib/zlib/constants.js +0 -68
- package/node_modules/pako/lib/zlib/crc32.js +0 -59
- package/node_modules/pako/lib/zlib/deflate.js +0 -1874
- package/node_modules/pako/lib/zlib/gzheader.js +0 -58
- package/node_modules/pako/lib/zlib/inffast.js +0 -345
- package/node_modules/pako/lib/zlib/inflate.js +0 -1556
- package/node_modules/pako/lib/zlib/inftrees.js +0 -343
- package/node_modules/pako/lib/zlib/messages.js +0 -32
- package/node_modules/pako/lib/zlib/trees.js +0 -1222
- package/node_modules/pako/lib/zlib/zstream.js +0 -47
- package/node_modules/pako/package.json +0 -44
- package/node_modules/process-nextick-args/index.js +0 -45
- package/node_modules/process-nextick-args/license.md +0 -19
- package/node_modules/process-nextick-args/package.json +0 -25
- package/node_modules/process-nextick-args/readme.md +0 -18
- package/node_modules/readable-stream/.travis.yml +0 -34
- package/node_modules/readable-stream/CONTRIBUTING.md +0 -38
- package/node_modules/readable-stream/GOVERNANCE.md +0 -136
- package/node_modules/readable-stream/LICENSE +0 -47
- package/node_modules/readable-stream/README.md +0 -58
- package/node_modules/readable-stream/doc/wg-meetings/2015-01-30.md +0 -60
- package/node_modules/readable-stream/duplex-browser.js +0 -1
- package/node_modules/readable-stream/duplex.js +0 -1
- package/node_modules/readable-stream/lib/_stream_duplex.js +0 -131
- package/node_modules/readable-stream/lib/_stream_passthrough.js +0 -47
- package/node_modules/readable-stream/lib/_stream_readable.js +0 -1019
- package/node_modules/readable-stream/lib/_stream_transform.js +0 -214
- package/node_modules/readable-stream/lib/_stream_writable.js +0 -685
- package/node_modules/readable-stream/lib/internal/streams/BufferList.js +0 -78
- package/node_modules/readable-stream/lib/internal/streams/destroy.js +0 -84
- package/node_modules/readable-stream/lib/internal/streams/stream-browser.js +0 -1
- package/node_modules/readable-stream/lib/internal/streams/stream.js +0 -1
- package/node_modules/readable-stream/package.json +0 -52
- package/node_modules/readable-stream/passthrough.js +0 -1
- package/node_modules/readable-stream/readable-browser.js +0 -7
- package/node_modules/readable-stream/readable.js +0 -19
- package/node_modules/readable-stream/transform.js +0 -1
- package/node_modules/readable-stream/writable-browser.js +0 -1
- package/node_modules/readable-stream/writable.js +0 -8
- package/node_modules/safe-buffer/LICENSE +0 -21
- package/node_modules/safe-buffer/README.md +0 -584
- package/node_modules/safe-buffer/index.d.ts +0 -187
- package/node_modules/safe-buffer/index.js +0 -62
- package/node_modules/safe-buffer/package.json +0 -37
- package/node_modules/setimmediate/LICENSE.txt +0 -20
- package/node_modules/setimmediate/package.json +0 -30
- package/node_modules/setimmediate/setImmediate.js +0 -186
- package/node_modules/string_decoder/.travis.yml +0 -50
- package/node_modules/string_decoder/LICENSE +0 -48
- package/node_modules/string_decoder/README.md +0 -47
- package/node_modules/string_decoder/lib/string_decoder.js +0 -296
- package/node_modules/string_decoder/package.json +0 -31
- package/node_modules/util-deprecate/History.md +0 -16
- package/node_modules/util-deprecate/LICENSE +0 -24
- package/node_modules/util-deprecate/README.md +0 -53
- package/node_modules/util-deprecate/browser.js +0 -67
- package/node_modules/util-deprecate/node.js +0 -6
- package/node_modules/util-deprecate/package.json +0 -27
package/dist/core/metadata.d.ts
CHANGED
|
@@ -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
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
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.
|
|
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
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
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
|
-
|
|
49
|
-
|
|
50
|
-
|
|
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.
|
|
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
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
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
|
-
|
|
81
|
-
|
|
82
|
-
|
|
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.
|
|
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,
|
|
1
|
+
{"version":3,"file":"metadata.d.ts","sourceRoot":"","sources":["../../src/core/metadata.ts"],"names":[],"mappings":"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"}
|
package/dist/core/metadata.js
CHANGED
|
@@ -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
|
-
|
|
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:
|
|
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
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
if (
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
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) {
|