@kiwidata/grimoire 0.1.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 (215) hide show
  1. package/.claude-plugin/plugin.json +8 -0
  2. package/AGENTS.md +217 -0
  3. package/README.md +748 -0
  4. package/bin/grimoire.js +2 -0
  5. package/dist/cli/index.d.ts +2 -0
  6. package/dist/cli/index.d.ts.map +1 -0
  7. package/dist/cli/index.js +42 -0
  8. package/dist/cli/index.js.map +1 -0
  9. package/dist/commands/archive.d.ts +3 -0
  10. package/dist/commands/archive.d.ts.map +1 -0
  11. package/dist/commands/archive.js +22 -0
  12. package/dist/commands/archive.js.map +1 -0
  13. package/dist/commands/branch-check.d.ts +3 -0
  14. package/dist/commands/branch-check.d.ts.map +1 -0
  15. package/dist/commands/branch-check.js +16 -0
  16. package/dist/commands/branch-check.js.map +1 -0
  17. package/dist/commands/check.d.ts +3 -0
  18. package/dist/commands/check.d.ts.map +1 -0
  19. package/dist/commands/check.js +22 -0
  20. package/dist/commands/check.js.map +1 -0
  21. package/dist/commands/ci.d.ts +3 -0
  22. package/dist/commands/ci.d.ts.map +1 -0
  23. package/dist/commands/ci.js +18 -0
  24. package/dist/commands/ci.js.map +1 -0
  25. package/dist/commands/diff.d.ts +3 -0
  26. package/dist/commands/diff.d.ts.map +1 -0
  27. package/dist/commands/diff.js +10 -0
  28. package/dist/commands/diff.js.map +1 -0
  29. package/dist/commands/docs.d.ts +3 -0
  30. package/dist/commands/docs.d.ts.map +1 -0
  31. package/dist/commands/docs.js +11 -0
  32. package/dist/commands/docs.js.map +1 -0
  33. package/dist/commands/health.d.ts +3 -0
  34. package/dist/commands/health.d.ts.map +1 -0
  35. package/dist/commands/health.js +13 -0
  36. package/dist/commands/health.js.map +1 -0
  37. package/dist/commands/init.d.ts +3 -0
  38. package/dist/commands/init.d.ts.map +1 -0
  39. package/dist/commands/init.js +21 -0
  40. package/dist/commands/init.js.map +1 -0
  41. package/dist/commands/list.d.ts +3 -0
  42. package/dist/commands/list.d.ts.map +1 -0
  43. package/dist/commands/list.js +22 -0
  44. package/dist/commands/list.js.map +1 -0
  45. package/dist/commands/log.d.ts +3 -0
  46. package/dist/commands/log.d.ts.map +1 -0
  47. package/dist/commands/log.js +15 -0
  48. package/dist/commands/log.js.map +1 -0
  49. package/dist/commands/map.d.ts +3 -0
  50. package/dist/commands/map.d.ts.map +1 -0
  51. package/dist/commands/map.js +17 -0
  52. package/dist/commands/map.js.map +1 -0
  53. package/dist/commands/pr.d.ts +3 -0
  54. package/dist/commands/pr.d.ts.map +1 -0
  55. package/dist/commands/pr.js +17 -0
  56. package/dist/commands/pr.js.map +1 -0
  57. package/dist/commands/status.d.ts +3 -0
  58. package/dist/commands/status.d.ts.map +1 -0
  59. package/dist/commands/status.js +12 -0
  60. package/dist/commands/status.js.map +1 -0
  61. package/dist/commands/test-quality.d.ts +3 -0
  62. package/dist/commands/test-quality.d.ts.map +1 -0
  63. package/dist/commands/test-quality.js +37 -0
  64. package/dist/commands/test-quality.js.map +1 -0
  65. package/dist/commands/trace.d.ts +3 -0
  66. package/dist/commands/trace.d.ts.map +1 -0
  67. package/dist/commands/trace.js +12 -0
  68. package/dist/commands/trace.js.map +1 -0
  69. package/dist/commands/update.d.ts +3 -0
  70. package/dist/commands/update.d.ts.map +1 -0
  71. package/dist/commands/update.js +22 -0
  72. package/dist/commands/update.js.map +1 -0
  73. package/dist/commands/validate.d.ts +3 -0
  74. package/dist/commands/validate.d.ts.map +1 -0
  75. package/dist/commands/validate.js +17 -0
  76. package/dist/commands/validate.js.map +1 -0
  77. package/dist/core/archive.d.ts +9 -0
  78. package/dist/core/archive.d.ts.map +1 -0
  79. package/dist/core/archive.js +92 -0
  80. package/dist/core/archive.js.map +1 -0
  81. package/dist/core/branch-check.d.ts +27 -0
  82. package/dist/core/branch-check.d.ts.map +1 -0
  83. package/dist/core/branch-check.js +205 -0
  84. package/dist/core/branch-check.js.map +1 -0
  85. package/dist/core/check.d.ts +24 -0
  86. package/dist/core/check.d.ts.map +1 -0
  87. package/dist/core/check.js +372 -0
  88. package/dist/core/check.js.map +1 -0
  89. package/dist/core/ci.d.ts +24 -0
  90. package/dist/core/ci.d.ts.map +1 -0
  91. package/dist/core/ci.js +162 -0
  92. package/dist/core/ci.js.map +1 -0
  93. package/dist/core/detect.d.ts +10 -0
  94. package/dist/core/detect.d.ts.map +1 -0
  95. package/dist/core/detect.js +368 -0
  96. package/dist/core/detect.js.map +1 -0
  97. package/dist/core/diff.d.ts +29 -0
  98. package/dist/core/diff.d.ts.map +1 -0
  99. package/dist/core/diff.js +197 -0
  100. package/dist/core/diff.js.map +1 -0
  101. package/dist/core/doc-style.d.ts +16 -0
  102. package/dist/core/doc-style.d.ts.map +1 -0
  103. package/dist/core/doc-style.js +192 -0
  104. package/dist/core/doc-style.js.map +1 -0
  105. package/dist/core/docs.d.ts +6 -0
  106. package/dist/core/docs.d.ts.map +1 -0
  107. package/dist/core/docs.js +478 -0
  108. package/dist/core/docs.js.map +1 -0
  109. package/dist/core/health.d.ts +7 -0
  110. package/dist/core/health.d.ts.map +1 -0
  111. package/dist/core/health.js +489 -0
  112. package/dist/core/health.js.map +1 -0
  113. package/dist/core/hooks.d.ts +5 -0
  114. package/dist/core/hooks.d.ts.map +1 -0
  115. package/dist/core/hooks.js +168 -0
  116. package/dist/core/hooks.js.map +1 -0
  117. package/dist/core/init.d.ts +9 -0
  118. package/dist/core/init.d.ts.map +1 -0
  119. package/dist/core/init.js +563 -0
  120. package/dist/core/init.js.map +1 -0
  121. package/dist/core/list.d.ts +4 -0
  122. package/dist/core/list.d.ts.map +1 -0
  123. package/dist/core/list.js +170 -0
  124. package/dist/core/list.js.map +1 -0
  125. package/dist/core/log.d.ts +8 -0
  126. package/dist/core/log.d.ts.map +1 -0
  127. package/dist/core/log.js +150 -0
  128. package/dist/core/log.js.map +1 -0
  129. package/dist/core/map.d.ts +9 -0
  130. package/dist/core/map.d.ts.map +1 -0
  131. package/dist/core/map.js +302 -0
  132. package/dist/core/map.js.map +1 -0
  133. package/dist/core/pr.d.ts +9 -0
  134. package/dist/core/pr.d.ts.map +1 -0
  135. package/dist/core/pr.js +273 -0
  136. package/dist/core/pr.js.map +1 -0
  137. package/dist/core/shared-setup.d.ts +52 -0
  138. package/dist/core/shared-setup.d.ts.map +1 -0
  139. package/dist/core/shared-setup.js +221 -0
  140. package/dist/core/shared-setup.js.map +1 -0
  141. package/dist/core/status.d.ts +6 -0
  142. package/dist/core/status.d.ts.map +1 -0
  143. package/dist/core/status.js +114 -0
  144. package/dist/core/status.js.map +1 -0
  145. package/dist/core/test-quality.d.ts +33 -0
  146. package/dist/core/test-quality.d.ts.map +1 -0
  147. package/dist/core/test-quality.js +378 -0
  148. package/dist/core/test-quality.js.map +1 -0
  149. package/dist/core/trace.d.ts +6 -0
  150. package/dist/core/trace.d.ts.map +1 -0
  151. package/dist/core/trace.js +211 -0
  152. package/dist/core/trace.js.map +1 -0
  153. package/dist/core/update.d.ts +10 -0
  154. package/dist/core/update.d.ts.map +1 -0
  155. package/dist/core/update.js +149 -0
  156. package/dist/core/update.js.map +1 -0
  157. package/dist/core/validate.d.ts +20 -0
  158. package/dist/core/validate.d.ts.map +1 -0
  159. package/dist/core/validate.js +275 -0
  160. package/dist/core/validate.js.map +1 -0
  161. package/dist/index.d.ts +19 -0
  162. package/dist/index.d.ts.map +1 -0
  163. package/dist/index.js +20 -0
  164. package/dist/index.js.map +1 -0
  165. package/dist/utils/config.d.ts +61 -0
  166. package/dist/utils/config.d.ts.map +1 -0
  167. package/dist/utils/config.js +172 -0
  168. package/dist/utils/config.js.map +1 -0
  169. package/dist/utils/fs.d.ts +17 -0
  170. package/dist/utils/fs.d.ts.map +1 -0
  171. package/dist/utils/fs.js +38 -0
  172. package/dist/utils/fs.js.map +1 -0
  173. package/dist/utils/paths.d.ts +10 -0
  174. package/dist/utils/paths.d.ts.map +1 -0
  175. package/dist/utils/paths.js +35 -0
  176. package/dist/utils/paths.js.map +1 -0
  177. package/dist/utils/spawn.d.ts +5 -0
  178. package/dist/utils/spawn.d.ts.map +1 -0
  179. package/dist/utils/spawn.js +34 -0
  180. package/dist/utils/spawn.js.map +1 -0
  181. package/package.json +68 -0
  182. package/skills/grimoire-apply/SKILL.md +274 -0
  183. package/skills/grimoire-audit/SKILL.md +129 -0
  184. package/skills/grimoire-branch-guard/SKILL.md +111 -0
  185. package/skills/grimoire-bug/SKILL.md +160 -0
  186. package/skills/grimoire-bug-explore/SKILL.md +242 -0
  187. package/skills/grimoire-bug-report/SKILL.md +237 -0
  188. package/skills/grimoire-bug-session/SKILL.md +222 -0
  189. package/skills/grimoire-bug-triage/SKILL.md +274 -0
  190. package/skills/grimoire-commit/SKILL.md +150 -0
  191. package/skills/grimoire-discover/SKILL.md +297 -0
  192. package/skills/grimoire-draft/SKILL.md +202 -0
  193. package/skills/grimoire-plan/SKILL.md +329 -0
  194. package/skills/grimoire-pr/SKILL.md +134 -0
  195. package/skills/grimoire-pr-review/SKILL.md +240 -0
  196. package/skills/grimoire-refactor/SKILL.md +251 -0
  197. package/skills/grimoire-remove/SKILL.md +112 -0
  198. package/skills/grimoire-review/SKILL.md +247 -0
  199. package/skills/grimoire-verify/SKILL.md +223 -0
  200. package/skills/references/bug-classification.md +154 -0
  201. package/skills/references/build-vs-buy.md +77 -0
  202. package/skills/references/elicitation-personas.md +118 -0
  203. package/skills/references/refactor-register-format.md +88 -0
  204. package/skills/references/refactor-scan-categories.md +102 -0
  205. package/skills/references/schema-format.md +68 -0
  206. package/skills/references/security-compliance.md +110 -0
  207. package/skills/references/testing-contracts.md +93 -0
  208. package/templates/context.yml +110 -0
  209. package/templates/debt-exceptions.yml +61 -0
  210. package/templates/decision.md +50 -0
  211. package/templates/dupignore +93 -0
  212. package/templates/example.feature +24 -0
  213. package/templates/manifest.md +29 -0
  214. package/templates/mapignore +58 -0
  215. package/templates/mapkeys +65 -0
