@chongyan/autospec 1.0.1 → 1.0.3

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 (595) hide show
  1. package/LICENSE +242 -21
  2. package/README.md +54 -476
  3. package/dist/README.md +54 -0
  4. package/dist/adapters/claude-code/README.md.enc +6 -0
  5. package/dist/adapters/claude-code/agents.js +1 -0
  6. package/dist/adapters/claude-code/commands.config.js +1 -0
  7. package/dist/adapters/claude-code/commands.js +1 -0
  8. package/dist/adapters/claude-code/hooks.config.js +2 -0
  9. package/dist/adapters/claude-code/hooks.js +1 -0
  10. package/dist/adapters/claude-code/install.js +1 -0
  11. package/dist/adapters/claude-code/skills.js +1 -0
  12. package/dist/adapters/codex/README.md.enc +6 -0
  13. package/dist/adapters/codex/hooks/pre-commit.sh +10 -0
  14. package/dist/adapters/codex/install.js +1 -0
  15. package/dist/adapters/codex/prompts/env-learn.md.enc +6 -0
  16. package/dist/adapters/codex/prompts/review.md.enc +6 -0
  17. package/dist/adapters/codex/wrappers/autospec-cli.sh +118 -0
  18. package/dist/adapters/codex/wrappers/parallel.sh +20 -0
  19. package/dist/adapters/codex/wrappers/post-task.sh +138 -0
  20. package/dist/bin/autospec.js +2 -0
  21. package/dist/knowledge/README.en.md.enc +6 -0
  22. package/dist/knowledge/README.md.enc +6 -0
  23. package/dist/knowledge/change-management.md.enc +6 -0
  24. package/dist/knowledge/cognition-engine.md.enc +6 -0
  25. package/dist/knowledge/config/baseline-permissions.md.enc +6 -0
  26. package/dist/knowledge/config/external-mounts.yaml.enc +6 -0
  27. package/dist/knowledge/config/model-profiles.yaml.enc +6 -0
  28. package/dist/knowledge/config/role-composition.yaml.enc +6 -0
  29. package/dist/knowledge/config/token-optimization.yaml.enc +6 -0
  30. package/dist/knowledge/config/validation-patterns.yaml.enc +6 -0
  31. package/dist/knowledge/constitution.md.enc +6 -0
  32. package/dist/knowledge/core-rules.md.enc +6 -0
  33. package/dist/knowledge/environment/adapters/README.md.enc +6 -0
  34. package/dist/knowledge/environment/detection-patterns.yaml.enc +6 -0
  35. package/dist/knowledge/environment/failure-patterns.json +223 -0
  36. package/dist/knowledge/environment/repair-strategies.json +206 -0
  37. package/dist/knowledge/memory/README.md.enc +6 -0
  38. package/dist/knowledge/memory/field/README.md.enc +6 -0
  39. package/dist/knowledge/memory/project/decisions/README.md.enc +6 -0
  40. package/dist/knowledge/memory/project/evolution-log.md.enc +6 -0
  41. package/dist/knowledge/memory/project/health-metrics.md.enc +6 -0
  42. package/dist/knowledge/memory/team/best-practices.md.enc +6 -0
  43. package/dist/knowledge/pipeline/code.md.enc +6 -0
  44. package/dist/knowledge/pipeline/explore.md.enc +6 -0
  45. package/dist/knowledge/pipeline/plan.md.enc +6 -0
  46. package/dist/knowledge/pipeline/protocol.md.enc +6 -0
  47. package/dist/knowledge/protocol/capabilities.yaml.enc +6 -0
  48. package/dist/knowledge/protocol/evolve-integration.md.enc +6 -0
  49. package/dist/knowledge/skills/README.md.enc +6 -0
  50. package/dist/knowledge/skills/adversarial-review.md.enc +6 -0
  51. package/dist/knowledge/skills/analyze-requirement.md.enc +6 -0
  52. package/dist/knowledge/skills/channel-operations.md.enc +6 -0
  53. package/dist/knowledge/skills/content-operations.md.enc +6 -0
  54. package/dist/knowledge/skills/content-prompts.md.enc +6 -0
  55. package/dist/knowledge/skills/conversion-optimization.md.enc +6 -0
  56. package/dist/knowledge/skills/data-operations.md.enc +6 -0
  57. package/dist/knowledge/skills/design-solution.md.enc +6 -0
  58. package/dist/knowledge/skills/growth-strategies.md.enc +6 -0
  59. package/dist/knowledge/skills/implement-code.md.enc +6 -0
  60. package/dist/knowledge/skills/knowledge-distill.md.enc +6 -0
  61. package/dist/knowledge/skills/parallel-dev.md.enc +6 -0
  62. package/dist/knowledge/skills/private-domain-traffic.md.enc +6 -0
  63. package/dist/knowledge/skills/skill-format.md.enc +6 -0
  64. package/dist/knowledge/skills/social-commerce.md.enc +6 -0
  65. package/dist/knowledge/skills/team-orchestration.md.enc +6 -0
  66. package/dist/knowledge/skills/unified-review.md.enc +6 -0
  67. package/dist/knowledge/skills/user-operations.md.enc +6 -0
  68. package/dist/knowledge/templates/autospec-config.yaml.enc +6 -0
  69. package/dist/knowledge/templates/smoke-test.md.enc +6 -0
  70. package/dist/knowledge/templates/spec/SPEC.md.enc +6 -0
  71. package/dist/knowledge/templates/spec/layers/delta.md.enc +6 -0
  72. package/dist/knowledge/templates/spec/layers/how.md.enc +6 -0
  73. package/dist/knowledge/templates/spec/layers/plan.md.enc +6 -0
  74. package/dist/knowledge/templates/spec/layers/what.md.enc +6 -0
  75. package/dist/knowledge/templates/spec/layers/why.md.enc +6 -0
  76. package/dist/knowledge/templates/wiki/catalog.yaml.enc +6 -0
  77. package/dist/knowledge/templates/wiki/content.md.enc +6 -0
  78. package/dist/knowledge/templates/wiki/meta.yaml.enc +6 -0
  79. package/dist/package.json +62 -0
  80. package/dist/plugins/.claude-plugin/plugin.json +671 -0
  81. package/dist/plugins/agents/roles/ai-engineer.md.enc +6 -0
  82. package/dist/plugins/agents/roles/backend-engineer.md.enc +6 -0
  83. package/dist/plugins/agents/roles/ceo.md.enc +6 -0
  84. package/dist/plugins/agents/roles/channel-ops.md.enc +6 -0
  85. package/dist/plugins/agents/roles/content-ops.md.enc +6 -0
  86. package/dist/plugins/agents/roles/conversion-ops.md.enc +6 -0
  87. package/dist/plugins/agents/roles/data-engineer.md.enc +6 -0
  88. package/dist/plugins/agents/roles/data-ops.md.enc +6 -0
  89. package/dist/plugins/agents/roles/devops-engineer.md.enc +6 -0
  90. package/dist/plugins/agents/roles/frontend-engineer.md.enc +6 -0
  91. package/dist/plugins/agents/roles/marketing-director.md.enc +6 -0
  92. package/dist/plugins/agents/roles/operations-director.md.enc +6 -0
  93. package/dist/plugins/agents/roles/private-traffic.md.enc +6 -0
  94. package/dist/plugins/agents/roles/product-owner.md.enc +6 -0
  95. package/dist/plugins/agents/roles/quality-engineer.md.enc +6 -0
  96. package/dist/plugins/agents/roles/security-engineer.md.enc +6 -0
  97. package/dist/plugins/agents/roles/tech-lead.md.enc +6 -0
  98. package/dist/plugins/agents/roles/user-ops.md.enc +6 -0
  99. package/dist/plugins/agents/support/blind-comparator.md.enc +6 -0
  100. package/dist/plugins/agents/support/consistency-checker.md.enc +6 -0
  101. package/dist/plugins/agents/support/experiment-evaluator.md.enc +6 -0
  102. package/dist/plugins/agents/support/failure-diagnostician.md.enc +6 -0
  103. package/dist/plugins/agents/support/independent-reviewer.md.enc +6 -0
  104. package/dist/plugins/agents/support/memory-curator.md.enc +6 -0
  105. package/dist/plugins/agents/support/monitoring-agent.md.enc +6 -0
  106. package/dist/plugins/agents/support/safety-auditor.md.enc +6 -0
  107. package/dist/plugins/agents/support/skill-benchmarker.md.enc +6 -0
  108. package/dist/plugins/agents/support/skill-forger.md.enc +6 -0
  109. package/dist/plugins/agents/support/stage-gate-evaluator.md.enc +6 -0
  110. package/dist/plugins/agents/support/team-orchestrator.md.enc +6 -0
  111. package/dist/plugins/agents/support/test-coverage-reviewer.md.enc +6 -0
  112. package/dist/plugins/benchmarks/templates/README.en.md.enc +6 -0
  113. package/dist/plugins/benchmarks/templates/README.md.enc +6 -0
  114. package/dist/plugins/benchmarks/templates/commands/code-template.yaml.enc +6 -0
  115. package/dist/plugins/benchmarks/templates/commands/explore-template.yaml.enc +6 -0
  116. package/dist/plugins/benchmarks/templates/commands/field-evolve-template.yaml.enc +6 -0
  117. package/dist/plugins/benchmarks/templates/commands/plan-template.yaml.enc +6 -0
  118. package/dist/plugins/benchmarks/templates/commands/project-evolve-template.yaml.enc +6 -0
  119. package/dist/plugins/benchmarks/templates/commands/review-template.yaml.enc +6 -0
  120. package/dist/plugins/benchmarks/templates/commands/run-template.yaml.enc +6 -0
  121. package/dist/plugins/benchmarks/templates/skills/benchmark-executor-template.yaml.enc +6 -0
  122. package/dist/plugins/benchmarks/templates/skills/benchmark-generator-template.yaml.enc +6 -0
  123. package/dist/plugins/benchmarks/templates/skills/delivery-stage-template.yaml.enc +6 -0
  124. package/dist/plugins/benchmarks/templates/skills/design-stage-template.yaml.enc +6 -0
  125. package/dist/plugins/benchmarks/templates/skills/exploration-phase-template.yaml.enc +6 -0
  126. package/dist/plugins/benchmarks/templates/skills/field-evolve-analyzer-template.yaml.enc +6 -0
  127. package/dist/plugins/benchmarks/templates/skills/field-evolve-distiller-template.yaml.enc +6 -0
  128. package/dist/plugins/benchmarks/templates/skills/field-evolve-executor-template.yaml.enc +6 -0
  129. package/dist/plugins/benchmarks/templates/skills/field-evolve-fixer-template.yaml.enc +6 -0
  130. package/dist/plugins/benchmarks/templates/skills/field-evolve-learner-template.yaml.enc +6 -0
  131. package/dist/plugins/benchmarks/templates/skills/field-evolve-scanner-template.yaml.enc +6 -0
  132. package/dist/plugins/benchmarks/templates/skills/field-evolve-template.yaml.enc +6 -0
  133. package/dist/plugins/benchmarks/templates/skills/field-evolve-verifier-template.yaml.enc +6 -0
  134. package/dist/plugins/benchmarks/templates/skills/implementation-stage-template.yaml.enc +6 -0
  135. package/dist/plugins/benchmarks/templates/skills/layer1-validation-template.yaml.enc +6 -0
  136. package/dist/plugins/benchmarks/templates/skills/project-evolve-analyzer-template.yaml.enc +6 -0
  137. package/dist/plugins/benchmarks/templates/skills/project-evolve-fixer-template.yaml.enc +6 -0
  138. package/dist/plugins/benchmarks/templates/skills/project-evolve-generator-template.yaml.enc +6 -0
  139. package/dist/plugins/benchmarks/templates/skills/project-evolve-learner-template.yaml.enc +6 -0
  140. package/dist/plugins/benchmarks/templates/skills/project-evolve-reviewer-template.yaml.enc +6 -0
  141. package/dist/plugins/benchmarks/templates/skills/project-evolve-scanner-template.yaml.enc +6 -0
  142. package/dist/plugins/benchmarks/templates/skills/project-evolve-template.yaml.enc +6 -0
  143. package/dist/plugins/benchmarks/templates/skills/project-evolve-verifier-template.yaml.enc +6 -0
  144. package/dist/plugins/benchmarks/templates/skills/requirement-analyzer-template.yaml.enc +6 -0
  145. package/dist/plugins/benchmarks/templates/skills/skill-forge-template.yaml.enc +6 -0
  146. package/dist/plugins/benchmarks/templates/skills/startup-guard-template.yaml.enc +6 -0
  147. package/dist/plugins/benchmarks/templates/skills/testing-stage-template.yaml.enc +6 -0
  148. package/dist/plugins/commands/README.en.md.enc +6 -0
  149. package/dist/plugins/commands/README.md.enc +6 -0
  150. package/dist/plugins/commands/automation.md.enc +6 -0
  151. package/dist/plugins/commands/code.md.enc +6 -0
  152. package/dist/plugins/commands/contribute.md.enc +6 -0
  153. package/dist/plugins/commands/dashboard.md.enc +6 -0
  154. package/dist/plugins/commands/env.md.enc +6 -0
  155. package/dist/plugins/commands/explore.md.enc +6 -0
  156. package/dist/plugins/commands/field-evolve.md.enc +6 -0
  157. package/dist/plugins/commands/global.md.enc +6 -0
  158. package/dist/plugins/commands/init.md.enc +6 -0
  159. package/dist/plugins/commands/list.md.enc +6 -0
  160. package/dist/plugins/commands/memory.md.enc +6 -0
  161. package/dist/plugins/commands/monitor.md.enc +6 -0
  162. package/dist/plugins/commands/org.md.enc +6 -0
  163. package/dist/plugins/commands/persist.md.enc +6 -0
  164. package/dist/plugins/commands/plan.md.enc +6 -0
  165. package/dist/plugins/commands/plugin.md.enc +6 -0
  166. package/dist/plugins/commands/project-evolve.md.enc +6 -0
  167. package/dist/plugins/commands/review.md.enc +6 -0
  168. package/dist/plugins/commands/run.md.enc +6 -0
  169. package/dist/plugins/commands/status.md.enc +6 -0
  170. package/dist/plugins/commands/sync.md.enc +6 -0
  171. package/dist/plugins/commands/update.md.enc +6 -0
  172. package/dist/plugins/env-capabilities/env-core/plugin.json +33 -0
  173. package/dist/plugins/hooks/README.en.md.enc +6 -0
  174. package/dist/plugins/hooks/README.md.enc +6 -0
  175. package/dist/plugins/hooks/artifact-evaluation-hook.js +2 -0
  176. package/dist/plugins/hooks/cognitive-dreamer.js +2 -0
  177. package/dist/plugins/hooks/cognitive-sync.js +2 -0
  178. package/dist/plugins/hooks/cognitive-tracker.js +2 -0
  179. package/dist/plugins/hooks/config/detection-patterns.yaml.enc +6 -0
  180. package/dist/plugins/hooks/constitution-guard.js +2 -0
  181. package/dist/plugins/hooks/do-review-separation-guard.js +2 -0
  182. package/dist/plugins/hooks/environment-autocommit.js +2 -0
  183. package/dist/plugins/hooks/environment-doctor.js +1 -0
  184. package/dist/plugins/hooks/environment-startup-scan.js +2 -0
  185. package/dist/plugins/hooks/execution-tracker.js +2 -0
  186. package/dist/plugins/hooks/frozen-zone-guard.js +2 -0
  187. package/dist/plugins/hooks/layer1-validator.js +2 -0
  188. package/dist/plugins/hooks/lib/artifact-evaluator.js +1 -0
  189. package/dist/plugins/hooks/lib/auto-fix-loop.js +1 -0
  190. package/dist/plugins/hooks/lib/benchmarks/change-detector.js +1 -0
  191. package/dist/plugins/hooks/lib/benchmarks/evaluator.js +1 -0
  192. package/dist/plugins/hooks/lib/benchmarks/integration-example.js +1 -0
  193. package/dist/plugins/hooks/lib/cognitive/adaptive-matcher.js +1 -0
  194. package/dist/plugins/hooks/lib/cognitive/base-store.js +1 -0
  195. package/dist/plugins/hooks/lib/cognitive/causal-engine.js +1 -0
  196. package/dist/plugins/hooks/lib/cognitive/cognitive-config.js +1 -0
  197. package/dist/plugins/hooks/lib/cognitive/cognitive-fingerprint.js +1 -0
  198. package/dist/plugins/hooks/lib/cognitive/collective-sync.js +1 -0
  199. package/dist/plugins/hooks/lib/cognitive/confidence-engine.js +1 -0
  200. package/dist/plugins/hooks/lib/cognitive/dream-engine.js +1 -0
  201. package/dist/plugins/hooks/lib/cognitive/episodic-store.js +1 -0
  202. package/dist/plugins/hooks/lib/cognitive/index.js +1 -0
  203. package/dist/plugins/hooks/lib/cognitive/kernel.js +1 -0
  204. package/dist/plugins/hooks/lib/cognitive/knowledge-distiller.js +1 -0
  205. package/dist/plugins/hooks/lib/cognitive/memory-transport.js +1 -0
  206. package/dist/plugins/hooks/lib/cognitive/persistence-manager.js +1 -0
  207. package/dist/plugins/hooks/lib/cognitive/priority-store.js +1 -0
  208. package/dist/plugins/hooks/lib/cognitive/procedural-store.js +1 -0
  209. package/dist/plugins/hooks/lib/cognitive/semantic-store.js +1 -0
  210. package/dist/plugins/hooks/lib/cognitive/skill-tuner.js +1 -0
  211. package/dist/plugins/hooks/lib/cognitive/wiki-materializer.js +1 -0
  212. package/dist/plugins/hooks/lib/detection-pattern-loader.js +1 -0
  213. package/dist/plugins/hooks/lib/directory-discovery.js +1 -0
  214. package/dist/plugins/hooks/lib/environment-capability-package.js +1 -0
  215. package/dist/plugins/hooks/lib/environment-capability-probe.js +1 -0
  216. package/dist/plugins/hooks/lib/environment-config-loader.js +1 -0
  217. package/dist/plugins/hooks/lib/environment-executor.js +1 -0
  218. package/dist/plugins/hooks/lib/environment-feedback.js +1 -0
  219. package/dist/plugins/hooks/lib/environment-health-monitor.js +1 -0
  220. package/dist/plugins/hooks/lib/environment-knowledge-synthesizer.js +1 -0
  221. package/dist/plugins/hooks/lib/environment-knowledge-validator.js +1 -0
  222. package/dist/plugins/hooks/lib/environment-learning-discoverer.js +1 -0
  223. package/dist/plugins/hooks/lib/environment-learning-engine.js +1 -0
  224. package/dist/plugins/hooks/lib/environment-module-repository.js +1 -0
  225. package/dist/plugins/hooks/lib/environment-planner.js +1 -0
  226. package/dist/plugins/hooks/lib/environment-plugin-registry.js +1 -0
  227. package/dist/plugins/hooks/lib/environment-readiness.js +1 -0
  228. package/dist/plugins/hooks/lib/environment-route-ranking.js +1 -0
  229. package/dist/plugins/hooks/lib/environment-strategy-overlay.js +1 -0
  230. package/dist/plugins/hooks/lib/execution-path.js +1 -0
  231. package/dist/plugins/hooks/lib/external-mount-adapter.js +1 -0
  232. package/dist/plugins/hooks/lib/external-scanner.js +1 -0
  233. package/dist/plugins/hooks/lib/hook-error-recorder.js +1 -0
  234. package/dist/plugins/hooks/lib/hook-logger.js +1 -0
  235. package/dist/plugins/hooks/lib/hook-runner.js +2 -0
  236. package/dist/plugins/hooks/lib/hook-state-manager.js +1 -0
  237. package/dist/plugins/hooks/lib/memory-extractor.js +1 -0
  238. package/dist/plugins/hooks/lib/memory-manager.js +1 -0
  239. package/dist/plugins/hooks/lib/metrics-analyzer.js +1 -0
  240. package/dist/plugins/hooks/lib/mount-manager.js +1 -0
  241. package/dist/plugins/hooks/lib/plugin-activation-registry.js +1 -0
  242. package/dist/plugins/hooks/lib/plugin-selector.js +1 -0
  243. package/dist/plugins/hooks/lib/plugin-source-registry.js +1 -0
  244. package/dist/plugins/hooks/lib/plugin-workspace-registry.js +1 -0
  245. package/dist/plugins/hooks/lib/project-evolution/auto-fixer.js +1 -0
  246. package/dist/plugins/hooks/lib/project-evolution/memory-manager.js +1 -0
  247. package/dist/plugins/hooks/lib/project-evolution/pattern-detector.js +1 -0
  248. package/dist/plugins/hooks/lib/project-evolution/semantic-indexer.js +1 -0
  249. package/dist/plugins/hooks/lib/rollback-tracker.js +1 -0
  250. package/dist/plugins/hooks/lib/source-code-scanner.js +1 -0
  251. package/dist/plugins/hooks/lib/technology-stack-detector.js +1 -0
  252. package/dist/plugins/hooks/lib/test-failure-analyzer.js +1 -0
  253. package/dist/plugins/hooks/lib/test-failure-fixer.js +1 -0
  254. package/dist/plugins/hooks/lib/trace-context.js +1 -0
  255. package/dist/plugins/hooks/lib/validation-patterns.js +1 -0
  256. package/dist/plugins/hooks/memory-sync.js +1 -0
  257. package/dist/plugins/hooks/pipeline-observer.js +2 -0
  258. package/dist/plugins/hooks/retry-limit-guard.js +2 -0
  259. package/dist/plugins/hooks/scope-sentinel.js +2 -0
  260. package/dist/plugins/hooks/secret-scanner.js +2 -0
  261. package/dist/plugins/hooks/stop-evolve-prompt.js +1 -0
  262. package/dist/plugins/hooks/trace-initialization.js +2 -0
  263. package/dist/plugins/hooks/version-checker.js +2 -0
  264. package/dist/plugins/memory/templates/code-quality.yaml.enc +6 -0
  265. package/dist/plugins/memory/templates/multi-system.yaml.enc +6 -0
  266. package/dist/plugins/memory/templates/team-habits.yaml.enc +6 -0
  267. package/dist/plugins/memory/templates/testing.yaml.enc +6 -0
  268. package/dist/plugins/skills/README.en.md.enc +6 -0
  269. package/dist/plugins/skills/README.md.enc +6 -0
  270. package/dist/plugins/skills/ab-test-executor/SKILL.md.enc +6 -0
  271. package/dist/plugins/skills/benchmark-executor/SKILL.md.enc +6 -0
  272. package/dist/plugins/skills/benchmark-generator/SKILL.md.enc +6 -0
  273. package/dist/plugins/skills/content-prompts/SKILL.md.enc +6 -0
  274. package/dist/plugins/skills/delivery-stage/SKILL.md.enc +6 -0
  275. package/dist/plugins/skills/design-stage/SKILL.md.enc +6 -0
  276. package/dist/plugins/skills/environment-learning/SKILL.md.enc +6 -0
  277. package/dist/plugins/skills/environment-resilience/build-failure-doctor.md.enc +6 -0
  278. package/dist/plugins/skills/environment-resilience/environment-repair.md.enc +6 -0
  279. package/dist/plugins/skills/environment-resilience/pre-flight-check.md.enc +6 -0
  280. package/dist/plugins/skills/experiment-evaluator/SKILL.md.enc +6 -0
  281. package/dist/plugins/skills/exploration-phase/SKILL.md.enc +6 -0
  282. package/dist/plugins/skills/field-evolve-analyzer/SKILL.md.enc +6 -0
  283. package/dist/plugins/skills/field-evolve-distiller/SKILL.md.enc +6 -0
  284. package/dist/plugins/skills/field-evolve-executor/SKILL.md.enc +6 -0
  285. package/dist/plugins/skills/field-evolve-executor/executor.js +2 -0
  286. package/dist/plugins/skills/field-evolve-fixer/SKILL.md.enc +6 -0
  287. package/dist/plugins/skills/field-evolve-learner/SKILL.md.enc +6 -0
  288. package/dist/plugins/skills/field-evolve-scanner/SKILL.md.enc +6 -0
  289. package/dist/plugins/skills/field-evolve-scanner/scripts/fallback-scanner.js +2 -0
  290. package/dist/plugins/skills/field-evolve-verifier/SKILL.md.enc +6 -0
  291. package/dist/plugins/skills/heartbeat-monitor/SKILL.md.enc +6 -0
  292. package/dist/plugins/skills/implementation-stage/SKILL.md.enc +6 -0
  293. package/dist/plugins/skills/layer1-validation/SKILL.md.enc +6 -0
  294. package/dist/plugins/skills/multi-role-orchestration/SKILL.md.enc +6 -0
  295. package/dist/plugins/skills/ops-content-marketing/SKILL.md.enc +6 -0
  296. package/dist/plugins/skills/ops-conversion/SKILL.md.enc +6 -0
  297. package/dist/plugins/skills/ops-data-driven/SKILL.md.enc +6 -0
  298. package/dist/plugins/skills/ops-growth-strategies/SKILL.md.enc +6 -0
  299. package/dist/plugins/skills/ops-private-domain/SKILL.md.enc +6 -0
  300. package/dist/plugins/skills/ops-social-commerce/SKILL.md.enc +6 -0
  301. package/dist/plugins/skills/ops-user-growth/SKILL.md.enc +6 -0
  302. package/dist/plugins/skills/pending-dashboard/SKILL.md.enc +6 -0
  303. package/dist/plugins/skills/project-evolve-analyzer/SKILL.md.enc +6 -0
  304. package/dist/plugins/skills/project-evolve-fixer/SKILL.md.enc +6 -0
  305. package/dist/plugins/skills/project-evolve-generator/SKILL.md.enc +6 -0
  306. package/dist/plugins/skills/project-evolve-learner/SKILL.md.enc +6 -0
  307. package/dist/plugins/skills/project-evolve-reviewer/SKILL.md.enc +6 -0
  308. package/dist/plugins/skills/project-evolve-scanner/SKILL.md.enc +6 -0
  309. package/dist/plugins/skills/project-evolve-scanner/scripts/dependency-reuse-checker.js +2 -0
  310. package/dist/plugins/skills/project-evolve-scanner/scripts/subsystem-coverage.js +2 -0
  311. package/dist/plugins/skills/project-evolve-verifier/SKILL.md.enc +6 -0
  312. package/dist/plugins/skills/requirement-stage/SKILL.md.enc +6 -0
  313. package/dist/plugins/skills/secret-scanner/SKILL.md.enc +6 -0
  314. package/dist/plugins/skills/skill-forge/SKILL.md.enc +6 -0
  315. package/dist/plugins/skills/skill-forge/references/description-guide.md.enc +6 -0
  316. package/dist/plugins/skills/skill-forge/references/quality-rubric.md.enc +6 -0
  317. package/dist/plugins/skills/skill-forge/references/skill-template.md.enc +6 -0
  318. package/dist/plugins/skills/startup-guard/SKILL.md.enc +6 -0
  319. package/dist/plugins/skills/tdd-workflow/SKILL.md.enc +6 -0
  320. package/dist/plugins/skills/testing-stage/SKILL.md.enc +6 -0
  321. package/dist/plugins/skills/tracking-validator/SKILL.md.enc +6 -0
  322. package/dist/scripts/build-crypto.js +2 -0
  323. package/dist/scripts/cli/contribute.js +1 -0
  324. package/dist/scripts/cli/dashboard.js +1 -0
  325. package/dist/scripts/cli/env.js +1 -0
  326. package/dist/scripts/cli/global-init.js +1 -0
  327. package/dist/scripts/cli/global.js +1 -0
  328. package/dist/scripts/cli/index.js +1 -0
  329. package/dist/scripts/cli/init.js +1 -0
  330. package/dist/scripts/cli/list.js +1 -0
  331. package/dist/scripts/cli/memory.js +1 -0
  332. package/dist/scripts/cli/org.js +1 -0
  333. package/dist/scripts/cli/plugin.js +1 -0
  334. package/dist/scripts/cli/practice-report.js +1 -0
  335. package/dist/scripts/cli/runtime-governance.js +1 -0
  336. package/dist/scripts/cli/system.js +1 -0
  337. package/dist/scripts/cli/update.js +1 -0
  338. package/dist/scripts/commands/catalog.js +1 -0
  339. package/dist/scripts/commands/slash-command-docs.js +1 -0
  340. package/dist/scripts/config/external-mounts.config.js +2 -0
  341. package/dist/scripts/heartbeat/check.js +2 -0
  342. package/dist/scripts/heartbeat/setup-cron.js +2 -0
  343. package/dist/scripts/install/adapters.js +1 -0
  344. package/dist/scripts/install/constants.js +1 -0
  345. package/dist/scripts/install/file-reader.js +1 -0
  346. package/dist/scripts/install/index.js +1 -0
  347. package/dist/scripts/install/shards/constants-shard.js +1 -0
  348. package/dist/scripts/install/shards/crypto-config-shard.js +1 -0
  349. package/dist/scripts/install/shards/error-messages-shard.js +1 -0
  350. package/dist/scripts/install/shards/reassemble.js +1 -0
  351. package/dist/scripts/install/shards/utils-shard.js +1 -0
  352. package/dist/scripts/install/shards/version-info-shard.js +1 -0
  353. package/dist/scripts/postinstall.js +1 -0
  354. package/dist/scripts/state.js +1 -0
  355. package/package.json +21 -12
  356. package/README.en.md +0 -472
  357. package/bin/autospec.js +0 -3
  358. package/knowledge/README.md +0 -144
  359. package/knowledge/checklists/code.md +0 -182
  360. package/knowledge/checklists/design.md +0 -196
  361. package/knowledge/checklists/release.md +0 -70
  362. package/knowledge/checklists/requirement.md +0 -169
  363. package/knowledge/checklists/test.md +0 -46
  364. package/knowledge/config/README.en.md +0 -44
  365. package/knowledge/config/README.md +0 -44
  366. package/knowledge/config/role-composition.yaml +0 -98
  367. package/knowledge/config/role-extensions.yaml +0 -140
  368. package/knowledge/config/skill-compositions.yaml +0 -142
  369. package/knowledge/config/team-stage.yaml +0 -95
  370. package/knowledge/config/team-tasks.yaml +0 -139
  371. package/knowledge/config/team-triggers.yaml +0 -198
  372. package/knowledge/config/validation-patterns.yaml +0 -137
  373. package/knowledge/domain/README.md +0 -115
  374. package/knowledge/domain/flows/README.md +0 -194
  375. package/knowledge/domain/glossary.md +0 -143
  376. package/knowledge/domain/rules.md +0 -138
  377. package/knowledge/environment/README.en.md +0 -36
  378. package/knowledge/environment/README.md +0 -87
  379. package/knowledge/environment/component-knowledge.md +0 -316
  380. package/knowledge/environment/detection-patterns.yaml +0 -502
  381. package/knowledge/environment/middleware-knowledge.md +0 -237
  382. package/knowledge/environment/template-registry.md +0 -321
  383. package/knowledge/guides/domain-driven-design.md +0 -345
  384. package/knowledge/guides/knowledge-management.md +0 -369
  385. package/knowledge/guides/requirement-engineering.md +0 -329
  386. package/knowledge/guides/stages/ai-effect-evaluator.md +0 -93
  387. package/knowledge/guides/stages/code-implementer.md +0 -205
  388. package/knowledge/guides/stages/code-reviewer.md +0 -111
  389. package/knowledge/guides/stages/consistency-checker.md +0 -177
  390. package/knowledge/guides/stages/design-planner.md +0 -401
  391. package/knowledge/guides/stages/design-reviewer.md +0 -83
  392. package/knowledge/guides/stages/integration-test-runner.md +0 -105
  393. package/knowledge/guides/stages/release-checker.md +0 -205
  394. package/knowledge/guides/stages/requirement-analyzer.md +0 -195
  395. package/knowledge/guides/stages/requirement-reviewer.md +0 -83
  396. package/knowledge/guides/stages/security-reviewer.md +0 -89
  397. package/knowledge/guides/stages/test-context-analyzer.md +0 -250
  398. package/knowledge/guides/stages/test-generator.md +0 -241
  399. package/knowledge/guides/stages/test-planner.md +0 -183
  400. package/knowledge/guides/stages/test-reviewer.md +0 -76
  401. package/knowledge/guides/stages/unit-test-runner.md +0 -83
  402. package/knowledge/guides/support/ai-agent-analyzer.md +0 -362
  403. package/knowledge/guides/support/ai-anomaly-analyzer.md +0 -213
  404. package/knowledge/guides/support/ai-artifact-evaluator.md +0 -192
  405. package/knowledge/guides/support/ai-capability-analyzer.md +0 -193
  406. package/knowledge/guides/support/ai-component-analyzer.md +0 -169
  407. package/knowledge/guides/support/ai-data-validator.md +0 -276
  408. package/knowledge/guides/support/ai-evaluation-planner.md +0 -374
  409. package/knowledge/guides/support/ai-path-evaluator.md +0 -274
  410. package/knowledge/guides/support/ai-pipeline-evaluator.md +0 -219
  411. package/knowledge/guides/support/ai-rag-analyzer.md +0 -339
  412. package/knowledge/guides/support/ai-task-assessor.md +0 -418
  413. package/knowledge/guides/support/ai-test-diagnostics.md +0 -133
  414. package/knowledge/guides/support/complexity-assessor.md +0 -268
  415. package/knowledge/guides/support/component-discovery.md +0 -183
  416. package/knowledge/guides/support/environment-scanner.md +0 -207
  417. package/knowledge/guides/support/environment-validator.md +0 -207
  418. package/knowledge/guides/support/knowledge-generator.md +0 -234
  419. package/knowledge/guides/support/methodology-extractor.md +0 -55
  420. package/knowledge/guides/support/pipeline-protocol.md +0 -438
  421. package/knowledge/guides/support/practice-logger.md +0 -359
  422. package/knowledge/guides/support/scope-inference.md +0 -174
  423. package/knowledge/guides/support/skill-distiller.md +0 -91
  424. package/knowledge/guides/support/skill-updater.md +0 -45
  425. package/knowledge/guides/support/skill-validator.md +0 -72
  426. package/knowledge/guides/support/team-orchestrator.md +0 -323
  427. package/knowledge/guides/support/tech-stack-analyzer.md +0 -139
  428. package/knowledge/guides/support/test-runner.md +0 -254
  429. package/knowledge/guides/system-design.md +0 -352
  430. package/knowledge/organization/ai-native-team.md +0 -318
  431. package/knowledge/organization/team-metrics.md +0 -228
  432. package/knowledge/principles/constitution.md +0 -134
  433. package/knowledge/principles/core-principles.md +0 -368
  434. package/knowledge/principles/design-philosophy.md +0 -877
  435. package/knowledge/principles/evolution.md +0 -553
  436. package/knowledge/process/01-requirement.md +0 -113
  437. package/knowledge/process/02-design.md +0 -123
  438. package/knowledge/process/03-implementation.md +0 -90
  439. package/knowledge/process/04-review.md +0 -80
  440. package/knowledge/process/05-testing.md +0 -90
  441. package/knowledge/process/06-delivery.md +0 -88
  442. package/knowledge/process/README.en.md +0 -38
  443. package/knowledge/process/README.md +0 -48
  444. package/knowledge/process/ai-sdlc.md +0 -475
  445. package/knowledge/process/overview.md +0 -319
  446. package/knowledge/standards/code-review.md +0 -876
  447. package/knowledge/standards/coding-style.md +0 -940
  448. package/knowledge/standards/data-consistency.md +0 -1085
  449. package/knowledge/standards/document-versioning.md +0 -210
  450. package/knowledge/standards/risk-detection.md +0 -186
  451. package/knowledge/templates/ai-evaluation.md +0 -150
  452. package/knowledge/templates/api-design.md +0 -117
  453. package/knowledge/templates/database-design.md +0 -132
  454. package/knowledge/templates/domain-driven-design.md +0 -321
  455. package/knowledge/templates/product-proposal.md +0 -201
  456. package/knowledge/templates/system-design.md +0 -227
  457. package/knowledge/templates/task-breakdown.md +0 -107
  458. package/knowledge/templates/test-case.md +0 -170
  459. package/plugins/.claude-plugin/plugin.json +0 -134
  460. package/plugins/agents/roles/ai-engineer.md +0 -129
  461. package/plugins/agents/roles/backend-engineer.md +0 -165
  462. package/plugins/agents/roles/ceo.md +0 -94
  463. package/plugins/agents/roles/data-engineer.md +0 -135
  464. package/plugins/agents/roles/devops-engineer.md +0 -181
  465. package/plugins/agents/roles/frontend-engineer.md +0 -129
  466. package/plugins/agents/roles/product-owner.md +0 -98
  467. package/plugins/agents/roles/quality-engineer.md +0 -129
  468. package/plugins/agents/roles/security-engineer.md +0 -180
  469. package/plugins/agents/roles/tech-lead.md +0 -97
  470. package/plugins/agents/support/blind-comparator.md +0 -88
  471. package/plugins/agents/support/consistency-checker.md +0 -103
  472. package/plugins/agents/support/failure-diagnostician.md +0 -141
  473. package/plugins/agents/support/independent-reviewer.md +0 -80
  474. package/plugins/agents/support/safety-auditor.md +0 -121
  475. package/plugins/agents/support/skill-benchmarker.md +0 -86
  476. package/plugins/agents/support/skill-forger.md +0 -105
  477. package/plugins/agents/support/stage-gate-evaluator.md +0 -121
  478. package/plugins/agents/support/test-coverage-reviewer.md +0 -73
  479. package/plugins/benchmarks/templates/README.md +0 -44
  480. package/plugins/benchmarks/templates/commands/explore-template.yaml +0 -48
  481. package/plugins/benchmarks/templates/pipeline/agile-template.yaml +0 -84
  482. package/plugins/benchmarks/templates/pipeline/waterfall-template.yaml +0 -106
  483. package/plugins/benchmarks/templates/skills/requirement-analyzer-template.yaml +0 -48
  484. package/plugins/commands/README.en.md +0 -96
  485. package/plugins/commands/README.md +0 -96
  486. package/plugins/commands/apply.md +0 -191
  487. package/plugins/commands/archive.md +0 -76
  488. package/plugins/commands/env-export.md +0 -79
  489. package/plugins/commands/env-sync.md +0 -640
  490. package/plugins/commands/env-template.md +0 -223
  491. package/plugins/commands/env-update.md +0 -264
  492. package/plugins/commands/env-validate.md +0 -176
  493. package/plugins/commands/env.md +0 -79
  494. package/plugins/commands/explore.md +0 -76
  495. package/plugins/commands/field-evolve.md +0 -536
  496. package/plugins/commands/memory.md +0 -249
  497. package/plugins/commands/project-evolve.md +0 -821
  498. package/plugins/commands/propose.md +0 -93
  499. package/plugins/commands/review.md +0 -140
  500. package/plugins/commands/run.md +0 -224
  501. package/plugins/commands/status.md +0 -62
  502. package/plugins/commands/validate.md +0 -108
  503. package/plugins/hooks/README.en.md +0 -56
  504. package/plugins/hooks/README.md +0 -56
  505. package/plugins/hooks/ai-project-guard.js +0 -329
  506. package/plugins/hooks/artifact-evaluation-hook.js +0 -237
  507. package/plugins/hooks/constitution-guard.js +0 -211
  508. package/plugins/hooks/environment-autocommit.js +0 -264
  509. package/plugins/hooks/environment-manager.js +0 -778
  510. package/plugins/hooks/execution-tracker.js +0 -354
  511. package/plugins/hooks/frozen-zone-guard.js +0 -140
  512. package/plugins/hooks/layer1-validator.js +0 -423
  513. package/plugins/hooks/lib/artifact-evaluator.js +0 -414
  514. package/plugins/hooks/lib/benchmarks/change-detector.js +0 -390
  515. package/plugins/hooks/lib/benchmarks/evaluator.js +0 -605
  516. package/plugins/hooks/lib/benchmarks/integration-example.js +0 -169
  517. package/plugins/hooks/lib/data-and-ai-detector.js +0 -275
  518. package/plugins/hooks/lib/detection-pattern-loader.js +0 -865
  519. package/plugins/hooks/lib/directory-discovery.js +0 -395
  520. package/plugins/hooks/lib/environment-config-loader.js +0 -341
  521. package/plugins/hooks/lib/environment-detector.js +0 -553
  522. package/plugins/hooks/lib/environment-evolver.js +0 -564
  523. package/plugins/hooks/lib/environment-registry.js +0 -813
  524. package/plugins/hooks/lib/execution-path.js +0 -427
  525. package/plugins/hooks/lib/hook-error-recorder.js +0 -245
  526. package/plugins/hooks/lib/hook-logger.js +0 -538
  527. package/plugins/hooks/lib/hook-runner.js +0 -97
  528. package/plugins/hooks/lib/hook-state-manager.js +0 -480
  529. package/plugins/hooks/lib/memory-extractor.js +0 -377
  530. package/plugins/hooks/lib/memory-manager.js +0 -673
  531. package/plugins/hooks/lib/metrics-analyzer.js +0 -489
  532. package/plugins/hooks/lib/project-evolution/auto-fixer.js +0 -511
  533. package/plugins/hooks/lib/project-evolution/memory-manager.js +0 -346
  534. package/plugins/hooks/lib/project-evolution/pattern-detector.js +0 -476
  535. package/plugins/hooks/lib/project-evolution/semantic-indexer.js +0 -480
  536. package/plugins/hooks/lib/project-structure-detector.js +0 -326
  537. package/plugins/hooks/lib/rollback-tracker.js +0 -346
  538. package/plugins/hooks/lib/source-code-scanner.js +0 -596
  539. package/plugins/hooks/lib/technology-stack-detector.js +0 -374
  540. package/plugins/hooks/lib/test-failure-analyzer.js +0 -375
  541. package/plugins/hooks/lib/test-failure-fixer.js +0 -268
  542. package/plugins/hooks/lib/trace-context.js +0 -277
  543. package/plugins/hooks/lib/validation-patterns.js +0 -415
  544. package/plugins/hooks/memory-sync.js +0 -171
  545. package/plugins/hooks/pipeline-observer.js +0 -413
  546. package/plugins/hooks/scope-sentinel.js +0 -204
  547. package/plugins/hooks/trace-initialization.js +0 -169
  548. package/plugins/memory/templates/code-quality.yaml +0 -149
  549. package/plugins/memory/templates/multi-system.yaml +0 -155
  550. package/plugins/memory/templates/team-habits.yaml +0 -119
  551. package/plugins/memory/templates/testing.yaml +0 -121
  552. package/plugins/skills/README.en.md +0 -47
  553. package/plugins/skills/README.md +0 -104
  554. package/plugins/skills/benchmark-executor/README.md +0 -93
  555. package/plugins/skills/benchmark-executor/SKILL.md +0 -647
  556. package/plugins/skills/benchmark-generator/SKILL.md +0 -349
  557. package/plugins/skills/delivery-stage/SKILL.md +0 -203
  558. package/plugins/skills/design-stage/SKILL.md +0 -216
  559. package/plugins/skills/evolution-process/SKILL.md +0 -291
  560. package/plugins/skills/exploration-phase/SKILL.md +0 -133
  561. package/plugins/skills/implementation-stage/SKILL.md +0 -179
  562. package/plugins/skills/layer1-validation/SKILL.md +0 -79
  563. package/plugins/skills/pending-dashboard/SKILL.md +0 -109
  564. package/plugins/skills/project-evolution/SKILL.md +0 -847
  565. package/plugins/skills/requirement-stage/SKILL.md +0 -183
  566. package/plugins/skills/skill-forge/SKILL.md +0 -223
  567. package/plugins/skills/skill-forge/references/description-guide.md +0 -92
  568. package/plugins/skills/skill-forge/references/quality-rubric.md +0 -104
  569. package/plugins/skills/skill-forge/references/skill-template.md +0 -106
  570. package/plugins/skills/startup-guard/SKILL.md +0 -38
  571. package/plugins/skills/testing-stage/SKILL.md +0 -195
  572. package/scripts/cli/global-init.js +0 -288
  573. package/scripts/cli/global.js +0 -324
  574. package/scripts/cli/index.js +0 -55
  575. package/scripts/cli/init.js +0 -382
  576. package/scripts/cli/list.js +0 -69
  577. package/scripts/cli/org.js +0 -340
  578. package/scripts/cli/update.js +0 -44
  579. package/scripts/config/commands.config.js +0 -145
  580. package/scripts/config/hooks.config.js +0 -197
  581. package/scripts/evolution/evolution-router.js +0 -273
  582. package/scripts/evolution/evolution-signal-collector.js +0 -307
  583. package/scripts/evolution/knowledge-loader.js +0 -346
  584. package/scripts/evolution/marketplace.js +0 -317
  585. package/scripts/evolution/version-manager.js +0 -371
  586. package/scripts/install/agents.js +0 -106
  587. package/scripts/install/commands.js +0 -133
  588. package/scripts/install/constants.js +0 -424
  589. package/scripts/install/hook-logger.js +0 -536
  590. package/scripts/install/hooks.js +0 -110
  591. package/scripts/install/index.js +0 -39
  592. package/scripts/install/skills.js +0 -95
  593. package/scripts/postinstall.js +0 -25
  594. package/scripts/state.js +0 -376
  595. /package/{plugins → dist/plugins}/hooks/lib/hook-runner.sh +0 -0
