agent-enderun 1.0.7 → 1.0.9

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 (312) hide show
  1. package/.enderun/ARCHITECTURE.md +1 -0
  2. package/.enderun/BRAIN_DASHBOARD.md +1 -1
  3. package/.enderun/ENDERUN.md +2 -2
  4. package/.enderun/SECURITY.md +1 -0
  5. package/.enderun/STATUS.md +5 -6
  6. package/.enderun/agents/agent_army_schema.json +71 -77
  7. package/.enderun/agents/analyst.json +32 -0
  8. package/.enderun/agents/backend.json +32 -0
  9. package/.enderun/agents/database.json +32 -0
  10. package/.enderun/agents/devops.json +32 -0
  11. package/.enderun/agents/explorer.json +32 -0
  12. package/.enderun/agents/frontend.json +32 -0
  13. package/.enderun/agents/git.json +32 -0
  14. package/.enderun/agents/manager.json +32 -0
  15. package/.enderun/agents/mobile.json +32 -0
  16. package/.enderun/agents/native.json +32 -0
  17. package/.enderun/agents/quality.json +32 -0
  18. package/.enderun/agents/schema/agent-lifecycle-schema.json +35 -80
  19. package/.enderun/agents/security.json +32 -0
  20. package/.enderun/cli-commands.json +7 -5
  21. package/.enderun/config.json +1 -1
  22. package/.enderun/knowledge/ARCHITECTURE.md +1 -0
  23. package/.enderun/knowledge/SECURITY.md +1 -0
  24. package/.enderun/knowledge/SHIM_TEMPLATE.md +12 -1
  25. package/.enderun/knowledge/evaluation_engine.md +11 -0
  26. package/.enderun/knowledge/legacy_onboarding.md +11 -0
  27. package/.enderun/knowledge/project_scaffold_guidelines.md +11 -0
  28. package/.enderun/knowledge/reference_application_guidelines.md +11 -0
  29. package/.enderun/logs/manager.json +52 -23
  30. package/.enderun/memory/PROJECT_MEMORY.md +14 -12
  31. package/.enderun/observability/README.md +19 -0
  32. package/README.md +38 -101
  33. package/agent.md +1 -1
  34. package/bin/hermes-sandbox.js +9 -0
  35. package/bin/init-check.js +9 -0
  36. package/bin/validate-agent-army.js +34 -92
  37. package/dist/apps/backend/src/types/index.d.ts +9 -0
  38. package/dist/apps/backend/src/types/index.js +5 -0
  39. package/dist/apps/backend/src/types/index.js.map +1 -0
  40. package/dist/apps/web/src/main.d.ts +1 -0
  41. package/dist/apps/web/src/main.js +9 -0
  42. package/dist/apps/web/src/main.js.map +1 -0
  43. package/dist/apps/web/vite.config.d.ts +2 -0
  44. package/dist/apps/web/vite.config.js +6 -0
  45. package/dist/apps/web/vite.config.js.map +1 -0
  46. package/dist/framework-mcp/src/index.d.ts +1 -0
  47. package/dist/framework-mcp/src/index.js +71 -0
  48. package/dist/framework-mcp/src/index.js.map +1 -0
  49. package/dist/framework-mcp/src/tools/definitions.d.ts +2 -0
  50. package/dist/framework-mcp/src/tools/definitions.js +111 -0
  51. package/dist/framework-mcp/src/tools/definitions.js.map +1 -0
  52. package/dist/framework-mcp/src/tools/file_system/patch_file.d.ts +2 -0
  53. package/dist/framework-mcp/src/tools/file_system/patch_file.js +19 -0
  54. package/dist/framework-mcp/src/tools/file_system/patch_file.js.map +1 -0
  55. package/dist/framework-mcp/src/tools/file_system/read_file.d.ts +2 -0
  56. package/dist/framework-mcp/src/tools/file_system/read_file.js +8 -0
  57. package/dist/framework-mcp/src/tools/file_system/read_file.js.map +1 -0
  58. package/dist/framework-mcp/src/tools/file_system/replace_text.d.ts +2 -0
  59. package/dist/framework-mcp/src/tools/file_system/replace_text.js +32 -0
  60. package/dist/framework-mcp/src/tools/file_system/replace_text.js.map +1 -0
  61. package/dist/framework-mcp/src/tools/file_system/write_file.d.ts +2 -0
  62. package/dist/framework-mcp/src/tools/file_system/write_file.js +10 -0
  63. package/dist/framework-mcp/src/tools/file_system/write_file.js.map +1 -0
  64. package/dist/framework-mcp/src/tools/framework/get_status.d.ts +2 -0
  65. package/dist/framework-mcp/src/tools/framework/get_status.js +6 -0
  66. package/dist/framework-mcp/src/tools/framework/get_status.js.map +1 -0
  67. package/dist/framework-mcp/src/tools/framework/orchestrate.d.ts +2 -0
  68. package/dist/framework-mcp/src/tools/framework/orchestrate.js +6 -0
  69. package/dist/framework-mcp/src/tools/framework/orchestrate.js.map +1 -0
  70. package/dist/framework-mcp/src/tools/framework/update_contract_hash.d.ts +2 -0
  71. package/dist/framework-mcp/src/tools/framework/update_contract_hash.js +6 -0
  72. package/dist/framework-mcp/src/tools/framework/update_contract_hash.js.map +1 -0
  73. package/dist/framework-mcp/src/tools/framework/update_memory.d.ts +2 -0
  74. package/dist/framework-mcp/src/tools/framework/update_memory.js +9 -0
  75. package/dist/framework-mcp/src/tools/framework/update_memory.js.map +1 -0
  76. package/dist/framework-mcp/src/tools/index.d.ts +5 -0
  77. package/dist/framework-mcp/src/tools/index.js +26 -0
  78. package/dist/framework-mcp/src/tools/index.js.map +1 -0
  79. package/dist/framework-mcp/src/tools/messaging/log_action.d.ts +2 -0
  80. package/dist/framework-mcp/src/tools/messaging/log_action.js +23 -0
  81. package/dist/framework-mcp/src/tools/messaging/log_action.js.map +1 -0
  82. package/dist/framework-mcp/src/tools/messaging/send_message.d.ts +2 -0
  83. package/dist/framework-mcp/src/tools/messaging/send_message.js +24 -0
  84. package/dist/framework-mcp/src/tools/messaging/send_message.js.map +1 -0
  85. package/dist/framework-mcp/src/tools/types.d.ts +47 -0
  86. package/dist/framework-mcp/src/tools/types.js +2 -0
  87. package/dist/framework-mcp/src/tools/types.js.map +1 -0
  88. package/dist/framework-mcp/src/utils/cli.d.ts +5 -0
  89. package/dist/framework-mcp/src/utils/cli.js +21 -0
  90. package/dist/framework-mcp/src/utils/cli.js.map +1 -0
  91. package/dist/framework-mcp/src/utils/security.d.ts +12 -0
  92. package/dist/framework-mcp/src/utils/security.js +54 -0
  93. package/dist/framework-mcp/src/utils/security.js.map +1 -0
  94. package/dist/src/cli/adapters.d.ts +32 -0
  95. package/dist/src/cli/adapters.js +264 -0
  96. package/dist/src/cli/adapters.js.map +1 -0
  97. package/dist/src/cli/commands/app.d.ts +4 -0
  98. package/dist/src/cli/commands/app.js +32 -0
  99. package/dist/src/cli/commands/app.js.map +1 -0
  100. package/dist/src/cli/commands/check.d.ts +6 -0
  101. package/dist/src/cli/commands/check.js +110 -0
  102. package/dist/src/cli/commands/check.js.map +1 -0
  103. package/dist/src/cli/commands/compliance.d.ts +1 -0
  104. package/dist/src/cli/commands/compliance.js +51 -0
  105. package/dist/src/cli/commands/compliance.js.map +1 -0
  106. package/dist/src/cli/commands/contract.d.ts +8 -0
  107. package/dist/src/cli/commands/contract.js +73 -0
  108. package/dist/src/cli/commands/contract.js.map +1 -0
  109. package/dist/src/cli/commands/explorer.d.ts +2 -0
  110. package/dist/src/cli/commands/explorer.js +43 -0
  111. package/dist/src/cli/commands/explorer.js.map +1 -0
  112. package/dist/src/cli/commands/git.d.ts +2 -0
  113. package/dist/src/cli/commands/git.js +41 -0
  114. package/dist/src/cli/commands/git.js.map +1 -0
  115. package/dist/src/cli/commands/init.d.ts +1 -0
  116. package/dist/src/cli/commands/init.js +338 -0
  117. package/dist/src/cli/commands/init.js.map +1 -0
  118. package/dist/src/cli/commands/knowledge.d.ts +2 -0
  119. package/dist/src/cli/commands/knowledge.js +43 -0
  120. package/dist/src/cli/commands/knowledge.js.map +1 -0
  121. package/dist/src/cli/commands/lint.d.ts +4 -0
  122. package/dist/src/cli/commands/lint.js +24 -0
  123. package/dist/src/cli/commands/lint.js.map +1 -0
  124. package/dist/src/cli/commands/log.d.ts +9 -0
  125. package/dist/src/cli/commands/log.js +33 -0
  126. package/dist/src/cli/commands/log.js.map +1 -0
  127. package/dist/src/cli/commands/memory.d.ts +1 -0
  128. package/dist/src/cli/commands/memory.js +72 -0
  129. package/dist/src/cli/commands/memory.js.map +1 -0
  130. package/dist/src/cli/commands/orchestrate.d.ts +1 -0
  131. package/dist/src/cli/commands/orchestrate.js +111 -0
  132. package/dist/src/cli/commands/orchestrate.js.map +1 -0
  133. package/dist/src/cli/commands/script.d.ts +1 -0
  134. package/dist/src/cli/commands/script.js +20 -0
  135. package/dist/src/cli/commands/script.js.map +1 -0
  136. package/dist/src/cli/commands/security.d.ts +1 -0
  137. package/dist/src/cli/commands/security.js +37 -0
  138. package/dist/src/cli/commands/security.js.map +1 -0
  139. package/dist/src/cli/commands/status.d.ts +4 -0
  140. package/dist/src/cli/commands/status.js +56 -0
  141. package/dist/src/cli/commands/status.js.map +1 -0
  142. package/dist/src/cli/commands/trace.d.ts +4 -0
  143. package/dist/src/cli/commands/trace.js +42 -0
  144. package/dist/src/cli/commands/trace.js.map +1 -0
  145. package/dist/src/cli/index.d.ts +2 -0
  146. package/dist/src/cli/index.js +117 -0
  147. package/dist/src/cli/index.js.map +1 -0
  148. package/dist/src/cli/utils/app.d.ts +33 -0
  149. package/dist/src/cli/utils/app.js +710 -0
  150. package/dist/src/cli/utils/app.js.map +1 -0
  151. package/dist/src/cli/utils/claude.d.ts +8 -0
  152. package/dist/src/cli/utils/claude.js +56 -0
  153. package/dist/src/cli/utils/claude.js.map +1 -0
  154. package/dist/src/cli/utils/fs.d.ts +11 -0
  155. package/dist/src/cli/utils/fs.js +144 -0
  156. package/dist/src/cli/utils/fs.js.map +1 -0
  157. package/dist/src/cli/utils/memory.d.ts +14 -0
  158. package/dist/src/cli/utils/memory.js +173 -0
  159. package/dist/src/cli/utils/memory.js.map +1 -0
  160. package/dist/src/cli/utils/pkg.d.ts +24 -0
  161. package/dist/src/cli/utils/pkg.js +254 -0
  162. package/dist/src/cli/utils/pkg.js.map +1 -0
  163. package/dist/src/cli/utils/string.d.ts +6 -0
  164. package/dist/src/cli/utils/string.js +44 -0
  165. package/dist/src/cli/utils/string.js.map +1 -0
  166. package/dist/src/cli/utils/time.d.ts +2 -0
  167. package/dist/src/cli/utils/time.js +28 -0
  168. package/dist/src/cli/utils/time.js.map +1 -0
  169. package/dist/tests/adapter.test.d.ts +1 -0
  170. package/dist/tests/adapter.test.js +80 -0
  171. package/dist/tests/adapter.test.js.map +1 -0
  172. package/dist/tests/framework-init-test/framework-mcp/src/index.d.ts +1 -0
  173. package/dist/tests/framework-init-test/framework-mcp/src/index.js +71 -0
  174. package/dist/tests/framework-init-test/framework-mcp/src/index.js.map +1 -0
  175. package/dist/tests/framework-init-test/framework-mcp/src/tools/definitions.d.ts +2 -0
  176. package/dist/tests/framework-init-test/framework-mcp/src/tools/definitions.js +111 -0
  177. package/dist/tests/framework-init-test/framework-mcp/src/tools/definitions.js.map +1 -0
  178. package/dist/tests/framework-init-test/framework-mcp/src/tools/file_system/patch_file.d.ts +2 -0
  179. package/dist/tests/framework-init-test/framework-mcp/src/tools/file_system/patch_file.js +19 -0
  180. package/dist/tests/framework-init-test/framework-mcp/src/tools/file_system/patch_file.js.map +1 -0
  181. package/dist/tests/framework-init-test/framework-mcp/src/tools/file_system/read_file.d.ts +2 -0
  182. package/dist/tests/framework-init-test/framework-mcp/src/tools/file_system/read_file.js +8 -0
  183. package/dist/tests/framework-init-test/framework-mcp/src/tools/file_system/read_file.js.map +1 -0
  184. package/dist/tests/framework-init-test/framework-mcp/src/tools/file_system/replace_text.d.ts +2 -0
  185. package/dist/tests/framework-init-test/framework-mcp/src/tools/file_system/replace_text.js +32 -0
  186. package/dist/tests/framework-init-test/framework-mcp/src/tools/file_system/replace_text.js.map +1 -0
  187. package/dist/tests/framework-init-test/framework-mcp/src/tools/file_system/write_file.d.ts +2 -0
  188. package/dist/tests/framework-init-test/framework-mcp/src/tools/file_system/write_file.js +10 -0
  189. package/dist/tests/framework-init-test/framework-mcp/src/tools/file_system/write_file.js.map +1 -0
  190. package/dist/tests/framework-init-test/framework-mcp/src/tools/framework/get_status.d.ts +2 -0
  191. package/dist/tests/framework-init-test/framework-mcp/src/tools/framework/get_status.js +6 -0
  192. package/dist/tests/framework-init-test/framework-mcp/src/tools/framework/get_status.js.map +1 -0
  193. package/dist/tests/framework-init-test/framework-mcp/src/tools/framework/orchestrate.d.ts +2 -0
  194. package/dist/tests/framework-init-test/framework-mcp/src/tools/framework/orchestrate.js +6 -0
  195. package/dist/tests/framework-init-test/framework-mcp/src/tools/framework/orchestrate.js.map +1 -0
  196. package/dist/tests/framework-init-test/framework-mcp/src/tools/framework/update_contract_hash.d.ts +2 -0
  197. package/dist/tests/framework-init-test/framework-mcp/src/tools/framework/update_contract_hash.js +6 -0
  198. package/dist/tests/framework-init-test/framework-mcp/src/tools/framework/update_contract_hash.js.map +1 -0
  199. package/dist/tests/framework-init-test/framework-mcp/src/tools/framework/update_memory.d.ts +2 -0
  200. package/dist/tests/framework-init-test/framework-mcp/src/tools/framework/update_memory.js +9 -0
  201. package/dist/tests/framework-init-test/framework-mcp/src/tools/framework/update_memory.js.map +1 -0
  202. package/dist/tests/framework-init-test/framework-mcp/src/tools/index.d.ts +5 -0
  203. package/dist/tests/framework-init-test/framework-mcp/src/tools/index.js +26 -0
  204. package/dist/tests/framework-init-test/framework-mcp/src/tools/index.js.map +1 -0
  205. package/dist/tests/framework-init-test/framework-mcp/src/tools/messaging/log_action.d.ts +2 -0
  206. package/dist/tests/framework-init-test/framework-mcp/src/tools/messaging/log_action.js +23 -0
  207. package/dist/tests/framework-init-test/framework-mcp/src/tools/messaging/log_action.js.map +1 -0
  208. package/dist/tests/framework-init-test/framework-mcp/src/tools/messaging/send_message.d.ts +2 -0
  209. package/dist/tests/framework-init-test/framework-mcp/src/tools/messaging/send_message.js +24 -0
  210. package/dist/tests/framework-init-test/framework-mcp/src/tools/messaging/send_message.js.map +1 -0
  211. package/dist/tests/framework-init-test/framework-mcp/src/tools/types.d.ts +47 -0
  212. package/dist/tests/framework-init-test/framework-mcp/src/tools/types.js +2 -0
  213. package/dist/tests/framework-init-test/framework-mcp/src/tools/types.js.map +1 -0
  214. package/dist/tests/framework-init-test/framework-mcp/src/utils/cli.d.ts +5 -0
  215. package/dist/tests/framework-init-test/framework-mcp/src/utils/cli.js +21 -0
  216. package/dist/tests/framework-init-test/framework-mcp/src/utils/cli.js.map +1 -0
  217. package/dist/tests/framework-init-test/framework-mcp/src/utils/security.d.ts +12 -0
  218. package/dist/tests/framework-init-test/framework-mcp/src/utils/security.js +54 -0
  219. package/dist/tests/framework-init-test/framework-mcp/src/utils/security.js.map +1 -0
  220. package/dist/tests/framework-init-test/framework-mcp/tests/tools/file_system/replace_text.test.d.ts +1 -0
  221. package/dist/tests/framework-init-test/framework-mcp/tests/tools/file_system/replace_text.test.js +69 -0
  222. package/dist/tests/framework-init-test/framework-mcp/tests/tools/file_system/replace_text.test.js.map +1 -0
  223. package/dist/tests/framework-init-test/panda.config.d.ts +4 -0
  224. package/dist/tests/framework-init-test/panda.config.js +95 -0
  225. package/dist/tests/framework-init-test/panda.config.js.map +1 -0
  226. package/dist/tests/framework-init-test/vitest.config.d.ts +2 -0
  227. package/dist/tests/framework-init-test/vitest.config.js +19 -0
  228. package/dist/tests/framework-init-test/vitest.config.js.map +1 -0
  229. package/dist/tests/gemini.test.d.ts +1 -0
  230. package/dist/tests/gemini.test.js +38 -0
  231. package/dist/tests/gemini.test.js.map +1 -0
  232. package/dist/tests/initial.test.d.ts +1 -0
  233. package/dist/tests/initial.test.js +7 -0
  234. package/dist/tests/initial.test.js.map +1 -0
  235. package/dist/vitest.config.d.ts +2 -0
  236. package/dist/vitest.config.js +19 -0
  237. package/dist/vitest.config.js.map +1 -0
  238. package/docs/getting-started.md +4 -4
  239. package/eslint.config.js +1 -1
  240. package/framework-mcp/dist/index.js +2 -2
  241. package/framework-mcp/dist/src/index.js +70 -0
  242. package/framework-mcp/dist/src/tools/definitions.js +110 -0
  243. package/framework-mcp/dist/src/tools/file_system/patch_file.js +18 -0
  244. package/framework-mcp/dist/src/tools/file_system/read_file.js +7 -0
  245. package/framework-mcp/dist/src/tools/file_system/replace_text.js +31 -0
  246. package/framework-mcp/dist/src/tools/file_system/write_file.js +9 -0
  247. package/framework-mcp/dist/src/tools/framework/get_status.js +5 -0
  248. package/framework-mcp/dist/src/tools/framework/orchestrate.js +5 -0
  249. package/framework-mcp/dist/src/tools/framework/update_contract_hash.js +5 -0
  250. package/framework-mcp/dist/src/tools/framework/update_memory.js +8 -0
  251. package/framework-mcp/dist/src/tools/index.js +25 -0
  252. package/framework-mcp/dist/src/tools/messaging/log_action.js +22 -0
  253. package/framework-mcp/dist/src/tools/messaging/send_message.js +23 -0
  254. package/framework-mcp/dist/src/tools/types.js +1 -0
  255. package/framework-mcp/dist/src/utils/cli.js +20 -0
  256. package/framework-mcp/dist/src/utils/security.js +53 -0
  257. package/framework-mcp/dist/tests/tools/file_system/replace_text.test.js +68 -0
  258. package/framework-mcp/dist/tools/definitions.js +1 -0
  259. package/framework-mcp/dist/tools/file_system/replace_text.js +18 -1
  260. package/framework-mcp/dist/tools/framework/get_status.js +2 -2
  261. package/framework-mcp/dist/tools/framework/orchestrate.js +2 -2
  262. package/framework-mcp/dist/tools/framework/update_contract_hash.js +2 -2
  263. package/framework-mcp/dist/tools/framework/update_memory.js +1 -1
  264. package/framework-mcp/dist/tools/messaging/send_message.js +4 -2
  265. package/framework-mcp/dist/utils/cli.js +2 -2
  266. package/framework-mcp/dist/utils/security.js +23 -5
  267. package/framework-mcp/package.json +3 -3
  268. package/framework-mcp/src/index.ts +2 -2
  269. package/framework-mcp/src/tools/definitions.ts +1 -0
  270. package/framework-mcp/src/tools/file_system/replace_text.ts +21 -1
  271. package/framework-mcp/src/tools/framework/get_status.ts +3 -3
  272. package/framework-mcp/src/tools/framework/orchestrate.ts +3 -3
  273. package/framework-mcp/src/tools/framework/update_contract_hash.ts +3 -3
  274. package/framework-mcp/src/tools/framework/update_memory.ts +1 -1
  275. package/framework-mcp/src/tools/messaging/send_message.ts +5 -2
  276. package/framework-mcp/src/tools/types.ts +3 -0
  277. package/framework-mcp/src/utils/cli.ts +2 -2
  278. package/framework-mcp/src/utils/security.ts +23 -5
  279. package/framework-mcp/tests/tools/file_system/replace_text.test.js +68 -0
  280. package/framework-mcp/tests/tools/file_system/replace_text.test.ts +77 -0
  281. package/framework-mcp/tsconfig.json +1 -2
  282. package/mcp.json +4 -4
  283. package/package.json +4 -3
  284. package/src/cli/adapters.ts +16 -9
  285. package/src/cli/commands/check.ts +8 -5
  286. package/src/cli/commands/contract.ts +2 -2
  287. package/src/cli/commands/init.ts +213 -433
  288. package/src/cli/commands/memory.ts +5 -0
  289. package/src/cli/index.ts +12 -9
  290. package/src/cli/utils/app.ts +19 -16
  291. package/src/cli/utils/claude.ts +2 -1
  292. package/src/cli/utils/fs.ts +2 -1
  293. package/src/cli/utils/memory.ts +2 -2
  294. package/src/cli/utils/pkg.ts +72 -5
  295. package/.enderun/agents/analyst.md +0 -32
  296. package/.enderun/agents/backend.md +0 -49
  297. package/.enderun/agents/database.md +0 -41
  298. package/.enderun/agents/devops.md +0 -41
  299. package/.enderun/agents/explorer.md +0 -40
  300. package/.enderun/agents/frontend.md +0 -48
  301. package/.enderun/agents/git.md +0 -41
  302. package/.enderun/agents/manager.md +0 -43
  303. package/.enderun/agents/mobile.md +0 -42
  304. package/.enderun/agents/native.md +0 -41
  305. package/.enderun/agents/quality.md +0 -40
  306. package/.enderun/agents/security.md +0 -32
  307. package/docs/api-referans.md +0 -1137
  308. package/docs/is_akislari.md +0 -902
  309. package/docs/mimari.md +0 -926
  310. package/docs/moduller.md +0 -294
  311. package/docs/proje.md +0 -521
  312. package/docs/yap/304/261.md +0 -2150
