@mfittko/repo-wiki 0.2.1

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 (190) hide show
  1. package/.llmwiki/schema.md +107 -0
  2. package/AGENTS.md +42 -0
  3. package/CHANGELOG.md +91 -0
  4. package/LICENSE +21 -0
  5. package/README.md +254 -0
  6. package/dist/bin/repo-wiki.d.ts +2 -0
  7. package/dist/bin/repo-wiki.js +7 -0
  8. package/dist/bin/repo-wiki.js.map +1 -0
  9. package/dist/src/cli.d.ts +1 -0
  10. package/dist/src/cli.js +404 -0
  11. package/dist/src/cli.js.map +1 -0
  12. package/dist/src/compiler.d.ts +55 -0
  13. package/dist/src/compiler.js +2046 -0
  14. package/dist/src/compiler.js.map +1 -0
  15. package/dist/src/config.d.ts +63 -0
  16. package/dist/src/config.js +86 -0
  17. package/dist/src/config.js.map +1 -0
  18. package/dist/src/context-assembler.d.ts +68 -0
  19. package/dist/src/context-assembler.js +378 -0
  20. package/dist/src/context-assembler.js.map +1 -0
  21. package/dist/src/data-model-signals.d.ts +1 -0
  22. package/dist/src/data-model-signals.js +13 -0
  23. package/dist/src/data-model-signals.js.map +1 -0
  24. package/dist/src/docs-ingestor.d.ts +138 -0
  25. package/dist/src/docs-ingestor.js +844 -0
  26. package/dist/src/docs-ingestor.js.map +1 -0
  27. package/dist/src/docs-linter.d.ts +14 -0
  28. package/dist/src/docs-linter.js +164 -0
  29. package/dist/src/docs-linter.js.map +1 -0
  30. package/dist/src/docs-validation.d.ts +36 -0
  31. package/dist/src/docs-validation.js +297 -0
  32. package/dist/src/docs-validation.js.map +1 -0
  33. package/dist/src/extractors.d.ts +50 -0
  34. package/dist/src/extractors.js +2275 -0
  35. package/dist/src/extractors.js.map +1 -0
  36. package/dist/src/frontmatter.d.ts +46 -0
  37. package/dist/src/frontmatter.js +377 -0
  38. package/dist/src/frontmatter.js.map +1 -0
  39. package/dist/src/index.d.ts +26 -0
  40. package/dist/src/index.js +18 -0
  41. package/dist/src/index.js.map +1 -0
  42. package/dist/src/init.d.ts +12 -0
  43. package/dist/src/init.js +121 -0
  44. package/dist/src/init.js.map +1 -0
  45. package/dist/src/language.d.ts +2 -0
  46. package/dist/src/language.js +62 -0
  47. package/dist/src/language.js.map +1 -0
  48. package/dist/src/linter.d.ts +33 -0
  49. package/dist/src/linter.js +398 -0
  50. package/dist/src/linter.js.map +1 -0
  51. package/dist/src/llm-provider.d.ts +267 -0
  52. package/dist/src/llm-provider.js +474 -0
  53. package/dist/src/llm-provider.js.map +1 -0
  54. package/dist/src/page-ownership.d.ts +38 -0
  55. package/dist/src/page-ownership.js +96 -0
  56. package/dist/src/page-ownership.js.map +1 -0
  57. package/dist/src/planner.d.ts +55 -0
  58. package/dist/src/planner.js +422 -0
  59. package/dist/src/planner.js.map +1 -0
  60. package/dist/src/prompts.d.ts +103 -0
  61. package/dist/src/prompts.js +344 -0
  62. package/dist/src/prompts.js.map +1 -0
  63. package/dist/src/publisher.d.ts +68 -0
  64. package/dist/src/publisher.js +662 -0
  65. package/dist/src/publisher.js.map +1 -0
  66. package/dist/src/repository-analysis.d.ts +88 -0
  67. package/dist/src/repository-analysis.js +485 -0
  68. package/dist/src/repository-analysis.js.map +1 -0
  69. package/dist/src/scanner.d.ts +122 -0
  70. package/dist/src/scanner.js +309 -0
  71. package/dist/src/scanner.js.map +1 -0
  72. package/dist/src/search.d.ts +71 -0
  73. package/dist/src/search.js +410 -0
  74. package/dist/src/search.js.map +1 -0
  75. package/dist/src/secret-patterns.d.ts +3 -0
  76. package/dist/src/secret-patterns.js +14 -0
  77. package/dist/src/secret-patterns.js.map +1 -0
  78. package/dist/src/utils/args.d.ts +2 -0
  79. package/dist/src/utils/args.js +19 -0
  80. package/dist/src/utils/args.js.map +1 -0
  81. package/dist/src/utils/dotenv.d.ts +7 -0
  82. package/dist/src/utils/dotenv.js +73 -0
  83. package/dist/src/utils/dotenv.js.map +1 -0
  84. package/dist/src/utils/fs.d.ts +22 -0
  85. package/dist/src/utils/fs.js +83 -0
  86. package/dist/src/utils/fs.js.map +1 -0
  87. package/dist/src/utils/git.d.ts +13 -0
  88. package/dist/src/utils/git.js +39 -0
  89. package/dist/src/utils/git.js.map +1 -0
  90. package/dist/src/wiki-graph.d.ts +74 -0
  91. package/dist/src/wiki-graph.js +335 -0
  92. package/dist/src/wiki-graph.js.map +1 -0
  93. package/dist/src/wiki-patch.d.ts +152 -0
  94. package/dist/src/wiki-patch.js +489 -0
  95. package/dist/src/wiki-patch.js.map +1 -0
  96. package/dist/src/wiki-query.d.ts +63 -0
  97. package/dist/src/wiki-query.js +255 -0
  98. package/dist/src/wiki-query.js.map +1 -0
  99. package/dist/test/cli.test.d.ts +1 -0
  100. package/dist/test/cli.test.js +514 -0
  101. package/dist/test/cli.test.js.map +1 -0
  102. package/dist/test/compiler-eval.test.d.ts +1 -0
  103. package/dist/test/compiler-eval.test.js +234 -0
  104. package/dist/test/compiler-eval.test.js.map +1 -0
  105. package/dist/test/compiler.test.d.ts +1 -0
  106. package/dist/test/compiler.test.js +2537 -0
  107. package/dist/test/compiler.test.js.map +1 -0
  108. package/dist/test/context-assembler.test.d.ts +1 -0
  109. package/dist/test/context-assembler.test.js +379 -0
  110. package/dist/test/context-assembler.test.js.map +1 -0
  111. package/dist/test/docs-linter.test.d.ts +1 -0
  112. package/dist/test/docs-linter.test.js +900 -0
  113. package/dist/test/docs-linter.test.js.map +1 -0
  114. package/dist/test/dotenv.test.d.ts +1 -0
  115. package/dist/test/dotenv.test.js +77 -0
  116. package/dist/test/dotenv.test.js.map +1 -0
  117. package/dist/test/extractors-go.test.d.ts +1 -0
  118. package/dist/test/extractors-go.test.js +393 -0
  119. package/dist/test/extractors-go.test.js.map +1 -0
  120. package/dist/test/extractors-rust.test.d.ts +1 -0
  121. package/dist/test/extractors-rust.test.js +219 -0
  122. package/dist/test/extractors-rust.test.js.map +1 -0
  123. package/dist/test/extractors-utils.test.d.ts +1 -0
  124. package/dist/test/extractors-utils.test.js +786 -0
  125. package/dist/test/extractors-utils.test.js.map +1 -0
  126. package/dist/test/fixtures/compiler-e2e/basic-node-service/repo/infra/deploy.d.ts +1 -0
  127. package/dist/test/fixtures/compiler-e2e/basic-node-service/repo/infra/deploy.js +4 -0
  128. package/dist/test/fixtures/compiler-e2e/basic-node-service/repo/infra/deploy.js.map +1 -0
  129. package/dist/test/frontmatter.test.d.ts +1 -0
  130. package/dist/test/frontmatter.test.js +287 -0
  131. package/dist/test/frontmatter.test.js.map +1 -0
  132. package/dist/test/init-planner.test.d.ts +1 -0
  133. package/dist/test/init-planner.test.js +688 -0
  134. package/dist/test/init-planner.test.js.map +1 -0
  135. package/dist/test/linter.test.d.ts +1 -0
  136. package/dist/test/linter.test.js +426 -0
  137. package/dist/test/linter.test.js.map +1 -0
  138. package/dist/test/llm-provider.test.d.ts +1 -0
  139. package/dist/test/llm-provider.test.js +783 -0
  140. package/dist/test/llm-provider.test.js.map +1 -0
  141. package/dist/test/page-ownership.test.d.ts +1 -0
  142. package/dist/test/page-ownership.test.js +247 -0
  143. package/dist/test/page-ownership.test.js.map +1 -0
  144. package/dist/test/publisher.test.d.ts +1 -0
  145. package/dist/test/publisher.test.js +1297 -0
  146. package/dist/test/publisher.test.js.map +1 -0
  147. package/dist/test/repository-analysis.test.d.ts +1 -0
  148. package/dist/test/repository-analysis.test.js +182 -0
  149. package/dist/test/repository-analysis.test.js.map +1 -0
  150. package/dist/test/run-compiled-tests.d.ts +1 -0
  151. package/dist/test/run-compiled-tests.js +48 -0
  152. package/dist/test/run-compiled-tests.js.map +1 -0
  153. package/dist/test/scanner.test.d.ts +1 -0
  154. package/dist/test/scanner.test.js +551 -0
  155. package/dist/test/scanner.test.js.map +1 -0
  156. package/dist/test/search.test.d.ts +1 -0
  157. package/dist/test/search.test.js +92 -0
  158. package/dist/test/search.test.js.map +1 -0
  159. package/dist/test/update-changelog.test.d.ts +1 -0
  160. package/dist/test/update-changelog.test.js +125 -0
  161. package/dist/test/update-changelog.test.js.map +1 -0
  162. package/dist/test/wiki-graph.test.d.ts +1 -0
  163. package/dist/test/wiki-graph.test.js +164 -0
  164. package/dist/test/wiki-graph.test.js.map +1 -0
  165. package/dist/test/wiki-patch.test.d.ts +1 -0
  166. package/dist/test/wiki-patch.test.js +610 -0
  167. package/dist/test/wiki-patch.test.js.map +1 -0
  168. package/dist/test/wiki-query.test.d.ts +1 -0
  169. package/dist/test/wiki-query.test.js +163 -0
  170. package/dist/test/wiki-query.test.js.map +1 -0
  171. package/docs/PLAN.md +993 -0
  172. package/docs/WHY.md +61 -0
  173. package/docs/plans/agent-integration.md +85 -0
  174. package/docs/plans/ci-publishing.md +111 -0
  175. package/docs/plans/doc-validation.md +92 -0
  176. package/docs/plans/github-action.md +113 -0
  177. package/docs/plans/incremental-mode.md +98 -0
  178. package/docs/plans/karpathy-llm-wiki-alignment.md +84 -0
  179. package/docs/plans/llm-compiler.md +160 -0
  180. package/docs/plans/production-scanner.md +104 -0
  181. package/docs/plans/query-and-file-back.md +103 -0
  182. package/docs/plans/search-index.md +118 -0
  183. package/docs/plans/trust-hardening.md +74 -0
  184. package/docs/plans/wiki-graph.md +183 -0
  185. package/docs/plans/wiki-health.md +76 -0
  186. package/package.json +83 -0
  187. package/prompts/compiler.md +16 -0
  188. package/prompts/lint.md +18 -0
  189. package/prompts/page-templates.md +25 -0
  190. package/skills/repo-wiki-cli/SKILL.md +139 -0
