mdan-cli 2.5.0 → 2.6.0
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/AGENTS.md +28 -0
- package/README.md +152 -5
- package/agents/auto-orchestrator.md +343 -0
- package/agents/devops.md +511 -94
- package/cli/mdan.js +1 -1
- package/cli/mdan.py +75 -4
- package/cli/mdan.sh +1 -1
- package/core/debate-protocol.md +454 -0
- package/core/universal-envelope.md +113 -0
- package/memory/CONTEXT-SAVE-FORMAT.md +328 -0
- package/memory/MEMORY-AUTO.json +66 -0
- package/memory/RESUME-PROTOCOL.md +379 -0
- package/package.json +1 -1
- package/phases/auto-01-load.md +165 -0
- package/phases/auto-02-discover.md +207 -0
- package/phases/auto-03-plan.md +509 -0
- package/phases/auto-04-architect.md +567 -0
- package/phases/auto-05-implement.md +713 -0
- package/phases/auto-06-test.md +559 -0
- package/phases/auto-07-deploy.md +510 -0
- package/phases/auto-08-doc.md +970 -0
- package/skills/azure-devops/skill.md +1757 -0
- package/templates/dotnet-blazor/README.md +415 -0
- package/templates/external-services/ExampleService.cs +361 -0
- package/templates/external-services/IService.cs +113 -0
- package/templates/external-services/README.md +325 -0
- package/templates/external-services/ServiceBase.cs +492 -0
- package/templates/external-services/ServiceProvider.cs +243 -0
- package/templates/prompts/devops-agent.yaml +327 -0
- package/templates/prompts.json +15 -1
- package/templates/sql-server/README.md +37 -0
- package/templates/sql-server/functions.sql +158 -0
- package/templates/sql-server/schema.sql +188 -0
- package/templates/sql-server/stored-procedures.sql +284 -0
package/cli/mdan.js
CHANGED
|
@@ -6,7 +6,7 @@ const { execSync } = require('child_process');
|
|
|
6
6
|
const { intro, text, select, isCancel, cancel, outro, spinner } = require('@clack/prompts');
|
|
7
7
|
const pc = require('picocolors');
|
|
8
8
|
|
|
9
|
-
const VERSION = '2.5.
|
|
9
|
+
const VERSION = '2.5.1';
|
|
10
10
|
const MDAN_DIR = path.resolve(__dirname, '..');
|
|
11
11
|
|
|
12
12
|
// Colors
|
package/cli/mdan.py
CHANGED
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
#!/usr/bin/env python3
|
|
2
2
|
"""MDAN CLI - Multi-Agent Development Agentic Network"""
|
|
3
3
|
|
|
4
|
-
import os
|
|
5
4
|
import sys
|
|
6
5
|
import shutil
|
|
7
6
|
import json
|
|
8
7
|
from pathlib import Path
|
|
9
8
|
|
|
10
|
-
VERSION = "2.5.
|
|
9
|
+
VERSION = "2.5.1"
|
|
11
10
|
MDAN_DIR = Path(__file__).parent.parent
|
|
12
11
|
|
|
13
12
|
# Colors
|
|
@@ -44,13 +43,19 @@ def show_help():
|
|
|
44
43
|
print(" agent [name] Show agent prompt")
|
|
45
44
|
print(" oc Copy orchestrator prompt to clipboard")
|
|
46
45
|
print(" skills List available skills")
|
|
46
|
+
print(" auto Start autonomous development mode")
|
|
47
|
+
print(" resume <save-file> Resume from saved context")
|
|
47
48
|
print(" version Show version\n")
|
|
48
49
|
print(f"{BOLD}EXAMPLES{NC}")
|
|
49
50
|
print(" mdan init my-app # New project")
|
|
50
51
|
print(" cd my-project && mdan attach # Existing project")
|
|
51
|
-
print(" mdan attach --rebuild # Rebuild from scratch
|
|
52
|
+
print(" mdan attach --rebuild # Rebuild from scratch")
|
|
53
|
+
print(" mdan auto # Start autonomous mode")
|
|
54
|
+
print(" mdan resume /tmp/mdan-save-*.json # Resume execution\n")
|
|
52
55
|
print(f"{BOLD}AGENTS{NC}")
|
|
53
|
-
print(
|
|
56
|
+
print(
|
|
57
|
+
" product, architect, ux, dev, test, security, devops, doc, auto-orchestrator"
|
|
58
|
+
)
|
|
54
59
|
|
|
55
60
|
|
|
56
61
|
def cmd_init(name="my-project"):
|
|
@@ -284,6 +289,68 @@ def cmd_skills():
|
|
|
284
289
|
print(" No skills installed")
|
|
285
290
|
|
|
286
291
|
|
|
292
|
+
def cmd_auto():
|
|
293
|
+
print(f"{CYAN}🚀 MDAN-AUTO v1.0 - Autonomous Development Mode{NC}\n")
|
|
294
|
+
print(f"{BOLD}Starting autonomous execution...{NC}\n")
|
|
295
|
+
print(f"{YELLOW}This will execute all phases without human intervention.{NC}")
|
|
296
|
+
print(f"{YELLOW}Context will be saved at 80% token limit.{NC}\n")
|
|
297
|
+
print(f"{BOLD}Phases:{NC}")
|
|
298
|
+
print(" 1. LOAD - Load project context")
|
|
299
|
+
print(" 2. DISCOVER - Analyze requirements")
|
|
300
|
+
print(" 3. PLAN - Create implementation plan")
|
|
301
|
+
print(" 4. ARCHITECT - Design system architecture")
|
|
302
|
+
print(" 5. IMPLEMENT - Execute implementation")
|
|
303
|
+
print(" 6. TEST - Run comprehensive tests")
|
|
304
|
+
print(" 7. DEPLOY - Deploy to production")
|
|
305
|
+
print(" 8. DOC - Generate documentation\n")
|
|
306
|
+
print(f"{GREEN}✅ MDAN-AUTO initialized{NC}")
|
|
307
|
+
print(
|
|
308
|
+
f" {BOLD}Next:{NC} Load the Auto Orchestrator prompt from agents/auto-orchestrator.md"
|
|
309
|
+
)
|
|
310
|
+
|
|
311
|
+
|
|
312
|
+
def cmd_resume(save_file=None):
|
|
313
|
+
if not save_file:
|
|
314
|
+
print(f"{RED}Error: Save file required{NC}")
|
|
315
|
+
print(" Usage: mdan resume <save-file>")
|
|
316
|
+
return
|
|
317
|
+
|
|
318
|
+
save_path = Path(save_file)
|
|
319
|
+
if not save_path.exists():
|
|
320
|
+
print(f"{RED}Error: Save file not found: {save_file}{NC}")
|
|
321
|
+
return
|
|
322
|
+
|
|
323
|
+
print(f"{CYAN}🔄 Resuming from: {BOLD}{save_file}{NC}\n")
|
|
324
|
+
|
|
325
|
+
try:
|
|
326
|
+
with open(save_path, "r") as f:
|
|
327
|
+
state = json.load(f)
|
|
328
|
+
|
|
329
|
+
print(f"{BOLD}Project:{NC} {state.get('project', {}).get('name', 'Unknown')}")
|
|
330
|
+
print(
|
|
331
|
+
f"{BOLD}Current Phase:{NC} {state.get('phases', {}).get('current', 'Unknown')}"
|
|
332
|
+
)
|
|
333
|
+
print(
|
|
334
|
+
f"{BOLD}Completed Phases:{NC} {', '.join(state.get('phases', {}).get('completed', []))}"
|
|
335
|
+
)
|
|
336
|
+
print(
|
|
337
|
+
f"{BOLD}Token Usage:{NC} {state.get('context', {}).get('token_usage', {}).get('total', 0)} / {state.get('context', {}).get('token_usage', {}).get('limit', 128000)} ({state.get('context', {}).get('token_usage', {}).get('percentage', 0) * 100:.1f}%)\n"
|
|
338
|
+
)
|
|
339
|
+
|
|
340
|
+
print(f"{GREEN}✅ Context loaded{NC}")
|
|
341
|
+
print(
|
|
342
|
+
f" {BOLD}Next:{NC} Continue from {state.get('phases', {}).get('current', 'Unknown')} phase"
|
|
343
|
+
)
|
|
344
|
+
print(
|
|
345
|
+
f" {BOLD}Tip:{NC} Load the Auto Orchestrator prompt with the restored context"
|
|
346
|
+
)
|
|
347
|
+
|
|
348
|
+
except json.JSONDecodeError:
|
|
349
|
+
print(f"{RED}Error: Invalid save file format{NC}")
|
|
350
|
+
except Exception as e:
|
|
351
|
+
print(f"{RED}Error: {e}{NC}")
|
|
352
|
+
|
|
353
|
+
|
|
287
354
|
def main():
|
|
288
355
|
args = sys.argv[1:]
|
|
289
356
|
cmd = args[0] if args else "help"
|
|
@@ -306,6 +373,10 @@ def main():
|
|
|
306
373
|
cmd_agent(args[1] if len(args) > 1 else None)
|
|
307
374
|
elif cmd == "skills":
|
|
308
375
|
cmd_skills()
|
|
376
|
+
elif cmd == "auto":
|
|
377
|
+
cmd_auto()
|
|
378
|
+
elif cmd == "resume":
|
|
379
|
+
cmd_resume(args[1] if len(args) > 1 else None)
|
|
309
380
|
elif cmd in ["version", "-v"]:
|
|
310
381
|
print(f"MDAN v{VERSION}")
|
|
311
382
|
else:
|
package/cli/mdan.sh
CHANGED
|
@@ -0,0 +1,454 @@
|
|
|
1
|
+
# Multi-Agent Debate Protocol
|
|
2
|
+
|
|
3
|
+
> MDAN-AUTO v1.0 Decision-Making Through Agent Collaboration
|
|
4
|
+
|
|
5
|
+
## Overview
|
|
6
|
+
|
|
7
|
+
The debate protocol enables multiple MDAN agents to collaborate on complex decisions, providing diverse perspectives and ensuring well-considered choices.
|
|
8
|
+
|
|
9
|
+
## When to Trigger a Debate
|
|
10
|
+
|
|
11
|
+
Trigger a debate for:
|
|
12
|
+
|
|
13
|
+
- **Architecture Decisions**
|
|
14
|
+
- Monolith vs microservices
|
|
15
|
+
- Design patterns
|
|
16
|
+
- Technology stack choices
|
|
17
|
+
- System boundaries
|
|
18
|
+
|
|
19
|
+
- **Security Decisions**
|
|
20
|
+
- Authentication methods
|
|
21
|
+
- Authorization models
|
|
22
|
+
- Encryption strategies
|
|
23
|
+
- Security controls
|
|
24
|
+
|
|
25
|
+
- **Performance Decisions**
|
|
26
|
+
- Caching strategies
|
|
27
|
+
- Database optimization
|
|
28
|
+
- Scaling approaches
|
|
29
|
+
- Resource allocation
|
|
30
|
+
|
|
31
|
+
- **Implementation Decisions**
|
|
32
|
+
- Code organization
|
|
33
|
+
- Library choices
|
|
34
|
+
- Testing strategies
|
|
35
|
+
- Error handling
|
|
36
|
+
|
|
37
|
+
- **DevOps Decisions**
|
|
38
|
+
- Deployment strategies
|
|
39
|
+
- CI/CD pipelines
|
|
40
|
+
- Infrastructure choices
|
|
41
|
+
- Monitoring approaches
|
|
42
|
+
|
|
43
|
+
## Debate Participants
|
|
44
|
+
|
|
45
|
+
### Core Agents
|
|
46
|
+
|
|
47
|
+
| Agent | Expertise | Debate Topics |
|
|
48
|
+
|-------|-----------|---------------|
|
|
49
|
+
| Product | Requirements, user needs | Feature decisions, UX choices |
|
|
50
|
+
| Architect | System design, patterns | Architecture, technology stack |
|
|
51
|
+
| Dev | Implementation, code quality | Implementation approaches, libraries |
|
|
52
|
+
| Security | Security, compliance | Security controls, authentication |
|
|
53
|
+
| Test | Testing, quality | Testing strategies, quality gates |
|
|
54
|
+
| DevOps | Deployment, infrastructure | Deployment, CI/CD, infrastructure |
|
|
55
|
+
| Doc | Documentation | Documentation approaches |
|
|
56
|
+
|
|
57
|
+
### Participant Selection
|
|
58
|
+
|
|
59
|
+
Select participants based on topic:
|
|
60
|
+
|
|
61
|
+
**Architecture Decisions:**
|
|
62
|
+
- Architect (lead)
|
|
63
|
+
- Dev
|
|
64
|
+
- DevOps
|
|
65
|
+
- Security
|
|
66
|
+
|
|
67
|
+
**Security Decisions:**
|
|
68
|
+
- Security (lead)
|
|
69
|
+
- Architect
|
|
70
|
+
- Dev
|
|
71
|
+
- DevOps
|
|
72
|
+
|
|
73
|
+
**Performance Decisions:**
|
|
74
|
+
- Dev (lead)
|
|
75
|
+
- Architect
|
|
76
|
+
- DevOps
|
|
77
|
+
|
|
78
|
+
**Implementation Decisions:**
|
|
79
|
+
- Dev (lead)
|
|
80
|
+
- Architect
|
|
81
|
+
- Test
|
|
82
|
+
|
|
83
|
+
**DevOps Decisions:**
|
|
84
|
+
- DevOps (lead)
|
|
85
|
+
- Architect
|
|
86
|
+
- Security
|
|
87
|
+
|
|
88
|
+
**Feature Decisions:**
|
|
89
|
+
- Product (lead)
|
|
90
|
+
- Architect
|
|
91
|
+
- Doc
|
|
92
|
+
|
|
93
|
+
## Debate Process
|
|
94
|
+
|
|
95
|
+
### Step 1: Define Question
|
|
96
|
+
|
|
97
|
+
Create a clear, specific question:
|
|
98
|
+
|
|
99
|
+
```
|
|
100
|
+
❌ Bad: "How should we do authentication?"
|
|
101
|
+
|
|
102
|
+
✅ Good: "Should we use JWT tokens or session-based authentication
|
|
103
|
+
for a Blazor Server application with Azure AD integration?"
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
Include:
|
|
107
|
+
- Context
|
|
108
|
+
- Constraints
|
|
109
|
+
- Requirements
|
|
110
|
+
- Trade-offs
|
|
111
|
+
|
|
112
|
+
### Step 2: Select Participants
|
|
113
|
+
|
|
114
|
+
Choose relevant agents:
|
|
115
|
+
- Lead agent (primary expertise)
|
|
116
|
+
- Supporting agents (related expertise)
|
|
117
|
+
- 3-5 agents maximum
|
|
118
|
+
|
|
119
|
+
### Step 3: Present Question
|
|
120
|
+
|
|
121
|
+
Send question to all participants with:
|
|
122
|
+
- Clear question
|
|
123
|
+
- Context
|
|
124
|
+
- Constraints
|
|
125
|
+
- Requirements
|
|
126
|
+
- Deadline (optional)
|
|
127
|
+
|
|
128
|
+
### Step 4: Collect Arguments
|
|
129
|
+
|
|
130
|
+
Each participant provides:
|
|
131
|
+
|
|
132
|
+
1. **Recommendation**: Clear choice
|
|
133
|
+
2. **Rationale**: Why this choice
|
|
134
|
+
3. **Pros**: Benefits of choice
|
|
135
|
+
4. **Cons**: Drawbacks of choice
|
|
136
|
+
5. **Evidence**: Supporting facts/experience
|
|
137
|
+
6. **Alternatives**: Other options considered
|
|
138
|
+
|
|
139
|
+
### Step 5: Score Arguments
|
|
140
|
+
|
|
141
|
+
Score each argument on:
|
|
142
|
+
|
|
143
|
+
| Criteria | Weight | Description |
|
|
144
|
+
|----------|--------|-------------|
|
|
145
|
+
| Technical Merit | 30% | Technical soundness |
|
|
146
|
+
| Alignment | 25% | Alignment with requirements |
|
|
147
|
+
| Security | 20% | Security implications |
|
|
148
|
+
| Maintainability | 15% | Long-term maintainability |
|
|
149
|
+
| Feasibility | 10% | Implementation feasibility |
|
|
150
|
+
|
|
151
|
+
Total score: 0-100
|
|
152
|
+
|
|
153
|
+
### Step 6: Select Winner
|
|
154
|
+
|
|
155
|
+
Choose argument with highest score.
|
|
156
|
+
|
|
157
|
+
If scores are close (<5% difference):
|
|
158
|
+
- Consider hybrid approach
|
|
159
|
+
- Or defer to lead agent
|
|
160
|
+
|
|
161
|
+
### Step 7: Document Decision
|
|
162
|
+
|
|
163
|
+
Record:
|
|
164
|
+
- Question
|
|
165
|
+
- Participants
|
|
166
|
+
- Arguments
|
|
167
|
+
- Scores
|
|
168
|
+
- Winner
|
|
169
|
+
- Rationale
|
|
170
|
+
- Implementation plan
|
|
171
|
+
|
|
172
|
+
### Step 8: Implement
|
|
173
|
+
|
|
174
|
+
Apply decision to implementation.
|
|
175
|
+
|
|
176
|
+
## Debate Output Format
|
|
177
|
+
|
|
178
|
+
```markdown
|
|
179
|
+
## Debate: [Topic]
|
|
180
|
+
|
|
181
|
+
### Question
|
|
182
|
+
[Clear, specific question with context]
|
|
183
|
+
|
|
184
|
+
### Context
|
|
185
|
+
- Project: [Project name]
|
|
186
|
+
- Phase: [Current phase]
|
|
187
|
+
- Requirements: [Key requirements]
|
|
188
|
+
- Constraints: [Constraints]
|
|
189
|
+
|
|
190
|
+
### Participants
|
|
191
|
+
- **Lead**: [Agent name] - [Role]
|
|
192
|
+
- [Agent name] - [Role]
|
|
193
|
+
- [Agent name] - [Role]
|
|
194
|
+
|
|
195
|
+
### Arguments
|
|
196
|
+
|
|
197
|
+
#### [Agent Name]
|
|
198
|
+
**Recommendation**: [Choice]
|
|
199
|
+
|
|
200
|
+
**Rationale**: [Why this choice]
|
|
201
|
+
|
|
202
|
+
**Pros**:
|
|
203
|
+
- [Benefit 1]
|
|
204
|
+
- [Benefit 2]
|
|
205
|
+
|
|
206
|
+
**Cons**:
|
|
207
|
+
- [Drawback 1]
|
|
208
|
+
- [Drawback 2]
|
|
209
|
+
|
|
210
|
+
**Evidence**: [Supporting facts]
|
|
211
|
+
|
|
212
|
+
**Alternatives Considered**:
|
|
213
|
+
- [Alternative 1] - [Why rejected]
|
|
214
|
+
- [Alternative 2] - [Why rejected]
|
|
215
|
+
|
|
216
|
+
**Score**: [0-100]
|
|
217
|
+
|
|
218
|
+
---
|
|
219
|
+
|
|
220
|
+
#### [Agent Name]
|
|
221
|
+
[Same structure]
|
|
222
|
+
|
|
223
|
+
---
|
|
224
|
+
|
|
225
|
+
### Scoring Summary
|
|
226
|
+
|
|
227
|
+
| Agent | Technical | Alignment | Security | Maintainability | Feasibility | Total |
|
|
228
|
+
|-------|-----------|-----------|----------|-----------------|-------------|-------|
|
|
229
|
+
| Agent A | 25 | 20 | 15 | 12 | 8 | 80 |
|
|
230
|
+
| Agent B | 28 | 23 | 18 | 14 | 9 | 92 |
|
|
231
|
+
| Agent C | 22 | 18 | 16 | 11 | 7 | 74 |
|
|
232
|
+
|
|
233
|
+
### Decision
|
|
234
|
+
**Winner**: [Agent name]
|
|
235
|
+
|
|
236
|
+
**Rationale**: [Why this argument won]
|
|
237
|
+
|
|
238
|
+
**Score**: [Winning score]
|
|
239
|
+
|
|
240
|
+
### Implementation
|
|
241
|
+
[How decision will be implemented]
|
|
242
|
+
|
|
243
|
+
### Next Steps
|
|
244
|
+
1. [Step 1]
|
|
245
|
+
2. [Step 2]
|
|
246
|
+
3. [Step 3]
|
|
247
|
+
|
|
248
|
+
### Timestamp
|
|
249
|
+
[ISO 8601 timestamp]
|
|
250
|
+
```
|
|
251
|
+
|
|
252
|
+
## Debate Example
|
|
253
|
+
|
|
254
|
+
```markdown
|
|
255
|
+
## Debate: Authentication Strategy
|
|
256
|
+
|
|
257
|
+
### Question
|
|
258
|
+
Should we use JWT tokens or session-based authentication for a Blazor Server
|
|
259
|
+
application with Azure AD integration?
|
|
260
|
+
|
|
261
|
+
### Context
|
|
262
|
+
- Project: External Service Integration
|
|
263
|
+
- Phase: ARCHITECT
|
|
264
|
+
- Requirements: Secure authentication, Azure AD integration, session management
|
|
265
|
+
- Constraints: Must support multiple external service APIs
|
|
266
|
+
|
|
267
|
+
### Participants
|
|
268
|
+
- **Lead**: Security - Security expertise
|
|
269
|
+
- Architect - System design
|
|
270
|
+
- Dev - Implementation
|
|
271
|
+
|
|
272
|
+
### Arguments
|
|
273
|
+
|
|
274
|
+
#### Security
|
|
275
|
+
**Recommendation**: JWT tokens with Azure AD
|
|
276
|
+
|
|
277
|
+
**Rationale**: JWT provides stateless authentication, works well with Azure AD,
|
|
278
|
+
and is industry standard for modern applications.
|
|
279
|
+
|
|
280
|
+
**Pros**:
|
|
281
|
+
- Stateless, no server-side session storage
|
|
282
|
+
- Works seamlessly with Azure AD
|
|
283
|
+
- Industry standard
|
|
284
|
+
- Easy to scale
|
|
285
|
+
- Built-in expiration and refresh
|
|
286
|
+
|
|
287
|
+
**Cons**:
|
|
288
|
+
- Token revocation is complex
|
|
289
|
+
- Larger payload size
|
|
290
|
+
- Requires careful token validation
|
|
291
|
+
|
|
292
|
+
**Evidence**: OWASP recommends JWT for stateless authentication. Azure AD
|
|
293
|
+
natively issues JWT tokens.
|
|
294
|
+
|
|
295
|
+
**Alternatives Considered**:
|
|
296
|
+
- Session-based - Rejected due to scaling concerns
|
|
297
|
+
- Hybrid - Rejected due to complexity
|
|
298
|
+
|
|
299
|
+
**Score**: 92
|
|
300
|
+
|
|
301
|
+
---
|
|
302
|
+
|
|
303
|
+
#### Architect
|
|
304
|
+
**Recommendation**: Session-based authentication
|
|
305
|
+
|
|
306
|
+
**Rationale**: Blazor Server maintains server-side state, session-based auth
|
|
307
|
+
aligns better with the architecture.
|
|
308
|
+
|
|
309
|
+
**Pros**:
|
|
310
|
+
- Natural fit for Blazor Server
|
|
311
|
+
- Easy to implement
|
|
312
|
+
- Built-in session management
|
|
313
|
+
- Simple revocation
|
|
314
|
+
|
|
315
|
+
**Cons**:
|
|
316
|
+
- Requires server-side storage
|
|
317
|
+
- Harder to scale
|
|
318
|
+
- Session affinity required
|
|
319
|
+
- More complex with Azure AD
|
|
320
|
+
|
|
321
|
+
**Evidence**: Blazor Server documentation recommends session-based auth for
|
|
322
|
+
server-side rendering.
|
|
323
|
+
|
|
324
|
+
**Alternatives Considered**:
|
|
325
|
+
- JWT - Rejected due to Blazor Server architecture
|
|
326
|
+
- Hybrid - Rejected due to complexity
|
|
327
|
+
|
|
328
|
+
**Score**: 78
|
|
329
|
+
|
|
330
|
+
---
|
|
331
|
+
|
|
332
|
+
#### Dev
|
|
333
|
+
**Recommendation**: JWT tokens with Azure AD
|
|
334
|
+
|
|
335
|
+
**Rationale**: JWT is easier to implement with Azure AD and provides better
|
|
336
|
+
separation of concerns.
|
|
337
|
+
|
|
338
|
+
**Pros**:
|
|
339
|
+
- Easy Azure AD integration
|
|
340
|
+
- Standard libraries available
|
|
341
|
+
- Clear separation of auth logic
|
|
342
|
+
- Better for API calls
|
|
343
|
+
|
|
344
|
+
**Cons**:
|
|
345
|
+
- Token management complexity
|
|
346
|
+
- Refresh token handling
|
|
347
|
+
|
|
348
|
+
**Evidence**: Microsoft.Identity.Web library provides excellent JWT support
|
|
349
|
+
for Azure AD.
|
|
350
|
+
|
|
351
|
+
**Alternatives Considered**:
|
|
352
|
+
- Session-based - Rejected due to Azure AD complexity
|
|
353
|
+
|
|
354
|
+
**Score**: 88
|
|
355
|
+
|
|
356
|
+
---
|
|
357
|
+
|
|
358
|
+
### Scoring Summary
|
|
359
|
+
|
|
360
|
+
| Agent | Technical | Alignment | Security | Maintainability | Feasibility | Total |
|
|
361
|
+
|-------|-----------|-----------|----------|-----------------|-------------|-------|
|
|
362
|
+
| Security | 28 | 23 | 18 | 14 | 9 | 92 |
|
|
363
|
+
| Architect | 22 | 20 | 14 | 12 | 10 | 78 |
|
|
364
|
+
| Dev | 26 | 22 | 16 | 13 | 11 | 88 |
|
|
365
|
+
|
|
366
|
+
### Decision
|
|
367
|
+
**Winner**: Security
|
|
368
|
+
|
|
369
|
+
**Rationale**: JWT with Azure AD provides the best security posture, aligns
|
|
370
|
+
with industry standards, and has excellent Azure integration. The slight
|
|
371
|
+
complexity is outweighed by security benefits and scalability.
|
|
372
|
+
|
|
373
|
+
**Score**: 92
|
|
374
|
+
|
|
375
|
+
### Implementation
|
|
376
|
+
1. Configure Azure AD app registration
|
|
377
|
+
2. Implement JWT token validation middleware
|
|
378
|
+
3. Use Microsoft.Identity.Web library
|
|
379
|
+
4. Implement token refresh logic
|
|
380
|
+
5. Add token validation to API endpoints
|
|
381
|
+
|
|
382
|
+
### Next Steps
|
|
383
|
+
1. Create Azure AD app registration
|
|
384
|
+
2. Implement authentication middleware
|
|
385
|
+
3. Update Blazor Server configuration
|
|
386
|
+
4. Test authentication flow
|
|
387
|
+
5. Document authentication approach
|
|
388
|
+
|
|
389
|
+
### Timestamp
|
|
390
|
+
2024-01-15T10:15:00Z
|
|
391
|
+
```
|
|
392
|
+
|
|
393
|
+
## Debate Timeout
|
|
394
|
+
|
|
395
|
+
Set timeout for debates:
|
|
396
|
+
- Default: 5 minutes per agent
|
|
397
|
+
- Maximum: 30 minutes total
|
|
398
|
+
- If timeout, use available arguments
|
|
399
|
+
|
|
400
|
+
## Debate Cancellation
|
|
401
|
+
|
|
402
|
+
Cancel debate if:
|
|
403
|
+
- Question is unclear
|
|
404
|
+
- Insufficient context
|
|
405
|
+
- Emergency situation
|
|
406
|
+
- User intervention
|
|
407
|
+
|
|
408
|
+
## Debate Storage
|
|
409
|
+
|
|
410
|
+
Store debates in:
|
|
411
|
+
- `context.debates` array in save file
|
|
412
|
+
- Separate debate log file
|
|
413
|
+
- Decision history
|
|
414
|
+
|
|
415
|
+
## Debate Quality
|
|
416
|
+
|
|
417
|
+
Ensure debate quality:
|
|
418
|
+
- Clear questions
|
|
419
|
+
- Relevant participants
|
|
420
|
+
- Well-reasoned arguments
|
|
421
|
+
- Evidence-based decisions
|
|
422
|
+
- Proper documentation
|
|
423
|
+
|
|
424
|
+
## Debate Automation
|
|
425
|
+
|
|
426
|
+
Automate debate triggering:
|
|
427
|
+
- Detect complex decisions
|
|
428
|
+
- Select participants automatically
|
|
429
|
+
- Collect arguments
|
|
430
|
+
- Score and decide
|
|
431
|
+
- Document and implement
|
|
432
|
+
|
|
433
|
+
## Debate Review
|
|
434
|
+
|
|
435
|
+
Review debates periodically:
|
|
436
|
+
- Check decision quality
|
|
437
|
+
- Validate implementation
|
|
438
|
+
- Learn from outcomes
|
|
439
|
+
- Improve process
|
|
440
|
+
|
|
441
|
+
## Best Practices
|
|
442
|
+
|
|
443
|
+
1. **Clear Questions**: Be specific and provide context
|
|
444
|
+
2. **Right Participants**: Choose agents with relevant expertise
|
|
445
|
+
3. **Evidence-Based**: Use facts and experience
|
|
446
|
+
4. **Fair Scoring**: Use consistent criteria
|
|
447
|
+
5. **Document Everything**: Record full debate
|
|
448
|
+
6. **Implement Decisions**: Apply decisions consistently
|
|
449
|
+
7. **Review Outcomes**: Learn from results
|
|
450
|
+
8. **Time-Boxed**: Set reasonable timeouts
|
|
451
|
+
|
|
452
|
+
## Version
|
|
453
|
+
|
|
454
|
+
MDAN-AUTO Debate Protocol v1.0
|
|
@@ -158,3 +158,116 @@ Use markdown headers only. Gemini responds better to `# Identity`, `## Capabilit
|
|
|
158
158
|
|
|
159
159
|
### For Qwen / GLM / Kimi / MiniMax
|
|
160
160
|
The bracket notation works. If issues arise, switch to markdown headers as fallback.
|
|
161
|
+
|
|
162
|
+
---
|
|
163
|
+
|
|
164
|
+
## Autonomous Mode Extension
|
|
165
|
+
|
|
166
|
+
For autonomous agents (like MDAN-AUTO), the envelope includes additional sections:
|
|
167
|
+
|
|
168
|
+
```
|
|
169
|
+
[MDAN-AGENT]
|
|
170
|
+
NAME: Auto Orchestrator
|
|
171
|
+
VERSION: 1.0
|
|
172
|
+
ROLE: Autonomous full-cycle development coordinator
|
|
173
|
+
PHASE: ALL (LOAD → DISCOVER → PLAN → ARCHITECT → IMPLEMENT → TEST → DEPLOY → DOC)
|
|
174
|
+
REPORTS_TO: System
|
|
175
|
+
|
|
176
|
+
[IDENTITY]
|
|
177
|
+
You are an autonomous orchestrator that executes all development phases without human intervention.
|
|
178
|
+
You make decisions independently, save context at token limits, and resume from checkpoints.
|
|
179
|
+
|
|
180
|
+
[CAPABILITIES]
|
|
181
|
+
- Execute all 8 phases sequentially without human confirmation
|
|
182
|
+
- Save context to /tmp/mdan-save-[timestamp].json at 80% token limit
|
|
183
|
+
- Resume from saved context files
|
|
184
|
+
- Initiate multi-agent debates for complex decisions
|
|
185
|
+
- Fail-fast on critical errors
|
|
186
|
+
- Generate markdown outputs for each phase
|
|
187
|
+
|
|
188
|
+
[CONSTRAINTS]
|
|
189
|
+
- NEVER ask for confirmation except on critical errors
|
|
190
|
+
- NEVER pause between phases
|
|
191
|
+
- ALWAYS save context before hitting token limits
|
|
192
|
+
- ALWAYS use existing files (git clone if needed)
|
|
193
|
+
- ALL buttons must work with actual functionality
|
|
194
|
+
- ALL image URLs must be valid
|
|
195
|
+
|
|
196
|
+
[INPUT_FORMAT]
|
|
197
|
+
- Project description or requirements
|
|
198
|
+
- Optional: resume file path (--resume flag)
|
|
199
|
+
- Optional: tech stack specification
|
|
200
|
+
|
|
201
|
+
[OUTPUT_FORMAT]
|
|
202
|
+
Each phase outputs:
|
|
203
|
+
1. Markdown file: [PHASE]-[name].md
|
|
204
|
+
2. Signal: "PHASE X COMPLETE ✅"
|
|
205
|
+
3. Context save: "CONTEXT SAVE [file]" (when needed)
|
|
206
|
+
4. Final: "MISSION COMPLETE ✅"
|
|
207
|
+
|
|
208
|
+
[CONTEXT_MANAGEMENT]
|
|
209
|
+
- Monitor token usage continuously
|
|
210
|
+
- At 80% limit: save full context to /tmp/mdan-save-[timestamp].json
|
|
211
|
+
- Include: current phase, all artifacts, decisions, state
|
|
212
|
+
- Resume: load context and continue from saved phase
|
|
213
|
+
|
|
214
|
+
[DEBATE_PROTOCOL]
|
|
215
|
+
For complex decisions:
|
|
216
|
+
1. Identify 2-3 expert perspectives
|
|
217
|
+
2. Run inline debate (3 rounds max)
|
|
218
|
+
3. Converge on consensus
|
|
219
|
+
4. Document decision rationale
|
|
220
|
+
|
|
221
|
+
[QUALITY_CHECKLIST]
|
|
222
|
+
Before phase completion:
|
|
223
|
+
- [ ] All deliverables created
|
|
224
|
+
- [ ] Quality gates passed
|
|
225
|
+
- [ ] Context saved (if near limit)
|
|
226
|
+
- [ ] Next phase ready
|
|
227
|
+
|
|
228
|
+
[ESCALATION]
|
|
229
|
+
Only escalate on:
|
|
230
|
+
- Critical errors that halt progress
|
|
231
|
+
- Ambiguous requirements that cannot be resolved
|
|
232
|
+
- Security vulnerabilities requiring human review
|
|
233
|
+
[/MDAN-AGENT]
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
### Autonomous Mode Signals
|
|
237
|
+
|
|
238
|
+
The autonomous orchestrator uses specific signals:
|
|
239
|
+
|
|
240
|
+
- `PHASE X COMPLETE ✅` - Phase finished successfully
|
|
241
|
+
- `CONTEXT SAVE [file]` - Context saved to file
|
|
242
|
+
- `RESUMING FROM [file]` - Loading saved context
|
|
243
|
+
- `DEBATE: [topic]` - Starting multi-agent debate
|
|
244
|
+
- `CRITICAL ERROR: [description]` - Fail-fast condition
|
|
245
|
+
- `MISSION COMPLETE ✅` - All phases finished
|
|
246
|
+
|
|
247
|
+
### Context Save Format
|
|
248
|
+
|
|
249
|
+
```json
|
|
250
|
+
{
|
|
251
|
+
"version": "1.0",
|
|
252
|
+
"timestamp": "2024-01-01T12:00:00Z",
|
|
253
|
+
"current_phase": "IMPLEMENT",
|
|
254
|
+
"phases_completed": ["LOAD", "DISCOVER", "PLAN", "ARCHITECT"],
|
|
255
|
+
"artifacts": {
|
|
256
|
+
"prd": "path/to/prd.md",
|
|
257
|
+
"architecture": "path/to/architecture.md",
|
|
258
|
+
"implementation_plan": "path/to/plan.md"
|
|
259
|
+
},
|
|
260
|
+
"decisions": [
|
|
261
|
+
{
|
|
262
|
+
"topic": "Database choice",
|
|
263
|
+
"decision": "PostgreSQL",
|
|
264
|
+
"rationale": "..."
|
|
265
|
+
}
|
|
266
|
+
],
|
|
267
|
+
"state": {
|
|
268
|
+
"project_name": "my-project",
|
|
269
|
+
"tech_stack": {...},
|
|
270
|
+
"files_created": [...]
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
```
|