@planu/cli 1.3.0 → 1.4.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 (72) hide show
  1. package/dist/config/license-plans.json +4 -1
  2. package/dist/engine/doc-compliance-checker.d.ts +23 -0
  3. package/dist/engine/doc-compliance-checker.d.ts.map +1 -0
  4. package/dist/engine/doc-compliance-checker.js +168 -0
  5. package/dist/engine/doc-compliance-checker.js.map +1 -0
  6. package/dist/engine/skill-generator/sections-docs.d.ts +13 -0
  7. package/dist/engine/skill-generator/sections-docs.d.ts.map +1 -0
  8. package/dist/engine/skill-generator/sections-docs.js +59 -0
  9. package/dist/engine/skill-generator/sections-docs.js.map +1 -0
  10. package/dist/engine/skill-generator/skills-content.d.ts +1 -1
  11. package/dist/engine/skill-generator/skills-content.d.ts.map +1 -1
  12. package/dist/engine/skill-generator/skills-content.js +3 -2
  13. package/dist/engine/skill-generator/skills-content.js.map +1 -1
  14. package/dist/engine/skill-generator/skills.d.ts +1 -0
  15. package/dist/engine/skill-generator/skills.d.ts.map +1 -1
  16. package/dist/engine/skill-generator/skills.js +1 -0
  17. package/dist/engine/skill-generator/skills.js.map +1 -1
  18. package/dist/engine/skill-generator.d.ts.map +1 -1
  19. package/dist/engine/skill-generator.js +21 -2
  20. package/dist/engine/skill-generator.js.map +1 -1
  21. package/dist/engine/web-fetcher/docs-intelligence.d.ts +8 -0
  22. package/dist/engine/web-fetcher/docs-intelligence.d.ts.map +1 -0
  23. package/dist/engine/web-fetcher/docs-intelligence.js +154 -0
  24. package/dist/engine/web-fetcher/docs-intelligence.js.map +1 -0
  25. package/dist/engine/web-fetcher/registry-auto-discovery.d.ts +20 -0
  26. package/dist/engine/web-fetcher/registry-auto-discovery.d.ts.map +1 -0
  27. package/dist/engine/web-fetcher/registry-auto-discovery.js +184 -0
  28. package/dist/engine/web-fetcher/registry-auto-discovery.js.map +1 -0
  29. package/dist/engine/web-fetcher/stack-detector.d.ts +4 -0
  30. package/dist/engine/web-fetcher/stack-detector.d.ts.map +1 -0
  31. package/dist/engine/web-fetcher/stack-detector.js +155 -0
  32. package/dist/engine/web-fetcher/stack-detector.js.map +1 -0
  33. package/dist/index.js +4 -0
  34. package/dist/index.js.map +1 -1
  35. package/dist/tools/create-spec/spec-builder.d.ts.map +1 -1
  36. package/dist/tools/create-spec/spec-builder.js +20 -0
  37. package/dist/tools/create-spec/spec-builder.js.map +1 -1
  38. package/dist/tools/create-spec-hu/docs-criteria-adapter.d.ts +14 -0
  39. package/dist/tools/create-spec-hu/docs-criteria-adapter.d.ts.map +1 -0
  40. package/dist/tools/create-spec-hu/docs-criteria-adapter.js +50 -0
  41. package/dist/tools/create-spec-hu/docs-criteria-adapter.js.map +1 -0
  42. package/dist/tools/create-spec-hu.d.ts +1 -1
  43. package/dist/tools/create-spec-hu.d.ts.map +1 -1
  44. package/dist/tools/create-spec-hu.js +5 -1
  45. package/dist/tools/create-spec-hu.js.map +1 -1
  46. package/dist/tools/create-spec.d.ts.map +1 -1
  47. package/dist/tools/create-spec.js +2 -2
  48. package/dist/tools/create-spec.js.map +1 -1
  49. package/dist/tools/doc-compliance-handler.d.ts +3 -0
  50. package/dist/tools/doc-compliance-handler.d.ts.map +1 -0
  51. package/dist/tools/doc-compliance-handler.js +48 -0
  52. package/dist/tools/doc-compliance-handler.js.map +1 -0
  53. package/dist/tools/docs-registry-handler.d.ts +6 -0
  54. package/dist/tools/docs-registry-handler.d.ts.map +1 -0
  55. package/dist/tools/docs-registry-handler.js +73 -0
  56. package/dist/tools/docs-registry-handler.js.map +1 -0
  57. package/dist/tools/register-doc-compliance-tools.d.ts +3 -0
  58. package/dist/tools/register-doc-compliance-tools.d.ts.map +1 -0
  59. package/dist/tools/register-doc-compliance-tools.js +18 -0
  60. package/dist/tools/register-doc-compliance-tools.js.map +1 -0
  61. package/dist/tools/register-docs-registry-tools.d.ts +3 -0
  62. package/dist/tools/register-docs-registry-tools.d.ts.map +1 -0
  63. package/dist/tools/register-docs-registry-tools.js +35 -0
  64. package/dist/tools/register-docs-registry-tools.js.map +1 -0
  65. package/dist/types/docs.d.ts +70 -0
  66. package/dist/types/docs.d.ts.map +1 -1
  67. package/dist/types/mcp.d.ts +17 -0
  68. package/dist/types/mcp.d.ts.map +1 -1
  69. package/dist/types/spec/core.d.ts +2 -0
  70. package/dist/types/spec/core.d.ts.map +1 -1
  71. package/package.json +1 -1
  72. package/src/config/license-plans.json +4 -1
@@ -409,7 +409,10 @@
409
409
  "review_pr_against_spec",
410
410
  "pr_agent_status",
411
411
  "generate_e2e_tests",
412
- "e2e_test_status"
412
+ "e2e_test_status",
413
+ "validate_docs_registry",
414
+ "discover_docs_url",
415
+ "doc_compliance_report"
413
416
  ],
