atabey 0.0.6 → 0.0.7

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 (387) hide show
  1. package/ATABEY.md +4 -4
  2. package/README.md +35 -33
  3. package/bin/cli.js +2 -2
  4. package/bin/validate-agent-army.js +6 -6
  5. package/dist/framework-mcp/src/constants.js +1 -1
  6. package/dist/framework-mcp/src/constants.js.map +1 -1
  7. package/dist/framework-mcp/src/index.js +29 -5
  8. package/dist/framework-mcp/src/index.js.map +1 -1
  9. package/dist/framework-mcp/src/resources/index.d.ts +10 -0
  10. package/dist/framework-mcp/src/resources/index.js +59 -0
  11. package/dist/framework-mcp/src/resources/index.js.map +1 -0
  12. package/dist/framework-mcp/src/tools/control_plane/locking.js +3 -3
  13. package/dist/framework-mcp/src/tools/control_plane/locking.js.map +1 -1
  14. package/dist/framework-mcp/src/tools/control_plane/registry.js +3 -2
  15. package/dist/framework-mcp/src/tools/control_plane/registry.js.map +1 -1
  16. package/dist/framework-mcp/src/tools/definitions.js +33 -1
  17. package/dist/framework-mcp/src/tools/definitions.js.map +1 -1
  18. package/dist/framework-mcp/src/tools/file_system/batch_surgical_edit.d.ts +1 -1
  19. package/dist/framework-mcp/src/tools/file_system/batch_surgical_edit.js +8 -3
  20. package/dist/framework-mcp/src/tools/file_system/batch_surgical_edit.js.map +1 -1
  21. package/dist/framework-mcp/src/tools/file_system/patch_file.d.ts +1 -1
  22. package/dist/framework-mcp/src/tools/file_system/patch_file.js +8 -3
  23. package/dist/framework-mcp/src/tools/file_system/patch_file.js.map +1 -1
  24. package/dist/framework-mcp/src/tools/file_system/read_file.js +3 -3
  25. package/dist/framework-mcp/src/tools/file_system/read_file.js.map +1 -1
  26. package/dist/framework-mcp/src/tools/file_system/replace_text.d.ts +1 -1
  27. package/dist/framework-mcp/src/tools/file_system/replace_text.js +8 -3
  28. package/dist/framework-mcp/src/tools/file_system/replace_text.js.map +1 -1
  29. package/dist/framework-mcp/src/tools/file_system/write_file.d.ts +1 -1
  30. package/dist/framework-mcp/src/tools/file_system/write_file.js +10 -5
  31. package/dist/framework-mcp/src/tools/file_system/write_file.js.map +1 -1
  32. package/dist/framework-mcp/src/tools/framework/audit_deps.js +2 -2
  33. package/dist/framework-mcp/src/tools/framework/audit_deps.js.map +1 -1
  34. package/dist/framework-mcp/src/tools/framework/run_tests.js +2 -2
  35. package/dist/framework-mcp/src/tools/framework/run_tests.js.map +1 -1
  36. package/dist/framework-mcp/src/tools/framework/submit_plan.d.ts +10 -0
  37. package/dist/framework-mcp/src/tools/framework/submit_plan.js +14 -0
  38. package/dist/framework-mcp/src/tools/framework/submit_plan.js.map +1 -0
  39. package/dist/framework-mcp/src/tools/framework/update_memory.js +1 -1
  40. package/dist/framework-mcp/src/tools/framework/update_memory.js.map +1 -1
  41. package/dist/framework-mcp/src/tools/index.js +2 -0
  42. package/dist/framework-mcp/src/tools/index.js.map +1 -1
  43. package/dist/framework-mcp/src/tools/memory/get_insights.js +1 -1
  44. package/dist/framework-mcp/src/tools/memory/get_insights.js.map +1 -1
  45. package/dist/framework-mcp/src/tools/messaging/log_action.js +1 -1
  46. package/dist/framework-mcp/src/tools/messaging/log_action.js.map +1 -1
  47. package/dist/framework-mcp/src/tools/messaging/send_message.js +5 -5
  48. package/dist/framework-mcp/src/tools/messaging/send_message.js.map +1 -1
  49. package/dist/framework-mcp/src/tools/observability/check_ports.js +1 -1
  50. package/dist/framework-mcp/src/tools/observability/check_ports.js.map +1 -1
  51. package/dist/framework-mcp/src/tools/quality/check_lint.js +2 -2
  52. package/dist/framework-mcp/src/tools/quality/check_lint.js.map +1 -1
  53. package/dist/framework-mcp/src/tools/search/get_gaps.js +1 -1
  54. package/dist/framework-mcp/src/tools/search/get_gaps.js.map +1 -1
  55. package/dist/framework-mcp/src/tools/search/grep_search.js +3 -3
  56. package/dist/framework-mcp/src/tools/search/grep_search.js.map +1 -1
  57. package/dist/framework-mcp/src/tools/types.d.ts +1 -0
  58. package/dist/framework-mcp/src/utils/compliance.d.ts +6 -0
  59. package/dist/framework-mcp/src/utils/compliance.js +158 -5
  60. package/dist/framework-mcp/src/utils/compliance.js.map +1 -1
  61. package/dist/framework-mcp/src/utils/permissions.d.ts +12 -0
  62. package/dist/framework-mcp/src/utils/permissions.js +72 -0
  63. package/dist/framework-mcp/src/utils/permissions.js.map +1 -0
  64. package/dist/framework-mcp/tests/tools/file_system/compliance-risk.test.js +84 -0
  65. package/dist/framework-mcp/tests/tools/file_system/compliance-risk.test.js.map +1 -0
  66. package/dist/framework-mcp/tests/tools/file_system/file_system_tools.test.js +31 -31
  67. package/dist/framework-mcp/tests/tools/file_system/file_system_tools.test.js.map +1 -1
  68. package/dist/framework-mcp/tests/tools/file_system/permissions.test.d.ts +1 -0
  69. package/dist/framework-mcp/tests/tools/file_system/permissions.test.js +92 -0
  70. package/dist/framework-mcp/tests/tools/file_system/permissions.test.js.map +1 -0
  71. package/dist/framework-mcp/tests/tools/messaging/send_message.test.js +5 -5
  72. package/dist/framework-mcp/tests/tools/messaging/send_message.test.js.map +1 -1
  73. package/dist/src/cli/adapters/core.js +1 -1
  74. package/dist/src/cli/adapters/core.js.map +1 -1
  75. package/dist/src/cli/adapters/scaffold.js +2 -2
  76. package/dist/src/cli/adapters/scaffold.js.map +1 -1
  77. package/dist/src/cli/commands/check.js +5 -3
  78. package/dist/src/cli/commands/check.js.map +1 -1
  79. package/dist/src/cli/commands/compliance.js +2 -2
  80. package/dist/src/cli/commands/compliance.js.map +1 -1
  81. package/dist/src/cli/commands/contract.js +2 -2
  82. package/dist/src/cli/commands/contract.js.map +1 -1
  83. package/dist/src/cli/commands/dashboard.d.ts +5 -0
  84. package/dist/src/cli/commands/dashboard.js +124 -0
  85. package/dist/src/cli/commands/dashboard.js.map +1 -0
  86. package/dist/src/cli/commands/explorer.js +3 -3
  87. package/dist/src/cli/commands/explorer.js.map +1 -1
  88. package/dist/src/cli/commands/git.js +3 -3
  89. package/dist/src/cli/commands/git.js.map +1 -1
  90. package/dist/src/cli/commands/init/create-agent.d.ts +4 -0
  91. package/dist/src/cli/commands/init/create-agent.js +59 -0
  92. package/dist/src/cli/commands/init/create-agent.js.map +1 -0
  93. package/dist/src/cli/commands/init/scaffold-core.d.ts +1 -0
  94. package/dist/src/cli/commands/init/scaffold-core.js +11 -7
  95. package/dist/src/cli/commands/init/scaffold-core.js.map +1 -1
  96. package/dist/src/cli/commands/init/scaffold-docs.d.ts +1 -0
  97. package/dist/src/cli/commands/init/scaffold-docs.js +4 -6
  98. package/dist/src/cli/commands/init/scaffold-docs.js.map +1 -1
  99. package/dist/src/cli/commands/init/scaffold-ops.js +4 -4
  100. package/dist/src/cli/commands/init/scaffold-ops.js.map +1 -1
  101. package/dist/src/cli/commands/init/scaffold-standards.js +10 -8
  102. package/dist/src/cli/commands/init/scaffold-standards.js.map +1 -1
  103. package/dist/src/cli/commands/init.js +26 -10
  104. package/dist/src/cli/commands/init.js.map +1 -1
  105. package/dist/src/cli/commands/knowledge.js +3 -3
  106. package/dist/src/cli/commands/knowledge.js.map +1 -1
  107. package/dist/src/cli/commands/lint.js +2 -2
  108. package/dist/src/cli/commands/lint.js.map +1 -1
  109. package/dist/src/cli/commands/log.js +6 -28
  110. package/dist/src/cli/commands/log.js.map +1 -1
  111. package/dist/src/cli/commands/orchestrate.d.ts +10 -17
  112. package/dist/src/cli/commands/orchestrate.js +92 -341
  113. package/dist/src/cli/commands/orchestrate.js.map +1 -1
  114. package/dist/src/cli/commands/plan.d.ts +5 -0
  115. package/dist/src/cli/commands/plan.js +80 -59
  116. package/dist/src/cli/commands/plan.js.map +1 -1
  117. package/dist/src/cli/commands/script.js +3 -3
  118. package/dist/src/cli/commands/script.js.map +1 -1
  119. package/dist/src/cli/commands/security.js +2 -2
  120. package/dist/src/cli/commands/security.js.map +1 -1
  121. package/dist/src/cli/commands/status.js +65 -8
  122. package/dist/src/cli/commands/status.js.map +1 -1
  123. package/dist/src/cli/commands/trace.d.ts +4 -0
  124. package/dist/src/cli/commands/trace.js +83 -2
  125. package/dist/src/cli/commands/trace.js.map +1 -1
  126. package/dist/src/cli/index.js +68 -18
  127. package/dist/src/cli/index.js.map +1 -1
  128. package/dist/src/cli/shims.js +14 -14
  129. package/dist/src/cli/utils/claude.js +1 -1
  130. package/dist/src/cli/utils/claude.js.map +1 -1
  131. package/dist/src/cli/utils/compliance.js +7 -1
  132. package/dist/src/cli/utils/compliance.js.map +1 -1
  133. package/dist/src/cli/utils/fs.js +1 -1
  134. package/dist/src/cli/utils/fs.js.map +1 -1
  135. package/dist/src/cli/utils/i18n.d.ts +1 -0
  136. package/dist/src/cli/utils/i18n.js +2 -0
  137. package/dist/src/cli/utils/i18n.js.map +1 -1
  138. package/dist/src/cli/utils/memory.d.ts +12 -3
  139. package/dist/src/cli/utils/memory.js +39 -31
  140. package/dist/src/cli/utils/memory.js.map +1 -1
  141. package/dist/src/cli/utils/pkg.js +2 -2
  142. package/dist/src/cli/utils/pkg.js.map +1 -1
  143. package/dist/src/cli/utils/schemas.d.ts +8 -8
  144. package/dist/src/cli/utils/ui.js +4 -4
  145. package/dist/src/cli/utils/ui.js.map +1 -1
  146. package/dist/src/contracts/tasks.d.ts +2 -2
  147. package/dist/src/dashboard/vite.config.d.ts +2 -0
  148. package/dist/src/dashboard/vite.config.js +16 -0
  149. package/dist/src/dashboard/vite.config.js.map +1 -0
  150. package/dist/src/modules/adapters/definitions.js +10 -10
  151. package/dist/src/modules/adapters/definitions.js.map +1 -1
  152. package/dist/src/modules/adapters/shared.js +4 -4
  153. package/dist/src/modules/adapters/shared.js.map +1 -1
  154. package/dist/src/modules/agents/definitions.d.ts +19 -0
  155. package/dist/src/modules/agents/definitions.js +74 -21
  156. package/dist/src/modules/agents/definitions.js.map +1 -1
  157. package/dist/src/modules/agents/registry/backend.js +8 -0
  158. package/dist/src/modules/agents/registry/backend.js.map +1 -1
  159. package/dist/src/modules/agents/registry/database.js +7 -0
  160. package/dist/src/modules/agents/registry/database.js.map +1 -1
  161. package/dist/src/modules/agents/registry/devops.js +6 -0
  162. package/dist/src/modules/agents/registry/devops.js.map +1 -1
  163. package/dist/src/modules/agents/registry/frontend.js +8 -0
  164. package/dist/src/modules/agents/registry/frontend.js.map +1 -1
  165. package/dist/src/modules/agents/registry/security.js +6 -0
  166. package/dist/src/modules/agents/registry/security.js.map +1 -1
  167. package/dist/src/modules/agents/types.d.ts +2 -0
  168. package/dist/src/modules/engines/evaluation-engine.d.ts +11 -0
  169. package/dist/src/modules/engines/evaluation-engine.js +103 -0
  170. package/dist/src/modules/engines/evaluation-engine.js.map +1 -0
  171. package/dist/src/modules/engines/health-engine.d.ts +16 -0
  172. package/dist/src/modules/engines/health-engine.js +50 -0
  173. package/dist/src/modules/engines/health-engine.js.map +1 -0
  174. package/dist/src/modules/engines/planning-engine.d.ts +25 -0
  175. package/dist/src/modules/engines/planning-engine.js +79 -0
  176. package/dist/src/modules/engines/planning-engine.js.map +1 -0
  177. package/dist/src/modules/engines/risk-engine.d.ts +18 -0
  178. package/dist/src/modules/engines/risk-engine.js +106 -0
  179. package/dist/src/modules/engines/risk-engine.js.map +1 -0
  180. package/dist/src/modules/engines/routing-engine.d.ts +11 -0
  181. package/dist/src/modules/engines/routing-engine.js +74 -0
  182. package/dist/src/modules/engines/routing-engine.js.map +1 -0
  183. package/dist/src/modules/engines/types.d.ts +47 -0
  184. package/dist/src/modules/engines/types.js +2 -0
  185. package/dist/src/modules/engines/types.js.map +1 -0
  186. package/dist/src/shared/constants.d.ts +5 -2
  187. package/dist/src/shared/constants.js +4 -1
  188. package/dist/src/shared/constants.js.map +1 -1
  189. package/dist/src/shared/fs.d.ts +1 -0
  190. package/dist/src/shared/fs.js +4 -0
  191. package/dist/src/shared/fs.js.map +1 -1
  192. package/dist/src/shared/storage.d.ts +60 -0
  193. package/dist/src/shared/storage.js +208 -0
  194. package/dist/src/shared/storage.js.map +1 -0
  195. package/dist/tests/agent-memory-v2.test.d.ts +1 -0
  196. package/dist/tests/agent-memory-v2.test.js +68 -0
  197. package/dist/tests/agent-memory-v2.test.js.map +1 -0
  198. package/dist/tests/agents-definitions.test.js +42 -0
  199. package/dist/tests/agents-definitions.test.js.map +1 -1
  200. package/dist/tests/integration/hermes_locking.test.js +7 -10
  201. package/dist/tests/integration/hermes_locking.test.js.map +1 -1
  202. package/dist/tests/orchestrate.test.js +5 -1
  203. package/dist/tests/orchestrate.test.js.map +1 -1
  204. package/dist/tests/orchestrator-dependencies.test.d.ts +1 -0
  205. package/dist/tests/orchestrator-dependencies.test.js +52 -0
  206. package/dist/tests/orchestrator-dependencies.test.js.map +1 -0
  207. package/dist/tests/plan.test.d.ts +1 -0
  208. package/dist/tests/plan.test.js +63 -0
  209. package/dist/tests/plan.test.js.map +1 -0
  210. package/dist/tests/planning-engine.test.d.ts +1 -0
  211. package/dist/tests/planning-engine.test.js +50 -0
  212. package/dist/tests/planning-engine.test.js.map +1 -0
  213. package/dist/tests/status-cost.test.d.ts +1 -0
  214. package/dist/tests/status-cost.test.js +54 -0
  215. package/dist/tests/status-cost.test.js.map +1 -0
  216. package/dist/tests/status.test.js +8 -7
  217. package/dist/tests/status.test.js.map +1 -1
  218. package/dist/tests/trace-replay.test.d.ts +1 -0
  219. package/dist/tests/trace-replay.test.js +65 -0
  220. package/dist/tests/trace-replay.test.js.map +1 -0
  221. package/dist/tests/trace.test.js +14 -7
  222. package/dist/tests/trace.test.js.map +1 -1
  223. package/dist/ui/assets/index-Bkt7APzu.css +1 -0
  224. package/dist/ui/assets/index-CeX-06mI.js +49 -0
  225. package/dist/ui/index.html +14 -0
  226. package/package.json +5 -4
  227. package/templates/prompts/contract-design-recipe.md +1 -1
  228. package/templates/prompts/db-management-recipe.md +3 -3
  229. package/templates/prompts/deployment-recipe.md +3 -3
  230. package/templates/prompts/performance-optimization-recipe.md +3 -3
  231. package/templates/prompts/pull-request-template.md +2 -2
  232. package/templates/prompts/security-audit-recipe.md +3 -3
  233. package/templates/standards/crud-governance.md +1 -1
  234. package/templates/standards/deployment-standards.md +1 -1
  235. package/templates/standards/governance-standards.md +1 -1
  236. package/templates/standards/llm-governance.md +1 -1
  237. package/templates/standards/nextjs-standards.md +13 -0
  238. package/templates/standards/observability-standards.md +1 -1
  239. package/templates/standards/security-audit-standards.md +1 -1
  240. package/templates/standards/security-standards.md +1 -1
  241. package/templates/standards/testing-standards.md +1 -1
  242. package/templates/standards/vite-standards.md +13 -0
  243. package/framework-mcp/dist/constants.js +0 -64
  244. package/framework-mcp/dist/index.js +0 -120
  245. package/framework-mcp/dist/tools/control_plane/locking.js +0 -82
  246. package/framework-mcp/dist/tools/control_plane/registry.js +0 -34
  247. package/framework-mcp/dist/tools/definitions.js +0 -290
  248. package/framework-mcp/dist/tools/file_system/batch_surgical_edit.js +0 -59
  249. package/framework-mcp/dist/tools/file_system/patch_file.js +0 -29
  250. package/framework-mcp/dist/tools/file_system/read_file.js +0 -51
  251. package/framework-mcp/dist/tools/file_system/replace_text.js +0 -45
  252. package/framework-mcp/dist/tools/file_system/write_file.js +0 -38
  253. package/framework-mcp/dist/tools/framework/audit_deps.js +0 -41
  254. package/framework-mcp/dist/tools/framework/get_status.js +0 -5
  255. package/framework-mcp/dist/tools/framework/orchestrate.js +0 -5
  256. package/framework-mcp/dist/tools/framework/run_tests.js +0 -27
  257. package/framework-mcp/dist/tools/framework/update_contract_hash.js +0 -5
  258. package/framework-mcp/dist/tools/framework/update_memory.js +0 -8
  259. package/framework-mcp/dist/tools/index.js +0 -60
  260. package/framework-mcp/dist/tools/memory/get_insights.js +0 -34
  261. package/framework-mcp/dist/tools/memory/read_memory.js +0 -28
  262. package/framework-mcp/dist/tools/messaging/log_action.js +0 -22
  263. package/framework-mcp/dist/tools/messaging/send_message.js +0 -94
  264. package/framework-mcp/dist/tools/observability/check_ports.js +0 -26
  265. package/framework-mcp/dist/tools/observability/get_health.js +0 -19
  266. package/framework-mcp/dist/tools/quality/check_lint.js +0 -30
  267. package/framework-mcp/dist/tools/search/get_gaps.js +0 -48
  268. package/framework-mcp/dist/tools/search/get_map.js +0 -43
  269. package/framework-mcp/dist/tools/search/grep_search.js +0 -75
  270. package/framework-mcp/dist/tools/search/list_dir.js +0 -28
  271. package/framework-mcp/dist/tools/shell/run_command.js +0 -56
  272. package/framework-mcp/dist/utils/cli.js +0 -59
  273. package/framework-mcp/dist/utils/compliance.js +0 -78
  274. package/framework-mcp/dist/utils/fs.js +0 -44
  275. package/framework-mcp/dist/utils/metrics.js +0 -56
  276. package/framework-mcp/dist/utils/security.js +0 -60
  277. package/framework-mcp/package-lock.json +0 -1191
  278. package/framework-mcp/package.json +0 -29
  279. package/framework-mcp/src/constants.ts +0 -78
  280. package/framework-mcp/src/declarations.d.ts +0 -17
  281. package/framework-mcp/src/index.ts +0 -145
  282. package/framework-mcp/src/tools/control_plane/locking.ts +0 -89
  283. package/framework-mcp/src/tools/control_plane/registry.ts +0 -38
  284. package/framework-mcp/src/tools/definitions.ts +0 -292
  285. package/framework-mcp/src/tools/file_system/batch_surgical_edit.ts +0 -79
  286. package/framework-mcp/src/tools/file_system/patch_file.ts +0 -39
  287. package/framework-mcp/src/tools/file_system/read_file.ts +0 -58
  288. package/framework-mcp/src/tools/file_system/replace_text.ts +0 -54
  289. package/framework-mcp/src/tools/file_system/write_file.ts +0 -45
  290. package/framework-mcp/src/tools/framework/audit_deps.ts +0 -49
  291. package/framework-mcp/src/tools/framework/get_status.ts +0 -7
  292. package/framework-mcp/src/tools/framework/orchestrate.ts +0 -7
  293. package/framework-mcp/src/tools/framework/run_tests.ts +0 -30
  294. package/framework-mcp/src/tools/framework/update_contract_hash.ts +0 -7
  295. package/framework-mcp/src/tools/framework/update_memory.ts +0 -10
  296. package/framework-mcp/src/tools/index.ts +0 -64
  297. package/framework-mcp/src/tools/memory/get_insights.ts +0 -41
  298. package/framework-mcp/src/tools/memory/read_memory.ts +0 -31
  299. package/framework-mcp/src/tools/messaging/log_action.ts +0 -28
  300. package/framework-mcp/src/tools/messaging/send_message.ts +0 -97
  301. package/framework-mcp/src/tools/observability/check_ports.ts +0 -30
  302. package/framework-mcp/src/tools/observability/get_health.ts +0 -24
  303. package/framework-mcp/src/tools/quality/check_lint.ts +0 -36
  304. package/framework-mcp/src/tools/search/get_gaps.ts +0 -54
  305. package/framework-mcp/src/tools/search/get_map.ts +0 -48
  306. package/framework-mcp/src/tools/search/grep_search.ts +0 -75
  307. package/framework-mcp/src/tools/search/list_dir.ts +0 -34
  308. package/framework-mcp/src/tools/shell/run_command.ts +0 -66
  309. package/framework-mcp/src/tools/types.ts +0 -89
  310. package/framework-mcp/src/utils/cli.ts +0 -53
  311. package/framework-mcp/src/utils/compliance.ts +0 -95
  312. package/framework-mcp/src/utils/fs.ts +0 -45
  313. package/framework-mcp/src/utils/metrics.ts +0 -73
  314. package/framework-mcp/src/utils/security.ts +0 -66
  315. package/framework-mcp/tests/tools/file_system/file_system_tools.test.ts +0 -212
  316. package/framework-mcp/tests/tools/messaging/send_message.test.ts +0 -136
  317. package/framework-mcp/tests/tools/quality/check_lint.test.ts +0 -46
  318. package/framework-mcp/tests/tools/shell/run_command.test.ts +0 -55
  319. package/framework-mcp/tsconfig.json +0 -14
  320. package/src/cli/adapters/core.ts +0 -91
  321. package/src/cli/adapters/index.ts +0 -5
  322. package/src/cli/adapters/paths.ts +0 -135
  323. package/src/cli/adapters/scaffold.ts +0 -95
  324. package/src/cli/adapters/utils.ts +0 -87
  325. package/src/cli/commands/approve.ts +0 -73
  326. package/src/cli/commands/check.ts +0 -188
  327. package/src/cli/commands/compliance.ts +0 -55
  328. package/src/cli/commands/contract.ts +0 -68
  329. package/src/cli/commands/explorer.ts +0 -45
  330. package/src/cli/commands/git.ts +0 -39
  331. package/src/cli/commands/init/scaffold-core.ts +0 -136
  332. package/src/cli/commands/init/scaffold-docs.ts +0 -44
  333. package/src/cli/commands/init/scaffold-ops.ts +0 -83
  334. package/src/cli/commands/init/scaffold-standards.ts +0 -67
  335. package/src/cli/commands/init.ts +0 -193
  336. package/src/cli/commands/knowledge.ts +0 -44
  337. package/src/cli/commands/lint.ts +0 -23
  338. package/src/cli/commands/log.ts +0 -37
  339. package/src/cli/commands/memory.ts +0 -6
  340. package/src/cli/commands/orchestrate.ts +0 -450
  341. package/src/cli/commands/plan.ts +0 -113
  342. package/src/cli/commands/script.ts +0 -20
  343. package/src/cli/commands/security.ts +0 -38
  344. package/src/cli/commands/status.ts +0 -44
  345. package/src/cli/commands/trace.ts +0 -31
  346. package/src/cli/index.ts +0 -322
  347. package/src/cli/shims.ts +0 -66
  348. package/src/cli/utils/claude.ts +0 -63
  349. package/src/cli/utils/compliance.ts +0 -191
  350. package/src/cli/utils/config-schema.ts +0 -48
  351. package/src/cli/utils/fs.ts +0 -170
  352. package/src/cli/utils/i18n.ts +0 -44
  353. package/src/cli/utils/memory.ts +0 -303
  354. package/src/cli/utils/pkg.ts +0 -317
  355. package/src/cli/utils/schemas.ts +0 -22
  356. package/src/cli/utils/string.ts +0 -55
  357. package/src/cli/utils/time.ts +0 -27
  358. package/src/cli/utils/ui.ts +0 -66
  359. package/src/contracts/index.ts +0 -1
  360. package/src/contracts/tasks.ts +0 -26
  361. package/src/modules/adapters/definitions.ts +0 -171
  362. package/src/modules/adapters/registry.ts +0 -27
  363. package/src/modules/adapters/shared.ts +0 -120
  364. package/src/modules/adapters/types.ts +0 -16
  365. package/src/modules/agents/definitions.ts +0 -460
  366. package/src/modules/agents/registry/analyst.ts +0 -44
  367. package/src/modules/agents/registry/architect.ts +0 -47
  368. package/src/modules/agents/registry/backend.ts +0 -46
  369. package/src/modules/agents/registry/database.ts +0 -43
  370. package/src/modules/agents/registry/devops.ts +0 -44
  371. package/src/modules/agents/registry/explorer.ts +0 -41
  372. package/src/modules/agents/registry/frontend.ts +0 -48
  373. package/src/modules/agents/registry/git.ts +0 -41
  374. package/src/modules/agents/registry/manager.ts +0 -58
  375. package/src/modules/agents/registry/mobile.ts +0 -44
  376. package/src/modules/agents/registry/native.ts +0 -44
  377. package/src/modules/agents/registry/quality.ts +0 -46
  378. package/src/modules/agents/registry/security.ts +0 -42
  379. package/src/modules/agents/types.ts +0 -37
  380. package/src/modules/skills/definitions.ts +0 -71
  381. package/src/schema/agent-lifecycle-schema.json +0 -59
  382. package/src/shared/constants.ts +0 -218
  383. package/src/shared/errors.ts +0 -75
  384. package/src/shared/fs.ts +0 -50
  385. package/src/shared/logger.ts +0 -139
  386. package/src/shared/types.ts +0 -20
  387. /package/{framework-mcp/dist/tools/types.js → dist/framework-mcp/tests/tools/file_system/compliance-risk.test.d.ts} +0 -0
