Commit e018ac3
fix: give hand-authored toolkit prose a source home in curation/ (#1112)
* fix: give hand-authored toolkit prose a source home in curation/
documentationChunks, customImports, and subPages have no upstream
source — they lived only inside the generated data/toolkits/*.json and
survived by carry-forward from the previous artifact. --force-regenerate
and --overwrite-output set the previous-output directory to undefined,
silently deleting all hand-authored prose (82 chunks and 2 subpages
across 75 toolkits).
Extract that prose into per-toolkit curation/<toolkitId>.json files and
read them back through --custom-sections, which the merger treats as
authoritative over carry-forward. The nightly workflow now passes
--custom-sections ./curation, so a forced regeneration preserves prose
instead of wiping it.
- custom-sections-file source now loads a directory of per-toolkit files
(single-file layout still supported)
- scripts/extract-curation.ts is the one-time, re-runnable extractor
- curation/ is excluded from biome like its sibling data/toolkits/
- regression test asserts prose survives --force-regenerate
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
* fix: satisfy the strict generator typecheck in the curation extractor
scripts/ is not type-checked today; #1106 widens the generator project
to cover it, and under exactOptionalPropertyTypes plus
noUncheckedIndexedAccess this PR's files do not compile. Fixing it here
keeps the PR green whichever order the two land in.
- isNonEmptyArray returned boolean, so it narrowed nothing and the
caller compensated with an 'as DocumentationChunk[]' cast. Making it a
type predicate narrows properly and lets the cast go.
- previousToolkit is declared optional but --force-regenerate and
--overwrite-output pass it explicitly as undefined, which
exactOptionalPropertyTypes rejects. The type now says '| undefined',
matching what callers actually do — that explicit undefined is the
exact scenario the prose regression test covers.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
* fix: let the curation extractor run from any working directory
The sibling generator scripts (validate-merge, sync-toolkit-sidebar,
check-stale-summaries, report-tool-metadata) resolve data/toolkits
through the shared resolver, which anchors on the repo root. This script
used bare relative paths, so it only worked when invoked from
toolkit-docs-generator/ and failed from the root — two conventions for
the same directory.
Anchor on the script's own location instead, matching how
verify-toolkit-join, sync-toolkit-sidebar, and validate-merge already
use import.meta.url. It now works from either directory. Verified from
both: identical output, 75 files.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
* fix: regenerate toolkits when curation changes
* fix: let curation clear prose and show up in check-changes
When a curation file exists, treat its contents as authoritative so an
empty {} file deletes hand-authored prose instead of carrying it forward.
check-changes now diffs curation against committed artifacts too.
Co-authored-by: Cursor <cursoragent@cursor.com>
* fix: satisfy strict types in custom-sections-diff test
Use valid MergedToolkit metadata and documentation chunk types so the
generator typecheck passes under the widened tsconfig from main.
Co-authored-by: Cursor <cursoragent@cursor.com>
* fix: preserve curation provenance
* refactor toolkit curation to MDX
* narrow MDX curation refactor scope
* fix: load default curation during generation
* fix: preserve curated toolkit imports
* fix: fail generation on unknown curated tool targets
Validate curated `tool:` targets before the recoverable merge path so a
mistyped target fails the run instead of landing in preserve-last-known-good
recovery, where the toolkit would keep stale data and drop the chunk while CI
stayed green.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
Co-authored-by: Cursor <cursoragent@cursor.com>1 parent 76debba commit e018ac3
155 files changed
Lines changed: 3649 additions & 359 deletions
File tree
- .github/workflows
- toolkit-docs-generator
- curation
- airtableapi/imports
- arcadeengineapi
- chunks
- imports
- asanaapi
- chunks
- imports
- asana/chunks
- ashbyapi/imports
- boxapi/imports
- brightdata/chunks
- calendlyapi/imports
- clickupapi
- chunks
- imports
- clickup/chunks
- confluence/chunks
- cursoragentsapi/imports
- customerioapi/imports
- customeriopipelinesapi/imports
- customeriotrackapi/imports
- datadogapi
- chunks
- imports
- dropbox/chunks
- e2b/chunks
- exaapi/imports
- figmaapi/imports
- figma/chunks
- firecrawl/chunks
- freshserviceapi/imports
- githubapi
- chunks
- imports
- github
- chunks
- imports
- gmail
- chunks
- imports
- googlecalendar
- chunks
- imports
- googlecontacts
- chunks
- imports
- googledocs
- chunks
- imports
- googledrive/imports
- googlefinance/chunks
- googleflights/chunks
- googlehotels/chunks
- googlejobs/chunks
- googlemaps/chunks
- googlenews/chunks
- googlesearch/chunks
- googlesheets/imports
- googleslides
- chunks
- imports
- hubspotautomationapi
- chunks
- imports
- hubspotcmsapi
- chunks
- imports
- hubspotconversationsapi
- chunks
- imports
- hubspotcrmapi
- chunks
- imports
- hubspoteventsapi
- chunks
- imports
- hubspotmarketingapi
- chunks
- imports
- hubspotmeetingsapi
- chunks
- imports
- hubspotusersapi
- chunks
- imports
- hubspot/chunks
- intercomapi
- chunks
- imports
- jira
- chunks
- pages/environment-variables
- linear/chunks
- linkedin/chunks
- lumaapi
- chunks
- imports
- mailchimpmarketingapi
- chunks
- imports
- microsoftteams/chunks
- miroapi/imports
- notiontoolkit/chunks
- pagerdutyapi/imports
- pagerduty/chunks
- posthogapi
- chunks
- imports
- pylon/chunks
- reddit/chunks
- slackapi/imports
- slack/chunks
- spotify/chunks
- squareupapi/imports
- stripeapi/imports
- stripe/chunks
- ticktickapi
- chunks
- imports
- trelloapi
- chunks
- imports
- vercelapi/imports
- weaviateapi
- chunks
- imports
- xeroapi/imports
- zohobooksapi
- chunks
- imports
- zoom
- chunks
- pages/install
- src
- cli
- diff
- merger
- sources
- tests
- cli
- merger
- scenarios
- sources
- workflows
Some content is hidden
Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
70 | 70 | | |
71 | 71 | | |
72 | 72 | | |
| 73 | + | |
73 | 74 | | |
74 | 75 | | |
75 | 76 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
133 | 133 | | |
134 | 134 | | |
135 | 135 | | |
| 136 | + | |
136 | 137 | | |
137 | 138 | | |
138 | 139 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
65 | 65 | | |
66 | 66 | | |
67 | 67 | | |
| 68 | + | |
68 | 69 | | |
69 | 70 | | |
70 | 71 | | |
| |||
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
12 | 12 | | |
13 | 13 | | |
14 | 14 | | |
15 | | - | |
| 15 | + | |
16 | 16 | | |
17 | 17 | | |
18 | 18 | | |
| |||
24 | 24 | | |
25 | 25 | | |
26 | 26 | | |
27 | | - | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
28 | 31 | | |
29 | 32 | | |
30 | 33 | | |
| |||
90 | 93 | | |
91 | 94 | | |
92 | 95 | | |
| 96 | + | |
93 | 97 | | |
94 | 98 | | |
95 | 99 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
232 | 232 | | |
233 | 233 | | |
234 | 234 | | |
235 | | - | |
| 235 | + | |
236 | 236 | | |
237 | 237 | | |
238 | 238 | | |
239 | 239 | | |
240 | 240 | | |
| 241 | + | |
| 242 | + | |
| 243 | + | |
| 244 | + | |
| 245 | + | |
| 246 | + | |
| 247 | + | |
| 248 | + | |
| 249 | + | |
| 250 | + | |
| 251 | + | |
| 252 | + | |
| 253 | + | |
| 254 | + | |
241 | 255 | | |
242 | 256 | | |
243 | 257 | | |
| |||
Lines changed: 4 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
Lines changed: 15 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
Lines changed: 4 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
Lines changed: 6 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
0 commit comments