agent-enderun 1.1.2 → 1.1.4

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 (533) hide show
  1. package/{.enderun/ENDERUN.md → ENDERUN.md} +25 -25
  2. package/README.md +10 -6
  3. package/bin/compile.js +13 -14
  4. package/bin/enderun-dashboard.js +866 -0
  5. package/bin/generate-cursor-rules.js +78 -0
  6. package/bin/test-init-run.js +37 -26
  7. package/bin/validate-agent-army.js +65 -67
  8. package/bin/watch-memory.js +54 -0
  9. package/dist/framework-mcp/src/index.js +1 -1
  10. package/dist/framework-mcp/src/tools/control_plane/locking.d.ts +15 -0
  11. package/dist/framework-mcp/src/tools/control_plane/locking.js +65 -0
  12. package/dist/framework-mcp/src/tools/control_plane/locking.js.map +1 -0
  13. package/dist/framework-mcp/src/tools/control_plane/registry.d.ts +12 -0
  14. package/dist/framework-mcp/src/tools/control_plane/registry.js +35 -0
  15. package/dist/framework-mcp/src/tools/control_plane/registry.js.map +1 -0
  16. package/dist/framework-mcp/src/tools/definitions.js +46 -7
  17. package/dist/framework-mcp/src/tools/definitions.js.map +1 -1
  18. package/dist/framework-mcp/src/tools/file_system/write_file.js +16 -2
  19. package/dist/framework-mcp/src/tools/file_system/write_file.js.map +1 -1
  20. package/dist/framework-mcp/src/tools/index.d.ts +1 -1
  21. package/dist/framework-mcp/src/tools/index.js +5 -0
  22. package/dist/framework-mcp/src/tools/index.js.map +1 -1
  23. package/dist/framework-mcp/src/tools/messaging/send_message.d.ts +1 -1
  24. package/dist/framework-mcp/src/tools/messaging/send_message.js +2 -4
  25. package/dist/framework-mcp/src/tools/messaging/send_message.js.map +1 -1
  26. package/dist/framework-mcp/src/utils/metrics.d.ts +10 -0
  27. package/dist/framework-mcp/src/utils/metrics.js +39 -0
  28. package/dist/framework-mcp/src/utils/metrics.js.map +1 -0
  29. package/dist/framework-mcp/src/utils/security.js +7 -3
  30. package/dist/framework-mcp/src/utils/security.js.map +1 -1
  31. package/dist/src/cli/adapters/types.d.ts +14 -0
  32. package/dist/src/cli/adapters/types.js +2 -0
  33. package/dist/src/cli/adapters/types.js.map +1 -0
  34. package/dist/src/cli/adapters.d.ts +4 -22
  35. package/dist/src/cli/adapters.js +123 -141
  36. package/dist/src/cli/adapters.js.map +1 -1
  37. package/dist/src/cli/commands/check.d.ts +0 -5
  38. package/dist/src/cli/commands/check.js +64 -76
  39. package/dist/src/cli/commands/check.js.map +1 -1
  40. package/dist/src/cli/commands/init.d.ts +1 -1
  41. package/dist/src/cli/commands/init.js +154 -319
  42. package/dist/src/cli/commands/init.js.map +1 -1
  43. package/dist/src/cli/commands/log.d.ts +1 -0
  44. package/dist/src/cli/commands/log.js.map +1 -1
  45. package/dist/src/cli/commands/memory.js +2 -69
  46. package/dist/src/cli/commands/memory.js.map +1 -1
  47. package/dist/src/cli/commands/orchestrate.d.ts +19 -9
  48. package/dist/src/cli/commands/orchestrate.js +56 -77
  49. package/dist/src/cli/commands/orchestrate.js.map +1 -1
  50. package/dist/src/cli/index.js +112 -30
  51. package/dist/src/cli/index.js.map +1 -1
  52. package/dist/src/cli/utils/app.d.ts +1 -2
  53. package/dist/src/cli/utils/app.js +2 -2
  54. package/dist/src/cli/utils/app.js.map +1 -1
  55. package/dist/src/cli/utils/config-schema.d.ts +139 -0
  56. package/dist/src/cli/utils/config-schema.js +43 -0
  57. package/dist/src/cli/utils/config-schema.js.map +1 -0
  58. package/dist/src/cli/utils/fs.d.ts +2 -4
  59. package/dist/src/cli/utils/fs.js +9 -26
  60. package/dist/src/cli/utils/fs.js.map +1 -1
  61. package/dist/src/cli/utils/memory.d.ts +4 -3
  62. package/dist/src/cli/utils/memory.js +135 -116
  63. package/dist/src/cli/utils/memory.js.map +1 -1
  64. package/dist/src/cli/utils/pkg.js +4 -4
  65. package/dist/src/cli/utils/pkg.js.map +1 -1
  66. package/dist/src/cli/utils/ui.d.ts +30 -0
  67. package/dist/src/cli/utils/ui.js +56 -0
  68. package/dist/src/cli/utils/ui.js.map +1 -0
  69. package/dist/src/modules/adapters/antigravity-cli.d.ts +3 -0
  70. package/dist/src/modules/adapters/antigravity-cli.js +21 -0
  71. package/dist/src/modules/adapters/antigravity-cli.js.map +1 -0
  72. package/dist/src/modules/adapters/claude.d.ts +3 -0
  73. package/dist/src/modules/adapters/claude.js +36 -0
  74. package/dist/src/modules/adapters/claude.js.map +1 -0
  75. package/dist/src/modules/adapters/codex.d.ts +3 -0
  76. package/dist/src/modules/adapters/codex.js +20 -0
  77. package/dist/src/modules/adapters/codex.js.map +1 -0
  78. package/dist/src/modules/adapters/cursor.d.ts +3 -0
  79. package/dist/src/modules/adapters/cursor.js +20 -0
  80. package/dist/src/modules/adapters/cursor.js.map +1 -0
  81. package/dist/src/modules/adapters/gemini.d.ts +3 -0
  82. package/dist/src/modules/adapters/gemini.js +23 -0
  83. package/dist/src/modules/adapters/gemini.js.map +1 -0
  84. package/dist/src/modules/adapters/grok.d.ts +3 -0
  85. package/dist/src/modules/adapters/grok.js +18 -0
  86. package/dist/src/modules/adapters/grok.js.map +1 -0
  87. package/dist/src/modules/adapters/shared.d.ts +1 -0
  88. package/dist/src/modules/adapters/shared.js +79 -0
  89. package/dist/src/modules/adapters/shared.js.map +1 -0
  90. package/dist/src/modules/adapters/types.d.ts +14 -0
  91. package/dist/src/modules/adapters/types.js +2 -0
  92. package/dist/src/modules/adapters/types.js.map +1 -0
  93. package/dist/src/modules/agents/definitions.d.ts +13 -0
  94. package/dist/src/modules/agents/definitions.js +169 -0
  95. package/dist/src/modules/agents/definitions.js.map +1 -0
  96. package/dist/src/modules/skills/definitions.d.ts +31 -0
  97. package/dist/src/modules/skills/definitions.js +32 -0
  98. package/dist/src/modules/skills/definitions.js.map +1 -0
  99. package/dist/src/shared/fs.d.ts +3 -0
  100. package/dist/src/shared/fs.js +24 -0
  101. package/dist/src/shared/fs.js.map +1 -0
  102. package/eslint.config.js +1 -0
  103. package/framework-mcp/dist/index.js +1 -1
  104. package/framework-mcp/dist/tools/control_plane/locking.js +64 -0
  105. package/framework-mcp/dist/tools/control_plane/registry.js +34 -0
  106. package/framework-mcp/dist/tools/definitions.js +49 -8
  107. package/framework-mcp/dist/tools/file_system/read_file.js +20 -0
  108. package/framework-mcp/dist/tools/file_system/write_file.js +16 -2
  109. package/framework-mcp/dist/tools/index.js +5 -0
  110. package/framework-mcp/dist/tools/messaging/send_message.js +36 -15
  111. package/framework-mcp/dist/utils/metrics.js +38 -0
  112. package/framework-mcp/dist/utils/security.js +7 -3
  113. package/framework-mcp/package.json +1 -1
  114. package/framework-mcp/src/index.ts +1 -1
  115. package/framework-mcp/src/tools/control_plane/locking.ts +77 -0
  116. package/framework-mcp/src/tools/control_plane/registry.ts +44 -0
  117. package/framework-mcp/src/tools/definitions.ts +46 -7
  118. package/framework-mcp/src/tools/file_system/write_file.ts +19 -2
  119. package/framework-mcp/src/tools/index.ts +6 -1
  120. package/framework-mcp/src/tools/messaging/send_message.ts +2 -3
  121. package/framework-mcp/src/utils/metrics.ts +53 -0
  122. package/framework-mcp/src/utils/security.ts +8 -3
  123. package/framework-mcp/tests/tools/file_system/file_system_tools.test.ts +164 -0
  124. package/framework-mcp/tsconfig.json +4 -2
  125. package/package.json +12 -11
  126. package/src/cli/adapters/types.ts +16 -0
  127. package/src/cli/adapters.ts +130 -156
  128. package/src/cli/commands/check.ts +61 -77
  129. package/src/cli/commands/init.ts +163 -312
  130. package/src/cli/commands/log.ts +1 -1
  131. package/src/cli/commands/memory.ts +3 -80
  132. package/src/cli/commands/orchestrate.ts +76 -90
  133. package/src/cli/index.ts +121 -29
  134. package/src/cli/utils/app.ts +3 -3
  135. package/src/cli/utils/config-schema.ts +48 -0
  136. package/src/cli/utils/fs.ts +10 -27
  137. package/src/cli/utils/memory.ts +143 -112
  138. package/src/cli/utils/pkg.ts +4 -4
  139. package/src/cli/utils/ui.ts +63 -0
  140. package/src/modules/adapters/antigravity-cli.ts +25 -0
  141. package/src/modules/adapters/claude.ts +36 -0
  142. package/src/modules/adapters/codex.ts +22 -0
  143. package/src/modules/adapters/cursor.ts +22 -0
  144. package/src/modules/adapters/gemini.ts +27 -0
  145. package/src/modules/adapters/grok.ts +20 -0
  146. package/src/modules/adapters/shared.ts +90 -0
  147. package/src/modules/adapters/types.ts +16 -0
  148. package/src/modules/agents/definitions.ts +182 -0
  149. package/src/modules/skills/definitions.ts +32 -0
  150. package/src/shared/fs.ts +25 -0
  151. package/.enderun/BRAIN_DASHBOARD.md +0 -46
  152. package/.enderun/STATUS.md +0 -61
  153. package/.enderun/agents/agent_army_schema.json +0 -101
  154. package/.enderun/agents/analyst.json +0 -32
  155. package/.enderun/agents/backend.json +0 -32
  156. package/.enderun/agents/database.json +0 -32
  157. package/.enderun/agents/devops.json +0 -32
  158. package/.enderun/agents/explorer.json +0 -32
  159. package/.enderun/agents/frontend.json +0 -32
  160. package/.enderun/agents/git.json +0 -32
  161. package/.enderun/agents/manager.json +0 -32
  162. package/.enderun/agents/mobile.json +0 -32
  163. package/.enderun/agents/native.json +0 -32
  164. package/.enderun/agents/quality.json +0 -32
  165. package/.enderun/agents/schema/agent-lifecycle-schema.json +0 -41
  166. package/.enderun/agents/security.json +0 -32
  167. package/.enderun/benchmarks/.gitkeep +0 -0
  168. package/.enderun/cli-commands.json +0 -76
  169. package/.enderun/config.json +0 -13
  170. package/.enderun/knowledge/ARCHITECTURE.md +0 -1
  171. package/.enderun/knowledge/SECURITY.md +0 -1
  172. package/.enderun/knowledge/SHIM_TEMPLATE.md +0 -36
  173. package/.enderun/knowledge/analyst_reference_guide.md +0 -31
  174. package/.enderun/knowledge/async_error_handling.md +0 -27
  175. package/.enderun/knowledge/backend_reference_guide.md +0 -165
  176. package/.enderun/knowledge/blueprint_driven_construction.md +0 -22
  177. package/.enderun/knowledge/context_boundary_rules.md +0 -57
  178. package/.enderun/knowledge/corporate-governance/analyst-contract-integrity-guide.md +0 -92
  179. package/.enderun/knowledge/corporate-governance/audit-logging-standard.md +0 -59
  180. package/.enderun/knowledge/corporate-governance/backend-high-risk-endpoint-guide.md +0 -125
  181. package/.enderun/knowledge/corporate-governance/branded-types-law.md +0 -77
  182. package/.enderun/knowledge/corporate-governance/contract-drift-detection-simulation.md +0 -92
  183. package/.enderun/knowledge/corporate-governance/corporate-governance-playbook.md +0 -89
  184. package/.enderun/knowledge/corporate-governance/corporate-project-kickoff-checklist.md +0 -56
  185. package/.enderun/knowledge/corporate-governance/corporate-project-kickoff-simulation.md +0 -144
  186. package/.enderun/knowledge/corporate-governance/corporate-project-scaffolding-sop.md +0 -103
  187. package/.enderun/knowledge/corporate-governance/domain-error-handling-standard.md +0 -75
  188. package/.enderun/knowledge/corporate-governance/frontend-high-risk-modal-guide.md +0 -211
  189. package/.enderun/knowledge/corporate-governance/governance-baseline-briefing-template.md +0 -54
  190. package/.enderun/knowledge/corporate-governance/high-risk-action-approval-flow-simulation.md +0 -167
  191. package/.enderun/knowledge/corporate-governance/high-risk-action-approval-flow.md +0 -29
  192. package/.enderun/knowledge/corporate-governance/high-risk-actions-managerapproval.md +0 -76
  193. package/.enderun/knowledge/corporate-governance/high-risk-security-modal-hermes-flow.md +0 -49
  194. package/.enderun/knowledge/corporate-governance/manager-first-30-days-guide.md +0 -112
  195. package/.enderun/knowledge/corporate-governance/manager-first-three-briefings.md +0 -79
  196. package/.enderun/knowledge/database_reference_guide.md +0 -38
  197. package/.enderun/knowledge/devops_reference_guide.md +0 -43
  198. package/.enderun/knowledge/documentation_ownership.md +0 -53
  199. package/.enderun/knowledge/eslint-standards.md +0 -63
  200. package/.enderun/knowledge/evaluation_engine.md +0 -26
  201. package/.enderun/knowledge/explorer_reference_guide.md +0 -34
  202. package/.enderun/knowledge/framework_vs_user_project_boundary.md +0 -52
  203. package/.enderun/knowledge/frontend_professionalization_guidelines.md +0 -108
  204. package/.enderun/knowledge/frontend_reference_guide.md +0 -64
  205. package/.enderun/knowledge/git_reference_guide.md +0 -51
  206. package/.enderun/knowledge/hermes_live_test_guidelines.md +0 -90
  207. package/.enderun/knowledge/hermes_protocol.md +0 -59
  208. package/.enderun/knowledge/legacy_onboarding.md +0 -18
  209. package/.enderun/knowledge/lessons-learned.md +0 -14
  210. package/.enderun/knowledge/manager_authority_audit_enforcement.md +0 -104
  211. package/.enderun/knowledge/manager_reference_guide.md +0 -55
  212. package/.enderun/knowledge/mobile_reference_guide.md +0 -35
  213. package/.enderun/knowledge/native_reference_guide.md +0 -34
  214. package/.enderun/knowledge/project_scaffold_guidelines.md +0 -110
  215. package/.enderun/knowledge/quality_reference_guide.md +0 -42
  216. package/.enderun/knowledge/reference_application_guidelines.md +0 -101
  217. package/.enderun/knowledge/responsive_design_standards.md +0 -27
  218. package/.enderun/knowledge/router_logic.md +0 -29
  219. package/.enderun/knowledge/security_reference_guide.md +0 -35
  220. package/.enderun/knowledge/token_economy_and_memory.md +0 -129
  221. package/.enderun/knowledge/zero_ui_library_policy.md +0 -13
  222. package/.enderun/logs/manager.json +0 -52
  223. package/.enderun/mcp_config.json +0 -11
  224. package/.enderun/memory/BUSINESS_CONTEXT.md +0 -17
  225. package/.enderun/memory/DECISIONS.md +0 -24
  226. package/.enderun/memory/LESSONS_LEARNED.md +0 -12
  227. package/.enderun/memory/PATTERNS.md +0 -17
  228. package/.enderun/memory/PROJECT_MEMORY.md +0 -69
  229. package/.enderun/memory-graph/agent-contexts/analyst.json +0 -1
  230. package/.enderun/memory-graph/agent-contexts/backend.json +0 -1
  231. package/.enderun/memory-graph/agent-contexts/devops.json +0 -1
  232. package/.enderun/memory-graph/agent-contexts/explorer.json +0 -1
  233. package/.enderun/memory-graph/agent-contexts/frontend.json +0 -1
  234. package/.enderun/memory-graph/agent-contexts/git.json +0 -1
  235. package/.enderun/memory-graph/agent-contexts/manager.json +0 -1
  236. package/.enderun/memory-graph/agent-contexts/mobile.json +0 -1
  237. package/.enderun/memory-graph/agent-contexts/native.json +0 -1
  238. package/.enderun/memory-graph/agent-contexts/quality.json +0 -1
  239. package/.enderun/memory-graph/agent-contexts/security.json +0 -1
  240. package/.enderun/memory-graph/graph.json +0 -133
  241. package/.enderun/memory-graph/shared-facts.json +0 -46
  242. package/.enderun/monitoring/.gitkeep +0 -0
  243. package/.enderun/observability/AUDIT_LOG.md +0 -9
  244. package/.enderun/observability/METRICS.md +0 -10
  245. package/.enderun/observability/README.md +0 -19
  246. package/.enderun/observability/TRACE_LOG.md +0 -10
  247. package/.enderun/queue/README.md +0 -36
  248. package/.enderun/registry/agents.yaml +0 -69
  249. package/.enderun/skills/agent_handshake.md +0 -37
  250. package/.enderun/skills/multi_agent_coordination.md +0 -64
  251. package/.enderun/skills/subagent_lifecycle.md +0 -48
  252. package/CLAUDE.md +0 -21
  253. package/GEMINI.md +0 -24
  254. package/GROK.md +0 -20
  255. package/agent.md +0 -25
  256. package/dist/.keep +0 -1
  257. package/dist/tests/adapter.test.d.ts +0 -1
  258. package/dist/tests/adapter.test.js +0 -82
  259. package/dist/tests/adapter.test.js.map +0 -1
  260. package/dist/tests/gemini.test.d.ts +0 -1
  261. package/dist/tests/gemini.test.js +0 -39
  262. package/dist/tests/gemini.test.js.map +0 -1
  263. package/dist/tests/initial.test.d.ts +0 -1
  264. package/dist/tests/initial.test.js +0 -7
  265. package/dist/tests/initial.test.js.map +0 -1
  266. package/docs/project_analysis_report.md +0 -69
  267. package/framework-mcp/dist/src/index.js +0 -70
  268. package/framework-mcp/dist/src/tools/definitions.js +0 -112
  269. package/framework-mcp/dist/src/tools/file_system/patch_file.js +0 -18
  270. package/framework-mcp/dist/src/tools/file_system/read_file.js +0 -27
  271. package/framework-mcp/dist/src/tools/file_system/replace_text.js +0 -31
  272. package/framework-mcp/dist/src/tools/file_system/write_file.js +0 -9
  273. package/framework-mcp/dist/src/tools/framework/get_status.js +0 -5
  274. package/framework-mcp/dist/src/tools/framework/orchestrate.js +0 -5
  275. package/framework-mcp/dist/src/tools/framework/update_contract_hash.js +0 -5
  276. package/framework-mcp/dist/src/tools/framework/update_memory.js +0 -8
  277. package/framework-mcp/dist/src/tools/index.js +0 -25
  278. package/framework-mcp/dist/src/tools/messaging/log_action.js +0 -22
  279. package/framework-mcp/dist/src/tools/messaging/send_message.js +0 -46
  280. package/framework-mcp/dist/src/tools/types.js +0 -1
  281. package/framework-mcp/dist/src/utils/cli.js +0 -20
  282. package/framework-mcp/dist/src/utils/security.js +0 -53
  283. package/framework-mcp/dist/tests/tools/file_system/replace_text.test.js +0 -68
  284. package/framework-mcp/node_modules/@types/node/LICENSE +0 -21
  285. package/framework-mcp/node_modules/@types/node/README.md +0 -15
  286. package/framework-mcp/node_modules/@types/node/assert/strict.d.ts +0 -111
  287. package/framework-mcp/node_modules/@types/node/assert.d.ts +0 -1078
  288. package/framework-mcp/node_modules/@types/node/async_hooks.d.ts +0 -603
  289. package/framework-mcp/node_modules/@types/node/buffer.buffer.d.ts +0 -472
  290. package/framework-mcp/node_modules/@types/node/buffer.d.ts +0 -1934
  291. package/framework-mcp/node_modules/@types/node/child_process.d.ts +0 -1476
  292. package/framework-mcp/node_modules/@types/node/cluster.d.ts +0 -578
  293. package/framework-mcp/node_modules/@types/node/compatibility/disposable.d.ts +0 -14
  294. package/framework-mcp/node_modules/@types/node/compatibility/index.d.ts +0 -9
  295. package/framework-mcp/node_modules/@types/node/compatibility/indexable.d.ts +0 -20
  296. package/framework-mcp/node_modules/@types/node/compatibility/iterators.d.ts +0 -20
  297. package/framework-mcp/node_modules/@types/node/console.d.ts +0 -452
  298. package/framework-mcp/node_modules/@types/node/constants.d.ts +0 -21
  299. package/framework-mcp/node_modules/@types/node/crypto.d.ts +0 -4545
  300. package/framework-mcp/node_modules/@types/node/dgram.d.ts +0 -600
  301. package/framework-mcp/node_modules/@types/node/diagnostics_channel.d.ts +0 -578
  302. package/framework-mcp/node_modules/@types/node/dns/promises.d.ts +0 -503
  303. package/framework-mcp/node_modules/@types/node/dns.d.ts +0 -923
  304. package/framework-mcp/node_modules/@types/node/domain.d.ts +0 -170
  305. package/framework-mcp/node_modules/@types/node/events.d.ts +0 -976
  306. package/framework-mcp/node_modules/@types/node/fs/promises.d.ts +0 -1295
  307. package/framework-mcp/node_modules/@types/node/fs.d.ts +0 -4461
  308. package/framework-mcp/node_modules/@types/node/globals.d.ts +0 -172
  309. package/framework-mcp/node_modules/@types/node/globals.typedarray.d.ts +0 -38
  310. package/framework-mcp/node_modules/@types/node/http.d.ts +0 -2089
  311. package/framework-mcp/node_modules/@types/node/http2.d.ts +0 -2721
  312. package/framework-mcp/node_modules/@types/node/https.d.ts +0 -579
  313. package/framework-mcp/node_modules/@types/node/index.d.ts +0 -97
  314. package/framework-mcp/node_modules/@types/node/inspector.d.ts +0 -253
  315. package/framework-mcp/node_modules/@types/node/inspector.generated.d.ts +0 -4052
  316. package/framework-mcp/node_modules/@types/node/module.d.ts +0 -891
  317. package/framework-mcp/node_modules/@types/node/net.d.ts +0 -1076
  318. package/framework-mcp/node_modules/@types/node/os.d.ts +0 -506
  319. package/framework-mcp/node_modules/@types/node/package.json +0 -145
  320. package/framework-mcp/node_modules/@types/node/path.d.ts +0 -200
  321. package/framework-mcp/node_modules/@types/node/perf_hooks.d.ts +0 -968
  322. package/framework-mcp/node_modules/@types/node/process.d.ts +0 -2084
  323. package/framework-mcp/node_modules/@types/node/punycode.d.ts +0 -117
  324. package/framework-mcp/node_modules/@types/node/querystring.d.ts +0 -152
  325. package/framework-mcp/node_modules/@types/node/readline/promises.d.ts +0 -161
  326. package/framework-mcp/node_modules/@types/node/readline.d.ts +0 -594
  327. package/framework-mcp/node_modules/@types/node/repl.d.ts +0 -428
  328. package/framework-mcp/node_modules/@types/node/sea.d.ts +0 -153
  329. package/framework-mcp/node_modules/@types/node/sqlite.d.ts +0 -721
  330. package/framework-mcp/node_modules/@types/node/stream/consumers.d.ts +0 -38
  331. package/framework-mcp/node_modules/@types/node/stream/promises.d.ts +0 -90
  332. package/framework-mcp/node_modules/@types/node/stream/web.d.ts +0 -622
  333. package/framework-mcp/node_modules/@types/node/stream.d.ts +0 -1687
  334. package/framework-mcp/node_modules/@types/node/string_decoder.d.ts +0 -67
  335. package/framework-mcp/node_modules/@types/node/test.d.ts +0 -2163
  336. package/framework-mcp/node_modules/@types/node/timers/promises.d.ts +0 -108
  337. package/framework-mcp/node_modules/@types/node/timers.d.ts +0 -287
  338. package/framework-mcp/node_modules/@types/node/tls.d.ts +0 -1319
  339. package/framework-mcp/node_modules/@types/node/trace_events.d.ts +0 -197
  340. package/framework-mcp/node_modules/@types/node/ts5.6/buffer.buffer.d.ts +0 -468
  341. package/framework-mcp/node_modules/@types/node/ts5.6/globals.typedarray.d.ts +0 -34
  342. package/framework-mcp/node_modules/@types/node/ts5.6/index.d.ts +0 -97
  343. package/framework-mcp/node_modules/@types/node/tty.d.ts +0 -208
  344. package/framework-mcp/node_modules/@types/node/url.d.ts +0 -984
  345. package/framework-mcp/node_modules/@types/node/util.d.ts +0 -2606
  346. package/framework-mcp/node_modules/@types/node/v8.d.ts +0 -920
  347. package/framework-mcp/node_modules/@types/node/vm.d.ts +0 -1000
  348. package/framework-mcp/node_modules/@types/node/wasi.d.ts +0 -181
  349. package/framework-mcp/node_modules/@types/node/web-globals/abortcontroller.d.ts +0 -34
  350. package/framework-mcp/node_modules/@types/node/web-globals/domexception.d.ts +0 -68
  351. package/framework-mcp/node_modules/@types/node/web-globals/events.d.ts +0 -97
  352. package/framework-mcp/node_modules/@types/node/web-globals/fetch.d.ts +0 -55
  353. package/framework-mcp/node_modules/@types/node/web-globals/navigator.d.ts +0 -22
  354. package/framework-mcp/node_modules/@types/node/web-globals/storage.d.ts +0 -24
  355. package/framework-mcp/node_modules/@types/node/worker_threads.d.ts +0 -784
  356. package/framework-mcp/node_modules/@types/node/zlib.d.ts +0 -747
  357. package/framework-mcp/node_modules/typescript/LICENSE.txt +0 -55
  358. package/framework-mcp/node_modules/typescript/README.md +0 -50
  359. package/framework-mcp/node_modules/typescript/SECURITY.md +0 -41
  360. package/framework-mcp/node_modules/typescript/ThirdPartyNoticeText.txt +0 -193
  361. package/framework-mcp/node_modules/typescript/bin/tsc +0 -2
  362. package/framework-mcp/node_modules/typescript/bin/tsserver +0 -2
  363. package/framework-mcp/node_modules/typescript/lib/_tsc.js +0 -133818
  364. package/framework-mcp/node_modules/typescript/lib/_tsserver.js +0 -659
  365. package/framework-mcp/node_modules/typescript/lib/_typingsInstaller.js +0 -222
  366. package/framework-mcp/node_modules/typescript/lib/cs/diagnosticMessages.generated.json +0 -2122
  367. package/framework-mcp/node_modules/typescript/lib/de/diagnosticMessages.generated.json +0 -2122
  368. package/framework-mcp/node_modules/typescript/lib/es/diagnosticMessages.generated.json +0 -2122
  369. package/framework-mcp/node_modules/typescript/lib/fr/diagnosticMessages.generated.json +0 -2122
  370. package/framework-mcp/node_modules/typescript/lib/it/diagnosticMessages.generated.json +0 -2122
  371. package/framework-mcp/node_modules/typescript/lib/ja/diagnosticMessages.generated.json +0 -2122
  372. package/framework-mcp/node_modules/typescript/lib/ko/diagnosticMessages.generated.json +0 -2122
  373. package/framework-mcp/node_modules/typescript/lib/lib.d.ts +0 -22
  374. package/framework-mcp/node_modules/typescript/lib/lib.decorators.d.ts +0 -384
  375. package/framework-mcp/node_modules/typescript/lib/lib.decorators.legacy.d.ts +0 -22
  376. package/framework-mcp/node_modules/typescript/lib/lib.dom.asynciterable.d.ts +0 -41
  377. package/framework-mcp/node_modules/typescript/lib/lib.dom.d.ts +0 -39429
  378. package/framework-mcp/node_modules/typescript/lib/lib.dom.iterable.d.ts +0 -571
  379. package/framework-mcp/node_modules/typescript/lib/lib.es2015.collection.d.ts +0 -147
  380. package/framework-mcp/node_modules/typescript/lib/lib.es2015.core.d.ts +0 -597
  381. package/framework-mcp/node_modules/typescript/lib/lib.es2015.d.ts +0 -28
  382. package/framework-mcp/node_modules/typescript/lib/lib.es2015.generator.d.ts +0 -77
  383. package/framework-mcp/node_modules/typescript/lib/lib.es2015.iterable.d.ts +0 -605
  384. package/framework-mcp/node_modules/typescript/lib/lib.es2015.promise.d.ts +0 -81
  385. package/framework-mcp/node_modules/typescript/lib/lib.es2015.proxy.d.ts +0 -128
  386. package/framework-mcp/node_modules/typescript/lib/lib.es2015.reflect.d.ts +0 -144
  387. package/framework-mcp/node_modules/typescript/lib/lib.es2015.symbol.d.ts +0 -46
  388. package/framework-mcp/node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts +0 -326
  389. package/framework-mcp/node_modules/typescript/lib/lib.es2016.array.include.d.ts +0 -116
  390. package/framework-mcp/node_modules/typescript/lib/lib.es2016.d.ts +0 -21
  391. package/framework-mcp/node_modules/typescript/lib/lib.es2016.full.d.ts +0 -23
  392. package/framework-mcp/node_modules/typescript/lib/lib.es2016.intl.d.ts +0 -31
  393. package/framework-mcp/node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts +0 -21
  394. package/framework-mcp/node_modules/typescript/lib/lib.es2017.d.ts +0 -26
  395. package/framework-mcp/node_modules/typescript/lib/lib.es2017.date.d.ts +0 -31
  396. package/framework-mcp/node_modules/typescript/lib/lib.es2017.full.d.ts +0 -23
  397. package/framework-mcp/node_modules/typescript/lib/lib.es2017.intl.d.ts +0 -44
  398. package/framework-mcp/node_modules/typescript/lib/lib.es2017.object.d.ts +0 -49
  399. package/framework-mcp/node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts +0 -135
  400. package/framework-mcp/node_modules/typescript/lib/lib.es2017.string.d.ts +0 -45
  401. package/framework-mcp/node_modules/typescript/lib/lib.es2017.typedarrays.d.ts +0 -53
  402. package/framework-mcp/node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts +0 -77
  403. package/framework-mcp/node_modules/typescript/lib/lib.es2018.asynciterable.d.ts +0 -53
  404. package/framework-mcp/node_modules/typescript/lib/lib.es2018.d.ts +0 -24
  405. package/framework-mcp/node_modules/typescript/lib/lib.es2018.full.d.ts +0 -24
  406. package/framework-mcp/node_modules/typescript/lib/lib.es2018.intl.d.ts +0 -83
  407. package/framework-mcp/node_modules/typescript/lib/lib.es2018.promise.d.ts +0 -30
  408. package/framework-mcp/node_modules/typescript/lib/lib.es2018.regexp.d.ts +0 -37
  409. package/framework-mcp/node_modules/typescript/lib/lib.es2019.array.d.ts +0 -79
  410. package/framework-mcp/node_modules/typescript/lib/lib.es2019.d.ts +0 -24
  411. package/framework-mcp/node_modules/typescript/lib/lib.es2019.full.d.ts +0 -24
  412. package/framework-mcp/node_modules/typescript/lib/lib.es2019.intl.d.ts +0 -23
  413. package/framework-mcp/node_modules/typescript/lib/lib.es2019.object.d.ts +0 -33
  414. package/framework-mcp/node_modules/typescript/lib/lib.es2019.string.d.ts +0 -37
  415. package/framework-mcp/node_modules/typescript/lib/lib.es2019.symbol.d.ts +0 -24
  416. package/framework-mcp/node_modules/typescript/lib/lib.es2020.bigint.d.ts +0 -765
  417. package/framework-mcp/node_modules/typescript/lib/lib.es2020.d.ts +0 -27
  418. package/framework-mcp/node_modules/typescript/lib/lib.es2020.date.d.ts +0 -42
  419. package/framework-mcp/node_modules/typescript/lib/lib.es2020.full.d.ts +0 -24
  420. package/framework-mcp/node_modules/typescript/lib/lib.es2020.intl.d.ts +0 -474
  421. package/framework-mcp/node_modules/typescript/lib/lib.es2020.number.d.ts +0 -28
  422. package/framework-mcp/node_modules/typescript/lib/lib.es2020.promise.d.ts +0 -47
  423. package/framework-mcp/node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts +0 -99
  424. package/framework-mcp/node_modules/typescript/lib/lib.es2020.string.d.ts +0 -44
  425. package/framework-mcp/node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts +0 -41
  426. package/framework-mcp/node_modules/typescript/lib/lib.es2021.d.ts +0 -23
  427. package/framework-mcp/node_modules/typescript/lib/lib.es2021.full.d.ts +0 -24
  428. package/framework-mcp/node_modules/typescript/lib/lib.es2021.intl.d.ts +0 -166
  429. package/framework-mcp/node_modules/typescript/lib/lib.es2021.promise.d.ts +0 -48
  430. package/framework-mcp/node_modules/typescript/lib/lib.es2021.string.d.ts +0 -33
  431. package/framework-mcp/node_modules/typescript/lib/lib.es2021.weakref.d.ts +0 -78
  432. package/framework-mcp/node_modules/typescript/lib/lib.es2022.array.d.ts +0 -121
  433. package/framework-mcp/node_modules/typescript/lib/lib.es2022.d.ts +0 -25
  434. package/framework-mcp/node_modules/typescript/lib/lib.es2022.error.d.ts +0 -75
  435. package/framework-mcp/node_modules/typescript/lib/lib.es2022.full.d.ts +0 -24
  436. package/framework-mcp/node_modules/typescript/lib/lib.es2022.intl.d.ts +0 -145
  437. package/framework-mcp/node_modules/typescript/lib/lib.es2022.object.d.ts +0 -26
  438. package/framework-mcp/node_modules/typescript/lib/lib.es2022.regexp.d.ts +0 -39
  439. package/framework-mcp/node_modules/typescript/lib/lib.es2022.string.d.ts +0 -25
  440. package/framework-mcp/node_modules/typescript/lib/lib.es2023.array.d.ts +0 -924
  441. package/framework-mcp/node_modules/typescript/lib/lib.es2023.collection.d.ts +0 -21
  442. package/framework-mcp/node_modules/typescript/lib/lib.es2023.d.ts +0 -22
  443. package/framework-mcp/node_modules/typescript/lib/lib.es2023.full.d.ts +0 -24
  444. package/framework-mcp/node_modules/typescript/lib/lib.es2023.intl.d.ts +0 -56
  445. package/framework-mcp/node_modules/typescript/lib/lib.es2024.arraybuffer.d.ts +0 -65
  446. package/framework-mcp/node_modules/typescript/lib/lib.es2024.collection.d.ts +0 -29
  447. package/framework-mcp/node_modules/typescript/lib/lib.es2024.d.ts +0 -26
  448. package/framework-mcp/node_modules/typescript/lib/lib.es2024.full.d.ts +0 -24
  449. package/framework-mcp/node_modules/typescript/lib/lib.es2024.object.d.ts +0 -29
  450. package/framework-mcp/node_modules/typescript/lib/lib.es2024.promise.d.ts +0 -35
  451. package/framework-mcp/node_modules/typescript/lib/lib.es2024.regexp.d.ts +0 -25
  452. package/framework-mcp/node_modules/typescript/lib/lib.es2024.sharedmemory.d.ts +0 -68
  453. package/framework-mcp/node_modules/typescript/lib/lib.es2024.string.d.ts +0 -29
  454. package/framework-mcp/node_modules/typescript/lib/lib.es5.d.ts +0 -4601
  455. package/framework-mcp/node_modules/typescript/lib/lib.es6.d.ts +0 -23
  456. package/framework-mcp/node_modules/typescript/lib/lib.esnext.array.d.ts +0 -35
  457. package/framework-mcp/node_modules/typescript/lib/lib.esnext.collection.d.ts +0 -96
  458. package/framework-mcp/node_modules/typescript/lib/lib.esnext.d.ts +0 -29
  459. package/framework-mcp/node_modules/typescript/lib/lib.esnext.decorators.d.ts +0 -28
  460. package/framework-mcp/node_modules/typescript/lib/lib.esnext.disposable.d.ts +0 -193
  461. package/framework-mcp/node_modules/typescript/lib/lib.esnext.error.d.ts +0 -24
  462. package/framework-mcp/node_modules/typescript/lib/lib.esnext.float16.d.ts +0 -445
  463. package/framework-mcp/node_modules/typescript/lib/lib.esnext.full.d.ts +0 -24
  464. package/framework-mcp/node_modules/typescript/lib/lib.esnext.intl.d.ts +0 -21
  465. package/framework-mcp/node_modules/typescript/lib/lib.esnext.iterator.d.ts +0 -148
  466. package/framework-mcp/node_modules/typescript/lib/lib.esnext.promise.d.ts +0 -34
  467. package/framework-mcp/node_modules/typescript/lib/lib.esnext.sharedmemory.d.ts +0 -25
  468. package/framework-mcp/node_modules/typescript/lib/lib.scripthost.d.ts +0 -322
  469. package/framework-mcp/node_modules/typescript/lib/lib.webworker.asynciterable.d.ts +0 -41
  470. package/framework-mcp/node_modules/typescript/lib/lib.webworker.d.ts +0 -13150
  471. package/framework-mcp/node_modules/typescript/lib/lib.webworker.importscripts.d.ts +0 -23
  472. package/framework-mcp/node_modules/typescript/lib/lib.webworker.iterable.d.ts +0 -340
  473. package/framework-mcp/node_modules/typescript/lib/pl/diagnosticMessages.generated.json +0 -2122
  474. package/framework-mcp/node_modules/typescript/lib/pt-br/diagnosticMessages.generated.json +0 -2122
  475. package/framework-mcp/node_modules/typescript/lib/ru/diagnosticMessages.generated.json +0 -2122
  476. package/framework-mcp/node_modules/typescript/lib/tr/diagnosticMessages.generated.json +0 -2122
  477. package/framework-mcp/node_modules/typescript/lib/tsc.js +0 -8
  478. package/framework-mcp/node_modules/typescript/lib/tsserver.js +0 -8
  479. package/framework-mcp/node_modules/typescript/lib/tsserverlibrary.d.ts +0 -17
  480. package/framework-mcp/node_modules/typescript/lib/tsserverlibrary.js +0 -21
  481. package/framework-mcp/node_modules/typescript/lib/typesMap.json +0 -497
  482. package/framework-mcp/node_modules/typescript/lib/typescript.d.ts +0 -11437
  483. package/framework-mcp/node_modules/typescript/lib/typescript.js +0 -200276
  484. package/framework-mcp/node_modules/typescript/lib/typingsInstaller.js +0 -8
  485. package/framework-mcp/node_modules/typescript/lib/watchGuard.js +0 -53
  486. package/framework-mcp/node_modules/typescript/lib/zh-cn/diagnosticMessages.generated.json +0 -2122
  487. package/framework-mcp/node_modules/typescript/lib/zh-tw/diagnosticMessages.generated.json +0 -2122
  488. package/framework-mcp/node_modules/typescript/package.json +0 -120
  489. package/framework-mcp/node_modules/undici-types/LICENSE +0 -21
  490. package/framework-mcp/node_modules/undici-types/README.md +0 -6
  491. package/framework-mcp/node_modules/undici-types/agent.d.ts +0 -31
  492. package/framework-mcp/node_modules/undici-types/api.d.ts +0 -43
  493. package/framework-mcp/node_modules/undici-types/balanced-pool.d.ts +0 -29
  494. package/framework-mcp/node_modules/undici-types/cache.d.ts +0 -36
  495. package/framework-mcp/node_modules/undici-types/client.d.ts +0 -108
  496. package/framework-mcp/node_modules/undici-types/connector.d.ts +0 -34
  497. package/framework-mcp/node_modules/undici-types/content-type.d.ts +0 -21
  498. package/framework-mcp/node_modules/undici-types/cookies.d.ts +0 -28
  499. package/framework-mcp/node_modules/undici-types/diagnostics-channel.d.ts +0 -66
  500. package/framework-mcp/node_modules/undici-types/dispatcher.d.ts +0 -256
  501. package/framework-mcp/node_modules/undici-types/env-http-proxy-agent.d.ts +0 -21
  502. package/framework-mcp/node_modules/undici-types/errors.d.ts +0 -149
  503. package/framework-mcp/node_modules/undici-types/eventsource.d.ts +0 -61
  504. package/framework-mcp/node_modules/undici-types/fetch.d.ts +0 -209
  505. package/framework-mcp/node_modules/undici-types/file.d.ts +0 -39
  506. package/framework-mcp/node_modules/undici-types/filereader.d.ts +0 -54
  507. package/framework-mcp/node_modules/undici-types/formdata.d.ts +0 -108
  508. package/framework-mcp/node_modules/undici-types/global-dispatcher.d.ts +0 -9
  509. package/framework-mcp/node_modules/undici-types/global-origin.d.ts +0 -7
  510. package/framework-mcp/node_modules/undici-types/handlers.d.ts +0 -15
  511. package/framework-mcp/node_modules/undici-types/header.d.ts +0 -4
  512. package/framework-mcp/node_modules/undici-types/index.d.ts +0 -71
  513. package/framework-mcp/node_modules/undici-types/interceptors.d.ts +0 -17
  514. package/framework-mcp/node_modules/undici-types/mock-agent.d.ts +0 -50
  515. package/framework-mcp/node_modules/undici-types/mock-client.d.ts +0 -25
  516. package/framework-mcp/node_modules/undici-types/mock-errors.d.ts +0 -12
  517. package/framework-mcp/node_modules/undici-types/mock-interceptor.d.ts +0 -93
  518. package/framework-mcp/node_modules/undici-types/mock-pool.d.ts +0 -25
  519. package/framework-mcp/node_modules/undici-types/package.json +0 -55
  520. package/framework-mcp/node_modules/undici-types/patch.d.ts +0 -33
  521. package/framework-mcp/node_modules/undici-types/pool-stats.d.ts +0 -19
  522. package/framework-mcp/node_modules/undici-types/pool.d.ts +0 -39
  523. package/framework-mcp/node_modules/undici-types/proxy-agent.d.ts +0 -28
  524. package/framework-mcp/node_modules/undici-types/readable.d.ts +0 -65
  525. package/framework-mcp/node_modules/undici-types/retry-agent.d.ts +0 -8
  526. package/framework-mcp/node_modules/undici-types/retry-handler.d.ts +0 -116
  527. package/framework-mcp/node_modules/undici-types/util.d.ts +0 -18
  528. package/framework-mcp/node_modules/undici-types/webidl.d.ts +0 -228
  529. package/framework-mcp/node_modules/undici-types/websocket.d.ts +0 -150
  530. package/framework-mcp/tests/tools/file_system/replace_text.test.js +0 -68
  531. package/framework-mcp/tests/tools/file_system/replace_text.test.ts +0 -77
  532. package/mcp.json +0 -11
  533. package/panda.config.ts +0 -100
