@open-agent-toolkit/cli 0.3.11 → 0.3.13
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/cli-utilities/configuration.md +1 -1
- package/assets/docs/cli-utilities/tool-packs.md +4 -1
- package/assets/docs/docs-tooling/add-docs-to-a-repo.md +80 -15
- package/assets/docs/docs-tooling/commands.md +74 -30
- package/assets/docs/docs-tooling/index.md +6 -6
- package/assets/docs/docs-tooling/workflows.md +26 -9
- package/assets/docs/provider-sync/commands.md +1 -1
- package/assets/docs/provider-sync/instruction-sync.md +11 -4
- package/assets/docs/reference/cli-reference.md +2 -2
- package/assets/docs/reference/docs-index-contract.md +20 -4
- package/assets/docs/reference/file-locations.md +3 -1
- package/assets/docs/reference/oat-directory-structure.md +23 -21
- package/assets/docs/workflows/skills/recon.md +4 -1
- package/assets/public-package-versions.json +4 -4
- package/assets/skills/oat-docs-analyze/SKILL.md +27 -7
- package/assets/skills/oat-docs-analyze/references/quality-checklist.md +16 -3
- package/assets/skills/oat-docs-apply/SKILL.md +20 -3
- package/assets/skills/oat-docs-authoring/SKILL.md +11 -7
- package/assets/skills/oat-docs-authoring/references/docs-root-resolution.md +12 -5
- package/assets/skills/oat-docs-authoring/references/lifecycle-boundaries.md +7 -7
- package/assets/skills/oat-docs-authoring/references/oat-fumadocs-contract.md +13 -3
- package/assets/skills/oat-docs-authoring/references/targeted-authoring-workflow.md +5 -4
- package/assets/skills/oat-docs-authoring/references/validation.md +11 -1
- package/assets/skills/oat-docs-bootstrap/SKILL.md +31 -8
- package/assets/skills/oat-docs-bootstrap/assets/AGENTS.md.template +2 -1
- package/assets/skills/oat-project-document/SKILL.md +21 -2
- package/assets/skills/recon/SKILL.md +1 -1
- package/assets/skills/recon/scripts/render-packet.mjs +40 -13
- package/assets/templates/docs-markdown/contributing.md +35 -0
- package/assets/templates/docs-markdown/index.md +18 -0
- package/dist/commands/docs/index-generate/index.d.ts.map +1 -1
- package/dist/commands/docs/index-generate/index.js +41 -8
- package/dist/commands/docs/init/index.d.ts +17 -2
- package/dist/commands/docs/init/index.d.ts.map +1 -1
- package/dist/commands/docs/init/index.js +194 -14
- package/dist/commands/docs/init/markdown.d.ts +39 -0
- package/dist/commands/docs/init/markdown.d.ts.map +1 -0
- package/dist/commands/docs/init/markdown.js +317 -0
- package/dist/commands/docs/init/resolve-options.d.ts +3 -1
- package/dist/commands/docs/init/resolve-options.d.ts.map +1 -1
- package/dist/commands/docs/init/resolve-options.js +36 -0
- package/dist/commands/docs/init/scaffold.d.ts.map +1 -1
- package/dist/commands/docs/init/scaffold.js +11 -0
- package/dist/commands/docs/nav/fumadocs.d.ts +7 -0
- package/dist/commands/docs/nav/fumadocs.d.ts.map +1 -1
- package/dist/commands/docs/nav/fumadocs.js +28 -3
- package/dist/commands/shared/agents-md.d.ts +7 -0
- package/dist/commands/shared/agents-md.d.ts.map +1 -1
- package/dist/commands/shared/agents-md.js +131 -91
- package/dist/commands/tools/shared/pack-manifest.d.ts.map +1 -1
- package/dist/commands/tools/shared/pack-manifest.js +1 -0
- package/dist/config/oat-config.d.ts +2 -1
- package/dist/config/oat-config.d.ts.map +1 -1
- package/dist/config/oat-config.js +4 -2
- package/package.json +2 -2
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: oat-docs-bootstrap
|
|
3
|
-
description: Use when bootstrapping
|
|
3
|
+
description: Use when bootstrapping or adopting an OAT documentation surface in a repo. Guides the user through preflight detection, richer input gathering than the raw CLI, `oat docs init` invocation with gated post-patches for open CLI gaps, build verification, post-scaffold config inspection, and an educational walkthrough. Supports plain Markdown (file-level path), Fumadocs (full path), and MkDocs (lean path with defined minimum contract).
|
|
4
4
|
argument-hint: '<optional-target-dir>'
|
|
5
5
|
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.
|
|
9
|
+
version: 1.3.1
|
|
10
10
|
---
|
|
11
11
|
|
|
12
12
|
# Docs Bootstrap
|
|
13
13
|
|
|
14
|
-
Bootstrap
|
|
14
|
+
Bootstrap or adopt documentation in this repo and guide the user through understanding how it works. Wraps `oat docs init` with preflight detection, richer input gathering, gated post-patches for open CLI gaps (FP-11 Turbopack root, FP-12 site-title coherence, FP-13 template content, FP-15 docs-app AGENTS.md, FP-16 `## Contents` link extensions, FP-17 `contributing.md` three-surfaces cleanup), build verification, post-scaffold config inspection, and an educational walkthrough covering the `index.md` + `## Contents` navigation contract, scaffolded agent-instruction surfaces, and the OAT docs ecosystem (`oat-project-document`, `oat-docs-analyze`, `oat-docs-apply`).
|
|
15
15
|
|
|
16
16
|
## Prerequisites
|
|
17
17
|
|
|
@@ -23,7 +23,7 @@ Bootstrap a docs app in this repo and guide the user through understanding how i
|
|
|
23
23
|
|
|
24
24
|
**OAT MODE: Docs Bootstrap**
|
|
25
25
|
|
|
26
|
-
**Purpose:** Turn `oat docs init` scaffolding into a support-rich onboarding experience — preflight, inputs, CLI invocation with gated post-patches, build verification, config inspection, educational walkthrough, and optional content kickoff.
|
|
26
|
+
**Purpose:** Turn `oat docs init` scaffolding into a support-rich onboarding experience — preflight, inputs, CLI invocation with gated post-patches, build verification, config inspection, educational walkthrough, and optional content kickoff. Three paths: Markdown (authored content without an app), Fumadocs (full), and MkDocs (lean with defined minimum contract).
|
|
27
27
|
|
|
28
28
|
**BLOCKED Activities:**
|
|
29
29
|
|
|
@@ -110,6 +110,18 @@ OAT ▸ DOCS BOOTSTRAP
|
|
|
110
110
|
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
111
111
|
```
|
|
112
112
|
|
|
113
|
+
### Markdown path through the seven steps
|
|
114
|
+
|
|
115
|
+
The detailed framework procedures below apply to Fumadocs/MkDocs. When the selected tooling is `markdown`, use this path for Steps 2–7 instead; never run framework post-patches, the FP-15 AGENTS bridge, dependency discovery/install, package/Turbo patches, or a site build. Step 1 remains the shared read-only detector.
|
|
116
|
+
|
|
117
|
+
1. **Preflight and routing:** Read `documentation.tooling` as either its string form or its legacy object `framework` field. Declared tooling is authoritative: configured Markdown uses `documentation.root` literally, including when it contains a child named `docs`; declared frameworks or unknown stacks are not plain-doc adoption candidates. With no declared tooling, check framework evidence first (`mkdocs.yml`, Fumadocs/Next config and docs-app package scripts/dependencies), then inspect the chosen dedicated content directory for authored `.md`/`.mdx` pages. A repository-root README alone is insufficient; an empty selected directory is fresh setup. For a populated plain tree, lead with **adopt and audit**, **audit only**, or **abort**. Audit only delegates read-only to `oat-docs-analyze` and exits. Adoption requires the explicit user choice and CLI `--adopt`; `--yes` alone never authorizes it. An incompatible declared root/index/tooling requires a user decision, with no silent clearing or retagging. Keep the existing explicitly authorized framework replacement path when a framework is selected.
|
|
118
|
+
2. **Gather inputs:** Offer “Markdown (plain files), Fumadocs, or MkDocs?” Collect documentation title (`--site-name`), dedicated relative target directory (default `docs` in every repo shape), and optional description. Reuse an existing compatible configured Markdown root. Ask no app/package name, package-manager, site-runtime, or dependency questions. Lint and format default to `none`; describe selected existing repository tools only, without installing them. Validate a nonempty title and a dedicated in-repository target, excluding the repository root and escaping symlinks. Confirm fresh setup or additive adoption, title, root, and audit handoff. `appName` is absent and `conflictResolution` is `adopt`, `audit`, `abort`, or null for this path.
|
|
119
|
+
3. **Invoke CLI:** Probe `$CLI_CMD docs init --help` and require advertised Markdown/`--adopt` support before invocation; if missing, report the needed CLI update rather than fabricating scaffold files. Run `$CLI_CMD docs init --framework markdown --target-dir <root> --site-name <title> --description <description> --lint none --format none --yes`, adding `--adopt` only for explicit adoption. Pass the selected lint/format values when using existing tools. Never pass app-only flags. An optional `--dry-run` previews file/config/guidance changes without writes; it does not count as a completed bootstrap. Capture terminal/JSON results, exact exit, created/preserved files, config changes, guidance action, and audit advice. `partial`/exit 1 with manual-required or blocked guidance means unresolved guidance; real runs may have created files, whereas dry-runs have only planned files. Report actual state and stop before claiming completion. Other refusals also stop without post-patches. For success, read config back to resolve the actual content root and authored index.
|
|
120
|
+
4. **Verify files:** Print `[4/7] Verifying files…`. Check config root/index, baseline file existence, nonempty `title`/`description`, useful audience/scope context and populated `## Contents` links resolving to actual sibling pages or child `index.md`s. Honor excludes and asset-only exceptions; preserve local AGENTS instructions. Fresh setup creates only authored `index.md` and `contributing.md` in the target; verify no docs-root AGENTS, app package, framework config, dependencies, or root build changes. Run already documented lint/link/format checks when applicable; otherwise inspect files/links directly. Adoption preserves existing bytes and may leave missing child indexes, metadata, context, or links: record these as audit gaps for analyze/apply rather than repairing them or calling the tree fully conformant. Distinguish successful setup verification from content-conformance findings.
|
|
121
|
+
5. **Inspect config:** `documentation.tooling` is the string `markdown`; `root` is the literal content directory; `index` is its authored entrypoint, normally `<root>/index.md`. Markdown introduces no `documentation.config`. Preserve unrelated config/excludes/completion settings. Verify deterministic managed root Documentation guidance names that root, Markdown tooling, authored index, and `<root>/contributing.md`; preserve manual/local guidance and surface unresolved disposition. The Step 5e completion opt-in remains available using the docs root rather than an app name, without silently changing an existing value. No nested app-config reconciliation or framework patch inspection applies.
|
|
122
|
+
6. **Walkthrough:** In short chunks, show actual config and `<root>/index.md`: useful context plus the Contents map, title/description metadata, sibling `page.md` and child `section/index.md` links, exclusions and asset-only exceptions. Explain adding a page/section and updating the nearest authored map without overwriting existing context. Root AGENTS Documentation guidance and `<root>/contributing.md` establish agent/human conventions; a preexisting local AGENTS file remains authoritative, but bootstrap creates none. Authored indexes are edited directly. Optional generated inventories require explicit external output, e.g. `$CLI_CMD docs generate-index --docs-dir <root> --output .oat/docs-manifest.md`; output must stay outside the full configured content root and cannot overwrite the configured authored index even with a narrowed `--docs-dir`. Generation does not repoint `documentation.index`. Markdown bootstrap never generates a manifest automatically. Skip framework deep dives and preview-server/build commands.
|
|
123
|
+
7. **Audit handoff and summary:** Offer `oat-docs-analyze` against the literal configured root, followed by `oat-docs-apply` only for approved repairs. An adopted incomplete tree needs that audit; config/guidance alone prove no full conformance. Explain `oat-project-document` for source-backed project deltas. Summarize tooling, actual root/authored index, created/preserved files, guidance/config disposition, file-check outcomes, unresolved audit gaps, optional manifest ownership, and exact skill handoff. For dry-run/partial/refusal, label the outcome accordingly rather than printing BOOTSTRAP COMPLETE. No app, install, build, patch, or dev-command fields apply.
|
|
124
|
+
|
|
113
125
|
### Step 1: Preflight Detector
|
|
114
126
|
|
|
115
127
|
Inspect the working tree before any mutation. Determine the repo shape, detect existing docs setup, and surface conflicts that require user decisions later. This step is strictly read-only; any fix or prompt flows through the Input Gatherer (Step 2).
|
|
@@ -131,6 +143,8 @@ In practice: for Fumadocs, any single-package repo with a target subdirectory is
|
|
|
131
143
|
|
|
132
144
|
**1b. Detect existing docs setup.**
|
|
133
145
|
|
|
146
|
+
Apply the Markdown-path evidence and precedence rules above before classifying a directory. Record selected tooling and whether the chosen target is absent/empty, authored Markdown, or a framework app. An existing empty target is not an existing-app conflict. The same shared detector supports the Markdown route; it does not change general `oat init` detection.
|
|
147
|
+
|
|
134
148
|
Read (do not modify):
|
|
135
149
|
|
|
136
150
|
- `$REPO_ROOT/.oat/config.json`, extract the `documentation` section if present. Record `configDocumentation` (the parsed object) or `null`.
|
|
@@ -202,7 +216,7 @@ If `conflicts[]` is empty, skip conflict handling and go to 2b.
|
|
|
202
216
|
|
|
203
217
|
Each question includes plain-language context explaining what the value affects. Defaults come from the Preflight Result. Ask sequentially — each answer can inform the next default.
|
|
204
218
|
|
|
205
|
-
- **Framework.** `"Which
|
|
219
|
+
- **Framework.** `"Which documentation tooling? Markdown (plain files), Fumadocs (Next.js), or MkDocs (Python)?"` Default: `fumadocs`. Selecting Markdown switches to the Markdown path above before app/site questions.
|
|
206
220
|
- **Site name.** `"What's the name of the product or project these docs are for?"` Default: `defaults.siteName` (humanized repo name). Explain: "This becomes the display title — what shows up in the site header, browser tab, and page headings. It is **not** the package name." This is the FP-12 workaround — distinct from `appName`.
|
|
207
221
|
- **Package / app name.** `"What should the docs package be called?"` Default: `defaults.appName`. Explain: "This becomes the `package.json` `name`, the directory name, and the pnpm filter (e.g., `pnpm --filter {appName} dev`). It does **not** show up in the UI."
|
|
208
222
|
- **Target directory.** `"Where should the docs app live?"` Default: `defaults.targetDir`. Explain: "Relative to repo root. Monorepos typically use `apps/{appName}`; single-package repos use `{appName}` as a subdirectory."
|
|
@@ -245,7 +259,7 @@ Record internally for the Scaffold Runner:
|
|
|
245
259
|
|
|
246
260
|
```
|
|
247
261
|
Input Result:
|
|
248
|
-
framework: 'fumadocs' | 'mkdocs'
|
|
262
|
+
framework: 'markdown' | 'fumadocs' | 'mkdocs'
|
|
249
263
|
siteName: string // FP-12 workaround: display title distinct from appName
|
|
250
264
|
appName: string
|
|
251
265
|
targetDir: string
|
|
@@ -545,7 +559,9 @@ Per-file edits (Fumadocs only — MkDocs has no `layout.tsx`; its title handling
|
|
|
545
559
|
|
|
546
560
|
Failure handling: if Capability Detection (3b) classified any of these files as `drift`, the patch is already recorded as `refused` in `Scaffold Result.patchesApplied` — skip and move on. Do not re-check drift here.
|
|
547
561
|
|
|
548
|
-
**FP-15: AGENTS.md write-if-missing.**
|
|
562
|
+
**FP-15: AGENTS.md write-if-missing (Fumadocs/MkDocs only).**
|
|
563
|
+
|
|
564
|
+
Never apply this bridge to Markdown: its root is the content directory and bootstrap must not create a docs-root AGENTS file.
|
|
549
565
|
|
|
550
566
|
Gate: run **only if** `capabilities.agentsMdScaffoldFlag === false` AND `<appRoot>/AGENTS.md` does not exist on disk.
|
|
551
567
|
|
|
@@ -1128,7 +1144,14 @@ End the skill with the summary. Do not prompt for more input — the user knows
|
|
|
1128
1144
|
|
|
1129
1145
|
A successful `oat-docs-bootstrap` run satisfies every invariant below. Any failure of an invariant either blocks progression (critical) or is surfaced to the user in the Exit summary with a `suggestedFix` (warning) so the user knows what to address.
|
|
1130
1146
|
|
|
1131
|
-
**
|
|
1147
|
+
**Markdown invariants:**
|
|
1148
|
+
|
|
1149
|
+
- Configured tooling controls routing; framework evidence precedes unconfigured plain-tree evidence; README-only and empty directories do not imply adoption.
|
|
1150
|
+
- Fresh/adopt operations use the CLI with literal roots; populated targets require explicit `--adopt`, preserved content remains authoritative, and audit gaps are handed to analyze/apply.
|
|
1151
|
+
- No app questions, installs, site builds, framework patches, automatic manifest, or docs-root AGENTS creation. Authored index/context/Contents/metadata/links and local instructions remain applicable.
|
|
1152
|
+
- Dry-run/partial outcomes report planned or actual state accurately; successful adoption is not a claim of full content conformity.
|
|
1153
|
+
|
|
1154
|
+
**Framework pipeline invariants (Fumadocs/MkDocs):**
|
|
1132
1155
|
|
|
1133
1156
|
- Preflight ran read-only — no files mutated, no config written, no scaffold invoked.
|
|
1134
1157
|
- Input Gatherer collected the full Input Result (framework, siteName, appName, targetDir, siteDescription, lint, format) plus any `conflictResolution` required by Preflight conflicts; all inputs validated before scaffold.
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
<!-- Framework docs-app bridge only: Fumadocs/MkDocs. Never render this template into a plain Markdown content root; use managed root Documentation guidance and the contributing page there. -->
|
|
1
2
|
# AGENTS — {{SITE_NAME}}
|
|
2
3
|
|
|
3
4
|
This file tells agents how to work inside `{{APP_DIR}}`, the documentation app for `{{REPO_NAME}}`. It is not bootstrap documentation. If you're looking for how this app was scaffolded, see `docs/getting-started.md` or the root-level `AGENTS.md` section on documentation.
|
|
@@ -11,7 +12,7 @@ This file tells agents how to work inside `{{APP_DIR}}`, the documentation app f
|
|
|
11
12
|
1. Create the Markdown file under `docs/` at the directory that best matches the page's topic. Every content directory is an `index.md` map — find the right one before picking a path. **Prefer `.md`** for plain content pages; reach for `.mdx` only when the page actually needs embedded JSX (a custom component, an interactive widget, a specialized layout). Plain `.md` is the default because agents, linters, and grep rules all handle it more reliably than `.mdx`.
|
|
12
13
|
2. Add frontmatter with at minimum `title:` and `description:`. The title drives nav display and page `<title>`; the description drives search previews, social cards, and sibling summaries. Empty descriptions hurt all three.
|
|
13
14
|
3. Update the nearest `index.md`'s `## Contents` section to include a link to the new page. Use `.md`-suffixed relative links: `[Title](page.md)` for leaf pages, `[Section](subdir/index.md)` for subdirectories. The `@open-agent-toolkit/docs-transforms` remark-links plugin normalizes these for Fumadocs routing at build time (strips `.md`, collapses `dir/index.md` → `dir`), so the suffixed form renders correctly **and** lets agents follow links to the target file without path inference. The `## Contents` section is the machine-readable local map — anything not listed there is effectively invisible to the navigation tooling.
|
|
14
|
-
4. If the new page introduces a new subdirectory, create an `index.md` in that subdirectory with its own `## Contents` section. Every content directory must have an `index.md
|
|
15
|
+
4. If the new page introduces a new subdirectory, create an `index.md` in that subdirectory with its own `## Contents` section. Every Markdown-bearing content directory must have an `index.md`; asset-only directories are exempt. Preserve useful audience/scope context and honor configured excludes and existing local instructions.
|
|
15
16
|
5. Regenerate the derived navigation artifacts for this framework. For Fumadocs, run `oat docs nav sync` (from the app directory, or with `--target-dir <app-dir>`) so the committed `docs/**/meta.json` sidebar files follow authored `## Contents`, and run the generated-index command (`{{GENERATE_INDEX_CMD}}`) so the app-root `index.md` manifest reflects the current Markdown file tree. Fumadocs nav sync is strict: a page no `## Contents` map lists stays out of the sidebar and is reported, so list the new page rather than editing `meta.json`. For MkDocs, run `oat docs nav sync` or the local equivalent so `mkdocs.yml` `nav:` reflects authored `## Contents`. Derived artifacts never replace the authored `## Contents`; keep authored maps current and compare generated output against them when checking freshness.
|
|
16
17
|
|
|
17
18
|
## When you need to restructure navigation
|
|
@@ -6,7 +6,7 @@ disable-model-invocation: false
|
|
|
6
6
|
user-invocable: true
|
|
7
7
|
allowed-tools: Read, Write, Edit, Bash(git:*), Bash(jq:*), Bash(oat pjm:*), Bash(oat project push:*), Bash(oat project scope:*), Bash(oat tools:*), Glob, Grep, AskUserQuestion, Skill
|
|
8
8
|
metadata:
|
|
9
|
-
version: 1.8.
|
|
9
|
+
version: 1.8.6
|
|
10
10
|
---
|
|
11
11
|
|
|
12
12
|
# Project Documentation Sync
|
|
@@ -141,6 +141,14 @@ DOCS_TOOLING=$(oat config get documentation.tooling 2>/dev/null || true)
|
|
|
141
141
|
DOCS_CONFIG=$(oat config get documentation.config 2>/dev/null || true)
|
|
142
142
|
```
|
|
143
143
|
|
|
144
|
+
For `DOCS_TOOLING=markdown`, `$DOCS_ROOT` is the literal configured authored
|
|
145
|
+
content root, even when a child directory is named `docs`; `documentation.index`
|
|
146
|
+
is authored. Preserve context, metadata, Contents, relative `.md` links, excludes
|
|
147
|
+
and existing local instructions. No app package, framework config, nav generation
|
|
148
|
+
or site build is required. Optional external manifests never replace the authored
|
|
149
|
+
index. For framework tooling, resolve the authored source root from config/scripts
|
|
150
|
+
and local guidance before scanning; the configured root can be an app root.
|
|
151
|
+
|
|
144
152
|
If `$DOCS_ROOT` is empty, attempt auto-detection:
|
|
145
153
|
|
|
146
154
|
1. Look for `mkdocs.yml` — if found, set `DOCS_TOOLING=mkdocs` and infer `DOCS_ROOT` from the `docs_dir` field (or default to `docs/` relative to the mkdocs.yml location), set `DOCS_CONFIG` to the mkdocs.yml path
|
|
@@ -503,7 +511,18 @@ Execute the approved documentation updates.
|
|
|
503
511
|
- Add a cross-reference in the original file pointing to the new location
|
|
504
512
|
- If the original had sections that logically separate, use section headings as split boundaries
|
|
505
513
|
|
|
506
|
-
**
|
|
514
|
+
**Authored maps and derived navigation:**
|
|
515
|
+
|
|
516
|
+
Update the nearest authored `index.md` Contents for added/moved pages and preserve
|
|
517
|
+
useful context. Validate actual relative `.md` destinations and title/description
|
|
518
|
+
metadata, honoring excludes and local guidance. Markdown uses file/link checks
|
|
519
|
+
and existing documented lint/format tools; it does not require site nav/build.
|
|
520
|
+
Regenerate optional external manifests only when locally declared, with explicit
|
|
521
|
+
output outside the full configured Markdown content tree; leave the configured
|
|
522
|
+
authored index intact. For framework apps, regenerate declared navigation/index
|
|
523
|
+
artifacts through local tooling rather than hand-editing generated output.
|
|
524
|
+
|
|
525
|
+
**Framework config updates:**
|
|
507
526
|
|
|
508
527
|
If `$DOCS_CONFIG` exists and new files were created in the docs directory:
|
|
509
528
|
|
|
@@ -9,9 +9,9 @@ import { isDirectExecution } from './lib/cli-entry.mjs';
|
|
|
9
9
|
import {
|
|
10
10
|
affirmingDispositionByReviewKind,
|
|
11
11
|
classifyUnresolvedIssue,
|
|
12
|
-
requiredReviewKinds,
|
|
13
12
|
unresolvedIssuesBlockClaim,
|
|
14
13
|
} from './lib/contracts.mjs';
|
|
14
|
+
import { reviewBriefEntries } from './lib/review-binding.mjs';
|
|
15
15
|
import {
|
|
16
16
|
assertSafeExistingPath,
|
|
17
17
|
assertSafeOutputPath,
|
|
@@ -121,17 +121,34 @@ function intendedRoutingSection(manifest, routing) {
|
|
|
121
121
|
];
|
|
122
122
|
}
|
|
123
123
|
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
//
|
|
124
|
+
const assuranceReviewKinds = Object.keys(affirmingDispositionByReviewKind);
|
|
125
|
+
|
|
126
|
+
// The claim IDs a review was briefed on: the entries of the immutable brief
|
|
127
|
+
// its exact reference resolves to, read the way the validator reads them.
|
|
128
|
+
function briefedClaimIds(review, artifacts) {
|
|
129
|
+
const brief = artifacts.find(
|
|
130
|
+
({ reference, value }) =>
|
|
131
|
+
value.kind === 'recon.review-brief' &&
|
|
132
|
+
reference.path === review.brief?.path &&
|
|
133
|
+
reference.digest === review.brief?.digest,
|
|
134
|
+
)?.value;
|
|
135
|
+
return new Set(
|
|
136
|
+
reviewBriefEntries(brief, review.reviewKind).map((entry) => entry.id),
|
|
137
|
+
);
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
// Every incorporated assurance review, core or thorough, whose brief listed
|
|
141
|
+
// `claimId` but which gave it no disposition. Such a claim is listed as not
|
|
142
|
+
// reviewed. A claim outside a review's brief was never that review's to
|
|
143
|
+
// dispose of, so it is not an omission.
|
|
127
144
|
function omittedReviews(claimId, reviews) {
|
|
128
|
-
return
|
|
129
|
-
.map((kind) => reviews.find((review) => review.reviewKind === kind))
|
|
145
|
+
return reviews
|
|
130
146
|
.filter(
|
|
131
|
-
(
|
|
132
|
-
|
|
133
|
-
!(
|
|
134
|
-
)
|
|
147
|
+
({ value, briefed }) =>
|
|
148
|
+
briefed.has(claimId) &&
|
|
149
|
+
!(value.dispositions ?? []).some((item) => item.claimId === claimId),
|
|
150
|
+
)
|
|
151
|
+
.map(({ value }) => value);
|
|
135
152
|
}
|
|
136
153
|
|
|
137
154
|
function issueText(entry) {
|
|
@@ -140,8 +157,8 @@ function issueText(entry) {
|
|
|
140
157
|
|
|
141
158
|
// Every claim an incorporated review kept below `verified` (an unresolved
|
|
142
159
|
// issue that applies to it, a coverage finding that names it, a
|
|
143
|
-
// non-affirming disposition, or
|
|
144
|
-
// disposition), with the review's own words. Key-claim status
|
|
160
|
+
// non-affirming disposition, or an assurance review that left a briefed claim
|
|
161
|
+
// without a disposition), with the review's own words. Key-claim status
|
|
145
162
|
// alone would let a `complete` packet hide a downgraded non-key claim.
|
|
146
163
|
function reviewDowngradeLines(validatedRun) {
|
|
147
164
|
const { ledger, artifacts, assuranceReviewIds } = validatedRun;
|
|
@@ -152,6 +169,16 @@ function reviewDowngradeLines(validatedRun) {
|
|
|
152
169
|
(value) =>
|
|
153
170
|
value.kind === 'recon.review-result' && assurance.has(value.id),
|
|
154
171
|
);
|
|
172
|
+
// Claim-bearing assurance reviews in table order, each with its brief
|
|
173
|
+
// membership.
|
|
174
|
+
const briefedReviews = reviews
|
|
175
|
+
.filter((review) => assuranceReviewKinds.includes(review.reviewKind))
|
|
176
|
+
.map((value) => ({ value, briefed: briefedClaimIds(value, artifacts) }))
|
|
177
|
+
.sort(
|
|
178
|
+
(left, right) =>
|
|
179
|
+
assuranceReviewKinds.indexOf(left.value.reviewKind) -
|
|
180
|
+
assuranceReviewKinds.indexOf(right.value.reviewKind),
|
|
181
|
+
);
|
|
155
182
|
const lines = [];
|
|
156
183
|
for (const claim of ledger.claims) {
|
|
157
184
|
if (claim.status === 'verified') continue;
|
|
@@ -182,7 +209,7 @@ function reviewDowngradeLines(validatedRun) {
|
|
|
182
209
|
}
|
|
183
210
|
}
|
|
184
211
|
}
|
|
185
|
-
for (const review of omittedReviews(claim.id,
|
|
212
|
+
for (const review of omittedReviews(claim.id, briefedReviews)) {
|
|
186
213
|
reasons.push(
|
|
187
214
|
`${review.reviewKind} review: not reviewed (no disposition)`,
|
|
188
215
|
);
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Contributing to documentation
|
|
3
|
+
description: Authoring conventions, context, and Markdown navigation rules.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Contributing to documentation
|
|
7
|
+
|
|
8
|
+
Maintain documentation for **{{REPO_NAME}}** as authored Markdown pages. Start
|
|
9
|
+
from the [documentation index](index.md) to understand the intended audience and
|
|
10
|
+
where each topic belongs.
|
|
11
|
+
|
|
12
|
+
## Structure and context
|
|
13
|
+
|
|
14
|
+
- Give every Markdown-bearing directory an authored `index.md` with useful
|
|
15
|
+
context: purpose, audience, ownership, and how its pages relate.
|
|
16
|
+
- Maintain a populated `## Contents` map. Link sibling pages as `page.md` and
|
|
17
|
+
immediate child directories as `section/index.md`. Link only existing files.
|
|
18
|
+
- Asset-only directories do not need an index.
|
|
19
|
+
- Add `title` and `description` metadata to authored pages. Use relative `.md`
|
|
20
|
+
links so navigation works when reading the repository directly.
|
|
21
|
+
- Preserve existing local instructions and repository-specific guidance.
|
|
22
|
+
|
|
23
|
+
## Review and verification
|
|
24
|
+
|
|
25
|
+
Use `oat-docs-analyze` to identify content, metadata, and navigation gaps, then
|
|
26
|
+
`oat-docs-apply` for approved repairs. Adoption establishes entrypoints and
|
|
27
|
+
configuration; review the existing tree before treating it as complete.
|
|
28
|
+
|
|
29
|
+
Check relative links, Contents maps, metadata, and context after edits. Selected
|
|
30
|
+
existing tools: lint `{{LINT_MODE}}`, format `{{FORMAT_MODE}}`. Use repository
|
|
31
|
+
checks when available; this setup does not install tools or require a site build.
|
|
32
|
+
|
|
33
|
+
The authored index is not a generated manifest. If an optional inventory is
|
|
34
|
+
needed, run `oat docs generate-index` with an explicit output outside the
|
|
35
|
+
configured content tree and keep the authored entrypoint unchanged.
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: '{{TITLE_METADATA}}'
|
|
3
|
+
description: '{{DESCRIPTION_METADATA}}'
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# {{SITE_NAME}}
|
|
7
|
+
|
|
8
|
+
This is the documentation entrypoint for **{{REPO_NAME}}**. Start with this
|
|
9
|
+
Contents map to find guidance and keep this page's context current as the
|
|
10
|
+
repository evolves. Add the repository's purpose, audience, and key workflows
|
|
11
|
+
when authoring its documentation.
|
|
12
|
+
|
|
13
|
+
These pages are authored Markdown. The index belongs to contributors; optional
|
|
14
|
+
generated inventories must live outside this content tree.
|
|
15
|
+
|
|
16
|
+
## Contents
|
|
17
|
+
|
|
18
|
+
{{CONTENTS}}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/commands/docs/index-generate/index.ts"],"names":[],"mappings":"AAWA,OAAO,EAEL,KAAK,cAAc,EACnB,KAAK,aAAa,EACnB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,KAAK,SAAS,EAGf,MAAM,oBAAoB,CAAC;AAI5B,OAAO,EAAE,OAAO,EAAU,MAAM,WAAW,CAAC;AAI5C,eAAO,MAAM,uBAAuB,iIAC4F,CAAC;AAuBjI,UAAU,6BAA6B;IACrC,aAAa,EAAE,CACb,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,OAAO,aAAa,EAAE,oBAAoB,KAChD,OAAO,CAAC,OAAO,aAAa,EAAE,UAAU,EAAE,CAAC,CAAC;IACjD,WAAW,EAAE,CAAC,OAAO,EAAE,OAAO,aAAa,EAAE,UAAU,EAAE,KAAK,MAAM,CAAC;IACrE,SAAS,EAAE,CACT,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,cAAc,KACrB,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,aAAa,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,SAAS,CAAC,CAAC;IACxD,cAAc,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACvE,eAAe,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAClD,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAC9C,iBAAiB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAC5D,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAC5C,iBAAiB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;CAC7D;AAED,UAAU,yBAAyB;IACjC,mBAAmB,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,cAAc,CAAC;IAChE,QAAQ,EAAE,6BAA6B,CAAC;CACzC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/commands/docs/index-generate/index.ts"],"names":[],"mappings":"AAWA,OAAO,EAEL,KAAK,cAAc,EACnB,KAAK,aAAa,EACnB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,KAAK,SAAS,EAGf,MAAM,oBAAoB,CAAC;AAI5B,OAAO,EAAE,OAAO,EAAU,MAAM,WAAW,CAAC;AAI5C,eAAO,MAAM,uBAAuB,iIAC4F,CAAC;AAuBjI,UAAU,6BAA6B;IACrC,aAAa,EAAE,CACb,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,OAAO,aAAa,EAAE,oBAAoB,KAChD,OAAO,CAAC,OAAO,aAAa,EAAE,UAAU,EAAE,CAAC,CAAC;IACjD,WAAW,EAAE,CAAC,OAAO,EAAE,OAAO,aAAa,EAAE,UAAU,EAAE,KAAK,MAAM,CAAC;IACrE,SAAS,EAAE,CACT,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,cAAc,KACrB,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,aAAa,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,SAAS,CAAC,CAAC;IACxD,cAAc,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACvE,eAAe,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAClD,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAC9C,iBAAiB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAC5D,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAC5C,iBAAiB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;CAC7D;AAED,UAAU,yBAAyB;IACjC,mBAAmB,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,cAAc,CAAC;IAChE,QAAQ,EAAE,6BAA6B,CAAC;CACzC;AAspBD,wBAAgB,8BAA8B,CAC5C,SAAS,GAAE,OAAO,CAAC,yBAAyB,CAAM,GACjD,OAAO,CAgCT"}
|
|
@@ -197,7 +197,8 @@ function missingRootError(flag) {
|
|
|
197
197
|
* options stay CWD-relative for backward compatibility. `documentation.root`
|
|
198
198
|
* canonically names the docs **app root** written by `oat docs init`. The
|
|
199
199
|
* `<root>/docs` preference is compatibility behavior for legacy configs whose
|
|
200
|
-
* `root` names a docs *source* directory
|
|
200
|
+
* `root` names a docs *source* directory. Explicit Markdown uses the literal
|
|
201
|
+
* configured content root; `--docs-dir` overrides source selection in all modes.
|
|
201
202
|
*/
|
|
202
203
|
async function resolveIndexGeneratePaths(context, options, deps) {
|
|
203
204
|
const repoRoot = await deps.resolveRepoRoot(context.cwd);
|
|
@@ -206,6 +207,10 @@ async function resolveIndexGeneratePaths(context, options, deps) {
|
|
|
206
207
|
const configuredRoot = configuredRootValue
|
|
207
208
|
? resolve(repoRoot, configuredRootValue)
|
|
208
209
|
: null;
|
|
210
|
+
const isMarkdown = trimmed(config.documentation?.tooling)?.toLowerCase() === 'markdown';
|
|
211
|
+
if (isMarkdown && options.output === undefined) {
|
|
212
|
+
throw new CliError('Markdown documentation uses an authored index. Pass --output with a path outside the full configured Markdown content root to generate a separate manifest.', REFUSAL_EXIT_CODE);
|
|
213
|
+
}
|
|
209
214
|
// Either omitted option needs a usable configured root, so validate it once
|
|
210
215
|
// up front rather than only on the path that happens to be derived first.
|
|
211
216
|
if (options.docsDir === undefined || options.output === undefined) {
|
|
@@ -226,7 +231,8 @@ async function resolveIndexGeneratePaths(context, options, deps) {
|
|
|
226
231
|
docsDir = resolve(context.cwd, options.docsDir);
|
|
227
232
|
docsDirSource = 'flag';
|
|
228
233
|
}
|
|
229
|
-
else if (
|
|
234
|
+
else if (!isMarkdown &&
|
|
235
|
+
(await deps.dirExists(join(configuredRoot, 'docs')))) {
|
|
230
236
|
docsDir = join(configuredRoot, 'docs');
|
|
231
237
|
docsDirSource = 'config-docs-subdirectory';
|
|
232
238
|
}
|
|
@@ -263,6 +269,10 @@ async function canonicalizeIndexGeneratePaths(resolved, deps) {
|
|
|
263
269
|
const lexicalDocumentationConfig = documentationConfigValue
|
|
264
270
|
? resolve(resolved.repoRoot, documentationConfigValue)
|
|
265
271
|
: null;
|
|
272
|
+
const isMarkdown = trimmed(resolved.config.documentation?.tooling)?.toLowerCase() ===
|
|
273
|
+
'markdown';
|
|
274
|
+
const indexValue = trimmed(resolved.config.documentation?.index);
|
|
275
|
+
const lexicalAuthoredIndex = isMarkdown && indexValue ? resolve(resolved.repoRoot, indexValue) : null;
|
|
266
276
|
// Resolution order is load-bearing: the docs directory is canonicalized
|
|
267
277
|
// first, and the safety checks below compare against its canonical form.
|
|
268
278
|
return {
|
|
@@ -277,11 +287,24 @@ async function canonicalizeIndexGeneratePaths(resolved, deps) {
|
|
|
277
287
|
role: { kind: 'output' },
|
|
278
288
|
origin: resolved.outputPath,
|
|
279
289
|
}),
|
|
280
|
-
//
|
|
281
|
-
// must
|
|
290
|
+
// Markdown's configured tree is protected independently of --docs-dir.
|
|
291
|
+
// Its canonicalization must fail closed; other modes retain the existing
|
|
292
|
+
// tolerance for unusable config when both paths are explicit.
|
|
282
293
|
configuredRoot: resolved.configuredRoot
|
|
283
|
-
?
|
|
284
|
-
|
|
294
|
+
? isMarkdown
|
|
295
|
+
? await canonicalize(resolved.configuredRoot, deps, {
|
|
296
|
+
role: { kind: 'docs-dir', derived: true },
|
|
297
|
+
origin: resolved.configuredRoot,
|
|
298
|
+
})
|
|
299
|
+
: await canonicalizeOrNull(resolved.configuredRoot, deps, {
|
|
300
|
+
kind: 'other',
|
|
301
|
+
})
|
|
302
|
+
: null,
|
|
303
|
+
lexicalAuthoredIndex,
|
|
304
|
+
authoredIndex: lexicalAuthoredIndex
|
|
305
|
+
? await canonicalize(lexicalAuthoredIndex, deps, {
|
|
306
|
+
role: { kind: 'other' },
|
|
307
|
+
origin: lexicalAuthoredIndex,
|
|
285
308
|
})
|
|
286
309
|
: null,
|
|
287
310
|
lexicalDocumentationConfig,
|
|
@@ -301,6 +324,16 @@ async function canonicalizeIndexGeneratePaths(resolved, deps) {
|
|
|
301
324
|
*/
|
|
302
325
|
async function assertOutputIsSafe(resolved, canonical, deps) {
|
|
303
326
|
const { docsDir, outputPath, outputIsExplicit } = resolved;
|
|
327
|
+
if (trimmed(resolved.config.documentation?.tooling)?.toLowerCase() ===
|
|
328
|
+
'markdown' &&
|
|
329
|
+
((canonical.configuredRoot !== null &&
|
|
330
|
+
isAtOrInside(canonical.configuredRoot, canonical.outputPath)) ||
|
|
331
|
+
(resolved.configuredRoot !== null &&
|
|
332
|
+
isAtOrInside(resolved.configuredRoot, outputPath)) ||
|
|
333
|
+
canonical.outputPath === canonical.authoredIndex ||
|
|
334
|
+
outputPath === canonical.lexicalAuthoredIndex)) {
|
|
335
|
+
throw new CliError(`Refusing to write the generated index to protected Markdown documentation at ${outputPath}: the full configured content root and authored documentation.index must be preserved. Pass --output with a different path outside the Markdown content root.`, REFUSAL_EXIT_CODE);
|
|
336
|
+
}
|
|
304
337
|
if (isAtOrInside(canonical.docsDir, canonical.outputPath)) {
|
|
305
338
|
throw new CliError(`Refusing to write the generated index inside the docs directory it indexes: ` +
|
|
306
339
|
`${outputPath} is inside ${docsDir}. Pass --output with a path outside the docs directory.`, REFUSAL_EXIT_CODE);
|
|
@@ -449,8 +482,8 @@ export function createDocsGenerateIndexCommand(overrides = {}) {
|
|
|
449
482
|
};
|
|
450
483
|
return new Command('generate-index')
|
|
451
484
|
.description('Generate a docs index from markdown files')
|
|
452
|
-
.addOption(new Option('--docs-dir <path>', 'Documentation source directory, resolved from the CWD (default: `<documentation.root>/docs` when that directory exists,
|
|
453
|
-
.addOption(new Option('--output <path>', 'Output file path, resolved from the CWD (default: `<documentation.root>/index.md`)'))
|
|
485
|
+
.addOption(new Option('--docs-dir <path>', 'Documentation source directory, resolved from the CWD (default: literal `<documentation.root>` for Markdown; otherwise `<documentation.root>/docs` when that directory exists, or `<documentation.root>`)'))
|
|
486
|
+
.addOption(new Option('--output <path>', 'Output file path, resolved from the CWD (required outside the content root for Markdown; otherwise default: `<documentation.root>/index.md`)'))
|
|
454
487
|
.addOption(new Option('--exclude <glob>', 'Exclude matching paths, relative to the docs directory (`*` within a segment, `**` across segments, trailing `/` for directories only). Repeatable, and additive to `documentation.excludes`').argParser(collectExclude))
|
|
455
488
|
.action(async (options, command) => {
|
|
456
489
|
const context = dependencies.buildCommandContext(readGlobalOptions(command));
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type CommandContext, type GlobalOptions } from '../../../app/command-context.js';
|
|
2
|
-
import { type UpsertSectionResult } from '../../shared/agents-md.js';
|
|
2
|
+
import { type UpsertSectionResult, previewAgentsMdSection } from '../../shared/agents-md.js';
|
|
3
3
|
import { type PromptContext, type SelectChoice } from '../../shared/shared.prompts.js';
|
|
4
4
|
import { type OatConfig } from '../../../config/oat-config.js';
|
|
5
5
|
import { Command } from 'commander';
|
|
@@ -8,7 +8,21 @@ import { type RootPackagePatchResult } from './root-package.js';
|
|
|
8
8
|
interface DocsInitExecutionResult {
|
|
9
9
|
createdFiles: string[];
|
|
10
10
|
appRoot: string;
|
|
11
|
-
rootPackagePatch
|
|
11
|
+
rootPackagePatch?: RootPackagePatchResult;
|
|
12
|
+
dryRun?: boolean;
|
|
13
|
+
plannedFiles?: string[];
|
|
14
|
+
preservedFiles?: string[];
|
|
15
|
+
incompleteFiles?: string[];
|
|
16
|
+
auditAdvice?: string[];
|
|
17
|
+
changes?: {
|
|
18
|
+
files: string[];
|
|
19
|
+
config: boolean;
|
|
20
|
+
};
|
|
21
|
+
configStatus?: 'planned' | 'updated' | 'no-change' | 'failed' | 'not-attempted';
|
|
22
|
+
failure?: {
|
|
23
|
+
stage: 'scaffold' | 'config';
|
|
24
|
+
message: string;
|
|
25
|
+
};
|
|
12
26
|
}
|
|
13
27
|
interface DocsInitDependencies {
|
|
14
28
|
buildCommandContext: (options: GlobalOptions) => CommandContext;
|
|
@@ -18,6 +32,7 @@ interface DocsInitDependencies {
|
|
|
18
32
|
selectWithAbort: <T extends string>(message: string, choices: SelectChoice<T>[], ctx: PromptContext) => Promise<T | null>;
|
|
19
33
|
runDocsInit: (context: CommandContext, options: DocsInitResolvedOptions, assetsRoot: string) => Promise<DocsInitExecutionResult | void>;
|
|
20
34
|
upsertAgentsMdSection: (repoRoot: string, key: string, body: string) => Promise<UpsertSectionResult>;
|
|
35
|
+
previewAgentsMdSection: typeof previewAgentsMdSection;
|
|
21
36
|
readOatConfig: (repoRoot: string) => Promise<OatConfig>;
|
|
22
37
|
confirmAction: (message: string, ctx: PromptContext) => Promise<boolean>;
|
|
23
38
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/commands/docs/init/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,KAAK,cAAc,EACnB,KAAK,aAAa,EACnB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,KAAK,mBAAmB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/commands/docs/init/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,KAAK,cAAc,EACnB,KAAK,aAAa,EACnB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,KAAK,mBAAmB,EAGxB,sBAAsB,EAEvB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAGL,KAAK,aAAa,EAClB,KAAK,YAAY,EAElB,MAAM,iCAAiC,CAAC;AAEzC,OAAO,EACL,KAAK,SAAS,EAGf,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,OAAO,EAAU,MAAM,WAAW,CAAC;AAU5C,OAAO,EAIL,KAAK,uBAAuB,EAK7B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAEL,KAAK,sBAAsB,EAC5B,MAAM,gBAAgB,CAAC;AAgBxB,UAAU,uBAAuB;IAC/B,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,gBAAgB,CAAC,EAAE,sBAAsB,CAAC;IAC1C,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,OAAO,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,EAAE,CAAC;QAAC,MAAM,EAAE,OAAO,CAAA;KAAE,CAAC;IAC/C,YAAY,CAAC,EACT,SAAS,GACT,SAAS,GACT,WAAW,GACX,QAAQ,GACR,eAAe,CAAC;IACpB,OAAO,CAAC,EAAE;QAAE,KAAK,EAAE,UAAU,GAAG,QAAQ,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;CAC7D;AAED,UAAU,oBAAoB;IAC5B,mBAAmB,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,cAAc,CAAC;IAChE,iBAAiB,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;IACzC,eAAe,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,UAAU,GAAG,gBAAgB,CAAC,CAAC;IAC9E,gBAAgB,EAAE,CAChB,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,MAAM,EACpB,GAAG,EAAE,aAAa,KACf,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAC5B,eAAe,EAAE,CAAC,CAAC,SAAS,MAAM,EAChC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,EAC1B,GAAG,EAAE,aAAa,KACf,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IACvB,WAAW,EAAE,CACX,OAAO,EAAE,cAAc,EACvB,OAAO,EAAE,uBAAuB,EAChC,UAAU,EAAE,MAAM,KACf,OAAO,CAAC,uBAAuB,GAAG,IAAI,CAAC,CAAC;IAC7C,qBAAqB,EAAE,CACrB,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,KACT,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAClC,sBAAsB,EAAE,OAAO,sBAAsB,CAAC;IACtD,aAAa,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,SAAS,CAAC,CAAC;IACxD,aAAa,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,aAAa,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CAC1E;AAuLD;;;;;;;;;;GAUG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,uBAAuB,GAAG,MAAM,CAoC7E;AA0QD,wBAAgB,qBAAqB,CACnC,SAAS,GAAE,OAAO,CAAC,oBAAoB,CAAM,GAC5C,OAAO,CAiET"}
|