agent-enderun 1.1.5 → 1.1.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (253) hide show
  1. package/ENDERUN.md +13 -10
  2. package/README.md +14 -31
  3. package/bin/run-multi-test.js +77 -0
  4. package/dist/framework-mcp/src/tools/dashboard/start_dashboard.d.ts +5 -0
  5. package/dist/framework-mcp/src/tools/dashboard/start_dashboard.js +30 -0
  6. package/dist/framework-mcp/src/tools/dashboard/start_dashboard.js.map +1 -0
  7. package/dist/framework-mcp/src/tools/definitions.js +118 -0
  8. package/dist/framework-mcp/src/tools/definitions.js.map +1 -1
  9. package/dist/framework-mcp/src/tools/file_system/batch_surgical_edit.d.ts +5 -0
  10. package/dist/framework-mcp/src/tools/file_system/batch_surgical_edit.js +51 -0
  11. package/dist/framework-mcp/src/tools/file_system/batch_surgical_edit.js.map +1 -0
  12. package/dist/framework-mcp/src/tools/file_system/replace_text.js +8 -4
  13. package/dist/framework-mcp/src/tools/file_system/replace_text.js.map +1 -1
  14. package/dist/framework-mcp/src/tools/file_system/write_file.js +3 -0
  15. package/dist/framework-mcp/src/tools/file_system/write_file.js.map +1 -1
  16. package/dist/framework-mcp/src/tools/framework/audit_deps.d.ts +6 -0
  17. package/dist/framework-mcp/src/tools/framework/audit_deps.js +42 -0
  18. package/dist/framework-mcp/src/tools/framework/audit_deps.js.map +1 -0
  19. package/dist/framework-mcp/src/tools/framework/run_tests.d.ts +5 -0
  20. package/dist/framework-mcp/src/tools/framework/run_tests.js +26 -0
  21. package/dist/framework-mcp/src/tools/framework/run_tests.js.map +1 -0
  22. package/dist/framework-mcp/src/tools/index.js +24 -0
  23. package/dist/framework-mcp/src/tools/index.js.map +1 -1
  24. package/dist/framework-mcp/src/tools/memory/get_insights.d.ts +6 -0
  25. package/dist/framework-mcp/src/tools/memory/get_insights.js +35 -0
  26. package/dist/framework-mcp/src/tools/memory/get_insights.js.map +1 -0
  27. package/dist/framework-mcp/src/tools/memory/read_memory.d.ts +6 -0
  28. package/dist/framework-mcp/src/tools/memory/read_memory.js +29 -0
  29. package/dist/framework-mcp/src/tools/memory/read_memory.js.map +1 -0
  30. package/dist/framework-mcp/src/tools/messaging/send_message.js +1 -1
  31. package/dist/framework-mcp/src/tools/messaging/send_message.js.map +1 -1
  32. package/dist/framework-mcp/src/tools/observability/check_ports.d.ts +5 -0
  33. package/dist/framework-mcp/src/tools/observability/check_ports.js +27 -0
  34. package/dist/framework-mcp/src/tools/observability/check_ports.js.map +1 -0
  35. package/dist/framework-mcp/src/tools/observability/get_health.d.ts +5 -0
  36. package/dist/framework-mcp/src/tools/observability/get_health.js +21 -0
  37. package/dist/framework-mcp/src/tools/observability/get_health.js.map +1 -0
  38. package/dist/framework-mcp/src/tools/search/get_gaps.d.ts +6 -0
  39. package/dist/framework-mcp/src/tools/search/get_gaps.js +49 -0
  40. package/dist/framework-mcp/src/tools/search/get_gaps.js.map +1 -0
  41. package/dist/framework-mcp/src/tools/search/get_map.d.ts +6 -0
  42. package/dist/framework-mcp/src/tools/search/get_map.js +45 -0
  43. package/dist/framework-mcp/src/tools/search/get_map.js.map +1 -0
  44. package/dist/framework-mcp/src/tools/search/grep_search.d.ts +5 -0
  45. package/dist/framework-mcp/src/tools/search/grep_search.js +60 -0
  46. package/dist/framework-mcp/src/tools/search/grep_search.js.map +1 -0
  47. package/dist/framework-mcp/src/tools/search/list_dir.d.ts +5 -0
  48. package/dist/framework-mcp/src/tools/search/list_dir.js +29 -0
  49. package/dist/framework-mcp/src/tools/search/list_dir.js.map +1 -0
  50. package/dist/framework-mcp/src/tools/types.d.ts +10 -5
  51. package/dist/framework-mcp/src/utils/compliance.d.ts +5 -0
  52. package/dist/framework-mcp/src/utils/compliance.js +30 -0
  53. package/dist/framework-mcp/src/utils/compliance.js.map +1 -0
  54. package/dist/framework-mcp/tests/tools/messaging/send_message.test.js +5 -5
  55. package/dist/framework-mcp/tests/tools/messaging/send_message.test.js.map +1 -1
  56. package/dist/src/cli/adapters/types.d.ts +2 -2
  57. package/dist/src/cli/adapters.d.ts +1 -1
  58. package/dist/src/cli/adapters.js +45 -77
  59. package/dist/src/cli/adapters.js.map +1 -1
  60. package/dist/src/cli/commands/check.js +52 -6
  61. package/dist/src/cli/commands/check.js.map +1 -1
  62. package/dist/src/cli/commands/init.d.ts +5 -1
  63. package/dist/src/cli/commands/init.js +184 -106
  64. package/dist/src/cli/commands/init.js.map +1 -1
  65. package/dist/src/cli/commands/orchestrate.d.ts +3 -3
  66. package/dist/src/cli/commands/orchestrate.js +14 -8
  67. package/dist/src/cli/commands/orchestrate.js.map +1 -1
  68. package/dist/src/cli/commands/status.js +3 -2
  69. package/dist/src/cli/commands/status.js.map +1 -1
  70. package/dist/src/cli/index.js +4 -3
  71. package/dist/src/cli/index.js.map +1 -1
  72. package/dist/src/cli/shims.js +6 -6
  73. package/dist/src/cli/utils/app-backend.d.ts +2 -0
  74. package/dist/src/cli/utils/app-backend.js +236 -0
  75. package/dist/src/cli/utils/app-backend.js.map +1 -0
  76. package/dist/src/cli/utils/app-docs.d.ts +3 -0
  77. package/dist/src/cli/utils/app-docs.js +59 -0
  78. package/dist/src/cli/utils/app-docs.js.map +1 -0
  79. package/dist/src/cli/utils/app-frontend.d.ts +2 -0
  80. package/dist/src/cli/utils/app-frontend.js +248 -0
  81. package/dist/src/cli/utils/app-frontend.js.map +1 -0
  82. package/dist/src/cli/utils/app-inferrer.d.ts +14 -0
  83. package/dist/src/cli/utils/app-inferrer.js +39 -0
  84. package/dist/src/cli/utils/app-inferrer.js.map +1 -0
  85. package/dist/src/cli/utils/app-types.d.ts +3 -0
  86. package/dist/src/cli/utils/app-types.js +233 -0
  87. package/dist/src/cli/utils/app-types.js.map +1 -0
  88. package/dist/src/cli/utils/app.d.ts +5 -32
  89. package/dist/src/cli/utils/app.js +5 -794
  90. package/dist/src/cli/utils/app.js.map +1 -1
  91. package/dist/src/cli/utils/memory.js +8 -4
  92. package/dist/src/cli/utils/memory.js.map +1 -1
  93. package/dist/src/modules/adapters/antigravity-cli.js +3 -3
  94. package/dist/src/modules/adapters/antigravity-cli.js.map +1 -1
  95. package/dist/src/modules/adapters/claude.js +1 -1
  96. package/dist/src/modules/adapters/claude.js.map +1 -1
  97. package/dist/src/modules/adapters/codex.js +2 -2
  98. package/dist/src/modules/adapters/codex.js.map +1 -1
  99. package/dist/src/modules/adapters/cursor.js +1 -1
  100. package/dist/src/modules/adapters/cursor.js.map +1 -1
  101. package/dist/src/modules/adapters/definitions.d.ts +9 -0
  102. package/dist/src/modules/adapters/definitions.js +124 -0
  103. package/dist/src/modules/adapters/definitions.js.map +1 -0
  104. package/dist/src/modules/adapters/gemini.js +2 -2
  105. package/dist/src/modules/adapters/gemini.js.map +1 -1
  106. package/dist/src/modules/adapters/grok.js +1 -1
  107. package/dist/src/modules/adapters/grok.js.map +1 -1
  108. package/dist/src/modules/agents/definitions.js +26 -27
  109. package/dist/src/modules/agents/definitions.js.map +1 -1
  110. package/dist/src/shared/config.d.ts +3 -3
  111. package/dist/src/shared/logger.js +8 -5
  112. package/dist/src/shared/logger.js.map +1 -1
  113. package/dist/tests/adapter.test.d.ts +1 -0
  114. package/dist/tests/adapter.test.js +129 -0
  115. package/dist/tests/adapter.test.js.map +1 -0
  116. package/dist/tests/agents-definitions.test.d.ts +1 -0
  117. package/dist/tests/agents-definitions.test.js +54 -0
  118. package/dist/tests/agents-definitions.test.js.map +1 -0
  119. package/dist/tests/approve.test.d.ts +1 -0
  120. package/dist/tests/approve.test.js +88 -0
  121. package/dist/tests/approve.test.js.map +1 -0
  122. package/dist/tests/config.test.d.ts +1 -0
  123. package/dist/tests/config.test.js +58 -0
  124. package/dist/tests/config.test.js.map +1 -0
  125. package/dist/tests/container.runner.d.ts +1 -0
  126. package/dist/tests/container.runner.js +68 -0
  127. package/dist/tests/container.runner.js.map +1 -0
  128. package/dist/tests/container.test.d.ts +1 -0
  129. package/dist/tests/container.test.js +73 -0
  130. package/dist/tests/container.test.js.map +1 -0
  131. package/dist/tests/errors.test.d.ts +1 -0
  132. package/dist/tests/errors.test.js +64 -0
  133. package/dist/tests/errors.test.js.map +1 -0
  134. package/dist/tests/fs-utils.test.d.ts +1 -0
  135. package/dist/tests/fs-utils.test.js +101 -0
  136. package/dist/tests/fs-utils.test.js.map +1 -0
  137. package/dist/tests/logger.test.d.ts +1 -0
  138. package/dist/tests/logger.test.js +81 -0
  139. package/dist/tests/logger.test.js.map +1 -0
  140. package/dist/tests/memory-utils.test.d.ts +1 -0
  141. package/dist/tests/memory-utils.test.js +173 -0
  142. package/dist/tests/memory-utils.test.js.map +1 -0
  143. package/dist/tests/orchestrate.test.d.ts +1 -0
  144. package/dist/tests/orchestrate.test.js +131 -0
  145. package/dist/tests/orchestrate.test.js.map +1 -0
  146. package/dist/tests/skills-definitions.test.d.ts +1 -0
  147. package/dist/tests/skills-definitions.test.js +34 -0
  148. package/dist/tests/skills-definitions.test.js.map +1 -0
  149. package/dist/tests/status.test.d.ts +1 -0
  150. package/dist/tests/status.test.js +105 -0
  151. package/dist/tests/status.test.js.map +1 -0
  152. package/dist/tests/string.test.d.ts +1 -0
  153. package/dist/tests/string.test.js +89 -0
  154. package/dist/tests/string.test.js.map +1 -0
  155. package/dist/tests/time.test.d.ts +1 -0
  156. package/dist/tests/time.test.js +48 -0
  157. package/dist/tests/time.test.js.map +1 -0
  158. package/dist/tests/trace.test.d.ts +1 -0
  159. package/dist/tests/trace.test.js +61 -0
  160. package/dist/tests/trace.test.js.map +1 -0
  161. package/dist/vitest.config.js +1 -0
  162. package/dist/vitest.config.js.map +1 -1
  163. package/docs/getting-started.md +4 -0
  164. package/docs/user/corporate-governance.md +25 -0
  165. package/framework-mcp/dist/tools/dashboard/start_dashboard.js +29 -0
  166. package/framework-mcp/dist/tools/definitions.js +118 -0
  167. package/framework-mcp/dist/tools/file_system/batch_surgical_edit.js +50 -0
  168. package/framework-mcp/dist/tools/file_system/replace_text.js +8 -4
  169. package/framework-mcp/dist/tools/file_system/write_file.js +3 -0
  170. package/framework-mcp/dist/tools/framework/audit_deps.js +41 -0
  171. package/framework-mcp/dist/tools/framework/run_tests.js +25 -0
  172. package/framework-mcp/dist/tools/index.js +24 -0
  173. package/framework-mcp/dist/tools/memory/get_insights.js +34 -0
  174. package/framework-mcp/dist/tools/memory/read_memory.js +28 -0
  175. package/framework-mcp/dist/tools/messaging/send_message.js +1 -1
  176. package/framework-mcp/dist/tools/observability/check_ports.js +26 -0
  177. package/framework-mcp/dist/tools/observability/get_health.js +20 -0
  178. package/framework-mcp/dist/tools/search/get_gaps.js +48 -0
  179. package/framework-mcp/dist/tools/search/get_map.js +44 -0
  180. package/framework-mcp/dist/tools/search/grep_search.js +59 -0
  181. package/framework-mcp/dist/tools/search/list_dir.js +28 -0
  182. package/framework-mcp/dist/utils/compliance.js +29 -0
  183. package/framework-mcp/package.json +1 -1
  184. package/framework-mcp/src/tools/dashboard/start_dashboard.ts +33 -0
  185. package/framework-mcp/src/tools/definitions.ts +118 -0
  186. package/framework-mcp/src/tools/file_system/batch_surgical_edit.ts +70 -0
  187. package/framework-mcp/src/tools/file_system/replace_text.ts +10 -4
  188. package/framework-mcp/src/tools/file_system/write_file.ts +5 -0
  189. package/framework-mcp/src/tools/framework/audit_deps.ts +49 -0
  190. package/framework-mcp/src/tools/framework/run_tests.ts +28 -0
  191. package/framework-mcp/src/tools/index.ts +24 -0
  192. package/framework-mcp/src/tools/memory/get_insights.ts +41 -0
  193. package/framework-mcp/src/tools/memory/read_memory.ts +31 -0
  194. package/framework-mcp/src/tools/messaging/send_message.ts +1 -1
  195. package/framework-mcp/src/tools/observability/check_ports.ts +30 -0
  196. package/framework-mcp/src/tools/observability/get_health.ts +25 -0
  197. package/framework-mcp/src/tools/search/get_gaps.ts +54 -0
  198. package/framework-mcp/src/tools/search/get_map.ts +50 -0
  199. package/framework-mcp/src/tools/search/grep_search.ts +66 -0
  200. package/framework-mcp/src/tools/search/list_dir.ts +34 -0
  201. package/framework-mcp/src/tools/types.ts +11 -1
  202. package/framework-mcp/src/utils/compliance.ts +37 -0
  203. package/framework-mcp/tests/tools/messaging/send_message.test.ts +5 -5
  204. package/package.json +3 -3
  205. package/src/cli/adapters/types.ts +2 -2
  206. package/src/cli/adapters.ts +45 -80
  207. package/src/cli/commands/check.ts +52 -6
  208. package/src/cli/commands/init.ts +193 -114
  209. package/src/cli/commands/orchestrate.ts +14 -8
  210. package/src/cli/commands/status.ts +3 -2
  211. package/src/cli/index.ts +4 -3
  212. package/src/cli/shims.ts +6 -6
  213. package/src/cli/utils/app-backend.ts +249 -0
  214. package/src/cli/utils/app-docs.ts +65 -0
  215. package/src/cli/utils/app-frontend.ts +257 -0
  216. package/src/cli/utils/app-inferrer.ts +53 -0
  217. package/src/cli/utils/app-types.ts +243 -0
  218. package/src/cli/utils/app.ts +5 -849
  219. package/src/cli/utils/memory.ts +8 -4
  220. package/src/modules/adapters/definitions.ts +125 -0
  221. package/src/modules/agents/definitions.ts +26 -27
  222. package/src/shared/logger.ts +8 -5
  223. package/templates/prompts/bug-fix-recipe.md +20 -0
  224. package/templates/prompts/new-feature-recipe.md +19 -0
  225. package/templates/prompts/refactoring-recipe.md +21 -0
  226. package/templates/standards/architecture-standards.md +23 -0
  227. package/templates/standards/crud-governance.md +21 -0
  228. package/templates/standards/frontend-standards.md +38 -0
  229. package/templates/standards/i18n-standards.md +17 -0
  230. package/templates/standards/logging-and-secrets.md +29 -0
  231. package/templates/standards/mobile-standards.md +24 -0
  232. package/templates/standards/quality-standards.md +31 -0
  233. package/templates/standards/security-standards.md +21 -0
  234. package/templates/standards/tailwind-standards.md +20 -0
  235. package/templates/standards/testing-standards.md +31 -0
  236. package/src/modules/adapters/antigravity-cli.ts +0 -25
  237. package/src/modules/adapters/claude.ts +0 -36
  238. package/src/modules/adapters/codex.ts +0 -22
  239. package/src/modules/adapters/cursor.ts +0 -22
  240. package/src/modules/adapters/gemini.ts +0 -27
  241. package/src/modules/adapters/grok.ts +0 -20
  242. package/templates/architecture/agents-manifest.md +0 -79
  243. package/templates/architecture/approval-flows.md +0 -61
  244. package/templates/architecture/enterprise-architecture.md +0 -69
  245. package/templates/architecture/standards/crud-governance.md +0 -46
  246. package/templates/architecture/standards/data-fetching-patterns.md +0 -13
  247. package/templates/architecture/standards/design-system.md +0 -31
  248. package/templates/architecture/standards/documentation-ownership.md +0 -21
  249. package/templates/architecture/standards/logging.md +0 -7
  250. package/templates/architecture/standards/mobile-standards.md +0 -48
  251. package/templates/architecture/standards/tech-stack.md +0 -9
  252. package/templates/backend/error-handling.md +0 -74
  253. package/templates/frontend/component-patterns.md +0 -91