@@ -1,82 +1,77 @@
1
1
  import fs from "fs";
2
+ import os from "os";
2
3
  import path from "path";
3
4
  import { sleep } from "./time.js";
4
5
  import { generateULID } from "./time.js";
5
6
  import { FRAMEWORK_DIR_CANDIDATES } from "../adapters.js";
7
+ import { EnderunConfigSchema } from "./config-schema.js";
6
8
 
7
- const targetDir = process.cwd();
9
+ const CWD = process.cwd();
10
+ const HOME = os.homedir();
8
11
 
9
- export function getFrameworkDir(): string {
10
- // 1. Check if configured in package.json to force a single, unified framework directory
12
+ function findFrameworkDir(basePath: string): string | null {
11
13
  try {
12
- const pkgPath = path.join(targetDir, "package.json");
14
+ const pkgPath = path.join(basePath, "package.json");
13
15
  if (fs.existsSync(pkgPath)) {
14
16
  const pkg = JSON.parse(fs.readFileSync(pkgPath, "utf8"));
15
17
  if (pkg.enderun && typeof pkg.enderun.frameworkDir === "string") {
16
- const customDir = pkg.enderun.frameworkDir;
17
- if (fs.existsSync(path.join(targetDir, customDir))) {
18
- return customDir;
19
- }
18
+ const customDir = path.join(basePath, pkg.enderun.frameworkDir);
19
+ if (fs.existsSync(customDir)) return customDir;
20
20
  }
21
21
  }
22
- } catch {
23
- // ignore: non-critical parsing errors
24
- }
22
+ } catch { /* ignore */ }
25
23
 
26
- // 2. Fall back to dynamic candidate scanning
27
24
  for (const dir of FRAMEWORK_DIR_CANDIDATES) {
28
- const dirPath = path.join(targetDir, dir);
29
- if (!fs.existsSync(dirPath)) continue;
25
+ const dirPath = path.join(basePath, dir);
26
+ if (fs.existsSync(dirPath) && fs.lstatSync(dirPath).isDirectory()) {
27
+ return dirPath;
28
+ }
29
+ }
30
+ return null;
31
+ }
30
32
 
