atabey 0.0.23 → 0.0.26

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 (435) hide show
  1. package/ATABEY.md +5 -0
  2. package/dist/atabey/src/cli/commands/dashboard.js +20 -19
  3. package/dist/atabey/src/cli/commands/dashboard.js.map +1 -1
  4. package/dist/atabey/src/cli/commands/init/scaffold-core.js +10 -1
  5. package/dist/atabey/src/cli/commands/init/scaffold-core.js.map +1 -1
  6. package/dist/atabey/src/cli/commands/init/scaffold-docs.js +2 -2
  7. package/dist/atabey/src/cli/commands/init/scaffold-docs.js.map +1 -1
  8. package/dist/atabey/src/cli/commands/init/scaffold-standards.js +1 -1
  9. package/dist/atabey/src/cli/commands/init.js +12 -18
  10. package/dist/atabey/src/cli/commands/init.js.map +1 -1
  11. package/dist/atabey/src/cli/commands/mcp.js +1 -1
  12. package/dist/atabey/src/cli/commands/mcp.js.map +1 -1
  13. package/dist/atabey/src/cli/commands/orchestrate.d.ts +8 -8
  14. package/dist/atabey/src/cli/index.js +50 -3
  15. package/dist/atabey/src/cli/index.js.map +1 -1
  16. package/dist/atabey/src/cli/utils/config-schema.d.ts +19 -19
  17. package/dist/atabey/src/cli/utils/i18n.d.ts +9 -4
  18. package/dist/atabey/src/cli/utils/i18n.js +26 -31
  19. package/dist/atabey/src/cli/utils/i18n.js.map +1 -1
  20. package/dist/atabey/src/cli/utils/pkg.js +1 -0
  21. package/dist/atabey/src/cli/utils/pkg.js.map +1 -1
  22. package/dist/atabey/src/cli/utils/schemas.d.ts +6 -6
  23. package/dist/atabey/src/cli/utils/validate-registry.js +5 -4
  24. package/dist/atabey/src/cli/utils/validate-registry.js.map +1 -1
  25. package/dist/atabey/src/contracts/tasks.d.ts +4 -4
  26. package/dist/atabey/src/modules/agents/registry/manager.js +1 -1
  27. package/dist/atabey/src/modules/agents/registry/security.js +1 -1
  28. package/dist/atabey/src/modules/agents/registry/security.js.map +1 -1
  29. package/dist/atabey/src/modules/contracts/api.d.ts +6 -6
  30. package/dist/atabey/src/modules/engines/agent-executor.js +82 -47
  31. package/dist/atabey/src/modules/engines/agent-executor.js.map +1 -1
  32. package/dist/atabey/src/modules/engines/agent-loop.d.ts +5 -2
  33. package/dist/atabey/src/modules/engines/agent-loop.js +39 -13
  34. package/dist/atabey/src/modules/engines/agent-loop.js.map +1 -1
  35. package/dist/atabey/src/modules/engines/file-lock.d.ts +18 -8
  36. package/dist/atabey/src/modules/engines/file-lock.js +95 -101
  37. package/dist/atabey/src/modules/engines/file-lock.js.map +1 -1
  38. package/dist/atabey/src/modules/engines/policy-engine.js +5 -3
  39. package/dist/atabey/src/modules/engines/policy-engine.js.map +1 -1
  40. package/dist/atabey/src/modules/engines/routing-engine.d.ts +3 -0
  41. package/dist/atabey/src/modules/engines/routing-engine.js +14 -4
  42. package/dist/atabey/src/modules/engines/routing-engine.js.map +1 -1
  43. package/dist/atabey/src/modules/engines/sandbox.d.ts +31 -0
  44. package/dist/atabey/src/modules/engines/sandbox.js +57 -0
  45. package/dist/atabey/src/modules/engines/sandbox.js.map +1 -0
  46. package/dist/atabey/src/modules/engines/worker-pool.d.ts +8 -0
  47. package/dist/atabey/src/modules/engines/worker-pool.js +9 -0
  48. package/dist/atabey/src/modules/engines/worker-pool.js.map +1 -0
  49. package/dist/atabey/src/modules/engines/worker-script.d.ts +8 -0
  50. package/dist/atabey/src/modules/engines/worker-script.js +99 -0
  51. package/dist/atabey/src/modules/engines/worker-script.js.map +1 -0
  52. package/dist/atabey/src/modules/memory/core.js +1 -1
  53. package/dist/atabey/src/modules/memory/core.js.map +1 -1
  54. package/dist/atabey/src/shared/file-lock.d.ts +1 -0
  55. package/dist/atabey/src/shared/file-lock.js +2 -0
  56. package/dist/atabey/src/shared/file-lock.js.map +1 -0
  57. package/dist/atabey/src/shared/job-queue.d.ts +1 -0
  58. package/dist/atabey/src/shared/job-queue.js +2 -0
  59. package/dist/atabey/src/shared/job-queue.js.map +1 -0
  60. package/dist/atabey/src/shared/resilience.d.ts +1 -0
  61. package/dist/atabey/src/shared/resilience.js +2 -0
  62. package/dist/atabey/src/shared/resilience.js.map +1 -0
  63. package/dist/atabey/src/shared/sandbox-runtime.d.ts +1 -0
  64. package/dist/atabey/src/shared/sandbox-runtime.js +2 -0
  65. package/dist/atabey/src/shared/sandbox-runtime.js.map +1 -0
  66. package/dist/atabey/src/shared/sandbox.d.ts +1 -0
  67. package/dist/atabey/src/shared/sandbox.js +2 -0
  68. package/dist/atabey/src/shared/sandbox.js.map +1 -0
  69. package/dist/atabey/src/shared/storage.d.ts +8 -0
  70. package/dist/atabey/src/shared/storage.js +51 -40
  71. package/dist/atabey/src/shared/storage.js.map +1 -1
  72. package/dist/atabey/src/shared/worker-pool.d.ts +1 -0
  73. package/dist/atabey/src/shared/worker-pool.js +2 -0
  74. package/dist/atabey/src/shared/worker-pool.js.map +1 -0
  75. package/dist/atabey-mcp/src/mcp/utils/auto-rollback.js +114 -5
  76. package/dist/atabey-mcp/src/mcp/utils/auto-rollback.js.map +1 -1
  77. package/dist/atabey-mcp/src/mcp/utils/loop-detector.d.ts +1 -0
  78. package/dist/atabey-mcp/src/mcp/utils/loop-detector.js +57 -6
  79. package/dist/atabey-mcp/src/mcp/utils/loop-detector.js.map +1 -1
  80. package/dist/atabey-mcp/src/shared/storage.d.ts +9 -0
  81. package/dist/atabey-mcp/src/shared/storage.js +51 -0
  82. package/dist/atabey-mcp/src/shared/storage.js.map +1 -1
  83. package/dist/shared/src/audit-chain.d.ts +51 -0
  84. package/dist/shared/src/audit-chain.js +85 -0
  85. package/dist/shared/src/audit-chain.js.map +1 -0
  86. package/dist/shared/src/audit.d.ts +8 -0
  87. package/dist/shared/src/audit.js +82 -18
  88. package/dist/shared/src/audit.js.map +1 -1
  89. package/dist/shared/src/file-lock.d.ts +85 -0
  90. package/dist/shared/src/file-lock.js +246 -0
  91. package/dist/shared/src/file-lock.js.map +1 -0
  92. package/dist/shared/src/index.d.ts +9 -0
  93. package/dist/shared/src/index.js +9 -0
  94. package/dist/shared/src/index.js.map +1 -1
  95. package/dist/shared/src/job-queue.d.ts +53 -0
  96. package/dist/shared/src/job-queue.js +127 -0
  97. package/dist/shared/src/job-queue.js.map +1 -0
  98. package/dist/shared/src/policy-gate.d.ts +42 -0
  99. package/dist/shared/src/policy-gate.js +148 -0
  100. package/dist/shared/src/policy-gate.js.map +1 -0
  101. package/dist/shared/src/resilience.d.ts +84 -0
  102. package/dist/shared/src/resilience.js +217 -0
  103. package/dist/shared/src/resilience.js.map +1 -0
  104. package/dist/shared/src/sandbox-fs.d.ts +28 -0
  105. package/dist/shared/src/sandbox-fs.js +148 -0
  106. package/dist/shared/src/sandbox-fs.js.map +1 -0
  107. package/dist/shared/src/sandbox-runtime.d.ts +85 -0
  108. package/dist/shared/src/sandbox-runtime.js +250 -0
  109. package/dist/shared/src/sandbox-runtime.js.map +1 -0
  110. package/dist/shared/src/sandbox.d.ts +54 -0
  111. package/dist/shared/src/sandbox.js +179 -0
  112. package/dist/shared/src/sandbox.js.map +1 -0
  113. package/dist/shared/src/worker-pool.d.ts +52 -0
  114. package/dist/shared/src/worker-pool.js +210 -0
  115. package/dist/shared/src/worker-pool.js.map +1 -0
  116. package/dist/shared/src/worker-thread.d.ts +21 -0
  117. package/dist/shared/src/worker-thread.js +67 -0
  118. package/dist/shared/src/worker-thread.js.map +1 -0
  119. package/dist/src/cli/commands/approve.d.ts +1 -0
  120. package/dist/src/cli/commands/approve.js +64 -0
  121. package/dist/src/cli/commands/approve.js.map +1 -0
  122. package/dist/src/cli/commands/check.d.ts +1 -0
  123. package/dist/src/cli/commands/check.js +339 -0
  124. package/dist/src/cli/commands/check.js.map +1 -0
  125. package/dist/src/cli/commands/compliance.d.ts +5 -0
  126. package/dist/src/cli/commands/compliance.js +43 -0
  127. package/dist/src/cli/commands/compliance.js.map +1 -0
  128. package/dist/src/cli/commands/contract.d.ts +10 -0
  129. package/dist/src/cli/commands/contract.js +52 -0
  130. package/dist/src/cli/commands/contract.js.map +1 -0
  131. package/dist/src/cli/commands/coverage.d.ts +1 -0
  132. package/dist/src/cli/commands/coverage.js +121 -0
  133. package/dist/src/cli/commands/coverage.js.map +1 -0
  134. package/dist/src/cli/commands/dashboard.d.ts +5 -0
  135. package/dist/src/cli/commands/dashboard.js +753 -0
  136. package/dist/src/cli/commands/dashboard.js.map +1 -0
  137. package/dist/src/cli/commands/explorer.d.ts +2 -0
  138. package/dist/src/cli/commands/explorer.js +44 -0
  139. package/dist/src/cli/commands/explorer.js.map +1 -0
  140. package/dist/src/cli/commands/git.d.ts +2 -0
  141. package/dist/src/cli/commands/git.js +40 -0
  142. package/dist/src/cli/commands/git.js.map +1 -0
  143. package/dist/src/cli/commands/index-codebase.d.ts +4 -0
  144. package/dist/src/cli/commands/index-codebase.js +63 -0
  145. package/dist/src/cli/commands/index-codebase.js.map +1 -0
  146. package/dist/src/cli/commands/init/create-agent.d.ts +4 -0
  147. package/dist/src/cli/commands/init/create-agent.js +59 -0
  148. package/dist/src/cli/commands/init/create-agent.js.map +1 -0
  149. package/dist/src/cli/commands/init/scaffold-core.d.ts +13 -0
  150. package/dist/src/cli/commands/init/scaffold-core.js +188 -0
  151. package/dist/src/cli/commands/init/scaffold-core.js.map +1 -0
  152. package/dist/src/cli/commands/init/scaffold-docs.d.ts +4 -0
  153. package/dist/src/cli/commands/init/scaffold-docs.js +36 -0
  154. package/dist/src/cli/commands/init/scaffold-docs.js.map +1 -0
  155. package/dist/src/cli/commands/init/scaffold-ops.d.ts +1 -0
  156. package/dist/src/cli/commands/init/scaffold-ops.js +81 -0
  157. package/dist/src/cli/commands/init/scaffold-ops.js.map +1 -0
  158. package/dist/src/cli/commands/init/scaffold-standards.d.ts +2 -0
  159. package/dist/src/cli/commands/init/scaffold-standards.js +84 -0
  160. package/dist/src/cli/commands/init/scaffold-standards.js.map +1 -0
  161. package/dist/src/cli/commands/init.d.ts +11 -0
  162. package/dist/src/cli/commands/init.js +371 -0
  163. package/dist/src/cli/commands/init.js.map +1 -0
  164. package/dist/src/cli/commands/knowledge.d.ts +2 -0
  165. package/dist/src/cli/commands/knowledge.js +16 -0
  166. package/dist/src/cli/commands/knowledge.js.map +1 -0
  167. package/dist/src/cli/commands/lint.d.ts +4 -0
  168. package/dist/src/cli/commands/lint.js +24 -0
  169. package/dist/src/cli/commands/lint.js.map +1 -0
  170. package/dist/src/cli/commands/log.d.ts +10 -0
  171. package/dist/src/cli/commands/log.js +14 -0
  172. package/dist/src/cli/commands/log.js.map +1 -0
  173. package/dist/src/cli/commands/mcp.d.ts +11 -0
  174. package/dist/src/cli/commands/mcp.js +128 -0
  175. package/dist/src/cli/commands/mcp.js.map +1 -0
  176. package/dist/src/cli/commands/memory.d.ts +1 -0
  177. package/dist/src/cli/commands/memory.js +5 -0
  178. package/dist/src/cli/commands/memory.js.map +1 -0
  179. package/dist/src/cli/commands/orchestrate.d.ts +62 -0
  180. package/dist/src/cli/commands/orchestrate.js +263 -0
  181. package/dist/src/cli/commands/orchestrate.js.map +1 -0
  182. package/dist/src/cli/commands/plan.d.ts +11 -0
  183. package/dist/src/cli/commands/plan.js +120 -0
  184. package/dist/src/cli/commands/plan.js.map +1 -0
  185. package/dist/src/cli/commands/quickstart.d.ts +9 -0
  186. package/dist/src/cli/commands/quickstart.js +60 -0
  187. package/dist/src/cli/commands/quickstart.js.map +1 -0
  188. package/dist/src/cli/commands/script.d.ts +1 -0
  189. package/dist/src/cli/commands/script.js +28 -0
  190. package/dist/src/cli/commands/script.js.map +1 -0
  191. package/dist/src/cli/commands/security.d.ts +1 -0
  192. package/dist/src/cli/commands/security.js +34 -0
  193. package/dist/src/cli/commands/security.js.map +1 -0
  194. package/dist/src/cli/commands/status.d.ts +4 -0
  195. package/dist/src/cli/commands/status.js +122 -0
  196. package/dist/src/cli/commands/status.js.map +1 -0
  197. package/dist/src/cli/commands/trace.d.ts +10 -0
  198. package/dist/src/cli/commands/trace.js +108 -0
  199. package/dist/src/cli/commands/trace.js.map +1 -0
  200. package/dist/src/cli/index.d.ts +2 -0
  201. package/dist/src/cli/index.js +289 -0
  202. package/dist/src/cli/index.js.map +1 -0
  203. package/dist/src/cli/platforms/core.d.ts +16 -0
  204. package/dist/src/cli/platforms/core.js +77 -0
  205. package/dist/src/cli/platforms/core.js.map +1 -0
  206. package/dist/src/cli/platforms/index.d.ts +5 -0
  207. package/dist/src/cli/platforms/index.js +6 -0
  208. package/dist/src/cli/platforms/index.js.map +1 -0
  209. package/dist/src/cli/platforms/paths.d.ts +15 -0
  210. package/dist/src/cli/platforms/paths.js +102 -0
  211. package/dist/src/cli/platforms/paths.js.map +1 -0
  212. package/dist/src/cli/platforms/scaffold.d.ts +2 -0
  213. package/dist/src/cli/platforms/scaffold.js +73 -0
  214. package/dist/src/cli/platforms/scaffold.js.map +1 -0
  215. package/dist/src/cli/platforms/utils.d.ts +4 -0
  216. package/dist/src/cli/platforms/utils.js +76 -0
  217. package/dist/src/cli/platforms/utils.js.map +1 -0
  218. package/dist/src/cli/shims.d.ts +1 -0
  219. package/dist/src/cli/shims.js +67 -0
  220. package/dist/src/cli/shims.js.map +1 -0
  221. package/dist/src/cli/utils/claude.d.ts +8 -0
  222. package/dist/src/cli/utils/claude.js +58 -0
  223. package/dist/src/cli/utils/claude.js.map +1 -0
  224. package/dist/src/cli/utils/compliance.d.ts +42 -0
  225. package/dist/src/cli/utils/compliance.js +150 -0
  226. package/dist/src/cli/utils/compliance.js.map +1 -0
  227. package/dist/src/cli/utils/config-schema.d.ts +256 -0
  228. package/dist/src/cli/utils/config-schema.js +67 -0
  229. package/dist/src/cli/utils/config-schema.js.map +1 -0
  230. package/dist/src/cli/utils/fs.d.ts +10 -0
  231. package/dist/src/cli/utils/fs.js +139 -0
  232. package/dist/src/cli/utils/fs.js.map +1 -0
  233. package/dist/src/cli/utils/i18n.d.ts +21 -0
  234. package/dist/src/cli/utils/i18n.js +36 -0
  235. package/dist/src/cli/utils/i18n.js.map +1 -0
  236. package/dist/src/cli/utils/memory.d.ts +45 -0
  237. package/dist/src/cli/utils/memory.js +339 -0
  238. package/dist/src/cli/utils/memory.js.map +1 -0
  239. package/dist/src/cli/utils/pkg.d.ts +42 -0
  240. package/dist/src/cli/utils/pkg.js +281 -0
  241. package/dist/src/cli/utils/pkg.js.map +1 -0
  242. package/dist/src/cli/utils/quality.d.ts +25 -0
  243. package/dist/src/cli/utils/quality.js +61 -0
  244. package/dist/src/cli/utils/quality.js.map +1 -0
  245. package/dist/src/cli/utils/schemas.d.ts +49 -0
  246. package/dist/src/cli/utils/schemas.js +20 -0
  247. package/dist/src/cli/utils/schemas.js.map +1 -0
  248. package/dist/src/cli/utils/string.d.ts +7 -0
  249. package/dist/src/cli/utils/string.js +50 -0
  250. package/dist/src/cli/utils/string.js.map +1 -0
  251. package/dist/src/cli/utils/time.d.ts +2 -0
  252. package/dist/src/cli/utils/time.js +28 -0
  253. package/dist/src/cli/utils/time.js.map +1 -0
  254. package/dist/src/cli/utils/ui.d.ts +53 -0
  255. package/dist/src/cli/utils/ui.js +101 -0
  256. package/dist/src/cli/utils/ui.js.map +1 -0
  257. package/dist/src/cli/utils/validate-registry.d.ts +4 -0
  258. package/dist/src/cli/utils/validate-registry.js +130 -0
  259. package/dist/src/cli/utils/validate-registry.js.map +1 -0
  260. package/dist/src/contracts/index.d.ts +1 -0
  261. package/dist/src/contracts/index.js +2 -0
  262. package/dist/src/contracts/index.js.map +1 -0
  263. package/dist/src/contracts/tasks.d.ts +44 -0
  264. package/dist/src/contracts/tasks.js +21 -0
  265. package/dist/src/contracts/tasks.js.map +1 -0
  266. package/dist/src/modules/agents/definitions.d.ts +26 -0
  267. package/dist/src/modules/agents/definitions.js +559 -0
  268. package/dist/src/modules/agents/definitions.js.map +1 -0
  269. package/dist/src/modules/agents/registry/analyst.d.ts +2 -0
  270. package/dist/src/modules/agents/registry/analyst.js +40 -0
  271. package/dist/src/modules/agents/registry/analyst.js.map +1 -0
  272. package/dist/src/modules/agents/registry/architect.d.ts +2 -0
  273. package/dist/src/modules/agents/registry/architect.js +43 -0
  274. package/dist/src/modules/agents/registry/architect.js.map +1 -0
  275. package/dist/src/modules/agents/registry/backend.d.ts +2 -0
  276. package/dist/src/modules/agents/registry/backend.js +51 -0
  277. package/dist/src/modules/agents/registry/backend.js.map +1 -0
  278. package/dist/src/modules/agents/registry/database.d.ts +2 -0
  279. package/dist/src/modules/agents/registry/database.js +46 -0
  280. package/dist/src/modules/agents/registry/database.js.map +1 -0
  281. package/dist/src/modules/agents/registry/devops.d.ts +2 -0
  282. package/dist/src/modules/agents/registry/devops.js +46 -0
  283. package/dist/src/modules/agents/registry/devops.js.map +1 -0
  284. package/dist/src/modules/agents/registry/explorer.d.ts +2 -0
  285. package/dist/src/modules/agents/registry/explorer.js +38 -0
  286. package/dist/src/modules/agents/registry/explorer.js.map +1 -0
  287. package/dist/src/modules/agents/registry/frontend.d.ts +2 -0
  288. package/dist/src/modules/agents/registry/frontend.js +53 -0
  289. package/dist/src/modules/agents/registry/frontend.js.map +1 -0
  290. package/dist/src/modules/agents/registry/git.d.ts +2 -0
  291. package/dist/src/modules/agents/registry/git.js +37 -0
  292. package/dist/src/modules/agents/registry/git.js.map +1 -0
  293. package/dist/src/modules/agents/registry/manager.d.ts +2 -0
  294. package/dist/src/modules/agents/registry/manager.js +65 -0
  295. package/dist/src/modules/agents/registry/manager.js.map +1 -0
  296. package/dist/src/modules/agents/registry/mobile.d.ts +2 -0
  297. package/dist/src/modules/agents/registry/mobile.js +42 -0
  298. package/dist/src/modules/agents/registry/mobile.js.map +1 -0
  299. package/dist/src/modules/agents/registry/native.d.ts +2 -0
  300. package/dist/src/modules/agents/registry/native.js +42 -0
  301. package/dist/src/modules/agents/registry/native.js.map +1 -0
  302. package/dist/src/modules/agents/registry/quality.d.ts +2 -0
  303. package/dist/src/modules/agents/registry/quality.js +44 -0
  304. package/dist/src/modules/agents/registry/quality.js.map +1 -0
  305. package/dist/src/modules/agents/registry/security.d.ts +2 -0
  306. package/dist/src/modules/agents/registry/security.js +43 -0
  307. package/dist/src/modules/agents/registry/security.js.map +1 -0
  308. package/dist/src/modules/agents/types.d.ts +33 -0
  309. package/dist/src/modules/agents/types.js +2 -0
  310. package/dist/src/modules/agents/types.js.map +1 -0
  311. package/dist/src/modules/contracts/api.d.ts +178 -0
  312. package/dist/src/modules/contracts/api.js +56 -0
  313. package/dist/src/modules/contracts/api.js.map +1 -0
  314. package/dist/src/modules/contracts/index.d.ts +5 -0
  315. package/dist/src/modules/contracts/index.js +6 -0
  316. package/dist/src/modules/contracts/index.js.map +1 -0
  317. package/dist/src/modules/engines/agent-executor.d.ts +46 -0
  318. package/dist/src/modules/engines/agent-executor.js +241 -0
  319. package/dist/src/modules/engines/agent-executor.js.map +1 -0
  320. package/dist/src/modules/engines/agent-loop.d.ts +34 -0
  321. package/dist/src/modules/engines/agent-loop.js +102 -0
  322. package/dist/src/modules/engines/agent-loop.js.map +1 -0
  323. package/dist/src/modules/engines/contract-engine.d.ts +46 -0
  324. package/dist/src/modules/engines/contract-engine.js +116 -0
  325. package/dist/src/modules/engines/contract-engine.js.map +1 -0
  326. package/dist/src/modules/engines/crud-governance.d.ts +66 -0
  327. package/dist/src/modules/engines/crud-governance.js +219 -0
  328. package/dist/src/modules/engines/crud-governance.js.map +1 -0
  329. package/dist/src/modules/engines/discovery-engine.d.ts +42 -0
  330. package/dist/src/modules/engines/discovery-engine.js +161 -0
  331. package/dist/src/modules/engines/discovery-engine.js.map +1 -0
  332. package/dist/src/modules/engines/evaluation-engine.d.ts +18 -0
  333. package/dist/src/modules/engines/evaluation-engine.js +171 -0
  334. package/dist/src/modules/engines/evaluation-engine.js.map +1 -0
  335. package/dist/src/modules/engines/file-lock.d.ts +41 -0
  336. package/dist/src/modules/engines/file-lock.js +168 -0
  337. package/dist/src/modules/engines/file-lock.js.map +1 -0
  338. package/dist/src/modules/engines/health-engine.d.ts +22 -0
  339. package/dist/src/modules/engines/health-engine.js +127 -0
  340. package/dist/src/modules/engines/health-engine.js.map +1 -0
  341. package/dist/src/modules/engines/phase-engine.d.ts +82 -0
  342. package/dist/src/modules/engines/phase-engine.js +211 -0
  343. package/dist/src/modules/engines/phase-engine.js.map +1 -0
  344. package/dist/src/modules/engines/planning-engine.d.ts +25 -0
  345. package/dist/src/modules/engines/planning-engine.js +80 -0
  346. package/dist/src/modules/engines/planning-engine.js.map +1 -0
  347. package/dist/src/modules/engines/policy-engine.d.ts +63 -0
  348. package/dist/src/modules/engines/policy-engine.js +186 -0
  349. package/dist/src/modules/engines/policy-engine.js.map +1 -0
  350. package/dist/src/modules/engines/quality-gate.d.ts +31 -0
  351. package/dist/src/modules/engines/quality-gate.js +95 -0
  352. package/dist/src/modules/engines/quality-gate.js.map +1 -0
  353. package/dist/src/modules/engines/risk-engine.d.ts +34 -0
  354. package/dist/src/modules/engines/risk-engine.js +201 -0
  355. package/dist/src/modules/engines/risk-engine.js.map +1 -0
  356. package/dist/src/modules/engines/routing-engine.d.ts +96 -0
  357. package/dist/src/modules/engines/routing-engine.js +505 -0
  358. package/dist/src/modules/engines/routing-engine.js.map +1 -0
  359. package/dist/src/modules/engines/session-engine.d.ts +68 -0
  360. package/dist/src/modules/engines/session-engine.js +141 -0
  361. package/dist/src/modules/engines/session-engine.js.map +1 -0
  362. package/dist/src/modules/engines/types.d.ts +51 -0
  363. package/dist/src/modules/engines/types.js +2 -0
  364. package/dist/src/modules/engines/types.js.map +1 -0
  365. package/dist/src/modules/memory/core.d.ts +42 -0
  366. package/dist/src/modules/memory/core.js +100 -0
  367. package/dist/src/modules/memory/core.js.map +1 -0
  368. package/dist/src/modules/memory/embedding.d.ts +28 -0
  369. package/dist/src/modules/memory/embedding.js +131 -0
  370. package/dist/src/modules/memory/embedding.js.map +1 -0
  371. package/dist/src/modules/memory/types.d.ts +18 -0
  372. package/dist/src/modules/memory/types.js +2 -0
  373. package/dist/src/modules/memory/types.js.map +1 -0
  374. package/dist/src/modules/memory/vector-store.d.ts +13 -0
  375. package/dist/src/modules/memory/vector-store.js +75 -0
  376. package/dist/src/modules/memory/vector-store.js.map +1 -0
  377. package/dist/src/modules/providers/definitions.d.ts +9 -0
  378. package/dist/src/modules/providers/definitions.js +141 -0
  379. package/dist/src/modules/providers/definitions.js.map +1 -0
  380. package/dist/src/modules/providers/llm-provider.d.ts +87 -0
  381. package/dist/src/modules/providers/llm-provider.js +242 -0
  382. package/dist/src/modules/providers/llm-provider.js.map +1 -0
  383. package/dist/src/modules/providers/registry.d.ts +12 -0
  384. package/dist/src/modules/providers/registry.js +19 -0
  385. package/dist/src/modules/providers/registry.js.map +1 -0
  386. package/dist/src/modules/providers/shared.d.ts +1 -0
  387. package/dist/src/modules/providers/shared.js +104 -0
  388. package/dist/src/modules/providers/shared.js.map +1 -0
  389. package/dist/src/modules/providers/types.d.ts +14 -0
  390. package/dist/src/modules/providers/types.js +2 -0
  391. package/dist/src/modules/providers/types.js.map +1 -0
  392. package/dist/src/modules/skills/adapter-skills.d.ts +70 -0
  393. package/dist/src/modules/skills/adapter-skills.js +450 -0
  394. package/dist/src/modules/skills/adapter-skills.js.map +1 -0
  395. package/dist/src/modules/skills/definitions.d.ts +48 -0
  396. package/dist/src/modules/skills/definitions.js +71 -0
  397. package/dist/src/modules/skills/definitions.js.map +1 -0
  398. package/dist/src/shared/audit.d.ts +1 -0
  399. package/dist/src/shared/audit.js +2 -0
  400. package/dist/src/shared/audit.js.map +1 -0
  401. package/dist/src/shared/constants.d.ts +1 -0
  402. package/dist/src/shared/constants.js +2 -0
  403. package/dist/src/shared/constants.js.map +1 -0
  404. package/dist/src/shared/errors.d.ts +1 -0
  405. package/dist/src/shared/errors.js +2 -0
  406. package/dist/src/shared/errors.js.map +1 -0
  407. package/dist/src/shared/fs.d.ts +1 -0
  408. package/dist/src/shared/fs.js +2 -0
  409. package/dist/src/shared/fs.js.map +1 -0
  410. package/dist/src/shared/lock.d.ts +1 -0
  411. package/dist/src/shared/lock.js +2 -0
  412. package/dist/src/shared/lock.js.map +1 -0
  413. package/dist/src/shared/logger.d.ts +1 -0
  414. package/dist/src/shared/logger.js +2 -0
  415. package/dist/src/shared/logger.js.map +1 -0
  416. package/dist/src/shared/pii.d.ts +1 -0
  417. package/dist/src/shared/pii.js +2 -0
  418. package/dist/src/shared/pii.js.map +1 -0
  419. package/dist/src/shared/retention.d.ts +1 -0
  420. package/dist/src/shared/retention.js +2 -0
  421. package/dist/src/shared/retention.js.map +1 -0
  422. package/dist/src/shared/storage.d.ts +141 -0
  423. package/dist/src/shared/storage.js +332 -0
  424. package/dist/src/shared/storage.js.map +1 -0
  425. package/dist/src/shared/string.d.ts +1 -0
  426. package/dist/src/shared/string.js +2 -0
  427. package/dist/src/shared/string.js.map +1 -0
  428. package/dist/src/shared/types.d.ts +1 -0
  429. package/dist/src/shared/types.js +2 -0
  430. package/dist/src/shared/types.js.map +1 -0
  431. package/package.json +4 -6
  432. package/templates/full/ATABEY_FULL.md +2 -0
  433. package/templates/prompts/new-feature-recipe.md +1 -1
  434. package/templates/standards/architecture-standards.md +1 -1
  435. package/templates/standards/governance-standards.md +3 -3