414
417
  "alwaysAllowed": [
415
418
  "activate_license",
@@ -0,0 +1,23 @@
1
+ import type { DocComplianceReport, DocComplianceIssue, StructuredDocsResult } from '../types/index.js';
2
+ export type { DocComplianceReport, DocComplianceIssue };
3
+ /**
4
+ * Checks if any anti-pattern from official docs appears in spec content.
5
+ * Returns a DocComplianceIssue for each match found.
6
+ */
7
+ export declare function detectAntiPatterns(tech: string, docsResult: StructuredDocsResult, specContent: string): DocComplianceIssue[];
8
+ /**
9
+ * Identifies best practices from official docs that are NOT covered in the spec.
10
+ * Returns a list of missing best practice descriptions.
11
+ */
12
+ export declare function detectMissingBestPractices(tech: string, docsResult: StructuredDocsResult, specContent: string): DocComplianceIssue[];
13
+ /**
14
+ * Calculates a compliance score 0-100 based on issues found.
15
+ * High severity issues cost more points.
16
+ */
17
+ export declare function calculateComplianceScore(issues: DocComplianceIssue[], totalChecks: number): number;
18
+ /**
19
+ * Main entry point: checks a spec file against official documentation.
20
+ * Reads the spec file, detects techs, fetches docs, and checks for issues.
21
+ */
22
+ export declare function checkDocCompliance(specPath: string, specId: string): Promise<DocComplianceReport>;
23
+ //# sourceMappingURL=doc-compliance-checker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doc-compliance-checker.d.ts","sourceRoot":"","sources":["../../src/engine/doc-compliance-checker.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,mBAAmB,EACnB,kBAAkB,EAClB,oBAAoB,EACrB,MAAM,mBAAmB,CAAC;AAK3B,YAAY,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,CAAC;AAExD;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,oBAAoB,EAChC,WAAW,EAAE,MAAM,GAClB,kBAAkB,EAAE,CA0BtB;AAED;;;GAGG;AACH,wBAAgB,0BAA0B,CACxC,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,oBAAoB,EAChC,WAAW,EAAE,MAAM,GAClB,kBAAkB,EAAE,CA6BtB;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,kBAAkB,EAAE,EAC5B,WAAW,EAAE,MAAM,GAClB,MAAM,CAQR;AAYD;;;GAGG;AACH,wBAAsB,kBAAkB,CACtC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,mBAAmB,CAAC,CAwF9B"}
@@ -0,0 +1,168 @@
1
+ // engine/doc-compliance-checker.ts — SPEC-385
2
+ // Checks a spec against official documentation for anti-patterns and missing best practices.
3
+ import { readFile } from 'node:fs/promises';
4
+ import { detectTechsFromText } from './web-fetcher/stack-detector.js';
5
+ import { fetchDocsBatch } from './web-fetcher/docs-intelligence.js';
6
+ /**
7
+ * Checks if any anti-pattern from official docs appears in spec content.
8
+ * Returns a DocComplianceIssue for each match found.
9
+ */
10
+ export function detectAntiPatterns(tech, docsResult, specContent) {
11
+ const issues = [];
12
+ const lower = specContent.toLowerCase();
13
+ for (const ap of docsResult.antiPatterns) {
14
+ // Extract key terms from the anti-pattern description (first 5 words)
15
+ const keyTerms = ap
16
+ .toLowerCase()
17
+ .replace(/[^a-z0-9\s]/g, ' ')
18
+ .split(/\s+/)
19
+ .filter((w) => w.length > 3)
20
+ .slice(0, 5);
21
+ const matchCount = keyTerms.filter((term) => lower.includes(term)).length;
22
+ if (matchCount >= 2) {
23
+ issues.push({
24
+ tech,
25
+ issueType: 'anti-pattern',
26
+ description: ap,
27
+ source: docsResult.docsUrl,
28
+ severity: 'high',
29
+ });
30
+ }
31
+ }
32
+ return issues;
33
+ }
34
+ /**
35
+ * Identifies best practices from official docs that are NOT covered in the spec.
36
+ * Returns a list of missing best practice descriptions.
37
+ */
38
+ export function detectMissingBestPractices(tech, docsResult, specContent) {
39
+ const issues = [];
40
+ const lower = specContent.toLowerCase();
41
+ for (const bp of docsResult.bestPractices.slice(0, 5)) {
42
+ const keyTerms = bp
43
+ .toLowerCase()
44
+ .replace(/[^a-z0-9\s]/g, ' ')
45
+ .split(/\s+/)
46
+ .filter((w) => w.length > 3)
47
+ .slice(0, 5);
48
+ if (keyTerms.length === 0) {
49
+ continue;
50
+ }
51
+ const matchCount = keyTerms.filter((term) => lower.includes(term)).length;
52
+ // If fewer than 1/3 of key terms appear, best practice is likely missing
53
+ if (matchCount < Math.max(1, Math.ceil(keyTerms.length / 3))) {
54
+ issues.push({
55
+ tech,
56
+ issueType: 'missing-best-practice',
57
+ description: `Missing: ${bp}`,
58
+ source: docsResult.docsUrl,
59
+ severity: 'medium',
60
+ });
61
+ }
62
+ }
63
+ return issues;
64
+ }
65
+ /**
66
+ * Calculates a compliance score 0-100 based on issues found.
67
+ * High severity issues cost more points.
68
+ */
69
+ export function calculateComplianceScore(issues, totalChecks) {
70
+ if (totalChecks === 0) {
71
+ return 100;
72
+ }
73
+ const penalty = issues.reduce((sum, issue) => {
74
+ return sum + (issue.severity === 'high' ? 15 : issue.severity === 'medium' ? 8 : 3);
75
+ }, 0);
76
+ return Math.max(0, Math.min(100, 100 - penalty));
77
+ }
78
+ /**
79
+ * Extracts spec title from frontmatter or first heading.
80
+ */
81
+ function extractSpecTitle(specContent, fallback) {
82
+ const titleMatch = /^title:\s*"?([^"\n]+)"?/m.exec(specContent) ??
83
+ /^#\s+(?:SPEC-\d+[:\s]+)?(.+)/m.exec(specContent);
84
+ return titleMatch?.[1]?.trim() ?? fallback;
85
+ }
86
+ /**
87
+ * Main entry point: checks a spec file against official documentation.
88
+ * Reads the spec file, detects techs, fetches docs, and checks for issues.
89
+ */
90
+ export async function checkDocCompliance(specPath, specId) {
91
+ // Read spec content
92
+ let specContent;
93
+ let specTitle;
94
+ try {
95
+ specContent = await readFile(specPath, 'utf-8');
96
+ specTitle = extractSpecTitle(specContent, specId);
97
+ }
98
+ catch {
99
+ // fallback to specId as search text
100
+ specContent = specId;
101
+ specTitle = specId;
102
+ }
103
+ // Detect technologies
104
+ const detected = detectTechsFromText(specContent);
105
+ const techs = detected
106
+ .filter((t) => t.confidence === 'high' || t.confidence === 'medium')
107
+ .map((t) => t.name)
108
+ .slice(0, 6);
109
+ if (techs.length === 0) {
110
+ return {
111
+ specId,
112
+ specTitle,
113
+ checkedAt: new Date().toISOString(),
114
+ techs: [],
115
+ issues: [],
116
+ bestPracticesCovered: [],
117
+ complianceScore: 100,
118
+ summary: 'No technologies detected in spec — skipping doc compliance check.',
119
+ };
120
+ }
121
+ // Fetch docs for detected techs
122
+ const docsMap = await fetchDocsBatch(techs, { timeout: 5_000, concurrency: 3 });
123
+ // Run checks
124
+ const allIssues = [];
125
+ const bestPracticesCovered = [];
126
+ let totalChecks = 0;
127
+ for (const [tech, docsResult] of docsMap) {
128
+ if (docsResult.source === 'fallback') {
129
+ continue;
130
+ }
131
+ const antiPatternIssues = detectAntiPatterns(tech, docsResult, specContent);
132
+ const missingBpIssues = detectMissingBestPractices(tech, docsResult, specContent);
133
+ allIssues.push(...antiPatternIssues);
134
+ allIssues.push(...missingBpIssues);
135
+ totalChecks += docsResult.antiPatterns.length + docsResult.bestPractices.slice(0, 5).length;
136
+ // Track covered best practices
137
+ const lower = specContent.toLowerCase();
138
+ for (const bp of docsResult.bestPractices.slice(0, 5)) {
139
+ const keyTerms = bp
140
+ .toLowerCase()
141
+ .replace(/[^a-z0-9\s]/g, ' ')
142
+ .split(/\s+/)
143
+ .filter((w) => w.length > 3)
144
+ .slice(0, 5);
145
+ const matchCount = keyTerms.filter((term) => lower.includes(term)).length;
146
+ if (matchCount >= Math.max(1, Math.ceil(keyTerms.length / 3))) {
147
+ bestPracticesCovered.push(`[${tech}] ${bp.slice(0, 80)}`);
148
+ }
149
+ }
150
+ }
151
+ const complianceScore = calculateComplianceScore(allIssues, totalChecks);
152
+ const highIssues = allIssues.filter((i) => i.severity === 'high').length;
153
+ const mediumIssues = allIssues.filter((i) => i.severity === 'medium').length;
154
+ const summary = allIssues.length === 0
155
+ ? `Spec is fully compliant with official docs for: ${techs.join(', ')}.`
156
+ : `Found ${highIssues} high + ${mediumIssues} medium issues against official docs for: ${techs.join(', ')}.`;
157
+ return {
158
+ specId,
159
+ specTitle,
160
+ checkedAt: new Date().toISOString(),
161
+ techs,
162
+ issues: allIssues,
163
+ bestPracticesCovered,
164
+ complianceScore,
165
+ summary,
166
+ };
167
+ }
168
+ //# sourceMappingURL=doc-compliance-checker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doc-compliance-checker.js","sourceRoot":"","sources":["../../src/engine/doc-compliance-checker.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import type { StructuredDocsResult } from '../../types/index.js';
2
+ /**
3
+ * Builds a "Official Documentation References" markdown section for a skill.
4
+ * Includes best practices, anti-patterns, and tooling from official docs.
5
+ * Returns empty string if no useful data (source is 'fallback').
6
+ */
7
+ export declare function buildDocAwareSection(tech: string, docs: StructuredDocsResult): string;
8
+ /**
9
+ * Builds doc-aware sections for multiple techs.
10
+ * Returns concatenated sections, skipping empty ones (fallback sources).
11
+ */
12
+ export declare function buildDocAwareSections(docsMap: Map<string, StructuredDocsResult>): string;
13
+ //# sourceMappingURL=sections-docs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sections-docs.d.ts","sourceRoot":"","sources":["../../../src/engine/skill-generator/sections-docs.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAEjE;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,oBAAoB,GAAG,MAAM,CAwCrF;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,oBAAoB,CAAC,GAAG,MAAM,CAexF"}
@@ -0,0 +1,59 @@
1
+ // engine/skill-generator/sections-docs.ts — SPEC-384
2
+ // Builds an official documentation section for generated skills.
3
+ /**
4
+ * Builds a "Official Documentation References" markdown section for a skill.
5
+ * Includes best practices, anti-patterns, and tooling from official docs.
6
+ * Returns empty string if no useful data (source is 'fallback').
7
+ */
8
+ export function buildDocAwareSection(tech, docs) {
9
+ if (docs.source === 'fallback') {
10
+ return '';
11
+ }
12
+ const lines = [`## ${tech} — Official Documentation`];
13
+ if (docs.docsUrl) {
14
+ lines.push(``, `> Source: ${docs.docsUrl}`);
15
+ }
16
+ if (docs.bestPractices.length > 0) {
17
+ lines.push('', '### Best Practices');
18
+ for (const bp of docs.bestPractices.slice(0, 5)) {
19
+ lines.push(`- ${bp}`);
20
+ }
21
+ }
22
+ if (docs.antiPatterns.length > 0) {
23
+ lines.push('', '### Anti-Patterns to Avoid');
24
+ for (const ap of docs.antiPatterns.slice(0, 3)) {
25
+ lines.push(`- ⚠️ ${ap}`);
26
+ }
27
+ }
28
+ if (docs.toolingRecommendations.length > 0) {
29
+ lines.push('', '### Recommended Tooling');
30
+ for (const tool of docs.toolingRecommendations.slice(0, 3)) {
31
+ lines.push(`- ${tool}`);
32
+ }
33
+ }
34
+ if (docs.versionNotes.length > 0) {
35
+ lines.push('', '### Version Notes');
36
+ for (const note of docs.versionNotes.slice(0, 2)) {
37
+ lines.push(`- ${note}`);
38
+ }
39
+ }
40
+ return lines.join('\n');
41
+ }
42
+ /**
43
+ * Builds doc-aware sections for multiple techs.
44
+ * Returns concatenated sections, skipping empty ones (fallback sources).
45
+ */
46
+ export function buildDocAwareSections(docsMap) {
47
+ const sections = [];
48
+ for (const [tech, docs] of docsMap) {
49
+ const section = buildDocAwareSection(tech, docs);
50
+ if (section) {
51
+ sections.push(section);
52
+ }
53
+ }
54
+ if (sections.length === 0) {
55
+ return '';
56
+ }
57
+ return ['', '---', '', '## Official Documentation References', '', ...sections].join('\n');
58
+ }
59
+ //# sourceMappingURL=sections-docs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sections-docs.js","sourceRoot":"","sources":["../../../src/engine/skill-generator/sections-docs.ts"],"names":[],"mappings":"AAAA,qDAAqD;AACrD,iEAAiE;AAIjE;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAAC,IAAY,EAAE,IAA0B;IAC3E,IAAI,IAAI,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;QAC/B,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,KAAK,GAAa,CAAC,MAAM,IAAI,2BAA2B,CAAC,CAAC;IAEhE,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QACjB,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,aAAa,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;IAC9C,CAAC;IAED,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAClC,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,oBAAoB,CAAC,CAAC;QACrC,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;YAChD,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACxB,CAAC;IACH,CAAC;IAED,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACjC,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,4BAA4B,CAAC,CAAC;QAC7C,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;YAC/C,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC;IAED,IAAI,IAAI,CAAC,sBAAsB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3C,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,yBAAyB,CAAC,CAAC;QAC1C,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;YAC3D,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;IAED,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACjC,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,mBAAmB,CAAC,CAAC;QACpC,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;YACjD,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CAAC,OAA0C;IAC9E,MAAM,QAAQ,GAAa,EAAE,CAAC;IAE9B,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,OAAO,EAAE,CAAC;QACnC,MAAM,OAAO,GAAG,oBAAoB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACjD,IAAI,OAAO,EAAE,CAAC;YACZ,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACzB,CAAC;IACH,CAAC;IAED,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,OAAO,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,sCAAsC,EAAE,EAAE,EAAE,GAAG,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC7F,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import type { AgentPlatform, SkillFile, ProjectKnowledge, PlatformConfig } from '../../types/index.js';
2
2
  export declare function generateProjectRulesSkill(config: PlatformConfig, name: string, description: string, knowledge: ProjectKnowledge): SkillFile;
