@su-record/vibe 3.0.0 → 3.2.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 (455) hide show
  1. package/CLAUDE.md +2 -2
  2. package/README.en.md +6 -4
  3. package/README.md +5 -3
  4. package/dist/__tests__/wiring-integrity.test.d.ts +2 -0
  5. package/dist/__tests__/wiring-integrity.test.d.ts.map +1 -0
  6. package/dist/__tests__/wiring-integrity.test.js +160 -0
  7. package/dist/__tests__/wiring-integrity.test.js.map +1 -0
  8. package/dist/cli/commands/info.d.ts.map +1 -1
  9. package/dist/cli/commands/info.js +2 -1
  10. package/dist/cli/commands/info.js.map +1 -1
  11. package/dist/cli/commands/init.d.ts.map +1 -1
  12. package/dist/cli/commands/init.js +4 -2
  13. package/dist/cli/commands/init.js.map +1 -1
  14. package/dist/cli/index.js +102 -128
  15. package/dist/cli/index.js.map +1 -1
  16. package/dist/cli/postinstall/claude-agents.d.ts.map +1 -1
  17. package/dist/cli/postinstall/claude-agents.js +0 -5
  18. package/dist/cli/postinstall/claude-agents.js.map +1 -1
  19. package/dist/cli/postinstall/constants.d.ts +6 -0
  20. package/dist/cli/postinstall/constants.d.ts.map +1 -1
  21. package/dist/cli/postinstall/constants.js +42 -60
  22. package/dist/cli/postinstall/constants.js.map +1 -1
  23. package/dist/cli/postinstall/inline-skills.js +2 -2
  24. package/dist/cli/postinstall/inline-skills.js.map +1 -1
  25. package/dist/cli/postinstall/main.d.ts.map +1 -1
  26. package/dist/cli/postinstall/main.js +2 -0
  27. package/dist/cli/postinstall/main.js.map +1 -1
  28. package/dist/cli/postinstall.d.ts +6 -1
  29. package/dist/cli/postinstall.d.ts.map +1 -1
  30. package/dist/cli/postinstall.js +6 -1
  31. package/dist/cli/postinstall.js.map +1 -1
  32. package/dist/cli/setup/GlobalInstaller.d.ts +1 -15
  33. package/dist/cli/setup/GlobalInstaller.d.ts.map +1 -1
  34. package/dist/cli/setup/GlobalInstaller.js +16 -115
  35. package/dist/cli/setup/GlobalInstaller.js.map +1 -1
  36. package/dist/cli/setup/GlobalInstaller.test.d.ts +2 -0
  37. package/dist/cli/setup/GlobalInstaller.test.d.ts.map +1 -0
  38. package/dist/cli/setup/GlobalInstaller.test.js +16 -0
  39. package/dist/cli/setup/GlobalInstaller.test.js.map +1 -0
  40. package/dist/cli/setup/ProjectSetup.js +2 -2
  41. package/dist/cli/setup/ProjectSetup.js.map +1 -1
  42. package/dist/cli/setup.d.ts +1 -1
  43. package/dist/cli/setup.d.ts.map +1 -1
  44. package/dist/cli/setup.js +1 -1
  45. package/dist/cli/setup.js.map +1 -1
  46. package/dist/infra/lib/SkillRepository.js +1 -1
  47. package/dist/infra/lib/evolution/__tests__/integration.test.js +0 -42
  48. package/dist/infra/lib/evolution/__tests__/integration.test.js.map +1 -1
  49. package/hooks/scripts/__tests__/.vibe/command-log.txt +3 -78
  50. package/hooks/scripts/__tests__/clone-behaviors.test.js +97 -1
  51. package/hooks/scripts/__tests__/clone-merge-responsive.test.js +106 -0
  52. package/hooks/scripts/__tests__/code-check-memory-write.test.js +81 -0
  53. package/hooks/scripts/__tests__/step-counter.test.js +21 -0
  54. package/hooks/scripts/auto-format.js +2 -11
  55. package/hooks/scripts/auto-test.js +2 -11
  56. package/hooks/scripts/clone-extract.js +388 -38
  57. package/hooks/scripts/clone-merge-responsive.js +184 -0
  58. package/hooks/scripts/clone-spec.js +33 -8
  59. package/hooks/scripts/clone-validate.js +15 -9
  60. package/hooks/scripts/code-check.js +27 -55
  61. package/hooks/scripts/lib/glob.js +32 -0
  62. package/hooks/scripts/lib/hook-context.js +19 -2
  63. package/hooks/scripts/post-edit.js +2 -3
  64. package/hooks/scripts/prompt-dispatcher.js +1 -1
  65. package/hooks/scripts/scope-guard.js +3 -42
  66. package/hooks/scripts/sentinel-guard.js +5 -20
  67. package/hooks/scripts/session-start.js +2 -2
  68. package/hooks/scripts/step-counter.js +35 -57
  69. package/package.json +6 -4
  70. package/skills/clone/SKILL.md +74 -203
  71. package/skills/clone/references/capture-rules.md +48 -0
  72. package/skills/clone/references/legal-and-error-recovery.md +40 -0
  73. package/skills/clone/references/refine-rules.md +61 -0
  74. package/skills/clone/references/scaffold-phases.md +59 -0
  75. package/skills/clone/references/setup-and-layout.md +30 -0
  76. package/skills/docs/SKILL.md +39 -4
  77. package/skills/docs/references/api-docs-changelog.md +34 -0
  78. package/skills/docs/references/codemaps-output.md +23 -0
  79. package/{agents/diagrammer.md → skills/docs/references/diagram-spec.md} +2 -15
  80. package/skills/exec-plan/SKILL.md +1 -1
  81. package/skills/exec-plan/templates/plan.md +1 -1
  82. package/skills/handoff/SKILL.md +3 -3
  83. package/skills/handoff/templates/handoff.md +1 -1
  84. package/skills/vibe/SKILL.md +3 -2
  85. package/skills/vibe.analyze/SKILL.md +12 -249
  86. package/skills/vibe.analyze/references/output-templates.md +188 -0
  87. package/skills/vibe.analyze/references/quality-gate.md +93 -0
  88. package/skills/vibe.clone/SKILL.md +52 -19
  89. package/skills/vibe.continue/SKILL.md +32 -0
  90. package/skills/vibe.design/SKILL.md +23 -1
  91. package/skills/vibe.design/references/ui-preview.md +20 -0
  92. package/skills/vibe.docs/SKILL.md +4 -2
  93. package/skills/vibe.figma/SKILL.md +33 -260
  94. package/skills/vibe.figma/references/branch-phases.md +113 -0
  95. package/skills/vibe.figma/references/state-schema.md +42 -0
  96. package/skills/vibe.figma/references/step-algorithms.md +204 -0
  97. package/skills/vibe.image/SKILL.md +62 -0
  98. package/skills/vibe.image/references/image-generation-examples.md +39 -0
  99. package/skills/vibe.reason/SKILL.md +3 -183
  100. package/skills/vibe.reason/references/output-format-template.md +57 -0
  101. package/skills/vibe.reason/references/quality-rubrics.md +94 -0
  102. package/skills/vibe.reason/references/worked-example.md +45 -0
  103. package/skills/vibe.review/SKILL.md +13 -348
  104. package/skills/vibe.review/references/boundary-check.md +25 -0
  105. package/skills/vibe.review/references/output-template.md +74 -0
  106. package/skills/vibe.review/references/quality-gate.md +84 -0
  107. package/skills/vibe.review/references/race-mode.md +117 -0
  108. package/skills/vibe.review/references/worked-examples.md +94 -0
  109. package/vibe/templates/claudemd-template.md +1 -1
  110. package/agents/acceptance-tester.md +0 -56
  111. package/agents/documenter.md +0 -43
  112. package/agents/figma/figma-engineer.md +0 -76
  113. package/dist/cli/llm/gemini-commands.d.ts +0 -25
  114. package/dist/cli/llm/gemini-commands.d.ts.map +0 -1
  115. package/dist/cli/llm/gemini-commands.js +0 -143
  116. package/dist/cli/llm/gemini-commands.js.map +0 -1
  117. package/dist/cli/postinstall/codex-agents.d.ts +0 -24
  118. package/dist/cli/postinstall/codex-agents.d.ts.map +0 -1
  119. package/dist/cli/postinstall/codex-agents.js +0 -114
  120. package/dist/cli/postinstall/codex-agents.js.map +0 -1
  121. package/dist/cli/postinstall/codex-instruction.d.ts +0 -10
  122. package/dist/cli/postinstall/codex-instruction.d.ts.map +0 -1
  123. package/dist/cli/postinstall/codex-instruction.js +0 -56
  124. package/dist/cli/postinstall/codex-instruction.js.map +0 -1
  125. package/dist/cli/postinstall/gemini-agents.d.ts +0 -12
  126. package/dist/cli/postinstall/gemini-agents.d.ts.map +0 -1
  127. package/dist/cli/postinstall/gemini-agents.js +0 -80
  128. package/dist/cli/postinstall/gemini-agents.js.map +0 -1
  129. package/dist/cli/postinstall/gemini-instruction.d.ts +0 -10
  130. package/dist/cli/postinstall/gemini-instruction.d.ts.map +0 -1
  131. package/dist/cli/postinstall/gemini-instruction.js +0 -59
  132. package/dist/cli/postinstall/gemini-instruction.js.map +0 -1
  133. package/dist/cli/postinstall/index.d.ts +0 -23
  134. package/dist/cli/postinstall/index.d.ts.map +0 -1
  135. package/dist/cli/postinstall/index.js +0 -23
  136. package/dist/cli/postinstall/index.js.map +0 -1
  137. package/dist/cli/setup/index.d.ts +0 -9
  138. package/dist/cli/setup/index.d.ts.map +0 -1
  139. package/dist/cli/setup/index.js +0 -12
  140. package/dist/cli/setup/index.js.map +0 -1
  141. package/dist/infra/lib/ContextCompressor.d.ts +0 -104
  142. package/dist/infra/lib/ContextCompressor.d.ts.map +0 -1
  143. package/dist/infra/lib/ContextCompressor.js +0 -297
  144. package/dist/infra/lib/ContextCompressor.js.map +0 -1
  145. package/dist/infra/lib/ContextCompressor.test.d.ts +0 -2
  146. package/dist/infra/lib/ContextCompressor.test.d.ts.map +0 -1
  147. package/dist/infra/lib/ContextCompressor.test.js +0 -25
  148. package/dist/infra/lib/ContextCompressor.test.js.map +0 -1
  149. package/dist/infra/lib/ProgressTracker.d.ts +0 -73
  150. package/dist/infra/lib/ProgressTracker.d.ts.map +0 -1
  151. package/dist/infra/lib/ProgressTracker.js +0 -267
  152. package/dist/infra/lib/ProgressTracker.js.map +0 -1
  153. package/dist/infra/lib/TokenBudgetTracker.d.ts +0 -68
  154. package/dist/infra/lib/TokenBudgetTracker.d.ts.map +0 -1
  155. package/dist/infra/lib/TokenBudgetTracker.js +0 -191
  156. package/dist/infra/lib/TokenBudgetTracker.js.map +0 -1
  157. package/dist/infra/lib/autonomy/AuditStore.d.ts +0 -63
  158. package/dist/infra/lib/autonomy/AuditStore.d.ts.map +0 -1
  159. package/dist/infra/lib/autonomy/AuditStore.js +0 -185
  160. package/dist/infra/lib/autonomy/AuditStore.js.map +0 -1
  161. package/dist/infra/lib/autonomy/AutonomyConfig.d.ts +0 -84
  162. package/dist/infra/lib/autonomy/AutonomyConfig.d.ts.map +0 -1
  163. package/dist/infra/lib/autonomy/AutonomyConfig.js +0 -49
  164. package/dist/infra/lib/autonomy/AutonomyConfig.js.map +0 -1
  165. package/dist/infra/lib/autonomy/AutonomyOrchestrator.d.ts +0 -78
  166. package/dist/infra/lib/autonomy/AutonomyOrchestrator.d.ts.map +0 -1
  167. package/dist/infra/lib/autonomy/AutonomyOrchestrator.js +0 -246
  168. package/dist/infra/lib/autonomy/AutonomyOrchestrator.js.map +0 -1
  169. package/dist/infra/lib/autonomy/BackgroundMonitor.d.ts +0 -36
  170. package/dist/infra/lib/autonomy/BackgroundMonitor.d.ts.map +0 -1
  171. package/dist/infra/lib/autonomy/BackgroundMonitor.js +0 -138
  172. package/dist/infra/lib/autonomy/BackgroundMonitor.js.map +0 -1
  173. package/dist/infra/lib/autonomy/CollaborationProtocol.d.ts +0 -56
  174. package/dist/infra/lib/autonomy/CollaborationProtocol.d.ts.map +0 -1
  175. package/dist/infra/lib/autonomy/CollaborationProtocol.js +0 -122
  176. package/dist/infra/lib/autonomy/CollaborationProtocol.js.map +0 -1
  177. package/dist/infra/lib/autonomy/ConfirmationManager.d.ts +0 -42
  178. package/dist/infra/lib/autonomy/ConfirmationManager.d.ts.map +0 -1
  179. package/dist/infra/lib/autonomy/ConfirmationManager.js +0 -200
  180. package/dist/infra/lib/autonomy/ConfirmationManager.js.map +0 -1
  181. package/dist/infra/lib/autonomy/ConfirmationStore.d.ts +0 -55
  182. package/dist/infra/lib/autonomy/ConfirmationStore.d.ts.map +0 -1
  183. package/dist/infra/lib/autonomy/ConfirmationStore.js +0 -130
  184. package/dist/infra/lib/autonomy/ConfirmationStore.js.map +0 -1
  185. package/dist/infra/lib/autonomy/EventBus.d.ts +0 -20
  186. package/dist/infra/lib/autonomy/EventBus.d.ts.map +0 -1
  187. package/dist/infra/lib/autonomy/EventBus.js +0 -119
  188. package/dist/infra/lib/autonomy/EventBus.js.map +0 -1
  189. package/dist/infra/lib/autonomy/EventOutbox.d.ts +0 -32
  190. package/dist/infra/lib/autonomy/EventOutbox.d.ts.map +0 -1
  191. package/dist/infra/lib/autonomy/EventOutbox.js +0 -152
  192. package/dist/infra/lib/autonomy/EventOutbox.js.map +0 -1
  193. package/dist/infra/lib/autonomy/NotificationDispatcher.d.ts +0 -24
  194. package/dist/infra/lib/autonomy/NotificationDispatcher.d.ts.map +0 -1
  195. package/dist/infra/lib/autonomy/NotificationDispatcher.js +0 -112
  196. package/dist/infra/lib/autonomy/NotificationDispatcher.js.map +0 -1
  197. package/dist/infra/lib/autonomy/PolicyEngine.d.ts +0 -76
  198. package/dist/infra/lib/autonomy/PolicyEngine.d.ts.map +0 -1
  199. package/dist/infra/lib/autonomy/PolicyEngine.js +0 -208
  200. package/dist/infra/lib/autonomy/PolicyEngine.js.map +0 -1
  201. package/dist/infra/lib/autonomy/ProactiveAnalyzer.d.ts +0 -61
  202. package/dist/infra/lib/autonomy/ProactiveAnalyzer.d.ts.map +0 -1
  203. package/dist/infra/lib/autonomy/ProactiveAnalyzer.js +0 -236
  204. package/dist/infra/lib/autonomy/ProactiveAnalyzer.js.map +0 -1
  205. package/dist/infra/lib/autonomy/RiskClassifier.d.ts +0 -35
  206. package/dist/infra/lib/autonomy/RiskClassifier.d.ts.map +0 -1
  207. package/dist/infra/lib/autonomy/RiskClassifier.js +0 -147
  208. package/dist/infra/lib/autonomy/RiskClassifier.js.map +0 -1
  209. package/dist/infra/lib/autonomy/SecuritySentinel.d.ts +0 -51
  210. package/dist/infra/lib/autonomy/SecuritySentinel.d.ts.map +0 -1
  211. package/dist/infra/lib/autonomy/SecuritySentinel.js +0 -162
  212. package/dist/infra/lib/autonomy/SecuritySentinel.js.map +0 -1
  213. package/dist/infra/lib/autonomy/SuggestionStore.d.ts +0 -54
  214. package/dist/infra/lib/autonomy/SuggestionStore.d.ts.map +0 -1
  215. package/dist/infra/lib/autonomy/SuggestionStore.js +0 -144
  216. package/dist/infra/lib/autonomy/SuggestionStore.js.map +0 -1
  217. package/dist/infra/lib/autonomy/TaskDecomposer.d.ts +0 -38
  218. package/dist/infra/lib/autonomy/TaskDecomposer.d.ts.map +0 -1
  219. package/dist/infra/lib/autonomy/TaskDecomposer.js +0 -175
  220. package/dist/infra/lib/autonomy/TaskDecomposer.js.map +0 -1
  221. package/dist/infra/lib/autonomy/__tests__/audit-store.test.d.ts +0 -2
  222. package/dist/infra/lib/autonomy/__tests__/audit-store.test.d.ts.map +0 -1
  223. package/dist/infra/lib/autonomy/__tests__/audit-store.test.js +0 -198
  224. package/dist/infra/lib/autonomy/__tests__/audit-store.test.js.map +0 -1
  225. package/dist/infra/lib/autonomy/__tests__/event-bus.test.d.ts +0 -2
  226. package/dist/infra/lib/autonomy/__tests__/event-bus.test.d.ts.map +0 -1
  227. package/dist/infra/lib/autonomy/__tests__/event-bus.test.js +0 -225
  228. package/dist/infra/lib/autonomy/__tests__/event-bus.test.js.map +0 -1
  229. package/dist/infra/lib/autonomy/__tests__/event-core.test.d.ts +0 -2
  230. package/dist/infra/lib/autonomy/__tests__/event-core.test.d.ts.map +0 -1
  231. package/dist/infra/lib/autonomy/__tests__/event-core.test.js +0 -194
  232. package/dist/infra/lib/autonomy/__tests__/event-core.test.js.map +0 -1
  233. package/dist/infra/lib/autonomy/__tests__/governance.test.d.ts +0 -2
  234. package/dist/infra/lib/autonomy/__tests__/governance.test.d.ts.map +0 -1
  235. package/dist/infra/lib/autonomy/__tests__/governance.test.js +0 -540
  236. package/dist/infra/lib/autonomy/__tests__/governance.test.js.map +0 -1
  237. package/dist/infra/lib/autonomy/__tests__/integration.test.d.ts +0 -2
  238. package/dist/infra/lib/autonomy/__tests__/integration.test.d.ts.map +0 -1
  239. package/dist/infra/lib/autonomy/__tests__/integration.test.js +0 -480
  240. package/dist/infra/lib/autonomy/__tests__/integration.test.js.map +0 -1
  241. package/dist/infra/lib/autonomy/__tests__/proactive.test.d.ts +0 -2
  242. package/dist/infra/lib/autonomy/__tests__/proactive.test.d.ts.map +0 -1
  243. package/dist/infra/lib/autonomy/__tests__/proactive.test.js +0 -410
  244. package/dist/infra/lib/autonomy/__tests__/proactive.test.js.map +0 -1
  245. package/dist/infra/lib/autonomy/__tests__/sentinel.test.d.ts +0 -2
  246. package/dist/infra/lib/autonomy/__tests__/sentinel.test.d.ts.map +0 -1
  247. package/dist/infra/lib/autonomy/__tests__/sentinel.test.js +0 -486
  248. package/dist/infra/lib/autonomy/__tests__/sentinel.test.js.map +0 -1
  249. package/dist/infra/lib/autonomy/index.d.ts +0 -18
  250. package/dist/infra/lib/autonomy/index.d.ts.map +0 -1
  251. package/dist/infra/lib/autonomy/index.js +0 -22
  252. package/dist/infra/lib/autonomy/index.js.map +0 -1
  253. package/dist/infra/lib/autonomy/schemas.d.ts +0 -317
  254. package/dist/infra/lib/autonomy/schemas.d.ts.map +0 -1
  255. package/dist/infra/lib/autonomy/schemas.js +0 -90
  256. package/dist/infra/lib/autonomy/schemas.js.map +0 -1
  257. package/dist/infra/lib/claude/index.d.ts +0 -5
  258. package/dist/infra/lib/claude/index.d.ts.map +0 -1
  259. package/dist/infra/lib/claude/index.js +0 -5
  260. package/dist/infra/lib/claude/index.js.map +0 -1
  261. package/dist/infra/lib/claude/storage.d.ts +0 -12
  262. package/dist/infra/lib/claude/storage.d.ts.map +0 -1
  263. package/dist/infra/lib/claude/storage.js +0 -54
  264. package/dist/infra/lib/claude/storage.js.map +0 -1
  265. package/dist/infra/lib/gemini/auth.d.ts +0 -18
  266. package/dist/infra/lib/gemini/auth.d.ts.map +0 -1
  267. package/dist/infra/lib/gemini/auth.js +0 -32
  268. package/dist/infra/lib/gemini/auth.js.map +0 -1
  269. package/dist/infra/lib/gemini/capabilities.d.ts +0 -28
  270. package/dist/infra/lib/gemini/capabilities.d.ts.map +0 -1
  271. package/dist/infra/lib/gemini/capabilities.js +0 -178
  272. package/dist/infra/lib/gemini/capabilities.js.map +0 -1
  273. package/dist/infra/lib/gemini/chat.d.ts +0 -35
  274. package/dist/infra/lib/gemini/chat.d.ts.map +0 -1
  275. package/dist/infra/lib/gemini/chat.js +0 -161
  276. package/dist/infra/lib/gemini/chat.js.map +0 -1
  277. package/dist/infra/lib/gemini/completion.d.ts +0 -12
  278. package/dist/infra/lib/gemini/completion.d.ts.map +0 -1
  279. package/dist/infra/lib/gemini/completion.js +0 -13
  280. package/dist/infra/lib/gemini/completion.js.map +0 -1
  281. package/dist/infra/lib/gemini/constants.d.ts +0 -8
  282. package/dist/infra/lib/gemini/constants.d.ts.map +0 -1
  283. package/dist/infra/lib/gemini/constants.js +0 -11
  284. package/dist/infra/lib/gemini/constants.js.map +0 -1
  285. package/dist/infra/lib/gemini/index.d.ts +0 -13
  286. package/dist/infra/lib/gemini/index.d.ts.map +0 -1
  287. package/dist/infra/lib/gemini/index.js +0 -12
  288. package/dist/infra/lib/gemini/index.js.map +0 -1
  289. package/dist/infra/lib/gemini/models.d.ts +0 -11
  290. package/dist/infra/lib/gemini/models.d.ts.map +0 -1
  291. package/dist/infra/lib/gemini/models.js +0 -38
  292. package/dist/infra/lib/gemini/models.js.map +0 -1
  293. package/dist/infra/lib/gemini/orchestration.d.ts +0 -33
  294. package/dist/infra/lib/gemini/orchestration.d.ts.map +0 -1
  295. package/dist/infra/lib/gemini/orchestration.js +0 -62
  296. package/dist/infra/lib/gemini/orchestration.js.map +0 -1
  297. package/dist/infra/lib/gemini/types.d.ts +0 -115
  298. package/dist/infra/lib/gemini/types.d.ts.map +0 -1
  299. package/dist/infra/lib/gemini/types.js +0 -5
  300. package/dist/infra/lib/gemini/types.js.map +0 -1
  301. package/dist/infra/orchestrator/AgentAnnouncer.d.ts +0 -64
  302. package/dist/infra/orchestrator/AgentAnnouncer.d.ts.map +0 -1
  303. package/dist/infra/orchestrator/AgentAnnouncer.js +0 -127
  304. package/dist/infra/orchestrator/AgentAnnouncer.js.map +0 -1
  305. package/dist/infra/orchestrator/AgentAnnouncer.test.d.ts +0 -5
  306. package/dist/infra/orchestrator/AgentAnnouncer.test.d.ts.map +0 -1
  307. package/dist/infra/orchestrator/AgentAnnouncer.test.js +0 -119
  308. package/dist/infra/orchestrator/AgentAnnouncer.test.js.map +0 -1
  309. package/dist/infra/orchestrator/AgentExecutor.d.ts +0 -22
  310. package/dist/infra/orchestrator/AgentExecutor.d.ts.map +0 -1
  311. package/dist/infra/orchestrator/AgentExecutor.js +0 -272
  312. package/dist/infra/orchestrator/AgentExecutor.js.map +0 -1
  313. package/dist/infra/orchestrator/AgentManager.d.ts +0 -72
  314. package/dist/infra/orchestrator/AgentManager.d.ts.map +0 -1
  315. package/dist/infra/orchestrator/AgentManager.js +0 -183
  316. package/dist/infra/orchestrator/AgentManager.js.map +0 -1
  317. package/dist/infra/orchestrator/AgentManifestCache.d.ts +0 -54
  318. package/dist/infra/orchestrator/AgentManifestCache.d.ts.map +0 -1
  319. package/dist/infra/orchestrator/AgentManifestCache.js +0 -191
  320. package/dist/infra/orchestrator/AgentManifestCache.js.map +0 -1
  321. package/dist/infra/orchestrator/AgentRegistry.d.ts +0 -76
  322. package/dist/infra/orchestrator/AgentRegistry.d.ts.map +0 -1
  323. package/dist/infra/orchestrator/AgentRegistry.js +0 -217
  324. package/dist/infra/orchestrator/AgentRegistry.js.map +0 -1
  325. package/dist/infra/orchestrator/AgentRegistry.test.d.ts +0 -5
  326. package/dist/infra/orchestrator/AgentRegistry.test.d.ts.map +0 -1
  327. package/dist/infra/orchestrator/AgentRegistry.test.js +0 -122
  328. package/dist/infra/orchestrator/AgentRegistry.test.js.map +0 -1
  329. package/dist/infra/orchestrator/BackgroundManager.d.ts +0 -128
  330. package/dist/infra/orchestrator/BackgroundManager.d.ts.map +0 -1
  331. package/dist/infra/orchestrator/BackgroundManager.js +0 -620
  332. package/dist/infra/orchestrator/BackgroundManager.js.map +0 -1
  333. package/dist/infra/orchestrator/BackgroundManager.test.d.ts +0 -6
  334. package/dist/infra/orchestrator/BackgroundManager.test.d.ts.map +0 -1
  335. package/dist/infra/orchestrator/BackgroundManager.test.js +0 -162
  336. package/dist/infra/orchestrator/BackgroundManager.test.js.map +0 -1
  337. package/dist/infra/orchestrator/CheckpointManager.d.ts +0 -54
  338. package/dist/infra/orchestrator/CheckpointManager.d.ts.map +0 -1
  339. package/dist/infra/orchestrator/CheckpointManager.js +0 -121
  340. package/dist/infra/orchestrator/CheckpointManager.js.map +0 -1
  341. package/dist/infra/orchestrator/CodexAgentRuntime.d.ts +0 -12
  342. package/dist/infra/orchestrator/CodexAgentRuntime.d.ts.map +0 -1
  343. package/dist/infra/orchestrator/CodexAgentRuntime.js +0 -94
  344. package/dist/infra/orchestrator/CodexAgentRuntime.js.map +0 -1
  345. package/dist/infra/orchestrator/CodexAgentRuntime.test.d.ts +0 -2
  346. package/dist/infra/orchestrator/CodexAgentRuntime.test.d.ts.map +0 -1
  347. package/dist/infra/orchestrator/CodexAgentRuntime.test.js +0 -37
  348. package/dist/infra/orchestrator/CodexAgentRuntime.test.js.map +0 -1
  349. package/dist/infra/orchestrator/LLMCluster.d.ts +0 -82
  350. package/dist/infra/orchestrator/LLMCluster.d.ts.map +0 -1
  351. package/dist/infra/orchestrator/LLMCluster.js +0 -146
  352. package/dist/infra/orchestrator/LLMCluster.js.map +0 -1
  353. package/dist/infra/orchestrator/MultiLlmResearch.d.ts +0 -31
  354. package/dist/infra/orchestrator/MultiLlmResearch.d.ts.map +0 -1
  355. package/dist/infra/orchestrator/MultiLlmResearch.js +0 -160
  356. package/dist/infra/orchestrator/MultiLlmResearch.js.map +0 -1
  357. package/dist/infra/orchestrator/PhasePipeline.d.ts +0 -122
  358. package/dist/infra/orchestrator/PhasePipeline.d.ts.map +0 -1
  359. package/dist/infra/orchestrator/PhasePipeline.js +0 -385
  360. package/dist/infra/orchestrator/PhasePipeline.js.map +0 -1
  361. package/dist/infra/orchestrator/PhaseResultStore.d.ts +0 -39
  362. package/dist/infra/orchestrator/PhaseResultStore.d.ts.map +0 -1
  363. package/dist/infra/orchestrator/PhaseResultStore.js +0 -151
  364. package/dist/infra/orchestrator/PhaseResultStore.js.map +0 -1
  365. package/dist/infra/orchestrator/SessionStore.d.ts +0 -40
  366. package/dist/infra/orchestrator/SessionStore.d.ts.map +0 -1
  367. package/dist/infra/orchestrator/SessionStore.js +0 -116
  368. package/dist/infra/orchestrator/SessionStore.js.map +0 -1
  369. package/dist/infra/orchestrator/SmartRouter.d.ts +0 -90
  370. package/dist/infra/orchestrator/SmartRouter.d.ts.map +0 -1
  371. package/dist/infra/orchestrator/SmartRouter.js +0 -277
  372. package/dist/infra/orchestrator/SmartRouter.js.map +0 -1
  373. package/dist/infra/orchestrator/SmartRouter.test.d.ts +0 -5
  374. package/dist/infra/orchestrator/SmartRouter.test.d.ts.map +0 -1
  375. package/dist/infra/orchestrator/SmartRouter.test.js +0 -484
  376. package/dist/infra/orchestrator/SmartRouter.test.js.map +0 -1
  377. package/dist/infra/orchestrator/SwarmOrchestrator.d.ts +0 -143
  378. package/dist/infra/orchestrator/SwarmOrchestrator.d.ts.map +0 -1
  379. package/dist/infra/orchestrator/SwarmOrchestrator.js +0 -378
  380. package/dist/infra/orchestrator/SwarmOrchestrator.js.map +0 -1
  381. package/dist/infra/orchestrator/SwarmOrchestrator.test.d.ts +0 -5
  382. package/dist/infra/orchestrator/SwarmOrchestrator.test.d.ts.map +0 -1
  383. package/dist/infra/orchestrator/SwarmOrchestrator.test.js +0 -95
  384. package/dist/infra/orchestrator/SwarmOrchestrator.test.js.map +0 -1
  385. package/dist/infra/orchestrator/agentDiscovery.d.ts +0 -26
  386. package/dist/infra/orchestrator/agentDiscovery.d.ts.map +0 -1
  387. package/dist/infra/orchestrator/agentDiscovery.js +0 -175
  388. package/dist/infra/orchestrator/agentDiscovery.js.map +0 -1
  389. package/dist/infra/orchestrator/backgroundAgent.d.ts +0 -9
  390. package/dist/infra/orchestrator/backgroundAgent.d.ts.map +0 -1
  391. package/dist/infra/orchestrator/backgroundAgent.js +0 -10
  392. package/dist/infra/orchestrator/backgroundAgent.js.map +0 -1
  393. package/dist/infra/orchestrator/index.d.ts +0 -207
  394. package/dist/infra/orchestrator/index.d.ts.map +0 -1
  395. package/dist/infra/orchestrator/index.js +0 -362
  396. package/dist/infra/orchestrator/index.js.map +0 -1
  397. package/dist/infra/orchestrator/orchestrator.d.ts +0 -60
  398. package/dist/infra/orchestrator/orchestrator.d.ts.map +0 -1
  399. package/dist/infra/orchestrator/orchestrator.js +0 -214
  400. package/dist/infra/orchestrator/orchestrator.js.map +0 -1
  401. package/dist/infra/orchestrator/parallelResearch.d.ts +0 -27
  402. package/dist/infra/orchestrator/parallelResearch.d.ts.map +0 -1
  403. package/dist/infra/orchestrator/parallelResearch.js +0 -285
  404. package/dist/infra/orchestrator/parallelResearch.js.map +0 -1
  405. package/dist/infra/orchestrator/types.d.ts +0 -205
  406. package/dist/infra/orchestrator/types.d.ts.map +0 -1
  407. package/dist/infra/orchestrator/types.js +0 -87
  408. package/dist/infra/orchestrator/types.js.map +0 -1
  409. package/dist/infra/orchestrator/types.test.d.ts +0 -2
  410. package/dist/infra/orchestrator/types.test.d.ts.map +0 -1
  411. package/dist/infra/orchestrator/types.test.js +0 -57
  412. package/dist/infra/orchestrator/types.test.js.map +0 -1
  413. package/dist/tools/semantic/analyzeDependencyGraph.d.ts +0 -12
  414. package/dist/tools/semantic/analyzeDependencyGraph.d.ts.map +0 -1
  415. package/dist/tools/semantic/analyzeDependencyGraph.js +0 -359
  416. package/dist/tools/semantic/analyzeDependencyGraph.js.map +0 -1
  417. package/dist/tools/semantic/astGrep.d.ts +0 -25
  418. package/dist/tools/semantic/astGrep.d.ts.map +0 -1
  419. package/dist/tools/semantic/astGrep.js +0 -324
  420. package/dist/tools/semantic/astGrep.js.map +0 -1
  421. package/dist/tools/semantic/astGrep.test.d.ts +0 -2
  422. package/dist/tools/semantic/astGrep.test.d.ts.map +0 -1
  423. package/dist/tools/semantic/astGrep.test.js +0 -74
  424. package/dist/tools/semantic/astGrep.test.js.map +0 -1
  425. package/dist/tools/semantic/findReferences.d.ts +0 -9
  426. package/dist/tools/semantic/findReferences.d.ts.map +0 -1
  427. package/dist/tools/semantic/findReferences.js +0 -200
  428. package/dist/tools/semantic/findReferences.js.map +0 -1
  429. package/dist/tools/semantic/findSymbol.d.ts +0 -8
  430. package/dist/tools/semantic/findSymbol.d.ts.map +0 -1
  431. package/dist/tools/semantic/findSymbol.js +0 -204
  432. package/dist/tools/semantic/findSymbol.js.map +0 -1
  433. package/dist/tools/semantic/index.d.ts +0 -9
  434. package/dist/tools/semantic/index.d.ts.map +0 -1
  435. package/dist/tools/semantic/index.js +0 -11
  436. package/dist/tools/semantic/index.js.map +0 -1
  437. package/dist/tools/semantic/lsp.d.ts +0 -68
  438. package/dist/tools/semantic/lsp.d.ts.map +0 -1
  439. package/dist/tools/semantic/lsp.js +0 -561
  440. package/dist/tools/semantic/lsp.js.map +0 -1
  441. package/dist/tools/spec/e2eTestGenerator.d.ts +0 -61
  442. package/dist/tools/spec/e2eTestGenerator.d.ts.map +0 -1
  443. package/dist/tools/spec/e2eTestGenerator.js +0 -255
  444. package/dist/tools/spec/e2eTestGenerator.js.map +0 -1
  445. package/dist/tools/spec/specVersioning.d.ts +0 -76
  446. package/dist/tools/spec/specVersioning.d.ts.map +0 -1
  447. package/dist/tools/spec/specVersioning.js +0 -236
  448. package/dist/tools/spec/specVersioning.js.map +0 -1
  449. package/hooks/scripts/__tests__/.vibe/memories/memories.db +0 -0
  450. package/hooks/scripts/__tests__/.vibe/memories/memories.db-shm +0 -0
  451. package/hooks/scripts/__tests__/.vibe/memories/memories.db-wal +0 -0
  452. package/hooks/scripts/evolution-engine.js +0 -91
  453. package/hooks/scripts/hud-status.js +0 -321
  454. package/hooks/scripts/skill-injector.js +0 -83
  455. package/skills/vibe.utils/SKILL.md +0 -415