@@ -5,6 +5,7 @@ import { sleep } from "./time.js";
5
5
  import { generateULID } from "./time.js";
6
6
  import { FRAMEWORK_DIR_CANDIDATES } from "../adapters.js";
7
7
  import { EnderunConfigSchema } from "./config-schema.js";
8
+ import { logger } from "../../shared/logger.js";
8
9
 
9
10
  const CWD = process.cwd();
10
11
  const HOME = os.homedir();
@@ -19,7 +20,9 @@ function findFrameworkDir(basePath: string): string | null {
19
20
  if (fs.existsSync(customDir)) return customDir;
20
21
  }
21
22
  }
22
- } catch { /* ignore */ }
23
+ } catch (err) {
24
+ logger.debug("Failed to read package.json in findFrameworkDir", err);
25
+ }
23
26
 
24
27
  for (const dir of FRAMEWORK_DIR_CANDIDATES) {
25
28
  const dirPath = path.join(basePath, dir);
@@ -71,8 +74,9 @@ export function getConfiguredPaths(): { backend: string; frontend: string; docs:
71
74
  result.error.issues.forEach(err => console.error(` - ${err.path.join(".")}: ${err.message}`));
72
75
  }
73
76
  }
74
- } catch {
77
+ } catch (err) {
75
78
  console.error("\n❌ Critical Error: Could not read or parse configuration file.");
79
+ logger.debug("Critical config read failure", err);
76
80
  }
