agentic-qe 1.9.4 → 2.1.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 (262) hide show
  1. package/.claude/agents/qe-api-contract-validator.md +95 -1336
  2. package/.claude/agents/qe-chaos-engineer.md +152 -1211
  3. package/.claude/agents/qe-code-complexity.md +144 -707
  4. package/.claude/agents/qe-coverage-analyzer.md +147 -743
  5. package/.claude/agents/qe-deployment-readiness.md +143 -1496
  6. package/.claude/agents/qe-flaky-test-hunter.md +132 -1529
  7. package/.claude/agents/qe-fleet-commander.md +12 -12
  8. package/.claude/agents/qe-performance-tester.md +150 -886
  9. package/.claude/agents/qe-production-intelligence.md +155 -1396
  10. package/.claude/agents/qe-quality-analyzer.md +6 -6
  11. package/.claude/agents/qe-quality-gate.md +151 -648
  12. package/.claude/agents/qe-regression-risk-analyzer.md +132 -1150
  13. package/.claude/agents/qe-requirements-validator.md +149 -932
  14. package/.claude/agents/qe-security-scanner.md +157 -797
  15. package/.claude/agents/qe-test-data-architect.md +96 -1365
  16. package/.claude/agents/qe-test-executor.md +8 -8
  17. package/.claude/agents/qe-test-generator.md +145 -1540
  18. package/.claude/agents/qe-visual-tester.md +153 -1257
  19. package/.claude/agents/qx-partner.md +248 -0
  20. package/.claude/agents/subagents/qe-code-reviewer.md +40 -136
  21. package/.claude/agents/subagents/qe-coverage-gap-analyzer.md +40 -480
  22. package/.claude/agents/subagents/qe-data-generator.md +41 -125
  23. package/.claude/agents/subagents/qe-flaky-investigator.md +55 -411
  24. package/.claude/agents/subagents/qe-integration-tester.md +53 -141
  25. package/.claude/agents/subagents/qe-performance-validator.md +54 -130
  26. package/.claude/agents/subagents/qe-security-auditor.md +56 -114
  27. package/.claude/agents/subagents/qe-test-data-architect-sub.md +57 -548
  28. package/.claude/agents/subagents/qe-test-implementer.md +58 -551
  29. package/.claude/agents/subagents/qe-test-refactorer.md +65 -722
  30. package/.claude/agents/subagents/qe-test-writer.md +63 -726
  31. package/.claude/skills/accessibility-testing/SKILL.md +144 -692
  32. package/.claude/skills/agentic-quality-engineering/SKILL.md +176 -529
  33. package/.claude/skills/api-testing-patterns/SKILL.md +180 -560
  34. package/.claude/skills/brutal-honesty-review/SKILL.md +113 -603
  35. package/.claude/skills/bug-reporting-excellence/SKILL.md +116 -517
  36. package/.claude/skills/chaos-engineering-resilience/SKILL.md +127 -72
  37. package/.claude/skills/cicd-pipeline-qe-orchestrator/SKILL.md +209 -404
  38. package/.claude/skills/code-review-quality/SKILL.md +158 -608
  39. package/.claude/skills/compatibility-testing/SKILL.md +148 -38
  40. package/.claude/skills/compliance-testing/SKILL.md +132 -63
  41. package/.claude/skills/consultancy-practices/SKILL.md +114 -446
  42. package/.claude/skills/context-driven-testing/SKILL.md +117 -381
  43. package/.claude/skills/contract-testing/SKILL.md +176 -141
  44. package/.claude/skills/database-testing/SKILL.md +137 -130
  45. package/.claude/skills/exploratory-testing-advanced/SKILL.md +160 -629
  46. package/.claude/skills/holistic-testing-pact/SKILL.md +140 -188
  47. package/.claude/skills/localization-testing/SKILL.md +145 -33
  48. package/.claude/skills/mobile-testing/SKILL.md +132 -448
  49. package/.claude/skills/mutation-testing/SKILL.md +147 -41
  50. package/.claude/skills/performance-testing/SKILL.md +200 -546
  51. package/.claude/skills/quality-metrics/SKILL.md +164 -519
  52. package/.claude/skills/refactoring-patterns/SKILL.md +132 -699
  53. package/.claude/skills/regression-testing/SKILL.md +120 -926
  54. package/.claude/skills/risk-based-testing/SKILL.md +157 -660
  55. package/.claude/skills/security-testing/SKILL.md +199 -538
  56. package/.claude/skills/sherlock-review/SKILL.md +163 -699
  57. package/.claude/skills/shift-left-testing/SKILL.md +161 -465
  58. package/.claude/skills/shift-right-testing/SKILL.md +161 -519
  59. package/.claude/skills/six-thinking-hats/SKILL.md +175 -1110
  60. package/.claude/skills/skills-manifest.json +683 -0
  61. package/.claude/skills/tdd-london-chicago/SKILL.md +131 -448
  62. package/.claude/skills/technical-writing/SKILL.md +103 -154
  63. package/.claude/skills/test-automation-strategy/SKILL.md +166 -772
  64. package/.claude/skills/test-data-management/SKILL.md +126 -910
  65. package/.claude/skills/test-design-techniques/SKILL.md +179 -89
  66. package/.claude/skills/test-environment-management/SKILL.md +136 -91
  67. package/.claude/skills/test-reporting-analytics/SKILL.md +169 -92
  68. package/.claude/skills/testability-scoring/README.md +71 -0
  69. package/.claude/skills/testability-scoring/SKILL.md +245 -0
  70. package/.claude/skills/testability-scoring/resources/templates/config.template.js +84 -0
  71. package/.claude/skills/testability-scoring/resources/templates/testability-scoring.spec.template.js +532 -0
  72. package/.claude/skills/testability-scoring/scripts/generate-html-report.js +1007 -0
  73. package/.claude/skills/testability-scoring/scripts/run-assessment.sh +70 -0
  74. package/.claude/skills/visual-testing-advanced/SKILL.md +155 -78
  75. package/.claude/skills/xp-practices/SKILL.md +151 -587
  76. package/CHANGELOG.md +110 -0
  77. package/README.md +55 -21
  78. package/dist/agents/QXPartnerAgent.d.ts +146 -0
  79. package/dist/agents/QXPartnerAgent.d.ts.map +1 -0
  80. package/dist/agents/QXPartnerAgent.js +1831 -0
  81. package/dist/agents/QXPartnerAgent.js.map +1 -0
  82. package/dist/agents/index.d.ts +1 -0
  83. package/dist/agents/index.d.ts.map +1 -1
  84. package/dist/agents/index.js +82 -2
  85. package/dist/agents/index.js.map +1 -1
  86. package/dist/agents/lifecycle/AgentLifecycleManager.d.ts.map +1 -1
  87. package/dist/agents/lifecycle/AgentLifecycleManager.js +34 -31
  88. package/dist/agents/lifecycle/AgentLifecycleManager.js.map +1 -1
  89. package/dist/cli/commands/debug/agent.d.ts.map +1 -1
  90. package/dist/cli/commands/debug/agent.js +19 -6
  91. package/dist/cli/commands/debug/agent.js.map +1 -1
  92. package/dist/cli/commands/debug/health-check.js +20 -7
  93. package/dist/cli/commands/debug/health-check.js.map +1 -1
  94. package/dist/cli/commands/init-claude-md-template.d.ts +1 -0
  95. package/dist/cli/commands/init-claude-md-template.d.ts.map +1 -1
  96. package/dist/cli/commands/init-claude-md-template.js +18 -3
  97. package/dist/cli/commands/init-claude-md-template.js.map +1 -1
  98. package/dist/cli/commands/workflow/cancel.d.ts.map +1 -1
  99. package/dist/cli/commands/workflow/cancel.js +4 -3
  100. package/dist/cli/commands/workflow/cancel.js.map +1 -1
  101. package/dist/cli/commands/workflow/list.d.ts.map +1 -1
  102. package/dist/cli/commands/workflow/list.js +4 -3
  103. package/dist/cli/commands/workflow/list.js.map +1 -1
  104. package/dist/cli/commands/workflow/pause.d.ts.map +1 -1
  105. package/dist/cli/commands/workflow/pause.js +4 -3
  106. package/dist/cli/commands/workflow/pause.js.map +1 -1
  107. package/dist/cli/init/claude-config.d.ts.map +1 -1
  108. package/dist/cli/init/claude-config.js +3 -8
  109. package/dist/cli/init/claude-config.js.map +1 -1
  110. package/dist/cli/init/claude-md.d.ts.map +1 -1
  111. package/dist/cli/init/claude-md.js +44 -2
  112. package/dist/cli/init/claude-md.js.map +1 -1
  113. package/dist/cli/init/database-init.js +1 -1
  114. package/dist/cli/init/index.d.ts.map +1 -1
  115. package/dist/cli/init/index.js +13 -6
  116. package/dist/cli/init/index.js.map +1 -1
  117. package/dist/cli/init/skills.d.ts.map +1 -1
  118. package/dist/cli/init/skills.js +2 -1
  119. package/dist/cli/init/skills.js.map +1 -1
  120. package/dist/core/SwarmCoordinator.d.ts +180 -0
  121. package/dist/core/SwarmCoordinator.d.ts.map +1 -0
  122. package/dist/core/SwarmCoordinator.js +473 -0
  123. package/dist/core/SwarmCoordinator.js.map +1 -0
  124. package/dist/core/memory/AgentDBIntegration.d.ts +24 -6
  125. package/dist/core/memory/AgentDBIntegration.d.ts.map +1 -1
  126. package/dist/core/memory/AgentDBIntegration.js +66 -10
  127. package/dist/core/memory/AgentDBIntegration.js.map +1 -1
  128. package/dist/core/memory/UnifiedMemoryCoordinator.d.ts +341 -0
  129. package/dist/core/memory/UnifiedMemoryCoordinator.d.ts.map +1 -0
  130. package/dist/core/memory/UnifiedMemoryCoordinator.js +986 -0
  131. package/dist/core/memory/UnifiedMemoryCoordinator.js.map +1 -0
  132. package/dist/core/memory/index.d.ts +5 -0
  133. package/dist/core/memory/index.d.ts.map +1 -1
  134. package/dist/core/memory/index.js +23 -1
  135. package/dist/core/memory/index.js.map +1 -1
  136. package/dist/core/metrics/MetricsAggregator.d.ts +228 -0
  137. package/dist/core/metrics/MetricsAggregator.d.ts.map +1 -0
  138. package/dist/core/metrics/MetricsAggregator.js +482 -0
  139. package/dist/core/metrics/MetricsAggregator.js.map +1 -0
  140. package/dist/core/metrics/index.d.ts +5 -0
  141. package/dist/core/metrics/index.d.ts.map +1 -0
  142. package/dist/core/metrics/index.js +11 -0
  143. package/dist/core/metrics/index.js.map +1 -0
  144. package/dist/core/optimization/SwarmOptimizer.d.ts +190 -0
  145. package/dist/core/optimization/SwarmOptimizer.d.ts.map +1 -0
  146. package/dist/core/optimization/SwarmOptimizer.js +648 -0
  147. package/dist/core/optimization/SwarmOptimizer.js.map +1 -0
  148. package/dist/core/optimization/index.d.ts +9 -0
  149. package/dist/core/optimization/index.d.ts.map +1 -0
  150. package/dist/core/optimization/index.js +25 -0
  151. package/dist/core/optimization/index.js.map +1 -0
  152. package/dist/core/optimization/types.d.ts +53 -0
  153. package/dist/core/optimization/types.d.ts.map +1 -0
  154. package/dist/core/optimization/types.js +6 -0
  155. package/dist/core/optimization/types.js.map +1 -0
  156. package/dist/core/orchestration/AdaptiveScheduler.d.ts +190 -0
  157. package/dist/core/orchestration/AdaptiveScheduler.d.ts.map +1 -0
  158. package/dist/core/orchestration/AdaptiveScheduler.js +460 -0
  159. package/dist/core/orchestration/AdaptiveScheduler.js.map +1 -0
  160. package/dist/core/orchestration/PriorityQueue.d.ts +54 -0
  161. package/dist/core/orchestration/PriorityQueue.d.ts.map +1 -0
  162. package/dist/core/orchestration/PriorityQueue.js +122 -0
  163. package/dist/core/orchestration/PriorityQueue.js.map +1 -0
  164. package/dist/core/orchestration/WorkflowOrchestrator.d.ts +189 -0
  165. package/dist/core/orchestration/WorkflowOrchestrator.d.ts.map +1 -0
  166. package/dist/core/orchestration/WorkflowOrchestrator.js +845 -0
  167. package/dist/core/orchestration/WorkflowOrchestrator.js.map +1 -0
  168. package/dist/core/orchestration/index.d.ts +7 -0
  169. package/dist/core/orchestration/index.d.ts.map +1 -0
  170. package/dist/core/orchestration/index.js +11 -0
  171. package/dist/core/orchestration/index.js.map +1 -0
  172. package/dist/core/orchestration/types.d.ts +96 -0
  173. package/dist/core/orchestration/types.d.ts.map +1 -0
  174. package/dist/core/orchestration/types.js +6 -0
  175. package/dist/core/orchestration/types.js.map +1 -0
  176. package/dist/core/recovery/CircuitBreaker.d.ts +176 -0
  177. package/dist/core/recovery/CircuitBreaker.d.ts.map +1 -0
  178. package/dist/core/recovery/CircuitBreaker.js +382 -0
  179. package/dist/core/recovery/CircuitBreaker.js.map +1 -0
  180. package/dist/core/recovery/RecoveryOrchestrator.d.ts +186 -0
  181. package/dist/core/recovery/RecoveryOrchestrator.d.ts.map +1 -0
  182. package/dist/core/recovery/RecoveryOrchestrator.js +476 -0
  183. package/dist/core/recovery/RecoveryOrchestrator.js.map +1 -0
  184. package/dist/core/recovery/RetryStrategy.d.ts +127 -0
  185. package/dist/core/recovery/RetryStrategy.d.ts.map +1 -0
  186. package/dist/core/recovery/RetryStrategy.js +314 -0
  187. package/dist/core/recovery/RetryStrategy.js.map +1 -0
  188. package/dist/core/recovery/index.d.ts +8 -0
  189. package/dist/core/recovery/index.d.ts.map +1 -0
  190. package/dist/core/recovery/index.js +27 -0
  191. package/dist/core/recovery/index.js.map +1 -0
  192. package/dist/core/skills/DependencyResolver.d.ts +99 -0
  193. package/dist/core/skills/DependencyResolver.d.ts.map +1 -0
  194. package/dist/core/skills/DependencyResolver.js +260 -0
  195. package/dist/core/skills/DependencyResolver.js.map +1 -0
  196. package/dist/core/skills/DynamicSkillLoader.d.ts +96 -0
  197. package/dist/core/skills/DynamicSkillLoader.d.ts.map +1 -0
  198. package/dist/core/skills/DynamicSkillLoader.js +353 -0
  199. package/dist/core/skills/DynamicSkillLoader.js.map +1 -0
  200. package/dist/core/skills/ManifestGenerator.d.ts +114 -0
  201. package/dist/core/skills/ManifestGenerator.d.ts.map +1 -0
  202. package/dist/core/skills/ManifestGenerator.js +449 -0
  203. package/dist/core/skills/ManifestGenerator.js.map +1 -0
  204. package/dist/core/skills/index.d.ts +9 -0
  205. package/dist/core/skills/index.d.ts.map +1 -0
  206. package/dist/core/skills/index.js +24 -0
  207. package/dist/core/skills/index.js.map +1 -0
  208. package/dist/core/skills/types.d.ts +118 -0
  209. package/dist/core/skills/types.d.ts.map +1 -0
  210. package/dist/core/skills/types.js +7 -0
  211. package/dist/core/skills/types.js.map +1 -0
  212. package/dist/core/transport/QUICTransport.d.ts +320 -0
  213. package/dist/core/transport/QUICTransport.d.ts.map +1 -0
  214. package/dist/core/transport/QUICTransport.js +711 -0
  215. package/dist/core/transport/QUICTransport.js.map +1 -0
  216. package/dist/core/transport/index.d.ts +40 -0
  217. package/dist/core/transport/index.d.ts.map +1 -0
  218. package/dist/core/transport/index.js +46 -0
  219. package/dist/core/transport/index.js.map +1 -0
  220. package/dist/core/transport/quic-loader.d.ts +123 -0
  221. package/dist/core/transport/quic-loader.d.ts.map +1 -0
  222. package/dist/core/transport/quic-loader.js +293 -0
  223. package/dist/core/transport/quic-loader.js.map +1 -0
  224. package/dist/core/transport/quic.d.ts +154 -0
  225. package/dist/core/transport/quic.d.ts.map +1 -0
  226. package/dist/core/transport/quic.js +214 -0
  227. package/dist/core/transport/quic.js.map +1 -0
  228. package/dist/mcp/server.d.ts +9 -9
  229. package/dist/mcp/server.d.ts.map +1 -1
  230. package/dist/mcp/server.js +1 -2
  231. package/dist/mcp/server.js.map +1 -1
  232. package/dist/mcp/services/AgentRegistry.d.ts.map +1 -1
  233. package/dist/mcp/services/AgentRegistry.js +4 -1
  234. package/dist/mcp/services/AgentRegistry.js.map +1 -1
  235. package/dist/types/index.d.ts +2 -1
  236. package/dist/types/index.d.ts.map +1 -1
  237. package/dist/types/index.js +2 -0
  238. package/dist/types/index.js.map +1 -1
  239. package/dist/types/qx.d.ts +429 -0
  240. package/dist/types/qx.d.ts.map +1 -0
  241. package/dist/types/qx.js +71 -0
  242. package/dist/types/qx.js.map +1 -0
  243. package/dist/visualization/api/RestEndpoints.js +2 -2
  244. package/dist/visualization/api/RestEndpoints.js.map +1 -1
  245. package/dist/visualization/api/WebSocketServer.d.ts +44 -0
  246. package/dist/visualization/api/WebSocketServer.d.ts.map +1 -1
  247. package/dist/visualization/api/WebSocketServer.js +144 -23
  248. package/dist/visualization/api/WebSocketServer.js.map +1 -1
  249. package/dist/visualization/core/DataTransformer.d.ts +10 -0
  250. package/dist/visualization/core/DataTransformer.d.ts.map +1 -1
  251. package/dist/visualization/core/DataTransformer.js +60 -5
  252. package/dist/visualization/core/DataTransformer.js.map +1 -1
  253. package/dist/visualization/emit-event.d.ts +75 -0
  254. package/dist/visualization/emit-event.d.ts.map +1 -0
  255. package/dist/visualization/emit-event.js +213 -0
  256. package/dist/visualization/emit-event.js.map +1 -0
  257. package/dist/visualization/index.d.ts +1 -0
  258. package/dist/visualization/index.d.ts.map +1 -1
  259. package/dist/visualization/index.js +7 -1
  260. package/dist/visualization/index.js.map +1 -1
  261. package/docs/reference/skills.md +63 -1
  262. package/package.json +16 -58