@@ -0,0 +1,514 @@
1
+ import test from 'node:test';
2
+ import assert from 'node:assert/strict';
3
+ import { access, mkdir, mkdtemp, rm, writeFile } from 'node:fs/promises';
4
+ import { execFile } from 'node:child_process';
5
+ import { promisify } from 'node:util';
6
+ import { fileURLToPath } from 'node:url';
7
+ import os from 'node:os';
8
+ import path from 'node:path';
9
+ const execFileAsync = promisify(execFile);
10
+ const cliPath = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '../bin/repo-wiki.js');
11
+ async function captureCli(argv, cwd) {
12
+ const result = await execFileAsync(process.execPath, [cliPath, ...argv], { cwd });
13
+ return { stdout: result.stdout.trim(), stderr: result.stderr.trim() };
14
+ }
15
+ async function captureCliResult(argv, cwd) {
16
+ try {
17
+ const result = await execFileAsync(process.execPath, [cliPath, ...argv], { cwd });
18
+ return { stdout: result.stdout.trim(), stderr: result.stderr.trim(), exitCode: 0 };
19
+ }
20
+ catch (error) {
21
+ const exitCode = typeof error?.code === 'number' ? error.code : 1;
22
+ return {
23
+ stdout: String(error.stdout || '').trim(),
24
+ stderr: String(error.stderr || '').trim(),
25
+ exitCode
26
+ };
27
+ }
28
+ }
29
+ test('CLI help describes GitHub Wiki and GitHub Pages publish targets', async () => {
30
+ const tempDir = await mkdtemp(path.join(os.tmpdir(), 'repo-wiki-cli-test-'));
31
+ try {
32
+ const { stdout } = await captureCli(['--help'], tempDir);
33
+ assert.match(stdout, /publish\s+Push local wiki pages to GitHub Wiki or GitHub Pages\./);
34
+ assert.match(stdout, /run\s+Run scan -> plan -> lint-docs -> compile -> lint, optionally followed by publish\./);
35
+ assert.match(stdout, /--target <github-wiki\|github-pages>/);
36
+ assert.match(stdout, /search\s+Search local wiki pages through the built-in offline index\./);
37
+ assert.doesNotMatch(stdout, /local-artifact/);
38
+ }
39
+ finally {
40
+ await rm(tempDir, { recursive: true, force: true });
41
+ }
42
+ });
43
+ test('CLI publish wires github-pages target, pages path, and target-specific defaults', async () => {
44
+ const tempDir = await mkdtemp(path.join(os.tmpdir(), 'repo-wiki-cli-test-'));
45
+ const wikiDir = path.join(tempDir, 'wiki');
46
+ try {
47
+ await mkdir(wikiDir, { recursive: true });
48
+ await writeFile(path.join(wikiDir, 'Home.md'), '# Home\n', 'utf8');
49
+ const { stdout } = await captureCli([
50
+ 'publish',
51
+ '--wiki', wikiDir,
52
+ '--target', 'github-pages',
53
+ '--pages-path', 'docs',
54
+ '--dry-run'
55
+ ], tempDir);
56
+ const summary = JSON.parse(stdout);
57
+ assert.equal(summary.status, 'dry-run');
58
+ assert.equal(summary.target, 'github-pages');
59
+ assert.equal(summary.branch, 'gh-pages');
60
+ assert.equal(summary.path, 'docs');
61
+ assert.equal(summary.frontmatterPolicy, 'preserve');
62
+ }
63
+ finally {
64
+ await rm(tempDir, { recursive: true, force: true });
65
+ }
66
+ });
67
+ test('CLI publish reads target-specific defaults from config', async () => {
68
+ const tempDir = await mkdtemp(path.join(os.tmpdir(), 'repo-wiki-cli-test-'));
69
+ const wikiDir = path.join(tempDir, 'wiki');
70
+ const configDir = path.join(tempDir, '.llmwiki');
71
+ try {
72
+ await mkdir(wikiDir, { recursive: true });
73
+ await mkdir(configDir, { recursive: true });
74
+ await writeFile(path.join(wikiDir, 'Home.md'), '# Home\n', 'utf8');
75
+ await writeFile(path.join(configDir, 'config.json'), JSON.stringify({
76
+ publish: {
77
+ target: 'github-pages',
78
+ pages: {
79
+ branch: 'site',
80
+ path: 'docs',
81
+ frontmatter: 'preserve'
82
+ },
83
+ wiki: {
84
+ branch: 'master',
85
+ frontmatter: 'strip'
86
+ }
87
+ }
88
+ }), 'utf8');
89
+ const { stdout } = await captureCli(['publish', '--wiki', wikiDir, '--dry-run'], tempDir);
90
+ const summary = JSON.parse(stdout);
91
+ assert.equal(summary.target, 'github-pages');
92
+ assert.equal(summary.branch, 'site');
93
+ assert.equal(summary.path, 'docs');
94
+ assert.equal(summary.frontmatterPolicy, 'preserve');
95
+ }
96
+ finally {
97
+ await rm(tempDir, { recursive: true, force: true });
98
+ }
99
+ });
100
+ test('CLI warns and falls back for unknown target and frontmatter policy', async () => {
101
+ const tempDir = await mkdtemp(path.join(os.tmpdir(), 'repo-wiki-cli-test-'));
102
+ const wikiDir = path.join(tempDir, 'wiki');
103
+ try {
104
+ await mkdir(wikiDir, { recursive: true });
105
+ await writeFile(path.join(wikiDir, 'Home.md'), '# Home\n', 'utf8');
106
+ const { stdout, stderr } = await captureCli([
107
+ 'publish',
108
+ '--wiki', wikiDir,
109
+ '--target', 'unknown-target',
110
+ '--frontmatter-policy', 'unknown-policy',
111
+ '--dry-run'
112
+ ], tempDir);
113
+ const summary = JSON.parse(stdout);
114
+ assert.equal(summary.target, 'github-wiki');
115
+ assert.equal(summary.branch, 'master');
116
+ assert.equal(summary.frontmatterPolicy, 'provenance');
117
+ assert.match(stderr, /unknown --target/);
118
+ assert.match(stderr, /unknown --frontmatter-policy/);
119
+ }
120
+ finally {
121
+ await rm(tempDir, { recursive: true, force: true });
122
+ }
123
+ });
124
+ test('CLI publish falls back to target default for unknown frontmatter policy', async () => {
125
+ const tempDir = await mkdtemp(path.join(os.tmpdir(), 'repo-wiki-cli-test-'));
126
+ const wikiDir = path.join(tempDir, 'wiki');
127
+ try {
128
+ await mkdir(wikiDir, { recursive: true });
129
+ await writeFile(path.join(wikiDir, 'Home.md'), '# Home\n', 'utf8');
130
+ const { stdout, stderr } = await captureCli([
131
+ 'publish',
132
+ '--wiki', wikiDir,
133
+ '--target', 'github-pages',
134
+ '--frontmatter-policy', 'unknown-policy',
135
+ '--dry-run'
136
+ ], tempDir);
137
+ const summary = JSON.parse(stdout);
138
+ assert.equal(summary.target, 'github-pages');
139
+ assert.equal(summary.frontmatterPolicy, 'preserve');
140
+ assert.match(stderr, /falling back to "preserve"/);
141
+ }
142
+ finally {
143
+ await rm(tempDir, { recursive: true, force: true });
144
+ }
145
+ });
146
+ test('CLI publish accepts html-comment frontmatter policy with warning', async () => {
147
+ const tempDir = await mkdtemp(path.join(os.tmpdir(), 'repo-wiki-cli-test-'));
148
+ const wikiDir = path.join(tempDir, 'wiki');
149
+ try {
150
+ await mkdir(wikiDir, { recursive: true });
151
+ await writeFile(path.join(wikiDir, 'Home.md'), '# Home\n', 'utf8');
152
+ const { stdout, stderr } = await captureCli([
153
+ 'publish',
154
+ '--wiki', wikiDir,
155
+ '--frontmatter-policy', 'html-comment',
156
+ '--dry-run'
157
+ ], tempDir);
158
+ const summary = JSON.parse(stdout);
159
+ assert.equal(summary.frontmatterPolicy, 'html-comment');
160
+ assert.match(stderr, /reserved for future metadata comments/);
161
+ }
162
+ finally {
163
+ await rm(tempDir, { recursive: true, force: true });
164
+ }
165
+ });
166
+ test('CLI publish accepts provenance frontmatter policy for github-pages', async () => {
167
+ const tempDir = await mkdtemp(path.join(os.tmpdir(), 'repo-wiki-cli-test-'));
168
+ const wikiDir = path.join(tempDir, 'wiki');
169
+ try {
170
+ await mkdir(wikiDir, { recursive: true });
171
+ await writeFile(path.join(wikiDir, 'Home.md'), '# Home\n', 'utf8');
172
+ const { stdout } = await captureCli([
173
+ 'publish',
174
+ '--wiki', wikiDir,
175
+ '--target', 'github-pages',
176
+ '--frontmatter-policy', 'provenance',
177
+ '--dry-run'
178
+ ], tempDir);
179
+ const summary = JSON.parse(stdout);
180
+ assert.equal(summary.target, 'github-pages');
181
+ assert.equal(summary.frontmatterPolicy, 'provenance');
182
+ }
183
+ finally {
184
+ await rm(tempDir, { recursive: true, force: true });
185
+ }
186
+ });
187
+ test('CLI publish accepts --frontmatter as an alias for --frontmatter-policy', async () => {
188
+ const tempDir = await mkdtemp(path.join(os.tmpdir(), 'repo-wiki-cli-test-'));
189
+ const wikiDir = path.join(tempDir, 'wiki');
190
+ try {
191
+ await mkdir(wikiDir, { recursive: true });
192
+ await writeFile(path.join(wikiDir, 'Home.md'), '# Home\n', 'utf8');
193
+ const { stdout } = await captureCli([
194
+ 'publish',
195
+ '--wiki', wikiDir,
196
+ '--frontmatter', 'strip',
197
+ '--dry-run'
198
+ ], tempDir);
199
+ const summary = JSON.parse(stdout);
200
+ assert.equal(summary.target, 'github-wiki');
201
+ assert.equal(summary.frontmatterPolicy, 'strip');
202
+ }
203
+ finally {
204
+ await rm(tempDir, { recursive: true, force: true });
205
+ }
206
+ });
207
+ test('CLI compile --repo loads that repository .env for LLM mode', async () => {
208
+ const tempDir = await mkdtemp(path.join(os.tmpdir(), 'repo-wiki-cli-test-'));
209
+ const repoDir = path.join(tempDir, 'repo');
210
+ const scanDir = path.join(tempDir, 'scan');
211
+ const planFile = path.join(tempDir, 'plan.json');
212
+ const wikiDir = path.join(tempDir, 'wiki');
213
+ try {
214
+ await mkdir(path.join(repoDir, 'src'), { recursive: true });
215
+ await writeFile(path.join(repoDir, 'src', 'auth.ts'), 'export function login() { return true; }\n', 'utf8');
216
+ await writeFile(path.join(repoDir, '.env'), 'LLMWIKI_COMPILER_MODE=llm\nLLMWIKI_LLM_PROVIDER=mock\n', 'utf8');
217
+ await captureCli(['scan', '--repo', repoDir, '--out', scanDir], tempDir);
218
+ await captureCli(['plan', '--scan', scanDir, '--out', planFile], tempDir);
219
+ const { stdout } = await captureCli(['compile', '--repo', repoDir, '--scan', scanDir, '--plan', planFile, '--wiki', wikiDir], tempDir);
220
+ const summary = JSON.parse(stdout);
221
+ assert.equal(summary.pages > 0, true);
222
+ const moduleFile = await import('node:fs/promises').then(({ readdir }) => readdir(wikiDir)).then((files) => files.find((file) => file.startsWith('Module-')));
223
+ const modulePage = await import('node:fs/promises').then(({ readFile }) => readFile(path.join(wikiDir, moduleFile), 'utf8'));
224
+ assert.match(modulePage, /Generated by the mock LLM provider/);
225
+ }
226
+ finally {
227
+ await rm(tempDir, { recursive: true, force: true });
228
+ }
229
+ });
230
+ test('CLI run executes scan-plan-lint-compile and dry-run publish with pages target', async () => {
231
+ const tempDir = await mkdtemp(path.join(os.tmpdir(), 'repo-wiki-cli-test-'));
232
+ const repoDir = path.join(tempDir, 'repo');
233
+ const scanDir = path.join(tempDir, 'scan');
234
+ const planFile = path.join(tempDir, 'plan.json');
235
+ const wikiDir = path.join(tempDir, 'wiki');
236
+ try {
237
+ await mkdir(path.join(repoDir, 'src'), { recursive: true });
238
+ await mkdir(path.join(repoDir, '.llmwiki'), { recursive: true });
239
+ await writeFile(path.join(repoDir, 'package.json'), JSON.stringify({ name: 'fixture', scripts: { test: 'node --test' } }), 'utf8');
240
+ await writeFile(path.join(repoDir, 'src', 'index.ts'), 'export const value = 1;\n', 'utf8');
241
+ await writeFile(path.join(repoDir, '.llmwiki', 'config.json'), JSON.stringify({
242
+ publish: {
243
+ target: 'github-pages',
244
+ pages: { branch: 'site', path: 'docs', frontmatter: 'preserve' }
245
+ }
246
+ }), 'utf8');
247
+ const { stdout } = await captureCli([
248
+ 'run',
249
+ '--repo', repoDir,
250
+ '--scan', scanDir,
251
+ '--plan', planFile,
252
+ '--wiki', wikiDir,
253
+ '--publish',
254
+ '--dry-run'
255
+ ], tempDir);
256
+ const summary = JSON.parse(stdout);
257
+ assert.equal(summary.mode, 'bootstrap');
258
+ assert.equal(summary.repoPath, repoDir);
259
+ assert.equal(summary.scan.files > 0, true);
260
+ assert.equal(summary.plan.pages > 0, true);
261
+ assert.equal(summary.compile.pages > 0, true);
262
+ assert.equal(summary.publish.status, 'dry-run');
263
+ assert.equal(summary.publish.target, 'github-pages');
264
+ assert.equal(summary.publish.branch, 'site');
265
+ assert.equal(summary.publish.path, 'docs');
266
+ }
267
+ finally {
268
+ await rm(tempDir, { recursive: true, force: true });
269
+ }
270
+ });
271
+ test('CLI run blocks before compile when docs lint reports errors', async () => {
272
+ const tempDir = await mkdtemp(path.join(os.tmpdir(), 'repo-wiki-cli-test-'));
273
+ const repoDir = path.join(tempDir, 'repo');
274
+ const scanDir = path.join(tempDir, 'scan');
275
+ const planFile = path.join(tempDir, 'plan.json');
276
+ const wikiDir = path.join(tempDir, 'wiki');
277
+ try {
278
+ await mkdir(path.join(repoDir, 'src'), { recursive: true });
279
+ await mkdir(path.join(repoDir, '.llmwiki'), { recursive: true });
280
+ await writeFile(path.join(repoDir, 'package.json'), JSON.stringify({ name: 'fixture', scripts: { test: 'node --test' } }), 'utf8');
281
+ await writeFile(path.join(repoDir, 'README.md'), '# Docs\n\nSee [missing](docs/missing.md).\n', 'utf8');
282
+ await writeFile(path.join(repoDir, 'src', 'index.ts'), 'export const value = 1;\n', 'utf8');
283
+ await writeFile(path.join(repoDir, '.llmwiki', 'config.json'), JSON.stringify({
284
+ lint: {
285
+ broken_file_references: 'error'
286
+ }
287
+ }), 'utf8');
288
+ const { stdout, exitCode } = await captureCliResult([
289
+ 'run',
290
+ '--repo', repoDir,
291
+ '--scan', scanDir,
292
+ '--plan', planFile,
293
+ '--wiki', wikiDir,
294
+ '--publish',
295
+ '--dry-run'
296
+ ], tempDir);
297
+ const summary = JSON.parse(stdout);
298
+ assert.equal(exitCode, 1);
299
+ assert.equal(summary.status, 'blocked');
300
+ assert.equal(summary.blockedStage, 'lint-docs');
301
+ assert.ok(summary.docsLint.errors > 0);
302
+ assert.deepEqual(summary.compile, { status: 'skipped', reason: 'docs-lint-errors' });
303
+ assert.deepEqual(summary.lint, { status: 'skipped', reason: 'docs-lint-errors' });
304
+ assert.deepEqual(summary.publish, { status: 'blocked', reason: 'docs-lint-errors' });
305
+ await assert.rejects(access(wikiDir));
306
+ }
307
+ finally {
308
+ await rm(tempDir, { recursive: true, force: true });
309
+ }
310
+ });
311
+ test('CLI run continues to compile when docs lint is warning-only', async () => {
312
+ const tempDir = await mkdtemp(path.join(os.tmpdir(), 'repo-wiki-cli-test-'));
313
+ const repoDir = path.join(tempDir, 'repo');
314
+ const scanDir = path.join(tempDir, 'scan');
315
+ const planFile = path.join(tempDir, 'plan.json');
316
+ const wikiDir = path.join(tempDir, 'wiki');
317
+ try {
318
+ await mkdir(path.join(repoDir, 'src'), { recursive: true });
319
+ await mkdir(path.join(repoDir, '.llmwiki'), { recursive: true });
320
+ await writeFile(path.join(repoDir, 'package.json'), JSON.stringify({ name: 'fixture', scripts: { test: 'node --test' } }), 'utf8');
321
+ await writeFile(path.join(repoDir, 'README.md'), '# Docs\n\nSee [missing](docs/missing.md).\n', 'utf8');
322
+ await writeFile(path.join(repoDir, 'src', 'index.ts'), 'export const value = 1;\n', 'utf8');
323
+ await writeFile(path.join(repoDir, '.llmwiki', 'config.json'), JSON.stringify({
324
+ lint: {
325
+ broken_file_references: 'warning'
326
+ }
327
+ }), 'utf8');
328
+ const { stdout } = await captureCli([
329
+ 'run',
330
+ '--repo', repoDir,
331
+ '--scan', scanDir,
332
+ '--plan', planFile,
333
+ '--wiki', wikiDir
334
+ ], tempDir);
335
+ const summary = JSON.parse(stdout);
336
+ assert.equal(summary.status, 'ok');
337
+ assert.equal(summary.blockedStage, null);
338
+ assert.equal(summary.docsLint.errors, 0);
339
+ assert.ok(summary.docsLint.warnings > 0);
340
+ assert.equal(summary.compile.pages > 0, true);
341
+ assert.equal(summary.lint.errors, 0);
342
+ assert.equal(summary.publish, null);
343
+ }
344
+ finally {
345
+ await rm(tempDir, { recursive: true, force: true });
346
+ }
347
+ });
348
+ test('CLI run --publish blocks publish when wiki lint reports errors', async () => {
349
+ const tempDir = await mkdtemp(path.join(os.tmpdir(), 'repo-wiki-cli-test-'));
350
+ const repoDir = path.join(tempDir, 'repo');
351
+ const scanDir = path.join(tempDir, 'scan');
352
+ const planFile = path.join(tempDir, 'plan.json');
353
+ const wikiDir = path.join(tempDir, 'wiki');
354
+ try {
355
+ await mkdir(path.join(repoDir, 'src'), { recursive: true });
356
+ await mkdir(path.join(repoDir, '.llmwiki'), { recursive: true });
357
+ await mkdir(wikiDir, { recursive: true });
358
+ await writeFile(path.join(repoDir, 'package.json'), JSON.stringify({ name: 'fixture', scripts: { test: 'node --test' } }), 'utf8');
359
+ await writeFile(path.join(repoDir, 'README.md'), '# Docs\n', 'utf8');
360
+ await writeFile(path.join(repoDir, 'src', 'index.ts'), 'export const value = 1;\n', 'utf8');
361
+ await writeFile(path.join(wikiDir, 'Bad.md'), 'token=12345678\n', 'utf8');
362
+ const { stdout, exitCode } = await captureCliResult([
363
+ 'run',
364
+ '--repo', repoDir,
365
+ '--scan', scanDir,
366
+ '--plan', planFile,
367
+ '--wiki', wikiDir,
368
+ '--publish',
369
+ '--dry-run'
370
+ ], tempDir);
371
+ const summary = JSON.parse(stdout);
372
+ assert.equal(exitCode, 1);
373
+ assert.equal(summary.status, 'blocked');
374
+ assert.equal(summary.blockedStage, 'lint');
375
+ assert.ok(summary.lint.errors > 0);
376
+ assert.deepEqual(summary.publish, { status: 'blocked', reason: 'wiki-lint-errors' });
377
+ }
378
+ finally {
379
+ await rm(tempDir, { recursive: true, force: true });
380
+ }
381
+ });
382
+ test('CLI lint prints graph-health findings to stderr and returns machine-readable JSON', async () => {
383
+ const tempDir = await mkdtemp(path.join(os.tmpdir(), 'repo-wiki-cli-test-'));
384
+ const scanDir = path.join(tempDir, 'scan');
385
+ const wikiDir = path.join(tempDir, 'wiki');
386
+ const requiredPage = (title) => ['---', 'source_commit: "abc123"', 'page_state: "generated"', '---', '', `# ${title}`].join('\n');
387
+ try {
388
+ await mkdir(scanDir, { recursive: true });
389
+ await mkdir(wikiDir, { recursive: true });
390
+ await writeFile(path.join(scanDir, 'manifest.json'), JSON.stringify({ commit: 'abc123', files: [] }), 'utf8');
391
+ await writeFile(path.join(wikiDir, 'Home.md'), requiredPage('Home'), 'utf8');
392
+ await writeFile(path.join(wikiDir, '_Sidebar.md'), requiredPage('Navigation'), 'utf8');
393
+ await writeFile(path.join(wikiDir, 'Index.md'), requiredPage('Index'), 'utf8');
394
+ await writeFile(path.join(wikiDir, 'Log.md'), requiredPage('Log'), 'utf8');
395
+ await writeFile(path.join(wikiDir, 'Agent-Context-Pack.md'), requiredPage('Agent Context Pack'), 'utf8');
396
+ await writeFile(path.join(wikiDir, 'Repository-Overview.md'), requiredPage('Repository Overview'), 'utf8');
397
+ await writeFile(path.join(wikiDir, 'Architecture.md'), requiredPage('Architecture'), 'utf8');
398
+ await writeFile(path.join(wikiDir, 'Build-Test-and-Run.md'), requiredPage('Build Test and Run'), 'utf8');
399
+ await writeFile(path.join(wikiDir, 'Open-Questions.md'), requiredPage('Open Questions'), 'utf8');
400
+ await writeFile(path.join(tempDir, 'graph.json'), JSON.stringify({
401
+ schema_version: 1,
402
+ nodes: [
403
+ { id: 'page:Home.md', kind: 'page', path: 'Home.md', page_state: 'generated' },
404
+ { id: 'page:Repository-Overview.md', kind: 'page', path: 'Repository-Overview.md', page_state: 'generated' },
405
+ { id: 'source:src/index.ts', kind: 'source', path: 'src/index.ts' }
406
+ ],
407
+ edges: [
408
+ { type: 'provenance', from: 'page:Repository-Overview.md', to: 'source:src/index.ts' }
409
+ ]
410
+ }), 'utf8');
411
+ const { stdout, stderr } = await captureCli(['lint', '--wiki', wikiDir, '--scan', scanDir], tempDir);
412
+ const summary = JSON.parse(stdout);
413
+ assert.equal(Array.isArray(summary.graph_health.findings), true);
414
+ assert.equal(summary.graph_health.findings.length, 1);
415
+ assert.equal(summary.graph_health.findings[0].code, 'GRAPH001');
416
+ assert.match(summary.graph_health.findings[0].message, /graph\.json/);
417
+ assert.doesNotMatch(summary.graph_health.findings[0].message, /\.llmwiki\/graph\.json/);
418
+ assert.match(stderr, /GRAPH001/);
419
+ assert.match(stderr, /graph\.json/);
420
+ }
421
+ finally {
422
+ await rm(tempDir, { recursive: true, force: true });
423
+ }
424
+ });
425
+ test('CLI search returns stable JSON results for local wiki pages', async () => {
426
+ const tempDir = await mkdtemp(path.join(os.tmpdir(), 'repo-wiki-cli-test-'));
427
+ const wikiDir = path.join(tempDir, 'wiki');
428
+ try {
429
+ await mkdir(wikiDir, { recursive: true });
430
+ await writeFile(path.join(wikiDir, 'Architecture.md'), `---
431
+ kind: "foundation"
432
+ page_state: "generated"
433
+ source_paths:
434
+ - "src/compiler.ts"
435
+ ---
436
+ # Architecture
437
+
438
+ Architecture covers compile and search flow.
439
+ `, 'utf8');
440
+ await writeFile(path.join(wikiDir, 'Module-scanner-ts.md'), `---
441
+ kind: "module"
442
+ page_state: "generated"
443
+ source_paths:
444
+ - "src/scanner.ts"
445
+ ---
446
+ # Module scanner ts
447
+
448
+ Scanner builds repository manifests.
449
+ `, 'utf8');
450
+ const { stdout } = await captureCli(['search', 'scanner', '--wiki', wikiDir, '--json'], tempDir);
451
+ const summary = JSON.parse(stdout);
452
+ assert.equal(summary.query, 'scanner');
453
+ assert.equal(summary.results[0].pagePath, 'Module-scanner-ts.md');
454
+ assert.deepEqual(summary.results[0].sourcePaths, ['src/scanner.ts']);
455
+ assert.equal(summary.index.pages, 2);
456
+ }
457
+ finally {
458
+ await rm(tempDir, { recursive: true, force: true });
459
+ }
460
+ });
461
+ test('CLI query, path, and explain expose stable JSON over local wiki artifacts', async () => {
462
+ const tempDir = await mkdtemp(path.join(os.tmpdir(), 'repo-wiki-cli-query-test-'));
463
+ const wikiDir = path.join(tempDir, 'wiki');
464
+ const graphPath = path.join(tempDir, 'graph.json');
465
+ try {
466
+ await mkdir(wikiDir, { recursive: true });
467
+ await writeFile(path.join(wikiDir, 'Architecture.md'), `---
468
+ kind: "foundation"
469
+ page_state: "generated"
470
+ source_paths:
471
+ - "src/compiler.ts"
472
+ ---
473
+ # Architecture
474
+
475
+ Architecture covers compile and query flow.
476
+ `, 'utf8');
477
+ await writeFile(path.join(wikiDir, 'Module-compiler-ts.md'), `---
478
+ kind: "module"
479
+ page_state: "generated"
480
+ source_paths:
481
+ - "src/compiler.ts"
482
+ ---
483
+ # Module compiler ts
484
+
485
+ Compiler writes generated wiki pages from source cards.
486
+ `, 'utf8');
487
+ await writeFile(graphPath, JSON.stringify({
488
+ schema_version: 1,
489
+ nodes: [
490
+ { id: 'page:Architecture.md', kind: 'page', path: 'Architecture.md', page_state: 'generated' },
491
+ { id: 'page:Module-compiler-ts.md', kind: 'page', path: 'Module-compiler-ts.md', page_state: 'generated' },
492
+ { id: 'source:src/compiler.ts', kind: 'source', path: 'src/compiler.ts' }
493
+ ],
494
+ edges: [
495
+ { type: 'wiki_link', from: 'page:Architecture.md', to: 'page:Module-compiler-ts.md' },
496
+ { type: 'provenance', from: 'page:Module-compiler-ts.md', to: 'source:src/compiler.ts' }
497
+ ]
498
+ }), 'utf8');
499
+ const query = JSON.parse((await captureCli(['query', 'compiler pages', '--wiki', wikiDir, '--graph', graphPath, '--json'], tempDir)).stdout);
500
+ assert.equal(query.question, 'compiler pages');
501
+ assert.equal(query.evidence.some((item) => item.ref === 'src/compiler.ts'), true);
502
+ const traversal = JSON.parse((await captureCli(['path', 'Architecture.md', 'src/compiler.ts', '--wiki', wikiDir, '--graph', graphPath, '--json'], tempDir)).stdout);
503
+ assert.equal(traversal.found, true);
504
+ assert.deepEqual(traversal.edges.map((edge) => edge.type), ['wiki_link', 'provenance']);
505
+ const explain = JSON.parse((await captureCli(['explain', 'Module-compiler-ts.md', '--wiki', wikiDir, '--graph', graphPath, '--json'], tempDir)).stdout);
506
+ assert.equal(explain.found, true);
507
+ assert.equal(explain.page.pagePath, 'Module-compiler-ts.md');
508
+ assert.deepEqual(explain.evidence.map((item) => item.ref), ['src/compiler.ts']);
509
+ }
510
+ finally {
511
+ await rm(tempDir, { recursive: true, force: true });
512
+ }
513
+ });
514
+ //# sourceMappingURL=cli.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.test.js","sourceRoot":"","sources":["../../test/cli.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};