@open-agent-toolkit/cli 0.3.24 → 0.3.25
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/workflows.md +53 -8
- package/assets/docs/reference/cli-reference.md +1 -1
- package/assets/docs/reference/configuration.md +2 -0
- package/assets/public-package-versions.json +4 -4
- package/assets/skills/oat-docs-analyze/SKILL.md +106 -6
- package/assets/skills/oat-docs-analyze/references/analysis-artifact-template.md +42 -2
- package/assets/skills/oat-docs-analyze/scripts/package-drift.mjs +129 -0
- package/assets/skills/oat-docs-apply/SKILL.md +131 -12
- package/assets/skills/oat-docs-apply/references/apply-plan-template.md +58 -14
- package/assets/skills/oat-docs-bootstrap/SKILL.md +24 -6
- package/dist/commands/config/index.d.ts.map +1 -1
- package/dist/commands/config/index.js +49 -9
- package/dist/config/oat-config.d.ts +16 -0
- package/dist/config/oat-config.d.ts.map +1 -1
- package/dist/config/oat-config.js +58 -0
- package/dist/config/resolve.d.ts.map +1 -1
- package/dist/config/resolve.js +4 -1
- package/package.json +2 -2
|
@@ -364,8 +364,11 @@ method works without private guidance or copied exemplars.
|
|
|
364
364
|
Existing docs default to analyze → apply of approved recommendations and exit
|
|
365
365
|
before scaffolding. Replacement requires an explicit choice. A second app also
|
|
366
366
|
requires an explicit choice and remains unsupported by the current CLI. This
|
|
367
|
-
|
|
368
|
-
|
|
367
|
+
proposal becomes durable only after approval: bootstrap/apply use `oat decision new`
|
|
368
|
+
and an Information architecture section in the framework docs-app `AGENTS.md`
|
|
369
|
+
or Markdown contributing page, plus the shared `documentation.ia` mirror.
|
|
370
|
+
Authored records stay authoritative; missing/conflicting records become `ask_user`.
|
|
371
|
+
Preset scaffolds and Feature/QA validation page templates are a later delivery;
|
|
369
372
|
the IA Proposal template is available now.
|
|
370
373
|
|
|
371
374
|
## oat-docs-analyze
|
|
@@ -421,15 +424,16 @@ repair the analysis contract rather than asking apply to fill it in.
|
|
|
421
424
|
## oat-docs-apply
|
|
422
425
|
|
|
423
426
|
**Invocation:** `/oat-docs-apply` after reviewing a docs analysis report.
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
+
Supply the analysis artifact path and approved recommendation IDs. If no path
|
|
428
|
+
is supplied, the skill offers the newest report for confirmation; it never
|
|
429
|
+
silently changes the reviewed input. It builds a recommendation plan and asks you to choose
|
|
427
430
|
`apply all`, `apply interactively` (approve, modify, or skip each item), or
|
|
428
431
|
`discuss` before changing anything.
|
|
429
432
|
|
|
430
433
|
**Prerequisites:** A recent, complete docs analysis artifact and an unchanged
|
|
431
434
|
compatible target. Recommendations need evidence, confidence, disclosure,
|
|
432
|
-
|
|
435
|
+
stable unique IDs, `approval: explicit | default`, and concrete link targets
|
|
436
|
+
where applicable. Apply also needs `jq` for
|
|
433
437
|
tracking updates, and `gh` only if you want it to open the pull request. No
|
|
434
438
|
active OAT project is required. Missing analysis or a changed target requires a fresh analysis,
|
|
435
439
|
not conventions invented during apply.
|
|
@@ -442,9 +446,12 @@ execute those selected actions without broadening the work to every finding.
|
|
|
442
446
|
|
|
443
447
|
**Expected output:** Approved changes committed on a new
|
|
444
448
|
`oat/docs-<timestamp>` branch, relevant source/link checks, and declared
|
|
445
|
-
navigation or generated-artifact refreshes
|
|
449
|
+
navigation or generated-artifact refreshes, plus a structured result listing
|
|
450
|
+
applied, skipped (ID/reason), and failed IDs. Markdown retains its authored
|
|
446
451
|
index and needs no framework build or nav sync; Fumadocs sidebar metadata is
|
|
447
|
-
regenerated
|
|
452
|
+
regenerated only with recorded `navOwner: nav-sync`. Hand-authored navigation
|
|
453
|
+
gets approved edits and read-only Contents membership/order comparison;
|
|
454
|
+
undeclared ownership becomes `ask_user`. The summary
|
|
448
455
|
reports the applied plan and checks.
|
|
449
456
|
|
|
450
457
|
**What it does without asking:** Nothing changes until you approve the plan.
|
|
@@ -467,6 +474,44 @@ pull request. Rerun analysis if you need a post-apply assessment, and treat
|
|
|
467
474
|
unapproved recommendations as remaining decisions rather than completed
|
|
468
475
|
work.
|
|
469
476
|
|
|
477
|
+
## Approval, IA records and restructuring
|
|
478
|
+
|
|
479
|
+
Every analyze recommendation has a stable ID and `approval: explicit | default`.
|
|
480
|
+
`apply all` covers only non-blocked default content repairs. Docs-package updates,
|
|
481
|
+
restructure blocks and work outside Markdown scope require individual approval
|
|
482
|
+
by ID; unattended runs skip explicit items even when their IDs were supplied,
|
|
483
|
+
with reason `explicit_requires_interactive_approval`. Kickoff consent is not
|
|
484
|
+
approval of every finding. Bootstrap Step 7b uses this same artifact-plus-ID
|
|
485
|
+
handoff, and apply reports unsupported scaffold work as `manual`.
|
|
486
|
+
|
|
487
|
+
An approved IA record first checks target-repo PJM adoption with `oat pjm doctor
|
|
488
|
+
--json`; absent/partial adoption needs initialization before `oat decision new`.
|
|
489
|
+
The decision and authored section capture tracks, per-track organizing
|
|
490
|
+
principles, placement and verification overlay. Config mirrors the accepted
|
|
491
|
+
record without replacing it. Framework sidebar ownership is independent; Markdown
|
|
492
|
+
creates no docs-root AGENTS file and runs no nav sync.
|
|
493
|
+
|
|
494
|
+
A `restructure` block records source→destination mappings, both parent Contents
|
|
495
|
+
changes, grep-derived inbound-link rewrites, and old-URL recovery, then lands as
|
|
496
|
+
one exact-path commit per approved block. Retired pages retain a stub/archive
|
|
497
|
+
pointer and parent map update. Next static export cannot use Next config
|
|
498
|
+
redirects; choose an authored stub or verified host recovery, keeping unsupported
|
|
499
|
+
app/host changes manual. Check rewritten relative links/anchors and the old route
|
|
500
|
+
under the real base path; verify according to sidebar ownership and rerun analyze.
|
|
501
|
+
|
|
502
|
+
Analyze also audits Information Architecture Fit and declared Product, QA,
|
|
503
|
+
consumer and agent coverage. A top-level misroute is High when it blocks normal
|
|
504
|
+
first success/verification, Medium when it causes material detours; cosmetic
|
|
505
|
+
organization stays Low. Missing IA/owner raises `ask_user`.
|
|
506
|
+
|
|
507
|
+
For framework apps, offline drift compares installed `@open-agent-toolkit/docs-*` packages to the
|
|
508
|
+
running CLI's bundled `public-package-versions.json`, never registry latest.
|
|
509
|
+
Missing installations are unverified. The recommendation includes the exact
|
|
510
|
+
upgrade command. Individual tooling approval permits only docs-app `@open-agent-toolkit/docs-*`
|
|
511
|
+
dependency bumps (and resulting lockfile), the admonition/frontmatter conversions
|
|
512
|
+
already supported by `oat docs migrate`, and build verification. App config,
|
|
513
|
+
routes and package scripts remain manual required changes.
|
|
514
|
+
|
|
470
515
|
## Related docs
|
|
471
516
|
|
|
472
517
|
- [`commands.md`](commands.md)
|
|
@@ -233,7 +233,7 @@ Notable commands introduced in the current CLI surface:
|
|
|
233
233
|
- `--local` — write to or remove from `.oat/config.local.json` (per-developer repo state, gitignored)
|
|
234
234
|
- `--user` — write to or remove from `~/.oat/config.json` (user-level fallback, applies across all repos)
|
|
235
235
|
|
|
236
|
-
When no flag is passed, the CLI picks a sensible default per key type: structural keys (`projects.root`, `documentation.*`, etc.) go to shared, state keys (`activeProject`, etc.) go to local, workflow preferences (`workflow.*`) go to local. Pass at most one flag — the command rejects multiple surface flags. `documentation.guidance` is shared by default and also accepts `--user`; use a path/URL string or a JSON string array, not a comma-separated list.
|
|
236
|
+
When no flag is passed, the CLI picks a sensible default per key type: structural keys (`projects.root`, `documentation.*`, etc.) go to shared, state keys (`activeProject`, etc.) go to local, workflow preferences (`workflow.*`) go to local. Pass at most one flag — the command rejects multiple surface flags. `documentation.guidance` is shared by default and also accepts `--user`; use a path/URL string or a JSON string array, not a comma-separated list. `documentation.ia` accepts the [recorded IA JSON shape](configuration.md#shared-repo-config-you-will-touch-most-often) and `documentation.navOwner` accepts `nav-sync` or `hand-authored`; both are shared-only. Unset owner means undeclared, and Markdown ignores it. IA is an atomic value in get/dump, not a set of separately configurable child keys.
|
|
237
237
|
|
|
238
238
|
Per-key restrictions apply identically to `set` and `unset`: structural keys can only be written at shared scope, most state keys can only be written at local scope (`activeIdea` is the exception — it accepts both local and user), and workflow preference keys accept any non-auto surface. Legacy `autoReviewAtCheckpoints` remains shared-only; prefer `workflow.autoReviewAtHillCheckpoints`.
|
|
239
239
|
|
|
@@ -94,6 +94,8 @@ 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":"Flat Small","decision":".oat/repo/reference/decisions/DR-example.md","verification":"none"}'`; unset removes the mirror only. Invalid shapes/paths are rejected; neither `--user` nor `--local` is supported.
|
|
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. This config support does not change CLI scaffold defaults or explicit nav-sync command behavior.
|
|
97
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).
|
|
98
100
|
- `documentation.excludes` — a JSON array of globs, relative to the docs directory, that `oat docs generate-index` leaves out of the generated index. `oat config set` takes the list as one comma-separated value (`"a/**,b.md"`) and stores it as an array; repeated `--exclude` flags extend it, and an empty value clears the key
|
|
99
101
|
- `documentation.requireForProjectCompletion` — whether docs sync is a completion gate
|
|
@@ -6,7 +6,7 @@ disable-model-invocation: true
|
|
|
6
6
|
user-invocable: true
|
|
7
7
|
allowed-tools: Read, Write, Bash(git:*), Bash(oat config:*), Bash(oat docs nav sync --check:*), Bash(pnpm:*), Bash(bash:*), Bash(jq:*), Bash(node:*), Bash(mkdir:*), Bash(date:*), Bash(echo:*), Bash(cd:*), Bash(pwd:*), Glob, Grep, AskUserQuestion, Task
|
|
8
8
|
metadata:
|
|
9
|
-
version: '1.7.
|
|
9
|
+
version: '1.7.1'
|
|
10
10
|
---
|
|
11
11
|
|
|
12
12
|
# Docs Analysis
|
|
@@ -115,8 +115,9 @@ Use the five axes before presets and show two plausible two-level trees with
|
|
|
115
115
|
5–8 representative page placements each, page jobs, nearest approved presets
|
|
116
116
|
and tradeoffs. A UI alone does not justify Product/Engineering/QA; size chooses
|
|
117
117
|
depth, not audience. For an existing tree respect AGENTS/contributing authority;
|
|
118
|
-
conflicts are `ask_user`, with both source citations.
|
|
119
|
-
|
|
118
|
+
conflicts are `ask_user`, with both source citations. Analyze remains read-only:
|
|
119
|
+
propose `record-ia` or `restructure` recommendations for apply; never persist
|
|
120
|
+
IA or materialize scaffolds from analysis.
|
|
120
121
|
|
|
121
122
|
### Step 0: Resolve Docs Target and Analysis Mode
|
|
122
123
|
|
|
@@ -317,6 +318,37 @@ For each evaluated page or directory:
|
|
|
317
318
|
In `delta` mode, always evaluate changed docs files plus the nearest parent `index.md` pages.
|
|
318
319
|
In `full` mode, evaluate the whole docs surface.
|
|
319
320
|
|
|
321
|
+
### Information Architecture Fit
|
|
322
|
+
|
|
323
|
+
Read the authored IA decision and `## Information architecture` section in the
|
|
324
|
+
docs-app AGENTS.md (Fumadocs/MkDocs) or contributing page (Markdown).
|
|
325
|
+
`documentation.ia` is a repository-only mirror: compare preset, decision path,
|
|
326
|
+
tracks/principles and verification overlay to those authored sources. The
|
|
327
|
+
authored record is authoritative; missing/broken records or contradictory
|
|
328
|
+
mirrors become `ask_user` findings. No recorded IA means `ask_user` to choose
|
|
329
|
+
and record one, not an inferred preset. Keep ordinary contract analysis useful
|
|
330
|
+
while those recommendations are blocked.
|
|
331
|
+
|
|
332
|
+
In the artifact's **Information Architecture Fit** section, cite whether the
|
|
333
|
+
landing page routes each declared audience, all declared sections exist and are
|
|
334
|
+
reachable, page reader/purpose matches placement, root breadth is usable, and an
|
|
335
|
+
app's docs avoid merely mirroring implementation directories. Review coverage
|
|
336
|
+
only for declared readers: Product features/journeys/screens/states; QA scenario
|
|
337
|
+
tables with seeds and automation references; consumer first-success/task guides;
|
|
338
|
+
agent entrypoints, canonical sources and verification commands. Do not demand
|
|
339
|
+
these tracks from every repository or implement the later P24 source checks.
|
|
340
|
+
|
|
341
|
+
Top-level IA misroutes a declared audience: `High` when the reader cannot find
|
|
342
|
+
a normal first-success or required verification path; `Medium` when that path
|
|
343
|
+
is reachable but its placement causes material detours/confusion. Cite the
|
|
344
|
+
declared audience, route and concrete reader impact. This rule overrides Low
|
|
345
|
+
organization polish; do not upgrade purely cosmetic differences.
|
|
346
|
+
|
|
347
|
+
For framework apps read `documentation.navOwner` independently of IA. Missing
|
|
348
|
+
means **undeclared**: issue `ask_user` to choose `nav-sync` or `hand-authored`,
|
|
349
|
+
and run only read-only membership/order comparisons. Never assume nav sync owns
|
|
350
|
+
existing navigation. Markdown ignores navOwner and never runs nav sync.
|
|
351
|
+
|
|
320
352
|
### Step 4: Verify Substantive Claims Against Repo Sources
|
|
321
353
|
|
|
322
354
|
Add a dedicated accuracy verification pass between page-quality assessment and nav/drift checks.
|
|
@@ -438,8 +470,8 @@ If a generated root index or manifest exists:
|
|
|
438
470
|
files, and representative links for each finding.
|
|
439
471
|
5. Prefer source-of-truth fixes over generated-file edits.
|
|
440
472
|
|
|
441
|
-
|
|
442
|
-
`docs/**/meta.json`
|
|
473
|
+
For a Fumadocs app with recorded `navOwner: nav-sync`, compare generated
|
|
474
|
+
`docs/**/meta.json` with authored `## Contents`:
|
|
443
475
|
|
|
444
476
|
1. Flag a docs directory with an `index.md` but no `meta.json` as a missing
|
|
445
477
|
generated artifact.
|
|
@@ -463,6 +495,13 @@ If the app is Fumadocs (a `source.config.ts` beside `docs/`), its sidebar comes
|
|
|
463
495
|
1 when either exists. The skill grants only this `--check` form; plain
|
|
464
496
|
`oat docs nav sync` writes files and is not part of analysis.
|
|
465
497
|
|
|
498
|
+
For `hand-authored` or undeclared Fumadocs navigation, compare current meta.json
|
|
499
|
+
membership/order with Contents without assuming strict generator output; do not
|
|
500
|
+
flag rest entries merely because they are hand-authored. Report missing reader
|
|
501
|
+
routes and differences with local ownership evidence; recommend no automatic
|
|
502
|
+
regeneration. For nav-sync-owned MkDocs, use the same explicit-target read-only
|
|
503
|
+
`oat docs nav sync --check --target-dir <docs-app-dir>`.
|
|
504
|
+
|
|
466
505
|
If `mkdocs.yml` exists:
|
|
467
506
|
|
|
468
507
|
1. Compare nav entries with the docs tree.
|
|
@@ -476,6 +515,53 @@ site nav generation or builds. Lack of `mkdocs.yml`, a generated manifest, or an
|
|
|
476
515
|
app package is expected, not a migration finding. For other unconfigured surfaces,
|
|
477
516
|
record whether app migration is relevant only when evidence or user intent supports it.
|
|
478
517
|
|
|
518
|
+
### Offline docs-package drift
|
|
519
|
+
|
|
520
|
+
For framework apps read their package.json and installed docs packages against
|
|
521
|
+
the running CLI's bundled `assets/public-package-versions.json`, without network.
|
|
522
|
+
Run this skill's production helper after resolving this skill's own directory:
|
|
523
|
+
|
|
524
|
+
```bash
|
|
525
|
+
node "$SKILL_DIR/scripts/package-drift.mjs" --app "<docs-app-dir>" --cli "$(command -v oat)"
|
|
526
|
+
```
|
|
527
|
+
|
|
528
|
+
If a package-manager wrapper prevents locating the CLI root, discover the bundle
|
|
529
|
+
from that invoked installation offline. Inspect `command -v oat` and, for a shell
|
|
530
|
+
shim, read its `exec` lines or `cmd-shim-target` comment (for example,
|
|
531
|
+
`sed -n '1,160p' "$(command -v oat)"`). Resolve a relative JavaScript target from
|
|
532
|
+
the shim's directory; do not evaluate copied shell text. Locate that target's
|
|
533
|
+
package root containing `package.json` named `@open-agent-toolkit/cli` and
|
|
534
|
+
`assets/public-package-versions.json`. `pnpm root -g` or `npm root -g` can help
|
|
535
|
+
locate it, but newer pnpm installations may nest it in a hashed directory; use
|
|
536
|
+
the actual shim target, never another checkout's bundle. Bind the inspected paths:
|
|
537
|
+
|
|
538
|
+
```bash
|
|
539
|
+
OAT_INSTALLED_ENTRY="<absolute JavaScript target from the invoked shim>"
|
|
540
|
+
OAT_INSTALLED_ROOT="<that installed @open-agent-toolkit/cli package root>"
|
|
541
|
+
# Both must equal the invoked oat version; stop if either differs.
|
|
542
|
+
test "$(node "$OAT_INSTALLED_ENTRY" --version)" = "$(oat --version)" &&
|
|
543
|
+
test "$(node -p 'JSON.parse(require("node:fs").readFileSync(process.argv[1], "utf8")).version' "$OAT_INSTALLED_ROOT/package.json")" = "$(oat --version)" &&
|
|
544
|
+
node "$SKILL_DIR/scripts/package-drift.mjs" --app "<docs-app-dir>" --versions "$OAT_INSTALLED_ROOT/assets/public-package-versions.json"
|
|
545
|
+
```
|
|
546
|
+
|
|
547
|
+
Never substitute registry latest or this target repo's package version. Missing
|
|
548
|
+
bundle metadata, missing installed packages, or non-orderable versions (including
|
|
549
|
+
prereleases) mean unverified, never an upgrade. The helper compares stable numeric
|
|
550
|
+
version components: older installed packages are `drift`; equal versions are
|
|
551
|
+
`current`; newer installed packages are `ahead`, with no upgrade command. For
|
|
552
|
+
`ahead`, report that the running CLI is stale and ask the operator to update or
|
|
553
|
+
select the intended CLI installation before re-analysis; do not recommend a docs
|
|
554
|
+
package downgrade. `unverified` also has no package command and needs manual
|
|
555
|
+
verification. Neither status authorizes a tooling update.
|
|
556
|
+
|
|
557
|
+
The helper reports declared and installed versions, target versions and commands
|
|
558
|
+
for orderable targets. If the app uses a different package manager, translate the
|
|
559
|
+
command to its documented equivalent preserving package, exact target and
|
|
560
|
+
dependency section. Cite the manifest, installed package path, bundle path and
|
|
561
|
+
exact command. Report older-package drift as `tooling-update`, `approval: explicit`;
|
|
562
|
+
describe unsupported scaffold repairs separately as `manual`. Markdown has no
|
|
563
|
+
app-package drift check. This helper reads only and never upgrades anything.
|
|
564
|
+
|
|
479
565
|
### Step 7: Severity-Rate Findings
|
|
480
566
|
|
|
481
567
|
Use these defaults:
|
|
@@ -485,6 +571,19 @@ Use these defaults:
|
|
|
485
571
|
- `Medium`: incomplete `## Contents`, `overview.md` still in use, plugin/contributor guidance gaps, moderate duplication
|
|
486
572
|
- `Low`: polish, wording, or organization improvements
|
|
487
573
|
|
|
574
|
+
### Recommendation handoff
|
|
575
|
+
|
|
576
|
+
Give every recommendation a unique stable ID (`R-001`, etc.) and
|
|
577
|
+
`approval: explicit | default`; preserve IDs through review and never reuse a
|
|
578
|
+
retired ID for a different change. `explicit` covers docs-package updates,
|
|
579
|
+
restructure blocks and anything outside the Markdown scope (including authored
|
|
580
|
+
IA decision/config writes). `default` covers ordinary in-scope content repairs.
|
|
581
|
+
Missing evidence, `omit` and `ask_user` remain independent blockers regardless
|
|
582
|
+
of approval class. Capture exact targets and commands; an explicit class is not
|
|
583
|
+
permission to perform unsupported work. Apply's one input is this artifact plus
|
|
584
|
+
a list of approved recommendation IDs. Blanket or unattended approval never
|
|
585
|
+
covers explicit recommendations; apply reports skipped IDs with reasons.
|
|
586
|
+
|
|
488
587
|
### Step 8: Write Analysis Artifact
|
|
489
588
|
|
|
490
589
|
Use `references/analysis-artifact-template.md`.
|
|
@@ -506,7 +605,8 @@ Populate the artifact with:
|
|
|
506
605
|
- Accuracy verification verdicts for repo-checkable claims
|
|
507
606
|
- Content opportunities for missing or thin docs coverage
|
|
508
607
|
- Navigation/drift findings
|
|
509
|
-
-
|
|
608
|
+
- Information Architecture Fit and offline package drift
|
|
609
|
+
- Ordered recommendations with stable IDs and approval classes
|
|
510
610
|
- Exact evidence references for each finding and recommendation
|
|
511
611
|
- Confidence for each recommendation
|
|
512
612
|
- Progressive disclosure decisions (`inline`, `link_only`, `omit`, `ask_user`)
|
|
@@ -27,6 +27,39 @@ oat_analysis_commit: { commitHash }
|
|
|
27
27
|
|
|
28
28
|
Do not copy private guidance contents or persist an IA decision from this report.
|
|
29
29
|
|
|
30
|
+
## Information Architecture Fit
|
|
31
|
+
|
|
32
|
+
- Authored decision and Information architecture section: {paths/lines or missing}
|
|
33
|
+
- Config mirror: {preset, decision, tracks/principles, verification; agrees/conflicts}
|
|
34
|
+
- Missing IA / conflicting authority: {ask_user recommendation ID or none}
|
|
35
|
+
- Sidebar owner: {nav-sync / hand-authored / undeclared; Markdown: ignored}
|
|
36
|
+
- Undeclared framework owner: {ask_user recommendation ID or none}
|
|
37
|
+
|
|
38
|
+
| Declared reader/track | Landing route and section reachability | Placement/coverage evidence | Reader impact | Severity |
|
|
39
|
+
| -------------------------------------------------------- | -------------------------------------- | ----------------------------------------- | -------------------------------------------------------------- | --------------------- |
|
|
40
|
+
| {Product / QA / consumer / agent / other declared track} | {exact links} | {sources; page purpose; missing coverage} | {blocked first success/verification, material detour, or none} | {High / Medium / N/A} |
|
|
41
|
+
|
|
42
|
+
Assess root breadth and implementation-directory mirroring using reader evidence.
|
|
43
|
+
Do not invent missing audiences or choose an IA without approval.
|
|
44
|
+
|
|
45
|
+
## Offline Package Drift
|
|
46
|
+
|
|
47
|
+
- Bundle metadata: {running CLI public-package-versions.json path or unverified}
|
|
48
|
+
- Docs app manifest: {path; Markdown: not applicable}
|
|
49
|
+
|
|
50
|
+
| Package | Declared / installed | Bundled | Status | Exact upgrade command | Recommendation ID |
|
|
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} |
|
|
53
|
+
|
|
54
|
+
Only older installed packages (`drift`) receive a package-upgrade command and
|
|
55
|
+
stable recommendation ID with `approval: explicit`. `current` needs no tooling
|
|
56
|
+
recommendation, even if the helper emits a reinstall command. For `ahead`, select
|
|
57
|
+
or update the intended CLI installation, then re-analyze; do not recommend a docs
|
|
58
|
+
package downgrade. `unverified` requires manual verification before a package
|
|
59
|
+
recommendation.
|
|
60
|
+
|
|
61
|
+
Unsupported app config/routes/scripts: {manual changes required; never automatic}.
|
|
62
|
+
|
|
30
63
|
## Summary
|
|
31
64
|
|
|
32
65
|
- **Files evaluated:** {N}
|
|
@@ -270,14 +303,18 @@ canonical docs/config/examples.
|
|
|
270
303
|
|
|
271
304
|
1. **{Action}** — {rationale}
|
|
272
305
|
- Target: `{path}`
|
|
273
|
-
-
|
|
306
|
+
- ID: {R-NNN; unique and stable}
|
|
307
|
+
- approval: {explicit | default}
|
|
308
|
+
- Action Type: {create / update / move / scaffold / sync-nav / record-ia / restructure / tooling-update / manual}
|
|
274
309
|
- Evidence: {exact refs}
|
|
275
310
|
- Confidence: {high | medium | low}
|
|
276
311
|
- Disclosure: {inline | link_only | omit | ask_user}
|
|
277
312
|
- Link Targets: {path or URL / N/A}
|
|
278
313
|
2. **{Action}** — {rationale}
|
|
279
314
|
- Target: `{path}`
|
|
280
|
-
-
|
|
315
|
+
- ID: {R-NNN; unique and stable}
|
|
316
|
+
- approval: {explicit | default}
|
|
317
|
+
- Action Type: {create / update / move / scaffold / sync-nav / record-ia / restructure / tooling-update / manual}
|
|
281
318
|
- Evidence: {exact refs}
|
|
282
319
|
- Confidence: {high | medium | low}
|
|
283
320
|
- Disclosure: {inline | link_only | omit | ask_user}
|
|
@@ -286,6 +323,9 @@ canonical docs/config/examples.
|
|
|
286
323
|
|
|
287
324
|
## Apply Contract
|
|
288
325
|
|
|
326
|
+
- `oat-docs-apply` input is this artifact path plus approved recommendation IDs.
|
|
327
|
+
- Every recommendation has a unique stable ID and approval: explicit | default.
|
|
328
|
+
- Explicit items need individual approval by ID; blanket/unattended approval skips them and reports the reason.
|
|
289
329
|
- `oat-docs-apply` may only implement recommendations backed by evidence in this artifact.
|
|
290
330
|
- Findings based on contradicted claims must be resolved against cited repo sources before `oat-docs-apply` acts on them.
|
|
291
331
|
- Generated artifacts must not be hand-edited by `oat-docs-apply`. If a
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
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';
|
|
5
|
+
import { parseArgs } from 'node:util';
|
|
6
|
+
|
|
7
|
+
const shellQuote = (value) =>
|
|
8
|
+
`'${value.replaceAll("'", String.fromCharCode(39, 92, 39, 39))}'`;
|
|
9
|
+
|
|
10
|
+
async function versionsForCli(executable) {
|
|
11
|
+
if (!executable)
|
|
12
|
+
throw new Error(
|
|
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));
|
|
16
|
+
for (;;) {
|
|
17
|
+
try {
|
|
18
|
+
const pkg = JSON.parse(
|
|
19
|
+
await readFile(join(directory, 'package.json'), 'utf8'),
|
|
20
|
+
);
|
|
21
|
+
if (pkg.name === '@open-agent-toolkit/cli')
|
|
22
|
+
return join(directory, 'assets/public-package-versions.json');
|
|
23
|
+
} catch (error) {
|
|
24
|
+
if (error.code !== 'ENOENT') throw error;
|
|
25
|
+
}
|
|
26
|
+
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
|
+
);
|
|
31
|
+
directory = parent;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
try {
|
|
36
|
+
const { values } = parseArgs({
|
|
37
|
+
options: {
|
|
38
|
+
app: { type: 'string' },
|
|
39
|
+
versions: { type: 'string' },
|
|
40
|
+
cli: { type: 'string' },
|
|
41
|
+
},
|
|
42
|
+
});
|
|
43
|
+
if (!values.app) throw new Error('Required: --app <docs-app-directory>.');
|
|
44
|
+
const versionsPath = resolve(
|
|
45
|
+
values.versions ?? (await versionsForCli(values.cli)),
|
|
46
|
+
);
|
|
47
|
+
const versions = JSON.parse(await readFile(versionsPath, 'utf8'));
|
|
48
|
+
const appPath = resolve(values.app);
|
|
49
|
+
const manifest = JSON.parse(
|
|
50
|
+
await readFile(join(appPath, 'package.json'), 'utf8'),
|
|
51
|
+
);
|
|
52
|
+
const packages = [];
|
|
53
|
+
for (const section of [
|
|
54
|
+
'dependencies',
|
|
55
|
+
'devDependencies',
|
|
56
|
+
'optionalDependencies',
|
|
57
|
+
]) {
|
|
58
|
+
for (const [name, declared] of Object.entries(manifest[section] ?? {})) {
|
|
59
|
+
if (
|
|
60
|
+
![
|
|
61
|
+
'@open-agent-toolkit/docs-config',
|
|
62
|
+
'@open-agent-toolkit/docs-theme',
|
|
63
|
+
'@open-agent-toolkit/docs-transforms',
|
|
64
|
+
].includes(name)
|
|
65
|
+
)
|
|
66
|
+
continue;
|
|
67
|
+
const bundled = versions[name.slice('@open-agent-toolkit/'.length)];
|
|
68
|
+
if (
|
|
69
|
+
typeof bundled !== 'string' ||
|
|
70
|
+
!/^\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?$/.test(bundled)
|
|
71
|
+
)
|
|
72
|
+
throw new Error(`Missing/invalid bundled version for ${name}.`);
|
|
73
|
+
// Report installed package bytes when available, not just a declared range.
|
|
74
|
+
let installed = null;
|
|
75
|
+
try {
|
|
76
|
+
const installedManifest = JSON.parse(
|
|
77
|
+
await readFile(
|
|
78
|
+
join(appPath, 'node_modules', name, 'package.json'),
|
|
79
|
+
'utf8',
|
|
80
|
+
),
|
|
81
|
+
);
|
|
82
|
+
if (typeof installedManifest.version !== 'string')
|
|
83
|
+
throw new Error(`Invalid installed version for ${name}.`);
|
|
84
|
+
installed = installedManifest.version;
|
|
85
|
+
} catch (error) {
|
|
86
|
+
if (error.code !== 'ENOENT') throw error;
|
|
87
|
+
}
|
|
88
|
+
// Only stable numeric releases are orderable here; prereleases and other
|
|
89
|
+
// package-manager version forms need manual verification, never an upgrade.
|
|
90
|
+
const stable = /^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)$/;
|
|
91
|
+
let status = 'unverified';
|
|
92
|
+
if (
|
|
93
|
+
installed !== null &&
|
|
94
|
+
stable.test(installed) &&
|
|
95
|
+
stable.test(bundled)
|
|
96
|
+
) {
|
|
97
|
+
const left = installed.split('.').map(BigInt);
|
|
98
|
+
const right = bundled.split('.').map(BigInt);
|
|
99
|
+
const differing = left.findIndex(
|
|
100
|
+
(part, index) => part !== right[index],
|
|
101
|
+
);
|
|
102
|
+
status =
|
|
103
|
+
differing === -1
|
|
104
|
+
? 'current'
|
|
105
|
+
: left[differing] < right[differing]
|
|
106
|
+
? 'drift'
|
|
107
|
+
: 'ahead';
|
|
108
|
+
}
|
|
109
|
+
packages.push({
|
|
110
|
+
name,
|
|
111
|
+
section,
|
|
112
|
+
declared,
|
|
113
|
+
installed,
|
|
114
|
+
bundled,
|
|
115
|
+
status,
|
|
116
|
+
upgradeCommand:
|
|
117
|
+
status === 'drift' || status === 'current'
|
|
118
|
+
? `pnpm --dir ${shellQuote(appPath)} add${section === 'devDependencies' ? ' --save-dev' : section === 'optionalDependencies' ? ' --save-optional' : ''} ${name}@${bundled}`
|
|
119
|
+
: null,
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
process.stdout.write(
|
|
124
|
+
`${JSON.stringify({ versionsPath, appPath, packages }, null, 2)}\n`,
|
|
125
|
+
);
|
|
126
|
+
} catch (error) {
|
|
127
|
+
process.stderr.write(`${error.message}\n`);
|
|
128
|
+
process.exitCode = 1;
|
|
129
|
+
}
|
|
@@ -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.6'
|
|
9
9
|
---
|
|
10
10
|
|
|
11
11
|
# Docs Apply
|
|
@@ -33,12 +33,12 @@ Before a parent-branch commit, verify `oat internal commit-paths --help` succeed
|
|
|
33
33
|
|
|
34
34
|
- No unapproved documentation changes.
|
|
35
35
|
- No branch creation before the recommendation plan is reviewed.
|
|
36
|
-
- No changes outside the documentation scope except
|
|
36
|
+
- No changes outside the documentation scope except the approved IA record/config mirrors, owner-authorized nav sync, tracking updates, and the individually approved tooling-update carve-out below.
|
|
37
37
|
|
|
38
38
|
**ALLOWED Activities:**
|
|
39
39
|
|
|
40
40
|
- Reading analysis artifacts and the current docs surface.
|
|
41
|
-
- Creating or updating docs files and
|
|
41
|
+
- Creating or updating docs files and hand-authored navigation when approved. Nav-sync-owned navigation changes only through `oat docs nav sync`; undeclared ownership blocks regeneration.
|
|
42
42
|
- Running `oat docs nav sync` after approved structural changes.
|
|
43
43
|
- Creating branches, commits, and optional PRs.
|
|
44
44
|
|
|
@@ -93,7 +93,13 @@ When executing this skill, provide lightweight progress feedback so the user can
|
|
|
93
93
|
|
|
94
94
|
### Step 0: Intake - Find Analysis Artifact
|
|
95
95
|
|
|
96
|
-
|
|
96
|
+
The one input is an **analysis artifact path plus approved recommendation IDs**.
|
|
97
|
+
Accept an explicitly supplied artifact; when none is supplied, offer the newest
|
|
98
|
+
artifact below and confirm that it is the reviewed input. Never silently switch
|
|
99
|
+
to a newer artifact after approval. IDs identify recommendations within that
|
|
100
|
+
artifact, remain stable through artifact review, and are never reassigned.
|
|
101
|
+
|
|
102
|
+
Locate a candidate when no artifact path was supplied:
|
|
97
103
|
|
|
98
104
|
```bash
|
|
99
105
|
ls -t .oat/repo/analysis/docs-*.md 2>/dev/null | head -1
|
|
@@ -103,6 +109,8 @@ If none exists, stop and instruct the user to run `oat-docs-analyze`.
|
|
|
103
109
|
|
|
104
110
|
Validate that each recommendation in the artifact includes:
|
|
105
111
|
|
|
112
|
+
- a unique stable ID (for example `R-001`)
|
|
113
|
+
- `approval: explicit | default`
|
|
106
114
|
- evidence
|
|
107
115
|
- confidence
|
|
108
116
|
- disclosure
|
|
@@ -158,9 +166,19 @@ For review-mode and follow-up decisions, use host-aware prompting:
|
|
|
158
166
|
|
|
159
167
|
If the user chooses `apply all`:
|
|
160
168
|
|
|
161
|
-
- confirm the full plan
|
|
162
|
-
-
|
|
163
|
-
-
|
|
169
|
+
- confirm the full plan and capture global notes
|
|
170
|
+
- approve only non-blocked `approval: default` recommendations, excluding named exceptions
|
|
171
|
+
- Blanket approval never approves an `approval: explicit` recommendation.
|
|
172
|
+
- Ask for individual approval by recommendation ID for each explicit item. A
|
|
173
|
+
restructure block always needs its own approval, including its full map and
|
|
174
|
+
old-URL plan; approving a different block does not approve it.
|
|
175
|
+
|
|
176
|
+
In unattended mode, skip every explicit recommendation even when an input list
|
|
177
|
+
names its ID; report `explicit_requires_interactive_approval` in the structured
|
|
178
|
+
result. Never interpret automation configuration or `apply all` as individual
|
|
179
|
+
approval. Missing/unknown approval classes or duplicate/unknown IDs block intake.
|
|
180
|
+
The approved-ID list is captured at this approval step, not inferred from prose.
|
|
181
|
+
An input list alone does not prove individual approval for an explicit item.
|
|
164
182
|
|
|
165
183
|
If the user chooses `apply interactively`, ask for each recommendation:
|
|
166
184
|
|
|
@@ -174,11 +192,12 @@ If the user chooses `discuss`, answer questions, revise the plan if needed, and
|
|
|
174
192
|
- `apply interactively`
|
|
175
193
|
- `discuss`
|
|
176
194
|
|
|
177
|
-
If all recommendations are skipped, stop without changing files.
|
|
195
|
+
If all recommendations are skipped, emit the structured result with reasons and stop without changing files.
|
|
178
196
|
|
|
179
197
|
Build an `APPLIED_PLAN_DETAILS` block from approved or modified recommendations with:
|
|
180
198
|
|
|
181
199
|
- recommendation id
|
|
200
|
+
- approval class and individual approval evidence when required
|
|
182
201
|
- action
|
|
183
202
|
- target path
|
|
184
203
|
- disclosure
|
|
@@ -216,7 +235,7 @@ locators/provenance into the apply plan; do not silently re-resolve different
|
|
|
216
235
|
sources. Verify cited inputs still exist and remain read-only outside the repo.
|
|
217
236
|
Local AGENTS/contributing rules stay authoritative; a conflict is `ask_user`
|
|
218
237
|
and blocks that recommendation pending a fresh analysis/user decision. Cite
|
|
219
|
-
sources without copying private contents.
|
|
238
|
+
sources without copying private contents.
|
|
220
239
|
|
|
221
240
|
Before the first approved write, initialize `OWNED_OUTPUT_FILES=()`. Append
|
|
222
241
|
each exact successfully created, modified or removed path at that write,
|
|
@@ -235,10 +254,87 @@ For each approved recommendation:
|
|
|
235
254
|
- `omit` -> do not encode the item in the docs change
|
|
236
255
|
- `ask_user` -> require explicit user confirmation before writing
|
|
237
256
|
|
|
257
|
+
#### Record an accepted IA
|
|
258
|
+
|
|
259
|
+
Only an approved `record-ia` recommendation authorizes persistence. Before any
|
|
260
|
+
PJM/decision write run `oat pjm doctor --json` in the target repo and inspect
|
|
261
|
+
`adoption.state`; absent/partial adoption routes to `oat pjm init` before the
|
|
262
|
+
record, never silently writes an unmanaged decision. Read the target's
|
|
263
|
+
`.oat/repo/AGENTS.md`, decision conventions and existing decision index; update
|
|
264
|
+
an existing matching record rather than duplicate it. Create a new record with
|
|
265
|
+
`oat decision new "Documentation information architecture" --status accepted
|
|
266
|
+
--context "<approved evidence>"` and its supported `--decision`/`--consequences` options
|
|
267
|
+
(check `--help`). The command owns index generation; never hand-edit the index.
|
|
268
|
+
|
|
269
|
+
Write a short `## Information architecture` section with tracks, organizing
|
|
270
|
+
principle per track, placement rules and verification overlay. For Fumadocs and
|
|
271
|
+
MkDocs put it in the docs-app `AGENTS.md`, preserving existing guidance. For
|
|
272
|
+
Markdown put it in the contributing page; create no docs-root `AGENTS.md`.
|
|
273
|
+
Link the decision and authored section reciprocally. They remain authoritative;
|
|
274
|
+
a conflict with config becomes `ask_user`, never a config-driven rewrite.
|
|
275
|
+
|
|
276
|
+
Mirror the accepted record using shared repo config only:
|
|
277
|
+
`oat config set documentation.ia '<JSON>'`, with exactly `{preset, decision,
|
|
278
|
+
tracks?: [{path, principle}], verification?: 'triad'|'agent-only'|'none'}`.
|
|
279
|
+
`decision` is repo-relative; preserve guidance and unrelated config. For a
|
|
280
|
+
framework surface, separately record the operator's approved sidebar owner via
|
|
281
|
+
`oat config set documentation.navOwner nav-sync` or `hand-authored`. Missing
|
|
282
|
+
ownership stays undeclared and blocks automatic regeneration. Markdown ignores
|
|
283
|
+
navOwner and never runs nav sync. New-scaffold default ownership and preset
|
|
284
|
+
materialization are not implemented by this persistence step.
|
|
285
|
+
|
|
286
|
+
#### Restructure one approved block
|
|
287
|
+
|
|
288
|
+
`restructure` requires `approval: explicit` and one individual approval per
|
|
289
|
+
block before any move. Use the apply-plan block: source→destination map, source
|
|
290
|
+
and destination parent Contents edits, grep-derived inbound references (including
|
|
291
|
+
relative links, anchors and assets), exact rewrite list, and old-URL recovery.
|
|
292
|
+
Search the whole repo for each old path/basename with `rg`; resolve relative
|
|
293
|
+
references from their original file and check them again from their new location.
|
|
294
|
+
Keep links to moved headings working. Do not treat search hits in examples or
|
|
295
|
+
unrelated same-name files as automatic rewrites.
|
|
296
|
+
|
|
297
|
+
Choose recovery supported by the actual deployment: Next static export does
|
|
298
|
+
not support Next config redirects (see [Next static-export unsupported features](https://nextjs.org/docs/app/guides/static-exports#unsupported-features)).
|
|
299
|
+
Use an authored stub at the old route with a relative pointer, or an approved
|
|
300
|
+
archive pointer; a redirect requires verified framework/host support and stays
|
|
301
|
+
manual when it needs app/host config. Never edit `not-found.tsx` through this
|
|
302
|
+
carve-out. Retired pages retain a stub/archive pointer and a parent Contents
|
|
303
|
+
update, never a silent delete. Preserve stub routes in the approved reader map
|
|
304
|
+
where the framework needs them to build.
|
|
305
|
+
|
|
306
|
+
Apply one block as one exact-path implementation commit; do not combine it with
|
|
307
|
+
another block. Validate all rewritten inbound links and old URLs under the
|
|
308
|
+
actual base path. With `navOwner: nav-sync`, run nav sync then nav sync --check
|
|
309
|
+
with the explicit app target. With `hand-authored`, update approved hand-authored
|
|
310
|
+
navigation and compare membership/order against Contents read-only; never run a
|
|
311
|
+
writing nav sync. With undeclared ownership, report `ask_user` before navigation
|
|
312
|
+
writes. Markdown checks files/Contents/links only. Re-run `oat-docs-analyze`
|
|
313
|
+
after each block, preserving residual findings instead of claiming a clean run.
|
|
314
|
+
|
|
315
|
+
#### Individually approved tooling update
|
|
316
|
+
|
|
317
|
+
A `tooling-update` recommendation has `approval: explicit`. Even with individual
|
|
318
|
+
approval, its out-of-Markdown allowance is only these three operations:
|
|
319
|
+
|
|
320
|
+
1. Bump the docs app's existing `@open-agent-toolkit/docs-*` dependencies to the
|
|
321
|
+
bundled versions using the artifact's exact upgrade command (preserve dependency
|
|
322
|
+
section and package manager; include its resulting lockfile only). Never downgrade
|
|
323
|
+
an installed version: `ahead` or `unverified` requires CLI selection/update or
|
|
324
|
+
manual verification before re-analysis, not a docs-package tooling update.
|
|
325
|
+
2. Run `oat docs migrate --docs-dir <authored-root> --apply` only for its currently
|
|
326
|
+
supported admonition conversions and injected frontmatter; inspect the diff.
|
|
327
|
+
3. Run the docs build verifier from the app's existing scripts.
|
|
328
|
+
|
|
329
|
+
Scaffold changes the CLI cannot make (app config, routes, package scripts) are
|
|
330
|
+
`manual`: report the required change and ID without editing those files. This
|
|
331
|
+
allowance does not permit application dependencies, host settings, arbitrary
|
|
332
|
+
migrations or an app-shell rebuild. Other out-of-scope prohibitions remain.
|
|
333
|
+
|
|
238
334
|
When approved actions involve docs app creation or nav updates:
|
|
239
335
|
|
|
240
336
|
- Use `oat docs init` for scaffolding when appropriate.
|
|
241
|
-
- Use `oat docs nav sync` instead of manually editing nav when
|
|
337
|
+
- Use `oat docs nav sync` instead of manually editing nav only when recorded `navOwner: nav-sync` authorizes it. In Fumadocs apps it writes strict `meta.json` files and reports pages no `## Contents` map lists (`unlisted` in `--json`); resolve a reported page through an approved `## Contents` change, never by hand-editing `meta.json`.
|
|
242
338
|
|
|
243
339
|
Negative rules:
|
|
244
340
|
|
|
@@ -261,7 +357,7 @@ full configured content tree; keep the authored config index unchanged.
|
|
|
261
357
|
For framework apps, discover actual scripts and run the smallest relevant
|
|
262
358
|
verification set based on what changed; these examples apply only when present:
|
|
263
359
|
|
|
264
|
-
- `oat docs nav sync`
|
|
360
|
+
- `oat docs nav sync --target-dir <docs-app>` then `--check` only for `nav-sync` ownership; hand-authored/undeclared navigation gets read-only Contents membership/order comparison
|
|
265
361
|
- `pnpm --dir <docs-app> docs:lint` (no-op when no linter is configured)
|
|
266
362
|
- `pnpm --dir <docs-app> docs:format:check`
|
|
267
363
|
- `pnpm --dir <docs-app> docs:build`
|
|
@@ -270,7 +366,7 @@ If no docs app exists yet, use file-level verification and confirm the structura
|
|
|
270
366
|
|
|
271
367
|
### Step 6: Commit and PR
|
|
272
368
|
|
|
273
|
-
Commit the approved changes:
|
|
369
|
+
Commit the approved changes (for restructure, repeat with one retained identity and exact path list per approved block; exclude already committed blocks from any final aggregate commit and skip an empty aggregate):
|
|
274
370
|
|
|
275
371
|
```bash
|
|
276
372
|
OWNED_COMMIT_PATHS=("${OWNED_OUTPUT_FILES[@]}")
|
|
@@ -344,6 +440,29 @@ PR creation failed. To create manually:
|
|
|
344
440
|
|
|
345
441
|
### Step 7: Update Tracking and Output Summary
|
|
346
442
|
|
|
443
|
+
Always emit this structured result, including no-op/unattended runs. Each input
|
|
444
|
+
recommendation ID appears in exactly one outcome; failed verification is a
|
|
445
|
+
failure, never an applied success. Unsupported scaffold work is skipped with
|
|
446
|
+
reason `manual` and its required change. Include individual approval evidence
|
|
447
|
+
in the plan, not invented in this result.
|
|
448
|
+
|
|
449
|
+
```json
|
|
450
|
+
{
|
|
451
|
+
"analysisArtifact": ".oat/repo/analysis/docs-example.md",
|
|
452
|
+
"approvedRecommendationIds": ["R-001"],
|
|
453
|
+
"applied": ["R-001"],
|
|
454
|
+
"skipped": [
|
|
455
|
+
{ "id": "R-002", "reason": "explicit_requires_interactive_approval" }
|
|
456
|
+
],
|
|
457
|
+
"failed": []
|
|
458
|
+
}
|
|
459
|
+
```
|
|
460
|
+
|
|
461
|
+
Failed entries use `{ "id": "R-003", "reason": "<verification/error>" }`.
|
|
462
|
+
Report partial writes and stop on a failure; never continue by widening scope.
|
|
463
|
+
|
|
464
|
+
### Tracking and summary
|
|
465
|
+
|
|
347
466
|
Update shared tracking:
|
|
348
467
|
|
|
349
468
|
```bash
|
|
@@ -25,7 +25,7 @@ Keep the analysis selection; do not copy private contents or invent missing evid
|
|
|
25
25
|
|
|
26
26
|
Review the full recommendation set first, then choose a review mode:
|
|
27
27
|
|
|
28
|
-
- **apply all** — approve
|
|
28
|
+
- **apply all** — approve non-blocked default items; explicit items require individual approval by ID
|
|
29
29
|
- **apply interactively** — review recommendation by recommendation
|
|
30
30
|
- **discuss** — pause to talk through the plan before approving
|
|
31
31
|
|
|
@@ -41,19 +41,21 @@ blocked pending a fresh analysis rather than guessed.
|
|
|
41
41
|
|
|
42
42
|
## Recommendations
|
|
43
43
|
|
|
44
|
-
### {
|
|
45
|
-
|
|
46
|
-
| Field | Value
|
|
47
|
-
| ------------ |
|
|
48
|
-
|
|
|
49
|
-
|
|
|
50
|
-
|
|
|
51
|
-
|
|
|
52
|
-
|
|
|
53
|
-
|
|
|
54
|
-
|
|
|
55
|
-
|
|
|
56
|
-
|
|
|
44
|
+
### {R-NNN}. {Action}: `{target-path}`
|
|
45
|
+
|
|
46
|
+
| Field | Value |
|
|
47
|
+
| ------------ | -------------------------------------------------------------------------------------------------- |
|
|
48
|
+
| ID | {R-NNN; stable within the source artifact} |
|
|
49
|
+
| approval | {explicit / default; never inferred from blanket consent} |
|
|
50
|
+
| Action | {create / update / move / scaffold / sync-nav / record-ia / restructure / tooling-update / manual} |
|
|
51
|
+
| Target | `{target-path}` |
|
|
52
|
+
| Rationale | {why this recommendation exists} |
|
|
53
|
+
| Source | {finding # / contract gap / nav issue} |
|
|
54
|
+
| Evidence | {exact file refs / config / docs that justify the recommendation} |
|
|
55
|
+
| Confidence | {high / medium / low} |
|
|
56
|
+
| Disclosure | {inline / link_only / omit / ask_user} |
|
|
57
|
+
| Link Targets | {path or URL when link_only; otherwise N/A} |
|
|
58
|
+
| Helper | `oat docs nav sync` / `oat docs init` / `manual edit` |
|
|
57
59
|
|
|
58
60
|
**Context:** {1-2 sentences}
|
|
59
61
|
|
|
@@ -64,6 +66,29 @@ blocked pending a fresh analysis rather than guessed.
|
|
|
64
66
|
|
|
65
67
|
{Repeat for each recommendation}
|
|
66
68
|
|
|
69
|
+
## Restructure block (one individually approved ID, one exact-path commit)
|
|
70
|
+
|
|
71
|
+
- ID / individual approval evidence: {R-NNN / operator choice, or pending}
|
|
72
|
+
- Source → destination map: {every moved/retired page}
|
|
73
|
+
- Parent Contents edits: {source and destination indexes}
|
|
74
|
+
- Grep-derived inbound rewrites: {command + referring file:line + old/new link,
|
|
75
|
+
including anchors/assets and rewritten links inside moved pages}
|
|
76
|
+
- Old-URL strategy: {verified host redirect, authored stub, or archive pointer;
|
|
77
|
+
static export: no assumed Next redirects}
|
|
78
|
+
- Retired-page recovery: {retained stub/archive pointer + parent Contents entry}
|
|
79
|
+
- Sidebar owner: {nav-sync / hand-authored / undeclared; Markdown: ignored}
|
|
80
|
+
- Verification: {nav-sync write then --check, or read-only membership/order
|
|
81
|
+
comparison; file/link checks; actual base-path old URL; analyze rerun}
|
|
82
|
+
- Exact owned files and commit identity: {list including both rename sides}
|
|
83
|
+
|
|
84
|
+
## IA recording / tooling limits
|
|
85
|
+
|
|
86
|
+
- Record IA: {adoption.state from target pjm doctor; decision command/path;
|
|
87
|
+
framework AGENTS or Markdown contributing section; shared mirror JSON}
|
|
88
|
+
- Tooling update: {individually approved ID; exact docs-app docs-\* upgrade
|
|
89
|
+
command; supported migrate conversions; existing build verifier}
|
|
90
|
+
- Unsupported app config/routes/scripts: {manual required changes; no edits}
|
|
91
|
+
|
|
67
92
|
## Summary of Actions
|
|
68
93
|
|
|
69
94
|
| # | Action | Target | Disclosure | Decision |
|
|
@@ -73,6 +98,25 @@ blocked pending a fresh analysis rather than guessed.
|
|
|
73
98
|
|
|
74
99
|
**Total:** {N} approved, {N} modified, {N} skipped
|
|
75
100
|
|
|
101
|
+
## Structured result
|
|
102
|
+
|
|
103
|
+
```json
|
|
104
|
+
{
|
|
105
|
+
"analysisArtifact": "{path}",
|
|
106
|
+
"approvedRecommendationIds": ["R-001"],
|
|
107
|
+
"applied": ["R-001"],
|
|
108
|
+
"skipped": [
|
|
109
|
+
{ "id": "R-002", "reason": "explicit_requires_interactive_approval" }
|
|
110
|
+
],
|
|
111
|
+
"failed": []
|
|
112
|
+
}
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
Every input ID has exactly one outcome. Unattended explicit items are skipped
|
|
116
|
+
regardless of the supplied ID list. Missing/unknown class or ID blocks intake.
|
|
117
|
+
Use reason `manual` with the required change for unsupported scaffold work;
|
|
118
|
+
failed entries carry an ID and error/verification reason.
|
|
119
|
+
|
|
76
120
|
## Proceed?
|
|
77
121
|
|
|
78
122
|
Confirm to begin applying the approved documentation changes.
|
|
@@ -6,7 +6,7 @@ disable-model-invocation: true
|
|
|
6
6
|
user-invocable: true
|
|
7
7
|
allowed-tools: Read, Write, Edit, Bash, Glob, Grep, AskUserQuestion
|
|
8
8
|
metadata:
|
|
9
|
-
version: '1.4.
|
|
9
|
+
version: '1.4.1'
|
|
10
10
|
---
|
|
11
11
|
|
|
12
12
|
# Docs Bootstrap
|
|
@@ -321,7 +321,7 @@ Resolution options:
|
|
|
321
321
|
```
|
|
322
322
|
|
|
323
323
|
- **`repair`** — Fix the existing setup in place rather than replacing it. Delegate to the docs-analysis pack.
|
|
324
|
-
- **Allowed mutations (by this sub-procedure):** None directly. The bootstrap skill does not modify existing docs app files. It hands off to `oat-docs-analyze` (read-only audit)
|
|
324
|
+
- **Allowed mutations (by this sub-procedure):** None directly. The bootstrap skill does not modify existing docs app files. It hands off to `oat-docs-analyze` (read-only audit), then passes the analysis artifact plus approved recommendation IDs to `oat-docs-apply`; explicit items require individual approval.
|
|
325
325
|
- **Preserved state:** Existing docs app directory, the `documentation` config section, the root `AGENTS.md` `## Documentation` section — all preserved unless analyze surfaces a recommendation and the user approves it via apply.
|
|
326
326
|
- **Stop conditions:**
|
|
327
327
|
- Invoke `oat-docs-analyze` and surface its report to the user. If analyze cannot produce meaningful recommendations (e.g., `documentation.index` points at a missing file, or the app directory is empty), **stop the flow before Scaffold Runner**, report what analyze found, and ask the user whether to escalate to `replace`.
|
|
@@ -390,9 +390,19 @@ through `oat-docs-analyze --ia`; it does not return to scaffold afterward.
|
|
|
390
390
|
`ask_user` with local/external source citations. Non-repo guidance stays read-only
|
|
391
391
|
and private exemplars are never copied. Cite ordered sources in the proposal
|
|
392
392
|
and final summary, including the built-in path when it wins.
|
|
393
|
-
6.
|
|
394
|
-
|
|
395
|
-
|
|
393
|
+
6. Obtain explicit approval of the selected IA before persistence. After setup,
|
|
394
|
+
use apply's `record-ia` procedure: target-repo `oat pjm doctor --json` and
|
|
395
|
+
adoption check before `oat decision new`, an Information architecture section
|
|
396
|
+
in the framework docs-app AGENTS.md or Markdown contributing page, and shared
|
|
397
|
+
`documentation.ia` mirror. Preserve existing guidance; the authored record is
|
|
398
|
+
authoritative. If approval/adoption is pending, retain the proposal and report
|
|
399
|
+
it unrecorded. Do not silently initialize PJM. For an existing surface, hand
|
|
400
|
+
off an analysis artifact plus approved recommendation IDs to apply, with
|
|
401
|
+
individual approval for explicit record/restructure/tooling items.
|
|
402
|
+
This stage does not materialize preset trees or change scaffold/nav defaults.
|
|
403
|
+
Sidebar ownership is separately chosen for existing framework apps; absent
|
|
404
|
+
remains undeclared, Markdown ignores it, and no automatic nav generation is
|
|
405
|
+
authorized by IA approval alone.
|
|
396
406
|
|
|
397
407
|
### Step 3: Scaffold Runner
|
|
398
408
|
|
|
@@ -836,7 +846,13 @@ Delegate — do not re-implement analyze/apply logic here.
|
|
|
836
846
|
|
|
837
847
|
1. Invoke the `oat-docs-analyze` skill against the scaffolded app. Pass the Inspection Result's `documentation.root` path so analyze targets the right surface. Wait for analyze to complete.
|
|
838
848
|
2. Surface analyze's report to the user in its native form — do not re-summarize. The user reads it, decides which recommendations to approve.
|
|
839
|
-
3.
|
|
849
|
+
3. Capture the analysis artifact path and approved recommendation IDs, then
|
|
850
|
+
invoke `oat-docs-apply` with exactly that input. Preserve every approval class:
|
|
851
|
+
blanket approval covers only default items; explicit items need individual
|
|
852
|
+
approval by ID, and unattended runs skip/report them. Wait for apply's
|
|
853
|
+
structured applied/skipped-with-reason/failed IDs; report partial/manual work.
|
|
854
|
+
Never pass an unexplained "approved subset" or treat kickoff consent as
|
|
855
|
+
approval of every recommendation.
|
|
840
856
|
4. Report the outcome back briefly: branch name, PR URL if opened, files changed count.
|
|
841
857
|
|
|
842
858
|
If analyze produces no recommendations (the scaffold is complete and nothing's missing — unlikely on a fresh scaffold but possible), tell the user and skip apply.
|
|
@@ -867,6 +883,8 @@ Location: {appRoot}
|
|
|
867
883
|
Framework: {framework}
|
|
868
884
|
IA guidance: {ordered selected locators + explicit/conversation/shared/user/builtin provenance}
|
|
869
885
|
IA proposal: {candidate recommendation, nearest preset, conflicts or none}
|
|
886
|
+
IA record: {decision + authored section + shared mirror, or pending reason}
|
|
887
|
+
Apply handoff: {artifact path, approved IDs, applied/skipped/failed result or not run}
|
|
870
888
|
Config: {configPath} (documentation section)
|
|
871
889
|
|
|
872
890
|
Created:
|
|
@@ -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;AAoBzC,OAAO,EAUL,KAAK,SAAS,EACd,KAAK,aAAa,EAClB,KAAK,cAAc,EAQnB,KAAK,UAAU,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/config/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,7 +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 { parseJsonConfig } from '../../config/json.js';
|
|
15
|
-
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, readOatConfig, readOatConfigForDefaultScopeRepair, readOatConfigForDocumentationExcludesRepair, readOatConfigForInstructionPointerExcludesRepair, readOatConfigForInstructionSyncStrategyRepair, readOatConfigWithWarnings, readOatLocalConfig, readUserConfig, writeOatConfig, writeOatLocalConfig, writeUserConfig, VALID_POST_IMPLEMENT_LEGACY_SEQUENCES, } from '../../config/oat-config.js';
|
|
15
|
+
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
16
|
import { getOwnKey, setOwnKey } from '../../config/own-keys.js';
|
|
17
17
|
import { resolveEffectiveConfig, resolveEnvOverride, } from '../../config/resolve.js';
|
|
18
18
|
import { resolveAssetsRoot } from '../../fs/assets.js';
|
|
@@ -67,6 +67,8 @@ const KEY_ORDER = [
|
|
|
67
67
|
'archive.awsRegion',
|
|
68
68
|
'autoReviewAtCheckpoints',
|
|
69
69
|
'lastPausedProject',
|
|
70
|
+
'documentation.ia',
|
|
71
|
+
'documentation.navOwner',
|
|
70
72
|
'documentation.guidance',
|
|
71
73
|
'documentation.root',
|
|
72
74
|
'documentation.tooling',
|
|
@@ -239,6 +241,28 @@ const CONFIG_CATALOG = [
|
|
|
239
241
|
description: 'Deprecated compatibility alias for workflow.autoReviewAtHillCheckpoints. Prefer `oat config set workflow.autoReviewAtHillCheckpoints <true|false>`.',
|
|
240
242
|
deprecated: { supersededBy: 'workflow.autoReviewAtHillCheckpoints' },
|
|
241
243
|
},
|
|
244
|
+
{
|
|
245
|
+
key: 'documentation.ia',
|
|
246
|
+
group: 'Shared Repo (.oat/config.json)',
|
|
247
|
+
scope: 'shared repo',
|
|
248
|
+
file: '.oat/config.json',
|
|
249
|
+
type: 'JSON object',
|
|
250
|
+
defaultValue: 'null (no recorded IA)',
|
|
251
|
+
mutability: 'read/write',
|
|
252
|
+
owningCommand: 'oat config set documentation.ia <JSON>',
|
|
253
|
+
description: 'Repository mirror of authored IA: preset, repo-relative decision, optional tracks [{path, principle}] and verification (triad|agent-only|none). Authored records remain authoritative.',
|
|
254
|
+
},
|
|
255
|
+
{
|
|
256
|
+
key: 'documentation.navOwner',
|
|
257
|
+
group: 'Shared Repo (.oat/config.json)',
|
|
258
|
+
scope: 'shared repo',
|
|
259
|
+
file: '.oat/config.json',
|
|
260
|
+
type: 'nav-sync | hand-authored',
|
|
261
|
+
defaultValue: 'null (undeclared)',
|
|
262
|
+
mutability: 'read/write',
|
|
263
|
+
owningCommand: 'oat config set documentation.navOwner <value>',
|
|
264
|
+
description: 'Sidebar owner for framework docs only. Unset is undeclared and authorizes no automatic navigation generation. Markdown ignores this key.',
|
|
265
|
+
},
|
|
242
266
|
{
|
|
243
267
|
key: 'documentation.guidance',
|
|
244
268
|
group: 'Documentation Guidance (shared > user)',
|
|
@@ -1784,17 +1808,31 @@ async function listConfigKeys(repoRoot, userConfigDir, dependencies) {
|
|
|
1784
1808
|
async function setConfigValue(repoRoot, userConfigDir, key, rawValue, surface, dependencies, warn) {
|
|
1785
1809
|
validateSurfaceForKey(key, surface);
|
|
1786
1810
|
const effectiveSurface = surface === 'auto' ? defaultSurfaceForKey(key) : surface;
|
|
1787
|
-
if (key === 'documentation.guidance'
|
|
1811
|
+
if (key === 'documentation.guidance' ||
|
|
1812
|
+
key === 'documentation.ia' ||
|
|
1813
|
+
key === 'documentation.navOwner') {
|
|
1788
1814
|
const configPath = effectiveSurface === 'user'
|
|
1789
1815
|
? join(userConfigDir, 'config.json')
|
|
1790
1816
|
: join(repoRoot, '.oat', 'config.json');
|
|
1817
|
+
const field = key.slice('documentation.'.length);
|
|
1791
1818
|
const trimmed = rawValue.trim();
|
|
1792
|
-
let
|
|
1819
|
+
let value;
|
|
1793
1820
|
try {
|
|
1794
|
-
|
|
1821
|
+
if (key === 'documentation.ia') {
|
|
1822
|
+
const parsed = JSON.parse(trimmed);
|
|
1823
|
+
if (parsed === null)
|
|
1824
|
+
throw new Error('Expected an IA JSON object.');
|
|
1825
|
+
value = normalizeDocumentationIa(parsed, configPath);
|
|
1826
|
+
}
|
|
1827
|
+
else {
|
|
1828
|
+
value =
|
|
1829
|
+
key === 'documentation.navOwner'
|
|
1830
|
+
? normalizeDocumentationNavOwner(trimmed, configPath)
|
|
1831
|
+
: normalizeDocumentationGuidance(trimmed.startsWith('[') ? JSON.parse(trimmed) : trimmed, configPath, effectiveSurface === 'user' ? 'user' : 'shared');
|
|
1832
|
+
}
|
|
1795
1833
|
}
|
|
1796
1834
|
catch {
|
|
1797
|
-
throw new Error(
|
|
1835
|
+
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'}.`);
|
|
1798
1836
|
}
|
|
1799
1837
|
let raw = { version: 1 };
|
|
1800
1838
|
try {
|
|
@@ -1818,18 +1856,18 @@ async function setConfigValue(repoRoot, userConfigDir, key, rawValue, surface, d
|
|
|
1818
1856
|
throw new Error(`Expected a documentation object in ${configPath}`);
|
|
1819
1857
|
}
|
|
1820
1858
|
// Patch only the declared input; do not normalize away unrelated or future fields.
|
|
1821
|
-
if (!isDeepStrictEqual(documentation?.
|
|
1859
|
+
if (!isDeepStrictEqual(documentation?.[field], value)) {
|
|
1822
1860
|
await dependencies.atomicWriteJson(configPath, {
|
|
1823
1861
|
...raw,
|
|
1824
1862
|
documentation: {
|
|
1825
1863
|
...documentation,
|
|
1826
|
-
|
|
1864
|
+
[field]: value,
|
|
1827
1865
|
},
|
|
1828
1866
|
});
|
|
1829
1867
|
}
|
|
1830
1868
|
return {
|
|
1831
1869
|
key,
|
|
1832
|
-
value:
|
|
1870
|
+
value: value ?? null,
|
|
1833
1871
|
source: effectiveSurface,
|
|
1834
1872
|
};
|
|
1835
1873
|
}
|
|
@@ -2393,7 +2431,9 @@ async function unsetConfigValue(repoRoot, userConfigDir, key, surface, dependenc
|
|
|
2393
2431
|
* runs only when the normalized pass found nothing to remove.
|
|
2394
2432
|
*/
|
|
2395
2433
|
async function removeFromSurface(repoRoot, userConfigDir, key, effectiveSurface, path, dependencies) {
|
|
2396
|
-
if (key === 'documentation.guidance'
|
|
2434
|
+
if (key === 'documentation.guidance' ||
|
|
2435
|
+
key === 'documentation.ia' ||
|
|
2436
|
+
key === 'documentation.navOwner') {
|
|
2397
2437
|
const configPath = effectiveSurface === 'user'
|
|
2398
2438
|
? join(userConfigDir, 'config.json')
|
|
2399
2439
|
: join(repoRoot, '.oat', 'config.json');
|
|
@@ -23,7 +23,20 @@ export type InstructionSyncStrategy = (typeof INSTRUCTION_SYNC_STRATEGIES)[numbe
|
|
|
23
23
|
*/
|
|
24
24
|
export declare const DEFAULT_INSTRUCTION_SYNC_STRATEGY: InstructionSyncStrategy;
|
|
25
25
|
export declare function isInstructionSyncStrategy(value: unknown): value is InstructionSyncStrategy;
|
|
26
|
+
export interface OatDocumentationIa {
|
|
27
|
+
preset: string;
|
|
28
|
+
decision: string;
|
|
29
|
+
tracks?: Array<{
|
|
30
|
+
path: string;
|
|
31
|
+
principle: string;
|
|
32
|
+
}>;
|
|
33
|
+
verification?: 'triad' | 'agent-only' | 'none';
|
|
34
|
+
}
|
|
26
35
|
export interface OatDocumentationConfig {
|
|
36
|
+
/** Repository-only mirror; the authored decision and local guidance own IA. */
|
|
37
|
+
ia?: OatDocumentationIa;
|
|
38
|
+
/** Absent is undeclared. Markdown ignores sidebar ownership. */
|
|
39
|
+
navOwner?: 'nav-sync' | 'hand-authored';
|
|
27
40
|
/** Ordered advisory IA source paths/URLs; selected as a layer, never merged. */
|
|
28
41
|
guidance?: string | string[];
|
|
29
42
|
root?: string;
|
|
@@ -370,6 +383,9 @@ export declare function setActiveProject(repoRoot: string, projectRelativePath:
|
|
|
370
383
|
export declare function clearActiveProject(repoRoot: string, options?: {
|
|
371
384
|
lastPaused?: string;
|
|
372
385
|
}): Promise<void>;
|
|
386
|
+
/** Shared by stored-config reads and the real config command. */
|
|
387
|
+
export declare function normalizeDocumentationIa(value: unknown, configPath: string): OatDocumentationIa | undefined;
|
|
388
|
+
export declare function normalizeDocumentationNavOwner(value: unknown, configPath: string): OatDocumentationConfig['navOwner'];
|
|
373
389
|
/** Validate guidance without reading, fetching or rewriting the referenced inputs. */
|
|
374
390
|
export declare function normalizeDocumentationGuidance(value: unknown, configPath: string, scope?: 'shared' | 'user'): string | string[] | undefined;
|
|
375
391
|
export declare function readUserConfig(userConfigDir: string): Promise<UserConfig>;
|
|
@@ -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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"}
|
|
@@ -1062,6 +1062,12 @@ function normalizeOatConfig(parsed, configPath = '.oat/config.json', onWarning)
|
|
|
1062
1062
|
}
|
|
1063
1063
|
if (isRecord(parsed.documentation)) {
|
|
1064
1064
|
const doc = {};
|
|
1065
|
+
const ia = normalizeDocumentationIa(parsed.documentation.ia, configPath);
|
|
1066
|
+
if (ia !== undefined)
|
|
1067
|
+
doc.ia = ia;
|
|
1068
|
+
const navOwner = normalizeDocumentationNavOwner(parsed.documentation.navOwner, configPath);
|
|
1069
|
+
if (navOwner !== undefined)
|
|
1070
|
+
doc.navOwner = navOwner;
|
|
1065
1071
|
const guidance = normalizeDocumentationGuidance(parsed.documentation.guidance, configPath);
|
|
1066
1072
|
if (guidance !== undefined)
|
|
1067
1073
|
doc.guidance = guidance;
|
|
@@ -1540,6 +1546,58 @@ const USER_CONFIG_OWNED_KEYS = new Set([
|
|
|
1540
1546
|
'pjm',
|
|
1541
1547
|
'knownStrays',
|
|
1542
1548
|
]);
|
|
1549
|
+
/** Shared by stored-config reads and the real config command. */
|
|
1550
|
+
export function normalizeDocumentationIa(value, configPath) {
|
|
1551
|
+
if (value === undefined || value === null)
|
|
1552
|
+
return undefined;
|
|
1553
|
+
const nonempty = (entry) => typeof entry === 'string' && entry.trim().length > 0;
|
|
1554
|
+
const repoRelative = (entry) => {
|
|
1555
|
+
if (typeof entry !== 'string')
|
|
1556
|
+
return false;
|
|
1557
|
+
const path = entry.trim();
|
|
1558
|
+
return (nonempty(path) &&
|
|
1559
|
+
!/^(?:[\\/]|[a-zA-Z]:|[a-zA-Z][a-zA-Z+.-]*:)/.test(path) &&
|
|
1560
|
+
!path.split(String.fromCharCode(92)).join('/').split('/').includes('..'));
|
|
1561
|
+
};
|
|
1562
|
+
if (!isRecord(value) ||
|
|
1563
|
+
Object.keys(value).some((key) => !['preset', 'decision', 'tracks', 'verification'].includes(key)) ||
|
|
1564
|
+
!nonempty(value.preset) ||
|
|
1565
|
+
!repoRelative(value.decision) ||
|
|
1566
|
+
(value.verification !== undefined &&
|
|
1567
|
+
!['triad', 'agent-only', 'none'].includes(value.verification)) ||
|
|
1568
|
+
(value.tracks !== undefined &&
|
|
1569
|
+
(!Array.isArray(value.tracks) ||
|
|
1570
|
+
!value.tracks.every((track) => isRecord(track) &&
|
|
1571
|
+
Object.keys(track).every((key) => ['path', 'principle'].includes(key)) &&
|
|
1572
|
+
repoRelative(track.path) &&
|
|
1573
|
+
nonempty(track.principle))))) {
|
|
1574
|
+
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.`);
|
|
1575
|
+
}
|
|
1576
|
+
return {
|
|
1577
|
+
preset: value.preset.trim(),
|
|
1578
|
+
decision: value.decision.trim(),
|
|
1579
|
+
...(value.tracks !== undefined
|
|
1580
|
+
? {
|
|
1581
|
+
tracks: value.tracks.map((track) => ({
|
|
1582
|
+
path: track.path.trim(),
|
|
1583
|
+
principle: track.principle.trim(),
|
|
1584
|
+
})),
|
|
1585
|
+
}
|
|
1586
|
+
: {}),
|
|
1587
|
+
...(value.verification !== undefined
|
|
1588
|
+
? {
|
|
1589
|
+
verification: value.verification,
|
|
1590
|
+
}
|
|
1591
|
+
: {}),
|
|
1592
|
+
};
|
|
1593
|
+
}
|
|
1594
|
+
export function normalizeDocumentationNavOwner(value, configPath) {
|
|
1595
|
+
if (value === undefined || value === null)
|
|
1596
|
+
return undefined;
|
|
1597
|
+
if (value !== 'nav-sync' && value !== 'hand-authored')
|
|
1598
|
+
throw new Error(`Invalid documentation.navOwner in ${configPath}: expected nav-sync or hand-authored. Repair with oat config set documentation.navOwner <value> or oat config unset documentation.navOwner --shared.`);
|
|
1599
|
+
return value;
|
|
1600
|
+
}
|
|
1543
1601
|
/** Validate guidance without reading, fetching or rewriting the referenced inputs. */
|
|
1544
1602
|
export function normalizeDocumentationGuidance(value, configPath, scope = 'shared') {
|
|
1545
1603
|
if (value === undefined || value === null)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolve.d.ts","sourceRoot":"","sources":["../../src/config/resolve.ts"],"names":[],"mappings":"AACA,OAAO,EASL,KAAK,UAAU,EACf,KAAK,UAAU,EACf,KAAK,SAAS,EACd,KAAK,cAAc,EACnB,KAAK,UAAU,EAChB,MAAM,cAAc,CAAC;AAGtB,MAAM,MAAM,oBAAoB,GAC5B,QAAQ,GACR,OAAO,GACP,MAAM,GACN,KAAK,GACL,SAAS,CAAC;AAEd,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,oBAAoB,CAAC;CAC9B;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,SAAS,CAAC;IAClB,KAAK,EAAE,cAAc,CAAC;IACtB,IAAI,EAAE,UAAU,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;CAC5C;AAED,MAAM,WAAW,kCAAkC;IACjD,aAAa,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,SAAS,CAAC,CAAC;IACxD,kBAAkB,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,cAAc,CAAC,CAAC;IAClE,cAAc,EAAE,CAAC,aAAa,EAAE,MAAM,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC;CAChE;
|
|
1
|
+
{"version":3,"file":"resolve.d.ts","sourceRoot":"","sources":["../../src/config/resolve.ts"],"names":[],"mappings":"AACA,OAAO,EASL,KAAK,UAAU,EACf,KAAK,UAAU,EACf,KAAK,SAAS,EACd,KAAK,cAAc,EACnB,KAAK,UAAU,EAChB,MAAM,cAAc,CAAC;AAGtB,MAAM,MAAM,oBAAoB,GAC5B,QAAQ,GACR,OAAO,GACP,MAAM,GACN,KAAK,GACL,SAAS,CAAC;AAEd,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,oBAAoB,CAAC;CAC9B;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,SAAS,CAAC;IAClB,KAAK,EAAE,cAAc,CAAC;IACtB,IAAI,EAAE,UAAU,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;CAC5C;AAED,MAAM,WAAW,kCAAkC;IACjD,aAAa,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,SAAS,CAAC,CAAC;IACxD,kBAAkB,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,cAAc,CAAC,CAAC;IAClE,cAAc,EAAE,CAAC,aAAa,EAAE,MAAM,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC;CAChE;AAkID,wBAAsB,sBAAsB,CAC1C,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,MAAM,EACrB,GAAG,GAAE,MAAM,CAAC,UAAwB,EACpC,SAAS,GAAE,OAAO,CAAC,kCAAkC,CAAM,GAC1D,OAAO,CAAC,cAAc,CAAC,CAgFzB;AAED,wDAAwD;AACxD,MAAM,MAAM,gBAAgB,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAC;AAE3D,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,UAAU,GAAG,IAAI,CAAC;IACxB;;;;OAIG;IACH,MAAM,EAAE,gBAAgB,GAAG,IAAI,CAAC;CACjC;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,cAAc,EACzB,SAAS,EAAE,MAAM,GAChB,sBAAsB,CAkBxB;AAED,wBAAgB,WAAW,CACzB,SAAS,EAAE,cAAc,EACzB,SAAS,EAAE,MAAM,GAChB,UAAU,GAAG,IAAI,CAEnB;AAED,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,cAAc,GACxB,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAY5B;AAED,MAAM,MAAM,gBAAgB,GAAG,SAAS,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;AAEvE,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,UAAU,CAAC;IACnB,MAAM,EAAE,gBAAgB,CAAC;IACzB,oBAAoB,EAAE,OAAO,CAAC;IAC9B,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,wBAAgB,sBAAsB,CACpC,SAAS,EAAE,cAAc,GACxB,MAAM,CAAC,MAAM,EAAE,sBAAsB,CAAC,CA0DxC;AAkMD;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,CAAC,UAAU,GACrB,MAAM,GAAG,SAAS,CAQpB"}
|
package/dist/config/resolve.js
CHANGED
|
@@ -28,6 +28,8 @@ const DEFAULT_SHARED_CONFIG = {
|
|
|
28
28
|
},
|
|
29
29
|
documentation: {
|
|
30
30
|
guidance: null,
|
|
31
|
+
ia: null,
|
|
32
|
+
navOwner: null,
|
|
31
33
|
root: null,
|
|
32
34
|
tooling: null,
|
|
33
35
|
config: null,
|
|
@@ -406,7 +408,8 @@ function flattenConfig(value, prefix = '') {
|
|
|
406
408
|
return flattened;
|
|
407
409
|
}
|
|
408
410
|
function isAtomicConfigLeaf(key, value) {
|
|
409
|
-
return (
|
|
411
|
+
return (key === 'documentation.ia' ||
|
|
412
|
+
isWorkflowDispatchCandidateLadder(value) ||
|
|
410
413
|
(key === 'workflow.postImplementSequence' &&
|
|
411
414
|
isWorkflowPostImplementStructuredSequence(value)));
|
|
412
415
|
}
|
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.25",
|
|
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",
|
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
"ora": "^9.0.0",
|
|
36
36
|
"yaml": "2.8.2",
|
|
37
37
|
"zod": "^3.25.76",
|
|
38
|
-
"@open-agent-toolkit/control-plane": "0.3.
|
|
38
|
+
"@open-agent-toolkit/control-plane": "0.3.25"
|
|
39
39
|
},
|
|
40
40
|
"devDependencies": {
|
|
41
41
|
"@types/node": "^22.10.0",
|