@open-agent-toolkit/cli 0.3.25 → 0.3.26

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.
Files changed (42) hide show
  1. package/assets/bundle-metadata.json +1 -1
  2. package/assets/docs/docs-tooling/add-docs-to-a-repo.md +14 -6
  3. package/assets/docs/docs-tooling/commands.md +12 -9
  4. package/assets/docs/reference/cli-reference.md +1 -1
  5. package/assets/docs/reference/configuration.md +2 -1
  6. package/assets/docs/reference/docs-index-contract.md +19 -6
  7. package/assets/docs/reference/oat-directory-structure.md +13 -0
  8. package/assets/public-package-versions.json +4 -4
  9. package/assets/skills/oat-docs-bootstrap/SKILL.md +11 -4
  10. package/assets/templates/docs-app-fuma/package.json.template +1 -1
  11. package/assets/templates/docs-app-fuma/source.config.ts +6 -1
  12. package/assets/templates/docs-app-mkdocs/package.json.template +2 -2
  13. package/dist/commands/config/index.d.ts.map +1 -1
  14. package/dist/commands/config/index.js +21 -3
  15. package/dist/commands/docs/index-generate/generator.d.ts +4 -34
  16. package/dist/commands/docs/index-generate/generator.d.ts.map +1 -1
  17. package/dist/commands/docs/index-generate/generator.js +51 -157
  18. package/dist/commands/docs/index-generate/index.d.ts +1 -1
  19. package/dist/commands/docs/index-generate/index.d.ts.map +1 -1
  20. package/dist/commands/docs/index-generate/index.js +26 -8
  21. package/dist/commands/docs/init/index.d.ts.map +1 -1
  22. package/dist/commands/docs/init/index.js +21 -1
  23. package/dist/commands/docs/init/scaffold.d.ts.map +1 -1
  24. package/dist/commands/docs/init/scaffold.js +20 -13
  25. package/dist/commands/docs/nav/contents.d.ts +13 -3
  26. package/dist/commands/docs/nav/contents.d.ts.map +1 -1
  27. package/dist/commands/docs/nav/contents.js +85 -24
  28. package/dist/commands/docs/nav/fumadocs.d.ts +1 -0
  29. package/dist/commands/docs/nav/fumadocs.d.ts.map +1 -1
  30. package/dist/commands/docs/nav/fumadocs.js +26 -9
  31. package/dist/commands/docs/nav/sync.d.ts +2 -0
  32. package/dist/commands/docs/nav/sync.d.ts.map +1 -1
  33. package/dist/commands/docs/nav/sync.js +21 -1
  34. package/dist/commands/docs/shared/exclusions.d.ts +37 -0
  35. package/dist/commands/docs/shared/exclusions.d.ts.map +1 -0
  36. package/dist/commands/docs/shared/exclusions.js +161 -0
  37. package/dist/config/oat-config.d.ts +2 -0
  38. package/dist/config/oat-config.d.ts.map +1 -1
  39. package/dist/config/oat-config.js +6 -3
  40. package/dist/config/resolve.d.ts.map +1 -1
  41. package/dist/config/resolve.js +1 -0
  42. package/package.json +2 -2
@@ -1,28 +1,75 @@
1
1
  import { readFile } from 'node:fs/promises';
2
2
  import { basename, dirname, extname, join, relative, resolve } from 'node:path';
3
+ import { createExclusionMatcher, isExcludedPath, } from '../../docs/shared/exclusions.js';
3
4
  import { dirExists, fileExists } from '../../../fs/io.js';
