@jaimevalasek/aioson 1.4.0 → 1.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/CHANGELOG.md +31 -1
- package/LICENSE +661 -21
- package/README.md +9 -1
- package/docs/design-previews/aurora-command-ui-website.html +884 -0
- package/docs/design-previews/aurora-command-ui.html +682 -0
- package/docs/design-previews/bold-editorial-ui-website.html +658 -0
- package/docs/design-previews/bold-editorial-ui.html +717 -0
- package/docs/design-previews/clean-saas-ui-website.html +1202 -0
- package/docs/design-previews/clean-saas-ui.html +549 -0
- package/docs/design-previews/cognitive-core-ui-website.html +1009 -0
- package/docs/design-previews/cognitive-core-ui.html +463 -0
- package/docs/design-previews/glassmorphism-ui-website.html +572 -0
- package/docs/design-previews/glassmorphism-ui.html +886 -0
- package/docs/design-previews/index.html +699 -0
- package/docs/design-previews/interface-design-website.html +1187 -0
- package/docs/design-previews/interface-design.html +513 -0
- package/docs/design-previews/neo-brutalist-ui-website.html +621 -0
- package/docs/design-previews/neo-brutalist-ui.html +797 -0
- package/docs/design-previews/premium-command-center-ui-website.html +1217 -0
- package/docs/design-previews/premium-command-center-ui.html +552 -0
- package/docs/design-previews/warm-craft-ui-website.html +684 -0
- package/docs/design-previews/warm-craft-ui.html +739 -0
- package/docs/en/cli-reference.md +20 -9
- package/docs/en/squad-dashboard.md +372 -0
- package/docs/openclaw-bridge.md +308 -0
- package/docs/pt/README.md +7 -0
- package/docs/pt/agent-sharding.md +132 -0
- package/docs/pt/agentes.md +131 -11
- package/docs/pt/busca-de-contexto.md +129 -0
- package/docs/pt/cache-de-contexto.md +156 -0
- package/docs/pt/cenarios.md +46 -2
- package/docs/pt/comandos-cli.md +88 -1
- package/docs/pt/design-hybrid-forge.md +107 -0
- package/docs/pt/inicio-rapido.md +72 -5
- package/docs/pt/inteligencia-adaptativa.md +324 -0
- package/docs/pt/monitor-de-contexto.md +104 -0
- package/docs/pt/recuperacao-de-sessao.md +125 -0
- package/docs/pt/sandbox.md +125 -0
- package/docs/pt/skills.md +98 -6
- package/docs/pt/squad-dashboard.md +373 -0
- package/docs/testing/genome-2.0-matrix.md +5 -5
- package/docs/testing/genome-2.0-rollout.md +9 -9
- package/package.json +2 -2
- package/src/agent-loader.js +280 -0
- package/src/backup-local.js +74 -0
- package/src/cli.js +192 -0
- package/src/commands/agent-loader.js +85 -0
- package/src/commands/backup-local-cmd.js +25 -0
- package/src/commands/context-cache.js +90 -0
- package/src/commands/context-monitor.js +92 -0
- package/src/commands/context-search.js +66 -0
- package/src/commands/design-hybrid-options.js +385 -0
- package/src/commands/health.js +214 -0
- package/src/commands/init.js +54 -13
- package/src/commands/install.js +52 -13
- package/src/commands/learning-evolve.js +355 -0
- package/src/commands/live.js +34 -0
- package/src/commands/recovery.js +43 -0
- package/src/commands/runtime.js +242 -0
- package/src/commands/sandbox.js +37 -0
- package/src/commands/setup-context.js +29 -4
- package/src/commands/setup.js +178 -0
- package/src/commands/skill.js +79 -32
- package/src/commands/squad-daemon.js +209 -0
- package/src/commands/squad-dashboard.js +39 -0
- package/src/commands/squad-deploy.js +64 -0
- package/src/commands/squad-doctor.js +52 -0
- package/src/commands/squad-mcp.js +270 -0
- package/src/commands/squad-processes.js +56 -0
- package/src/commands/squad-recovery.js +42 -0
- package/src/commands/squad-roi.js +291 -0
- package/src/commands/squad-score.js +250 -0
- package/src/commands/squad-status.js +37 -1
- package/src/commands/squad-validate.js +62 -1
- package/src/commands/squad-webhook.js +160 -0
- package/src/commands/squad-worker.js +191 -0
- package/src/commands/squad-worktrees.js +75 -0
- package/src/commands/tool-registry-cmd.js +232 -0
- package/src/commands/update.js +7 -0
- package/src/commands/web-map.js +70 -0
- package/src/commands/web-scrape.js +71 -0
- package/src/constants.js +17 -0
- package/src/context-cache.js +159 -0
- package/src/context-search.js +326 -0
- package/src/context-writer.js +45 -1
- package/src/design-variation-catalog.js +503 -0
- package/src/i18n/messages/en.js +159 -3
- package/src/i18n/messages/es.js +147 -2
- package/src/i18n/messages/fr.js +147 -2
- package/src/i18n/messages/pt-BR.js +158 -3
- package/src/install-animation.js +260 -0
- package/src/install-profile.js +143 -0
- package/src/install-wizard.js +474 -0
- package/src/installer.js +38 -10
- package/src/lib/webhook-server.js +328 -0
- package/src/mcp-connectors/registry.js +602 -0
- package/src/parser.js +7 -1
- package/src/recovery-context-session.js +154 -0
- package/src/runtime-store.js +355 -2
- package/src/sandbox.js +177 -0
- package/src/squad/external-session.js +180 -0
- package/src/squad/inter-squad.js +74 -0
- package/src/squad/recovery-context.js +201 -0
- package/src/squad/worktree-manager.js +114 -0
- package/src/squad-daemon.js +490 -0
- package/src/squad-dashboard/api.js +223 -0
- package/src/squad-dashboard/attachment-handler.js +93 -0
- package/src/squad-dashboard/context-monitor.js +157 -0
- package/src/squad-dashboard/execution-logs.js +115 -0
- package/src/squad-dashboard/hunk-review.js +209 -0
- package/src/squad-dashboard/metrics.js +133 -0
- package/src/squad-dashboard/process-monitor.js +125 -0
- package/src/squad-dashboard/renderer.js +858 -0
- package/src/squad-dashboard/server.js +232 -0
- package/src/squad-dashboard/styles.js +525 -0
- package/src/squad-dashboard/token-tracker.js +99 -0
- package/src/tool-executor.js +94 -0
- package/src/updater.js +11 -3
- package/src/web.js +284 -0
- package/src/worker-runner.js +339 -0
- package/template/.aioson/agents/analyst.md +62 -3
- package/template/.aioson/agents/architect.md +42 -0
- package/template/.aioson/agents/design-hybrid-forge.md +127 -0
- package/template/.aioson/agents/dev.md +223 -11
- package/template/.aioson/agents/deyvin.md +65 -0
- package/template/.aioson/agents/neo.md +152 -0
- package/template/.aioson/agents/orache.md +17 -0
- package/template/.aioson/agents/orchestrator.md +26 -0
- package/template/.aioson/agents/pm.md +58 -0
- package/template/.aioson/agents/product.md +88 -12
- package/template/.aioson/agents/qa.md +80 -0
- package/template/.aioson/agents/setup.md +128 -22
- package/template/.aioson/agents/sheldon.md +704 -0
- package/template/.aioson/agents/squad.md +191 -0
- package/template/.aioson/agents/tester.md +410 -0
- package/template/.aioson/agents/ux-ui.md +12 -0
- package/template/.aioson/config.md +21 -0
- package/template/.aioson/context/forensics/.gitkeep +0 -0
- package/template/.aioson/context/seeds/seed-example.md +27 -0
- package/template/.aioson/context/user-profile.md +42 -0
- package/template/.aioson/locales/en/agents/analyst.md +8 -0
- package/template/.aioson/locales/en/agents/architect.md +8 -0
- package/template/.aioson/locales/en/agents/dev.md +66 -7
- package/template/.aioson/locales/en/agents/deyvin.md +8 -0
- package/template/.aioson/locales/en/agents/neo.md +8 -0
- package/template/.aioson/locales/en/agents/orchestrator.md +26 -0
- package/template/.aioson/locales/en/agents/qa.md +49 -0
- package/template/.aioson/locales/en/agents/setup.md +35 -2
- package/template/.aioson/locales/en/agents/sheldon.md +340 -0
- package/template/.aioson/locales/en/agents/ux-ui.md +8 -0
- package/template/.aioson/locales/es/agents/analyst.md +8 -0
- package/template/.aioson/locales/es/agents/architect.md +8 -0
- package/template/.aioson/locales/es/agents/dev.md +66 -7
- package/template/.aioson/locales/es/agents/deyvin.md +8 -0
- package/template/.aioson/locales/es/agents/neo.md +48 -0
- package/template/.aioson/locales/es/agents/orchestrator.md +26 -0
- package/template/.aioson/locales/es/agents/qa.md +26 -0
- package/template/.aioson/locales/es/agents/setup.md +35 -2
- package/template/.aioson/locales/es/agents/sheldon.md +192 -0
- package/template/.aioson/locales/es/agents/squad.md +63 -0
- package/template/.aioson/locales/es/agents/ux-ui.md +8 -0
- package/template/.aioson/locales/fr/agents/analyst.md +8 -0
- package/template/.aioson/locales/fr/agents/architect.md +8 -0
- package/template/.aioson/locales/fr/agents/dev.md +66 -7
- package/template/.aioson/locales/fr/agents/deyvin.md +8 -0
- package/template/.aioson/locales/fr/agents/neo.md +48 -0
- package/template/.aioson/locales/fr/agents/orchestrator.md +26 -0
- package/template/.aioson/locales/fr/agents/qa.md +26 -0
- package/template/.aioson/locales/fr/agents/setup.md +35 -2
- package/template/.aioson/locales/fr/agents/sheldon.md +192 -0
- package/template/.aioson/locales/fr/agents/squad.md +63 -0
- package/template/.aioson/locales/fr/agents/ux-ui.md +8 -0
- package/template/.aioson/locales/pt-BR/agents/analyst.md +19 -0
- package/template/.aioson/locales/pt-BR/agents/architect.md +19 -0
- package/template/.aioson/locales/pt-BR/agents/dev.md +75 -12
- package/template/.aioson/locales/pt-BR/agents/deyvin.md +8 -0
- package/template/.aioson/locales/pt-BR/agents/neo.md +147 -0
- package/template/.aioson/locales/pt-BR/agents/orchestrator.md +26 -0
- package/template/.aioson/locales/pt-BR/agents/product.md +8 -3
- package/template/.aioson/locales/pt-BR/agents/qa.md +60 -0
- package/template/.aioson/locales/pt-BR/agents/setup.md +35 -2
- package/template/.aioson/locales/pt-BR/agents/sheldon.md +192 -0
- package/template/.aioson/locales/pt-BR/agents/squad.md +105 -0
- package/template/.aioson/locales/pt-BR/agents/ux-ui.md +8 -0
- package/template/.aioson/schemas/squad-blueprint.schema.json +21 -0
- package/template/.aioson/schemas/squad-manifest.schema.json +178 -1
- package/template/.aioson/skills/design/aurora-command-ui/SKILL.md +243 -0
- package/template/.aioson/skills/design/aurora-command-ui/references/art-direction.md +293 -0
- package/template/.aioson/skills/design/aurora-command-ui/references/components.md +827 -0
- package/template/.aioson/skills/design/aurora-command-ui/references/dashboards.md +250 -0
- package/template/.aioson/skills/design/aurora-command-ui/references/design-tokens.md +585 -0
- package/template/.aioson/skills/design/aurora-command-ui/references/motion.md +365 -0
- package/template/.aioson/skills/design/aurora-command-ui/references/patterns.md +482 -0
- package/template/.aioson/skills/design/aurora-command-ui/references/websites.md +387 -0
- package/template/.aioson/skills/design/bold-editorial-ui/SKILL.md +205 -0
- package/template/.aioson/skills/design/bold-editorial-ui/references/art-direction.md +338 -0
- package/template/.aioson/skills/design/bold-editorial-ui/references/components.md +977 -0
- package/template/.aioson/skills/design/bold-editorial-ui/references/dashboards.md +218 -0
- package/template/.aioson/skills/design/bold-editorial-ui/references/design-tokens.md +326 -0
- package/template/.aioson/skills/design/bold-editorial-ui/references/motion.md +461 -0
- package/template/.aioson/skills/design/bold-editorial-ui/references/patterns.md +293 -0
- package/template/.aioson/skills/design/bold-editorial-ui/references/websites.md +352 -0
- package/template/.aioson/skills/design/clean-saas-ui/SKILL.md +210 -0
- package/template/.aioson/skills/design/clean-saas-ui/references/art-direction.md +319 -0
- package/template/.aioson/skills/design/clean-saas-ui/references/components.md +365 -0
- package/template/.aioson/skills/design/clean-saas-ui/references/dashboards.md +196 -0
- package/template/.aioson/skills/design/clean-saas-ui/references/design-tokens.md +244 -0
- package/template/.aioson/skills/design/clean-saas-ui/references/motion.md +235 -0
- package/template/.aioson/skills/design/clean-saas-ui/references/patterns.md +215 -0
- package/template/.aioson/skills/design/clean-saas-ui/references/websites.md +295 -0
- package/template/.aioson/skills/design/cognitive-core-ui/SKILL.md +55 -9
- package/template/.aioson/skills/design/cognitive-core-ui/references/art-direction.md +339 -0
- package/template/.aioson/skills/design/cognitive-core-ui/references/components.md +1 -1
- package/template/.aioson/skills/design/cognitive-core-ui/references/dashboards.md +100 -0
- package/template/.aioson/skills/design/cognitive-core-ui/references/design-tokens.md +43 -9
- package/template/.aioson/skills/design/cognitive-core-ui/references/motion.md +40 -0
- package/template/.aioson/skills/design/cognitive-core-ui/references/patterns.md +1 -1
- package/template/.aioson/skills/design/cognitive-core-ui/references/websites.md +99 -12
- package/template/.aioson/skills/design/glassmorphism-ui/SKILL.md +222 -0
- package/template/.aioson/skills/design/glassmorphism-ui/references/art-direction.md +159 -0
- package/template/.aioson/skills/design/glassmorphism-ui/references/components.md +498 -0
- package/template/.aioson/skills/design/glassmorphism-ui/references/dashboards.md +236 -0
- package/template/.aioson/skills/design/glassmorphism-ui/references/design-tokens.md +274 -0
- package/template/.aioson/skills/design/glassmorphism-ui/references/motion.md +355 -0
- package/template/.aioson/skills/design/glassmorphism-ui/references/patterns.md +198 -0
- package/template/.aioson/skills/design/glassmorphism-ui/references/websites.md +307 -0
- package/template/.aioson/skills/design/neo-brutalist-ui/SKILL.md +213 -0
- package/template/.aioson/skills/design/neo-brutalist-ui/references/art-direction.md +228 -0
- package/template/.aioson/skills/design/neo-brutalist-ui/references/components.md +855 -0
- package/template/.aioson/skills/design/neo-brutalist-ui/references/dashboards.md +334 -0
- package/template/.aioson/skills/design/neo-brutalist-ui/references/design-tokens.md +342 -0
- package/template/.aioson/skills/design/neo-brutalist-ui/references/motion.md +286 -0
- package/template/.aioson/skills/design/neo-brutalist-ui/references/patterns.md +458 -0
- package/template/.aioson/skills/design/neo-brutalist-ui/references/websites.md +723 -0
- package/template/.aioson/skills/design/warm-craft-ui/SKILL.md +209 -0
- package/template/.aioson/skills/design/warm-craft-ui/references/art-direction.md +324 -0
- package/template/.aioson/skills/design/warm-craft-ui/references/components.md +508 -0
- package/template/.aioson/skills/design/warm-craft-ui/references/dashboards.md +223 -0
- package/template/.aioson/skills/design/warm-craft-ui/references/design-tokens.md +374 -0
- package/template/.aioson/skills/design/warm-craft-ui/references/motion.md +356 -0
- package/template/.aioson/skills/design/warm-craft-ui/references/patterns.md +288 -0
- package/template/.aioson/skills/design/warm-craft-ui/references/websites.md +289 -0
- package/template/.aioson/skills/premium-visual-design/SKILL.md +83 -0
- package/template/.aioson/skills/premium-visual-design/components/agent-badge.md +92 -0
- package/template/.aioson/skills/premium-visual-design/components/dependency-node.md +102 -0
- package/template/.aioson/skills/premium-visual-design/components/mention-autocomplete.md +136 -0
- package/template/.aioson/skills/premium-visual-design/components/notification-center.md +136 -0
- package/template/.aioson/skills/premium-visual-design/components/review-action-bar.md +188 -0
- package/template/.aioson/skills/premium-visual-design/components/team-switcher.md +131 -0
- package/template/.aioson/skills/premium-visual-design/patterns/agent-message-thread.md +198 -0
- package/template/.aioson/skills/premium-visual-design/patterns/notification-panel.md +275 -0
- package/template/.aioson/skills/premium-visual-design/patterns/review-workflow-ui.md +234 -0
- package/template/.aioson/skills/premium-visual-design/patterns/task-dependency-graph.md +147 -0
- package/template/.aioson/skills/premium-visual-design/tokens/status-extended.md +142 -0
- package/template/.aioson/skills/process/aioson-spec-driven/SKILL.md +45 -0
- package/template/.aioson/skills/process/aioson-spec-driven/references/approval-gates.md +109 -0
- package/template/.aioson/skills/process/aioson-spec-driven/references/artifact-map.md +44 -0
- package/template/.aioson/skills/process/aioson-spec-driven/references/classification-map.md +37 -0
- package/template/.aioson/skills/process/aioson-spec-driven/references/hardening-lane.md +49 -0
- package/template/.aioson/skills/process/aioson-spec-driven/references/maintenance-and-state.md +66 -0
- package/template/.aioson/skills/process/aioson-spec-driven/references/ui-language.md +75 -0
- package/template/.aioson/skills/process/design-hybrid-forge/SKILL.md +144 -0
- package/template/.aioson/skills/process/design-hybrid-forge/references/crossover-protocol.md +221 -0
- package/template/.aioson/skills/process/design-hybrid-forge/references/naming-registry.md +88 -0
- package/template/.aioson/skills/process/design-hybrid-forge/references/output-contract.md +291 -0
- package/template/.aioson/skills/process/design-hybrid-forge/references/pair-compatibility.md +117 -0
- package/template/.aioson/skills/process/design-hybrid-forge/references/quality-gates.md +188 -0
- package/template/.aioson/skills/process/design-hybrid-forge/references/variation-library.md +125 -0
- package/template/.aioson/skills/squad/formats/catalog.json +15 -0
- package/template/.aioson/skills/squad/formats/content/blog-post.md +47 -0
- package/template/.aioson/skills/squad/formats/content/newsletter.md +47 -0
- package/template/.aioson/skills/squad/formats/creative/podcast-script.md +43 -0
- package/template/.aioson/skills/squad/formats/creative/video-script.md +41 -0
- package/template/.aioson/skills/squad/formats/social/instagram-feed.md +42 -0
- package/template/.aioson/skills/squad/formats/social/linkedin-post.md +42 -0
- package/template/.aioson/skills/squad/formats/social/tiktok.md +39 -0
- package/template/.aioson/skills/squad/formats/social/twitter-thread.md +39 -0
- package/template/.aioson/skills/squad/formats/social/youtube-long.md +47 -0
- package/template/.aioson/skills/squad/formats/social/youtube-shorts.md +39 -0
- package/template/.aioson/skills/squad/patterns/multi-platform-pattern.md +108 -0
- package/template/.aioson/skills/squad/patterns/persona-based-pattern.md +98 -0
- package/template/.aioson/skills/squad/patterns/pipeline-pattern.md +106 -0
- package/template/.aioson/skills/squad/patterns/review-loop-pattern.md +81 -0
- package/template/.aioson/skills/squad/references/checklist-templates.md +122 -0
- package/template/.aioson/skills/squad/references/executor-archetypes.md +123 -0
- package/template/.aioson/skills/squad/references/workflow-templates.md +169 -0
- package/template/.aioson/skills/static/debugging-protocol.md +42 -0
- package/template/.aioson/skills/static/git-worktrees.md +36 -0
- package/template/.aioson/tasks/implementation-plan.md +19 -0
- package/template/.aioson/tasks/squad-design.md +28 -0
- package/template/.aioson/tasks/squad-profile.md +48 -0
- package/template/.aioson/tasks/squad-review.md +61 -0
- package/template/.aioson/tasks/squad-task-decompose.md +66 -0
- package/template/.claude/commands/aioson/agent/neo.md +5 -0
- package/template/.claude/commands/aioson/agent/tester.md +5 -0
- package/template/.gemini/GEMINI.md +1 -0
- package/template/.gemini/commands/aios-neo.toml +4 -0
- package/template/.gemini/commands/aios-tester.toml +6 -0
- package/template/AGENTS.md +26 -1
- package/template/CLAUDE.md +6 -2
- package/template/OPENCODE.md +2 -0
|
@@ -0,0 +1,308 @@
|
|
|
1
|
+
# OpenClaw + AIOSON Bridge
|
|
2
|
+
|
|
3
|
+
> AIOSON receives external triggers. OpenClaw delivers them. Neither system changes — the bridge is pure configuration.
|
|
4
|
+
|
|
5
|
+
## Overview
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
[External channel] [OpenClaw] [AIOSON squad-webhook]
|
|
9
|
+
WhatsApp, Telegram, → gateway de canal → POST /trigger
|
|
10
|
+
Slack, webhook ERP identifica sessão executa squad
|
|
11
|
+
↓
|
|
12
|
+
← callback HTTP ← POST callback_url
|
|
13
|
+
envia resposta
|
|
14
|
+
ao canal
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
## Quick start
|
|
18
|
+
|
|
19
|
+
### 1. Start the webhook server
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
export AIOSON_WEBHOOK_TOKEN=your-secret-token
|
|
23
|
+
aioson squad:webhook start --port 3210
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
The server auto-discovers all squads in `.aioson/squads/`. Output:
|
|
27
|
+
|
|
28
|
+
```
|
|
29
|
+
AIOSON squad webhook server started on port 3210
|
|
30
|
+
Available squads: atendimento, vendas, logistica
|
|
31
|
+
Endpoints: POST /trigger GET /status/:run_id GET /health
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
### 2. Generate the OpenClaw configuration
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
aioson squad:webhook config --channel whatsapp --squad atendimento
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
Copy the output into your `openclaw.json`.
|
|
41
|
+
|
|
42
|
+
### 3. Verify
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
curl http://localhost:3210/health
|
|
46
|
+
# {"ok":true,"version":"x.x.x","squads":["atendimento","vendas","logistica"]}
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
---
|
|
50
|
+
|
|
51
|
+
## Endpoints
|
|
52
|
+
|
|
53
|
+
### `GET /health`
|
|
54
|
+
|
|
55
|
+
No authentication required.
|
|
56
|
+
|
|
57
|
+
```json
|
|
58
|
+
{ "ok": true, "version": "1.4.0", "squads": ["atendimento", "vendas"] }
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
---
|
|
62
|
+
|
|
63
|
+
### `POST /trigger`
|
|
64
|
+
|
|
65
|
+
Async squad execution. Returns immediately with a `run_id`.
|
|
66
|
+
|
|
67
|
+
**Headers:**
|
|
68
|
+
```
|
|
69
|
+
Authorization: Bearer <AIOSON_WEBHOOK_TOKEN>
|
|
70
|
+
Content-Type: application/json
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
**Body:**
|
|
74
|
+
```json
|
|
75
|
+
{
|
|
76
|
+
"squad": "atendimento",
|
|
77
|
+
"input": "quero dipirona 500mg",
|
|
78
|
+
"session_id": "wa:5511999000",
|
|
79
|
+
"callback_url": "https://your-server/callback",
|
|
80
|
+
"metadata": {
|
|
81
|
+
"channel": "whatsapp",
|
|
82
|
+
"phone": "+5511999000",
|
|
83
|
+
"user_name": "João"
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
| Field | Required | Description |
|
|
89
|
+
|----------------|----------|-------------|
|
|
90
|
+
| `squad` | yes | Squad slug to execute |
|
|
91
|
+
| `input` | yes | User message |
|
|
92
|
+
| `session_id` | no | Opaque string — enables conversation continuity |
|
|
93
|
+
| `callback_url` | no | Where to POST the response when done |
|
|
94
|
+
| `metadata` | no | Arbitrary key/value, echoed back in the callback |
|
|
95
|
+
|
|
96
|
+
**Response (202):**
|
|
97
|
+
```json
|
|
98
|
+
{ "run_id": "a1b2c3d4e5f6a7b8", "status": "queued" }
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
**Callback payload (async POST to `callback_url`):**
|
|
102
|
+
```json
|
|
103
|
+
{
|
|
104
|
+
"run_id": "a1b2c3d4e5f6a7b8",
|
|
105
|
+
"session_id": "wa:5511999000",
|
|
106
|
+
"response": "Temos dipirona 500mg por R$8,90. Deseja adicionar ao carrinho?",
|
|
107
|
+
"status": "completed",
|
|
108
|
+
"metadata": { "channel": "whatsapp", "phone": "+5511999000", "user_name": "João" }
|
|
109
|
+
}
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
Callback delivery: 3 retries with exponential backoff (30s → 60s → 120s).
|
|
113
|
+
|
|
114
|
+
---
|
|
115
|
+
|
|
116
|
+
### `GET /status/:run_id`
|
|
117
|
+
|
|
118
|
+
Poll execution state when no `callback_url` was provided.
|
|
119
|
+
|
|
120
|
+
```
|
|
121
|
+
GET /status/a1b2c3d4e5f6a7b8
|
|
122
|
+
Authorization: Bearer <token>
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
```json
|
|
126
|
+
{
|
|
127
|
+
"run_id": "a1b2c3d4e5f6a7b8",
|
|
128
|
+
"status": "running",
|
|
129
|
+
"response": null,
|
|
130
|
+
"error": null
|
|
131
|
+
}
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
`status` values: `queued` → `running` → `completed` | `failed`
|
|
135
|
+
|
|
136
|
+
---
|
|
137
|
+
|
|
138
|
+
### `POST /query`
|
|
139
|
+
|
|
140
|
+
Synchronous query — for fast lookups that don't need a full squad session (e.g., product search from a website). Timeout: 10 seconds.
|
|
141
|
+
|
|
142
|
+
```json
|
|
143
|
+
{
|
|
144
|
+
"squad": "catalogo",
|
|
145
|
+
"query": "dipirona 500mg",
|
|
146
|
+
"max_results": 10
|
|
147
|
+
}
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
```json
|
|
151
|
+
{
|
|
152
|
+
"results": [{ "id": 42, "name": "Dipirona 500mg", "price": 8.90 }],
|
|
153
|
+
"squad": "catalogo",
|
|
154
|
+
"latency_ms": 340
|
|
155
|
+
}
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
---
|
|
159
|
+
|
|
160
|
+
## Session continuity
|
|
161
|
+
|
|
162
|
+
When `session_id` is provided, AIOSON maintains conversation history across multiple calls.
|
|
163
|
+
|
|
164
|
+
**First call:**
|
|
165
|
+
```json
|
|
166
|
+
{ "squad": "atendimento", "input": "quero dipirona", "session_id": "wa:5511999000" }
|
|
167
|
+
```
|
|
168
|
+
→ Squad receives: `quero dipirona`
|
|
169
|
+
|
|
170
|
+
**Second call (same session):**
|
|
171
|
+
```json
|
|
172
|
+
{ "squad": "atendimento", "input": "qual o preço?", "session_id": "wa:5511999000" }
|
|
173
|
+
```
|
|
174
|
+
→ Squad receives:
|
|
175
|
+
```
|
|
176
|
+
[Conversation history]
|
|
177
|
+
user: quero dipirona
|
|
178
|
+
assistant: Temos dipirona 500mg por R$8,90. Deseja adicionar ao carrinho?
|
|
179
|
+
|
|
180
|
+
[Current message]
|
|
181
|
+
qual o preço?
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
Session files are stored in `.aioson/sessions/` and expire after 24 hours of inactivity (configurable via `AIOSON_SESSION_TTL_HOURS`).
|
|
185
|
+
|
|
186
|
+
---
|
|
187
|
+
|
|
188
|
+
## OpenClaw configuration
|
|
189
|
+
|
|
190
|
+
### WhatsApp (full example)
|
|
191
|
+
|
|
192
|
+
```yaml
|
|
193
|
+
# openclaw.json
|
|
194
|
+
hooks:
|
|
195
|
+
whatsapp:
|
|
196
|
+
auto_reply:
|
|
197
|
+
- pattern: ".*"
|
|
198
|
+
action: webhook
|
|
199
|
+
url: "http://localhost:3210/trigger"
|
|
200
|
+
headers:
|
|
201
|
+
Authorization: "Bearer ${AIOSON_WEBHOOK_TOKEN}"
|
|
202
|
+
body_template: |
|
|
203
|
+
{
|
|
204
|
+
"squad": "atendimento",
|
|
205
|
+
"input": "{{message.text}}",
|
|
206
|
+
"session_id": "wa:{{message.from}}",
|
|
207
|
+
"callback_url": "{{openclaw.callback_url}}",
|
|
208
|
+
"metadata": {
|
|
209
|
+
"channel": "whatsapp",
|
|
210
|
+
"phone": "{{message.from}}",
|
|
211
|
+
"user_name": "{{message.contact_name}}"
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
```
|
|
215
|
+
|
|
216
|
+
### Telegram
|
|
217
|
+
|
|
218
|
+
```yaml
|
|
219
|
+
hooks:
|
|
220
|
+
telegram:
|
|
221
|
+
auto_reply:
|
|
222
|
+
- pattern: ".*"
|
|
223
|
+
action: webhook
|
|
224
|
+
url: "http://localhost:3210/trigger"
|
|
225
|
+
headers:
|
|
226
|
+
Authorization: "Bearer ${AIOSON_WEBHOOK_TOKEN}"
|
|
227
|
+
body_template: |
|
|
228
|
+
{
|
|
229
|
+
"squad": "suporte",
|
|
230
|
+
"input": "{{message.text}}",
|
|
231
|
+
"session_id": "tg:{{message.chat_id}}",
|
|
232
|
+
"callback_url": "{{openclaw.callback_url}}",
|
|
233
|
+
"metadata": { "channel": "telegram" }
|
|
234
|
+
}
|
|
235
|
+
```
|
|
236
|
+
|
|
237
|
+
### Multiple squads by intent
|
|
238
|
+
|
|
239
|
+
Route different message patterns to different squads:
|
|
240
|
+
|
|
241
|
+
```yaml
|
|
242
|
+
hooks:
|
|
243
|
+
whatsapp:
|
|
244
|
+
auto_reply:
|
|
245
|
+
- pattern: "^(pedido|comprar|quero|carrinho)"
|
|
246
|
+
action: webhook
|
|
247
|
+
url: "http://localhost:3210/trigger"
|
|
248
|
+
headers:
|
|
249
|
+
Authorization: "Bearer ${AIOSON_WEBHOOK_TOKEN}"
|
|
250
|
+
body_template: |
|
|
251
|
+
{ "squad": "vendas", "input": "{{message.text}}", "session_id": "wa:{{message.from}}", "callback_url": "{{openclaw.callback_url}}" }
|
|
252
|
+
|
|
253
|
+
- pattern: "^(onde|entrega|rastreio|pedido)"
|
|
254
|
+
action: webhook
|
|
255
|
+
url: "http://localhost:3210/trigger"
|
|
256
|
+
headers:
|
|
257
|
+
Authorization: "Bearer ${AIOSON_WEBHOOK_TOKEN}"
|
|
258
|
+
body_template: |
|
|
259
|
+
{ "squad": "logistica", "input": "{{message.text}}", "session_id": "wa:{{message.from}}", "callback_url": "{{openclaw.callback_url}}" }
|
|
260
|
+
|
|
261
|
+
- pattern: ".*"
|
|
262
|
+
action: webhook
|
|
263
|
+
url: "http://localhost:3210/trigger"
|
|
264
|
+
headers:
|
|
265
|
+
Authorization: "Bearer ${AIOSON_WEBHOOK_TOKEN}"
|
|
266
|
+
body_template: |
|
|
267
|
+
{ "squad": "atendimento", "input": "{{message.text}}", "session_id": "wa:{{message.from}}", "callback_url": "{{openclaw.callback_url}}" }
|
|
268
|
+
```
|
|
269
|
+
|
|
270
|
+
---
|
|
271
|
+
|
|
272
|
+
## Security
|
|
273
|
+
|
|
274
|
+
| Concern | Mechanism |
|
|
275
|
+
|---------|-----------|
|
|
276
|
+
| Authentication | Bearer token (`AIOSON_WEBHOOK_TOKEN`) on all endpoints except `/health` |
|
|
277
|
+
| Rate limiting | 60 req/min per IP by default |
|
|
278
|
+
| Squad allowlist | Only squads in `.aioson/squads/` are accessible |
|
|
279
|
+
| Callback security | Callbacks only POST to URLs provided by the caller |
|
|
280
|
+
| Session isolation | Each `session_id` maps to a separate file; no cross-session access |
|
|
281
|
+
|
|
282
|
+
Set `AIOSON_WEBHOOK_TOKEN` to a random secret (minimum 32 chars):
|
|
283
|
+
|
|
284
|
+
```bash
|
|
285
|
+
openssl rand -hex 32
|
|
286
|
+
```
|
|
287
|
+
|
|
288
|
+
---
|
|
289
|
+
|
|
290
|
+
## Environment variables
|
|
291
|
+
|
|
292
|
+
| Variable | Default | Description |
|
|
293
|
+
|----------|---------|-------------|
|
|
294
|
+
| `AIOSON_WEBHOOK_TOKEN` | — | Bearer token (required for security) |
|
|
295
|
+
| `AIOSON_WEBHOOK_PORT` | `3210` | Server port |
|
|
296
|
+
| `AIOSON_SESSION_TTL_HOURS` | `24` | Session expiry in hours |
|
|
297
|
+
|
|
298
|
+
---
|
|
299
|
+
|
|
300
|
+
## CLI reference
|
|
301
|
+
|
|
302
|
+
```bash
|
|
303
|
+
# Start webhook server
|
|
304
|
+
aioson squad:webhook start [path] [--port 3210] [--token TOKEN]
|
|
305
|
+
|
|
306
|
+
# Generate OpenClaw config snippet
|
|
307
|
+
aioson squad:webhook config [--channel whatsapp] [--squad atendimento] [--port 3210]
|
|
308
|
+
```
|
package/docs/pt/README.md
CHANGED
|
@@ -15,9 +15,16 @@ Bem-vindo à documentação em português do AIOSON — um framework leve de age
|
|
|
15
15
|
| [Squad e Genome](./squad-genome.md) | Como criar squads modulares, diferenciar skill de genome, aplicar genomes e publicar entregáveis HTML |
|
|
16
16
|
| [Agentes Customizados](./agentes-customizados.md) | Criar agentes personalizados com `squad:agent-create` — tipos, Voice DNA, infra operacional, maturity scoring |
|
|
17
17
|
| [Skills](./skills.md) | Sistema de skills: tipos, instalação, mapeamento por framework e compatibilidade cross-tool |
|
|
18
|
+
| [design-hybrid-forge](./design-hybrid-forge.md) | Fluxo canônico para criar skills híbridas de design com preset visual, locale automático e histórico |
|
|
18
19
|
| [Automação de Squads](./automacao-squads.md) | Transformar processos de squad em scripts executáveis (Python/Node.js) que rodam sem LLM |
|
|
19
20
|
| [Output Strategy e Delivery](./output-strategy-delivery.md) | Configurar webhooks, automatizar entrega de conteúdo, monitorar delivery e troubleshoot |
|
|
20
21
|
| [Suporte Web3](./web3.md) | Guia para projetos dApp (Ethereum, Solana, Cardano) |
|
|
22
|
+
| [Recuperação de Sessão](./recuperacao-de-sessao.md) | Gerar e restaurar contexto entre sessões do Claude Code após compactação |
|
|
23
|
+
| [Monitor de Contexto](./monitor-de-contexto.md) | Visualizar uso de janela de contexto por agente com alertas de warning e critical |
|
|
24
|
+
| [Busca de Contexto](./busca-de-contexto.md) | Indexar e buscar documentos do projeto via FTS5 com ranking por relevância e recência |
|
|
25
|
+
| [Cache de Contexto](./cache-de-contexto.md) | Salvar snapshots de contexto e restaurar entre sessões |
|
|
26
|
+
| [Sandbox de Execução](./sandbox.md) | Executar comandos com timeout, redação de secrets e summarização de output |
|
|
27
|
+
| [Agent Sharding](./agent-sharding.md) | Carregar apenas as seções relevantes de instruções de agente para uma tarefa específica |
|
|
21
28
|
|
|
22
29
|
## Documentação em inglês
|
|
23
30
|
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
# Agent Sharding
|
|
2
|
+
|
|
3
|
+
> Carrega apenas as seções relevantes de um arquivo de instruções de agente para uma tarefa específica, reduzindo consumo de tokens.
|
|
4
|
+
|
|
5
|
+
Arquivos de instrução de agente podem conter muitas seções — role, guidelines, error handling, output format, checklist de revisão — mas para uma tarefa específica, apenas algumas são necessárias. O `agent:load` divide o arquivo em shards semânticos por heading, indexa via FTS5 e carrega apenas os shards mais relevantes para o objetivo informado.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Comandos
|
|
10
|
+
|
|
11
|
+
### `agent:shard:index`
|
|
12
|
+
|
|
13
|
+
Indexa os arquivos de instruções de agentes para permitir carregamento inteligente.
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
aioson agent:shard:index [path] [opções]
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
**Opções:**
|
|
20
|
+
|
|
21
|
+
| Opção | Descrição |
|
|
22
|
+
|---|---|
|
|
23
|
+
| `--agents-dir=<path>` | Diretório dos agentes (padrão: `.aioson/agents`) |
|
|
24
|
+
| `--force` | Reindexar mesmo se já indexado |
|
|
25
|
+
| `--json` | Retorna resultado em JSON |
|
|
26
|
+
|
|
27
|
+
**Exemplos:**
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
# Indexar todos os agentes do projeto
|
|
31
|
+
aioson agent:shard:index .
|
|
32
|
+
|
|
33
|
+
# Forçar reindexação após atualizar arquivos de agente
|
|
34
|
+
aioson agent:shard:index . --force
|
|
35
|
+
|
|
36
|
+
# Diretório customizado de agentes
|
|
37
|
+
aioson agent:shard:index . --agents-dir=.aioson/my-agents
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
---
|
|
41
|
+
|
|
42
|
+
### `agent:load`
|
|
43
|
+
|
|
44
|
+
Carrega os shards mais relevantes de um agente para um objetivo dado.
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
aioson agent:load <agent-id> [opções]
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
**Opções:**
|
|
51
|
+
|
|
52
|
+
| Opção | Descrição |
|
|
53
|
+
|---|---|
|
|
54
|
+
| `--goal="..."` | Objetivo da tarefa (direciona a seleção de shards) |
|
|
55
|
+
| `--agents-dir=<path>` | Diretório dos agentes (padrão: `.aioson/agents`) |
|
|
56
|
+
| `--max-shards=<n>` | Máximo de shards a carregar (padrão: 3) |
|
|
57
|
+
| `--max-tokens=<n>` | Orçamento de tokens (padrão: 2000) |
|
|
58
|
+
| `--print` | Exibe o conteúdo completo dos shards selecionados |
|
|
59
|
+
| `--json` | Retorna shards e tokens em JSON |
|
|
60
|
+
|
|
61
|
+
**Exemplos:**
|
|
62
|
+
|
|
63
|
+
```bash
|
|
64
|
+
# Ver quais seções do agente dev são relevantes para a tarefa
|
|
65
|
+
aioson agent:load dev --goal="implementar endpoint de pagamento com TDD"
|
|
66
|
+
|
|
67
|
+
# Exibir o conteúdo para usar diretamente no prompt
|
|
68
|
+
aioson agent:load dev --goal="refatorar autenticação" --print
|
|
69
|
+
|
|
70
|
+
# Carregar mais shards se necessário
|
|
71
|
+
aioson agent:load dev --goal="..." --max-shards=5 --max-tokens=3000
|
|
72
|
+
|
|
73
|
+
# JSON para integração em scripts
|
|
74
|
+
aioson agent:load dev --goal="..." --json
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
**Saída:**
|
|
78
|
+
|
|
79
|
+
```
|
|
80
|
+
Agent: dev (3/8 shards, 420 tokens)
|
|
81
|
+
|
|
82
|
+
## Role (85 tokens)
|
|
83
|
+
## Implementation Guidelines (180 tokens)
|
|
84
|
+
## Error Handling (155 tokens)
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
---
|
|
88
|
+
|
|
89
|
+
## Como funciona
|
|
90
|
+
|
|
91
|
+
**Divisão em shards:**
|
|
92
|
+
O arquivo de instruções é dividido por headings H2 (`##`) e H3 (`###`). Cada shard é uma seção com seu conteúdo. O bloco antes do primeiro heading vira o shard `(preamble)`.
|
|
93
|
+
|
|
94
|
+
**Indexação:**
|
|
95
|
+
Os shards são salvos como arquivos individuais em `~/.aioson/shards/` e indexados via FTS5 (o mesmo motor do `context:search`).
|
|
96
|
+
|
|
97
|
+
**Seleção:**
|
|
98
|
+
1. O shard `(preamble)` e os shards de `Role` são sempre incluídos
|
|
99
|
+
2. O FTS5 busca os shards mais relevantes para o `--goal`
|
|
100
|
+
3. Shards são adicionados até preencher o orçamento de tokens
|
|
101
|
+
4. Se ainda há espaço, shards restantes são adicionados em ordem
|
|
102
|
+
|
|
103
|
+
**Orçamento:**
|
|
104
|
+
O total de tokens dos shards selecionados fica dentro de `--max-tokens` (padrão 2000, estimado como chars/4).
|
|
105
|
+
|
|
106
|
+
---
|
|
107
|
+
|
|
108
|
+
## Exemplo de redução de contexto
|
|
109
|
+
|
|
110
|
+
Para um agente com 9 seções e 228 tokens totais:
|
|
111
|
+
|
|
112
|
+
```
|
|
113
|
+
Carregando para "implementar com TDD e error handling":
|
|
114
|
+
Shards selecionados: 3 de 9
|
|
115
|
+
Tokens usados: 73 de 228
|
|
116
|
+
|
|
117
|
+
→ Redução de 68% no consumo de tokens
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
---
|
|
121
|
+
|
|
122
|
+
## Onde ficam os índices
|
|
123
|
+
|
|
124
|
+
Os shards são indexados em `~/.aioson/shards/` — fora do repositório, não commitado. Use `--force` para atualizar após editar os arquivos de agente.
|
|
125
|
+
|
|
126
|
+
---
|
|
127
|
+
|
|
128
|
+
## Quando usar
|
|
129
|
+
|
|
130
|
+
- Quando um arquivo de instrução de agente tem muitas seções e você quer enviar ao LLM apenas o que é necessário para a tarefa atual
|
|
131
|
+
- Para reduzir tokens consumidos por instruções fixas do agente
|
|
132
|
+
- Para agentes que têm seções muito diferentes (implementação, revisão, documentação, deploy) e você quer carregar apenas o contexto certo para cada tarefa
|
package/docs/pt/agentes.md
CHANGED
|
@@ -90,6 +90,7 @@ Regras do fluxo:
|
|
|
90
90
|
**Quando usar:** Depois do `@setup` em projetos novos. Em features novas de projeto existente, pode entrar direto sem repetir `@setup`.
|
|
91
91
|
|
|
92
92
|
**O que faz:**
|
|
93
|
+
- varre a raiz do projeto em busca de documentos de entrada (`plans/*.md`, `prds/*.md`) antes de iniciar a conversa
|
|
93
94
|
- conduz a conversa de produto e gera o `PRD base`
|
|
94
95
|
- registra visão, problema, usuários, escopo inicial e perguntas em aberto
|
|
95
96
|
- detecta sinais visuais cedo e preserva a intenção no PRD
|
|
@@ -97,6 +98,21 @@ Regras do fluxo:
|
|
|
97
98
|
- aponta o próximo agente do fluxo
|
|
98
99
|
- em brownfield, usa `discovery.md` quando já existir e trata os artefatos locais do scan apenas como orientação estrutural, nunca como substituto do `@analyst`
|
|
99
100
|
|
|
101
|
+
**Documentos de kickoff (plans/ e prds/ na raiz):**
|
|
102
|
+
|
|
103
|
+
Você pode criar arquivos de entrada na raiz do projeto antes de ativar o `@product`:
|
|
104
|
+
|
|
105
|
+
```
|
|
106
|
+
plans/minha-ideia.md ← notas, esboços, planos escritos por você
|
|
107
|
+
prds/visao-produto.md ← rascunhos de requisitos, referências
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
O `@product` detecta esses arquivos automaticamente e pergunta se deve usá-los como fonte. Se sim, ele sintetiza o conteúdo e gera o PRD formal em `.aioson/context/`. Os arquivos originais nunca são modificados — você pode deletá-los depois que o PRD estiver gerado.
|
|
111
|
+
|
|
112
|
+
**Sinal de greenfield vs feature:**
|
|
113
|
+
- `plans/*.md` ou `prds/*.md` existem + `prd.md` ainda não existe → kickoff de projeto novo
|
|
114
|
+
- `plans/*.md` ou `prds/*.md` existem + `prd.md` já existe → nova feature ou refinamento
|
|
115
|
+
|
|
100
116
|
**Como ativar:**
|
|
101
117
|
```
|
|
102
118
|
/product
|
|
@@ -109,6 +125,7 @@ Regras do fluxo:
|
|
|
109
125
|
- métricas de sucesso
|
|
110
126
|
- perguntas em aberto
|
|
111
127
|
- identidade visual inicial, quando houver sinal suficiente
|
|
128
|
+
- `## Specify depth` (projetos SMALL e MEDIUM) — classificação aplicada, profundidade de spec escolhida e lista de ambiguidades que devem ser resolvidas antes que `@analyst` avance
|
|
112
129
|
|
|
113
130
|
> Se o pedido mencionar explicitamente um command center premium, control tower, tri-rail shell ou estilo AIOS Dashboard, o `@product` deve registrar a skill `premium-command-center-ui` na seção de identidade visual do PRD.
|
|
114
131
|
|
|
@@ -207,6 +224,10 @@ Alias compativel:
|
|
|
207
224
|
- Riscos identificados
|
|
208
225
|
- Referências visuais (wireframes, links)
|
|
209
226
|
|
|
227
|
+
Em **modo feature**, entrega adicionalmente:
|
|
228
|
+
- `requirements-{slug}.md` — regras de negócio com IDs rastreáveis (`REQ-{slug}-N`) e acceptance criteria verificáveis por QA (`AC-{slug}-N`)
|
|
229
|
+
- `spec-{slug}.md` — esqueleto de memória da feature, com `phase_gates` no frontmatter para que `@dev` e `@deyvin` saibam quais fases já foram aprovadas
|
|
230
|
+
|
|
210
231
|
---
|
|
211
232
|
|
|
212
233
|
## @discovery-design-doc
|
|
@@ -274,8 +295,9 @@ tests/
|
|
|
274
295
|
**Entrega:** Arquivo `.aioson/context/architecture.md` com:
|
|
275
296
|
- Estrutura de pastas (proporcional ao tamanho)
|
|
276
297
|
- Stack definitiva
|
|
277
|
-
- Decisões técnicas documentadas
|
|
298
|
+
- Decisões técnicas documentadas com **rationale** — não só o que foi decidido, mas por que aquela escolha reduz risco de debug e manutenção futura
|
|
278
299
|
- Padrões de código
|
|
300
|
+
- **Gate B** — sinal explícito de aprovação ao final do arquivo (`@dev` só pode iniciar implementação após este gate)
|
|
279
301
|
|
|
280
302
|
---
|
|
281
303
|
|
|
@@ -481,12 +503,25 @@ Depois disso, ela passa a ser parte real do pacote local da squad e deve ser con
|
|
|
481
503
|
- Seguir as convenções nativas do framework do projeto
|
|
482
504
|
- Verificar skills disponíveis em `.aioson/skills/static/` antes de implementar
|
|
483
505
|
|
|
506
|
+
**TDD Gate** — Antes de qualquer implementação de lógica de negócio, o `@dev` verifica o test runner configurado em `project.context.md`. Se não houver nenhum configurado, escaneia a raiz em busca de arquivos de configuração conhecidos (`pest.xml`, `vitest.config.*`, `pytest.ini`, `.rspec`, `foundry.toml`) e pergunta ao usuário se deseja configurar um antes de começar.
|
|
507
|
+
|
|
508
|
+
| Classificação | Mandato |
|
|
509
|
+
|---|---|
|
|
510
|
+
| MICRO | Escrever o teste junto com a implementação — obrigatório antes do commit |
|
|
511
|
+
| SMALL | Escrever o teste com falha (RED) **antes** de qualquer código de implementação |
|
|
512
|
+
| MEDIUM | Igual ao SMALL. Anotar o teste no checkpoint do plano de implementação |
|
|
513
|
+
|
|
514
|
+
**Exceções ao TDD** (nenhum teste exigido): arquivos de configuração, migrations sem regras de negócio, conteúdo estático, scaffolding de UI sem lógica de estado.
|
|
515
|
+
|
|
516
|
+
Se o usuário pedir para pular o teste, o `@dev` resiste, explica, e só cede após insistência — nunca implementa lógica de negócio sem teste existindo primeiro.
|
|
517
|
+
|
|
484
518
|
**Execução atômica** — O @dev trabalha em passos pequenos e validados, nunca implementa uma feature inteira de uma vez:
|
|
485
519
|
1. Declara o próximo passo antes de escrever código
|
|
486
|
-
2.
|
|
487
|
-
3.
|
|
488
|
-
4.
|
|
489
|
-
5.
|
|
520
|
+
2. Escreve o teste com falha (RED) — o teste deve falhar antes de qualquer implementação
|
|
521
|
+
3. Implementa apenas o suficiente para o teste passar (GREEN)
|
|
522
|
+
4. Verifica que o teste passa — lê o output completo, não um resumo
|
|
523
|
+
5. Faz commit com mensagem semântica
|
|
524
|
+
6. Repete para o próximo passo
|
|
490
525
|
|
|
491
526
|
**Em projetos com Laravel especificamente:**
|
|
492
527
|
- Form Requests para validação (nunca inline no controller)
|
|
@@ -505,7 +540,7 @@ Depois disso, ela passa a ser parte real do pacote local da squad e deve ser con
|
|
|
505
540
|
|
|
506
541
|
**O que faz:**
|
|
507
542
|
- Revisa o código implementado
|
|
508
|
-
- Escreve testes
|
|
543
|
+
- Escreve testes para achados Critical e High
|
|
509
544
|
- Identifica casos de borda não cobertos
|
|
510
545
|
- Valida se os critérios de aceite foram atendidos
|
|
511
546
|
- usa `discovery.md` como fonte de regras e relacionamentos; se só existirem artefatos de scan, o fluxo correto ainda passa por `@analyst`
|
|
@@ -516,10 +551,92 @@ Depois disso, ela passa a ser parte real do pacote local da squad e deve ser con
|
|
|
516
551
|
```
|
|
517
552
|
|
|
518
553
|
**Entrega:**
|
|
519
|
-
-
|
|
520
|
-
-
|
|
554
|
+
- Lista de problemas encontrados por severidade
|
|
555
|
+
- Testes para achados críticos
|
|
521
556
|
- Relatório de cobertura
|
|
522
557
|
|
|
558
|
+
> **@qa vs @tester** — O `@qa` é um revisor: lê o que foi implementado, aponta riscos e escreve testes pontuais para achados críticos. O `@tester` é um engenheiro de testes: parte de cobertura zero e constrói uma estratégia sistemática (inventário, mapa de risco, estratégia por camada). Use `@tester` quando a aplicação foi implementada sem testes adequados ou quando `@qa` identificar lacunas em 3+ módulos.
|
|
559
|
+
|
|
560
|
+
---
|
|
561
|
+
|
|
562
|
+
## @tester
|
|
563
|
+
|
|
564
|
+
**Quando usar:** Após `@dev`, quando a aplicação foi implementada sem testes adequados. Também em projetos legados ou quando `@qa` identificar cobertura insuficiente em múltiplos módulos.
|
|
565
|
+
|
|
566
|
+
**O que faz:**
|
|
567
|
+
- Produz um inventário completo de cobertura (`test-inventory.md`)
|
|
568
|
+
- Mapeia regras de negócio descobertas vs testes existentes, priorizando por risco
|
|
569
|
+
- Escolhe e documenta a estratégia de teste antes de escrever qualquer linha
|
|
570
|
+
- Escreve testes por módulo em ordem de prioridade, com commit atômico por módulo
|
|
571
|
+
- Gera relatório de cobertura antes vs depois
|
|
572
|
+
|
|
573
|
+
**Estratégias disponíveis:**
|
|
574
|
+
|
|
575
|
+
| Cenário | Estratégia |
|
|
576
|
+
|---|---|
|
|
577
|
+
| Código legado sem testes, precisa refatorar | Characterization Testing |
|
|
578
|
+
| App implementada, cobertura zero | Test Pyramid Bottom-up |
|
|
579
|
+
| Cobertura razoável, regras descobertas | Risk-first Gap Filling |
|
|
580
|
+
| Código crítico com edge cases complexos | Property-based Testing |
|
|
581
|
+
| APIs entre times | Contract Testing |
|
|
582
|
+
| Suspeita de testes fracos que sempre passam | Mutation Testing |
|
|
583
|
+
|
|
584
|
+
**Frameworks detectados automaticamente por stack:**
|
|
585
|
+
|
|
586
|
+
| Stack | Test Runner | Unit | Integration | E2E |
|
|
587
|
+
|---|---|---|---|---|
|
|
588
|
+
| Laravel | Pest PHP | Pest unit | Pest feature (HTTP) | Dusk/Playwright |
|
|
589
|
+
| Next.js | Vitest | Vitest + RTL | MSW + Vitest | Playwright |
|
|
590
|
+
| Django | pytest-django | pytest | pytest + client | Playwright |
|
|
591
|
+
| FastAPI | pytest + httpx | pytest | AsyncClient | — |
|
|
592
|
+
| Rails | RSpec | RSpec unit | Request specs | Capybara |
|
|
593
|
+
| Solidity | Foundry | forge unit | forge integration | — |
|
|
594
|
+
|
|
595
|
+
**Como ativar:**
|
|
596
|
+
```
|
|
597
|
+
/tester
|
|
598
|
+
```
|
|
599
|
+
|
|
600
|
+
**Entrega:**
|
|
601
|
+
- `.aioson/context/test-inventory.md` — mapa de cobertura por arquivo
|
|
602
|
+
- `.aioson/context/test-plan.md` — estratégia escolhida + cobertura antes/depois
|
|
603
|
+
- Testes escritos por módulo, commitados incrementalmente
|
|
604
|
+
|
|
605
|
+
**Restrições:**
|
|
606
|
+
- Nunca modifica código de produção
|
|
607
|
+
- Se encontrar um bug real: documenta em `test-plan.md` e para — não corrige silenciosamente
|
|
608
|
+
- Testes sem assertions são proibidos
|
|
609
|
+
|
|
610
|
+
---
|
|
611
|
+
|
|
612
|
+
## @sheldon
|
|
613
|
+
|
|
614
|
+
**Quando usar:** Após `@product`, antes de iniciar a cadeia de execução — para garantir que o PRD está completo, sem lacunas e pronto para gerar código correto.
|
|
615
|
+
|
|
616
|
+
**O que faz:**
|
|
617
|
+
- Detecta documentos de entrada na raiz (`plans/*.md`, `prds/*.md`) e oferece incorporá-los ao enriquecimento do PRD
|
|
618
|
+
- Analisa o PRD por prioridade de melhorias
|
|
619
|
+
- Decide entre enriquecimento in-place ou plano de fases externo
|
|
620
|
+
- Valida se o PRD está legível e implementável antes de ativar `@dev`
|
|
621
|
+
|
|
622
|
+
**Modos de operação:**
|
|
623
|
+
|
|
624
|
+
| Modo | Como ativar | O que faz |
|
|
625
|
+
|---|---|---|
|
|
626
|
+
| A — Enriquecimento (padrão) | `/sheldon` | Analisa o PRD alvo e sugere melhorias prioritárias |
|
|
627
|
+
| B — Revisão Global | `/sheldon` + "revisão geral" | Escaneia todos os PRDs e planos ativos |
|
|
628
|
+
| C — Validação Completa | `/sheldon` + "validar" ou "preparar para dev" | Auditoria completa + checklist final antes de codar |
|
|
629
|
+
|
|
630
|
+
**Como ativar:**
|
|
631
|
+
```
|
|
632
|
+
/sheldon
|
|
633
|
+
```
|
|
634
|
+
|
|
635
|
+
**Entrega:**
|
|
636
|
+
- PRD enriquecido in-place com sinal de **spec-hardened** ao final — o campo `readiness` em `sheldon-enrichment-{slug}.md` indica se o PRD está pronto para downstream (`ready_for_downstream`) ou ainda tem itens bloqueantes (`needs_work`) (Modo A)
|
|
637
|
+
- Relatório de status de todos os PRDs (Modo B)
|
|
638
|
+
- Checklist de validação + decisão go/no-go para implementação (Modo C)
|
|
639
|
+
|
|
523
640
|
---
|
|
524
641
|
|
|
525
642
|
## Resumo: fluxo por tamanho
|
|
@@ -532,15 +649,18 @@ Duração típica: minutos a horas. Sem análise, sem arquitetura formal.
|
|
|
532
649
|
|
|
533
650
|
### SMALL
|
|
534
651
|
```
|
|
535
|
-
@setup → @product → @analyst → @architect → @
|
|
652
|
+
@setup → @product → [@sheldon] → @analyst → @architect → @dev → @qa → [@tester]
|
|
536
653
|
```
|
|
537
654
|
Duração típica: horas a dias. Análise leve, estrutura clara.
|
|
538
655
|
|
|
539
656
|
### MEDIUM
|
|
540
657
|
```
|
|
541
|
-
@setup → @product → @analyst → @architect → @ux-ui → @pm → @orchestrator → @dev → @qa
|
|
658
|
+
@setup → @product → [@sheldon] → @analyst → @architect → @ux-ui → @pm → @orchestrator → @dev → @qa → [@tester]
|
|
542
659
|
```
|
|
543
|
-
Duração típica: dias a semanas. Análise completa,
|
|
660
|
+
Duração típica: dias a semanas. Análise completa, paralelismo, backlog formal.
|
|
661
|
+
|
|
662
|
+
`[@sheldon]` — opcional, recomendado antes de iniciar a cadeia de execução para validar o PRD.
|
|
663
|
+
`[@tester]` — opcional, recomendado quando a cobertura de testes for insuficiente após `@dev`.
|
|
544
664
|
|
|
545
665
|
---
|
|
546
666
|
|