@@ -0,0 +1,186 @@
1
+ /**
2
+ * [ENGINE] Policy Engine — Language, CLI, Dashboard & Parallel Rules
3
+ *
4
+ * Combines remaining vision items:
5
+ * 5. API Versioning Strategy — URL versioning enforcement
6
+ * 7. Dashboard Live Features — WebSocket ApprovalCenter, CompliancePanel
7
+ * 8. CLI Command Map — .atabey/cli-commands.json management
8
+ * 9. Language Policy Enforcer — English-only comments/variables
9
+ * 10. Parallel Execution Rules — dependency lock, ownership, commit logging
10
+ */
11
+ import fs from "fs";
12
+ import path from "path";
13
+ import { logger } from "../../shared/logger.js";
14
+ import { AtabeyStorage } from "../../shared/storage.js";
15
+ /**
16
+ * Policy Engine — enforces language policy, manages CLI command map,
17
+ * provides dashboard live data, and enforces parallel execution rules.
18
+ */
19
+ export class PolicyEngine {
20
+ // ─── 5. API Versioning Strategy ──────────────────────────────────
21
+ /**
22
+ * Validates that API endpoints use versioned paths (/api/v{N}/...).
23
+ */
24
+ static validateApiVersioning(filePath, content) {
25
+ const violations = [];
26
+ const lines = content.split("\n");
27
+ for (let i = 0; i < lines.length; i++) {
28
+ const line = lines[i];
29
+ // Check for route definitions without version prefix
30
+ const routeMatch = line.match(/\.(get|post|put|delete|patch)\(['"`]\/api\/(?!v\d+\/)/i);
31
+ if (routeMatch) {
32
+ violations.push(`Line ${i + 1}: API route without version prefix: ${line.trim()}`);
33
+ }
34
+ }
35
+ return violations;
36
+ }
37
+ // ─── 7. Dashboard Live Data ─────────────────────────────────────
38
+ /**
39
+ * Returns dashboard live data for WebSocket broadcast.
40
+ */
41
+ static getDashboardData() {
42
+ return {
43
+ agents: AtabeyStorage.getAllAgents().map(a => ({ name: a.name, state: a.state, task: a.task })),
44
+ pendingApprovals: AtabeyStorage.getPendingMessages()
45
+ .filter(m => m.category === "ALERT" || m.category === "ACTION")
46
+ .map(m => ({ traceId: m.traceId, description: m.content?.substring(0, 100), status: m.status })),
47
+ messageQueue: {
48
+ pending: AtabeyStorage.getPendingMessages().length,
49
+ categories: AtabeyStorage.getPendingMessages().reduce((acc, m) => {
50
+ acc[m.category] = (acc[m.category] || 0) + 1;
51
+ return acc;
52
+ }, {}),
53
+ },
54
+ activeTraceId: AtabeyStorage.getMetadata("traceId") || "N/A",
55
+ currentPhase: AtabeyStorage.getMetadata("phase") || "PHASE_0",
56
+ };
57
+ }
58
+ // ─── 8. CLI Command Map Management ──────────────────────────────
59
+ /**
60
+ * Gets the CLI command map from .atabey/cli-commands.json.
61
+ */
62
+ static getCliCommands() {
63
+ const cmdsPath = path.join(process.cwd(), ".atabey", "cli-commands.json");
64
+ if (!fs.existsSync(cmdsPath))
65
+ return PolicyEngine.getDefaultCommands();
66
+ try {
67
+ return JSON.parse(fs.readFileSync(cmdsPath, "utf8"));
68
+ }
69
+ catch {
70
+ return PolicyEngine.getDefaultCommands();
71
+ }
72
+ }
73
+ /**
74
+ * Saves CLI command map.
75
+ */
76
+ static saveCliCommand(command) {
77
+ const cmdsDir = path.join(process.cwd(), ".atabey");
78
+ const cmdsPath = path.join(cmdsDir, "cli-commands.json");
79
+ if (!fs.existsSync(cmdsDir))
80
+ fs.mkdirSync(cmdsDir, { recursive: true });
81
+ const commands = PolicyEngine.getCliCommands();
82
+ const existing = commands.findIndex(c => c.command === command.command);
83
+ if (existing >= 0) {
84
+ commands[existing] = command;
85
+ }
86
+ else {
87
+ commands.push(command);
88
+ }
89
+ fs.writeFileSync(cmdsPath, JSON.stringify(commands, null, 2));
90
+ }
91
+ static getDefaultCommands() {
92
+ return [
93
+ { command: "atabey status", agent: "@manager", description: "Show system status" },
94
+ { command: "atabey approve", agent: "@human", description: "Approve a high-risk operation", outputFormat: "json" },
95
+ { command: "atabey trace:new", agent: "@manager", description: "Create a new trace" },
96
+ { command: "atabey verify-contract", agent: "@architect", description: "Verify contract integrity" },
97
+ { command: "atabey mcp setup", agent: "@manager", description: "Setup MCP server" },
98
+ ];
99
+ }
100
+ // ─── 9. Language Policy Enforcer ────────────────────────────────
101
+ /**
102
+ * Scans files for language policy violations.
103
+ * Rules: comments in English, variable/function names in English, UI text in English.
104
+ */
105
+ static scanLanguagePolicy(filePath, content) {
106
+ const violations = [];
107
+ const lines = content.split("\n");
108
+ const turkishPatterns = [
109
+ /\b(bu|şu|o|ve|veya|ile|için|göre|kadar|sonra|önce|ama|fakat|çünkü|eğer|her|bir|daha|en|çok|az|yeni|eski|büyük|küçük|iyi|kötü|doğru|yanlış)\b/i,
110
+ /\b(yap|et|git|gel|bak|ver|al|tut|koş|dur|otur|kalk|aç|kapa|çalış|oku|yaz|sil|ekle|güncelle|sil|temizle)\b/i,
111
+ ];
112
+ for (let i = 0; i < lines.length; i++) {
113
+ const line = lines[i].trim();
114
+ // Skip empty lines, pure code, and URLs
115
+ if (!line || line.startsWith("// @") || line.startsWith("import") || line.startsWith("export") || line.includes("http"))
116
+ continue;
117
+ // Check comments for Turkish
118
+ const commentMatch = line.match(/\/\/\s*(.+)/);
119
+ if (commentMatch) {
120
+ const comment = commentMatch[1];
121
+ if (turkishPatterns.some(p => p.test(comment))) {
122
+ violations.push({ file: filePath, line: i + 1, type: "turkish_comment", content: comment.substring(0, 80) });
123
+ }
124
+ }
125
+ }
126
+ return violations;
127
+ }
128
+ // ─── 10. Parallel Execution Rules ───────────────────────────────
129
+ /**
130
+ * Checks implicit dependency lock — if an agent's required output
131
+ * is not ready, the dependent agent switches to WAITING state.
132
+ */
133
+ static checkImplicitDependency(agentName, requiredAgent) {
134
+ const agents = AtabeyStorage.getAllAgents();
135
+ const required = agents.find(a => a.name === requiredAgent);
136
+ if (!required || required.state !== "COMPLETED") {
137
+ AtabeyStorage.updateAgentStatus(agentName, "WAITING", `Waiting for ${requiredAgent} to complete`);
138
+ logger.info(`[PARALLEL] ${agentName} → WAITING (dependency: ${requiredAgent} not ready)`);
139
+ return false;
140
+ }
141
+ return true;
142
+ }
143
+ /**
144
+ * Enforces file ownership — an agent cannot modify files outside its scope.
145
+ */
146
+ static enforceOwnership(agentName, filePath) {
147
+ const ownershipMap = {
148
+ "@backend": ["src/modules/", "src/contracts/", "apps/backend/"],
149
+ "@frontend": ["apps/web/", "src/components/", "src/pages/"],
150
+ "@database": ["src/database/", "migrations/"],
151
+ "@devops": [".github/", "Dockerfile", "docker-compose", ".env"],
152
+ "@architect": ["src/contracts/", "src/types/", "contract.version.json"],
153
+ };
154
+ const allowedPaths = ownershipMap[agentName];
155
+ if (!allowedPaths)
156
+ return true; // No restriction for this agent
157
+ const relativePath = path.relative(process.cwd(), filePath);
158
+ const isAllowed = allowedPaths.some(p => relativePath.startsWith(p) || relativePath.includes(p));
159
+ if (!isAllowed) {
160
+ logger.warn(`[OWNERSHIP] ${agentName} cannot modify ${filePath} — outside scope`);
161
+ AtabeyStorage.saveLog({
162
+ agent: agentName.replace("@", ""),
163
+ action: "OWNERSHIP_VIOLATION",
164
+ trace_id: AtabeyStorage.getMetadata("traceId") || "N/A",
165
+ status: "BLOCKED",
166
+ summary: `${agentName} attempted to modify ${filePath} — outside allowed scope: ${allowedPaths.join(", ")}`
167
+ });
168
+ return false;
169
+ }
170
+ return true;
171
+ }
172
+ /**
173
+ * Logs commit-level information for traceability.
174
+ */
175
+ static logCommit(agentName, message, traceId) {
176
+ AtabeyStorage.saveLog({
177
+ agent: agentName.replace("@", ""),
178
+ action: "COMMIT",
179
+ trace_id: traceId,
180
+ status: "SUCCESS",
181
+ summary: `[${traceId}] ${message.substring(0, 200)}`
182
+ });
183
+ logger.info(`[COMMIT] ${agentName}: ${message} (trace: ${traceId})`);
184
+ }
185
+ }
186
+ //# sourceMappingURL=policy-engine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"policy-engine.js","sourceRoot":"","sources":["../../../../src/modules/engines/policy-engine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAgBxD;;;GAGG;AACH,MAAM,OAAO,YAAY;IACrB,oEAAoE;IAEpE;;OAEG;IACI,MAAM,CAAC,qBAAqB,CAAC,QAAgB,EAAE,OAAe;QACjE,MAAM,UAAU,GAAa,EAAE,CAAC;QAChC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAElC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACpC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACtB,qDAAqD;YACrD,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,wDAAwD,CAAC,CAAC;YACxF,IAAI,UAAU,EAAE,CAAC;gBACb,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,uCAAuC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YACvF,CAAC;QACL,CAAC;QACD,OAAO,UAAU,CAAC;IACtB,CAAC;IAED,mEAAmE;IAEnE;;OAEG;IACI,MAAM,CAAC,gBAAgB;QAC1B,OAAO;YACH,MAAM,EAAE,aAAa,CAAC,YAAY,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;YAC/F,gBAAgB,EAAE,aAAa,CAAC,kBAAkB,EAAE;iBAC/C,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,OAAO,IAAI,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC;iBAC9D,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,WAAW,EAAE,CAAC,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;YACpG,YAAY,EAAE;gBACV,OAAO,EAAE,aAAa,CAAC,kBAAkB,EAAE,CAAC,MAAM;gBAClD,UAAU,EAAE,aAAa,CAAC,kBAAkB,EAAE,CAAC,MAAM,CAAC,CAAC,GAA2B,EAAE,CAAC,EAAE,EAAE;oBACrF,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;oBAC7C,OAAO,GAAG,CAAC;gBACf,CAAC,EAAE,EAAE,CAAC;aACT;YACD,aAAa,EAAE,aAAa,CAAC,WAAW,CAAC,SAAS,CAAC,IAAI,KAAK;YAC5D,YAAY,EAAE,aAAa,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,SAAS;SAChE,CAAC;IACN,CAAC;IAED,mEAAmE;IAEnE;;OAEG;IACI,MAAM,CAAC,cAAc;QACxB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,mBAAmB,CAAC,CAAC;QAC1E,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC;YAAE,OAAO,YAAY,CAAC,kBAAkB,EAAE,CAAC;QACvE,IAAI,CAAC;YACD,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC;QACzD,CAAC;QAAC,MAAM,CAAC;YACL,OAAO,YAAY,CAAC,kBAAkB,EAAE,CAAC;QAC7C,CAAC;IACL,CAAC;IAED;;OAEG;IACI,MAAM,CAAC,cAAc,CAAC,OAAwB;QACjD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,SAAS,CAAC,CAAC;QACpD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,mBAAmB,CAAC,CAAC;QACzD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC;YAAE,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAExE,MAAM,QAAQ,GAAG,YAAY,CAAC,cAAc,EAAE,CAAC;QAC/C,MAAM,QAAQ,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;QACxE,IAAI,QAAQ,IAAI,CAAC,EAAE,CAAC;YAChB,QAAQ,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC;QACjC,CAAC;aAAM,CAAC;YACJ,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC3B,CAAC;QACD,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAClE,CAAC;IAEO,MAAM,CAAC,kBAAkB;QAC7B,OAAO;YACH,EAAE,OAAO,EAAE,eAAe,EAAE,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,oBAAoB,EAAE;YAClF,EAAE,OAAO,EAAE,gBAAgB,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,+BAA+B,EAAE,YAAY,EAAE,MAAM,EAAE;YAClH,EAAE,OAAO,EAAE,kBAAkB,EAAE,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,oBAAoB,EAAE;YACrF,EAAE,OAAO,EAAE,wBAAwB,EAAE,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,2BAA2B,EAAE;YACpG,EAAE,OAAO,EAAE,kBAAkB,EAAE,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,kBAAkB,EAAE;SACtF,CAAC;IACN,CAAC;IAED,mEAAmE;IAEnE;;;OAGG;IACI,MAAM,CAAC,kBAAkB,CAAC,QAAgB,EAAE,OAAe;QAC9D,MAAM,UAAU,GAAwB,EAAE,CAAC;QAC3C,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAClC,MAAM,eAAe,GAAG;YACpB,+IAA+I;YAC/I,4GAA4G;SAC/G,CAAC;QAEF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACpC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YAE7B,wCAAwC;YACxC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;gBAAE,SAAS;YAElI,6BAA6B;YAC7B,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;YAC/C,IAAI,YAAY,EAAE,CAAC;gBACf,MAAM,OAAO,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;gBAChC,IAAI,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC;oBAC7C,UAAU,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;gBACjH,CAAC;YACL,CAAC;QACL,CAAC;QAED,OAAO,UAAU,CAAC;IACtB,CAAC;IAED,mEAAmE;IAEnE;;;OAGG;IACI,MAAM,CAAC,uBAAuB,CAAC,SAAiB,EAAE,aAAqB;QAC1E,MAAM,MAAM,GAAG,aAAa,CAAC,YAAY,EAAE,CAAC;QAC5C,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,aAAa,CAAC,CAAC;QAE5D,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,KAAK,KAAK,WAAW,EAAE,CAAC;YAC9C,aAAa,CAAC,iBAAiB,CAAC,SAAS,EAAE,SAAS,EAAE,eAAe,aAAa,cAAc,CAAC,CAAC;YAClG,MAAM,CAAC,IAAI,CAAC,cAAc,SAAS,2BAA2B,aAAa,aAAa,CAAC,CAAC;YAC1F,OAAO,KAAK,CAAC;QACjB,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED;;OAEG;IACI,MAAM,CAAC,gBAAgB,CAAC,SAAiB,EAAE,QAAgB;QAC9D,MAAM,YAAY,GAA6B;YAC3C,UAAU,EAAE,CAAC,cAAc,EAAE,gBAAgB,EAAE,eAAe,CAAC;YAC/D,WAAW,EAAE,CAAC,WAAW,EAAE,iBAAiB,EAAE,YAAY,CAAC;YAC3D,WAAW,EAAE,CAAC,eAAe,EAAE,aAAa,CAAC;YAC7C,SAAS,EAAE,CAAC,UAAU,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,CAAC;YAC/D,YAAY,EAAE,CAAC,gBAAgB,EAAE,YAAY,EAAE,uBAAuB,CAAC;SAC1E,CAAC;QAEF,MAAM,YAAY,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC;QAC7C,IAAI,CAAC,YAAY;YAAE,OAAO,IAAI,CAAC,CAAC,gCAAgC;QAEhE,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,CAAC,CAAC;QAC5D,MAAM,SAAS,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QAEjG,IAAI,CAAC,SAAS,EAAE,CAAC;YACb,MAAM,CAAC,IAAI,CAAC,eAAe,SAAS,kBAAkB,QAAQ,kBAAkB,CAAC,CAAC;YAClF,aAAa,CAAC,OAAO,CAAC;gBAClB,KAAK,EAAE,SAAS,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC;gBACjC,MAAM,EAAE,qBAAqB;gBAC7B,QAAQ,EAAE,aAAa,CAAC,WAAW,CAAC,SAAS,CAAC,IAAI,KAAK;gBACvD,MAAM,EAAE,SAAS;gBACjB,OAAO,EAAE,GAAG,SAAS,wBAAwB,QAAQ,6BAA6B,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;aAC9G,CAAC,CAAC;YACH,OAAO,KAAK,CAAC;QACjB,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED;;OAEG;IACI,MAAM,CAAC,SAAS,CAAC,SAAiB,EAAE,OAAe,EAAE,OAAe;QACvE,aAAa,CAAC,OAAO,CAAC;YAClB,KAAK,EAAE,SAAS,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC;YACjC,MAAM,EAAE,QAAQ;YAChB,QAAQ,EAAE,OAAO;YACjB,MAAM,EAAE,SAAS;YACjB,OAAO,EAAE,IAAI,OAAO,KAAK,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE;SACvD,CAAC,CAAC;QAEH,MAAM,CAAC,IAAI,CAAC,YAAY,SAAS,KAAK,OAAO,YAAY,OAAO,GAAG,CAAC,CAAC;IACzE,CAAC;CACJ"}
@@ -0,0 +1,31 @@
1
+ export interface QualityResult {
2
+ passed: boolean;
3
+ reason: string;
4
+ findings?: unknown;
5
+ }
6
+ /**
7
+ * [ENGINE] Quality Gate
8
+ * Atabey Order v2 — Deterministic Quality Inspection Center.
9
+ * Inspects agent outputs and codebase against constitutional rules.
10
+ *
11
+ * v0.0.14: Selective file-level lint (not full-project), removed test execution
12
+ * from quality gate (tests are a CI concern), added `any` type detection.
13
+ */
14
+ export declare class QualityGate {
15
+ /**
16
+ * Puts an agent's work through quality testing.
17
+ * 1. Compliance (Constitutional compliance via AST scan)
18
+ * 2. Lint (Targeted file lint if filePath is provided)
19
+ * 3. Content Validation (Output quality check)
20
+ *
21
+ * Note: Test execution is intentionally excluded from the quality gate.
22
+ * Tests are run separately via 'npm test' in CI. The gate focuses on
23
+ * the immediate output quality, not full regression coverage.
24
+ */
25
+ static check(agent: string, output: string, task: string, filePath?: string): Promise<QualityResult>;
26
+ /**
27
+ * Validates the quality of agent output content.
28
+ * Checks for: empty output, error indicators, `any` type policy violations.
29
+ */
30
+ private static validateOutputContent;
31
+ }
@@ -0,0 +1,95 @@
1
+ import { execSync } from "child_process";
2
+ import { scanProjectCompliance } from "../../cli/utils/compliance.js";
3
+ import { logger } from "../../shared/logger.js";
4
+ /**
5
+ * [ENGINE] Quality Gate
6
+ * Atabey Order v2 — Deterministic Quality Inspection Center.
7
+ * Inspects agent outputs and codebase against constitutional rules.
8
+ *
9
+ * v0.0.14: Selective file-level lint (not full-project), removed test execution
10
+ * from quality gate (tests are a CI concern), added `any` type detection.
11
+ */
12
+ export class QualityGate {
13
+ /**
14
+ * Puts an agent's work through quality testing.
15
+ * 1. Compliance (Constitutional compliance via AST scan)
16
+ * 2. Lint (Targeted file lint if filePath is provided)
17
+ * 3. Content Validation (Output quality check)
18
+ *
19
+ * Note: Test execution is intentionally excluded from the quality gate.
20
+ * Tests are run separately via 'npm test' in CI. The gate focuses on
21
+ * the immediate output quality, not full regression coverage.
22
+ */
23
+ static async check(agent, output, task, filePath) {
24
+ logger.info(`[QUALITY_GATE] Starting audit for ${agent}...`);
25
+ // Skip deep ecosystem commands during framework unit testing to prevent infinite recursion
26
+ const isTestEnv = process.env.VITEST === "true" || !!process.env.ATABEY_TEST_DIR;
27
+ if (!isTestEnv) {
28
+ // 1. Compliance Check (AST Analysis — scans src/ for policy violations)
29
+ const complianceIssues = scanProjectCompliance("src");
30
+ if (complianceIssues.length > 0) {
31
+ const summary = complianceIssues.map(i => `${i.file}:${i.line} (${i.rule})`).join(", ");
32
+ return {
33
+ passed: false,
34
+ reason: `Compliance issues found: ${summary}`,
35
+ findings: complianceIssues
36
+ };
37
+ }
38
+ // 2. Lint Check
39
+ if (filePath) {
40
+ try {
41
+ logger.debug("[QUALITY_GATE] Running ESLint on file...");
42
+ execSync(`npx eslint --no-eslintrc --rule '{"@typescript-eslint/no-explicit-any": "error"}' ${filePath}`, { stdio: "pipe" });
43
+ }
44
+ catch (err) {
45
+ const error = err;
46
+ return {
47
+ passed: false,
48
+ reason: "Lint check failed. Zero errors required.",
49
+ findings: error.stderr?.toString() || error.message
50
+ };
51
+ }
52
+ }
53
+ else {
54
+ logger.warn("[QUALITY_GATE] No filePath provided — skipping lint check.");
55
+ }
56
+ }
57
+ else {
58
+ logger.debug("[QUALITY_GATE] Framework unit test environment detected. Skipping ecosystem calls.");
59
+ }
60
+ // 3. Content Validation (Basic output quality check)
61
+ const contentCheck = this.validateOutputContent(output, task);
62
+ if (!contentCheck.passed) {
63
+ return contentCheck;
64
+ }
65
+ logger.info(`[QUALITY_GATE] Audit PASSED for ${agent}`);
66
+ return { passed: true, reason: "All quality gates passed." };
67
+ }
68
+ /**
69
+ * Validates the quality of agent output content.
70
+ * Checks for: empty output, error indicators, `any` type policy violations.
71
+ */
72
+ static validateOutputContent(output, _task) {
73
+ if (!output || output.trim().length < 10) {
74
+ return { passed: false, reason: "Output is too short or empty." };
75
+ }
76
+ // Check for hard error indicators (word-boundary match to avoid false positives
77
+ // on valid identifiers such as 'ErrorBoundary', 'handleError', 'TIMEOUT_MS',
78
+ // 'FAILED_VALIDATION', etc.).
79
+ const errorIndicators = ["ERROR", "FAILED", "CRASHED", "TIMEOUT"];
80
+ for (const indicator of errorIndicators) {
81
+ if (new RegExp(`\\b${indicator}\\b`).test(output.toUpperCase())) {
82
+ return { passed: false, reason: `Output contains error indicator: ${indicator}` };
83
+ }
84
+ }
85
+ // Zero Type Hole policy: detect TypeScript `any` type usage in output
86
+ if (/:\s*any\b/.test(output)) {
87
+ return {
88
+ passed: false,
89
+ reason: "Output contains `any` type — Zero Type Hole policy violation. Use explicit types.",
90
+ };
91
+ }
92
+ return { passed: true, reason: "Content validation passed." };
93
+ }
94
+ }
95
+ //# sourceMappingURL=quality-gate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"quality-gate.js","sourceRoot":"","sources":["../../../../src/modules/engines/quality-gate.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ import { RiskAssessment } from "./types.js";
2
+ /**
3
+ * [SECURITY] Risk Engine (The Guardian)
4
+ * Calculates the danger level of a proposed task or operation.
5
+ *
6
+ * Scoring model (v2 — contextual behavioral analysis):
7
+ * - Keyword signals: intent words in natural-language task descriptions
8
+ * - Path signals: sensitivity of file paths / env patterns
9
+ * - Behavioral signals: blast-radius proxies — file count, line deletions, bulk patterns
10
+ * - Complexity signal: task description length as misunderstanding proxy
11
+ *
12
+ * requiresApproval threshold: totalScore >= 60
13
+ */
14
+ export declare class RiskEngine {
15
+ private static HIGH_RISK_KEYWORDS;
16
+ private static SENSITIVE_PATHS;
17
+ private static BULK_SCOPE_PATTERNS;
18
+ /**
19
+ * Assesses the risk of a natural language task or command string.
20
+ * Combines keyword analysis, path sensitivity, and complexity signals.
21
+ */
22
+ static assessTaskRisk(task: string): RiskAssessment;
23
+ /**
24
+ * Assesses risk based on a proposed file change.
25
+ * Adds behavioral signals: file count impact and bulk-scope path patterns.
26
+ */
27
+ static assessChangeRisk(filePath: string, operation: "write" | "replace" | "patch", options?: {
28
+ /** Number of files touched by this operation (for multi-file tools) */
29
+ affectedFileCount?: number;
30
+ /** Approximate number of lines being deleted */
31
+ deletedLineCount?: number;
32
+ }): RiskAssessment;
33
+ private static finalizeAssessment;
34
+ }
@@ -0,0 +1,201 @@
1
+ /**
2
+ * [SECURITY] Risk Engine (The Guardian)
3
+ * Calculates the danger level of a proposed task or operation.
4
+ *
5
+ * Scoring model (v2 — contextual behavioral analysis):
6
+ * - Keyword signals: intent words in natural-language task descriptions
7
+ * - Path signals: sensitivity of file paths / env patterns
8
+ * - Behavioral signals: blast-radius proxies — file count, line deletions, bulk patterns
9
+ * - Complexity signal: task description length as misunderstanding proxy
10
+ *
11
+ * requiresApproval threshold: totalScore >= 60
12
+ */
13
+ export class RiskEngine {
14
+ static HIGH_RISK_KEYWORDS = [
15
+ { word: "delete", weight: 40 },
16
+ { word: "drop", weight: 50 },
17
+ { word: "truncate", weight: 50 },
18
+ { word: "rm -rf", weight: 60 },
19
+ { word: "purge", weight: 40 },
20
+ { word: "format", weight: 50 },
21
+ { word: "force", weight: 20 },
22
+ ];
23
+ static SENSITIVE_PATHS = [
24
+ { pattern: /\.env/i, weight: 50 },
25
+ { pattern: /config/i, weight: 20 },
26
+ { pattern: /database/i, weight: 30 },
27
+ { pattern: /auth/i, weight: 30 },
28
+ { pattern: /security/i, weight: 30 },
29
+ { pattern: /atabey/i, weight: 40 }, // Framework self-protection
30
+ ];
31
+ // ─── Behavioral Signal Patterns ──────────────────────────────────────────
32
+ // Glob / wildcard patterns in paths that indicate bulk/mass-scope operations.
33
+ static BULK_SCOPE_PATTERNS = [
34
+ /\*\*/, // recursive glob
35
+ /\*\.[a-z]{2,4}/, // wildcard extension (*.ts, *.js)
36
+ /\/\*$/, // directory wildcard
37
+ ];
38
+ /**
39
+ * Assesses the risk of a natural language task or command string.
40
+ * Combines keyword analysis, path sensitivity, and complexity signals.
41
+ */
42
+ static assessTaskRisk(task) {
43
+ const factors = [];
44
+ let totalScore = 0;
45
+ // 1. Keyword Analysis
46
+ for (const { word, weight } of this.HIGH_RISK_KEYWORDS) {
47
+ if (new RegExp(`\\b${word}\\b`, "i").test(task)) {
48
+ factors.push({
49
+ factor: `Keyword: ${word}`,
50
+ score: weight,
51
+ description: `Detected high-risk keyword '${word}' in task description.`
52
+ });
53
+ totalScore += weight;
54
+ }
55
+ }
56
+ // 2. Path Sensitivity (if paths are mentioned in the task)
57
+ for (const { pattern, weight } of this.SENSITIVE_PATHS) {
58
+ if (pattern.test(task)) {
59
+ factors.push({
60
+ factor: `Sensitive Path: ${pattern.source}`,
61
+ score: weight,
62
+ description: `Task involves access to sensitive path or pattern: ${pattern.source}`
63
+ });
64
+ totalScore += weight;
65
+ }
66
+ }
67
+ // 3. Behavioral — Bulk scope detection in task text
68
+ for (const pattern of this.BULK_SCOPE_PATTERNS) {
69
+ if (pattern.test(task)) {
70
+ const score = 25;
71
+ factors.push({
72
+ factor: "Bulk Scope Pattern",
73
+ score,
74
+ description: `Task references a wildcard/glob pattern (${pattern.source}), indicating a potentially mass-scope operation.`
75
+ });
76
+ totalScore += score;
77
+ break; // count once even if multiple glob patterns match
78
+ }
79
+ }
80
+ // 4. Behavioral — Line deletion volume proxy
81
+ // Detect phrases like "delete all", "remove all", "wipe", "clear all"
82
+ if (/\b(delete|remove|wipe|clear)\s+all\b/i.test(task)) {
83
+ const score = 30;
84
+ factors.push({
85
+ factor: "Mass Deletion Intent",
86
+ score,
87
+ description: "Task uses mass-deletion language ('delete all', 'remove all', 'wipe', 'clear all') suggesting bulk data destruction."
88
+ });
89
+ totalScore += score;
90
+ }
91
+ // 5. Complexity Risk (Length as misunderstanding proxy)
92
+ if (task.length > 300) {
93
+ const score = 10;
94
+ factors.push({
95
+ factor: "High Complexity",
96
+ score,
97
+ description: "Task description is unusually long, increasing the chance of misunderstanding."
98
+ });
99
+ totalScore += score;
100
+ }
101
+ return this.finalizeAssessment(totalScore, factors);
102
+ }
103
+ /**
104
+ * Assesses risk based on a proposed file change.
105
+ * Adds behavioral signals: file count impact and bulk-scope path patterns.
106
+ */
107
+ static assessChangeRisk(filePath, operation, options) {
108
+ const factors = [];
109
+ let totalScore = 0;
110
+ // 1. Operation Weight
111
+ const opWeights = { write: 30, replace: 5, patch: 10 };
112
+ totalScore += opWeights[operation];
113
+ factors.push({
114
+ factor: `Operation: ${operation}`,
115
+ score: opWeights[operation],
116
+ description: `A '${operation}' operation is inherently riskier than a surgical 'replace'.`
117
+ });
118
+ // 2. File Path Risk
119
+ for (const { pattern, weight } of this.SENSITIVE_PATHS) {
120
+ if (pattern.test(filePath)) {
121
+ factors.push({
122
+ factor: `Sensitive File: ${filePath}`,
123
+ score: weight,
124
+ description: "Modifying a sensitive file is high risk."
125
+ });
126
+ totalScore += weight;
127
+ }
128
+ }
129
+ // 3. Behavioral — Bulk scope path (glob/wildcard in filePath)
130
+ for (const pattern of this.BULK_SCOPE_PATTERNS) {
131
+ if (pattern.test(filePath)) {
132
+ const score = 25;
133
+ factors.push({
134
+ factor: "Bulk Scope Path",
135
+ score,
136
+ description: `File path '${filePath}' contains a wildcard/glob pattern, suggesting a mass-scope write operation.`
137
+ });
138
+ totalScore += score;
139
+ break;
140
+ }
141
+ }
142
+ // 4. Behavioral — File count impact
143
+ // Writing to many files at once multiplies blast radius.
144
+ const { affectedFileCount = 1, deletedLineCount = 0 } = options ?? {};
145
+ if (affectedFileCount > 10) {
146
+ const score = Math.min(affectedFileCount * 2, 40);
147
+ factors.push({
148
+ factor: `High File Count: ${affectedFileCount} files`,
149
+ score,
150
+ description: `Operation touches ${affectedFileCount} files — high blast radius.`
151
+ });
152
+ totalScore += score;
153
+ }
154
+ else if (affectedFileCount > 3) {
155
+ const score = 15;
156
+ factors.push({
157
+ factor: `Multi-file: ${affectedFileCount} files`,
158
+ score,
159
+ description: `Operation touches ${affectedFileCount} files — moderate blast radius.`
160
+ });
161
+ totalScore += score;
162
+ }
163
+ // 5. Behavioral — Line deletion volume
164
+ // Bulk line deletions (>100 lines) indicate destructive operations.
165
+ if (deletedLineCount > 500) {
166
+ const score = 35;
167
+ factors.push({
168
+ factor: `Mass Line Deletion: ${deletedLineCount} lines`,
169
+ score,
170
+ description: `Operation deletes ${deletedLineCount} lines — very high data destruction risk.`
171
+ });
172
+ totalScore += score;
173
+ }
174
+ else if (deletedLineCount > 100) {
175
+ const score = 20;
176
+ factors.push({
177
+ factor: `Large Line Deletion: ${deletedLineCount} lines`,
178
+ score,
179
+ description: `Operation deletes ${deletedLineCount} lines — elevated data destruction risk.`
180
+ });
181
+ totalScore += score;
182
+ }
183
+ return this.finalizeAssessment(totalScore, factors);
184
+ }
185
+ static finalizeAssessment(totalScore, factors) {
186
+ let severity = "LOW";
187
+ if (totalScore >= 80)
188
+ severity = "CRITICAL";
189
+ else if (totalScore >= 50)
190
+ severity = "HIGH";
191
+ else if (totalScore >= 20)
192
+ severity = "MEDIUM";
193
+ return {
194
+ totalScore: Math.min(totalScore, 100),
195
+ severity,
196
+ factors,
197
+ requiresApproval: totalScore >= 60
198
+ };
199
+ }
200
+ }
201
+ //# sourceMappingURL=risk-engine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"risk-engine.js","sourceRoot":"","sources":["../../../../src/modules/engines/risk-engine.ts"],"names":[],"mappings":"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"}