agent-enderun 0.8.8 → 0.9.1
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.
- package/.enderun/BRAIN_DASHBOARD.md +5 -5
- package/{ENDERUN.md → .enderun/ENDERUN.md} +4 -2
- package/.enderun/PROJECT_MEMORY.md +32 -43
- package/.enderun/STATUS.md +25 -28
- package/.enderun/agents/agent_army_schema.json +29 -7
- package/.enderun/agents/backend.md +48 -39
- package/.enderun/agents/database.md +55 -0
- package/.enderun/agents/devops.md +30 -17
- package/.enderun/agents/explorer.md +5 -5
- package/.enderun/agents/frontend.md +97 -76
- package/.enderun/agents/git.md +4 -4
- package/.enderun/agents/manager.md +68 -59
- package/.enderun/agents/mobile.md +4 -4
- package/.enderun/agents/native.md +106 -0
- package/.enderun/agents/quality.md +122 -0
- package/.enderun/agents/schema/agent-lifecycle-schema.json +29 -8
- package/.enderun/cli-commands.json +7 -3
- package/.enderun/config.json +8 -2
- package/.enderun/knowledge/SHIM_TEMPLATE.md +25 -0
- package/.enderun/knowledge/context_boundary_rules.md +57 -0
- package/.enderun/knowledge/corporate-governance/high-risk-action-approval-flow.md +29 -0
- package/.enderun/knowledge/documentation_ownership.md +53 -0
- package/.enderun/knowledge/eslint-standards.md +63 -0
- package/.enderun/knowledge/frontend_professionalization_guidelines.md +7 -7
- package/.enderun/knowledge/hermes_live_test_guidelines.md +5 -5
- package/.enderun/knowledge/hermes_protocol.md +1 -1
- package/.enderun/knowledge/lessons-learned.md +14 -0
- package/.enderun/knowledge/manager_authority_audit_enforcement.md +10 -10
- package/.enderun/knowledge/project_scaffold_guidelines.md +4 -4
- package/.enderun/knowledge/reference_application_guidelines.md +6 -6
- package/.enderun/mcp_config.json +9 -0
- package/.enderun/memory-graph/agent-contexts/backend.json +1 -1
- package/.enderun/memory-graph/agent-contexts/devops.json +1 -1
- package/.enderun/memory-graph/agent-contexts/explorer.json +1 -1
- package/.enderun/memory-graph/agent-contexts/frontend.json +1 -1
- package/.enderun/memory-graph/agent-contexts/git.json +1 -1
- package/.enderun/memory-graph/agent-contexts/manager.json +1 -1
- package/.enderun/memory-graph/agent-contexts/mobile.json +1 -1
- package/.enderun/memory-graph/agent-contexts/native.json +1 -0
- package/.enderun/memory-graph/agent-contexts/quality.json +1 -0
- package/.enderun/memory-graph/graph.json +123 -15
- package/.enderun/memory-graph/shared-facts.json +26 -31
- package/.enderun/queue/README.md +13 -13
- package/README.md +171 -393
- package/agent.md +25 -0
- package/bin/cli.js +10 -10
- package/bin/init-check.js +69 -0
- package/bin/update-contract.js +57 -38
- package/bin/validate-agent-army.js +38 -13
- package/claude.md +14 -8
- package/docs/README.md +24 -16
- package/docs/architecture/README.md +9 -0
- package/docs/architecture/standards/data-fetching-patterns.md +13 -0
- package/docs/architecture/standards/design-system.md +31 -0
- package/docs/architecture/standards/logging.md +7 -0
- package/docs/architecture/standards/tech-stack.md +9 -0
- package/docs/getting-started.md +9 -259
- package/docs/user/README.md +35 -0
- package/docs/user/action-plan-2026.md +9 -0
- package/docs/user/getting-started.md +13 -0
- package/docs/user/roadmap.md +13 -0
- package/eslint.config.js +68 -0
- package/framework-mcp/dist/index.js +178 -24
- package/framework-mcp/package.json +6 -33
- package/framework-mcp/tsconfig.json +3 -6
- package/gemini.md +12 -6
- package/grok.md +25 -0
- package/package.json +13 -5
- package/panda.config.ts +86 -86
- package/src/cli/adapters.ts +208 -0
- package/src/cli/commands/app.ts +38 -0
- package/src/cli/commands/check.ts +87 -0
- package/src/cli/commands/compliance.ts +55 -0
- package/src/cli/commands/contract.ts +45 -0
- package/src/cli/commands/explorer.ts +45 -0
- package/src/cli/commands/git.ts +39 -0
- package/src/cli/commands/init.ts +272 -0
- package/src/cli/commands/knowledge.ts +44 -0
- package/src/cli/commands/lint.ts +25 -0
- package/src/cli/commands/log.ts +37 -0
- package/src/cli/commands/memory.ts +78 -0
- package/src/cli/commands/orchestrate.ts +111 -0
- package/src/cli/commands/script.ts +20 -0
- package/src/cli/commands/security.ts +38 -0
- package/src/cli/commands/status.ts +59 -0
- package/src/cli/commands/trace.ts +46 -0
- package/src/cli/index.ts +74 -2155
- package/src/cli/utils/app.ts +764 -0
- package/src/cli/utils/claude.ts +56 -0
- package/src/cli/utils/fs.ts +139 -0
- package/src/cli/utils/memory.ts +141 -0
- package/src/cli/utils/pkg.ts +215 -0
- package/src/cli/utils/string.ts +48 -0
- package/src/cli/utils/time.ts +27 -0
- package/tsconfig.json +9 -0
- package/.enderun/agents/analyst.md +0 -238
- package/.enderun/agents/orchestrator.md +0 -172
- package/.enderun/agents/qa.md +0 -124
- package/.enderun/agents/security.md +0 -202
- package/.enderun/knowledge/api_design_rules.md +0 -6
- package/.enderun/knowledge/branded_types_pattern.md +0 -8
- package/.enderun/knowledge/code_review_checklist.md +0 -7
- package/.enderun/knowledge/contract_versioning.md +0 -7
- package/.enderun/knowledge/database_migration.md +0 -6
- package/.enderun/knowledge/deployment_checklist.md +0 -7
- package/.enderun/knowledge/git_commit_strategy.md +0 -10
- package/.enderun/knowledge/monitoring_setup.md +0 -5
- package/.enderun/knowledge/performance_guidelines.md +0 -11
- package/.enderun/knowledge/repository_patterns.md +0 -9
- package/.enderun/knowledge/security_scanning.md +0 -6
- package/.enderun/knowledge/testing_standards.md +0 -7
- package/.enderun/knowledge/troubleshooting_guide.md +0 -5
- package/.enderun/logs/analyst.json +0 -1
- package/.enderun/logs/backend.json +0 -1
- package/.enderun/logs/devops.json +0 -1
- package/.enderun/logs/explorer.json +0 -1
- package/.enderun/logs/frontend.json +0 -1
- package/.enderun/logs/git.json +0 -1
- package/.enderun/logs/manager.json +0 -1
- package/.enderun/logs/mobile.json +0 -1
- package/.enderun/logs/native.json +0 -1
- package/.enderun/logs/orchestrator.json +0 -1
- package/.enderun/logs/qa.json +0 -1
- package/.enderun/logs/security.json +0 -1
- package/.enderun/memory-graph/agent-contexts/analyst.json +0 -1
- package/.enderun/memory-graph/agent-contexts/orchestrator.json +0 -1
- package/.enderun/memory-graph/agent-contexts/qa.json +0 -1
- package/.enderun/memory-graph/agent-contexts/security.json +0 -1
- package/.env.example +0 -10
- package/cursor.md +0 -19
- package/docs/action-plan-2026.md +0 -119
- package/docs/roadmap.md +0 -142
- package/framework-mcp/README.md +0 -55
- package/framework-mcp/dist/schemas.js +0 -84
- package/framework-mcp/dist/tools/codebase.js +0 -294
- package/framework-mcp/dist/tools/contract.js +0 -197
- package/framework-mcp/dist/tools/framework.js +0 -225
- package/framework-mcp/dist/tools/git.js +0 -51
- package/framework-mcp/dist/tools/governance.js +0 -696
- package/framework-mcp/dist/tools/index.js +0 -47
- package/framework-mcp/dist/tools/knowledge.js +0 -133
- package/framework-mcp/dist/tools/memory.js +0 -217
- package/framework-mcp/dist/tools/messages.js +0 -193
- package/framework-mcp/dist/tools/monitoring.js +0 -294
- package/framework-mcp/dist/tools/orchestration.js +0 -369
- package/framework-mcp/dist/tools/pipeline.js +0 -267
- package/framework-mcp/dist/tools/security.js +0 -137
- package/framework-mcp/dist/utils.js +0 -121
- package/framework-mcp/src/index.ts +0 -49
- package/framework-mcp/src/schemas.ts +0 -106
- package/framework-mcp/src/tools/codebase.ts +0 -284
- package/framework-mcp/src/tools/contract.ts +0 -221
- package/framework-mcp/src/tools/framework.ts +0 -223
- package/framework-mcp/src/tools/git.ts +0 -42
- package/framework-mcp/src/tools/governance.ts +0 -891
- package/framework-mcp/src/tools/index.ts +0 -50
- package/framework-mcp/src/tools/knowledge.ts +0 -141
- package/framework-mcp/src/tools/memory.ts +0 -207
- package/framework-mcp/src/tools/messages.ts +0 -213
- package/framework-mcp/src/tools/monitoring.ts +0 -351
- package/framework-mcp/src/tools/orchestration.ts +0 -440
- package/framework-mcp/src/tools/pipeline.ts +0 -353
- package/framework-mcp/src/tools/security.ts +0 -143
- package/framework-mcp/src/utils.ts +0 -130
package/docs/getting-started.md
CHANGED
|
@@ -1,263 +1,13 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Quickstart Guide for New Agent Enderun Projects
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
This guide is prepared for developers who want to set up Agent Enderun in a new project from scratch.
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
> **As of v0.9.1, the primary initialization command is:** `npx agent-enderun init`
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
### Installation Steps
|
|
8
|
+
- Initialize the framework with `npx agent-enderun init`.
|
|
9
|
+
- Fill in the `docs/tech-stack.md` and `docs/project-docs.md` files.
|
|
10
|
+
- Create the first task with `npx agent-enderun trace:new`.
|
|
11
|
+
- `@manager` manages the project automatically in every session.
|
|
8
12
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
> **Primary recommended installation command from v0.6.6:** **`npx agent-enderun init` (generic framework setup)**
|
|
12
|
-
|
|
13
|
-
---
|
|
14
|
-
|
|
15
|
-
## 1. Introduction
|
|
16
|
-
|
|
17
|
-
Agent Enderun is a yapay zeka/AI governance framework that provides **control, discipline, and traceability** in software development processes.
|
|
18
|
-
|
|
19
|
-
By completing this guide, you will:
|
|
20
|
-
- Install the framework in your project
|
|
21
|
-
- Configure the basic components and environment
|
|
22
|
-
- Create your first tracked task and start working with specialist agents
|
|
23
|
-
|
|
24
|
-
---
|
|
25
|
-
|
|
26
|
-
## 2. Prerequisites
|
|
27
|
-
|
|
28
|
-
- **Node.js** 20+ (LTS recommended)
|
|
29
|
-
- **npm** 9+
|
|
30
|
-
- **Git** (must be initialized in the project directory)
|
|
31
|
-
|
|
32
|
-
To check your local environment:
|
|
33
|
-
|
|
34
|
-
```bash
|
|
35
|
-
node --version
|
|
36
|
-
npm --version
|
|
37
|
-
git --version
|
|
38
|
-
```
|
|
39
|
-
|
|
40
|
-
---
|
|
41
|
-
|
|
42
|
-
## 3. Step-by-Step Installation
|
|
43
|
-
|
|
44
|
-
### Step 1: Create a New Project Directory
|
|
45
|
-
|
|
46
|
-
```bash
|
|
47
|
-
mkdir my-new-project
|
|
48
|
-
cd my-new-project
|
|
49
|
-
git init
|
|
50
|
-
```
|
|
51
|
-
|
|
52
|
-
### Step 2: Initialize the Framework
|
|
53
|
-
|
|
54
|
-
To initialize the core framework cleanly (without hardcoding any AI/adapter-specific files before installation):
|
|
55
|
-
|
|
56
|
-
```bash
|
|
57
|
-
npx agent-enderun init
|
|
58
|
-
```
|
|
59
|
-
|
|
60
|
-
This command:
|
|
61
|
-
- Creates the `.enderun/` directory by default
|
|
62
|
-
- Installs all core governance files (`ENDERUN.md`, `PROJECT_MEMORY.md`, agents, knowledge, etc.)
|
|
63
|
-
- Adds the default framework configuration files
|
|
64
|
-
|
|
65
|
-
#### 💡 Gemini Adapter (Only Supported Path)
|
|
66
|
-
|
|
67
|
-
```bash
|
|
68
|
-
npx agent-enderun init
|
|
69
|
-
# or explicitly
|
|
70
|
-
npx agent-enderun init gemini
|
|
71
|
-
```
|
|
72
|
-
|
|
73
|
-
This creates the `.enderun/` runtime folder + `gemini.md` shim at the root for Gemini CLI users.
|
|
74
|
-
|
|
75
|
-
Other legacy adapters (`claude`, `cursor`, `codex`) may still work for editor-specific workflows.
|
|
76
|
-
|
|
77
|
-
---
|
|
78
|
-
|
|
79
|
-
### Step 3: Install Dependencies and Build
|
|
80
|
-
|
|
81
|
-
```bash
|
|
82
|
-
npm install
|
|
83
|
-
npm run enderun:build
|
|
84
|
-
```
|
|
85
|
-
|
|
86
|
-
### Step 4: Verify the Installation
|
|
87
|
-
|
|
88
|
-
```bash
|
|
89
|
-
npx agent-enderun check
|
|
90
|
-
```
|
|
91
|
-
|
|
92
|
-
Expected output:
|
|
93
|
-
|
|
94
|
-
```
|
|
95
|
-
✅ Framework active (v0.6.6)
|
|
96
|
-
✅ MCP Server ready
|
|
97
|
-
✅ Shared types compiled
|
|
98
|
-
✅ Agent logs initialized
|
|
99
|
-
✅ PROJECT_MEMORY.md found
|
|
100
|
-
```
|
|
101
|
-
|
|
102
|
-
---
|
|
103
|
-
|
|
104
|
-
## 4. Basic Configuration (Most Critical Step)
|
|
105
|
-
|
|
106
|
-
Once initialized, you **must** update the following files to describe your project. Ajanlar (agents) learn your technology stack and target domain from here.
|
|
107
|
-
|
|
108
|
-
### 4.1 `docs/tech-stack.md`
|
|
109
|
-
|
|
110
|
-
This file is **mandatory**. Agents rely on it to make technical decisions.
|
|
111
|
-
|
|
112
|
-
Example:
|
|
113
|
-
|
|
114
|
-
```markdown
|
|
115
|
-
# TECH STACK
|
|
116
|
-
|
|
117
|
-
## Platform
|
|
118
|
-
- Web (React + Vite)
|
|
119
|
-
- Backend (Node.js + Fastify)
|
|
120
|
-
|
|
121
|
-
## Database
|
|
122
|
-
- PostgreSQL + Kysely
|
|
123
|
-
|
|
124
|
-
## Auth
|
|
125
|
-
- JWT + Refresh Token
|
|
126
|
-
|
|
127
|
-
## Deployment
|
|
128
|
-
- Vercel (Frontend) + Railway (Backend)
|
|
129
|
-
```
|
|
130
|
-
|
|
131
|
-
> **Warning:** If this file is empty, the agents will not be able to operate.
|
|
132
|
-
|
|
133
|
-
### 4.2 `docs/project-docs.md`
|
|
134
|
-
|
|
135
|
-
Write your project's goals, business requirements, and primary features here.
|
|
136
|
-
|
|
137
|
-
### 4.3 `.enderun/PROJECT_MEMORY.md`
|
|
138
|
-
|
|
139
|
-
Automatically created during initial setup inside `.enderun/PROJECT_MEMORY.md`. The Gemini adapter uses the `.enderun/` runtime folder.
|
|
140
|
-
|
|
141
|
-
---
|
|
142
|
-
|
|
143
|
-
## 5. Creating Your First Task
|
|
144
|
-
|
|
145
|
-
You are now ready to create your first real task:
|
|
146
|
-
|
|
147
|
-
```bash
|
|
148
|
-
npx agent-enderun trace:new "User Registration and Login System" backend P1
|
|
149
|
-
```
|
|
150
|
-
|
|
151
|
-
This command:
|
|
152
|
-
- Generates a unique Trace ID
|
|
153
|
-
- Updates the **ACTIVE TASKS** section in `PROJECT_MEMORY.md`
|
|
154
|
-
- Assigns the `@manager` agent to lead the task
|
|
155
|
-
|
|
156
|
-
---
|
|
157
|
-
|
|
158
|
-
## 6. Basics of Working with Agents
|
|
159
|
-
|
|
160
|
-
### Automatic @manager Behavior
|
|
161
|
-
|
|
162
|
-
At the start of every session (when a conversation begins), agents will automatically:
|
|
163
|
-
|
|
164
|
-
1. Read `ENDERUN.md`
|
|
165
|
-
2. Read `PROJECT_MEMORY.md`
|
|
166
|
-
3. Load the active phase and current Trace ID
|
|
167
|
-
|
|
168
|
-
### How to Direct Specialist Agents
|
|
169
|
-
|
|
170
|
-
- Normally, **`@manager`** coordinates the process.
|
|
171
|
-
- If you need to address a specialist agent directly, include their tag:
|
|
172
|
-
|
|
173
|
-
```markdown
|
|
174
|
-
@backend Implement the user model and auth services using Kysely.
|
|
175
|
-
```
|
|
176
|
-
|
|
177
|
-
### Critical Rules
|
|
178
|
-
|
|
179
|
-
- Keep `docs/tech-stack.md` updated at all times.
|
|
180
|
-
- When new key decisions are made, update the **CRITICAL DECISIONS** table in `PROJECT_MEMORY.md`.
|
|
181
|
-
- Use a unique Trace ID for every task.
|
|
182
|
-
|
|
183
|
-
---
|
|
184
|
-
|
|
185
|
-
## 7. First Real-World Scenario Example
|
|
186
|
-
|
|
187
|
-
Try this quick workflow:
|
|
188
|
-
|
|
189
|
-
1. Populate `docs/tech-stack.md`
|
|
190
|
-
2. Write a simple requirement in `docs/project-docs.md`
|
|
191
|
-
3. Run the following command:
|
|
192
|
-
|
|
193
|
-
```bash
|
|
194
|
-
npx agent-enderun trace:new "User Registration and Login" backend P1
|
|
195
|
-
```
|
|
196
|
-
|
|
197
|
-
4. Then write to the assistant:
|
|
198
|
-
|
|
199
|
-
> @manager Please analyze this requirement and propose the backend architecture.
|
|
200
|
-
|
|
201
|
-
The agents will automatically:
|
|
202
|
-
- Scan your codebase
|
|
203
|
-
- Propose type contracts
|
|
204
|
-
- Scaffold code using blueprints if necessary
|
|
205
|
-
|
|
206
|
-
---
|
|
207
|
-
|
|
208
|
-
## 8. Common Mistakes and Tips
|
|
209
|
-
|
|
210
|
-
| Mistake | Consequence | Solution |
|
|
211
|
-
| :--- | :--- | :--- |
|
|
212
|
-
| Leaving `docs/tech-stack.md` empty | Agents will not know how to proceed | Ensure it is populated immediately |
|
|
213
|
-
| Prompting for direct code generation | Messy and unmonitored code | Always have `@manager` plan first |
|
|
214
|
-
| Not using Trace ID | Chaos and lost traceability | Use `trace:new` for every new feature |
|
|
215
|
-
| Not updating `PROJECT_MEMORY.md` | Agents remember old state | Update memory with every key decision |
|
|
216
|
-
|
|
217
|
-
---
|
|
218
|
-
|
|
219
|
-
## 9. Next Steps
|
|
220
|
-
|
|
221
|
-
After completing the guide, explore:
|
|
222
|
-
|
|
223
|
-
- **Contract-First Development** → Check `apps/backend/src/types`
|
|
224
|
-
- **Blueprint Scaffolding** → Look inside `.enderun/blueprints/`
|
|
225
|
-
- **Security & Compliance** → Run `npx agent-enderun check:security`
|
|
226
|
-
- **Inter-Agent Communication** → Hermes protocol (`messages/` directory)
|
|
227
|
-
|
|
228
|
-
---
|
|
229
|
-
|
|
230
|
-
## 10. Help and Support
|
|
231
|
-
|
|
232
|
-
If you encounter issues:
|
|
233
|
-
|
|
234
|
-
1. Run `npx agent-enderun status`
|
|
235
|
-
2. Check `PROJECT_MEMORY.md`
|
|
236
|
-
3. Inspect the error logs and the last 3 HISTORY entries
|
|
237
|
-
|
|
238
|
-
---
|
|
239
|
-
|
|
240
|
-
**Congratulations!** You can now develop software with discipline, structure, and governance using Agent Enderun.
|
|
241
|
-
|
|
242
|
-
As a next step, we recommend defining **the core contracts of your first real project**.
|
|
243
|
-
|
|
244
|
-
---
|
|
245
|
-
|
|
246
|
-
# Türkçe
|
|
247
|
-
|
|
248
|
-
Bu rehber, Agent Enderun'u **sıfırdan** yeni bir projeye kurmak isteyen geliştiriciler için hazırlanmıştır.
|
|
249
|
-
|
|
250
|
-
> **v0.6.6 itibarıyla önerilen birincil başlatma komutu:** `npx agent-enderun init`
|
|
251
|
-
|
|
252
|
-
Tüm teknik adımlar, ön gereksinimler, yapılandırma ve ajanlarla çalışma kuralları **İngilizce bölümde** detaylı olarak açıklanmıştır.
|
|
253
|
-
|
|
254
|
-
Türkçe kısa özet:
|
|
255
|
-
|
|
256
|
-
- `npx agent-enderun init` ile framework'ü kurun.
|
|
257
|
-
- `docs/tech-stack.md` ve `docs/project-docs.md` dosyalarını doldurun.
|
|
258
|
-
- `npx agent-enderun trace:new` ile ilk görevi oluşturun.
|
|
259
|
-
- Her oturumda @manager otomatik olarak yönetir.
|
|
260
|
-
|
|
261
|
-
Detaylı kurulum adımları, adaptör seçenekleri, hata önleme ipuçları ve örnek akışlar için lütfen İngilizce bölümü okuyun.
|
|
262
|
-
|
|
263
|
-
**Tebrikler!** Artık Agent Enderun ile disiplinli yazılım geliştirmeye başlayabilirsiniz.
|
|
13
|
+
**Congratulations!** You can now start developing professional software with Agent Enderun.
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# Agent Enderun — Governance and Architecture Portal
|
|
2
|
+
|
|
3
|
+
This portal is the **Central Knowledge Source** for enterprise projects developed under the Agent Enderun framework. The project's architectural decisions, standards, and governance protocols are sealed here.
|
|
4
|
+
|
|
5
|
+
Unlike ordinary projects, Agent Enderun projects are built on a structure where AI agents operate autonomously but are bound by a rigid, human-authored constitution. This documentation is the **Immutable Guide** for both AI agents (Army) and human developers.
|
|
6
|
+
|
|
7
|
+
### 📋 Documentation Guide
|
|
8
|
+
|
|
9
|
+
#### [1. Architecture & Governance](architecture/)
|
|
10
|
+
* **[Architecture Decision Records (ADRs)](architecture/decisions/)**: Answers to "Why" and "How" questions at critical project milestones.
|
|
11
|
+
* **[Approval & High-Risk Workflows](architecture/approval-flows.md)**: Explains how tokens are generated, audited, and how high-risk actions (e.g., database deletion, privilege escalation) are sealed.
|
|
12
|
+
* **[Notification Strategy](architecture/notification-strategy.md)**: Dynamic and corporate notification patterns that do not disrupt the user experience.
|
|
13
|
+
|
|
14
|
+
#### [2. Frontend Standards](frontend/)
|
|
15
|
+
* **[Component Patterns](frontend/component-patterns.md)**: Zero-UI-Library policy, guide on how all components are hand-crafted and type-safe using Panda CSS.
|
|
16
|
+
* **[Form Validations](frontend/forms.md)**: Zero-error form management systems managed with Zod and React hooks.
|
|
17
|
+
* **[Toaster Configuration](frontend/notifications.md)**: Integration of tools like Sonner with the corporate theme.
|
|
18
|
+
|
|
19
|
+
#### [3. Backend Standards](backend/)
|
|
20
|
+
* **[Error Handling](backend/error-handling.md)**: Professional error management hierarchy that does not leak to the front-end and is traceable in logs.
|
|
21
|
+
* **[Audit Logging](backend/audit-logging.md)**: Contracts for how every operation is permanently processed into the database with a Trace ID.
|
|
22
|
+
|
|
23
|
+
## 🛰️ Phase-Based Development Life Cycle
|
|
24
|
+
All projects must pass the following 5 phases sequentially and completely:
|
|
25
|
+
|
|
26
|
+
1. **PHASE_0 (Discovery):** Tech-stack (`tech-stack.md`) sealed, risk analysis performed.
|
|
27
|
+
2. **PHASE_1 (Architecture & Contract):** First, types and API contracts are written. Contracts must be approved before a single line of application code is written.
|
|
28
|
+
3. **PHASE_2 (Core Development):** Backend and Frontend are built in parallel. Branded Types usage is mandatory.
|
|
29
|
+
4. **PHASE_3 (Integration & Test):** @quality agent takes over. 80% Test Coverage threshold must be met before proceeding to the next phase.
|
|
30
|
+
5. **PHASE_4 (Optimization & Deployment):** Security scans and performance tests are completed.
|
|
31
|
+
|
|
32
|
+
> **Agent Directive:** The documents under this folder define the operational boundaries of the agents. An agent cannot deviate from a rule defined here. If a rule needs to be updated, this can only be done with @manager approval and ADR registration.
|
|
33
|
+
|
|
34
|
+
**Version:** v0.9.0
|
|
35
|
+
**Status:** Active Governance
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
# Action Plan 2026 - Agent Enderun (v0.6.6+)
|
|
2
|
+
|
|
3
|
+
This strategic document contains the concrete weekly action plan prepared to close critical gaps identified in the v0.6.6 Gap Analysis.
|
|
4
|
+
|
|
5
|
+
**Summary:**
|
|
6
|
+
- Phase 1: Reference application + Corporate CRUD Governance + Hermes proof.
|
|
7
|
+
- Phase 3: @frontend and @backend professionalization + quality gates.
|
|
8
|
+
|
|
9
|
+
Detailed plan and technical scope are provided in this document.
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# Quickstart Guide for New Agent Enderun Projects
|
|
2
|
+
|
|
3
|
+
This guide is prepared for developers who want to set up Agent Enderun in a new project from scratch.
|
|
4
|
+
|
|
5
|
+
> **As of v0.6.6, the primary initialization command is:** `npx agent-enderun init`
|
|
6
|
+
|
|
7
|
+
### Installation Steps
|
|
8
|
+
- Initialize the framework with `npx agent-enderun init`.
|
|
9
|
+
- Fill in the `docs/tech-stack.md` and `docs/project-docs.md` files.
|
|
10
|
+
- Create the first task with `npx agent-enderun trace:new`.
|
|
11
|
+
- @manager manages the project automatically in every session.
|
|
12
|
+
|
|
13
|
+
**Congratulations!** You can now start developing professional software with Agent Enderun.
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# Agent Enderun — Development Roadmap (v0.6.6+)
|
|
2
|
+
|
|
3
|
+
**Last Updated:** May 23, 2026
|
|
4
|
+
|
|
5
|
+
This document contains the development roadmap for the Agent Enderun framework post-v0.6.6.
|
|
6
|
+
|
|
7
|
+
- **System Health:** 🟢 GREEN (build and test infrastructure under repair)
|
|
8
|
+
- **v0.6.6 Focus:** Translating the entire framework to professional English and analyzing governance gaps honestly.
|
|
9
|
+
|
|
10
|
+
## Summary
|
|
11
|
+
The Agent Maturity Program is ongoing. @frontend continues to be the highest-risk agent. Live testing of the Hermes protocol and producing a reference application are the main goals for the coming period.
|
|
12
|
+
|
|
13
|
+
Detailed plan and risk tracking are provided in this document.
|
package/eslint.config.js
ADDED
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import globals from "globals";
|
|
2
|
+
import js from "@eslint/js";
|
|
3
|
+
import tseslint from "typescript-eslint";
|
|
4
|
+
|
|
5
|
+
const styleRules = {
|
|
6
|
+
indent: ["error", 4],
|
|
7
|
+
"linebreak-style": ["error", "unix"],
|
|
8
|
+
quotes: ["error", "double"],
|
|
9
|
+
semi: ["error", "always"],
|
|
10
|
+
"no-constant-condition": "warn",
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
export default tseslint.config(
|
|
14
|
+
{
|
|
15
|
+
ignores: [
|
|
16
|
+
"**/node_modules/**",
|
|
17
|
+
"**/dist/**",
|
|
18
|
+
"framework-mcp/dist/**",
|
|
19
|
+
"apps/*/dist/**",
|
|
20
|
+
".agent/**",
|
|
21
|
+
".gemini/**",
|
|
22
|
+
".claude/**",
|
|
23
|
+
".cursor/**",
|
|
24
|
+
".enderun/**",
|
|
25
|
+
"panda.config.ts",
|
|
26
|
+
],
|
|
27
|
+
},
|
|
28
|
+
js.configs.recommended,
|
|
29
|
+
...tseslint.configs.recommended,
|
|
30
|
+
{
|
|
31
|
+
files: ["**/*.{ts,tsx}"],
|
|
32
|
+
languageOptions: {
|
|
33
|
+
ecmaVersion: 2022,
|
|
34
|
+
sourceType: "module",
|
|
35
|
+
globals: {
|
|
36
|
+
...globals.node,
|
|
37
|
+
...globals.es2021,
|
|
38
|
+
},
|
|
39
|
+
parserOptions: {
|
|
40
|
+
project: ["./tsconfig.json", "./apps/*/tsconfig.json", "./framework-mcp/tsconfig.json"],
|
|
41
|
+
tsconfigRootDir: import.meta.dirname,
|
|
42
|
+
},
|
|
43
|
+
|
|
44
|
+
},
|
|
45
|
+
rules: {
|
|
46
|
+
...styleRules,
|
|
47
|
+
"no-unused-vars": "off",
|
|
48
|
+
"@typescript-eslint/no-explicit-any": "warn",
|
|
49
|
+
"@typescript-eslint/explicit-module-boundary-types": "off",
|
|
50
|
+
"@typescript-eslint/no-unused-vars": ["warn", { argsIgnorePattern: "^_" }],
|
|
51
|
+
},
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
files: ["**/*.js"],
|
|
55
|
+
languageOptions: {
|
|
56
|
+
ecmaVersion: 2022,
|
|
57
|
+
sourceType: "module",
|
|
58
|
+
globals: {
|
|
59
|
+
...globals.node,
|
|
60
|
+
...globals.es2021,
|
|
61
|
+
},
|
|
62
|
+
},
|
|
63
|
+
rules: {
|
|
64
|
+
...styleRules,
|
|
65
|
+
"no-unused-vars": ["warn", { argsIgnorePattern: "^_" }],
|
|
66
|
+
},
|
|
67
|
+
},
|
|
68
|
+
);
|
|
@@ -1,41 +1,195 @@
|
|
|
1
1
|
import { Server } from "@modelcontextprotocol/sdk/server/index.js";
|
|
2
2
|
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
3
|
-
import { CallToolRequestSchema, ListToolsRequestSchema } from "@modelcontextprotocol/sdk/types.js";
|
|
4
|
-
import
|
|
5
|
-
import
|
|
3
|
+
import { CallToolRequestSchema, ListToolsRequestSchema, } from "@modelcontextprotocol/sdk/types.js";
|
|
4
|
+
import fs from "fs";
|
|
5
|
+
import path from "path";
|
|
6
|
+
import { execSync } from "child_process";
|
|
6
7
|
const server = new Server({
|
|
7
|
-
name: "
|
|
8
|
-
version:
|
|
8
|
+
name: "agent-enderun-mcp",
|
|
9
|
+
version: "0.9.0",
|
|
9
10
|
}, {
|
|
10
11
|
capabilities: {
|
|
11
12
|
tools: {},
|
|
12
13
|
},
|
|
13
14
|
});
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
15
|
+
const TOOLS = [
|
|
16
|
+
{
|
|
17
|
+
name: "read_file",
|
|
18
|
+
description: "Read the content of a file within the project.",
|
|
19
|
+
inputSchema: {
|
|
20
|
+
type: "object",
|
|
21
|
+
properties: {
|
|
22
|
+
path: { type: "string", description: "Path to the file relative to project root" },
|
|
23
|
+
},
|
|
24
|
+
required: ["path"],
|
|
25
|
+
},
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
name: "write_file",
|
|
29
|
+
description: "Write content to a file. Creates directories if missing.",
|
|
30
|
+
inputSchema: {
|
|
31
|
+
type: "object",
|
|
32
|
+
properties: {
|
|
33
|
+
path: { type: "string", description: "Path to the file relative to project root" },
|
|
34
|
+
content: { type: "string", description: "Complete content of the file" },
|
|
35
|
+
},
|
|
36
|
+
required: ["path", "content"],
|
|
37
|
+
},
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
name: "replace_text",
|
|
41
|
+
description: "Surgically replace a string in a file with another string.",
|
|
42
|
+
inputSchema: {
|
|
43
|
+
type: "object",
|
|
44
|
+
properties: {
|
|
45
|
+
path: { type: "string", description: "Path to the file" },
|
|
46
|
+
oldText: { type: "string", description: "The exact text to find" },
|
|
47
|
+
newText: { type: "string", description: "The text to replace it with" },
|
|
48
|
+
},
|
|
49
|
+
required: ["path", "oldText", "newText"],
|
|
50
|
+
},
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
name: "patch_file",
|
|
54
|
+
description: "Safely update a file by replacing a specific line range with new content.",
|
|
55
|
+
inputSchema: {
|
|
56
|
+
type: "object",
|
|
57
|
+
properties: {
|
|
58
|
+
path: { type: "string", description: "Path to the file" },
|
|
59
|
+
startLine: { type: "number", description: "Starting line number (1-indexed)" },
|
|
60
|
+
endLine: { type: "number", description: "Ending line number (inclusive)" },
|
|
61
|
+
newContent: { type: "string", description: "The new lines to insert" },
|
|
62
|
+
},
|
|
63
|
+
required: ["path", "startLine", "endLine", "newContent"],
|
|
64
|
+
},
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
name: "get_framework_status",
|
|
68
|
+
description: "Get the current project phase, active traces, and agent states.",
|
|
69
|
+
inputSchema: { type: "object", properties: {} },
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
name: "update_project_memory",
|
|
73
|
+
description: "Update a specific section in PROJECT_MEMORY.md.",
|
|
74
|
+
inputSchema: {
|
|
75
|
+
type: "object",
|
|
76
|
+
properties: {
|
|
77
|
+
section: { type: "string", description: "Section name (e.g., HISTORY, ACTIVE TASKS)" },
|
|
78
|
+
content: { type: "string", description: "Markdown content to append or set" },
|
|
79
|
+
},
|
|
80
|
+
required: ["section", "content"],
|
|
81
|
+
},
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
name: "orchestrate_loop",
|
|
85
|
+
description: "Process the pending Hermes messages and trigger dynamic state transitions.",
|
|
86
|
+
inputSchema: { type: "object", properties: {} },
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
name: "send_agent_message",
|
|
90
|
+
description: "Send a Hermes protocol message to another agent.",
|
|
91
|
+
inputSchema: {
|
|
92
|
+
type: "object",
|
|
93
|
+
properties: {
|
|
94
|
+
to: { type: "string", description: "Target agent (e.g., @backend, @qa)" },
|
|
95
|
+
category: { type: "string", enum: ["ACTION", "DELEGATION", "INFO", "ALERT"] },
|
|
96
|
+
content: { type: "string", description: "Message content" },
|
|
97
|
+
traceId: { type: "string", description: "Active Trace ID" },
|
|
98
|
+
},
|
|
99
|
+
required: ["to", "category", "content", "traceId"],
|
|
100
|
+
},
|
|
101
|
+
},
|
|
102
|
+
];
|
|
103
|
+
server.onRequest(ListToolsRequestSchema, async () => {
|
|
104
|
+
return { tools: TOOLS };
|
|
18
105
|
});
|
|
19
|
-
server.
|
|
106
|
+
server.onRequest(CallToolRequestSchema, async (request) => {
|
|
20
107
|
const { name, arguments: args } = request.params;
|
|
21
108
|
const projectRoot = process.cwd();
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
109
|
+
try {
|
|
110
|
+
switch (name) {
|
|
111
|
+
case "read_file": {
|
|
112
|
+
const filePath = path.join(projectRoot, args?.path);
|
|
113
|
+
const content = fs.readFileSync(filePath, "utf8");
|
|
114
|
+
return { content: [{ type: "text", text: content }] };
|
|
115
|
+
}
|
|
116
|
+
case "write_file": {
|
|
117
|
+
const filePath = path.join(projectRoot, args?.path);
|
|
118
|
+
fs.mkdirSync(path.dirname(filePath), { recursive: true });
|
|
119
|
+
fs.writeFileSync(filePath, args?.content);
|
|
120
|
+
return { content: [{ type: "text", text: `✅ File written: ${args?.path}` }] };
|
|
121
|
+
}
|
|
122
|
+
case "replace_text": {
|
|
123
|
+
const filePath = path.join(projectRoot, args?.path);
|
|
124
|
+
let content = fs.readFileSync(filePath, "utf8");
|
|
125
|
+
const oldText = args?.oldText;
|
|
126
|
+
const newText = args?.newText;
|
|
127
|
+
if (!content.includes(oldText)) {
|
|
128
|
+
throw new Error(`Text not found in file: ${oldText}`);
|
|
129
|
+
}
|
|
130
|
+
content = content.replace(oldText, newText);
|
|
131
|
+
fs.writeFileSync(filePath, content);
|
|
132
|
+
return { content: [{ type: "text", text: `✅ Surgical edit successful in ${args?.path}` }] };
|
|
133
|
+
}
|
|
134
|
+
case "patch_file": {
|
|
135
|
+
const filePath = path.join(projectRoot, args?.path);
|
|
136
|
+
const lines = fs.readFileSync(filePath, "utf8").split("\n");
|
|
137
|
+
const start = args?.startLine - 1;
|
|
138
|
+
const end = args?.endLine;
|
|
139
|
+
const newContent = (args?.newContent).split("\n");
|
|
140
|
+
if (start < 0 || start > lines.length)
|
|
141
|
+
throw new Error("Invalid start line.");
|
|
142
|
+
lines.splice(start, end - start, ...newContent);
|
|
143
|
+
fs.writeFileSync(filePath, lines.join("\n"));
|
|
144
|
+
return { content: [{ type: "text", text: `✅ File patched successfully: ${args?.path}` }] };
|
|
145
|
+
}
|
|
146
|
+
case "get_framework_status": {
|
|
147
|
+
const output = execSync("npx agent-enderun status").toString();
|
|
148
|
+
return { content: [{ type: "text", text: output }] };
|
|
149
|
+
}
|
|
150
|
+
case "update_project_memory": {
|
|
151
|
+
const section = args?.section;
|
|
152
|
+
const content = args?.content;
|
|
153
|
+
// Escape quotes for shell
|
|
154
|
+
const safeContent = content.replace(/"/g, "\\\"");
|
|
155
|
+
execSync(`npx agent-enderun update_project_memory "${section}" "${safeContent}"`);
|
|
156
|
+
return { content: [{ type: "text", text: `✅ Section ${section} updated.` }] };
|
|
157
|
+
}
|
|
158
|
+
case "orchestrate_loop": {
|
|
159
|
+
const output = execSync("npx agent-enderun orchestrate").toString();
|
|
160
|
+
return { content: [{ type: "text", text: output }] };
|
|
161
|
+
}
|
|
162
|
+
case "send_agent_message": {
|
|
163
|
+
const { to, category, content, traceId } = args;
|
|
164
|
+
const frameworkDir = fs.existsSync(path.join(projectRoot, ".enderun")) ? ".enderun" : ".gemini";
|
|
165
|
+
const messagePath = path.join(projectRoot, frameworkDir, "messages", `${to.replace("@", "")}.json`);
|
|
166
|
+
const message = {
|
|
167
|
+
timestamp: new Date().toISOString(),
|
|
168
|
+
from: "@mcp",
|
|
169
|
+
to,
|
|
170
|
+
category,
|
|
171
|
+
traceId,
|
|
172
|
+
content,
|
|
173
|
+
status: "PENDING"
|
|
174
|
+
};
|
|
175
|
+
fs.mkdirSync(path.dirname(messagePath), { recursive: true });
|
|
176
|
+
fs.appendFileSync(messagePath, JSON.stringify(message) + "\n");
|
|
177
|
+
return { content: [{ type: "text", text: `✅ Message sent to ${to}` }] };
|
|
178
|
+
}
|
|
179
|
+
default:
|
|
180
|
+
throw new Error(`Unknown tool: ${name}`);
|
|
181
|
+
}
|
|
26
182
|
}
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
return
|
|
183
|
+
catch (error) {
|
|
184
|
+
const message = error instanceof Error ? error.message : "Unknown error occurred";
|
|
185
|
+
return {
|
|
186
|
+
isError: true,
|
|
187
|
+
content: [{ type: "text", text: message }],
|
|
188
|
+
};
|
|
30
189
|
}
|
|
31
|
-
throw new Error(`Tool not found: ${name}`);
|
|
32
190
|
});
|
|
33
|
-
async function
|
|
191
|
+
async function run() {
|
|
34
192
|
const transport = new StdioServerTransport();
|
|
35
193
|
await server.connect(transport);
|
|
36
|
-
console.error("Framework MCP Server running on stdio");
|
|
37
194
|
}
|
|
38
|
-
|
|
39
|
-
console.error("Fatal error in main():", error);
|
|
40
|
-
process.exit(1);
|
|
41
|
-
});
|
|
195
|
+
run().catch(console.error);
|