aios-core 2.2.2 → 2.3.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/.aios-core/.session/current-session.json +14 -14
- package/.aios-core/cli/commands/migrate/validate.js +1 -1
- package/.aios-core/core/docs/session-update-pattern.md +17 -10
- package/.aios-core/core/elicitation/elicitation-engine.js +11 -6
- package/.aios-core/core/elicitation/session-manager.js +2 -1
- package/.aios-core/core/registry/registry-schema.json +166 -166
- package/.aios-core/core/registry/service-registry.json +6585 -6585
- package/.aios-core/core-config.yaml +12 -1
- package/.aios-core/data/agent-config-requirements.yaml +5 -5
- package/.aios-core/development/agents/devops.md +12 -0
- package/.aios-core/development/scripts/squad/README.md +112 -0
- package/.aios-core/development/scripts/squad/index.js +41 -0
- package/.aios-core/development/scripts/squad/squad-loader.js +359 -0
- package/.aios-core/development/scripts/squad/squad-validator.js +685 -0
- package/.aios-core/development/tasks/add-mcp.md +11 -5
- package/.aios-core/development/tasks/search-mcp.md +309 -0
- package/.aios-core/development/tasks/setup-mcp-docker.md +11 -8
- package/.aios-core/development/tasks/squad-creator-validate.md +151 -0
- package/.aios-core/docs/standards/AGENT-PERSONALIZATION-STANDARD-V1.md +3 -3
- package/.aios-core/index.d.ts +7 -7
- package/.aios-core/index.js +1 -1
- package/.aios-core/infrastructure/scripts/batch-creator.js +1 -1
- package/.aios-core/infrastructure/scripts/component-generator.js +1 -1
- package/.aios-core/infrastructure/templates/coderabbit.yaml.template +279 -279
- package/.aios-core/infrastructure/templates/github-workflows/ci.yml.template +169 -169
- package/.aios-core/infrastructure/templates/github-workflows/pr-automation.yml.template +330 -330
- package/.aios-core/infrastructure/templates/github-workflows/release.yml.template +196 -196
- package/.aios-core/infrastructure/templates/gitignore/gitignore-aios-base.tmpl +63 -63
- package/.aios-core/infrastructure/templates/gitignore/gitignore-brownfield-merge.tmpl +18 -18
- package/.aios-core/infrastructure/templates/gitignore/gitignore-node.tmpl +85 -85
- package/.aios-core/infrastructure/templates/gitignore/gitignore-python.tmpl +145 -145
- package/.aios-core/infrastructure/tests/utilities-audit-results.json +500 -500
- package/.aios-core/infrastructure/tools/README.md +1 -1
- package/.aios-core/install-manifest.yaml +4 -1
- package/.aios-core/manifests/schema/manifest-schema.json +190 -190
- package/.aios-core/manifests/workers.csv +203 -203
- package/.aios-core/package.json +102 -102
- package/.aios-core/product/templates/activation-instructions-template.md +7 -7
- package/.aios-core/product/templates/adr.hbs +125 -125
- package/.aios-core/product/templates/component-react-tmpl.tsx +98 -98
- package/.aios-core/product/templates/dbdr.hbs +241 -241
- package/.aios-core/product/templates/engine/schemas/adr.schema.json +102 -102
- package/.aios-core/product/templates/engine/schemas/dbdr.schema.json +205 -205
- package/.aios-core/product/templates/engine/schemas/epic.schema.json +175 -175
- package/.aios-core/product/templates/engine/schemas/pmdr.schema.json +175 -175
- package/.aios-core/product/templates/engine/schemas/prd-v2.schema.json +300 -300
- package/.aios-core/product/templates/engine/schemas/prd.schema.json +152 -152
- package/.aios-core/product/templates/engine/schemas/story.schema.json +222 -222
- package/.aios-core/product/templates/engine/schemas/task.schema.json +154 -154
- package/.aios-core/product/templates/epic.hbs +212 -212
- package/.aios-core/product/templates/eslintrc-security.json +32 -32
- package/.aios-core/product/templates/github-actions-cd.yml +212 -212
- package/.aios-core/product/templates/github-actions-ci.yml +172 -172
- package/.aios-core/product/templates/pmdr.hbs +186 -186
- package/.aios-core/product/templates/prd-v2.0.hbs +216 -216
- package/.aios-core/product/templates/prd.hbs +201 -201
- package/.aios-core/product/templates/shock-report-tmpl.html +502 -502
- package/.aios-core/product/templates/story.hbs +263 -263
- package/.aios-core/product/templates/task.hbs +170 -170
- package/.aios-core/product/templates/tmpl-comment-on-examples.sql +158 -158
- package/.aios-core/product/templates/tmpl-migration-script.sql +91 -91
- package/.aios-core/product/templates/tmpl-rls-granular-policies.sql +104 -104
- package/.aios-core/product/templates/tmpl-rls-kiss-policy.sql +10 -10
- package/.aios-core/product/templates/tmpl-rls-roles.sql +135 -135
- package/.aios-core/product/templates/tmpl-rls-simple.sql +77 -77
- package/.aios-core/product/templates/tmpl-rls-tenant.sql +152 -152
- package/.aios-core/product/templates/tmpl-rollback-script.sql +77 -77
- package/.aios-core/product/templates/tmpl-seed-data.sql +140 -140
- package/.aios-core/product/templates/tmpl-smoke-test.sql +16 -16
- package/.aios-core/product/templates/tmpl-staging-copy-merge.sql +139 -139
- package/.aios-core/product/templates/tmpl-stored-proc.sql +140 -140
- package/.aios-core/product/templates/tmpl-trigger.sql +152 -152
- package/.aios-core/product/templates/tmpl-view-materialized.sql +133 -133
- package/.aios-core/product/templates/tmpl-view.sql +177 -177
- package/.aios-core/product/templates/token-exports-css-tmpl.css +240 -240
- package/.aios-core/quality/schemas/quality-metrics.schema.json +233 -233
- package/.aios-core/schemas/squad-schema.json +185 -0
- package/.aios-core/scripts/README.md +90 -322
- package/.aios-core/scripts/migrate-framework-docs.sh +300 -300
- package/.claude/rules/mcp-usage.md +116 -100
- package/LICENSE +48 -48
- package/README.md +3 -4
- package/bin/aios.js +2 -1
- package/package.json +1 -3
- package/packages/installer/package.json +39 -39
- package/templates/squad/LICENSE +21 -21
- package/templates/squad/README.md +37 -37
- package/templates/squad/agents/example-agent.yaml +36 -36
- package/templates/squad/package.json +19 -19
- package/templates/squad/squad.yaml +25 -25
- package/templates/squad/tasks/example-task.yaml +46 -46
- package/templates/squad/templates/example-template.md +24 -24
- package/templates/squad/tests/example-agent.test.js +53 -53
- package/templates/squad/workflows/example-workflow.yaml +54 -54
- package/tools/diagnose-npx-issue.ps1 +96 -96
- package/tools/quick-diagnose.cmd +85 -85
- package/tools/quick-diagnose.ps1 +117 -117
- package/.aios-core/core/data/agent-config-requirements.yaml +0 -368
- package/.aios-core/core/data/aios-kb.md +0 -924
- package/.aios-core/core/data/workflow-patterns.yaml +0 -267
- package/.aios-core/product/templates/1mcp-config.yaml +0 -225
- package/.aios-core/scripts/context-detector.js +0 -226
- package/.aios-core/scripts/elicitation-engine.js +0 -385
- package/.aios-core/scripts/elicitation-session-manager.js +0 -300
- package/.claude/CLAUDE.md +0 -221
|
@@ -0,0 +1,309 @@
|
|
|
1
|
+
# Search MCP Catalog Task
|
|
2
|
+
|
|
3
|
+
> Search and discover available MCP servers in the Docker MCP Toolkit catalog.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Task Definition
|
|
8
|
+
|
|
9
|
+
```yaml
|
|
10
|
+
task: searchMcp()
|
|
11
|
+
responsavel: DevOps Agent
|
|
12
|
+
responsavel_type: Agente
|
|
13
|
+
atomic_layer: Infrastructure
|
|
14
|
+
elicit: true
|
|
15
|
+
|
|
16
|
+
**Entrada:**
|
|
17
|
+
- campo: search_query
|
|
18
|
+
tipo: string
|
|
19
|
+
origem: User Input
|
|
20
|
+
obrigatorio: true
|
|
21
|
+
validacao: Search query for MCP catalog (e.g., "notion", "database", "slack")
|
|
22
|
+
|
|
23
|
+
**Saida:**
|
|
24
|
+
- campo: mcp_results
|
|
25
|
+
tipo: array
|
|
26
|
+
destino: Console output
|
|
27
|
+
persistido: false
|
|
28
|
+
|
|
29
|
+
- campo: mcp_details
|
|
30
|
+
tipo: object
|
|
31
|
+
destino: Console output (if user selects an MCP)
|
|
32
|
+
persistido: false
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
---
|
|
36
|
+
|
|
37
|
+
## Pre-Conditions
|
|
38
|
+
|
|
39
|
+
```yaml
|
|
40
|
+
pre-conditions:
|
|
41
|
+
- [ ] Docker MCP Toolkit running
|
|
42
|
+
tipo: pre-condition
|
|
43
|
+
blocker: true
|
|
44
|
+
validacao: docker mcp --version succeeds
|
|
45
|
+
error_message: "Docker MCP Toolkit required. Enable in Docker Desktop settings."
|
|
46
|
+
|
|
47
|
+
- [ ] Docker daemon running
|
|
48
|
+
tipo: pre-condition
|
|
49
|
+
blocker: true
|
|
50
|
+
validacao: docker info succeeds
|
|
51
|
+
error_message: "Start Docker Desktop before running this task"
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
---
|
|
55
|
+
|
|
56
|
+
## Interactive Elicitation
|
|
57
|
+
|
|
58
|
+
### Step 1: Search Query
|
|
59
|
+
|
|
60
|
+
```
|
|
61
|
+
ELICIT: MCP Search Query
|
|
62
|
+
|
|
63
|
+
What type of MCP server are you looking for?
|
|
64
|
+
|
|
65
|
+
Examples:
|
|
66
|
+
• "notion" - Workspace and document management
|
|
67
|
+
• "database" - Database integrations (postgres, mysql, sqlite)
|
|
68
|
+
• "slack" - Team messaging
|
|
69
|
+
• "browser" - Browser automation (puppeteer, playwright)
|
|
70
|
+
• "storage" - Cloud storage (s3, gcs)
|
|
71
|
+
• "*" - List all available MCPs
|
|
72
|
+
|
|
73
|
+
→ Enter search query: _______________
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
### Step 2: Display Results
|
|
77
|
+
|
|
78
|
+
```
|
|
79
|
+
ELICIT: Search Results
|
|
80
|
+
|
|
81
|
+
Found {n} MCPs matching "{query}":
|
|
82
|
+
|
|
83
|
+
┌─────────────────────────────────────────────────────────────────┐
|
|
84
|
+
│ # │ MCP Name │ Description │
|
|
85
|
+
├─────────────────────────────────────────────────────────────────┤
|
|
86
|
+
│ 1 │ mcp/notion │ Notion workspace integration │
|
|
87
|
+
│ 2 │ mcp/postgres │ PostgreSQL database access │
|
|
88
|
+
│ 3 │ mcp/sqlite │ SQLite local database │
|
|
89
|
+
│ 4 │ mcp/mysql │ MySQL database access │
|
|
90
|
+
└─────────────────────────────────────────────────────────────────┘
|
|
91
|
+
|
|
92
|
+
Options:
|
|
93
|
+
• Enter a number to see details
|
|
94
|
+
• Type "add {number}" to add the MCP
|
|
95
|
+
• Type "search {query}" to search again
|
|
96
|
+
• Type "exit" to finish
|
|
97
|
+
|
|
98
|
+
→ Select option: ___
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
### Step 3: Show MCP Details (Optional)
|
|
102
|
+
|
|
103
|
+
```
|
|
104
|
+
ELICIT: MCP Details
|
|
105
|
+
|
|
106
|
+
📦 mcp/{name}
|
|
107
|
+
|
|
108
|
+
Description: {full_description}
|
|
109
|
+
|
|
110
|
+
🔧 Tools Provided:
|
|
111
|
+
• tool1 - Description of tool1
|
|
112
|
+
• tool2 - Description of tool2
|
|
113
|
+
• tool3 - Description of tool3
|
|
114
|
+
|
|
115
|
+
🔑 Required Credentials:
|
|
116
|
+
• {CREDENTIAL_NAME} - {description}
|
|
117
|
+
• (none) - if no credentials needed
|
|
118
|
+
|
|
119
|
+
📋 Example Usage:
|
|
120
|
+
docker mcp server add {name}
|
|
121
|
+
docker mcp tools call {name}.{tool} --param value
|
|
122
|
+
|
|
123
|
+
Options:
|
|
124
|
+
• Type "add" to add this MCP
|
|
125
|
+
• Type "back" to return to results
|
|
126
|
+
• Type "exit" to finish
|
|
127
|
+
|
|
128
|
+
→ Select option: ___
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
---
|
|
132
|
+
|
|
133
|
+
## Implementation Steps
|
|
134
|
+
|
|
135
|
+
### 1. Search the Catalog
|
|
136
|
+
|
|
137
|
+
```bash
|
|
138
|
+
# Basic search
|
|
139
|
+
docker mcp catalog search {query}
|
|
140
|
+
|
|
141
|
+
# Example: Search for "notion"
|
|
142
|
+
docker mcp catalog search notion
|
|
143
|
+
|
|
144
|
+
# List all MCPs
|
|
145
|
+
docker mcp catalog search "*"
|
|
146
|
+
|
|
147
|
+
# Example output:
|
|
148
|
+
# NAME DESCRIPTION
|
|
149
|
+
# mcp/notion Notion workspace integration
|
|
150
|
+
# mcp/postgres PostgreSQL database access
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
### 2. Get MCP Details
|
|
154
|
+
|
|
155
|
+
```bash
|
|
156
|
+
# Get detailed info about an MCP
|
|
157
|
+
docker mcp catalog info {mcp-name}
|
|
158
|
+
|
|
159
|
+
# Example: Get notion details
|
|
160
|
+
docker mcp catalog info notion
|
|
161
|
+
|
|
162
|
+
# Example output:
|
|
163
|
+
# Name: mcp/notion
|
|
164
|
+
# Description: Notion workspace integration
|
|
165
|
+
# Tools:
|
|
166
|
+
# - getPage: Retrieve a Notion page
|
|
167
|
+
# - createPage: Create a new page
|
|
168
|
+
# - search: Search Notion workspace
|
|
169
|
+
# Environment:
|
|
170
|
+
# - NOTION_API_KEY (required)
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
### 3. Filter by Category (if supported)
|
|
174
|
+
|
|
175
|
+
```bash
|
|
176
|
+
# Search by category
|
|
177
|
+
docker mcp catalog search --category database
|
|
178
|
+
docker mcp catalog search --category productivity
|
|
179
|
+
docker mcp catalog search --category automation
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
---
|
|
183
|
+
|
|
184
|
+
## Post-Conditions
|
|
185
|
+
|
|
186
|
+
```yaml
|
|
187
|
+
post-conditions:
|
|
188
|
+
- [ ] Search results displayed
|
|
189
|
+
tipo: post-condition
|
|
190
|
+
blocker: false
|
|
191
|
+
validacao: User can see matching MCPs or "no results" message
|
|
192
|
+
error_message: "Search failed - check Docker MCP connection"
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
---
|
|
196
|
+
|
|
197
|
+
## Error Handling
|
|
198
|
+
|
|
199
|
+
### Error: No Results Found
|
|
200
|
+
|
|
201
|
+
```
|
|
202
|
+
Resolution:
|
|
203
|
+
1. Try a broader search query
|
|
204
|
+
2. Use wildcards: docker mcp catalog search "*database*"
|
|
205
|
+
3. Check available categories: docker mcp catalog categories
|
|
206
|
+
4. Browse full catalog: docker mcp catalog search "*"
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
### Error: Docker MCP Not Available
|
|
210
|
+
|
|
211
|
+
```
|
|
212
|
+
Resolution:
|
|
213
|
+
1. Verify Docker Desktop 4.50+ is installed
|
|
214
|
+
2. Enable MCP Toolkit: Docker Desktop > Settings > Extensions > MCP Toolkit
|
|
215
|
+
3. Restart Docker Desktop
|
|
216
|
+
4. Verify: docker mcp --version
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
### Error: Catalog Timeout
|
|
220
|
+
|
|
221
|
+
```
|
|
222
|
+
Resolution:
|
|
223
|
+
1. Check internet connection
|
|
224
|
+
2. Docker MCP catalog requires network access
|
|
225
|
+
3. Retry: docker mcp catalog search {query}
|
|
226
|
+
4. Check Docker proxy settings if behind firewall
|
|
227
|
+
```
|
|
228
|
+
|
|
229
|
+
---
|
|
230
|
+
|
|
231
|
+
## Success Output
|
|
232
|
+
|
|
233
|
+
```
|
|
234
|
+
✅ MCP Catalog Search Complete
|
|
235
|
+
|
|
236
|
+
🔍 Query: "{query}"
|
|
237
|
+
📦 Results: {n} MCPs found
|
|
238
|
+
|
|
239
|
+
┌─────────────────────────────────────────────────────────────────┐
|
|
240
|
+
│ MCP Name │ Description │ Credentials │
|
|
241
|
+
├─────────────────────────────────────────────────────────────────┤
|
|
242
|
+
│ mcp/notion │ Notion workspace │ NOTION_API_KEY │
|
|
243
|
+
│ mcp/postgres │ PostgreSQL access │ DATABASE_URL │
|
|
244
|
+
│ mcp/sqlite │ SQLite local DB │ None │
|
|
245
|
+
└─────────────────────────────────────────────────────────────────┘
|
|
246
|
+
|
|
247
|
+
Next steps:
|
|
248
|
+
1. View details: *search-mcp → select number
|
|
249
|
+
2. Add an MCP: *add-mcp {name}
|
|
250
|
+
3. List enabled MCPs: *list-mcps
|
|
251
|
+
```
|
|
252
|
+
|
|
253
|
+
---
|
|
254
|
+
|
|
255
|
+
## Common Search Examples
|
|
256
|
+
|
|
257
|
+
| Search Query | Finds | Use Case |
|
|
258
|
+
|--------------|-------|----------|
|
|
259
|
+
| `notion` | Notion workspace MCP | Document management |
|
|
260
|
+
| `database` | postgres, mysql, sqlite, redis | Database access |
|
|
261
|
+
| `slack` | Slack messaging MCP | Team communication |
|
|
262
|
+
| `browser` | puppeteer, playwright | Browser automation |
|
|
263
|
+
| `storage` | s3, gcs, azure-blob | Cloud storage |
|
|
264
|
+
| `github` | GitHub API MCP | Repository management |
|
|
265
|
+
| `*` | All available MCPs | Browse full catalog |
|
|
266
|
+
|
|
267
|
+
---
|
|
268
|
+
|
|
269
|
+
## Related Commands
|
|
270
|
+
|
|
271
|
+
| Command | Description |
|
|
272
|
+
|---------|-------------|
|
|
273
|
+
| `*add-mcp` | Add an MCP server to Docker MCP Toolkit |
|
|
274
|
+
| `*list-mcps` | List currently enabled MCPs |
|
|
275
|
+
| `*remove-mcp` | Remove an MCP from Docker MCP Toolkit |
|
|
276
|
+
| `*setup-mcp-docker` | Initial Docker MCP Toolkit setup |
|
|
277
|
+
|
|
278
|
+
---
|
|
279
|
+
|
|
280
|
+
## Performance
|
|
281
|
+
|
|
282
|
+
```yaml
|
|
283
|
+
duration_expected: 1-2 minutes
|
|
284
|
+
cost_estimated: $0 (local Docker operation)
|
|
285
|
+
token_usage: ~200-500 tokens
|
|
286
|
+
```
|
|
287
|
+
|
|
288
|
+
---
|
|
289
|
+
|
|
290
|
+
## Metadata
|
|
291
|
+
|
|
292
|
+
```yaml
|
|
293
|
+
task: search-mcp
|
|
294
|
+
version: 1.0.0
|
|
295
|
+
story: Story 6.14 - MCP Governance Consolidation
|
|
296
|
+
dependencies:
|
|
297
|
+
- Docker MCP Toolkit
|
|
298
|
+
- Docker Desktop 4.50+
|
|
299
|
+
tags:
|
|
300
|
+
- infrastructure
|
|
301
|
+
- mcp
|
|
302
|
+
- docker
|
|
303
|
+
- discovery
|
|
304
|
+
- catalog
|
|
305
|
+
created_at: 2025-12-17
|
|
306
|
+
updated_at: 2025-12-17
|
|
307
|
+
agents:
|
|
308
|
+
- devops
|
|
309
|
+
```
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
# Setup Docker MCP Toolkit
|
|
2
2
|
|
|
3
3
|
**Task ID:** setup-mcp-docker
|
|
4
|
-
**Version:** 2.
|
|
4
|
+
**Version:** 2.1.0
|
|
5
5
|
**Created:** 2025-12-08
|
|
6
|
-
**Updated:** 2025-12-
|
|
7
|
-
**Agent:** @devops (Gage)
|
|
6
|
+
**Updated:** 2025-12-17
|
|
7
|
+
**Agent:** @devops (Gage)
|
|
8
8
|
|
|
9
9
|
---
|
|
10
10
|
|
|
@@ -63,7 +63,7 @@ Configure Docker MCP Toolkit as the primary MCP infrastructure for AIOS, using *
|
|
|
63
63
|
|
|
64
64
|
```yaml
|
|
65
65
|
task: setupMcpDocker()
|
|
66
|
-
responsável: DevOps Agent
|
|
66
|
+
responsável: DevOps Agent
|
|
67
67
|
responsavel_type: Agente
|
|
68
68
|
atomic_layer: Infrastructure
|
|
69
69
|
|
|
@@ -556,8 +556,8 @@ token_usage: ~500-1,000 tokens (this task only)
|
|
|
556
556
|
## Metadata
|
|
557
557
|
|
|
558
558
|
```yaml
|
|
559
|
-
story:
|
|
560
|
-
version: 2.
|
|
559
|
+
story: Story 6.14 - MCP Governance Consolidation
|
|
560
|
+
version: 2.1.0
|
|
561
561
|
dependencies:
|
|
562
562
|
- Docker Desktop 4.50+
|
|
563
563
|
- Docker MCP Toolkit
|
|
@@ -568,11 +568,14 @@ tags:
|
|
|
568
568
|
- docker
|
|
569
569
|
- setup
|
|
570
570
|
- http-transport
|
|
571
|
-
|
|
571
|
+
created_at: 2025-12-08
|
|
572
|
+
updated_at: 2025-12-17
|
|
572
573
|
agents:
|
|
573
574
|
- devops
|
|
574
|
-
- dev
|
|
575
575
|
changelog:
|
|
576
|
+
2.1.0:
|
|
577
|
+
- Changed: DevOps Agent now exclusive responsible (Story 6.14)
|
|
578
|
+
- Removed: Dev Agent from agents list
|
|
576
579
|
2.0.0:
|
|
577
580
|
- BREAKING: Changed from stdio to HTTP transport
|
|
578
581
|
- Added: gateway-service.yml for persistent gateway
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
---
|
|
2
|
+
task: Validate Squad
|
|
3
|
+
responsável: @squad-creator
|
|
4
|
+
responsável_type: agent
|
|
5
|
+
atomic_layer: task
|
|
6
|
+
Entrada: |
|
|
7
|
+
- squad_path: Path to the squad directory (default: ./squads/{name})
|
|
8
|
+
- name: Squad name (alternative to full path)
|
|
9
|
+
- strict: If true, warnings become errors (default: false)
|
|
10
|
+
- verbose: If true, show detailed output (default: false)
|
|
11
|
+
Saída: |
|
|
12
|
+
- validation_result: Object with { valid, errors, warnings, suggestions }
|
|
13
|
+
- report: Formatted report for display
|
|
14
|
+
- exit_code: 0 if valid, 1 if invalid
|
|
15
|
+
Checklist:
|
|
16
|
+
- [ ] Resolve squad path via squad-loader
|
|
17
|
+
- [ ] Execute squad-validator.validate()
|
|
18
|
+
- [ ] Format result for output
|
|
19
|
+
- [ ] Return appropriate exit code
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
# *validate-squad
|
|
23
|
+
|
|
24
|
+
Validates a squad against the JSON Schema and TASK-FORMAT-SPECIFICATION-V1.
|
|
25
|
+
|
|
26
|
+
## Usage
|
|
27
|
+
|
|
28
|
+
```
|
|
29
|
+
@squad-creator
|
|
30
|
+
*validate-squad ./squads/my-squad
|
|
31
|
+
*validate-squad my-squad
|
|
32
|
+
*validate-squad my-squad --strict
|
|
33
|
+
*validate-squad my-squad --verbose
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
## Parameters
|
|
37
|
+
|
|
38
|
+
| Parameter | Type | Default | Description |
|
|
39
|
+
|-----------|------|---------|-------------|
|
|
40
|
+
| `squad_path` | string | - | Full path to squad directory |
|
|
41
|
+
| `name` | string | - | Squad name (resolves to ./squads/{name}) |
|
|
42
|
+
| `--strict` | flag | false | Treat warnings as errors |
|
|
43
|
+
| `--verbose` | flag | false | Show detailed validation output |
|
|
44
|
+
|
|
45
|
+
## Validation Checks
|
|
46
|
+
|
|
47
|
+
### 1. Manifest Validation
|
|
48
|
+
- Checks for `squad.yaml` or `config.yaml` (deprecated)
|
|
49
|
+
- Validates against JSON Schema
|
|
50
|
+
- Required fields: `name`, `version`
|
|
51
|
+
|
|
52
|
+
### 2. Structure Validation
|
|
53
|
+
- Checks for expected directories: `tasks/`, `agents/`
|
|
54
|
+
- Verifies referenced files exist
|
|
55
|
+
|
|
56
|
+
### 3. Task Validation (TASK-FORMAT-SPECIFICATION-V1)
|
|
57
|
+
- Checks for required fields in task files
|
|
58
|
+
- Validates naming conventions (kebab-case)
|
|
59
|
+
|
|
60
|
+
### 4. Agent Validation
|
|
61
|
+
- Checks for valid agent definition format
|
|
62
|
+
- Validates naming conventions
|
|
63
|
+
|
|
64
|
+
## Flow
|
|
65
|
+
|
|
66
|
+
```
|
|
67
|
+
1. Resolve squad path
|
|
68
|
+
├── If full path provided → use directly
|
|
69
|
+
└── If name provided → resolve via ./squads/{name}/
|
|
70
|
+
|
|
71
|
+
2. Execute validations
|
|
72
|
+
├── validateManifest() → Schema check
|
|
73
|
+
├── validateStructure() → Directory check
|
|
74
|
+
├── validateTasks() → Task format check
|
|
75
|
+
└── validateAgents() → Agent format check
|
|
76
|
+
|
|
77
|
+
3. Format and display result
|
|
78
|
+
├── Show errors (if any)
|
|
79
|
+
├── Show warnings (if any)
|
|
80
|
+
└── Show final result (VALID/INVALID)
|
|
81
|
+
|
|
82
|
+
4. Return exit code
|
|
83
|
+
├── 0 → Valid (or valid with warnings)
|
|
84
|
+
└── 1 → Invalid (errors found)
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
## Output Example
|
|
88
|
+
|
|
89
|
+
```
|
|
90
|
+
Validating squad: ./squads/my-squad/
|
|
91
|
+
|
|
92
|
+
Errors: 0
|
|
93
|
+
Warnings: 2
|
|
94
|
+
- [MISSING_DIRECTORY]: Expected directory not found: workflows/
|
|
95
|
+
Suggestion: mkdir workflows (task-first architecture recommends tasks/ and agents/)
|
|
96
|
+
- [TASK_MISSING_FIELD] (my-task.md): Task missing recommended field: Checklist
|
|
97
|
+
Suggestion: Add "Checklist:" to my-task.md (TASK-FORMAT-SPECIFICATION-V1)
|
|
98
|
+
|
|
99
|
+
Result: VALID (with warnings)
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
## Error Codes
|
|
103
|
+
|
|
104
|
+
| Code | Severity | Description |
|
|
105
|
+
|------|----------|-------------|
|
|
106
|
+
| `MANIFEST_NOT_FOUND` | Error | No squad.yaml or config.yaml found |
|
|
107
|
+
| `YAML_PARSE_ERROR` | Error | Invalid YAML syntax |
|
|
108
|
+
| `SCHEMA_ERROR` | Error | Manifest doesn't match JSON Schema |
|
|
109
|
+
| `FILE_NOT_FOUND` | Error | Referenced file doesn't exist |
|
|
110
|
+
| `DEPRECATED_MANIFEST` | Warning | Using config.yaml instead of squad.yaml |
|
|
111
|
+
| `MISSING_DIRECTORY` | Warning | Expected directory not found |
|
|
112
|
+
| `NO_TASKS` | Warning | No task files in tasks/ |
|
|
113
|
+
| `TASK_MISSING_FIELD` | Warning | Task missing recommended field |
|
|
114
|
+
| `AGENT_INVALID_FORMAT` | Warning | Agent file may not follow format |
|
|
115
|
+
| `INVALID_NAMING` | Warning | Filename not in kebab-case |
|
|
116
|
+
|
|
117
|
+
## Implementation
|
|
118
|
+
|
|
119
|
+
```javascript
|
|
120
|
+
const { SquadLoader } = require('./.aios-core/development/scripts/squad');
|
|
121
|
+
const { SquadValidator } = require('./.aios-core/development/scripts/squad');
|
|
122
|
+
|
|
123
|
+
async function validateSquad(options) {
|
|
124
|
+
const { squadPath, name, strict, verbose } = options;
|
|
125
|
+
|
|
126
|
+
// Resolve path
|
|
127
|
+
const loader = new SquadLoader();
|
|
128
|
+
let resolvedPath = squadPath;
|
|
129
|
+
if (!squadPath && name) {
|
|
130
|
+
const resolved = await loader.resolve(name);
|
|
131
|
+
resolvedPath = resolved.path;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
// Validate
|
|
135
|
+
const validator = new SquadValidator({ strict, verbose });
|
|
136
|
+
const result = await validator.validate(resolvedPath);
|
|
137
|
+
|
|
138
|
+
// Format output
|
|
139
|
+
console.log(validator.formatResult(result, resolvedPath));
|
|
140
|
+
|
|
141
|
+
// Return exit code
|
|
142
|
+
return result.valid ? 0 : 1;
|
|
143
|
+
}
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
## Related
|
|
147
|
+
|
|
148
|
+
- **Story:** SQS-3 (Squad Validator + JSON Schema)
|
|
149
|
+
- **Dependencies:** squad-loader.js, squad-validator.js
|
|
150
|
+
- **Schema:** .aios-core/schemas/squad-schema.json
|
|
151
|
+
- **Agent:** @squad-creator (Craft)
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
↓
|
|
31
31
|
┌─────────────────────────────────────┐
|
|
32
32
|
│ LAYER 2: Output Formatter │ ← Template engine (JS)
|
|
33
|
-
│ (.aios-core/scripts/)
|
|
33
|
+
│ (.aios-core/infrastructure/scripts/)│
|
|
34
34
|
└─────────────────────────────────────┘
|
|
35
35
|
↓
|
|
36
36
|
┌─────────────────────────────────────┐
|
|
@@ -156,7 +156,7 @@ archetypes:
|
|
|
156
156
|
### Template Engine Architecture
|
|
157
157
|
|
|
158
158
|
```javascript
|
|
159
|
-
// .aios-core/scripts/output-formatter.js
|
|
159
|
+
// .aios-core/infrastructure/scripts/output-formatter.js
|
|
160
160
|
|
|
161
161
|
class PersonalizedOutputFormatter {
|
|
162
162
|
constructor(agent, task, results) {
|
|
@@ -238,7 +238,7 @@ class PersonalizedOutputFormatter {
|
|
|
238
238
|
### Pattern Validation
|
|
239
239
|
|
|
240
240
|
```javascript
|
|
241
|
-
// .aios-core/scripts/validate-output-pattern.js
|
|
241
|
+
// .aios-core/infrastructure/scripts/validate-output-pattern.js
|
|
242
242
|
|
|
243
243
|
/**
|
|
244
244
|
* Ensures all task outputs follow standard structure
|
package/.aios-core/index.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
// @aios-fullstack/core - TypeScript Definitions
|
|
2
|
-
export declare const MetaAgent: any;
|
|
3
|
-
export declare const TaskManager: any;
|
|
4
|
-
export declare const ElicitationEngine: any;
|
|
5
|
-
export declare const TemplateEngine: any;
|
|
6
|
-
export declare const ComponentSearch: any;
|
|
7
|
-
export declare const DependencyAnalyzer: any;
|
|
1
|
+
// @aios-fullstack/core - TypeScript Definitions
|
|
2
|
+
export declare const MetaAgent: any;
|
|
3
|
+
export declare const TaskManager: any;
|
|
4
|
+
export declare const ElicitationEngine: any;
|
|
5
|
+
export declare const TemplateEngine: any;
|
|
6
|
+
export declare const ComponentSearch: any;
|
|
7
|
+
export declare const DependencyAnalyzer: any;
|
|
8
8
|
export {};
|
package/.aios-core/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// @synkra/aios-core/core - CommonJS Entry Point
|
|
2
2
|
const MetaAgent = require('./infrastructure/scripts/component-generator.js');
|
|
3
3
|
const TaskManager = require('./infrastructure/scripts/batch-creator.js');
|
|
4
|
-
const ElicitationEngine = require('./
|
|
4
|
+
const ElicitationEngine = require('./core/elicitation/elicitation-engine.js');
|
|
5
5
|
const TemplateEngine = require('./infrastructure/scripts/template-engine.js');
|
|
6
6
|
const ComponentSearch = require('./infrastructure/scripts/component-search.js');
|
|
7
7
|
const DependencyAnalyzer = require('./infrastructure/scripts/dependency-analyzer.js');
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
const fs = require('fs-extra');
|
|
8
8
|
const path = require('path');
|
|
9
9
|
const ComponentGenerator = require('./component-generator');
|
|
10
|
-
const ElicitationEngine = require('../../
|
|
10
|
+
const ElicitationEngine = require('../../core/elicitation/elicitation-engine');
|
|
11
11
|
const DependencyAnalyzer = require('./dependency-analyzer');
|
|
12
12
|
const TransactionManager = require('./transaction-manager');
|
|
13
13
|
const chalk = require('chalk');
|
|
@@ -10,7 +10,7 @@ const TemplateEngine = require('./template-engine');
|
|
|
10
10
|
const TemplateValidator = require('./template-validator');
|
|
11
11
|
const SecurityChecker = require('./security-checker');
|
|
12
12
|
const YAMLValidator = require('./yaml-validator');
|
|
13
|
-
const ElicitationEngine = require('../../
|
|
13
|
+
const ElicitationEngine = require('../../core/elicitation/elicitation-engine');
|
|
14
14
|
// const ComponentPreview = require('./component-preview'); // Archived in archived-utilities/ (Story 3.1.2)
|
|
15
15
|
// const ManifestPreview = require('./manifest-preview'); // Archived in archived-utilities/ (Story 3.1.3)
|
|
16
16
|
const ComponentMetadata = require('./component-metadata');
|