@planu/cli 0.35.2 → 0.37.0

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 (212) hide show
  1. package/dist/config/license-plans.json +2 -1
  2. package/dist/engine/docs-site-generator/dashboard-renderer.d.ts +3 -0
  3. package/dist/engine/docs-site-generator/dashboard-renderer.d.ts.map +1 -0
  4. package/dist/engine/docs-site-generator/dashboard-renderer.js +84 -0
  5. package/dist/engine/docs-site-generator/dashboard-renderer.js.map +1 -0
  6. package/dist/engine/docs-site-generator/data-collector.d.ts +5 -0
  7. package/dist/engine/docs-site-generator/data-collector.d.ts.map +1 -0
  8. package/dist/engine/docs-site-generator/data-collector.js +300 -0
  9. package/dist/engine/docs-site-generator/data-collector.js.map +1 -0
  10. package/dist/engine/docs-site-generator/diagrams-renderer.d.ts +2 -0
  11. package/dist/engine/docs-site-generator/diagrams-renderer.d.ts.map +1 -0
  12. package/dist/engine/docs-site-generator/diagrams-renderer.js +40 -0
  13. package/dist/engine/docs-site-generator/diagrams-renderer.js.map +1 -0
  14. package/dist/engine/docs-site-generator/html-templates.d.ts +12 -0
  15. package/dist/engine/docs-site-generator/html-templates.d.ts.map +1 -0
  16. package/dist/engine/docs-site-generator/html-templates.js +359 -0
  17. package/dist/engine/docs-site-generator/html-templates.js.map +1 -0
  18. package/dist/engine/docs-site-generator/index.d.ts +3 -0
  19. package/dist/engine/docs-site-generator/index.d.ts.map +1 -0
  20. package/dist/engine/docs-site-generator/index.js +74 -0
  21. package/dist/engine/docs-site-generator/index.js.map +1 -0
  22. package/dist/engine/docs-site-generator/markdown-renderer.d.ts +6 -0
  23. package/dist/engine/docs-site-generator/markdown-renderer.d.ts.map +1 -0
  24. package/dist/engine/docs-site-generator/markdown-renderer.js +168 -0
  25. package/dist/engine/docs-site-generator/markdown-renderer.js.map +1 -0
  26. package/dist/engine/docs-site-generator/spec-renderer.d.ts +4 -0
  27. package/dist/engine/docs-site-generator/spec-renderer.d.ts.map +1 -0
  28. package/dist/engine/docs-site-generator/spec-renderer.js +81 -0
  29. package/dist/engine/docs-site-generator/spec-renderer.js.map +1 -0
  30. package/dist/engine/docs-site-generator/tools-renderer.d.ts +3 -0
  31. package/dist/engine/docs-site-generator/tools-renderer.d.ts.map +1 -0
  32. package/dist/engine/docs-site-generator/tools-renderer.js +55 -0
  33. package/dist/engine/docs-site-generator/tools-renderer.js.map +1 -0
  34. package/dist/engine/safety/atomic-writer.d.ts +22 -0
  35. package/dist/engine/safety/atomic-writer.d.ts.map +1 -0
  36. package/dist/engine/safety/atomic-writer.js +89 -0
  37. package/dist/engine/safety/atomic-writer.js.map +1 -0
  38. package/dist/engine/safety/circuit-breaker.d.ts +14 -0
  39. package/dist/engine/safety/circuit-breaker.d.ts.map +1 -0
  40. package/dist/engine/safety/circuit-breaker.js +63 -0
  41. package/dist/engine/safety/circuit-breaker.js.map +1 -0
  42. package/dist/engine/safety/file-mutex.d.ts +13 -0
  43. package/dist/engine/safety/file-mutex.d.ts.map +1 -0
  44. package/dist/engine/safety/file-mutex.js +108 -0
  45. package/dist/engine/safety/file-mutex.js.map +1 -0
  46. package/dist/engine/safety/health-monitor.d.ts +4 -0
  47. package/dist/engine/safety/health-monitor.d.ts.map +1 -0
  48. package/dist/engine/safety/health-monitor.js +95 -0
  49. package/dist/engine/safety/health-monitor.js.map +1 -0
  50. package/dist/engine/safety/index.d.ts +7 -0
  51. package/dist/engine/safety/index.d.ts.map +1 -0
  52. package/dist/engine/safety/index.js +8 -0
  53. package/dist/engine/safety/index.js.map +1 -0
  54. package/dist/engine/safety/path-sanitizer.d.ts +17 -0
  55. package/dist/engine/safety/path-sanitizer.d.ts.map +1 -0
  56. package/dist/engine/safety/path-sanitizer.js +36 -0
  57. package/dist/engine/safety/path-sanitizer.js.map +1 -0
  58. package/dist/engine/safety/transaction.d.ts +18 -0
  59. package/dist/engine/safety/transaction.d.ts.map +1 -0
  60. package/dist/engine/safety/transaction.js +70 -0
  61. package/dist/engine/safety/transaction.js.map +1 -0
  62. package/dist/engine/webhook/server.d.ts +4 -10
  63. package/dist/engine/webhook/server.d.ts.map +1 -1
  64. package/dist/engine/webhook/server.js +78 -24
  65. package/dist/engine/webhook/server.js.map +1 -1
  66. package/dist/resources/process.js +2 -2
  67. package/dist/resources/process.js.map +1 -1
  68. package/dist/storage/base-store.d.ts.map +1 -1
  69. package/dist/storage/base-store.js +3 -2
  70. package/dist/storage/base-store.js.map +1 -1
  71. package/dist/storage/trash-store.d.ts +10 -0
  72. package/dist/storage/trash-store.d.ts.map +1 -1
  73. package/dist/storage/trash-store.js +74 -0
  74. package/dist/storage/trash-store.js.map +1 -1
  75. package/dist/tools/check-config-health.d.ts.map +1 -1
  76. package/dist/tools/check-config-health.js +2 -1
  77. package/dist/tools/check-config-health.js.map +1 -1
  78. package/dist/tools/generate-docs-site.d.ts +3 -0
  79. package/dist/tools/generate-docs-site.d.ts.map +1 -0
  80. package/dist/tools/generate-docs-site.js +25 -0
  81. package/dist/tools/generate-docs-site.js.map +1 -0
  82. package/dist/tools/generate-teammate-prompt.d.ts.map +1 -1
  83. package/dist/tools/generate-teammate-prompt.js +7 -4
  84. package/dist/tools/generate-teammate-prompt.js.map +1 -1
  85. package/dist/tools/plan-team-distribution.d.ts.map +1 -1
  86. package/dist/tools/plan-team-distribution.js +6 -2
  87. package/dist/tools/plan-team-distribution.js.map +1 -1
  88. package/dist/tools/register-agent-tools.d.ts.map +1 -1
  89. package/dist/tools/register-agent-tools.js +32 -14
  90. package/dist/tools/register-agent-tools.js.map +1 -1
  91. package/dist/tools/register-changelog-tools.d.ts.map +1 -1
  92. package/dist/tools/register-changelog-tools.js +6 -2
  93. package/dist/tools/register-changelog-tools.js.map +1 -1
  94. package/dist/tools/register-ci-tools.d.ts.map +1 -1
  95. package/dist/tools/register-ci-tools.js +12 -3
  96. package/dist/tools/register-ci-tools.js.map +1 -1
  97. package/dist/tools/register-context-tools.d.ts.map +1 -1
  98. package/dist/tools/register-context-tools.js +32 -11
  99. package/dist/tools/register-context-tools.js.map +1 -1
  100. package/dist/tools/register-coverage-tools.d.ts.map +1 -1
  101. package/dist/tools/register-coverage-tools.js +2 -1
  102. package/dist/tools/register-coverage-tools.js.map +1 -1
  103. package/dist/tools/register-delete-tools.d.ts.map +1 -1
  104. package/dist/tools/register-delete-tools.js +9 -8
  105. package/dist/tools/register-delete-tools.js.map +1 -1
  106. package/dist/tools/register-event-tools.d.ts.map +1 -1
  107. package/dist/tools/register-event-tools.js +69 -33
  108. package/dist/tools/register-event-tools.js.map +1 -1
  109. package/dist/tools/register-facilitator-tools.d.ts.map +1 -1
  110. package/dist/tools/register-facilitator-tools.js +10 -2
  111. package/dist/tools/register-facilitator-tools.js.map +1 -1
  112. package/dist/tools/register-governance-tools.d.ts.map +1 -1
  113. package/dist/tools/register-governance-tools.js +4 -1
  114. package/dist/tools/register-governance-tools.js.map +1 -1
  115. package/dist/tools/register-hooks-tools.d.ts.map +1 -1
  116. package/dist/tools/register-hooks-tools.js +45 -18
  117. package/dist/tools/register-hooks-tools.js.map +1 -1
  118. package/dist/tools/register-ide-tools.js +1 -1
  119. package/dist/tools/register-ide-tools.js.map +1 -1
  120. package/dist/tools/register-learning-tools.d.ts.map +1 -1
  121. package/dist/tools/register-learning-tools.js +7 -1
  122. package/dist/tools/register-learning-tools.js.map +1 -1
  123. package/dist/tools/register-license-tools.d.ts.map +1 -1
  124. package/dist/tools/register-license-tools.js +6 -1
  125. package/dist/tools/register-license-tools.js.map +1 -1
  126. package/dist/tools/register-llm-provider-tools.d.ts.map +1 -1
  127. package/dist/tools/register-llm-provider-tools.js +13 -9
  128. package/dist/tools/register-llm-provider-tools.js.map +1 -1
  129. package/dist/tools/register-memory-tools.d.ts.map +1 -1
  130. package/dist/tools/register-memory-tools.js +17 -6
  131. package/dist/tools/register-memory-tools.js.map +1 -1
  132. package/dist/tools/register-migration-tools.d.ts.map +1 -1
  133. package/dist/tools/register-migration-tools.js +8 -1
  134. package/dist/tools/register-migration-tools.js.map +1 -1
  135. package/dist/tools/register-orchestrator-tools.d.ts.map +1 -1
  136. package/dist/tools/register-orchestrator-tools.js +15 -14
  137. package/dist/tools/register-orchestrator-tools.js.map +1 -1
  138. package/dist/tools/register-platform-tools/design-stack-tools.d.ts.map +1 -1
  139. package/dist/tools/register-platform-tools/design-stack-tools.js +62 -35
  140. package/dist/tools/register-platform-tools/design-stack-tools.js.map +1 -1
  141. package/dist/tools/register-platform-tools/lifecycle-infra-tools.d.ts.map +1 -1
  142. package/dist/tools/register-platform-tools/lifecycle-infra-tools.js +72 -36
  143. package/dist/tools/register-platform-tools/lifecycle-infra-tools.js.map +1 -1
  144. package/dist/tools/register-readiness-tools.js +4 -4
  145. package/dist/tools/register-readiness-tools.js.map +1 -1
  146. package/dist/tools/register-runtime-security-tools.js +1 -1
  147. package/dist/tools/register-runtime-security-tools.js.map +1 -1
  148. package/dist/tools/register-scope-tools.d.ts.map +1 -1
  149. package/dist/tools/register-scope-tools.js +26 -6
  150. package/dist/tools/register-scope-tools.js.map +1 -1
  151. package/dist/tools/register-search-tools.js +2 -2
  152. package/dist/tools/register-search-tools.js.map +1 -1
  153. package/dist/tools/register-security-tools.d.ts.map +1 -1
  154. package/dist/tools/register-security-tools.js +4 -3
  155. package/dist/tools/register-security-tools.js.map +1 -1
  156. package/dist/tools/register-spec-tools/analysis-tools.d.ts.map +1 -1
  157. package/dist/tools/register-spec-tools/analysis-tools.js +36 -25
  158. package/dist/tools/register-spec-tools/analysis-tools.js.map +1 -1
  159. package/dist/tools/register-spec-tools/core-spec-tools.d.ts.map +1 -1
  160. package/dist/tools/register-spec-tools/core-spec-tools.js +38 -24
  161. package/dist/tools/register-spec-tools/core-spec-tools.js.map +1 -1
  162. package/dist/tools/register-stack-tools.d.ts.map +1 -1
  163. package/dist/tools/register-stack-tools.js +18 -10
  164. package/dist/tools/register-stack-tools.js.map +1 -1
  165. package/dist/tools/register-team-tools.d.ts.map +1 -1
  166. package/dist/tools/register-team-tools.js +17 -9
  167. package/dist/tools/register-team-tools.js.map +1 -1
  168. package/dist/tools/register-template-tools.d.ts.map +1 -1
  169. package/dist/tools/register-template-tools.js +13 -2
  170. package/dist/tools/register-template-tools.js.map +1 -1
  171. package/dist/tools/register-transform-tools.d.ts.map +1 -1
  172. package/dist/tools/register-transform-tools.js +3 -2
  173. package/dist/tools/register-transform-tools.js.map +1 -1
  174. package/dist/tools/register-workspace-tools.d.ts.map +1 -1
  175. package/dist/tools/register-workspace-tools.js +21 -1
  176. package/dist/tools/register-workspace-tools.js.map +1 -1
  177. package/dist/tools/schemas/github.d.ts.map +1 -1
  178. package/dist/tools/schemas/github.js +18 -9
  179. package/dist/tools/schemas/github.js.map +1 -1
  180. package/dist/tools/schemas/ide-config.js +1 -1
  181. package/dist/tools/schemas/ide-config.js.map +1 -1
  182. package/dist/tools/schemas/plugins-schemas.d.ts.map +1 -1
  183. package/dist/tools/schemas/plugins-schemas.js +15 -4
  184. package/dist/tools/schemas/plugins-schemas.js.map +1 -1
  185. package/dist/tools/schemas/registry.d.ts.map +1 -1
  186. package/dist/tools/schemas/registry.js +27 -10
  187. package/dist/tools/schemas/registry.js.map +1 -1
  188. package/dist/tools/schemas/session.d.ts.map +1 -1
  189. package/dist/tools/schemas/session.js +5 -3
  190. package/dist/tools/schemas/session.js.map +1 -1
  191. package/dist/tools/schemas/workers-schema.d.ts.map +1 -1
  192. package/dist/tools/schemas/workers-schema.js +16 -9
  193. package/dist/tools/schemas/workers-schema.js.map +1 -1
  194. package/dist/tools/validate-team-results.d.ts.map +1 -1
  195. package/dist/tools/validate-team-results.js +9 -3
  196. package/dist/tools/validate-team-results.js.map +1 -1
  197. package/dist/types/docs.d.ts +51 -0
  198. package/dist/types/docs.d.ts.map +1 -1
  199. package/dist/types/index.d.ts +2 -0
  200. package/dist/types/index.d.ts.map +1 -1
  201. package/dist/types/index.js +2 -0
  202. package/dist/types/index.js.map +1 -1
  203. package/dist/types/safe-schemas.d.ts +12 -0
  204. package/dist/types/safe-schemas.d.ts.map +1 -0
  205. package/dist/types/safe-schemas.js +27 -0
  206. package/dist/types/safe-schemas.js.map +1 -0
  207. package/dist/types/safety.d.ts +66 -0
  208. package/dist/types/safety.d.ts.map +1 -0
  209. package/dist/types/safety.js +3 -0
  210. package/dist/types/safety.js.map +1 -0
  211. package/package.json +1 -1
  212. package/src/config/license-plans.json +2 -1