3
- export declare function generateDomainSkill(config: PlatformConfig, name: string, description: string, knowledge: ProjectKnowledge, specContent?: string): SkillFile;
3
+ export declare function generateDomainSkill(config: PlatformConfig, name: string, description: string, knowledge: ProjectKnowledge, specContent?: string, docSection?: string): SkillFile;
4
4
  export declare function generateWorkflowSkill(config: PlatformConfig, name: string, description: string, knowledge: ProjectKnowledge): SkillFile;
5
5
  export declare function generateConventionSkill(config: PlatformConfig, name: string, description: string, knowledge: ProjectKnowledge): SkillFile;
6
6
  export declare function generateSddWorkflowSkillContent(knowledge: ProjectKnowledge): string;
@@ -1 +1 @@
1
- {"version":3,"file":"skills-content.d.ts","sourceRoot":"","sources":["../../../src/engine/skill-generator/skills-content.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,aAAa,EACb,SAAS,EACT,gBAAgB,EAChB,cAAc,EACf,MAAM,sBAAsB,CAAC;AAE9B,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,cAAc,EACtB,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,gBAAgB,GAC1B,SAAS,CA4BX;AAED,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,cAAc,EACtB,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,gBAAgB,EAC3B,WAAW,CAAC,EAAE,MAAM,GACnB,SAAS,CAuCX;AAED,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,cAAc,EACtB,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,gBAAgB,GAC1B,SAAS,CAgCX;AAED,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,cAAc,EACtB,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,gBAAgB,GAC1B,SAAS,CA0BX;AAED,wBAAgB,+BAA+B,CAAC,SAAS,EAAE,gBAAgB,GAAG,MAAM,CA2BnF;AAED,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,aAAa,EACvB,MAAM,EAAE,cAAc,EACtB,KAAK,EAAE,SAAS,EAAE,EAClB,SAAS,CAAC,EAAE,MAAM,GACjB,MAAM,CAkCR"}
1
+ {"version":3,"file":"skills-content.d.ts","sourceRoot":"","sources":["../../../src/engine/skill-generator/skills-content.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,aAAa,EACb,SAAS,EACT,gBAAgB,EAChB,cAAc,EACf,MAAM,sBAAsB,CAAC;AAE9B,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,cAAc,EACtB,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,gBAAgB,GAC1B,SAAS,CA4BX;AAED,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,cAAc,EACtB,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,gBAAgB,EAC3B,WAAW,CAAC,EAAE,MAAM,EACpB,UAAU,CAAC,EAAE,MAAM,GAClB,SAAS,CAwCX;AAED,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,cAAc,EACtB,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,gBAAgB,GAC1B,SAAS,CAgCX;AAED,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,cAAc,EACtB,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,gBAAgB,GAC1B,SAAS,CA0BX;AAED,wBAAgB,+BAA+B,CAAC,SAAS,EAAE,gBAAgB,GAAG,MAAM,CA2BnF;AAED,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,aAAa,EACvB,MAAM,EAAE,cAAc,EACtB,KAAK,EAAE,SAAS,EAAE,EAClB,SAAS,CAAC,EAAE,MAAM,GACjB,MAAM,CAkCR"}
@@ -24,10 +24,10 @@ export function generateProjectRulesSkill(config, name, description, knowledge)
24
24
  : config.rulesFile;
25
25
  return { path, content, format: config.format };
26
26
  }
27
- export function generateDomainSkill(config, name, description, knowledge, specContent) {
27
+ export function generateDomainSkill(config, name, description, knowledge, specContent, docSection) {
28
28
  const slug = name.toLowerCase().replace(/\s+/g, '-');
29
29
  const agentSlug = `${slug}-agent`;
30
- const content = [
30
+ const baseContent = [
31
31
  `# ${name}`,
32
32
  '',
33
33
  description,
@@ -59,6 +59,7 @@ export function generateDomainSkill(config, name, description, knowledge, specCo
59
59
  `- **Orchestration**: See \`scripts/orchestrate-${slug}.sh\` (generated alongside this skill)`,
60
60
  '- The sub-agent handles subtask delegation; this skill manages commit, tracking, pipeline',
61
61
  ].join('\n');
62
+ const content = docSection ? `${baseContent}\n\n${docSection}` : baseContent;
62
63
  const path = config.skillsDir ? `${config.skillsDir}${slug}.md` : `skills/${slug}.md`;
63
64
  return { path, content, format: 'markdown' };
64
65
  }
@@ -1 +1 @@
1
- {"version":3,"file":"skills-content.js","sourceRoot":"","sources":["../../../src/engine/skill-generator/skills-content.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"skills-content.js","sourceRoot":"","sources":["../../../src/engine/skill-generator/skills-content.ts"],"names":[],"mappings":"AAAA,wDAAwD;AASxD,MAAM,UAAU,yBAAyB,CACvC,MAAsB,EACtB,IAAY,EACZ,WAAmB,EACnB,SAA2B;IAE3B,MAAM,OAAO,GAAG;QACd,KAAK,IAAI,EAAE;QACX,EAAE;QACF,WAAW;QACX,EAAE;QACF,UAAU;QACV,eAAe,SAAS,CAAC,QAAQ,EAAE;QACnC,gBAAgB,SAAS,CAAC,SAAS,IAAI,MAAM,EAAE;QAC/C,eAAe,SAAS,CAAC,QAAQ,EAAE;QACnC,mBAAmB,SAAS,CAAC,YAAY,CAAC,OAAO,EAAE;QACnD,EAAE;QACF,UAAU;QACV,EAAE;QACF,GAAG,SAAS,CAAC,cAAc,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC;QAClE,EAAE;QACF,WAAW;QACX,EAAE;QACF,GAAG,SAAS,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,CAClC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,cAAc,EAAE,CAC5E;KACF,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEb,MAAM,IAAI,GAAG,MAAM,CAAC,SAAS;QAC3B,CAAC,CAAC,GAAG,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK;QACpE,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC;IAErB,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;AAClD,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,MAAsB,EACtB,IAAY,EACZ,WAAmB,EACnB,SAA2B,EAC3B,WAAoB,EACpB,UAAmB;IAEnB,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACrD,MAAM,SAAS,GAAG,GAAG,IAAI,QAAQ,CAAC;IAClC,MAAM,WAAW,GAAG;QAClB,KAAK,IAAI,EAAE;QACX,EAAE;QACF,WAAW;QACX,EAAE;QACF,YAAY;QACZ,yBAAyB,SAAS,CAAC,QAAQ,IAAI,SAAS,CAAC,SAAS,IAAI,QAAQ,WAAW;QACzF,EAAE;QACF,WAAW,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE;QACpC,WAAW,IAAI,EAAE;QACjB,EAAE;QACF,WAAW;QACX,EAAE;QACF,yFAAyF;QACzF,uFAAuF;QACvF,6EAA6E;QAC7E,uEAAuE;QACvE,6EAA6E;QAC7E,EAAE;QACF,eAAe;QACf,EAAE;QACF,6CAA6C;QAC7C,0CAA0C;QAC1C,6BAA6B;QAC7B,qCAAqC;QACrC,EAAE;QACF,uBAAuB;QACvB,EAAE;QACF,6EAA6E,SAAS,OAAO;QAC7F,kDAAkD,IAAI,wCAAwC;QAC9F,2FAA2F;KAC5F,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEb,MAAM,OAAO,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,WAAW,OAAO,UAAU,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC;IAC7E,MAAM,IAAI,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,SAAS,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,UAAU,IAAI,KAAK,CAAC;IAEtF,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,MAAsB,EACtB,IAAY,EACZ,WAAmB,EACnB,SAA2B;IAE3B,MAAM,OAAO,GAAG;QACd,KAAK,IAAI,EAAE;QACX,EAAE;QACF,WAAW;QACX,EAAE;QACF,mBAAmB;QACnB,EAAE;QACF,uDAAuD;QACvD,2DAA2D;QAC3D,yCAAyC;QACzC,2CAA2C;QAC3C,8CAA8C;QAC9C,0CAA0C;QAC1C,EAAE;QACF,aAAa;QACb,EAAE;QACF,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC,cAAc,SAAS,CAAC,YAAY,IAAI,CAAC,CAAC,CAAC,EAAE;QACtE,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,aAAa,SAAS,CAAC,WAAW,IAAI,CAAC,CAAC,CAAC,EAAE;QACnE,EAAE;QACF,kBAAkB;QAClB,EAAE;QACF,mBAAmB,SAAS,CAAC,YAAY,IAAI;KAC9C;SACE,MAAM,CAAC,OAAO,CAAC;SACf,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,MAAM,IAAI,GAAG,MAAM,CAAC,SAAS;QAC3B,CAAC,CAAC,GAAG,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK;QACpE,CAAC,CAAC,UAAU,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC;IAE3D,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,uBAAuB,CACrC,MAAsB,EACtB,IAAY,EACZ,WAAmB,EACnB,SAA2B;IAE3B,MAAM,OAAO,GAAG;QACd,KAAK,IAAI,EAAE;QACX,EAAE;QACF,WAAW;QACX,EAAE;QACF,gBAAgB;QAChB,EAAE;QACF,GAAG,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QAC5E,EAAE;QACF,sBAAsB;QACtB,EAAE;QACF,eAAe,SAAS,CAAC,cAAc,CAAC,UAAU,EAAE;QACpD,EAAE;QACF,GAAG,SAAS,CAAC,cAAc,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;QAC3D,EAAE;QACF,uBAAuB;QACvB,EAAE;QACF,GAAG,SAAS,CAAC,cAAc,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;KACnE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEb,MAAM,IAAI,GAAG,MAAM,CAAC,SAAS;QAC3B,CAAC,CAAC,GAAG,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK;QACpE,CAAC,CAAC,UAAU,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC;IAE3D,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,+BAA+B,CAAC,SAA2B;IACzE,OAAO;QACL,sBAAsB;QACtB,EAAE;QACF,+DAA+D;QAC/D,EAAE;QACF,gBAAgB;QAChB,EAAE;QACF,6EAA6E;QAC7E,EAAE;QACF,UAAU;QACV,EAAE;QACF,kEAAkE;QAClE,gEAAgE;QAChE,sEAAsE;QACtE,uFAAuF;QACvF,4DAA4D;QAC5D,gEAAgE;QAChE,4DAA4D;QAC5D,EAAE;QACF,iBAAiB;QACjB,EAAE;QACF,eAAe,SAAS,CAAC,QAAQ,EAAE;QACnC,gBAAgB,SAAS,CAAC,SAAS,IAAI,MAAM,EAAE;QAC/C,mBAAmB,SAAS,CAAC,YAAY,CAAC,OAAO,EAAE;QACnD,YAAY,SAAS,CAAC,YAAY,EAAE;KACrC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED,MAAM,UAAU,wBAAwB,CACtC,QAAuB,EACvB,MAAsB,EACtB,KAAkB,EAClB,SAAkB;IAElB,MAAM,YAAY,GAAa,EAAE,CAAC;IAElC,YAAY,CAAC,IAAI,CAAC,kBAAkB,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC;IACpD,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEtB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,YAAY,CAAC,IAAI,CAAC,sCAAsC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;IACzE,CAAC;IAED,IAAI,QAAQ,KAAK,aAAa,EAAE,CAAC;QAC/B,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACtB,YAAY,CAAC,IAAI,CAAC,wEAAwE,CAAC,CAAC;IAC9F,CAAC;SAAM,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;QACjC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACtB,YAAY,CAAC,IAAI,CAAC,oEAAoE,CAAC,CAAC;IAC1F,CAAC;SAAM,IAAI,QAAQ,KAAK,UAAU,EAAE,CAAC;QACnC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACtB,YAAY,CAAC,IAAI,CAAC,wEAAwE,CAAC,CAAC;IAC9F,CAAC;IAED,IAAI,SAAS,KAAK,cAAc,EAAE,CAAC;QACjC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACtB,YAAY,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;QAChD,YAAY,CAAC,IAAI,CAAC,yEAAyE,CAAC,CAAC;QAC7F,YAAY,CAAC,IAAI,CACf,kFAAkF,CACnF,CAAC;QACF,YAAY,CAAC,IAAI,CACf,iFAAiF,CAClF,CAAC;IACJ,CAAC;IAED,OAAO,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACjC,CAAC"}
@@ -1,3 +1,4 @@
1
1
  export { generateProjectRulesSkill, generateDomainSkill, generateWorkflowSkill, generateConventionSkill, generateSddWorkflowSkillContent, buildInstallInstructions, } from './skills-content.js';
2
2
  export { generateOrchestrationScript } from './skills-orchestration.js';
3
+ export { buildDocAwareSection, buildDocAwareSections } from './sections-docs.js';
3
4
  //# sourceMappingURL=skills.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"skills.d.ts","sourceRoot":"","sources":["../../../src/engine/skill-generator/skills.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,yBAAyB,EACzB,mBAAmB,EACnB,qBAAqB,EACrB,uBAAuB,EACvB,+BAA+B,EAC/B,wBAAwB,GACzB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,2BAA2B,EAAE,MAAM,2BAA2B,CAAC"}
1
+ {"version":3,"file":"skills.d.ts","sourceRoot":"","sources":["../../../src/engine/skill-generator/skills.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,yBAAyB,EACzB,mBAAmB,EACnB,qBAAqB,EACrB,uBAAuB,EACvB,+BAA+B,EAC/B,wBAAwB,GACzB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,2BAA2B,EAAE,MAAM,2BAA2B,CAAC;AAExE,OAAO,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC"}
@@ -2,4 +2,5 @@
2
2
  // Split for file-size compliance (400L limit).
3
3
  export { generateProjectRulesSkill, generateDomainSkill, generateWorkflowSkill, generateConventionSkill, generateSddWorkflowSkillContent, buildInstallInstructions, } from './skills-content.js';
4
4
  export { generateOrchestrationScript } from './skills-orchestration.js';
5
+ export { buildDocAwareSection, buildDocAwareSections } from './sections-docs.js';
5
6
  //# sourceMappingURL=skills.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"skills.js","sourceRoot":"","sources":["../../../src/engine/skill-generator/skills.ts"],"names":[],"mappings":"AAAA,yEAAyE;AACzE,+CAA+C;AAE/C,OAAO,EACL,yBAAyB,EACzB,mBAAmB,EACnB,qBAAqB,EACrB,uBAAuB,EACvB,+BAA+B,EAC/B,wBAAwB,GACzB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,2BAA2B,EAAE,MAAM,2BAA2B,CAAC"}
1
+ {"version":3,"file":"skills.js","sourceRoot":"","sources":["../../../src/engine/skill-generator/skills.ts"],"names":[],"mappings":"AAAA,yEAAyE;AACzE,+CAA+C;AAE/C,OAAO,EACL,yBAAyB,EACzB,mBAAmB,EACnB,qBAAqB,EACrB,uBAAuB,EACvB,+BAA+B,EAC/B,wBAAwB,GACzB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,2BAA2B,EAAE,MAAM,2BAA2B,CAAC;AAExE,OAAO,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"skill-generator.d.ts","sourceRoot":"","sources":["../../src/engine/skill-generator.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,aAAa,EACb,mBAAmB,EACnB,mBAAmB,EAEnB,gBAAgB,EAChB,YAAY,EAEZ,gBAAgB,EACjB,MAAM,mBAAmB,CAAC;AAyB3B,OAAO,EACL,cAAc,EACd,mBAAmB,EACnB,4BAA4B,GAC7B,MAAM,6BAA6B,CAAC;AAErC,OAAO,EAAE,+BAA+B,EAAE,MAAM,+BAA+B,CAAC;AAEhF,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AAEzE,OAAO,EAAE,2BAA2B,EAAE,MAAM,6BAA6B,CAAC;AAI1E;;GAEG;AACH,wBAAsB,aAAa,CACjC,QAAQ,EAAE,aAAa,EACvB,SAAS,EAAE,eAAe,GAAG,cAAc,GAAG,UAAU,GAAG,YAAY,EACvE,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,gBAAgB,EAC3B,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,mBAAmB,CAAC,CAwC9B;AAED;;GAEG;AACH,wBAAsB,aAAa,CACjC,QAAQ,EAAE,aAAa,EACvB,SAAS,EAAE,gBAAgB,EAC3B,YAAY,CAAC,EAAE,YAAY,EAC3B,OAAO,GAAE;IACP,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,iBAAiB,CAAC,EAAE,gBAAgB,EAAE,CAAC;CACnC,GACL,OAAO,CAAC,mBAAmB,CAAC,CAgH9B"}
1
+ {"version":3,"file":"skill-generator.d.ts","sourceRoot":"","sources":["../../src/engine/skill-generator.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,aAAa,EACb,mBAAmB,EACnB,mBAAmB,EAEnB,gBAAgB,EAChB,YAAY,EAEZ,gBAAgB,EACjB,MAAM,mBAAmB,CAAC;AAyB3B,OAAO,EACL,cAAc,EACd,mBAAmB,EACnB,4BAA4B,GAC7B,MAAM,6BAA6B,CAAC;AAErC,OAAO,EAAE,+BAA+B,EAAE,MAAM,+BAA+B,CAAC;AAEhF,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AAEzE,OAAO,EAAE,2BAA2B,EAAE,MAAM,6BAA6B,CAAC;AAI1E;;GAEG;AACH,wBAAsB,aAAa,CACjC,QAAQ,EAAE,aAAa,EACvB,SAAS,EAAE,eAAe,GAAG,cAAc,GAAG,UAAU,GAAG,YAAY,EACvE,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,gBAAgB,EAC3B,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,mBAAmB,CAAC,CAmE9B;AAED;;GAEG;AACH,wBAAsB,aAAa,CACjC,QAAQ,EAAE,aAAa,EACvB,SAAS,EAAE,gBAAgB,EAC3B,YAAY,CAAC,EAAE,YAAY,EAC3B,OAAO,GAAE;IACP,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,iBAAiB,CAAC,EAAE,gBAAgB,EAAE,CAAC;CACnC,GACL,OAAO,CAAC,mBAAmB,CAAC,CAgH9B"}
@@ -29,11 +29,30 @@ export async function generateSkill(platform, skillType, name, description, know
29
29
  case 'project-rules':
30
30
  files.push(generateProjectRulesSkill(config, name, description, knowledge));
31
31
  break;
32
- case 'domain-skill':
33
- files.push(generateDomainSkill(config, name, description, knowledge, specContent));
32
+ case 'domain-skill': {
33
+ let docSection = '';
34
+ try {
35
+ const { detectTechsFromText } = await import('./web-fetcher/stack-detector.js');
36
+ const { fetchDocsBatch } = await import('./web-fetcher/docs-intelligence.js');
37
+ const { buildDocAwareSections } = await import('./skill-generator/sections-docs.js');
38
+ const detected = detectTechsFromText(`${name} ${description}`);
39
+ const techNames = detected
40
+ .filter((t) => t.confidence === 'high' || t.confidence === 'medium')
41
+ .map((t) => t.name)
42
+ .slice(0, 4);
43
+ if (techNames.length > 0) {
44
+ const docsMap = await fetchDocsBatch(techNames, { timeout: 3_000, concurrency: 2 });
45
+ docSection = buildDocAwareSections(docsMap);
46
+ }
47
+ }
48
+ catch {
49
+ // Silent fallback — doc enrichment is best-effort
50
+ }
51
+ files.push(generateDomainSkill(config, name, description, knowledge, specContent, docSection || undefined));
34
52
  // 3-layer automation: include orchestration script for implementation skills
35
53
  files.push(_generateOrchestrationScript(name, knowledge));
36
54
  break;
55
+ }
37
56
  case 'workflow':
38
57
  files.push(generateWorkflowSkill(config, name, description, knowledge));
39
58
  break;
@@ -1 +1 @@
1
- {"version":3,"file":"skill-generator.js","sourceRoot":"","sources":["../../src/engine/skill-generator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"skill-generator.js","sourceRoot":"","sources":["../../src/engine/skill-generator.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,4EAA4E;AAa5E,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EACL,2BAA2B,EAC3B,wBAAwB,EACxB,uBAAuB,EACvB,mBAAmB,EACnB,oBAAoB,EACpB,wBAAwB,EACxB,+BAA+B,IAAI,gCAAgC,EACnE,6BAA6B,GAC9B,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EACL,yBAAyB,EACzB,mBAAmB,EACnB,qBAAqB,EACrB,uBAAuB,EACvB,+BAA+B,EAC/B,wBAAwB,EACxB,2BAA2B,IAAI,4BAA4B,GAC5D,MAAM,6BAA6B,CAAC;AAErC,8DAA8D;AAC9D,OAAO,EACL,cAAc,EACd,mBAAmB,EACnB,4BAA4B,GAC7B,MAAM,6BAA6B,CAAC;AAErC,OAAO,EAAE,+BAA+B,EAAE,MAAM,+BAA+B,CAAC;AAEhF,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AAEzE,OAAO,EAAE,2BAA2B,EAAE,MAAM,6BAA6B,CAAC;AAE1E,qBAAqB;AAErB;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,QAAuB,EACvB,SAAuE,EACvE,IAAY,EACZ,WAAmB,EACnB,SAA2B,EAC3B,WAAoB;IAEpB,MAAM,SAAS,GAAG,MAAM,aAAa,EAAE,CAAC;IACxC,MAAM,MAAM,GAAG,SAAS,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IAE7C,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO;YACL,QAAQ;YACR,KAAK,EAAE,EAAE;YACT,mBAAmB,EAAE,aAAa,QAAQ,yBAAyB;YACnE,OAAO,EAAE,qBAAqB,QAAQ,EAAE;SACzC,CAAC;IACJ,CAAC;IAED,MAAM,KAAK,GAAgB,EAAE,CAAC;IAE9B,QAAQ,SAAS,EAAE,CAAC;QAClB,KAAK,eAAe;YAClB,KAAK,CAAC,IAAI,CAAC,yBAAyB,CAAC,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC,CAAC;YAC5E,MAAM;QACR,KAAK,cAAc,CAAC,CAAC,CAAC;YACpB,IAAI,UAAU,GAAG,EAAE,CAAC;YACpB,IAAI,CAAC;gBACH,MAAM,EAAE,mBAAmB,EAAE,GAAG,MAAM,MAAM,CAAC,iCAAiC,CAAC,CAAC;gBAChF,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,MAAM,CAAC,oCAAoC,CAAC,CAAC;gBAC9E,MAAM,EAAE,qBAAqB,EAAE,GAAG,MAAM,MAAM,CAAC,oCAAoC,CAAC,CAAC;gBACrF,MAAM,QAAQ,GAAG,mBAAmB,CAAC,GAAG,IAAI,IAAI,WAAW,EAAE,CAAC,CAAC;gBAC/D,MAAM,SAAS,GAAG,QAAQ;qBACvB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,MAAM,IAAI,CAAC,CAAC,UAAU,KAAK,QAAQ,CAAC;qBACnE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;qBAClB,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBACf,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACzB,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,SAAS,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,EAAE,CAAC,CAAC;oBACpF,UAAU,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAC;gBAC9C,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,kDAAkD;YACpD,CAAC;YACD,KAAK,CAAC,IAAI,CACR,mBAAmB,CACjB,MAAM,EACN,IAAI,EACJ,WAAW,EACX,SAAS,EACT,WAAW,EACX,UAAU,IAAI,SAAS,CACxB,CACF,CAAC;YACF,6EAA6E;YAC7E,KAAK,CAAC,IAAI,CAAC,4BAA4B,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC;YAC1D,MAAM;QACR,CAAC;QACD,KAAK,UAAU;YACb,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC,CAAC;YACxE,MAAM;QACR,KAAK,YAAY;YACf,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC,CAAC;YAC1E,MAAM;IACV,CAAC;IAED,MAAM,mBAAmB,GAAG,wBAAwB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;IAEzF,OAAO;QACL,QAAQ;QACR,KAAK;QACL,mBAAmB;QACnB,OAAO,EAAE,aAAa,SAAS,WAAW,IAAI,SAAS,MAAM,CAAC,IAAI,GAAG;KACtE,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,QAAuB,EACvB,SAA2B,EAC3B,YAA2B,EAC3B,UAOI,EAAE;IAEN,MAAM,SAAS,GAAG,MAAM,aAAa,EAAE,CAAC;IACxC,MAAM,MAAM,GAAG,SAAS,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IAE7C,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO;YACL,QAAQ;YACR,SAAS,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,wBAAwB,EAAE,MAAM,EAAE,UAAU,EAAE;YAC9E,eAAe,EAAE,EAAE;YACnB,UAAU,EAAE,CAAC;YACb,UAAU,EAAE,EAAE;YACd,iBAAiB,EAAE,EAAE;SACtB,CAAC;IACJ,CAAC;IAED,MAAM,EACJ,mBAAmB,GAAG,IAAI,EAC1B,kBAAkB,GAAG,IAAI,EACzB,cAAc,GAAG,IAAI,EACrB,eAAe,GAAG,IAAI,EACtB,WAAW,GAAG,EAAE,EAChB,iBAAiB,GAAG,EAAE,GACvB,GAAG,OAAO,CAAC;IAEZ,MAAM,QAAQ,GAAkB,EAAE,CAAC;IACnC,MAAM,UAAU,GAAa,EAAE,CAAC;IAEhC,mBAAmB;IACnB,QAAQ,CAAC,IAAI,CAAC,2BAA2B,CAAC,SAAS,CAAC,CAAC,CAAC;IACtD,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAE3B,qBAAqB;IACrB,IAAI,mBAAmB,EAAE,CAAC;QACxB,QAAQ,CAAC,IAAI,CAAC,wBAAwB,CAAC,SAAS,CAAC,CAAC,CAAC;QACnD,UAAU,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAClC,CAAC;IAED,cAAc;IACd,IAAI,kBAAkB,EAAE,CAAC;QACvB,QAAQ,CAAC,IAAI,CAAC,uBAAuB,CAAC,SAAS,CAAC,CAAC,CAAC;QAClD,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IACjC,CAAC;IAED,gBAAgB;IAChB,IAAI,cAAc,EAAE,CAAC;QACnB,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC,CAAC;QAC9C,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC7B,CAAC;IAED,iBAAiB;IACjB,IAAI,eAAe,EAAE,CAAC;QACpB,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC,CAAC;QAC/C,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC9B,CAAC;IAED,0BAA0B;IAC1B,IAAI,YAAY,EAAE,CAAC;QACjB,QAAQ,CAAC,IAAI,CAAC,wBAAwB,CAAC,YAAY,CAAC,CAAC,CAAC;QACtD,UAAU,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAClC,CAAC;IAED,oEAAoE;IACpE,MAAM,cAAc,GAAG,gCAAgC,CAAC,QAAQ,CAAC,CAAC;IAClE,IAAI,cAAc,EAAE,CAAC;QACnB,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAC9B,UAAU,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;IAC1C,CAAC;IAED,mDAAmD;IACnD,MAAM,aAAa,GAAG,6BAA6B,CAAC,iBAAiB,CAAC,CAAC;IACvE,IAAI,aAAa,EAAE,CAAC;QAClB,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAC7B,UAAU,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;IACxC,CAAC;IAED,eAAe;IACf,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3B,QAAQ,CAAC,IAAI,CAAC;YACZ,KAAK,EAAE,cAAc;YACrB,KAAK,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,WAAW,EAAE,QAAiB,EAAE,CAAC,CAAC;SAC7E,CAAC,CAAC;QACH,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC5B,CAAC;IAED,MAAM,YAAY,GAAG,sBAAsB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;IACxE,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAExE,MAAM,SAAS,GAAc;QAC3B,IAAI,EAAE,MAAM,CAAC,SAAS;QACtB,OAAO,EAAE,YAAY;QACrB,MAAM,EAAE,MAAM,CAAC,MAAM;KACtB,CAAC;IAEF,MAAM,eAAe,GAAgB,EAAE,CAAC;IAExC,qEAAqE;IACrE,IAAI,QAAQ,KAAK,aAAa,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;QACnD,eAAe,CAAC,IAAI,CAAC;YACnB,IAAI,EAAE,GAAG,MAAM,CAAC,SAAS,iBAAiB;YAC1C,OAAO,EAAE,+BAA+B,CAAC,SAAS,CAAC;YACnD,MAAM,EAAE,UAAU;SACnB,CAAC,CAAC;IACL,CAAC;IAED,OAAO;QACL,QAAQ;QACR,SAAS;QACT,eAAe;QACf,UAAU;QACV,UAAU;QACV,iBAAiB;KAClB,CAAC;AACJ,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { StructuredDocsResult } from '../../types/index.js';
2
+ export declare function extractStructuredDocs(html: string, tech: string): StructuredDocsResult;
3
+ export declare function buildFallbackResult(tech: string): StructuredDocsResult;
4
+ export declare function fetchDocsBatch(techs: string[], options?: {
5
+ timeout?: number;
6
+ concurrency?: number;
7
+ }): Promise<Map<string, StructuredDocsResult>>;
8
+ //# sourceMappingURL=docs-intelligence.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"docs-intelligence.d.ts","sourceRoot":"","sources":["../../../src/engine/web-fetcher/docs-intelligence.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AA+DjE,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,oBAAoB,CAwCtF;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,oBAAoB,CAatE;AA4BD,wBAAsB,cAAc,CAClC,KAAK,EAAE,MAAM,EAAE,EACf,OAAO,CAAC,EAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,GACnD,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC,CAwB5C"}
@@ -0,0 +1,154 @@
1
+ // Planu — Web Fetcher: Universal Docs Intelligence Engine (SPEC-382)
2
+ import { consultDocsImpl } from './docs-fetcher.js';
3
+ const BEST_PRACTICE_PATTERNS = [
4
+ /\bbest practice[s]?\b/i,
5
+ /\brecommended?\b/i,
6
+ /\byou should\b/i,
7
+ /\balways\b.{0,40}\b(use|prefer|ensure|check)/i,
8
+ /\bprefer\b.{0,40}\bover\b/i,
9
+ /\buse\b.{0,20}\bfor\b.{0,40}/i,
10
+ ];
11
+ const ANTI_PATTERN_PATTERNS = [
12
+ /\bavoid\b/i,
13
+ /\bdeprecated\b/i,
14
+ /\bdo not\b/i,
15
+ /\bnever\b/i,
16
+ /\bnot recommended\b/i,
17
+ /\bobsolete\b/i,
18
+ ];
19
+ const CONVENTION_PATTERNS = [
20
+ /\bconvention\b/i,
21
+ /\bstyle\b.{0,20}\bguid/i,
22
+ /\bnaming\b/i,
23
+ /\bformat\b.{0,20}\bshould\b/i,
24
+ /\bfollow.{0,20}\bpattern\b/i,
25
+ /\bfile structure\b/i,
26
+ ];
27
+ const VERSION_PATTERNS = [
28
+ /\bv?\d+(\.\d+){0,2}\b.{0,60}\b(migration|upgrade|breaking|changed)\b/i,
29
+ /\b(migration|upgrade|breaking change)\b.{0,60}\bv?\d+(\.\d+){0,2}\b/i,
30
+ /\bdeprecated in\b.{0,30}\bv?\d+/i,
31
+ ];
32
+ const TOOL_NAME_PATTERNS = /\b(npm|pnpm|yarn|npx|pip|cargo|brew|apt|go get)\b.{0,80}/i;
33
+ function splitIntoLines(text) {
34
+ return text
35
+ .split(/[\n.!?]/)
36
+ .map((l) => l.trim())
37
+ .filter((l) => l.length > 15 && l.length < 300);
38
+ }
39
+ function stripHtml(html) {
40
+ return html
41
+ .replace(/<script[\s\S]*?<\/script>/gi, '')
42
+ .replace(/<style[\s\S]*?<\/style>/gi, '')
43
+ .replace(/<[^>]+>/g, ' ')
44
+ .replace(/&[a-z]+;/gi, ' ')
45
+ .replace(/\s+/g, ' ')
46
+ .trim();
47
+ }
48
+ function matchesAny(line, patterns) {
49
+ return patterns.some((p) => p.test(line));
50
+ }
51
+ function dedup(items) {
52
+ return [...new Set(items)];
53
+ }
54
+ export function extractStructuredDocs(html, tech) {
55
+ const text = stripHtml(html);
56
+ const lines = splitIntoLines(text);
57
+ const bestPractices = [];
58
+ const antiPatterns = [];
59
+ const conventions = [];
60
+ const versionNotes = [];
61
+ const toolingRecommendations = [];
62
+ for (const line of lines) {
63
+ if (matchesAny(line, ANTI_PATTERN_PATTERNS)) {
64
+ antiPatterns.push(line);
65
+ }
66
+ else if (matchesAny(line, BEST_PRACTICE_PATTERNS)) {
67
+ bestPractices.push(line);
68
+ }
69
+ else if (matchesAny(line, CONVENTION_PATTERNS)) {
70
+ conventions.push(line);
71
+ }
72
+ if (matchesAny(line, VERSION_PATTERNS)) {
73
+ versionNotes.push(line);
74
+ }
75
+ if (TOOL_NAME_PATTERNS.test(line)) {
76
+ toolingRecommendations.push(line);
77
+ }
78
+ }
79
+ return {
80
+ tech,
81
+ docsUrl: '',
82
+ bestPractices: dedup(bestPractices).slice(0, 10),
83
+ antiPatterns: dedup(antiPatterns).slice(0, 10),
84
+ conventions: dedup(conventions).slice(0, 10),
85
+ versionNotes: dedup(versionNotes).slice(0, 5),
86
+ toolingRecommendations: dedup(toolingRecommendations).slice(0, 5),
87
+ source: 'discovered',
88
+ fetchedAt: new Date().toISOString(),
89
+ stale: false,
90
+ };
91
+ }
92
+ export function buildFallbackResult(tech) {
93
+ return {
94
+ tech,
95
+ docsUrl: '',
96
+ bestPractices: [],
97
+ antiPatterns: [],
98
+ conventions: [],
99
+ versionNotes: [],
100
+ toolingRecommendations: [],
101
+ source: 'fallback',
102
+ fetchedAt: new Date().toISOString(),
103
+ stale: true,
104
+ };
105
+ }
106
+ async function fetchOneTech(tech, timeoutMs) {
107
+ try {
108
+ const controller = new AbortController();
109
+ const timer = setTimeout(() => {
110
+ controller.abort();
111
+ }, timeoutMs);
112
+ let result;
113
+ try {
114
+ const docsResult = await consultDocsImpl(tech, tech);
115
+ const html = [docsResult.summary, ...docsResult.bestPractices].join('\n');
116
+ result = extractStructuredDocs(html, tech);
117
+ result.docsUrl = docsResult.docsUrl;
118
+ result.source = docsResult.source === 'local-fallback' ? 'fallback' : 'registry';
119
+ result.stale = docsResult.stale ?? false;
120
+ result.fetchedAt = docsResult.fetchedAt ?? new Date().toISOString();
121
+ }
122
+ finally {
123
+ clearTimeout(timer);
124
+ }
125
+ return result;
126
+ }
127
+ catch {
128
+ return buildFallbackResult(tech);
129
+ }
130
+ }
131
+ export async function fetchDocsBatch(techs, options) {
132
+ const timeoutMs = options?.timeout ?? 10_000;
133
+ const concurrency = options?.concurrency ?? 3;
134
+ const results = new Map();
135
+ for (let i = 0; i < techs.length; i += concurrency) {
136
+ const batch = techs.slice(i, i + concurrency);
137
+ const settled = await Promise.allSettled(batch.map((tech) => fetchOneTech(tech, timeoutMs)));
138
+ for (let j = 0; j < batch.length; j++) {
139
+ const tech = batch[j];
140
+ if (tech === undefined) {
141
+ continue;
142
+ }
143
+ const outcome = settled[j];
144
+ if (outcome === undefined || outcome.status === 'rejected') {
145
+ results.set(tech, buildFallbackResult(tech));
146
+ }
147
+ else {
148
+ results.set(tech, outcome.value);
149
+ }
150
+ }
151
+ }
152
+ return results;
153
+ }
154
+ //# sourceMappingURL=docs-intelligence.js.map