open-agreements 0.1.0 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (103) hide show
  1. package/README.md +84 -0
  2. package/dist/cli/index.js +2 -1
  3. package/dist/cli/index.js.map +1 -1
  4. package/dist/commands/fill.d.ts.map +1 -1
  5. package/dist/commands/fill.js +9 -29
  6. package/dist/commands/fill.js.map +1 -1
  7. package/dist/commands/list.js +85 -115
  8. package/dist/commands/list.js.map +1 -1
  9. package/dist/commands/recipe.d.ts +1 -0
  10. package/dist/commands/recipe.d.ts.map +1 -1
  11. package/dist/commands/recipe.js +22 -2
  12. package/dist/commands/recipe.js.map +1 -1
  13. package/dist/commands/validate.d.ts.map +1 -1
  14. package/dist/commands/validate.js +67 -48
  15. package/dist/commands/validate.js.map +1 -1
  16. package/dist/core/engine.d.ts.map +1 -1
  17. package/dist/core/engine.js +31 -30
  18. package/dist/core/engine.js.map +1 -1
  19. package/dist/core/external/index.d.ts.map +1 -1
  20. package/dist/core/external/index.js +17 -60
  21. package/dist/core/external/index.js.map +1 -1
  22. package/dist/core/fill-pipeline.d.ts +1 -1
  23. package/dist/core/fill-pipeline.js +8 -8
  24. package/dist/core/fill-pipeline.js.map +1 -1
  25. package/dist/core/metadata.d.ts +97 -0
  26. package/dist/core/metadata.d.ts.map +1 -1
  27. package/dist/core/metadata.js +20 -1
  28. package/dist/core/metadata.js.map +1 -1
  29. package/dist/core/recipe/cleaner.d.ts +17 -3
  30. package/dist/core/recipe/cleaner.d.ts.map +1 -1
  31. package/dist/core/recipe/cleaner.js +244 -9
  32. package/dist/core/recipe/cleaner.js.map +1 -1
  33. package/dist/core/recipe/index.d.ts +1 -0
  34. package/dist/core/recipe/index.d.ts.map +1 -1
  35. package/dist/core/recipe/index.js +16 -64
  36. package/dist/core/recipe/index.js.map +1 -1
  37. package/dist/core/recipe/patcher.d.ts +19 -2
  38. package/dist/core/recipe/patcher.d.ts.map +1 -1
  39. package/dist/core/recipe/patcher.js +197 -14
  40. package/dist/core/recipe/patcher.js.map +1 -1
  41. package/dist/core/recipe/replacement-keys.d.ts +33 -0
  42. package/dist/core/recipe/replacement-keys.d.ts.map +1 -0
  43. package/dist/core/recipe/replacement-keys.js +53 -0
  44. package/dist/core/recipe/replacement-keys.js.map +1 -0
  45. package/dist/core/recipe/verifier.d.ts.map +1 -1
  46. package/dist/core/recipe/verifier.js +17 -2
  47. package/dist/core/recipe/verifier.js.map +1 -1
  48. package/dist/core/selector.d.ts +116 -0
  49. package/dist/core/selector.d.ts.map +1 -0
  50. package/dist/core/selector.js +325 -0
  51. package/dist/core/selector.js.map +1 -0
  52. package/dist/core/unified-pipeline.d.ts +51 -0
  53. package/dist/core/unified-pipeline.d.ts.map +1 -0
  54. package/dist/core/unified-pipeline.js +102 -0
  55. package/dist/core/unified-pipeline.js.map +1 -0
  56. package/dist/core/validation/external.d.ts.map +1 -1
  57. package/dist/core/validation/external.js +9 -1
  58. package/dist/core/validation/external.js.map +1 -1
  59. package/dist/core/validation/recipe.d.ts.map +1 -1
  60. package/dist/core/validation/recipe.js +9 -1
  61. package/dist/core/validation/recipe.js.map +1 -1
  62. package/dist/core/validation/template.d.ts.map +1 -1
  63. package/dist/core/validation/template.js +116 -40
  64. package/dist/core/validation/template.js.map +1 -1
  65. package/dist/utils/paths.d.ts +28 -0
  66. package/dist/utils/paths.d.ts.map +1 -1
  67. package/dist/utils/paths.js +103 -4
  68. package/dist/utils/paths.js.map +1 -1
  69. package/package.json +26 -7
  70. package/recipes/nvca-indemnification-agreement/clean.json +10 -0
  71. package/templates/bonterms-mutual-nda/source.json +18 -0
  72. package/templates/bonterms-mutual-nda/template.docx +0 -0
  73. package/templates/bonterms-professional-services-agreement/metadata.yaml +7 -0
  74. package/templates/bonterms-professional-services-agreement/selections.json +12 -0
  75. package/templates/bonterms-professional-services-agreement/source.json +18 -0
  76. package/templates/bonterms-professional-services-agreement/template.docx +0 -0
  77. package/templates/common-paper-business-associate-agreement/replacements.json +3 -0
  78. package/templates/common-paper-business-associate-agreement/template.docx +0 -0
  79. package/templates/common-paper-csa-with-ai/replacements.json +7 -0
  80. package/templates/common-paper-csa-with-ai/template.docx +0 -0
  81. package/templates/common-paper-csa-with-sla/replacements.json +7 -0
  82. package/templates/common-paper-csa-with-sla/template.docx +0 -0
  83. package/templates/common-paper-csa-without-sla/replacements.json +7 -0
  84. package/templates/common-paper-csa-without-sla/template.docx +0 -0
  85. package/templates/common-paper-data-processing-agreement/replacements.json +3 -0
  86. package/templates/common-paper-data-processing-agreement/template.docx +0 -0
  87. package/templates/common-paper-design-partner-agreement/replacements.json +4 -0
  88. package/templates/common-paper-design-partner-agreement/template.docx +0 -0
  89. package/templates/common-paper-mutual-nda/selections.json +38 -0
  90. package/templates/common-paper-order-form/replacements.json +5 -0
  91. package/templates/common-paper-order-form/template.docx +0 -0
  92. package/templates/common-paper-order-form-with-sla/replacements.json +5 -0
  93. package/templates/common-paper-order-form-with-sla/template.docx +0 -0
  94. package/templates/common-paper-partnership-agreement/replacements.json +7 -0
  95. package/templates/common-paper-partnership-agreement/template.docx +0 -0
  96. package/templates/common-paper-pilot-agreement/metadata.yaml +24 -0
  97. package/templates/common-paper-pilot-agreement/replacements.json +4 -0
  98. package/templates/common-paper-pilot-agreement/selections.json +37 -0
  99. package/templates/common-paper-pilot-agreement/template.docx +0 -0
  100. package/templates/common-paper-professional-services-agreement/replacements.json +8 -0
  101. package/templates/common-paper-professional-services-agreement/template.docx +0 -0
  102. package/templates/common-paper-statement-of-work/replacements.json +3 -0
  103. package/templates/common-paper-statement-of-work/template.docx +0 -0