77
81
  return defaultPaths;
78
82
  }
@@ -100,8 +104,8 @@ export function acquireMemoryLock(lockPath: string, maxRetries = 5): boolean {
100
104
  return true;
101
105
  }
102
106
  }
103
- } catch {
104
- // ignore stat or unlink failures
107
+ } catch (err) {
108
+ logger.debug("Lock check or breaking failed", err);
105
109
  }
106
110
 
107
111
  if (attempt < maxRetries - 1) sleep(1000);
@@ -0,0 +1,125 @@
1
+ import path from "path";
2
+ import type { AdapterConfig, AdapterId } from "../../cli/adapters/types.js";
3
+ import { addMcpServerToClaude, findClaudeConfigPath } from "../../cli/utils/claude.js";
4
+ import { writeJsonFile } from "../../shared/fs.js";
5
+ import { registerGlobalAntigravityPlugins } from "./shared.js";
6
+
7
+ /**
8
+ * Mapped Adapter Configurations
9
+ */
10
+ export const ADAPTER_CONFIGS: Record<AdapterId, AdapterConfig> = {
11
+ gemini: {
12
+ id: "gemini",
13
+ frameworkDir: ".antigravity",
14
+ shimFile: "GEMINI.md",
15
+ shimTemplate: "src/cli/shims/gemini.md",
16
+ role: "commander",
17
+ templateDir: ".enderun",
18
+ nestedDirs: ["plugins", "rules"],
19
+ agentsDir: ".antigravity/plugins",
20
+ agentsExt: ".md"
21
+ },
22
+ claude: {
23
+ id: "claude",
24
+ frameworkDir: ".claude",
25
+ shimFile: "CLAUDE.md",
26
+ shimTemplate: "src/cli/shims/claude.md",
27
+ role: "architect",
28
+ templateDir: ".enderun",
29
+ nestedDirs: ["agents", "rules"],
30
+ agentsDir: ".claude/agents",
31
+ agentsExt: ".md"
32
+ },
33
+ grok: {
34
+ id: "grok",
35
+ frameworkDir: ".grok",
36
+ shimFile: "GROK.md",
37
+ shimTemplate: "src/cli/shims/grok.md",
38
+ role: "researcher",
39
+ templateDir: ".enderun",
40
+ nestedDirs: ["rules"],
41
+ agentsDir: ".grok",
42
+ agentsExt: ".md"
43
+ },
44
+ cursor: {
45
+ id: "cursor",
46
+ frameworkDir: ".cursor",
47
+ shimFile: "CURSOR.md",
48
+ shimTemplate: "src/cli/shims/cursor.mdc",
49
+ role: "implementer",
50
+ templateDir: ".enderun",
51
+ nestedDirs: ["rules"],
52
+ agentsDir: ".cursor/rules",
53
+ agentsExt: ".mdc"
54
+ },
55
+ codex: {
56
+ id: "codex",
57
+ frameworkDir: ".agents",
58
+ shimFile: "copilot-instructions.md",
59
+ shimTemplate: "src/cli/shims/codex.md",
60
+ role: "implementer",
61
+ templateDir: ".enderun",
62
+ nestedDirs: ["skills", "rules", "instructions"],
63
+ agentsDir: ".agents/skills",
64
+ agentsExt: ".md"
65
+ },
66
+ "antigravity-cli": {
67
+ id: "antigravity-cli",
68
+ frameworkDir: ".antigravity",
69
+ shimFile: "AGENTS.md",
70
+ shimTemplate: "src/cli/shims/antigravity-cli.md",
71
+ role: "general",
72
+ templateDir: ".enderun",
73
+ nestedDirs: ["agents", "plugins", "rules"],
74
+ agentsDir: ".antigravity/agents",
75
+ agentsExt: ".md"
76
+ }
77
+ };
78
+
79
+ /**
80
+ * Post-Initialization Handlers for specific adapters
81
+ */
82
+ export const POST_INIT_HANDLERS: Record<AdapterId, (projectRoot: string, mcpBlock: unknown) => void> = {
83
+ gemini: (projectRoot, mcpBlock) => {
84
+ const frameworkDir = ADAPTER_CONFIGS.gemini.frameworkDir;
85
+ writeJsonFile(path.join(projectRoot, frameworkDir, "mcp.json"), mcpBlock);
86
+ console.warn(`✅ Gemini MCP registered → ${frameworkDir}/mcp.json`);
87
+ registerGlobalAntigravityPlugins(mcpBlock);
88
+ },
89
+ claude: (projectRoot, mcpBlock) => {
90
+ const configPath = findClaudeConfigPath();
91
+ if (configPath) {
92
+ const block = mcpBlock as { mcpServers: Record<string, unknown> };
93
+ const mcpEntry = block.mcpServers["agent-enderun"] as Record<string, unknown>;
94
+ const ok = addMcpServerToClaude(configPath, "agent-enderun", mcpEntry);
95
+ if (ok) console.warn(`✅ Claude MCP registered → ${configPath}`);
96
+ }
97
+ const frameworkDir = ADAPTER_CONFIGS.claude.frameworkDir;
98
+ writeJsonFile(path.join(projectRoot, frameworkDir, "mcp_config.json"), mcpBlock);
99
+ writeJsonFile(path.join(projectRoot, ".mcp.json"), mcpBlock);
100
+ console.warn("✅ Claude Code Project MCP → .mcp.json");
101
+ },
102
+ grok: (projectRoot, mcpBlock) => {
103
+ const frameworkDir = ADAPTER_CONFIGS.grok.frameworkDir;
104
+ writeJsonFile(path.join(projectRoot, frameworkDir, "mcp_config.json"), mcpBlock);
105
+ console.warn(`✅ Grok MCP → ${frameworkDir}/mcp_config.json`);
106
+ },
107
+ cursor: (projectRoot, mcpBlock) => {
108
+ const frameworkDir = ADAPTER_CONFIGS.cursor.frameworkDir;
109
+ writeJsonFile(path.join(projectRoot, frameworkDir, "mcp.json"), mcpBlock);
110
+ console.warn(`✅ Cursor IDE Project MCP → ${frameworkDir}/mcp.json`);
111
+ },
112
+ codex: (projectRoot, mcpBlock) => {
113
+ const frameworkDir = ADAPTER_CONFIGS.codex.frameworkDir;
114
+ writeJsonFile(path.join(projectRoot, frameworkDir, "mcp_config.json"), mcpBlock);
115
+ writeJsonFile(path.join(projectRoot, ".vscode/mcp.json"), mcpBlock);
116
+ writeJsonFile(path.join(projectRoot, ".mcp.json"), mcpBlock);
117
+ console.warn("✅ GitHub Copilot Project MCP → .vscode/mcp.json & .mcp.json");
118
+ },
119
+ "antigravity-cli": (projectRoot, mcpBlock) => {
120
+ const frameworkDir = ADAPTER_CONFIGS["antigravity-cli"].frameworkDir;
121
+ writeJsonFile(path.join(projectRoot, frameworkDir, "mcp_config.json"), mcpBlock);
122
+ console.warn(`✅ Antigravity CLI MCP → ${frameworkDir}/mcp_config.json`);
123
+ registerGlobalAntigravityPlugins(mcpBlock);
124
+ }
125
+ };
@@ -14,13 +14,13 @@ export const ALL_AGENTS: AgentDefinition[] = [
14
14
  {
15
15
  name: "manager",
16
16
  displayName: "Manager (Orchestrator)",
17
- role: "Orchestration",
18
- description: "The Supreme Manager and Strategic Orchestrator of the Enderun Army.",
17
+ role: "Corporate Orchestration & AL Governance",
18
+ description: "The Supreme Manager and Strategic Orchestrator of the Enderun Army. Acts as the AL Management Assistant.",
19
19
  capability: 10,
20
- tags: ["core", "orchestration"],
20
+ tags: ["core", "orchestration", "governance"],
21
21
  stateMachine: "../schema/agent-lifecycle-schema.json",
22
- tools: ["orchestrate_loop", "send_agent_message", "view_file", "list_dir", "grep_search"],
23
- instructions: "You represent the Enderun Discipline (Osmanlı Nizami). Your word is the law for the specialists. Delegate tasks with precision using the send_agent_message tool. Enforce the Zero-Mock, Zero-UI-Library, and Branded Types policies strictly. Audit all specialist outputs and handle high-risk actions through the human-in-the-loop approval flow (managerApproval) via the approve command. Always sync active memory in PROJECT_MEMORY.md."
22
+ tools: ["orchestrate_loop", "send_agent_message", "read_project_memory", "get_memory_insights", "update_project_memory", "get_project_gaps", "get_project_map", "audit_dependencies", "list_dir", "grep_search", "get_framework_status", "get_system_health", "check_active_ports", "start_dashboard"],
23
+ instructions: "You are the AL (Agent Lifecycle) Management Assistant and the SUPREME DISCIPLINE ENFORCER of the Enderun Army. Your primary mission is to ensure ZERO DEVIATION from the established 'Nizam-ı Enderun' standards. \n\n### THE LAW OF ZERO DEVIATION:\n1. **Absolute Compliance:** If a specialist violates any rule in 'ENDERUN.md' (e.g., using 'any', 'console.log', or overwriting a file), you must IMMEDIATELY mark the project as 'FROZEN' and the task as 'BLOCKED'. No further action is permitted until the breach is purged.\n2. **Phase Wall:** You are the gatekeeper. No phase transition is allowed if even a single 'TODO' or 'Lint Error' exists in the current scope.\n3. **Orchestration & Audit:** Every message from specialists must be audited for constitutional compliance before you delegate the next sub-task.\n4. **Strategic Recipes:** For complex tasks like refactoring, bug-fixing, or adding new features, ALWAYS direct specialists to read the corresponding recipe in '.enderun/prompts/'.\n5. **Surgical Precision:** Reject any proposal that suggests a 'full file overwrite' unless the file is under 50 lines.\n6. **Completion & Gap Analysis:** Use 'get_project_gaps' to scan for unfinished logic. Unfinished work is a breach of discipline.\n7. **System Health & Observability:** Periodically use 'get_system_health' and 'check_active_ports' to ensure the development environment is stable.\n8. **Memory Integrity:** Synchronize 'PROJECT_MEMORY.md' after every single turn. Memory drift is an act of treason."
24
24
  },
25
25
  {
26
26
  name: "architect",
@@ -30,7 +30,7 @@ export const ALL_AGENTS: AgentDefinition[] = [
30
30
  capability: 9,
31
31
  tags: ["core", "design"],
32
32
  stateMachine: "../schema/agent-lifecycle-schema.json",
33
- tools: ["view_file", "write_file", "replace_text", "list_dir", "grep_search"],
33
+ tools: ["read_file", "write_file", "replace_text", "batch_surgical_edit", "list_dir", "grep_search", "update_contract_hash", "read_project_memory", "get_memory_insights"],
34
34
  instructions: "Design the project's foundation. Design must be flawless and adhere to the Nizam. You possess the Control Plane Governance & Locking skill. Always prioritize reading rules and governance documents before designing contracts. Ensure type contract stability (contract.version.json), strictly forbid 'any' type, and enforce type safety across all boundaries."
35
35
  },
36
36
  {
@@ -41,10 +41,9 @@ export const ALL_AGENTS: AgentDefinition[] = [
41
41
  capability: 9,
42
42
  tags: ["core", "logic"],
43
43
  stateMachine: "../schema/agent-lifecycle-schema.json",
44
- tools: ["view_file", "replace_text", "run_shell_command", "list_dir", "grep_search"],
44
+ tools: ["read_file", "write_file", "replace_text", "batch_surgical_edit", "patch_file", "list_dir", "grep_search", "read_project_memory", "get_memory_insights"],
45
45
  instructions: "Focus on server logic and databases. Any deviation from the Ferman is a breach of discipline. You possess the Database Management & Migrations skill. Always prioritize reading rules and skills/database_management.md before writing API handlers or database code. Strictly enforce Branded Types for all IDs, use Kysely for queries (strictly forbid raw SQL strings), isolate queries in repository/service layers (forbid direct DB calls in controllers), and use robust try/catch blocks for error handling. You are strictly prohibited from performing High-Risk Administrative Operations (User/role management, bulk deletes, schema alterations, billing changes) autonomously. If requested, you must return a standard refusal, write a managerApproval request via send_agent_message to @manager, and shift to WAITING status."
46
- },
47
- {
46
+ }, {
48
47
  name: "frontend",
49
48
  displayName: "Frontend Specialist",
50
49
  role: "Frontend Development",
@@ -52,19 +51,19 @@ export const ALL_AGENTS: AgentDefinition[] = [
52
51
  capability: 9,
53
52
  tags: ["core", "ui"],
54
53
  stateMachine: "../schema/agent-lifecycle-schema.json",
55
- tools: ["view_file", "replace_text", "list_dir", "grep_search"],
56
- instructions: "Build elegant, disciplined, and 100% responsive UIs. Always prioritize reading design standards and guidelines (like component-patterns.md) under docs/ or the framework's knowledge directory before starting any UI task. Enforce Mobile-First design, object-based responsive syntax ({ base: '...', md: '...' }), dynamic viewport units (dvh, dvw), and type-safe Panda CSS tokens. Never use external UI libraries. You are strictly prohibited from creating administrative UI elements (user/role management pages, billing pages, raw schema management tools) autonomously. Redirect such requests to @manager and request approval."
54
+ tools: ["read_file", "write_file", "replace_text", "batch_surgical_edit", "patch_file", "list_dir", "grep_search", "read_project_memory", "get_memory_insights"],
55
+ instructions: "Build elegant, disciplined, and 100% responsive UIs that adapt flawlessly to mobile, tablet, and desktop viewports. ALWAYS read 'frontend-standards.md' and 'i18n-standards.md' before starting. \n\n### MANDATORY STANDARDS:\n1. **Panda/Tailwind CSS:** Follow the specific framework standards strictly. Avoid ad-hoc utility classes for layout.\n2. **i18n Discipline:** NEVER hardcode user-facing strings. Move all text to 'locales/' JSON files.\n3. **Responsive-First Architecture:** Always design Mobile-First. Use object-based syntax for ALL layouts (e.g., width: { base: '100%', md: '50%', lg: '33.33%' }). Do not use hardcoded pixel values for core layout grids.\n4. **Flexbox & Grid-First:** Forbid absolute layout positioning (`position: absolute`) for general page structure. Use flex layouts or CSS Grid to handle variable screen heights and widths.\n5. **Fluid Typography & Spacing:** Utilize clamp() or viewport-based spacing formulas to ensure texts and margins scale smoothly across screen sizes without breaking layouts.\n6. **Viewport Overflow Guard:** Ensure all interactive components prevent horizontal scrolls by applying proper box-sizing, max-width bounds, and layout container margins.\n7. **Atomic UI:** Create shared components ONLY in 'apps/web/src/components/ui/'."
57
56
  },
58
57
  {
59
58
  name: "quality",
60
59
  displayName: "Quality Specialist",
61
- role: "Quality Audit",
62
- description: "Audit, Testing, and Compliance specialist.",
60
+ role: "Quality Audit & Discipline Enforcer",
61
+ description: "Audit, Testing, and Compliance specialist. The guardian of code discipline.",
63
62
  capability: 9,
64
- tags: ["core", "audit"],
63
+ tags: ["core", "audit", "discipline"],
65
64
  stateMachine: "../schema/agent-lifecycle-schema.json",
66
- tools: ["run_shell_command", "view_file", "list_dir", "grep_search"],
67
- instructions: "You are the inspector of the Nizam. Ensure every unit's work is perfect. You possess the Quality Assurance & Testing skill. Always prioritize reading skills/quality_assurance.md (or equivalent inside the framework's skills directory) before performing audits, running linting, or checking coverage."
65
+ tools: ["list_dir", "grep_search", "read_file", "get_project_gaps", "read_project_memory", "get_memory_insights", "run_tests", "log_agent_action"],
66
+ instructions: "You are the supreme inspector of the Enderun Army. ALWAYS read 'quality-standards.md' and 'testing-standards.md' before auditing. \n\n### MANDATORY STANDARDS:\n1. **Otonom Test:** Execute 'run_tests' after any logic change. If tests fail, analyze the stderr and pinpoint the exact line of failure.\n2. **Hata Takibi:** If a specialist's code fails, log a 'FAILURE' action with 'log_agent_action' and include the stack trace. Notify @manager to FREEZE the task.\n3. **Test Coverage:** Ensure every new service or logic has a corresponding '.test.ts' file using Vitest.\n4. **Zero Tolerance:** Reject any code with lint errors, 'any' usage, or hardcoded 'console.log'.\n5. **Pattern Guard:** Enforce 'Given-When-Then' pattern in all test suites."
68
67
  },
69
68
  {
70
69
  name: "database",
@@ -74,7 +73,7 @@ export const ALL_AGENTS: AgentDefinition[] = [
74
73
  capability: 9,
75
74
  tags: ["core", "data"],
76
75
  stateMachine: "../schema/agent-lifecycle-schema.json",
77
- tools: ["view_file", "replace_text", "run_shell_command", "list_dir"],
76
+ tools: ["read_file", "write_file", "replace_text", "list_dir", "grep_search", "read_project_memory"],
78
77
  instructions: "Manage data as the empire's treasury. Secure and optimized. You possess the Database Management & Migrations skill. Always prioritize reading skills/database_management.md (or equivalent inside the framework's skills directory) before modifying databases, designing schemas, or creating migrations."
79
78
  },
80
79
  {
@@ -85,8 +84,8 @@ export const ALL_AGENTS: AgentDefinition[] = [
85
84
  capability: 9,
86
85
  tags: ["core", "infra"],
87
86
  stateMachine: "../schema/agent-lifecycle-schema.json",
88
- tools: ["run_shell_command", "view_file", "list_dir"],
89
- instructions: "Maintain reliable supply lines and systems like fortresses. You possess the DevOps & Infrastructure skill. Always prioritize reading skills/devops_infrastructure.md (or equivalent inside the framework's skills directory) before managing CI/CD pipelines, containerization, or editing deployment configurations."
87
+ tools: ["run_shell_command", "view_file", "list_dir", "get_system_health", "check_active_ports", "read_project_memory"],
88
+ instructions: "Maintain reliable supply lines and systems like fortresses. You possess the DevOps & Infrastructure skill. Always prioritize reading skills/devops_infrastructure.md before managing configurations. \n\n### SYSTEM GUARDIAN:\n1. **Health Check:** Use 'get_system_health' to monitor RAM and CPU usage. If resources are critically low, alert @manager.\n2. **Port Audit:** Use 'check_active_ports' to verify that development servers (Next.js, API, DB) are running on correct ports.\n3. **Environment Isolation:** Ensure all services are correctly containerized and environment variables are strictly managed via '.env'."
90
89
  },
91
90
  {
92
91
  name: "explorer",
@@ -96,7 +95,7 @@ export const ALL_AGENTS: AgentDefinition[] = [
96
95
  capability: 8,
97
96
  tags: ["core", "recon"],
98
97
  stateMachine: "../schema/agent-lifecycle-schema.json",
99
- tools: ["view_file", "list_dir", "grep_search", "glob"],
98
+ tools: ["read_file", "list_dir", "grep_search", "get_project_map", "read_project_memory", "get_memory_insights"],
100
99
  instructions: "Gather tactical intelligence and map dependencies for the Manager. You possess the Reconnaissance & Context Discovery skill. Strictly execute the Architecture Discovery Protocol (ADP): identify main entry points (index.ts, main.ts), scan domain structures, and map file dependencies. You operate strictly in read-only mode; never suggest, write, or modify codebase files directly."
101
100
  },
102
101
  {
@@ -107,7 +106,7 @@ export const ALL_AGENTS: AgentDefinition[] = [
107
106
  capability: 9,
108
107
  tags: ["core", "logistics"],
109
108
  stateMachine: "../schema/agent-lifecycle-schema.json",
110
- tools: ["run_shell_command", "view_file", "list_dir"],
109
+ tools: ["list_dir", "grep_search", "read_project_memory"],
111
110
  instructions: "Manage the scrolls of history. Every commit must be atomic and traceable. You possess the Version Control skill. Strictly enforce that every git commit message is prefixed with the active Trace ID (e.g., '[TraceId] Description') to maintain traceability, ensure all commits are atomic (containing a single logical change), and follow standard git-flow branching rules."
112
111
  },
113
112
  {
@@ -118,8 +117,8 @@ export const ALL_AGENTS: AgentDefinition[] = [
118
117
  capability: 9,
119
118
  tags: ["core", "mobile"],
120
119
  stateMachine: "../schema/agent-lifecycle-schema.json",
121
- tools: ["view_file", "replace_text", "list_dir", "grep_search"],
122
- instructions: "Build highly performant and responsive React Native / Expo mobile UIs. Always prioritize reading mobile design guidelines (like mobile-standards.md) under docs/ or the framework's knowledge directory before starting. Adhere strictly to Mobile Standards, using dynamic window dimensions calculated via useWindowDimensions hook, Expo SafeAreaProvider and SafeAreaView wrapper integration, and dynamic scaling. Completely forbid hardcoded fixed pixel height/width values in layout structures (except small icons/avatars up to 48px)."
120
+ tools: ["read_file", "write_file", "replace_text", "batch_surgical_edit", "list_dir", "grep_search", "read_project_memory"],
121
+ instructions: "Build high-performance React Native / Expo apps that adapt dynamically to different screen aspect ratios (from compact SE phones to tablets). ALWAYS read 'mobile-standards.md' in the knowledge directory before starting.\n\n### MANDATORY STANDARDS:\n1. **Dynamic Scaling:** Use the 'useWindowDimensions' hook or proportional layout dimensions (percentages / flex ratios). Strictly forbid hardcoded layout pixel sizes for parent containers and major components.\n2. **SafeArea Compliance:** Wrap all screen views in `SafeAreaProvider` and `SafeAreaView` from `react-native-safe-area-context` to handle notch and home indicator spacing gracefully without overlapping text or status bars.\n3. **Text Overflow Guard:** Always set appropriate text styling (like numberOfLines and ellipsizeMode) and dynamic wrapper heights to ensure that system-wide accessibility font scaling doesn't truncate or break the layout.\n4. **FlashList:** Use Shopify's FlashList for all scrollable lists. Ensure items have correct estimated sizes to optimize UI thread frame rates on lower-end devices.\n5. **Touch Targets & Accessibility:** All touchable components (TouchableOpacity, Pressable) must have a minimum interactive target size of 44dp x 44dp to be accessible on all touchscreen devices.\n6. **Offline-First:** Implement caching via React Query and local storage."
123
122
  },
124
123
  {
125
124
  name: "native",
@@ -129,7 +128,7 @@ export const ALL_AGENTS: AgentDefinition[] = [
129
128
  capability: 9,
130
129
  tags: ["core", "native"],
131
130
  stateMachine: "../schema/agent-lifecycle-schema.json",
132
- tools: ["view_file", "replace_text", "run_shell_command", "list_dir"],
131
+ tools: ["read_file", "write_file", "replace_text", "list_dir", "grep_search", "read_project_memory"],
133
132
  instructions: "Handle deep layers of the OS with paramount security."
134
133
  },
135
134
  {
@@ -140,8 +139,8 @@ export const ALL_AGENTS: AgentDefinition[] = [
140
139
  capability: 10,
141
140
  tags: ["core", "security"],
142
141
  stateMachine: "../schema/agent-lifecycle-schema.json",
143
- tools: ["view_file", "replace_text", "grep_search", "run_shell_command"],
144
- instructions: "Guardian of the Nizam. block any action that endangers the project. You possess the Control Plane Governance & Locking skill. Enforce multi-tenant Row Level Security (RLS) policies on the database, ensure strict encryption standards, manage security key rotation, and block any commits or files containing hardcoded secrets (API keys, passwords, private keys)."
142
+ tools: ["read_file", "replace_text", "grep_search", "read_project_memory", "get_memory_insights"],
143
+ instructions: "Guardian of the Nizam. Block any action that endangers the project. ALWAYS read 'security-standards.md' in the knowledge directory before starting. \n\n### MANDATORY STANDARDS:\n1. **RLS Enforcement:** Ensure multi-tenant Row Level Security (RLS) policies are active on all database tables.\n2. **No Secrets:** Block any commit containing hardcoded secrets (API keys, passwords). Force the use of '.env'.\n3. **Ham SQL Forbidden:** Ensure all database queries use Kysely. Reject raw SQL strings.\n4. **Audit Logs:** Monitor and log all high-risk administrative actions."
145
144
  },
146
145
  {
147
146
  name: "analyst",
@@ -151,7 +150,7 @@ export const ALL_AGENTS: AgentDefinition[] = [
151
150
  capability: 9,
152
151
  tags: ["core", "strategy"],
153
152
  stateMachine: "../schema/agent-lifecycle-schema.json",
154
- tools: ["view_file", "list_dir", "grep_search"],
153
+ tools: ["read_file", "list_dir", "grep_search", "get_project_map", "read_project_memory", "get_memory_insights"],
155
154
  instructions: "Audit of truth and contracts within the Army. You possess the Strategy Analysis & Specification Validation skill. Verify that user requirements (from docs/ or specifications) are correctly mapped to API schemas and types, enforce the Contract-First development model strictly before any application code is written, and validate that API versioning changes are correctly registered in contract.version.json."
156
155
  }
157
156
  ];
@@ -47,7 +47,8 @@ export class EnterpriseLogger {
47
47
  fs.mkdirSync(dir, { recursive: true });
48
48
  }
49
49
  } catch (err) {
50
- console.error(`[Logger] Failed to create log directory: ${err}`);
50
+ // Directly write to stderr using console here would be circular
51
+ process.stderr.write(`[Logger] Failed to create log directory: ${err}\n`);
51
52
  }
52
53
  }
53
54
  }
@@ -98,11 +99,12 @@ export class EnterpriseLogger {
98
99
 
99
100
  const formatted = this.formatMessage(level, message, meta);
100
101
 
101
- // Output to console
102
+ // Route to stderr for ERROR/FATAL, stdout otherwise.
103
+ // Using process.write directly here is intentional — this IS the logger.
102
104
  if (level >= LogLevel.ERROR) {
103
- console.error(formatted);
105
+ process.stderr.write(formatted + "\n");
104
106
  } else {
105
- console.log(formatted);
107
+ process.stdout.write(formatted + "\n");
106
108
  }
107
109
 
108
110
  // Output to file if configured
@@ -110,7 +112,8 @@ export class EnterpriseLogger {
110
112
  try {
111
113
  fs.appendFileSync(this.config.logFile, formatted + "\n", "utf8");
112
114
  } catch (err) {
113
- console.error(`[Logger] Failed to write to log file: ${err}`);
115
+ // Directly write to stderr using console here would be circular
116
+ process.stderr.write(`[Logger] Failed to write to log file: ${err}\n`);
114
117
  }
115
118
  }
116
119
  }
@@ -0,0 +1,20 @@
1
+ # 🐞 Bilimsel Hata Ayıklama (Bug-Fix) Reçetesi
2
+
3
+ Bu reçete, bir hatayı otonom olarak nasıl tespit edip kalıcı olarak çözeceğinizi tanımlar.
4
+
5
+ ## 1. Yeniden Üretim (Reproduction)
6
+ - Hatayı bildiren logları (`audit_log.md`) analiz edin.
7
+ - Hatayı tetikleyen en küçük test vakasını (failing test) yazın.
8
+
9
+ ## 2. Kök Neden Analizi (Root Cause)
10
+ - `get_system_health` ile sistem kaynaklarını kontrol edin.
11
+ - `check_active_ports` ile servislerin durumunu doğrulayın.
12
+ - `read_file` ile ilgili kod bloklarını satır satır inceleyin.
13
+
14
+ ## 3. Onarım (Surgical Fix)
15
+ - Sadece hatayı düzeltecek cerrahi müdahaleyi yapın.
16
+ - ".env" içinde eksik bir değişken olup olmadığını kontrol edin.
17
+
18
+ ## 4. Kalıcı Çözüm
19
+ - Yazdığınız testin geçtiğini doğrulayın.
20
+ - Benzer hataların oluşmaması için `quality-standards.md` güncellenmesi gerekiyorsa öneri sunun.
@@ -0,0 +1,19 @@
1
+ # ✨ Yeni Özellik (New Feature) Geliştirme Reçetesi
2
+
3
+ Yeni bir modül veya özellik eklerken takip edilmesi gereken "Nizam-ı Enderun" adımları.
4
+
5
+ ## 1. Kontrat Tasarımı (Phase 1)
6
+ - Önce `contract.version.json` dosyasını ve ilgili TypeScript tiplerini güncelleyin.
7
+ - `@architect` onayı almadan kod yazmaya başlamayın.
8
+
9
+ ## 2. Mock-Free Geliştirme (Phase 2)
10
+ - Yeni özelliği `apps/backend` veya `apps/web` altında doğru dizine ekleyin.
11
+ - Veritabanı değişikliği gerekiyorsa `@database` ajanıyla koordine olun.
12
+
13
+ ## 3. Responsive & i18n (Phase 3)
14
+ - Frontend geliştirmelerinde `{ base: '...', md: '...' }` responsive sözdizimini kullanın.
15
+ - Tüm metinleri anında `locales/` altına taşıyın.
16
+
17
+ ## 4. Tamamlama (Phase 4)
18
+ - `get_project_gaps` ile hiçbir TODO kalmadığından emin olun.
19
+ - `audit_dependencies` ile yeni bir paket kirliliği yaratmadığınızı doğrulayın.
@@ -0,0 +1,21 @@
1
+ # 🛠️ Cerrahi Refactoring Reçetesi
2
+
3
+ Bu reçete, mevcut bir kodu projenin diğer kısımlarını bozmadan nasıl modernize edeceğinizi tanımlar.
4
+
5
+ ## 1. Keşif (Reconnaissance)
6
+ - `grep_search` kullanarak refactor edilecek fonksiyonun tüm referanslarını bulun.
7
+ - `get_project_map` ile modülün bağımlılık grafiğini anlayın.
8
+ - Mevcut testleri koşturarak (`run_tests`) baz hattını (baseline) doğrulayın.
9
+
10
+ ## 2. Planlama (Strategy)
11
+ - Değişikliği küçük, atomik adımlara bölün.
12
+ - Yeni tipleri ve arayüzleri (interfaces) önce tanımlayın.
13
+
14
+ ## 3. Uygulama (Surgical Execution)
15
+ - **KURAL:** Dosyayı asla tamamen silmeyin. Sadece `replace_text` veya `batch_surgical_edit` kullanın.
16
+ - Her adımda tip güvenliğini (`any` yasağı) koruyun.
17
+ - Her büyük değişiklikten sonra `PROJECT_MEMORY.md`'yi güncelleyin.
18
+
19
+ ## 4. Doğrulama (Validation)
20
+ - `run_tests` ile hiçbir regresyon oluşmadığından emin olun.
21
+ - `@quality` ajanıyla kod kalitesini denetleyin.
@@ -0,0 +1,23 @@
1
+ # 📐 Kurumsal Mimari Standartları (AL Framework)
2
+
3
+ Bu proje, Agent Enderun tarafından belirlenen "Nizam-ı Mimari" kurallarına uygun olarak geliştirilmektedir.
4
+
5
+ ## 1. Klasör Yapısı (Monorepo Standardı)
6
+ - `apps/backend/`: İş mantığı, API ve veritabanı katmanları.
7
+ - `apps/web/`: Frontend (React/Next.js) katmanı.
8
+ - `packages/shared/`: Backend ve Frontend arasında paylaşılan tip tanımları ve yardımcılar.
9
+
10
+ ## 2. Katmanlı Mimari (Layered Architecture)
11
+ Tüm iş mantığı şu hiyerarşiyi takip etmelidir:
12
+ 1. **Routes/Controllers:** API giriş noktaları ve request validasyonu.
13
+ 2. **Services:** İş mantığının (Business Logic) koordine edildiği yer.
14
+ 3. **Repositories/Models:** Veritabanı erişimi ve ham veri mutasyonları.
15
+
16
+ ## 3. Tip Güvenliği ve Kontratlar
17
+ - `contract.version.json` dosyasındaki hash, aktif kodla her zaman uyumlu olmalıdır.
18
+ - `any` tipi kullanımı kesinlikle yasaktır.
19
+ - Tüm asenkron operasyonlar `try-catch` blokları ve uygun hata yönetimi (ErrorHandler) ile sarılmalıdır.
20
+
21
+ ## 4. AL (Agent Lifecycle) Faz Disiplini
22
+ - Geliştirme, Faz 0'dan Faz 4'e kadar sırayla ilerler.
23
+ - Kontratlar onaylanmadan (Faz 1) uygulama kodu yazılamaz (Faz 2).
@@ -0,0 +1,21 @@
1
+ # 🏛️ Kurumsal CRUD ve Yönetişim Standartları
2
+
3
+ Bu belge, Agent Enderun ordusu tarafından yönetilen projelerde veri mutasyonu ve idari işlemler için geçerli olan katı kuralları tanımlar.
4
+
5
+ ## 1. Yüksek Riskli İşlemler (High-Risk Operations)
6
+ Aşağıdaki işlemler "Yüksek Riskli" olarak kabul edilir ve uzman ajanlar (@backend, @database vb.) tarafından otonom olarak gerçekleştirilemez:
7
+ - Veritabanı şeması değişiklikleri (DDL).
8
+ - Toplu veri silme veya temizleme (Bulk Delete/Purge).
9
+ - Kullanıcı yetkilendirme ve rol atama sistemleri.
10
+ - Ödeme sistemi (Billing) entegrasyonları.
11
+ - PII (Kişisel Veri) dışa aktarımı.
12
+
13
+ ## 2. Onay Akışı (Approval Flow)
14
+ - Uzman ajan, bir yüksek riskli işlem talebi aldığında işlemi reddetmeli ve durumu `@manager`'a bildirmelidir.
15
+ - `@manager`, talebi analiz eder ve `managerApproval` bekleyen bir görev oluşturur.
16
+ - İnsan denetçi (Human-in-the-Loop), `agent-enderun approve [TraceID]` komutu ile onay verene kadar işlem bekletilir.
17
+
18
+ ## 3. Veri Disiplini
19
+ - **Branded Types:** Tüm ID'ler (UserID, OrderID vb.) kesinlikle branded types formatında olmalıdır.
20
+ - **Kysely Only:** Ham SQL sorguları yasaktır. Sadece tip güvenli Kysely sorgu oluşturucu kullanılabilir.
21
+ - **Repository Pattern:** Veritabanı işlemleri doğrudan controller'lar içinde yapılamaz; mutlaka servis ve repository katmanlarından geçmelidir.
@@ -0,0 +1,38 @@
1
+ # 🎨 Kurumsal Frontend ve Responsive Standartları
2
+
3
+ Bu belge, Agent Enderun tarafından yönetilen projelerdeki UI/UX standartlarını tanımlar. Tüm arayüzler "Mobile-First", "Fluid Responsive" ve "Cross-Device Adaptive" prensiplerine uygun olmalıdır.
4
+
5
+ ## 1. Tasarım Sistemi: Panda CSS & Tailwind Entegrasyonu
6
+ - **Sıfır UI Kütüphanesi:** Ant Design, MUI gibi hantal harici UI kütüphaneleri kullanılmaz. Tüm stiller tip güvenli **Panda CSS** veya yapılandırılmış **Tailwind CSS** ile yazılır.
7
+ - **Token Kullanımı:** Renkler, boşluklar ve font boyutları mutlaka `token()` fonksiyonu veya standart CSS değişkenleri üzerinden yönetilmelidir.
8
+ - **Responsive Syntax:** Obje tabanlı responsive syntax zorunludur:
9
+ ```typescript
10
+ css({
11
+ width: { base: '100%', md: '50%', lg: '33.33%' },
12
+ padding: { base: '4', md: '8' }
13
+ })
14
+ ```
15
+
16
+ ## 2. Mobil-First ve Akıcı Tasarım (Fluid Design)
17
+ - **Mobile-First Yaklaşımı:** Stiller her zaman en küçük ekran boyutu (`base`) için yazılmalı, ardından `sm`, `md`, `lg`, `xl`, `2xl` breakpoint'leri ile geniş ekranlara doğru genişletilmelidir.
18
+ - **Fluid Grid & Flexbox:** Düzenler sabit genişliklerle sınırlandırılmamalıdır. `flex-wrap`, CSS Grid (`grid-template-columns: repeat(auto-fit, minmax(280px, 1fr))`) tercih edilmelidir.
19
+ - **Fluid Typography:** Yazı boyutları ekran genişliğine göre dinamik ölçeklenmelidir:
20
+ ```css
21
+ font-size: clamp(1rem, 2vw + 0.5rem, 2rem);
22
+ ```
23
+ - **Kapsayıcı Sınırları (Container Bounds):** Sayfa ana gövdesi mutlaka responsive padding'e ve maksimum genişlik sınırına sahip olmalıdır (`max-width: 1280px` veya `1440px` standardı).
24
+
25
+ ## 3. Ekran Boyutu ve Cihaz Güvenliği (Viewport Safety)
26
+ - **Viewport Taşması (Overflow Guard):** Sayfalarda yatay kaydırma çubuğu (horizontal scrollbar) oluşması kesinlikle yasaktır. Tüm elemanlara `box-sizing: border-box` uygulanmalı ve genişlikler `max-width: 100%` ile sınırlandırılmalıdır.
27
+ - **Dinamik Viewport Birimleri:** Mobil tarayıcıların adres çubuğu değişimlerinden etkilenmemek için `vh` yerine `dvh` (Dynamic Viewport Height) ve `vw` yerine `dvw` birimleri kullanılmalıdır.
28
+ - **Dokunmatik Hedefler (Touch Targets):** Mobil cihazlarda tıklanabilir elemanların (buton, link, input) boyutu en az `44px x 44px` olmalıdır.
29
+
30
+ ## 4. Bileşen Disiplini (Component Governance)
31
+ - **Atomic Design:** UI bileşenleri `apps/web/src/components/ui/` altında toplanmalıdır.
32
+ - **Sayfa İzolasyonu:** Sayfa dosyaları içinde stil tanımlamak yerine, reusable atomic bileşenler tercih edilmelidir.
33
+ - **Görsel Optimizasyonu:** Responsive resimler için `picture` tagi veya `srcset` kullanılmalı, retina ekranlar için `@2x` çözünürlükleri desteklenmelidir. SVG'ler her zaman `viewBox` ile ölçeklenebilir kılınmalıdır.
34
+
35
+ ## 5. Erişilebilirlik ve Performans
36
+ - **WCAG AA:** Tüm renk kontrastları ve klavye navigasyon yapıları WCAG AA standartlarına uygun olmalıdır.
37
+ - **Lighthouse Score:** Tüm sayfalar için performans, erişilebilirlik ve SEO skorları 90+ hedeflenmelidir.
38
+
@@ -0,0 +1,17 @@
1
+ # 🌐 Kurumsal Çoklu Dil (i18n) Standartları
2
+
3
+ Bu belge, Agent Enderun tarafından yönetilen projelerdeki yerelleştirme ve çoklu dil yönetim kurallarını tanımlar.
4
+
5
+ ## 1. Merkezi Yönetim
6
+ - **Hardcoded Yasak:** Kullanıcıya görünen hiçbir metin doğrudan kod içine (JSX/HTML/TS) yazılmaz.
7
+ - **Locales Dizini:** Tüm diller `apps/web/public/locales/` veya `apps/web/src/locales/` altında JSON dosyaları olarak saklanır.
8
+ - **Key-Value Standardı:** Anlamlı ve hiyerarşik anahtarlar kullanılır (örn: `common.buttons.save`, `errors.auth.invalid_password`).
9
+
10
+ ## 2. Teknik Uygulama
11
+ - **i18next:** Projelerde `next-i18next` veya `react-i18next` kütüphanesi standarttır.
12
+ - **Dynamic Content:** Değişken içeren metinlerde mutlaka i18n interpolation (`{{name}}`) kullanılmalıdır.
13
+ - **Pluralization:** Tekil/çoğul durumları i18n kütüphanesinin kendi kuralları ile yönetilmelidir.
14
+
15
+ ## 3. Denetim
16
+ - `@frontend` ajanı, yeni bir UI bileşeni oluşturduğunda metinleri otomatik olarak ilgili JSON dosyalarına taşır.
17
+ - Eksik çeviri (missing key) kontrolü `@quality` tarafından denetlenir.
@@ -0,0 +1,29 @@
1
+ # 🪵 Kurumsal Loglama ve Sır Yönetimi (.env) Standartları
2
+
3
+ Bu belge, Agent Enderun ordusu tarafından yönetilen projelerdeki loglama disiplini ve hassas veri (secret) yönetim kurallarını tanımlar.
4
+
5
+ ## 1. Loglama Disiplini (Zero Console Policy)
6
+ - **console.log Yasaktır:** Üretim (production) kodunda `console.log`, `console.warn` veya `console.error` kullanımı kesinlikle yasaktır.
7
+ - **Enterprise Logger Kullanımı:** Tüm loglama işlemleri projenin merkezi logger sistemi (`src/shared/logger.ts`) üzerinden yapılmalıdır.
8
+ ```typescript
9
+ import { logger } from "@/shared/logger";
10
+
11
+ logger.info("Kullanıcı giriş yaptı", { userId: "..." });
12
+ logger.error("Veritabanı bağlantı hatası", { error: "..." });
13
+ ```
14
+ - **Log Seviyeleri (Levels):**
15
+ - `DEBUG`: Geliştirme aşamasındaki detaylı teknik bilgiler.
16
+ - `INFO`: Normal sistem akışı (örn: servis başlatıldı, görev tamamlandı).
17
+ - `WARN`: Hata olmayan ama dikkat edilmesi gereken durumlar.
18
+ - `ERROR`: Sistem çalışmasını bozmayan ama incelenmesi gereken hatalar.
19
+ - `FATAL`: Sistemin çökmesine neden olan kritik hatalar.
20
+
21
+ ## 2. Sır Yönetimi ve .env Disiplini
22
+ - **Hassas Veriler (Secrets):** API anahtarları, veritabanı şifreleri, JWT secret'ları ve özel anahtarlar ASLA kod içine yazılmaz (hardcoded).
23
+ - **.env Kullanımı:** Tüm hassas veriler ve çevreye özgü (environment-specific) ayarlar `.env` dosyası üzerinden yönetilir.
24
+ - **.env.example:** Projenin kök dizininde her zaman güncel bir `.env.example` dosyası bulunmalıdır. Bu dosya sadece anahtarları içermeli, gerçek değerleri içermemelidir.
25
+ - **Dinamik Kontrol:** Ajanlar, `.env` dosyasındaki bir değerin eksikliğini uygulama çalışma zamanından (runtime) önce doğrulamalıdır.
26
+
27
+ ## 3. Güvenlik Kuralları
28
+ - **Git Ignored:** `.env` dosyası her zaman `.gitignore` içinde yer almalı ve asla source control sistemine commit edilmemelidir.
29
+ - **Masking:** Loglarda şifre, kredi kartı numarası veya API anahtarı gibi hassas veriler asla açık bir şekilde yazılmamalıdır (Maskelenmelidir).
@@ -0,0 +1,24 @@
1
+ # 📱 Kurumsal Mobil Geliştirme Standartları (React Native / Expo)
2
+
3
+ Bu belge, mobil uygulama geliştirme süreçlerindeki katı kuralları ve performans standartlarını tanımlar.
4
+
5
+ ## 1. Teknoloji Stack ve Yapı
6
+ - **Framework:** Expo (Managed Workflow) ve React Native.
7
+ - **Styling:** `react-native-reanimated` ve tip güvenli stil objeleri veya Tailwind (NativeWind).
8
+ - **Navigation:** Expo Router (File-based navigation) ve Safe Link yapıları.
9
+
10
+ ## 2. Her Ekrana Uygun Tasarım (Responsive Mobil Düzen)
11
+ - **Ekran Çözünürlüğü Bağımsızlığı:** Sabit `px` genişlikleri ve yükseklikleri asla kullanılmamalıdır. Bunun yerine, flexbox oranları, yüzdesel genişlikler ve `useWindowDimensions` kancasından alınan dinamik değerler kullanılmalıdır.
12
+ - **SafeArea Güvenliği:** Tüm ekran yapıları `react-native-safe-area-context` içindeki `SafeAreaProvider` ve `SafeAreaView` (veya dinamik `insets` nesnesi) ile sarmalanarak çentikli (notch) ekranlar, durum çubukları (status bars) ve ana ekran çizgileri (home indicators) ile çakışması önlenmelidir.
13
+ - **Yazı Boyutları ve Erişilebilirlik:** Sistem yazı boyutlarının değiştirilmesi (Accessibility Font Scaling) durumunda metinlerin kesilmemesi (truncation) veya sınırların dışına taşmaması için `Text` bileşenlerinde `numberOfLines` / `ellipsizeMode` kullanılmalı veya dinamik yükseklik sağlayan kapsayıcılar tasarlanmalıdır.
14
+ - **Yönlendirme Adaptasyonu (Orientation):** Arayüzler hem dikey (portrait) hem de yatay (landscape) kullanım senaryolarına adapte olabilmeli; özellikle tabletlerde çift sütunlu (Master-Detail) veya Grid düzeni dinamik ekran eni/boyu oranına göre ayarlanmalıdır.
15
+
16
+ ## 3. Performans ve Akıcılık
17
+ - **Performanslı Listeler:** Büyük veri listelerinde performansı korumak için `ScrollView` veya `FlatList` yerine mutlaka `FlashList` (Shopify) kullanılmalıdır.
18
+ - **Görsel Kaynakları:** Görseller `expo-image` ile önbelleğe alınmalı, hızlı yüklenmeleri için WebP formatları tercih edilmeli ve ölçeklenirken en boy oranları (`contentFit`) korunmalıdır.
19
+ - **Dokunmatik Hedefler (Touch Targets):** Tüm dokunmatik etkileşim alanları en az `44dp x 44dp` olmalıdır.
20
+
21
+ ## 4. Donanım ve Çevrimdışı Çalışma
22
+ - **İzinler (Permissions):** Hassas izinler (konum, kamera, bildirimler) yalnızca özellik kullanılırken istenmeli ve kullanıcıya açıkça gerekçesi gösterilmelidir.
23
+ - **Offline First (Çevrimdışı Öncelik):** Ağ istekleri `React Query` ile önbelleğe alınmalı; yerel kalıcı saklama için MMKV (veya SQLite) kullanılmalıdır.
24
+