agent-enderun 0.6.1 → 0.6.5

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 (72) hide show
  1. package/.enderun/PROJECT_MEMORY.md +110 -2
  2. package/.enderun/STATUS.md +3 -3
  3. package/.enderun/agents/analyst.md +97 -10
  4. package/.enderun/agents/backend.md +258 -14
  5. package/.enderun/agents/explorer.md +67 -2
  6. package/.enderun/agents/frontend.md +404 -66
  7. package/.enderun/agents/git.md +19 -2
  8. package/.enderun/agents/manager.md +412 -45
  9. package/.enderun/agents/mobile.md +62 -18
  10. package/.enderun/agents/native.md +60 -10
  11. package/.enderun/blueprints/backend/errors/blueprint.json +11 -0
  12. package/.enderun/blueprints/backend/errors/domain-error.ts +34 -55
  13. package/.enderun/knowledge/framework_vs_user_project_boundary.md +52 -0
  14. package/.enderun/knowledge/frontend_professionalization_guidelines.md +108 -0
  15. package/.enderun/knowledge/hermes_live_test_guidelines.md +90 -0
  16. package/.enderun/knowledge/manager_authority_audit_enforcement.md +104 -0
  17. package/.enderun/knowledge/project_scaffold_guidelines.md +99 -0
  18. package/.enderun/knowledge/reference_application_guidelines.md +90 -0
  19. package/.enderun/messages/2026-05-23-backend-to-manager-auth-errors-reply.json +23 -0
  20. package/.enderun/messages/2026-05-23-manager-to-backend-auth-errors.json +26 -0
  21. package/ENDERUN.md +10 -3
  22. package/README.md +185 -625
  23. package/antigravity.md +15 -0
  24. package/bin/cli.js +92 -27
  25. package/docs/README.md +33 -3
  26. package/docs/getting-started.md +497 -0
  27. package/docs/roadmap.md +200 -0
  28. package/framework-mcp/README.md +1 -1
  29. package/framework-mcp/dist/index.js +0 -0
  30. package/framework-mcp/dist/tools/academy.js +6 -8
  31. package/framework-mcp/dist/tools/codebase.js +6 -6
  32. package/framework-mcp/dist/tools/contract.js +94 -4
  33. package/framework-mcp/dist/tools/database.js +1 -1
  34. package/framework-mcp/dist/tools/framework.js +8 -12
  35. package/framework-mcp/dist/tools/git.js +2 -2
  36. package/framework-mcp/dist/tools/knowledge.js +4 -4
  37. package/framework-mcp/dist/tools/memory.js +5 -7
  38. package/framework-mcp/dist/tools/messages.js +6 -6
  39. package/framework-mcp/dist/tools/repository.js +4 -4
  40. package/framework-mcp/dist/tools/scaffold.js +6 -3
  41. package/framework-mcp/dist/tools/security.js +4 -4
  42. package/framework-mcp/dist/utils.js +1 -1
  43. package/framework-mcp/package.json +1 -1
  44. package/framework-mcp/src/schemas.ts +7 -0
  45. package/framework-mcp/src/tools/academy.ts +5 -9
  46. package/framework-mcp/src/tools/codebase.ts +6 -6
  47. package/framework-mcp/src/tools/contract.ts +114 -4
  48. package/framework-mcp/src/tools/database.ts +1 -1
  49. package/framework-mcp/src/tools/framework.ts +9 -12
  50. package/framework-mcp/src/tools/git.ts +2 -2
  51. package/framework-mcp/src/tools/knowledge.ts +5 -6
  52. package/framework-mcp/src/tools/memory.ts +5 -6
  53. package/framework-mcp/src/tools/messages.ts +94 -28
  54. package/framework-mcp/src/tools/repository.ts +5 -6
  55. package/framework-mcp/src/tools/scaffold.ts +9 -6
  56. package/framework-mcp/src/tools/security.ts +4 -4
  57. package/framework-mcp/src/utils.ts +2 -2
  58. package/gemini.md +4 -4
  59. package/package.json +11 -7
  60. package/panda.config.ts +3 -1
  61. package/.enderun/benchmarks/.gitkeep +0 -0
  62. package/.enderun/blueprints/backend/middleware/error-handler.ts +0 -24
  63. package/.enderun/blueprints/backend/types/api.ts +0 -20
  64. package/.enderun/blueprints/backend/types/brands.ts +0 -12
  65. package/.enderun/blueprints/backend/types/constants.ts +0 -34
  66. package/.enderun/blueprints/backend/types/index.ts +0 -49
  67. package/.enderun/blueprints/backend/types/logs.ts +0 -16
  68. package/.enderun/blueprints/backend/types/models.ts +0 -65
  69. package/.enderun/blueprints/frontend/ui/Button.tsx +0 -60
  70. package/.enderun/blueprints/frontend/ui/Input.tsx +0 -43
  71. package/.enderun/monitoring/.gitkeep +0 -0
  72. package/gemini-extension.json +0 -13
