oxe-cc 1.6.0 → 1.7.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 +18 -0
- package/README.md +5 -3
- package/bin/lib/oxe-agent-install.cjs +125 -24
- package/bin/lib/oxe-release.cjs +1 -0
- package/bin/oxe-cc.js +87 -39
- package/commands/oxe/debug.md +6 -1
- package/commands/oxe/discuss.md +7 -2
- package/commands/oxe/execute.md +7 -2
- package/commands/oxe/plan-agent.md +7 -2
- package/commands/oxe/plan.md +7 -2
- package/commands/oxe/scan.md +6 -1
- package/commands/oxe/spec.md +6 -1
- package/commands/oxe/verify.md +6 -1
- package/docs/CONTENT-MIGRATION-AUDIT.md +49 -0
- package/docs/RUNTIME-SMOKE-MATRIX.md +1 -1
- package/lib/runtime/compiler/graph-compiler.js +32 -0
- package/lib/runtime/context/context-pack-builder.d.ts +15 -0
- package/lib/runtime/context/context-pack-builder.js +78 -0
- package/lib/runtime/events/catalog.d.ts +1 -1
- package/lib/runtime/events/catalog.js +5 -0
- package/lib/runtime/executor/action-tool-map.d.ts +3 -0
- package/lib/runtime/executor/action-tool-map.js +41 -0
- package/lib/runtime/executor/built-in-tools.d.ts +8 -0
- package/lib/runtime/executor/built-in-tools.js +267 -0
- package/lib/runtime/executor/index.d.ts +6 -0
- package/lib/runtime/executor/index.js +12 -0
- package/lib/runtime/executor/llm-task-executor.d.ts +29 -0
- package/lib/runtime/executor/llm-task-executor.js +138 -0
- package/lib/runtime/executor/node-prompt-builder.d.ts +3 -0
- package/lib/runtime/executor/node-prompt-builder.js +36 -0
- package/lib/runtime/executor/stream-completion.d.ts +38 -0
- package/lib/runtime/executor/stream-completion.js +105 -0
- package/lib/runtime/index.d.ts +1 -0
- package/lib/runtime/index.js +2 -0
- package/lib/runtime/models/failure.d.ts +5 -0
- package/lib/runtime/models/failure.js +2 -0
- package/lib/runtime/plugins/capability-adapter.d.ts +9 -0
- package/lib/runtime/plugins/capability-adapter.js +111 -8
- package/lib/runtime/plugins/plugin-abi.d.ts +8 -0
- package/lib/runtime/plugins/plugin-registry.d.ts +2 -1
- package/lib/runtime/plugins/plugin-registry.js +6 -1
- package/lib/runtime/reducers/run-state-reducer.js +39 -2
- package/lib/runtime/scheduler/scheduler.d.ts +14 -2
- package/lib/runtime/scheduler/scheduler.js +131 -11
- package/lib/runtime/verification/verification-manifest.d.ts +5 -2
- package/oxe/agents/oxe-assumptions-analyzer.md +136 -0
- package/oxe/agents/oxe-codebase-mapper.md +142 -0
- package/oxe/agents/oxe-debugger.md +145 -0
- package/oxe/agents/oxe-executor.md +139 -0
- package/oxe/agents/oxe-integration-checker.md +142 -0
- package/oxe/agents/oxe-plan-checker.md +143 -0
- package/oxe/agents/oxe-planner.md +151 -0
- package/oxe/agents/oxe-research-synthesizer.md +146 -0
- package/oxe/agents/oxe-researcher.md +163 -0
- package/oxe/agents/oxe-ui-auditor.md +151 -0
- package/oxe/agents/oxe-ui-checker.md +157 -0
- package/oxe/agents/oxe-ui-researcher.md +179 -0
- package/oxe/agents/oxe-validation-auditor.md +154 -0
- package/oxe/agents/oxe-verifier.md +132 -0
- package/oxe/personas/README.md +91 -39
- package/oxe/personas/architect.md +149 -37
- package/oxe/personas/db-specialist.md +149 -36
- package/oxe/personas/debugger.md +155 -38
- package/oxe/personas/executor.md +164 -38
- package/oxe/personas/planner.md +165 -36
- package/oxe/personas/researcher.md +148 -35
- package/oxe/personas/ui-specialist.md +164 -36
- package/oxe/personas/verifier.md +174 -39
- package/oxe/templates/FIXTURE-PACK.template.json +18 -11
- package/oxe/templates/FIXTURE-PACK.template.md +19 -10
- package/oxe/templates/IMPLEMENTATION-PACK.template.json +26 -10
- package/oxe/templates/IMPLEMENTATION-PACK.template.md +32 -20
- package/oxe/templates/PLAN.template.md +62 -31
- package/oxe/templates/REFERENCE-ANCHORS.template.md +14 -10
- package/oxe/templates/SUMMARY.template.md +50 -20
- package/oxe/workflows/debug.md +9 -7
- package/oxe/workflows/execute.md +11 -8
- package/oxe/workflows/forensics.md +5 -3
- package/oxe/workflows/plan.md +277 -0
- package/oxe/workflows/scan.md +355 -69
- package/oxe/workflows/spec.md +302 -9
- package/oxe/workflows/ui-review.md +5 -4
- package/oxe/workflows/ui-spec.md +4 -3
- package/oxe/workflows/verify.md +8 -5
- package/package.json +1 -1
- package/packages/runtime/package.json +1 -1
- package/packages/runtime/src/compiler/graph-compiler.ts +40 -0
- package/packages/runtime/src/context/context-pack-builder.ts +80 -0
- package/packages/runtime/src/events/catalog.ts +5 -0
- package/packages/runtime/src/executor/action-tool-map.ts +46 -0
- package/packages/runtime/src/executor/built-in-tools.ts +276 -0
- package/packages/runtime/src/executor/index.ts +6 -0
- package/packages/runtime/src/executor/llm-task-executor.ts +194 -0
- package/packages/runtime/src/executor/node-prompt-builder.ts +45 -0
- package/packages/runtime/src/executor/stream-completion.ts +145 -0
- package/packages/runtime/src/index.ts +3 -0
- package/packages/runtime/src/models/failure.ts +11 -0
- package/packages/runtime/src/plugins/capability-adapter.ts +117 -10
- package/packages/runtime/src/plugins/plugin-abi.ts +9 -0
- package/packages/runtime/src/plugins/plugin-registry.ts +10 -1
- package/packages/runtime/src/reducers/run-state-reducer.ts +59 -2
- package/packages/runtime/src/scheduler/scheduler.ts +152 -14
- package/packages/runtime/src/verification/verification-manifest.ts +12 -8
- package/vscode-extension/oxe-agents-1.7.0.vsix +0 -0
- package/vscode-extension/package.json +1 -1
package/oxe/workflows/scan.md
CHANGED
|
@@ -1,69 +1,355 @@
|
|
|
1
|
-
# OXE — Workflow: scan
|
|
2
|
-
|
|
3
|
-
>
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
**
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
-
|
|
17
|
-
-
|
|
18
|
-
-
|
|
19
|
-
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
1
|
+
# OXE — Workflow: scan
|
|
2
|
+
|
|
3
|
+
<objective>
|
|
4
|
+
Analisar o codebase e produzir documentação **estruturada, densa e navegável** em `.oxe/codebase/`, atualizando `.oxe/STATE.md`.
|
|
5
|
+
|
|
6
|
+
**Meta:** os sete documentos produzidos devem ser tão informativos que um agente novo — humano ou `LlmTaskExecutor` — consiga formular tarefas precisas e executar mudanças corretas sem abrir código-fonte adicional nos casos comuns.
|
|
7
|
+
|
|
8
|
+
**Foco opcional:** se o usuário indicar uma área (ex.: `api`, `auth`), priorizar essa pasta ou módulo nos mapeamentos. Produzir os sete documentos mesmo com foco, mas com detalhe reduzido nas demais áreas — mencionando que existem.
|
|
9
|
+
|
|
10
|
+
Se **`.oxe/config.json`** tiver `scan_focus_globs` ou `scan_ignore_globs`, **priorizar** os caminhos do foco e **reduzir detalhe** nas áreas ignoradas — ainda assim mencioná-las com path e propósito resumido.
|
|
11
|
+
</objective>
|
|
12
|
+
|
|
13
|
+
<context>
|
|
14
|
+
- Diretório de saída: **`.oxe/`** na raiz do projeto. Criar se não existir.
|
|
15
|
+
- Carregar `oxe/templates/STATE.md` como base se `STATE.md` ainda não existir; se existir, preservar histórico e atualizar **Último scan** (campo **Data:** em formato ISO **YYYY-MM-DD**) e **Fase**.
|
|
16
|
+
- Se existir **`.oxe/config.json`**, respeitar `scan_focus_globs`, `scan_ignore_globs`, `scan_max_age_days`, `scale_adaptive`, `profile`. **Não** sobrescrever o arquivo no scan.
|
|
17
|
+
- Não apagar `SPEC.md` / `PLAN.md` se já existirem — apenas atualizar o codebase.
|
|
18
|
+
- Entre scans completos, **`compact.md`** (`/oxe-compact`) pode **atualizar incrementalmente** os mesmos sete ficheiros comparando-os ao repo atual e registar mudanças em **`CODEBASE-DELTA.md`**.
|
|
19
|
+
- **Prioridade de leitura de contexto:** carregar `.oxe/context/packs/scan.md` e `.oxe/context/packs/scan.json` **antes** de qualquer Glob/Grep abrangente. Se o pack existir e estiver fresco, usá-lo como mapa primário e reduzir leituras adicionais. Se stale, ausente ou incompleto, fazer fallback explícito para leitura direta e registrar o motivo.
|
|
20
|
+
</context>
|
|
21
|
+
|
|
22
|
+
<mode_detection>
|
|
23
|
+
## Detecção automática de modo: bootstrap vs refresh
|
|
24
|
+
|
|
25
|
+
Antes de iniciar, verificar se `.oxe/codebase/` já existe com os sete mapas:
|
|
26
|
+
|
|
27
|
+
- **Modo bootstrap** (padrão quando codebase/ não existe ou está incompleto): produzir os sete arquivos do zero.
|
|
28
|
+
- **Modo refresh** (quando codebase/ existe e tem os sete mapas): executar lógica de `oxe/workflows/compact.md` — comparar mapas ao repo atual, atualizar incrementalmente, produzir `CODEBASE-DELTA.md` e `RESUME.md`. **Não refazer do zero.**
|
|
29
|
+
|
|
30
|
+
**Flags:**
|
|
31
|
+
- `--full`: forçar modo bootstrap mesmo se codebase/ existir.
|
|
32
|
+
- `--refresh`: forçar modo refresh.
|
|
33
|
+
- **Sem flag:** automático. Se mapas existem e o último scan foi há menos de `scan_max_age_days` (default: 7 dias), sugerir refresh e perguntar antes de executar scan completo.
|
|
34
|
+
|
|
35
|
+
**Staleness check:** se `STATE.md` tiver `scan_date` e a diferença para hoje superar `scan_max_age_days`, alertar que os mapas podem estar desatualizados antes de usá-los como base para plan/spec.
|
|
36
|
+
</mode_detection>
|
|
37
|
+
|
|
38
|
+
<architectural_detection>
|
|
39
|
+
## Detecção de padrão arquitetural
|
|
40
|
+
|
|
41
|
+
Antes de produzir os documentos, classificar o padrão arquitetural dominante. Isso calibra o nível de detalhe e as seções prioritárias em cada documento.
|
|
42
|
+
|
|
43
|
+
### Padrões e sinais
|
|
44
|
+
|
|
45
|
+
| Padrão | Sinais principais |
|
|
46
|
+
|--------|------------------|
|
|
47
|
+
| **Monolito MVC** | Único `main.*` na raiz de `src/`; pastas `controllers/`, `services/`, `repositories/`, `models/`; único manifest de build |
|
|
48
|
+
| **Microserviços** | Múltiplos `package.json`/`pom.xml` em subpastas de serviço; `docker-compose.yml` com múltiplos serviços; pastas `services/<nome>/` com entrypoint próprio |
|
|
49
|
+
| **Monorepo** | `packages/<nome>/` com build independente; `turbo.json`, `nx.json`, `lerna.json`, `pnpm-workspace.yaml` |
|
|
50
|
+
| **DDD / Camadas** | Pastas `domain/`, `application/`, `infrastructure/`, `presentation/`; entities, value objects, aggregates separados de implementações |
|
|
51
|
+
| **CQRS** | Pastas `commands/` e `queries/` separadas; padrão `*Command.ts`/`*Query.ts` + `*Handler.ts`; bus de comandos/eventos |
|
|
52
|
+
| **Hexagonal / Clean** | Pastas `adapters/`, `ports/`, `core/`; inversão de dependência; interfaces no core, implementações em adapters |
|
|
53
|
+
| **Event-driven** | SDKs de broker (`kafka`, `rabbitmq`, `@azure/service-bus`, `sqs`, `celery`); arquivos `*.consumer.ts`, `*.producer.ts`, `*.handler.ts` |
|
|
54
|
+
| **CLI** | `commander`, `yargs`, `argparse`, `click`, `cobra`; entrypoint é um executável; sem servidor HTTP |
|
|
55
|
+
| **Serverless** | `serverless.yml`, SAM templates, `*.lambda.ts`; handlers independentes sem servidor longo |
|
|
56
|
+
|
|
57
|
+
### Detecção de domínios funcionais
|
|
58
|
+
|
|
59
|
+
Identificar domínios funcionais para calibrar INTEGRATIONS, CONCERNS e CONVENTIONS:
|
|
60
|
+
|
|
61
|
+
| Domínio | Sinais de detecção |
|
|
62
|
+
|---------|--------------------|
|
|
63
|
+
| **AUTH** | `jwt`, `passport`, `oauth`, `session`, `bcrypt`, `keycloak`, `auth0`, `cognito`, `rbac`, `acl` |
|
|
64
|
+
| **API REST** | `express`, `fastapi`, `spring-web`, `routes/`, `controllers/`, `@Controller`, `@RestController` |
|
|
65
|
+
| **GraphQL** | `graphql`, `apollo`, `resolvers/`, `*.graphql`, `*.gql`, `@Resolver` |
|
|
66
|
+
| **DB relacional** | `typeorm`, `prisma`, `sequelize`, `migrations/`, `*.sql`, `knex`, `drizzle`, `hibernate` |
|
|
67
|
+
| **DB NoSQL** | `mongoose`, `mongodb`, `dynamodb`, `firestore`, `redis`, `elasticsearch` |
|
|
68
|
+
| **Filas/eventos** | `kafka`, `rabbitmq`, `sqs`, `@azure/service-bus`, `bull`, `celery`, `nats`, `pulsar` |
|
|
69
|
+
| **Storage** | `s3`, `blob`, `multer`, `sharp`, `uploads/`, `minio`, `gcs` |
|
|
70
|
+
| **Email/notificação** | `nodemailer`, `sendgrid`, `mailgun`, `ses`, `twilio`, `fcm`, `apns` |
|
|
71
|
+
| **Frontend/UI** | `react`, `vue`, `angular`, `svelte`, `next`, `nuxt`, `components/`, `pages/` |
|
|
72
|
+
| **Infra/IaC** | `*.tf`, `*.bicep`, `*.arm.json`, `helm/`, `k8s/`, `cdk/`, `pulumi/` |
|
|
73
|
+
|
|
74
|
+
### Registrar em OVERVIEW.md
|
|
75
|
+
|
|
76
|
+
Ao final da detecção, adicionar seção em OVERVIEW.md:
|
|
77
|
+
```
|
|
78
|
+
## Padrão arquitetural
|
|
79
|
+
- **Dominante:** [padrão detectado]
|
|
80
|
+
- **Evidências:** `[arquivo1]`, `[arquivo2]`, `[pasta3]`
|
|
81
|
+
- **Domínios funcionais:** AUTH, API REST, DB relacional [lista dos detectados]
|
|
82
|
+
- **Desvios / notas:** [ex.: "camada de domínio incompleta — services acessam DB diretamente em billing/"]
|
|
83
|
+
```
|
|
84
|
+
</architectural_detection>
|
|
85
|
+
|
|
86
|
+
<document_quality_guide>
|
|
87
|
+
## Guia de qualidade por documento
|
|
88
|
+
|
|
89
|
+
Cada documento deve atingir o nível descrito abaixo. Use como checklist interno **antes de finalizar** cada arquivo.
|
|
90
|
+
|
|
91
|
+
---
|
|
92
|
+
|
|
93
|
+
### OVERVIEW.md — o mapa de orientação
|
|
94
|
+
|
|
95
|
+
**Objetivo:** permitir que qualquer agente entenda o sistema em 60 segundos sem abrir código.
|
|
96
|
+
|
|
97
|
+
**Deve conter:**
|
|
98
|
+
- Propósito em 1-2 frases (o que, para quem, por quê)
|
|
99
|
+
- Padrão arquitetural com evidências (ver `<architectural_detection>`)
|
|
100
|
+
- Domínios funcionais com 1 linha cada
|
|
101
|
+
- Fluxo principal end-to-end em 5-15 bullets (descrever o que acontece, não listar arquivos)
|
|
102
|
+
- Módulos de alto nível com papel resumido
|
|
103
|
+
- Link para documentação humana se existir (`docs/`, `README.md`)
|
|
104
|
+
|
|
105
|
+
| Ruim ❌ | Bom ✅ |
|
|
106
|
+
|---------|--------|
|
|
107
|
+
| "Sistema de gestão de usuários" | "API REST multi-tenant que gerencia autenticação JWT + RBAC para N organizações; exposta via Express em `api/`; dados persistidos em PostgreSQL via TypeORM" |
|
|
108
|
+
| "Tem frontend e backend" | "Monorepo: `api/` (Express), `web/` (Next.js), `shared/` (tipos + validações); comunicação via REST; state via React Query no client" |
|
|
109
|
+
| Copiar o README | Síntese do README + observações do código que o README não cobre |
|
|
110
|
+
|
|
111
|
+
**Anti-padrões:** frases genéricas sem evidência; listar arquivos individuais; omitir o padrão arquitetural.
|
|
112
|
+
|
|
113
|
+
---
|
|
114
|
+
|
|
115
|
+
### STACK.md — o inventário tecnológico
|
|
116
|
+
|
|
117
|
+
**Deve conter:**
|
|
118
|
+
- Runtime e versão exata (ex.: `Node.js 20.11 LTS`)
|
|
119
|
+
- Framework principal e versão (ex.: `Express 4.18.3`)
|
|
120
|
+
- Banco de dados com driver/ORM e versão (ex.: `PostgreSQL 15.6 via TypeORM 0.3.20`)
|
|
121
|
+
- Build toolchain com versão (ex.: `Vite 5.2`, `Maven 3.9.6`)
|
|
122
|
+
- **Dependências críticas** com versão e papel — as que, se mudarem, quebram o sistema
|
|
123
|
+
- Variáveis de ambiente chave que afetam comportamento (nomes, sem valores)
|
|
124
|
+
- DevDependencies relevantes (linters, test runner)
|
|
125
|
+
|
|
126
|
+
| Ruim ❌ | Bom ✅ |
|
|
127
|
+
|---------|--------|
|
|
128
|
+
| "Usa Node e TypeScript" | "`Node.js 20.11 LTS`, `TypeScript 5.4` (strict), `Express 4.18.3`, `TypeORM 0.3.20`" |
|
|
129
|
+
| "Tem dependências externas" | "Deps críticas: `zod@3.22` (validação em runtime em todas as rotas), `ioredis@5.3` (cache + rate-limit), `jsonwebtoken@9.0` (tokens JWT); mudar versão desses 3 afeta testes de integração" |
|
|
130
|
+
|
|
131
|
+
**Anti-padrões:** listar 200 deps sem filtrar; omitir versões; ignorar env vars que afetam stack.
|
|
132
|
+
|
|
133
|
+
---
|
|
134
|
+
|
|
135
|
+
### STRUCTURE.md — o mapa de navegação
|
|
136
|
+
|
|
137
|
+
**Deve conter:**
|
|
138
|
+
- Árvore lógica de no máximo 3 níveis (não listar cada arquivo — agregar por propósito)
|
|
139
|
+
- Entrypoints: onde o programa começa e como inicializar
|
|
140
|
+
- Organização de `src/` por domínio com papel de cada pasta
|
|
141
|
+
- Onde ficam: testes, configs, scripts de build, migrations, assets
|
|
142
|
+
- Convenções de nomeação de arquivos (ex.: `*.controller.ts`, `*.service.ts`)
|
|
143
|
+
- **"Onde adicionar novo código"** para pelo menos 3 tipos de mudança comuns
|
|
144
|
+
|
|
145
|
+
| Ruim ❌ | Bom ✅ |
|
|
146
|
+
|---------|--------|
|
|
147
|
+
| "Tem pasta src/" | "`src/` por domínio: `auth/` (JWT + guards), `users/` (CRUD + perfil), `billing/` (Stripe + invoices). Cada domínio: `*.controller.ts`, `*.service.ts`, `*.repository.ts`, `*.dto.ts`, `*.spec.ts`" |
|
|
148
|
+
| Lista de todos os arquivos | "Para novo endpoint: criar `src/<dominio>/<dominio>.controller.ts` + registrar em `<dominio>.module.ts`. Para nova migration: `src/migrations/YYYYMMDD-<descricao>.ts`" |
|
|
149
|
+
|
|
150
|
+
**Anti-padrões:** listar arquivos individualmente; omitir onde ficam os testes; não dizer onde adicionar código novo.
|
|
151
|
+
|
|
152
|
+
---
|
|
153
|
+
|
|
154
|
+
### TESTING.md — o guia de execução
|
|
155
|
+
|
|
156
|
+
**Deve conter:**
|
|
157
|
+
- Comandos exatos para: unit tests, integration tests, e2e, lint, format, typecheck
|
|
158
|
+
- Cobertura atual (se disponível no config ou CI)
|
|
159
|
+
- Frameworks: test runner, assertions, mocking, factories/builders
|
|
160
|
+
- Onde ficam os testes (pasta, convenção de nome)
|
|
161
|
+
- Como rodar um único teste/arquivo (ex.: `npx jest src/auth/auth.service.spec.ts`)
|
|
162
|
+
- Como rodar em watch mode
|
|
163
|
+
- **Pré-requisitos de ambiente** para integration/e2e (DB, Redis, serviços externos)
|
|
164
|
+
- Status do CI: arquivo de config, checks que rodam, tempo estimado
|
|
165
|
+
|
|
166
|
+
| Ruim ❌ | Bom ✅ |
|
|
167
|
+
|---------|--------|
|
|
168
|
+
| "Use npm test" | "`npm test` (unit, sem deps externas), `npm run test:e2e` (requer PostgreSQL :5432 + Redis :6379); arquivo único: `npx jest <path>` ; watch: `npx jest --watch`" |
|
|
169
|
+
| "Tem testes" | "Jest 29 + ts-jest; factories com `@faker-js/faker`; e2e via `@nestjs/testing` + `supertest` + banco real em Docker; cobertura alvo: 80%; CI: `.github/workflows/ci.yml`, ~4 min" |
|
|
170
|
+
|
|
171
|
+
**Anti-padrões:** não listar o que o comando faz; omitir pré-requisitos de ambiente; marcar "não verificado" sem tentar.
|
|
172
|
+
|
|
173
|
+
---
|
|
174
|
+
|
|
175
|
+
### INTEGRATIONS.md — o inventário de integrações
|
|
176
|
+
|
|
177
|
+
**Deve conter:**
|
|
178
|
+
- Para cada integração: nome, propósito, SDK/protocolo, variáveis de ambiente (sem valores)
|
|
179
|
+
- Bancos: tipo, conexão, env vars, tamanho de pool
|
|
180
|
+
- Auth externos: OAuth providers, SAML IdPs, env vars
|
|
181
|
+
- Filas/mensageria: broker, tópicos/queues, padrão (pub/sub, consumer group)
|
|
182
|
+
- APIs de terceiros: endpoint base, autenticação usada, rate limits conhecidos
|
|
183
|
+
- Webhooks: quais recebe e quais envia, endpoints
|
|
184
|
+
- Storage externo: serviço, env vars
|
|
185
|
+
- **Se não houver integrações externas:** escrever explicitamente "**Não detectado**" com contexto
|
|
186
|
+
|
|
187
|
+
| Ruim ❌ | Bom ✅ |
|
|
188
|
+
|---------|--------|
|
|
189
|
+
| "Usa banco de dados" | "**PostgreSQL 15** via TypeORM: env `DATABASE_URL` (connection string) + `DATABASE_SSL` (boolean); pool de 10 conexões; migrations em `src/migrations/`" |
|
|
190
|
+
| "Integra com pagamentos" | "**Stripe v14 SDK**: env `STRIPE_SECRET_KEY`, `STRIPE_WEBHOOK_SECRET`; fluxos: `checkout.session.create`, `customer.subscription.update`; webhooks em `POST /webhooks/stripe`" |
|
|
191
|
+
|
|
192
|
+
**Anti-padrões:** omitir nomes de env vars; dizer "integra com cloud" sem especificar; esquecer webhooks bidirecionais.
|
|
193
|
+
|
|
194
|
+
---
|
|
195
|
+
|
|
196
|
+
### CONVENTIONS.md — o guia de contribuição
|
|
197
|
+
|
|
198
|
+
**Deve conter:**
|
|
199
|
+
- Nomenclatura de arquivos (ex.: `kebab-case` para arquivos, `PascalCase` para classes)
|
|
200
|
+
- Nomenclatura de funções e variáveis
|
|
201
|
+
- Estrutura de módulos: como exportar, onde colocar tipos, como organizar imports
|
|
202
|
+
- **Padrão de erros/exceptions:** como lançar, como capturar, classes customizadas
|
|
203
|
+
- **Padrão de logging:** nível, formato, campos obrigatórios
|
|
204
|
+
- Validação de entrada: onde validar, qual biblioteca
|
|
205
|
+
- Comentários: quando escrever, quando não escrever
|
|
206
|
+
- Paths reais em backticks como evidência (não apenas regras abstratas)
|
|
207
|
+
- Desvios recorrentes detectados (padrões não-oficiais que existem no código)
|
|
208
|
+
|
|
209
|
+
| Ruim ❌ | Bom ✅ |
|
|
210
|
+
|---------|--------|
|
|
211
|
+
| "Use boas práticas" | "Erros: lançar `AppException` de `src/shared/exceptions/app.exception.ts` com `code` e `statusCode`; nunca lançar `Error` puro em código de domínio" |
|
|
212
|
+
| "Nomenclatura padrão" | "Arquivos: `kebab-case`; classes: `PascalCase`; interfaces: `PascalCase` sem prefixo `I`; constantes: `UPPER_SNAKE_CASE`; enums: `PascalCase`" |
|
|
213
|
+
|
|
214
|
+
**Anti-padrões:** inventar convenções não verificadas no código; omitir padrão de erros; ignorar desvios recorrentes que existem de fato.
|
|
215
|
+
|
|
216
|
+
---
|
|
217
|
+
|
|
218
|
+
### CONCERNS.md — o radar de risco
|
|
219
|
+
|
|
220
|
+
**Deve conter:**
|
|
221
|
+
- **Dívida técnica:** área, descrição, arquivo(s) em backtick, impacto (`low`/`medium`/`high`/`critical`)
|
|
222
|
+
- **Riscos de segurança:** vulnerabilidade potencial, onde está, mitigação sugerida
|
|
223
|
+
- **Riscos de desempenho:** ponto de gargalo, evidência, impacto
|
|
224
|
+
- **Dependências sensíveis:** lib com histórico de CVEs, lib abandonada, versão desatualizada com problema conhecido
|
|
225
|
+
- **Código frágil:** módulos sem testes, alta complexidade ciclomática, sem tipagem, acoplamento alto
|
|
226
|
+
- Não inventar concerns — apenas registrar evidências observadas (padrões, versões, ausência de testes)
|
|
227
|
+
- Cada item: **área**, **descrição**, **arquivo(s)** em backtick, **impacto**
|
|
228
|
+
|
|
229
|
+
| Ruim ❌ | Bom ✅ |
|
|
230
|
+
|---------|--------|
|
|
231
|
+
| "Tem alguns problemas" | "**[high] Sem validação em rotas admin:** `src/admin/admin.controller.ts:L45-L78` — nenhum DTO; qualquer payload aceito; risco de injection" |
|
|
232
|
+
| "Código legado" | "**[medium] `src/legacy/report-generator.ts`:** 800 linhas, 0 testes, `any` extensivo, última modificação há 2 anos; qualquer mudança é de alto risco" |
|
|
233
|
+
|
|
234
|
+
**Anti-padrões:** concerns genéricos sem arquivo/evidência; classificar tudo como `high`; omitir riscos de segurança detectados.
|
|
235
|
+
|
|
236
|
+
---
|
|
237
|
+
|
|
238
|
+
### Estratégia de cross-referência entre documentos
|
|
239
|
+
|
|
240
|
+
Os sete documentos complementam sem repetir. Use estas convenções:
|
|
241
|
+
|
|
242
|
+
| Quando A menciona... | B deve... |
|
|
243
|
+
|----------------------|-----------|
|
|
244
|
+
| OVERVIEW menciona módulo | STRUCTURE explicar onde está |
|
|
245
|
+
| STACK menciona dep crítica | CONCERNS mencionar se tem risco ou está desatualizada |
|
|
246
|
+
| INTEGRATIONS menciona integração | CONCERNS mencionar se tem ponto fraco ou env var ausente |
|
|
247
|
+
| CONVENTIONS menciona padrão | STRUCTURE mostrar onde ele é aplicado |
|
|
248
|
+
| TESTING menciona integração com banco | INTEGRATIONS já detalhou o banco |
|
|
249
|
+
|
|
250
|
+
**Regra:** ao escrever um documento, referenciar o irmão relevante com path em backtick. Ex.: em CONCERNS: "Ver `INTEGRATIONS.md` para detalhes de conexão."
|
|
251
|
+
</document_quality_guide>
|
|
252
|
+
|
|
253
|
+
<process>
|
|
254
|
+
1. Garantir pastas `.oxe/` e `.oxe/codebase/`.
|
|
255
|
+
|
|
256
|
+
2. **Carregar context pack:** ler `.oxe/context/packs/scan.md` e `.oxe/context/packs/scan.json` se existirem. Se fresco/coerente, usar como mapa primário. Se ausente/stale, registrar `fallback para leitura direta`.
|
|
257
|
+
|
|
258
|
+
3. **Inventariar o repo:** Glob/Grep para linguagens, manifests (`package.json`, `pom.xml`, `go.mod`, `pyproject.toml`, `Cargo.toml`, `*.csproj`), pastas principais — aplicando foco/ignore da config.
|
|
259
|
+
|
|
260
|
+
3a. **Detecção arquitetural:** aplicar `<architectural_detection>` — classificar padrão dominante e domínios funcionais. Registrar em OVERVIEW.md.
|
|
261
|
+
|
|
262
|
+
3b. **Legado / brownfield:** se sinais de mainframe ou desktop legado (`*.cbl`, `*.jcl`, `*.cpy`, `*.frm`, `*.vbp`, volume de `*.sql` com procedures), aplicar **`oxe/workflows/references/legacy-brownfield.md`** ao preencher STACK, STRUCTURE, INTEGRATIONS, TESTING e CONCERNS.
|
|
263
|
+
|
|
264
|
+
3c. **Detecção de Azure:** se uso de Azure detectado (`@azure/*`, `com.microsoft.azure.*`, imports `azure.*`, env vars `AZURE_*`), registrar em INTEGRATIONS.md com serviços, versão SDK, env vars (sem valores). Provider `oxe-cc azure` é opt-in — apenas informativo.
|
|
265
|
+
|
|
266
|
+
3d. **Documentação humana:** se `docs/` ou `src/docs/` com índice existirem, resumir papel das subpastas em OVERVIEW e STRUCTURE e linkar o ficheiro índice.
|
|
267
|
+
|
|
268
|
+
4. **Produzir os sete documentos** em `.oxe/codebase/` (paralelizar sub-agentes quando disponível):
|
|
269
|
+
- **OVERVIEW.md** — propósito, padrão arquitetural, domínios, fluxo principal, módulos
|
|
270
|
+
- **STACK.md** — runtime, frameworks, deps críticas com versões, env vars chave
|
|
271
|
+
- **STRUCTURE.md** — árvore lógica (máx 3 níveis), entrypoints, onde adicionar código
|
|
272
|
+
- **TESTING.md** — comandos exatos, frameworks, pré-requisitos, CI
|
|
273
|
+
- **INTEGRATIONS.md** — APIs, bancos, auth, filas, webhooks, storage
|
|
274
|
+
- **CONVENTIONS.md** — nomenclatura, erros, logging, imports, validação
|
|
275
|
+
- **CONCERNS.md** — dívida técnica com arquivo+impacto, riscos
|
|
276
|
+
|
|
277
|
+
Aplicar `<document_quality_guide>` como rubrica para cada documento antes de finalizar.
|
|
278
|
+
|
|
279
|
+
5. Atualizar **`.oxe/STATE.md`**: `Data:` (ISO), fase `scan_complete`, próximo passo `oxe:spec` ou `oxe:plan` se já houver SPEC.
|
|
280
|
+
|
|
281
|
+
6. **Scale-adaptive** (ativo por padrão se não configurado):
|
|
282
|
+
- Contar arquivos de código (excluindo `node_modules`, `dist`, `build`, `.git`).
|
|
283
|
+
- **< 50 arquivos, < 10 deps** → sugerir `profile: "fast"`, scan completo em 1 passo.
|
|
284
|
+
- **50–500 arquivos** → sugerir `profile: "balanced"` (padrão).
|
|
285
|
+
- **> 500 arquivos ou legado** → sugerir `profile: "strict"`, considerar sub-agentes por módulo.
|
|
286
|
+
- Se `profile` já configurado em `.oxe/config.json`: confirmar sem sugerir mudança.
|
|
287
|
+
|
|
288
|
+
7. **Paralelização de sub-agentes** (quando > 100 arquivos de código e sub-agentes disponíveis):
|
|
289
|
+
- Sub-agente A: OVERVIEW + STACK (manifests, entrypoints, deps)
|
|
290
|
+
- Sub-agente B: STRUCTURE + CONVENTIONS (organização de src/, linters, configs)
|
|
291
|
+
- Sub-agente C: TESTING + INTEGRATIONS (specs, env vars, integrações externas)
|
|
292
|
+
- Sub-agente D: CONCERNS (análise de código crítico, CVEs, dívida técnica)
|
|
293
|
+
Consolidar e aplicar cross-referências após todos terminarem. OVERVIEW pode precisar de ajuste final após os outros.
|
|
294
|
+
|
|
295
|
+
8. Aplicar `<quality_gate>` — corrigir documentos que falham antes de finalizar.
|
|
296
|
+
|
|
297
|
+
9. Resumir no chat (5-10 linhas): padrão arquitetural detectado, domínios funcionais, profile recomendado, próximo passo sugerido, e concerns críticos se houver (máx 3 bullets).
|
|
298
|
+
</process>
|
|
299
|
+
|
|
300
|
+
<quality_gate>
|
|
301
|
+
## Gate de qualidade do scan
|
|
302
|
+
|
|
303
|
+
Percorrer este checklist antes de finalizar. Corrigir documentos que falham.
|
|
304
|
+
|
|
305
|
+
**Completude estrutural:**
|
|
306
|
+
- [ ] Os sete arquivos existem em `.oxe/codebase/` com conteúdo > 10 linhas cada
|
|
307
|
+
- [ ] Nenhum arquivo termina com `...` ou texto truncado
|
|
308
|
+
- [ ] Nenhum documento é uma lista genérica sem evidência de arquivo/versão
|
|
309
|
+
|
|
310
|
+
**OVERVIEW:**
|
|
311
|
+
- [ ] Padrão arquitetural declarado com ≥ 3 evidências (arquivos/pastas em backtick)
|
|
312
|
+
- [ ] Domínios funcionais listados (ou "nenhum detectado" explícito)
|
|
313
|
+
- [ ] Fluxo principal tem ≥ 5 steps concretos (o que acontece, não o que existe)
|
|
314
|
+
|
|
315
|
+
**STACK:**
|
|
316
|
+
- [ ] Runtime com versão exata
|
|
317
|
+
- [ ] Framework principal com versão exata
|
|
318
|
+
- [ ] ≥ 3 dependências críticas com versão e papel explicado
|
|
319
|
+
|
|
320
|
+
**STRUCTURE:**
|
|
321
|
+
- [ ] ≥ 1 entrypoint identificado com caminho de arquivo
|
|
322
|
+
- [ ] "Onde adicionar novo código" respondido para ≥ 2 tipos de mudança
|
|
323
|
+
|
|
324
|
+
**TESTING:**
|
|
325
|
+
- [ ] Comando de teste principal com path exato, ou marcado "não verificado: [motivo]"
|
|
326
|
+
- [ ] Pré-requisitos de ambiente listados (ou "nenhum" explícito)
|
|
327
|
+
|
|
328
|
+
**INTEGRATIONS:**
|
|
329
|
+
- [ ] Variáveis de ambiente nomeadas por integração, ou "Não detectado" explícito
|
|
330
|
+
|
|
331
|
+
**CONVENTIONS:**
|
|
332
|
+
- [ ] Padrão de erros/exceptions documentado com classe real ou "não padronizado"
|
|
333
|
+
- [ ] Nomenclatura de arquivos com exemplo real em backtick
|
|
334
|
+
|
|
335
|
+
**CONCERNS:**
|
|
336
|
+
- [ ] Cada item tem ≥ 1 arquivo em backtick como evidência
|
|
337
|
+
- [ ] Cada item tem impacto estimado (`low`/`medium`/`high`/`critical`)
|
|
338
|
+
|
|
339
|
+
**Cross-referências:**
|
|
340
|
+
- [ ] ≥ 3 cross-referências entre documentos com path em backtick
|
|
341
|
+
|
|
342
|
+
**STATE.md:**
|
|
343
|
+
- [ ] `Data:` preenchida em ISO (YYYY-MM-DD)
|
|
344
|
+
- [ ] Fase: `scan_complete`
|
|
345
|
+
- [ ] Próximo passo definido (`oxe:spec` ou `oxe:plan`)
|
|
346
|
+
</quality_gate>
|
|
347
|
+
|
|
348
|
+
<success_criteria>
|
|
349
|
+
- [ ] Os sete arquivos em `.oxe/codebase/` existem com conteúdo denso — cada documento passou pelo `<document_quality_guide>` correspondente.
|
|
350
|
+
- [ ] Padrão arquitetural e domínios funcionais detectados e documentados em OVERVIEW.md.
|
|
351
|
+
- [ ] Pelo menos 3 cross-referências entre documentos usando paths em backtick.
|
|
352
|
+
- [ ] Comandos em TESTING.md foram validados ou marcados "não verificado: [motivo]".
|
|
353
|
+
- [ ] `.oxe/STATE.md` com `Data:` preenchida, fase `scan_complete`, próximo passo definido.
|
|
354
|
+
- [ ] Gate de qualidade passou — ou lacunas documentadas explicitamente com justificativa.
|
|
355
|
+
</success_criteria>
|