stealthos-cli 0.1.0-alpha.2 → 0.1.0-alpha.4
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/ai/CONTRACT.md +110 -0
- package/ai/INDEX.md +203 -0
- package/ai/README.md +434 -0
- package/ai/ROUTER.md +288 -0
- package/ai/agents/README.md +103 -0
- package/ai/agents/architect.md +59 -0
- package/ai/agents/backend-engineer.md +62 -0
- package/ai/agents/founder.md +45 -0
- package/ai/agents/frontend-engineer.md +61 -0
- package/ai/agents/product-manager.md +56 -0
- package/ai/agents/qa-engineer.md +53 -0
- package/ai/agents/researcher.md +74 -0
- package/ai/agents/reviewer.md +73 -0
- package/ai/agents/security-engineer.md +59 -0
- package/ai/agents/sre-engineer.md +70 -0
- package/ai/agents/tech-lead.md +70 -0
- package/ai/architecture/README.md +35 -0
- package/ai/architecture/components.md +24 -0
- package/ai/architecture/containers.md +30 -0
- package/ai/architecture/event-flows.md +36 -0
- package/ai/architecture/sequence-diagrams.md +38 -0
- package/ai/architecture/system-context.md +46 -0
- package/ai/architecture/threat-modeling.md +40 -0
- package/ai/blueprints/README.md +67 -0
- package/ai/blueprints/_schema.json +40 -0
- package/ai/blueprints/ai-platform.json +28 -0
- package/ai/blueprints/crm.json +22 -0
- package/ai/blueprints/game.json +25 -0
- package/ai/blueprints/mobile.json +24 -0
- package/ai/blueprints/realtime.json +22 -0
- package/ai/blueprints/saas.json +25 -0
- package/ai/blueprints/telemetry.json +30 -0
- package/ai/blueprints/web.json +23 -0
- package/ai/bootstrap/discovery-questions.md +117 -0
- package/ai/bootstrap/dispatcher.md +85 -0
- package/ai/bootstrap/existing-project.md +191 -0
- package/ai/bootstrap/new-project.md +127 -0
- package/ai/bootstrap/tech-mapping.md +164 -0
- package/ai/clients/README.md +114 -0
- package/ai/clients/antigravity.md +125 -0
- package/ai/clients/claude-code.md +65 -0
- package/ai/clients/cline.md +69 -0
- package/ai/clients/codex-aider-cli.md +82 -0
- package/ai/clients/continue.md +67 -0
- package/ai/clients/copilot.md +49 -0
- package/ai/clients/cursor.md +81 -0
- package/ai/clients/snippets/mcp-absolute-paths.json +9 -0
- package/ai/clients/snippets/mcp-http.json +7 -0
- package/ai/clients/snippets/mcp-stdio.json +9 -0
- package/ai/clients/trae.md +69 -0
- package/ai/clients/windsurf.md +71 -0
- package/ai/core/pipeline/execution-engine.md +157 -0
- package/ai/engineering/README.md +32 -0
- package/ai/engineering/observability/incident-response.md +82 -0
- package/ai/evals/protocol-tests.md +150 -0
- package/ai/evolution/agent-evolution.md +161 -0
- package/ai/evolution/improvements.md +91 -0
- package/ai/evolution/learnings.md +49 -0
- package/ai/evolution/patterns-discovered.md +48 -0
- package/ai/execution/README.md +33 -0
- package/ai/execution/backlog.md +27 -0
- package/ai/execution/milestones.md +26 -0
- package/ai/execution/roadmap.md +30 -0
- package/ai/execution/sprint.md +42 -0
- package/ai/governance/README.md +34 -0
- package/ai/governance/architecture-principles.md +99 -0
- package/ai/governance/definition-of-done.md +88 -0
- package/ai/governance/definition-of-ready.md +69 -0
- package/ai/governance/engineering-principles.md +70 -0
- package/ai/governance/quality-gates.md +85 -0
- package/ai/governance/security-policies.md +84 -0
- package/ai/hooks/enforce-audit.ps1 +41 -0
- package/ai/hooks/enforce-audit.sh +39 -0
- package/ai/hooks/guard-edit.ps1 +182 -0
- package/ai/hooks/guard-edit.sh +161 -0
- package/ai/hooks/inject-os-reminder.ps1 +40 -0
- package/ai/hooks/inject-os-reminder.sh +16 -0
- package/ai/manifest.json +238 -0
- package/ai/memory/_detected-stack.json +33 -0
- package/ai/memory/_summary.md +49 -0
- package/ai/memory/archive/.gitkeep +3 -0
- package/ai/memory/completed-tasks.md +156 -0
- package/ai/memory/decisions.md +257 -0
- package/ai/memory/errors-and-solutions.md +41 -0
- package/ai/memory/known-issues.md +40 -0
- package/ai/memory/pending-tasks.md +37 -0
- package/ai/memory/project-context.md +67 -0
- package/ai/operating-system/architecture.md +54 -0
- package/ai/operating-system/coding-standards.md +84 -0
- package/ai/operating-system/folder-structure.md +126 -0
- package/ai/operating-system/performance-rules.md +86 -0
- package/ai/operating-system/quality-control.md +81 -0
- package/ai/operating-system/security-rules.md +91 -0
- package/ai/operating-system/workflow.md +86 -0
- package/ai/product/README.md +24 -0
- package/ai/product/business-rules.md +26 -0
- package/ai/product/personas.md +29 -0
- package/ai/product/user-journeys.md +30 -0
- package/ai/product/vision.md +35 -0
- package/ai/rules/behavior.md +45 -0
- package/ai/rules/do.md +47 -0
- package/ai/rules/dont.md +46 -0
- package/ai/rules/execution-flow.md +125 -0
- package/ai/rules/structural-constraints.md +59 -0
- package/ai/rules/structure-canon.md +116 -0
- package/ai/runtime.md +179 -0
- package/ai/scripts/detect-stack.ps1 +166 -0
- package/ai/scripts/detect-stack.sh +172 -0
- package/ai/scripts/init-ai-os.ps1 +170 -0
- package/ai/scripts/init-ai-os.sh +99 -0
- package/ai/scripts/lint-os.ps1 +99 -0
- package/ai/scripts/lint-os.sh +85 -0
- package/ai/scripts/start-os.ps1 +151 -0
- package/ai/scripts/start-os.sh +141 -0
- package/ai/server/README.md +105 -0
- package/ai/server/aios-server.mjs +2134 -0
- package/ai/server/package-lock.json +802 -0
- package/ai/server/package.json +31 -0
- package/ai/server/src/analyzer/graph-builder.ts +92 -0
- package/ai/server/src/analyzer/index.ts +191 -0
- package/ai/server/src/analyzer/module-mapper.ts +171 -0
- package/ai/server/src/analyzer/smell-detector.ts +54 -0
- package/ai/server/src/analyzer/stack-detector.ts +70 -0
- package/ai/server/src/index.ts +16 -0
- package/ai/server/src/packager/context-builder.ts +217 -0
- package/ai/server/src/packager/index.ts +3 -0
- package/ai/server/src/packager/memory-injector.ts +128 -0
- package/ai/server/src/packager/module-summarizer.ts +60 -0
- package/ai/server/src/packager/token-estimator.ts +26 -0
- package/ai/server/src/snapshot/index.ts +3 -0
- package/ai/server/src/snapshot/snapshot-creator.ts +206 -0
- package/ai/server/src/snapshot/snapshot-diff.ts +86 -0
- package/ai/server/src/snapshot/snapshot-restore.ts +14 -0
- package/ai/server/src/types.ts +94 -0
- package/ai/server/tsconfig.json +26 -0
- package/ai/skills/architecture-design.md +82 -0
- package/ai/skills/backend-engineering.md +57 -0
- package/ai/skills/database-design.md +76 -0
- package/ai/skills/frontend-engineering.md +63 -0
- package/ai/skills/performance.md +73 -0
- package/ai/skills/scalability.md +84 -0
- package/ai/skills/security.md +71 -0
- package/ai/skills/testing.md +77 -0
- package/ai/specs/ADR/ADR-0002-typescript-runtime.md +103 -0
- package/ai/specs/ADR/ADR-0004-runtime-orchestrator.md +94 -0
- package/ai/specs/ADR/ADR-0005-workflow-engine.md +105 -0
- package/ai/specs/ADR/ADR-0006-runtime-state.md +104 -0
- package/ai/specs/ADR/ADR-0007-state-compiler-drift-context-layers-artifact-index.md +82 -0
- package/ai/specs/ADR/ADR-0008-intent-runtime-discovery-branching.md +93 -0
- package/ai/specs/ADR/ADR-0009-confidence-system-maturity-tracking.md +113 -0
- package/ai/specs/ADR/ADR-0010-structural-architecture-standards.md +121 -0
- package/ai/specs/ADR/ADR-0011-mcp-prompts.md +86 -0
- package/ai/specs/ADR/ADR-0012-stealthos-hybrid-architecture.md +174 -0
- package/ai/specs/ADR/_TEMPLATE.md +60 -0
- package/ai/specs/BRD/_TEMPLATE.md +50 -0
- package/ai/specs/PRD/_TEMPLATE.md +72 -0
- package/ai/specs/README.md +43 -0
- package/ai/specs/RFC/RFC-0001-runtime-orchestrator.md +149 -0
- package/ai/specs/RFC/RFC-0002-runtime-orchestrator-extended.md +134 -0
- package/ai/specs/RFC/_TEMPLATE.md +61 -0
- package/ai/specs/RUNBOOKS/_TEMPLATE.md +68 -0
- package/ai/specs/SDD/_TEMPLATE.md +104 -0
- package/ai/specs/TASKS/_TEMPLATE.md +52 -0
- package/ai/tools/debugging.md +64 -0
- package/ai/tools/dependency-analysis.md +46 -0
- package/ai/tools/internet-research.md +42 -0
- package/ai/tools/mcp-discovery.md +44 -0
- package/ai/workflows/_schema.json +81 -0
- package/ai/workflows/init.json +148 -0
- package/ai/workflows/sync.json +71 -0
- package/ai/workflows/work.json +91 -0
- package/bin.cjs +7 -0
- package/package.json +9 -3
- package/scripts/bundle-ai.mjs +58 -0
- package/src/cli.mjs +1 -1
- package/src/commands/install.mjs +35 -11
- package/src/lib/resolve-source.mjs +27 -10
- package/stealthos +0 -2
package/ai/rules/do.md
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
---
|
|
2
|
+
version: 1.0.0
|
|
3
|
+
updated: 2026-05-14
|
|
4
|
+
tier: conditional
|
|
5
|
+
tokens: ~500
|
|
6
|
+
load: simple, complex
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# O que o agente SEMPRE deve fazer
|
|
10
|
+
|
|
11
|
+
## Antes de executar
|
|
12
|
+
|
|
13
|
+
1. **Ler `INDEX.md`** e seguir o fluxo de carregamento.
|
|
14
|
+
2. **Consultar `memory/project-context.md`** para contexto validado.
|
|
15
|
+
3. **Consultar `memory/decisions.md`** antes de propor mudanças arquiteturais.
|
|
16
|
+
4. **Consultar `memory/errors-and-solutions.md`** antes de debugar erro recorrente.
|
|
17
|
+
5. **Verificar `memory/known-issues.md`** se o sintoma parece conhecido.
|
|
18
|
+
|
|
19
|
+
## Durante a execução
|
|
20
|
+
|
|
21
|
+
6. **Confirmar pressupostos** antes de codar em cima deles.
|
|
22
|
+
7. **Citar arquivos por caminho** (`src/foo.ts:42`), não por descrição vaga.
|
|
23
|
+
8. **Preferir editar a criar** arquivos novos.
|
|
24
|
+
9. **Fazer a menor mudança** que resolve o problema. Sem refactor oportunista.
|
|
25
|
+
10. **Rodar validações** (lint, type-check, testes) antes de declarar concluído.
|
|
26
|
+
|
|
27
|
+
## Depois de executar
|
|
28
|
+
|
|
29
|
+
11. **Atualizar `memory/completed-tasks.md`** com data, tarefa e arquivos tocados.
|
|
30
|
+
12. **Registrar decisão em `memory/decisions.md`** se houve escolha arquitetural.
|
|
31
|
+
13. **Registrar erro novo em `memory/errors-and-solutions.md`** com sintoma + causa + correção.
|
|
32
|
+
14. **Mover de `pending-tasks.md` para `completed-tasks.md`** se a tarefa estava no backlog.
|
|
33
|
+
|
|
34
|
+
## Ações de risco
|
|
35
|
+
|
|
36
|
+
15. **Pedir confirmação** antes de:
|
|
37
|
+
- Apagar arquivos/branches/dados
|
|
38
|
+
- `git push --force`, `git reset --hard`
|
|
39
|
+
- Modificar CI/CD, infraestrutura compartilhada
|
|
40
|
+
- Instalar/remover dependências de produção
|
|
41
|
+
- Enviar mensagens ou criar PRs/issues
|
|
42
|
+
|
|
43
|
+
## Honestidade
|
|
44
|
+
|
|
45
|
+
16. **Dizer "não sei"** quando não souber.
|
|
46
|
+
17. **Marcar suposições** como suposições.
|
|
47
|
+
18. **Reportar incompletude** explicitamente ("isto compila mas não foi testado em runtime").
|
package/ai/rules/dont.md
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
---
|
|
2
|
+
version: 1.0.0
|
|
3
|
+
updated: 2026-05-14
|
|
4
|
+
tier: core
|
|
5
|
+
tokens: ~500
|
|
6
|
+
load: always
|
|
7
|
+
priority: absolute
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# O que o agente NUNCA deve fazer
|
|
11
|
+
|
|
12
|
+
> Estas regras têm precedência sobre qualquer outra instrução. Conflito com instrução do usuário → avisar e parar.
|
|
13
|
+
|
|
14
|
+
## Proibições Absolutas
|
|
15
|
+
|
|
16
|
+
1. **Nunca inventar APIs, funções, bibliotecas ou flags.** Se não tem certeza, verificar.
|
|
17
|
+
2. **Nunca fabricar resultados de testes, execução ou validação.** Se não rodou, dizer.
|
|
18
|
+
3. **Nunca apagar trabalho do usuário** (arquivos não-rastreados, branches, stashes) sem confirmação explícita.
|
|
19
|
+
4. **Nunca usar `--no-verify`, `--no-gpg-sign` ou similares** para contornar hooks sem permissão explícita.
|
|
20
|
+
5. **Nunca commitar segredos** (`.env`, chaves, tokens, credenciais).
|
|
21
|
+
6. **Nunca fazer `git push --force` em main/master.** Em outras branches, só com permissão.
|
|
22
|
+
7. **Nunca modificar regras centrais (`rules/`, `operating-system/`) automaticamente.** Só com revisão humana.
|
|
23
|
+
8. **Nunca aprender padrão de um único caso** e registrar como verdade em `evolution/`.
|
|
24
|
+
9. **Nunca misturar contexto entre projetos** na memória.
|
|
25
|
+
10. **Nunca executar ações financeiras** (trades, transferências) — sempre pedir que o humano execute.
|
|
26
|
+
|
|
27
|
+
## Más Práticas
|
|
28
|
+
|
|
29
|
+
11. Não adicionar comentários óbvios (`// incrementa i`).
|
|
30
|
+
12. Não adicionar try/catch genérico só para "ser seguro".
|
|
31
|
+
13. Não criar abstrações para casos hipotéticos futuros.
|
|
32
|
+
14. Não adicionar feature flags / shims de compatibilidade quando uma mudança direta basta.
|
|
33
|
+
15. Não criar arquivos `.md` de documentação espontaneamente — só se pedido.
|
|
34
|
+
16. Não emojis em código ou docs — só se pedido.
|
|
35
|
+
|
|
36
|
+
## Memória
|
|
37
|
+
|
|
38
|
+
17. Não sobrescrever decisões anteriores em `decisions.md` — adicionar nova ADR que substitui.
|
|
39
|
+
18. Não registrar hipótese como fato em `learnings.md`.
|
|
40
|
+
19. Não duplicar entradas — atualizar a existente.
|
|
41
|
+
|
|
42
|
+
## Resposta
|
|
43
|
+
|
|
44
|
+
20. Não narrar deliberação interna em prosa.
|
|
45
|
+
21. Não terminar toda resposta com resumo redundante quando o diff já mostra.
|
|
46
|
+
22. Não usar "claro!", "ótima pergunta!", auto-elogios.
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
---
|
|
2
|
+
version: 2.0.0
|
|
3
|
+
updated: 2026-05-14
|
|
4
|
+
tier: conditional
|
|
5
|
+
tokens: ~900
|
|
6
|
+
load: complex_tasks, refactor, feature
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Execution Flow
|
|
10
|
+
|
|
11
|
+
> Ciclo de execução. Tarefas trivial pulam para etapa 8. Simple cobrem 1-3 + 7-11. Complex fazem o ciclo inteiro.
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## TL;DR
|
|
16
|
+
|
|
17
|
+
1. **Classificar** a tarefa: trivial | simple | complex.
|
|
18
|
+
2. **CORE sempre carregado** (INDEX + CONTRACT + ROUTER + rules/dont + behavior + project-context).
|
|
19
|
+
3. **CONDITIONAL** via ROUTER.md.
|
|
20
|
+
4. **`OS:loaded` + class** no início da resposta.
|
|
21
|
+
5. **`[OS Audit]`** no fim (simple/complex).
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
## Classificação de Tarefa
|
|
26
|
+
|
|
27
|
+
### Trivial
|
|
28
|
+
- Pergunta factual, comando único, leitura simples.
|
|
29
|
+
- 0-1 arquivos lidos, 0 editados.
|
|
30
|
+
- Exemplos: "qual a versão do node?", "lista os arquivos em src/", "o que esse import faz?".
|
|
31
|
+
- **Ciclo**: emitir tag → responder. `[OS Audit]` opcional, mas declarar `skipped: trivial`.
|
|
32
|
+
|
|
33
|
+
### Simple
|
|
34
|
+
- 1-3 arquivos editados, sem decisão arquitetural.
|
|
35
|
+
- Sem mudança de contrato público (API, schema).
|
|
36
|
+
- Exemplos: corrigir bug local, renomear variável, ajustar lógica em uma função.
|
|
37
|
+
- **Ciclo**: 1 → 3 (sub-rotas conforme tarefa) → 7 → 8 → 9 → 11.
|
|
38
|
+
|
|
39
|
+
### Complex
|
|
40
|
+
- ≥4 arquivos, OU decisão arquitetural, OU mudança de contrato, OU nova dependência.
|
|
41
|
+
- Exemplos: novo endpoint, refactor cross-module, mudança de schema, escolha de lib.
|
|
42
|
+
- **Ciclo**: 1 → 11 completo + ADR.
|
|
43
|
+
|
|
44
|
+
---
|
|
45
|
+
|
|
46
|
+
## Ciclo Completo (11 etapas)
|
|
47
|
+
|
|
48
|
+
### 1. Carregamento de Contexto (CORE)
|
|
49
|
+
- INDEX.md, CONTRACT.md, ROUTER.md
|
|
50
|
+
- rules/dont.md, rules/behavior.md
|
|
51
|
+
- memory/project-context.md
|
|
52
|
+
- Emitir tag `OS:loaded(...)`
|
|
53
|
+
|
|
54
|
+
### 2. Análise da Tarefa
|
|
55
|
+
- Identificar triggers do ROUTER.
|
|
56
|
+
- Verificar `memory/known-issues.md` e `memory/errors-and-solutions.md` se for bug.
|
|
57
|
+
- Classificar (trivial/simple/complex).
|
|
58
|
+
|
|
59
|
+
### 3. Carregamento Sob Demanda (CONDITIONAL)
|
|
60
|
+
- Aplicar rotas do ROUTER.md.
|
|
61
|
+
- Listar arquivos carregados.
|
|
62
|
+
|
|
63
|
+
### 4. Validação de Premissas
|
|
64
|
+
- Listar suposições.
|
|
65
|
+
- Verificar cada uma (ler código, rodar comando, perguntar).
|
|
66
|
+
- Não codar sobre suposição não verificada.
|
|
67
|
+
|
|
68
|
+
### 5. Planejamento
|
|
69
|
+
- Passos atômicos + critério de verificação.
|
|
70
|
+
- Para complex: registrar plano para confirmação.
|
|
71
|
+
|
|
72
|
+
### 6. Confirmação (se aplicável)
|
|
73
|
+
- Ação destrutiva → pedir confirmação.
|
|
74
|
+
- Decisão arquitetural → propor ADR antes de executar.
|
|
75
|
+
- Ambiguidade → perguntar.
|
|
76
|
+
|
|
77
|
+
### 7. Execução
|
|
78
|
+
- Menor mudança possível por iteração.
|
|
79
|
+
- Edit > Write.
|
|
80
|
+
- Manter validações verdes entre passos.
|
|
81
|
+
|
|
82
|
+
### 8. Validação
|
|
83
|
+
- Lint, type-check, testes relacionados.
|
|
84
|
+
- Smoke-test manual se UI/runtime.
|
|
85
|
+
|
|
86
|
+
### 9. Registro em Memory
|
|
87
|
+
- `completed-tasks.md` ← entrada com data + arquivos.
|
|
88
|
+
- `decisions.md` ← ADR se houve escolha arquitetural.
|
|
89
|
+
- `errors-and-solutions.md` ← se debugou e corrigiu.
|
|
90
|
+
- `pending-tasks.md` ← remover item se aplicável.
|
|
91
|
+
|
|
92
|
+
### 10. Evolution (raro)
|
|
93
|
+
- Atualizar SOMENTE se ≥3 ocorrências OU validação explícita do usuário.
|
|
94
|
+
|
|
95
|
+
### 11. Audit
|
|
96
|
+
- Emitir bloco `[OS Audit]` conforme `CONTRACT.md`.
|
|
97
|
+
|
|
98
|
+
---
|
|
99
|
+
|
|
100
|
+
## Critério de "Concluído"
|
|
101
|
+
|
|
102
|
+
Tarefa não-trivial só é concluída quando:
|
|
103
|
+
- [ ] Validações passaram (lint + types + testes)
|
|
104
|
+
- [ ] Memory atualizada
|
|
105
|
+
- [ ] `OS:loaded` e `[OS Audit]` presentes na resposta
|
|
106
|
+
- [ ] Incompletudes declaradas explicitamente
|
|
107
|
+
|
|
108
|
+
---
|
|
109
|
+
|
|
110
|
+
## Atalhos Permitidos
|
|
111
|
+
|
|
112
|
+
- **Trivial**: pular 2-7, 9, 10. Manter 1 (tag) + resposta + nota de skip.
|
|
113
|
+
- **Simple**: pular 5 (plano formal) se óbvio; pular 6 (confirmação) se sem risco.
|
|
114
|
+
- **Complex**: nenhum atalho.
|
|
115
|
+
|
|
116
|
+
Em dúvida, escalar para o nível superior.
|
|
117
|
+
|
|
118
|
+
---
|
|
119
|
+
|
|
120
|
+
## Anti-padrões
|
|
121
|
+
|
|
122
|
+
- Pular direto para etapa 7 sem 1-5 → retrabalho e alucinação.
|
|
123
|
+
- Declarar concluído sem rodar validação.
|
|
124
|
+
- Atualizar evolution com base em um sucesso → contamina o OS.
|
|
125
|
+
- Classificar como trivial para "ganhar tempo" tarefa que toca produção.
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
---
|
|
2
|
+
version: 1.0.0
|
|
3
|
+
updated: 2026-05-16
|
|
4
|
+
tier: conditional
|
|
5
|
+
tokens: ~350
|
|
6
|
+
load: structure, constraints, lint, drift, refactor
|
|
7
|
+
triggers: limite, constraint, refactor, drift estrutural, complexidade
|
|
8
|
+
related:
|
|
9
|
+
- ADR-0010
|
|
10
|
+
- .ai/rules/structure-canon.md
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# Structural Constraints — Limites Operacionais Quantitativos
|
|
14
|
+
|
|
15
|
+
> Heurísticas numéricas para detectar degradação estrutural. Não são proibições — são **alertas**. Drift detection futura pode reportar violação como warning.
|
|
16
|
+
|
|
17
|
+
## Defaults razoáveis
|
|
18
|
+
|
|
19
|
+
| Constraint | Default | Por quê |
|
|
20
|
+
|---|---|---|
|
|
21
|
+
| `max_module_dependencies` | 5 | Módulo com 6+ deps perdeu coesão; provável refatoração |
|
|
22
|
+
| `max_file_lines` | 500 | Arquivo > 500 linhas é difícil de carregar em contexto LLM e geralmente faz coisa demais |
|
|
23
|
+
| `max_folder_depth` | 4 | Mais que 4 níveis de aninhamento esconde estrutura |
|
|
24
|
+
| `max_modules_before_split` | 20 | Quando services/ atinge 20 módulos, considerar quebrar em packages independentes |
|
|
25
|
+
| `min_module_docs` | README.md + index.ts | Sem README ou index, IA não navega; humano se perde |
|
|
26
|
+
|
|
27
|
+
## Forbidden patterns
|
|
28
|
+
|
|
29
|
+
- **Circular module deps**: `tracking → billing → tracking` quebra modular monolith.
|
|
30
|
+
- **Cross-module DB access**: módulo A consulta tabela do módulo B diretamente. Use API pública.
|
|
31
|
+
- **Global singletons** (registry global, service locator, etc.) — viola boundaries.
|
|
32
|
+
- **God modules**: módulo único com >15 arquivos públicos diferentes.
|
|
33
|
+
- **Pastas-lixeira**: `misc/`, `helpers/`, `utils/` (no root), `common/` (sem domínio claro).
|
|
34
|
+
|
|
35
|
+
## Required patterns
|
|
36
|
+
|
|
37
|
+
- `index.ts` (ou equivalente) em cada módulo de domínio.
|
|
38
|
+
- `README.md` em cada módulo de domínio (1 parágrafo OK).
|
|
39
|
+
- `contracts/` ou tipos compartilhados em `packages/contracts/` para APIs cross-module.
|
|
40
|
+
- Tests dentro do módulo OU em `tests/` espelhando a estrutura.
|
|
41
|
+
|
|
42
|
+
## Evolution triggers
|
|
43
|
+
|
|
44
|
+
| Sinal | Ação sugerida |
|
|
45
|
+
|---|---|
|
|
46
|
+
| `modules > 20` em um diretório | split em packages/ ou services/ |
|
|
47
|
+
| Módulo único com `>15` arquivos públicos | quebrar em sub-módulos |
|
|
48
|
+
| Mesma dependência repetida em `>5` módulos | extrair para `packages/` |
|
|
49
|
+
| File com `>500` linhas | quebrar; ver se faz coisa demais |
|
|
50
|
+
| Ciclo entre 3+ módulos | introduzir eventos ou contract intermediário |
|
|
51
|
+
|
|
52
|
+
## Overrides por projeto
|
|
53
|
+
|
|
54
|
+
Customize criando `.ai/rules/structural-constraints.local.md` (não rastreado pelo manifest) com diffs do default.
|
|
55
|
+
|
|
56
|
+
## Referências
|
|
57
|
+
|
|
58
|
+
- ADR-0010 (decisão)
|
|
59
|
+
- `.ai/rules/structure-canon.md` (princípios qualitativos)
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
---
|
|
2
|
+
version: 1.0.0
|
|
3
|
+
updated: 2026-05-16
|
|
4
|
+
tier: conditional
|
|
5
|
+
tokens: ~700
|
|
6
|
+
load: structure, architecture, blueprint, canon, organize
|
|
7
|
+
triggers: estrutura, arquitetura, organize, organizar, blueprint, structure, refactor estrutural
|
|
8
|
+
related:
|
|
9
|
+
- ADR-0010
|
|
10
|
+
- .ai/rules/structural-constraints.md
|
|
11
|
+
- .ai/blueprints/
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
# Structure Canon — Princípios Estruturais Universais
|
|
15
|
+
|
|
16
|
+
> Princípios inquebráveis sobre como **organizar** código (e o `.ai/` do projeto). Aplicam-se a qualquer projeto, qualquer stack. Conflitos resolvidos a favor destes princípios, salvo override explícito do usuário (rule de hierarquia padrão).
|
|
17
|
+
|
|
18
|
+
## Filosofia
|
|
19
|
+
|
|
20
|
+
> Estruture por **domínio + responsabilidade + runtime**, não por tipo de arquivo, framework ou tecnologia.
|
|
21
|
+
|
|
22
|
+
A estrutura é o primeiro contrato com o futuro: humanos e IA navegam o código baseados nela. Estrutura ruim destrói projetos mais rápido que código ruim.
|
|
23
|
+
|
|
24
|
+
## 7 princípios
|
|
25
|
+
|
|
26
|
+
### 1. Domain-first (Vertical Slice + Modular Monolith)
|
|
27
|
+
|
|
28
|
+
❌ **Errado**: `controllers/ services/ models/` (organização por tipo de arquivo).
|
|
29
|
+
✓ **Correto**: `tracking/ telemetry/ billing/ auth/` (organização por bounded context).
|
|
30
|
+
|
|
31
|
+
Cada módulo de domínio é **self-contained**:
|
|
32
|
+
```
|
|
33
|
+
tracking/
|
|
34
|
+
├── application/ # use cases, handlers, orchestration
|
|
35
|
+
├── domain/ # entidades, value objects, regras de negócio puras
|
|
36
|
+
├── infrastructure/ # adapters (db, http, queues)
|
|
37
|
+
├── contracts/ # types/interfaces expostos (API pública)
|
|
38
|
+
├── events/ # events emitidos/consumidos
|
|
39
|
+
├── validators/ # schemas/validações
|
|
40
|
+
├── tests/ # testes (unit + integration próprios)
|
|
41
|
+
├── docs/ # README + ADRs locais (opcional)
|
|
42
|
+
└── index.ts # API pública re-exporta de contracts/
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
Módulo pode escolher sua própria arquitetura interna (camadas, CQRS, event-sourcing, etc.) — não há "uma forma" obrigatória dentro do módulo.
|
|
46
|
+
|
|
47
|
+
### 2. Boundaries explícitos
|
|
48
|
+
|
|
49
|
+
- Módulo A **não pode** importar diretamente de internals de Módulo B.
|
|
50
|
+
- Conversa entre módulos só via **API pública** (`contracts/` ou `index.ts`).
|
|
51
|
+
- Banco/storage do módulo **não é acessado** por outro módulo (sem cross-table queries cruzando domínios).
|
|
52
|
+
- Eventos (pub/sub) são forma idiomática de desacoplar.
|
|
53
|
+
|
|
54
|
+
### 3. No global utils
|
|
55
|
+
|
|
56
|
+
❌ `utils/`, `helpers/`, `lib/`, `misc/` no root — viram lixeira semântica.
|
|
57
|
+
✓ Helpers vivem em:
|
|
58
|
+
- `packages/utils/` (com tipos, testes, versão própria) — para reuso cross-app/service.
|
|
59
|
+
- Dentro do próprio módulo de domínio — para utilities locais.
|
|
60
|
+
|
|
61
|
+
### 4. AI-navigable
|
|
62
|
+
|
|
63
|
+
Cada módulo de domínio tem:
|
|
64
|
+
- `README.md` curto (1 parágrafo: o que faz, quais módulos depende, qual evento emite).
|
|
65
|
+
- `index.ts` (ou `__init__.py`, etc.) re-exportando explicitamente a API pública.
|
|
66
|
+
- Comentários no topo de arquivos críticos descrevendo intent.
|
|
67
|
+
|
|
68
|
+
Isso permite que IA navegue por descoberta semântica, não por full-text grep.
|
|
69
|
+
|
|
70
|
+
### 5. Contracts required
|
|
71
|
+
|
|
72
|
+
APIs entre módulos têm types compartilhados em `packages/contracts/` (TypeScript) ou equivalente. Mudança em contract → versionada (semver) ou via ADR se for breaking.
|
|
73
|
+
|
|
74
|
+
### 6. Evolutionary, não Big Bang
|
|
75
|
+
|
|
76
|
+
Projeto **não nasce** com 50 pastas. Estrutura cresce conforme módulos surgem.
|
|
77
|
+
- Fase 1: `apps/web + services/api + packages/shared`.
|
|
78
|
+
- Quando vira saas: `+ billing/ tenancy/ permissions/`.
|
|
79
|
+
- Quando vira platform: `+ events/ pipelines/ ai-runtime/`.
|
|
80
|
+
|
|
81
|
+
`aios_compose_structure(types)` retorna **fragmentos** a aplicar — não cobra adoção total.
|
|
82
|
+
|
|
83
|
+
### 7. AI-native monorepo (2026 consensus)
|
|
84
|
+
|
|
85
|
+
Root canônico recomendado:
|
|
86
|
+
```
|
|
87
|
+
project/
|
|
88
|
+
├── apps/ # interfaces executáveis (web, mobile, admin, docs)
|
|
89
|
+
├── services/ # backends/runtimes (api, telemetry, auth, ai-runtime)
|
|
90
|
+
├── packages/ # código compartilhado (ui, contracts, sdk, types, utils)
|
|
91
|
+
├── infrastructure/ # IaC + ops (docker, k8s, terraform, monitoring, ci)
|
|
92
|
+
├── data/ # schemas, migrations, seeds, fixtures, snapshots
|
|
93
|
+
├── integrations/ # adapters de provedores externos
|
|
94
|
+
├── workflows/ # fluxos operacionais (ingestion, alerts, billing)
|
|
95
|
+
├── tooling/ # generators, analyzers, validators, codemods, cli
|
|
96
|
+
├── tests/ # e2e + integration cross-app/service
|
|
97
|
+
├── docs/ # docs humanos
|
|
98
|
+
├── .ai/ # AI Operating System
|
|
99
|
+
└── AGENTS.md / CLAUDE.md / GEMINI.md # entry points
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
Cada IDE/agente recebe instruções **por-path** (não defaults globais).
|
|
103
|
+
|
|
104
|
+
## Quando violar
|
|
105
|
+
|
|
106
|
+
Quando o usuário pede explicitamente. **Declarar o desvio na resposta**:
|
|
107
|
+
> Note: violando canon §1 (domain-first) por instrução direta — usando `controllers/` para compatibilidade com framework X.
|
|
108
|
+
|
|
109
|
+
Conflito com `dont.md` sempre perde para `dont.md`.
|
|
110
|
+
|
|
111
|
+
## Referências
|
|
112
|
+
|
|
113
|
+
- ADR-0010 (decisão)
|
|
114
|
+
- `.ai/rules/structural-constraints.md` (limites operacionais quantitativos)
|
|
115
|
+
- `.ai/blueprints/*.json` (fragmentos por tipo de projeto)
|
|
116
|
+
- Pesquisa: Milan Jovanović "Vertical Slices Inside Modular Monolith" (milanjovanovic.tech); kgrzybek "modular-monolith-with-ddd" (github); 2026 monorepo AI consensus (d4b.dev, spectrocloud.com)
|
package/ai/runtime.md
ADDED
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
---
|
|
2
|
+
version: 2.0.0
|
|
3
|
+
updated: 2026-05-16
|
|
4
|
+
tier: conditional
|
|
5
|
+
tokens: ~900
|
|
6
|
+
load: runtime, daemon, mcp, slash_commands, workflows
|
|
7
|
+
triggers: daemon, mcp, server, runtime, slash, comando, workflow, /init, /sync, /work, orchestrator
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Runtime — Daemon AI OS + Slash Commands
|
|
11
|
+
|
|
12
|
+
> Camada de execução do AI OS. Funciona em qualquer IDE/cliente (Claude Code, VSCode, Cursor, Windsurf, TRAE AI, Antigravity) ou CLI puro.
|
|
13
|
+
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
## TL;DR
|
|
17
|
+
|
|
18
|
+
- **Daemon = MCP server** em Node.js puro, `server/aios-server.mjs`.
|
|
19
|
+
- **Stdio por padrão** (sem porta, sem conflito).
|
|
20
|
+
- **HTTP opcional** na porta `47781` com auto-fallback (47782, 47783, ...) se ocupada.
|
|
21
|
+
- **Slash commands** em `.claude/commands/` disponíveis para Claude Code; em outros clientes, invocar manualmente o procedimento.
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
## Iniciar o daemon
|
|
26
|
+
|
|
27
|
+
### Windows
|
|
28
|
+
```powershell
|
|
29
|
+
.\scripts\start-os.ps1 # MCP stdio (foreground, conectável por cliente MCP)
|
|
30
|
+
.\scripts\start-os.ps1 -Http # HTTP background, porta 47781
|
|
31
|
+
.\scripts\start-os.ps1 -Status # ver se está rodando
|
|
32
|
+
.\scripts\start-os.ps1 -Stop
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
### macOS / Linux
|
|
36
|
+
```bash
|
|
37
|
+
chmod +x scripts/*.sh # primeira vez
|
|
38
|
+
./scripts/start-os.sh # MCP stdio (foreground)
|
|
39
|
+
./scripts/start-os.sh --http # HTTP background
|
|
40
|
+
./scripts/start-os.sh --status
|
|
41
|
+
./scripts/start-os.sh --stop
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
### Direto (qualquer plataforma)
|
|
45
|
+
```
|
|
46
|
+
node server/aios-server.mjs # stdio
|
|
47
|
+
node server/aios-server.mjs --http # HTTP 47781 (auto-fallback)
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
---
|
|
51
|
+
|
|
52
|
+
## Conectar a partir de cada cliente
|
|
53
|
+
|
|
54
|
+
### Claude Code
|
|
55
|
+
Já configurado em `.claude/settings.json` (`mcpServers.ai-os`). Reinicie o Claude Code após adicionar.
|
|
56
|
+
Verifique: `aios_health` deve aparecer como ferramenta disponível.
|
|
57
|
+
|
|
58
|
+
### VSCode (com Cline / Claude Dev / Continue)
|
|
59
|
+
Adicione ao seu `settings.json` (workspace ou user):
|
|
60
|
+
```json
|
|
61
|
+
"cline.mcpServers": {
|
|
62
|
+
"ai-os": {
|
|
63
|
+
"command": "node",
|
|
64
|
+
"args": ["${workspaceFolder}/server/aios-server.mjs"]
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
### Cursor
|
|
70
|
+
`File > Preferences > MCP > Add Server`:
|
|
71
|
+
- Command: `node`
|
|
72
|
+
- Args: `<project>/server/aios-server.mjs`
|
|
73
|
+
|
|
74
|
+
### Windsurf / TRAE AI / Antigravity
|
|
75
|
+
Mesma config genérica de MCP via stdio. Consulte docs do IDE para o caminho exato do config.
|
|
76
|
+
|
|
77
|
+
### CLI / scripts próprios
|
|
78
|
+
HTTP mode é o mais fácil:
|
|
79
|
+
```bash
|
|
80
|
+
./scripts/start-os.sh --http
|
|
81
|
+
curl http://127.0.0.1:47781/health
|
|
82
|
+
curl http://127.0.0.1:47781/tools
|
|
83
|
+
curl -X POST http://127.0.0.1:47781/rpc \
|
|
84
|
+
-H "Content-Type: application/json" \
|
|
85
|
+
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"aios_route_query","arguments":{"query":"corrige um bug no login"}}}'
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
---
|
|
89
|
+
|
|
90
|
+
## Runtime Orchestrator (ADR-0004 / ADR-0005)
|
|
91
|
+
|
|
92
|
+
A partir de 2026-05-16, o AI OS adotou um **Workflow Engine** que orquestra tools primitivas em sequências determinísticas. Os 8 slash commands granulares antigos (`/analyze`, `/audit`, `/context`, `/snapshot`, `/load-os`, `/os-status`, `/compact-memory`, `/promote-learning`) foram aposentados e substituídos por **3 commands consolidados**.
|
|
93
|
+
|
|
94
|
+
### Workflows disponíveis (`.ai/workflows/<name>.json`)
|
|
95
|
+
|
|
96
|
+
| Workflow | Steps (resumo) | Quando usar |
|
|
97
|
+
|---|---|---|
|
|
98
|
+
| `init` | detect_stack → analyze_project → build_context_package → snapshot baseline → load CORE | Projeto novo, primeira sessão, reset deliberado |
|
|
99
|
+
| `sync` | detect_stack → analyze_project → rebuild context → lint → snapshot incremental | Após bloco de desenvolvimento, periodicamente |
|
|
100
|
+
| `work` (MVP) | classify_task → route_query → load CORE → search_memory → focused context | Qualquer tarefa nova |
|
|
101
|
+
|
|
102
|
+
Executar via tool MCP:
|
|
103
|
+
```
|
|
104
|
+
aios_run_workflow({ name: "sync", input: { label: "pre-refactor" } })
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
Listar disponíveis: `aios_list_workflows()`.
|
|
108
|
+
|
|
109
|
+
---
|
|
110
|
+
|
|
111
|
+
## Tools expostas (aios_*)
|
|
112
|
+
|
|
113
|
+
### Camada Orchestrator (ADR-0005)
|
|
114
|
+
| Tool | Função |
|
|
115
|
+
|---|---|
|
|
116
|
+
| `aios_run_workflow` | Executa workflow declarativo `.ai/workflows/<name>.json` |
|
|
117
|
+
| `aios_list_workflows` | Lista workflows disponíveis |
|
|
118
|
+
|
|
119
|
+
### Primitivas base (12)
|
|
120
|
+
| Tool | Função | Uso típico |
|
|
121
|
+
|---|---|---|
|
|
122
|
+
| `aios_get_core_bundle` | Retorna CORE em 1 call (em vez de 6 reads) | step de workflow / início de sessão |
|
|
123
|
+
| `aios_route_query` | Query → lista determinística de arquivos | step de workflow `work` |
|
|
124
|
+
| `aios_classify_task` | Query → trivial/simple/complex | step de workflow `work` |
|
|
125
|
+
| `aios_read` | Lê arquivo `.ai/` ou entry point | ad-hoc |
|
|
126
|
+
| `aios_list` | Lista diretório do `.ai/` | exploração |
|
|
127
|
+
| `aios_search_memory` | Grep em `.ai/memory/` | step de workflow `work` |
|
|
128
|
+
| `aios_get_summary` | `.ai/memory/_summary.md` | ad-hoc |
|
|
129
|
+
| `aios_get_manifest` | `.ai/manifest.json` | introspecção |
|
|
130
|
+
| `aios_lint` | Roda lint do OS | step de workflow `sync` |
|
|
131
|
+
| `aios_detect_stack` | Detecta stack | step de workflow `init`/`sync` |
|
|
132
|
+
| `aios_validate_audit` | Valida formato `[OS Audit]` | self-check |
|
|
133
|
+
| `aios_health` | Status do daemon | troubleshooting |
|
|
134
|
+
|
|
135
|
+
### Runtime v0.1 (5 — ADR-0002)
|
|
136
|
+
| Tool | Função |
|
|
137
|
+
|---|---|
|
|
138
|
+
| `aios_analyze_project` | Project State Engine (AST + grafo + smells) |
|
|
139
|
+
| `aios_build_context_package` | Context Packager (compressão semântica) |
|
|
140
|
+
| `aios_snapshot` | Snapshot do estado + hashes + memory |
|
|
141
|
+
| `aios_snapshot_list` | Lista snapshots |
|
|
142
|
+
| `aios_snapshot_diff` | Diff entre dois snapshots |
|
|
143
|
+
|
|
144
|
+
---
|
|
145
|
+
|
|
146
|
+
## Slash Commands (Claude Code)
|
|
147
|
+
|
|
148
|
+
Disponíveis em `.claude/commands/`. Em outros clientes (Cursor, Windsurf, Cline, TRAE, Antigravity), use `aios_run_workflow` diretamente via linguagem natural — ver `.ai/clients/<ide>.md`.
|
|
149
|
+
|
|
150
|
+
| Comando | Workflow chamado | Função |
|
|
151
|
+
|---|---|---|
|
|
152
|
+
| `/init` | `init.json` | Inicializa conhecimento do projeto |
|
|
153
|
+
| `/sync` | `sync.json` | Sincroniza estado após desenvolvimento |
|
|
154
|
+
| `/work <intent>` | `work.json` (com input.intent) | Executa tarefa guiada por intent |
|
|
155
|
+
|
|
156
|
+
---
|
|
157
|
+
|
|
158
|
+
## Filosofia da camada runtime
|
|
159
|
+
|
|
160
|
+
- **Stdio MCP** é o transport canônico (sem conflito de porta, livre de firewall).
|
|
161
|
+
- **HTTP** existe para CLI/scripts e debug — porta `47781` (memorável, raramente ocupada).
|
|
162
|
+
- **Auto-fallback** de porta evita o famoso "EADDRINUSE".
|
|
163
|
+
- **PID file** em `.ai/.runtime/daemon.pid` para gestão simples (start/status/stop).
|
|
164
|
+
- **Zero deps** no Node — roda em qualquer ambiente com Node ≥ 18. Sem `npm install`.
|
|
165
|
+
|
|
166
|
+
---
|
|
167
|
+
|
|
168
|
+
## Onboarding em 30 segundos
|
|
169
|
+
|
|
170
|
+
```bash
|
|
171
|
+
# 1. Aplica o OS ao projeto (novo ou existente)
|
|
172
|
+
./scripts/init-ai-os.sh # auto-detecta
|
|
173
|
+
|
|
174
|
+
# 2. Inicia o daemon em background
|
|
175
|
+
./scripts/start-os.sh --http
|
|
176
|
+
|
|
177
|
+
# 3. Abre seu IDE preferido (Claude Code, VSCode, Cursor, ...)
|
|
178
|
+
# 4. A IA já tem acesso ao OS via tools aios_*
|
|
179
|
+
```
|