@@ -0,0 +1,449 @@
1
+ "use strict";
2
+ /**
3
+ * Manifest Generator for Dynamic Skill Loading
4
+ * Scans skill directories and generates/updates skills-manifest.json
5
+ */
6
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
7
+ if (k2 === undefined) k2 = k;
8
+ var desc = Object.getOwnPropertyDescriptor(m, k);
9
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
10
+ desc = { enumerable: true, get: function() { return m[k]; } };
11
+ }
12
+ Object.defineProperty(o, k2, desc);
13
+ }) : (function(o, m, k, k2) {
14
+ if (k2 === undefined) k2 = k;
15
+ o[k2] = m[k];
16
+ }));
17
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
18
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
19
+ }) : function(o, v) {
20
+ o["default"] = v;
21
+ });
22
+ var __importStar = (this && this.__importStar) || (function () {
23
+ var ownKeys = function(o) {
24
+ ownKeys = Object.getOwnPropertyNames || function (o) {
25
+ var ar = [];
26
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
27
+ return ar;
28
+ };
29
+ return ownKeys(o);
30
+ };
31
+ return function (mod) {
32
+ if (mod && mod.__esModule) return mod;
33
+ var result = {};
34
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
35
+ __setModuleDefault(result, mod);
36
+ return result;
37
+ };
38
+ })();
39
+ Object.defineProperty(exports, "__esModule", { value: true });
40
+ exports.ManifestGenerator = void 0;
41
+ exports.generateManifest = generateManifest;
42
+ exports.updateManifest = updateManifest;
43
+ exports.validateManifest = validateManifest;
44
+ const fs = __importStar(require("fs/promises"));
45
+ const path = __importStar(require("path"));
46
+ /**
47
+ * Category detection rules based on skill name patterns
48
+ */
49
+ const CATEGORY_PATTERNS = {
50
+ 'agentic-quality': 'qe-core',
51
+ 'holistic-testing': 'qe-core',
52
+ 'tdd-': 'qe-methodology',
53
+ 'context-driven': 'qe-methodology',
54
+ 'exploratory': 'qe-methodology',
55
+ 'api-testing': 'qe-specialized',
56
+ 'performance-': 'qe-specialized',
57
+ 'security-': 'qe-specialized',
58
+ 'accessibility-': 'qe-specialized',
59
+ 'mobile-': 'qe-specialized',
60
+ 'mutation-': 'qe-advanced',
61
+ 'chaos-': 'qe-advanced',
62
+ 'contract-': 'qe-advanced',
63
+ 'github-': 'integration',
64
+ 'flow-nexus': 'integration',
65
+ 'hooks-': 'advanced',
66
+ 'swarm-': 'advanced',
67
+ 'hive-mind': 'advanced',
68
+ };
69
+ /**
70
+ * Priority detection based on skill characteristics
71
+ */
72
+ const PRIORITY_KEYWORDS = {
73
+ critical: ['agentic-quality-engineering', 'holistic-testing-pact'],
74
+ high: ['tdd', 'context-driven', 'api-testing', 'security'],
75
+ medium: ['performance', 'exploratory', 'regression', 'integration'],
76
+ low: ['localization', 'compatibility', 'visual'],
77
+ };
78
+ /**
79
+ * Manifest Generator for creating and updating skill manifests
80
+ */
81
+ class ManifestGenerator {
82
+ constructor(config = {}) {
83
+ this.config = {
84
+ skillsDir: path.resolve(process.cwd(), '.claude/skills'),
85
+ outputPath: path.resolve(process.cwd(), '.claude/skills/skills-manifest.json'),
86
+ defaultPriority: 'medium',
87
+ tokensPerLine: 4, // Approximate tokens per line
88
+ ...config,
89
+ };
90
+ }
91
+ /**
92
+ * Generate manifest from skill directories
93
+ */
94
+ async generate() {
95
+ const skills = await this.scanSkillDirectories();
96
+ const categoryCounts = this.calculateCategoryCounts(skills);
97
+ const manifest = {
98
+ version: '1.1.0',
99
+ generatedAt: new Date().toISOString(),
100
+ totalSkills: skills.length,
101
+ categoryCounts,
102
+ skills,
103
+ };
104
+ await this.writeManifest(manifest);
105
+ return manifest;
106
+ }
107
+ /**
108
+ * Update existing manifest with new/changed skills
109
+ */
110
+ async update() {
111
+ let existingManifest = null;
112
+ try {
113
+ const content = await fs.readFile(this.config.outputPath, 'utf-8');
114
+ existingManifest = JSON.parse(content);
115
+ }
116
+ catch {
117
+ // No existing manifest, generate from scratch
118
+ return this.generate();
119
+ }
120
+ const currentSkills = await this.scanSkillDirectories();
121
+ // TypeScript flow analysis: existingManifest is guaranteed non-null here
122
+ // because catch block returns early via this.generate()
123
+ const existingSkillMap = new Map(existingManifest.skills.map(s => [s.id, s]));
124
+ // Merge: keep existing metadata where possible, add new skills
125
+ const mergedSkills = [];
126
+ for (const skill of currentSkills) {
127
+ const existing = existingSkillMap.get(skill.id);
128
+ if (existing) {
129
+ // Update only if file changed (check lastUpdated)
130
+ const fileStats = await this.getFileStats(skill.id);
131
+ if (fileStats && fileStats > new Date(existing.lastUpdated)) {
132
+ mergedSkills.push(skill);
133
+ }
134
+ else {
135
+ mergedSkills.push(existing);
136
+ }
137
+ }
138
+ else {
139
+ mergedSkills.push(skill);
140
+ }
141
+ }
142
+ const manifest = {
143
+ version: '1.1.0',
144
+ generatedAt: new Date().toISOString(),
145
+ totalSkills: mergedSkills.length,
146
+ categoryCounts: this.calculateCategoryCounts(mergedSkills),
147
+ skills: mergedSkills,
148
+ };
149
+ await this.writeManifest(manifest);
150
+ return manifest;
151
+ }
152
+ /**
153
+ * Validate existing manifest against actual skill files
154
+ */
155
+ async validate() {
156
+ const errors = [];
157
+ const warnings = [];
158
+ let manifest;
159
+ try {
160
+ const content = await fs.readFile(this.config.outputPath, 'utf-8');
161
+ manifest = JSON.parse(content);
162
+ }
163
+ catch (error) {
164
+ return {
165
+ valid: false,
166
+ errors: [`Cannot read manifest: ${error instanceof Error ? error.message : String(error)}`],
167
+ warnings: [],
168
+ };
169
+ }
170
+ // Check each skill exists
171
+ for (const skill of manifest.skills) {
172
+ const skillPath = path.join(this.config.skillsDir, skill.path);
173
+ try {
174
+ await fs.access(skillPath);
175
+ }
176
+ catch {
177
+ errors.push(`Skill file missing: ${skill.id} (${skill.path})`);
178
+ }
179
+ }
180
+ // Check for orphan skills (files without manifest entries)
181
+ const manifestIds = new Set(manifest.skills.map(s => s.id));
182
+ const actualSkills = await this.getSkillDirectories();
183
+ for (const skillId of actualSkills) {
184
+ if (!manifestIds.has(skillId)) {
185
+ warnings.push(`Skill not in manifest: ${skillId}`);
186
+ }
187
+ }
188
+ // Validate category counts
189
+ const actualCounts = this.calculateCategoryCounts(manifest.skills);
190
+ for (const [category, count] of Object.entries(manifest.categoryCounts)) {
191
+ if (actualCounts[category] !== count) {
192
+ warnings.push(`Category count mismatch for ${category}: manifest=${count}, actual=${actualCounts[category] || 0}`);
193
+ }
194
+ }
195
+ return {
196
+ valid: errors.length === 0,
197
+ errors,
198
+ warnings,
199
+ };
200
+ }
201
+ /**
202
+ * Scan skill directories and extract metadata
203
+ */
204
+ async scanSkillDirectories() {
205
+ const skillDirs = await this.getSkillDirectories();
206
+ const skills = [];
207
+ for (const skillId of skillDirs) {
208
+ try {
209
+ const metadata = await this.extractMetadata(skillId);
210
+ if (metadata) {
211
+ skills.push(metadata);
212
+ }
213
+ }
214
+ catch (error) {
215
+ console.warn(`Failed to extract metadata for ${skillId}: ${error}`);
216
+ }
217
+ }
218
+ // Sort by priority then name
219
+ return skills.sort((a, b) => {
220
+ const priorityOrder = { critical: 0, high: 1, medium: 2, low: 3 };
221
+ const priorityDiff = priorityOrder[a.priority] - priorityOrder[b.priority];
222
+ return priorityDiff !== 0 ? priorityDiff : a.name.localeCompare(b.name);
223
+ });
224
+ }
225
+ /**
226
+ * Get list of skill directories
227
+ */
228
+ async getSkillDirectories() {
229
+ try {
230
+ const entries = await fs.readdir(this.config.skillsDir, { withFileTypes: true });
231
+ return entries
232
+ .filter(e => e.isDirectory() && !e.name.startsWith('.'))
233
+ .map(e => e.name);
234
+ }
235
+ catch {
236
+ return [];
237
+ }
238
+ }
239
+ /**
240
+ * Extract metadata from a skill directory
241
+ */
242
+ async extractMetadata(skillId) {
243
+ const skillDir = path.join(this.config.skillsDir, skillId);
244
+ const skillFile = path.join(skillDir, 'SKILL.md');
245
+ try {
246
+ const content = await fs.readFile(skillFile, 'utf-8');
247
+ const frontmatter = this.parseFrontmatter(content);
248
+ const stats = await fs.stat(skillFile);
249
+ return {
250
+ id: skillId,
251
+ name: frontmatter.name || this.formatName(skillId),
252
+ category: this.detectCategory(skillId, frontmatter),
253
+ description: frontmatter.description || this.extractDescription(content),
254
+ keywords: this.extractKeywords(frontmatter, content),
255
+ dependencies: frontmatter.dependencies?.split(',').map((d) => d.trim()) || [],
256
+ estimatedTokens: this.estimateTokens(content),
257
+ priority: this.detectPriority(skillId, frontmatter),
258
+ path: `${skillId}/SKILL.md`,
259
+ lastUpdated: stats.mtime.toISOString(),
260
+ };
261
+ }
262
+ catch {
263
+ return null;
264
+ }
265
+ }
266
+ /**
267
+ * Parse YAML frontmatter from markdown
268
+ */
269
+ parseFrontmatter(content) {
270
+ const match = content.match(/^---\n([\s\S]*?)\n---/);
271
+ if (!match)
272
+ return {};
273
+ const frontmatter = {};
274
+ const lines = match[1].split('\n');
275
+ for (const line of lines) {
276
+ const colonIndex = line.indexOf(':');
277
+ if (colonIndex === -1)
278
+ continue;
279
+ const key = line.substring(0, colonIndex).trim();
280
+ let value = line.substring(colonIndex + 1).trim();
281
+ // Handle arrays in YAML
282
+ if (value.startsWith('[') && value.endsWith(']')) {
283
+ value = value.slice(1, -1);
284
+ frontmatter[key] = value.split(',').map(v => v.trim().replace(/['"]/g, ''));
285
+ }
286
+ else {
287
+ frontmatter[key] = value.replace(/['"]/g, '');
288
+ }
289
+ }
290
+ return frontmatter;
291
+ }
292
+ /**
293
+ * Detect category based on skill ID and frontmatter
294
+ */
295
+ detectCategory(skillId, frontmatter) {
296
+ // Prefer explicit category from frontmatter
297
+ if (frontmatter.category && this.isValidCategory(frontmatter.category)) {
298
+ return frontmatter.category;
299
+ }
300
+ // Pattern matching
301
+ for (const [pattern, category] of Object.entries(CATEGORY_PATTERNS)) {
302
+ if (skillId.includes(pattern)) {
303
+ return category;
304
+ }
305
+ }
306
+ // Default based on skill characteristics
307
+ if (skillId.includes('testing') || skillId.includes('test')) {
308
+ return 'qe-specialized';
309
+ }
310
+ return 'qe-methodology';
311
+ }
312
+ /**
313
+ * Check if category is valid
314
+ */
315
+ isValidCategory(category) {
316
+ const validCategories = [
317
+ 'qe-core', 'qe-methodology', 'qe-specialized', 'qe-advanced', 'advanced', 'integration'
318
+ ];
319
+ return validCategories.includes(category);
320
+ }
321
+ /**
322
+ * Detect priority based on skill ID and frontmatter
323
+ */
324
+ detectPriority(skillId, frontmatter) {
325
+ // Prefer explicit priority from frontmatter
326
+ if (frontmatter.priority && ['critical', 'high', 'medium', 'low'].includes(frontmatter.priority)) {
327
+ return frontmatter.priority;
328
+ }
329
+ // Keyword matching
330
+ for (const [priority, keywords] of Object.entries(PRIORITY_KEYWORDS)) {
331
+ for (const keyword of keywords) {
332
+ if (skillId.includes(keyword)) {
333
+ return priority;
334
+ }
335
+ }
336
+ }
337
+ return this.config.defaultPriority;
338
+ }
339
+ /**
340
+ * Extract description from content (first paragraph after frontmatter)
341
+ */
342
+ extractDescription(content) {
343
+ const withoutFrontmatter = content.replace(/^---\n[\s\S]*?\n---\n?/, '');
344
+ const lines = withoutFrontmatter.split('\n').filter(l => l.trim() && !l.startsWith('#'));
345
+ if (lines.length > 0) {
346
+ return lines[0].trim().substring(0, 100);
347
+ }
348
+ return 'No description available';
349
+ }
350
+ /**
351
+ * Extract keywords from frontmatter and content
352
+ */
353
+ extractKeywords(frontmatter, content) {
354
+ const keywords = new Set();
355
+ // From frontmatter tags
356
+ if (Array.isArray(frontmatter.tags)) {
357
+ frontmatter.tags.forEach((tag) => keywords.add(tag.toLowerCase()));
358
+ }
359
+ // From frontmatter keywords
360
+ if (Array.isArray(frontmatter.keywords)) {
361
+ frontmatter.keywords.forEach((kw) => keywords.add(kw.toLowerCase()));
362
+ }
363
+ // Extract from headers
364
+ const headers = content.match(/^#+\s+(.+)$/gm) || [];
365
+ headers.forEach(h => {
366
+ const text = h.replace(/^#+\s+/, '').toLowerCase();
367
+ if (text.length <= 30) {
368
+ keywords.add(text);
369
+ }
370
+ });
371
+ return Array.from(keywords).slice(0, 10);
372
+ }
373
+ /**
374
+ * Estimate token count for content
375
+ */
376
+ estimateTokens(content) {
377
+ const lines = content.split('\n').length;
378
+ return Math.ceil(lines * this.config.tokensPerLine);
379
+ }
380
+ /**
381
+ * Format skill ID as human-readable name
382
+ */
383
+ formatName(skillId) {
384
+ return skillId
385
+ .split('-')
386
+ .map(word => word.charAt(0).toUpperCase() + word.slice(1))
387
+ .join(' ');
388
+ }
389
+ /**
390
+ * Calculate category counts
391
+ */
392
+ calculateCategoryCounts(skills) {
393
+ const counts = {
394
+ 'qe-core': 0,
395
+ 'qe-methodology': 0,
396
+ 'qe-specialized': 0,
397
+ 'qe-advanced': 0,
398
+ 'advanced': 0,
399
+ 'integration': 0,
400
+ };
401
+ for (const skill of skills) {
402
+ counts[skill.category]++;
403
+ }
404
+ return counts;
405
+ }
406
+ /**
407
+ * Get file modification time
408
+ */
409
+ async getFileStats(skillId) {
410
+ try {
411
+ const skillPath = path.join(this.config.skillsDir, skillId, 'SKILL.md');
412
+ const stats = await fs.stat(skillPath);
413
+ return stats.mtime;
414
+ }
415
+ catch {
416
+ return null;
417
+ }
418
+ }
419
+ /**
420
+ * Write manifest to file
421
+ */
422
+ async writeManifest(manifest) {
423
+ const content = JSON.stringify(manifest, null, 2);
424
+ await fs.writeFile(this.config.outputPath, content, 'utf-8');
425
+ }
426
+ }
427
+ exports.ManifestGenerator = ManifestGenerator;
428
+ /**
429
+ * CLI entry point for manifest generation
430
+ */
431
+ async function generateManifest(options = {}) {
432
+ const generator = new ManifestGenerator(options);
433
+ return generator.generate();
434
+ }
435
+ /**
436
+ * CLI entry point for manifest update
437
+ */
438
+ async function updateManifest(options = {}) {
439
+ const generator = new ManifestGenerator(options);
440
+ return generator.update();
441
+ }
442
+ /**
443
+ * CLI entry point for manifest validation
444
+ */
445
+ async function validateManifest(options = {}) {
446
+ const generator = new ManifestGenerator(options);
447
+ return generator.validate();
448
+ }
449
+ //# sourceMappingURL=ManifestGenerator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ManifestGenerator.js","sourceRoot":"","sources":["../../../src/core/skills/ManifestGenerator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Skills Module - Progressive Disclosure System
3
+ * Achieves 98% token reduction by lazy-loading skills on demand
4
+ */
5
+ export { Skill, SkillMetadata, SkillManifest, SkillLoaderConfig, SkillUsageStats, SkillSearchFilter, SkillPriority, SkillCategory, } from './types.js';
6
+ export { DynamicSkillLoader, getDefaultLoader, resetDefaultLoader, } from './DynamicSkillLoader.js';
7
+ export { ManifestGenerator, ManifestGeneratorConfig, generateManifest, updateManifest, validateManifest, } from './ManifestGenerator.js';
8
+ export { DependencyResolver, DependencyResolution, DependencyNode, ResolverOptions, createDependencyResolver, visualizeDependencyTree, } from './DependencyResolver.js';
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/skills/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EACL,KAAK,EACL,aAAa,EACb,aAAa,EACb,iBAAiB,EACjB,eAAe,EACf,iBAAiB,EACjB,aAAa,EACb,aAAa,GACd,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,kBAAkB,EAClB,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,yBAAyB,CAAC;AAGjC,OAAO,EACL,iBAAiB,EACjB,uBAAuB,EACvB,gBAAgB,EAChB,cAAc,EACd,gBAAgB,GACjB,MAAM,wBAAwB,CAAC;AAGhC,OAAO,EACL,kBAAkB,EAClB,oBAAoB,EACpB,cAAc,EACd,eAAe,EACf,wBAAwB,EACxB,uBAAuB,GACxB,MAAM,yBAAyB,CAAC"}
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ /**
3
+ * Skills Module - Progressive Disclosure System
4
+ * Achieves 98% token reduction by lazy-loading skills on demand
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.visualizeDependencyTree = exports.createDependencyResolver = exports.DependencyResolver = exports.validateManifest = exports.updateManifest = exports.generateManifest = exports.ManifestGenerator = exports.resetDefaultLoader = exports.getDefaultLoader = exports.DynamicSkillLoader = void 0;
8
+ // Dynamic Skill Loader
9
+ var DynamicSkillLoader_js_1 = require("./DynamicSkillLoader.js");
10
+ Object.defineProperty(exports, "DynamicSkillLoader", { enumerable: true, get: function () { return DynamicSkillLoader_js_1.DynamicSkillLoader; } });
11
+ Object.defineProperty(exports, "getDefaultLoader", { enumerable: true, get: function () { return DynamicSkillLoader_js_1.getDefaultLoader; } });
12
+ Object.defineProperty(exports, "resetDefaultLoader", { enumerable: true, get: function () { return DynamicSkillLoader_js_1.resetDefaultLoader; } });
13
+ // Manifest Generator
14
+ var ManifestGenerator_js_1 = require("./ManifestGenerator.js");
15
+ Object.defineProperty(exports, "ManifestGenerator", { enumerable: true, get: function () { return ManifestGenerator_js_1.ManifestGenerator; } });
16
+ Object.defineProperty(exports, "generateManifest", { enumerable: true, get: function () { return ManifestGenerator_js_1.generateManifest; } });
17
+ Object.defineProperty(exports, "updateManifest", { enumerable: true, get: function () { return ManifestGenerator_js_1.updateManifest; } });
18
+ Object.defineProperty(exports, "validateManifest", { enumerable: true, get: function () { return ManifestGenerator_js_1.validateManifest; } });
19
+ // Dependency Resolver
20
+ var DependencyResolver_js_1 = require("./DependencyResolver.js");
21
+ Object.defineProperty(exports, "DependencyResolver", { enumerable: true, get: function () { return DependencyResolver_js_1.DependencyResolver; } });
22
+ Object.defineProperty(exports, "createDependencyResolver", { enumerable: true, get: function () { return DependencyResolver_js_1.createDependencyResolver; } });
23
+ Object.defineProperty(exports, "visualizeDependencyTree", { enumerable: true, get: function () { return DependencyResolver_js_1.visualizeDependencyTree; } });
24
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/skills/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAcH,uBAAuB;AACvB,iEAIiC;AAH/B,2HAAA,kBAAkB,OAAA;AAClB,yHAAA,gBAAgB,OAAA;AAChB,2HAAA,kBAAkB,OAAA;AAGpB,qBAAqB;AACrB,+DAMgC;AAL9B,yHAAA,iBAAiB,OAAA;AAEjB,wHAAA,gBAAgB,OAAA;AAChB,sHAAA,cAAc,OAAA;AACd,wHAAA,gBAAgB,OAAA;AAGlB,sBAAsB;AACtB,iEAOiC;AAN/B,2HAAA,kBAAkB,OAAA;AAIlB,iIAAA,wBAAwB,OAAA;AACxB,gIAAA,uBAAuB,OAAA"}
@@ -0,0 +1,118 @@
1
+ /**
2
+ * Progressive Disclosure System for Skill Management
3
+ * Achieves 98% token reduction by lazy-loading skills on demand
4
+ */
5
+ /**
6
+ * Skill priority levels for loading strategy
7
+ */
8
+ export type SkillPriority = 'critical' | 'high' | 'medium' | 'low';
9
+ /**
10
+ * Skill categories for organization and discovery
11
+ */
12
+ export type SkillCategory = 'qe-core' | 'qe-methodology' | 'qe-specialized' | 'qe-advanced' | 'advanced' | 'integration';
13
+ /**
14
+ * Lightweight metadata for skill discovery without loading full content
15
+ * Reduces initialization tokens from ~50,000 to ~1,000 (98% reduction)
16
+ */
17
+ export interface SkillMetadata {
18
+ /** Unique skill identifier (matches directory name) */
19
+ id: string;
20
+ /** Human-readable skill name */
21
+ name: string;
22
+ /** Category for organization and filtering */
23
+ category: SkillCategory;
24
+ /** Short description (<100 chars) for quick reference */
25
+ description: string;
26
+ /** Keywords for semantic search and discovery */
27
+ keywords: string[];
28
+ /** Other skills this skill depends on (lazy-loaded together) */
29
+ dependencies?: string[];
30
+ /** Estimated token count for full skill content */
31
+ estimatedTokens: number;
32
+ /** Loading priority (critical skills preloaded on init) */
33
+ priority: SkillPriority;
34
+ /** File path relative to .claude/skills/ */
35
+ path: string;
36
+ /** Last updated timestamp */
37
+ lastUpdated: string;
38
+ }
39
+ /**
40
+ * Full skill content (loaded on demand)
41
+ */
42
+ export interface Skill {
43
+ /** Metadata (duplicated for convenience) */
44
+ metadata: SkillMetadata;
45
+ /** Full markdown content */
46
+ content: string;
47
+ /** Parsed frontmatter from SKILL.md */
48
+ frontmatter: {
49
+ name: string;
50
+ description: string;
51
+ [key: string]: any;
52
+ };
53
+ /** Timestamp when loaded into memory */
54
+ loadedAt: Date;
55
+ }
56
+ /**
57
+ * Manifest containing all skill metadata
58
+ */
59
+ export interface SkillManifest {
60
+ /** Manifest version for compatibility checking */
61
+ version: string;
62
+ /** Generation timestamp */
63
+ generatedAt: string;
64
+ /** Total number of skills */
65
+ totalSkills: number;
66
+ /** Skills by category for quick filtering */
67
+ categoryCounts: Record<SkillCategory, number>;
68
+ /** All skill metadata (lightweight) */
69
+ skills: SkillMetadata[];
70
+ }
71
+ /**
72
+ * Skill loader configuration
73
+ */
74
+ export interface SkillLoaderConfig {
75
+ /** Path to skills directory */
76
+ skillsDir: string;
77
+ /** Path to manifest file */
78
+ manifestPath: string;
79
+ /** LRU cache size (number of skills to keep in memory) */
80
+ cacheSize: number;
81
+ /** Cache TTL in milliseconds (0 = no expiry) */
82
+ cacheTTL: number;
83
+ /** Preload critical skills on initialization */
84
+ preloadCritical: boolean;
85
+ /** Enable usage analytics for optimization */
86
+ enableAnalytics: boolean;
87
+ }
88
+ /**
89
+ * Skill usage statistics for optimization
90
+ */
91
+ export interface SkillUsageStats {
92
+ /** Skill ID */
93
+ skillId: string;
94
+ /** Number of times loaded */
95
+ loadCount: number;
96
+ /** Last load timestamp */
97
+ lastLoaded: Date;
98
+ /** Average time to load (ms) */
99
+ avgLoadTime: number;
100
+ /** Agents that use this skill */
101
+ usedByAgents: string[];
102
+ }
103
+ /**
104
+ * Search filter for skill discovery
105
+ */
106
+ export interface SkillSearchFilter {
107
+ /** Filter by category */
108
+ category?: SkillCategory;
109
+ /** Filter by priority */
110
+ priority?: SkillPriority;
111
+ /** Keyword search */
112
+ keyword?: string;
113
+ /** Full-text search in description */
114
+ query?: string;
115
+ /** Filter by dependencies */
116
+ hasDependencies?: boolean;
117
+ }
118
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/core/skills/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;AAEnE;;GAEG;AACH,MAAM,MAAM,aAAa,GACrB,SAAS,GACT,gBAAgB,GAChB,gBAAgB,GAChB,aAAa,GACb,UAAU,GACV,aAAa,CAAC;AAElB;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B,uDAAuD;IACvD,EAAE,EAAE,MAAM,CAAC;IAEX,gCAAgC;IAChC,IAAI,EAAE,MAAM,CAAC;IAEb,8CAA8C;IAC9C,QAAQ,EAAE,aAAa,CAAC;IAExB,yDAAyD;IACzD,WAAW,EAAE,MAAM,CAAC;IAEpB,iDAAiD;IACjD,QAAQ,EAAE,MAAM,EAAE,CAAC;IAEnB,gEAAgE;IAChE,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IAExB,mDAAmD;IACnD,eAAe,EAAE,MAAM,CAAC;IAExB,2DAA2D;IAC3D,QAAQ,EAAE,aAAa,CAAC;IAExB,4CAA4C;IAC5C,IAAI,EAAE,MAAM,CAAC;IAEb,6BAA6B;IAC7B,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,KAAK;IACpB,4CAA4C;IAC5C,QAAQ,EAAE,aAAa,CAAC;IAExB,4BAA4B;IAC5B,OAAO,EAAE,MAAM,CAAC;IAEhB,uCAAuC;IACvC,WAAW,EAAE;QACX,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;QACpB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;KACpB,CAAC;IAEF,wCAAwC;IACxC,QAAQ,EAAE,IAAI,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,kDAAkD;IAClD,OAAO,EAAE,MAAM,CAAC;IAEhB,2BAA2B;IAC3B,WAAW,EAAE,MAAM,CAAC;IAEpB,6BAA6B;IAC7B,WAAW,EAAE,MAAM,CAAC;IAEpB,6CAA6C;IAC7C,cAAc,EAAE,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;IAE9C,uCAAuC;IACvC,MAAM,EAAE,aAAa,EAAE,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,+BAA+B;IAC/B,SAAS,EAAE,MAAM,CAAC;IAElB,4BAA4B;IAC5B,YAAY,EAAE,MAAM,CAAC;IAErB,0DAA0D;IAC1D,SAAS,EAAE,MAAM,CAAC;IAElB,gDAAgD;IAChD,QAAQ,EAAE,MAAM,CAAC;IAEjB,gDAAgD;IAChD,eAAe,EAAE,OAAO,CAAC;IAEzB,8CAA8C;IAC9C,eAAe,EAAE,OAAO,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,eAAe;IACf,OAAO,EAAE,MAAM,CAAC;IAEhB,6BAA6B;IAC7B,SAAS,EAAE,MAAM,CAAC;IAElB,0BAA0B;IAC1B,UAAU,EAAE,IAAI,CAAC;IAEjB,gCAAgC;IAChC,WAAW,EAAE,MAAM,CAAC;IAEpB,iCAAiC;IACjC,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,yBAAyB;IACzB,QAAQ,CAAC,EAAE,aAAa,CAAC;IAEzB,yBAAyB;IACzB,QAAQ,CAAC,EAAE,aAAa,CAAC;IAEzB,qBAAqB;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,sCAAsC;IACtC,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,6BAA6B;IAC7B,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B"}
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ /**
3
+ * Progressive Disclosure System for Skill Management
4
+ * Achieves 98% token reduction by lazy-loading skills on demand
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/core/skills/types.ts"],"names":[],"mappings":";AAAA;;;GAGG"}