package/antigravity.md ADDED
@@ -0,0 +1,15 @@
1
+ # Agent Enderun — Antigravity Adapter
2
+
3
+ This file is the entry point for Antigravity CLI. The project's "Supreme Law" and all instructions are located in the following file:
4
+
5
+ 👉 **[.antigravitycli/ENDERUN.md](.antigravitycli/ENDERUN.md)**
6
+
7
+ ### 🤖 AGENT DIRECTIVE
8
+ You are ALWAYS operating as `@manager` (Team-Lead) by default — on every message, every turn. The user does NOT need to type `@manager`. Typing a specific agent (e.g. `@backend`) explicitly will override this and activate that specialist role directly. You are responsible for analysis and delegation.
9
+
10
+ ⚠️ **CRITICAL STARTUP REQUIREMENT:**
11
+ At the start of every new session/conversation or first turn, before you perform any task or respond to the user:
12
+ 1. You **MUST** read `.antigravitycli/PROJECT_MEMORY.md` immediately (using the `read_project_memory` tool or the most specific file viewing tool) to restore the project's state, active phase, Trace ID, and recent history.
13
+ 2. You **MUST** read `.antigravitycli/agents/manager.md` (or the specialist's md file in `.antigravitycli/agents/` if explicitly overridden) to load your role-specific rules, workflows, and checklists.
14
+
15
+ Please read the Supreme Law thoroughly before taking any action.
package/bin/cli.js CHANGED
@@ -22,7 +22,7 @@ function getPackageVersion() {
22
22
  }
23
23
 
24
24
  function getFrameworkDir() {
25
- const adapters = [".gemini", ".claude", ".cursor", ".enderun", ".codex"];
25
+ const adapters = [".antigravitycli", ".claude", ".cursor", ".enderun", ".codex", ".gemini"];
26
26
  for (const adp of adapters) {
27
27
  const fullPath = path.join(targetDir, adp);
28
28
  if (fs.existsSync(fullPath) && fs.lstatSync(fullPath).isDirectory()) {
@@ -225,6 +225,60 @@ function updateGitIgnore(targetPath, frameworkDir = ".enderun") {
225
225
  }
226
226
  }
227
227
 
228
+ /**
229
+ * Finds the Claude config file path (if it exists).
230
+ */
231
+ function findClaudeConfigPath() {
232
+ const home = process.env.HOME || process.env.USERPROFILE;
233
+ if (!home) return null;
234
+
235
+ const possiblePaths = [
236
+ path.join(home, ".config", "claude", "config.json"),
237
+ path.join(home, ".claude", "config.json"),
238
+ path.join(home, "Library", "Application Support", "Claude", "config.json"), // macOS Claude Desktop
239
+ path.join(home, "Library", "Application Support", "Claude Code", "config.json"), // macOS Claude Code
240
+ path.join(home, ".config", "Claude", "config.json"), // some Linux setups
241
+ ];
242
+
243
+ for (const p of possiblePaths) {
244
+ if (fs.existsSync(p)) {
245
+ return p;
246
+ }
247
+ }
248
+ return null;
249
+ }
250
+
251
+ /**
252
+ * Adds or updates an MCP server entry in Claude's config file.
253
+ */
254
+ function addMcpServerToClaude(configPath, serverName, serverConfig) {
255
+ try {
256
+ let config = { mcpServers: {} };
257
+
258
+ if (fs.existsSync(configPath)) {
259
+ const content = fs.readFileSync(configPath, "utf8");
260
+ config = JSON.parse(content);
261
+ }
262
+
263
+ if (!config.mcpServers) {
264
+ config.mcpServers = {};
265
+ }
266
+
267
+ config.mcpServers[serverName] = serverConfig;
268
+
269
+ // Ensure parent directory exists
270
+ const dir = path.dirname(configPath);
271
+ if (!fs.existsSync(dir)) {
272
+ fs.mkdirSync(dir, { recursive: true });
273
+ }
274
+
275
+ fs.writeFileSync(configPath, JSON.stringify(config, null, 2) + "\n");
276
+ return true;
277
+ } catch (err) {
278
+ return false;
279
+ }
280
+ }
281
+
228
282
  /**
229
283
  * Create initial PROJECT_MEMORY.md if missing.
230
284
  */
@@ -318,13 +372,21 @@ function getPackageManager() {
318
372
  */
319
373
  async function initCommand(selectedAdapter) {
320
374
  const ADAPTERS = {
321
- gemini: ["gemini.md", "gemini-extension.json"],
375
+ antigravity: ["antigravity.md"],
322
376
  claude: ["claude.md"],
323
377
  cursor: ["cursor.md"],
324
378
  codex: ["codex.md"],
379
+ gemini: ["gemini.md"],
325
380
  };
326
381
 
327
- const targetBase = selectedAdapter && selectedAdapter !== "codex" ? `.${selectedAdapter}` : ".enderun";
382
+ let targetBase;
383
+ if (selectedAdapter === "antigravity") {
384
+ targetBase = ".antigravitycli";
385
+ } else if (selectedAdapter && selectedAdapter !== "codex") {
386
+ targetBase = `.${selectedAdapter}`;
387
+ } else {
388
+ targetBase = ".enderun";
389
+ }
328
390
 
329
391
  const targetFrameworkDir = path.join(targetDir, targetBase);
330
392
 
@@ -374,7 +436,7 @@ async function initCommand(selectedAdapter) {
374
436
  let filesToProcess = [...CORE_FILES];
375
437
  if (selectedAdapter) {
376
438
  if (!ADAPTERS[selectedAdapter]) {
377
- console.error(`❌ Invalid adapter: ${selectedAdapter}. Available: gemini, claude, cursor, codex`);
439
+ console.error(`❌ Invalid adapter: ${selectedAdapter}. Available: antigravity, claude, cursor, codex, gemini`);
378
440
  process.exit(1);
379
441
  }
380
442
  filesToProcess.push(...ADAPTERS[selectedAdapter]);
@@ -507,30 +569,33 @@ async function initCommand(selectedAdapter) {
507
569
  console.log("\n🛠️ Running smart configuration for adapters...");
508
570
 
509
571
 
510
- if (selectedAdapter === "gemini") {
511
- // Patch gemini-extension.json to wire up the MCP server automatically
512
- const geminiExtPath = path.join(targetDir, "gemini-extension.json");
513
- try {
514
- const ext = JSON.parse(fs.readFileSync(geminiExtPath, "utf8"));
515
- ext.mcpServers = {
516
- "agent-enderun": {
517
- command: "node",
518
- args: ["framework-mcp/dist/index.js"]
519
- }
520
- };
521
- fs.writeFileSync(geminiExtPath, JSON.stringify(ext, null, 2) + "\n");
522
- console.log("💎 Gemini: MCP server wired up in gemini-extension.json automatically.");
523
- } catch (e) {
524
- console.warn("⚠️ Gemini: Could not patch gemini-extension.json for MCP. Wire it up manually.");
525
- }
526
- console.log(`💎 Gemini: Adapter gemini.md and ${targetBase}/ folder are ready.`);
572
+ if (selectedAdapter === "antigravity") {
573
+ console.log(`🚀 Antigravity: Adapter antigravity.md and ${targetBase}/ folder are ready.`);
527
574
  }
528
575
 
529
576
  if (selectedAdapter === "claude") {
530
577
  const mcpPath = path.join(targetDir, "framework-mcp/src/index.ts");
531
- console.log("\n📝 Claude Code Setup:");
532
- console.log("To enable Agent Enderun tools in Claude Code, run this command:");
533
- console.log(`\x1b[36mclaude config add framework-mcp npx tsx ${mcpPath}\x1b[0m`);
578
+ const mcpConfig = {
579
+ command: "npx",
580
+ args: ["tsx", mcpPath]
581
+ };
582
+
583
+ const claudeConfigPath = findClaudeConfigPath() || path.join(
584
+ process.env.HOME || process.env.USERPROFILE || "",
585
+ "Library", "Application Support", "Claude", "config.json"
586
+ ); // default macOS path if nothing found
587
+
588
+ const success = addMcpServerToClaude(claudeConfigPath, "agent-enderun", mcpConfig);
589
+
590
+ if (success) {
591
+ console.log("✅ Claude: MCP server 'agent-enderun' automatically configured.");
592
+ console.log(` Config file: ${claudeConfigPath}`);
593
+ console.log(" (File was created if it did not exist)");
594
+ } else {
595
+ console.log("\n📝 Claude Code Setup (Automatic failed):");
596
+ console.log("Please run this command manually:");
597
+ console.log(`\x1b[36mclaude config add agent-enderun npx tsx ${mcpPath}\x1b[0m`);
598
+ }
534
599
  }
535
600
 
536
601
  if (selectedAdapter === "cursor") {
@@ -773,8 +838,8 @@ function copyDir(src, dest, skipSet = new Set(), nonDestructive = false, framewo
773
838
 
774
839
  const frameworkBase = frameworkDir.startsWith(".") ? frameworkDir.slice(1) : frameworkDir;
775
840
  let currentAdapter = frameworkBase;
776
- if (entry.name.endsWith(".md") && [ "gemini", "claude", "cursor", "codex" ].some(a => entry.name.startsWith(a))) {
777
- currentAdapter = [ "gemini", "claude", "cursor", "codex" ].find(a => entry.name.startsWith(a));
841
+ if (entry.name.endsWith(".md") && [ "antigravity", "claude", "cursor", "codex", "gemini" ].some(a => entry.name.startsWith(a))) {
842
+ currentAdapter = [ "antigravity", "claude", "cursor", "codex", "gemini" ].find(a => entry.name.startsWith(a));
778
843
  }
779
844
 
780
845
  content = content.replace(/\{\{FRAMEWORK_DIR\}\}/g, frameworkDir);
@@ -2069,7 +2134,7 @@ async function main() {
2069
2134
  🤖 Agent Enderun CLI (v${FRAMEWORK_VERSION})
2070
2135
 
2071
2136
  Available Commands:
2072
- init [adapter] Initialize the framework (gemini, claude, cursor, codex)
2137
+ init [adapter] Initialize the framework (antigravity, claude, cursor, codex, gemini)
2073
2138
  create-app <idea> Generate a full-stack starter from natural language
2074
2139
  check Full health check
2075
2140
  check:security Run security audit scan
package/docs/README.md CHANGED
@@ -1,7 +1,12 @@
1
- # Project Documentation
1
+ # Project Documentation / Proje Dokümantasyonu
2
2
 
3
- This folder is managed by **Agent Enderun agents** and contains documentation
4
- generated for **your project** — not the framework itself.
3
+ English | [Türkçe](#türkçe)
4
+
5
+ ---
6
+
7
+ # English
8
+
9
+ This folder is managed by **Agent Enderun agents** and contains documentation generated for **your project** — not the framework itself.
5
10
 
6
11
  ## What Goes Here
7
12
 
@@ -21,3 +26,28 @@ generated for **your project** — not the framework itself.
21
26
  | `/.enderun/docs/` | **Framework** configuration — tech-stack, security policy, privacy policy |
22
27
 
23
28
  > Agents will populate this folder automatically during **PHASE_2 (Core Development)**.
29
+
30
+ ---
31
+
32
+ # Türkçe
33
+
34
+ Bu klasör **Agent Enderun ajanları** tarafından yönetilir ve framework'ün kendisi için değil, **sizin projeniz** için oluşturulan dokümanları içerir.
35
+
36
+ ## Burada Neler Var?
37
+
38
+ | Dosya | Sahip Ajan | Açıklama |
39
+ | :--- | :--- | :--- |
40
+ | `architecture.md` | @backend | Sistem mimarisi ve veri akış diyagramları |
41
+ | `api-reference.md` | @backend | Genel API uç noktaları ve kullanım örnekleri |
42
+ | `components.md` | @frontend | UI bileşen kataloğu ve kullanım kılavuzları |
43
+ | `deployment.md` | @manager | Dağıtım adımları ve ortam kurulumu |
44
+ | `decisions.md` | @manager | Mimari Karar Kayıtları (ADRs) |
45
+
46
+ ## `.enderun/docs/` Klasöründen Farkı
47
+
48
+ | Yol | Amaç |
49
+ | :--- | :--- |
50
+ | `/docs/` | **Sizin projenizin** dokümantasyonu — özellikler geliştirildikçe ajanlar tarafından yazılır |
51
+ | `/.enderun/docs/` | **Framework** konfigürasyonu — tech-stack, güvenlik politikası, gizlilik politikası |
52
+
53
+ > Ajanlar bu klasörü **PHASE_2 (Core Development)** sırasında otomatik olarak dolduracaktır.