open-agreements 0.2.1 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.de.md +371 -0
- package/README.es.md +371 -0
- package/README.md +40 -2
- package/README.pt-br.md +371 -0
- package/README.zh.md +371 -0
- package/content/templates/closing-checklist/metadata.yaml +6 -13
- package/content/templates/closing-checklist/template.docx +0 -0
- package/content/templates/common-paper-ai-addendum/README.md +18 -0
- package/content/templates/common-paper-ai-addendum/metadata.yaml +136 -0
- package/content/templates/common-paper-ai-addendum/replacements.json +5 -0
- package/content/templates/common-paper-ai-addendum/selections.json +62 -0
- package/content/templates/common-paper-ai-addendum/template.docx +0 -0
- package/content/templates/common-paper-ai-addendum-in-app/metadata.yaml +88 -0
- package/content/templates/common-paper-ai-addendum-in-app/replacements.json +5 -0
- package/content/templates/common-paper-ai-addendum-in-app/selections.json +62 -0
- package/content/templates/common-paper-amendment/README.md +18 -0
- package/content/templates/common-paper-amendment/metadata.yaml +48 -0
- package/content/templates/common-paper-amendment/template.docx +0 -0
- package/content/templates/common-paper-business-associate-agreement/README.md +20 -1
- package/content/templates/common-paper-business-associate-agreement/metadata.yaml +111 -3
- package/content/templates/common-paper-business-associate-agreement/replacements.json +2 -1
- package/content/templates/common-paper-business-associate-agreement/selections.json +38 -0
- package/content/templates/common-paper-business-associate-agreement/template.docx +0 -0
- package/content/templates/common-paper-cloud-service-agreement/README.md +18 -0
- package/content/templates/common-paper-cloud-service-agreement/metadata.yaml +48 -0
- package/content/templates/common-paper-cloud-service-agreement/template.docx +0 -0
- package/content/templates/common-paper-csa-with-ai/README.md +18 -0
- package/content/templates/common-paper-csa-with-ai/metadata.yaml +462 -2
- package/content/templates/common-paper-csa-with-ai/replacements.json +5 -2
- package/content/templates/common-paper-csa-with-ai/selections.json +291 -0
- package/content/templates/common-paper-csa-with-ai/template.docx +0 -0
- package/content/templates/common-paper-csa-with-sla/README.md +18 -0
- package/content/templates/common-paper-csa-with-sla/metadata.yaml +387 -2
- package/content/templates/common-paper-csa-with-sla/replacements.json +4 -2
- package/content/templates/common-paper-csa-with-sla/selections.json +257 -0
- package/content/templates/common-paper-csa-with-sla/template.docx +0 -0
- package/content/templates/common-paper-csa-without-sla/README.md +18 -0
- package/content/templates/common-paper-csa-without-sla/metadata.yaml +380 -2
- package/content/templates/common-paper-csa-without-sla/replacements.json +5 -2
- package/content/templates/common-paper-csa-without-sla/selections.json +250 -0
- package/content/templates/common-paper-csa-without-sla/template.docx +0 -0
- package/content/templates/common-paper-data-processing-agreement/README.md +16 -0
- package/content/templates/common-paper-data-processing-agreement/metadata.yaml +397 -3
- package/content/templates/common-paper-data-processing-agreement/replacements.json +2 -1
- package/content/templates/common-paper-data-processing-agreement/selections.json +211 -0
- package/content/templates/common-paper-data-processing-agreement/template.docx +0 -0
- package/content/templates/common-paper-design-partner-agreement/README.md +18 -0
- package/content/templates/common-paper-design-partner-agreement/metadata.yaml +99 -3
- package/content/templates/common-paper-design-partner-agreement/selections.json +27 -0
- package/content/templates/common-paper-design-partner-agreement/template.docx +0 -0
- package/content/templates/common-paper-independent-contractor-agreement/README.md +18 -0
- package/content/templates/common-paper-independent-contractor-agreement/clean.json +8 -0
- package/content/templates/common-paper-independent-contractor-agreement/metadata.yaml +52 -0
- package/content/templates/common-paper-independent-contractor-agreement/replacements.json +3 -0
- package/content/templates/common-paper-independent-contractor-agreement/template.docx +0 -0
- package/content/templates/common-paper-letter-of-intent/README.md +18 -0
- package/content/templates/common-paper-letter-of-intent/metadata.yaml +48 -0
- package/content/templates/common-paper-letter-of-intent/template.docx +0 -0
- package/content/templates/common-paper-mutual-nda/README.md +29 -7
- package/content/templates/common-paper-mutual-nda/metadata.yaml +48 -0
- package/content/templates/common-paper-mutual-nda/template.docx +0 -0
- package/content/templates/common-paper-one-way-nda/README.md +13 -0
- package/content/templates/common-paper-one-way-nda/metadata.yaml +24 -0
- package/content/templates/common-paper-one-way-nda/selections.json +38 -0
- package/content/templates/common-paper-one-way-nda/template.docx +0 -0
- package/content/templates/common-paper-order-form/README.md +18 -0
- package/content/templates/common-paper-order-form/metadata.yaml +115 -3
- package/content/templates/common-paper-order-form/replacements.json +5 -2
- package/content/templates/common-paper-order-form/selections.json +56 -0
- package/content/templates/common-paper-order-form/template.docx +0 -0
- package/content/templates/common-paper-order-form-with-sla/README.md +18 -0
- package/content/templates/common-paper-order-form-with-sla/metadata.yaml +149 -3
- package/content/templates/common-paper-order-form-with-sla/replacements.json +6 -2
- package/content/templates/common-paper-order-form-with-sla/selections.json +64 -0
- package/content/templates/common-paper-order-form-with-sla/template.docx +0 -0
- package/content/templates/common-paper-partnership-agreement/README.md +18 -0
- package/content/templates/common-paper-partnership-agreement/metadata.yaml +293 -4
- package/content/templates/common-paper-partnership-agreement/replacements.json +5 -2
- package/content/templates/common-paper-partnership-agreement/selections.json +138 -0
- package/content/templates/common-paper-partnership-agreement/template.docx +0 -0
- package/content/templates/common-paper-pilot-agreement/README.md +18 -0
- package/content/templates/common-paper-pilot-agreement/metadata.yaml +48 -0
- package/content/templates/common-paper-pilot-agreement/template.docx +0 -0
- package/content/templates/common-paper-professional-services-agreement/README.md +18 -0
- package/content/templates/common-paper-professional-services-agreement/metadata.yaml +338 -4
- package/content/templates/common-paper-professional-services-agreement/replacements.json +7 -4
- package/content/templates/common-paper-professional-services-agreement/selections.json +207 -0
- package/content/templates/common-paper-professional-services-agreement/template.docx +0 -0
- package/content/templates/common-paper-statement-of-work/README.md +18 -0
- package/content/templates/common-paper-statement-of-work/metadata.yaml +110 -2
- package/content/templates/common-paper-statement-of-work/replacements.json +4 -1
- package/content/templates/common-paper-statement-of-work/selections.json +55 -0
- package/content/templates/common-paper-statement-of-work/template.docx +0 -0
- package/content/templates/common-paper-term-sheet/README.md +18 -0
- package/content/templates/common-paper-term-sheet/metadata.yaml +48 -0
- package/content/templates/common-paper-term-sheet/template.docx +0 -0
- package/content/templates/working-group-list/template.docx +0 -0
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +47 -10
- package/dist/cli/index.js.map +1 -1
- package/dist/commands/checklist.d.ts +21 -1
- package/dist/commands/checklist.d.ts.map +1 -1
- package/dist/commands/checklist.js +176 -44
- package/dist/commands/checklist.js.map +1 -1
- package/dist/commands/list.d.ts.map +1 -1
- package/dist/commands/list.js +1 -46
- package/dist/commands/list.js.map +1 -1
- package/dist/commands/recipe.js +3 -11
- package/dist/commands/recipe.js.map +1 -1
- package/dist/core/checklist/format-checklist-docx.d.ts +10 -0
- package/dist/core/checklist/format-checklist-docx.d.ts.map +1 -0
- package/dist/core/checklist/format-checklist-docx.js +321 -0
- package/dist/core/checklist/format-checklist-docx.js.map +1 -0
- package/dist/core/checklist/index.d.ts +23 -14
- package/dist/core/checklist/index.d.ts.map +1 -1
- package/dist/core/checklist/index.js +83 -39
- package/dist/core/checklist/index.js.map +1 -1
- package/dist/core/checklist/jsonl-stores.d.ts +3 -0
- package/dist/core/checklist/jsonl-stores.d.ts.map +1 -0
- package/dist/core/checklist/jsonl-stores.js +16 -0
- package/dist/core/checklist/jsonl-stores.js.map +1 -0
- package/dist/core/checklist/schemas.d.ts +2 -2
- package/dist/core/checklist/schemas.js +1 -1
- package/dist/core/checklist/schemas.js.map +1 -1
- package/dist/core/checklist/state-manager.d.ts +146 -0
- package/dist/core/checklist/state-manager.d.ts.map +1 -0
- package/dist/core/checklist/state-manager.js +147 -0
- package/dist/core/checklist/state-manager.js.map +1 -0
- package/dist/core/checklist/status-labels.d.ts +6 -0
- package/dist/core/checklist/status-labels.d.ts.map +1 -0
- package/dist/core/checklist/status-labels.js +29 -0
- package/dist/core/checklist/status-labels.js.map +1 -0
- package/dist/core/engine.d.ts +1 -0
- package/dist/core/engine.d.ts.map +1 -1
- package/dist/core/engine.js +72 -11
- package/dist/core/engine.js.map +1 -1
- package/dist/core/selector.d.ts +2 -0
- package/dist/core/selector.d.ts.map +1 -1
- package/dist/core/selector.js +181 -39
- package/dist/core/selector.js.map +1 -1
- package/dist/core/template-listing.d.ts +40 -0
- package/dist/core/template-listing.d.ts.map +1 -0
- package/dist/core/template-listing.js +91 -0
- package/dist/core/template-listing.js.map +1 -0
- package/dist/core/validation/recipe.d.ts.map +1 -1
- package/dist/core/validation/recipe.js +47 -61
- package/dist/core/validation/recipe.js.map +1 -1
- package/dist/core/validation/template.d.ts.map +1 -1
- package/dist/core/validation/template.js +10 -2
- package/dist/core/validation/template.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/package.json +8 -2
- package/skills/cloud-service-agreement/SKILL.md +9 -0
- package/skills/data-privacy-agreement/SKILL.md +9 -0
- package/skills/edit-docx-agreement/CONNECTORS.md +20 -0
- package/skills/edit-docx-agreement/SKILL.md +77 -0
- package/skills/employment-contract/SKILL.md +9 -0
- package/skills/iso-27001-evidence-collection/CONNECTORS.md +39 -0
- package/skills/iso-27001-evidence-collection/SKILL.md +304 -0
- package/skills/iso-27001-evidence-collection/rules/api-exports.md +191 -0
- package/skills/iso-27001-evidence-collection/rules/evidence-types.md +107 -0
- package/skills/iso-27001-evidence-collection/rules/screenshot-guide.md +77 -0
- package/skills/iso-27001-internal-audit/CONNECTORS.md +39 -0
- package/skills/iso-27001-internal-audit/SKILL.md +275 -0
- package/skills/iso-27001-internal-audit/rules/access-control.md +191 -0
- package/skills/iso-27001-internal-audit/rules/business-continuity.md +94 -0
- package/skills/iso-27001-internal-audit/rules/change-management.md +211 -0
- package/skills/iso-27001-internal-audit/rules/encryption.md +93 -0
- package/skills/iso-27001-internal-audit/rules/incident-response.md +127 -0
- package/skills/iso-27001-internal-audit/rules/isms-management.md +164 -0
- package/skills/iso-27001-internal-audit/rules/logging-monitoring.md +96 -0
- package/skills/iso-27001-internal-audit/rules/people-controls.md +161 -0
- package/skills/iso-27001-internal-audit/rules/supplier-management.md +92 -0
- package/skills/nda/SKILL.md +9 -0
- package/skills/open-agreements/SKILL.md +9 -0
- package/skills/safe/SKILL.md +9 -0
- package/skills/services-agreement/SKILL.md +9 -0
- package/skills/soc2-readiness/CONNECTORS.md +39 -0
- package/skills/soc2-readiness/SKILL.md +301 -0
- package/skills/soc2-readiness/rules/change-vendor-management.md +104 -0
- package/skills/soc2-readiness/rules/communication-info.md +85 -0
- package/skills/soc2-readiness/rules/control-activities.md +95 -0
- package/skills/soc2-readiness/rules/control-environment.md +126 -0
- package/skills/soc2-readiness/rules/logical-access.md +264 -0
- package/skills/soc2-readiness/rules/monitoring-activities.md +66 -0
- package/skills/soc2-readiness/rules/optional-categories.md +264 -0
- package/skills/soc2-readiness/rules/privacy-criteria.md +359 -0
- package/skills/soc2-readiness/rules/risk-assessment.md +100 -0
- package/skills/soc2-readiness/rules/system-operations.md +170 -0
- package/skills/venture-financing/SKILL.md +9 -0
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared template-listing module.
|
|
3
|
+
*
|
|
4
|
+
* Canonical helpers for listing templates with metadata, used by:
|
|
5
|
+
* - CLI `list --json` command
|
|
6
|
+
* - Vercel API `_shared.ts`
|
|
7
|
+
* - MCP `tools.ts` (via dynamic import or npm dependency)
|
|
8
|
+
*/
|
|
9
|
+
import { loadMetadata } from './metadata.js';
|
|
10
|
+
import { listTemplateEntries } from '../utils/paths.js';
|
|
11
|
+
// ---------------------------------------------------------------------------
|
|
12
|
+
// Helpers
|
|
13
|
+
// ---------------------------------------------------------------------------
|
|
14
|
+
export function categoryFromId(id) {
|
|
15
|
+
if (id.includes('employment') || id.includes('employee-ip-inventions')) {
|
|
16
|
+
return 'employment';
|
|
17
|
+
}
|
|
18
|
+
return 'general';
|
|
19
|
+
}
|
|
20
|
+
/** Extract a human-friendly source name from a URL */
|
|
21
|
+
export function sourceName(url) {
|
|
22
|
+
try {
|
|
23
|
+
const parsed = new URL(url);
|
|
24
|
+
const host = parsed.hostname.replace(/^www\./, '');
|
|
25
|
+
const pathname = parsed.pathname;
|
|
26
|
+
if (host === 'github.com' && pathname.startsWith('/open-agreements/')) {
|
|
27
|
+
return 'OpenAgreements';
|
|
28
|
+
}
|
|
29
|
+
if (host === 'github.com' && pathname.startsWith('/papertrail/legal-docs')) {
|
|
30
|
+
return 'Papertrail';
|
|
31
|
+
}
|
|
32
|
+
if (host === 'github.com' && pathname.startsWith('/docusign/')) {
|
|
33
|
+
return 'DocuSign';
|
|
34
|
+
}
|
|
35
|
+
const map = {
|
|
36
|
+
'commonpaper.com': 'Common Paper',
|
|
37
|
+
'bonterms.com': 'Bonterms',
|
|
38
|
+
'ycombinator.com': 'Y Combinator',
|
|
39
|
+
'bookface-static.ycombinator.com': 'Y Combinator',
|
|
40
|
+
'nvca.org': 'NVCA',
|
|
41
|
+
'openagreements.ai': 'OpenAgreements',
|
|
42
|
+
};
|
|
43
|
+
return map[host] ?? host;
|
|
44
|
+
}
|
|
45
|
+
catch {
|
|
46
|
+
return null;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
export function mapFields(fields, requiredFields) {
|
|
50
|
+
const required = new Set(requiredFields);
|
|
51
|
+
return fields.map((f) => ({
|
|
52
|
+
name: f.name,
|
|
53
|
+
type: f.type,
|
|
54
|
+
required: required.has(f.name),
|
|
55
|
+
section: f.section ?? null,
|
|
56
|
+
description: f.description,
|
|
57
|
+
default: f.default ?? null,
|
|
58
|
+
}));
|
|
59
|
+
}
|
|
60
|
+
// ---------------------------------------------------------------------------
|
|
61
|
+
// Main listing function
|
|
62
|
+
// ---------------------------------------------------------------------------
|
|
63
|
+
export function listTemplateItems(opts) {
|
|
64
|
+
const templatesOnly = opts?.templatesOnly !== false; // default true
|
|
65
|
+
const items = [];
|
|
66
|
+
for (const entry of listTemplateEntries()) {
|
|
67
|
+
try {
|
|
68
|
+
const meta = loadMetadata(entry.dir);
|
|
69
|
+
items.push({
|
|
70
|
+
name: entry.id,
|
|
71
|
+
category: categoryFromId(entry.id),
|
|
72
|
+
description: meta.description ?? meta.name,
|
|
73
|
+
license: meta.license,
|
|
74
|
+
source_url: meta.source_url,
|
|
75
|
+
source: sourceName(meta.source_url),
|
|
76
|
+
attribution_text: meta.attribution_text,
|
|
77
|
+
fields: mapFields(meta.fields, meta.required_fields),
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
catch {
|
|
81
|
+
// Skip templates that fail to load (matches CLI --json behavior)
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
if (!templatesOnly) {
|
|
85
|
+
// External and recipe entries are not included in templatesOnly mode.
|
|
86
|
+
// Callers that need them should use the full CLI list command.
|
|
87
|
+
}
|
|
88
|
+
items.sort((a, b) => a.name.localeCompare(b.name));
|
|
89
|
+
return items;
|
|
90
|
+
}
|
|
91
|
+
//# sourceMappingURL=template-listing.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"template-listing.js","sourceRoot":"","sources":["../../src/core/template-listing.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recipe.d.ts","sourceRoot":"","sources":["../../../src/core/validation/recipe.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,OAAO,CAAC;IACf,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AASD;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAC5B,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,GAC7B,sBAAsB,
|
|
1
|
+
{"version":3,"file":"recipe.d.ts","sourceRoot":"","sources":["../../../src/core/validation/recipe.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,OAAO,CAAC;IACf,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AASD;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAC5B,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,GAC7B,sBAAsB,CAwIxB"}
|
|
@@ -48,12 +48,8 @@ export function validateRecipe(recipeDir, recipeId, options) {
|
|
|
48
48
|
ComputedProfileSchema.parse(JSON.parse(raw));
|
|
49
49
|
}
|
|
50
50
|
catch (err) {
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
}
|
|
54
|
-
else {
|
|
55
|
-
errors.push('computed.json: invalid format');
|
|
56
|
-
}
|
|
51
|
+
const message = err instanceof Error ? err.message : 'invalid format';
|
|
52
|
+
errors.push(`computed.json: ${message}`);
|
|
57
53
|
}
|
|
58
54
|
}
|
|
59
55
|
if (isScaffold) {
|
|
@@ -65,68 +61,58 @@ export function validateRecipe(recipeDir, recipeId, options) {
|
|
|
65
61
|
}
|
|
66
62
|
return { recipeId, valid: errors.length === 0, scaffold: true, errors, warnings };
|
|
67
63
|
}
|
|
68
|
-
// Validate replacements.json
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
unknownTargets.add(fieldName);
|
|
99
|
-
}
|
|
64
|
+
// Validate replacements.json for runnable recipes.
|
|
65
|
+
try {
|
|
66
|
+
const raw = readFileSync(join(recipeDir, 'replacements.json'), 'utf-8');
|
|
67
|
+
const replacements = JSON.parse(raw);
|
|
68
|
+
if (typeof replacements !== 'object' || replacements === null) {
|
|
69
|
+
errors.push('replacements.json must be a JSON object');
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
const unknownTargets = new Set();
|
|
73
|
+
for (const [key, value] of Object.entries(replacements)) {
|
|
74
|
+
if (typeof value !== 'string') {
|
|
75
|
+
errors.push(`replacements.json: value for "${key}" must be a string`);
|
|
76
|
+
continue;
|
|
77
|
+
}
|
|
78
|
+
// Value must contain at least one {identifier} tag
|
|
79
|
+
const tags = value.match(TAG_RE);
|
|
80
|
+
if (!tags || tags.length === 0) {
|
|
81
|
+
errors.push(`replacements.json: value for "${key}" must contain at least one {identifier} tag, got "${value}"`);
|
|
82
|
+
}
|
|
83
|
+
// All curly-brace tokens in value must be safe identifiers (no control tags)
|
|
84
|
+
const allBraces = value.match(ANY_BRACE_RE);
|
|
85
|
+
if (allBraces) {
|
|
86
|
+
for (const token of allBraces) {
|
|
87
|
+
if (!SAFE_TAG_RE.test(token)) {
|
|
88
|
+
errors.push(`replacements.json: unsafe tag "${token}" in value for "${key}". Only {identifier} tags allowed.`);
|
|
89
|
+
continue;
|
|
90
|
+
}
|
|
91
|
+
const fieldName = token.slice(1, -1);
|
|
92
|
+
if (!metadataFieldNames.has(fieldName)) {
|
|
93
|
+
unknownTargets.add(fieldName);
|
|
100
94
|
}
|
|
101
95
|
}
|
|
102
|
-
// Value must not contain the source key (infinite loop prevention)
|
|
103
|
-
// For qualified keys, check against the searchText, not the full key.
|
|
104
|
-
// Nth keys use single-shot replacement so they can't loop — skip the check.
|
|
105
|
-
const parsed = parseReplacementKey(key, value);
|
|
106
|
-
if (parsed.type === 'simple' && value.includes(parsed.searchText)) {
|
|
107
|
-
errors.push(`replacements.json: value for "${key}" contains the key itself (would cause infinite loop)`);
|
|
108
|
-
}
|
|
109
|
-
else if (parsed.type === 'context' && value.includes(parsed.searchText)) {
|
|
110
|
-
errors.push(`replacements.json: value for "${key}" contains the search text "${parsed.searchText}" (would cause infinite loop)`);
|
|
111
|
-
}
|
|
112
|
-
// nth keys: no infinite-loop check needed (single-shot replacement)
|
|
113
96
|
}
|
|
114
|
-
|
|
115
|
-
|
|
97
|
+
// Value must not contain the source key (infinite loop prevention)
|
|
98
|
+
// For qualified keys, check against the searchText, not the full key.
|
|
99
|
+
// Nth keys use single-shot replacement so they can't loop — skip the check.
|
|
100
|
+
const parsed = parseReplacementKey(key, value);
|
|
101
|
+
if (parsed.type === 'simple' && value.includes(parsed.searchText)) {
|
|
102
|
+
errors.push(`replacements.json: value for "${key}" contains the key itself (would cause infinite loop)`);
|
|
103
|
+
}
|
|
104
|
+
else if (parsed.type === 'context' && value.includes(parsed.searchText)) {
|
|
105
|
+
errors.push(`replacements.json: value for "${key}" contains the search text "${parsed.searchText}" (would cause infinite loop)`);
|
|
116
106
|
}
|
|
107
|
+
// nth keys: no infinite-loop check needed (single-shot replacement)
|
|
108
|
+
}
|
|
109
|
+
for (const fieldName of unknownTargets) {
|
|
110
|
+
warnings.push(`Replacement target {${fieldName}} not found in metadata fields`);
|
|
117
111
|
}
|
|
118
|
-
}
|
|
119
|
-
catch (err) {
|
|
120
|
-
errors.push(`replacements.json: ${err.message}`);
|
|
121
112
|
}
|
|
122
113
|
}
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
errors.push('replacements.json not found (required for runnable recipes)');
|
|
126
|
-
}
|
|
127
|
-
else {
|
|
128
|
-
warnings.push('replacements.json not found (required for runnable recipes)');
|
|
129
|
-
}
|
|
114
|
+
catch (err) {
|
|
115
|
+
errors.push(`replacements.json: ${err.message}`);
|
|
130
116
|
}
|
|
131
117
|
// Validate clean.json if present
|
|
132
118
|
const cleanPath = join(recipeDir, 'clean.json');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recipe.js","sourceRoot":"","sources":["../../../src/core/validation/recipe.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAChE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAC5E,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAU9D,gEAAgE;AAChE,MAAM,MAAM,GAAG,uBAAuB,CAAC;AACvC,iEAAiE;AACjE,MAAM,YAAY,GAAG,YAAY,CAAC;AAClC,wDAAwD;AACxD,MAAM,WAAW,GAAG,wBAAwB,CAAC;AAE7C;;;;;;;GAOG;AACH,MAAM,UAAU,cAAc,CAC5B,SAAiB,EACjB,QAAgB,EAChB,OAA8B;IAE9B,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,MAAM,MAAM,GAAG,OAAO,EAAE,MAAM,IAAI,KAAK,CAAC;IAExC,mDAAmD;IACnD,MAAM,KAAK,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC;IACrC,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;IACzE,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzB,MAAM,CAAC,IAAI,CAAC,oCAAoC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,8CAA8C,CAAC,CAAC;IACtH,CAAC;IAED,oBAAoB;IACpB,MAAM,UAAU,GAAG,sBAAsB,CAAC,SAAS,CAAC,CAAC;IACrD,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;QACtB,MAAM,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC;QAC/D,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;IACvE,CAAC;IAED,uEAAuE;IACvE,MAAM,QAAQ,GAAG,kBAAkB,CAAC,SAAS,CAAC,CAAC;IAC/C,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IAC/E,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;IACtD,MAAM,eAAe,GAAG,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC,CAAC;IACzE,MAAM,UAAU,GAAG,CAAC,eAAe,CAAC;IAEpC,oCAAoC;IACpC,IAAI,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QAC7B,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;YAChD,qBAAqB,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;QAC/C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,
|
|
1
|
+
{"version":3,"file":"recipe.js","sourceRoot":"","sources":["../../../src/core/validation/recipe.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"template.d.ts","sourceRoot":"","sources":["../../../src/core/validation/template.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,wBAAwB;IACvC,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AA+BD;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,wBAAwB,
|
|
1
|
+
{"version":3,"file":"template.d.ts","sourceRoot":"","sources":["../../../src/core/validation/template.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,wBAAwB;IACvC,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AA+BD;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,wBAAwB,CAyLlG"}
|
|
@@ -88,6 +88,7 @@ export function validateTemplate(templateDir, templateId) {
|
|
|
88
88
|
}
|
|
89
89
|
// Collect {tags} from replacement values and the DOCX text
|
|
90
90
|
const foundTags = new Set();
|
|
91
|
+
const replacementTags = new Set(); // tags specifically from replacement values
|
|
91
92
|
const foundConditionalFields = new Set();
|
|
92
93
|
// Tags from replacement values (these will exist after patching)
|
|
93
94
|
for (const value of Object.values(replacements)) {
|
|
@@ -95,6 +96,7 @@ export function validateTemplate(templateDir, templateId) {
|
|
|
95
96
|
let match;
|
|
96
97
|
while ((match = placeholderRegex.exec(value)) !== null) {
|
|
97
98
|
foundTags.add(match[1]);
|
|
99
|
+
replacementTags.add(match[1]);
|
|
98
100
|
}
|
|
99
101
|
const conditionalRegex = /\{IF !?(\w+)\}/g;
|
|
100
102
|
let condMatch;
|
|
@@ -125,13 +127,19 @@ export function validateTemplate(templateDir, templateId) {
|
|
|
125
127
|
}
|
|
126
128
|
}
|
|
127
129
|
}
|
|
128
|
-
// Check for tags not in metadata
|
|
130
|
+
// Check for tags not in metadata — replacement-injected tags are errors
|
|
131
|
+
// (they cause runtime ReferenceError), DOCX-native tags are warnings.
|
|
129
132
|
const controlTokens = new Set(['IF', 'END']);
|
|
130
133
|
for (const tag of foundTags) {
|
|
131
134
|
if (controlTokens.has(tag))
|
|
132
135
|
continue;
|
|
133
136
|
if (!metadataFieldNames.has(tag)) {
|
|
134
|
-
|
|
137
|
+
if (replacementTags.has(tag)) {
|
|
138
|
+
errors.push(`Replacement-injected field {${tag}} not defined in metadata — will cause runtime error during fill`);
|
|
139
|
+
}
|
|
140
|
+
else {
|
|
141
|
+
warnings.push(`Placeholder {${tag}} found in template but not defined in metadata fields`);
|
|
142
|
+
}
|
|
135
143
|
}
|
|
136
144
|
}
|
|
137
145
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"template.js","sourceRoot":"","sources":["../../../src/core/validation/template.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"template.js","sourceRoot":"","sources":["../../../src/core/validation/template.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -11,6 +11,8 @@ export { assessScanMetadataCoverage, type ScanMetadataCoverageInput, type ScanMe
|
|
|
11
11
|
export { runRecipe, cleanDocument, patchDocument, verifyOutput, ensureSourceDocx, checkRecipeSourceDrift, computeSourceStructureSignature, type RecipeRunOptions, type RecipeRunResult, type VerifyResult, type VerifyCheck, } from './core/recipe/index.js';
|
|
12
12
|
export { buildChecklistTemplateContext, ClosingChecklistSchema, ChecklistPatchEnvelopeSchema, ChecklistPatchApplyRequestSchema, ChecklistPatchOperationSchema, PatchCitationSchema, ChecklistPatchModeEnum, JsonPointerSchema, CHECKLIST_PATCH_VALIDATION_TTL_MS, applyChecklistPatchOperations, computeChecklistPatchHash, validateChecklistPatch, getChecklistPatchValidationArtifact, setChecklistPatchValidationStore, getChecklistPatchValidationStore, applyChecklistPatch, setChecklistAppliedPatchStore, getChecklistAppliedPatchStore, setChecklistProposedPatchStore, getChecklistProposedPatchStore, type ClosingChecklist, type ChecklistPatchEnvelope, type ChecklistPatchApplyRequest, type ChecklistPatchOperation, type PatchCitation, type ChecklistPatchMode, type JsonPointer, type ChecklistPatchValidationErrorCode, type ChecklistPatchValidationDiagnostic, type ResolvedChecklistPatchOperation, type ChecklistPatchValidationArtifact, type ChecklistPatchValidationStore, type ValidateChecklistPatchInput, type ChecklistPatchValidationSuccess, type ChecklistPatchValidationFailure, type ChecklistPatchValidationResult, type ChecklistAppliedPatchRecord, type ChecklistAppliedPatchStore, type ChecklistProposedPatchRecord, type ChecklistProposedPatchStore, type ChecklistPatchApplyErrorCode, type ChecklistPatchApplyFailure, type ChecklistPatchApplySuccess, type ChecklistPatchApplyResult, type ApplyChecklistPatchInput, } from './core/checklist/index.js';
|
|
13
13
|
export { ChecklistStageEnum, ChecklistEntryStatusEnum, SignatoryStatusEnum, ChecklistItemStatusEnum, IssueStatusEnum, ResponsibilitySchema, CitationSchema, SignatureArtifactSchema, SignatorySchema, ChecklistDocumentSchema, ChecklistEntrySchema, ActionItemSchema, IssueSchema, type ChecklistStage, type ChecklistEntryStatus, type SignatoryStatus, type ChecklistItemStatus, type IssueStatus, type Responsibility, type Citation, type SignatureArtifact, type Signatory, type ChecklistDocument, type ChecklistEntry, type ActionItem, type Issue, } from './core/checklist/schemas.js';
|
|
14
|
+
export { listTemplateItems, type TemplateListItem, type TemplateListField, } from './core/template-listing.js';
|
|
15
|
+
export { listTemplateEntries, findTemplateDir, type ContentEntry } from './utils/paths.js';
|
|
14
16
|
export type { ToolCommandAdapter } from './core/command-generation/types.js';
|
|
15
17
|
export { ClaudeCodeAdapter } from './core/command-generation/adapters/claude.js';
|
|
16
18
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -19,5 +19,9 @@ export { runRecipe, cleanDocument, patchDocument, verifyOutput, ensureSourceDocx
|
|
|
19
19
|
// Closing checklist
|
|
20
20
|
export { buildChecklistTemplateContext, ClosingChecklistSchema, ChecklistPatchEnvelopeSchema, ChecklistPatchApplyRequestSchema, ChecklistPatchOperationSchema, PatchCitationSchema, ChecklistPatchModeEnum, JsonPointerSchema, CHECKLIST_PATCH_VALIDATION_TTL_MS, applyChecklistPatchOperations, computeChecklistPatchHash, validateChecklistPatch, getChecklistPatchValidationArtifact, setChecklistPatchValidationStore, getChecklistPatchValidationStore, applyChecklistPatch, setChecklistAppliedPatchStore, getChecklistAppliedPatchStore, setChecklistProposedPatchStore, getChecklistProposedPatchStore, } from './core/checklist/index.js';
|
|
21
21
|
export { ChecklistStageEnum, ChecklistEntryStatusEnum, SignatoryStatusEnum, ChecklistItemStatusEnum, IssueStatusEnum, ResponsibilitySchema, CitationSchema, SignatureArtifactSchema, SignatorySchema, ChecklistDocumentSchema, ChecklistEntrySchema, ActionItemSchema, IssueSchema, } from './core/checklist/schemas.js';
|
|
22
|
+
// Template listing
|
|
23
|
+
export { listTemplateItems, } from './core/template-listing.js';
|
|
24
|
+
// Template discovery
|
|
25
|
+
export { listTemplateEntries, findTemplateDir } from './utils/paths.js';
|
|
22
26
|
export { ClaudeCodeAdapter } from './core/command-generation/adapters/claude.js';
|
|
23
27
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,qBAAqB;AAErB,kBAAkB;AAClB,OAAO,EAAE,YAAY,EAAqC,MAAM,kBAAkB,CAAC;AAEnF,+BAA+B;AAC/B,OAAO,EACL,YAAY,EACZ,gBAAgB,EAChB,kBAAkB,EAClB,sBAAsB,EACtB,eAAe,EACf,sBAAsB,EACtB,oBAAoB,EACpB,iBAAiB,EACjB,WAAW,EACX,qBAAqB,GAMtB,MAAM,oBAAoB,CAAC;AAE5B,2BAA2B;AAC3B,OAAO,EACL,eAAe,GAGhB,MAAM,0BAA0B,CAAC;AAElC,0CAA0C;AAC1C,OAAO,EACL,oBAAoB,EACpB,wBAAwB,EACxB,sBAAsB,GAEvB,MAAM,oBAAoB,CAAC;AAE5B,sBAAsB;AACtB,OAAO,EAAE,gBAAgB,EAAiC,MAAM,+BAA+B,CAAC;AAChG,OAAO,EAAE,eAAe,EAAgC,MAAM,8BAA8B,CAAC;AAC7F,OAAO,EAAE,cAAc,EAA+B,MAAM,6BAA6B,CAAC;AAC1F,OAAO,EAAE,cAAc,EAA+B,MAAM,6BAA6B,CAAC;AAC1F,OAAO,EAAE,gBAAgB,EAAiC,MAAM,+BAA+B,CAAC;AAChG,OAAO,EACL,0BAA0B,GAG3B,MAAM,oCAAoC,CAAC;AAE5C,gBAAgB;AAChB,OAAO,EACL,SAAS,EACT,aAAa,EACb,aAAa,EACb,YAAY,EACZ,gBAAgB,EAChB,sBAAsB,EACtB,+BAA+B,GAKhC,MAAM,wBAAwB,CAAC;AAEhC,oBAAoB;AACpB,OAAO,EACL,6BAA6B,EAC7B,sBAAsB,EACtB,4BAA4B,EAC5B,gCAAgC,EAChC,6BAA6B,EAC7B,mBAAmB,EACnB,sBAAsB,EACtB,iBAAiB,EACjB,iCAAiC,EACjC,6BAA6B,EAC7B,yBAAyB,EACzB,sBAAsB,EACtB,mCAAmC,EACnC,gCAAgC,EAChC,gCAAgC,EAChC,mBAAmB,EACnB,6BAA6B,EAC7B,6BAA6B,EAC7B,8BAA8B,EAC9B,8BAA8B,GA0B/B,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EACL,kBAAkB,EAClB,wBAAwB,EACxB,mBAAmB,EACnB,uBAAuB,EACvB,eAAe,EACf,oBAAoB,EACpB,cAAc,EACd,uBAAuB,EACvB,eAAe,EACf,uBAAuB,EACvB,oBAAoB,EACpB,gBAAgB,EAChB,WAAW,GAcZ,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,qBAAqB;AAErB,kBAAkB;AAClB,OAAO,EAAE,YAAY,EAAqC,MAAM,kBAAkB,CAAC;AAEnF,+BAA+B;AAC/B,OAAO,EACL,YAAY,EACZ,gBAAgB,EAChB,kBAAkB,EAClB,sBAAsB,EACtB,eAAe,EACf,sBAAsB,EACtB,oBAAoB,EACpB,iBAAiB,EACjB,WAAW,EACX,qBAAqB,GAMtB,MAAM,oBAAoB,CAAC;AAE5B,2BAA2B;AAC3B,OAAO,EACL,eAAe,GAGhB,MAAM,0BAA0B,CAAC;AAElC,0CAA0C;AAC1C,OAAO,EACL,oBAAoB,EACpB,wBAAwB,EACxB,sBAAsB,GAEvB,MAAM,oBAAoB,CAAC;AAE5B,sBAAsB;AACtB,OAAO,EAAE,gBAAgB,EAAiC,MAAM,+BAA+B,CAAC;AAChG,OAAO,EAAE,eAAe,EAAgC,MAAM,8BAA8B,CAAC;AAC7F,OAAO,EAAE,cAAc,EAA+B,MAAM,6BAA6B,CAAC;AAC1F,OAAO,EAAE,cAAc,EAA+B,MAAM,6BAA6B,CAAC;AAC1F,OAAO,EAAE,gBAAgB,EAAiC,MAAM,+BAA+B,CAAC;AAChG,OAAO,EACL,0BAA0B,GAG3B,MAAM,oCAAoC,CAAC;AAE5C,gBAAgB;AAChB,OAAO,EACL,SAAS,EACT,aAAa,EACb,aAAa,EACb,YAAY,EACZ,gBAAgB,EAChB,sBAAsB,EACtB,+BAA+B,GAKhC,MAAM,wBAAwB,CAAC;AAEhC,oBAAoB;AACpB,OAAO,EACL,6BAA6B,EAC7B,sBAAsB,EACtB,4BAA4B,EAC5B,gCAAgC,EAChC,6BAA6B,EAC7B,mBAAmB,EACnB,sBAAsB,EACtB,iBAAiB,EACjB,iCAAiC,EACjC,6BAA6B,EAC7B,yBAAyB,EACzB,sBAAsB,EACtB,mCAAmC,EACnC,gCAAgC,EAChC,gCAAgC,EAChC,mBAAmB,EACnB,6BAA6B,EAC7B,6BAA6B,EAC7B,8BAA8B,EAC9B,8BAA8B,GA0B/B,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EACL,kBAAkB,EAClB,wBAAwB,EACxB,mBAAmB,EACnB,uBAAuB,EACvB,eAAe,EACf,oBAAoB,EACpB,cAAc,EACd,uBAAuB,EACvB,eAAe,EACf,uBAAuB,EACvB,oBAAoB,EACpB,gBAAgB,EAChB,WAAW,GAcZ,MAAM,6BAA6B,CAAC;AAErC,mBAAmB;AACnB,OAAO,EACL,iBAAiB,GAGlB,MAAM,4BAA4B,CAAC;AAEpC,qBAAqB;AACrB,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAqB,MAAM,kBAAkB,CAAC;AAI3F,OAAO,EAAE,iBAAiB,EAAE,MAAM,8CAA8C,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "open-agreements",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"workspaces": [
|
|
5
5
|
"packages/allure-test-factory",
|
|
6
6
|
"packages/contract-templates-mcp",
|
|
@@ -107,7 +107,13 @@
|
|
|
107
107
|
"nvca",
|
|
108
108
|
"template-engine",
|
|
109
109
|
"document-generation",
|
|
110
|
-
"contract-automation"
|
|
110
|
+
"contract-automation",
|
|
111
|
+
"iso-27001",
|
|
112
|
+
"soc-2",
|
|
113
|
+
"compliance",
|
|
114
|
+
"audit",
|
|
115
|
+
"grc",
|
|
116
|
+
"evidence-collection"
|
|
111
117
|
],
|
|
112
118
|
"author": "UseJunior <steven@usejunior.com>",
|
|
113
119
|
"license": "MIT",
|
|
@@ -170,3 +170,12 @@ Use `list_templates` (MCP) or `list --json` (CLI) for the latest inventory and f
|
|
|
170
170
|
- All templates produce Word DOCX files preserving original formatting
|
|
171
171
|
- Templates are licensed by their respective authors (CC-BY-4.0 or CC0-1.0)
|
|
172
172
|
- This tool does not provide legal advice — consult an attorney
|
|
173
|
+
|
|
174
|
+
## Bespoke edits (beyond template fields)
|
|
175
|
+
|
|
176
|
+
If you need to edit boilerplate or add custom language that is not exposed as a template field,
|
|
177
|
+
use the `edit-docx-agreement` skill to surgically edit the generated DOCX and produce a
|
|
178
|
+
tracked-changes output for review. This requires a separately configured Safe Docx MCP server.
|
|
179
|
+
|
|
180
|
+
Note: templates licensed under CC-BY-ND-4.0 (e.g., YC SAFEs) can be filled for your own use
|
|
181
|
+
but must not be redistributed in modified form.
|
|
@@ -156,3 +156,12 @@ Use `list_templates` (MCP) or `list --json` (CLI) for the latest inventory and f
|
|
|
156
156
|
- Templates are licensed by their respective authors (CC-BY-4.0 or CC0-1.0)
|
|
157
157
|
- DPAs and BAAs are regulatory documents — ensure they meet your jurisdiction's specific requirements
|
|
158
158
|
- This tool does not provide legal advice — consult an attorney
|
|
159
|
+
|
|
160
|
+
## Bespoke edits (beyond template fields)
|
|
161
|
+
|
|
162
|
+
If you need to edit boilerplate or add custom language that is not exposed as a template field,
|
|
163
|
+
use the `edit-docx-agreement` skill to surgically edit the generated DOCX and produce a
|
|
164
|
+
tracked-changes output for review. This requires a separately configured Safe Docx MCP server.
|
|
165
|
+
|
|
166
|
+
Note: templates licensed under CC-BY-ND-4.0 (e.g., YC SAFEs) can be filled for your own use
|
|
167
|
+
but must not be redistributed in modified form.
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# Connectors
|
|
2
|
+
|
|
3
|
+
## OpenAgreements (for template filling)
|
|
4
|
+
|
|
5
|
+
Use the standard OpenAgreements connectors (remote MCP or local CLI) for fill operations.
|
|
6
|
+
See https://github.com/open-agreements/open-agreements/blob/main/skills/open-agreements/CONNECTORS.md for details.
|
|
7
|
+
|
|
8
|
+
## Safe Docx MCP (for surgical DOCX editing)
|
|
9
|
+
|
|
10
|
+
Safe Docx is a **separate MCP server** that must be configured independently.
|
|
11
|
+
It is not part of the OpenAgreements skill set.
|
|
12
|
+
|
|
13
|
+
The user must have Safe Docx MCP already set up in their agent environment.
|
|
14
|
+
If Safe Docx tools are not available, instruct the user to:
|
|
15
|
+
|
|
16
|
+
1. Visit https://github.com/UseJunior/safe-docx for setup instructions
|
|
17
|
+
2. Configure the Safe Docx MCP server in their agent's MCP settings
|
|
18
|
+
3. Restart their agent session
|
|
19
|
+
|
|
20
|
+
Do not instruct the agent to download or install packages at runtime.
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: edit-docx-agreement
|
|
3
|
+
description: >-
|
|
4
|
+
Make bespoke edits to a DOCX agreement generated by OpenAgreements (or any existing DOCX),
|
|
5
|
+
using Safe Docx MCP tools for surgical, formatting-preserving edits and tracked-changes outputs.
|
|
6
|
+
license: MIT
|
|
7
|
+
compatibility: >-
|
|
8
|
+
Works with any agent. Requires a separately configured Safe Docx MCP server for document editing.
|
|
9
|
+
OpenAgreements fill capabilities require the OpenAgreements remote MCP or local CLI.
|
|
10
|
+
metadata:
|
|
11
|
+
author: open-agreements
|
|
12
|
+
version: "0.2.0"
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
# edit-docx-agreement
|
|
16
|
+
|
|
17
|
+
Use this skill when a user asks for **custom edits that are not exposed as template fields** in an OpenAgreements-generated (or any existing) DOCX agreement.
|
|
18
|
+
|
|
19
|
+
> **Interactivity note**: Always ask the user for missing inputs (file path, change intent, output preferences).
|
|
20
|
+
|
|
21
|
+
## Security model
|
|
22
|
+
|
|
23
|
+
This skill bridges two separate systems:
|
|
24
|
+
- **OpenAgreements** (remote MCP or local CLI) — for template filling. Follows the OpenAgreements zero-download security model.
|
|
25
|
+
- **Safe Docx** (local MCP server) — for surgical DOCX editing. Requires separate setup. This is **not** part of the OpenAgreements skill set and has its own trust/security model.
|
|
26
|
+
|
|
27
|
+
The agent must have Safe Docx MCP tools available to perform edits. If Safe Docx tools are not detected, inform the user and provide setup guidance (see Connectors).
|
|
28
|
+
|
|
29
|
+
## Decision rule: refill vs edit vs both
|
|
30
|
+
|
|
31
|
+
1. **Field-only changes** (e.g., party name, date, amount, valuation cap):
|
|
32
|
+
Re-run OpenAgreements `fill_template` with the updated field values. No Safe Docx needed.
|
|
33
|
+
|
|
34
|
+
2. **Boilerplate-only changes** (e.g., custom clause, modified standard language):
|
|
35
|
+
Use Safe Docx MCP tools to surgically edit the existing DOCX.
|
|
36
|
+
|
|
37
|
+
3. **Mixed changes** (field updates + bespoke edits):
|
|
38
|
+
Re-fill via OpenAgreements first (to get a clean base with updated fields), save the output locally, then use Safe Docx to apply bespoke edits on the fresh file.
|
|
39
|
+
|
|
40
|
+
## Execution
|
|
41
|
+
|
|
42
|
+
### Step 0: Confirm you have a local .docx file path
|
|
43
|
+
|
|
44
|
+
- If OpenAgreements was run via remote MCP, the fill response returns a download URL (with `expires_at`). Save the DOCX to a local path immediately.
|
|
45
|
+
- If the download link has expired, re-run `fill_template` to get a fresh URL.
|
|
46
|
+
- If OpenAgreements was run via local CLI, use the output file path directly.
|
|
47
|
+
|
|
48
|
+
### Step 1: Verify Safe Docx MCP is available
|
|
49
|
+
|
|
50
|
+
Check whether Safe Docx tools (e.g., `read_file`, `replace_text`, `apply_plan`) are available in the current session.
|
|
51
|
+
|
|
52
|
+
- **If available**: proceed to Step 2.
|
|
53
|
+
- **If not available**: inform the user that Safe Docx MCP is required for bespoke edits and provide setup instructions from the Connectors file. Stop here until the user configures it.
|
|
54
|
+
|
|
55
|
+
### Step 2: Apply the decision rule
|
|
56
|
+
|
|
57
|
+
Follow the routing logic above (field-only / boilerplate-only / mixed).
|
|
58
|
+
|
|
59
|
+
For Safe Docx edits:
|
|
60
|
+
- Use `read_file` to locate target paragraphs
|
|
61
|
+
- Use `replace_text` or `insert_paragraph` for surgical changes
|
|
62
|
+
- Use `apply_plan` for batch edits (fails safely if any step is invalid)
|
|
63
|
+
- Re-read edited paragraphs to verify changes
|
|
64
|
+
|
|
65
|
+
### Step 3: Deliver reviewable outputs
|
|
66
|
+
|
|
67
|
+
Use Safe Docx `download` to save:
|
|
68
|
+
- A **tracked-changes** DOCX for legal review
|
|
69
|
+
- A **clean** DOCX for signing (optional but recommended)
|
|
70
|
+
|
|
71
|
+
Summarize edits for the user (paragraph IDs, before/after text).
|
|
72
|
+
|
|
73
|
+
## Licensing note
|
|
74
|
+
|
|
75
|
+
Some templates (notably YC SAFEs) are licensed under CC-BY-ND-4.0. You can fill them for your own use but must not redistribute modified versions of the template itself. The filled output may constitute an "adapted work" — do not redistribute your filled output publicly without reviewing the license terms. See `docs/licensing.md` for details.
|
|
76
|
+
|
|
77
|
+
This tool does not provide legal advice — consult an attorney.
|
|
@@ -155,3 +155,12 @@ Use `list_templates` (MCP) or `list --json` (CLI) for the latest inventory and f
|
|
|
155
155
|
- OpenAgreements employment templates are licensed under CC-BY-4.0
|
|
156
156
|
- These templates are designed for US at-will employment — state-specific laws may apply
|
|
157
157
|
- This tool does not provide legal advice — consult an attorney
|
|
158
|
+
|
|
159
|
+
## Bespoke edits (beyond template fields)
|
|
160
|
+
|
|
161
|
+
If you need to edit boilerplate or add custom language that is not exposed as a template field,
|
|
162
|
+
use the `edit-docx-agreement` skill to surgically edit the generated DOCX and produce a
|
|
163
|
+
tracked-changes output for review. This requires a separately configured Safe Docx MCP server.
|
|
164
|
+
|
|
165
|
+
Note: templates licensed under CC-BY-ND-4.0 (e.g., YC SAFEs) can be filled for your own use
|
|
166
|
+
but must not be redistributed in modified form.
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# Connectors
|
|
2
|
+
|
|
3
|
+
## How tool references work
|
|
4
|
+
|
|
5
|
+
This skill uses `~~compliance` placeholders for the Internal ISO Audit MCP server. The skill works without the server configured — it falls back to embedded checklists and CLI command reference.
|
|
6
|
+
|
|
7
|
+
## Connectors for this skill
|
|
8
|
+
|
|
9
|
+
| Category | Placeholder | Server | Endpoint |
|
|
10
|
+
|----------|-------------|--------|----------|
|
|
11
|
+
| Compliance data | `~~compliance` | Internal ISO Audit MCP | `https://internalisoaudit.com/api/mcp` |
|
|
12
|
+
|
|
13
|
+
### Internal ISO Audit MCP server
|
|
14
|
+
|
|
15
|
+
The MCP server at `internalisoaudit.com/api/mcp` provides ISO 27001 control guidance via JSON-RPC 2.0 (streamable HTTP). Add it to your MCP client configuration:
|
|
16
|
+
|
|
17
|
+
```json
|
|
18
|
+
{
|
|
19
|
+
"mcpServers": {
|
|
20
|
+
"internalisoaudit": {
|
|
21
|
+
"type": "url",
|
|
22
|
+
"url": "https://internalisoaudit.com/api/mcp"
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
#### Available tools
|
|
29
|
+
|
|
30
|
+
| Tool | Description | Key arguments |
|
|
31
|
+
|------|-------------|---------------|
|
|
32
|
+
| `get_control_guidance` | Full audit guidance for a specific control | `control_id` (e.g. `"A.5.15"`, `"Clause 9.2"`) |
|
|
33
|
+
| `list_controls` | List all controls, optionally filtered by domain | `domain?` (`organizational`, `people`, `physical`, `technological`, `isms`) |
|
|
34
|
+
| `get_nist_mapping` | ISO 27001 ↔ NIST SP 800-53 cross-reference | `control_id`, `direction?` (`iso_to_nist`, `nist_to_iso`) |
|
|
35
|
+
| `search_guidance` | Full-text search across control guidance | `query`, `domain?`, `limit?` (1-50) |
|
|
36
|
+
|
|
37
|
+
### Fallback: Reference only
|
|
38
|
+
|
|
39
|
+
Without the MCP server configured, the skill uses embedded checklists and CLI command reference in the `rules/` directory. No live control lookup is available in this mode.
|