@@ -1,778 +0,0 @@
1
- #!/usr/bin/env node
2
-
3
- /**
4
- * AutoSpec Hook: Environment Manager
5
- *
6
- * 环境知识管理 Hook,合并了验证和进化功能:
7
- * - PreToolUse: 环境知识验证(原 environment-validator.js)
8
- * - Stop: 环境进化检查(原 environment-evolution.js)
9
- *
10
- * 职责:
11
- * 1. 验证环境知识 YAML 文件的结构和内容
12
- * 2. 检测敏感信息(密码、API Key 等)
13
- * 3. 会话结束时检查可沉淀的环境知识
14
- */
15
-
16
- import fs from 'fs';
17
- import path from 'path';
18
- import { PatternLoader } from './lib/detection-pattern-loader.js';
19
- import { createHookLogger, safeJsonParse, handleHookError, readStdin, findProjectRootAsync, fileExists } from './lib/hook-logger.js';
20
- import {
21
- discoverSourceDirsSimple,
22
- scanCodePatternsFast,
23
- scanEnvVarPatternsFast,
24
- scanDependenciesFast,
25
- } from './lib/source-code-scanner.js';
26
-
27
- const logger = createHookLogger('environment-manager');
28
-
29
- // 动态加载 js-yaml(延迟加载,避免 top-level await 导致模块加载失败)
30
- let yaml = null;
31
- let yamlLoadAttempted = false;
32
-
33
- /**
34
- * 确保 js-yaml 已加载(延迟加载)
35
- * 将 top-level await 改为函数内动态导入,避免模块初始化失败
36
- */
37
- async function ensureYaml() {
38
- if (yamlLoadAttempted) return yaml;
39
- yamlLoadAttempted = true;
40
- try {
41
- yaml = await import('js-yaml');
42
- } catch (e) {
43
- // js-yaml 不可用,使用降级方案 parseYamlSimple
44
- logger.debug('js-yaml not available, using fallback YAML parser');
45
- }
46
- return yaml;
47
- }
48
-
49
- /**
50
- * 简单的 YAML 解析器(降级方案)
51
- * 支持多层嵌套、数组、行内数组等基本结构
52
- */
53
- function parseYamlSimple(content) {
54
- const lines = content.split('\n');
55
- const result = {};
56
-
57
- // 使用栈来跟踪嵌套层级
58
- const stack = [{ obj: result, indent: -1, isArrayItem: false }];
59
-
60
- for (let i = 0; i < lines.length; i++) {
61
- const line = lines[i];
62
- // 跳过空行和注释
63
- const trimmed = line.trim();
64
- if (!trimmed || trimmed.startsWith('#')) continue;
65
-
66
- const indent = line.search(/\S/);
67
-
68
- // 弹出栈中缩进大于等于当前行的元素
69
- while (stack.length > 1 && stack[stack.length - 1].indent >= indent) {
70
- stack.pop();
71
- }
72
-
73
- const top = stack[stack.length - 1];
74
- let current = top.obj;
75
-
76
- // 处理数组项
77
- if (trimmed.startsWith('- ')) {
78
- const itemStr = trimmed.substring(2).trim();
79
-
80
- // 如果当前是对象但遇到数组项,需要转换为数组
81
- if (!Array.isArray(current)) {
82
- const parent = stack[stack.length - 2]?.obj;
83
- if (parent && typeof parent === 'object') {
84
- const keys = Object.keys(parent);
85
- const lastKey = keys[keys.length - 1];
86
- if (lastKey && typeof parent[lastKey] === 'object' && !Array.isArray(parent[lastKey])) {
87
- const existing = parent[lastKey];
88
- if (Object.keys(existing).length === 0) {
89
- parent[lastKey] = [];
90
- current = parent[lastKey];
91
- stack[stack.length - 1] = { obj: current, indent: top.indent, isArrayItem: true };
92
- }
93
- }
94
- }
95
- }
96
-
97
- if (Array.isArray(current)) {
98
- const colonIndex = itemStr.indexOf(':');
99
- if (colonIndex > 0) {
100
- const item = {};
101
- const key = itemStr.substring(0, colonIndex).trim();
102
- let value = itemStr.substring(colonIndex + 1).trim();
103
- item[key] = parseYamlValue(value);
104
- current.push(item);
105
- stack.push({ obj: item, indent, isArrayItem: true });
106
- } else {
107
- current.push(parseYamlValue(itemStr));
108
- }
109
- }
110
- continue;
111
- }
112
-
113
- // 解析键值对
114
- const colonIndex = trimmed.indexOf(':');
115
- if (colonIndex > 0) {
116
- const key = trimmed.substring(0, colonIndex).trim();
117
- let value = trimmed.substring(colonIndex + 1).trim();
118
-
119
- if (value.startsWith('[') && value.endsWith(']')) {
120
- current[key] = parseInlineArray(value);
121
- } else if (value) {
122
- current[key] = parseYamlValue(value);
123
- } else {
124
- current[key] = {};
125
- stack.push({ obj: current[key], indent, isArrayItem: false });
126
- }
127
- }
128
- }
129
-
130
- return result;
131
- }
132
-
133
- /**
134
- * 解析行内数组
135
- */
136
- function parseInlineArray(value) {
137
- const inner = value.slice(1, -1).trim();
138
- if (!inner) return [];
139
-
140
- const items = [];
141
- let current = '';
142
- let depth = 0;
143
-
144
- for (const char of inner) {
145
- if (char === '[') depth++;
146
- if (char === ']') depth--;
147
- if (char === ',' && depth === 0) {
148
- items.push(parseYamlValue(current.trim()));
149
- current = '';
150
- } else {
151
- current += char;
152
- }
153
- }
154
- if (current.trim()) {
155
- items.push(parseYamlValue(current.trim()));
156
- }
157
-
158
- return items;
159
- }
160
-
161
- /**
162
- * 解析 YAML 值
163
- */
164
- function parseYamlValue(value) {
165
- if (!value) return value;
166
-
167
- // 行内数组
168
- if (value.startsWith('[') && value.endsWith(']')) {
169
- return parseInlineArray(value);
170
- }
171
-
172
- // 移除引号
173
- if ((value.startsWith('"') && value.endsWith('"')) ||
174
- (value.startsWith("'") && value.endsWith("'"))) {
175
- return value.slice(1, -1);
176
- }
177
-
178
- // 布尔值
179
- if (value === 'true') return true;
180
- if (value === 'false') return false;
181
-
182
- // 数字
183
- if (/^-?\d+$/.test(value)) return parseInt(value, 10);
184
- if (/^-?\d+\.\d+$/.test(value)) return parseFloat(value);
185
-
186
- return value;
187
- }
188
-
189
- /**
190
- * 解析 YAML 内容(异步版本,推荐使用)
191
- */
192
- async function parseYamlAsync(content) {
193
- await ensureYaml();
194
- if (yaml) {
195
- return yaml.load(content);
196
- }
197
- return parseYamlSimple(content);
198
- }
199
-
200
- /**
201
- * 解析 YAML 内容(同步版本,用于非 async 上下文)
202
- */
203
- function parseYaml(content) {
204
- if (yaml) {
205
- return yaml.load(content);
206
- }
207
- return parseYamlSimple(content);
208
- }
209
-
210
- // ========== 验证函数(PreToolUse)==========
211
-
212
- /**
213
- * 验证环境知识结构
214
- */
215
- function validateKnowledgeStructure(knowledge) {
216
- const errors = [];
217
-
218
- if (!knowledge.apiVersion) {
219
- errors.push('缺少必需字段:apiVersion');
220
- }
221
-
222
- if (!knowledge.kind) {
223
- errors.push('缺少必需字段:kind');
224
- }
225
-
226
- if (!knowledge.metadata && !knowledge.meta) {
227
- errors.push('缺少必需字段:metadata 或 meta');
228
- }
229
-
230
- if (!knowledge.spec) {
231
- errors.push('缺少必需字段:spec');
232
- }
233
-
234
- return errors;
235
- }
236
-
237
- /**
238
- * 验证中间件知识
239
- */
240
- function validateMiddlewareKnowledge(knowledge) {
241
- const errors = [];
242
- const spec = knowledge.spec;
243
- const meta = knowledge.metadata || knowledge.meta;
244
-
245
- if (!spec.type) {
246
- errors.push('中间件知识缺少 type 字段');
247
- }
248
-
249
- if (!meta?.name) {
250
- errors.push('中间件知识缺少 metadata.name 字段');
251
- }
252
-
253
- if (spec.connection && !spec.connection.template) {
254
- errors.push('中间件知识缺少 connection.template 字段');
255
- }
256
-
257
- // 检查危险命令
258
- if (spec.validation?.healthCheck) {
259
- const dangerousPatterns = [/rm\s+-rf/, /sudo/, /mkfs/, /dd\s+if=/];
260
- for (const pattern of dangerousPatterns) {
261
- if (pattern.test(spec.validation.healthCheck)) {
262
- errors.push('healthCheck 包含潜在危险的命令');
263
- break;
264
- }
265
- }
266
- }
267
-
268
- return errors;
269
- }
270
-
271
- /**
272
- * 验证组件知识
273
- */
274
- function validateComponentKnowledge(knowledge) {
275
- const errors = [];
276
- const spec = knowledge.spec;
277
- const meta = knowledge.metadata || knowledge.meta;
278
-
279
- if (!spec.type) {
280
- errors.push('组件知识缺少 type 字段');
281
- }
282
-
283
- if (!meta?.name) {
284
- errors.push('组件知识缺少 metadata.name 字段');
285
- }
286
-
287
- if (!spec.description) {
288
- errors.push('组件知识缺少 description 字段');
289
- }
290
-
291
- if (spec.interfaces && Array.isArray(spec.interfaces)) {
292
- for (const iface of spec.interfaces) {
293
- if (!iface.name) {
294
- errors.push('接口定义缺少 name 字段');
295
- }
296
- }
297
- }
298
-
299
- return errors;
300
- }
301
-
302
- /**
303
- * 验证集成知识
304
- */
305
- function validateIntegrationKnowledge(knowledge) {
306
- const errors = [];
307
- const spec = knowledge.spec;
308
- const meta = knowledge.metadata || knowledge.meta;
309
-
310
- if (!spec.type) {
311
- errors.push('集成知识缺少 type 字段');
312
- }
313
-
314
- if (!meta?.name) {
315
- errors.push('集成知识缺少 metadata.name 字段');
316
- }
317
-
318
- return errors;
319
- }
320
-
321
- /**
322
- * 检查硬编码敏感信息
323
- */
324
- function checkSensitiveInfo(content) {
325
- const sensitivePatterns = [
326
- /password\s*[:=]\s*['"][^'"]+['"]/i,
327
- /secret\s*[:=]\s*['"][^'"]+['"]/i,
328
- /api[_-]?key\s*[:=]\s*['"][^'"]+['"]/i,
329
- ];
330
-
331
- for (const pattern of sensitivePatterns) {
332
- if (pattern.test(content)) {
333
- return true;
334
- }
335
- }
336
- return false;
337
- }
338
-
339
- /**
340
- * 处理 PreToolUse 事件:环境知识验证
341
- */
342
- async function handlePreToolUse(input) {
343
- // 确保 js-yaml 已加载(如果可用)
344
- await ensureYaml();
345
-
346
- const toolName = input.tool_name;
347
- const toolInput = input.tool_input || {};
348
-
349
- // 只检查 Write 和 Edit 操作
350
- if (!['Write', 'Edit'].includes(toolName)) {
351
- process.exit(0);
352
- }
353
-
354
- const filePath = toolInput.file_path || '';
355
-
356
- // 只检查 environment 目录下的文件
357
- if (!filePath.includes('/environment/') && !filePath.includes('\\environment\\')) {
358
- process.exit(0);
359
- }
360
-
361
- // 只检查 YAML 文件
362
- if (!filePath.endsWith('.yaml') && !filePath.endsWith('.yml')) {
363
- process.exit(0);
364
- }
365
-
366
- // 获取文件内容
367
- const content = toolInput.content || toolInput.new_string || '';
368
-
369
- if (!content) {
370
- process.exit(0);
371
- }
372
-
373
- // 检查硬编码敏感信息
374
- if (checkSensitiveInfo(content)) {
375
- const output = {
376
- hookSpecificOutput: {
377
- hookEventName: 'PreToolUse',
378
- permissionDecision: 'deny',
379
- permissionDecisionReason:
380
- 'ENVIRONMENT SECURITY: 检测到可能的硬编码敏感信息。请使用环境变量替代。',
381
- },
382
- };
383
- process.stdout.write(JSON.stringify(output));
384
- process.exit(0);
385
- }
386
-
387
- // 解析 YAML
388
- let knowledge;
389
- try {
390
- knowledge = parseYaml(content);
391
- } catch (e) {
392
- const output = {
393
- hookSpecificOutput: {
394
- hookEventName: 'PreToolUse',
395
- permissionDecision: 'deny',
396
- permissionDecisionReason: `ENVIRONMENT YAML ERROR: YAML 解析失败 - ${e.message}`,
397
- },
398
- };
399
- process.stdout.write(JSON.stringify(output));
400
- process.exit(0);
401
- }
402
-
403
- // 验证基本结构
404
- const structureErrors = validateKnowledgeStructure(knowledge);
405
- if (structureErrors.length > 0) {
406
- const output = {
407
- hookSpecificOutput: {
408
- hookEventName: 'PreToolUse',
409
- permissionDecision: 'deny',
410
- permissionDecisionReason: `ENVIRONMENT STRUCTURE ERROR: ${structureErrors.join('; ')}`,
411
- },
412
- };
413
- process.stdout.write(JSON.stringify(output));
414
- process.exit(0);
415
- }
416
-
417
- // 根据 kind 进行专项验证
418
- let errors = [];
419
- switch (knowledge.kind) {
420
- case 'MiddlewareKnowledge':
421
- errors = validateMiddlewareKnowledge(knowledge);
422
- break;
423
- case 'ComponentKnowledge':
424
- errors = validateComponentKnowledge(knowledge);
425
- break;
426
- case 'IntegrationKnowledge':
427
- errors = validateIntegrationKnowledge(knowledge);
428
- break;
429
- default:
430
- // 未知类型,允许通过
431
- break;
432
- }
433
-
434
- if (errors.length > 0) {
435
- const output = {
436
- hookSpecificOutput: {
437
- hookEventName: 'PreToolUse',
438
- permissionDecision: 'deny',
439
- permissionDecisionReason: `ENVIRONMENT VALIDATION ERROR: ${errors.join('; ')}`,
440
- },
441
- };
442
- process.stdout.write(JSON.stringify(output));
443
- process.exit(0);
444
- }
445
-
446
- // 验证通过
447
- process.exit(0);
448
- }
449
-
450
- // ========== 进化检查(Stop)==========
451
-
452
- /**
453
- * 使用 PatternLoader 检测中间件 - 使用公共模块
454
- */
455
- async function detectMiddlewareWithPatternLoader(projectRoot, patternLoader) {
456
- const middlewarePatterns = patternLoader.getMiddlewarePatterns();
457
- const detected = [];
458
- const sourceDirs = discoverSourceDirsSimple(projectRoot);
459
-
460
- if (sourceDirs.length === 0) {
461
- sourceDirs.push('src');
462
- }
463
-
464
- for (const dir of sourceDirs) {
465
- const dirPath = path.join(projectRoot, dir);
466
- if (!fs.existsSync(dirPath)) continue;
467
-
468
- for (const [name, pattern] of Object.entries(middlewarePatterns)) {
469
- if (detected.includes(name)) continue;
470
-
471
- // 检测代码模式
472
- if (pattern.codePatterns) {
473
- const found = scanCodePatternsFast(dirPath, pattern.codePatterns);
474
- if (found) {
475
- detected.push(name);
476
- continue;
477
- }
478
- }
479
-
480
- // 检测环境变量模式
481
- if (pattern.envVarPatterns) {
482
- const found = scanEnvVarPatternsFast(dirPath, pattern.envVarPatterns);
483
- if (found) {
484
- detected.push(name);
485
- }
486
- }
487
- }
488
- }
489
-
490
- // 从依赖文件检测
491
- const depDetected = scanDependenciesFast(projectRoot, middlewarePatterns);
492
- for (const name of depDetected) {
493
- if (!detected.includes(name)) {
494
- detected.push(name);
495
- }
496
- }
497
-
498
- return detected;
499
- }
500
-
501
- /**
502
- * 检查中间件是否已注册
503
- */
504
- function checkRegisteredMiddleware(projectRoot, middlewareNames) {
505
- const registryPath = path.join(projectRoot, '.autospec', 'environment', 'registry.json');
506
-
507
- if (!fs.existsSync(registryPath)) {
508
- return middlewareNames.map(name => ({ name, registered: false, active: false }));
509
- }
510
-
511
- try {
512
- const registry = JSON.parse(fs.readFileSync(registryPath, 'utf-8'));
513
- const registered = registry.environmentKnowledge?.middleware?.map(m => m.name) || [];
514
- const active = registry.activeProfiles?.middleware || [];
515
-
516
- return middlewareNames.map(name => ({
517
- name,
518
- registered: registered.includes(name),
519
- active: active.includes(name),
520
- }));
521
- } catch (e) {
522
- return middlewareNames.map(name => ({ name, registered: false, active: false }));
523
- }
524
- }
525
-
526
- /**
527
- * 检测组件 - 扫描 package.json 中的组织内部组件
528
- */
529
- function detectComponents(projectRoot) {
530
- const detected = [];
531
- const packageJsonPath = path.join(projectRoot, 'package.json');
532
-
533
- if (!fs.existsSync(packageJsonPath)) {
534
- return detected;
535
- }
536
-
537
- try {
538
- const pkg = JSON.parse(fs.readFileSync(packageJsonPath, 'utf-8'));
539
- const allDeps = {
540
- ...pkg.dependencies,
541
- ...pkg.devDependencies
542
- };
543
-
544
- // 检测以 @org/ 或组织特定前缀开头的包
545
- const orgPrefix = '@'; // 可配置
546
- for (const dep of Object.keys(allDeps)) {
547
- if (dep.startsWith('@') && dep.includes('/')) {
548
- // 跳过标准作用域包
549
- const scope = dep.split('/')[0];
550
- if (!['@types', '@babel', '@eslint', '@angular', '@vue', '@react'].includes(scope)) {
551
- detected.push(dep);
552
- }
553
- }
554
- }
555
- } catch (e) {
556
- // 忽略解析错误
557
- }
558
-
559
- return detected;
560
- }
561
-
562
- /**
563
- * 检测设计文档变更 - 扫描 specs/ 和 docs/ 目录
564
- */
565
- function detectDesignDocChanges(projectRoot) {
566
- const changes = [];
567
- const dirsToCheck = [
568
- 'specs',
569
- 'docs/architecture',
570
- 'docs/api',
571
- 'docs/database',
572
- 'docs/product'
573
- ];
574
-
575
- for (const dir of dirsToCheck) {
576
- const dirPath = path.join(projectRoot, dir);
577
- if (fs.existsSync(dirPath)) {
578
- try {
579
- const files = fs.readdirSync(dirPath);
580
- if (files.length > 0) {
581
- changes.push({ type: 'design', path: dir, count: files.length });
582
- }
583
- } catch (e) {
584
- // 忽略错误
585
- }
586
- }
587
- }
588
-
589
- return changes;
590
- }
591
-
592
- /**
593
- * 检测业务知识变更 - 扫描 knowledge/domain/ 目录
594
- */
595
- function detectBusinessKnowledgeChanges(projectRoot) {
596
- const changes = [];
597
- const dirsToCheck = [
598
- 'knowledge/domain',
599
- 'docs/business'
600
- ];
601
-
602
- for (const dir of dirsToCheck) {
603
- const dirPath = path.join(projectRoot, dir);
604
- if (fs.existsSync(dirPath)) {
605
- try {
606
- const files = fs.readdirSync(dirPath);
607
- if (files.length > 0) {
608
- changes.push({ type: 'business', path: dir, count: files.length });
609
- }
610
- } catch (e) {
611
- // 忽略错误
612
- }
613
- }
614
- }
615
-
616
- return changes;
617
- }
618
-
619
- /**
620
- * 检查组件是否已注册
621
- */
622
- function checkRegisteredComponents(projectRoot, componentNames) {
623
- const registryPath = path.join(projectRoot, '.autospec', 'environment', 'registry.json');
624
-
625
- if (!fs.existsSync(registryPath)) {
626
- return componentNames.map(name => ({ name, registered: false, active: false }));
627
- }
628
-
629
- try {
630
- const registry = JSON.parse(fs.readFileSync(registryPath, 'utf-8'));
631
- const registered = registry.componentKnowledge?.components?.map(c => c.name) || [];
632
- const active = registry.activeProfiles?.components || [];
633
-
634
- return componentNames.map(name => ({
635
- name,
636
- registered: registered.includes(name),
637
- active: active.includes(name),
638
- }));
639
- } catch (e) {
640
- return componentNames.map(name => ({ name, registered: false, active: false }));
641
- }
642
- }
643
-
644
- /**
645
- * 处理 Stop 事件:环境进化检查
646
- */
647
- async function handleStop(projectRoot) {
648
- const envDir = path.join(projectRoot, '.autospec', 'environment');
649
-
650
- // 如果环境目录不存在,跳过
651
- if (!fs.existsSync(envDir)) {
652
- process.exit(0);
653
- }
654
-
655
- // 使用 PatternLoader 检测中间件(异步版本,尝试加载 js-yaml)
656
- const autospecDir = path.join(projectRoot, '.autospec');
657
- const patternLoader = new PatternLoader(autospecDir);
658
- await patternLoader.loadAsync();
659
-
660
- // 1. 检测中间件
661
- const detectedMiddleware = await detectMiddlewareWithPatternLoader(projectRoot, patternLoader);
662
- const middlewareStatus = checkRegisteredMiddleware(projectRoot, detectedMiddleware);
663
- const middlewareNeedAction = middlewareStatus.filter(m => !m.registered || !m.active);
664
-
665
- // 2. 检测组件
666
- const detectedComponents = detectComponents(projectRoot);
667
- const componentStatus = checkRegisteredComponents(projectRoot, detectedComponents);
668
- const componentNeedAction = componentStatus.filter(c => !c.registered || !c.active);
669
-
670
- // 3. 检测设计文档变更
671
- const designDocChanges = detectDesignDocChanges(projectRoot);
672
-
673
- // 4. 检测业务知识变更
674
- const businessKnowledgeChanges = detectBusinessKnowledgeChanges(projectRoot);
675
-
676
- // 汇总需要处理的事项
677
- const hasMiddlewareAction = middlewareNeedAction.length > 0;
678
- const hasComponentAction = componentNeedAction.length > 0;
679
- const hasDesignChanges = designDocChanges.length > 0;
680
- const hasBusinessChanges = businessKnowledgeChanges.length > 0;
681
-
682
- if (!hasMiddlewareAction && !hasComponentAction && !hasDesignChanges && !hasBusinessChanges) {
683
- process.exit(0);
684
- }
685
-
686
- // 生成提醒消息
687
- let message = '[AutoSpec Environment] ';
688
- const actions = [];
689
-
690
- // 中间件提醒
691
- if (hasMiddlewareAction) {
692
- const unregistered = middlewareNeedAction.filter(m => !m.registered).map(m => m.name);
693
- const inactive = middlewareNeedAction.filter(m => m.registered && !m.active).map(m => m.name);
694
-
695
- if (unregistered.length > 0) {
696
- actions.push(`新中间件:${unregistered.join(', ')}`);
697
- }
698
- if (inactive.length > 0) {
699
- actions.push(`未激活中间件:${inactive.join(', ')}`);
700
- }
701
- }
702
-
703
- // 组件提醒
704
- if (hasComponentAction) {
705
- const unregistered = componentNeedAction.filter(c => !c.registered).map(c => c.name);
706
- const inactive = componentNeedAction.filter(c => c.registered && !c.active).map(c => c.name);
707
-
708
- if (unregistered.length > 0) {
709
- actions.push(`新组件:${unregistered.join(', ')}`);
710
- }
711
- if (inactive.length > 0) {
712
- actions.push(`未激活组件:${inactive.join(', ')}`);
713
- }
714
- }
715
-
716
- // 设计文档变更提醒
717
- if (hasDesignChanges) {
718
- const paths = designDocChanges.map(d => d.path).join(', ');
719
- actions.push(`设计文档变更:${paths}`);
720
- }
721
-
722
- // 业务知识变更提醒
723
- if (hasBusinessChanges) {
724
- const paths = businessKnowledgeChanges.map(b => b.path).join(', ');
725
- actions.push(`业务知识变更:${paths}`);
726
- }
727
-
728
- message += actions.join(';') + '。运行 autospec env:sync 可同步最新知识。';
729
-
730
- const output = {
731
- hookSpecificOutput: {
732
- hookEventName: 'Stop',
733
- additionalContext: message,
734
- },
735
- };
736
-
737
- process.stdout.write(JSON.stringify(output));
738
- }
739
-
740
- /**
741
- * 主函数
742
- */
743
- async function main() {
744
- try {
745
- const inputRaw = await readStdin(1000);
746
- const input = JSON.parse(inputRaw);
747
-
748
- const eventName = input.event_name;
749
-
750
- // 根据事件类型分发
751
- if (eventName === 'PreToolUse') {
752
- await handlePreToolUse(input);
753
- } else if (eventName === 'Stop') {
754
- const cwd = input.cwd || process.cwd();
755
- const projectRoot = await findProjectRootAsync(cwd);
756
-
757
- if (!projectRoot) {
758
- process.exit(0);
759
- }
760
-
761
- await handleStop(projectRoot);
762
- } else {
763
- logger.debug('Unknown event type, skipping', { eventName });
764
- }
765
-
766
- process.exit(0);
767
-
768
- } catch (e) {
769
- // 输出错误信息,使用 handleHookError
770
- const result = handleHookError('environment-manager', e, {
771
- eventName: 'Unknown'
772
- });
773
- process.stdout.write(JSON.stringify(result.hookSpecificOutput));
774
- process.exit(0);
775
- }
776
- }
777
-
778
- main();