@mytechtoday/augment-extensions 1.4.0 → 1.5.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 (307) hide show
  1. package/augment-extensions/coding-standards/c/CHANGELOG.md +55 -0
  2. package/augment-extensions/coding-standards/c/LICENSE +22 -0
  3. package/augment-extensions/coding-standards/c/README.md +167 -0
  4. package/augment-extensions/coding-standards/c/config/defaults.json +26 -0
  5. package/augment-extensions/coding-standards/c/config/examples/embedded.yaml +25 -0
  6. package/augment-extensions/coding-standards/c/config/examples/systems.json +31 -0
  7. package/augment-extensions/coding-standards/c/config/schema.json +244 -0
  8. package/augment-extensions/coding-standards/c/docs/API.md +613 -0
  9. package/augment-extensions/coding-standards/c/docs/CONFIGURATION.md +259 -0
  10. package/augment-extensions/coding-standards/c/docs/USER_GUIDE.md +567 -0
  11. package/augment-extensions/coding-standards/c/examples/drivers/Makefile +33 -0
  12. package/augment-extensions/coding-standards/c/examples/drivers/README.md +192 -0
  13. package/augment-extensions/coding-standards/c/examples/drivers/dma-example.c +224 -0
  14. package/augment-extensions/coding-standards/c/examples/drivers/example.dts +64 -0
  15. package/augment-extensions/coding-standards/c/examples/drivers/platform-driver.c +174 -0
  16. package/augment-extensions/coding-standards/c/examples/embedded/README.md +167 -0
  17. package/augment-extensions/coding-standards/c/examples/embedded/gpio-control.c +172 -0
  18. package/augment-extensions/coding-standards/c/examples/embedded/timer-isr.c +198 -0
  19. package/augment-extensions/coding-standards/c/examples/embedded/uart-communication.c +212 -0
  20. package/augment-extensions/coding-standards/c/examples/kernel/Makefile +82 -0
  21. package/augment-extensions/coding-standards/c/examples/kernel/README.md +168 -0
  22. package/augment-extensions/coding-standards/c/examples/kernel/char-device.c +198 -0
  23. package/augment-extensions/coding-standards/c/examples/kernel/proc-file.c +131 -0
  24. package/augment-extensions/coding-standards/c/examples/kernel/simple-module.c +111 -0
  25. package/augment-extensions/coding-standards/c/examples/legacy/Makefile +62 -0
  26. package/augment-extensions/coding-standards/c/examples/legacy/README.md +255 -0
  27. package/augment-extensions/coding-standards/c/examples/legacy/c89-to-c11-migration.c +268 -0
  28. package/augment-extensions/coding-standards/c/examples/legacy/compatibility-layer.c +239 -0
  29. package/augment-extensions/coding-standards/c/examples/networking/Makefile +35 -0
  30. package/augment-extensions/coding-standards/c/examples/networking/README.md +207 -0
  31. package/augment-extensions/coding-standards/c/examples/networking/protocol-parser.c +270 -0
  32. package/augment-extensions/coding-standards/c/examples/networking/tcp-server.c +197 -0
  33. package/augment-extensions/coding-standards/c/examples/networking/udp-multicast.c +220 -0
  34. package/augment-extensions/coding-standards/c/examples/realtime/Makefile +53 -0
  35. package/augment-extensions/coding-standards/c/examples/realtime/README.md +199 -0
  36. package/augment-extensions/coding-standards/c/examples/realtime/deadline-monitoring.c +260 -0
  37. package/augment-extensions/coding-standards/c/examples/realtime/priority-scheduling.c +258 -0
  38. package/augment-extensions/coding-standards/c/examples/systems/Makefile +34 -0
  39. package/augment-extensions/coding-standards/c/examples/systems/README.md +123 -0
  40. package/augment-extensions/coding-standards/c/examples/systems/ipc-pipes.c +181 -0
  41. package/augment-extensions/coding-standards/c/examples/systems/process-management.c +153 -0
  42. package/augment-extensions/coding-standards/c/examples/systems/signal-handling.c +162 -0
  43. package/augment-extensions/coding-standards/c/module.json +149 -0
  44. package/augment-extensions/coding-standards/c/rules/categories/drivers.md +635 -0
  45. package/augment-extensions/coding-standards/c/rules/categories/embedded.md +510 -0
  46. package/augment-extensions/coding-standards/c/rules/categories/kernel.md +653 -0
  47. package/augment-extensions/coding-standards/c/rules/categories/legacy.md +526 -0
  48. package/augment-extensions/coding-standards/c/rules/categories/networking.md +735 -0
  49. package/augment-extensions/coding-standards/c/rules/categories/realtime.md +631 -0
  50. package/augment-extensions/coding-standards/c/rules/categories/systems.md +586 -0
  51. package/augment-extensions/coding-standards/c/rules/universal/const-correctness.md +275 -0
  52. package/augment-extensions/coding-standards/c/rules/universal/documentation.md +251 -0
  53. package/augment-extensions/coding-standards/c/rules/universal/error-handling.md +250 -0
  54. package/augment-extensions/coding-standards/c/rules/universal/header-guards.md +254 -0
  55. package/augment-extensions/coding-standards/c/rules/universal/memory-safety.md +233 -0
  56. package/augment-extensions/coding-standards/c/rules/universal/naming.md +146 -0
  57. package/augment-extensions/coding-standards/c/src/conflict-detector.ts +461 -0
  58. package/augment-extensions/coding-standards/c/src/prompt-generator.ts +307 -0
  59. package/augment-extensions/coding-standards/c/src/rule-evaluator.ts +307 -0
  60. package/augment-extensions/coding-standards/c/src/rule-override.ts +427 -0
  61. package/augment-extensions/coding-standards/c/src/template-engine.ts +217 -0
  62. package/augment-extensions/coding-standards/c/templates/prompts/drivers.txt +191 -0
  63. package/augment-extensions/coding-standards/c/templates/prompts/embedded.txt +164 -0
  64. package/augment-extensions/coding-standards/c/templates/prompts/kernel.txt +175 -0
  65. package/augment-extensions/coding-standards/c/templates/prompts/legacy.txt +280 -0
  66. package/augment-extensions/coding-standards/c/templates/prompts/networking.txt +259 -0
  67. package/augment-extensions/coding-standards/c/templates/prompts/realtime.txt +219 -0
  68. package/augment-extensions/coding-standards/c/templates/prompts/systems.txt +147 -0
  69. package/augment-extensions/coding-standards/c/tests/integration/category-specific.test.ts +356 -0
  70. package/augment-extensions/coding-standards/c/tests/integration/end-to-end-workflow.test.ts +377 -0
  71. package/augment-extensions/coding-standards/c/tests/performance/benchmarks.test.ts +407 -0
  72. package/augment-extensions/coding-standards/c/tests/unit/config-manager.test.ts +345 -0
  73. package/augment-extensions/coding-standards/c/tests/unit/conflict-detector.test.ts +294 -0
  74. package/augment-extensions/coding-standards/c/tests/unit/prompt-generator.test.ts +174 -0
  75. package/augment-extensions/coding-standards/c/tests/unit/registry.test.ts +313 -0
  76. package/augment-extensions/coding-standards/c/tests/unit/rule-evaluator.test.ts +318 -0
  77. package/augment-extensions/coding-standards/c/tests/unit/rule-override.test.ts +326 -0
  78. package/augment-extensions/coding-standards/c/tests/unit/template-engine.test.ts +314 -0
  79. package/augment-extensions/coding-standards/go/CHARACTER-COUNT-REPORT.md +135 -0
  80. package/augment-extensions/coding-standards/go/PHASE1-COMPLETION.md +146 -0
  81. package/augment-extensions/coding-standards/go/PHASE4-COMPLETION.md +184 -0
  82. package/augment-extensions/coding-standards/go/README.md +200 -0
  83. package/augment-extensions/coding-standards/go/VALIDATION-CHECKLIST.md +154 -0
  84. package/augment-extensions/coding-standards/go/config/examples/example-cli.json +15 -0
  85. package/augment-extensions/coding-standards/go/config/examples/example-microservices.json +21 -0
  86. package/augment-extensions/coding-standards/go/config/examples/example-multi-category.yaml +24 -0
  87. package/augment-extensions/coding-standards/go/config/examples/example-web.json +15 -0
  88. package/augment-extensions/coding-standards/go/config/schema.json +110 -0
  89. package/augment-extensions/coding-standards/go/docs/CATEGORIES.md +221 -0
  90. package/augment-extensions/coding-standards/go/docs/CONFIGURATION.md +198 -0
  91. package/augment-extensions/coding-standards/go/docs/TROUBLESHOOTING.md +285 -0
  92. package/augment-extensions/coding-standards/go/examples/cli/cobra-app.go +287 -0
  93. package/augment-extensions/coding-standards/go/examples/cloud-native-app.go +217 -0
  94. package/augment-extensions/coding-standards/go/examples/devops-tool.go +250 -0
  95. package/augment-extensions/coding-standards/go/examples/distributed-system.go +247 -0
  96. package/augment-extensions/coding-standards/go/examples/microservices/grpc-service.go +253 -0
  97. package/augment-extensions/coding-standards/go/examples/rest-api.go +270 -0
  98. package/augment-extensions/coding-standards/go/examples/web/http-server.go +224 -0
  99. package/augment-extensions/coding-standards/go/module.json +139 -0
  100. package/augment-extensions/coding-standards/go/rules/categories/api-development/api-versioning.md +149 -0
  101. package/augment-extensions/coding-standards/go/rules/categories/api-development/rate-limiting.md +209 -0
  102. package/augment-extensions/coding-standards/go/rules/categories/api-development/rest-api-design.md +183 -0
  103. package/augment-extensions/coding-standards/go/rules/categories/cloud-native/cloud-config.md +193 -0
  104. package/augment-extensions/coding-standards/go/rules/categories/cloud-native/health-checks.md +231 -0
  105. package/augment-extensions/coding-standards/go/rules/categories/cloud-native/kubernetes.md +180 -0
  106. package/augment-extensions/coding-standards/go/rules/categories/devops-tooling/automation.md +179 -0
  107. package/augment-extensions/coding-standards/go/rules/categories/devops-tooling/ci-cd-integration.md +147 -0
  108. package/augment-extensions/coding-standards/go/rules/categories/devops-tooling/infrastructure-as-code.md +231 -0
  109. package/augment-extensions/coding-standards/go/rules/categories/distributed-systems/caching.md +150 -0
  110. package/augment-extensions/coding-standards/go/rules/categories/distributed-systems/consensus.md +187 -0
  111. package/augment-extensions/coding-standards/go/rules/categories/distributed-systems/event-sourcing.md +246 -0
  112. package/augment-extensions/coding-standards/go/rules/cli/command-parsing.md +264 -0
  113. package/augment-extensions/coding-standards/go/rules/cli/configuration.md +268 -0
  114. package/augment-extensions/coding-standards/go/rules/cli/cross-platform.md +324 -0
  115. package/augment-extensions/coding-standards/go/rules/microservices/distributed-tracing.md +253 -0
  116. package/augment-extensions/coding-standards/go/rules/microservices/grpc.md +257 -0
  117. package/augment-extensions/coding-standards/go/rules/microservices/metrics.md +278 -0
  118. package/augment-extensions/coding-standards/go/rules/microservices/service-discovery.md +249 -0
  119. package/augment-extensions/coding-standards/go/rules/universal/code-organization.md +221 -0
  120. package/augment-extensions/coding-standards/go/rules/universal/documentation.md +269 -0
  121. package/augment-extensions/coding-standards/go/rules/universal/performance.md +323 -0
  122. package/augment-extensions/coding-standards/go/rules/universal/testing.md +162 -0
  123. package/augment-extensions/coding-standards/go/rules/web/graceful-shutdown.md +249 -0
  124. package/augment-extensions/coding-standards/go/rules/web/http-handlers.md +164 -0
  125. package/augment-extensions/coding-standards/go/rules/web/middleware.md +234 -0
  126. package/augment-extensions/coding-standards/go/rules/web/routing.md +251 -0
  127. package/augment-extensions/coding-standards/go/templates/prompts/api.md +160 -0
  128. package/augment-extensions/coding-standards/go/templates/prompts/cli.md +225 -0
  129. package/augment-extensions/coding-standards/go/templates/prompts/cloud-native.md +121 -0
  130. package/augment-extensions/coding-standards/go/templates/prompts/devops.md +146 -0
  131. package/augment-extensions/coding-standards/go/templates/prompts/distributed.md +133 -0
  132. package/augment-extensions/coding-standards/go/templates/prompts/microservices.md +225 -0
  133. package/augment-extensions/coding-standards/go/templates/prompts/web.md +181 -0
  134. package/augment-extensions/coding-standards/go/tests/integration/module-integration.test.ts +164 -0
  135. package/augment-extensions/coding-standards/go/tests/unit/category-selection.test.ts +147 -0
  136. package/augment-extensions/coding-standards/go/tests/unit/module-structure.test.ts +154 -0
  137. package/augment-extensions/coding-standards/go/tests/validate-character-count.ps1 +13 -0
  138. package/augment-extensions/coding-standards/go/tests/validate-examples.ps1 +148 -0
  139. package/augment-extensions/coding-standards/go/tests/validate-examples.sh +135 -0
  140. package/cli/dist/analysis/ast-parser.d.ts +47 -0
  141. package/cli/dist/analysis/ast-parser.d.ts.map +1 -0
  142. package/cli/dist/analysis/ast-parser.js +161 -0
  143. package/cli/dist/analysis/ast-parser.js.map +1 -0
  144. package/cli/dist/analysis/complexity-analyzer.d.ts +27 -0
  145. package/cli/dist/analysis/complexity-analyzer.d.ts.map +1 -0
  146. package/cli/dist/analysis/complexity-analyzer.js +189 -0
  147. package/cli/dist/analysis/complexity-analyzer.js.map +1 -0
  148. package/cli/dist/analysis/dependency-analyzer.d.ts +23 -0
  149. package/cli/dist/analysis/dependency-analyzer.d.ts.map +1 -0
  150. package/cli/dist/analysis/dependency-analyzer.js +237 -0
  151. package/cli/dist/analysis/dependency-analyzer.js.map +1 -0
  152. package/cli/dist/analysis/index.d.ts +9 -0
  153. package/cli/dist/analysis/index.d.ts.map +1 -0
  154. package/cli/dist/analysis/index.js +25 -0
  155. package/cli/dist/analysis/index.js.map +1 -0
  156. package/cli/dist/analysis/security-scanner.d.ts +11 -0
  157. package/cli/dist/analysis/security-scanner.d.ts.map +1 -0
  158. package/cli/dist/analysis/security-scanner.js +294 -0
  159. package/cli/dist/analysis/security-scanner.js.map +1 -0
  160. package/cli/dist/analysis/types.d.ts +151 -0
  161. package/cli/dist/analysis/types.d.ts.map +1 -0
  162. package/cli/dist/analysis/types.js +6 -0
  163. package/cli/dist/analysis/types.js.map +1 -0
  164. package/cli/dist/cli.js +24 -0
  165. package/cli/dist/cli.js.map +1 -1
  166. package/cli/dist/commands/code-analysis.d.ts +11 -0
  167. package/cli/dist/commands/code-analysis.d.ts.map +1 -0
  168. package/cli/dist/commands/code-analysis.js +412 -0
  169. package/cli/dist/commands/code-analysis.js.map +1 -0
  170. package/modules.md +99 -3
  171. package/package.json +14 -2
  172. package/cli/dist/commands/agent.d.ts +0 -37
  173. package/cli/dist/commands/agent.d.ts.map +0 -1
  174. package/cli/dist/commands/agent.js +0 -222
  175. package/cli/dist/commands/agent.js.map +0 -1
  176. package/cli/dist/commands/beads.d.ts +0 -64
  177. package/cli/dist/commands/beads.d.ts.map +0 -1
  178. package/cli/dist/commands/beads.js +0 -377
  179. package/cli/dist/commands/beads.js.map +0 -1
  180. package/cli/dist/commands/change.d.ts +0 -54
  181. package/cli/dist/commands/change.d.ts.map +0 -1
  182. package/cli/dist/commands/change.js +0 -243
  183. package/cli/dist/commands/change.js.map +0 -1
  184. package/cli/dist/commands/clean.d.ts +0 -15
  185. package/cli/dist/commands/clean.d.ts.map +0 -1
  186. package/cli/dist/commands/clean.js +0 -63
  187. package/cli/dist/commands/clean.js.map +0 -1
  188. package/cli/dist/commands/clone.d.ts +0 -15
  189. package/cli/dist/commands/clone.d.ts.map +0 -1
  190. package/cli/dist/commands/clone.js +0 -49
  191. package/cli/dist/commands/clone.js.map +0 -1
  192. package/cli/dist/commands/config.d.ts +0 -33
  193. package/cli/dist/commands/config.d.ts.map +0 -1
  194. package/cli/dist/commands/config.js +0 -166
  195. package/cli/dist/commands/config.js.map +0 -1
  196. package/cli/dist/commands/context.d.ts +0 -38
  197. package/cli/dist/commands/context.d.ts.map +0 -1
  198. package/cli/dist/commands/context.js +0 -205
  199. package/cli/dist/commands/context.js.map +0 -1
  200. package/cli/dist/commands/create.d.ts +0 -18
  201. package/cli/dist/commands/create.d.ts.map +0 -1
  202. package/cli/dist/commands/create.js +0 -178
  203. package/cli/dist/commands/create.js.map +0 -1
  204. package/cli/dist/commands/diff.d.ts +0 -19
  205. package/cli/dist/commands/diff.d.ts.map +0 -1
  206. package/cli/dist/commands/diff.js +0 -104
  207. package/cli/dist/commands/diff.js.map +0 -1
  208. package/cli/dist/commands/doctor.d.ts +0 -14
  209. package/cli/dist/commands/doctor.d.ts.map +0 -1
  210. package/cli/dist/commands/doctor.js +0 -62
  211. package/cli/dist/commands/doctor.js.map +0 -1
  212. package/cli/dist/commands/export.d.ts +0 -28
  213. package/cli/dist/commands/export.d.ts.map +0 -1
  214. package/cli/dist/commands/export.js +0 -135
  215. package/cli/dist/commands/export.js.map +0 -1
  216. package/cli/dist/commands/import.d.ts +0 -23
  217. package/cli/dist/commands/import.d.ts.map +0 -1
  218. package/cli/dist/commands/import.js +0 -118
  219. package/cli/dist/commands/import.js.map +0 -1
  220. package/cli/dist/commands/prompt.d.ts +0 -45
  221. package/cli/dist/commands/prompt.d.ts.map +0 -1
  222. package/cli/dist/commands/prompt.js +0 -223
  223. package/cli/dist/commands/prompt.js.map +0 -1
  224. package/cli/dist/commands/spec.d.ts +0 -57
  225. package/cli/dist/commands/spec.d.ts.map +0 -1
  226. package/cli/dist/commands/spec.js +0 -279
  227. package/cli/dist/commands/spec.js.map +0 -1
  228. package/cli/dist/commands/stats.d.ts +0 -18
  229. package/cli/dist/commands/stats.d.ts.map +0 -1
  230. package/cli/dist/commands/stats.js +0 -85
  231. package/cli/dist/commands/stats.js.map +0 -1
  232. package/cli/dist/commands/task.d.ts +0 -65
  233. package/cli/dist/commands/task.d.ts.map +0 -1
  234. package/cli/dist/commands/task.js +0 -282
  235. package/cli/dist/commands/task.js.map +0 -1
  236. package/cli/dist/commands/template.d.ts +0 -17
  237. package/cli/dist/commands/template.d.ts.map +0 -1
  238. package/cli/dist/commands/template.js +0 -55
  239. package/cli/dist/commands/template.js.map +0 -1
  240. package/cli/dist/utils/agent-config.d.ts +0 -129
  241. package/cli/dist/utils/agent-config.d.ts.map +0 -1
  242. package/cli/dist/utils/agent-config.js +0 -297
  243. package/cli/dist/utils/agent-config.js.map +0 -1
  244. package/cli/dist/utils/beads-graph.d.ts +0 -17
  245. package/cli/dist/utils/beads-graph.d.ts.map +0 -1
  246. package/cli/dist/utils/beads-graph.js +0 -150
  247. package/cli/dist/utils/beads-graph.js.map +0 -1
  248. package/cli/dist/utils/beads-integration.d.ts +0 -112
  249. package/cli/dist/utils/beads-integration.d.ts.map +0 -1
  250. package/cli/dist/utils/beads-integration.js +0 -312
  251. package/cli/dist/utils/beads-integration.js.map +0 -1
  252. package/cli/dist/utils/beads-reporter.d.ts +0 -17
  253. package/cli/dist/utils/beads-reporter.d.ts.map +0 -1
  254. package/cli/dist/utils/beads-reporter.js +0 -160
  255. package/cli/dist/utils/beads-reporter.js.map +0 -1
  256. package/cli/dist/utils/cache-manager.d.ts +0 -55
  257. package/cli/dist/utils/cache-manager.d.ts.map +0 -1
  258. package/cli/dist/utils/cache-manager.js +0 -150
  259. package/cli/dist/utils/cache-manager.js.map +0 -1
  260. package/cli/dist/utils/change-manager.d.ts +0 -70
  261. package/cli/dist/utils/change-manager.d.ts.map +0 -1
  262. package/cli/dist/utils/change-manager.js +0 -412
  263. package/cli/dist/utils/change-manager.js.map +0 -1
  264. package/cli/dist/utils/config-manager-enhanced.d.ts +0 -66
  265. package/cli/dist/utils/config-manager-enhanced.d.ts.map +0 -1
  266. package/cli/dist/utils/config-manager-enhanced.js +0 -77
  267. package/cli/dist/utils/config-manager-enhanced.js.map +0 -1
  268. package/cli/dist/utils/context-manager.d.ts +0 -96
  269. package/cli/dist/utils/context-manager.d.ts.map +0 -1
  270. package/cli/dist/utils/context-manager.js +0 -258
  271. package/cli/dist/utils/context-manager.js.map +0 -1
  272. package/cli/dist/utils/diff-engine.d.ts +0 -78
  273. package/cli/dist/utils/diff-engine.d.ts.map +0 -1
  274. package/cli/dist/utils/diff-engine.js +0 -233
  275. package/cli/dist/utils/diff-engine.js.map +0 -1
  276. package/cli/dist/utils/export-system.d.ts +0 -101
  277. package/cli/dist/utils/export-system.d.ts.map +0 -1
  278. package/cli/dist/utils/export-system.js +0 -289
  279. package/cli/dist/utils/export-system.js.map +0 -1
  280. package/cli/dist/utils/health-checker.d.ts +0 -66
  281. package/cli/dist/utils/health-checker.d.ts.map +0 -1
  282. package/cli/dist/utils/health-checker.js +0 -285
  283. package/cli/dist/utils/health-checker.js.map +0 -1
  284. package/cli/dist/utils/import-system.d.ts +0 -74
  285. package/cli/dist/utils/import-system.d.ts.map +0 -1
  286. package/cli/dist/utils/import-system.js +0 -317
  287. package/cli/dist/utils/import-system.js.map +0 -1
  288. package/cli/dist/utils/module-cloner.d.ts +0 -40
  289. package/cli/dist/utils/module-cloner.d.ts.map +0 -1
  290. package/cli/dist/utils/module-cloner.js +0 -136
  291. package/cli/dist/utils/module-cloner.js.map +0 -1
  292. package/cli/dist/utils/prompt-manager.d.ts +0 -90
  293. package/cli/dist/utils/prompt-manager.d.ts.map +0 -1
  294. package/cli/dist/utils/prompt-manager.js +0 -302
  295. package/cli/dist/utils/prompt-manager.js.map +0 -1
  296. package/cli/dist/utils/spec-manager.d.ts +0 -65
  297. package/cli/dist/utils/spec-manager.d.ts.map +0 -1
  298. package/cli/dist/utils/spec-manager.js +0 -329
  299. package/cli/dist/utils/spec-manager.js.map +0 -1
  300. package/cli/dist/utils/stats-collector.d.ts +0 -74
  301. package/cli/dist/utils/stats-collector.d.ts.map +0 -1
  302. package/cli/dist/utils/stats-collector.js +0 -164
  303. package/cli/dist/utils/stats-collector.js.map +0 -1
  304. package/cli/dist/utils/template-engine.d.ts +0 -47
  305. package/cli/dist/utils/template-engine.d.ts.map +0 -1
  306. package/cli/dist/utils/template-engine.js +0 -204
  307. package/cli/dist/utils/template-engine.js.map +0 -1