package/README.md CHANGED
@@ -3,9 +3,27 @@
3
3
  [![npm version](https://img.shields.io/npm/v/open-agreements)](https://www.npmjs.com/package/open-agreements)
4
4
  [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)
5
5
  [![Agent Skill](https://img.shields.io/badge/agent--skill-open--agreements-purple)](https://skills.sh)
6
+ [![CI](https://github.com/open-agreements/open-agreements/actions/workflows/ci.yml/badge.svg)](https://github.com/open-agreements/open-agreements/actions/workflows/ci.yml)
7
+ [![Validate Templates](https://github.com/open-agreements/open-agreements/actions/workflows/validate.yml/badge.svg)](https://github.com/open-agreements/open-agreements/actions/workflows/validate.yml)
8
+ [![codecov](https://codecov.io/gh/open-agreements/open-agreements/graph/badge.svg)](https://codecov.io/gh/open-agreements/open-agreements)
6
9
 
7
10
  Fill standard legal agreement templates and produce signable DOCX files. 25 templates covering NDAs, cloud terms, contractor agreements, SAFEs, and NVCA financing documents.
8
11
 
12
+ Built by the team behind [UseJunior.com](https://usejunior.com) — in production at Am Law 100 firms.
13
+
14
+ ## How It Works
15
+
16
+ ```
17
+ 1. Pick a template 2. Answer questions 3. Get a signed-ready DOCX
18
+ ┌─────────────────────┐ ┌─────────────────────────┐ ┌─────────────────────┐
19
+ │ $ open-agreements │ │ Party 1: Acme Corp │ │ │
20
+ │ fill mutual-nda │ ──▶ │ Party 2: Beta Inc │ ──▶│ mutual-nda.docx │
21
+ │ │ │ Governing law: Delaware │ │ ✓ All fields filled│
22
+ └─────────────────────┘ └─────────────────────────┘ └─────────────────────┘
23
+ ```
24
+
25
+ No servers, no accounts, no subscriptions. Templates run locally via `npx` — your data never leaves your machine.
26
+
9
27
  ## Use with Claude Code
10
28
 
11
29
  OpenAgreements works as a [Claude Code plugin](https://docs.anthropic.com/en/docs/claude-code/plugins) and [Agent Skill](https://agentskills.io). No pre-installation required — Claude downloads and runs the CLI on demand via `npx`.
@@ -113,6 +131,58 @@ open-agreements list
113
131
  open-agreements list --json
114
132
  ```
115
133
 
134
+ ## Contracts Workspace CLI (Separate Package)
135
+
136
+ OpenAgreements now includes a sibling package for repository/workspace operations:
137
+
138
+ - Package: `@open-agreements/contracts-workspace`
139
+ - Binary: `open-agreements-workspace`
140
+ - Docs: `docs/contracts-workspace.md`
141
+
142
+ This package is intentionally separate from `open-agreements` so teams can adopt:
143
+
144
+ - template filling only
145
+ - workspace management only
146
+ - or both together
147
+
148
+ Core workspace features:
149
+
150
+ - lifecycle-first `init` (`forms/`, `drafts/`, `incoming/`, `executed/`, `archive/`)
151
+ - forms catalog with URL + SHA-256 validation
152
+ - YAML status indexing and linting with filename-driven `_executed` status
153
+
154
+ The v1 model is filesystem-only and works in locally synced cloud-drive folders (for example, Google Drive sync). No Drive API/OAuth integration is required.
155
+
156
+ ## Local MCP for Workspace Demo
157
+
158
+ For local connector demos, there is a local stdio MCP package:
159
+
160
+ - Package: `@open-agreements/contracts-workspace-mcp`
161
+ - Binary: `open-agreements-workspace-mcp`
162
+ - Docs: `docs/contracts-workspace.md`
163
+
164
+ Quick start:
165
+
166
+ ```bash
167
+ npm run build:workspace-mcp
168
+ node packages/contracts-workspace-mcp/bin/open-agreements-workspace-mcp.js
169
+ ```
170
+
171
+ ## Optional Content Roots (Future-Proofing)
172
+
173
+ To support logical unbundling as form libraries grow, `open-agreements` can load content from additional roots via:
174
+
175
+ - env var: `OPEN_AGREEMENTS_CONTENT_ROOTS`
176
+ - format: path-delimited list of absolute/relative directories (for example, `dirA:dirB` on macOS/Linux)
177
+ - expected structure under each root: `templates/`, `external/`, and/or `recipes/`
178
+
179
+ Lookup precedence is:
180
+
181
+ 1. roots in `OPEN_AGREEMENTS_CONTENT_ROOTS` (in listed order)
182
+ 2. bundled package content (default fallback)
183
+
184
+ This keeps default installs simple while allowing advanced users to move large content libraries outside the core package.
185
+
116
186
  ## Contributing
117
187
 
118
188
  See [CONTRIBUTING.md](CONTRIBUTING.md) for how to add templates, recipes, and other improvements.
@@ -120,6 +190,20 @@ See [CONTRIBUTING.md](CONTRIBUTING.md) for how to add templates, recipes, and ot
120
190
  - [Adding templates](docs/adding-templates.md) (CC BY 4.0 / CC0 sources)
121
191
  - [Adding recipes](docs/adding-recipes.md) (non-redistributable sources)
122
192
 
193
+ ## Releasing
194
+
195
+ Releases are automated through GitHub Actions using npm trusted publishing (OIDC) with provenance enabled.
196
+
197
+ 1. Update version with `npm version patch` (or `minor` / `major`)
198
+ 2. Push commit + tag with `git push origin main --tags`
199
+ 3. The `Release` workflow publishes from the tag after running build, validation, tests, and package checks
200
+
201
+ Workflow guardrails:
202
+
203
+ - tag must match `package.json` version (for example, `v0.1.1`)
204
+ - release commit must be contained in `origin/main`
205
+ - publish fails if that npm version already exists
206
+
123
207
  ## Architecture
124
208
 
125
209
  - **Language**: TypeScript
package/dist/cli/index.js CHANGED
@@ -78,8 +78,9 @@ recipeCmd
78
78
  .description('Run only the clean stage of a recipe')
79
79
  .requiredOption('-o, --output <path>', 'Output file path')
80
80
  .requiredOption('--recipe <id>', 'Recipe ID to use for clean config')
81
+ .option('--extract-guidance <path>', 'Extract removed content as guidance JSON to the specified path')
81
82
  .action(async (input, opts) => {
82
- await runRecipeClean({ input, output: opts.output, recipe: opts.recipe });
83
+ await runRecipeClean({ input, output: opts.output, recipe: opts.recipe, extractGuidance: opts.extractGuidance });
83
84
  });
84
85
  recipeCmd
85
86
  .command('patch <input>')
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"fill.d.ts","sourceRoot":"","sources":["../../src/commands/fill.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,QAAQ;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAChC;AAED,wBAAsB,OAAO,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAuD3D"}
1
+ {"version":3,"file":"fill.d.ts","sourceRoot":"","sources":["../../src/commands/fill.ts"],"names":[],"mappings":"AAaA,MAAM,WAAW,QAAQ;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAChC;AAED,wBAAsB,OAAO,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAuD3D"}
@@ -1,17 +1,16 @@
1
1
  import { resolve } from 'node:path';
2
- import { existsSync, readdirSync } from 'node:fs';
3
2
  import { fillTemplate } from '../core/engine.js';
4
- import { getTemplatesDir, resolveTemplateDir, getExternalDir, resolveExternalDir, getRecipesDir, resolveRecipeDir } from '../utils/paths.js';
3
+ import { findTemplateDir, findExternalDir, findRecipeDir, listTemplateIds, listExternalIds, listRecipeIds, } from '../utils/paths.js';
5
4
  import { runExternalFill } from '../core/external/index.js';
6
5
  import { runRecipe } from '../core/recipe/index.js';
7
6
  export async function runFill(args) {
8
7
  // Search templates/ → external/ → recipes/
9
- const templateDir = resolveTemplateDir(args.template);
10
- const externalDir = resolveExternalDir(args.template);
11
- const recipeDir = resolveRecipeDir(args.template);
12
- const isTemplate = existsSync(templateDir);
13
- const isExternal = !isTemplate && existsSync(externalDir);
14
- const isRecipe = !isTemplate && !isExternal && existsSync(recipeDir);
8
+ const templateDir = findTemplateDir(args.template);
9
+ const externalDir = findExternalDir(args.template);
10
+ const recipeDir = findRecipeDir(args.template);
11
+ const isTemplate = templateDir !== undefined;
12
+ const isExternal = !isTemplate && externalDir !== undefined;
13
+ const isRecipe = !isTemplate && !isExternal && recipeDir !== undefined;
15
14
  if (!isTemplate && !isExternal && !isRecipe) {
16
15
  const available = getAvailableIds();
17
16
  console.error(`Agreement "${args.template}" not found in templates, external, or recipes.`);
@@ -45,7 +44,7 @@ export async function runFill(args) {
45
44
  }
46
45
  else {
47
46
  const result = await fillTemplate({
48
- templateDir,
47
+ templateDir: templateDir,
49
48
  values: args.values,
50
49
  outputPath: resolvedOutput,
51
50
  });
@@ -60,25 +59,6 @@ export async function runFill(args) {
60
59
  }
61
60
  }
62
61
  function getAvailableIds() {
63
- const ids = [];
64
- const templatesDir = getTemplatesDir();
65
- if (existsSync(templatesDir)) {
66
- ids.push(...readdirSync(templatesDir, { withFileTypes: true })
67
- .filter((d) => d.isDirectory())
68
- .map((d) => d.name));
69
- }
70
- const extDir = getExternalDir();
71
- if (existsSync(extDir)) {
72
- ids.push(...readdirSync(extDir, { withFileTypes: true })
73
- .filter((d) => d.isDirectory())
74
- .map((d) => d.name));
75
- }
76
- const recipesDir = getRecipesDir();
77
- if (existsSync(recipesDir)) {
78
- ids.push(...readdirSync(recipesDir, { withFileTypes: true })
79
- .filter((d) => d.isDirectory())
80
- .map((d) => d.name));
81
- }
82
- return ids;
62
+ return [...new Set([...listTemplateIds(), ...listExternalIds(), ...listRecipeIds()])];
83
63
  }
84
64
  //# sourceMappingURL=fill.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"fill.js","sourceRoot":"","sources":["../../src/commands/fill.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fill.js","sourceRoot":"","sources":["../../src/commands/fill.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
- import { readdirSync, existsSync, readFileSync } from 'node:fs';
1
+ import { readFileSync } from 'node:fs';
2
2
  import { fileURLToPath } from 'node:url';
3
3
  import { loadMetadata, loadRecipeMetadata, loadExternalMetadata } from '../core/metadata.js';
4
- import { getTemplatesDir, resolveTemplateDir, getRecipesDir, resolveRecipeDir, getExternalDir, resolveExternalDir } from '../utils/paths.js';
4
+ import { listExternalEntries, listRecipeEntries, listTemplateEntries } from '../utils/paths.js';
5
5
  const pkgPath = fileURLToPath(new URL('../../package.json', import.meta.url));
6
6
  const pkg = JSON.parse(readFileSync(pkgPath, 'utf-8'));
7
7
  /** Extract a human-friendly source name from a URL */
@@ -42,79 +42,64 @@ function runListJson(opts) {
42
42
  const results = [];
43
43
  const errors = [];
44
44
  // Templates
45
- const templatesDir = getTemplatesDir();
46
- if (existsSync(templatesDir)) {
47
- const dirs = readdirSync(templatesDir, { withFileTypes: true })
48
- .filter((d) => d.isDirectory())
49
- .map((d) => d.name);
50
- for (const id of dirs) {
51
- const dir = resolveTemplateDir(id);
52
- try {
53
- const meta = loadMetadata(dir);
54
- results.push({
55
- name: id,
56
- description: meta.description ?? meta.name,
57
- license: meta.license,
58
- source_url: meta.source_url,
59
- source: sourceName(meta.source_url),
60
- attribution_text: meta.attribution_text,
61
- fields: mapFields(meta.fields),
62
- });
63
- }
64
- catch (err) {
65
- errors.push(`template ${id}: ${err instanceof Error ? err.message : String(err)}`);
66
- }
45
+ for (const entry of listTemplateEntries()) {
46
+ const id = entry.id;
47
+ const dir = entry.dir;
48
+ try {
49
+ const meta = loadMetadata(dir);
50
+ results.push({
51
+ name: id,
52
+ description: meta.description ?? meta.name,
53
+ license: meta.license,
54
+ source_url: meta.source_url,
55
+ source: sourceName(meta.source_url),
56
+ attribution_text: meta.attribution_text,
57
+ fields: mapFields(meta.fields),
58
+ });
59
+ }
60
+ catch (err) {
61
+ errors.push(`template ${id}: ${err instanceof Error ? err.message : String(err)}`);
67
62
  }
68
63
  }
69
64
  // External templates
70
- const externalDir = getExternalDir();
71
- if (existsSync(externalDir)) {
72
- const dirs = readdirSync(externalDir, { withFileTypes: true })
73
- .filter((d) => d.isDirectory())
74
- .map((d) => d.name);
75
- for (const id of dirs) {
76
- const dir = resolveExternalDir(id);
77
- try {
78
- const meta = loadExternalMetadata(dir);
79
- results.push({
80
- name: id,
81
- description: meta.description ?? meta.name,
82
- license: meta.license,
83
- source_url: meta.source_url,
84
- source: sourceName(meta.source_url),
85
- attribution_text: meta.attribution_text,
86
- fields: mapFields(meta.fields),
87
- });
88
- }
89
- catch (err) {
90
- errors.push(`external ${id}: ${err instanceof Error ? err.message : String(err)}`);
91
- }
65
+ for (const entry of listExternalEntries()) {
66
+ const id = entry.id;
67
+ const dir = entry.dir;
68
+ try {
69
+ const meta = loadExternalMetadata(dir);
70
+ results.push({
71
+ name: 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),
78
+ });
79
+ }
80
+ catch (err) {
81
+ errors.push(`external ${id}: ${err instanceof Error ? err.message : String(err)}`);
92
82
  }
93
83
  }
94
84
  // Recipes
95
- const recipesDir = getRecipesDir();
96
- if (existsSync(recipesDir)) {
97
- const dirs = readdirSync(recipesDir, { withFileTypes: true })
98
- .filter((d) => d.isDirectory())
99
- .map((d) => d.name);
100
- for (const id of dirs) {
101
- const dir = resolveRecipeDir(id);
102
- try {
103
- const meta = loadRecipeMetadata(dir);
104
- results.push({
105
- name: id,
106
- description: meta.description ?? meta.name,
107
- license_note: meta.license_note,
108
- source_url: meta.source_url,
109
- source: sourceName(meta.source_url),
110
- source_version: meta.source_version,
111
- optional: meta.optional,
112
- fields: mapFields(meta.fields),
113
- });
114
- }
115
- catch (err) {
116
- errors.push(`recipe ${id}: ${err instanceof Error ? err.message : String(err)}`);
117
- }
85
+ for (const entry of listRecipeEntries()) {
86
+ const id = entry.id;
87
+ const dir = entry.dir;
88
+ try {
89
+ const meta = loadRecipeMetadata(dir);
90
+ results.push({
91
+ name: id,
92
+ description: meta.description ?? meta.name,
93
+ license_note: meta.license_note,
94
+ source_url: meta.source_url,
95
+ source: sourceName(meta.source_url),
96
+ source_version: meta.source_version,
97
+ optional: meta.optional,
98
+ fields: mapFields(meta.fields),
99
+ });
100
+ }
101
+ catch (err) {
102
+ errors.push(`recipe ${id}: ${err instanceof Error ? err.message : String(err)}`);
118
103
  }
119
104
  }
120
105
  results.sort((a, b) => a.name.localeCompare(b.name));
@@ -134,56 +119,41 @@ function runListJson(opts) {
134
119
  /** Unified list of all agreements: templates + external + recipes */
135
120
  function listAgreements() {
136
121
  const rows = [];
137
- const templatesDir = getTemplatesDir();
138
- if (existsSync(templatesDir)) {
139
- const dirs = readdirSync(templatesDir, { withFileTypes: true })
140
- .filter((d) => d.isDirectory())
141
- .map((d) => d.name);
142
- for (const id of dirs) {
143
- const dir = resolveTemplateDir(id);
144
- try {
145
- const meta = loadMetadata(dir);
146
- const required = meta.fields.filter((f) => f.required).length;
147
- rows.push({ id, license: meta.license, required, total: meta.fields.length, source: sourceName(meta.source_url) || '—', sourceUrl: meta.source_url });
148
- }
149
- catch {
150
- rows.push({ id, license: 'ERROR', required: 0, total: 0, source: '—', sourceUrl: 'Could not load metadata' });
151
- }
122
+ for (const entry of listTemplateEntries()) {
123
+ const id = entry.id;
124
+ const dir = entry.dir;
125
+ try {
126
+ const meta = loadMetadata(dir);
127
+ const required = meta.fields.filter((f) => f.required).length;
128
+ rows.push({ id, license: meta.license, required, total: meta.fields.length, source: sourceName(meta.source_url) || '—', sourceUrl: meta.source_url });
129
+ }
130
+ catch {
131
+ rows.push({ id, license: 'ERROR', required: 0, total: 0, source: '—', sourceUrl: 'Could not load metadata' });
152
132
  }
153
133
  }
154
- const externalDir = getExternalDir();
155
- if (existsSync(externalDir)) {
156
- const dirs = readdirSync(externalDir, { withFileTypes: true })
157
- .filter((d) => d.isDirectory())
158
- .map((d) => d.name);
159
- for (const id of dirs) {
160
- const dir = resolveExternalDir(id);
161
- try {
162
- const meta = loadExternalMetadata(dir);
163
- const required = meta.fields.filter((f) => f.required).length;
164
- rows.push({ id, license: meta.license, required, total: meta.fields.length, source: sourceName(meta.source_url) || '—', sourceUrl: meta.source_url });
165
- }
166
- catch {
167
- rows.push({ id, license: 'ERROR', required: 0, total: 0, source: '—', sourceUrl: 'Could not load metadata' });
168
- }
134
+ for (const entry of listExternalEntries()) {
135
+ const id = entry.id;
136
+ const dir = entry.dir;
137
+ try {
138
+ const meta = loadExternalMetadata(dir);
139
+ const required = meta.fields.filter((f) => f.required).length;
140
+ rows.push({ id, license: meta.license, required, total: meta.fields.length, source: sourceName(meta.source_url) || '—', sourceUrl: meta.source_url });
141
+ }
142
+ catch {
143
+ rows.push({ id, license: 'ERROR', required: 0, total: 0, source: '—', sourceUrl: 'Could not load metadata' });
169
144
  }
170
145
  }
171
- const recipesDir = getRecipesDir();
172
- if (existsSync(recipesDir)) {
173
- const dirs = readdirSync(recipesDir, { withFileTypes: true })
174
- .filter((d) => d.isDirectory())
175
- .map((d) => d.name);
176
- for (const id of dirs) {
177
- const dir = resolveRecipeDir(id);
178
- try {
179
- const meta = loadRecipeMetadata(dir);
180
- const required = meta.fields.filter((f) => f.required).length;
181
- const license = meta.optional ? 'recipe*' : 'recipe';
182
- rows.push({ id, license, required, total: meta.fields.length, source: sourceName(meta.source_url) || '—', sourceUrl: meta.source_url });
183
- }
184
- catch {
185
- rows.push({ id, license: 'ERROR', required: 0, total: 0, source: '—', sourceUrl: 'Could not load metadata' });
186
- }
146
+ for (const entry of listRecipeEntries()) {
147
+ const id = entry.id;
148
+ const dir = entry.dir;
149
+ try {
150
+ const meta = loadRecipeMetadata(dir);
151
+ const required = meta.fields.filter((f) => f.required).length;
152
+ const license = meta.optional ? 'recipe*' : 'recipe';
153
+ rows.push({ id, license, required, total: meta.fields.length, source: sourceName(meta.source_url) || '—', sourceUrl: meta.source_url });
154
+ }
155
+ catch {
156
+ rows.push({ id, license: 'ERROR', required: 0, total: 0, source: '', sourceUrl: 'Could not load metadata' });
187
157
  }
188
158
  }
189
159
  if (rows.length === 0) {
@@ -1 +1 @@
1
- {"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"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"}
@@ -10,6 +10,7 @@ export interface RecipeCleanArgs {
10
10
  input: string;
11
11
  output: string;
12
12
  recipe: string;
13
+ extractGuidance?: string;
13
14
  }
14
15
  export declare function runRecipeClean(args: RecipeCleanArgs): Promise<void>;
15
16
  export interface RecipePatchArgs {
@@ -1 +1 @@
1
- {"version":3,"file":"recipe.d.ts","sourceRoot":"","sources":["../../src/commands/recipe.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAkCzE;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,wBAAsB,cAAc,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAWzE;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,wBAAsB,cAAc,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAYzE"}
1
+ {"version":3,"file":"recipe.d.ts","sourceRoot":"","sources":["../../src/commands/recipe.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAkCzE;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,wBAAsB,cAAc,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CA8BzE;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,wBAAsB,cAAc,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAYzE"}
@@ -1,5 +1,6 @@
1
1
  import { resolve } from 'node:path';
2
- import { existsSync, readFileSync, readdirSync } from 'node:fs';
2
+ import { createHash } from 'node:crypto';
3
+ import { existsSync, readFileSync, readdirSync, writeFileSync } from 'node:fs';
3
4
  import { runRecipe, cleanDocument, patchDocument } from '../core/recipe/index.js';
4
5
  import { loadCleanConfig } from '../core/metadata.js';
5
6
  import { getRecipesDir, resolveRecipeDir } from '../utils/paths.js';
@@ -38,8 +39,27 @@ export async function runRecipeCommand(args) {
38
39
  export async function runRecipeClean(args) {
39
40
  const recipeDir = resolveRecipeDir(args.recipe);
40
41
  const config = loadCleanConfig(recipeDir);
42
+ const inputPath = resolve(args.input);
41
43
  try {
42
- await cleanDocument(resolve(args.input), resolve(args.output), config);
44
+ if (args.extractGuidance) {
45
+ const sourceData = readFileSync(inputPath);
46
+ const sourceHash = createHash('sha256').update(sourceData).digest('hex');
47
+ const cleanPath = resolve(recipeDir, 'clean.json');
48
+ const configData = existsSync(cleanPath) ? readFileSync(cleanPath, 'utf-8') : '{}';
49
+ const configHash = createHash('sha256').update(configData).digest('hex');
50
+ const result = await cleanDocument(inputPath, resolve(args.output), config, {
51
+ extractGuidance: true,
52
+ sourceHash,
53
+ configHash,
54
+ });
55
+ if (result.guidance) {
56
+ writeFileSync(resolve(args.extractGuidance), JSON.stringify(result.guidance, null, 2) + '\n');
57
+ console.log(`Guidance: ${args.extractGuidance} (${result.guidance.entries.length} entries)`);
58
+ }
59
+ }
60
+ else {
61
+ await cleanDocument(inputPath, resolve(args.output), config);
62
+ }
43
63
  console.log(`Cleaned: ${args.output}`);
44
64
  }
45
65
  catch (err) {
@@ -1 +1 @@
1
- {"version":3,"file":"recipe.js","sourceRoot":"","sources":["../../src/commands/recipe.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"recipe.js","sourceRoot":"","sources":["../../src/commands/recipe.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../src/commands/validate.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI,CAsBpD"}
1
+ {"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../src/commands/validate.ts"],"names":[],"mappings":"AAcA,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI,CAgCpD"}