@mytechtoday/augment-extensions 0.2.0 → 0.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 (244) hide show
  1. package/README.md +614 -39
  2. package/augment-extensions/coding-standards/bash/README.md +196 -0
  3. package/augment-extensions/coding-standards/bash/module.json +163 -0
  4. package/augment-extensions/coding-standards/bash/rules/naming-conventions.md +336 -0
  5. package/augment-extensions/coding-standards/bash/rules/universal-standards.md +289 -0
  6. package/augment-extensions/coding-standards/css/README.md +40 -0
  7. package/augment-extensions/coding-standards/css/examples/css-examples.css +550 -0
  8. package/augment-extensions/coding-standards/css/module.json +44 -0
  9. package/augment-extensions/coding-standards/css/rules/css-modern-features.md +448 -0
  10. package/augment-extensions/coding-standards/css/rules/css-standards.md +492 -0
  11. package/augment-extensions/coding-standards/html/README.md +40 -0
  12. package/augment-extensions/coding-standards/html/examples/html-examples.html +267 -0
  13. package/augment-extensions/coding-standards/html/examples/responsive-layout.html +505 -0
  14. package/augment-extensions/coding-standards/html/module.json +44 -0
  15. package/augment-extensions/coding-standards/html/rules/html-standards.md +349 -0
  16. package/augment-extensions/coding-standards/html-css-js/README.md +194 -0
  17. package/augment-extensions/coding-standards/html-css-js/examples/async-examples.js +487 -0
  18. package/augment-extensions/coding-standards/html-css-js/examples/css-examples.css +550 -0
  19. package/augment-extensions/coding-standards/html-css-js/examples/dom-examples.js +667 -0
  20. package/augment-extensions/coding-standards/html-css-js/examples/html-examples.html +267 -0
  21. package/augment-extensions/coding-standards/html-css-js/examples/javascript-examples.js +612 -0
  22. package/augment-extensions/coding-standards/html-css-js/examples/responsive-layout.html +505 -0
  23. package/augment-extensions/coding-standards/html-css-js/module.json +48 -0
  24. package/augment-extensions/coding-standards/html-css-js/rules/async-patterns.md +515 -0
  25. package/augment-extensions/coding-standards/html-css-js/rules/css-modern-features.md +448 -0
  26. package/augment-extensions/coding-standards/html-css-js/rules/css-standards.md +492 -0
  27. package/augment-extensions/coding-standards/html-css-js/rules/dom-manipulation.md +439 -0
  28. package/augment-extensions/coding-standards/html-css-js/rules/html-standards.md +349 -0
  29. package/augment-extensions/coding-standards/html-css-js/rules/javascript-standards.md +486 -0
  30. package/augment-extensions/coding-standards/html-css-js/rules/performance.md +463 -0
  31. package/augment-extensions/coding-standards/html-css-js/rules/tooling.md +543 -0
  32. package/augment-extensions/coding-standards/js/README.md +46 -0
  33. package/augment-extensions/coding-standards/js/examples/async-examples.js +487 -0
  34. package/augment-extensions/coding-standards/js/examples/dom-examples.js +667 -0
  35. package/augment-extensions/coding-standards/js/examples/javascript-examples.js +612 -0
  36. package/augment-extensions/coding-standards/js/module.json +49 -0
  37. package/augment-extensions/coding-standards/js/rules/async-patterns.md +515 -0
  38. package/augment-extensions/coding-standards/js/rules/dom-manipulation.md +439 -0
  39. package/augment-extensions/coding-standards/js/rules/javascript-standards.md +486 -0
  40. package/augment-extensions/coding-standards/js/rules/performance.md +463 -0
  41. package/augment-extensions/coding-standards/js/rules/tooling.md +543 -0
  42. package/augment-extensions/coding-standards/php/README.md +248 -0
  43. package/augment-extensions/coding-standards/php/examples/api-endpoint-example.php +204 -0
  44. package/augment-extensions/coding-standards/php/examples/cli-command-example.php +206 -0
  45. package/augment-extensions/coding-standards/php/examples/legacy-refactoring-example.php +234 -0
  46. package/augment-extensions/coding-standards/php/examples/web-application-example.php +211 -0
  47. package/augment-extensions/coding-standards/php/examples/woocommerce-extension-example.php +215 -0
  48. package/augment-extensions/coding-standards/php/examples/wordpress-plugin-example.php +189 -0
  49. package/augment-extensions/coding-standards/php/module.json +166 -0
  50. package/augment-extensions/coding-standards/php/rules/api-development.md +480 -0
  51. package/augment-extensions/coding-standards/php/rules/category-configuration.md +332 -0
  52. package/augment-extensions/coding-standards/php/rules/cli-tools.md +472 -0
  53. package/augment-extensions/coding-standards/php/rules/cms-integration.md +561 -0
  54. package/augment-extensions/coding-standards/php/rules/code-quality.md +402 -0
  55. package/augment-extensions/coding-standards/php/rules/documentation.md +425 -0
  56. package/augment-extensions/coding-standards/php/rules/ecommerce.md +627 -0
  57. package/augment-extensions/coding-standards/php/rules/error-handling.md +336 -0
  58. package/augment-extensions/coding-standards/php/rules/legacy-migration.md +677 -0
  59. package/augment-extensions/coding-standards/php/rules/naming-conventions.md +279 -0
  60. package/augment-extensions/coding-standards/php/rules/performance.md +392 -0
  61. package/augment-extensions/coding-standards/php/rules/psr-standards.md +186 -0
  62. package/augment-extensions/coding-standards/php/rules/security.md +358 -0
  63. package/augment-extensions/coding-standards/php/rules/testing.md +403 -0
  64. package/augment-extensions/coding-standards/php/rules/type-declarations.md +331 -0
  65. package/augment-extensions/coding-standards/php/rules/web-applications.md +426 -0
  66. package/augment-extensions/coding-standards/powershell/README.md +154 -0
  67. package/augment-extensions/coding-standards/powershell/examples/admin-example.ps1 +272 -0
  68. package/augment-extensions/coding-standards/powershell/examples/automation-example.ps1 +173 -0
  69. package/augment-extensions/coding-standards/powershell/examples/cloud-example.ps1 +243 -0
  70. package/augment-extensions/coding-standards/powershell/examples/cross-platform-example.ps1 +297 -0
  71. package/augment-extensions/coding-standards/powershell/examples/dsc-example.ps1 +224 -0
  72. package/augment-extensions/coding-standards/powershell/examples/legacy-migration-example.ps1 +340 -0
  73. package/augment-extensions/coding-standards/powershell/examples/module-example.psm1 +255 -0
  74. package/augment-extensions/coding-standards/powershell/module.json +165 -0
  75. package/augment-extensions/coding-standards/powershell/rules/administrative-tools.md +439 -0
  76. package/augment-extensions/coding-standards/powershell/rules/automation-scripts.md +240 -0
  77. package/augment-extensions/coding-standards/powershell/rules/cloud-orchestration.md +384 -0
  78. package/augment-extensions/coding-standards/powershell/rules/configuration-schema.md +383 -0
  79. package/augment-extensions/coding-standards/powershell/rules/cross-platform-scripts.md +482 -0
  80. package/augment-extensions/coding-standards/powershell/rules/dsc-configurations.md +296 -0
  81. package/augment-extensions/coding-standards/powershell/rules/error-handling.md +314 -0
  82. package/augment-extensions/coding-standards/powershell/rules/legacy-migrations.md +466 -0
  83. package/augment-extensions/coding-standards/powershell/rules/modules-functions.md +244 -0
  84. package/augment-extensions/coding-standards/powershell/rules/naming-conventions.md +266 -0
  85. package/augment-extensions/coding-standards/powershell/rules/performance-optimization.md +209 -0
  86. package/augment-extensions/coding-standards/powershell/rules/security-practices.md +314 -0
  87. package/augment-extensions/coding-standards/powershell/rules/testing-guidelines.md +268 -0
  88. package/augment-extensions/coding-standards/powershell/rules/universal-standards.md +197 -0
  89. package/augment-extensions/coding-standards/python/README.md +12 -8
  90. package/augment-extensions/coding-standards/python/examples/best-practices.py +373 -0
  91. package/augment-extensions/coding-standards/python/module.json +8 -4
  92. package/augment-extensions/coding-standards/python/rules/async-patterns.md +884 -0
  93. package/augment-extensions/coding-standards/python/rules/documentation.md +831 -0
  94. package/augment-extensions/coding-standards/python/rules/error-handling.md +855 -68
  95. package/augment-extensions/coding-standards/python/rules/testing.md +409 -0
  96. package/augment-extensions/coding-standards/python/rules/tooling.md +446 -0
  97. package/augment-extensions/coding-standards/python/rules/type-hints.md +115 -50
  98. package/augment-extensions/collections/html-css-js/README.md +82 -0
  99. package/augment-extensions/collections/html-css-js/collection.json +41 -0
  100. package/augment-extensions/domain-rules/database/README.md +161 -0
  101. package/augment-extensions/domain-rules/database/examples/flat-database-example.md +793 -0
  102. package/augment-extensions/domain-rules/database/examples/hybrid-database-example.md +1132 -0
  103. package/augment-extensions/domain-rules/database/examples/nosql-document-example.md +868 -0
  104. package/augment-extensions/domain-rules/database/examples/nosql-graph-example.md +805 -0
  105. package/augment-extensions/domain-rules/database/examples/relational-schema-example.md +621 -0
  106. package/augment-extensions/domain-rules/database/examples/vector-database-example.md +965 -0
  107. package/augment-extensions/domain-rules/database/module.json +28 -0
  108. package/augment-extensions/domain-rules/database/rules/flat-databases.md +624 -0
  109. package/augment-extensions/domain-rules/database/rules/nosql-databases.md +588 -0
  110. package/augment-extensions/domain-rules/database/rules/nosql-document-stores.md +856 -0
  111. package/augment-extensions/domain-rules/database/rules/nosql-graph-databases.md +778 -0
  112. package/augment-extensions/domain-rules/database/rules/nosql-key-value-stores.md +963 -0
  113. package/augment-extensions/domain-rules/database/rules/performance-optimization.md +1076 -0
  114. package/augment-extensions/domain-rules/database/rules/relational-databases.md +697 -0
  115. package/augment-extensions/domain-rules/database/rules/relational-indexing.md +671 -0
  116. package/augment-extensions/domain-rules/database/rules/relational-query-optimization.md +607 -0
  117. package/augment-extensions/domain-rules/database/rules/relational-schema-design.md +907 -0
  118. package/augment-extensions/domain-rules/database/rules/relational-transactions.md +783 -0
  119. package/augment-extensions/domain-rules/database/rules/security-standards.md +980 -0
  120. package/augment-extensions/domain-rules/database/rules/universal-best-practices.md +485 -0
  121. package/augment-extensions/domain-rules/database/rules/vector-databases.md +521 -0
  122. package/augment-extensions/domain-rules/database/rules/vector-embeddings.md +858 -0
  123. package/augment-extensions/domain-rules/database/rules/vector-indexing.md +934 -0
  124. package/augment-extensions/domain-rules/mcp/README.md +150 -0
  125. package/augment-extensions/domain-rules/mcp/examples/compressed-example.md +522 -0
  126. package/augment-extensions/domain-rules/mcp/examples/graph-augmented-example.md +520 -0
  127. package/augment-extensions/domain-rules/mcp/examples/hybrid-example.md +570 -0
  128. package/augment-extensions/domain-rules/mcp/examples/state-based-example.md +427 -0
  129. package/augment-extensions/domain-rules/mcp/examples/token-based-example.md +435 -0
  130. package/augment-extensions/domain-rules/mcp/examples/vector-based-example.md +502 -0
  131. package/augment-extensions/domain-rules/mcp/module.json +49 -0
  132. package/augment-extensions/domain-rules/mcp/rules/compressed-mcp.md +595 -0
  133. package/augment-extensions/domain-rules/mcp/rules/configuration.md +345 -0
  134. package/augment-extensions/domain-rules/mcp/rules/graph-augmented-mcp.md +687 -0
  135. package/augment-extensions/domain-rules/mcp/rules/hybrid-mcp.md +636 -0
  136. package/augment-extensions/domain-rules/mcp/rules/state-based-mcp.md +484 -0
  137. package/augment-extensions/domain-rules/mcp/rules/testing-validation.md +360 -0
  138. package/augment-extensions/domain-rules/mcp/rules/token-based-mcp.md +393 -0
  139. package/augment-extensions/domain-rules/mcp/rules/universal-rules.md +194 -0
  140. package/augment-extensions/domain-rules/mcp/rules/vector-based-mcp.md +625 -0
  141. package/augment-extensions/workflows/beads/module.json +4 -3
  142. package/augment-extensions/workflows/database/README.md +195 -0
  143. package/augment-extensions/workflows/database/ai-prompt-testing.md +295 -0
  144. package/augment-extensions/workflows/database/examples/migration-example.md +498 -0
  145. package/augment-extensions/workflows/database/examples/optimization-example.md +496 -0
  146. package/augment-extensions/workflows/database/examples/schema-design-example.md +444 -0
  147. package/augment-extensions/workflows/database/module.json +42 -0
  148. package/augment-extensions/workflows/database/rules/data-migration.md +249 -0
  149. package/augment-extensions/workflows/database/rules/documentation-standards.md +339 -0
  150. package/augment-extensions/workflows/database/rules/migration-workflow.md +352 -0
  151. package/augment-extensions/workflows/database/rules/optimization-workflow.md +435 -0
  152. package/augment-extensions/workflows/database/rules/schema-design-workflow.md +535 -0
  153. package/augment-extensions/workflows/database/rules/testing-patterns.md +305 -0
  154. package/augment-extensions/workflows/database/rules/workflow.md +458 -0
  155. package/augment-extensions/workflows/openspec/module.json +4 -3
  156. package/augment-extensions/writing-standards/screenplay/README.md +171 -0
  157. package/augment-extensions/writing-standards/screenplay/examples/aaa-hollywood-scene.fountain +164 -0
  158. package/augment-extensions/writing-standards/screenplay/module.json +124 -0
  159. package/augment-extensions/writing-standards/screenplay/rules/universal-formatting.md +339 -0
  160. package/cli/MODULES.md +302 -0
  161. package/cli/dist/cli.js +142 -9
  162. package/cli/dist/cli.js.map +1 -1
  163. package/cli/dist/commands/catalog.d.ts +13 -0
  164. package/cli/dist/commands/catalog.d.ts.map +1 -0
  165. package/cli/dist/commands/catalog.js +104 -0
  166. package/cli/dist/commands/catalog.js.map +1 -0
  167. package/cli/dist/commands/gui.d.ts +6 -0
  168. package/cli/dist/commands/gui.d.ts.map +1 -0
  169. package/cli/dist/commands/gui.js +211 -0
  170. package/cli/dist/commands/gui.js.map +1 -0
  171. package/cli/dist/commands/init.d.ts.map +1 -1
  172. package/cli/dist/commands/init.js +12 -0
  173. package/cli/dist/commands/init.js.map +1 -1
  174. package/cli/dist/commands/install-rules.d.ts +14 -0
  175. package/cli/dist/commands/install-rules.d.ts.map +1 -0
  176. package/cli/dist/commands/install-rules.js +127 -0
  177. package/cli/dist/commands/install-rules.js.map +1 -0
  178. package/cli/dist/commands/link.d.ts.map +1 -1
  179. package/cli/dist/commands/link.js +9 -11
  180. package/cli/dist/commands/link.js.map +1 -1
  181. package/cli/dist/commands/list.d.ts.map +1 -1
  182. package/cli/dist/commands/list.js +11 -28
  183. package/cli/dist/commands/list.js.map +1 -1
  184. package/cli/dist/commands/mcp.d.ts +48 -0
  185. package/cli/dist/commands/mcp.d.ts.map +1 -0
  186. package/cli/dist/commands/mcp.js +229 -0
  187. package/cli/dist/commands/mcp.js.map +1 -0
  188. package/cli/dist/commands/self-remove.d.ts +7 -0
  189. package/cli/dist/commands/self-remove.d.ts.map +1 -0
  190. package/cli/dist/commands/self-remove.js +179 -0
  191. package/cli/dist/commands/self-remove.js.map +1 -0
  192. package/cli/dist/commands/show.d.ts.map +1 -1
  193. package/cli/dist/commands/show.js +29 -99
  194. package/cli/dist/commands/show.js.map +1 -1
  195. package/cli/dist/commands/skill.d.ts +67 -0
  196. package/cli/dist/commands/skill.d.ts.map +1 -0
  197. package/cli/dist/commands/skill.js +513 -0
  198. package/cli/dist/commands/skill.js.map +1 -0
  199. package/cli/dist/commands/unlink.d.ts +6 -0
  200. package/cli/dist/commands/unlink.d.ts.map +1 -0
  201. package/cli/dist/commands/unlink.js +115 -0
  202. package/cli/dist/commands/unlink.js.map +1 -0
  203. package/cli/dist/commands/validate.d.ts +6 -0
  204. package/cli/dist/commands/validate.d.ts.map +1 -0
  205. package/cli/dist/commands/validate.js +159 -0
  206. package/cli/dist/commands/validate.js.map +1 -0
  207. package/cli/dist/utils/catalog-sync.d.ts +22 -0
  208. package/cli/dist/utils/catalog-sync.d.ts.map +1 -0
  209. package/cli/dist/utils/catalog-sync.js +157 -0
  210. package/cli/dist/utils/catalog-sync.js.map +1 -0
  211. package/cli/dist/utils/character-count.d.ts +56 -0
  212. package/cli/dist/utils/character-count.d.ts.map +1 -0
  213. package/cli/dist/utils/character-count.js +190 -0
  214. package/cli/dist/utils/character-count.js.map +1 -0
  215. package/cli/dist/utils/documentation-validator.d.ts +18 -0
  216. package/cli/dist/utils/documentation-validator.d.ts.map +1 -0
  217. package/cli/dist/utils/documentation-validator.js +233 -0
  218. package/cli/dist/utils/documentation-validator.js.map +1 -0
  219. package/cli/dist/utils/install-rules.d.ts +32 -0
  220. package/cli/dist/utils/install-rules.d.ts.map +1 -0
  221. package/cli/dist/utils/install-rules.js +375 -0
  222. package/cli/dist/utils/install-rules.js.map +1 -0
  223. package/cli/dist/utils/mcp-integration.d.ts +70 -0
  224. package/cli/dist/utils/mcp-integration.d.ts.map +1 -0
  225. package/cli/dist/utils/mcp-integration.js +292 -0
  226. package/cli/dist/utils/mcp-integration.js.map +1 -0
  227. package/cli/dist/utils/module-system.d.ts +153 -0
  228. package/cli/dist/utils/module-system.d.ts.map +1 -0
  229. package/cli/dist/utils/module-system.js +528 -0
  230. package/cli/dist/utils/module-system.js.map +1 -0
  231. package/cli/dist/utils/modules-catalog.d.ts +33 -0
  232. package/cli/dist/utils/modules-catalog.d.ts.map +1 -0
  233. package/cli/dist/utils/modules-catalog.js +163 -0
  234. package/cli/dist/utils/modules-catalog.js.map +1 -0
  235. package/cli/dist/utils/rule-install-hooks.d.ts +19 -0
  236. package/cli/dist/utils/rule-install-hooks.d.ts.map +1 -0
  237. package/cli/dist/utils/rule-install-hooks.js +224 -0
  238. package/cli/dist/utils/rule-install-hooks.js.map +1 -0
  239. package/cli/dist/utils/skill-system.d.ts +95 -0
  240. package/cli/dist/utils/skill-system.d.ts.map +1 -0
  241. package/cli/dist/utils/skill-system.js +313 -0
  242. package/cli/dist/utils/skill-system.js.map +1 -0
  243. package/modules.md +518 -106
  244. package/package.json +12 -3