31
- // Support both legacy flat memory and current memory/ subdir layout (AL/cross-adapter fix)
32
- const hasMemory = fs.existsSync(path.join(dirPath, "PROJECT_MEMORY.md")) ||
33
- fs.existsSync(path.join(dirPath, "memory", "PROJECT_MEMORY.md"));
33
+ export function getLocalFrameworkDir(): string {
34
+ const localDir = findFrameworkDir(CWD);
35
+ return localDir || path.join(CWD, ".gemini");
36
+ }
34
37
 
35
- const hasAgents = fs.existsSync(path.join(dirPath, "agents")) ||
36
- fs.existsSync(path.join(dirPath, "skills")) ||
37
- fs.existsSync(path.join(dirPath, "plugins"));
38
+ export function getConfigDir(): string {
39
+ const localDir = findFrameworkDir(CWD);
40
+ if (localDir) return localDir;
41
+ const globalDir = findFrameworkDir(HOME);
42
+ return globalDir || path.join(HOME, ".gemini");
43
+ }
38
44
 
39
- if (hasMemory || hasAgents) {
40
- return dir;
41
- }
42
- }
43
- for (const dir of FRAMEWORK_DIR_CANDIDATES) {
44
- if (fs.existsSync(path.join(targetDir, dir))) {
45
- return dir;
46
- }
47
- }
48
- return ".gemini";
45
+ export function getFrameworkDir(): string {
46
+ return getConfigDir();
49
47
  }