@@ -1,236 +0,0 @@
1
- const DEBOUNCE_MS = 500;
2
- // ── SecurityScanner ────────────────────────────
3
- const HARDCODED_SECRET_RE = /\b(api[_-]?key|secret|password|token)\s*[:=]\s*["'][^"']{8,}["']/gi;
4
- const DYNAMIC_SQL_RE = /\b(query|exec|execute|prepare)\s*\(\s*[`'"].*\$\{/gi;
5
- const XSS_PATTERNS_RE = /\b(innerHTML|dangerouslySetInnerHTML)\s*[=:]/gi;
6
- export class SecurityScanner {
7
- name = 'SecurityScanner';
8
- shouldRun(trigger) {
9
- return trigger === 'file_changed' || trigger === 'manual';
10
- }
11
- async analyze(context) {
12
- if (!context.fileContent)
13
- return [];
14
- const suggestions = [];
15
- if (HARDCODED_SECRET_RE.test(context.fileContent)) {
16
- HARDCODED_SECRET_RE.lastIndex = 0;
17
- suggestions.push({
18
- type: 'security',
19
- title: `Hardcoded secret detected in ${context.filePath ?? 'unknown'}`,
20
- description: 'Hardcoded secrets should be moved to environment variables or secret management.',
21
- priority: 1,
22
- evidence: { filePath: context.filePath, pattern: 'hardcoded_secret' },
23
- suggestedAction: 'Move secrets to .env file or secret manager',
24
- riskLevel: 'HIGH',
25
- });
26
- }
27
- if (DYNAMIC_SQL_RE.test(context.fileContent)) {
28
- DYNAMIC_SQL_RE.lastIndex = 0;
29
- suggestions.push({
30
- type: 'security',
31
- title: `Dynamic SQL construction in ${context.filePath ?? 'unknown'}`,
32
- description: 'Dynamic SQL construction is vulnerable to SQL injection. Use parameterized queries.',
33
- priority: 1,
34
- evidence: { filePath: context.filePath, pattern: 'dynamic_sql' },
35
- suggestedAction: 'Use parameterized queries instead',
36
- riskLevel: 'HIGH',
37
- });
38
- }
39
- if (XSS_PATTERNS_RE.test(context.fileContent)) {
40
- XSS_PATTERNS_RE.lastIndex = 0;
41
- suggestions.push({
42
- type: 'security',
43
- title: `XSS vulnerability pattern in ${context.filePath ?? 'unknown'}`,
44
- description: 'Using innerHTML or dangerouslySetInnerHTML can lead to XSS vulnerabilities.',
45
- priority: 2,
46
- evidence: { filePath: context.filePath, pattern: 'xss' },
47
- suggestedAction: 'Use safe rendering methods and sanitize user input',
48
- riskLevel: 'MEDIUM',
49
- });
50
- }
51
- return suggestions;
52
- }
53
- }
54
- // ── PerformanceDetector ────────────────────────
55
- export class PerformanceDetector {
56
- name = 'PerformanceDetector';
57
- shouldRun(trigger) {
58
- return trigger === 'session_start' || trigger === 'manual';
59
- }
60
- async analyze(context) {
61
- if (!context.fileContent)
62
- return [];
63
- const suggestions = [];
64
- // Detect N+1 query pattern (loop + query)
65
- if (/for\s*\(.*\)\s*\{[^}]*\.(query|find|get|select)\s*\(/gs.test(context.fileContent)) {
66
- suggestions.push({
67
- type: 'performance',
68
- title: `Potential N+1 query in ${context.filePath ?? 'unknown'}`,
69
- description: 'Database query inside a loop may cause N+1 performance issues.',
70
- priority: 2,
71
- evidence: { filePath: context.filePath, pattern: 'n_plus_1' },
72
- suggestedAction: 'Use batch queries or joins instead',
73
- });
74
- }
75
- return suggestions;
76
- }
77
- }
78
- // ── QualityChecker ──────────────────────────────
79
- const TODO_RE = /\/\/\s*TODO\b/g;
80
- const HIGH_COMPLEXITY_RE = /(?:if|else|for|while|switch|catch|&&|\|\|)/g;
81
- export class QualityChecker {
82
- name = 'QualityChecker';
83
- shouldRun(trigger) {
84
- return trigger === 'file_changed' || trigger === 'build_complete' || trigger === 'manual';
85
- }
86
- async analyze(context) {
87
- if (!context.fileContent)
88
- return [];
89
- const suggestions = [];
90
- // Check for abandoned TODOs
91
- const todoMatches = context.fileContent.match(TODO_RE);
92
- if (todoMatches && todoMatches.length > 3) {
93
- suggestions.push({
94
- type: 'quality',
95
- title: `${todoMatches.length} TODOs in ${context.filePath ?? 'unknown'}`,
96
- description: `Found ${todoMatches.length} TODO comments that may need attention.`,
97
- priority: 3,
98
- evidence: { filePath: context.filePath, todoCount: todoMatches.length },
99
- suggestedAction: 'Review and resolve TODO items',
100
- });
101
- }
102
- // Check complexity (rough heuristic)
103
- const lines = context.fileContent.split('\n');
104
- const complexityMatches = context.fileContent.match(HIGH_COMPLEXITY_RE);
105
- if (complexityMatches && lines.length > 0) {
106
- const density = complexityMatches.length / lines.length;
107
- if (density > 0.3) {
108
- suggestions.push({
109
- type: 'quality',
110
- title: `High complexity in ${context.filePath ?? 'unknown'}`,
111
- description: `Complexity density ${(density * 100).toFixed(0)}% exceeds threshold.`,
112
- priority: 2,
113
- evidence: { filePath: context.filePath, complexityDensity: density },
114
- suggestedAction: 'Consider refactoring to reduce complexity',
115
- });
116
- }
117
- }
118
- return suggestions;
119
- }
120
- }
121
- // ── DependencyMonitor ───────────────────────────
122
- export class DependencyMonitor {
123
- name = 'DependencyMonitor';
124
- shouldRun(trigger) {
125
- return trigger === 'scheduled' || trigger === 'manual';
126
- }
127
- async analyze(context) {
128
- if (!context.fileContent)
129
- return [];
130
- // Parse package.json for basic checks
131
- try {
132
- const pkg = JSON.parse(context.fileContent);
133
- const suggestions = [];
134
- const allDeps = { ...pkg.dependencies, ...pkg.devDependencies };
135
- // Check for wildcard versions
136
- for (const [name, version] of Object.entries(allDeps)) {
137
- if (version === '*' || version === 'latest') {
138
- suggestions.push({
139
- type: 'dependency',
140
- title: `Unpinned dependency: ${name}`,
141
- description: `${name} uses '${version}' version which is not pinned.`,
142
- priority: 2,
143
- evidence: { package: name, version },
144
- suggestedAction: `Pin ${name} to a specific version`,
145
- });
146
- }
147
- }
148
- return suggestions;
149
- }
150
- catch {
151
- return [];
152
- }
153
- }
154
- }
155
- // ── ProactiveAnalyzer (Orchestrator) ────────────
156
- export class ProactiveAnalyzer {
157
- modules;
158
- store;
159
- eventBus;
160
- debounceTimers = new Map();
161
- constructor(deps) {
162
- this.store = deps.store;
163
- this.eventBus = deps.eventBus;
164
- this.modules = deps.modules ?? [
165
- new SecurityScanner(),
166
- new PerformanceDetector(),
167
- new QualityChecker(),
168
- new DependencyMonitor(),
169
- ];
170
- }
171
- async analyze(context) {
172
- if (context.filePath && context.trigger === 'file_changed') {
173
- return this.analyzeDebounced(context);
174
- }
175
- return this.runAnalysis(context);
176
- }
177
- getModules() {
178
- return this.modules;
179
- }
180
- clearDebounce() {
181
- for (const timer of this.debounceTimers.values()) {
182
- clearTimeout(timer);
183
- }
184
- this.debounceTimers.clear();
185
- }
186
- analyzeDebounced(context) {
187
- const key = context.filePath;
188
- const existing = this.debounceTimers.get(key);
189
- if (existing)
190
- clearTimeout(existing);
191
- return new Promise((resolve) => {
192
- this.debounceTimers.set(key, setTimeout(async () => {
193
- this.debounceTimers.delete(key);
194
- const results = await this.runAnalysis(context);
195
- resolve(results);
196
- }, DEBOUNCE_MS));
197
- });
198
- }
199
- async runAnalysis(context) {
200
- const allSuggestions = [];
201
- for (const mod of this.modules) {
202
- if (!mod.shouldRun(context.trigger))
203
- continue;
204
- try {
205
- const suggestions = await mod.analyze(context);
206
- for (const s of suggestions) {
207
- this.store.create({
208
- ...s,
209
- sourceModule: mod.name,
210
- });
211
- allSuggestions.push(s);
212
- }
213
- }
214
- catch {
215
- // Module failure should not break analysis
216
- }
217
- }
218
- if (allSuggestions.length > 0) {
219
- this.emitSuggestionCreated(allSuggestions.length, context.trigger);
220
- }
221
- return allSuggestions;
222
- }
223
- emitSuggestionCreated(count, trigger) {
224
- try {
225
- this.eventBus.emit('suggestion_created', {
226
- eventType: 'suggestion_created',
227
- payload: { count, trigger },
228
- sourceAgentId: 'proactive-analyzer',
229
- });
230
- }
231
- catch {
232
- // Non-critical
233
- }
234
- }
235
- }
236
- //# sourceMappingURL=ProactiveAnalyzer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ProactiveAnalyzer.js","sourceRoot":"","sources":["../../../../src/infra/lib/autonomy/ProactiveAnalyzer.ts"],"names":[],"mappings":"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"}
@@ -1,35 +0,0 @@
1
- import type { AgentActionEvent, RiskLevel } from './schemas.js';
2
- export interface RiskAssessment {
3
- riskLevel: RiskLevel;
4
- score: number;
5
- factors: string[];
6
- reasoning: string;
7
- blocked?: boolean;
8
- }
9
- export interface ClassificationContext {
10
- recentDeleteCount?: number;
11
- }
12
- export interface CustomRiskRule {
13
- actionType: string;
14
- targetPattern?: string;
15
- riskLevel: RiskLevel;
16
- condition?: string;
17
- }
18
- export declare class RiskClassifier {
19
- private readonly customRules;
20
- constructor(customRules?: CustomRiskRule[]);
21
- classify(action: AgentActionEvent, context?: ClassificationContext): RiskAssessment;
22
- private sanitizeAction;
23
- private evaluateCustomRules;
24
- private evaluateDefaultRules;
25
- private classifyFileWrite;
26
- private classifyFileDelete;
27
- private classifyBashExec;
28
- private classifyGitPush;
29
- private classifySkillGenerate;
30
- private classifyConfigModify;
31
- private classifyDependencyInstall;
32
- private classifyExternalApiCall;
33
- private makeAssessment;
34
- }
35
- //# sourceMappingURL=RiskClassifier.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"RiskClassifier.d.ts","sourceRoot":"","sources":["../../../../src/infra/lib/autonomy/RiskClassifier.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAwBhE,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,SAAS,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,qBAAqB;IACpC,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,SAAS,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AASD,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAmB;gBAEnC,WAAW,CAAC,EAAE,cAAc,EAAE;IAW1C,QAAQ,CAAC,MAAM,EAAE,gBAAgB,EAAE,OAAO,CAAC,EAAE,qBAAqB,GAAG,cAAc;IAOnF,OAAO,CAAC,cAAc;IAQtB,OAAO,CAAC,mBAAmB;IAmB3B,OAAO,CAAC,oBAAoB;IAmB5B,OAAO,CAAC,iBAAiB;IAuBzB,OAAO,CAAC,kBAAkB;IAc1B,OAAO,CAAC,gBAAgB;IAWxB,OAAO,CAAC,eAAe;IAavB,OAAO,CAAC,qBAAqB;IAW7B,OAAO,CAAC,oBAAoB;IAW5B,OAAO,CAAC,yBAAyB;IAIjC,OAAO,CAAC,uBAAuB;IAY/B,OAAO,CAAC,cAAc;CAOvB"}
@@ -1,147 +0,0 @@
1
- import { z } from 'zod';
2
- const CONTROL_CHAR_RE = /[\u0000-\u001F]/g;
3
- const SECURITY_FILE_PATTERNS = [
4
- /[/\\]auth[/\\]/i,
5
- /[/\\]security[/\\]/i,
6
- /[/\\]\.env/i,
7
- /[/\\]secrets/i,
8
- ];
9
- const SENTINEL_PROTECTED_RE = /^src[\\/]lib[\\/]autonomy[\\/]/;
10
- const DANGEROUS_BASH_RE = /\b(rm\s+-rf|kill\s+-9|drop\s+table|truncate|shutdown|reboot|mkfs|dd\s+if=)\b/i;
11
- const AUTH_CREDENTIAL_RE = /\b(api[_-]?key|secret|token|password|auth|bearer)\b/i;
12
- const SCORE_DEFAULTS = {
13
- LOW: 15,
14
- MEDIUM: 50,
15
- HIGH: 80,
16
- };
17
- const CustomRiskRuleSchema = z.object({
18
- actionType: z.string().min(1),
19
- targetPattern: z.string().optional(),
20
- riskLevel: z.enum(['LOW', 'MEDIUM', 'HIGH']),
21
- condition: z.string().optional(),
22
- });
23
- export class RiskClassifier {
24
- customRules;
25
- constructor(customRules) {
26
- this.customRules = (customRules ?? []).filter((rule) => {
27
- try {
28
- CustomRiskRuleSchema.parse(rule);
29
- return true;
30
- }
31
- catch {
32
- return false;
33
- }
34
- });
35
- }
36
- classify(action, context) {
37
- const sanitized = this.sanitizeAction(action);
38
- const customResult = this.evaluateCustomRules(sanitized);
39
- if (customResult)
40
- return customResult;
41
- return this.evaluateDefaultRules(sanitized, context);
42
- }
43
- sanitizeAction(action) {
44
- return {
45
- ...action,
46
- agentId: action.agentId.replace(CONTROL_CHAR_RE, ''),
47
- target: action.target.replace(CONTROL_CHAR_RE, ''),
48
- };
49
- }
50
- evaluateCustomRules(action) {
51
- for (const rule of this.customRules) {
52
- if (rule.actionType !== action.actionType)
53
- continue;
54
- if (rule.targetPattern) {
55
- try {
56
- if (!new RegExp(rule.targetPattern, 'i').test(action.target))
57
- continue;
58
- }
59
- catch {
60
- continue;
61
- }
62
- }
63
- return this.makeAssessment(rule.riskLevel, [`Custom rule matched: ${rule.actionType}`], `Custom rule override for ${rule.actionType}`);
64
- }
65
- return null;
66
- }
67
- evaluateDefaultRules(action, context) {
68
- const handlers = {
69
- file_write: () => this.classifyFileWrite(action),
70
- file_delete: () => this.classifyFileDelete(action, context),
71
- bash_exec: () => this.classifyBashExec(action),
72
- git_push: () => this.classifyGitPush(action),
73
- skill_generate: () => this.classifySkillGenerate(action),
74
- config_modify: () => this.classifyConfigModify(action),
75
- dependency_install: () => this.classifyDependencyInstall(),
76
- external_api_call: () => this.classifyExternalApiCall(action),
77
- };
78
- const handler = handlers[action.actionType];
79
- if (handler)
80
- return handler();
81
- return this.makeAssessment('LOW', [], `Unknown action type: ${action.actionType}`);
82
- }
83
- classifyFileWrite(action) {
84
- const normalized = action.target.replace(/\\/g, '/').replace(/^\.\//, '');
85
- if (SENTINEL_PROTECTED_RE.test(normalized)) {
86
- return {
87
- riskLevel: 'HIGH',
88
- score: 100,
89
- factors: ['Sentinel protected file modification attempted'],
90
- reasoning: 'Modifying files in src/lib/autonomy/ is blocked',
91
- blocked: true,
92
- };
93
- }
94
- for (const pattern of SECURITY_FILE_PATTERNS) {
95
- if (pattern.test(action.target)) {
96
- return this.makeAssessment('HIGH', [`Security-sensitive file: ${action.target}`], 'Security file modification requires elevated risk level');
97
- }
98
- }
99
- return this.makeAssessment('LOW', [], 'Standard file write operation');
100
- }
101
- classifyFileDelete(action, context) {
102
- if (context?.recentDeleteCount !== undefined && context.recentDeleteCount >= 5) {
103
- return this.makeAssessment('HIGH', [`Mass delete detected: ${context.recentDeleteCount} files in last 60s`], 'Mass file deletion detected');
104
- }
105
- return this.makeAssessment('MEDIUM', [], 'File deletion operation');
106
- }
107
- classifyBashExec(action) {
108
- if (DANGEROUS_BASH_RE.test(action.target)) {
109
- return this.makeAssessment('HIGH', [`Dangerous command detected in: ${action.target}`], 'Bash command contains dangerous patterns');
110
- }
111
- return this.makeAssessment('MEDIUM', [], 'Standard bash execution');
112
- }
113
- classifyGitPush(action) {
114
- const paramsStr = JSON.stringify(action.params ?? {});
115
- const combined = `${action.target} ${paramsStr}`;
116
- if (/--force\b/.test(combined) || /["']?force["']?\s*:\s*true/.test(paramsStr)) {
117
- return this.makeAssessment('HIGH', ['Force push detected'], 'Git force push requires elevated risk level');
118
- }
119
- return this.makeAssessment('HIGH', [], 'Git push operation');
120
- }
121
- classifySkillGenerate(action) {
122
- if (/\brule\b/i.test(action.target)) {
123
- return this.makeAssessment('MEDIUM', ['Rule generation detected'], 'Skill generation involving rules');
124
- }
125
- return this.makeAssessment('LOW', [], 'Standard skill generation');
126
- }
127
- classifyConfigModify(action) {
128
- if (/\bsentinel\b/i.test(action.target)) {
129
- return this.makeAssessment('HIGH', ['Sentinel configuration modification'], 'Modifying sentinel configuration requires elevated risk level');
130
- }
131
- return this.makeAssessment('MEDIUM', [], 'Configuration modification');
132
- }
133
- classifyDependencyInstall() {
134
- return this.makeAssessment('MEDIUM', [], 'Dependency installation');
135
- }
136
- classifyExternalApiCall(action) {
137
- const paramsStr = JSON.stringify(action.params ?? {});
138
- if (AUTH_CREDENTIAL_RE.test(paramsStr)) {
139
- return this.makeAssessment('HIGH', ['Authentication credentials detected in API call'], 'External API call with authentication');
140
- }
141
- return this.makeAssessment('LOW', [], 'Standard external API call');
142
- }
143
- makeAssessment(riskLevel, factors, reasoning) {
144
- return { riskLevel, score: SCORE_DEFAULTS[riskLevel], factors, reasoning };
145
- }
146
- }
147
- //# sourceMappingURL=RiskClassifier.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"RiskClassifier.js","sourceRoot":"","sources":["../../../../src/infra/lib/autonomy/RiskClassifier.ts"],"names":[],"mappings":"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"}
@@ -1,51 +0,0 @@
1
- import type Database from 'better-sqlite3';
2
- import type { AgentActionEvent, RiskLevel } from './schemas.js';
3
- import type { EventBus } from './EventBus.js';
4
- import type { AuditStore } from './AuditStore.js';
5
- import { RiskClassifier } from './RiskClassifier.js';
6
- import type { CustomRiskRule } from './RiskClassifier.js';
7
- import { PolicyEngine } from './PolicyEngine.js';
8
- import type { PolicyDecision } from './PolicyEngine.js';
9
- export interface InterceptResult {
10
- allowed: boolean;
11
- riskLevel: RiskLevel;
12
- policyDecision: PolicyDecision;
13
- auditId: string;
14
- }
15
- interface StorageProvider {
16
- getDatabase(): Database.Database;
17
- }
18
- export interface SentinelDeps {
19
- storage: StorageProvider;
20
- eventBus: EventBus;
21
- auditStore: AuditStore;
22
- projectRoot?: string;
23
- customRules?: CustomRiskRule[];
24
- }
25
- export declare class SecuritySentinel {
26
- private static instance;
27
- private readonly classifier;
28
- private readonly policyEngine;
29
- private readonly eventBus;
30
- private readonly auditStore;
31
- private readonly db;
32
- private readonly projectRoot;
33
- private readonly recentDeleteStmt;
34
- private constructor();
35
- static getInstance(deps: SentinelDeps): SecuritySentinel;
36
- static resetInstance(): void;
37
- intercept(action: AgentActionEvent): InterceptResult;
38
- isImmutable(): boolean;
39
- getSentinelFiles(): ReadonlyArray<string>;
40
- getClassifier(): RiskClassifier;
41
- getPolicyEngine(): PolicyEngine;
42
- private normalizeAction;
43
- private normalizePath;
44
- private buildContext;
45
- private blockedDecision;
46
- private emitPolicyCheck;
47
- private recordAudit;
48
- }
49
- export declare function isSentinelProtectedPath(target: string): boolean;
50
- export {};
51
- //# sourceMappingURL=SecuritySentinel.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SecuritySentinel.d.ts","sourceRoot":"","sources":["../../../../src/infra/lib/autonomy/SecuritySentinel.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAChE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,KAAK,EAAkB,cAAc,EAAyB,MAAM,qBAAqB,CAAC;AACjG,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAiBxD,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,SAAS,CAAC;IACrB,cAAc,EAAE,cAAc,CAAC;IAC/B,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,UAAU,eAAe;IACvB,WAAW,IAAI,QAAQ,CAAC,QAAQ,CAAC;CAClC;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,eAAe,CAAC;IACzB,QAAQ,EAAE,QAAQ,CAAC;IACnB,UAAU,EAAE,UAAU,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,cAAc,EAAE,CAAC;CAChC;AAED,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAiC;IAExD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAiB;IAC5C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAe;IAC5C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAW;IACpC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAa;IACxC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAoB;IACvC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAqB;IAEtD,OAAO;IAaP,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,YAAY,GAAG,gBAAgB;IAOxD,MAAM,CAAC,aAAa,IAAI,IAAI;IAI5B,SAAS,CAAC,MAAM,EAAE,gBAAgB,GAAG,eAAe;IAmCpD,WAAW,IAAI,OAAO;IAItB,gBAAgB,IAAI,aAAa,CAAC,MAAM,CAAC;IAIzC,aAAa,IAAI,cAAc;IAI/B,eAAe,IAAI,YAAY;IAI/B,OAAO,CAAC,eAAe;IAKvB,OAAO,CAAC,aAAa;IAcrB,OAAO,CAAC,YAAY;IAOpB,OAAO,CAAC,eAAe;IASvB,OAAO,CAAC,eAAe;IAuBvB,OAAO,CAAC,WAAW;CAsBpB;AAED,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAG/D"}
@@ -1,162 +0,0 @@
1
- import { resolve, relative } from 'path';
2
- import { realpathSync } from 'fs';
3
- import { RiskClassifier } from './RiskClassifier.js';
4
- import { PolicyEngine } from './PolicyEngine.js';
5
- const SENTINEL_PATH_PREFIX = 'src/lib/autonomy/';
6
- const SENTINEL_FILES = [
7
- 'src/lib/autonomy/RiskClassifier.ts',
8
- 'src/lib/autonomy/PolicyEngine.ts',
9
- 'src/lib/autonomy/SecuritySentinel.ts',
10
- 'src/lib/autonomy/EventBus.ts',
11
- 'src/lib/autonomy/AuditStore.ts',
12
- 'src/lib/autonomy/EventOutbox.ts',
13
- 'src/lib/autonomy/schemas.ts',
14
- 'src/lib/autonomy/index.ts',
15
- ];
16
- const RECENT_DELETE_WINDOW_MS = 60_000;
17
- export class SecuritySentinel {
18
- static instance = null;
19
- classifier;
20
- policyEngine;
21
- eventBus;
22
- auditStore;
23
- db;
24
- projectRoot;
25
- recentDeleteStmt;
26
- constructor(deps) {
27
- this.classifier = new RiskClassifier(deps.customRules);
28
- this.policyEngine = new PolicyEngine(deps.storage);
29
- this.eventBus = deps.eventBus;
30
- this.auditStore = deps.auditStore;
31
- this.db = deps.storage.getDatabase();
32
- this.projectRoot = deps.projectRoot ?? process.cwd();
33
- this.recentDeleteStmt = this.db.prepare(`SELECT COUNT(*) as count FROM audit_events
34
- WHERE agentId = ? AND actionType = 'file_delete' AND createdAt >= ?`);
35
- }
36
- static getInstance(deps) {
37
- if (!SecuritySentinel.instance) {
38
- SecuritySentinel.instance = new SecuritySentinel(deps);
39
- }
40
- return SecuritySentinel.instance;
41
- }
42
- static resetInstance() {
43
- SecuritySentinel.instance = null;
44
- }
45
- intercept(action) {
46
- const normalizedAction = this.normalizeAction(action);
47
- // Block paths outside project root
48
- if (normalizedAction.target.startsWith('..')) {
49
- const outsideRisk = {
50
- riskLevel: 'HIGH',
51
- score: 100,
52
- factors: ['Path resolves outside project root'],
53
- reasoning: 'Path traversal outside project root is blocked',
54
- blocked: true,
55
- };
56
- const decision = this.blockedDecision(outsideRisk);
57
- this.emitPolicyCheck(normalizedAction, outsideRisk, decision);
58
- const auditId = this.recordAudit(normalizedAction, outsideRisk, decision);
59
- return { allowed: false, riskLevel: 'HIGH', policyDecision: decision, auditId };
60
- }
61
- const context = this.buildContext(normalizedAction);
62
- const risk = this.classifier.classify(normalizedAction, context);
63
- const policyDecision = risk.blocked
64
- ? this.blockedDecision(risk)
65
- : this.policyEngine.evaluate(normalizedAction, risk);
66
- this.emitPolicyCheck(normalizedAction, risk, policyDecision);
67
- const auditId = this.recordAudit(normalizedAction, risk, policyDecision);
68
- return {
69
- allowed: policyDecision.allowed,
70
- riskLevel: risk.riskLevel,
71
- policyDecision,
72
- auditId,
73
- };
74
- }
75
- isImmutable() {
76
- return true;
77
- }
78
- getSentinelFiles() {
79
- return SENTINEL_FILES;
80
- }
81
- getClassifier() {
82
- return this.classifier;
83
- }
84
- getPolicyEngine() {
85
- return this.policyEngine;
86
- }
87
- normalizeAction(action) {
88
- const normalizedTarget = this.normalizePath(action.target);
89
- return { ...action, target: normalizedTarget };
90
- }
91
- normalizePath(target) {
92
- const resolved = resolve(this.projectRoot, target);
93
- const rel = relative(this.projectRoot, resolved).replace(/\\/g, '/');
94
- if (rel.startsWith('..'))
95
- return rel;
96
- try {
97
- const real = realpathSync(resolved);
98
- const realRel = relative(this.projectRoot, real).replace(/\\/g, '/');
99
- return realRel.startsWith('..') ? realRel : realRel;
100
- }
101
- catch {
102
- return rel;
103
- }
104
- }
105
- buildContext(action) {
106
- if (action.actionType !== 'file_delete')
107
- return undefined;
108
- const cutoff = new Date(Date.now() - RECENT_DELETE_WINDOW_MS).toISOString();
109
- const row = this.recentDeleteStmt.get(action.agentId, cutoff);
110
- return { recentDeleteCount: row.count };
111
- }
112
- blockedDecision(risk) {
113
- return {
114
- allowed: false,
115
- reason: `Sentinel files are protected: ${risk.reasoning}`,
116
- requiredAction: 'block',
117
- matchedPolicies: ['sentinel-immutability'],
118
- };
119
- }
120
- emitPolicyCheck(action, risk, decision) {
121
- try {
122
- this.eventBus.emit('policy_check', {
123
- actionEvent: {
124
- agentId: action.agentId,
125
- actionType: action.actionType,
126
- target: action.target,
127
- params: action.params,
128
- riskLevel: risk.riskLevel,
129
- },
130
- policies: decision.matchedPolicies,
131
- result: decision.allowed ? 'allowed' : (decision.requiredAction === 'confirm' ? 'needs_confirmation' : 'blocked'),
132
- duration: 0,
133
- });
134
- }
135
- catch {
136
- // Policy check event emission failure should not break intercept
137
- }
138
- }
139
- recordAudit(action, risk, decision) {
140
- const outcome = decision.allowed ? 'allowed' : 'blocked';
141
- return this.auditStore.record({
142
- correlationId: action.correlationId ?? `sentinel-${Date.now()}`,
143
- eventType: 'policy_check',
144
- agentId: action.agentId,
145
- actionType: action.actionType,
146
- riskLevel: risk.riskLevel,
147
- payload: {
148
- target: action.target,
149
- riskScore: risk.score,
150
- factors: risk.factors,
151
- matchedPolicies: decision.matchedPolicies,
152
- reason: decision.reason,
153
- },
154
- outcome,
155
- });
156
- }
157
- }
158
- export function isSentinelProtectedPath(target) {
159
- const normalized = target.replace(/\\/g, '/').replace(/^\.\//, '');
160
- return normalized.startsWith(SENTINEL_PATH_PREFIX);
161
- }
162
- //# sourceMappingURL=SecuritySentinel.js.map