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
@@ -1,450 +0,0 @@
1
- import fs from "fs";
2
- import path from "path";
3
- import { getFrameworkDir, updateDocumentStore, readStatus } from "../utils/memory.js";
4
- import { UI } from "../utils/ui.js";
5
- import { writeTextFile, appendFile } from "../utils/fs.js";
6
- import { z } from "zod";
7
- import { logger } from "../../shared/logger.js";
8
- import { TaskRequestSchema } from "../../contracts/tasks.js";
9
- import { sleep } from "../utils/time.js";
10
-
11
- export const HermesMessageSchema = z.object({
12
- timestamp: z.string(),
13
- from: z.string(),
14
- to: z.string(),
15
- category: z.enum(["ACTION", "DELEGATION", "SUBTASK", "REPLY", "ALERT"]),
16
- content: z.string(), // This is the payload to be validated
17
- traceId: z.string(),
18
- parentId: z.string().optional(),
19
- status: z.enum(["PENDING", "PROCESSED", "WAITING", "APPROVED"]),
20
- priority: z.enum(["HIGH", "NORMAL", "LOW"]).optional(),
21
- action: z.string().optional(),
22
- requiresApproval: z.boolean().optional(),
23
- });
24
-
25
- export type HermesMessage = z.infer<typeof HermesMessageSchema>;
26
-
27
- // Global status cache for in-memory optimization
28
- let agentStatusCache: Record<string, { state: string; task: string; lastUpdated?: string }> = {};
29
- let isLooping = false;
30
-
31
- async function acquireMessageLock(lockPath: string): Promise<boolean> {
32
- let retries = 5;
33
- while (retries > 0) {
34
- try {
35
- if (fs.existsSync(lockPath)) {
36
- try {
37
- const stats = fs.statSync(lockPath);
38
- if (Date.now() - stats.mtimeMs > 10000) {
39
- const tempLockPath = `${lockPath}.${Math.random().toString(36).substring(2)}.old`;
40
- fs.renameSync(lockPath, tempLockPath);
41
- fs.unlinkSync(tempLockPath);
42
- }
43
- } catch {
44
- // ignore
45
- }
46
- }
47
- fs.writeFileSync(lockPath, `Locked by orchestrator at ${new Date().toISOString()}`, { flag: "wx" });
48
- return true;
49
- } catch (err: unknown) {
50
- const error = err as { code?: string };
51
- if (error.code === "EEXIST") {
52
- retries--;
53
- if (retries > 0) {
54
- await sleep(100);
55
- }
56
- } else {
57
- return false;
58
- }
59
- }
60
- }
61
- return false;
62
- }
63
-
64
- function releaseMessageLock(lockPath: string) {
65
- if (fs.existsSync(lockPath)) {
66
- try {
67
- fs.unlinkSync(lockPath);
68
- } catch {
69
- // ignore
70
- }
71
- }
72
- }
73
-
74
- export async function orchestrateCommand(options?: { maxIterations?: number }) {
75
- UI.intent("Hermes Message Broker", "Starting the live agent orchestration loop...");
76
-
77
- const frameworkDir = getFrameworkDir();
78
- const messagesDir = path.join(frameworkDir, "messages");
79
- const maxIterations = options?.maxIterations;
80
- let iterationCount = 0;
81
-
82
- // Reset in-memory cache so each invocation starts fresh (important for test isolation)
83
- agentStatusCache = {};
84
-
85
- // Graceful Shutdown Handling
86
- const shutdown = async () => {
87
- if (!isLooping) return;
88
- isLooping = false;
89
- UI.warning("\nšŸ›‘ Shutdown signal received. Cleaning up Hermes loop...");
90
- // Additional cleanup like releasing global locks could go here
91
- process.exit(0);
92
- };
93
-
94
- process.on("SIGINT", shutdown);
95
- process.on("SIGTERM", shutdown);
96
-
97
- isLooping = true;
98
-
99
- while (isLooping) {
100
- try {
101
- if (Object.keys(agentStatusCache).length === 0) {
102
- const diskStatus = readStatus();
103
- agentStatusCache = diskStatus || {};
104
- }
105
-
106
- // Check for agent timeouts (e.g. 30 minutes in EXECUTING state)
107
- const agentStatuses = readStatus();
108
- let updatedStatus = false;
109
- for (const [agentName, info] of Object.entries(agentStatuses)) {
110
- const { state, lastUpdated, task } = info as { state: string; task: string; lastUpdated?: string };
111
- if (state === "EXECUTING" && lastUpdated) {
112
- const lastUpdatedTime = Date.parse(lastUpdated);
113
- if (!isNaN(lastUpdatedTime) && Date.now() - lastUpdatedTime > 30 * 60 * 1000) {
114
- const displayAgent = agentName.startsWith("@") ? agentName : `@${agentName}`;
115
- UI.error(`āš ļø Agent ${displayAgent} has TIMED OUT (in EXECUTING state for >30m). Triggering Self-Healing...`);
116
-
117
- // SELF-HEALING: Log the failure and reset to READY
118
- agentStatuses[agentName] = {
119
- state: "READY",
120
- task: "Idle (Recovered from Timeout)",
121
- lastUpdated: new Date().toISOString()
122
- };
123
-
124
- UI.success(`āœ… Hermes Self-Healing: ${displayAgent} reset to READY state. Task "${task}" aborted for recovery.`);
125
- updatedStatus = true;
126
- }
127
- }
128
- }
129
- if (updatedStatus) {
130
- updateDocumentStore("status", agentStatuses);
131
- agentStatusCache = { ...agentStatuses }; // Sync cache
132
- }
133
-
134
- if (fs.existsSync(messagesDir)) {
135
- const messageFiles = fs.readdirSync(messagesDir).filter((f) => f.endsWith(".json"));
136
- const pendingMessages: HermesMessage[] = [];
137
- const fileMessagesMap: Record<string, HermesMessage[]> = {};
138
- const acquiredLocks: string[] = [];
139
-
140
- try {
141
- for (const file of messageFiles) {
142
- const agentName = file.replace(".json", "");
143
-
144
- const lockPath = path.join(messagesDir, `${agentName}.lock`);
145
- const locked = await acquireMessageLock(lockPath);
146
- if (!locked) {
147
- // Skip this file in this iteration if we cannot lock it to avoid race conditions
148
- continue;
149
- }
150
- acquiredLocks.push(lockPath);
151
-
152
- const filePath = path.join(messagesDir, file);
153
- try {
154
- const content = fs.readFileSync(filePath, "utf8").trim();
155
- if (!content) continue;
156
- const lines = content.split("\n");
157
- const allMsgs: HermesMessage[] = [];
158
- lines.forEach((line) => {
159
- if (!line.trim()) return;
160
- try {
161
- const parsed = JSON.parse(line);
162
- const msg = HermesMessageSchema.parse(parsed);
163
-
164
- // Contract Validation for structured task messages
165
- // ACTION & DELEGATION must be valid TaskRequest payloads
166
- // SUBTASK must have a parentId and valid task payload
167
- // ALERT must have a content string (free-form, no schema required)
168
- if (msg.category === "ACTION" || msg.category === "DELEGATION") {
169
- try {
170
- const payload = JSON.parse(msg.content);
171
- TaskRequestSchema.parse(payload);
172
- } catch (e) {
173
- UI.error(`Invalid task contract payload in ${msg.category} from @${msg.from}: ${(e as Error).message}`);
174
- return; // Skip invalid message
175
- }
176
- }
177
- if (msg.category === "SUBTASK") {
178
- if (!msg.parentId) {
179
- UI.error(`SUBTASK from @${msg.from} is missing required parentId — skipping.`);
180
- return;
181
- }
182
- try {
183
- const payload = JSON.parse(msg.content);
184
- TaskRequestSchema.parse(payload);
185
- } catch (e) {
186
- UI.error(`Invalid SUBTASK payload from @${msg.from}: ${(e as Error).message}`);
187
- return;
188
- }
189
- }
190
- if (msg.category === "ALERT" && !msg.content.trim()) {
191
- UI.error(`ALERT from @${msg.from} has empty content — skipping.`);
192
- return;
193
- }
194
-
195
- // A message is actionable if it's pending, or if it's been approved.
196
- if (msg.status === "PENDING" || msg.status === "APPROVED") {
197
- pendingMessages.push(msg);
198
- }
199
- allMsgs.push(msg);
200
- } catch (e) {
201
- UI.error(`Skipping invalid Hermes message format: ${(e as Error).message}`);
202
- }
203
- });
204
- fileMessagesMap[file] = allMsgs;
205
- } catch (err) {
206
- UI.error(`Error occurred while reading ${file}.`);
207
- logger.debug(`Failed to read message file ${file}`, err);
208
- }
209
- }
210
-
211
- if (pendingMessages.length > 0) {
212
- // Sort by priority: HIGH -> NORMAL -> LOW
213
- const priorityOrder = { HIGH: 1, NORMAL: 2, LOW: 3 };
214
- pendingMessages.sort((a, b) => {
215
- const pA = priorityOrder[a.priority || "NORMAL"] || 2;
216
- const pB = priorityOrder[b.priority || "NORMAL"] || 2;
217
- if (pA !== pB) return pA - pB;
218
- return Date.parse(a.timestamp) - Date.parse(b.timestamp);
219
- });
220
-
221
- UI.intent("Multi-Agent Orchestration", `${pendingMessages.length} pending tasks and collaboration messages found.`);
222
-
223
- const statusChanges: Record<string, { state: string; task: string }> = {};
224
-
225
- for (const msg of pendingMessages) {
226
- const { from, to, content, traceId, category, status, requiresApproval } = msg;
227
-
228
- // Approval Gate for high-risk actions.
229
- // If it requires approval but isn't approved yet, skip it for now.
230
- if ((category === "ACTION" || category === "ALERT") && requiresApproval && status !== "APPROVED") {
231
- logger.debug(`Action for @${to} (Trace: ${traceId}) is pending manager approval.`);
232
- continue;
233
- }
234
-
235
- // Gate for regular messages.
236
- // If it's a non-approval-required message, it should only be processed when PENDING.
237
- // This prevents re-processing of SUBTASK/REPLY messages that might get set to APPROVED.
238
- if (!(category === "ACTION" || category === "ALERT") && status !== "PENDING") {
239
- continue;
240
- }
241
-
242
-
243
- const isSubtask = category === "SUBTASK" || !!msg.parentId;
244
- const agentLabel = isSubtask ? `${to} (Sub-Agent)` : to;
245
-
246
- UI.agentBox(agentLabel, content, `Trace: ${traceId} | From: ${from} | Category: ${category}`);
247
-
248
- let targetState = "EXECUTING";
249
- if (category === "DELEGATION" || category === "SUBTASK") targetState = "BRIEFED";
250
-
251
- let taskDescription = content;
252
- if (category === "DELEGATION" || category === "ACTION") {
253
- try {
254
- const payload = JSON.parse(content);
255
- taskDescription = payload.task || content;
256
- } catch {
257
- // Ignore
258
- }
259
- }
260
-
261
- statusChanges[to] = { state: targetState, task: taskDescription };
262
-
263
- if (targetState === "BRIEFED") {
264
- UI.success(`${to} informed and took over the task.`);
265
- statusChanges[to] = { state: "EXECUTING", task: taskDescription };
266
- }
267
-
268
- if (isSubtask) {
269
- UI.success(`Sub-task connection established (Parent: ${msg.parentId || "Unknown"}).`);
270
- }
271
-
272
- UI.success(`Collaboration initiated: ${from} -> ${to}`);
273
-
274
- msg.status = "PROCESSED";
275
- }
276
-
277
- applyBatchStatusUpdates(statusChanges);
278
-
279
- const archiveDir = path.join(messagesDir, "archive");
280
-
281
- for (const file of Object.keys(fileMessagesMap)) {
282
- const filePath = path.join(messagesDir, file);
283
- const msgs = fileMessagesMap[file];
284
-
285
- const activeMsgs = msgs.filter(m => m.status !== "PROCESSED");
286
- const processedMsgs = msgs.filter(m => m.status === "PROCESSED");
287
-
288
- try {
289
- if (activeMsgs.length > 0) {
290
- const updatedContent = activeMsgs.map(m => JSON.stringify(m)).join("\n") + "\n";
291
- writeTextFile(filePath, updatedContent);
292
- } else if (fs.existsSync(filePath)) {
293
- writeTextFile(filePath, "");
294
- }
295
-
296
- if (processedMsgs.length > 0) {
297
- if (!fs.existsSync(archiveDir)) {
298
- fs.mkdirSync(archiveDir, { recursive: true });
299
- }
300
- const agentName = file.replace(".json", "");
301
- const archivePath = path.join(archiveDir, `${agentName}_archive.json`);
302
- const archiveContent = processedMsgs.map(m => JSON.stringify(m)).join("\n") + "\n";
303
- appendFile(archivePath, archiveContent);
304
- UI.success(`Archived ${processedMsgs.length} messages for @${agentName}`);
305
- }
306
- } catch (err) {
307
- UI.error(`Error occurred while updating and archiving the message file ${file}.`);
308
- logger.debug(`Failed to update and archive message file ${file}`, err);
309
- }
310
- }
311
- }
312
- } finally {
313
- for (const lockPath of acquiredLocks) {
314
- releaseMessageLock(lockPath);
315
- }
316
- }
317
- }
318
- } catch (globalLoopErr) {
319
- UI.error(`āš ļø Critical error in Hermes orchestration loop: ${(globalLoopErr as Error).message}`);
320
- logger.debug("Hermes global loop failure", globalLoopErr);
321
- }
322
-
323
- iterationCount++;
324
- // If maxIterations is set (e.g. in tests), stop after N iterations without sleeping
325
- if (maxIterations !== undefined && iterationCount >= maxIterations) {
326
- isLooping = false;
327
- break;
328
- }
329
-
330
- // Prevent 100% CPU and provide breathing room for I/O
331
- await sleep(2000);
332
- }
333
- }
334
-
335
- /**
336
- * Standard tool for agents to delegate tasks to other agents.
337
- */
338
- export async function sendMessage(args: {
339
- from: string;
340
- to: string;
341
- category: "ACTION" | "DELEGATION" | "SUBTASK" | "REPLY" | "ALERT";
342
- content: string;
343
- traceId: string;
344
- parentId?: string;
345
- priority?: "HIGH" | "NORMAL" | "LOW";
346
- requiresApproval?: boolean;
347
- }) {
348
- const frameworkDir = getFrameworkDir();
349
- const messagesDir = path.join(frameworkDir, "messages");
350
- const agentName = args.to.replace("@", "");
351
- const messagePath = path.join(messagesDir, `${agentName}.json`);
352
- const lockPath = path.join(messagesDir, `${agentName}.lock`);
353
-
354
- let retries = 20; // Increased retries from 3 to 20
355
- let acquired = false;
356
- while (retries > 0) {
357
- try {
358
- if (fs.existsSync(lockPath)) {
359
- try {
360
- const stats = fs.statSync(lockPath);
361
- // Increased stale lock timeout from 5s to 10s for heavy ops
362
- if (Date.now() - stats.mtimeMs > 10000) {
363
- UI.warning(`ā™»ļø Stale Hermes lock detected for @${agentName}. Clearing lock for @${args.from}.`);
364
- const tempLockPath = `${lockPath}.${Math.random().toString(36).substring(2)}.old`;
365
- fs.renameSync(lockPath, tempLockPath);
366
- fs.unlinkSync(tempLockPath);
367
- }
368
- } catch (err) {
369
- logger.debug(`Failed to unlink stale Hermes lock for ${agentName} concurrently`, err);
370
- }
371
- }
372
- if (!fs.existsSync(messagesDir)) {
373
- fs.mkdirSync(messagesDir, { recursive: true });
374
- }
375
- fs.writeFileSync(lockPath, `Locked by ${args.from} at ${new Date().toISOString()}`, { flag: "wx" });
376
- acquired = true;
377
- break;
378
- } catch (err: unknown) {
379
- const error = err as { code?: string; message?: string };
380
- if (error.code === "EEXIST") {
381
- retries--;
382
- if (retries > 0) {
383
- // Exponential backoff or jitter could be added here,
384
- // but fixed 500ms is usually fine for local file locks.
385
- await new Promise((resolve) => setTimeout(resolve, 500));
386
- }
387
- } else {
388
- UI.error(`Unexpected error occurred while acquiring the lock: ${error.message || String(err)}`);
389
- break;
390
- }
391
- }
392
- }
393
-
394
- if (!acquired) {
395
- UI.error(`Message could not be delivered: Hermes lock is busy. (${args.from} -> ${args.to})`);
396
- return;
397
- }
398
-
399
- try {
400
- const defaultPriority = (args.category === "ALERT" || args.category === "ACTION") ? "HIGH" : "NORMAL";
401
- // Only ALERT requires manager approval by default.
402
- // ACTION messages flow freely unless the caller explicitly sets requiresApproval=true.
403
- // This prevents workflow blockage on normal agent-to-agent task delegation.
404
- const requiresApproval = args.requiresApproval !== undefined
405
- ? args.requiresApproval
406
- : args.category === "ALERT";
407
-
408
- const message: HermesMessage = {
409
- timestamp: new Date().toISOString(),
410
- priority: args.priority || defaultPriority,
411
- ...args,
412
- status: "PENDING",
413
- requiresApproval: requiresApproval,
414
- };
415
-
416
- appendFile(messagePath, JSON.stringify(message) + "\n");
417
-
418
- return message;
419
- } catch (err) {
420
- UI.error(`Message could not be delivered: ${args.from} -> ${args.to}`);
421
- logger.debug(`Hermes sendMessage failed (${args.from} -> ${args.to})`, err);
422
- } finally {
423
- if (acquired && fs.existsSync(lockPath)) {
424
- try {
425
- fs.unlinkSync(lockPath);
426
- } catch {
427
- // Ignore delete errors if concurrently unlinked
428
- }
429
- }
430
- }
431
- }
432
-
433
-
434
- function applyBatchStatusUpdates(changes: Record<string, { state: string; task: string }>) {
435
- let hasChanges = false;
436
- const now = new Date().toISOString();
437
-
438
- for (const [agent, data] of Object.entries(changes)) {
439
- const current = agentStatusCache[agent];
440
- if (!current || current.state !== data.state || current.task !== data.task) {
441
- agentStatusCache[agent] = { ...data, lastUpdated: now };
442
- hasChanges = true;
443
- }
444
- }
445
-
446
- if (hasChanges) {
447
- updateDocumentStore("status", agentStatusCache);
448
- logger.debug("In-memory status cache synced to disk.");
449
- }
450
- }
@@ -1,113 +0,0 @@
1
- import fs from "fs";
2
- import path from "path";
3
- import { generateULID } from "../utils/time.js";
4
- import { UI } from "../utils/ui.js";
5
- import { writeJsonFile } from "../utils/fs.js";
6
-
7
- /**
8
- * Reads ALL markdown files from the docs/ directory and creates
9
- * planning tasks from them. Agents will use this to understand
10
- * project requirements and generate code accordingly.
11
- */
12
- export async function planCommand() {
13
- const projectRoot = process.cwd();
14
- const docsDir = path.join(projectRoot, "docs");
15
-
16
- if (!fs.existsSync(docsDir)) {
17
- UI.error("Docs directory not found at docs/");
18
- console.warn("šŸ’” Create a docs/ folder with your project requirements in .md files.");
19
- return;
20
- }
21
-
22
- const entries = fs.readdirSync(docsDir, { withFileTypes: true });
23
- const mdFiles = entries.filter(e => e.isFile() && e.name.endsWith(".md"));
24
-
25
- if (mdFiles.length === 0) {
26
- UI.warning("No markdown files found in docs/ directory.");
27
- console.warn("šŸ’” Add .md files to docs/ with your project requirements.");
28
- return;
29
- }
30
-
31
- UI.intent("Planning Engine", `Reading ${mdFiles.length} document(s) from docs/...`);
32
-
33
- // Discover available template standards
34
- const templatesDir = path.join(projectRoot, "templates");
35
- const standards: string[] = [];
36
- if (fs.existsSync(templatesDir)) {
37
- const templateFiles = fs.readdirSync(templatesDir);
38
- standards.push(...templateFiles.filter(f => f.endsWith("-standards.md")).map(f => `templates/${f}`));
39
- if (standards.length > 0) {
40
- UI.success(`Found ${standards.length} standard templates available for code generation.`);
41
- }
42
- }
43
-
44
- let totalTasks = 0;
45
-
46
- for (const file of mdFiles) {
47
- const filePath = path.join(docsDir, file.name);
48
- const content = fs.readFileSync(filePath, "utf8");
49
- const lines = content.split("\n");
50
- const traceId = generateULID();
51
-
52
- UI.success(`šŸ“„ docs/${file.name} (${lines.length} lines) → Trace: ${traceId}`);
53
-
54
- console.warn(` Content preview: ${content.substring(0, 200).replace(/\n/g, " ")}...`);
55
-
56
- // Extract headings as task descriptions
57
- const headingRegex = /^#{2,4}\s+(.+)$/gm;
58
- let headingCount = 0;
59
- while (headingRegex.exec(content) !== null) {
60
- headingCount++;
61
- totalTasks++;
62
- }
63
-
64
- // Extract checklist items
65
- const taskRegex = /- \[ \]\s+(.+)/g;
66
- let taskMatch;
67
- let taskCount = 0;
68
- while ((taskMatch = taskRegex.exec(content)) !== null) {
69
- if (taskMatch[1].trim().length >= 3) {
70
- taskCount++;
71
- totalTasks++;
72
- }
73
- }
74
-
75
- console.warn(` šŸ“‹ ${headingCount} sections, ${taskCount} actionable tasks detected`);
76
-
77
- // Store in project memory-compatible format
78
- const memoryDir = path.join(projectRoot, ".atabey", "memory", "tasks");
79
- if (!fs.existsSync(memoryDir)) {
80
- fs.mkdirSync(memoryDir, { recursive: true });
81
- }
82
-
83
- const taskFile = path.join(memoryDir, `${traceId}.json`);
84
- const taskData = {
85
- traceId,
86
- source: `docs/${file.name}`,
87
- description: `Process requirements from docs/${file.name}`,
88
- status: "PENDING",
89
- createdAt: new Date().toISOString(),
90
- standards,
91
- headings: headingCount,
92
- tasks: taskCount,
93
- preview: content.substring(0, 500),
94
- };
95
- writeJsonFile(taskFile, taskData);
96
- }
97
-
98
- // Log available standards
99
- if (standards.length > 0) {
100
- console.warn("");
101
- UI.divider();
102
- console.warn("šŸ“š Available Enterprise Standards:");
103
- standards.forEach(s => console.warn(` - ${s}`));
104
- UI.divider();
105
- }
106
-
107
- UI.success(`\nāœ… Planning complete: ${totalTasks} tasks identified from ${mdFiles.length} document(s).`);
108
- console.warn("\nšŸ“‹ Next steps:");
109
- console.warn(" 1. Run 'atabey status' to see project state");
110
- console.warn(" 2. AI agents (Claude, Gemini, Grok, etc.) will read docs/ and templates/");
111
- console.warn(" 3. Agents generate enterprise-standard code based on requirements");
112
- console.warn(" 4. Use @agent delegation for specific tasks: atabey @backend \"...\"");
113
- }
@@ -1,20 +0,0 @@
1
- import fs from "fs";
2
- import path from "path";
3
- import cp from "child_process";
4
-
5
- const targetDir = process.cwd(); // Assuming targetDir is process.cwd() in the CLI context
6
-
7
- export async function runScriptCommand(script: string, projectPath: string) {
8
- const fullPath = path.join(targetDir, projectPath);
9
- if (!fs.existsSync(fullPath)) {
10
- console.warn(`āŒ Project path not found: ${projectPath}`);
11
- return;
12
- }
13
- console.warn(`šŸš€ Running 'npm run ${script}' in ${projectPath}...`);
14
- try {
15
- cp.spawnSync("npm", ["run", script], { cwd: fullPath, stdio: "inherit", shell: true });
16
- } catch (e: unknown) {
17
- const message = e instanceof Error ? e.message : "Unknown error";
18
- console.warn(`āŒ Failed to run script: ${message}`);
19
- }
20
- }
@@ -1,38 +0,0 @@
1
- import fs from "fs";
2
- import path from "path";
3
-
4
- import { collectFiles } from "../utils/fs.js";
5
-
6
- const targetDir = process.cwd();
7
-
8
- export async function securityAuditCommand(targetPath: string) {
9
- console.warn(`šŸ” Running Advanced Security Audit on: ${targetPath}...`);
10
- const scanRules = [
11
- { pattern: /sql`/, message: "Potential Raw SQL usage detected", severity: "HIGH" },
12
- {
13
- pattern: /(password|secret|api_?key)\s*[:=]\s*['"][^'"]+['"]/i,
14
- message: "Potential hardcoded secret detected",
15
- severity: "CRITICAL",
16
- },
17
- { pattern: /:\s*any(?!\w)/, message: "Usage of 'any' type detected", severity: "MEDIUM" },
18
- { pattern: /\.innerHTML\s*=/, message: "Unsafe innerHTML assignment detected", severity: "MEDIUM" },
19
- ];
20
- const issues: string[] = [];
21
- const files = collectFiles(path.join(targetDir, targetPath), [".ts", ".tsx", ".js", ".jsx"]);
22
- files.forEach((f) => {
23
- const content = fs.readFileSync(f, "utf8");
24
- const lines = content.split("\n");
25
- lines.forEach((line, i) => {
26
- scanRules.forEach((rule) => {
27
- if (rule.pattern.test(line)) {
28
- issues.push(`[${rule.severity}] ${rule.message} in ${path.relative(targetDir, f)}:${i + 1}`);
29
- }
30
- });
31
- });
32
- });
33
- if (issues.length === 0) {
34
- console.warn("āœ… No security issues detected.");
35
- } else {
36
- issues.forEach((issue) => console.warn(`āš ļø ${issue}`));
37
- }
38
- }
@@ -1,44 +0,0 @@
1
- import chalk from "chalk";
2
- import { listTasks, readState, readStatus } from "../utils/memory.js";
3
-
4
- /**
5
- * Print the current framework status.
6
- */
7
- export async function statusCommand() {
8
- const state = readState();
9
- const tasks = listTasks();
10
- const agentStatuses = readStatus();
11
-
12
- if (!state) {
13
- console.error("āŒ Error: Memory state not found. Please run 'init' first.");
14
- return;
15
- }
16
-
17
- console.warn("\nšŸ“Š --- PROJECT STATUS ---");
18
- console.warn(`šŸ”¹ Phase: ${state.phase}`);
19
- console.warn(`šŸ†” Trace ID: ${state.traceId}`);
20
- console.warn(`šŸ¤– Manager: ${state.managerState}`);
21
-
22
- // Read Agent Status from Document Store
23
- console.warn("\nšŸŽ–ļø Atabey Army Status (Agent States):");
24
- for (const [agentName, info] of Object.entries(agentStatuses)) {
25
- const { state, task } = info as { state: string; task: string };
26
- let coloredState = state;
27
- if (state === "READY") coloredState = chalk.green(state);
28
- else if (state === "EXECUTING") coloredState = chalk.yellow(state);
29
- else if (state === "BLOCKED" || state === "TIMEOUT") coloredState = chalk.red(state);
30
- else if (state === "WAITING") coloredState = chalk.cyan(state);
31
-
32
- console.warn(` ${chalk.bold(agentName.padEnd(12))} : [${coloredState}] - ${task}`);
33
- }
34
-
35
- if (tasks.length > 0) {
36
- console.warn("\nšŸ“‹ Active Tasks:");
37
- tasks.forEach((t: { priority: string; status: string; description: string; agent: string }) => {
38
- console.warn(` - [${t.priority}] ${t.status}: ${t.description} (@${t.agent})`);
39
- });
40
- }
41
-
42
- console.warn("\n-----------------------\n");
43
- }
44
-