agent-enderun 1.0.8 → 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 (300) 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 +4 -4
  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 +1 -1
  25. package/.enderun/logs/manager.json +1 -0
  26. package/.enderun/memory/PROJECT_MEMORY.md +6 -0
  27. package/.enderun/observability/README.md +1 -1
  28. package/README.md +32 -31
  29. package/agent.md +1 -1
  30. package/bin/hermes-sandbox.js +0 -4
  31. package/bin/init-check.js +0 -1
  32. package/bin/validate-agent-army.js +34 -92
  33. package/dist/apps/backend/src/types/index.d.ts +9 -0
  34. package/dist/apps/backend/src/types/index.js +5 -0
  35. package/dist/apps/backend/src/types/index.js.map +1 -0
  36. package/dist/apps/web/src/main.d.ts +1 -0
  37. package/dist/apps/web/src/main.js +9 -0
  38. package/dist/apps/web/src/main.js.map +1 -0
  39. package/dist/apps/web/vite.config.d.ts +2 -0
  40. package/dist/apps/web/vite.config.js +6 -0
  41. package/dist/apps/web/vite.config.js.map +1 -0
  42. package/dist/framework-mcp/src/index.d.ts +1 -0
  43. package/dist/framework-mcp/src/index.js +71 -0
  44. package/dist/framework-mcp/src/index.js.map +1 -0
  45. package/dist/framework-mcp/src/tools/definitions.d.ts +2 -0
  46. package/dist/framework-mcp/src/tools/definitions.js +111 -0
  47. package/dist/framework-mcp/src/tools/definitions.js.map +1 -0
  48. package/dist/framework-mcp/src/tools/file_system/patch_file.d.ts +2 -0
  49. package/dist/framework-mcp/src/tools/file_system/patch_file.js +19 -0
  50. package/dist/framework-mcp/src/tools/file_system/patch_file.js.map +1 -0
  51. package/dist/framework-mcp/src/tools/file_system/read_file.d.ts +2 -0
  52. package/dist/framework-mcp/src/tools/file_system/read_file.js +8 -0
  53. package/dist/framework-mcp/src/tools/file_system/read_file.js.map +1 -0
  54. package/dist/framework-mcp/src/tools/file_system/replace_text.d.ts +2 -0
  55. package/dist/framework-mcp/src/tools/file_system/replace_text.js +32 -0
  56. package/dist/framework-mcp/src/tools/file_system/replace_text.js.map +1 -0
  57. package/dist/framework-mcp/src/tools/file_system/write_file.d.ts +2 -0
  58. package/dist/framework-mcp/src/tools/file_system/write_file.js +10 -0
  59. package/dist/framework-mcp/src/tools/file_system/write_file.js.map +1 -0
  60. package/dist/framework-mcp/src/tools/framework/get_status.d.ts +2 -0
  61. package/dist/framework-mcp/src/tools/framework/get_status.js +6 -0
  62. package/dist/framework-mcp/src/tools/framework/get_status.js.map +1 -0
  63. package/dist/framework-mcp/src/tools/framework/orchestrate.d.ts +2 -0
  64. package/dist/framework-mcp/src/tools/framework/orchestrate.js +6 -0
  65. package/dist/framework-mcp/src/tools/framework/orchestrate.js.map +1 -0
  66. package/dist/framework-mcp/src/tools/framework/update_contract_hash.d.ts +2 -0
  67. package/dist/framework-mcp/src/tools/framework/update_contract_hash.js +6 -0
  68. package/dist/framework-mcp/src/tools/framework/update_contract_hash.js.map +1 -0
  69. package/dist/framework-mcp/src/tools/framework/update_memory.d.ts +2 -0
  70. package/dist/framework-mcp/src/tools/framework/update_memory.js +9 -0
  71. package/dist/framework-mcp/src/tools/framework/update_memory.js.map +1 -0
  72. package/dist/framework-mcp/src/tools/index.d.ts +5 -0
  73. package/dist/framework-mcp/src/tools/index.js +26 -0
  74. package/dist/framework-mcp/src/tools/index.js.map +1 -0
  75. package/dist/framework-mcp/src/tools/messaging/log_action.d.ts +2 -0
  76. package/dist/framework-mcp/src/tools/messaging/log_action.js +23 -0
  77. package/dist/framework-mcp/src/tools/messaging/log_action.js.map +1 -0
  78. package/dist/framework-mcp/src/tools/messaging/send_message.d.ts +2 -0
  79. package/dist/framework-mcp/src/tools/messaging/send_message.js +24 -0
  80. package/dist/framework-mcp/src/tools/messaging/send_message.js.map +1 -0
  81. package/dist/framework-mcp/src/tools/types.d.ts +47 -0
  82. package/dist/framework-mcp/src/tools/types.js +2 -0
  83. package/dist/framework-mcp/src/tools/types.js.map +1 -0
  84. package/dist/framework-mcp/src/utils/cli.d.ts +5 -0
  85. package/dist/framework-mcp/src/utils/cli.js +21 -0
  86. package/dist/framework-mcp/src/utils/cli.js.map +1 -0
  87. package/dist/framework-mcp/src/utils/security.d.ts +12 -0
  88. package/dist/framework-mcp/src/utils/security.js +54 -0
  89. package/dist/framework-mcp/src/utils/security.js.map +1 -0
  90. package/dist/src/cli/adapters.d.ts +32 -0
  91. package/dist/src/cli/adapters.js +264 -0
  92. package/dist/src/cli/adapters.js.map +1 -0
  93. package/dist/src/cli/commands/app.d.ts +4 -0
  94. package/dist/src/cli/commands/app.js +32 -0
  95. package/dist/src/cli/commands/app.js.map +1 -0
  96. package/dist/src/cli/commands/check.d.ts +6 -0
  97. package/dist/src/cli/commands/check.js +110 -0
  98. package/dist/src/cli/commands/check.js.map +1 -0
  99. package/dist/src/cli/commands/compliance.d.ts +1 -0
  100. package/dist/src/cli/commands/compliance.js +51 -0
  101. package/dist/src/cli/commands/compliance.js.map +1 -0
  102. package/dist/src/cli/commands/contract.d.ts +8 -0
  103. package/dist/src/cli/commands/contract.js +73 -0
  104. package/dist/src/cli/commands/contract.js.map +1 -0
  105. package/dist/src/cli/commands/explorer.d.ts +2 -0
  106. package/dist/src/cli/commands/explorer.js +43 -0
  107. package/dist/src/cli/commands/explorer.js.map +1 -0
  108. package/dist/src/cli/commands/git.d.ts +2 -0
  109. package/dist/src/cli/commands/git.js +41 -0
  110. package/dist/src/cli/commands/git.js.map +1 -0
  111. package/dist/src/cli/commands/init.d.ts +1 -0
  112. package/dist/src/cli/commands/init.js +338 -0
  113. package/dist/src/cli/commands/init.js.map +1 -0
  114. package/dist/src/cli/commands/knowledge.d.ts +2 -0
  115. package/dist/src/cli/commands/knowledge.js +43 -0
  116. package/dist/src/cli/commands/knowledge.js.map +1 -0
  117. package/dist/src/cli/commands/lint.d.ts +4 -0
  118. package/dist/src/cli/commands/lint.js +24 -0
  119. package/dist/src/cli/commands/lint.js.map +1 -0
  120. package/dist/src/cli/commands/log.d.ts +9 -0
  121. package/dist/src/cli/commands/log.js +33 -0
  122. package/dist/src/cli/commands/log.js.map +1 -0
  123. package/dist/src/cli/commands/memory.d.ts +1 -0
  124. package/dist/src/cli/commands/memory.js +72 -0
  125. package/dist/src/cli/commands/memory.js.map +1 -0
  126. package/dist/src/cli/commands/orchestrate.d.ts +1 -0
  127. package/dist/src/cli/commands/orchestrate.js +111 -0
  128. package/dist/src/cli/commands/orchestrate.js.map +1 -0
  129. package/dist/src/cli/commands/script.d.ts +1 -0
  130. package/dist/src/cli/commands/script.js +20 -0
  131. package/dist/src/cli/commands/script.js.map +1 -0
  132. package/dist/src/cli/commands/security.d.ts +1 -0
  133. package/dist/src/cli/commands/security.js +37 -0
  134. package/dist/src/cli/commands/security.js.map +1 -0
  135. package/dist/src/cli/commands/status.d.ts +4 -0
  136. package/dist/src/cli/commands/status.js +56 -0
  137. package/dist/src/cli/commands/status.js.map +1 -0
  138. package/dist/src/cli/commands/trace.d.ts +4 -0
  139. package/dist/src/cli/commands/trace.js +42 -0
  140. package/dist/src/cli/commands/trace.js.map +1 -0
  141. package/dist/src/cli/index.d.ts +2 -0
  142. package/dist/src/cli/index.js +117 -0
  143. package/dist/src/cli/index.js.map +1 -0
  144. package/dist/src/cli/utils/app.d.ts +33 -0
  145. package/dist/src/cli/utils/app.js +710 -0
  146. package/dist/src/cli/utils/app.js.map +1 -0
  147. package/dist/src/cli/utils/claude.d.ts +8 -0
  148. package/dist/src/cli/utils/claude.js +56 -0
  149. package/dist/src/cli/utils/claude.js.map +1 -0
  150. package/dist/src/cli/utils/fs.d.ts +11 -0
  151. package/dist/src/cli/utils/fs.js +144 -0
  152. package/dist/src/cli/utils/fs.js.map +1 -0
  153. package/dist/src/cli/utils/memory.d.ts +14 -0
  154. package/dist/src/cli/utils/memory.js +173 -0
  155. package/dist/src/cli/utils/memory.js.map +1 -0
  156. package/dist/src/cli/utils/pkg.d.ts +24 -0
  157. package/dist/src/cli/utils/pkg.js +254 -0
  158. package/dist/src/cli/utils/pkg.js.map +1 -0
  159. package/dist/src/cli/utils/string.d.ts +6 -0
  160. package/dist/src/cli/utils/string.js +44 -0
  161. package/dist/src/cli/utils/string.js.map +1 -0
  162. package/dist/src/cli/utils/time.d.ts +2 -0
  163. package/dist/src/cli/utils/time.js +28 -0
  164. package/dist/src/cli/utils/time.js.map +1 -0
  165. package/dist/tests/adapter.test.d.ts +1 -0
  166. package/dist/tests/adapter.test.js +80 -0
  167. package/dist/tests/adapter.test.js.map +1 -0
  168. package/dist/tests/framework-init-test/framework-mcp/src/index.d.ts +1 -0
  169. package/dist/tests/framework-init-test/framework-mcp/src/index.js +71 -0
  170. package/dist/tests/framework-init-test/framework-mcp/src/index.js.map +1 -0
  171. package/dist/tests/framework-init-test/framework-mcp/src/tools/definitions.d.ts +2 -0
  172. package/dist/tests/framework-init-test/framework-mcp/src/tools/definitions.js +111 -0
  173. package/dist/tests/framework-init-test/framework-mcp/src/tools/definitions.js.map +1 -0
  174. package/dist/tests/framework-init-test/framework-mcp/src/tools/file_system/patch_file.d.ts +2 -0
  175. package/dist/tests/framework-init-test/framework-mcp/src/tools/file_system/patch_file.js +19 -0
  176. package/dist/tests/framework-init-test/framework-mcp/src/tools/file_system/patch_file.js.map +1 -0
  177. package/dist/tests/framework-init-test/framework-mcp/src/tools/file_system/read_file.d.ts +2 -0
  178. package/dist/tests/framework-init-test/framework-mcp/src/tools/file_system/read_file.js +8 -0
  179. package/dist/tests/framework-init-test/framework-mcp/src/tools/file_system/read_file.js.map +1 -0
  180. package/dist/tests/framework-init-test/framework-mcp/src/tools/file_system/replace_text.d.ts +2 -0
  181. package/dist/tests/framework-init-test/framework-mcp/src/tools/file_system/replace_text.js +32 -0
  182. package/dist/tests/framework-init-test/framework-mcp/src/tools/file_system/replace_text.js.map +1 -0
  183. package/dist/tests/framework-init-test/framework-mcp/src/tools/file_system/write_file.d.ts +2 -0
  184. package/dist/tests/framework-init-test/framework-mcp/src/tools/file_system/write_file.js +10 -0
  185. package/dist/tests/framework-init-test/framework-mcp/src/tools/file_system/write_file.js.map +1 -0
  186. package/dist/tests/framework-init-test/framework-mcp/src/tools/framework/get_status.d.ts +2 -0
  187. package/dist/tests/framework-init-test/framework-mcp/src/tools/framework/get_status.js +6 -0
  188. package/dist/tests/framework-init-test/framework-mcp/src/tools/framework/get_status.js.map +1 -0
  189. package/dist/tests/framework-init-test/framework-mcp/src/tools/framework/orchestrate.d.ts +2 -0
  190. package/dist/tests/framework-init-test/framework-mcp/src/tools/framework/orchestrate.js +6 -0
  191. package/dist/tests/framework-init-test/framework-mcp/src/tools/framework/orchestrate.js.map +1 -0
  192. package/dist/tests/framework-init-test/framework-mcp/src/tools/framework/update_contract_hash.d.ts +2 -0
  193. package/dist/tests/framework-init-test/framework-mcp/src/tools/framework/update_contract_hash.js +6 -0
  194. package/dist/tests/framework-init-test/framework-mcp/src/tools/framework/update_contract_hash.js.map +1 -0
  195. package/dist/tests/framework-init-test/framework-mcp/src/tools/framework/update_memory.d.ts +2 -0
  196. package/dist/tests/framework-init-test/framework-mcp/src/tools/framework/update_memory.js +9 -0
  197. package/dist/tests/framework-init-test/framework-mcp/src/tools/framework/update_memory.js.map +1 -0
  198. package/dist/tests/framework-init-test/framework-mcp/src/tools/index.d.ts +5 -0
  199. package/dist/tests/framework-init-test/framework-mcp/src/tools/index.js +26 -0
  200. package/dist/tests/framework-init-test/framework-mcp/src/tools/index.js.map +1 -0
  201. package/dist/tests/framework-init-test/framework-mcp/src/tools/messaging/log_action.d.ts +2 -0
  202. package/dist/tests/framework-init-test/framework-mcp/src/tools/messaging/log_action.js +23 -0
  203. package/dist/tests/framework-init-test/framework-mcp/src/tools/messaging/log_action.js.map +1 -0
  204. package/dist/tests/framework-init-test/framework-mcp/src/tools/messaging/send_message.d.ts +2 -0
  205. package/dist/tests/framework-init-test/framework-mcp/src/tools/messaging/send_message.js +24 -0
  206. package/dist/tests/framework-init-test/framework-mcp/src/tools/messaging/send_message.js.map +1 -0
  207. package/dist/tests/framework-init-test/framework-mcp/src/tools/types.d.ts +47 -0
  208. package/dist/tests/framework-init-test/framework-mcp/src/tools/types.js +2 -0
  209. package/dist/tests/framework-init-test/framework-mcp/src/tools/types.js.map +1 -0
  210. package/dist/tests/framework-init-test/framework-mcp/src/utils/cli.d.ts +5 -0
  211. package/dist/tests/framework-init-test/framework-mcp/src/utils/cli.js +21 -0
  212. package/dist/tests/framework-init-test/framework-mcp/src/utils/cli.js.map +1 -0
  213. package/dist/tests/framework-init-test/framework-mcp/src/utils/security.d.ts +12 -0
  214. package/dist/tests/framework-init-test/framework-mcp/src/utils/security.js +54 -0
  215. package/dist/tests/framework-init-test/framework-mcp/src/utils/security.js.map +1 -0
  216. package/dist/tests/framework-init-test/framework-mcp/tests/tools/file_system/replace_text.test.d.ts +1 -0
  217. package/dist/tests/framework-init-test/framework-mcp/tests/tools/file_system/replace_text.test.js +69 -0
  218. package/dist/tests/framework-init-test/framework-mcp/tests/tools/file_system/replace_text.test.js.map +1 -0
  219. package/dist/tests/framework-init-test/panda.config.d.ts +4 -0
  220. package/dist/tests/framework-init-test/panda.config.js +95 -0
  221. package/dist/tests/framework-init-test/panda.config.js.map +1 -0
  222. package/dist/tests/framework-init-test/vitest.config.d.ts +2 -0
  223. package/dist/tests/framework-init-test/vitest.config.js +19 -0
  224. package/dist/tests/framework-init-test/vitest.config.js.map +1 -0
  225. package/dist/tests/gemini.test.d.ts +1 -0
  226. package/dist/tests/gemini.test.js +38 -0
  227. package/dist/tests/gemini.test.js.map +1 -0
  228. package/dist/tests/initial.test.d.ts +1 -0
  229. package/dist/tests/initial.test.js +7 -0
  230. package/dist/tests/initial.test.js.map +1 -0
  231. package/dist/vitest.config.d.ts +2 -0
  232. package/dist/vitest.config.js +19 -0
  233. package/dist/vitest.config.js.map +1 -0
  234. package/eslint.config.js +1 -1
  235. package/framework-mcp/dist/index.js +2 -2
  236. package/framework-mcp/dist/src/index.js +70 -0
  237. package/framework-mcp/dist/src/tools/definitions.js +110 -0
  238. package/framework-mcp/dist/src/tools/file_system/patch_file.js +18 -0
  239. package/framework-mcp/dist/src/tools/file_system/read_file.js +7 -0
  240. package/framework-mcp/dist/src/tools/file_system/replace_text.js +31 -0
  241. package/framework-mcp/dist/src/tools/file_system/write_file.js +9 -0
  242. package/framework-mcp/dist/src/tools/framework/get_status.js +5 -0
  243. package/framework-mcp/dist/src/tools/framework/orchestrate.js +5 -0
  244. package/framework-mcp/dist/src/tools/framework/update_contract_hash.js +5 -0
  245. package/framework-mcp/dist/src/tools/framework/update_memory.js +8 -0
  246. package/framework-mcp/dist/src/tools/index.js +25 -0
  247. package/framework-mcp/dist/src/tools/messaging/log_action.js +22 -0
  248. package/framework-mcp/dist/src/tools/messaging/send_message.js +23 -0
  249. package/framework-mcp/dist/src/tools/types.js +1 -0
  250. package/framework-mcp/dist/src/utils/cli.js +20 -0
  251. package/framework-mcp/dist/src/utils/security.js +53 -0
  252. package/framework-mcp/dist/tests/tools/file_system/replace_text.test.js +68 -0
  253. package/framework-mcp/dist/tools/definitions.js +1 -0
  254. package/framework-mcp/dist/tools/file_system/replace_text.js +18 -1
  255. package/framework-mcp/dist/tools/framework/get_status.js +2 -2
  256. package/framework-mcp/dist/tools/framework/orchestrate.js +2 -2
  257. package/framework-mcp/dist/tools/framework/update_contract_hash.js +2 -2
  258. package/framework-mcp/dist/tools/framework/update_memory.js +1 -1
  259. package/framework-mcp/dist/tools/messaging/send_message.js +4 -2
  260. package/framework-mcp/dist/utils/cli.js +2 -2
  261. package/framework-mcp/dist/utils/security.js +23 -5
  262. package/framework-mcp/package.json +3 -3
  263. package/framework-mcp/src/index.ts +2 -2
  264. package/framework-mcp/src/tools/definitions.ts +1 -0
  265. package/framework-mcp/src/tools/file_system/replace_text.ts +21 -1
  266. package/framework-mcp/src/tools/framework/get_status.ts +3 -3
  267. package/framework-mcp/src/tools/framework/orchestrate.ts +3 -3
  268. package/framework-mcp/src/tools/framework/update_contract_hash.ts +3 -3
  269. package/framework-mcp/src/tools/framework/update_memory.ts +1 -1
  270. package/framework-mcp/src/tools/messaging/send_message.ts +5 -2
  271. package/framework-mcp/src/tools/types.ts +3 -0
  272. package/framework-mcp/src/utils/cli.ts +2 -2
  273. package/framework-mcp/src/utils/security.ts +23 -5
  274. package/framework-mcp/tests/tools/file_system/replace_text.test.js +68 -0
  275. package/framework-mcp/tests/tools/file_system/replace_text.test.ts +77 -0
  276. package/framework-mcp/tsconfig.json +1 -2
  277. package/mcp.json +4 -4
  278. package/package.json +4 -3
  279. package/src/cli/adapters.ts +16 -9
  280. package/src/cli/commands/contract.ts +2 -2
  281. package/src/cli/commands/init.ts +211 -432
  282. package/src/cli/commands/memory.ts +5 -0
  283. package/src/cli/index.ts +7 -0
  284. package/src/cli/utils/app.ts +19 -16
  285. package/src/cli/utils/claude.ts +2 -1
  286. package/src/cli/utils/fs.ts +2 -1
  287. package/src/cli/utils/memory.ts +2 -2
  288. package/src/cli/utils/pkg.ts +32 -0
  289. package/.enderun/agents/analyst.md +0 -32
  290. package/.enderun/agents/backend.md +0 -49
  291. package/.enderun/agents/database.md +0 -41
  292. package/.enderun/agents/devops.md +0 -41
  293. package/.enderun/agents/explorer.md +0 -40
  294. package/.enderun/agents/frontend.md +0 -48
  295. package/.enderun/agents/git.md +0 -41
  296. package/.enderun/agents/manager.md +0 -43
  297. package/.enderun/agents/mobile.md +0 -42
  298. package/.enderun/agents/native.md +0 -41
  299. package/.enderun/agents/quality.md +0 -40
  300. package/.enderun/agents/security.md +0 -32
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compliance.js","sourceRoot":"","sources":["../../../../src/cli/commands/compliance.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Verify type safety between backend and frontend contracts.
3
+ */
4
+ export declare function verifyApiContractCommand(): void;
5
+ /**
6
+ * Update and synchronize type safety between backend and frontend contracts.
7
+ */
8
+ export declare function updateApiContractCommand(): void;
@@ -0,0 +1,73 @@
1
+ import path from "path";
2
+ import fs from "fs";
3
+ import crypto from "crypto";
4
+ import { getConfiguredPaths } from "../utils/memory.js";
5
+ /**
6
+ * Verify type safety between backend and frontend contracts.
7
+ */
8
+ export function verifyApiContractCommand() {
9
+ const projectRoot = process.cwd();
10
+ const pathsMap = getConfiguredPaths();
11
+ const sharedDir = path.join(projectRoot, pathsMap.backend, "src/types");
12
+ const contractPath = path.join(projectRoot, pathsMap.backend, "contract.version.json");
13
+ if (!fs.existsSync(sharedDir) || !fs.existsSync(contractPath)) {
14
+ console.error("āŒ Error: API types or contract version file missing.");
15
+ process.exit(1);
16
+ }
17
+ const walk = (d) => fs.readdirSync(d, { withFileTypes: true }).flatMap((e) => {
18
+ const fullPath = path.join(d, e.name);
19
+ return e.isDirectory() ? walk(fullPath) : (e.name.endsWith(".ts") ? [fullPath] : []);
20
+ });
21
+ const hash = crypto.createHash("sha256");
22
+ for (const filePath of walk(sharedDir).sort()) {
23
+ hash.update(path.relative(projectRoot, filePath));
24
+ hash.update("\0");
25
+ hash.update(fs.readFileSync(filePath));
26
+ hash.update("\0");
27
+ }
28
+ const currentHash = hash.digest("hex");
29
+ const contract = JSON.parse(fs.readFileSync(contractPath, "utf8"));
30
+ if (contract.contract_hash === currentHash) {
31
+ console.warn("āœ… Contract is valid and synchronized.");
32
+ }
33
+ else {
34
+ console.error("āŒ Error: Contract drift detected!");
35
+ console.error(` Stored: ${contract.contract_hash}`);
36
+ console.error(` Actual: ${currentHash}`);
37
+ console.warn("\nšŸ‘‰ Run 'npm run update-contract' to re-sync.");
38
+ process.exit(1);
39
+ }
40
+ }
41
+ /**
42
+ * Update and synchronize type safety between backend and frontend contracts.
43
+ */
44
+ export function updateApiContractCommand() {
45
+ const projectRoot = process.cwd();
46
+ const pathsMap = getConfiguredPaths();
47
+ const sharedDir = path.join(projectRoot, pathsMap.backend, "src/types");
48
+ const contractPath = path.join(projectRoot, pathsMap.backend, "contract.version.json");
49
+ if (!fs.existsSync(sharedDir)) {
50
+ console.error("āŒ Error: API types directory missing.");
51
+ process.exit(1);
52
+ }
53
+ const walk = (d) => fs.readdirSync(d, { withFileTypes: true }).flatMap((e) => {
54
+ const fullPath = path.join(d, e.name);
55
+ return e.isDirectory() ? walk(fullPath) : (e.name.endsWith(".ts") ? [fullPath] : []);
56
+ });
57
+ const hash = crypto.createHash("sha256");
58
+ for (const filePath of walk(sharedDir).sort()) {
59
+ hash.update(path.relative(projectRoot, filePath));
60
+ hash.update("\0");
61
+ hash.update(fs.readFileSync(filePath));
62
+ hash.update("\0");
63
+ }
64
+ const currentHash = hash.digest("hex");
65
+ const contractData = {
66
+ contract_hash: currentHash,
67
+ last_updated: new Date().toISOString()
68
+ };
69
+ fs.mkdirSync(path.dirname(contractPath), { recursive: true });
70
+ fs.writeFileSync(contractPath, JSON.stringify(contractData, null, 2));
71
+ console.warn(`āœ… Contract successfully synchronized. New hash: ${currentHash}`);
72
+ }
73
+ //# sourceMappingURL=contract.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contract.js","sourceRoot":"","sources":["../../../../src/cli/commands/contract.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function explorerGraphCommand(targetPath: string): void;
2
+ export declare function explorerAuditCommand(targetPath: string): void;
@@ -0,0 +1,43 @@
1
+ import fs from "fs";
2
+ import path from "path";
3
+ import { collectFiles } from "../utils/fs.js";
4
+ const targetDir = process.cwd();
5
+ export function explorerGraphCommand(targetPath) {
6
+ console.warn(`šŸ—ŗļø Generating Dependency Graph for: ${targetPath}...`);
7
+ const files = collectFiles(path.join(targetDir, targetPath), [".ts", ".tsx"]);
8
+ const edges = [];
9
+ files.forEach((f) => {
10
+ const content = fs.readFileSync(f, "utf8");
11
+ const name = path.basename(f, path.extname(f));
12
+ const imports = content.match(/from\s+['"]\.\.?\/[^'"]+['"]/g) || [];
13
+ imports.forEach((imp) => {
14
+ const target = path.basename(imp.split(/['"]/)[1]);
15
+ edges.push(`${name} --> ${target}`);
16
+ });
17
+ });
18
+ if (edges.length === 0) {
19
+ console.warn("ā„¹ļø No internal dependencies found.");
20
+ }
21
+ else {
22
+ console.warn("```mermaid\ngraph TD\n" + Array.from(new Set(edges)).join("\n") + "\n```");
23
+ }
24
+ }
25
+ export function explorerAuditCommand(targetPath) {
26
+ console.warn(`🧠 Codebase Intelligence Scan: ${targetPath}...`);
27
+ const files = collectFiles(path.join(targetDir, targetPath), [".ts", ".tsx"]);
28
+ const complexity = [];
29
+ files.forEach((f) => {
30
+ const content = fs.readFileSync(f, "utf8");
31
+ const lines = content.split("\n").length;
32
+ if (lines > 300)
33
+ complexity.push(`${path.relative(targetDir, f)} (${lines} lines)`);
34
+ });
35
+ if (complexity.length > 0) {
36
+ console.warn("\nāš ļø Complexity Spikes:");
37
+ complexity.forEach((c) => console.warn(`- ${c}`));
38
+ }
39
+ else {
40
+ console.warn("āœ… Codebase structure looks clean.");
41
+ }
42
+ }
43
+ //# sourceMappingURL=explorer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"explorer.js","sourceRoot":"","sources":["../../../../src/cli/commands/explorer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;AAEhC,MAAM,UAAU,oBAAoB,CAAC,UAAkB;IACnD,OAAO,CAAC,IAAI,CAAC,yCAAyC,UAAU,KAAK,CAAC,CAAC;IACvE,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;IAC9E,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;QAChB,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;QAC3C,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/C,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,+BAA+B,CAAC,IAAI,EAAE,CAAC;QACrE,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;YACpB,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACnD,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,QAAQ,MAAM,EAAE,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IACH,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrB,OAAO,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;IACvD,CAAC;SAAM,CAAC;QACJ,OAAO,CAAC,IAAI,CACR,wBAAwB,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,OAAO,CAC7E,CAAC;IACN,CAAC;AACL,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,UAAkB;IACnD,OAAO,CAAC,IAAI,CAAC,kCAAkC,UAAU,KAAK,CAAC,CAAC;IAChE,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;IAC9E,MAAM,UAAU,GAAa,EAAE,CAAC;IAChC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;QAChB,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;QAC3C,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;QACzC,IAAI,KAAK,GAAG,GAAG;YAAE,UAAU,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC;IACxF,CAAC,CAAC,CAAC;IACH,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,OAAO,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;QACxC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;IACtD,CAAC;SAAM,CAAC;QACJ,OAAO,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;IACtD,CAAC;AACL,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function gitCommitCommand(traceId: string): void;
2
+ export declare function gitSyncCommand(): void;
@@ -0,0 +1,41 @@
1
+ import cp from "child_process";
2
+ import path from "path";
3
+ import { getConfiguredPaths } from "../utils/memory.js";
4
+ export function gitCommitCommand(traceId) {
5
+ try {
6
+ const diff = cp.execSync("git diff --staged", { encoding: "utf8" });
7
+ if (!diff) {
8
+ console.warn("ā„¹ļø No staged changes found. Use 'git add' first.");
9
+ return;
10
+ }
11
+ const files = cp.execSync("git diff --staged --name-only", { encoding: "utf8" })
12
+ .split("\n")
13
+ .filter(Boolean);
14
+ const pathsMap = getConfiguredPaths();
15
+ const backendTypesPath = path.join(pathsMap.backend, "src/types");
16
+ let type = "feat";
17
+ const scope = "code";
18
+ if (files.some((f) => f.includes(".md")))
19
+ type = "docs";
20
+ else if (files.some((f) => f.includes(backendTypesPath)))
21
+ type = "arch";
22
+ else if (files.some((f) => f.includes("bin/cli.js")))
23
+ type = "fix";
24
+ const summary = files.length === 1 ? `update ${path.basename(files[0])}` : `update ${files.length} files`;
25
+ console.warn(`\n### SUGGESTED COMMIT MESSAGE ###\n\n[${traceId}] ${type}(${scope}): ${summary}\n`);
26
+ }
27
+ catch {
28
+ console.warn("āŒ Git command failed.");
29
+ }
30
+ }
31
+ export function gitSyncCommand() {
32
+ console.warn("šŸ”„ Syncing with remote repository...");
33
+ try {
34
+ cp.execSync("git pull origin main --rebase", { stdio: "inherit" });
35
+ console.warn("āœ… Successfully synced and rebased.");
36
+ }
37
+ catch {
38
+ console.warn("āŒ Sync failed. Please resolve conflicts manually.");
39
+ }
40
+ }
41
+ //# sourceMappingURL=git.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git.js","sourceRoot":"","sources":["../../../../src/cli/commands/git.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,eAAe,CAAC;AAC/B,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAExD,MAAM,UAAU,gBAAgB,CAAC,OAAe;IAC5C,IAAI,CAAC;QACD,MAAM,IAAI,GAAG,EAAE,CAAC,QAAQ,CAAC,mBAAmB,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;QACpE,IAAI,CAAC,IAAI,EAAE,CAAC;YACR,OAAO,CAAC,IAAI,CAAC,kDAAkD,CAAC,CAAC;YACjE,OAAO;QACX,CAAC;QACD,MAAM,KAAK,GAAG,EAAE,CAAC,QAAQ,CAAC,+BAA+B,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;aAC3E,KAAK,CAAC,IAAI,CAAC;aACX,MAAM,CAAC,OAAO,CAAC,CAAC;QACrB,MAAM,QAAQ,GAAG,kBAAkB,EAAE,CAAC;QACtC,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QAClE,IAAI,IAAI,GAAG,MAAM,CAAC;QAClB,MAAM,KAAK,GAAG,MAAM,CAAC;QACrB,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YAAE,IAAI,GAAG,MAAM,CAAC;aACnD,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;YAAE,IAAI,GAAG,MAAM,CAAC;aACnE,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;YAAE,IAAI,GAAG,KAAK,CAAC;QAEnE,MAAM,OAAO,GACf,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,CAAC,MAAM,QAAQ,CAAC;QACxF,OAAO,CAAC,IAAI,CAAC,0CAA0C,OAAO,KAAK,IAAI,IAAI,KAAK,MAAM,OAAO,IAAI,CAAC,CAAC;IACvG,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;IAC1C,CAAC;AACL,CAAC;AAED,MAAM,UAAU,cAAc;IAC1B,OAAO,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC;IACrD,IAAI,CAAC;QACD,EAAE,CAAC,QAAQ,CAAC,+BAA+B,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;QACnE,OAAO,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;IACvD,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,CAAC,IAAI,CAAC,mDAAmD,CAAC,CAAC;IACtE,CAAC;AACL,CAAC"}
@@ -0,0 +1 @@
1
+ export declare function initCommand(adapterInput?: string, dryRun?: boolean): Promise<void>;
@@ -0,0 +1,338 @@
1
+ import fs from "fs";
2
+ import path from "path";
3
+ import { fileURLToPath } from "url";
4
+ import { execSync } from "child_process";
5
+ import { resolveAdapter, isAdapterShimFile, remapFrameworkContent, runAdapterPostInit, } from "../adapters.js";
6
+ import { mergePackageJson, deepCleanProtocols, sanitizeJson, getPackageVersion, getValidatorPath } from "../utils/pkg.js";
7
+ import { updateGitIgnore, ensureDir, writeJsonFile, copyDir, writeTextFile } from "../utils/fs.js";
8
+ import { initializeMemory } from "../utils/memory.js";
9
+ import { checkCommand } from "./check.js";
10
+ const __filename = fileURLToPath(import.meta.url);
11
+ const __dirname = path.dirname(__filename);
12
+ const sourceDir = path.join(__dirname, "../../..");
13
+ const targetDir = process.cwd();
14
+ const FRAMEWORK_VERSION = getPackageVersion();
15
+ const CORE_FILES = [
16
+ ".enderun",
17
+ "mcp.json",
18
+ ".env.example",
19
+ "ENDERUN.md",
20
+ "package.json",
21
+ "tsconfig.json",
22
+ "panda.config.ts",
23
+ "vitest.config.ts",
24
+ "framework-mcp",
25
+ "docs",
26
+ "eslint.config.js",
27
+ ];
28
+ const FRAMEWORK_SUBDIRS = [
29
+ "agents",
30
+ "agents/schema",
31
+ "skills",
32
+ "knowledge",
33
+ "benchmarks",
34
+ "monitoring",
35
+ "logs",
36
+ "messages",
37
+ "memory-graph",
38
+ "memory-graph/agent-contexts",
39
+ "queue",
40
+ "queue/pending",
41
+ "queue/processing",
42
+ "queue/completed",
43
+ "queue/failed",
44
+ "queue/pipelines",
45
+ ];
46
+ const allAgents = [
47
+ {
48
+ name: "manager",
49
+ displayName: "Orchestration & Governance (Team-Lead)",
50
+ description: "CTO, Lead Architect, and Orchestrator for Agent Enderun.",
51
+ instructions: "You are the manager agent. Orchestrate workspace tasks, manage DAG dependency graphs, handle phase transitions, and enforce architectural standards.\n\nšŸ›‘ NON-NEGOTIABLE CORE RULES:\n- Single Point of Authority: You are the sole entry point. No specialist acts without your briefing.\n- Traceability: Every action MUST inherit the active Trace ID.\n- Memory Discipline: MUST update PROJECT_MEMORY.md and log actions at the end of EVERY turn."
52
+ },
53
+ {
54
+ name: "backend",
55
+ displayName: "Domain Logic & Databases Specialist",
56
+ description: "Responsible for core business logic, database migrations, security standards, API contracts, and server architecture.",
57
+ instructions: "You are the backend agent. Build secure, high-performance, and consistent server architecture.\n\nšŸ›‘ NON-NEGOTIABLE CORE RULES:\n- No UI: Never implement UI or frontend logic.\n- Contract-First: Define shared contracts/branded types BEFORE any consumer code.\n- Branded Types Law: ALL IDs must use branded types (e.g., UserID). Plain strings are forbidden.\n- Zero Mock Policy: Use real endpoints/contracts only.\n- Surgical Edits: Use replace_text for all code changes."
58
+ },
59
+ {
60
+ name: "frontend",
61
+ displayName: "Fluid Responsive UI Specialist",
62
+ description: "Builds responsive fluid user interfaces, manages styling tokens with Panda CSS, and implements state machines.",
63
+ instructions: "You are the frontend agent. Build original, high-performance, and responsive user interfaces.\n\nšŸ›‘ NON-NEGOTIABLE CORE RULES:\n- Responsive-First: Mobile-First (320px) is mandatory. Fixed-width is forbidden.\n- Zero UI Library Policy: No shadcn/ui, MUI, etc. Build everything with Panda CSS.\n- Zero Mock Policy: Use real endpoints/contracts only.\n- Contract-First: Use branded types from apps/backend/src/types.\n- No Native Alerts: Use integrated Toaster/Modal components."
64
+ },
65
+ {
66
+ name: "quality",
67
+ displayName: "Automated Testing & Quality Specialist",
68
+ description: "Verifies test coverage, audits compliance with the constitution, conducts AST scanning, and verifies CI/CD status.",
69
+ instructions: "You are the quality agent. Ensure no code is merged or deployed without meeting standards.\n\nšŸ›‘ NON-NEGOTIABLE CORE RULES:\n- Final Gate: No code merges or deploys proceed without quality sign-off.\n- Verification-First: Audit lint, typecheck, contract drift, and branded types before sign-off.\n- Never Implement: Audit and assess only. Never write application features.\n- Zero Mock Policy: Integration tests must use real/service-compatible backends.\n- Coverage Gate: Reject approvals if coverage falls below >80% threshold in core."
70
+ },
71
+ {
72
+ name: "database",
73
+ displayName: "Database Migrations & Tuning Specialist",
74
+ description: "Designs SQL schemas, manages migration scripts via Kysely, optimizes queries, indexes, and seeding logic.",
75
+ instructions: "You are the database agent. Build secure, optimized, and scalable data layers.\n\nšŸ›‘ NON-NEGOTIABLE CORE RULES:\n- Self-Contained DB: Every backend application MUST manage its own schema/migrations/seeds in its own src/database/ directory.\n- Contract-First: All schemas MUST be derived from branded types.\n- Kysely Standard: Use Kysely for application queries. Raw SQL is forbidden.\n- Zero Mock Policy: Realistic, contract-aware seed data only.\n- Surgical Edits: Use replace_text for all schema/migration changes."
76
+ },
77
+ {
78
+ name: "devops",
79
+ displayName: "Infrastructure & CI/CD Specialist",
80
+ description: "Handles deployment pipelines, environment variables, system containerization, logging & telemetry integrations.",
81
+ instructions: "You are the devops agent. Ensure reliable execution in every environment with strict quality gates.\n\nšŸ›‘ NON-NEGOTIABLE CORE RULES:\n- Gate Approvals: NEVER deploy to production without quality gate approval.\n- No Docker Policy: Prefer native Node.js unless explicitly overridden by manager.\n- Environment Parity: Identical configs across dev/staging/prod (except secrets).\n- Secrets Security: NEVER hardcode secrets. Use environment variables.\n- Rollback First: Deployment is BLOCKED if no documented rollback plan exists."
82
+ },
83
+ {
84
+ name: "explorer",
85
+ displayName: "Codebase Discovery Specialist",
86
+ description: "Maps code dependencies, performs project scans, identifies architectural gaps, and supports legacy onboarding.",
87
+ instructions: "You are the explorer agent. Map project structure and provide deep context to other agents.\n\nšŸ›‘ NON-NEGOTIABLE CORE RULES:\n- Read-Only: Never write production code. Only discover, map, and report.\n- Search-First: Always use search_codebase before reading large files.\n- Surgical Discovery: Focus on entry points and core domain logic.\n- Zero Mock Policy: Analyze real system state only.\n- Traceability: All findings must be linked to a Trace ID."
88
+ },
89
+ {
90
+ name: "git",
91
+ displayName: "Version Control Specialist",
92
+ description: "Manages commit histories, branches, Trace ID alignment, semantic tagging, and merge conflicts.",
93
+ instructions: "You are the git agent. Ensure a clean, atomic, and traceable repository history.\n\nšŸ›‘ NON-NEGOTIABLE CORE RULES:\n- Trace ID Tagging: EVERY commit must include the active Trace ID in the message.\n- Atomic Integrity: Every commit must represent exactly one logical change.\n- Health-First: Never commit code that fails build or basic tests.\n- No Push: Do not run git push without explicit USER approval.\n- No Force: Never use git push --force on public branches."
94
+ },
95
+ {
96
+ name: "mobile",
97
+ displayName: "Mobile App Specialist",
98
+ description: "Develops cross-platform mobile apps using React Native and Expo with clean component states.",
99
+ instructions: "You are the mobile agent. Build high-performance, responsive mobile apps (React Native/Expo).\n\nšŸ›‘ NON-NEGOTIABLE CORE RULES:\n- Zero UI Library: Same discipline as web. Build UI from scratch.\n- Contract-First: Use shared types from apps/backend/src/types.\n- Responsive-First: Mobile-First approach is mandatory.\n- Safe Area: Handle iOS/Android safe area insets on every screen.\n- Performance: Target 60 FPS."
100
+ },
101
+ {
102
+ name: "native",
103
+ displayName: "Native OS Integration Specialist",
104
+ description: "Builds lightweight desktop wrappers and system integrations using Tauri or Electron.",
105
+ instructions: "You are the native agent. Build secure, efficient desktop apps (Tauri/Electron).\n\nšŸ›‘ NON-NEGOTIABLE CORE RULES:\n- Security-First: No remote code execution. Mandatory sandboxing and strict CSP.\n- Secure Storage: Use Keychain/Credential Manager for sensitive data.\n- IPC Contract: All communication between frontend and native MUST be typed.\n- Contract-First: Define IPC and data contracts before implementation.\n- Surgical Edits: Use replace_text for all code changes."
106
+ },
107
+ {
108
+ name: "security",
109
+ displayName: "Security & Cryptography Specialist",
110
+ description: "Enforces authentication flows, CSP policies, credential rotation, RLS constraints, and cryptographic safety.",
111
+ instructions: "You are the security agent. Ensure all endpoints, database connections, and authentication flows satisfy strict enterprise compliance policies.\n\nšŸ›‘ NON-NEGOTIABLE CORE RULES:\n- Sandboxed Security First: Enforce Row Level Security (RLS) on all database tables.\n- Credential Rotation Policy: Credentials, keys, and tokens must never be hardcoded. Use vault/env variables.\n- CSP & CORS Strictness: Never open wildcards (*) for CORS or CSP policies.\n- Surgical Edits: Use replace_text for all security patches."
112
+ },
113
+ {
114
+ name: "analyst",
115
+ displayName: "Contract Verification & Business Analyst",
116
+ description: "Validates business specifications, tests database contract integrity, and audits constitutional compliance.",
117
+ instructions: "You are the analyst agent. Independently verify compliance with contracts and specifications between frontend, backend, and the constitution.\n\nšŸ›‘ NON-NEGOTIABLE CORE RULES:\n- Independent Stance: Act as an objective verification gate.\n- Contract-First Law: Ensure contract.version.json perfectly matches types.\n- Escalation Priority: Report all contract drift to manager immediately.\n- Surgical Edits: Use replace_text for all document updates."
118
+ }
119
+ ];
120
+ function scaffoldCoreAgents(agentsBaseDir, dryRun) {
121
+ ensureDir(agentsBaseDir, dryRun);
122
+ const agentSchemaDir = path.join(agentsBaseDir, "schema");
123
+ ensureDir(agentSchemaDir, dryRun);
124
+ const agentArmySchema = {
125
+ "$schema": "http://json-schema.org/draft-07/schema#",
126
+ "title": "Agent Lifecycle (AL) Agent Army Schema",
127
+ "description": "Defines the required fields for an AL-compliant agent definition (e.g. agent.json or agent.md YAML frontmatter).",
128
+ "type": "object",
129
+ "required": ["name", "description", "role", "capability", "stateMachine", "tags"],
130
+ "properties": {
131
+ "name": { "type": "string" },
132
+ "description": { "type": "string" },
133
+ "role": { "type": "string" },
134
+ "capability": { "type": "integer", "minimum": 1, "maximum": 10 },
135
+ "stateMachine": {
136
+ "type": "object",
137
+ "required": ["schemaRef"],
138
+ "properties": { "schemaRef": { "type": "string" } }
139
+ },
140
+ "tags": { "type": "array", "items": { "type": "string" }, "minItems": 1 },
141
+ "permittedTools": { "type": "array", "items": { "type": "string" } },
142
+ "hidden": { "type": "boolean" },
143
+ "displayName": { "type": "string" },
144
+ "customAgentSpec": {
145
+ "type": "object",
146
+ "properties": {
147
+ "customAgent": {
148
+ "type": "object",
149
+ "properties": {
150
+ "systemPromptSections": {
151
+ "type": "array",
152
+ "items": {
153
+ "type": "object",
154
+ "properties": { "title": { "type": "string" }, "content": { "type": "string" } },
155
+ "required": ["title", "content"]
156
+ }
157
+ },
158
+ "toolNames": { "type": "array", "items": { "type": "string" } }
159
+ },
160
+ "required": ["systemPromptSections", "toolNames"]
161
+ }
162
+ },
163
+ "required": ["customAgent"]
164
+ }
165
+ }
166
+ };
167
+ writeJsonFile(path.join(agentsBaseDir, "agent_army_schema.json"), agentArmySchema, dryRun);
168
+ const agentLifecycleSchema = {
169
+ "$schema": "http://json-schema.org/draft-07/schema#",
170
+ "title": "Agent Lifecycle State Machine Schema",
171
+ "type": "object",
172
+ "required": ["initialState", "states"],
173
+ "properties": {
174
+ "initialState": { "type": "string" },
175
+ "states": {
176
+ "type": "object",
177
+ "patternProperties": {
178
+ "^[a-zA-Z0-9_]+$": {
179
+ "type": "object",
180
+ "properties": {
181
+ "on": { "type": "object", "patternProperties": { "^[a-zA-Z0-9_]+$": { "type": "string" } } },
182
+ "actions": { "type": "array", "items": { "type": "string" } }
183
+ },
184
+ "required": ["on"]
185
+ }
186
+ }
187
+ }
188
+ }
189
+ };
190
+ writeJsonFile(path.join(agentSchemaDir, "agent-lifecycle-schema.json"), agentLifecycleSchema, dryRun);
191
+ for (const ag of allAgents) {
192
+ const payload = {
193
+ name: ag.name,
194
+ displayName: ag.displayName,
195
+ description: ag.description,
196
+ role: ag.displayName.split(" (")[0],
197
+ capability: 9,
198
+ hidden: false,
199
+ stateMachine: { schemaRef: "../schema/agent-lifecycle-schema.json" },
200
+ tags: ["core"],
201
+ customAgentSpec: {
202
+ customAgent: {
203
+ systemPromptSections: [{ title: "Instructions", content: ag.instructions }],
204
+ toolNames: ["view_file", "replace_file_content", "write_to_file", "run_command", "grep_search", "list_dir"]
205
+ }
206
+ }
207
+ };
208
+ writeJsonFile(path.join(agentsBaseDir, `${ag.name}.json`), payload, dryRun);
209
+ }
210
+ console.warn(`āœ… Scaffolding ${allAgents.length} core agents under ${path.relative(targetDir, agentsBaseDir)}/...`);
211
+ }
212
+ function buildDirsToCreate(adapter) {
213
+ const dirs = [
214
+ adapter.frameworkDir,
215
+ ...FRAMEWORK_SUBDIRS.map((d) => `${adapter.frameworkDir}/${d}`),
216
+ "apps/web", "apps/backend", "docs", "framework-mcp", "tests",
217
+ ];
218
+ if (adapter.nestedDirs) {
219
+ for (const nested of adapter.nestedDirs)
220
+ dirs.push(`${adapter.frameworkDir}/${nested}`);
221
+ }
222
+ if (adapter.shimFile.includes("/"))
223
+ dirs.push(path.dirname(adapter.shimFile));
224
+ return [...new Set(dirs)];
225
+ }
226
+ export async function initCommand(adapterInput, dryRun = false) {
227
+ const adapter = resolveAdapter(adapterInput);
228
+ const { frameworkDir, shimFile, templateDir } = adapter;
229
+ const targetFrameworkDir = path.join(targetDir, frameworkDir);
230
+ if (dryRun)
231
+ console.warn("\nšŸ” DRY RUN MODE ACTIVE\n");
232
+ console.warn(`šŸš€ Installing Agent Enderun (Adapter: ${adapter.id} → ${frameworkDir}/)...`);
233
+ ensureDir(targetFrameworkDir, dryRun);
234
+ for (const dir of buildDirsToCreate(adapter))
235
+ ensureDir(path.join(targetDir, dir), dryRun);
236
+ const filesToProcess = [...CORE_FILES, shimFile].filter(f => CORE_FILES.includes(f) || f === shimFile || fs.existsSync(path.join(sourceDir, f)));
237
+ ensureDir(path.join(targetDir, "apps/backend"), dryRun);
238
+ const initContractPath = path.join(targetDir, "apps/backend/contract.version.json");
239
+ if (!fs.existsSync(initContractPath)) {
240
+ writeJsonFile(initContractPath, { contract_hash: "initial_hash_placeholder", last_updated: new Date().toISOString() }, dryRun);
241
+ }
242
+ let targetPkg = {};
243
+ try {
244
+ const targetPkgPath = path.join(targetDir, "package.json");
245
+ if (fs.existsSync(targetPkgPath))
246
+ targetPkg = JSON.parse(fs.readFileSync(targetPkgPath, "utf8"));
247
+ }
248
+ catch { /* ignore */ }
249
+ const pkgName = typeof targetPkg.name === "string" ? targetPkg.name : "";
250
+ const targetScope = pkgName ? (pkgName.startsWith("@") ? pkgName.split("/")[0] : `@${pkgName}`) : `@${path.basename(targetDir)}`;
251
+ for (const item of filesToProcess) {
252
+ const src = path.join(sourceDir, item);
253
+ let dest = path.join(targetDir, item);
254
+ const isDevMode = src === dest;
255
+ if (item === "framework-mcp" && fs.existsSync(dest) && !isDevMode) {
256
+ if (!dryRun)
257
+ fs.rmSync(dest, { recursive: true, force: true });
258
+ }
259
+ if (item === templateDir || item.startsWith(`${templateDir}/`)) {
260
+ let relativePath = item.replace(templateDir, "").replace(/^\//, "");
261
+ if (relativePath.startsWith("agents")) {
262
+ if (adapter.id === "antigravity")
263
+ relativePath = relativePath.replace("agents", "skills");
264
+ else if (adapter.id === "grok")
265
+ relativePath = relativePath.replace("agents", "plugins");
266
+ }
267
+ else if (relativePath.startsWith("knowledge") && adapter.id === "antigravity") {
268
+ relativePath = relativePath.replace("knowledge", "rules");
269
+ }
270
+ dest = path.join(targetDir, frameworkDir, relativePath);
271
+ }
272
+ if (isDevMode && !isAdapterShimFile(item) && item !== "package.json")
273
+ continue;
274
+ if (item === "ENDERUN.md")
275
+ dest = path.join(targetFrameworkDir, "ENDERUN.md");
276
+ if (isAdapterShimFile(item))
277
+ dest = path.join(targetDir, item);
278
+ if (!fs.existsSync(src))
279
+ continue;
280
+ if (fs.lstatSync(src).isDirectory()) {
281
+ const skipFiles = item === templateDir ? ["logs", "PROJECT_MEMORY.md", "PROJECT_MEMORY.lock"] : [];
282
+ copyDir(src, dest, new Set(skipFiles), ["docs", templateDir].includes(item), frameworkDir, targetScope, sanitizeJson, adapter.id, dryRun);
283
+ }
284
+ else {
285
+ if (item === "package.json")
286
+ continue;
287
+ if (fs.existsSync(dest) && !isAdapterShimFile(item))
288
+ continue;
289
+ const ext = path.extname(item);
290
+ if ([".md", ".json", ".js", ".ts", ".txt", ""].includes(ext)) {
291
+ let content = fs.readFileSync(src, "utf8");
292
+ content = remapFrameworkContent(content, frameworkDir, adapter.id);
293
+ if (ext === ".json") {
294
+ try {
295
+ const json = JSON.parse(content);
296
+ content = JSON.stringify(sanitizeJson(json, targetScope), null, 2);
297
+ content = remapFrameworkContent(content, frameworkDir, adapter.id);
298
+ }
299
+ catch {
300
+ content = content.replace(/workspace:[^"'\s]*/g, "*");
301
+ }
302
+ }
303
+ writeTextFile(dest, content, dryRun);
304
+ }
305
+ else if (!dryRun) {
306
+ fs.copyFileSync(src, dest);
307
+ }
308
+ }
309
+ }
310
+ if (!dryRun)
311
+ mergePackageJson(path.join(targetDir, "package.json"), path.join(sourceDir, "package.json"));
312
+ updateGitIgnore(path.join(targetDir, ".gitignore"), frameworkDir, dryRun);
313
+ initializeMemory(path.join(targetFrameworkDir, "memory/PROJECT_MEMORY.md"), frameworkDir, dryRun);
314
+ if (!dryRun)
315
+ deepCleanProtocols(targetDir, targetScope);
316
+ // Scaffold core agents under the central framework directory
317
+ scaffoldCoreAgents(path.join(targetFrameworkDir, "agents"), dryRun);
318
+ if (!fs.existsSync(path.join(targetDir, ".git")) && !dryRun) {
319
+ try {
320
+ execSync("git init", { cwd: targetDir, stdio: "ignore" });
321
+ }
322
+ catch { /* ignore */ }
323
+ }
324
+ console.warn(`\nšŸ› ļø Running ${adapter.id} adapter configuration...`);
325
+ if (!dryRun)
326
+ runAdapterPostInit(adapter, targetDir);
327
+ console.warn(`\n✨ Framework scaffolded! (v${FRAMEWORK_VERSION})`);
328
+ if (!dryRun && process.env.ENDERUN_SKIP_INSTALL !== "1") {
329
+ try {
330
+ console.warn("\nšŸ” Running health check...");
331
+ checkCommand();
332
+ const validatorPath = getValidatorPath();
333
+ execSync(`node "${validatorPath}"`, { stdio: "inherit" });
334
+ }
335
+ catch { /* ignore validation report */ }
336
+ }
337
+ }
338
+ //# sourceMappingURL=init.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../../../src/cli/commands/init.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function updateKnowledgeBaseCommand(topic: string, content: string): void;
2
+ export declare function searchKnowledgeBaseCommand(query: string): void;
@@ -0,0 +1,43 @@
1
+ import fs from "fs";
2
+ import path from "path";
3
+ import { getFrameworkDir } from "../utils/memory.js";
4
+ const targetDir = process.cwd(); // Assuming targetDir is process.cwd() in the CLI context
5
+ export function updateKnowledgeBaseCommand(topic, content) {
6
+ if (!topic || !content) {
7
+ console.error("āŒ Usage: agent-enderun update_knowledge_base <topic> <content>");
8
+ return;
9
+ }
10
+ const frameworkDir = getFrameworkDir();
11
+ const kbDir = path.join(targetDir, frameworkDir, "knowledge");
12
+ if (!fs.existsSync(kbDir))
13
+ fs.mkdirSync(kbDir, { recursive: true });
14
+ const fileName = topic.replace(/[^a-z0-9]/gi, "_").toLowerCase() + ".md";
15
+ fs.writeFileSync(path.join(kbDir, fileName), content);
16
+ console.warn(`āœ… Knowledge base updated: ${topic}`);
17
+ }
18
+ export function searchKnowledgeBaseCommand(query) {
19
+ if (!query) {
20
+ console.error("āŒ Usage: agent-enderun search_knowledge_base <query>");
21
+ return;
22
+ }
23
+ const frameworkDir = getFrameworkDir();
24
+ const kbDir = path.join(targetDir, frameworkDir, "knowledge");
25
+ if (!fs.existsSync(kbDir)) {
26
+ console.warn("ā„¹ļø Knowledge base is empty.");
27
+ return;
28
+ }
29
+ const files = fs.readdirSync(kbDir).filter(f => f.endsWith(".md"));
30
+ let found = false;
31
+ for (const file of files) {
32
+ const content = fs.readFileSync(path.join(kbDir, file), "utf-8");
33
+ if (content.toLowerCase().includes(query.toLowerCase()) || file.toLowerCase().includes(query.toLowerCase())) {
34
+ console.warn(`
35
+ ### ${file.replace(".md", "")}
36
+ ${content.slice(0, 300)}...`);
37
+ found = true;
38
+ }
39
+ }
40
+ if (!found)
41
+ console.warn("ā„¹ļø No matching entries found.");
42
+ }
43
+ //# sourceMappingURL=knowledge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"knowledge.js","sourceRoot":"","sources":["../../../../src/cli/commands/knowledge.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,yDAAyD;AAE1F,MAAM,UAAU,0BAA0B,CAAC,KAAa,EAAE,OAAe;IACrE,IAAI,CAAC,KAAK,IAAI,CAAC,OAAO,EAAE,CAAC;QACrB,OAAO,CAAC,KAAK,CAAC,gEAAgE,CAAC,CAAC;QAChF,OAAO;IACX,CAAC;IACD,MAAM,YAAY,GAAG,eAAe,EAAE,CAAC;IACvC,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,EAAE,WAAW,CAAC,CAAC;IAC9D,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC;QAAE,EAAE,CAAC,SAAS,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACpE,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC,WAAW,EAAE,GAAG,KAAK,CAAC;IACzE,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,EAAE,OAAO,CAAC,CAAC;IACtD,OAAO,CAAC,IAAI,CAAC,6BAA6B,KAAK,EAAE,CAAC,CAAC;AACvD,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,KAAa;IACpD,IAAI,CAAC,KAAK,EAAE,CAAC;QACT,OAAO,CAAC,KAAK,CAAC,sDAAsD,CAAC,CAAC;QACtE,OAAO;IACX,CAAC;IACD,MAAM,YAAY,GAAG,eAAe,EAAE,CAAC;IACvC,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,EAAE,WAAW,CAAC,CAAC;IAC9D,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;QAC5C,OAAO;IACX,CAAC;IACD,MAAM,KAAK,GAAG,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;IACnE,IAAI,KAAK,GAAG,KAAK,CAAC;IAClB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACvB,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC;QACjE,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;YAC1G,OAAO,CAAC,IAAI,CAAC;MACnB,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;EAC3B,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;YAClB,KAAK,GAAG,IAAI,CAAC;QACjB,CAAC;IACL,CAAC;IACD,IAAI,CAAC,KAAK;QAAE,OAAO,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;AAC9D,CAAC"}