@@ -0,0 +1,190 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.CHARACTER_LIMITS = void 0;
37
+ exports.calculateCharacterCount = calculateCharacterCount;
38
+ exports.calculateAugmentCharacterCount = calculateAugmentCharacterCount;
39
+ exports.validateAugmentCharacterCount = validateAugmentCharacterCount;
40
+ exports.getModuleSizeCategory = getModuleSizeCategory;
41
+ exports.formatCharacterCount = formatCharacterCount;
42
+ exports.generateCharacterCountReport = generateCharacterCountReport;
43
+ const fs = __importStar(require("fs"));
44
+ const path = __importStar(require("path"));
45
+ /**
46
+ * Character count limits
47
+ */
48
+ exports.CHARACTER_LIMITS = {
49
+ AUGMENT_MIN: 48599,
50
+ AUGMENT_MAX: 49299,
51
+ AUGMENT_TARGET: 49000,
52
+ MODULE_SMALL: 10000,
53
+ MODULE_MEDIUM: 25000,
54
+ MODULE_LARGE: 50000,
55
+ };
56
+ /**
57
+ * Calculate character count for a directory
58
+ */
59
+ function calculateCharacterCount(dirPath, options = {}) {
60
+ const { includeHidden = false, extensions } = options;
61
+ let totalCharacters = 0;
62
+ let fileCount = 0;
63
+ const files = [];
64
+ function countFilesRecursively(dir) {
65
+ const entries = fs.readdirSync(dir, { withFileTypes: true });
66
+ for (const entry of entries) {
67
+ // Skip hidden files/directories unless includeHidden is true
68
+ if (!includeHidden && entry.name.startsWith('.')) {
69
+ continue;
70
+ }
71
+ const fullPath = path.join(dir, entry.name);
72
+ if (entry.isDirectory()) {
73
+ countFilesRecursively(fullPath);
74
+ }
75
+ else if (entry.isFile()) {
76
+ // Filter by extension if specified
77
+ if (extensions && extensions.length > 0) {
78
+ const ext = path.extname(entry.name);
79
+ if (!extensions.includes(ext)) {
80
+ continue;
81
+ }
82
+ }
83
+ const content = fs.readFileSync(fullPath, 'utf-8');
84
+ const charCount = content.length;
85
+ totalCharacters += charCount;
86
+ fileCount++;
87
+ files.push({
88
+ path: path.relative(dirPath, fullPath),
89
+ characters: charCount
90
+ });
91
+ }
92
+ }
93
+ }
94
+ if (fs.existsSync(dirPath)) {
95
+ countFilesRecursively(dirPath);
96
+ }
97
+ return {
98
+ totalCharacters,
99
+ fileCount,
100
+ files: files.sort((a, b) => b.characters - a.characters) // Sort by size descending
101
+ };
102
+ }
103
+ /**
104
+ * Calculate character count for .augment/ directory
105
+ */
106
+ function calculateAugmentCharacterCount(augmentDir = '.augment') {
107
+ return calculateCharacterCount(augmentDir, {
108
+ includeHidden: false,
109
+ extensions: ['.md', '.json']
110
+ });
111
+ }
112
+ /**
113
+ * Validate .augment/ directory character count
114
+ */
115
+ function validateAugmentCharacterCount(augmentDir = '.augment') {
116
+ const result = calculateAugmentCharacterCount(augmentDir);
117
+ const { totalCharacters } = result;
118
+ const { AUGMENT_MIN, AUGMENT_MAX } = exports.CHARACTER_LIMITS;
119
+ const valid = totalCharacters >= AUGMENT_MIN && totalCharacters <= AUGMENT_MAX;
120
+ let message = '';
121
+ if (totalCharacters < AUGMENT_MIN) {
122
+ message = `Character count (${totalCharacters}) is below minimum (${AUGMENT_MIN}). Consider adding more content.`;
123
+ }
124
+ else if (totalCharacters > AUGMENT_MAX) {
125
+ message = `Character count (${totalCharacters}) exceeds maximum (${AUGMENT_MAX}). Move content to extension modules.`;
126
+ }
127
+ else {
128
+ message = `Character count (${totalCharacters}) is within target range (${AUGMENT_MIN}-${AUGMENT_MAX}).`;
129
+ }
130
+ return {
131
+ valid,
132
+ count: totalCharacters,
133
+ min: AUGMENT_MIN,
134
+ max: AUGMENT_MAX,
135
+ message
136
+ };
137
+ }
138
+ /**
139
+ * Get module size category
140
+ */
141
+ function getModuleSizeCategory(characterCount) {
142
+ if (characterCount < exports.CHARACTER_LIMITS.MODULE_SMALL) {
143
+ return 'small';
144
+ }
145
+ else if (characterCount < exports.CHARACTER_LIMITS.MODULE_MEDIUM) {
146
+ return 'medium';
147
+ }
148
+ else if (characterCount < exports.CHARACTER_LIMITS.MODULE_LARGE) {
149
+ return 'large';
150
+ }
151
+ else {
152
+ return 'too-large';
153
+ }
154
+ }
155
+ /**
156
+ * Format character count for display
157
+ */
158
+ function formatCharacterCount(count) {
159
+ if (count < 1000) {
160
+ return `${count}`;
161
+ }
162
+ else if (count < 1000000) {
163
+ return `${(count / 1000).toFixed(1)}K`;
164
+ }
165
+ else {
166
+ return `${(count / 1000000).toFixed(1)}M`;
167
+ }
168
+ }
169
+ /**
170
+ * Generate character count report
171
+ */
172
+ function generateCharacterCountReport(dirPath, title = 'Character Count Report') {
173
+ const result = calculateCharacterCount(dirPath);
174
+ const sizeCategory = getModuleSizeCategory(result.totalCharacters);
175
+ let report = `# ${title}\n\n`;
176
+ report += `**Total Characters**: ${result.totalCharacters.toLocaleString()} (${formatCharacterCount(result.totalCharacters)})\n`;
177
+ report += `**File Count**: ${result.fileCount}\n`;
178
+ report += `**Size Category**: ${sizeCategory}\n\n`;
179
+ if (result.files.length > 0) {
180
+ report += `## Files by Size\n\n`;
181
+ report += `| File | Characters | % of Total |\n`;
182
+ report += `|------|------------|------------|\n`;
183
+ for (const file of result.files) {
184
+ const percentage = ((file.characters / result.totalCharacters) * 100).toFixed(1);
185
+ report += `| ${file.path} | ${file.characters.toLocaleString()} | ${percentage}% |\n`;
186
+ }
187
+ }
188
+ return report;
189
+ }
190
+ //# sourceMappingURL=character-count.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"character-count.js","sourceRoot":"","sources":["../../src/utils/character-count.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2BA,0DAuDC;AAKD,wEAKC;AAKD,sEA6BC;AAKD,sDAUC;AAKD,oDAQC;AAKD,oEAqBC;AApLD,uCAAyB;AACzB,2CAA6B;AAW7B;;GAEG;AACU,QAAA,gBAAgB,GAAG;IAC9B,WAAW,EAAE,KAAK;IAClB,WAAW,EAAE,KAAK;IAClB,cAAc,EAAE,KAAK;IACrB,YAAY,EAAE,KAAK;IACnB,aAAa,EAAE,KAAK;IACpB,YAAY,EAAE,KAAK;CACpB,CAAC;AAEF;;GAEG;AACH,SAAgB,uBAAuB,CAAC,OAAe,EAAE,UAGrD,EAAE;IACJ,MAAM,EAAE,aAAa,GAAG,KAAK,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC;IAEtD,IAAI,eAAe,GAAG,CAAC,CAAC;IACxB,IAAI,SAAS,GAAG,CAAC,CAAC;IAClB,MAAM,KAAK,GAA2C,EAAE,CAAC;IAEzD,SAAS,qBAAqB,CAAC,GAAW;QACxC,MAAM,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QAE7D,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,6DAA6D;YAC7D,IAAI,CAAC,aAAa,IAAI,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBACjD,SAAS;YACX,CAAC;YAED,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;YAE5C,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;gBACxB,qBAAqB,CAAC,QAAQ,CAAC,CAAC;YAClC,CAAC;iBAAM,IAAI,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;gBAC1B,mCAAmC;gBACnC,IAAI,UAAU,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACxC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBACrC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;wBAC9B,SAAS;oBACX,CAAC;gBACH,CAAC;gBAED,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;gBACnD,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC;gBAEjC,eAAe,IAAI,SAAS,CAAC;gBAC7B,SAAS,EAAE,CAAC;gBAEZ,KAAK,CAAC,IAAI,CAAC;oBACT,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC;oBACtC,UAAU,EAAE,SAAS;iBACtB,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3B,qBAAqB,CAAC,OAAO,CAAC,CAAC;IACjC,CAAC;IAED,OAAO;QACL,eAAe;QACf,SAAS;QACT,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,0BAA0B;KACpF,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAgB,8BAA8B,CAAC,aAAqB,UAAU;IAC5E,OAAO,uBAAuB,CAAC,UAAU,EAAE;QACzC,aAAa,EAAE,KAAK;QACpB,UAAU,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC;KAC7B,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,SAAgB,6BAA6B,CAAC,aAAqB,UAAU;IAO3E,MAAM,MAAM,GAAG,8BAA8B,CAAC,UAAU,CAAC,CAAC;IAC1D,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,CAAC;IACnC,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,GAAG,wBAAgB,CAAC;IAEtD,MAAM,KAAK,GAAG,eAAe,IAAI,WAAW,IAAI,eAAe,IAAI,WAAW,CAAC;IAE/E,IAAI,OAAO,GAAG,EAAE,CAAC;IACjB,IAAI,eAAe,GAAG,WAAW,EAAE,CAAC;QAClC,OAAO,GAAG,oBAAoB,eAAe,uBAAuB,WAAW,kCAAkC,CAAC;IACpH,CAAC;SAAM,IAAI,eAAe,GAAG,WAAW,EAAE,CAAC;QACzC,OAAO,GAAG,oBAAoB,eAAe,sBAAsB,WAAW,uCAAuC,CAAC;IACxH,CAAC;SAAM,CAAC;QACN,OAAO,GAAG,oBAAoB,eAAe,6BAA6B,WAAW,IAAI,WAAW,IAAI,CAAC;IAC3G,CAAC;IAED,OAAO;QACL,KAAK;QACL,KAAK,EAAE,eAAe;QACtB,GAAG,EAAE,WAAW;QAChB,GAAG,EAAE,WAAW;QAChB,OAAO;KACR,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAgB,qBAAqB,CAAC,cAAsB;IAC1D,IAAI,cAAc,GAAG,wBAAgB,CAAC,YAAY,EAAE,CAAC;QACnD,OAAO,OAAO,CAAC;IACjB,CAAC;SAAM,IAAI,cAAc,GAAG,wBAAgB,CAAC,aAAa,EAAE,CAAC;QAC3D,OAAO,QAAQ,CAAC;IAClB,CAAC;SAAM,IAAI,cAAc,GAAG,wBAAgB,CAAC,YAAY,EAAE,CAAC;QAC1D,OAAO,OAAO,CAAC;IACjB,CAAC;SAAM,CAAC;QACN,OAAO,WAAW,CAAC;IACrB,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAgB,oBAAoB,CAAC,KAAa;IAChD,IAAI,KAAK,GAAG,IAAI,EAAE,CAAC;QACjB,OAAO,GAAG,KAAK,EAAE,CAAC;IACpB,CAAC;SAAM,IAAI,KAAK,GAAG,OAAO,EAAE,CAAC;QAC3B,OAAO,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;IACzC,CAAC;SAAM,CAAC;QACN,OAAO,GAAG,CAAC,KAAK,GAAG,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;IAC5C,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAgB,4BAA4B,CAAC,OAAe,EAAE,QAAgB,wBAAwB;IACpG,MAAM,MAAM,GAAG,uBAAuB,CAAC,OAAO,CAAC,CAAC;IAChD,MAAM,YAAY,GAAG,qBAAqB,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;IAEnE,IAAI,MAAM,GAAG,KAAK,KAAK,MAAM,CAAC;IAC9B,MAAM,IAAI,yBAAyB,MAAM,CAAC,eAAe,CAAC,cAAc,EAAE,KAAK,oBAAoB,CAAC,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC;IACjI,MAAM,IAAI,mBAAmB,MAAM,CAAC,SAAS,IAAI,CAAC;IAClD,MAAM,IAAI,sBAAsB,YAAY,MAAM,CAAC;IAEnD,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,sBAAsB,CAAC;QACjC,MAAM,IAAI,sCAAsC,CAAC;QACjD,MAAM,IAAI,sCAAsC,CAAC;QAEjD,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;YAChC,MAAM,UAAU,GAAG,CAAC,CAAC,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,eAAe,CAAC,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YACjF,MAAM,IAAI,KAAK,IAAI,CAAC,IAAI,MAAM,IAAI,CAAC,UAAU,CAAC,cAAc,EAAE,MAAM,UAAU,OAAO,CAAC;QACxF,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -0,0 +1,18 @@
1
+ import { Module, ValidationResult } from './module-system';
2
+ /**
3
+ * Validate module README.md has required sections
4
+ */
5
+ export declare function validateReadmeStructure(modulePath: string): ValidationResult;
6
+ /**
7
+ * Validate module has comprehensive documentation
8
+ */
9
+ export declare function validateModuleDocumentation(module: Module): ValidationResult;
10
+ /**
11
+ * Extract module overview from README.md
12
+ */
13
+ export declare function extractModuleOverview(modulePath: string): string;
14
+ /**
15
+ * Extract character count from README.md
16
+ */
17
+ export declare function extractCharacterCountFromReadme(modulePath: string): number | null;
18
+ //# sourceMappingURL=documentation-validator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"documentation-validator.d.ts","sourceRoot":"","sources":["../../src/utils/documentation-validator.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAW3D;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,MAAM,GAAG,gBAAgB,CAuC5E;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,MAAM,GAAG,gBAAgB,CAsG5E;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAoChE;AAED;;GAEG;AACH,wBAAgB,+BAA+B,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAwBjF"}
@@ -0,0 +1,233 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.validateReadmeStructure = validateReadmeStructure;
37
+ exports.validateModuleDocumentation = validateModuleDocumentation;
38
+ exports.extractModuleOverview = extractModuleOverview;
39
+ exports.extractCharacterCountFromReadme = extractCharacterCountFromReadme;
40
+ const fs = __importStar(require("fs"));
41
+ const path = __importStar(require("path"));
42
+ /**
43
+ * Required sections in README.md
44
+ */
45
+ const REQUIRED_README_SECTIONS = [
46
+ 'Overview',
47
+ 'Contents',
48
+ 'Character Count'
49
+ ];
50
+ /**
51
+ * Validate module README.md has required sections
52
+ */
53
+ function validateReadmeStructure(modulePath) {
54
+ const errors = [];
55
+ const warnings = [];
56
+ const readmePath = path.join(modulePath, 'README.md');
57
+ if (!fs.existsSync(readmePath)) {
58
+ errors.push('README.md file is missing');
59
+ return { valid: false, errors, warnings };
60
+ }
61
+ const content = fs.readFileSync(readmePath, 'utf-8');
62
+ // Check for required sections
63
+ for (const section of REQUIRED_README_SECTIONS) {
64
+ // Look for markdown headers (# Section or ## Section)
65
+ const sectionPattern = new RegExp(`^#{1,3}\\s+${section}`, 'mi');
66
+ if (!sectionPattern.test(content)) {
67
+ errors.push(`README.md missing required section: ${section}`);
68
+ }
69
+ }
70
+ // Check for empty README
71
+ if (content.trim().length < 100) {
72
+ warnings.push('README.md appears to be too short (< 100 characters)');
73
+ }
74
+ // Check for module name in title
75
+ const titlePattern = /^#\s+(.+)/m;
76
+ const titleMatch = content.match(titlePattern);
77
+ if (!titleMatch) {
78
+ warnings.push('README.md missing title (# heading)');
79
+ }
80
+ return {
81
+ valid: errors.length === 0,
82
+ errors,
83
+ warnings
84
+ };
85
+ }
86
+ /**
87
+ * Validate module has comprehensive documentation
88
+ */
89
+ function validateModuleDocumentation(module) {
90
+ const errors = [];
91
+ const warnings = [];
92
+ // Validate README.md structure
93
+ const readmeValidation = validateReadmeStructure(module.path);
94
+ errors.push(...readmeValidation.errors);
95
+ warnings.push(...readmeValidation.warnings);
96
+ // Check for rule files
97
+ if (module.rules.length === 0) {
98
+ errors.push('Module has no rule files in rules/ directory');
99
+ }
100
+ // Check for examples (optional but recommended for certain module types)
101
+ if (module.examples.length === 0) {
102
+ if (module.metadata.type === 'examples') {
103
+ errors.push('Examples module must have files in examples/ directory');
104
+ }
105
+ else if (module.metadata.type === 'coding-standards') {
106
+ warnings.push('Coding standards module should have examples in examples/ directory (recommended)');
107
+ }
108
+ else {
109
+ warnings.push('Module has no examples in examples/ directory (optional but recommended)');
110
+ }
111
+ }
112
+ // Validate each rule file has content
113
+ const rulesDir = path.join(module.path, 'rules');
114
+ for (const ruleFile of module.rules) {
115
+ const rulePath = path.join(rulesDir, ruleFile);
116
+ const content = fs.readFileSync(rulePath, 'utf-8');
117
+ if (content.trim().length < 100) {
118
+ warnings.push(`Rule file ${ruleFile} appears to be too short (< 100 characters)`);
119
+ }
120
+ // Check for markdown headers
121
+ if (!content.match(/^#{1,3}\s+/m)) {
122
+ warnings.push(`Rule file ${ruleFile} missing markdown headers`);
123
+ }
124
+ // Check for code examples in rule files (recommended)
125
+ if (!content.match(/```/)) {
126
+ warnings.push(`Rule file ${ruleFile} has no code examples (recommended for clarity)`);
127
+ }
128
+ // Check for actionable content (should have lists or steps)
129
+ if (!content.match(/^[-*]\s+/m) && !content.match(/^\d+\.\s+/m)) {
130
+ warnings.push(`Rule file ${ruleFile} lacks actionable content (lists or numbered steps recommended)`);
131
+ }
132
+ }
133
+ // Validate module.json completeness
134
+ if (!module.metadata.displayName) {
135
+ errors.push('module.json missing displayName field');
136
+ }
137
+ if (!module.metadata.description) {
138
+ errors.push('module.json missing description field');
139
+ }
140
+ else if (module.metadata.description.length < 20) {
141
+ warnings.push('module.json description is too short (< 20 characters)');
142
+ }
143
+ else if (module.metadata.description.length > 200) {
144
+ warnings.push('module.json description is too long (> 200 characters) - consider shortening');
145
+ }
146
+ if (!module.metadata.tags || module.metadata.tags.length === 0) {
147
+ warnings.push('module.json missing tags field (recommended for discoverability)');
148
+ }
149
+ if (!module.metadata.augment?.characterCount) {
150
+ warnings.push('module.json missing augment.characterCount field (required for catalog)');
151
+ }
152
+ if (!module.metadata.augment?.priority) {
153
+ warnings.push('module.json missing augment.priority field (recommended: high, medium, or low)');
154
+ }
155
+ // Validate README.md has usage examples
156
+ const readmePath = path.join(module.path, 'README.md');
157
+ if (fs.existsSync(readmePath)) {
158
+ const readmeContent = fs.readFileSync(readmePath, 'utf-8');
159
+ // Check for usage section
160
+ if (!readmeContent.match(/^#{1,3}\s+Usage/mi)) {
161
+ warnings.push('README.md missing Usage section (recommended)');
162
+ }
163
+ // Check for installation/setup section
164
+ if (!readmeContent.match(/^#{1,3}\s+(Installation|Setup)/mi)) {
165
+ warnings.push('README.md missing Installation or Setup section (recommended)');
166
+ }
167
+ // Check for examples in README
168
+ if (!readmeContent.match(/```/)) {
169
+ warnings.push('README.md has no code examples (recommended)');
170
+ }
171
+ }
172
+ return {
173
+ valid: errors.length === 0,
174
+ errors,
175
+ warnings
176
+ };
177
+ }
178
+ /**
179
+ * Extract module overview from README.md
180
+ */
181
+ function extractModuleOverview(modulePath) {
182
+ const readmePath = path.join(modulePath, 'README.md');
183
+ if (!fs.existsSync(readmePath)) {
184
+ return '';
185
+ }
186
+ const content = fs.readFileSync(readmePath, 'utf-8');
187
+ // Extract first paragraph after title
188
+ const lines = content.split('\n');
189
+ let overview = '';
190
+ let foundTitle = false;
191
+ for (const line of lines) {
192
+ if (line.match(/^#\s+/)) {
193
+ foundTitle = true;
194
+ continue;
195
+ }
196
+ if (foundTitle && line.trim().length > 0 && !line.match(/^#{1,3}\s+/)) {
197
+ overview += line + ' ';
198
+ // Stop at next heading or after a reasonable length
199
+ if (overview.length > 200) {
200
+ break;
201
+ }
202
+ }
203
+ // Stop at next heading
204
+ if (foundTitle && line.match(/^#{1,3}\s+/)) {
205
+ break;
206
+ }
207
+ }
208
+ return overview.trim();
209
+ }
210
+ /**
211
+ * Extract character count from README.md
212
+ */
213
+ function extractCharacterCountFromReadme(modulePath) {
214
+ const readmePath = path.join(modulePath, 'README.md');
215
+ if (!fs.existsSync(readmePath)) {
216
+ return null;
217
+ }
218
+ const content = fs.readFileSync(readmePath, 'utf-8');
219
+ // Look for character count patterns
220
+ const patterns = [
221
+ /Character Count[:\s]+~?(\d{1,3}(?:,\d{3})*)/i,
222
+ /~(\d{1,3}(?:,\d{3})*)\s+characters/i,
223
+ /Total:\s+~?(\d{1,3}(?:,\d{3})*)/i
224
+ ];
225
+ for (const pattern of patterns) {
226
+ const match = content.match(pattern);
227
+ if (match) {
228
+ return parseInt(match[1].replace(/,/g, ''), 10);
229
+ }
230
+ }
231
+ return null;
232
+ }
233
+ //# sourceMappingURL=documentation-validator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"documentation-validator.js","sourceRoot":"","sources":["../../src/utils/documentation-validator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ export interface InstallRulesOptions {
2
+ targetDir?: string;
3
+ skipIfExists?: boolean;
4
+ verbose?: boolean;
5
+ force?: boolean;
6
+ interactive?: boolean;
7
+ }
8
+ export interface InstallRulesResult {
9
+ success: boolean;
10
+ created: boolean;
11
+ skipped: boolean;
12
+ updated?: boolean;
13
+ error?: string;
14
+ errorType?: 'PERMISSION_DENIED' | 'DISK_FULL' | 'CONFLICT' | 'UNKNOWN';
15
+ path?: string;
16
+ }
17
+ /**
18
+ * Error types for better error handling
19
+ */
20
+ export declare class InstallRulesError extends Error {
21
+ type: 'PERMISSION_DENIED' | 'DISK_FULL' | 'CONFLICT' | 'UNKNOWN';
22
+ originalError?: Error | undefined;
23
+ constructor(message: string, type: 'PERMISSION_DENIED' | 'DISK_FULL' | 'CONFLICT' | 'UNKNOWN', originalError?: Error | undefined);
24
+ }
25
+ /**
26
+ * Install character count management rule to .augment/rules directory
27
+ *
28
+ * @param options - Installation options
29
+ * @returns Installation result
30
+ */
31
+ export declare function installCharacterCountRule(options?: InstallRulesOptions): Promise<InstallRulesResult>;
32
+ //# sourceMappingURL=install-rules.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"install-rules.d.ts","sourceRoot":"","sources":["../../src/utils/install-rules.ts"],"names":[],"mappings":"AAkEA,MAAM,WAAW,mBAAmB;IAClC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,mBAAmB,GAAG,WAAW,GAAG,UAAU,GAAG,SAAS,CAAC;IACvE,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,qBAAa,iBAAkB,SAAQ,KAAK;IAGjC,IAAI,EAAE,mBAAmB,GAAG,WAAW,GAAG,UAAU,GAAG,SAAS;IAChE,aAAa,CAAC,EAAE,KAAK;gBAF5B,OAAO,EAAE,MAAM,EACR,IAAI,EAAE,mBAAmB,GAAG,WAAW,GAAG,UAAU,GAAG,SAAS,EAChE,aAAa,CAAC,EAAE,KAAK,YAAA;CAK/B;AAqID;;;;;GAKG;AACH,wBAAsB,yBAAyB,CAC7C,OAAO,GAAE,mBAAwB,GAChC,OAAO,CAAC,kBAAkB,CAAC,CAkL7B"}