@@ -0,0 +1,478 @@
1
+ import { readdir, readFile, writeFile, mkdir } from "node:fs/promises";
2
+ import { join, relative } from "node:path";
3
+ import chalk from "chalk";
4
+ import { parse as parseYaml } from "yaml";
5
+ import matter from "gray-matter";
6
+ import { findProjectRoot, safePath } from "../utils/paths.js";
7
+ import { loadConfig } from "../utils/config.js";
8
+ import { findFiles } from "../utils/fs.js";
9
+ export async function generateDocs(options) {
10
+ const root = await findProjectRoot();
11
+ const config = await loadConfig(root);
12
+ const sections = [];
13
+ // Title
14
+ const projectName = await detectProjectName(root);
15
+ sections.push(`# ${projectName}\n`);
16
+ sections.push(`> Auto-generated by \`grimoire docs\` — ${new Date().toISOString().split("T")[0]}\n`);
17
+ // 1. Project Summary
18
+ const summary = buildProjectSummary(config);
19
+ if (summary)
20
+ sections.push(summary);
21
+ // 2. System Architecture (from area docs)
22
+ const architecture = await buildArchitectureSection(root);
23
+ if (architecture)
24
+ sections.push(architecture);
25
+ // 3. Features
26
+ const features = await buildFeaturesSection(root);
27
+ if (features)
28
+ sections.push(features);
29
+ // 4. Data Model
30
+ const dataModel = await buildDataModelSection(root);
31
+ if (dataModel)
32
+ sections.push(dataModel);
33
+ // 5. Architecture Decisions
34
+ const decisions = await buildDecisionsSection(root);
35
+ if (decisions)
36
+ sections.push(decisions);
37
+ // 6. Recent Changes
38
+ const changes = await buildChangesSection(root);
39
+ if (changes)
40
+ sections.push(changes);
41
+ // 7. Active Work
42
+ const active = await buildActiveSection(root);
43
+ if (active)
44
+ sections.push(active);
45
+ const output = sections.join("\n---\n\n");
46
+ const outputPath = options.output
47
+ ? safePath(root, options.output)
48
+ : join(root, ".grimoire", "docs", "OVERVIEW.md");
49
+ await mkdir(join(root, ".grimoire", "docs"), { recursive: true });
50
+ await writeFile(outputPath, output);
51
+ console.log(chalk.green("Generated") + ` ${relative(root, outputPath)}`);
52
+ console.log(chalk.dim(` ${countSection(features, "feature")} · ${countSection(decisions, "decision")} · ${countSection(dataModel, "model")} · ${countSection(changes, "archived change")}`));
53
+ }
54
+ function countSection(section, label) {
55
+ if (!section)
56
+ return `0 ${label}s`;
57
+ // Count markdown headings at ### level as items
58
+ const count = (section.match(/^### /gm) || []).length;
59
+ return `${count} ${label}${count !== 1 ? "s" : ""}`;
60
+ }
61
+ // --- Project Summary ---
62
+ function buildProjectSummary(config) {
63
+ const lines = ["## Project Summary\n"];
64
+ const props = [
65
+ ["Language", config.project.language],
66
+ ["Package Manager", config.project.package_manager],
67
+ ["Commit Style", config.project.commit_style],
68
+ ["Doc Tool", config.project.doc_tool],
69
+ ["Comment Style", config.project.comment_style],
70
+ ];
71
+ const defined = props.filter(([, v]) => v);
72
+ if (defined.length === 0)
73
+ return "";
74
+ lines.push("| Property | Value |");
75
+ lines.push("|----------|-------|");
76
+ for (const [key, val] of defined) {
77
+ lines.push(`| ${key} | ${val} |`);
78
+ }
79
+ // Tools
80
+ const toolEntries = Object.entries(config.tools);
81
+ if (toolEntries.length > 0) {
82
+ lines.push("");
83
+ lines.push("**Configured Tools:**\n");
84
+ lines.push("| Check | Tool | Command |");
85
+ lines.push("|-------|------|---------|");
86
+ for (const [check, tool] of toolEntries) {
87
+ const cmd = tool.command ?? tool.check_command ?? (tool.name === "llm" ? "LLM review" : "—");
88
+ lines.push(`| ${check} | ${tool.name} | \`${cmd}\` |`);
89
+ }
90
+ }
91
+ lines.push("");
92
+ return lines.join("\n");
93
+ }
94
+ // --- Architecture ---
95
+ async function buildArchitectureSection(root) {
96
+ const indexPath = join(root, ".grimoire", "docs", "index.yml");
97
+ let indexContent;
98
+ try {
99
+ indexContent = await readFile(indexPath, "utf-8");
100
+ }
101
+ catch {
102
+ return null;
103
+ }
104
+ const index = parseYaml(indexContent);
105
+ if (!index?.areas || index.areas.length === 0)
106
+ return null;
107
+ const lines = ["## System Architecture\n"];
108
+ lines.push("How the codebase is organized. Each area has a detailed doc in `.grimoire/docs/`.\n");
109
+ lines.push("| Area | Directory | Description |");
110
+ lines.push("|------|-----------|-------------|");
111
+ for (const area of index.areas) {
112
+ lines.push(`| [${area.name}](${area.path}) | \`${area.directory}\` | ${area.description} |`);
113
+ }
114
+ // Try to read each area doc's Purpose section for a richer overview
115
+ lines.push("");
116
+ for (const area of index.areas) {
117
+ const areaDoc = await safeRead(join(root, area.path));
118
+ if (!areaDoc)
119
+ continue;
120
+ const purposeMatch = areaDoc.match(/^## Purpose\s*\n([\s\S]*?)(?=^## |\Z)/m);
121
+ const boundariesMatch = areaDoc.match(/^## Boundaries\s*\n([\s\S]*?)(?=^## |\Z)/m);
122
+ if (purposeMatch) {
123
+ lines.push(`### ${area.name}\n`);
124
+ lines.push(purposeMatch[1].trim());
125
+ if (boundariesMatch) {
126
+ lines.push("");
127
+ lines.push(boundariesMatch[1].trim());
128
+ }
129
+ lines.push("");
130
+ }
131
+ }
132
+ return lines.join("\n");
133
+ }
134
+ // --- Features ---
135
+ async function buildFeaturesSection(root) {
136
+ const featuresDir = join(root, "features");
137
+ let featureFiles;
138
+ try {
139
+ featureFiles = await findFiles(featuresDir, ".feature");
140
+ }
141
+ catch {
142
+ return null;
143
+ }
144
+ if (featureFiles.length === 0)
145
+ return null;
146
+ const lines = ["## Features\n"];
147
+ lines.push("Behavioral specifications in Gherkin. Each scenario is an executable acceptance test.\n");
148
+ // Group by capability (first directory level)
149
+ const byCapability = new Map();
150
+ for (const file of featureFiles) {
151
+ const rel = relative(featuresDir, file);
152
+ const capability = rel.includes("/") ? rel.split("/")[0] : "(root)";
153
+ if (!byCapability.has(capability))
154
+ byCapability.set(capability, []);
155
+ byCapability.get(capability).push(file);
156
+ }
157
+ for (const [capability, files] of byCapability) {
158
+ lines.push(`### ${capability.charAt(0).toUpperCase() + capability.slice(1)}\n`);
159
+ for (const file of files) {
160
+ const content = await safeRead(file);
161
+ if (!content)
162
+ continue;
163
+ const rel = relative(featuresDir, file);
164
+ // Extract feature title and user story
165
+ const titleMatch = content.match(/^Feature:\s*(.+)$/m);
166
+ const title = titleMatch ? titleMatch[1].trim() : rel;
167
+ const storyLines = [];
168
+ const storyPattern = /^\s+(As an?|I want|So that)\s+(.+)$/gm;
169
+ let m;
170
+ while ((m = storyPattern.exec(content)) !== null) {
171
+ storyLines.push(`${m[1]} ${m[2]}`);
172
+ }
173
+ lines.push(`**${title}** (\`features/${rel}\`)`);
174
+ if (storyLines.length > 0) {
175
+ lines.push(`> ${storyLines.join(" · ")}`);
176
+ }
177
+ lines.push("");
178
+ // Extract scenarios
179
+ const scenarios = content.match(/^\s*Scenario(?: Outline)?:\s*(.+)$/gm);
180
+ if (scenarios) {
181
+ for (const s of scenarios) {
182
+ const name = s.replace(/^\s*Scenario(?: Outline)?:\s*/, "");
183
+ lines.push(`- ${name}`);
184
+ }
185
+ lines.push("");
186
+ }
187
+ }
188
+ }
189
+ return lines.join("\n");
190
+ }
191
+ // --- Data Model ---
192
+ async function buildDataModelSection(root) {
193
+ const schemaPath = join(root, ".grimoire", "docs", "data", "schema.yml");
194
+ let schemaContent;
195
+ try {
196
+ schemaContent = await readFile(schemaPath, "utf-8");
197
+ }
198
+ catch {
199
+ return null;
200
+ }
201
+ const schema = parseYaml(schemaContent);
202
+ if (!schema || Object.keys(schema).length === 0)
203
+ return null;
204
+ const lines = ["## Data Model\n"];
205
+ const internal = [];
206
+ const external = [];
207
+ for (const [name, def] of Object.entries(schema)) {
208
+ if (!def || typeof def !== "object")
209
+ continue;
210
+ if (def.type === "external_api") {
211
+ external.push([name, def]);
212
+ }
213
+ else {
214
+ internal.push([name, def]);
215
+ }
216
+ }
217
+ if (internal.length > 0) {
218
+ lines.push("### Internal Data\n");
219
+ lines.push(...renderInternalModels(internal));
220
+ }
221
+ if (external.length > 0) {
222
+ lines.push("### External APIs\n");
223
+ lines.push(...renderExternalApis(external));
224
+ }
225
+ return lines.join("\n");
226
+ }
227
+ function renderInternalModels(models) {
228
+ const lines = [];
229
+ for (const [name, def] of models) {
230
+ const type = String(def.type ?? "table");
231
+ const source = def.source ? ` — \`${def.source}\`` : "";
232
+ const note = def.note ? ` — ${def.note}` : "";
233
+ lines.push(`#### ${name} (${type})${source}${note}\n`);
234
+ const fields = def.fields;
235
+ if (fields && typeof fields === "object") {
236
+ lines.push(...renderFieldsTable(fields));
237
+ }
238
+ const relationships = def.relationships;
239
+ if (relationships && Array.isArray(relationships)) {
240
+ lines.push(...renderRelationships(relationships));
241
+ }
242
+ }
243
+ return lines;
244
+ }
245
+ function renderExternalApis(apis) {
246
+ const lines = [];
247
+ for (const [name, def] of apis) {
248
+ const provider = def.provider ? ` (${def.provider})` : "";
249
+ lines.push(`#### ${name}${provider}\n`);
250
+ if (def.schema_ref) {
251
+ lines.push(`- **Schema**: ${def.schema_ref}`);
252
+ }
253
+ if (def.client) {
254
+ lines.push(`- **Client**: \`${def.client}\``);
255
+ }
256
+ if (def.auth) {
257
+ lines.push(`- **Auth**: ${def.auth}`);
258
+ }
259
+ if (def.note) {
260
+ lines.push(`- ${def.note}`);
261
+ }
262
+ const endpoints = def.endpoints;
263
+ if (endpoints && typeof endpoints === "object") {
264
+ lines.push("");
265
+ lines.push("| Endpoint | Method | Path |");
266
+ lines.push("|----------|--------|------|");
267
+ for (const [ename, edef] of Object.entries(endpoints)) {
268
+ if (!edef || typeof edef !== "object")
269
+ continue;
270
+ const method = String(edef.method ?? edef.type ?? "—");
271
+ const path = edef.path ? String(edef.path) : "—";
272
+ lines.push(`| ${ename} | ${method} | \`${path}\` |`);
273
+ }
274
+ }
275
+ lines.push("");
276
+ }
277
+ return lines;
278
+ }
279
+ function renderFieldsTable(fields) {
280
+ const lines = [];
281
+ lines.push("| Field | Type | Constraints |");
282
+ lines.push("|-------|------|-------------|");
283
+ for (const [fname, fdef] of Object.entries(fields)) {
284
+ if (!fdef || typeof fdef !== "object")
285
+ continue;
286
+ const ftype = String(fdef.type ?? "unknown");
287
+ const constraints = [];
288
+ if (fdef.pk)
289
+ constraints.push("PK");
290
+ if (fdef.unique)
291
+ constraints.push("unique");
292
+ if (fdef.not_null)
293
+ constraints.push("not null");
294
+ if (fdef.default !== undefined)
295
+ constraints.push(`default: ${fdef.default}`);
296
+ if (fdef.ref)
297
+ constraints.push(`→ ${fdef.ref}`);
298
+ if (fdef.note)
299
+ constraints.push(String(fdef.note));
300
+ lines.push(`| ${fname} | ${ftype} | ${constraints.join(", ") || "—"} |`);
301
+ }
302
+ lines.push("");
303
+ return lines;
304
+ }
305
+ function renderRelationships(relationships) {
306
+ const lines = [];
307
+ for (const rel of relationships) {
308
+ lines.push(`- ${rel.type} → **${rel.target}** (via \`${rel.foreign_key ?? "?"}\`)`);
309
+ }
310
+ lines.push("");
311
+ return lines;
312
+ }
313
+ // --- Decisions ---
314
+ async function buildDecisionsSection(root) {
315
+ const decisionsDir = join(root, ".grimoire", "decisions");
316
+ let files;
317
+ try {
318
+ const entries = await readdir(decisionsDir);
319
+ files = entries
320
+ .filter((f) => f.endsWith(".md") && f !== "template.md")
321
+ .sort();
322
+ }
323
+ catch {
324
+ return null;
325
+ }
326
+ if (files.length === 0)
327
+ return null;
328
+ const lines = ["## Architecture Decisions\n"];
329
+ lines.push("Key decisions recorded as MADR (Markdown Any Decision Records).\n");
330
+ lines.push("| # | Decision | Status | Date |");
331
+ lines.push("|---|----------|--------|------|");
332
+ for (const file of files) {
333
+ const content = await safeRead(join(decisionsDir, file));
334
+ if (!content)
335
+ continue;
336
+ // Extract frontmatter
337
+ const { data: fm } = matter(content);
338
+ const status = fm.status ? String(fm.status).trim() : "—";
339
+ const date = fm.date ? String(fm.date).trim() : "—";
340
+ // Extract title
341
+ const titleMatch = content.match(/^#\s+(.+)$/m);
342
+ const title = titleMatch ? titleMatch[1].trim() : file;
343
+ const num = file.match(/^(\d+)/)?.[1] ?? "—";
344
+ lines.push(`| ${num} | ${title} | ${status} | ${date} |`);
345
+ }
346
+ // Add detail sections for each decision
347
+ lines.push("");
348
+ for (const file of files) {
349
+ const content = await safeRead(join(decisionsDir, file));
350
+ if (!content)
351
+ continue;
352
+ const titleMatch = content.match(/^#\s+(.+)$/m);
353
+ const title = titleMatch ? titleMatch[1].trim() : file;
354
+ const contextMatch = content.match(/^## Context and Problem Statement\s*\n([\s\S]*?)(?=^## )/m);
355
+ const outcomeMatch = content.match(/^## Decision Outcome\s*\n([\s\S]*?)(?=^## |^### Consequences)/m);
356
+ lines.push(`### ${title}\n`);
357
+ if (contextMatch) {
358
+ lines.push(contextMatch[1].trim());
359
+ lines.push("");
360
+ }
361
+ if (outcomeMatch) {
362
+ lines.push(`**Outcome:** ${outcomeMatch[1].trim()}`);
363
+ lines.push("");
364
+ }
365
+ }
366
+ return lines.join("\n");
367
+ }
368
+ // --- Recent Changes ---
369
+ async function buildChangesSection(root) {
370
+ const archiveDir = join(root, ".grimoire", "archive");
371
+ let dirs;
372
+ try {
373
+ const entries = await readdir(archiveDir, { withFileTypes: true });
374
+ dirs = entries
375
+ .filter((d) => d.isDirectory())
376
+ .map((d) => d.name)
377
+ .sort()
378
+ .reverse()
379
+ .slice(0, 20); // Last 20
380
+ }
381
+ catch {
382
+ return null;
383
+ }
384
+ if (dirs.length === 0)
385
+ return null;
386
+ const lines = ["## Recent Changes\n"];
387
+ lines.push("Completed grimoire changes, newest first.\n");
388
+ for (const dir of dirs) {
389
+ const match = dir.match(/^(\d{4}-\d{2}-\d{2})-(.+)$/);
390
+ if (!match)
391
+ continue;
392
+ const [, date, changeId] = match;
393
+ const manifest = await safeRead(join(archiveDir, dir, "manifest.md"));
394
+ if (!manifest)
395
+ continue;
396
+ const titleMatch = manifest.match(/^#\s+Change:\s*(.+)$/m);
397
+ const summary = titleMatch ? titleMatch[1].trim() : changeId;
398
+ const whyMatch = manifest.match(/^##\s+Why\s*\n([\s\S]*?)(?=^## |\Z)/m);
399
+ const why = whyMatch ? whyMatch[1].trim() : "";
400
+ lines.push(`### ${date} — ${summary}\n`);
401
+ if (why) {
402
+ lines.push(why);
403
+ lines.push("");
404
+ }
405
+ }
406
+ return lines.join("\n");
407
+ }
408
+ // --- Active Work ---
409
+ async function buildActiveSection(root) {
410
+ const changesDir = join(root, ".grimoire", "changes");
411
+ let dirs;
412
+ try {
413
+ const entries = await readdir(changesDir, { withFileTypes: true });
414
+ dirs = entries.filter((d) => d.isDirectory()).map((d) => d.name);
415
+ }
416
+ catch {
417
+ return null;
418
+ }
419
+ if (dirs.length === 0)
420
+ return null;
421
+ const lines = ["## Active Work\n"];
422
+ lines.push("Changes currently in progress.\n");
423
+ for (const dir of dirs) {
424
+ const manifest = await safeRead(join(changesDir, dir, "manifest.md"));
425
+ if (!manifest)
426
+ continue;
427
+ const titleMatch = manifest.match(/^#\s+Change:\s*(.+)$/m);
428
+ const summary = titleMatch ? titleMatch[1].trim() : dir;
429
+ // Extract status from frontmatter
430
+ const { data: activeFm } = matter(manifest);
431
+ const status = activeFm.status ? String(activeFm.status).trim() : "draft";
432
+ // Check task progress
433
+ let taskProgress = "";
434
+ const tasks = await safeRead(join(changesDir, dir, "tasks.md"));
435
+ if (tasks) {
436
+ const done = (tasks.match(/^- \[x\] /gm) || []).length;
437
+ const total = done + (tasks.match(/^- \[ \] /gm) || []).length;
438
+ taskProgress = ` — ${done}/${total} tasks`;
439
+ }
440
+ lines.push(`- **${dir}**: ${summary} (${status}${taskProgress})`);
441
+ }
442
+ lines.push("");
443
+ return lines.join("\n");
444
+ }
445
+ // --- Helpers ---
446
+ async function safeRead(path) {
447
+ try {
448
+ return await readFile(path, "utf-8");
449
+ }
450
+ catch {
451
+ return null;
452
+ }
453
+ }
454
+ // findFiles imported from utils/fs.js
455
+ async function detectProjectName(root) {
456
+ // Try package.json
457
+ try {
458
+ const pkg = JSON.parse(await readFile(join(root, "package.json"), "utf-8"));
459
+ if (pkg.name)
460
+ return pkg.name;
461
+ }
462
+ catch {
463
+ // ignore
464
+ }
465
+ // Try pyproject.toml
466
+ try {
467
+ const pyproject = await readFile(join(root, "pyproject.toml"), "utf-8");
468
+ const nameMatch = pyproject.match(/^name\s*=\s*"([^"]+)"/m);
469
+ if (nameMatch)
470
+ return nameMatch[1];
471
+ }
472
+ catch {
473
+ // ignore
474
+ }
475
+ // Fall back to directory name
476
+ return root.split("/").pop() ?? "Project";
477
+ }
478
+ //# sourceMappingURL=docs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"docs.js","sourceRoot":"","sources":["../../src/core/docs.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ interface HealthOptions {
2
+ json: boolean;
3
+ badges?: string;
4
+ }
5
+ export declare function runHealth(options: HealthOptions): Promise<void>;
6
+ export {};
7
+ //# sourceMappingURL=health.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"health.d.ts","sourceRoot":"","sources":["../../src/core/health.ts"],"names":[],"mappings":"AAaA,UAAU,aAAa;IACrB,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAcD,wBAAsB,SAAS,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAyCrE"}