@open-agent-toolkit/cli 0.3.27 → 0.3.28
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -0
- package/assets/bundle-metadata.json +1 -1
- package/assets/docs/contributing/documentation.md +11 -2
- package/assets/docs/docs-tooling/add-docs-to-a-repo.md +10 -0
- package/assets/docs/docs-tooling/check.md +154 -0
- package/assets/docs/docs-tooling/commands.md +14 -9
- package/assets/docs/docs-tooling/index.md +1 -0
- package/assets/docs/docs-tooling/meta.json +7 -1
- package/assets/docs/docs-tooling/workflows.md +4 -0
- package/assets/docs/reference/cli-reference.md +2 -0
- package/assets/docs/reference/configuration.md +1 -0
- package/assets/public-package-versions.json +4 -4
- package/assets/skills/oat-docs-analyze/SKILL.md +13 -2
- package/assets/skills/oat-docs-authoring/SKILL.md +1 -1
- package/assets/skills/oat-docs-authoring/references/validation.md +4 -0
- package/assets/skills/oat-docs-bootstrap/SKILL.md +54 -3
- package/assets/skills/oat-docs-bootstrap/references/pr-ci.md +89 -0
- package/assets/templates/docs-app-fuma/AGENTS.md +9 -2
- package/assets/templates/docs-app-fuma/docs/contributing/docs-toolchain.md +40 -3
- package/assets/templates/docs-app-fuma/docs/contributing.md +7 -1
- package/assets/templates/docs-app-fuma/docs/index.md +1 -1
- package/assets/templates/docs-app-fuma/gitignore.template +12 -0
- package/assets/templates/docs-app-fuma/package.json.template +2 -1
- package/assets/templates/docs-app-fuma/pnpm-workspace.yaml +5 -0
- package/assets/templates/docs-app-mkdocs/AGENTS.md +4 -2
- package/assets/templates/docs-app-mkdocs/docs/contributing/docs-toolchain.md +4 -2
- package/assets/templates/docs-app-mkdocs/docs/contributing.md +7 -1
- package/assets/templates/docs-app-mkdocs/docs/index.md +1 -1
- package/assets/templates/docs-app-mkdocs/gitignore.template +8 -0
- package/assets/templates/docs-app-mkdocs/package.json.template +3 -2
- package/dist/commands/config/index.d.ts.map +1 -1
- package/dist/commands/config/index.js +35 -3
- package/dist/commands/docs/check/check.d.ts +3 -0
- package/dist/commands/docs/check/check.d.ts.map +1 -0
- package/dist/commands/docs/check/check.js +48 -0
- package/dist/commands/docs/check/check.types.d.ts +17 -0
- package/dist/commands/docs/check/check.types.d.ts.map +1 -0
- package/dist/commands/docs/check/check.types.js +1 -0
- package/dist/commands/docs/check/checker.d.ts +8 -0
- package/dist/commands/docs/check/checker.d.ts.map +1 -0
- package/dist/commands/docs/check/checker.js +82 -0
- package/dist/commands/docs/check/commands.d.ts +5 -0
- package/dist/commands/docs/check/commands.d.ts.map +1 -0
- package/dist/commands/docs/check/commands.js +232 -0
- package/dist/commands/docs/check/diagrams.d.ts +5 -0
- package/dist/commands/docs/check/diagrams.d.ts.map +1 -0
- package/dist/commands/docs/check/diagrams.js +197 -0
- package/dist/commands/docs/check/files.d.ts +21 -0
- package/dist/commands/docs/check/files.d.ts.map +1 -0
- package/dist/commands/docs/check/files.js +121 -0
- package/dist/commands/docs/check/markdown.d.ts +60 -0
- package/dist/commands/docs/check/markdown.d.ts.map +1 -0
- package/dist/commands/docs/check/markdown.js +125 -0
- package/dist/commands/docs/check/mermaid-runtime.d.ts +3 -0
- package/dist/commands/docs/check/mermaid-runtime.d.ts.map +1 -0
- package/dist/commands/docs/check/mermaid-runtime.js +57 -0
- package/dist/commands/docs/check/navigation.d.ts +4 -0
- package/dist/commands/docs/check/navigation.d.ts.map +1 -0
- package/dist/commands/docs/check/navigation.js +104 -0
- package/dist/commands/docs/check/reader-rules.d.ts +6 -0
- package/dist/commands/docs/check/reader-rules.d.ts.map +1 -0
- package/dist/commands/docs/check/reader-rules.js +214 -0
- package/dist/commands/docs/index.d.ts.map +1 -1
- package/dist/commands/docs/index.js +2 -0
- package/dist/commands/docs/init/index.d.ts +1 -0
- package/dist/commands/docs/init/index.d.ts.map +1 -1
- package/dist/commands/docs/init/index.js +8 -0
- package/dist/commands/docs/init/scaffold.d.ts +1 -0
- package/dist/commands/docs/init/scaffold.d.ts.map +1 -1
- package/dist/commands/docs/init/scaffold.js +37 -3
- package/dist/commands/docs/nav/contents.d.ts +4 -0
- package/dist/commands/docs/nav/contents.d.ts.map +1 -1
- package/dist/commands/docs/nav/contents.js +10 -0
- package/dist/config/documentation-check.d.ts +38 -0
- package/dist/config/documentation-check.d.ts.map +1 -0
- package/dist/config/documentation-check.js +132 -0
- package/dist/config/oat-config.d.ts +2 -0
- package/dist/config/oat-config.d.ts.map +1 -1
- package/dist/config/oat-config.js +4 -0
- package/dist/config/resolve.d.ts.map +1 -1
- package/dist/config/resolve.js +1 -0
- package/dist/release/public-package-contract.d.ts.map +1 -1
- package/dist/release/public-package-contract.js +3 -0
- package/package.json +11 -2
|
@@ -22,6 +22,10 @@ Edit `docs/**/*.md` and their Contents, not generated app-root `index.md`, `.sou
|
|
|
22
22
|
|
|
23
23
|
Mermaid is source. Important/mobile diagrams get matching light/dark SVG pairs, updated with the Mermaid in the same commit. Require meaningful alt text (about155 characters maximum), `role="img"`, `<title>`, `<desc>` and `aria-labelledby`, readable labels and useful viewBox. Inspect rendered diagrams in both themes; transforms do not validate diagram correctness. See the contributor contract for framework-specific asset paths and image behavior.
|
|
24
24
|
|
|
25
|
+
## Install-root compatibility
|
|
26
|
+
|
|
27
|
+
Before installing, follow the toolchain guide's exact `mdast-util-to-markdown: 2.1.2` policy. A new independent app gets app-root `pnpm-workspace.yaml`; a workspace member must use the existing root policy with explicit approval. Preserve settings/conflicts and never create a member-local workspace boundary. `--no-root-patch` changes only root-script handling. Verify actual resolution and keep the policy/lockfile; do not remove bold/italic content to avoid the Fumadocs handler defect.
|
|
28
|
+
|
|
25
29
|
## Commands and working directories
|
|
26
30
|
|
|
27
31
|
From the **repository root**, enter this app:
|
|
@@ -30,20 +34,23 @@ From the **repository root**, enter this app:
|
|
|
30
34
|
cd {{APP_CWD}}
|
|
31
35
|
```
|
|
32
36
|
|
|
33
|
-
From the **
|
|
37
|
+
From the **repository root**, enter the app and validate after edits:
|
|
34
38
|
|
|
35
39
|
```bash
|
|
40
|
+
cd {{APP_CWD}}
|
|
36
41
|
pnpm docs:format
|
|
37
42
|
pnpm docs:format:check
|
|
38
43
|
pnpm docs:lint
|
|
39
44
|
{{NAV_SYNC_CMD}}
|
|
40
45
|
{{NAV_SYNC_CHECK_CMD}}
|
|
46
|
+
pnpm docs:check
|
|
41
47
|
pnpm build
|
|
42
48
|
```
|
|
43
49
|
|
|
44
|
-
Lint is {{LINT_STATUS}} and formatting is {{FORMAT_STATUS}}; a disabled echo does not validate. From the **
|
|
50
|
+
Lint is {{LINT_STATUS}} and formatting is {{FORMAT_STATUS}}; a disabled echo does not validate. From the **repository root**, enter the app and regenerate the machine inventory with:
|
|
45
51
|
|
|
46
52
|
```bash
|
|
53
|
+
cd {{APP_CWD}}
|
|
47
54
|
{{GENERATE_INDEX_CMD}}
|
|
48
55
|
```
|
|
49
56
|
|
|
@@ -12,6 +12,40 @@ This page is for documentation contributors. Follow the [contributor map](index.
|
|
|
12
12
|
- Node.js {{NODE_REQUIREMENT}}
|
|
13
13
|
- pnpm 10+
|
|
14
14
|
|
|
15
|
+
## Required install-root compatibility policy
|
|
16
|
+
|
|
17
|
+
The current Fumadocs Markdown handler wrapper is incompatible with
|
|
18
|
+
`mdast-util-to-markdown` 2.2.0: valid bold and italic content can recurse during
|
|
19
|
+
compilation. Keep authored content and framework versions; constrain this
|
|
20
|
+
transitive dependency to exactly `2.1.2` at the **effective pnpm install root**.
|
|
21
|
+
This is a constrained fresh install, not an unconstrained compatibility claim.
|
|
22
|
+
|
|
23
|
+
For a new independent app, the CLI creates app-root `pnpm-workspace.yaml` with
|
|
24
|
+
`packages: []` and this policy. Install inside that app. For a workspace member,
|
|
25
|
+
the CLI creates no local workspace boundary: install from the existing workspace
|
|
26
|
+
root and propose this exact addition to its `pnpm-workspace.yaml`:
|
|
27
|
+
|
|
28
|
+
```yaml
|
|
29
|
+
overrides:
|
|
30
|
+
mdast-util-to-markdown: 2.1.2
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
Preserve all existing `packages`, overrides and other settings. Add the one entry
|
|
34
|
+
under an existing `overrides` map rather than duplicating the key. Obtain the
|
|
35
|
+
repository owner's approval before editing existing policy. A conflicting version
|
|
36
|
+
or declined/skipped edit remains a manual setup requirement; stop before claiming
|
|
37
|
+
a successful install/build. Do not split an actual workspace member with a local
|
|
38
|
+
`pnpm-workspace.yaml`, or place an ineffective override in its `package.json`.
|
|
39
|
+
`--no-root-patch` controls root build scripts only and never approves dependency
|
|
40
|
+
policy changes. CLI init does not merge or overwrite existing root policy.
|
|
41
|
+
|
|
42
|
+
Use the repository's selected pnpm version (10+). This root YAML syntax works
|
|
43
|
+
with pnpm 10 and 12; pnpm 12 ignores `package.json`'s `pnpm.overrides`, and pnpm 10
|
|
44
|
+
ignores policy in a workspace member. After installation, inspect
|
|
45
|
+
`pnpm why mdast-util-to-markdown` from the effective root to confirm `2.1.2`, then
|
|
46
|
+
run the checker and real build below. Retain the effective root policy and
|
|
47
|
+
lockfile in version control. Do not change a user-scope package-manager install.
|
|
48
|
+
|
|
15
49
|
## Install and preview
|
|
16
50
|
|
|
17
51
|
From the **repository root**, enter the docs app; subsequent commands run in the **app directory**:
|
|
@@ -22,26 +56,29 @@ pnpm install
|
|
|
22
56
|
pnpm dev
|
|
23
57
|
```
|
|
24
58
|
|
|
25
|
-
Fumadocs generates a static export under `out/`. `pnpm start` expects a Next server and is not the static-export preview command; serve `out/` with a static HTTP server and mount the configured base path.
|
|
59
|
+
Fumadocs generates a static export under `out/`. `cd {{APP_CWD}} && pnpm start` expects a Next server and is not the static-export preview command; serve `out/` with a static HTTP server and mount the configured base path.
|
|
26
60
|
|
|
27
61
|
## Validate before committing
|
|
28
62
|
|
|
29
|
-
From the **
|
|
63
|
+
From the **repository root**, enter the app and validate in this order:
|
|
30
64
|
|
|
31
65
|
```bash
|
|
66
|
+
cd {{APP_CWD}}
|
|
32
67
|
pnpm docs:format
|
|
33
68
|
pnpm docs:format:check
|
|
34
69
|
pnpm docs:lint
|
|
35
70
|
{{NAV_SYNC_CMD}}
|
|
36
71
|
{{NAV_SYNC_CHECK_CMD}}
|
|
72
|
+
pnpm docs:check
|
|
37
73
|
pnpm build
|
|
38
74
|
```
|
|
39
75
|
|
|
40
76
|
Lint is {{LINT_STATUS}}; formatting is {{FORMAT_STATUS}}. Disabled scripts print a message and are not validation. Nav sync writes only approved, owned navigation; the read-only check fails on drift or unlisted reader pages. Inspect the rendered site for navigation, links, tabs and diagrams.
|
|
41
77
|
|
|
42
|
-
From the **
|
|
78
|
+
From the **repository root**, enter the app and regenerate the machine inventory when needed:
|
|
43
79
|
|
|
44
80
|
```bash
|
|
81
|
+
cd {{APP_CWD}}
|
|
45
82
|
{{GENERATE_INDEX_CMD}}
|
|
46
83
|
```
|
|
47
84
|
|
|
@@ -66,6 +66,7 @@ Tables, task lists, fenced code, callouts, Mermaid and `=== "Title"` tabs are su
|
|
|
66
66
|
| Reader links | Resolve |
|
|
67
67
|
|
|
68
68
|
```bash
|
|
69
|
+
cd {{APP_CWD}}
|
|
69
70
|
pnpm docs:lint
|
|
70
71
|
```
|
|
71
72
|
````
|
|
@@ -82,13 +83,16 @@ Tables, task lists, fenced code, callouts, Mermaid and `=== "Title"` tabs are su
|
|
|
82
83
|
| Reader links | Resolve |
|
|
83
84
|
|
|
84
85
|
```bash
|
|
86
|
+
cd {{APP_CWD}}
|
|
85
87
|
pnpm docs:lint
|
|
86
88
|
```
|
|
87
89
|
|
|
88
|
-
Not configured: arbitrary custom components, executable notebooks, API playgrounds
|
|
90
|
+
Not configured: arbitrary custom components, executable notebooks, API playgrounds or screenshot testing. Do not describe those as supported without an approved configuration and a working example. Check the actual package scripts: lint is {{LINT_STATUS}} and formatting is {{FORMAT_STATUS}}; disabled scripts only print a message.
|
|
89
91
|
|
|
90
92
|
## Diagrams and accessibility
|
|
91
93
|
|
|
94
|
+
Run the app’s docs:check script (from the repository root: `cd {{APP_CWD}} && pnpm docs:check`) before committing. It checks reader metadata/maps/links, navigation, contributor commands and real Mermaid syntax without building the site. Errors fail; warnings prompt review. Fix authored sources, then explicitly sync owned navigation and retry.
|
|
95
|
+
|
|
92
96
|
Mermaid is the diagram source of truth. Important or phone-sized diagrams also get matching `<name>-light.svg` and `<name>-dark.svg` assets. Change the Mermaid and both SVGs in the same commit, preserving nodes, edges and labels. Each SVG uses `role="img"`, a descriptive `<title>` and `<desc>` (connected with `aria-labelledby`), a legible viewBox and readable labels. Keep image alt text concise, about 155 characters or less, and describe the diagram's meaning without inventing claims.
|
|
93
97
|
|
|
94
98
|
=== "Syntax"
|
|
@@ -106,6 +110,8 @@ Mermaid is the diagram source of truth. Important or phone-sized diagrams also g
|
|
|
106
110
|
|
|
107
111
|
```mermaid
|
|
108
112
|
flowchart LR
|
|
113
|
+
accTitle: Documentation edit
|
|
114
|
+
accDescr: Read the local map before making a focused edit.
|
|
109
115
|
A[Read local map] --> B[Make a focused edit]
|
|
110
116
|
```
|
|
111
117
|
|
|
@@ -7,9 +7,10 @@
|
|
|
7
7
|
"scripts": {
|
|
8
8
|
"predev": "fumadocs-mdx && {{GENERATE_INDEX_CMD}}",
|
|
9
9
|
"dev": "next dev",
|
|
10
|
-
"prebuild": "{{NAV_SYNC_CHECK_CMD}} && fumadocs-mdx && {{GENERATE_INDEX_CMD}}",
|
|
10
|
+
"prebuild": "{{DOCS_CHECK_CMD}} && {{NAV_SYNC_CHECK_CMD}} && fumadocs-mdx && {{GENERATE_INDEX_CMD}}",
|
|
11
11
|
"build": "next build",
|
|
12
12
|
"start": "next start",
|
|
13
|
+
"docs:check": "{{DOCS_CHECK_CMD}}",
|
|
13
14
|
"docs:lint": "{{DOCS_LINT_SCRIPT}}",
|
|
14
15
|
"docs:format": "{{DOCS_FORMAT_SCRIPT}}",
|
|
15
16
|
"docs:format:check": "{{DOCS_FORMAT_CHECK_SCRIPT}}"
|
|
@@ -32,15 +32,17 @@ From the **repository root**, enter this app:
|
|
|
32
32
|
cd {{APP_CWD}}
|
|
33
33
|
```
|
|
34
34
|
|
|
35
|
-
From the **
|
|
35
|
+
From the **repository root**, enter the app and validate after edits:
|
|
36
36
|
|
|
37
37
|
```bash
|
|
38
|
+
cd {{APP_CWD}}
|
|
38
39
|
pnpm docs:format
|
|
39
40
|
pnpm docs:format:check
|
|
40
41
|
pnpm docs:lint
|
|
41
42
|
{{NAV_SYNC_CMD}}
|
|
42
43
|
{{NAV_SYNC_CHECK_CMD}}
|
|
44
|
+
pnpm docs:check
|
|
43
45
|
pnpm docs:build
|
|
44
46
|
```
|
|
45
47
|
|
|
46
|
-
Lint is {{LINT_STATUS}} and formatting is {{FORMAT_STATUS}}; a disabled echo does not validate. The
|
|
48
|
+
Lint is {{LINT_STATUS}} and formatting is {{FORMAT_STATUS}}; a disabled echo does not validate. The test script runs the portable docs checker. Setup/preview details and legacy support are in the toolchain guide.
|
|
@@ -30,15 +30,17 @@ pnpm docs:dev
|
|
|
30
30
|
|
|
31
31
|
## Validate before committing
|
|
32
32
|
|
|
33
|
-
From the **
|
|
33
|
+
From the **repository root**, enter the app and validate in this order:
|
|
34
34
|
|
|
35
35
|
```bash
|
|
36
|
+
cd {{APP_CWD}}
|
|
36
37
|
pnpm docs:format
|
|
37
38
|
pnpm docs:format:check
|
|
38
39
|
pnpm docs:lint
|
|
39
40
|
{{NAV_SYNC_CMD}}
|
|
40
41
|
{{NAV_SYNC_CHECK_CMD}}
|
|
42
|
+
pnpm docs:check
|
|
41
43
|
pnpm docs:build
|
|
42
44
|
```
|
|
43
45
|
|
|
44
|
-
Lint is {{LINT_STATUS}}; formatting is {{FORMAT_STATUS}}. Disabled scripts print a message and are not validation. Nav sync writes only approved, owned navigation; the read-only check fails on navigation drift. Inspect the rendered site for navigation, links, tabs and diagrams. The
|
|
46
|
+
Lint is {{LINT_STATUS}}; formatting is {{FORMAT_STATUS}}. Disabled scripts print a message and are not validation. Nav sync writes only approved, owned navigation; the read-only check fails on navigation drift. Inspect the rendered site for navigation, links, tabs and diagrams. The MkDocs test script also runs the portable docs checker.
|
|
@@ -70,6 +70,7 @@ Tables, task lists, fenced code, callouts, Mermaid and `=== "Title"` tabs are su
|
|
|
70
70
|
| Reader links | Resolve |
|
|
71
71
|
|
|
72
72
|
```bash
|
|
73
|
+
cd {{APP_CWD}}
|
|
73
74
|
pnpm docs:lint
|
|
74
75
|
```
|
|
75
76
|
````
|
|
@@ -86,13 +87,16 @@ Tables, task lists, fenced code, callouts, Mermaid and `=== "Title"` tabs are su
|
|
|
86
87
|
| Reader links | Resolve |
|
|
87
88
|
|
|
88
89
|
```bash
|
|
90
|
+
cd {{APP_CWD}}
|
|
89
91
|
pnpm docs:lint
|
|
90
92
|
```
|
|
91
93
|
|
|
92
|
-
Not configured: arbitrary custom components, executable notebooks, API playgrounds
|
|
94
|
+
Not configured: arbitrary custom components, executable notebooks, API playgrounds or screenshot testing. Do not describe those as supported without an approved configuration and a working example. Check the actual package scripts: lint is {{LINT_STATUS}} and formatting is {{FORMAT_STATUS}}; disabled scripts only print a message.
|
|
93
95
|
|
|
94
96
|
## Diagrams and accessibility
|
|
95
97
|
|
|
98
|
+
Run the app’s docs:check script (from the repository root: `cd {{APP_CWD}} && pnpm docs:check`) before committing. It checks reader metadata/maps/links, navigation, contributor commands and real Mermaid syntax without building the site. Errors fail; warnings prompt review. Fix authored sources, then explicitly sync owned navigation and retry.
|
|
99
|
+
|
|
96
100
|
Mermaid is the diagram source of truth. Important or phone-sized diagrams also get matching `<name>-light.svg` and `<name>-dark.svg` assets. Change the Mermaid and both SVGs in the same commit, preserving nodes, edges and labels. Each SVG uses `role="img"`, a descriptive `<title>` and `<desc>` (connected with `aria-labelledby`), a legible viewBox and readable labels. Keep image alt text concise, about 155 characters or less, and describe the diagram's meaning without inventing claims.
|
|
97
101
|
|
|
98
102
|
=== "Syntax"
|
|
@@ -110,6 +114,8 @@ Mermaid is the diagram source of truth. Important or phone-sized diagrams also g
|
|
|
110
114
|
|
|
111
115
|
```mermaid
|
|
112
116
|
flowchart LR
|
|
117
|
+
accTitle: Documentation edit
|
|
118
|
+
accDescr: Read the local map before making a focused edit.
|
|
113
119
|
A[Read local map] --> B[Make a focused edit]
|
|
114
120
|
```
|
|
115
121
|
|
|
@@ -6,12 +6,13 @@
|
|
|
6
6
|
"description": "MkDocs Material documentation for {{SITE_NAME}}.",
|
|
7
7
|
"scripts": {
|
|
8
8
|
"docs:dev": "mkdocs serve",
|
|
9
|
-
"docs:build": "{{NAV_SYNC_CHECK_CMD}} && mkdocs build",
|
|
9
|
+
"docs:build": "{{DOCS_CHECK_CMD}} && {{NAV_SYNC_CHECK_CMD}} && mkdocs build",
|
|
10
10
|
"docs:setup": "sh ./setup-docs.sh",
|
|
11
|
+
"docs:check": "{{DOCS_CHECK_CMD}}",
|
|
11
12
|
"docs:lint": "{{DOCS_LINT_SCRIPT}}",
|
|
12
13
|
"docs:format": "{{DOCS_FORMAT_SCRIPT}}",
|
|
13
14
|
"docs:format:check": "{{DOCS_FORMAT_CHECK_SCRIPT}}",
|
|
14
|
-
"test": "
|
|
15
|
+
"test": "{{DOCS_CHECK_CMD}}"
|
|
15
16
|
},
|
|
16
17
|
"devDependencies": {
|
|
17
18
|
"@open-agent-toolkit/cli": "{{OAT_CLI_DEP}}"{{DEV_DEPENDENCIES}}
|
|
@@ -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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"}
|
|
@@ -11,6 +11,7 @@ import { compileDispatchCeilingPreset } from '../../config/dispatch-ceiling-pres
|
|
|
11
11
|
import { normalizeDispatchMatrix, validateDispatchRouteTarget, walkDispatchMatrix, } from '../../config/dispatch-matrix.js';
|
|
12
12
|
import { formatDispatchNotices, terminalReviewerNoticesForMatrix, } from '../../config/dispatch-notices.js';
|
|
13
13
|
import { dispatchPolicyModeDescription, dispatchPolicyPolicyDescription, managedDispatchPolicyValueList, } from '../../config/dispatch-policy-options.js';
|
|
14
|
+
import { normalizeDocumentationCheck } from '../../config/documentation-check.js';
|
|
14
15
|
import { parseJsonConfig } from '../../config/json.js';
|
|
15
16
|
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';
|
|
16
17
|
import { getOwnKey, setOwnKey } from '../../config/own-keys.js';
|
|
@@ -67,6 +68,7 @@ const KEY_ORDER = [
|
|
|
67
68
|
'archive.awsRegion',
|
|
68
69
|
'autoReviewAtCheckpoints',
|
|
69
70
|
'lastPausedProject',
|
|
71
|
+
'documentation.check',
|
|
70
72
|
'documentation.ia',
|
|
71
73
|
'documentation.nonReaderPaths',
|
|
72
74
|
'documentation.navOwner',
|
|
@@ -242,6 +244,17 @@ const CONFIG_CATALOG = [
|
|
|
242
244
|
description: 'Deprecated compatibility alias for workflow.autoReviewAtHillCheckpoints. Prefer `oat config set workflow.autoReviewAtHillCheckpoints <true|false>`.',
|
|
243
245
|
deprecated: { supersededBy: 'workflow.autoReviewAtHillCheckpoints' },
|
|
244
246
|
},
|
|
247
|
+
{
|
|
248
|
+
key: 'documentation.check',
|
|
249
|
+
group: 'Shared Repo (.oat/config.json)',
|
|
250
|
+
scope: 'shared repo',
|
|
251
|
+
file: '.oat/config.json',
|
|
252
|
+
type: 'JSON object',
|
|
253
|
+
defaultValue: 'null (portable checker defaults)',
|
|
254
|
+
mutability: 'read/write',
|
|
255
|
+
owningCommand: 'oat config set documentation.check <JSON>',
|
|
256
|
+
description: 'Portable docs rule severities, named thresholds, reason-bearing path exceptions, provenance patterns and diagram base ref.',
|
|
257
|
+
},
|
|
245
258
|
{
|
|
246
259
|
key: 'documentation.ia',
|
|
247
260
|
group: 'Shared Repo (.oat/config.json)',
|
|
@@ -1822,6 +1835,7 @@ async function setConfigValue(repoRoot, userConfigDir, key, rawValue, surface, d
|
|
|
1822
1835
|
const effectiveSurface = surface === 'auto' ? defaultSurfaceForKey(key) : surface;
|
|
1823
1836
|
if (key === 'documentation.nonReaderPaths' ||
|
|
1824
1837
|
key === 'documentation.guidance' ||
|
|
1838
|
+
key === 'documentation.check' ||
|
|
1825
1839
|
key === 'documentation.ia' ||
|
|
1826
1840
|
key === 'documentation.navOwner') {
|
|
1827
1841
|
const configPath = effectiveSurface === 'user'
|
|
@@ -1831,7 +1845,13 @@ async function setConfigValue(repoRoot, userConfigDir, key, rawValue, surface, d
|
|
|
1831
1845
|
const trimmed = rawValue.trim();
|
|
1832
1846
|
let value;
|
|
1833
1847
|
try {
|
|
1834
|
-
if (key === 'documentation.
|
|
1848
|
+
if (key === 'documentation.check') {
|
|
1849
|
+
const parsed = JSON.parse(trimmed);
|
|
1850
|
+
if (parsed === null)
|
|
1851
|
+
throw new Error('Expected a checker JSON object.');
|
|
1852
|
+
value = normalizeDocumentationCheck(parsed);
|
|
1853
|
+
}
|
|
1854
|
+
else if (key === 'documentation.nonReaderPaths') {
|
|
1835
1855
|
const paths = parseDocumentationExcludes(rawValue);
|
|
1836
1856
|
value = paths.length > 0 ? paths : undefined;
|
|
1837
1857
|
}
|
|
@@ -1848,8 +1868,10 @@ async function setConfigValue(repoRoot, userConfigDir, key, rawValue, surface, d
|
|
|
1848
1868
|
: normalizeDocumentationGuidance(trimmed.startsWith('[') ? JSON.parse(trimmed) : trimmed, configPath, effectiveSurface === 'user' ? 'user' : 'shared');
|
|
1849
1869
|
}
|
|
1850
1870
|
}
|
|
1851
|
-
catch {
|
|
1852
|
-
|
|
1871
|
+
catch (error) {
|
|
1872
|
+
if (key === 'documentation.check')
|
|
1873
|
+
throw error;
|
|
1874
|
+
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 });
|
|
1853
1875
|
}
|
|
1854
1876
|
let raw = { version: 1 };
|
|
1855
1877
|
try {
|
|
@@ -2450,6 +2472,7 @@ async function unsetConfigValue(repoRoot, userConfigDir, key, surface, dependenc
|
|
|
2450
2472
|
async function removeFromSurface(repoRoot, userConfigDir, key, effectiveSurface, path, dependencies) {
|
|
2451
2473
|
if (key === 'documentation.nonReaderPaths' ||
|
|
2452
2474
|
key === 'documentation.guidance' ||
|
|
2475
|
+
key === 'documentation.check' ||
|
|
2453
2476
|
key === 'documentation.ia' ||
|
|
2454
2477
|
key === 'documentation.navOwner') {
|
|
2455
2478
|
const configPath = effectiveSurface === 'user'
|
|
@@ -2577,6 +2600,15 @@ async function removeConfigPathOnDisk(configPath, path) {
|
|
|
2577
2600
|
if (!isRecord(parsed)) {
|
|
2578
2601
|
return null;
|
|
2579
2602
|
}
|
|
2603
|
+
// Checker null is malformed rather than an inherited unset sentinel.
|
|
2604
|
+
if (path.join('.') === 'documentation.check' &&
|
|
2605
|
+
isRecord(parsed.documentation) &&
|
|
2606
|
+
Object.hasOwn(parsed.documentation, 'check')) {
|
|
2607
|
+
return {
|
|
2608
|
+
...parsed,
|
|
2609
|
+
documentation: withoutOwnKey(parsed.documentation, 'check'),
|
|
2610
|
+
};
|
|
2611
|
+
}
|
|
2580
2612
|
const { next, removed } = removeConfigPath(parsed, path);
|
|
2581
2613
|
return removed ? next : null;
|
|
2582
2614
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"check.d.ts","sourceRoot":"","sources":["../../../../src/commands/docs/check/check.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,wBAAgB,sBAAsB,IAAI,OAAO,CA4DhD"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { buildCommandContext } from '../../../app/command-context.js';
|
|
2
|
+
import { readGlobalOptions } from '../../shared/shared.utils.js';
|
|
3
|
+
import { Command } from 'commander';
|
|
4
|
+
import { checkDocs } from './checker.js';
|
|
5
|
+
export function createDocsCheckCommand() {
|
|
6
|
+
return new Command('check')
|
|
7
|
+
.description('Read-only portable reader, navigation, command and diagram validation')
|
|
8
|
+
.option('--target-dir <dir>', 'Docs app root or literal Markdown content root')
|
|
9
|
+
.option('--rule <id...>', 'Run only these stable rule IDs (repeatable)', (values, previous) => previous.concat(values), [])
|
|
10
|
+
.action(async (options, command) => {
|
|
11
|
+
const context = buildCommandContext(readGlobalOptions(command));
|
|
12
|
+
let result;
|
|
13
|
+
try {
|
|
14
|
+
result = await checkDocs({
|
|
15
|
+
cwd: context.cwd,
|
|
16
|
+
targetDir: options.targetDir,
|
|
17
|
+
rules: options.rule,
|
|
18
|
+
});
|
|
19
|
+
process.exitCode = result.summary.errors ? 1 : 0;
|
|
20
|
+
}
|
|
21
|
+
catch (error) {
|
|
22
|
+
const message = error.message;
|
|
23
|
+
result = {
|
|
24
|
+
summary: { errors: 1, warnings: 0 },
|
|
25
|
+
findings: [
|
|
26
|
+
{
|
|
27
|
+
ruleId: 'configuration',
|
|
28
|
+
severity: 'error',
|
|
29
|
+
path: '.oat/config.json',
|
|
30
|
+
message,
|
|
31
|
+
},
|
|
32
|
+
],
|
|
33
|
+
};
|
|
34
|
+
// Invalid input/config is actionable. Unexpected filesystem/runtime
|
|
35
|
+
// failures retain the CLI's separate runtime-error exit convention.
|
|
36
|
+
process.exitCode = error.code ? 2 : 1;
|
|
37
|
+
}
|
|
38
|
+
if (context.json)
|
|
39
|
+
context.logger.json(result);
|
|
40
|
+
else {
|
|
41
|
+
for (const f of result.findings) {
|
|
42
|
+
const location = `${f.path}${f.line === undefined ? '' : `:${f.line}`}`;
|
|
43
|
+
context.logger[f.severity === 'error' ? 'error' : 'warn'](`${location} [${f.ruleId}] ${f.message}`);
|
|
44
|
+
}
|
|
45
|
+
context.logger.info(`Docs check: ${result.summary.errors} error(s), ${result.summary.warnings} warning(s).`);
|
|
46
|
+
}
|
|
47
|
+
});
|
|
48
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { DocsCheckRule } from '../../../config/documentation-check.js';
|
|
2
|
+
export interface DocsFinding {
|
|
3
|
+
ruleId: DocsCheckRule | 'configuration';
|
|
4
|
+
severity: 'error' | 'warn';
|
|
5
|
+
path: string;
|
|
6
|
+
line?: number;
|
|
7
|
+
message: string;
|
|
8
|
+
}
|
|
9
|
+
export interface DocsCheckResult {
|
|
10
|
+
summary: {
|
|
11
|
+
errors: number;
|
|
12
|
+
warnings: number;
|
|
13
|
+
};
|
|
14
|
+
findings: DocsFinding[];
|
|
15
|
+
}
|
|
16
|
+
export type Report = (rule: DocsCheckRule, severity: 'error' | 'warn', path: string, message: string, line?: number) => void;
|
|
17
|
+
//# sourceMappingURL=check.types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"check.types.d.ts","sourceRoot":"","sources":["../../../../src/commands/docs/check/check.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AACjE,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,aAAa,GAAG,eAAe,CAAC;IACxC,QAAQ,EAAE,OAAO,GAAG,MAAM,CAAC;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB;AACD,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IAC9C,QAAQ,EAAE,WAAW,EAAE,CAAC;CACzB;AACD,MAAM,MAAM,MAAM,GAAG,CACnB,IAAI,EAAE,aAAa,EACnB,QAAQ,EAAE,OAAO,GAAG,MAAM,EAC1B,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,IAAI,CAAC,EAAE,MAAM,KACV,IAAI,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { DocsCheckResult } from './check.types.js';
|
|
2
|
+
/** Read-only portable checker. Output paths are content-root-relative POSIX. */
|
|
3
|
+
export declare function checkDocs(options: {
|
|
4
|
+
cwd: string;
|
|
5
|
+
targetDir?: string;
|
|
6
|
+
rules?: string[];
|
|
7
|
+
}): Promise<DocsCheckResult>;
|
|
8
|
+
//# sourceMappingURL=checker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"checker.d.ts","sourceRoot":"","sources":["../../../../src/commands/docs/check/checker.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,eAAe,EAAuB,MAAM,eAAe,CAAC;AAQ1E,gFAAgF;AAChF,wBAAsB,SAAS,CAAC,OAAO,EAAE;IACvC,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;CAClB,GAAG,OAAO,CAAC,eAAe,CAAC,CAwF3B"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { createExclusionMatcher, isExcludedPath, } from '../../docs/shared/exclusions.js';
|
|
2
|
+
import { DOCS_CHECK_RULES, } from '../../../config/documentation-check.js';
|
|
3
|
+
import { checkCommands } from './commands.js';
|
|
4
|
+
import { checkDiagrams } from './diagrams.js';
|
|
5
|
+
import { readPage, readerFiles, resolveCheckTarget } from './files.js';
|
|
6
|
+
import { checkNavigation } from './navigation.js';
|
|
7
|
+
import { checkProvenance, checkReaders } from './reader-rules.js';
|
|
8
|
+
/** Read-only portable checker. Output paths are content-root-relative POSIX. */
|
|
9
|
+
export async function checkDocs(options) {
|
|
10
|
+
const unknown = options.rules?.find((rule) => !DOCS_CHECK_RULES.includes(rule));
|
|
11
|
+
if (unknown)
|
|
12
|
+
throw new Error(`Unknown docs check rule "${unknown}". Choose: ${DOCS_CHECK_RULES.join(', ')}.`);
|
|
13
|
+
const target = await resolveCheckTarget(options.cwd, options.targetDir);
|
|
14
|
+
const policy = target.documentation.check;
|
|
15
|
+
const findings = [];
|
|
16
|
+
const exceptions = policy?.exceptions?.map((e) => ({
|
|
17
|
+
...e,
|
|
18
|
+
matcher: createExclusionMatcher([e.path]),
|
|
19
|
+
})) ?? [];
|
|
20
|
+
const report = (ruleId, defaultSeverity, path, message, line) => {
|
|
21
|
+
if (options.rules?.length && !options.rules.includes(ruleId))
|
|
22
|
+
return;
|
|
23
|
+
let severity = policy?.rules?.[ruleId] ?? defaultSeverity;
|
|
24
|
+
for (const e of exceptions)
|
|
25
|
+
if (e.rule === ruleId && isExcludedPath(e.matcher, path))
|
|
26
|
+
severity = e.severity ?? 'off';
|
|
27
|
+
if (severity === 'off')
|
|
28
|
+
return;
|
|
29
|
+
findings.push({
|
|
30
|
+
ruleId,
|
|
31
|
+
severity,
|
|
32
|
+
path,
|
|
33
|
+
...(line === undefined ? {} : { line }),
|
|
34
|
+
message,
|
|
35
|
+
});
|
|
36
|
+
};
|
|
37
|
+
const pages = [];
|
|
38
|
+
for (const path of await readerFiles(target)) {
|
|
39
|
+
try {
|
|
40
|
+
const page = await readPage(target, path);
|
|
41
|
+
pages.push(page);
|
|
42
|
+
if (page.frontmatterError)
|
|
43
|
+
report('frontmatter', 'error', path, page.frontmatterError, 1);
|
|
44
|
+
}
|
|
45
|
+
catch (error) {
|
|
46
|
+
const code = error?.code;
|
|
47
|
+
const safeCode = typeof code === 'string' && /^[A-Z][A-Z0-9_]*$/.test(code)
|
|
48
|
+
? code
|
|
49
|
+
: 'UNKNOWN';
|
|
50
|
+
report('frontmatter', 'error', path, `Cannot read documentation source (${safeCode}); check file permissions and readability.`, 1);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
await checkReaders(target, pages, report);
|
|
54
|
+
checkProvenance(target, pages, report);
|
|
55
|
+
if (!options.rules?.length || options.rules.includes('navigation'))
|
|
56
|
+
await checkNavigation(target, report);
|
|
57
|
+
if (!options.rules?.length || options.rules.includes('commands'))
|
|
58
|
+
await checkCommands(target, pages, report);
|
|
59
|
+
if (!options.rules?.length ||
|
|
60
|
+
options.rules.some((r) => [
|
|
61
|
+
'mermaid',
|
|
62
|
+
'diagram-accessibility',
|
|
63
|
+
'diagram-pairs',
|
|
64
|
+
'diagram-freshness',
|
|
65
|
+
'image-alt',
|
|
66
|
+
].includes(r)))
|
|
67
|
+
await checkDiagrams(target, pages, report);
|
|
68
|
+
findings.sort((a, b) => a.path < b.path
|
|
69
|
+
? -1
|
|
70
|
+
: a.path > b.path
|
|
71
|
+
? 1
|
|
72
|
+
: (a.line ?? 0) - (b.line ?? 0) ||
|
|
73
|
+
a.ruleId.localeCompare(b.ruleId) ||
|
|
74
|
+
a.message.localeCompare(b.message));
|
|
75
|
+
return {
|
|
76
|
+
summary: {
|
|
77
|
+
errors: findings.filter((f) => f.severity === 'error').length,
|
|
78
|
+
warnings: findings.filter((f) => f.severity === 'warn').length,
|
|
79
|
+
},
|
|
80
|
+
findings,
|
|
81
|
+
};
|
|
82
|
+
}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { Report } from './check.types.js';
|
|
2
|
+
import { type CheckTarget } from './files.js';
|
|
3
|
+
import type { ParsedPage } from './markdown.js';
|
|
4
|
+
export declare function checkCommands(target: CheckTarget, pages: ParsedPage[], report: Report): Promise<void>;
|
|
5
|
+
//# sourceMappingURL=commands.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../../../src/commands/docs/check/commands.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAA0B,KAAK,WAAW,EAAE,MAAM,SAAS,CAAC;AACnE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAgI7C,wBAAsB,aAAa,CACjC,MAAM,EAAE,WAAW,EACnB,KAAK,EAAE,UAAU,EAAE,EACnB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,IAAI,CAAC,CAyJf"}
|