@@ -122,7 +122,8 @@
122
122
  "create_release",
123
123
  "generate_changelog",
124
124
  "validate_team_results",
125
- "audit_claude_config"
125
+ "audit_claude_config",
126
+ "generate_docs_site"
126
127
  ],
127
128
  "alwaysAllowed": [
128
129
  "activate_license",
@@ -0,0 +1,3 @@
1
+ import type { DocSpecSummary, ProjectMetrics } from '../../types/index.js';
2
+ export declare function renderDashboard(specs: DocSpecSummary[], metrics: ProjectMetrics): string;
3
+ //# sourceMappingURL=dashboard-renderer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dashboard-renderer.d.ts","sourceRoot":"","sources":["../../../src/engine/docs-site-generator/dashboard-renderer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAqF3E,wBAAgB,eAAe,CAAC,KAAK,EAAE,cAAc,EAAE,EAAE,OAAO,EAAE,cAAc,GAAG,MAAM,CAOxF"}
@@ -0,0 +1,84 @@
1
+ import { renderProgressBar, renderStatusBadge } from './html-templates.js';
2
+ function renderSummaryCards(specs, metrics) {
3
+ const done = specs.filter((s) => s.status === 'done').length;
4
+ const inProgress = specs.filter((s) => s.status === 'implementing').length;
5
+ const draft = specs.filter((s) => s.status === 'draft').length;
6
+ return `<div class="summary-cards">
7
+ <div class="card card-total"><h3>Total Specs</h3><p>${String(metrics.totalSpecs)}</p></div>
8
+ <div class="card card-done"><h3>Done</h3><p>${String(done)}</p></div>
9
+ <div class="card card-progress"><h3>In Progress</h3><p>${String(inProgress)}</p></div>
10
+ <div class="card card-draft"><h3>Draft</h3><p>${String(draft)}</p></div>
11
+ <div class="card card-tools"><h3>Total Tools</h3><p>${String(metrics.totalTools)}</p></div>
12
+ </div>`;
13
+ }
14
+ function renderSpecsTable(specs) {
15
+ if (specs.length === 0) {
16
+ return '<p class="empty">No specs found.</p>';
17
+ }
18
+ const rows = specs
19
+ .map((spec) => {
20
+ const searchable = `${spec.id} ${spec.title}`.toLowerCase();
21
+ return ` <tr data-searchable="${searchable}">
22
+ <td>${spec.id}</td>
23
+ <td><a href="specs/${spec.slug}.html">${spec.title}</a></td>
24
+ <td>${renderStatusBadge(spec.status)}</td>
25
+ <td>${spec.category}</td>
26
+ <td>${renderProgressBar(spec.criteriaDone, spec.criteriaTotal)}</td>
27
+ <td>${spec.type}</td>
28
+ </tr>`;
29
+ })
30
+ .join('\n');
31
+ return `<table class="specs-table">
32
+ <thead>
33
+ <tr>
34
+ <th>ID</th><th>Title</th><th>Status</th><th>Category</th><th>Progress</th><th>Type</th>
35
+ </tr>
36
+ </thead>
37
+ <tbody>
38
+ ${rows}
39
+ </tbody>
40
+ </table>`;
41
+ }
42
+ function renderMetricsSection(metrics) {
43
+ const locBars = Object.entries(metrics.locByLayer)
44
+ .map(([layer, loc]) => {
45
+ return ` <div class="bar-row">
46
+ <span class="bar-label">${layer}</span>
47
+ <div class="bar" style="width:${String(loc)}px"></div>
48
+ <span class="bar-value">${String(loc)}</span>
49
+ </div>`;
50
+ })
51
+ .join('\n');
52
+ const specTypes = Object.entries(metrics.specsByStatus)
53
+ .map(([status, count]) => `${status}: ${String(count)}`)
54
+ .join(', ');
55
+ return `<div class="metrics-section">
56
+ <h2>Metrics</h2>
57
+ <div class="loc-chart">
58
+ <h3>Lines of Code by Layer</h3>
59
+ ${locBars}
60
+ </div>
61
+ <div class="test-count">
62
+ <h3>Tests</h3>
63
+ <p>${String(metrics.testCount)}</p>
64
+ </div>
65
+ <div class="specs-by-type">
66
+ <h3>Specs by Status</h3>
67
+ <div class="mermaid">pie title Specs by Status
68
+ ${Object.entries(metrics.specsByStatus)
69
+ .map(([s, c]) => ` "${s}" : ${String(c)}`)
70
+ .join('\n')}
71
+ </div>
72
+ <noscript><p>${specTypes}</p></noscript>
73
+ </div>
74
+ </div>`;
75
+ }
76
+ export function renderDashboard(specs, metrics) {
77
+ return `<div class="dashboard">
78
+ ${renderSummaryCards(specs, metrics)}
79
+ <h2>Specifications</h2>
80
+ ${renderSpecsTable(specs)}
81
+ ${renderMetricsSection(metrics)}
82
+ </div>`;
83
+ }
84
+ //# sourceMappingURL=dashboard-renderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dashboard-renderer.js","sourceRoot":"","sources":["../../../src/engine/docs-site-generator/dashboard-renderer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import type { DocSpecSummary, ToolEntry, ProjectMetrics } from '../../types/docs.js';
2
+ export declare function collectSpecs(projectPath: string): Promise<DocSpecSummary[]>;
3
+ export declare function collectTools(projectPath: string): ToolEntry[];
4
+ export declare function collectMetrics(projectPath: string): Promise<ProjectMetrics>;
5
+ //# sourceMappingURL=data-collector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-collector.d.ts","sourceRoot":"","sources":["../../../src/engine/docs-site-generator/data-collector.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAqHrF,wBAAsB,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,CA+FjF;AAED,wBAAgB,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,EAAE,CA4B7D;AAuDD,wBAAsB,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CA+BjF"}
@@ -0,0 +1,300 @@
1
+ // SPEC-093: Data collector for docs site generator
2
+ import { readFileSync } from 'node:fs';
3
+ import { readdir, readFile, stat } from 'node:fs/promises';
4
+ import { join, basename } from 'node:path';
5
+ const SDD_PHASES = {
6
+ Initialize: ['init_project', 'init_constitution', 'set_locale'],
7
+ Analyze: [
8
+ 'suggest_stack',
9
+ 'check_versions',
10
+ 'suggest_tooling',
11
+ 'detect_deprecations',
12
+ 'security_check',
13
+ 'audit_stack',
14
+ 'paradigm_report',
15
+ 'discover_mcps',
16
+ 'suggest_mcps',
17
+ 'detect_agent',
18
+ 'check_config_health',
19
+ ],
20
+ 'Create Spec': [
21
+ 'clarify_requirements',
22
+ 'create_spec',
23
+ 'define_ui_contract',
24
+ 'design_schema',
25
+ 'event_contracts',
26
+ 'challenge_spec',
27
+ 'detect_contradictions',
28
+ 'apply_template',
29
+ 'list_templates',
30
+ ],
31
+ 'Filter & Enrich': [
32
+ 'estimate',
33
+ 'check_readiness',
34
+ 'manage_scope',
35
+ 'reality_check',
36
+ 'estimate_ai_cost',
37
+ 'recommend_model',
38
+ 'plan_team_distribution',
39
+ ],
40
+ Review: [
41
+ 'validate',
42
+ 'detect_drift',
43
+ 'check_spec_accuracy',
44
+ 'validate_workflow',
45
+ 'spec_coverage',
46
+ 'review_pr',
47
+ ],
48
+ Implement: [
49
+ 'generate_execution_plan',
50
+ 'generate_tests',
51
+ 'generate_rules',
52
+ 'generate_skill',
53
+ 'generate_sub_agent',
54
+ 'generate_teammate_prompt',
55
+ 'package_handoff',
56
+ 'manage_git',
57
+ 'generate_orchestration_script',
58
+ 'orchestrate',
59
+ 'orchestrate_agents',
60
+ 'transform_code',
61
+ 'generate_ci',
62
+ 'generate_planu_ci',
63
+ 'generate_ide_config',
64
+ 'scaffold_plugin',
65
+ 'configure_workers',
66
+ 'orchestrate_runtime',
67
+ 'configure_llm_providers',
68
+ 'create_pr_from_spec',
69
+ ],
70
+ Validate: ['audit', 'reconcile_spec', 'validate_team_results', 'audit_claude_config'],
71
+ 'Document & Ship': [
72
+ 'generate_docs',
73
+ 'summarize_spec',
74
+ 'generate_adr',
75
+ 'generate_checklist',
76
+ 'generate_changelog',
77
+ 'create_release',
78
+ ],
79
+ };
80
+ function findPhaseForTool(toolName) {
81
+ for (const [phase, tools] of Object.entries(SDD_PHASES)) {
82
+ if (tools.includes(toolName)) {
83
+ return phase;
84
+ }
85
+ }
86
+ return 'Other';
87
+ }
88
+ function parseSpecId(dirName) {
89
+ const match = /^(SPEC-\d+)/.exec(dirName);
90
+ return match?.[1] ?? dirName;
91
+ }
92
+ function slugify(name) {
93
+ return name
94
+ .toLowerCase()
95
+ .replace(/[^a-z0-9]+/g, '-')
96
+ .replace(/^-|-$/g, '');
97
+ }
98
+ function parseSpecType(title) {
99
+ const lower = title.toLowerCase();
100
+ if (lower.includes('refactor')) {
101
+ return 'refactor';
102
+ }
103
+ if (lower.includes('fix') || lower.includes('bug')) {
104
+ return 'fix';
105
+ }
106
+ if (lower.includes('test')) {
107
+ return 'test';
108
+ }
109
+ if (lower.includes('doc')) {
110
+ return 'docs';
111
+ }
112
+ return 'feature';
113
+ }
114
+ // eslint-disable-next-line complexity, max-lines-per-function -- spec parsing requires many field extractions
115
+ export async function collectSpecs(projectPath) {
116
+ const specsDir = join(projectPath, 'planu', 'specs');
117
+ const results = [];
118
+ let categories;
119
+ try {
120
+ categories = await readdir(specsDir);
121
+ }
122
+ catch {
123
+ return [];
124
+ }
125
+ for (const category of categories) {
126
+ const categoryPath = join(specsDir, category);
127
+ const categoryStat = await stat(categoryPath).catch(() => null);
128
+ if (!categoryStat?.isDirectory()) {
129
+ continue;
130
+ }
131
+ const specDirs = await readdir(categoryPath).catch(() => []);
132
+ for (const specDir of specDirs) {
133
+ const specPath = join(categoryPath, specDir);
134
+ const dirStat = await stat(specPath).catch(() => null);
135
+ if (!dirStat?.isDirectory()) {
136
+ continue;
137
+ }
138
+ const specFilePath = join(specPath, 'spec.md');
139
+ let content;
140
+ try {
141
+ content = await readFile(specFilePath, 'utf-8');
142
+ }
143
+ catch {
144
+ continue;
145
+ }
146
+ const lines = content.split('\n');
147
+ const titleLine = lines.find((l) => l.startsWith('# '));
148
+ const titleMatch = titleLine ? /^#\s+(?:SPEC-\d+:\s*)?(.+)/.exec(titleLine) : null;
149
+ const title = titleMatch?.[1]?.trim() ?? specDir;
150
+ const statusLine = lines.find((l) => l.includes('**Status:**'));
151
+ const statusMatch = statusLine ? /\*\*Status:\*\*\s*(\w[\w-]*)/.exec(statusLine) : null;
152
+ const status = statusMatch?.[1] ?? 'draft';
153
+ let criteriaDone = 0;
154
+ let criteriaTotal = 0;
155
+ for (const line of lines) {
156
+ if (/^\s*-\s*\[x\]/i.test(line)) {
157
+ criteriaDone++;
158
+ criteriaTotal++;
159
+ }
160
+ else if (/^\s*-\s*\[\s\]/.test(line)) {
161
+ criteriaTotal++;
162
+ }
163
+ }
164
+ const tags = [];
165
+ const tagsIndex = lines.findIndex((l) => /^##\s+Tags/.test(l));
166
+ if (tagsIndex >= 0) {
167
+ for (let i = tagsIndex + 1; i < lines.length; i++) {
168
+ const tagLine = lines[i];
169
+ if (tagLine === undefined) {
170
+ break;
171
+ }
172
+ if (tagLine.startsWith('##')) {
173
+ break;
174
+ }
175
+ const tagMatch = /^\s*-\s*(.+)/.exec(tagLine);
176
+ if (tagMatch?.[1]) {
177
+ tags.push(tagMatch[1].trim());
178
+ }
179
+ }
180
+ }
181
+ results.push({
182
+ id: parseSpecId(specDir),
183
+ title,
184
+ slug: slugify(specDir),
185
+ status,
186
+ category: basename(category),
187
+ type: parseSpecType(title),
188
+ criteriaTotal,
189
+ criteriaDone,
190
+ tags,
191
+ specPath: specFilePath,
192
+ });
193
+ }
194
+ }
195
+ results.sort((a, b) => {
196
+ const numA = parseInt(/\d+/.exec(a.id)?.[0] ?? '0', 10);
197
+ const numB = parseInt(/\d+/.exec(b.id)?.[0] ?? '0', 10);
198
+ return numA - numB;
199
+ });
200
+ return results;
201
+ }
202
+ export function collectTools(projectPath) {
203
+ const plansPath = join(projectPath, 'src', 'config', 'license-plans.json');
204
+ const plans = JSON.parse(readFileSync(plansPath, 'utf-8'));
205
+ const entries = [];
206
+ for (const tool of plans.freeTools) {
207
+ entries.push({
208
+ name: tool,
209
+ description: tool.replace(/_/g, ' '),
210
+ phase: findPhaseForTool(tool),
211
+ tier: 'free',
212
+ });
213
+ }
214
+ for (const tool of plans.proTools) {
215
+ entries.push({
216
+ name: tool,
217
+ description: tool.replace(/_/g, ' '),
218
+ phase: findPhaseForTool(tool),
219
+ tier: 'pro',
220
+ });
221
+ }
222
+ return entries;
223
+ }
224
+ async function countLinesInDir(dirPath) {
225
+ let total = 0;
226
+ let entries;
227
+ try {
228
+ entries = await readdir(dirPath);
229
+ }
230
+ catch {
231
+ return 0;
232
+ }
233
+ for (const entry of entries) {
234
+ const fullPath = join(dirPath, entry);
235
+ const entryStat = await stat(fullPath).catch(() => null);
236
+ if (!entryStat) {
237
+ continue;
238
+ }
239
+ if (entryStat.isDirectory()) {
240
+ total += await countLinesInDir(fullPath);
241
+ }
242
+ else if (entry.endsWith('.ts')) {
243
+ const content = await readFile(fullPath, 'utf-8').catch(() => '');
244
+ total += content.split('\n').length;
245
+ }
246
+ }
247
+ return total;
248
+ }
249
+ async function countTestFiles(testsDir) {
250
+ let count = 0;
251
+ let entries;
252
+ try {
253
+ entries = await readdir(testsDir);
254
+ }
255
+ catch {
256
+ return 0;
257
+ }
258
+ for (const entry of entries) {
259
+ const fullPath = join(testsDir, entry);
260
+ const entryStat = await stat(fullPath).catch(() => null);
261
+ if (!entryStat) {
262
+ continue;
263
+ }
264
+ if (entryStat.isDirectory()) {
265
+ count += await countTestFiles(fullPath);
266
+ }
267
+ else if (entry.endsWith('.test.ts')) {
268
+ count++;
269
+ }
270
+ }
271
+ return count;
272
+ }
273
+ export async function collectMetrics(projectPath) {
274
+ const specs = await collectSpecs(projectPath);
275
+ const tools = collectTools(projectPath);
276
+ const specsByStatus = {};
277
+ for (const spec of specs) {
278
+ specsByStatus[spec.status] = (specsByStatus[spec.status] ?? 0) + 1;
279
+ }
280
+ const toolsByPhase = {};
281
+ for (const tool of tools) {
282
+ toolsByPhase[tool.phase] = (toolsByPhase[tool.phase] ?? 0) + 1;
283
+ }
284
+ const srcDir = join(projectPath, 'src');
285
+ const layers = ['tools', 'engine', 'types', 'storage'];
286
+ const locByLayer = {};
287
+ for (const layer of layers) {
288
+ locByLayer[layer] = await countLinesInDir(join(srcDir, layer));
289
+ }
290
+ const testCount = await countTestFiles(join(projectPath, 'tests'));
291
+ return {
292
+ totalSpecs: specs.length,
293
+ specsByStatus,
294
+ totalTools: tools.length,
295
+ toolsByPhase,
296
+ locByLayer,
297
+ testCount,
298
+ };
299
+ }
300
+ //# sourceMappingURL=data-collector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-collector.js","sourceRoot":"","sources":["../../../src/engine/docs-site-generator/data-collector.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function renderDiagramsPage(): string;
2
+ //# sourceMappingURL=diagrams-renderer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diagrams-renderer.d.ts","sourceRoot":"","sources":["../../../src/engine/docs-site-generator/diagrams-renderer.ts"],"names":[],"mappings":"AAmCA,wBAAgB,kBAAkB,IAAI,MAAM,CAO3C"}
@@ -0,0 +1,40 @@
1
+ const ARCHITECTURE_DIAGRAM = `graph TD
2
+ Transport["MCP Transport (index.ts)"] --> Tools["Tools (src/tools/)"]
3
+ Transport --> Resources["Resources (src/resources/)"]
4
+ Tools --> Engine["Engine (src/engine/)"]
5
+ Resources --> Engine
6
+ Engine --> Types["Types (src/types/)"]
7
+ Tools --> Storage["Storage (src/storage/)"]
8
+ Engine -.-> Storage
9
+ Storage --> Types`;
10
+ const SDD_FLOW_DIAGRAM = `graph LR
11
+ Init["1. Initialize"] --> Analyze["2. Analyze"]
12
+ Analyze --> Spec["3. Create Spec"]
13
+ Spec --> Filter["4. Filter"]
14
+ Filter --> Review["5. Review"]
15
+ Review --> Impl["6. Implement"]
16
+ Impl --> Valid["7. Validate"]
17
+ Valid --> Doc["8. Document"]`;
18
+ const SPEC_LIFECYCLE_DIAGRAM = `stateDiagram-v2
19
+ [*] --> draft
20
+ draft --> review
21
+ review --> approved
22
+ review --> draft: feedback
23
+ approved --> implementing
24
+ implementing --> done
25
+ done --> [*]`;
26
+ function wrapMermaid(title, content) {
27
+ return `<div class="diagram-section">
28
+ <h2>${title}</h2>
29
+ <div class="mermaid">${content}</div>
30
+ </div>`;
31
+ }
32
+ export function renderDiagramsPage() {
33
+ return `<div class="diagrams-page">
34
+ <h1>Architecture Diagrams</h1>
35
+ ${wrapMermaid('Clean Architecture', ARCHITECTURE_DIAGRAM)}
36
+ ${wrapMermaid('SDD Flow', SDD_FLOW_DIAGRAM)}
37
+ ${wrapMermaid('Spec Lifecycle', SPEC_LIFECYCLE_DIAGRAM)}
38
+ </div>`;
39
+ }
40
+ //# sourceMappingURL=diagrams-renderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diagrams-renderer.js","sourceRoot":"","sources":["../../../src/engine/docs-site-generator/diagrams-renderer.ts"],"names":[],"mappings":"AAAA,MAAM,oBAAoB,GAAG;;;;;;;;oBAQT,CAAC;AAErB,MAAM,gBAAgB,GAAG;;;;;;;+BAOM,CAAC;AAEhC,MAAM,sBAAsB,GAAG;;;;;;;eAOhB,CAAC;AAEhB,SAAS,WAAW,CAAC,KAAa,EAAE,OAAe;IACjD,OAAO;QACD,KAAK;yBACY,OAAO;OACzB,CAAC;AACR,CAAC;AAED,MAAM,UAAU,kBAAkB;IAChC,OAAO;;EAEP,WAAW,CAAC,oBAAoB,EAAE,oBAAoB,CAAC;EACvD,WAAW,CAAC,UAAU,EAAE,gBAAgB,CAAC;EACzC,WAAW,CAAC,gBAAgB,EAAE,sBAAsB,CAAC;OAChD,CAAC;AACR,CAAC"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * HTML templates for the static docs site generator.
3
+ * Provides layout, CSS, navigation, and shared HTML utilities.
4
+ */
5
+ import type { NavItem } from '../../types/index.js';
6
+ export declare function getStyles(): string;
7
+ export declare function renderNav(items: NavItem[], activePath?: string): string;
8
+ export declare function wrapPage(title: string, content: string, navItems: NavItem[]): string;
9
+ export declare function renderProgressBar(done: number, total: number): string;
10
+ export declare function renderStatusBadge(status: string): string;
11
+ export declare function renderSearchScript(): string;
12
+ //# sourceMappingURL=html-templates.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"html-templates.d.ts","sourceRoot":"","sources":["../../../src/engine/docs-site-generator/html-templates.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAGpD,wBAAgB,SAAS,IAAI,MAAM,CA2PlC;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CAyBvE;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,MAAM,CA0BpF;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAWrE;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAWxD;AAED,wBAAgB,kBAAkB,IAAI,MAAM,CAa3C"}