@@ -0,0 +1,111 @@
1
+ export const TOOLS = [
2
+ {
3
+ name: "read_file",
4
+ description: "Read the content of a file within the project.",
5
+ inputSchema: {
6
+ type: "object",
7
+ properties: {
8
+ path: { type: "string", description: "Path to the file relative to project root" },
9
+ },
10
+ required: ["path"],
11
+ },
12
+ },
13
+ {
14
+ name: "write_file",
15
+ description: "Write content to a file. Creates directories if missing.",
16
+ inputSchema: {
17
+ type: "object",
18
+ properties: {
19
+ path: { type: "string", description: "Path to the file relative to project root" },
20
+ content: { type: "string", description: "Complete content of the file" },
21
+ },
22
+ required: ["path", "content"],
23
+ },
24
+ },
25
+ {
26
+ name: "replace_text",
27
+ description: "Surgically replace a string in a file with another string.",
28
+ inputSchema: {
29
+ type: "object",
30
+ properties: {
31
+ path: { type: "string", description: "Path to the file" },
32
+ oldText: { type: "string", description: "The exact text to find" },
33
+ newText: { type: "string", description: "The text to replace it with" },
34
+ },
35
+ required: ["path", "oldText", "newText"],
36
+ },
37
+ },
38
+ {
39
+ name: "patch_file",
40
+ description: "Safely update a file by replacing a specific line range with new content.",
41
+ inputSchema: {
42
+ type: "object",
43
+ properties: {
44
+ path: { type: "string", description: "Path to the file" },
45
+ startLine: { type: "number", description: "Starting line number (1-indexed)" },
46
+ endLine: { type: "number", description: "Ending line number (inclusive)" },
47
+ newContent: { type: "string", description: "The new lines to insert" },
48
+ },
49
+ required: ["path", "startLine", "endLine", "newContent"],
50
+ },
51
+ },
52
+ {
53
+ name: "get_framework_status",
54
+ description: "Get the current project phase, active traces, and agent states.",
55
+ inputSchema: { type: "object", properties: {} },
56
+ },
57
+ {
58
+ name: "update_project_memory",
59
+ description: "Update a specific section in PROJECT_MEMORY.md.",
60
+ inputSchema: {
61
+ type: "object",
62
+ properties: {
63
+ section: { type: "string", description: "Section name (e.g., HISTORY, ACTIVE TASKS)" },
64
+ content: { type: "string", description: "Markdown content to append or set" },
65
+ },
66
+ required: ["section", "content"],
67
+ },
68
+ },
69
+ {
70
+ name: "orchestrate_loop",
71
+ description: "Process the pending Hermes messages and trigger dynamic state transitions.",
72
+ inputSchema: { type: "object", properties: {} },
73
+ },
74
+ {
75
+ name: "send_agent_message",
76
+ description: "Send a Hermes protocol message to another agent.",
77
+ inputSchema: {
78
+ type: "object",
79
+ properties: {
80
+ from: { type: "string", description: "Sender agent (e.g., @manager, @backend). Defaults to @mcp if omitted." },
81
+ to: { type: "string", description: "Target agent (e.g., @backend, @qa)" },
82
+ category: { type: "string", enum: ["ACTION", "DELEGATION", "INFO", "ALERT"] },
83
+ content: { type: "string", description: "Message content" },
84
+ traceId: { type: "string", description: "Active Trace ID" },
85
+ },
86
+ required: ["to", "category", "content", "traceId"],
87
+ },
88
+ },
89
+ {
90
+ name: "log_agent_action",
91
+ description: "Log an agent action to the framework logs.",
92
+ inputSchema: {
93
+ type: "object",
94
+ properties: {
95
+ agent: { type: "string", description: "The agent name (e.g., @manager, @backend)" },
96
+ action: { type: "string", description: "Action type or name" },
97
+ traceId: { type: "string", description: "The active Trace ID" },
98
+ status: { type: "string", enum: ["SUCCESS", "FAILURE"], description: "The status of the action" },
99
+ summary: { type: "string", description: "Brief description of the action taken" },
100
+ findings: { type: "string", description: "Optional comma-separated findings or details" }
101
+ },
102
+ required: ["agent", "action", "traceId", "status", "summary"]
103
+ }
104
+ },
105
+ {
106
+ name: "update_contract_hash",
107
+ description: "Re-generate and synchronize the backend contract SHA-256 hash.",
108
+ inputSchema: { type: "object", properties: {} }
109
+ }
110
+ ];
111
+ //# sourceMappingURL=definitions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"definitions.js","sourceRoot":"","sources":["../../../../framework-mcp/src/tools/definitions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import { ToolArgs, ToolResult } from "../types.js";
2
+ export declare function handlePatchFile(projectRoot: string, args: ToolArgs): ToolResult;
@@ -0,0 +1,19 @@
1
+ import fs from "fs";
2
+ import { safePath } from "../../utils/security.js";
3
+ export function handlePatchFile(projectRoot, args) {
4
+ const filePath = safePath(projectRoot, args.path);
5
+ const lines = fs.readFileSync(filePath, "utf8").split("\n");
6
+ const start = args.startLine - 1;
7
+ const end = args.endLine;
8
+ const newContent = args.newContent.split("\n");
9
+ if (start < 0 || start > lines.length) {
10
+ throw new Error(`Invalid start line: ${start + 1}. File has ${lines.length} lines.`);
11
+ }
12
+ if (end < start + 1 || end > lines.length) {
13
+ throw new Error(`Invalid end line: ${end}. Must be between ${start + 1} and ${lines.length}.`);
14
+ }
15
+ lines.splice(start, end - start, ...newContent);
16
+ fs.writeFileSync(filePath, lines.join("\n"));
17
+ return { content: [{ type: "text", text: `✅ File patched successfully: ${args.path}` }] };
18
+ }
19
+ //# sourceMappingURL=patch_file.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"patch_file.js","sourceRoot":"","sources":["../../../../../framework-mcp/src/tools/file_system/patch_file.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAGnD,MAAM,UAAU,eAAe,CAAC,WAAmB,EAAE,IAAc;IAC/D,MAAM,QAAQ,GAAG,QAAQ,CAAC,WAAW,EAAE,IAAI,CAAC,IAAc,CAAC,CAAC;IAC5D,MAAM,KAAK,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC5D,MAAM,KAAK,GAAI,IAAI,CAAC,SAAoB,GAAG,CAAC,CAAC;IAC7C,MAAM,GAAG,GAAG,IAAI,CAAC,OAAiB,CAAC;IACnC,MAAM,UAAU,GAAI,IAAI,CAAC,UAAqB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAE3D,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;QACpC,MAAM,IAAI,KAAK,CAAC,uBAAuB,KAAK,GAAG,CAAC,cAAc,KAAK,CAAC,MAAM,SAAS,CAAC,CAAC;IACzF,CAAC;IACD,IAAI,GAAG,GAAG,KAAK,GAAG,CAAC,IAAI,GAAG,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;QACxC,MAAM,IAAI,KAAK,CAAC,qBAAqB,GAAG,qBAAqB,KAAK,GAAG,CAAC,QAAQ,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;IACnG,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,GAAG,KAAK,EAAE,GAAG,UAAU,CAAC,CAAC;IAChD,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAC7C,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,gCAAgC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC;AAC9F,CAAC"}
@@ -0,0 +1,2 @@
1
+ import { ToolArgs, ToolResult } from "../types.js";
2
+ export declare function handleReadFile(projectRoot: string, args: ToolArgs): ToolResult;
@@ -0,0 +1,8 @@
1
+ import fs from "fs";
2
+ import { safePath } from "../../utils/security.js";
3
+ export function handleReadFile(projectRoot, args) {
4
+ const filePath = safePath(projectRoot, args.path);
5
+ const content = fs.readFileSync(filePath, "utf8");
6
+ return { content: [{ type: "text", text: content }] };
7
+ }
8
+ //# sourceMappingURL=read_file.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"read_file.js","sourceRoot":"","sources":["../../../../../framework-mcp/src/tools/file_system/read_file.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAGnD,MAAM,UAAU,cAAc,CAAC,WAAmB,EAAE,IAAc;IAC9D,MAAM,QAAQ,GAAG,QAAQ,CAAC,WAAW,EAAE,IAAI,CAAC,IAAc,CAAC,CAAC;IAC5D,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAClD,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;AAC1D,CAAC"}
@@ -0,0 +1,2 @@
1
+ import { ToolArgs, ToolResult } from "../types.js";
2
+ export declare function handleReplaceText(projectRoot: string, args: ToolArgs): ToolResult;
@@ -0,0 +1,32 @@
1
+ import fs from "fs";
2
+ import { safePath } from "../../utils/security.js";
3
+ export function handleReplaceText(projectRoot, args) {
4
+ const filePath = safePath(projectRoot, args.path);
5
+ let content = fs.readFileSync(filePath, "utf8");
6
+ const oldText = args.oldText;
7
+ const newText = args.newText;
8
+ const allowMultiple = args.allowMultiple || false; // Default to false
9
+ if (!content.includes(oldText)) {
10
+ throw new Error(`Text not found in file: ${oldText.slice(0, 100)}...`);
11
+ }
12
+ // Surgical precision guard: reject ambiguous replacements unless allowMultiple is true.
13
+ if (!allowMultiple) {
14
+ const firstIndex = content.indexOf(oldText);
15
+ const lastIndex = content.lastIndexOf(oldText);
16
+ if (firstIndex !== lastIndex) {
17
+ const count = (content.match(new RegExp(oldText.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"), "g")) || []).length;
18
+ throw new Error(`Ambiguous replacement: "${oldText.slice(0, 80)}..." found ${count} times in ${args.path}. ` +
19
+ "Provide a longer, unique context string or set 'allow_multiple' to true.");
20
+ }
21
+ }
22
+ // Perform replacement(s)
23
+ if (allowMultiple) {
24
+ content = content.replace(new RegExp(oldText.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"), "g"), newText);
25
+ }
26
+ else {
27
+ content = content.replace(oldText, newText);
28
+ }
29
+ fs.writeFileSync(filePath, content);
30
+ return { content: [{ type: "text", text: `✅ Surgical edit successful in ${args.path}` }] };
31
+ }
32
+ //# sourceMappingURL=replace_text.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"replace_text.js","sourceRoot":"","sources":["../../../../../framework-mcp/src/tools/file_system/replace_text.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAGnD,MAAM,UAAU,iBAAiB,CAAC,WAAmB,EAAE,IAAc;IACjE,MAAM,QAAQ,GAAG,QAAQ,CAAC,WAAW,EAAE,IAAI,CAAC,IAAc,CAAC,CAAC;IAC5D,IAAI,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAChD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAiB,CAAC;IACvC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAiB,CAAC;IACvC,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,IAAI,KAAK,CAAC,CAAC,mBAAmB;IAEtE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CAAC,2BAA2B,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;IAC3E,CAAC;IAED,wFAAwF;IACxF,IAAI,CAAC,aAAa,EAAE,CAAC;QACjB,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC5C,MAAM,SAAS,GAAG,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAC/C,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;YAC3B,MAAM,KAAK,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;YAC5G,MAAM,IAAI,KAAK,CACX,2BAA2B,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,cAAc,KAAK,aAAa,IAAI,CAAC,IAAI,IAAI;gBAC5F,0EAA0E,CAC7E,CAAC;QACN,CAAC;IACL,CAAC;IAED,yBAAyB;IACzB,IAAI,aAAa,EAAE,CAAC;QAChB,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,EAAE,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC;IACxG,CAAC;SAAM,CAAC;QACJ,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAChD,CAAC;IAED,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACpC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,iCAAiC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC;AAC/F,CAAC"}
@@ -0,0 +1,2 @@
1
+ import { ToolArgs, ToolResult } from "../types.js";
2
+ export declare function handleWriteFile(projectRoot: string, args: ToolArgs): ToolResult;
@@ -0,0 +1,10 @@
1
+ import fs from "fs";
2
+ import path from "path";
3
+ import { safePath } from "../../utils/security.js";
4
+ export function handleWriteFile(projectRoot, args) {
5
+ const filePath = safePath(projectRoot, args.path);
6
+ fs.mkdirSync(path.dirname(filePath), { recursive: true });
7
+ fs.writeFileSync(filePath, args.content);
8
+ return { content: [{ type: "text", text: `✅ File written: ${args.path}` }] };
9
+ }
10
+ //# sourceMappingURL=write_file.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"write_file.js","sourceRoot":"","sources":["../../../../../framework-mcp/src/tools/file_system/write_file.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAGnD,MAAM,UAAU,eAAe,CAAC,WAAmB,EAAE,IAAc;IAC/D,MAAM,QAAQ,GAAG,QAAQ,CAAC,WAAW,EAAE,IAAI,CAAC,IAAc,CAAC,CAAC;IAC5D,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1D,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAiB,CAAC,CAAC;IACnD,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,mBAAmB,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC;AACjF,CAAC"}
@@ -0,0 +1,2 @@
1
+ import { ToolArgs, ToolResult } from "../types.js";
2
+ export declare function handleGetFrameworkStatus(projectRoot: string, args: ToolArgs): ToolResult;
@@ -0,0 +1,6 @@
1
+ import { safeExec } from "../../utils/cli.js";
2
+ export function handleGetFrameworkStatus(projectRoot, args) {
3
+ const output = safeExec("npx", ["agent-enderun", "status"], projectRoot, args.timeout);
4
+ return { content: [{ type: "text", text: output }] };
5
+ }
6
+ //# sourceMappingURL=get_status.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get_status.js","sourceRoot":"","sources":["../../../../../framework-mcp/src/tools/framework/get_status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAG9C,MAAM,UAAU,wBAAwB,CAAC,WAAmB,EAAE,IAAc;IACxE,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,EAAE,CAAC,eAAe,EAAE,QAAQ,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACvF,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;AACzD,CAAC"}
@@ -0,0 +1,2 @@
1
+ import { ToolArgs, ToolResult } from "../types.js";
2
+ export declare function handleOrchestrateLoop(projectRoot: string, args: ToolArgs): ToolResult;
@@ -0,0 +1,6 @@
1
+ import { safeExec } from "../../utils/cli.js";
2
+ export function handleOrchestrateLoop(projectRoot, args) {
3
+ const output = safeExec("npx", ["agent-enderun", "orchestrate"], projectRoot, args.timeout);
4
+ return { content: [{ type: "text", text: output }] };
5
+ }
6
+ //# sourceMappingURL=orchestrate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"orchestrate.js","sourceRoot":"","sources":["../../../../../framework-mcp/src/tools/framework/orchestrate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAG9C,MAAM,UAAU,qBAAqB,CAAC,WAAmB,EAAE,IAAc;IACrE,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,EAAE,CAAC,eAAe,EAAE,aAAa,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IAC5F,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;AACzD,CAAC"}
@@ -0,0 +1,2 @@
1
+ import { ToolArgs, ToolResult } from "../types.js";
2
+ export declare function handleUpdateContractHash(projectRoot: string, args: ToolArgs): ToolResult;
@@ -0,0 +1,6 @@
1
+ import { safeExec } from "../../utils/cli.js";
2
+ export function handleUpdateContractHash(projectRoot, args) {
3
+ const output = safeExec("npx", ["agent-enderun", "update-contract"], projectRoot, args.timeout);
4
+ return { content: [{ type: "text", text: output }] };
5
+ }
6
+ //# sourceMappingURL=update_contract_hash.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update_contract_hash.js","sourceRoot":"","sources":["../../../../../framework-mcp/src/tools/framework/update_contract_hash.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAG9C,MAAM,UAAU,wBAAwB,CAAC,WAAmB,EAAE,IAAc;IACxE,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,EAAE,CAAC,eAAe,EAAE,iBAAiB,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IAChG,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;AACzD,CAAC"}
@@ -0,0 +1,2 @@
1
+ import { ToolArgs, ToolResult } from "../types.js";
2
+ export declare function handleUpdateProjectMemory(projectRoot: string, args: ToolArgs): ToolResult;
@@ -0,0 +1,9 @@
1
+ import { safeExec } from "../../utils/cli.js";
2
+ export function handleUpdateProjectMemory(projectRoot, args) {
3
+ const section = args.section;
4
+ const content = args.content;
5
+ // Using execFileSync with array args prevents command injection
6
+ safeExec("npx", ["agent-enderun", "update_project_memory", section, content], projectRoot, args.timeout);
7
+ return { content: [{ type: "text", text: `✅ Section ${section} updated.` }] };
8
+ }
9
+ //# sourceMappingURL=update_memory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update_memory.js","sourceRoot":"","sources":["../../../../../framework-mcp/src/tools/framework/update_memory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAG9C,MAAM,UAAU,yBAAyB,CAAC,WAAmB,EAAE,IAAc;IACzE,MAAM,OAAO,GAAG,IAAI,CAAC,OAAiB,CAAC;IACvC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAiB,CAAC;IACvC,gEAAgE;IAChE,QAAQ,CAAC,KAAK,EAAE,CAAC,eAAe,EAAE,uBAAuB,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACzG,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,OAAO,WAAW,EAAE,CAAC,EAAE,CAAC;AAClF,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { TOOLS } from "./definitions.js";
2
+ import { ToolResult, ToolArgs } from "./types.js";
3
+ export type ToolHandler = (projectRoot: string, args: ToolArgs) => ToolResult;
4
+ export declare const toolHandlers: Record<string, ToolHandler>;
5
+ export { TOOLS };
@@ -0,0 +1,26 @@
1
+ import { TOOLS } from "./definitions.js";
2
+ import { handleReadFile } from "./file_system/read_file.js";
3
+ import { handleWriteFile } from "./file_system/write_file.js";
4
+ import { handleReplaceText } from "./file_system/replace_text.js";
5
+ import { handlePatchFile } from "./file_system/patch_file.js";
6
+ import { handleGetFrameworkStatus } from "./framework/get_status.js";
7
+ import { handleUpdateProjectMemory } from "./framework/update_memory.js";
8
+ import { handleOrchestrateLoop } from "./framework/orchestrate.js";
9
+ import { handleUpdateContractHash } from "./framework/update_contract_hash.js";
10
+ import { handleSendAgentMessage } from "./messaging/send_message.js";
11
+ import { handleLogAgentAction } from "./messaging/log_action.js";
12
+ // Map of tool names to their handler functions
13
+ export const toolHandlers = {
14
+ read_file: handleReadFile,
15
+ write_file: handleWriteFile,
16
+ replace_text: handleReplaceText,
17
+ patch_file: handlePatchFile,
18
+ get_framework_status: handleGetFrameworkStatus,
19
+ update_project_memory: handleUpdateProjectMemory,
20
+ orchestrate_loop: handleOrchestrateLoop,
21
+ send_agent_message: handleSendAgentMessage,
22
+ log_agent_action: handleLogAgentAction,
23
+ update_contract_hash: handleUpdateContractHash,
24
+ };
25
+ export { TOOLS };
26
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../framework-mcp/src/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AACrE,OAAO,EAAE,yBAAyB,EAAE,MAAM,8BAA8B,CAAC;AACzE,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,wBAAwB,EAAE,MAAM,qCAAqC,CAAC;AAC/E,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAMjE,+CAA+C;AAC/C,MAAM,CAAC,MAAM,YAAY,GAAgC;IACrD,SAAS,EAAE,cAAc;IACzB,UAAU,EAAE,eAAe;IAC3B,YAAY,EAAE,iBAAiB;IAC/B,UAAU,EAAE,eAAe;IAC3B,oBAAoB,EAAE,wBAAwB;IAC9C,qBAAqB,EAAE,yBAAyB;IAChD,gBAAgB,EAAE,qBAAqB;IACvC,kBAAkB,EAAE,sBAAsB;IAC1C,gBAAgB,EAAE,oBAAoB;IACtC,oBAAoB,EAAE,wBAAwB;CACjD,CAAC;AAEF,OAAO,EAAE,KAAK,EAAE,CAAC"}
@@ -0,0 +1,2 @@
1
+ import { ToolArgs, ToolResult } from "../types.js";
2
+ export declare function handleLogAgentAction(projectRoot: string, args: ToolArgs): ToolResult;
@@ -0,0 +1,23 @@
1
+ import fs from "fs";
2
+ import path from "path";
3
+ import { resolveFrameworkDir } from "../../utils/security.js";
4
+ export function handleLogAgentAction(projectRoot, args) {
5
+ const { agent, action, traceId, status, summary } = args;
6
+ const findings = args.findings ? args.findings.split(",").map(f => f.trim()) : [];
7
+ const frameworkDir = resolveFrameworkDir(projectRoot);
8
+ const agentName = agent.replace("@", "");
9
+ const logPath = path.join(projectRoot, frameworkDir, "logs", `${agentName}.json`);
10
+ const logEntry = {
11
+ timestamp: new Date().toISOString(),
12
+ agent,
13
+ action,
14
+ requestId: traceId,
15
+ status,
16
+ summary,
17
+ findings
18
+ };
19
+ fs.mkdirSync(path.dirname(logPath), { recursive: true });
20
+ fs.appendFileSync(logPath, JSON.stringify(logEntry) + "\n");
21
+ return { content: [{ type: "text", text: `✅ Action logged for ${agent} to ${path.join(frameworkDir, "logs", `${agentName}.json`)}` }] };
22
+ }
23
+ //# sourceMappingURL=log_action.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"log_action.js","sourceRoot":"","sources":["../../../../../framework-mcp/src/tools/messaging/log_action.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAG9D,MAAM,UAAU,oBAAoB,CAAC,WAAmB,EAAE,IAAc;IACpE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,IAAuF,CAAC;IAC5I,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAElF,MAAM,YAAY,GAAG,mBAAmB,CAAC,WAAW,CAAC,CAAC;IACtD,MAAM,SAAS,GAAI,KAAgB,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IACrD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,YAAY,EAAE,MAAM,EAAE,GAAG,SAAS,OAAO,CAAC,CAAC;IAElF,MAAM,QAAQ,GAAG;QACb,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACnC,KAAK;QACL,MAAM;QACN,SAAS,EAAE,OAAO;QAClB,MAAM;QACN,OAAO;QACP,QAAQ;KACX,CAAC;IAEF,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACzD,EAAE,CAAC,cAAc,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,CAAC;IAE5D,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,uBAAuB,KAAK,OAAO,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG,SAAS,OAAO,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;AAC5I,CAAC"}
@@ -0,0 +1,2 @@
1
+ import { ToolArgs, ToolResult } from "../types.js";
2
+ export declare function handleSendAgentMessage(projectRoot: string, args: ToolArgs): ToolResult;
@@ -0,0 +1,24 @@
1
+ import fs from "fs";
2
+ import path from "path";
3
+ import { resolveFrameworkDir } from "../../utils/security.js";
4
+ export function handleSendAgentMessage(projectRoot, args) {
5
+ const { to, category, content, traceId } = args;
6
+ // `from` is optional — falls back to "@mcp" for backward compatibility
7
+ const from = args.from || "@mcp";
8
+ const frameworkDir = resolveFrameworkDir(projectRoot);
9
+ const agentName = to.replace("@", "");
10
+ const messagePath = path.join(projectRoot, frameworkDir, "messages", `${agentName}.json`);
11
+ const message = {
12
+ timestamp: new Date().toISOString(),
13
+ from,
14
+ to,
15
+ category,
16
+ traceId,
17
+ content,
18
+ status: "PENDING"
19
+ };
20
+ fs.mkdirSync(path.dirname(messagePath), { recursive: true });
21
+ fs.appendFileSync(messagePath, JSON.stringify(message) + "\n");
22
+ return { content: [{ type: "text", text: `✅ Message sent to ${to} (from: ${from})` }] };
23
+ }
24
+ //# sourceMappingURL=send_message.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"send_message.js","sourceRoot":"","sources":["../../../../../framework-mcp/src/tools/messaging/send_message.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAG9D,MAAM,UAAU,sBAAsB,CAAC,WAAmB,EAAE,IAAc;IACtE,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,IAA2E,CAAC;IACvH,uEAAuE;IACvE,MAAM,IAAI,GAAI,IAAI,CAAC,IAAe,IAAI,MAAM,CAAC;IAE7C,MAAM,YAAY,GAAG,mBAAmB,CAAC,WAAW,CAAC,CAAC;IACtD,MAAM,SAAS,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IACtC,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,YAAY,EAAE,UAAU,EAAE,GAAG,SAAS,OAAO,CAAC,CAAC;IAE1F,MAAM,OAAO,GAAG;QACZ,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACnC,IAAI;QACJ,EAAE;QACF,QAAQ;QACR,OAAO;QACP,OAAO;QACP,MAAM,EAAE,SAAS;KACpB,CAAC;IAEF,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7D,EAAE,CAAC,cAAc,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;IAE/D,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,qBAAqB,EAAE,WAAW,IAAI,GAAG,EAAE,CAAC,EAAE,CAAC;AAC5F,CAAC"}
@@ -0,0 +1,47 @@
1
+ export interface ToolDefinition {
2
+ name: string;
3
+ description: string;
4
+ inputSchema: {
5
+ type: "object";
6
+ properties: Record<string, {
7
+ type: string;
8
+ description?: string;
9
+ enum?: string[];
10
+ }>;
11
+ required?: string[];
12
+ };
13
+ }
14
+ export interface CallToolRequest {
15
+ params: {
16
+ name: string;
17
+ arguments?: ToolArgs;
18
+ };
19
+ }
20
+ export interface ToolArgs {
21
+ path?: string;
22
+ content?: string;
23
+ oldText?: string;
24
+ newText?: string;
25
+ startLine?: number;
26
+ endLine?: number;
27
+ newContent?: string;
28
+ section?: string;
29
+ to?: string;
30
+ category?: "ACTION" | "DELEGATION" | "INFO" | "ALERT";
31
+ traceId?: string;
32
+ agent?: string;
33
+ action?: string;
34
+ status?: "SUCCESS" | "FAILURE";
35
+ summary?: string;
36
+ findings?: string;
37
+ allowMultiple?: boolean;
38
+ timeout?: number;
39
+ from?: string;
40
+ }
41
+ export interface ToolResult {
42
+ isError?: boolean;
43
+ content: Array<{
44
+ type: "text";
45
+ text: string;
46
+ }>;
47
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../framework-mcp/src/tools/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Executes a CLI command safely using execFileSync (no shell injection risk).
3
+ * Captures stderr gracefully to prevent stream crashes.
4
+ */
5
+ export declare function safeExec(command: string, args: string[], cwd: string, timeout?: number): string;
@@ -0,0 +1,21 @@
1
+ import { execFileSync } from "child_process";
2
+ /**
3
+ * Executes a CLI command safely using execFileSync (no shell injection risk).
4
+ * Captures stderr gracefully to prevent stream crashes.
5
+ */
6
+ export function safeExec(command, args, cwd, timeout) {
7
+ try {
8
+ return execFileSync(command, args, {
9
+ cwd,
10
+ encoding: "utf8",
11
+ timeout: timeout || 30000,
12
+ maxBuffer: 1024 * 1024,
13
+ stdio: ["pipe", "pipe", "pipe"],
14
+ });
15
+ }
16
+ catch (error) {
17
+ const err = error;
18
+ throw new Error(err.stderr || err.message || "Command execution failed", { cause: error });
19
+ }
20
+ }
21
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../../../framework-mcp/src/utils/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE7C;;;GAGG;AACH,MAAM,UAAU,QAAQ,CAAC,OAAe,EAAE,IAAc,EAAE,GAAW,EAAE,OAAgB;IACnF,IAAI,CAAC;QACD,OAAO,YAAY,CAAC,OAAO,EAAE,IAAI,EAAE;YAC/B,GAAG;YACH,QAAQ,EAAE,MAAM;YAChB,OAAO,EAAE,OAAO,IAAI,KAAK;YACzB,SAAS,EAAE,IAAI,GAAG,IAAI;YACtB,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;SAClC,CAAC,CAAC;IACP,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACtB,MAAM,GAAG,GAAG,KAA8C,CAAC;QAC3D,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,OAAO,IAAI,0BAA0B,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;IAC/F,CAAC;AACL,CAAC"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Validates and resolves a user-provided path to prevent path traversal attacks.
3
+ * Ensures the resolved path stays within the project root boundary.
4
+ */
5
+ export declare function safePath(projectRoot: string, userPath: string): string;
6
+ /**
7
+ * Resolves the active framework directory.
8
+ * Priority: package.json `enderun.frameworkDir` → `.enderun` → adapter dirs.
9
+ * This ensures the canonical framework directory is always used,
10
+ * even when adapter-specific dirs (e.g. `.gemini`) exist alongside it.
11
+ */
12
+ export declare function resolveFrameworkDir(projectRoot: string): string;
@@ -0,0 +1,54 @@
1
+ import path from "path";
2
+ import fs from "fs";
3
+ /**
4
+ * Validates and resolves a user-provided path to prevent path traversal attacks.
5
+ * Ensures the resolved path stays within the project root boundary.
6
+ */
7
+ export function safePath(projectRoot, userPath) {
8
+ const resolved = path.resolve(projectRoot, userPath);
9
+ const normalizedRoot = path.resolve(projectRoot);
10
+ if (!resolved.startsWith(normalizedRoot + path.sep) && resolved !== normalizedRoot) {
11
+ throw new Error(`Access denied: path "${userPath}" escapes project root.`);
12
+ }
13
+ return resolved;
14
+ }
15
+ /**
16
+ * Resolves the active framework directory.
17
+ * Priority: package.json `enderun.frameworkDir` → `.enderun` → adapter dirs.
18
+ * This ensures the canonical framework directory is always used,
19
+ * even when adapter-specific dirs (e.g. `.gemini`) exist alongside it.
20
+ */
21
+ export function resolveFrameworkDir(projectRoot) {
22
+ // 1. Authoritative source: read from package.json if present
23
+ try {
24
+ const pkgPath = path.join(projectRoot, "package.json");
25
+ if (fs.existsSync(pkgPath)) {
26
+ const pkg = JSON.parse(fs.readFileSync(pkgPath, "utf8"));
27
+ const enderunConfig = pkg["enderun"];
28
+ if (enderunConfig && typeof enderunConfig["frameworkDir"] === "string") {
29
+ return enderunConfig["frameworkDir"];
30
+ }
31
+ }
32
+ }
33
+ catch {
34
+ // ignore — fall through to filesystem scan
35
+ }
36
+ // 2. Filesystem scan — .enderun takes precedence over adapter-specific dirs
37
+ const candidates = [
38
+ ".enderun",
39
+ ".claude",
40
+ ".grok",
41
+ ".agent",
42
+ ".gemini/antigravity",
43
+ ".gemini/antigravity-cli",
44
+ ".gemini",
45
+ ];
46
+ for (const candidate of candidates) {
47
+ const candidatePath = path.join(projectRoot, candidate);
48
+ if (fs.existsSync(candidatePath)) {
49
+ return candidate;
50
+ }
51
+ }
52
+ return ".enderun";
53
+ }
54
+ //# sourceMappingURL=security.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"security.js","sourceRoot":"","sources":["../../../../framework-mcp/src/utils/security.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,IAAI,CAAC;AAEpB;;;GAGG;AACH,MAAM,UAAU,QAAQ,CAAC,WAAmB,EAAE,QAAgB;IAC1D,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;IACrD,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IAEjD,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,QAAQ,KAAK,cAAc,EAAE,CAAC;QACjF,MAAM,IAAI,KAAK,CAAC,wBAAwB,QAAQ,yBAAyB,CAAC,CAAC;IAC/E,CAAC;IAED,OAAO,QAAQ,CAAC;AACpB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CAAC,WAAmB;IACnD,6DAA6D;IAC7D,IAAI,CAAC;QACD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;QACvD,IAAI,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YACzB,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAA4B,CAAC;YACpF,MAAM,aAAa,GAAG,GAAG,CAAC,SAAS,CAAwC,CAAC;YAC5E,IAAI,aAAa,IAAI,OAAO,aAAa,CAAC,cAAc,CAAC,KAAK,QAAQ,EAAE,CAAC;gBACrE,OAAO,aAAa,CAAC,cAAc,CAAC,CAAC;YACzC,CAAC;QACL,CAAC;IACL,CAAC;IAAC,MAAM,CAAC;QACL,2CAA2C;IAC/C,CAAC;IAED,4EAA4E;IAC5E,MAAM,UAAU,GAAG;QACf,UAAU;QACV,SAAS;QACT,OAAO;QACP,QAAQ;QACR,qBAAqB;QACrB,yBAAyB;QACzB,SAAS;KACZ,CAAC;IAEF,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACjC,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;QACxD,IAAI,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;YAC/B,OAAO,SAAS,CAAC;QACrB,CAAC;IACL,CAAC;IAED,OAAO,UAAU,CAAC;AACtB,CAAC"}
@@ -0,0 +1,32 @@
1
+ export declare const ADAPTER_IDS: readonly ["gemini", "claude", "grok", "cursor", "codex", "antigravity", "antigravity-cli"];
2
+ export type AdapterId = (typeof ADAPTER_IDS)[number];
3
+ export interface AdapterConfig {
4
+ id: AdapterId;
5
+ /** Runtime framework directory created by init */
6
+ frameworkDir: string;
7
+ /** Root shim file (e.g. gemini.md) */
8
+ shimFile: string;
9
+ /** Package template copied into frameworkDir */
10
+ templateDir: ".enderun";
11
+ /** Extra directories under frameworkDir (gemini only for nested auto-scaffold) */
12
+ nestedDirs?: string[];
13
+ }
14
+ export declare const ADAPTERS: Record<AdapterId, AdapterConfig>;
15
+ /**
16
+ * All framework runtime directories (for discovery).
17
+ * Verified against 2026 industry standards.
18
+ * Includes .agent for direct antigravity adapter installs.
19
+ */
20
+ export declare const FRAMEWORK_DIR_CANDIDATES: readonly [".enderun", ".claude", ".grok", ".agent", ".gemini", ".agents"];
21
+ export declare function resolveAdapter(input?: string): AdapterConfig;
22
+ export declare function isAdapterShimFile(fileName: string): boolean;
23
+ export declare function remapFrameworkContent(content: string, frameworkDir: string, adapterId: AdapterId): string;
24
+ export declare function buildMcpServerEntry(projectRoot: string): {
25
+ command: string;
26
+ args: string[];
27
+ env: {};
28
+ };
29
+ /**
30
+ * Adapter-specific MCP and IDE hooks after scaffold.
31
+ */
32
+ export declare function runAdapterPostInit(adapter: AdapterConfig, projectRoot: string): void;