@@ -0,0 +1,377 @@
1
+ /**
2
+ * Integration Tests for End-to-End Workflows
3
+ * Tests complete workflows from configuration loading to violation reporting
4
+ */
5
+
6
+ import * as fs from 'fs/promises';
7
+ import * as path from 'path';
8
+ import { ConfigurationManager } from '../../src/config-manager';
9
+ import { RuleRegistry } from '../../src/registry';
10
+ import { PromptGenerator } from '../../src/prompt-generator';
11
+ import { RuleEvaluator } from '../../src/rule-evaluator';
12
+ import { Configuration } from '../../src/types';
13
+
14
+ describe('End-to-End Workflow Integration Tests', () => {
15
+ let tempDir: string;
16
+ let rulesPath: string;
17
+ let configPath: string;
18
+ let configManager: ConfigurationManager;
19
+ let registry: RuleRegistry;
20
+ let promptGenerator: PromptGenerator;
21
+ let evaluator: RuleEvaluator;
22
+
23
+ beforeEach(async () => {
24
+ // Create temporary test environment
25
+ tempDir = path.join(__dirname, '../fixtures/temp-e2e');
26
+ rulesPath = path.join(tempDir, 'rules');
27
+ configPath = tempDir;
28
+
29
+ await fs.mkdir(path.join(rulesPath, 'universal'), { recursive: true });
30
+ await fs.mkdir(path.join(rulesPath, 'categories'), { recursive: true });
31
+ await fs.mkdir(path.join(configPath, '.augment'), { recursive: true });
32
+
33
+ // Create comprehensive test rules
34
+ await createTestRules();
35
+
36
+ // Create test configuration
37
+ await createTestConfiguration();
38
+
39
+ // Initialize all components
40
+ configManager = new ConfigurationManager(configPath);
41
+ await configManager.load();
42
+
43
+ registry = new RuleRegistry(rulesPath);
44
+ await registry.loadRules();
45
+
46
+ promptGenerator = new PromptGenerator(registry, configManager);
47
+ evaluator = new RuleEvaluator(registry, configManager);
48
+ });
49
+
50
+ afterEach(async () => {
51
+ try {
52
+ await fs.rm(tempDir, { recursive: true, force: true });
53
+ } catch (error) {
54
+ // Ignore cleanup errors
55
+ }
56
+ });
57
+
58
+ async function createTestRules() {
59
+ // Universal naming rule
60
+ const namingRule = `# Rule: Naming Conventions
61
+
62
+ ## Metadata
63
+ - **ID**: universal-naming
64
+ - **Category**: universal
65
+ - **Severity**: ERROR
66
+
67
+ ## Description
68
+ Use snake_case for functions and variables, UPPER_CASE for macros.
69
+
70
+ ## Pattern
71
+ ^[a-z][a-z0-9_]*$ for functions/variables
72
+ ^[A-Z][A-Z0-9_]*$ for macros
73
+
74
+ ## Examples
75
+
76
+ ### Bad Example
77
+ \`\`\`c
78
+ int myFunction() { return 0; }
79
+ #define myMacro 1
80
+ \`\`\`
81
+
82
+ ### Good Example
83
+ \`\`\`c
84
+ int my_function() { return 0; }
85
+ #define MY_MACRO 1
86
+ \`\`\`
87
+ `;
88
+
89
+ await fs.writeFile(path.join(rulesPath, 'universal/naming.md'), namingRule);
90
+
91
+ // Memory safety rule
92
+ const memoryRule = `# Rule: Memory Safety
93
+
94
+ ## Metadata
95
+ - **ID**: universal-memory-safety
96
+ - **Category**: universal
97
+ - **Severity**: ERROR
98
+
99
+ ## Description
100
+ Always check malloc/calloc return values and free allocated memory.
101
+
102
+ ## Examples
103
+
104
+ ### Bad Example
105
+ \`\`\`c
106
+ int* ptr = malloc(sizeof(int));
107
+ *ptr = 5; // No null check
108
+ \`\`\`
109
+
110
+ ### Good Example
111
+ \`\`\`c
112
+ int* ptr = malloc(sizeof(int));
113
+ if (ptr == NULL) return -1;
114
+ *ptr = 5;
115
+ free(ptr);
116
+ \`\`\`
117
+ `;
118
+
119
+ await fs.writeFile(path.join(rulesPath, 'universal/memory-safety.md'), memoryRule);
120
+
121
+ // Embedded systems rule
122
+ const embeddedRule = `# Rule: Volatile Hardware Access
123
+
124
+ ## Metadata
125
+ - **ID**: embedded-volatile
126
+ - **Category**: embedded
127
+ - **Severity**: ERROR
128
+
129
+ ## Description
130
+ Use volatile keyword for hardware register access.
131
+
132
+ ## Examples
133
+
134
+ ### Bad Example
135
+ \`\`\`c
136
+ uint32_t* reg = (uint32_t*)0x40000000;
137
+ *reg = 0x01;
138
+ \`\`\`
139
+
140
+ ### Good Example
141
+ \`\`\`c
142
+ volatile uint32_t* reg = (volatile uint32_t*)0x40000000;
143
+ *reg = 0x01;
144
+ \`\`\`
145
+ `;
146
+
147
+ await fs.writeFile(path.join(rulesPath, 'categories/embedded.md'), embeddedRule);
148
+ }
149
+
150
+ async function createTestConfiguration() {
151
+ const config: Configuration = {
152
+ c_standards: {
153
+ version: '1.0.0',
154
+ categories: ['systems', 'embedded'],
155
+ c_standard: 'c11',
156
+ universal_rules: {
157
+ naming: 'enabled',
158
+ memory_safety: 'enabled',
159
+ error_handling: 'enabled',
160
+ documentation: 'warning',
161
+ header_guards: 'enabled',
162
+ const_correctness: 'enabled'
163
+ },
164
+ category_overrides: {
165
+ embedded: {
166
+ allow_dynamic_allocation: false
167
+ }
168
+ },
169
+ static_analysis: {
170
+ clang_tidy: true,
171
+ cppcheck: true,
172
+ valgrind: false
173
+ },
174
+ custom_rules: {
175
+ enabled: false,
176
+ path: '.augment/c-standards/custom-rules/'
177
+ }
178
+ }
179
+ };
180
+
181
+ await fs.writeFile(
182
+ path.join(configPath, '.augment/c-standards.json'),
183
+ JSON.stringify(config, null, 2)
184
+ );
185
+ }
186
+
187
+ describe('Complete Workflow: Configuration → Rules → Evaluation', () => {
188
+ it('should load configuration and rules successfully', async () => {
189
+ const config = configManager.getConfiguration();
190
+ const allRules = registry.getAllRules();
191
+
192
+ expect(config).toBeDefined();
193
+ expect(allRules.length).toBeGreaterThan(0);
194
+ });
195
+
196
+ it('should evaluate code and detect violations', async () => {
197
+ const code = `
198
+ int myFunction() {
199
+ int* ptr = malloc(sizeof(int));
200
+ *ptr = 5;
201
+ return *ptr;
202
+ }
203
+ `;
204
+
205
+ const violations = await evaluator.evaluate(code, {
206
+ filePath: '/project/src/main.c',
207
+ rules: ['universal-naming', 'universal-memory-safety']
208
+ });
209
+
210
+ expect(violations.length).toBeGreaterThan(0);
211
+ expect(violations.some(v => v.ruleId === 'universal-naming')).toBe(true);
212
+ expect(violations.some(v => v.ruleId === 'universal-memory-safety')).toBe(true);
213
+ });
214
+
215
+ it('should generate AI prompt with active rules', async () => {
216
+ const prompt = await promptGenerator.generatePrompt({
217
+ filePath: '/project/src/main.c',
218
+ codeContext: 'int main() { return 0; }'
219
+ });
220
+
221
+ expect(prompt).toBeDefined();
222
+ expect(prompt.length).toBeGreaterThan(0);
223
+ expect(prompt).toContain('C Coding Standards');
224
+ });
225
+
226
+ it('should respect configuration overrides', async () => {
227
+ const config = configManager.getConfiguration();
228
+ expect(config.c_standards.categories).toContain('embedded');
229
+
230
+ const embeddedRules = registry.getRulesByCategory('embedded');
231
+ expect(embeddedRules.length).toBeGreaterThan(0);
232
+ });
233
+
234
+ it('should filter rules by enabled status', async () => {
235
+ registry.setRuleEnabled('universal-naming', false);
236
+
237
+ const code = 'int myFunction() { return 0; }';
238
+ const violations = await evaluator.evaluate(code, {
239
+ filePath: '/project/src/main.c',
240
+ rules: ['universal-naming']
241
+ });
242
+
243
+ expect(violations.length).toBe(0);
244
+ });
245
+ });
246
+
247
+ describe('Category-Specific Workflows', () => {
248
+ it('should apply embedded category rules', async () => {
249
+ const code = `
250
+ uint32_t* reg = (uint32_t*)0x40000000;
251
+ *reg = 0x01;
252
+ `;
253
+
254
+ const violations = await evaluator.evaluate(code, {
255
+ filePath: '/project/embedded/sensor.c',
256
+ rules: ['embedded-volatile']
257
+ });
258
+
259
+ expect(violations.length).toBeGreaterThan(0);
260
+ expect(violations[0].ruleId).toBe('embedded-volatile');
261
+ });
262
+
263
+ it('should generate category-specific prompts', async () => {
264
+ const prompt = await promptGenerator.generatePrompt({
265
+ filePath: '/project/embedded/sensor.c',
266
+ codeContext: 'volatile uint32_t* reg;',
267
+ category: 'embedded'
268
+ });
269
+
270
+ expect(prompt).toBeDefined();
271
+ expect(prompt).toContain('embedded');
272
+ });
273
+ });
274
+
275
+ describe('Multi-File Evaluation', () => {
276
+ it('should evaluate multiple files in batch', async () => {
277
+ const files = [
278
+ {
279
+ path: '/project/src/file1.c',
280
+ content: 'int myFunction() { return 0; }'
281
+ },
282
+ {
283
+ path: '/project/src/file2.c',
284
+ content: 'int my_function() { return 0; }'
285
+ },
286
+ {
287
+ path: '/project/src/file3.c',
288
+ content: 'int anotherBadName() { return 0; }'
289
+ }
290
+ ];
291
+
292
+ const results = await evaluator.evaluateBatch(files, {
293
+ rules: ['universal-naming']
294
+ });
295
+
296
+ expect(results.length).toBe(3);
297
+ expect(results[0].violations.length).toBeGreaterThan(0);
298
+ expect(results[1].violations.length).toBe(0);
299
+ expect(results[2].violations.length).toBeGreaterThan(0);
300
+ });
301
+
302
+ it('should generate summary report for batch evaluation', async () => {
303
+ const files = [
304
+ {
305
+ path: '/project/src/file1.c',
306
+ content: 'int myFunction() { return 0; }'
307
+ },
308
+ {
309
+ path: '/project/src/file2.c',
310
+ content: 'int my_function() { return 0; }'
311
+ }
312
+ ];
313
+
314
+ const results = await evaluator.evaluateBatch(files, {
315
+ rules: ['universal-naming']
316
+ });
317
+
318
+ const allViolations = results.flatMap(r => r.violations);
319
+ const report = evaluator.generateReport(allViolations, {
320
+ format: 'json',
321
+ includeSummary: true
322
+ });
323
+
324
+ const parsed = JSON.parse(report);
325
+ expect(parsed.summary).toBeDefined();
326
+ expect(parsed.summary.total).toBeGreaterThan(0);
327
+ });
328
+ });
329
+
330
+ describe('Configuration Hot-Reload', () => {
331
+ it('should reload configuration and update rules', async () => {
332
+ const config1 = configManager.getConfiguration();
333
+ expect(config1.c_standards.categories).toContain('systems');
334
+
335
+ // Modify configuration
336
+ const newConfig: Configuration = {
337
+ c_standards: {
338
+ ...config1.c_standards,
339
+ categories: ['networking', 'kernel']
340
+ }
341
+ };
342
+
343
+ await fs.writeFile(
344
+ path.join(configPath, '.augment/c-standards.json'),
345
+ JSON.stringify(newConfig, null, 2)
346
+ );
347
+
348
+ await configManager.reload();
349
+
350
+ const config2 = configManager.getConfiguration();
351
+ expect(config2.c_standards.categories).toEqual(['networking', 'kernel']);
352
+ });
353
+ });
354
+
355
+ describe('Error Handling and Recovery', () => {
356
+ it('should handle invalid code gracefully', async () => {
357
+ const invalidCode = 'this is not valid C code @#$%';
358
+
359
+ await expect(evaluator.evaluate(invalidCode, {
360
+ filePath: '/project/src/invalid.c',
361
+ rules: ['universal-naming']
362
+ })).resolves.not.toThrow();
363
+ });
364
+
365
+ it('should handle missing rules gracefully', async () => {
366
+ const code = 'int my_function() { return 0; }';
367
+
368
+ const violations = await evaluator.evaluate(code, {
369
+ filePath: '/project/src/main.c',
370
+ rules: ['nonexistent-rule']
371
+ });
372
+
373
+ expect(violations).toBeDefined();
374
+ });
375
+ });
376
+ });
377
+