4
- export function parseIndexContents(markdown, sourcePath = 'index.md') {
5
- const lines = markdown.split(/\r?\n/);
6
- const contentsHeadingIndex = lines.findIndex((line) => /^##\s+Contents\s*$/.test(line.trim()));
7
- if (contentsHeadingIndex < 0) {
5
+ /** Mask fenced examples without changing authored source line numbers. */
6
+ function unfencedLines(markdown) {
7
+ let fence;
8
+ return markdown.split(/\r?\n/).map((line) => {
9
+ if (fence) {
10
+ const closing = line.match(/^ {0,3}(`{3,}|~{3,})[ \t]*$/);
11
+ if (closing &&
12
+ closing[1][0] === fence.marker &&
13
+ closing[1].length >= fence.length) {
14
+ fence = undefined;
15
+ }
16
+ return '';
17
+ }
18
+ const opening = line.match(/^ {0,3}(`{3,}|~{3,})(.*)$/);
19
+ if (opening && (opening[1][0] === '~' || !opening[2].includes('`'))) {
20
+ fence = { marker: opening[1][0], length: opening[1].length };
21
+ return '';
22
+ }
23
+ return line;
24
+ });
25
+ }
26
+ function contentsHeadingIndex(lines) {
27
+ return lines.findIndex((line) => /^##\s+Contents\s*$/.test(line.trim()));
28
+ }
29
+ /** Shared discovery lets inventory generation retain its no-map fallback. */
30
+ export function hasIndexContents(markdown) {
31
+ return contentsHeadingIndex(unfencedLines(markdown)) >= 0;
32
+ }
33
+ export function parseIndexContents(markdown, sourcePath = 'index.md', options = {}) {
34
+ const lines = unfencedLines(markdown);
35
+ const headingIndex = contentsHeadingIndex(lines);
36
+ if (headingIndex < 0) {
8
37
  throw new Error(`Missing required ## Contents section in ${sourcePath}`);
9
38
  }
10
- const sectionLines = lines.slice(contentsHeadingIndex + 1);
11
- const nextHeadingIndex = sectionLines.findIndex((line) => /^##\s+/.test(line.trim()));
12
- const contentsLines = nextHeadingIndex >= 0
13
- ? sectionLines.slice(0, nextHeadingIndex)
14
- : sectionLines;
15
- const entries = contentsLines
16
- .map((line) => line.match(/^\s*-\s+\[([^\]]+)\]\(([^)]+)\)/))
17
- .filter((match) => match !== null)
18
- .map((match) => {
19
- const [, title = '', href = ''] = match;
20
- return {
21
- title: title.trim(),
22
- href: href.trim(),
23
- };
24
- });
25
- if (entries.length === 0) {
39
+ const entries = [];
40
+ let group;
41
+ let groupEntries = 0;
42
+ const checkGroup = () => {
43
+ if (group && groupEntries === 0) {
44
+ throw new Error(`${sourcePath}:${group.line}: Contents group "${group.title}" has no entries`);
45
+ }
46
+ };
47
+ for (let i = headingIndex + 1; i < lines.length; i += 1) {
48
+ const line = lines[i];
49
+ if (/^##\s+/.test(line.trim()))
50
+ break;
51
+ const heading = line.match(/^###\s+(.+?)\s*$/);
52
+ if (heading) {
53
+ checkGroup();
54
+ group = { title: heading[1].trim(), line: i + 1 };
55
+ groupEntries = 0;
56
+ continue;
57
+ }
58
+ if (/^\s*[*+]\s+\[[^\]]+\]\([^)]+\)/.test(line)) {
59
+ throw new Error(`${sourcePath}:${i + 1}: Contents links must use a dash (-) bullet`);
60
+ }
61
+ const match = line.match(/^\s*-\s+\[([^\]]+)\]\(([^)]+)\)/);
62
+ if (match) {
63
+ entries.push({
64
+ title: match[1].trim(),
65
+ href: match[2].trim(),
66
+ ...(group ? { group } : {}),
67
+ });
68
+ groupEntries += 1;
69
+ }
70
+ }
71
+ checkGroup();
72
+ if (entries.length === 0 && !options.allowEmpty) {
26
73
  throw new Error(`No machine-readable links found under ## Contents in ${sourcePath}`);
27
74
  }
28
75
  return entries;
@@ -35,7 +82,7 @@ export async function resolveEntryTarget(docsRoot, directoryPath, dirRelativePat
35
82
  * Page extensions a Contents link may target. MkDocs renders only `.md`;
36
83
  * Fumadocs also renders `.mdx` pages.
37
84
  */
38
- pageExtensions = ['.md']) {
85
+ pageExtensions = ['.md'], matcher) {
39
86
  const href = entry.href.split('#', 1)[0]?.trim() ?? '';
40
87
  if (!href) {
41
88
  throw new Error(`Invalid contents link "${entry.href}" in ${join(docsRoot, dirRelativePath, 'index.md')}`);
@@ -53,6 +100,9 @@ pageExtensions = ['.md']) {
53
100
  relativeTargetPath.length === 0) {
54
101
  throw new Error(`Contents link "${entry.href}" escapes the docs directory from ${join(docsRoot, dirRelativePath, 'index.md')}`);
55
102
  }
103
+ if (matcher && isExcludedPath(matcher, relativeTargetPath)) {
104
+ return { kind: 'excluded', path: relativeTargetPath };
105
+ }
56
106
  if (!(await fileExists(targetPath))) {
57
107
  throw new Error(`Contents link "${entry.href}" in ${join(docsRoot, dirRelativePath, 'index.md')} does not resolve to a Markdown file`);
58
108
  }
@@ -80,17 +130,27 @@ export async function buildDocsNavTree(options) {
80
130
  }
81
131
  const indexMarkdown = await readFile(indexPath, 'utf8');
82
132
  const contentsEntries = parseIndexContents(indexMarkdown, indexPath);
133
+ const matcher = createExclusionMatcher(options.nonReaderPaths ?? []);
83
134
  const nav = dirRelativePath === '.'
84
135
  ? [{ Home: 'index.md' }]
85
136
  : [toPosixPath(join(dirRelativePath, 'index.md'))];
137
+ let currentGroup;
138
+ let groupNav = nav;
86
139
  for (const entry of contentsEntries) {
87
- const resolvedTarget = await resolveEntryTarget(options.docsRoot, directoryPath, dirRelativePath, entry);
140
+ const resolvedTarget = await resolveEntryTarget(options.docsRoot, directoryPath, dirRelativePath, entry, ['.md'], matcher);
141
+ if (resolvedTarget.kind === 'excluded')
142
+ continue;
88
143
  if (resolvedTarget.kind === 'section' &&
89
144
  resolvedTarget.path === toPosixPath(join(dirRelativePath, 'index.md'))) {
90
145
  continue;
91
146
  }
147
+ if (entry.group !== currentGroup) {
148
+ currentGroup = entry.group;
149
+ groupNav = [];
150
+ nav.push({ [currentGroup.title]: groupNav });
151
+ }
92
152
  if (resolvedTarget.kind === 'page') {
93
- nav.push({ [entry.title]: resolvedTarget.path });
153
+ groupNav.push({ [entry.title]: resolvedTarget.path });
94
154
  continue;
95
155
  }
96
156
  const childDirRelativePath = toPosixPath(dirname(resolvedTarget.path));
@@ -99,11 +159,12 @@ export async function buildDocsNavTree(options) {
99
159
  }
100
160
  const childVisitedDirectories = new Set(visitedDirectories);
101
161
  childVisitedDirectories.add(childDirRelativePath);
102
- nav.push({
162
+ groupNav.push({
103
163
  [entry.title]: await buildDocsNavTree({
104
164
  docsRoot: options.docsRoot,
105
165
  dirRelativePath: childDirRelativePath,
106
166
  visitedDirectories: childVisitedDirectories,
167
+ nonReaderPaths: options.nonReaderPaths,
107
168
  }),
108
169
  });
109
170
  }
@@ -54,5 +54,6 @@ export declare function syncFumadocsNavigation(options: {
54
54
  docsRoot: string;
55
55
  /** Compute and compare only; never write. */
56
56
  check?: boolean;
57
+ nonReaderPaths?: readonly string[];
57
58
  }): Promise<SyncFumadocsNavigationResult>;
58
59
  //# sourceMappingURL=fumadocs.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"fumadocs.d.ts","sourceRoot":"","sources":["../../../../src/commands/docs/nav/fumadocs.ts"],"names":[],"mappings":"AAYA;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,MAAM,WAAW,gBAAgB;IAC/B,wDAAwD;IACxD,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,YAAY,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,4BAA4B;IAC3C,SAAS,EAAE,gBAAgB,EAAE,CAAC;IAC9B,mEAAmE;IACnE,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB;;;OAGG;IACH,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB;;;OAGG;IACH,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAyDD;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAQxD;AAED,gFAAgF;AAChF,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAoCvE;AA8BD;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEvD;AAoLD;;;;;;;GAOG;AACH,wBAAsB,sBAAsB,CAAC,OAAO,EAAE;IACpD,QAAQ,EAAE,MAAM,CAAC;IACjB,6CAA6C;IAC7C,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,GAAG,OAAO,CAAC,4BAA4B,CAAC,CAkExC"}
1
+ {"version":3,"file":"fumadocs.d.ts","sourceRoot":"","sources":["../../../../src/commands/docs/nav/fumadocs.ts"],"names":[],"mappings":"AAoBA;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,MAAM,WAAW,gBAAgB;IAC/B,wDAAwD;IACxD,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,YAAY,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,4BAA4B;IAC3C,SAAS,EAAE,gBAAgB,EAAE,CAAC;IAC9B,mEAAmE;IACnE,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB;;;OAGG;IACH,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB;;;OAGG;IACH,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AA6DD;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAQxD;AAED,gFAAgF;AAChF,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAoCvE;AA8BD;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEvD;AAkMD;;;;;;;GAOG;AACH,wBAAsB,sBAAsB,CAAC,OAAO,EAAE;IACpD,QAAQ,EAAE,MAAM,CAAC;IACjB,6CAA6C;IAC7C,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,cAAc,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACpC,GAAG,OAAO,CAAC,4BAA4B,CAAC,CAuExC"}
@@ -1,9 +1,10 @@
1
1
  import { readdir, readFile, writeFile } from 'node:fs/promises';
2
2
  import { basename, extname, join, posix } from 'node:path';
3
3
  import { isDeepStrictEqual } from 'node:util';
4
+ import { createExclusionMatcher, } from '../../docs/shared/exclusions.js';
4
5
  import { getFrontmatterBlock, parseFrontmatterScalarFields, } from '../../shared/frontmatter.js';
5
6
  import { fileExists } from '../../../fs/io.js';
6
- import { parseIndexContents, resolveEntryTarget } from './contents.js';
7
+ import { parseIndexContents, resolveEntryTarget, } from './contents.js';
7
8
  const PAGE_EXTENSIONS = ['.md', '.mdx'];
8
9
  const GROUP_FOLDER = /^\(.+\)$/;
9
10
  // The `pages` item grammar of the fumadocs-core 16.10.2 page-tree builder
@@ -18,7 +19,7 @@ const FENCE = /^\s*(```|~~~)/;
18
19
  function parentDir(path) {
19
20
  return posix.dirname(path);
20
21
  }
21
- async function inventoryDocs(docsRoot) {
22
+ async function inventoryDocs(docsRoot, matcher) {
22
23
  const directories = [];
23
24
  const pages = [];
24
25
  async function walk(relativeDir) {
@@ -32,11 +33,14 @@ async function inventoryDocs(docsRoot) {
32
33
  }
33
34
  const entryPath = posix.join(relativeDir, entry.name);
34
35
  if (entry.isDirectory()) {
36
+ if (matcher.excludesDirectory(entryPath))
37
+ continue;
35
38
  await walk(entryPath);
36
39
  }
37
40
  else if (entry.isFile() &&
38
41
  PAGE_EXTENSIONS.includes(extname(entry.name))) {
39
- pages.push(entryPath);
42
+ if (!matcher.excludesFile(entryPath))
43
+ pages.push(entryPath);
40
44
  }
41
45
  }
42
46
  }
@@ -150,13 +154,15 @@ function hrefFragment(href) {
150
154
  * only if `pages` lists it.
151
155
  */
152
156
  function hasImplicitIndex(relativeDir, existing) {
153
- if (relativeDir === '.' || existing?.root === true) {
157
+ if (relativeDir === '.' ||
158
+ existing?.root === true ||
159
+ (typeof existing?.root === 'string' && existing.root.trim().length > 0)) {
154
160
  return false;
155
161
  }
156
162
  const pagesIndex = existing?.pagesIndex;
157
163
  return pagesIndex === undefined || pagesIndex === 'index';
158
164
  }
159
- async function buildFolderPages(docsRoot, relativeDir, markdown, implicitIndex) {
165
+ async function buildFolderPages(docsRoot, relativeDir, markdown, implicitIndex, matcher) {
160
166
  const indexPath = join(docsRoot, relativeDir, 'index.md');
161
167
  const entries = parseIndexContents(markdown, indexPath);
162
168
  // A folder the loader gives no implicit index (the docs root, a `root: true`
@@ -164,8 +170,11 @@ async function buildFolderPages(docsRoot, relativeDir, markdown, implicitIndex)
164
170
  // `index` would demote the folder index to an ordinary child, so it is left
165
171
  // implicit.
166
172
  const pages = implicitIndex ? [] : ['index'];
173
+ let currentGroup;
167
174
  for (const entry of entries) {
168
- const target = await resolveEntryTarget(docsRoot, join(docsRoot, relativeDir), relativeDir, entry, PAGE_EXTENSIONS);
175
+ const target = await resolveEntryTarget(docsRoot, join(docsRoot, relativeDir), relativeDir, entry, PAGE_EXTENSIONS, matcher);
176
+ if (target.kind === 'excluded')
177
+ continue;
169
178
  const targetDir = parentDir(target.path);
170
179
  let item;
171
180
  if (target.kind === 'section' && targetDir === relativeDir) {
@@ -182,6 +191,12 @@ async function buildFolderPages(docsRoot, relativeDir, markdown, implicitIndex)
182
191
  item = `[${entry.title}](${pageUrl(target.path)}${hrefFragment(entry.href)})`;
183
192
  }
184
193
  if (!pages.includes(item)) {
194
+ if (entry.group !== currentGroup) {
195
+ currentGroup = entry.group;
196
+ // A leading space prevents the loader treating a literal [label] as an icon.
197
+ const title = currentGroup.title;
198
+ pages.push(`---${title.startsWith('[') ? ' ' : ''}${title}---`);
199
+ }
185
200
  pages.push(item);
186
201
  }
187
202
  }
@@ -274,13 +289,15 @@ function collectUnlisted(inventory, metas, implicitIndexDirs) {
274
289
  */
275
290
  export async function syncFumadocsNavigation(options) {
276
291
  const { docsRoot } = options;
277
- const inventory = await inventoryDocs(docsRoot);
292
+ const matcher = createExclusionMatcher(options.nonReaderPaths ?? []);
293
+ const inventory = await inventoryDocs(docsRoot, matcher);
278
294
  const metas = new Map();
279
295
  const existingMetas = new Map();
280
296
  const implicitIndexDirs = new Set();
281
297
  for (const relativeDir of inventory.directories) {
282
298
  const indexPath = join(docsRoot, relativeDir, 'index.md');
283
- if (!(await fileExists(indexPath))) {
299
+ if (matcher.excludesFile(posix.join(relativeDir, 'index.md')) ||
300
+ !(await fileExists(indexPath))) {
284
301
  continue;
285
302
  }
286
303
  // Index handling depends on the effective metadata, which keeps the
@@ -295,7 +312,7 @@ export async function syncFumadocsNavigation(options) {
295
312
  const title = resolveFolderTitle(markdown);
296
313
  metas.set(relativeDir, {
297
314
  ...(title === undefined ? {} : { title }),
298
- pages: await buildFolderPages(docsRoot, relativeDir, markdown, implicitIndex),
315
+ pages: await buildFolderPages(docsRoot, relativeDir, markdown, implicitIndex, matcher),
299
316
  });
300
317
  }
301
318
  if (!metas.has('.')) {
@@ -12,6 +12,7 @@ interface SyncDocsNavigationOptions {
12
12
  configuredTooling?: string | null;
13
13
  /** Compute the navigation and compare it with the files; write nothing. */
14
14
  check?: boolean;
15
+ nonReaderPaths?: readonly string[];
15
16
  }
16
17
  interface MkDocsNavigationResult {
17
18
  framework: 'mkdocs';
@@ -35,6 +36,7 @@ type SyncDocsNavigationResult = MkDocsNavigationResult | FumadocsNavigationResul
35
36
  interface DocsNavSyncDependencies {
36
37
  buildCommandContext: (options: GlobalOptions) => CommandContext;
37
38
  resolveConfiguredTooling: (cwd: string, appRoot: string) => Promise<string | null>;
39
+ resolveNonReaderPaths?: (cwd: string, appRoot: string) => Promise<string[]>;
38
40
  syncDocsNavigation: (options: SyncDocsNavigationOptions) => Promise<SyncDocsNavigationResult>;
39
41
  }
40
42
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../../../src/commands/docs/nav/sync.ts"],"names":[],"mappings":"AAGA,OAAO,EAEL,KAAK,cAAc,EACnB,KAAK,aAAa,EACnB,MAAM,sBAAsB,CAAC;AAK9B,OAAO,EAAE,OAAO,EAAU,MAAM,WAAW,CAAC;AAG5C,OAAO,EAAoB,KAAK,WAAW,EAAE,MAAM,YAAY,CAAC;AAChE,OAAO,EAA0B,KAAK,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAE3E,MAAM,MAAM,gBAAgB,GAAG,UAAU,GAAG,QAAQ,CAAC;AAOrD,UAAU,yBAAyB;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,2EAA2E;IAC3E,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,UAAU,sBAAsB;IAC9B,SAAS,EAAE,QAAQ,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,GAAG,EAAE,WAAW,CAAC;IACjB,uEAAuE;IACvE,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,UAAU,wBAAwB;IAChC,SAAS,EAAE,UAAU,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,gBAAgB,EAAE,CAAC;IAC9B,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,KAAK,wBAAwB,GACzB,sBAAsB,GACtB,wBAAwB,CAAC;AAE7B,UAAU,uBAAuB;IAC/B,mBAAmB,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,cAAc,CAAC;IAChE,wBAAwB,EAAE,CACxB,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,KACZ,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAC5B,kBAAkB,EAAE,CAClB,OAAO,EAAE,yBAAyB,KAC/B,OAAO,CAAC,wBAAwB,CAAC,CAAC;CACxC;AAsBD;;;;;GAKG;AACH,wBAAsB,sBAAsB,CAC1C,OAAO,EAAE,MAAM,EACf,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,GAChC,OAAO,CAAC,gBAAgB,CAAC,CAe3B;AAqDD,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,yBAAyB,GACjC,OAAO,CAAC,wBAAwB,CAAC,CA0CnC;AAmJD,wBAAgB,wBAAwB,CACtC,SAAS,GAAE,OAAO,CAAC,uBAAuB,CAAM,GAC/C,OAAO,CA4BT"}
1
+ {"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../../../src/commands/docs/nav/sync.ts"],"names":[],"mappings":"AAGA,OAAO,EAEL,KAAK,cAAc,EACnB,KAAK,aAAa,EACnB,MAAM,sBAAsB,CAAC;AAK9B,OAAO,EAAE,OAAO,EAAU,MAAM,WAAW,CAAC;AAG5C,OAAO,EAAoB,KAAK,WAAW,EAAE,MAAM,YAAY,CAAC;AAChE,OAAO,EAA0B,KAAK,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAE3E,MAAM,MAAM,gBAAgB,GAAG,UAAU,GAAG,QAAQ,CAAC;AAOrD,UAAU,yBAAyB;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,2EAA2E;IAC3E,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,cAAc,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACpC;AAED,UAAU,sBAAsB;IAC9B,SAAS,EAAE,QAAQ,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,GAAG,EAAE,WAAW,CAAC;IACjB,uEAAuE;IACvE,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,UAAU,wBAAwB;IAChC,SAAS,EAAE,UAAU,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,gBAAgB,EAAE,CAAC;IAC9B,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,KAAK,wBAAwB,GACzB,sBAAsB,GACtB,wBAAwB,CAAC;AAE7B,UAAU,uBAAuB;IAC/B,mBAAmB,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,cAAc,CAAC;IAChE,wBAAwB,EAAE,CACxB,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,KACZ,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAC5B,qBAAqB,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAC5E,kBAAkB,EAAE,CAClB,OAAO,EAAE,yBAAyB,KAC/B,OAAO,CAAC,wBAAwB,CAAC,CAAC;CACxC;AAsBD;;;;;GAKG;AACH,wBAAsB,sBAAsB,CAC1C,OAAO,EAAE,MAAM,EACf,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,GAChC,OAAO,CAAC,gBAAgB,CAAC,CAe3B;AAuED,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,yBAAyB,GACjC,OAAO,CAAC,wBAAwB,CAAC,CA8CnC;AAuJD,wBAAgB,wBAAwB,CACtC,SAAS,GAAE,OAAO,CAAC,uBAAuB,CAAM,GAC/C,OAAO,CA4BT"}
@@ -58,9 +58,24 @@ async function resolveConfiguredTooling(cwd, appRoot) {
58
58
  return null;
59
59
  }
60
60
  }
61
+ async function resolveNonReaderPaths(cwd, appRoot) {
62
+ let repoRoot;
63
+ try {
64
+ repoRoot = await resolveProjectRoot(cwd);
65
+ }
66
+ catch {
67
+ return [];
68
+ } // Explicit app targets also work outside a configured repository.
69
+ const config = await readOatConfig(repoRoot);
70
+ const root = config.documentation?.root?.trim();
71
+ return root && resolve(repoRoot, root) === appRoot
72
+ ? (config.documentation?.nonReaderPaths ?? [])
73
+ : [];
74
+ }
61
75
  const DEFAULT_DEPENDENCIES = {
62
76
  buildCommandContext,
63
77
  resolveConfiguredTooling,
78
+ resolveNonReaderPaths,
64
79
  syncDocsNavigation,
65
80
  };
66
81
  function replaceTopLevelYamlSection(source, key, replacement) {
@@ -90,6 +105,7 @@ export async function syncDocsNavigation(options) {
90
105
  const result = await syncFumadocsNavigation({
91
106
  docsRoot,
92
107
  check: options.check,
108
+ nonReaderPaths: options.nonReaderPaths,
93
109
  });
94
110
  return {
95
111
  framework,
@@ -99,7 +115,10 @@ export async function syncDocsNavigation(options) {
99
115
  };
100
116
  }
101
117
  const mkdocsPath = join(options.appRoot, 'mkdocs.yml');
102
- const nav = await buildDocsNavTree({ docsRoot });
118
+ const nav = await buildDocsNavTree({
119
+ docsRoot,
120
+ nonReaderPaths: options.nonReaderPaths,
121
+ });
103
122
  const mkdocsSource = await readFile(mkdocsPath, 'utf8');
104
123
  const navSection = YAML.stringify({ nav }).trimEnd();
105
124
  const updatedMkdocsSource = replaceTopLevelYamlSection(mkdocsSource, 'nav', navSection);
@@ -198,6 +217,7 @@ async function runDocsNavSyncCommand(context, options, dependencies) {
198
217
  appRoot,
199
218
  configuredTooling: await dependencies.resolveConfiguredTooling(context.cwd, appRoot),
200
219
  check: options.check === true,
220
+ nonReaderPaths: await dependencies.resolveNonReaderPaths?.(context.cwd, appRoot),
201
221
  });
202
222
  if (options.check) {
203
223
  process.exitCode = reportCheckResult(context, targetDir, result) ? 0 : 1;
@@ -0,0 +1,37 @@
1
+ /**
2
+ * A compiled exclusion list.
3
+ *
4
+ * Files and directories are asked separately so a trailing-slash pattern can
5
+ * mean "directories only" while every other pattern applies to both.
6
+ */
7
+ export interface ExclusionMatcher {
8
+ excludesFile: (relativePath: string) => boolean;
9
+ excludesDirectory: (relativePath: string) => boolean;
10
+ }
11
+ /**
12
+ * Compile exclusion globs matched against **docs-root-relative POSIX paths**
13
+ * (`api/auth.md`, `api/nested`), never against absolute or CWD-relative ones.
14
+ *
15
+ * Grammar, defined once and documented in
16
+ * `apps/oat-docs/docs/reference/oat-directory-structure.md`:
17
+ *
18
+ * - `*` matches any run of characters inside a single path segment.
19
+ * - `**` spans `/` only as a whole segment, where it covers zero or more
20
+ * segments: `**\/CLAUDE.md` matches `CLAUDE.md` and `api/CLAUDE.md`. Inside a
21
+ * segment (`a**b`) it is an ordinary single-segment wildcard.
22
+ * - Patterns are anchored at both ends against the whole relative path, so a
23
+ * bare `CLAUDE.md` matches only the root-level file. Use `**\/CLAUDE.md` for
24
+ * every depth.
25
+ * - A trailing `/` restricts a pattern to directories: `drafts/` prunes the
26
+ * `drafts` directory and everything beneath it, and never matches a file.
27
+ * Without it, a pattern that matches a directory path prunes it too.
28
+ * - Matching is case-sensitive, `/` is the separator on every platform, and
29
+ * `*` is the only metacharacter — `.`, `+`, and friends are literal.
30
+ *
31
+ * Entries are trimmed; a leading `./` or `/` is stripped so both spellings
32
+ * anchor at the docs root. Blank entries are ignored.
33
+ */
34
+ export declare function createExclusionMatcher(patterns: readonly string[]): ExclusionMatcher;
35
+ /** Explicit Contents targets must also respect pruned ancestor directories. */
36
+ export declare function isExcludedPath(matcher: ExclusionMatcher, path: string, directory?: boolean): boolean;
37
+ //# sourceMappingURL=exclusions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exclusions.d.ts","sourceRoot":"","sources":["../../../../src/commands/docs/shared/exclusions.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,WAAW,gBAAgB;IAC/B,YAAY,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,OAAO,CAAC;IAChD,iBAAiB,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,OAAO,CAAC;CACtD;AAmHD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,SAAS,MAAM,EAAE,GAC1B,gBAAgB,CAwClB;AAED,+EAA+E;AAC/E,wBAAgB,cAAc,CAC5B,OAAO,EAAE,gBAAgB,EACzB,IAAI,EAAE,MAAM,EACZ,SAAS,UAAQ,GAChB,OAAO,CAQT"}
@@ -0,0 +1,161 @@
1
+ const NO_EXCLUSIONS = {
2
+ excludesFile: () => false,
3
+ excludesDirectory: () => false,
4
+ };
5
+ /**
6
+ * Match one path segment against one pattern segment, where `*` is the only
7
+ * metacharacter and never crosses `/`.
8
+ *
9
+ * This is the classic greedy two-pointer wildcard match, deliberately not a
10
+ * compiled regular expression: a pattern like `*a*a*a...` translates to
11
+ * nested-quantifier alternatives that backtrack exponentially, and exclusion
12
+ * patterns come from config and flags where a typo should not hang generation.
13
+ * Restarting from the last `*` instead bounds the work at O(pattern x text).
14
+ */
15
+ function matchSegment(pattern, text) {
16
+ let patternIndex = 0;
17
+ let textIndex = 0;
18
+ let starPatternIndex = -1;
19
+ let starTextIndex = 0;
20
+ while (textIndex < text.length) {
21
+ if (pattern[patternIndex] === '*') {
22
+ // Collapse a run of stars: within a segment they are all equivalent.
23
+ while (pattern[patternIndex] === '*') {
24
+ patternIndex += 1;
25
+ }
26
+ if (patternIndex === pattern.length) {
27
+ return true;
28
+ }
29
+ starPatternIndex = patternIndex;
30
+ starTextIndex = textIndex;
31
+ continue;
32
+ }
33
+ if (patternIndex < pattern.length &&
34
+ pattern[patternIndex] === text[textIndex]) {
35
+ patternIndex += 1;
36
+ textIndex += 1;
37
+ continue;
38
+ }
39
+ if (starPatternIndex === -1) {
40
+ return false;
41
+ }
42
+ // Give the last star one more character and retry from just after it.
43
+ starTextIndex += 1;
44
+ patternIndex = starPatternIndex;
45
+ textIndex = starTextIndex;
46
+ }
47
+ while (pattern[patternIndex] === '*') {
48
+ patternIndex += 1;
49
+ }
50
+ return patternIndex === pattern.length;
51
+ }
52
+ /**
53
+ * Match a docs-root-relative path against a pattern, segment by segment, where
54
+ * a whole-segment `**` spans zero or more path segments.
55
+ *
56
+ * Same greedy-restart shape as {@link matchSegment}, one level up, so a pattern
57
+ * full of `**` segments stays bounded too.
58
+ */
59
+ function matchPath(patternSegments, pathSegments) {
60
+ let patternIndex = 0;
61
+ let pathIndex = 0;
62
+ let starPatternIndex = -1;
63
+ let starPathIndex = 0;
64
+ while (pathIndex < pathSegments.length) {
65
+ if (patternSegments[patternIndex] === '**') {
66
+ while (patternSegments[patternIndex] === '**') {
67
+ patternIndex += 1;
68
+ }
69
+ if (patternIndex === patternSegments.length) {
70
+ return true;
71
+ }
72
+ starPatternIndex = patternIndex;
73
+ starPathIndex = pathIndex;
74
+ continue;
75
+ }
76
+ if (patternIndex < patternSegments.length &&
77
+ matchSegment(patternSegments[patternIndex], pathSegments[pathIndex])) {
78
+ patternIndex += 1;
79
+ pathIndex += 1;
80
+ continue;
81
+ }
82
+ if (starPatternIndex === -1) {
83
+ return false;
84
+ }
85
+ starPathIndex += 1;
86
+ patternIndex = starPatternIndex;
87
+ pathIndex = starPathIndex;
88
+ }
89
+ while (patternSegments[patternIndex] === '**') {
90
+ patternIndex += 1;
91
+ }
92
+ return patternIndex === patternSegments.length;
93
+ }
94
+ /**
95
+ * Compile exclusion globs matched against **docs-root-relative POSIX paths**
96
+ * (`api/auth.md`, `api/nested`), never against absolute or CWD-relative ones.
97
+ *
98
+ * Grammar, defined once and documented in
99
+ * `apps/oat-docs/docs/reference/oat-directory-structure.md`:
100
+ *
101
+ * - `*` matches any run of characters inside a single path segment.
102
+ * - `**` spans `/` only as a whole segment, where it covers zero or more
103
+ * segments: `**\/CLAUDE.md` matches `CLAUDE.md` and `api/CLAUDE.md`. Inside a
104
+ * segment (`a**b`) it is an ordinary single-segment wildcard.
105
+ * - Patterns are anchored at both ends against the whole relative path, so a
106
+ * bare `CLAUDE.md` matches only the root-level file. Use `**\/CLAUDE.md` for
107
+ * every depth.
108
+ * - A trailing `/` restricts a pattern to directories: `drafts/` prunes the
109
+ * `drafts` directory and everything beneath it, and never matches a file.
110
+ * Without it, a pattern that matches a directory path prunes it too.
111
+ * - Matching is case-sensitive, `/` is the separator on every platform, and
112
+ * `*` is the only metacharacter — `.`, `+`, and friends are literal.
113
+ *
114
+ * Entries are trimmed; a leading `./` or `/` is stripped so both spellings
115
+ * anchor at the docs root. Blank entries are ignored.
116
+ */
117
+ export function createExclusionMatcher(patterns) {
118
+ const filePatterns = [];
119
+ const directoryPatterns = [];
120
+ for (const rawPattern of patterns) {
121
+ const trimmedPattern = rawPattern.trim();
122
+ if (!trimmedPattern) {
123
+ continue;
124
+ }
125
+ const directoryOnly = trimmedPattern.endsWith('/');
126
+ const normalized = trimmedPattern
127
+ .replace(/\/+$/, '')
128
+ .replace(/^\.\//, '')
129
+ .replace(/^\/+/, '');
130
+ if (!normalized) {
131
+ continue;
132
+ }
133
+ const segments = normalized.split('/');
134
+ directoryPatterns.push(segments);
135
+ if (!directoryOnly) {
136
+ filePatterns.push(segments);
137
+ }
138
+ }
139
+ if (directoryPatterns.length === 0) {
140
+ return NO_EXCLUSIONS;
141
+ }
142
+ const matches = (compiled, relativePath) => {
143
+ const pathSegments = relativePath.split('/');
144
+ return compiled.some((segments) => matchPath(segments, pathSegments));
145
+ };
146
+ return {
147
+ excludesFile: (relativePath) => matches(filePatterns, relativePath),
148
+ excludesDirectory: (relativePath) => matches(directoryPatterns, relativePath),
149
+ };
150
+ }
151
+ /** Explicit Contents targets must also respect pruned ancestor directories. */
152
+ export function isExcludedPath(matcher, path, directory = false) {
153
+ const parts = path.split('/');
154
+ for (let i = 1; i < parts.length; i += 1) {
155
+ if (matcher.excludesDirectory(parts.slice(0, i).join('/')))
156
+ return true;
157
+ }
158
+ return directory
159
+ ? matcher.excludesDirectory(path)
160
+ : matcher.excludesFile(path);
161
+ }
@@ -35,6 +35,8 @@ export interface OatDocumentationIa {
35
35
  export interface OatDocumentationConfig {
36
36
  /** Repository-only mirror; the authored decision and local guidance own IA. */
37
37
  ia?: OatDocumentationIa;
38
+ /** Content-root-relative globs excluded from reader navigation and manifests. */
39
+ nonReaderPaths?: string[];
38
40
  /** Absent is undeclared. Markdown ignores sidebar ownership. */
39
41
  navOwner?: 'nav-sync' | 'hand-authored';
40
42
  /** Ordered advisory IA source paths/URLs; selected as a layer, never merged. */
@@ -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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"}
@@ -860,13 +860,13 @@ async function normalizeReadableProjectPath(repoRoot, pathValue) {
860
860
  * publish pages the operator believed were excluded, with no signal anywhere.
861
861
  * An absent key and an empty array are both "no exclusions".
862
862
  */
863
- function normalizeDocumentationExcludes(value, configPath) {
863
+ function normalizeDocumentationExcludes(value, configPath, key = 'excludes') {
864
864
  if (value === undefined) {
865
865
  return [];
866
866
  }
867
867
  const invalid = () => {
868
- throw new CliError(`Invalid documentation.excludes in ${configPath}: expected an array of non-empty strings. ` +
869
- 'Repair it with oat config set documentation.excludes "<glob>,<glob>" (an empty value clears it).', 2);
868
+ throw new CliError(`Invalid documentation.${key} in ${configPath}: expected an array of non-empty strings. ` +
869
+ `Repair it with oat config set documentation.${key} "<glob>,<glob>" (an empty value clears it).`, 2);
870
870
  };
871
871
  if (!Array.isArray(value)) {
872
872
  invalid();
@@ -1097,6 +1097,9 @@ function normalizeOatConfig(parsed, configPath = '.oat/config.json', onWarning)
1097
1097
  doc.requireForProjectCompletion =
1098
1098
  parsed.documentation.requireForProjectCompletion;
1099
1099
  }
1100
+ const nonReaderPaths = normalizeDocumentationExcludes(parsed.documentation.nonReaderPaths, configPath, 'nonReaderPaths');
1101
+ if (nonReaderPaths.length > 0)
1102
+ doc.nonReaderPaths = nonReaderPaths;
1100
1103
  const excludes = normalizeDocumentationExcludes(parsed.documentation.excludes, configPath);
1101
1104
  if (excludes.length > 0) {
1102
1105
  doc.excludes = excludes;