@open-agent-toolkit/cli 0.3.30 → 0.3.32
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/assets/bundle-metadata.json +1 -1
- package/assets/docs/docs-tooling/add-docs-to-a-repo.md +1 -1
- package/assets/docs/docs-tooling/check.md +24 -24
- package/assets/docs/docs-tooling/commands.md +1 -0
- package/assets/docs/docs-tooling/workflows.md +46 -19
- package/assets/docs/reference/configuration.md +1 -1
- package/assets/docs/reference/docs-index-contract.md +1 -0
- package/assets/public-package-versions.json +4 -4
- package/assets/skills/oat-agent-instructions-analyze/SKILL.md +2 -2
- package/assets/skills/oat-docs-analyze/SKILL.md +30 -16
- package/assets/skills/oat-docs-analyze/references/analysis-artifact-template.md +7 -4
- package/assets/skills/oat-docs-analyze/references/quality-checklist.md +2 -2
- package/assets/skills/oat-docs-analyze/scripts/package-drift.mjs +57 -12
- package/assets/skills/oat-docs-apply/SKILL.md +20 -12
- package/assets/skills/oat-docs-apply/references/apply-plan-template.md +3 -2
- package/dist/commands/config/index.d.ts.map +1 -1
- package/dist/commands/config/index.js +5 -0
- package/dist/commands/docs/check/reader-rules.d.ts.map +1 -1
- package/dist/commands/docs/check/reader-rules.js +8 -3
- package/dist/commands/docs/index-generate/generator.d.ts +9 -1
- package/dist/commands/docs/index-generate/generator.d.ts.map +1 -1
- package/dist/commands/docs/index-generate/generator.js +17 -6
- package/dist/commands/docs/index-generate/index.d.ts +1 -1
- package/dist/commands/docs/index-generate/index.d.ts.map +1 -1
- package/dist/commands/docs/index-generate/index.js +24 -12
- package/dist/commands/docs/init/content.d.ts +2 -3
- package/dist/commands/docs/init/content.d.ts.map +1 -1
- package/dist/commands/docs/init/content.js +3 -10
- package/dist/config/documentation-ia.d.ts +19 -0
- package/dist/config/documentation-ia.d.ts.map +1 -0
- package/dist/config/documentation-ia.js +42 -0
- package/dist/config/oat-config.d.ts.map +1 -1
- package/dist/config/oat-config.js +5 -1
- package/package.json +3 -3
|
@@ -69,7 +69,7 @@ For framework apps, it wraps `oat docs init` with a seven-step guided flow: pref
|
|
|
69
69
|
|
|
70
70
|
What the framework path adds over the raw CLI:
|
|
71
71
|
|
|
72
|
-
- **Preflight +
|
|
72
|
+
- **Preflight + existing-docs front door.** Detects existing `documentation` config / docs app dir / root `AGENTS.md` section and defaults to audit (`oat-docs-analyze` then approved `oat-docs-apply`), then exits before scaffolding. Replacement requires an explicit choice; a second app remains unsupported. See [IA selection and existing-docs routing](workflows.md#ia-selection-and-guidance).
|
|
73
73
|
- **Richer inputs.** Asks for a **site name** separate from the package name, so layout branding and page metadata converge on the same display title. `createDocsConfig()` handles runtime configuration, not titles.
|
|
74
74
|
- **CLI-owned guidance.** Fresh Fumadocs and MkDocs apps include app-root `AGENTS.md`, a reader-first Getting Started stub, a human contributor entry and `docs/contributing/docs-toolchain.md`. Commands state their working directory. Bootstrap observes this output; older CLIs missing it get analyze/manual CLI-template upgrade advice, rather than a second template owner. Existing and Markdown surfaces are preserved. Nested-standalone Fumadocs still uses the ESM-safe Turbopack root while monorepo and single-package apps use Next root discovery.
|
|
75
75
|
- **Agent Markdown.** Fumadocs exports `/llms.txt`, `/llms-full.txt` and `/llms/<page-slugs>/content.md` (root `/llms/content.md`) from loaded `.md` readers. MDX and configured non-readers are excluded. Source headers identify how to resolve authored relative links; rendered and Markdown URLs include the deployment base path once.
|
|
@@ -69,30 +69,30 @@ fenced examples do not become headings, links, groups or diagrams. YAML
|
|
|
69
69
|
frontmatter, GFM/reference links, explicit heading IDs, static HTML and supported
|
|
70
70
|
recursive tabs participate.
|
|
71
71
|
|
|
72
|
-
| Rule ID | Default behavior
|
|
73
|
-
| ----------------------- |
|
|
74
|
-
| `directory-index` | Error for a reader-bearing directory without `index.md` and a nonempty dash-bullet Contents map, invalid map grammar or unresolved strict Contents target. Ancestors of reader pages participate.
|
|
75
|
-
| `root-width` | Flat root Contents links warn above `rootWarn: 10`, error above `rootError: 14`. Real groups exempt the width.
|
|
76
|
-
| `contents-width` | Ungrouped Contents links warn above `contentsWarn: 10`, error above `contentsError: 15`. `catalog: true` or the recognized OAT generated-index marker exempts only this width rule.
|
|
77
|
-
| `leaf-size` | Direct reader pages include index. A leaf has no reader-bearing child directory: index-only errors; two total pages warn.
|
|
78
|
-
| `folder-size` | Direct reader pages including index warn above `folderWarn: 12`, error above `folderError: 20`, unless the index has real groups.
|
|
79
|
-
| `depth` | Content root is depth 0; warn at `depthWarn: 4`, error at `depthError: 5`.
|
|
80
|
-
| `page-length` | Warn above `pageLines: 500` physical source lines. Explicit `type: reference` or `reference`/`references` path segments use `referenceLines: 1000` and warn above `referenceH3: 40` real H3 headings. No default length error limit.
|
|
81
|
-
| `frontmatter` | Unreadable source, invalid YAML or a non-mapping frontmatter document errors. Read failures use relative paths and safe error codes; invalid metadata skips description validation while independent body checks continue at physical positions.
|
|
82
|
-
| `description` | Missing/empty frontmatter description errors; character lengths below `descriptionMin: 40` or above `descriptionMax: 160` warn.
|
|
83
|
-
| `h1` | Error unless each page has exactly one real H1.
|
|
84
|
-
| `links` | Error for unresolved in-root source links/anchors. No network checking. Ordinary escaping links are provenance warnings and their targets are not read. Contents links retain stricter local-map rules.
|
|
85
|
-
| `contents-description` | Error for descriptions ending in an ellipsis/truncation.
|
|
86
|
-
| `overview` | Warn below `overviewWords: 10` before Contents.
|
|
87
|
-
| `contents-separator` | Warn when Contents descriptions mix separators in a tree.
|
|
88
|
-
| `navigation` | Error for explicit navigation drift using declared ownership semantics; hand-authored/undeclared absent optional meta/pages/nav skips comparison. Nav-sync freshness stays strict; Markdown skips it.
|
|
89
|
-
| `commands` | Error for missing literal contributor scripts; implicit pnpm shorthand also accepts installed package/workspace `.bin` entries. Explicit pnpm run/npm run stays script-only; unresolved context errors; echo scripts warn.
|
|
90
|
-
| `mermaid` | Parse every real Mermaid fence using the pinned Mermaid parser. Invalid syntax errors.
|
|
91
|
-
| `diagram-pairs` | Diagram light/dark SVG siblings and both page references are required. Conventional diagram paths and explicit paired references participate; ordinary logos are not diagrams.
|
|
92
|
-
| `diagram-accessibility` | Mermaid missing `accTitle`/`accDescr` warns. SVGs require `role="img"`, nonempty title/desc. Rendered diagrams without page-visible explanatory text or an associated long description warn.
|
|
93
|
-
| `diagram-freshness` | Warn when changed Mermaid lacks both associated SVG changes; association follows the actual section/tab group. Missing usable Git comparison is explicitly unverified.
|
|
94
|
-
| `image-alt` | Warn for empty, filename/slug-like or longer than `altMax: 155` image alt text.
|
|
95
|
-
| `provenance` | Warn for planning/backlog/home paths, configured ticket/milestone patterns and ordinary links escaping the root. Legitimate reader docs remain visible.
|
|
72
|
+
| Rule ID | Default behavior |
|
|
73
|
+
| ----------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
74
|
+
| `directory-index` | Error for a reader-bearing directory without `index.md` and a nonempty dash-bullet Contents map, invalid map grammar or unresolved strict Contents target. Ancestors of reader pages participate. |
|
|
75
|
+
| `root-width` | Flat root Contents links warn above `rootWarn: 10`, error above `rootError: 14`. Real groups exempt the width. |
|
|
76
|
+
| `contents-width` | Ungrouped Contents links warn above `contentsWarn: 10`, error above `contentsError: 15`. `catalog: true` or the recognized OAT generated-index marker exempts only this width rule. |
|
|
77
|
+
| `leaf-size` | Direct reader pages include index. A leaf has no reader-bearing child directory: index-only errors; two total pages warn. |
|
|
78
|
+
| `folder-size` | Direct reader pages including index warn above `folderWarn: 12`, error above `folderError: 20`, unless the index has real groups. |
|
|
79
|
+
| `depth` | Content root is depth 0; warn at `depthWarn: 4`, error at `depthError: 5`. |
|
|
80
|
+
| `page-length` | Warn above `pageLines: 500` physical source lines. Explicit `type: reference` or `reference`/`references` path segments use `referenceLines: 1000` and warn above `referenceH3: 40` real H3 headings. No default length error limit. `line` is the first physical line past the line limit, or the first H3 past the heading limit. |
|
|
81
|
+
| `frontmatter` | Unreadable source, invalid YAML or a non-mapping frontmatter document errors. Read failures use relative paths and safe error codes; invalid metadata skips description validation while independent body checks continue at physical positions. |
|
|
82
|
+
| `description` | Missing/empty frontmatter description errors; character lengths below `descriptionMin: 40` or above `descriptionMax: 160` warn. |
|
|
83
|
+
| `h1` | Error unless each page has exactly one real H1. |
|
|
84
|
+
| `links` | Error for unresolved in-root source links/anchors. No network checking. Ordinary escaping links are provenance warnings and their targets are not read. Contents links retain stricter local-map rules. |
|
|
85
|
+
| `contents-description` | Error for descriptions ending in an ellipsis/truncation. |
|
|
86
|
+
| `overview` | Warn below `overviewWords: 10` before Contents. |
|
|
87
|
+
| `contents-separator` | Warn when Contents descriptions mix separators in a tree. |
|
|
88
|
+
| `navigation` | Error for explicit navigation drift using declared ownership semantics; hand-authored/undeclared absent optional meta/pages/nav skips comparison. Nav-sync freshness stays strict; Markdown skips it. |
|
|
89
|
+
| `commands` | Error for missing literal contributor scripts; implicit pnpm shorthand also accepts installed package/workspace `.bin` entries. Explicit pnpm run/npm run stays script-only; unresolved context errors; echo scripts warn. |
|
|
90
|
+
| `mermaid` | Parse every real Mermaid fence using the pinned Mermaid parser. Invalid syntax errors. |
|
|
91
|
+
| `diagram-pairs` | Diagram light/dark SVG siblings and both page references are required. Conventional diagram paths and explicit paired references participate; ordinary logos are not diagrams. |
|
|
92
|
+
| `diagram-accessibility` | Mermaid missing `accTitle`/`accDescr` warns. SVGs require `role="img"`, nonempty title/desc. Rendered diagrams without page-visible explanatory text or an associated long description warn. |
|
|
93
|
+
| `diagram-freshness` | Warn when changed Mermaid lacks both associated SVG changes; association follows the actual section/tab group. Missing usable Git comparison is explicitly unverified. |
|
|
94
|
+
| `image-alt` | Warn for empty, filename/slug-like or longer than `altMax: 155` image alt text. |
|
|
95
|
+
| `provenance` | Warn for planning/backlog/home paths, configured ticket/milestone patterns and ordinary links escaping the root. Legitimate reader docs remain visible. |
|
|
96
96
|
|
|
97
97
|
These are lint limits, distinct from authoring targets for concise pages and
|
|
98
98
|
focused maps. `documentation.nonReaderPaths` uses the existing
|
|
@@ -226,6 +226,7 @@ Key behavior:
|
|
|
226
226
|
- refuses a symlink chain that exceeds its own 32-hop cap, naming the path you supplied or the CLI derived rather than an intermediate link, and addressing the flag that owns it: an unusable **output** chain names `--output` and exits `1`; an unusable **docs directory** chain names `--docs-dir` and, when the directory was derived from `documentation.root` rather than passed explicitly, also names the `oat config set documentation.root <path>` repair and exits `2` as unusable path configuration. That cap governs the dangling links the command walks itself; a chain the operating system refuses first surfaces as its own `ELOOP` error with exit `1`, which is what a too-deep chain reports on a platform whose own limit is 32 or lower
|
|
227
227
|
- writes configuration only for the Fumadocs manifest transition — recording the manifest it just wrote inside `documentation.root` in `documentation.index`, when `documentation.tooling` is `fumadocs` or the config declares neither `tooling` nor `config`. Markdown and MkDocs configurations are never written, and `documentation.root` and `documentation.config` are never modified
|
|
228
228
|
- prepends an `AUTOGENERATED` warning comment to the output and rewrites the file on every run; do not hand-edit the generated `index.md`
|
|
229
|
+
- writes each link relative to the output file, so links resolve from where the manifest sits: a Fumadocs app-root `index.md` links `docs/guide.md` and `docs/index.md`, never itself. Whitespace, `#`, `?`, `%`, `&`, backslashes, parentheses and angle brackets in link paths are percent-encoded (UTF-8). Starting in 0.3.32; earlier manifests used docs-directory-relative links
|
|
229
230
|
- should be freshness-checked against authored `docs/**/index.md` `## Contents` maps before treating it as navigation evidence
|
|
230
231
|
- ordering: authored local Contents orders surviving direct entries in the hierarchical inventory; cross-directory links order the containing entry without duplicates. Child directory titles use index frontmatter, then H1, then slug. Remaining entries use index/directories/files/lexical fallback and are flagged `[unlisted in Contents]` when Contents exists. Missing Contents keeps fallback; malformed present Contents is an error
|
|
231
232
|
- reports the derived docs directory in human output and as `docsDir` / `docsDirSource` under `--json`, alongside `excludes` — the effective exclusion list, `documentation.excludes`, applicable `documentation.nonReaderPaths`, then the `--exclude` flags, exactly as handed to the generator
|
|
@@ -19,7 +19,9 @@ Install the workflow skills with `oat tools install docs` (preferred) or
|
|
|
19
19
|
- `oat docs migrate` converts MkDocs admonitions to GFM callouts and injects frontmatter
|
|
20
20
|
- `oat docs generate-index` generates a Fumadocs app-root docs index manifest from the Markdown file tree
|
|
21
21
|
- `oat docs nav sync` regenerates MkDocs `mkdocs.yml` nav, or strict Fumadocs `meta.json` files, from `index.md` `## Contents` sections
|
|
22
|
-
- `oat docs
|
|
22
|
+
- [`oat docs check`](check.md) checks reader pages, navigation, contributor commands and diagrams without building a site
|
|
23
|
+
- [`oat docs literals`](commands.md#oat-docs-literals) supplies bounded inline-code occurrence evidence for analyze
|
|
24
|
+
- `oat docs analyze` and `oat docs apply` expose guidance pointers in CLI help; the skills perform analysis and apply
|
|
23
25
|
|
|
24
26
|
### Skills
|
|
25
27
|
|
|
@@ -93,8 +95,9 @@ Diagram: bootstrap once, then analyze, approve and apply only agreed improvement
|
|
|
93
95
|
Q -->|"all skipped"| STOP
|
|
94
96
|
```
|
|
95
97
|
|
|
96
|
-
- **
|
|
97
|
-
you to confirm its inputs, then runs `oat docs init`.
|
|
98
|
+
- **Fresh setup or explicit adoption.** `oat-docs-bootstrap` checks the repo without writing, asks
|
|
99
|
+
you to confirm its inputs, then runs `oat docs init`. Existing docs default to
|
|
100
|
+
[analyze then approved apply](#ia-selection-and-guidance) and exit before scaffolding. Plain Markdown setup validates authored files,
|
|
98
101
|
configuration and guidance without installing app dependencies or building a
|
|
99
102
|
site. Fumadocs and MkDocs setup inspects CLI-owned scaffold output, installs
|
|
100
103
|
dependencies, verifies the build and provides a walkthrough.
|
|
@@ -277,9 +280,10 @@ with a docs app simply because one can be scaffolded.
|
|
|
277
280
|
|
|
278
281
|
Preflight only reads. It checks declared documentation configuration before
|
|
279
282
|
discovery and checks framework evidence before assuming a populated
|
|
280
|
-
directory is plain Markdown.
|
|
281
|
-
|
|
282
|
-
|
|
283
|
+
directory is plain Markdown. Existing docs default to analyze then approved
|
|
284
|
+
apply and exit before scaffolding. For fresh setup or explicit adoption, the
|
|
285
|
+
skill summarizes your choices and asks you to confirm them before it runs
|
|
286
|
+
`oat docs init`. The two setup paths differ from that point on.
|
|
283
287
|
|
|
284
288
|
**Plain Markdown path:** Use this when you want plain Markdown files and no
|
|
285
289
|
site runtime. The skill collects a title, a dedicated repository-relative
|
|
@@ -352,8 +356,9 @@ pages, grouped headings in one flat index often suffice.
|
|
|
352
356
|
For fresh Markdown/framework setup and explicit adoption, bootstrap proposes
|
|
353
357
|
two plausible two-level trees with 5–8 representative page placements each,
|
|
354
358
|
page jobs, nearest presets and tradeoffs. Analyze's `--ia` does the same in its
|
|
355
|
-
existing analysis artifact and review loop.
|
|
356
|
-
|
|
359
|
+
existing analysis artifact and review loop. `--ia` and `--ia-guidance` are
|
|
360
|
+
**skill arguments**, not `oat docs init` flags. The CLI accepts the approved
|
|
361
|
+
selection through the paired [`--ia-preset` and `--planned-pages` flags](commands.md#approved-preset-readers).
|
|
357
362
|
|
|
358
363
|
Resolve advisory sources in this order: explicit `--ia-guidance <path|url>` or
|
|
359
364
|
conversation, repo `documentation.guidance`, user config, then the installed
|
|
@@ -372,8 +377,15 @@ proposal becomes durable only after approval: bootstrap/apply use `oat decision
|
|
|
372
377
|
and an Information architecture section in the framework docs-app `AGENTS.md`
|
|
373
378
|
or Markdown contributing page, plus the shared `documentation.ia` mirror.
|
|
374
379
|
Authored records stay authoritative; missing/conflicting records become `ask_user`.
|
|
375
|
-
|
|
376
|
-
|
|
380
|
+
Fresh empty targets can now materialize all six presets and their relevant
|
|
381
|
+
page-template subsets, including Feature and QA validation templates, through
|
|
382
|
+
that opt-in flag pair. Counts below 15 collapse reader tracks into grouped root
|
|
383
|
+
headings; 15 or more creates tracks, while `flat-small` always stays flat.
|
|
384
|
+
`contributing/templates/**` is excluded from reader navigation, checks and
|
|
385
|
+
manifests. See [preset mappings and template subsets](commands.md#approved-preset-readers),
|
|
386
|
+
including the MkDocs rendered-route limitation. Selection does not create the
|
|
387
|
+
separate approved IA decision; the IA Proposal template remains the selection
|
|
388
|
+
artifact.
|
|
377
389
|
|
|
378
390
|
## oat-docs-analyze
|
|
379
391
|
|
|
@@ -454,8 +466,10 @@ navigation or generated-artifact refreshes, plus a structured result listing
|
|
|
454
466
|
applied, skipped (ID/reason), and failed IDs. Markdown retains its authored
|
|
455
467
|
index and needs no framework build or nav sync; Fumadocs sidebar metadata is
|
|
456
468
|
regenerated only with recorded `navOwner: nav-sync`. Hand-authored navigation
|
|
457
|
-
gets approved edits and read-only Contents membership/order comparison
|
|
458
|
-
|
|
469
|
+
gets approved edits and read-only Contents membership/order comparison.
|
|
470
|
+
[Absent optional metadata/pages/nav skips comparison](check.md); implicit
|
|
471
|
+
Fumadocs order is not checked. Explicit lists remain checked and nav-sync
|
|
472
|
+
freshness stays strict. Undeclared ownership becomes `ask_user`. The summary
|
|
459
473
|
reports the applied plan and checks.
|
|
460
474
|
|
|
461
475
|
**What it does without asking:** Nothing changes until you approve the plan.
|
|
@@ -481,7 +495,7 @@ work.
|
|
|
481
495
|
## Approval, IA records and restructuring
|
|
482
496
|
|
|
483
497
|
Every analyze recommendation has a stable ID and `approval: explicit | default`.
|
|
484
|
-
`apply all` covers only non-blocked default content repairs. Docs
|
|
498
|
+
`apply all` covers only non-blocked default content repairs. Docs tooling updates,
|
|
485
499
|
restructure blocks and work outside Markdown scope require individual approval
|
|
486
500
|
by ID; unattended runs skip explicit items even when their IDs were supplied,
|
|
487
501
|
with reason `explicit_requires_interactive_approval`. Kickoff consent is not
|
|
@@ -524,13 +538,26 @@ canonical-source judgment; not-found is initially unverified. It cannot prove
|
|
|
524
538
|
runtime behavior, registry membership or scenario correctness. Accepted IA,
|
|
525
539
|
source citations and existing recommendation approval classes still govern.
|
|
526
540
|
|
|
527
|
-
For framework apps, offline drift compares installed `@open-agent-toolkit/docs-*` packages
|
|
541
|
+
For framework apps, offline drift compares installed `@open-agent-toolkit/docs-*` packages, and
|
|
542
|
+
the app's own `@open-agent-toolkit/cli` when the app declares it, to the
|
|
528
543
|
running CLI's bundled `public-package-versions.json`, never registry latest.
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
544
|
+
The app-local CLI matters because its `oat docs generate-index` runs in
|
|
545
|
+
`predev`/`prebuild`: a stale local CLI writes a different manifest than yours, so
|
|
546
|
+
its drift joins the docs-package drift in the same tooling update.
|
|
547
|
+
Older installed packages produce an explicit drift recommendation with the
|
|
548
|
+
exact upgrade command. Equal versions are current. Newer packages are `ahead`: select
|
|
549
|
+
or update the intended CLI installation before re-analysis, without a package
|
|
550
|
+
downgrade command. Missing installations or bundle metadata and non-orderable
|
|
551
|
+
versions are `unverified` and require manual verification; hoisted-only packages
|
|
552
|
+
also remain unverified. Neither ahead nor unverified supplies a package-update
|
|
553
|
+
command or authorizes an upgrade. Individual tooling approval permits only
|
|
554
|
+
docs-app `@open-agent-toolkit/docs-*` dependency bumps, a bump of the app's own
|
|
555
|
+
`@open-agent-toolkit/cli` in the dependency section it already uses (with the
|
|
556
|
+
resulting lockfile), regenerating the app's generated manifest with that upgraded
|
|
557
|
+
CLI, the admonition/frontmatter conversions already supported by
|
|
558
|
+
`oat docs migrate`, and build verification. Other application dependencies,
|
|
559
|
+
framework upgrades, app config, routes and package scripts remain manual
|
|
560
|
+
required changes.
|
|
534
561
|
|
|
535
562
|
## Related docs
|
|
536
563
|
|
|
@@ -94,7 +94,7 @@ Common keys in `.oat/config.json`:
|
|
|
94
94
|
- `worktrees.root` — where OAT-managed worktrees live
|
|
95
95
|
- `git.defaultBranch` — base branch fallback for PR workflows
|
|
96
96
|
- `documentation.root`, `documentation.tooling`, `documentation.config` — docs-surface ownership. With tooling `markdown`, root is the literal content directory (including nested `docs`) and `documentation.index` is authored `<root>/index.md`; Markdown adds no framework config. Framework roots retain app/source semantics. Use `oat docs init --framework markdown` or explicit `--adopt` for setup; optional manifests need external output and never change the authored index. See [Documentation path resolution](oat-directory-structure.md#documentation-path-resolution)
|
|
97
|
-
- `documentation.ia` — shared repository-only mirror of the accepted authored IA. Set JSON with required `preset` and repo-relative `decision`, optional `tracks: [{path, principle}]`, and optional `verification: "triad" | "agent-only" | "none"`. The decision record plus Information architecture section in framework docs-app `AGENTS.md` or Markdown contributing page remain authoritative. Use `oat config set documentation.ia '{"preset":"
|
|
97
|
+
- `documentation.ia` — shared repository-only mirror of the accepted authored IA. Set JSON with required `preset` (one of the `oat docs init --ia-preset` IDs: `product-engineering-qa`, `consumer-maintainer`, `domain-engineering`, `task-type`, `toolkit-cli` or `flat-small`; the matching approved label, such as `Flat Small`, is accepted as an exact alias) and repo-relative `decision`, optional `tracks: [{path, principle}]`, and optional `verification: "triad" | "agent-only" | "none"`. The decision record plus Information architecture section in framework docs-app `AGENTS.md` or Markdown contributing page remain authoritative. Use `oat config set documentation.ia '{"preset":"flat-small","decision":".oat/repo/reference/decisions/DR-example.md","verification":"none"}'`; unset removes the mirror only. Invalid shapes, unknown presets and absolute, URL or `..` paths are rejected, both when set and when stored config is read: from 0.3.32 a stored unknown preset makes config-reading commands fail until repaired with `oat config set documentation.ia '<JSON>'` or `oat config unset documentation.ia --shared`; the CLI does not check that the decision file exists, and analyze reports a missing record as `ask_user`; neither `--user` nor `--local` is supported.
|
|
98
98
|
- `documentation.navOwner` — shared `nav-sync | hand-authored`, independent of recorded IA, for Fumadocs/MkDocs only. Set with `oat config set documentation.navOwner hand-authored`. Absent is undeclared (`get --json` reports null/default), never implied nav-sync; analyze asks the operator and no automatic regeneration is authorized. Markdown ignores this field. Fresh Fumadocs/MkDocs init explicitly seeds nav-sync and generates navigation after scaffold/config succeeds. Existing apps are not regenerated through bootstrap; explicit nav-sync commands retain their behavior.
|
|
99
99
|
- `documentation.guidance` — advisory Markdown IA source paths/URLs, as a string or ordered non-empty string array. Repo config overrides user config; explicit skill input overrides both. Absent values use the installed `authoring-docs` IA reference. Use `oat config set documentation.guidance ./docs/ia/index.md` or `oat config set documentation.guidance '["~/guidance/index.md","https://example.com/docs/index.md"]' --user`. Arrays retain order; commas in paths are literal. `--local` is unsupported. `get --json` reports `shared`, `user`, or `default` provenance; `unset` reveals the next tier. Only locators are stored, with unrelated config fields preserved. Sources stay read-only, external packs have `index.md` and `## Contents`, and local AGENTS/contributing rules remain authoritative. Conflicts become `ask_user`. See [IA selection](../docs-tooling/workflows.md#ia-selection-and-guidance).
|
|
100
100
|
- `documentation.nonReaderPaths` — shared repository-only array of content-root-relative globs for drafts/templates. Set with `oat config set documentation.nonReaderPaths 'templates/,drafts/**'`; empty value clears and `unset` removes it. Entries are trimmed/de-duplicated; non-arrays, empty or non-string entries are rejected. Local/user writes are refused. The [bounded grammar](../docs-tooling/commands.md#exclusion-patterns) matches nav inventory, explicit Contents targets, nav checks and manifests only for the configured app/content root; excluded metadata is not rewritten. Fumadocs source collections also exclude rendering when wired through OAT source config. Pinned MkDocs 1.4.2 still renders excluded pages as routes; only nav/manifest exclusion is supported.
|
|
@@ -73,6 +73,7 @@ Fumadocs generated behavior:
|
|
|
73
73
|
- The inventory stays hierarchical. Each local Contents orders its surviving direct entries; a cross-directory link orders its containing direct entry without duplicating the page. Child directory titles come from their index frontmatter title, then H1, then slug, independently of nav labels.
|
|
74
74
|
- Remaining entries use deterministic index/directories/files/lexical fallback and carry `[unlisted in Contents]` when a Contents map exists. With no Contents map the inventory keeps its fallback order; malformed present Contents reports the shared grammar errors.
|
|
75
75
|
- Generated manifests should carry an autogen warning and are rewritten by `predev` / `prebuild`.
|
|
76
|
+
- Manifest links are relative to the manifest file, so the app-root `index.md` links docs pages as `docs/<path>.md`.
|
|
76
77
|
|
|
77
78
|
## Fumadocs Nav Sync
|
|
78
79
|
|
|
@@ -5,7 +5,7 @@ disable-model-invocation: true
|
|
|
5
5
|
user-invocable: true
|
|
6
6
|
allowed-tools: Read, Write, Bash(git:*), Glob, Grep, AskUserQuestion, Task
|
|
7
7
|
metadata:
|
|
8
|
-
version: 1.12.
|
|
8
|
+
version: 1.12.5
|
|
9
9
|
---
|
|
10
10
|
|
|
11
11
|
# Agent Instructions Analysis
|
|
@@ -455,7 +455,7 @@ Use the `analysis` target:
|
|
|
455
455
|
Follow the canonical loop exactly:
|
|
456
456
|
|
|
457
457
|
1. Resolve `workflow.autoArtifactReview.analysis`; missing config means enabled, and only explicit `false` skips the loop.
|
|
458
|
-
2. Resolve `oat_orchestration_retry_limit
|
|
458
|
+
2. Resolve the retry bound from `oat_orchestration_retry_limit` in the active OAT project's `state.md` frontmatter; it is not an `oat config` key. Default to `2` when no project is active or the value is absent or invalid.
|
|
459
459
|
3. Dispatch `oat-reviewer` in structured mode via Tier 1 subagent when available, falling back to the same reviewer prompt inline when needed.
|
|
460
460
|
4. Apply Critical and High fixes when they are local to the analysis artifact, companion bundle, and unambiguous.
|
|
461
461
|
5. Offer Medium and Low fixes rather than applying them silently.
|
|
@@ -4,9 +4,9 @@ description: Run when you need to evaluate documentation structure, navigation,
|
|
|
4
4
|
argument-hint: '[target] [--ia] [--ia-guidance <path|url>]'
|
|
5
5
|
disable-model-invocation: true
|
|
6
6
|
user-invocable: true
|
|
7
|
-
allowed-tools: Read, Write, Bash(git:*), Bash(oat config:*), Bash(oat docs nav sync --check:*), Bash(oat docs check:*), Bash(oat docs literals:*), Bash(pnpm:*), Bash(bash:*), Bash(jq:*), Bash(node:*), Bash(mkdir:*), Bash(date:*), Bash(echo:*), Bash(cd:*), Bash(pwd:*), Glob, Grep, AskUserQuestion, Task
|
|
7
|
+
allowed-tools: Read, Write, Bash(git:*), Bash(oat config:*), Bash(oat docs nav sync --check:*), Bash(oat docs check:*), Bash(oat docs literals:*), Bash(pnpm:*), Bash(bash:*), Bash(jq:*), Bash(node:*), Bash(command -v:*), Bash(sed:*), Bash(npm root -g:*), Bash(test:*), Bash(oat --version), Bash(mkdir:*), Bash(date:*), Bash(echo:*), Bash(cd:*), Bash(pwd:*), Glob, Grep, AskUserQuestion, Task
|
|
8
8
|
metadata:
|
|
9
|
-
version: '1.
|
|
9
|
+
version: '1.8.0'
|
|
10
10
|
---
|
|
11
11
|
|
|
12
12
|
# Docs Analysis
|
|
@@ -323,7 +323,9 @@ In `full` mode, evaluate the whole docs surface.
|
|
|
323
323
|
Read the authored IA decision and `## Information architecture` section in the
|
|
324
324
|
docs-app AGENTS.md (Fumadocs/MkDocs) or contributing page (Markdown).
|
|
325
325
|
`documentation.ia` is a repository-only mirror: compare preset, decision path,
|
|
326
|
-
tracks/principles and verification overlay to those authored sources.
|
|
326
|
+
tracks/principles and verification overlay to those authored sources. A preset
|
|
327
|
+
ID and its approved label (for example `flat-small` and Flat Small) name the
|
|
328
|
+
same preset, not a contradiction. The
|
|
327
329
|
authored record is authoritative; missing/broken records or contradictory
|
|
328
330
|
mirrors become `ask_user` findings. No recorded IA means `ask_user` to choose
|
|
329
331
|
and record one, not an inferred preset. Keep ordinary contract analysis useful
|
|
@@ -556,7 +558,10 @@ suppressions or automatic navigation ownership.
|
|
|
556
558
|
|
|
557
559
|
If a generated root index or manifest exists:
|
|
558
560
|
|
|
559
|
-
1. Compare generated entries with the authored `## Contents` graph.
|
|
561
|
+
1. Compare generated entries with the authored `## Contents` graph. Current
|
|
562
|
+
manifests link relative to the manifest file (an app-root manifest links
|
|
563
|
+
`docs/<page>.md`); links relative to the docs directory instead mean an older
|
|
564
|
+
CLI wrote it, so cite the CLI that regenerates it rather than content drift.
|
|
560
565
|
2. Flag generated output that is missing, ignored/local-only when local guidance
|
|
561
566
|
expects a tracked artifact, stale, ordered differently from authored maps, or
|
|
562
567
|
unclear because generator semantics are undocumented.
|
|
@@ -616,18 +621,23 @@ record whether app migration is relevant only when evidence or user intent suppo
|
|
|
616
621
|
|
|
617
622
|
For framework apps read their package.json and installed docs packages against
|
|
618
623
|
the running CLI's bundled `assets/public-package-versions.json`, without network.
|
|
624
|
+
The helper covers the `@open-agent-toolkit/docs-*` packages and, when the app
|
|
625
|
+
declares it in any dependency section, the app-local `@open-agent-toolkit/cli`
|
|
626
|
+
whose `oat docs generate-index` runs in `predev`/`prebuild`; a stale local CLI
|
|
627
|
+
writes a different manifest than the running CLI.
|
|
619
628
|
Run this skill's production helper after resolving this skill's own directory:
|
|
620
629
|
|
|
621
630
|
```bash
|
|
622
631
|
node "$SKILL_DIR/scripts/package-drift.mjs" --app "<docs-app-dir>" --cli "$(command -v oat)"
|
|
623
632
|
```
|
|
624
633
|
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
the
|
|
630
|
-
|
|
634
|
+
`--cli` follows a direct install to its package root. For a POSIX shell shim,
|
|
635
|
+
such as a pnpm global `oat`, the helper reads the shim as text without executing
|
|
636
|
+
it: the `# cmd-shim-target=` comment first, then relative `exec` targets resolved
|
|
637
|
+
from the shim's real directory. If the helper still reports that it cannot
|
|
638
|
+
locate the running CLI bundle (a wrapper it cannot parse), locate the invoked
|
|
639
|
+
installation offline without evaluating wrapper text: find its JavaScript entry
|
|
640
|
+
and that entry's package root containing `package.json` named `@open-agent-toolkit/cli` and
|
|
631
641
|
`assets/public-package-versions.json`. `pnpm root -g` or `npm root -g` can help
|
|
632
642
|
locate it, but newer pnpm installations may nest it in a hashed directory; use
|
|
633
643
|
the actual shim target, never another checkout's bundle. Bind the inspected paths:
|
|
@@ -655,8 +665,11 @@ The helper reports declared and installed versions, target versions and commands
|
|
|
655
665
|
for orderable targets. If the app uses a different package manager, translate the
|
|
656
666
|
command to its documented equivalent preserving package, exact target and
|
|
657
667
|
dependency section. Cite the manifest, installed package path, bundle path and
|
|
658
|
-
exact command. Report older-package drift
|
|
659
|
-
|
|
668
|
+
exact command. Report older docs-package drift and older app-local CLI drift
|
|
669
|
+
together as one `tooling-update`, `approval: explicit`, listing each drifting
|
|
670
|
+
package's exact command in its own dependency section; apply's approved tooling
|
|
671
|
+
update bumps them and regenerates the manifest with the upgraded app-local CLI.
|
|
672
|
+
Describe unsupported scaffold repairs separately as `manual`. Markdown has no
|
|
660
673
|
app-package drift check. This helper reads only and never upgrades anything.
|
|
661
674
|
|
|
662
675
|
### Step 7: Severity-Rate Findings
|
|
@@ -672,9 +685,10 @@ Use these defaults:
|
|
|
672
685
|
|
|
673
686
|
Give every recommendation a unique stable ID (`R-001`, etc.) and
|
|
674
687
|
`approval: explicit | default`; preserve IDs through review and never reuse a
|
|
675
|
-
retired ID for a different change. `explicit` covers
|
|
676
|
-
restructure blocks and anything outside the
|
|
677
|
-
IA decision/config writes). `default` covers
|
|
688
|
+
retired ID for a different change. `explicit` covers tooling updates (docs
|
|
689
|
+
packages and the app-local CLI), restructure blocks and anything outside the
|
|
690
|
+
Markdown scope (including authored IA decision/config writes). `default` covers
|
|
691
|
+
ordinary in-scope content repairs.
|
|
678
692
|
Missing evidence, `omit` and `ask_user` remain independent blockers regardless
|
|
679
693
|
of approval class. Capture exact targets and commands; an explicit class is not
|
|
680
694
|
permission to perform unsupported work. Apply's one input is this artifact plus
|
|
@@ -723,7 +737,7 @@ Use the `analysis` target:
|
|
|
723
737
|
Follow the canonical loop exactly:
|
|
724
738
|
|
|
725
739
|
1. Resolve `workflow.autoArtifactReview.analysis`; missing config means enabled, and only explicit `false` skips the loop.
|
|
726
|
-
2. Resolve `oat_orchestration_retry_limit
|
|
740
|
+
2. Resolve the retry bound from `oat_orchestration_retry_limit` in the active OAT project's `state.md` frontmatter; it is not an `oat config` key. Default to `2` when no project is active or the value is absent or invalid.
|
|
727
741
|
3. Dispatch `oat-reviewer` in structured mode via Tier 1 subagent when available, falling back to the same reviewer prompt inline when needed.
|
|
728
742
|
4. Apply Critical and High fixes when they are local to the analysis artifact and unambiguous.
|
|
729
743
|
5. Offer Medium and Low fixes rather than applying them silently.
|
|
@@ -47,12 +47,15 @@ Do not invent missing audiences or choose an IA without approval.
|
|
|
47
47
|
- Bundle metadata: {running CLI public-package-versions.json path or unverified}
|
|
48
48
|
- Docs app manifest: {path; Markdown: not applicable}
|
|
49
49
|
|
|
50
|
-
| Package
|
|
51
|
-
|
|
|
52
|
-
| {@open-agent-toolkit/docs-\*} | {range / actual version or missing} | {version} | {current / drift / ahead / unverified} | {drift only: helper upgrade command adapted to actual manager; otherwise none} | {drift only: R-NNN; approval: explicit; otherwise none} |
|
|
50
|
+
| Package | Declared / installed | Bundled | Status | Exact upgrade command | Recommendation ID |
|
|
51
|
+
| --------------------------------------------- | ----------------------------------- | --------- | -------------------------------------- | ------------------------------------------------------------------------------ | ------------------------------------------------------- |
|
|
52
|
+
| {@open-agent-toolkit/docs-\* or declared cli} | {range / actual version or missing} | {version} | {current / drift / ahead / unverified} | {drift only: helper upgrade command adapted to actual manager; otherwise none} | {drift only: R-NNN; approval: explicit; otherwise none} |
|
|
53
53
|
|
|
54
54
|
Only older installed packages (`drift`) receive a package-upgrade command and
|
|
55
|
-
stable recommendation ID with `approval: explicit`.
|
|
55
|
+
stable recommendation ID with `approval: explicit`. Docs-package drift and
|
|
56
|
+
app-local `@open-agent-toolkit/cli` drift share one `tooling-update` ID, each row
|
|
57
|
+
keeping its own dependency section in its command; apply then regenerates the
|
|
58
|
+
manifest with the upgraded app-local CLI. `current` needs no tooling
|
|
56
59
|
recommendation, even if the helper emits a reinstall command. For `ahead`, select
|
|
57
60
|
or update the intended CLI installation, then re-analyze; do not recommend a docs
|
|
58
61
|
package downgrade. `unverified` requires manual verification before a package
|
|
@@ -38,8 +38,8 @@ Use this checklist when evaluating a docs surface.
|
|
|
38
38
|
|
|
39
39
|
- Opening code fences have language identifiers.
|
|
40
40
|
- Shell command examples follow the repo's documented fence convention; default
|
|
41
|
-
to `
|
|
42
|
-
|
|
41
|
+
to `bash` unless the example is POSIX-only (`sh`) or local guidance requires
|
|
42
|
+
another fence.
|
|
43
43
|
- Headings are non-empty.
|
|
44
44
|
- Each authored page has at most one document-level H1 unless the file is an
|
|
45
45
|
intentional imported README or generated/imported artifact.
|
|
@@ -1,18 +1,15 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
// Read-only, offline comparison used by oat-docs-analyze. No package resolution or install.
|
|
3
|
-
import { readFile, realpath } from 'node:fs/promises';
|
|
4
|
-
import { dirname, join, resolve } from 'node:path';
|
|
3
|
+
import { open, readFile, realpath } from 'node:fs/promises';
|
|
4
|
+
import { dirname, isAbsolute, join, resolve } from 'node:path';
|
|
5
5
|
import { parseArgs } from 'node:util';
|
|
6
6
|
|
|
7
7
|
const shellQuote = (value) =>
|
|
8
8
|
`'${value.replaceAll("'", String.fromCharCode(39, 92, 39, 39))}'`;
|
|
9
9
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
'Provide --cli with the installed oat executable or --versions with its bundled public-package-versions.json.',
|
|
14
|
-
);
|
|
15
|
-
let directory = dirname(await realpath(executable));
|
|
10
|
+
// Walk up from a real file to the installed CLI package root.
|
|
11
|
+
async function cliPackageFor(file) {
|
|
12
|
+
let directory = dirname(file);
|
|
16
13
|
for (;;) {
|
|
17
14
|
try {
|
|
18
15
|
const pkg = JSON.parse(
|
|
@@ -24,14 +21,60 @@ async function versionsForCli(executable) {
|
|
|
24
21
|
if (error.code !== 'ENOENT') throw error;
|
|
25
22
|
}
|
|
26
23
|
const parent = dirname(directory);
|
|
27
|
-
if (parent === directory)
|
|
28
|
-
throw new Error(
|
|
29
|
-
'Cannot locate the running CLI bundle through this wrapper; supply --versions from that installed CLI.',
|
|
30
|
-
);
|
|
24
|
+
if (parent === directory) return null;
|
|
31
25
|
directory = parent;
|
|
32
26
|
}
|
|
33
27
|
}
|
|
34
28
|
|
|
29
|
+
// Package-manager shims (pnpm, cmd-shim) are POSIX shell scripts. Parse them as
|
|
30
|
+
// text and never execute them: the `# cmd-shim-target=` comment names the
|
|
31
|
+
// absolute entry; `exec` lines name it relative to the shim's real directory.
|
|
32
|
+
async function shimTargets(file) {
|
|
33
|
+
const handle = await open(file, 'r');
|
|
34
|
+
let text;
|
|
35
|
+
try {
|
|
36
|
+
const { size } = await handle.stat();
|
|
37
|
+
if (size > 65536) return [];
|
|
38
|
+
text = await handle.readFile('utf8');
|
|
39
|
+
} finally {
|
|
40
|
+
await handle.close();
|
|
41
|
+
}
|
|
42
|
+
const [shebang = ''] = text.split(/\r?\n/, 1);
|
|
43
|
+
if (!/^#!.*\b(?:sh|bash|dash|ksh|zsh)\b/.test(shebang)) return [];
|
|
44
|
+
const base = dirname(file);
|
|
45
|
+
const targets = [];
|
|
46
|
+
for (const match of text.matchAll(/^#\s*cmd-shim-target=(.+?)\s*$/gm))
|
|
47
|
+
targets.push(isAbsolute(match[1]) ? match[1] : resolve(base, match[1]));
|
|
48
|
+
for (const match of text.matchAll(/"\$basedir\/([^"$`\\]+\.(?:c|m)?js)"/g))
|
|
49
|
+
targets.push(resolve(base, match[1]));
|
|
50
|
+
return [...new Set(targets)];
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
async function versionsForCli(executable) {
|
|
54
|
+
if (!executable)
|
|
55
|
+
throw new Error(
|
|
56
|
+
'Provide --cli with the installed oat executable or --versions with its bundled public-package-versions.json.',
|
|
57
|
+
);
|
|
58
|
+
const file = await realpath(executable);
|
|
59
|
+
const targets = await shimTargets(file);
|
|
60
|
+
// Direct installs resolve to the bundle entry itself; shims are never walked
|
|
61
|
+
// from their own location, which can sit above an unrelated package.
|
|
62
|
+
for (const target of targets.length > 0 ? targets : [file]) {
|
|
63
|
+
let entry;
|
|
64
|
+
try {
|
|
65
|
+
entry = await realpath(target);
|
|
66
|
+
} catch (error) {
|
|
67
|
+
if (error.code === 'ENOENT' || error.code === 'ENOTDIR') continue;
|
|
68
|
+
throw error;
|
|
69
|
+
}
|
|
70
|
+
const found = await cliPackageFor(entry);
|
|
71
|
+
if (found) return found;
|
|
72
|
+
}
|
|
73
|
+
throw new Error(
|
|
74
|
+
'Cannot locate the running CLI bundle through this wrapper; supply --versions from that installed CLI.',
|
|
75
|
+
);
|
|
76
|
+
}
|
|
77
|
+
|
|
35
78
|
try {
|
|
36
79
|
const { values } = parseArgs({
|
|
37
80
|
options: {
|
|
@@ -58,6 +101,8 @@ try {
|
|
|
58
101
|
for (const [name, declared] of Object.entries(manifest[section] ?? {})) {
|
|
59
102
|
if (
|
|
60
103
|
![
|
|
104
|
+
// The app-local CLI runs generate-index in predev/prebuild.
|
|
105
|
+
'@open-agent-toolkit/cli',
|
|
61
106
|
'@open-agent-toolkit/docs-config',
|
|
62
107
|
'@open-agent-toolkit/docs-theme',
|
|
63
108
|
'@open-agent-toolkit/docs-transforms',
|
|
@@ -5,7 +5,7 @@ disable-model-invocation: true
|
|
|
5
5
|
user-invocable: true
|
|
6
6
|
allowed-tools: Read, Write, Edit, Bash(git:*), Bash(gh:*), Bash(oat:*), Bash(pnpm:*), Bash(bash:*), Bash(jq:*), Bash(mkdir:*), Bash(date:*), Bash(echo:*), Bash(cd:*), Bash(pwd:*), Glob, Grep, AskUserQuestion
|
|
7
7
|
metadata:
|
|
8
|
-
version: '1.4.
|
|
8
|
+
version: '1.4.7'
|
|
9
9
|
---
|
|
10
10
|
|
|
11
11
|
# Docs Apply
|
|
@@ -276,6 +276,9 @@ a conflict with config becomes `ask_user`, never a config-driven rewrite.
|
|
|
276
276
|
Mirror the accepted record using shared repo config only:
|
|
277
277
|
`oat config set documentation.ia '<JSON>'`, with exactly `{preset, decision,
|
|
278
278
|
tracks?: [{path, principle}], verification?: 'triad'|'agent-only'|'none'}`.
|
|
279
|
+
Write `preset` as the canonical ID (`product-engineering-qa`,
|
|
280
|
+
`consumer-maintainer`, `domain-engineering`, `task-type`, `toolkit-cli` or
|
|
281
|
+
`flat-small`) of the approved label.
|
|
279
282
|
`decision` is repo-relative; preserve guidance and unrelated config. For a
|
|
280
283
|
framework surface, separately record the operator's approved sidebar owner via
|
|
281
284
|
`oat config set documentation.navOwner nav-sync` or `hand-authored`. Missing
|
|
@@ -315,21 +318,26 @@ after each block, preserving residual findings instead of claiming a clean run.
|
|
|
315
318
|
#### Individually approved tooling update
|
|
316
319
|
|
|
317
320
|
A `tooling-update` recommendation has `approval: explicit`. Even with individual
|
|
318
|
-
approval, its out-of-Markdown allowance is only these
|
|
319
|
-
|
|
320
|
-
1. Bump the docs app's existing `@open-agent-toolkit/docs-*` dependencies
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
321
|
+
approval, its out-of-Markdown allowance is only these four operations:
|
|
322
|
+
|
|
323
|
+
1. Bump the docs app's existing `@open-agent-toolkit/docs-*` dependencies, and the
|
|
324
|
+
app's own `@open-agent-toolkit/cli` dependency when the app declares it, to the
|
|
325
|
+
bundled versions using the artifact's exact upgrade commands (preserve each
|
|
326
|
+
dependency section and the package manager; include the resulting lockfile only).
|
|
327
|
+
Never downgrade an installed version: `ahead` or `unverified` requires CLI
|
|
328
|
+
selection/update or manual verification before re-analysis, not a tooling update.
|
|
329
|
+
2. After a CLI bump, regenerate the app's generated manifest (`index.md`) with that
|
|
330
|
+
upgraded app-local CLI, using the `oat docs generate-index` invocation from the
|
|
331
|
+
app's existing `predev`/`prebuild` scripts; inspect the diff.
|
|
332
|
+
3. Run `oat docs migrate --docs-dir <authored-root> --apply` only for its currently
|
|
326
333
|
supported admonition conversions and injected frontmatter; inspect the diff.
|
|
327
|
-
|
|
334
|
+
4. Run the docs build verifier from the app's existing scripts.
|
|
328
335
|
|
|
329
336
|
Scaffold changes the CLI cannot make (app config, routes, package scripts) are
|
|
330
337
|
`manual`: report the required change and ID without editing those files. This
|
|
331
|
-
allowance does not permit application dependencies,
|
|
332
|
-
migrations or an app-shell rebuild. Other out-of-scope
|
|
338
|
+
allowance does not permit other application dependencies, framework upgrades,
|
|
339
|
+
host settings, arbitrary migrations or an app-shell rebuild. Other out-of-scope
|
|
340
|
+
prohibitions remain.
|
|
333
341
|
|
|
334
342
|
When approved actions involve docs app creation or nav updates:
|
|
335
343
|
|
|
@@ -85,8 +85,9 @@ blocked pending a fresh analysis rather than guessed.
|
|
|
85
85
|
|
|
86
86
|
- Record IA: {adoption.state from target pjm doctor; decision command/path;
|
|
87
87
|
framework AGENTS or Markdown contributing section; shared mirror JSON}
|
|
88
|
-
- Tooling update: {individually approved ID; exact docs-app docs-\*
|
|
89
|
-
|
|
88
|
+
- Tooling update: {individually approved ID; exact docs-app docs-\* and declared
|
|
89
|
+
app-local cli upgrade commands; manifest regeneration with that cli; supported
|
|
90
|
+
migrate conversions; existing build verifier}
|
|
90
91
|
- Unsupported app config/routes/scripts: {manual required changes; no edits}
|
|
91
92
|
|
|
92
93
|
## Summary of Actions
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/config/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,mBAAmB,EAAE,KAAK,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAIhF,OAAO,EAEL,KAAK,aAAa,EACnB,MAAM,iCAAiC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/config/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,6 +12,7 @@ import { normalizeDispatchMatrix, validateDispatchRouteTarget, walkDispatchMatri
|
|
|
12
12
|
import { formatDispatchNotices, terminalReviewerNoticesForMatrix, } from '../../config/dispatch-notices.js';
|
|
13
13
|
import { dispatchPolicyModeDescription, dispatchPolicyPolicyDescription, managedDispatchPolicyValueList, } from '../../config/dispatch-policy-options.js';
|
|
14
14
|
import { normalizeDocumentationCheck } from '../../config/documentation-check.js';
|
|
15
|
+
import { DocumentationIaPresetError } from '../../config/documentation-ia.js';
|
|
15
16
|
import { parseJsonConfig } from '../../config/json.js';
|
|
16
17
|
import { DEFAULT_INSTRUCTION_SYNC_STRATEGY, INSTRUCTION_SYNC_STRATEGIES, VALID_DISPATCH_POLICY_MODES, VALID_MANAGED_DISPATCH_POLICIES, MAX_GATE_TIMEOUT_MS, MIN_GATE_TIMEOUT_MS, isValidGateTimeoutMs, isValidProjectLogDigestBound, normalizeWorkflowPostImplementSequence, normalizeDocumentationGuidance, normalizeDocumentationIa, normalizeDocumentationNavOwner, readOatConfig, readOatConfigForDefaultScopeRepair, readOatConfigForDocumentationExcludesRepair, readOatConfigForInstructionPointerExcludesRepair, readOatConfigForInstructionSyncStrategyRepair, readOatConfigWithWarnings, readOatLocalConfig, readUserConfig, writeOatConfig, writeOatLocalConfig, writeUserConfig, VALID_POST_IMPLEMENT_LEGACY_SEQUENCES, } from '../../config/oat-config.js';
|
|
17
18
|
import { getOwnKey, setOwnKey } from '../../config/own-keys.js';
|
|
@@ -1871,6 +1872,10 @@ async function setConfigValue(repoRoot, userConfigDir, key, rawValue, surface, d
|
|
|
1871
1872
|
catch (error) {
|
|
1872
1873
|
if (key === 'documentation.check')
|
|
1873
1874
|
throw error;
|
|
1875
|
+
if (error instanceof DocumentationIaPresetError)
|
|
1876
|
+
throw new Error(`Invalid ${key} value: ${error.detail}.`, {
|
|
1877
|
+
cause: error,
|
|
1878
|
+
});
|
|
1874
1879
|
throw new Error(`Invalid ${key} value: ${key === 'documentation.ia' ? 'expected IA JSON with preset, repo-relative decision, optional tracks and verification' : key === 'documentation.navOwner' ? 'expected nav-sync or hand-authored' : 'expected a non-empty path/URL string or ordered non-empty string array'}.`, { cause: error });
|
|
1875
1880
|
}
|
|
1876
1881
|
let raw = { version: 1 };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reader-rules.d.ts","sourceRoot":"","sources":["../../../../src/commands/docs/check/reader-rules.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAML,KAAK,WAAW,EACjB,MAAM,SAAS,CAAC;AACjB,OAAO,EAAY,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AAEvD,wBAAsB,YAAY,CAChC,MAAM,EAAE,WAAW,EACnB,KAAK,EAAE,UAAU,EAAE,EACnB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"reader-rules.d.ts","sourceRoot":"","sources":["../../../../src/commands/docs/check/reader-rules.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAML,KAAK,WAAW,EACjB,MAAM,SAAS,CAAC;AACjB,OAAO,EAAY,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AAEvD,wBAAsB,YAAY,CAChC,MAAM,EAAE,WAAW,EACnB,KAAK,EAAE,UAAU,EAAE,EACnB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,IAAI,CAAC,CA4Vf;AAED,wBAAgB,eAAe,CAC7B,MAAM,EAAE,WAAW,EACnB,KAAK,EAAE,UAAU,EAAE,EACnB,MAAM,EAAE,MAAM,GACb,IAAI,CA+CN"}
|
|
@@ -116,10 +116,15 @@ export async function checkReaders(target, pages, report) {
|
|
|
116
116
|
const lines = p.source.split(/\r?\n/).length - (p.source.endsWith('\n') ? 1 : 0);
|
|
117
117
|
const limit = reference ? t.referenceLines : t.pageLines;
|
|
118
118
|
if (lines > limit)
|
|
119
|
-
report('page-length', 'warn', p.path, `Page has ${lines} physical source lines; limit ${limit}${reference ? ' for reference pages' : ''}
|
|
120
|
-
|
|
119
|
+
report('page-length', 'warn', p.path, `Page has ${lines} physical source lines; limit ${limit}${reference ? ' for reference pages' : ''}.`,
|
|
120
|
+
// The first physical line past the limit.
|
|
121
|
+
limit + 1);
|
|
122
|
+
const h3Nodes = p.nodes.filter((n) => n.type === 'heading' && n.depth === 3);
|
|
123
|
+
const h3 = h3Nodes.length;
|
|
121
124
|
if (reference && h3 > t.referenceH3)
|
|
122
|
-
report('page-length', 'warn', p.path, `Reference page has ${h3} real H3 headings; limit ${t.referenceH3}
|
|
125
|
+
report('page-length', 'warn', p.path, `Reference page has ${h3} real H3 headings; limit ${t.referenceH3}.`,
|
|
126
|
+
// The first H3 past the limit.
|
|
127
|
+
h3Nodes[t.referenceH3]?.position?.start.line ?? 1);
|
|
123
128
|
for (const link of p.links) {
|
|
124
129
|
const href = link.href;
|
|
125
130
|
if (/^(?:[a-z][a-z\d+.-]*:|\/\/)/i.test(href))
|
|
@@ -17,5 +17,13 @@ export interface GenerateIndexOptions {
|
|
|
17
17
|
excludes?: string[];
|
|
18
18
|
}
|
|
19
19
|
export declare function generateIndex(docsDir: string, options?: GenerateIndexOptions): Promise<IndexEntry[]>;
|
|
20
|
-
export
|
|
20
|
+
export interface RenderIndexOptions {
|
|
21
|
+
/**
|
|
22
|
+
* POSIX path from the manifest's directory to the indexed docs directory.
|
|
23
|
+
* Entry paths are docs-relative; this prefix makes each link resolve from
|
|
24
|
+
* the file the manifest is written to.
|
|
25
|
+
*/
|
|
26
|
+
linkBase?: string;
|
|
27
|
+
}
|
|
28
|
+
export declare function renderIndex(entries: IndexEntry[], options?: RenderIndexOptions): string;
|
|
21
29
|
//# sourceMappingURL=generator.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../../../../src/commands/docs/index-generate/generator.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAC;AAC1E,YAAY,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AAEzE,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,UAAU,EAAE,CAAC;IACxB,8DAA8D;IAC9D,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,oBAAoB;IACnC;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAgLD,wBAAsB,aAAa,CACjC,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,oBAAyB,GACjC,OAAO,CAAC,UAAU,EAAE,CAAC,CAMvB;
|
|
1
|
+
{"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../../../../src/commands/docs/index-generate/generator.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAC;AAC1E,YAAY,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AAEzE,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,UAAU,EAAE,CAAC;IACxB,8DAA8D;IAC9D,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,oBAAoB;IACnC;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAgLD,wBAAsB,aAAa,CACjC,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,oBAAyB,GACjC,OAAO,CAAC,UAAU,EAAE,CAAC,CAMvB;AAED,MAAM,WAAW,kBAAkB;IACjC;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAyCD,wBAAgB,WAAW,CACzB,OAAO,EAAE,UAAU,EAAE,EACrB,OAAO,GAAE,kBAAuB,GAC/B,MAAM,CAMR"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { readdir, readFile } from 'node:fs/promises';
|
|
2
|
-
import { join, relative, resolve } from 'node:path';
|
|
2
|
+
import { join, posix, relative, resolve } from 'node:path';
|
|
3
3
|
import { hasIndexContents, parseIndexContents, } from '../../docs/nav/contents.js';
|
|
4
4
|
import { resolveFolderTitle } from '../../docs/nav/fumadocs.js';
|
|
5
5
|
import { createExclusionMatcher, } from '../../docs/shared/exclusions.js';
|
|
@@ -151,24 +151,35 @@ async function collectEntries(docsDir, relativeBase, matcher) {
|
|
|
151
151
|
export async function generateIndex(docsDir, options = {}) {
|
|
152
152
|
return collectEntries(docsDir, '', createExclusionMatcher(options.excludes ?? []));
|
|
153
153
|
}
|
|
154
|
-
|
|
154
|
+
/**
|
|
155
|
+
* Percent-encode the characters that end, split or rewrite a CommonMark link
|
|
156
|
+
* destination (whitespace, `#`, `?`, parentheses, angle brackets, `&` entity
|
|
157
|
+
* starts and `\` escapes) and `%` itself, as UTF-8 bytes, so any supported
|
|
158
|
+
* filesystem path renders as a resolvable link.
|
|
159
|
+
*/
|
|
160
|
+
function linkDestination(path) {
|
|
161
|
+
return path.replace(/[%\s#?()<>&\\]/g, (char) => [...Buffer.from(char, 'utf8')]
|
|
162
|
+
.map((byte) => `%${byte.toString(16).toUpperCase().padStart(2, '0')}`)
|
|
163
|
+
.join(''));
|
|
164
|
+
}
|
|
165
|
+
function renderEntries(entries, indent, linkBase) {
|
|
155
166
|
const lines = [];
|
|
156
167
|
const prefix = ' '.repeat(indent);
|
|
157
168
|
for (const entry of entries) {
|
|
158
169
|
if (entry.children) {
|
|
159
170
|
lines.push(`${prefix}- ${entry.title}${entry.unlisted ? ' [unlisted in Contents]' : ''}`);
|
|
160
|
-
lines.push(...renderEntries(entry.children, indent + 1));
|
|
171
|
+
lines.push(...renderEntries(entry.children, indent + 1, linkBase));
|
|
161
172
|
}
|
|
162
173
|
else {
|
|
163
174
|
const desc = entry.description ? ` — ${entry.description}` : '';
|
|
164
|
-
lines.push(`${prefix}- [${entry.title}](${entry.path})${desc}${entry.unlisted ? ' [unlisted in Contents]' : ''}`);
|
|
175
|
+
lines.push(`${prefix}- [${entry.title}](${linkDestination(linkBase ? posix.join(linkBase, entry.path) : entry.path)})${desc}${entry.unlisted ? ' [unlisted in Contents]' : ''}`);
|
|
165
176
|
}
|
|
166
177
|
}
|
|
167
178
|
return lines;
|
|
168
179
|
}
|
|
169
|
-
export function renderIndex(entries) {
|
|
180
|
+
export function renderIndex(entries, options = {}) {
|
|
170
181
|
if (entries.length === 0) {
|
|
171
182
|
return '';
|
|
172
183
|
}
|
|
173
|
-
return `${renderEntries(entries, 0).join('\n')}\n`;
|
|
184
|
+
return `${renderEntries(entries, 0, options.linkBase ?? '').join('\n')}\n`;
|
|
174
185
|
}
|
|
@@ -4,7 +4,7 @@ import { Command } from 'commander';
|
|
|
4
4
|
export declare const GENERATED_INDEX_WARNING = "<!-- AUTOGENERATED by `oat docs generate-index`. Do not hand-edit; run `oat docs generate-index` to regenerate. -->";
|
|
5
5
|
interface IndexGenerateFileDependencies {
|
|
6
6
|
generateIndex: (docsDir: string, options: import('./generator.js').GenerateIndexOptions) => Promise<import('./generator.js').IndexEntry[]>;
|
|
7
|
-
renderIndex: (entries: import('./generator.js').IndexEntry[]) => string;
|
|
7
|
+
renderIndex: (entries: import('./generator.js').IndexEntry[], options?: import('./generator.js').RenderIndexOptions) => string;
|
|
8
8
|
writeFile: (path: string, content: string, encoding: BufferEncoding) => Promise<void>;
|
|
9
9
|
readOatConfig: (repoRoot: string) => Promise<OatConfig>;
|
|
10
10
|
writeOatConfig: (repoRoot: string, config: OatConfig) => Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/commands/docs/index-generate/index.ts"],"names":[],"mappings":"AAWA,OAAO,EAEL,KAAK,cAAc,EACnB,KAAK,aAAa,EACnB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,KAAK,SAAS,EAGf,MAAM,oBAAoB,CAAC;AAI5B,OAAO,EAAE,OAAO,EAAU,MAAM,WAAW,CAAC;AAI5C,eAAO,MAAM,uBAAuB,wHACmF,CAAC;AA2BxH,UAAU,6BAA6B;IACrC,aAAa,EAAE,CACb,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,OAAO,aAAa,EAAE,oBAAoB,KAChD,OAAO,CAAC,OAAO,aAAa,EAAE,UAAU,EAAE,CAAC,CAAC;IACjD,WAAW,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/commands/docs/index-generate/index.ts"],"names":[],"mappings":"AAWA,OAAO,EAEL,KAAK,cAAc,EACnB,KAAK,aAAa,EACnB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,KAAK,SAAS,EAGf,MAAM,oBAAoB,CAAC;AAI5B,OAAO,EAAE,OAAO,EAAU,MAAM,WAAW,CAAC;AAI5C,eAAO,MAAM,uBAAuB,wHACmF,CAAC;AA2BxH,UAAU,6BAA6B;IACrC,aAAa,EAAE,CACb,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,OAAO,aAAa,EAAE,oBAAoB,KAChD,OAAO,CAAC,OAAO,aAAa,EAAE,UAAU,EAAE,CAAC,CAAC;IACjD,WAAW,EAAE,CACX,OAAO,EAAE,OAAO,aAAa,EAAE,UAAU,EAAE,EAC3C,OAAO,CAAC,EAAE,OAAO,aAAa,EAAE,kBAAkB,KAC/C,MAAM,CAAC;IACZ,SAAS,EAAE,CACT,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,cAAc,KACrB,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,aAAa,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,SAAS,CAAC,CAAC;IACxD,cAAc,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACvE,eAAe,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAClD,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAC9C,iBAAiB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAC5D,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAC5C,iBAAiB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;CAC7D;AAED,UAAU,yBAAyB;IACjC,mBAAmB,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,cAAc,CAAC;IAChE,QAAQ,EAAE,6BAA6B,CAAC;CACzC;AAgsBD,wBAAgB,8BAA8B,CAC5C,SAAS,GAAE,OAAO,CAAC,yBAAyB,CAAM,GACjD,OAAO,CAgCT"}
|
|
@@ -430,19 +430,31 @@ async function runIndexGenerate(context, options, deps) {
|
|
|
430
430
|
const entries = await deps.generateIndex(docsDir, {
|
|
431
431
|
excludes: resolved.excludes,
|
|
432
432
|
});
|
|
433
|
-
|
|
433
|
+
// Links are written relative to the manifest file, which always sits outside
|
|
434
|
+
// the docs directory it indexes. When this run records the manifest in
|
|
435
|
+
// `documentation.index`, links resolve from that recorded (real) location.
|
|
436
|
+
// Otherwise only the output's directory is canonicalized: a symlinked
|
|
437
|
+
// directory alias cannot skew the prefix, and a file symlink is read from its
|
|
438
|
+
// own location.
|
|
439
|
+
const indexPath = isFumadocsManifestTransition(resolved, canonical)
|
|
440
|
+
? buildDocumentationIndexValue(resolved, canonical)
|
|
441
|
+
: null;
|
|
442
|
+
const outputDir = indexPath !== null
|
|
443
|
+
? dirname(canonical.outputPath)
|
|
444
|
+
: ((await canonicalizeOrNull(dirname(outputPath), deps, {
|
|
445
|
+
kind: 'output',
|
|
446
|
+
})) ?? dirname(outputPath));
|
|
447
|
+
const linkBase = normalizeToPosixPath(relative(outputDir, canonical.docsDir));
|
|
448
|
+
const content = buildGeneratedIndexOutput(deps.renderIndex(entries, { linkBase }), resolved.config.documentation?.tooling);
|
|
434
449
|
await deps.writeFile(outputPath, content, 'utf8');
|
|
435
|
-
if (
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
...config,
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
},
|
|
444
|
-
});
|
|
445
|
-
}
|
|
450
|
+
if (indexPath !== null && config.documentation?.index !== indexPath) {
|
|
451
|
+
await deps.writeOatConfig(repoRoot, {
|
|
452
|
+
...config,
|
|
453
|
+
documentation: {
|
|
454
|
+
...config.documentation,
|
|
455
|
+
index: indexPath,
|
|
456
|
+
},
|
|
457
|
+
});
|
|
446
458
|
}
|
|
447
459
|
if (context.json) {
|
|
448
460
|
context.logger.json({
|
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
export type IaPreset = (typeof IA_PRESETS)[number];
|
|
1
|
+
import { type IaPresetId } from '../../../config/documentation-ia.js';
|
|
3
2
|
export interface PresetSelection {
|
|
4
|
-
iaPreset?:
|
|
3
|
+
iaPreset?: IaPresetId;
|
|
5
4
|
plannedPages?: number;
|
|
6
5
|
}
|
|
7
6
|
/** Validate the opt-in pair before planning or writing any scaffold files. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"content.d.ts","sourceRoot":"","sources":["../../../../src/commands/docs/init/content.ts"],"names":[],"mappings":"AAGA,
|
|
1
|
+
{"version":3,"file":"content.d.ts","sourceRoot":"","sources":["../../../../src/commands/docs/init/content.ts"],"names":[],"mappings":"AAGA,OAAO,EAAiB,KAAK,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAC1E,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,EAAE,UAAU,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,8EAA8E;AAC9E,wBAAgB,sBAAsB,CACpC,MAAM,CAAC,EAAE,MAAM,EACf,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,GACtB,eAAe,CAiBjB;AAmSD,wBAAgB,sBAAsB,CAAC,KAAK,GAAE,MAAM,EAAO,GAAG,MAAM,EAAE,CAErE;AAQD,sFAAsF;AACtF,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,eAAe,GAAG;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,EAAE,OAAO,CAAC;CACnB,GACA,OAAO,CAAC;IACT,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC3C,QAAQ,EAAE,MAAM,CAAC;CAClB,GAAG,IAAI,CAAC,CAwFR"}
|
|
@@ -1,21 +1,14 @@
|
|
|
1
1
|
import { readFile } from 'node:fs/promises';
|
|
2
2
|
import { join } from 'node:path';
|
|
3
|
-
|
|
4
|
-
'product-engineering-qa',
|
|
5
|
-
'consumer-maintainer',
|
|
6
|
-
'domain-engineering',
|
|
7
|
-
'task-type',
|
|
8
|
-
'toolkit-cli',
|
|
9
|
-
'flat-small',
|
|
10
|
-
];
|
|
3
|
+
import { IA_PRESET_IDS } from '../../../config/documentation-ia.js';
|
|
11
4
|
/** Validate the opt-in pair before planning or writing any scaffold files. */
|
|
12
5
|
export function resolvePresetSelection(preset, count) {
|
|
13
6
|
if (preset === undefined && count === undefined)
|
|
14
7
|
return {};
|
|
15
8
|
if (preset === undefined || count === undefined)
|
|
16
9
|
throw new Error('--ia-preset and --planned-pages are required together.');
|
|
17
|
-
if (!
|
|
18
|
-
throw new Error(`Unknown IA preset "${preset}". Choose: ${
|
|
10
|
+
if (!IA_PRESET_IDS.includes(preset))
|
|
11
|
+
throw new Error(`Unknown IA preset "${preset}". Choose: ${IA_PRESET_IDS.join(', ')}.`);
|
|
19
12
|
if (!/^\d+$/.test(String(count)) ||
|
|
20
13
|
!Number.isSafeInteger(Number(count)) ||
|
|
21
14
|
Number(count) < 1)
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Canonical IA preset IDs: the values `oat docs init --ia-preset` accepts and
|
|
3
|
+
* the spelling documented for the `documentation.ia` mirror.
|
|
4
|
+
*/
|
|
5
|
+
export declare const IA_PRESET_IDS: readonly ['product-engineering-qa', 'consumer-maintainer', 'domain-engineering', 'task-type', 'toolkit-cli', 'flat-small'];
|
|
6
|
+
export type IaPresetId = (typeof IA_PRESET_IDS)[number];
|
|
7
|
+
/**
|
|
8
|
+
* Approved preset labels from the authoring-docs preset table. Authored IA
|
|
9
|
+
* records name these labels, and existing mirrors store them, so the mirror
|
|
10
|
+
* accepts each label as an exact alias of its ID.
|
|
11
|
+
*/
|
|
12
|
+
export declare const IA_PRESET_LABELS: Readonly<Record<IaPresetId, string>>;
|
|
13
|
+
export declare function isDocumentationIaPreset(value: string): boolean;
|
|
14
|
+
/** An unknown preset in an otherwise well-formed `documentation.ia` value. */
|
|
15
|
+
export declare class DocumentationIaPresetError extends Error {
|
|
16
|
+
readonly detail: string;
|
|
17
|
+
constructor(configPath: string, preset: string);
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=documentation-ia.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"documentation-ia.d.ts","sourceRoot":"","sources":["../../src/config/documentation-ia.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,eAAO,MAAM,aAAa,YACxB,wBAAwB,EACxB,qBAAqB,EACrB,oBAAoB,EACpB,WAAW,EACX,aAAa,EACb,YAAY,CACJ,CAAC;AACX,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;AAExD;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,EAAE,QAAQ,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,CAOjE,CAAC;AAOF,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAE9D;AAED,8EAA8E;AAC9E,qBAAa,0BAA2B,SAAQ,KAAK;IACnD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAExB,YAAY,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAO7C;CACF"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Canonical IA preset IDs: the values `oat docs init --ia-preset` accepts and
|
|
3
|
+
* the spelling documented for the `documentation.ia` mirror.
|
|
4
|
+
*/
|
|
5
|
+
export const IA_PRESET_IDS = [
|
|
6
|
+
'product-engineering-qa',
|
|
7
|
+
'consumer-maintainer',
|
|
8
|
+
'domain-engineering',
|
|
9
|
+
'task-type',
|
|
10
|
+
'toolkit-cli',
|
|
11
|
+
'flat-small',
|
|
12
|
+
];
|
|
13
|
+
/**
|
|
14
|
+
* Approved preset labels from the authoring-docs preset table. Authored IA
|
|
15
|
+
* records name these labels, and existing mirrors store them, so the mirror
|
|
16
|
+
* accepts each label as an exact alias of its ID.
|
|
17
|
+
*/
|
|
18
|
+
export const IA_PRESET_LABELS = {
|
|
19
|
+
'product-engineering-qa': 'Product/Engineering/QA',
|
|
20
|
+
'consumer-maintainer': 'Consumer and Maintainer',
|
|
21
|
+
'domain-engineering': 'Domain Engineering',
|
|
22
|
+
'task-type': 'Task Type',
|
|
23
|
+
'toolkit-cli': 'Toolkit and CLI',
|
|
24
|
+
'flat-small': 'Flat Small',
|
|
25
|
+
};
|
|
26
|
+
const ACCEPTED_PRESETS = new Set([
|
|
27
|
+
...IA_PRESET_IDS,
|
|
28
|
+
...Object.values(IA_PRESET_LABELS),
|
|
29
|
+
]);
|
|
30
|
+
export function isDocumentationIaPreset(value) {
|
|
31
|
+
return ACCEPTED_PRESETS.has(value);
|
|
32
|
+
}
|
|
33
|
+
/** An unknown preset in an otherwise well-formed `documentation.ia` value. */
|
|
34
|
+
export class DocumentationIaPresetError extends Error {
|
|
35
|
+
detail;
|
|
36
|
+
constructor(configPath, preset) {
|
|
37
|
+
const detail = `unknown preset "${preset}"; expected one of ${IA_PRESET_IDS.join(', ')} (or its approved label)`;
|
|
38
|
+
super(`Invalid documentation.ia in ${configPath}: ${detail}. Repair with oat config set documentation.ia '<JSON>' or oat config unset documentation.ia --shared.`);
|
|
39
|
+
this.name = 'DocumentationIaPresetError';
|
|
40
|
+
this.detail = detail;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oat-config.d.ts","sourceRoot":"","sources":["../../src/config/oat-config.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"oat-config.d.ts","sourceRoot":"","sources":["../../src/config/oat-config.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,6 +6,7 @@ import { atomicWriteJson, dirExists, fileExists } from '../fs/io.js';
|
|
|
6
6
|
import { normalizeToPosixPath, validateRealPathWithinScope } from '../fs/paths.js';
|
|
7
7
|
import { normalizeDispatchMatrix, } from './dispatch-matrix.js';
|
|
8
8
|
import { normalizeDocumentationCheck, } from './documentation-check.js';
|
|
9
|
+
import { DocumentationIaPresetError, isDocumentationIaPreset, } from './documentation-ia.js';
|
|
9
10
|
import { parseJsonConfig } from './json.js';
|
|
10
11
|
import { resolveUserSyncConfig } from './user-sync-config.js';
|
|
11
12
|
export { VALID_DISPATCH_MATRIX_TIERS, isCodexMaterializedRouteTarget, isWorkflowDispatchCandidateLadder, isWorkflowDispatchFallbackRoute, toWorkflowDispatchCandidateLadder, validateDispatchRouteTarget, } from './dispatch-matrix.js';
|
|
@@ -1580,8 +1581,11 @@ export function normalizeDocumentationIa(value, configPath) {
|
|
|
1580
1581
|
nonempty(track.principle))))) {
|
|
1581
1582
|
throw new Error(`Invalid documentation.ia in ${configPath}: expected { preset, decision (repo-relative path), tracks?: [{ path, principle }], verification?: triad|agent-only|none }. Repair with oat config set documentation.ia '<JSON>' or oat config unset documentation.ia --shared.`);
|
|
1582
1583
|
}
|
|
1584
|
+
const preset = value.preset.trim();
|
|
1585
|
+
if (!isDocumentationIaPreset(preset))
|
|
1586
|
+
throw new DocumentationIaPresetError(configPath, preset);
|
|
1583
1587
|
return {
|
|
1584
|
-
preset
|
|
1588
|
+
preset,
|
|
1585
1589
|
decision: value.decision.trim(),
|
|
1586
1590
|
...(value.tracks !== undefined
|
|
1587
1591
|
? {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@open-agent-toolkit/cli",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.32",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "Open Agent Toolkit CLI",
|
|
6
6
|
"homepage": "https://github.com/voxmedia/open-agent-toolkit/tree/main/packages/cli",
|
|
@@ -42,8 +42,8 @@
|
|
|
42
42
|
"unified": "11.0.5",
|
|
43
43
|
"yaml": "2.8.2",
|
|
44
44
|
"zod": "^3.25.76",
|
|
45
|
-
"@open-agent-toolkit/
|
|
46
|
-
"@open-agent-toolkit/
|
|
45
|
+
"@open-agent-toolkit/docs-transforms": "0.3.32",
|
|
46
|
+
"@open-agent-toolkit/control-plane": "0.3.32"
|
|
47
47
|
},
|
|
48
48
|
"devDependencies": {
|
|
49
49
|
"@types/jsdom": "28.0.3",
|