@@ -42,7 +42,7 @@ export function handleGetProjectGaps(projectRoot, args) {
42
42
  type: "text",
43
43
  text: results.length > 0
44
44
  ? `Found ${results.length} gaps/todos:\n\n${results.join("\n")}`
45
- : " No major gaps or TODOs found in the scanned directory."
45
+ : "[OK] No major gaps or TODOs found in the scanned directory."
46
46
  }]
47
47
  };
48
48
  }
@@ -1 +1 @@
1
- {"version":3,"file":"get_gaps.js","sourceRoot":"","sources":["../../../../../framework-mcp/src/tools/search/get_gaps.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAGnD;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAAC,WAAmB,EAAE,IAAwB;IAC9E,MAAM,MAAM,GAAG,QAAQ,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC,CAAC;IACzD,MAAM,OAAO,GAAa,EAAE,CAAC;IAE7B,MAAM,IAAI,GAAG,CAAC,GAAW,EAAE,EAAE;QACzB,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,OAAO;QAChC,MAAM,KAAK,GAAG,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QAClC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACvB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YACtC,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;YAE1D,IAAI,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;gBACtC,IAAI,IAAI,KAAK,cAAc,IAAI,IAAI,KAAK,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;oBACtE,IAAI,CAAC,QAAQ,CAAC,CAAC;gBACnB,CAAC;YACL,CAAC;iBAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;gBACvD,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;gBAClD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAElC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;oBAC1B,sBAAsB;oBACtB,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;wBAC1E,OAAO,CAAC,IAAI,CAAC,IAAI,YAAY,IAAI,KAAK,GAAG,CAAC,mBAAmB,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;oBAChF,CAAC;oBAED,sDAAsD;oBACtD,IAAI,IAAI,CAAC,QAAQ,CAAC,mCAAmC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,qBAAqB,CAAC,EAAE,CAAC;wBAC7F,OAAO,CAAC,IAAI,CAAC,IAAI,YAAY,IAAI,KAAK,GAAG,CAAC,gBAAgB,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;oBAC7E,CAAC;gBACL,CAAC,CAAC,CAAC;YACP,CAAC;QACL,CAAC;IACL,CAAC,CAAC;IAEF,IAAI,CAAC,MAAM,CAAC,CAAC;IAEb,OAAO;QACH,OAAO,EAAE,CAAC;gBACN,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,OAAO,CAAC,MAAM,GAAG,CAAC;oBACpB,CAAC,CAAC,SAAS,OAAO,CAAC,MAAM,mBAAmB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;oBAChE,CAAC,CAAC,0DAA0D;aACnE,CAAC;KACL,CAAC;AACN,CAAC"}
1
+ {"version":3,"file":"get_gaps.js","sourceRoot":"","sources":["../../../../../framework-mcp/src/tools/search/get_gaps.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAGnD;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAAC,WAAmB,EAAE,IAAwB;IAC9E,MAAM,MAAM,GAAG,QAAQ,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC,CAAC;IACzD,MAAM,OAAO,GAAa,EAAE,CAAC;IAE7B,MAAM,IAAI,GAAG,CAAC,GAAW,EAAE,EAAE;QACzB,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,OAAO;QAChC,MAAM,KAAK,GAAG,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QAClC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACvB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YACtC,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;YAE1D,IAAI,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;gBACtC,IAAI,IAAI,KAAK,cAAc,IAAI,IAAI,KAAK,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;oBACtE,IAAI,CAAC,QAAQ,CAAC,CAAC;gBACnB,CAAC;YACL,CAAC;iBAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;gBACvD,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;gBAClD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAElC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;oBAC1B,sBAAsB;oBACtB,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;wBAC1E,OAAO,CAAC,IAAI,CAAC,IAAI,YAAY,IAAI,KAAK,GAAG,CAAC,mBAAmB,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;oBAChF,CAAC;oBAED,sDAAsD;oBACtD,IAAI,IAAI,CAAC,QAAQ,CAAC,mCAAmC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,qBAAqB,CAAC,EAAE,CAAC;wBAC7F,OAAO,CAAC,IAAI,CAAC,IAAI,YAAY,IAAI,KAAK,GAAG,CAAC,gBAAgB,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;oBAC7E,CAAC;gBACL,CAAC,CAAC,CAAC;YACP,CAAC;QACL,CAAC;IACL,CAAC,CAAC;IAEF,IAAI,CAAC,MAAM,CAAC,CAAC;IAEb,OAAO;QACH,OAAO,EAAE,CAAC;gBACN,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,OAAO,CAAC,MAAM,GAAG,CAAC;oBACpB,CAAC,CAAC,SAAS,OAAO,CAAC,MAAM,mBAAmB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;oBAChE,CAAC,CAAC,6DAA6D;aACtE,CAAC;KACL,CAAC;AACN,CAAC"}
@@ -11,7 +11,7 @@ export function handleGrepSearch(projectRoot, args) {
11
11
  if (!pattern) {
12
12
  const err = "Search pattern is required.";
13
13
  Metrics.logError(projectRoot, "@mcp", "grep_search", err);
14
- return { isError: true, content: [{ type: "text", text: `❌ ${err}` }] };
14
+ return { isError: true, content: [{ type: "text", text: `[ERROR] ${err}` }] };
15
15
  }
16
16
  const results = [];
17
17
  try {
@@ -20,7 +20,7 @@ export function handleGrepSearch(projectRoot, args) {
20
20
  catch (e) {
21
21
  const err = `Invalid regex pattern: ${String(e)}`;
22
22
  Metrics.logError(projectRoot, "@mcp", "grep_search", err);
23
- return { isError: true, content: [{ type: "text", text: `❌ ${err}` }] };
23
+ return { isError: true, content: [{ type: "text", text: `[ERROR] ${err}` }] };
24
24
  }
25
25
  const walk = (dir) => {
26
26
  if (results.length > 100)
@@ -62,7 +62,7 @@ export function handleGrepSearch(projectRoot, args) {
62
62
  catch (e) {
63
63
  const err = `Search failed: ${String(e)}`;
64
64
  Metrics.logError(projectRoot, "@mcp", "grep_search", err);
65
- return { isError: true, content: [{ type: "text", text: `❌ ${err}` }] };
65
+ return { isError: true, content: [{ type: "text", text: `[ERROR] ${err}` }] };
66
66
  }
67
67
  return {
68
68
  content: [{
@@ -1 +1 @@
1
- {"version":3,"file":"grep_search.js","sourceRoot":"","sources":["../../../../../framework-mcp/src/tools/search/grep_search.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"grep_search.js","sourceRoot":"","sources":["../../../../../framework-mcp/src/tools/search/grep_search.ts"],"names":[],"mappings":"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"}
@@ -82,6 +82,7 @@ export interface RegisterAgentArgs {
82
82
  agent: string;
83
83
  role: string;
84
84
  capability?: number;
85
+ specialties?: Record<string, number>;
85
86
  }
86
87
  export interface StartDashboardArgs {
87
88
  port?: number;
@@ -3,3 +3,9 @@
3
3
  * Checks content against corporate standards using AST analysis before allowing file mutations.
4
4
  */
5
5
  export declare function verifyCorporateCompliance(content: string, filePath: string): void;
6
+ export interface RiskAssessment {
7
+ isRisk: boolean;
8
+ reason?: string;
9
+ }
10
+ export declare function isHighRiskOperation(content: string, filePath: string): RiskAssessment;
11
+ export declare function verifyRiskAndAwaitApproval(projectRoot: string, content: string, filePath: string): Promise<void>;
@@ -1,4 +1,7 @@
1
1
  import ts from "typescript";
2
+ import fs from "fs";
3
+ import path from "path";
4
+ import { resolveFrameworkDir } from "./security.js";
2
5
  /**
3
6
  * Enterprise Compliance Guardrail
4
7
  * Checks content against corporate standards using AST analysis before allowing file mutations.
@@ -22,7 +25,7 @@ export function verifyCorporateCompliance(content, filePath) {
22
25
  if (["log", "warn", "error"].includes(name)) {
23
26
  // Check if file is exempt
24
27
  if (!filePath.includes("logger.ts") && !filePath.includes("check.ts") && !filePath.includes("cli.ts")) {
25
- errors.push(`❌ Corporate Compliance Breach: 'console.${name}' usage is forbidden at line ${sourceFile.getLineAndCharacterOfPosition(node.getStart()).line + 1}.`);
28
+ errors.push(`[ERROR] Corporate Compliance Breach: 'console.${name}' usage is forbidden at line ${sourceFile.getLineAndCharacterOfPosition(node.getStart()).line + 1}.`);
26
29
  }
27
30
  }
28
31
  }
@@ -31,7 +34,7 @@ export function verifyCorporateCompliance(content, filePath) {
31
34
  if (ts.isTypeReferenceNode(node)) {
32
35
  if (ts.isIdentifier(node.typeName) && node.typeName.text === "any") {
33
36
  if (!filePath.includes("definitions.ts") && !filePath.includes("types.ts")) {
34
- errors.push(`❌ Corporate Compliance Breach: 'any' type is forbidden at line ${sourceFile.getLineAndCharacterOfPosition(node.getStart()).line + 1}.`);
37
+ errors.push(`[ERROR] Corporate Compliance Breach: 'any' type is forbidden at line ${sourceFile.getLineAndCharacterOfPosition(node.getStart()).line + 1}.`);
35
38
  }
36
39
  }
37
40
  }
@@ -42,14 +45,14 @@ export function verifyCorporateCompliance(content, filePath) {
42
45
  const forbiddenLibs = ["@chakra-ui", "mui", "@shadcn", "antd", "bootstrap"];
43
46
  const lib = forbiddenLibs.find(l => moduleSpecifier.text.includes(l));
44
47
  if (lib) {
45
- errors.push(`❌ Corporate Compliance Breach: External UI library '${lib}' usage is FORBIDDEN at line ${sourceFile.getLineAndCharacterOfPosition(node.getStart()).line + 1}. Build atomic components manually instead.`);
48
+ errors.push(`[ERROR] Corporate Compliance Breach: External UI library '${lib}' usage is FORBIDDEN at line ${sourceFile.getLineAndCharacterOfPosition(node.getStart()).line + 1}. Build atomic components manually instead.`);
46
49
  }
47
50
  }
48
51
  }
49
52
  // Handle 'any' as a keyword type (e.g., parameter: any)
50
53
  if (node.kind === ts.SyntaxKind.AnyKeyword) {
51
54
  if (!filePath.includes("definitions.ts") && !filePath.includes("types.ts")) {
52
- errors.push(`❌ Corporate Compliance Breach: 'any' keyword is forbidden at line ${sourceFile.getLineAndCharacterOfPosition(node.getStart()).line + 1}.`);
55
+ errors.push(`[ERROR] Corporate Compliance Breach: 'any' keyword is forbidden at line ${sourceFile.getLineAndCharacterOfPosition(node.getStart()).line + 1}.`);
53
56
  }
54
57
  }
55
58
  ts.forEachChild(node, visit);
@@ -69,11 +72,161 @@ export function verifyCorporateCompliance(content, filePath) {
69
72
  if (msg.includes("Email") && (filePath.endsWith("README.md") || filePath.endsWith("package.json") || filePath.includes("CONTRIBUTING"))) {
70
73
  continue;
71
74
  }
72
- errors.push(`❌ Corporate Compliance Breach: ${msg} detected.`);
75
+ errors.push(`[ERROR] Corporate Compliance Breach: ${msg} detected.`);
73
76
  }
74
77
  }
75
78
  if (errors.length > 0) {
76
79
  throw new Error(errors.join("\n"));
77
80
  }
78
81
  }
82
+ export function isHighRiskOperation(content, filePath) {
83
+ const fileName = filePath.toLowerCase();
84
+ // 1. Database Deletions / Table Drops
85
+ if (fileName.endsWith(".sql") || fileName.endsWith(".ts") || fileName.endsWith(".js") || fileName.endsWith(".go")) {
86
+ const dropRegex = /\b(DROP\s+(DATABASE|TABLE|SCHEMA|VIEW|INDEX)|TRUNCATE\s+TABLE)\b/i;
87
+ if (dropRegex.test(content)) {
88
+ return { isRisk: true, reason: "Database structural deletion detected (DROP/TRUNCATE)" };
89
+ }
90
+ }
91
+ // 2. Package Updates
92
+ if (fileName.endsWith("package.json")) {
93
+ return { isRisk: true, reason: "Dependency/package update operation detected" };
94
+ }
95
+ // 3. Deployment / Infrastructure Scripts
96
+ if (fileName.includes("deploy") ||
97
+ fileName.includes("dockerfile") ||
98
+ fileName.includes("docker-compose") ||
99
+ fileName.includes("k8s") ||
100
+ fileName.includes("kubernetes") ||
101
+ fileName.includes("github/workflows")) {
102
+ return { isRisk: true, reason: "Infrastructure or deployment script mutation detected" };
103
+ }
104
+ return { isRisk: false };
105
+ }
106
+ export async function verifyRiskAndAwaitApproval(projectRoot, content, filePath) {
107
+ const assessment = isHighRiskOperation(content, filePath);
108
+ if (!assessment.isRisk) {
109
+ return;
110
+ }
111
+ const frameworkDir = resolveFrameworkDir(projectRoot);
112
+ const absoluteFrameworkPath = path.isAbsolute(frameworkDir)
113
+ ? frameworkDir
114
+ : path.resolve(projectRoot, frameworkDir);
115
+ const statusPath = path.join(absoluteFrameworkPath, "memory", "status.json");
116
+ const statePath = path.join(absoluteFrameworkPath, "memory", "state.json");
117
+ const messagesDir = path.join(absoluteFrameworkPath, "messages");
118
+ const managerMsgPath = path.join(messagesDir, "manager.json");
119
+ let activeAgent = null;
120
+ let traceId = "UNKNOWN";
121
+ // 1. Resolve traceId from state.json
122
+ if (fs.existsSync(statePath)) {
123
+ try {
124
+ const state = JSON.parse(fs.readFileSync(statePath, "utf8"));
125
+ if (state && state.traceId) {
126
+ traceId = state.traceId;
127
+ }
128
+ }
129
+ catch { /* ignore */ }
130
+ }
131
+ // 2. Resolve active agent from status.json
132
+ let statusData = {};
133
+ if (fs.existsSync(statusPath)) {
134
+ try {
135
+ statusData = JSON.parse(fs.readFileSync(statusPath, "utf8"));
136
+ for (const [agentName, info] of Object.entries(statusData)) {
137
+ if (info.state === "EXECUTING") {
138
+ activeAgent = agentName.startsWith("@") ? agentName : `@${agentName}`;
139
+ break;
140
+ }
141
+ }
142
+ }
143
+ catch { /* ignore */ }
144
+ }
145
+ if (!activeAgent) {
146
+ throw new Error(`Security Exception: High-risk operation blocked. ${assessment.reason}. (No active executing agent found)`);
147
+ }
148
+ // 3. Update active agent status to WAITING_FOR_APPROVAL
149
+ const originalTask = statusData[activeAgent.replace("@", "")]?.task || statusData[activeAgent]?.task || "Executing task";
150
+ const statusKey = activeAgent.replace("@", "");
151
+ statusData[statusKey] = {
152
+ state: "WAITING_FOR_APPROVAL",
153
+ task: `[PAUSED] Waiting for approval: ${assessment.reason} on ${filePath}`
154
+ };
155
+ try {
156
+ fs.writeFileSync(statusPath, JSON.stringify(statusData, null, 2));
157
+ }
158
+ catch { /* ignore */ }
159
+ // 4. Create and append ALERT message to messages/manager.json
160
+ if (!fs.existsSync(messagesDir)) {
161
+ fs.mkdirSync(messagesDir, { recursive: true });
162
+ }
163
+ const alertMsg = {
164
+ timestamp: new Date().toISOString(),
165
+ from: activeAgent,
166
+ to: "@manager",
167
+ category: "ALERT",
168
+ content: `High-risk operation: ${assessment.reason} on ${filePath}`,
169
+ traceId: traceId,
170
+ status: "PENDING",
171
+ priority: "HIGH",
172
+ requiresApproval: true,
173
+ action: `MUTATION:${filePath}`
174
+ };
175
+ try {
176
+ fs.appendFileSync(managerMsgPath, JSON.stringify(alertMsg) + "\n");
177
+ }
178
+ catch (err) {
179
+ statusData[statusKey] = { state: "EXECUTING", task: originalTask };
180
+ fs.writeFileSync(statusPath, JSON.stringify(statusData, null, 2));
181
+ throw new Error(`Security Exception: Failed to queue approval request. ${String(err)}`, { cause: err });
182
+ }
183
+ // 5. Polling Loop: Wait for approval (up to 60 seconds)
184
+ const pollIntervalMs = 500;
185
+ const timeoutMs = 60000;
186
+ const start = Date.now();
187
+ while (Date.now() - start < timeoutMs) {
188
+ // Non-blocking wait
189
+ await new Promise(resolve => setTimeout(resolve, pollIntervalMs));
190
+ if (fs.existsSync(managerMsgPath)) {
191
+ try {
192
+ const contentStr = fs.readFileSync(managerMsgPath, "utf8").trim();
193
+ const lines = contentStr.split("\n");
194
+ let isApproved = false;
195
+ let isDenied = false;
196
+ for (const line of lines) {
197
+ if (!line.trim())
198
+ continue;
199
+ const parsed = JSON.parse(line);
200
+ if (parsed.traceId === traceId && parsed.category === "ALERT" && parsed.action === `MUTATION:${filePath}`) {
201
+ if (parsed.status === "APPROVED") {
202
+ isApproved = true;
203
+ }
204
+ else if (parsed.status === "PROCESSED" || parsed.status === "DENIED") {
205
+ isDenied = true;
206
+ }
207
+ }
208
+ }
209
+ if (isApproved) {
210
+ statusData[statusKey] = { state: "EXECUTING", task: originalTask };
211
+ fs.writeFileSync(statusPath, JSON.stringify(statusData, null, 2));
212
+ return;
213
+ }
214
+ if (isDenied) {
215
+ throw new Error("Security Exception: High-risk operation was explicitly DENIED by user.");
216
+ }
217
+ }
218
+ catch (err) {
219
+ if (err.message.includes("explicitly DENIED")) {
220
+ throw err;
221
+ }
222
+ }
223
+ }
224
+ }
225
+ statusData[statusKey] = { state: "EXECUTING", task: originalTask };
226
+ try {
227
+ fs.writeFileSync(statusPath, JSON.stringify(statusData, null, 2));
228
+ }
229
+ catch { /* ignore */ }
230
+ throw new Error(`Security Exception: High-risk operation timed out waiting for approval. (${assessment.reason})`);
231
+ }
79
232
  //# sourceMappingURL=compliance.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"compliance.js","sourceRoot":"","sources":["../../../../framework-mcp/src/utils/compliance.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,YAAY,CAAC;AAE5B;;;GAGG;AACH,MAAM,UAAU,yBAAyB,CAAC,OAAe,EAAE,QAAgB;IACvE,wEAAwE;IACxE,IAAI,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;QAC9F,OAAO;IACX,CAAC;IAED,MAAM,UAAU,GAAG,EAAE,CAAC,gBAAgB,CAClC,QAAQ,EACR,OAAO,EACP,EAAE,CAAC,YAAY,CAAC,MAAM,EACtB,IAAI,CACP,CAAC;IAEF,MAAM,MAAM,GAAa,EAAE,CAAC;IAE5B;;OAEG;IACH,SAAS,KAAK,CAAC,IAAa;QACxB,yBAAyB;QACzB,IAAI,EAAE,CAAC,0BAA0B,CAAC,IAAI,CAAC,EAAE,CAAC;YACtC,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;YACnC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;YAC5B,IAAI,EAAE,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;gBAC/D,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;oBAC1C,0BAA0B;oBAC1B,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;wBACpG,MAAM,CAAC,IAAI,CAAC,2CAA2C,IAAI,gCAAgC,UAAU,CAAC,6BAA6B,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;oBACtK,CAAC;gBACL,CAAC;YACL,CAAC;QACL,CAAC;QAED,4BAA4B;QAC5B,IAAI,EAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/B,IAAI,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;gBACjE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;oBACzE,MAAM,CAAC,IAAI,CAAC,kEAAkE,UAAU,CAAC,6BAA6B,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;gBACzJ,CAAC;YACL,CAAC;QACL,CAAC;QAED,0DAA0D;QAC1D,IAAI,EAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/B,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC;YAC7C,IAAI,EAAE,CAAC,eAAe,CAAC,eAAe,CAAC,EAAE,CAAC;gBACtC,MAAM,aAAa,GAAG,CAAC,YAAY,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;gBAC5E,MAAM,GAAG,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;gBACtE,IAAI,GAAG,EAAE,CAAC;oBACN,MAAM,CAAC,IAAI,CAAC,uDAAuD,GAAG,gCAAgC,UAAU,CAAC,6BAA6B,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,GAAG,CAAC,6CAA6C,CAAC,CAAC;gBAC3N,CAAC;YACL,CAAC;QACL,CAAC;QAED,wDAAwD;QACxD,IAAI,IAAI,CAAC,IAAI,KAAK,EAAE,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC;YACzC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;gBACzE,MAAM,CAAC,IAAI,CAAC,qEAAqE,UAAU,CAAC,6BAA6B,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;YAC5J,CAAC;QACL,CAAC;QAED,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACjC,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,CAAC;IAElB,mCAAmC;IACnC,MAAM,WAAW,GAAG;QAChB,EAAE,KAAK,EAAE,+BAA+B,EAAE,GAAG,EAAE,mBAAmB,EAAE;QACpE,EAAE,KAAK,EAAE,8BAA8B,EAAE,GAAG,EAAE,kBAAkB,EAAE;QAClE,EAAE,KAAK,EAAE,gCAAgC,EAAE,GAAG,EAAE,oBAAoB,EAAE;QACtE,EAAE,KAAK,EAAE,gDAAgD,EAAE,GAAG,EAAE,6BAA6B,EAAE;QAC/F,EAAE,KAAK,EAAE,yCAAyC,EAAE,GAAG,EAAE,mCAAmC,EAAE;KACjG,CAAC;IAEF,KAAK,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,WAAW,EAAE,CAAC;QACvC,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YACtB,6DAA6D;YAC7D,IAAI,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC;gBACtI,SAAS;YACb,CAAC;YACD,MAAM,CAAC,IAAI,CAAC,kCAAkC,GAAG,YAAY,CAAC,CAAC;QACnE,CAAC;IACL,CAAC;IAED,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACvC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"compliance.js","sourceRoot":"","sources":["../../../../framework-mcp/src/utils/compliance.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ export interface PermissionMatrix {
2
+ [agent: string]: {
3
+ write: string[];
4
+ read?: string[];
5
+ };
6
+ }
7
+ /**
8
+ * Validates if the active agent has write permission for the target file.
9
+ * Automatically identifies the active agent by checking the status.json store
10
+ * for the agent in the "EXECUTING" state.
11
+ */
12
+ export declare function verifyWritePermission(projectRoot: string, targetFilePath: string): void;
@@ -0,0 +1,72 @@
1
+ import fs from "fs";
2
+ import path from "path";
3
+ import { resolveFrameworkDir } from "./security.js";
4
+ function globToRegex(glob) {
5
+ const escaped = glob.replace(/[.+^${}()|[\]\\]/g, "\\$&");
6
+ const step1 = escaped.replace(/\*\*/g, "__DBL_STR__");
7
+ const step2 = step1.replace(/\*/g, "[^/]*");
8
+ const regexStr = "^" + step2.replace(/__DBL_STR__/g, ".*") + "$";
9
+ return new RegExp(regexStr);
10
+ }
11
+ /**
12
+ * Validates if the active agent has write permission for the target file.
13
+ * Automatically identifies the active agent by checking the status.json store
14
+ * for the agent in the "EXECUTING" state.
15
+ */
16
+ export function verifyWritePermission(projectRoot, targetFilePath) {
17
+ const frameworkDir = resolveFrameworkDir(projectRoot);
18
+ const absoluteFrameworkPath = path.isAbsolute(frameworkDir)
19
+ ? frameworkDir
20
+ : path.resolve(projectRoot, frameworkDir);
21
+ const matrixPath = path.join(absoluteFrameworkPath, "permission-matrix.json");
22
+ // If no permission matrix exists, skip enforcement (default allow)
23
+ if (!fs.existsSync(matrixPath)) {
24
+ return;
25
+ }
26
+ let matrix;
27
+ try {
28
+ matrix = JSON.parse(fs.readFileSync(matrixPath, "utf8"));
29
+ }
30
+ catch (e) {
31
+ throw new Error(`Failed to parse permission-matrix.json: ${String(e)}`, { cause: e });
32
+ }
33
+ // Determine the active agent from status.json
34
+ const statusPath = path.join(absoluteFrameworkPath, "memory", "status.json");
35
+ let activeAgent = null;
36
+ if (fs.existsSync(statusPath)) {
37
+ try {
38
+ const status = JSON.parse(fs.readFileSync(statusPath, "utf8"));
39
+ // Find an agent that is currently in the EXECUTING state
40
+ for (const [agentName, info] of Object.entries(status)) {
41
+ const data = info;
42
+ if (data.state === "EXECUTING") {
43
+ activeAgent = agentName.startsWith("@") ? agentName : `@${agentName}`;
44
+ break;
45
+ }
46
+ }
47
+ }
48
+ catch (e) {
49
+ // Log warning but don't crash, default to allowing if status can't be parsed
50
+ process.stderr.write(`[Permissions] Warning: Failed to read status.json: ${String(e)}\n`);
51
+ }
52
+ }
53
+ // If no active executing agent is found, default to allowing
54
+ if (!activeAgent) {
55
+ return;
56
+ }
57
+ const agentRules = matrix[activeAgent];
58
+ // If no rules defined for the agent, default to allowing
59
+ if (!agentRules || !agentRules.write) {
60
+ return;
61
+ }
62
+ // Resolve target path relative to project root for glob matching
63
+ const relativeTargetPath = path.relative(projectRoot, path.resolve(projectRoot, targetFilePath));
64
+ const allowed = agentRules.write.some(glob => {
65
+ const regex = globToRegex(glob);
66
+ return regex.test(relativeTargetPath);
67
+ });
68
+ if (!allowed) {
69
+ throw new Error(`Permission Denied: Agent ${activeAgent} is not authorized to write to "${relativeTargetPath}". Matrix rules restrict writes to: [${agentRules.write.join(", ")}].`);
70
+ }
71
+ }
72
+ //# sourceMappingURL=permissions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"permissions.js","sourceRoot":"","sources":["../../../../framework-mcp/src/utils/permissions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,84 @@
1
+ import { describe, expect, it, beforeEach, afterEach, vi } from "vitest";
2
+ import fs from "fs";
3
+ import path from "path";
4
+ import os from "os";
5
+ import { isHighRiskOperation, verifyRiskAndAwaitApproval } from "../../../src/utils/compliance.js";
6
+ describe("Policy Engine - High Risk Assessment & Human Approval", () => {
7
+ let tempDir;
8
+ let frameworkDir;
9
+ let messagesDir;
10
+ beforeEach(() => {
11
+ tempDir = fs.mkdtempSync(path.join(os.tmpdir(), "atabey-risk-test-"));
12
+ frameworkDir = path.join(tempDir, ".atabey");
13
+ messagesDir = path.join(frameworkDir, "messages");
14
+ fs.mkdirSync(frameworkDir, { recursive: true });
15
+ fs.mkdirSync(path.join(frameworkDir, "memory"), { recursive: true });
16
+ fs.mkdirSync(messagesDir, { recursive: true });
17
+ process.env.ATABEY_TEST_DIR = frameworkDir;
18
+ });
19
+ afterEach(() => {
20
+ delete process.env.ATABEY_TEST_DIR;
21
+ fs.rmSync(tempDir, { recursive: true, force: true });
22
+ vi.restoreAllMocks();
23
+ });
24
+ it("should correctly identify database deletions as high risk", () => {
25
+ const sqlContent = "DROP TABLE users;";
26
+ const tsContent = "const q = 'DROP DATABASE prod;';";
27
+ const safeContent = "SELECT * FROM users;";
28
+ expect(isHighRiskOperation(sqlContent, "schema.sql").isRisk).toBe(true);
29
+ expect(isHighRiskOperation(tsContent, "db.ts").isRisk).toBe(true);
30
+ expect(isHighRiskOperation(safeContent, "query.sql").isRisk).toBe(false);
31
+ });
32
+ it("should identify package.json dependency modifications as high risk", () => {
33
+ const pkgContent = JSON.stringify({
34
+ dependencies: {
35
+ "express": "^4.18.2"
36
+ }
37
+ });
38
+ expect(isHighRiskOperation(pkgContent, "package.json").isRisk).toBe(true);
39
+ });
40
+ it("should identify infrastructure script mutations as high risk", () => {
41
+ const dockerContent = "FROM node:18\nRUN npm install";
42
+ const deploySh = "#!/bin/bash\n/usr/bin/deploy.sh";
43
+ expect(isHighRiskOperation(dockerContent, "Dockerfile").isRisk).toBe(true);
44
+ expect(isHighRiskOperation(deploySh, "scripts/deploy.sh").isRisk).toBe(true);
45
+ });
46
+ it("should write WAITING_FOR_APPROVAL status and block/await approval in polling loop", async () => {
47
+ const statusPath = path.join(frameworkDir, "memory", "status.json");
48
+ const statePath = path.join(frameworkDir, "memory", "state.json");
49
+ const managerMsgPath = path.join(messagesDir, "manager.json");
50
+ // Set state
51
+ fs.writeFileSync(statePath, JSON.stringify({ traceId: "T-RISK-999" }));
52
+ // Set active agent executing
53
+ const status = {
54
+ "backend": {
55
+ state: "EXECUTING",
56
+ task: "Refactoring API"
57
+ }
58
+ };
59
+ fs.writeFileSync(statusPath, JSON.stringify(status, null, 2));
60
+ // Simulate a background process that approves the transaction after 1.5 seconds
61
+ setTimeout(() => {
62
+ if (fs.existsSync(managerMsgPath)) {
63
+ const lines = fs.readFileSync(managerMsgPath, "utf8").trim().split("\n");
64
+ const newLines = lines.map(l => {
65
+ const parsed = JSON.parse(l);
66
+ if (parsed.traceId === "T-RISK-999") {
67
+ parsed.status = "APPROVED";
68
+ }
69
+ return JSON.stringify(parsed);
70
+ });
71
+ fs.writeFileSync(managerMsgPath, newLines.join("\n") + "\n");
72
+ }
73
+ }, 1500);
74
+ // Run verifyRiskAndAwaitApproval with high-risk content
75
+ const start = Date.now();
76
+ await verifyRiskAndAwaitApproval(tempDir, "DROP TABLE sensitive_data;", "schema.sql");
77
+ const duration = Date.now() - start;
78
+ expect(duration).toBeGreaterThanOrEqual(1400);
79
+ // Verify status is reverted to EXECUTING
80
+ const updatedStatus = JSON.parse(fs.readFileSync(statusPath, "utf8"));
81
+ expect(updatedStatus.backend.state).toBe("EXECUTING");
82
+ });
83
+ });
84
+ //# sourceMappingURL=compliance-risk.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compliance-risk.test.js","sourceRoot":"","sources":["../../../../../framework-mcp/tests/tools/file_system/compliance-risk.test.ts"],"names":[],"mappings":"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"}