50
48
 
51
49
  export function getMemoryPath() {
52
- const frameworkDir = getFrameworkDir();
53
- const subPath = path.join(targetDir, frameworkDir, "memory/PROJECT_MEMORY.md");
50
+ const frameworkDir = getLocalFrameworkDir();
51
+ const subPath = path.join(frameworkDir, "memory/PROJECT_MEMORY.md");
54
52
  if (fs.existsSync(subPath)) return subPath;
55
- return path.join(targetDir, frameworkDir, "PROJECT_MEMORY.md");
53
+ return path.join(frameworkDir, "PROJECT_MEMORY.md");
56
54
  }
57
55
 
58
56
  export function getConfiguredPaths(): { backend: string; frontend: string; docs: string; tests: string } {
59
- let backend = "apps/backend";
60
- let frontend = "apps/web";
61
- let docs = "docs";
62
- let tests = "tests";
63
-
57
+ const defaultPaths = { backend: "apps/backend", frontend: "apps/web", docs: "docs", tests: "tests" };
64
58
  try {
65
- const frameworkDir = getFrameworkDir();
66
- const configPath = path.join(targetDir, frameworkDir, "config.json");
59
+ const frameworkDir = getConfigDir();
60
+ const configPath = path.join(frameworkDir, "config.json");
67
61
  if (fs.existsSync(configPath)) {
68
- const config = JSON.parse(fs.readFileSync(configPath, "utf8"));
69
- if (config.paths) {
70
- if (config.paths.backend) backend = config.paths.backend;
71
- if (config.paths.frontend) frontend = config.paths.frontend;
72
- if (config.paths.docs) docs = config.paths.docs;
73
- if (config.paths.tests) tests = config.paths.tests;
62
+ const rawConfig = JSON.parse(fs.readFileSync(configPath, "utf8"));
63
+ const result = EnderunConfigSchema.safeParse(rawConfig);
64
+ if (result.success) {
65
+ return result.data.paths;
66
+ } else {
67
+ console.error(`\n❌ Configuration Error in ${configPath}:`);
68
+ result.error.issues.forEach(err => console.error(` - ${err.path.join(".")}: ${err.message}`));
74
69
  }
75
70
  }
76
71
  } catch {
77
- // ignore: non-critical parsing errors
72
+ console.error("\n❌ Critical Error: Could not read or parse configuration file.");
78
73
  }
79
- return { backend, frontend, docs, tests };
74
+ return defaultPaths;
80
75
  }
81
76
 
82
77
  export function acquireMemoryLock(lockPath: string, maxRetries = 5): boolean {
@@ -88,6 +83,24 @@ export function acquireMemoryLock(lockPath: string, maxRetries = 5): boolean {
88
83
  } catch (error: unknown) {
89
84
  const err = error as NodeJS.ErrnoException;
90
85
  if (err?.code !== "EEXIST") throw error;
86
+
87
+ try {
88
+ if (fs.existsSync(lockPath)) {
89
+ const stat = fs.statSync(lockPath);
90
+ const ageMs = Date.now() - stat.mtimeMs;
91
+ if (ageMs > 10000) { // 10 seconds timeout for memory writes
92
+ console.warn(`\n⚠️ Stale memory lock detected (${Math.round(ageMs / 1000)}s old). Breaking lock: ${lockPath}`);
93
+ fs.unlinkSync(lockPath);
94
+ // Retry immediately
95
+ const fd = fs.openSync(lockPath, "wx");
96
+ fs.closeSync(fd);
97
+ return true;
98
+ }
99
+ }
100
+ } catch {
101
+ // ignore stat or unlink failures
102
+ }
103
+
91
104
  if (attempt < maxRetries - 1) sleep(1000);
92
105
  }
93
106
  }
@@ -98,80 +111,98 @@ export function releaseMemoryLock(lockPath: string): void {
98
111
  if (fs.existsSync(lockPath)) fs.unlinkSync(lockPath);
99
112
  }
100
113
 
101
- /**
102
- * Create initial PROJECT_MEMORY.md if missing.
103
- */
104
114
  export function initializeMemory(memoryPath: string, targetBase: string, dryRun = false): void {
105
115
  if (fs.existsSync(memoryPath)) return;
106
-
107
116
  const traceId = generateULID();
108
117
  const date = new Date().toISOString().split("T")[0];
109
- const template = `# PROJECT MEMORYAgent Enderun
110
-
111
- This file is the Single Source of Truth (SSOT) and the persistent memory of the project.
112
-
113
- ## CURRENT STATUS
114
-
115
- | Active Phase | Profile | Last Update | Active Trace ID | Blockers |
116
- | :----------- | :------ | :---------- | :-------------- | :------- |
117
- | PHASE_0 | Lightweight | ${date} | ${traceId} | NONE |
118
-
119
- ## PROJECT DEFINITION
120
-
121
- | Field | Value |
122
- | :--- | :--- |
123
- | Project Name | ${path.basename(process.cwd())} |
124
- | Platform | Not defined |
125
- | Frontend | React 19 + Vite + Panda CSS |
126
- | Backend | Node.js 20+ + Fastify |
127
- | DB | PostgreSQL |
128
-
129
- ## DOD STATUS
130
-
131
- | Phase | Status | Note |
132
- | :--- | :--- | :--- |
133
- | PHASE_0 | IN_PROGRESS | Initializing project structure |
134
- | PHASE_1 | PENDING | |
135
- | PHASE_2 | PENDING | |
136
- | PHASE_3 | PENDING | |
137
- | PHASE_4 | PENDING | |
138
-
139
- ## CRITICAL DECISIONS
140
-
141
- | Date | Decision | Rationale | Agent |
142
- | :--- | :--- | :--- | :--- |
143
- | ${date} | Project Initialized | Framework setup via CLI | @manager |
118
+ const template = `## CURRENT STATUS\n\n- Phase: PHASE_0 (Genesis)\n- Trace ID: ${traceId}\n\n## HISTORY\n### ${date} Initialization\n- Action: Initialized Enderun Core.\n`;
119
+ if (dryRun) return;
120
+ const parentDir = path.dirname(memoryPath);
121
+ if (!fs.existsSync(parentDir)) fs.mkdirSync(parentDir, { recursive: true });
122
+ fs.writeFileSync(memoryPath, template);
123
+ console.warn("✅ PROJECT_MEMORY.md initialized.");
124
+ }
144
125
 
145
- ## DELIVERABLES
126
+ export function updateProjectMemory(section: string, content: string) {
127
+ const memoryPath = getMemoryPath();
146
128
 
147
- | Module | Status | Agent | Date |
148
- | :--- | :--- | :--- | :--- |
129
+ if (!fs.existsSync(memoryPath)) {
130
+ console.error("❌ Error: PROJECT_MEMORY.md not found.");
131
+ return;
132
+ }
149
133
 
150
- ## ACTIVE TASKS
134
+ const lockPath = `${memoryPath}.lock`;
135
+ if (!acquireMemoryLock(lockPath)) {
136
+ console.error("❌ Error: Memory lock timeout.");
137
+ return;
138
+ }
151
139
 
152
- | Trace ID | Task | Agent | Priority | Status |
153
- | :--- | :--- | :--- | :--- | :--- |
154
- | ${traceId} | Framework setup and architecture alignment | @manager | P1 | IN_PROGRESS |
140
+ try {
141
+ let memoryContent = fs.readFileSync(memoryPath, "utf8");
142
+
143
+ if (section === "HISTORY") {
144
+ const headers = ["## HISTORY (Persistent Memory)", "## HISTORY"];
145
+ let sectionIndex = -1;
146
+ for (const h of headers) {
147
+ sectionIndex = memoryContent.indexOf(h);
148
+ if (sectionIndex !== -1) {
149
+ break;
150
+ }
151
+ }
155
152
 
156
- ## HISTORY (Persistent Memory)
153
+ if (sectionIndex === -1) {
154
+ console.error("❌ Error: HISTORY section not found.");
155
+ return;
156
+ }
157
+ const headerEnd = memoryContent.indexOf("\n", sectionIndex) + 1;
158
+ memoryContent =
159
+ memoryContent.slice(0, headerEnd) +
160
+ `\n${content.trim()}\n` +
161
+ memoryContent.slice(headerEnd);
162
+
163
+ // --- Auto-Prune Logic ---
164
+ const historySplit = memoryContent.split("### ");
165
+ if (historySplit.length > 11) { // Title + 10 entries
166
+ const frameworkDir = path.dirname(memoryPath);
167
+ const archiveDir = path.join(frameworkDir, "archive/history");
168
+ if (!fs.existsSync(archiveDir)) fs.mkdirSync(archiveDir, { recursive: true });
169
+
170
+ const toArchive = historySplit.slice(11); // Keep the first 10 entries (newest)
171
+ const preserved = historySplit.slice(0, 11);
172
+
173
+ const archiveContent = "### " + toArchive.join("### ");
174
+ const timestamp = new Date().toISOString().replace(/[:.]/g, "-");
175
+ fs.writeFileSync(path.join(archiveDir, `history-${timestamp}.md`), archiveContent);
176
+
177
+ memoryContent = preserved.join("### ").trim() + "\n";
178
+ console.warn(`📦 Auto-Pruned: ${toArchive.length} old entries moved to archive.`);
179
+ }
180
+ // ------------------------
181
+ } else {
182
+ const escaped = section.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
183
+ const sectionRegex = new RegExp(`## ${escaped}[\\s\\S]*?(?=\\n## |$)`, "m");
184
+ if (!sectionRegex.test(memoryContent)) {
185
+ console.error(`❌ Error: Section not found: ${section}`);
186
+ return;
187
+ }
188
+ memoryContent = memoryContent.replace(
189
+ sectionRegex,
190
+ `## ${section}\n\n${content.trim()}\n`,
191
+ );
192
+ }
157
193
 
158
- ### ${date} — Framework Initialization
194
+ fs.writeFileSync(memoryPath, memoryContent);
195
+ console.warn(`✅ Section ${section} updated in PROJECT_MEMORY.md`);
196
+ } finally {
197
+ releaseMemoryLock(lockPath);
198
+ }
199
+ }
159
200
 
160
- - **Agent:** @manager
161
- - **Trace ID:** ${traceId}
162
- - **Action:** Initialized Agent Enderun framework and project structure.
163
- `;
201
+ export function readActiveTraceId(memoryContent: string): string | null {
202
+ const match = memoryContent.match(/Trace ID:\s*([A-Z0-9]+)/i) ||
203
+ memoryContent.match(/Trace ID\s*\|.*\|\s*\n\|.*\|.*\|.*\|\s*([A-Z0-9]+)\s*\|/i) ||
204
+ memoryContent.match(/Active Trace ID[:\s|]+([A-Z0-9]+)/i);
205
+ return match ? match[1] : null;
206
+ }
164
207
 
165
- const finalTemplate = template.replace(/\{\{FRAMEWORK_DIR\}\}/g, targetBase);
166
208
 
167
- if (dryRun) {
168
- console.warn(`[DRY RUN] Would initialize PROJECT_MEMORY.md at ${memoryPath}`);
169
- } else {
170
- const parentDir = path.dirname(memoryPath);
171
- if (!fs.existsSync(parentDir)) {
172
- fs.mkdirSync(parentDir, { recursive: true });
173
- }
174
- fs.writeFileSync(memoryPath, finalTemplate);
175
- console.warn(`✅ PROJECT_MEMORY.md initialized in ${targetBase}`);
176
- }
177
- }
@@ -35,15 +35,15 @@ function findAgentEnderunPackageRoot(): string {
35
35
  let current = path.dirname(new URL(import.meta.url).pathname);
36
36
  const root = path.parse(current).root;
37
37
  while (current !== root) {
38
- // Sandbox boundary guard: do not access parent paths outside the project workspace
39
- if (!current.includes("agent-enderun")) {
40
- break;
38
+ if (path.basename(current) === "dist") {
39
+ current = path.dirname(current);
40
+ continue;
41
41
  }
42
42
  const pkgPath = path.join(current, "package.json");
43
43
  if (fs.existsSync(pkgPath)) {
44
44
  try {
45
45
  const pkg = JSON.parse(fs.readFileSync(pkgPath, "utf8"));
46
- if (pkg.name === "agent-enderun") {
46
+ if (pkg.name === "agent-enderun" || pkg.name === "enderun-core") {
47
47
  return current;
48
48
  }
49
49
  } catch {
@@ -0,0 +1,63 @@
1
+ import chalk from "chalk";
2
+
3
+ /**
4
+ * Professional UI Utilities for Enderun Core CLI.
5
+ * Standardizes headers, status boxes, and strategic intent reporting.
6
+ */
7
+
8
+ export const UI = {
9
+ /**
10
+ * Renders a strategic intent block similar to Gemini CLI's topic updates.
11
+ */
12
+ intent: (title: string, intent: string) => {
13
+ console.warn(`\n${chalk.bold.cyan(title)}:`);
14
+ console.warn(`${chalk.italic.gray(` ${intent}`)}\n`);
15
+ },
16
+
17
+ /**
18
+ * Renders a professional agent execution box.
19
+ */
20
+ agentBox: (agentName: string, action: string, details?: string) => {
21
+ const width = process.stdout.columns || 80;
22
+ const line = "─".repeat(width - 2);
23
+
24
+ console.warn(chalk.gray(`╭${line}╮`));
25
+ console.warn(`${chalk.gray("│")} ${chalk.bold.yellow("≡")} ${chalk.white(`Running Agent: ${chalk.bold.green(agentName)}...`)} ${chalk.gray("(ctrl+o to expand)".padStart(width - agentName.length - 27))} ${chalk.gray("│")}`);
26
+ if (action) {
27
+ console.warn(`${chalk.gray("│")} ${chalk.blue("!")} ${chalk.cyan(action)} ${" ".repeat(width - action.length - 6)} ${chalk.gray("│")}`);
28
+ }
29
+ if (details) {
30
+ console.warn(`${chalk.gray("│")} ${chalk.gray(details.slice(0, width - 10))} ${" ".repeat(width - details.length - 7)} ${chalk.gray("│")}`);
31
+ }
32
+ console.warn(chalk.gray(`╰${line}╯`));
33
+ },
34
+
35
+ /**
36
+ * Renders a success status message.
37
+ */
38
+ success: (msg: string) => {
39
+ console.warn(`${chalk.bold.green("✅")} ${msg}`);
40
+ },
41
+
42
+ /**
43
+ * Renders an error status message.
44
+ */
45
+ error: (msg: string) => {
46
+ console.error(`${chalk.bold.red("❌")} ${chalk.red(msg)}`);
47
+ },
48
+
49
+ /**
50
+ * Renders a warning status message.
51
+ */
52
+ warning: (msg: string) => {
53
+ console.warn(`${chalk.bold.yellow("⚠️")} ${chalk.yellow(msg)}`);
54
+ },
55
+
56
+ /**
57
+ * Renders an info/divider line.
58
+ */
59
+ divider: () => {
60
+ const width = process.stdout.columns || 80;
61
+ console.warn(chalk.gray("─".repeat(width)));
62
+ }
63
+ };
@@ -0,0 +1,25 @@
1
+ import path from "path";
2
+ import { writeJsonFile } from "../../shared/fs.js";
3
+ import type { AdapterConfig } from "./types.js";
4
+ import { registerGlobalAntigravityPlugins } from "./shared.js";
5
+
6
+ export const config: AdapterConfig = {
7
+ id: "antigravity-cli",
8
+ frameworkDir: ".agents",
9
+ shimFile: "AGENTS.md",
10
+ shimTemplate: "src/cli/shims/antigravity-cli.md",
11
+ role: "general",
12
+ templateDir: ".enderun",
13
+ nestedDirs: ["agents", "rules", "knowledge"],
14
+ rulesDir: ".agents/rules",
15
+ rulesExt: ".md"
16
+ };
17
+
18
+ export function postInit(projectRoot: string, mcpBlock: unknown): void {
19
+ writeJsonFile(path.join(projectRoot, config.frameworkDir, "mcp_config.json"), mcpBlock);
20
+ console.warn(`✅ Antigravity CLI MCP → ${config.frameworkDir}/mcp_config.json`);
21
+
22
+ // Global registration
23
+ registerGlobalAntigravityPlugins(mcpBlock);
24
+ }
25
+
@@ -0,0 +1,36 @@
1
+ import path from "path";
2
+ import { writeJsonFile } from "../../shared/fs.js";
3
+ import { findClaudeConfigPath, addMcpServerToClaude } from "../../cli/utils/claude.js";
4
+ import type { AdapterConfig } from "./types.js";
5
+
6
+ export const config: AdapterConfig = {
7
+ id: "claude",
8
+ frameworkDir: ".claude",
9
+ shimFile: "CLAUDE.md",
10
+ shimTemplate: "src/cli/shims/claude.md",
11
+ role: "architect",
12
+ templateDir: ".enderun",
13
+ nestedDirs: ["agents", "rules", "knowledge"],
14
+ rulesDir: ".claude/rules",
15
+ rulesExt: ".md"
16
+ };
17
+
18
+ export function postInit(projectRoot: string, mcpBlock: unknown): void {
19
+ const configPath = findClaudeConfigPath();
20
+ if (configPath) {
21
+ const block = mcpBlock as { mcpServers: Record<string, unknown> };
22
+ // Build mcpEntry matching what adapters.ts does
23
+ const mcpEntry = block.mcpServers["agent-enderun"] as Record<string, unknown>;
24
+ const ok = addMcpServerToClaude(configPath, "agent-enderun", mcpEntry);
25
+ if (ok) {
26
+ console.warn(`✅ Claude MCP registered → ${configPath}`);
27
+ } else {
28
+ console.warn("⚠️ Could not patch Claude config automatically.");
29
+ }
30
+ } else {
31
+ console.warn("⚠️ Claude config not found. Add MCP manually (see README).");
32
+ }
33
+ writeJsonFile(path.join(projectRoot, config.frameworkDir, "mcp_config.json"), mcpBlock);
34
+ writeJsonFile(path.join(projectRoot, ".mcp.json"), mcpBlock);
35
+ console.warn("✅ Claude Code Project MCP → .mcp.json");
36
+ }
@@ -0,0 +1,22 @@
1
+ import path from "path";
2
+ import { writeJsonFile } from "../../shared/fs.js";
3
+ import type { AdapterConfig } from "./types.js";
4
+
5
+ export const config: AdapterConfig = {
6
+ id: "codex",
7
+ frameworkDir: ".github",
8
+ shimFile: "copilot-instructions.md",
9
+ shimTemplate: "src/cli/shims/codex.md",
10
+ role: "implementer",
11
+ templateDir: ".enderun",
12
+ nestedDirs: ["agents", "rules", "knowledge", "instructions"],
13
+ rulesDir: ".github/instructions",
14
+ rulesExt: ".md"
15
+ };
16
+
17
+ export function postInit(projectRoot: string, mcpBlock: unknown): void {
18
+ writeJsonFile(path.join(projectRoot, config.frameworkDir, "mcp_config.json"), mcpBlock);
19
+ writeJsonFile(path.join(projectRoot, ".vscode/mcp.json"), mcpBlock);
20
+ writeJsonFile(path.join(projectRoot, ".mcp.json"), mcpBlock);
21
+ console.warn("✅ GitHub Copilot Project MCP → .vscode/mcp.json & .mcp.json");
22
+ }
@@ -0,0 +1,22 @@
1
+ import path from "path";
2
+ import { writeJsonFile } from "../../shared/fs.js";
3
+ import type { AdapterConfig } from "./types.js";
4
+
5
+ export const config: AdapterConfig = {
6
+ id: "cursor",
7
+ frameworkDir: ".cursor",
8
+ shimFile: "CURSOR.md",
9
+ shimTemplate: "src/cli/shims/cursor.mdc",
10
+ role: "implementer",
11
+ templateDir: ".enderun",
12
+ nestedDirs: ["agents", "rules", "knowledge"],
13
+ rulesDir: ".cursor/rules",
14
+ rulesExt: ".mdc"
15
+ };
16
+
17
+ export function postInit(projectRoot: string, mcpBlock: unknown): void {
18
+ const frameworkDir = config.frameworkDir;
19
+ // Native Cursor project-level MCP config
20
+ writeJsonFile(path.join(projectRoot, frameworkDir, "mcp.json"), mcpBlock);
21
+ console.warn(`✅ Cursor IDE Project MCP → ${frameworkDir}/mcp.json`);
22
+ }
@@ -0,0 +1,27 @@
1
+ import path from "path";
2
+ import { writeJsonFile } from "../../shared/fs.js";
3
+ import type { AdapterConfig } from "./types.js";
4
+ import { registerGlobalAntigravityPlugins } from "./shared.js";
5
+
6
+ export const config: AdapterConfig = {
7
+ id: "gemini",
8
+ frameworkDir: ".gemini",
9
+ shimFile: "GEMINI.md",
10
+ shimTemplate: "src/cli/shims/gemini.md",
11
+ role: "commander",
12
+ templateDir: ".enderun",
13
+ nestedDirs: ["agents", "rules", "knowledge"],
14
+ rulesDir: ".gemini/rules",
15
+ rulesExt: ".md"
16
+ };
17
+
18
+ export function postInit(projectRoot: string, mcpBlock: unknown): void {
19
+ const frameworkDir = config.frameworkDir;
20
+ // Standard project-level MCP config
21
+ writeJsonFile(path.join(projectRoot, frameworkDir, "mcp.json"), mcpBlock);
22
+ console.warn(`✅ Gemini MCP registered → ${frameworkDir}/mcp.json`);
23
+
24
+ // Global registration
25
+ registerGlobalAntigravityPlugins(mcpBlock);
26
+ }
27
+
@@ -0,0 +1,20 @@
1
+ import path from "path";
2
+ import { writeJsonFile } from "../../shared/fs.js";
3
+ import type { AdapterConfig } from "./types.js";
4
+
5
+ export const config: AdapterConfig = {
6
+ id: "grok",
7
+ frameworkDir: ".grok",
8
+ shimFile: "GROK.md",
9
+ shimTemplate: "src/cli/shims/grok.md",
10
+ role: "researcher",
11
+ templateDir: ".enderun",
12
+ nestedDirs: ["agents", "rules", "knowledge"],
13
+ rulesDir: ".grok/rules",
14
+ rulesExt: ".md"
15
+ };
16
+
17
+ export function postInit(projectRoot: string, mcpBlock: unknown): void {
18
+ writeJsonFile(path.join(projectRoot, config.frameworkDir, "mcp_config.json"), mcpBlock);
19
+ console.warn(`✅ Grok MCP → ${config.frameworkDir}/mcp_config.json`);
20
+ }
@@ -0,0 +1,90 @@
1
+ import path from "path";
2
+ import fs from "fs";
3
+ import os from "os";
4
+ import { writeJsonFile } from "../../shared/fs.js";
5
+ import { ALL_AGENTS, buildAgentJson } from "../agents/definitions.js";
6
+ import { CORE_SKILLS } from "../skills/definitions.js";
7
+
8
+ export function registerGlobalAntigravityPlugins(mcpBlock: unknown): void {
9
+ const targets = [
10
+ path.join(os.homedir(), ".gemini/antigravity-cli")
11
+ ];
12
+
13
+ for (const globalDir of targets) {
14
+ try {
15
+ // Write directly under directory
16
+ fs.mkdirSync(globalDir, { recursive: true });
17
+ writeJsonFile(path.join(globalDir, "mcp.json"), mcpBlock);
18
+ writeJsonFile(path.join(globalDir, "mcp_config.json"), mcpBlock);
19
+ console.warn(`✅ Antigravity MCP registered → ${globalDir}/`);
20
+
21
+ // Global Plugin configuration under plugins/agent-enderun/
22
+ const globalPluginDir = path.join(globalDir, "plugins/agent-enderun");
23
+ fs.mkdirSync(globalPluginDir, { recursive: true });
24
+
25
+ // plugin.json marker
26
+ writeJsonFile(path.join(globalPluginDir, "plugin.json"), {
27
+ name: "agent-enderun",
28
+ version: "1.0.0",
29
+ description: "Agent Enderun AI Orchestration framework"
30
+ });
31
+
32
+ // MCP Server configs inside the plugin
33
+ writeJsonFile(path.join(globalPluginDir, "mcp.json"), mcpBlock);
34
+ writeJsonFile(path.join(globalPluginDir, "mcp_config.json"), mcpBlock);
35
+
36
+ // Scaffold 13 agents
37
+ const agentsBaseDir = path.join(globalPluginDir, "agents");
38
+ fs.mkdirSync(agentsBaseDir, { recursive: true });
39
+ for (const ag of ALL_AGENTS) {
40
+ const agentJson = buildAgentJson(ag);
41
+
42
+ // 1. Nested format (agents/{agent_name}/agent.json)
43
+ const nestedAgentDir = path.join(agentsBaseDir, ag.name);
44
+ fs.mkdirSync(nestedAgentDir, { recursive: true });
45
+ fs.writeFileSync(path.join(nestedAgentDir, "agent.json"), agentJson);
46
+
47
+ // 2. Direct flat format (agents/{agent_name}.json) as subagent definition templates
48
+ fs.writeFileSync(path.join(agentsBaseDir, `${ag.name}.json`), agentJson);
49
+ }
50
+
51
+ // Scaffold skills
52
+ const skillsDir = path.join(globalPluginDir, "skills");
53
+ fs.mkdirSync(skillsDir, { recursive: true });
54
+ for (const [key, skill] of Object.entries(CORE_SKILLS)) {
55
+ const skillContent = `# 🛠️ Skill — ${skill.name}\n\n${skill.mandates.join("\n")}\n`;
56
+ fs.writeFileSync(path.join(skillsDir, `${key.toLowerCase()}.md`), skillContent);
57
+ }
58
+
59
+ // Scaffold rules (Optional custom codebase rules files)
60
+ const rulesDir = path.join(globalPluginDir, "rules");
61
+ fs.mkdirSync(rulesDir, { recursive: true });
62
+ for (const ag of ALL_AGENTS) {
63
+ const ruleContent = `# 🎖️ Agent Enderun — @${ag.name} (${ag.displayName})
64
+
65
+ You are the **${ag.displayName}** of the Agent Enderun Army.
66
+
67
+ ## 🤖 Specialist Directive (Role: @${ag.name})
68
+ ${ag.instructions}
69
+
70
+ ## 🛡️ Core Mandates
71
+ - **Surgical Precision:** Enforce replace_text / replace_file_content for all code modifications.
72
+ - **Traceability:** Inherit and pass the active Trace ID across all delegations.
73
+ - **Approval Signature:** High-risk actions require manager approval signature.
74
+ `;
75
+ fs.writeFileSync(path.join(rulesDir, `${ag.name}.md`), ruleContent);
76
+ }
77
+
78
+ // Scaffold optional empty hooks.json
79
+ writeJsonFile(path.join(globalPluginDir, "hooks.json"), {
80
+ preTool: [],
81
+ postTool: []
82
+ });
83
+
84
+ console.warn(`✅ Antigravity Plugin registered → ${globalPluginDir}/`);
85
+
86
+ } catch (e) {
87
+ console.warn(`⚠️ Failed to register plugin/MCP in ${globalDir}:`, e);
88
+ }
89
+ }
90
+ }
@@ -0,0 +1,16 @@
1
+ export const ADAPTER_IDS = ["gemini", "claude", "grok", "cursor", "codex", "antigravity-cli"] as const;
2
+ export type AdapterId = (typeof ADAPTER_IDS)[number];
3
+
4
+ export type AdapterRole = "commander" | "architect" | "researcher" | "implementer" | "general";
5
+
6
+ export interface AdapterConfig {
7
+ id: AdapterId;
8
+ frameworkDir: string;
9
+ shimFile: string;
10
+ shimTemplate: string;
11
+ role: AdapterRole;
12
+ templateDir: ".enderun";
13
+ nestedDirs?: string[];
14
+ rulesDir?: string; // Directory to write individual rules, relative to projectRoot
15
+ rulesExt?: string; // Extensions for rules files (.md or .mdc)
16
+ }