auroq-os 2.2.3 → 2.3.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/.auroq-core/constitution.md +11 -151
- package/.auroq-core/core-config.yaml +1 -1
- package/.auroq-core/dna-operacional.md +9 -131
- package/.claude/CLAUDE.md +5 -466
- package/.claude/commands/AuroqOS/agents/ops.md +4 -1785
- package/.claude/commands/auroq-clone-forge.md +3 -3
- package/.claude/commands/auroq-companion.md +3 -3
- package/.claude/commands/auroq-consultor.md +4 -4
- package/.claude/commands/auroq-etlmaker.md +3 -3
- package/.claude/commands/auroq-mind-forge.md +4 -4
- package/.claude/commands/auroq-squad-forge.md +3 -3
- package/.claude/commands/auroq-worker-forge.md +4 -4
- package/.claude/output-styles/direto.md +19 -0
- package/.claude/rules/evolucao-incremental.md +8 -20
- package/.claude/rules/mcp-usage.md +10 -18
- package/.claude/rules/operacao-autonoma.md +29 -0
- package/.claude/settings.json +1 -0
- package/.gitignore +4 -0
- package/AGENTS.md +10 -119
- package/README.md +6 -5
- package/bin/auroq-os.js +61 -15
- package/lib/auth.js +6 -6
- package/lib/credentials.js +13 -1
- package/package.json +18 -8
- package/scripts/postpack-casca.mjs +32 -0
- package/scripts/prepack-casca.mjs +47 -0
- package/scripts/validate-hybrid.mjs +2 -0
- package/.auroq-core/development/sistema-gestao-projetos.md +0 -193
- package/.auroq-core/development/sistema-memoria.md +0 -157
- package/agents/clone-forge/.state.json +0 -7
- package/agents/clone-forge/README.md +0 -81
- package/agents/clone-forge/agents/clone-forge-chief.md +0 -885
- package/agents/clone-forge/agents/cognitive-motor.md +0 -384
- package/agents/clone-forge/agents/innerlens.md +0 -453
- package/agents/clone-forge/checklists/clone-forge-validation.md +0 -160
- package/agents/clone-forge/checklists/driver-quality-gate.md +0 -79
- package/agents/clone-forge/checklists/miu-quality-gate.md +0 -86
- package/agents/clone-forge/checklists/psychometric-quality-gate.md +0 -76
- package/agents/clone-forge/checklists/smoke-test-clone.md +0 -313
- package/agents/clone-forge/config.yaml +0 -221
- package/agents/clone-forge/data/clone-anti-patterns.yaml +0 -148
- package/agents/clone-forge/data/clone-forge-kb.md +0 -106
- package/agents/clone-forge/data/clone-validation.yaml +0 -190
- package/agents/clone-forge/data/driver-catalog.yaml +0 -2595
- package/agents/clone-forge/data/driver-relationship-templates.yaml +0 -242
- package/agents/clone-forge/data/miu-classification-taxonomy.yaml +0 -273
- package/agents/clone-forge/data/output-examples.yaml +0 -102
- package/agents/clone-forge/data/poc-schema.yaml +0 -320
- package/agents/clone-forge/data/psychometric-systems.yaml +0 -1514
- package/agents/clone-forge/data/source-tiers.yaml +0 -119
- package/agents/clone-forge/data/source-type-handlers.yaml +0 -282
- package/agents/clone-forge/tasks/aggregate-profile.md +0 -519
- package/agents/clone-forge/tasks/clone-review.md +0 -105
- package/agents/clone-forge/tasks/collect-and-merge-sources.md +0 -621
- package/agents/clone-forge/tasks/deep-interview.md +0 -737
- package/agents/clone-forge/tasks/extract-dna-enriched.md +0 -371
- package/agents/clone-forge/tasks/extract-mius.md +0 -1018
- package/agents/clone-forge/tasks/extract-thinking-dna.md +0 -654
- package/agents/clone-forge/tasks/extract-voice-dna.md +0 -620
- package/agents/clone-forge/tasks/fidelity-score.md +0 -109
- package/agents/clone-forge/tasks/gap-analysis-questionnaire.md +0 -517
- package/agents/clone-forge/tasks/generate-agent-from-profile.md +0 -874
- package/agents/clone-forge/tasks/infer-drivers.md +0 -431
- package/agents/clone-forge/tasks/ingest-local-content.md +0 -578
- package/agents/clone-forge/tasks/map-psychometrics.md +0 -459
- package/agents/clone-forge/tasks/start.md +0 -805
- package/agents/clone-forge/tasks/validate-clone-forge.md +0 -743
- package/agents/clone-forge/tasks/validate-clone.md +0 -130
- package/agents/clone-forge/templates/driver-profile-tmpl.yaml +0 -137
- package/agents/clone-forge/templates/manifest-tmpl.yaml +0 -161
- package/agents/clone-forge/templates/miu-tmpl.yaml +0 -109
- package/agents/clone-forge/templates/poc-module-tmpl.yaml +0 -259
- package/agents/clone-forge/templates/quality-dashboard-360-tmpl.md +0 -218
- package/agents/clone-forge/workflows/wf-clone-forge-full.yaml +0 -678
- package/agents/clone-forge/workflows/wf-clone-forge-quick.yaml +0 -320
- package/agents/companion/agents/companion.md +0 -327
- package/agents/companion/knowledge/arcane-method.md +0 -247
- package/agents/companion/knowledge/companion-foundation.md +0 -57
- package/agents/companion/knowledge/modus-operandi.md +0 -161
- package/agents/companion/knowledge/system-guide.md +0 -380
- package/agents/companion/tasks/new-project.md +0 -111
- package/agents/companion/tasks/save-memory.md +0 -73
- package/agents/companion/tasks/start.md +0 -159
- package/agents/companion/tasks/weekly-review.md +0 -82
- package/agents/consultor/agents/consultor.md +0 -185
- package/agents/consultor/knowledge/01-arquitetura-e-engenharia.md +0 -157
- package/agents/consultor/knowledge/02-operar-o-negocio.md +0 -136
- package/agents/consultor/knowledge/03-os-8-agentes.md +0 -96
- package/agents/consultor/knowledge/04-filosofia-e-didatica.md +0 -131
- package/agents/consultor/knowledge/05-fazer-no-dia-a-dia.md +0 -99
- package/agents/consultor/knowledge/06-quando-criar-agente-ou-squad.md +0 -109
- package/agents/consultor/knowledge/07-logicas-de-uso-e-higiene.md +0 -87
- package/agents/consultor/tasks/start.md +0 -26
- package/agents/etlmaker/agents/analyst.md +0 -189
- package/agents/etlmaker/agents/architect.md +0 -173
- package/agents/etlmaker/agents/auditor.md +0 -217
- package/agents/etlmaker/agents/composer.md +0 -201
- package/agents/etlmaker/agents/etl-chief.md +0 -259
- package/agents/etlmaker/agents/extractor.md +0 -184
- package/agents/etlmaker/data/archive/extraction-lenses.yaml +0 -178
- package/agents/etlmaker/data/archive/miu-types.yaml +0 -128
- package/agents/etlmaker/data/etlmaker-kb.md +0 -175
- package/agents/etlmaker/data/quality-gates.yaml +0 -208
- package/agents/etlmaker/skill.md +0 -230
- package/agents/etlmaker/squad.yaml +0 -182
- package/agents/etlmaker/tasks/compose-volume.md +0 -292
- package/agents/etlmaker/tasks/ingest-sources.md +0 -157
- package/agents/etlmaker/tasks/integrate-package.md +0 -357
- package/agents/etlmaker/tasks/map-territory.md +0 -394
- package/agents/etlmaker/tasks/start.md +0 -225
- package/agents/etlmaker/tasks/validate-final.md +0 -471
- package/agents/etlmaker/templates/kb-template.md +0 -180
- package/agents/etlmaker/workflows/wf-knowledge-etl.yaml +0 -371
- package/agents/mind-forge/README.md +0 -64
- package/agents/mind-forge/agents/forge-chief.md +0 -293
- package/agents/mind-forge/agents/knowledge-miner.md +0 -280
- package/agents/mind-forge/agents/mind-smith.md +0 -306
- package/agents/mind-forge/checklists/analysis-completeness.md +0 -34
- package/agents/mind-forge/checklists/mind-quality.md +0 -55
- package/agents/mind-forge/data/extraction-lenses.yaml +0 -229
- package/agents/mind-forge/data/forge-kb.md +0 -182
- package/agents/mind-forge/data/kf-classification.yaml +0 -307
- package/agents/mind-forge/skill.md +0 -7
- package/agents/mind-forge/squad.yaml +0 -167
- package/agents/mind-forge/tasks/analyze-knowledge.md +0 -278
- package/agents/mind-forge/tasks/forge-mind.md +0 -199
- package/agents/mind-forge/tasks/ingest-sources.md +0 -130
- package/agents/mind-forge/tasks/playback-validate.md +0 -146
- package/agents/mind-forge/tasks/start.md +0 -137
- package/agents/mind-forge/tasks/validate-mind.md +0 -237
- package/agents/mind-forge/templates/agent-tmpl.md +0 -124
- package/agents/mind-forge/templates/config-tmpl.yaml +0 -17
- package/agents/mind-forge/templates/kb-tmpl.md +0 -66
- package/agents/mind-forge/workflows/wf-mind-forge.yaml +0 -168
- package/agents/squad-forge/README.md +0 -110
- package/agents/squad-forge/agents/forge-chief.md +0 -297
- package/agents/squad-forge/agents/forge-smith.md +0 -535
- package/agents/squad-forge/agents/process-archaeologist.md +0 -398
- package/agents/squad-forge/checklists/architecture-coherence.md +0 -28
- package/agents/squad-forge/checklists/extraction-completeness.md +0 -48
- package/agents/squad-forge/checklists/nuclear-structure-validation.md +0 -61
- package/agents/squad-forge/checklists/squad-operational.md +0 -24
- package/agents/squad-forge/checklists/user-validation.md +0 -23
- package/agents/squad-forge/data/executor-mapping-guide.yaml +0 -135
- package/agents/squad-forge/data/extraction-lenses.yaml +0 -330
- package/agents/squad-forge/data/forge-kb.md +0 -248
- package/agents/squad-forge/data/pu-classification.yaml +0 -229
- package/agents/squad-forge/data/quality-thresholds.yaml +0 -259
- package/agents/squad-forge/squad.yaml +0 -175
- package/agents/squad-forge/tasks/architect-squad.md +0 -398
- package/agents/squad-forge/tasks/assemble-squad.md +0 -831
- package/agents/squad-forge/tasks/extract-process.md +0 -378
- package/agents/squad-forge/tasks/fix-squad.md +0 -334
- package/agents/squad-forge/tasks/generate-prd.md +0 -265
- package/agents/squad-forge/tasks/generate-stories.md +0 -223
- package/agents/squad-forge/tasks/playback-validate.md +0 -263
- package/agents/squad-forge/tasks/rebuild-squad.md +0 -236
- package/agents/squad-forge/tasks/self-test.md +0 -237
- package/agents/squad-forge/tasks/start.md +0 -247
- package/agents/squad-forge/tasks/update-squad.md +0 -262
- package/agents/squad-forge/tasks/validate-squad.md +0 -377
- package/agents/squad-forge/templates/process-map-tmpl.yaml +0 -109
- package/agents/squad-forge/templates/pu-tmpl.yaml +0 -71
- package/agents/squad-forge/templates/squad-blueprint-tmpl.yaml +0 -113
- package/agents/squad-forge/workflows/wf-squad-forge.yaml +0 -300
- package/agents/worker-forge/README.md +0 -58
- package/agents/worker-forge/agents/knowledge-curator.md +0 -170
- package/agents/worker-forge/agents/role-designer.md +0 -150
- package/agents/worker-forge/agents/worker-chief.md +0 -273
- package/agents/worker-forge/agents/worker-smith.md +0 -258
- package/agents/worker-forge/data/worker-forge-kb.md +0 -264
- package/agents/worker-forge/knowledge/autonomous-agent-architectures.md +0 -275
- package/agents/worker-forge/knowledge/delegation-competency-performance.md +0 -256
- package/agents/worker-forge/knowledge/job-design-business-systems.md +0 -296
- package/agents/worker-forge/knowledge/knowledge-management-improvement.md +0 -242
- package/agents/worker-forge/skill.md +0 -7
- package/agents/worker-forge/squad.yaml +0 -101
- package/agents/worker-forge/tasks/assemble-worker.md +0 -239
- package/agents/worker-forge/tasks/discover-needs.md +0 -219
- package/agents/worker-forge/tasks/playback-validate.md +0 -126
- package/agents/worker-forge/tasks/propose-worker.md +0 -112
- package/agents/worker-forge/tasks/research-domain.md +0 -165
- package/agents/worker-forge/tasks/start.md +0 -67
- package/agents/worker-forge/tasks/validate-worker.md +0 -155
- package/agents/worker-forge/workflows/wf-worker-forge.yaml +0 -96
- package/docs/stories/AUROQ-2.1.0-hybrid-runtime.md +0 -64
- package/tests/installer-hybrid.test.mjs +0 -66
- package/tests/onepassword.test.mjs +0 -54
- package/tests/sync-codex-skills.test.mjs +0 -88
- /package/{agents → seeds/agents}/companion/data/contexto-dinamico.md +0 -0
- /package/{agents → seeds/agents}/companion/data/demandas-backlog.md +0 -0
- /package/{agents → seeds/agents}/companion/data/log-decisoes.md +0 -0
- /package/{agents → seeds/agents}/companion/data/padroes-observados.md +0 -0
- /package/{agents → seeds/agents}/companion/knowledge/expert-essencial.md +0 -0
- /package/{business → seeds/business}/campanhas/_template/BRIEFING.md +0 -0
- /package/{business → seeds/business}/campanhas/_template/CHECKLIST.md +0 -0
- /package/{business → seeds/business}/campanhas/_template/DIARIO.md +0 -0
- /package/{business → seeds/business}/campanhas/_template/RETROVISOR.md +0 -0
- /package/{business → seeds/business}/cockpit.md +0 -0
- /package/{business → seeds/business}/templates/tracker-template.md +0 -0
- /package/{docs → seeds/docs}/knowledge/expert-business/criacoes/.gitkeep +0 -0
- /package/{docs → seeds/docs}/knowledge/expert-business/posicionamento/.gitkeep +0 -0
- /package/{docs → seeds/docs}/knowledge/expert-business/posicionamento.md +0 -0
- /package/{docs → seeds/docs}/knowledge/expert-business/produto/.gitkeep +0 -0
- /package/{docs → seeds/docs}/knowledge/expert-business/publico-alvo.md +0 -0
- /package/{docs → seeds/docs}/knowledge/expert-mind/assessments/.gitkeep +0 -0
- /package/{docs → seeds/docs}/knowledge/expert-mind/historia.md +0 -0
- /package/{docs → seeds/docs}/knowledge/expert-mind/identidade/.gitkeep +0 -0
- /package/{docs → seeds/docs}/knowledge/expert-mind/identidade.md +0 -0
- /package/{docs → seeds/docs}/knowledge/expert-mind/proposito/.gitkeep +0 -0
- /package/{docs → seeds/docs}/knowledge/expert-mind/tom-de-voz.md +0 -0
- /package/{docs → seeds/docs}/knowledge/expert-mind/valores.md +0 -0
|
@@ -1,165 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
task: "Research Domain"
|
|
3
|
-
responsavel: "@knowledge-curator"
|
|
4
|
-
responsavel_type: "agent"
|
|
5
|
-
atomic_layer: "task"
|
|
6
|
-
Entrada: "Discovery summary (dominio, ferramentas, fontes internas)"
|
|
7
|
-
Saida: "KB rascunho (Foundation KB + fontes coletadas)"
|
|
8
|
-
Checklist:
|
|
9
|
-
- "Cada ferramenta core pesquisada externamente"
|
|
10
|
-
- "Integracoes entre ferramentas mapeadas"
|
|
11
|
-
- "Fontes internas coletadas"
|
|
12
|
-
- "KB rascunho >=300 linhas"
|
|
13
|
-
- "Fontes classificadas por tier"
|
|
14
|
-
- "Gaps de documentacao registrados"
|
|
15
|
-
execution_type: "semantic"
|
|
16
|
-
---
|
|
17
|
-
|
|
18
|
-
# Task: Research Domain — Pesquisa e Curadoria de Conhecimento
|
|
19
|
-
|
|
20
|
-
## Objetivo
|
|
21
|
-
|
|
22
|
-
Pesquisar externamente cada ferramenta/plataforma que o worker vai usar, coletar documentacao interna existente, e montar a KB rascunho do worker.
|
|
23
|
-
|
|
24
|
-
## Posicao no Workflow
|
|
25
|
-
|
|
26
|
-
Fase 1 do pipeline. Gate: QG-WF-002.
|
|
27
|
-
|
|
28
|
-
## Passos
|
|
29
|
-
|
|
30
|
-
### Step 1: Listar Alvos de Pesquisa
|
|
31
|
-
|
|
32
|
-
A partir do Discovery Summary, listar:
|
|
33
|
-
- Cada ferramenta/plataforma mencionada
|
|
34
|
-
- Integracoes entre ferramentas (pares)
|
|
35
|
-
- Conceitos do dominio que precisam de KB
|
|
36
|
-
|
|
37
|
-
### Step 2: Pesquisa Externa
|
|
38
|
-
|
|
39
|
-
Para cada ferramenta, executar pesquisa em 3 passes:
|
|
40
|
-
|
|
41
|
-
**Pass 1 — O que e e como funciona:**
|
|
42
|
-
```
|
|
43
|
-
WebSearch: "{ferramenta} overview features capabilities 2025 2026"
|
|
44
|
-
```
|
|
45
|
-
Capturar: descricao, features core, modelo de pricing, limites.
|
|
46
|
-
|
|
47
|
-
**Pass 2 — API e integracoes:**
|
|
48
|
-
```
|
|
49
|
-
WebSearch: "{ferramenta} API documentation integration"
|
|
50
|
-
WebSearch: "{ferramenta} {outra ferramenta} integration"
|
|
51
|
-
```
|
|
52
|
-
Capturar: endpoints, autenticacao, rate limits, webhooks, integracoes nativas.
|
|
53
|
-
|
|
54
|
-
**Pass 3 — Troubleshooting:**
|
|
55
|
-
```
|
|
56
|
-
WebSearch: "{ferramenta} common issues problems solutions"
|
|
57
|
-
```
|
|
58
|
-
Capturar: problemas frequentes, solucoes conhecidas, workarounds.
|
|
59
|
-
|
|
60
|
-
**Reportar progresso apos cada ferramenta:**
|
|
61
|
-
"Pesquisei {N}/{total} ferramentas. Proximo: {nome}."
|
|
62
|
-
|
|
63
|
-
### Step 3: Coleta Interna
|
|
64
|
-
|
|
65
|
-
Buscar no Auroq:
|
|
66
|
-
|
|
67
|
-
```
|
|
68
|
-
# KBs existentes relevantes
|
|
69
|
-
docs/knowledge/expert-business/
|
|
70
|
-
agents/*/data/*-kb.md
|
|
71
|
-
|
|
72
|
-
# Processos documentados
|
|
73
|
-
agents/squad-forge/minds/*/
|
|
74
|
-
|
|
75
|
-
# ETL existente
|
|
76
|
-
docs/knowledge/expert-business/*/
|
|
77
|
-
```
|
|
78
|
-
|
|
79
|
-
Coletar:
|
|
80
|
-
- SOPs existentes que o worker vai precisar
|
|
81
|
-
- KBs de squads relacionados
|
|
82
|
-
- Configuracoes documentadas
|
|
83
|
-
|
|
84
|
-
### Step 4: Classificar Fontes
|
|
85
|
-
|
|
86
|
-
| Tier | Peso | Criterio |
|
|
87
|
-
|------|------|----------|
|
|
88
|
-
| OURO | 0.90-1.00 | Doc oficial, API reference, curso do autor |
|
|
89
|
-
| PRATA | 0.60-0.89 | Tutoriais verificados, blog oficial, community docs |
|
|
90
|
-
| BRONZE | 0.30-0.59 | Posts genericos, respostas de forum |
|
|
91
|
-
|
|
92
|
-
Reportar: "Fontes: {X}% ouro, {Y}% prata, {Z}% bronze."
|
|
93
|
-
|
|
94
|
-
### Step 5: Compor KB Rascunho
|
|
95
|
-
|
|
96
|
-
Organizar em Foundation KB:
|
|
97
|
-
|
|
98
|
-
```markdown
|
|
99
|
-
# {Worker Name} — Foundation KB
|
|
100
|
-
|
|
101
|
-
## Plataformas e Ferramentas
|
|
102
|
-
|
|
103
|
-
### {Ferramenta 1}
|
|
104
|
-
**O que e:** {descricao}
|
|
105
|
-
**Features core:** {lista}
|
|
106
|
-
**API:** {resumo — endpoints, auth, limits}
|
|
107
|
-
**Integracoes nativas:** {lista}
|
|
108
|
-
**Limites:** {o que nao faz}
|
|
109
|
-
**Troubleshooting:** {problemas e solucoes}
|
|
110
|
-
**Doc oficial:** {link}
|
|
111
|
-
|
|
112
|
-
### {Ferramenta 2}
|
|
113
|
-
...
|
|
114
|
-
|
|
115
|
-
## Integracoes
|
|
116
|
-
|
|
117
|
-
### {Ferramenta A} <-> {Ferramenta B}
|
|
118
|
-
**Metodo:** {API direta, webhook, n8n, Zapier}
|
|
119
|
-
**Padrao:** {fluxo tipico}
|
|
120
|
-
**Cuidados:** {limites, gotchas}
|
|
121
|
-
|
|
122
|
-
## SOPs Existentes
|
|
123
|
-
{Importados da coleta interna}
|
|
124
|
-
|
|
125
|
-
## Troubleshooting Geral
|
|
126
|
-
{Problemas cross-platform}
|
|
127
|
-
|
|
128
|
-
## Glossario
|
|
129
|
-
{Termos do dominio}
|
|
130
|
-
```
|
|
131
|
-
|
|
132
|
-
### Step 6: Registrar Gaps
|
|
133
|
-
|
|
134
|
-
```yaml
|
|
135
|
-
gaps:
|
|
136
|
-
- tool: "{ferramenta}"
|
|
137
|
-
gap: "API nao documentada publicamente"
|
|
138
|
-
action: "Pedir acesso ao usuario"
|
|
139
|
-
- tool: "{ferramenta}"
|
|
140
|
-
gap: "Integracao com {outra} nao encontrada"
|
|
141
|
-
action: "Pode precisar de n8n custom"
|
|
142
|
-
```
|
|
143
|
-
|
|
144
|
-
## Quality Gate: QG-WF-002
|
|
145
|
-
|
|
146
|
-
| Criterio | Obrigatorio |
|
|
147
|
-
|----------|-------------|
|
|
148
|
-
| Cada ferramenta core pesquisada | Sim |
|
|
149
|
-
| Integracoes entre ferramentas mapeadas | Sim |
|
|
150
|
-
| Fontes internas coletadas (se existem) | Sim |
|
|
151
|
-
| KB rascunho >= 300 linhas (3+ ferramentas) ou >= 150 linhas (1-2 ferramentas) | Sim |
|
|
152
|
-
| Fontes classificadas por tier | Sim |
|
|
153
|
-
| Gaps registrados | Sim |
|
|
154
|
-
| >= 40% fontes tier ouro | Recomendado |
|
|
155
|
-
|
|
156
|
-
**Veto:** Ferramenta core nao pesquisada, KB < 150 linhas.
|
|
157
|
-
|
|
158
|
-
## Error Handling
|
|
159
|
-
|
|
160
|
-
| Cenario | Acao |
|
|
161
|
-
|---------|------|
|
|
162
|
-
| Ferramenta sem doc publica | Registrar gap, pedir acesso ao usuario |
|
|
163
|
-
| Integracao nao existe nativa | Documentar alternativas (n8n, webhook, API custom) |
|
|
164
|
-
| Fonte interna desatualizada | Marcar como bronze, usar com ressalva |
|
|
165
|
-
| WebSearch retorna pouco | Tentar termos alternativos, buscar em ingles |
|
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
task: "Start"
|
|
3
|
-
responsavel: "@worker-chief"
|
|
4
|
-
responsavel_type: "agent"
|
|
5
|
-
atomic_layer: "task"
|
|
6
|
-
Entrada: "Ativacao do squad pelo usuario via /workerForge"
|
|
7
|
-
Saida: "Chief ativo, greeting exibido, pronto pra Discovery"
|
|
8
|
-
Checklist:
|
|
9
|
-
- "Chief ativo e greeting exibido"
|
|
10
|
-
- "Aguardando descricao do worker desejado"
|
|
11
|
-
execution_type: "interactive"
|
|
12
|
-
---
|
|
13
|
-
|
|
14
|
-
# Task: Start — Entry Point do Worker Forge
|
|
15
|
-
|
|
16
|
-
## Objetivo
|
|
17
|
-
|
|
18
|
-
Ativar o Worker Forge e iniciar o Discovery.
|
|
19
|
-
|
|
20
|
-
## Trigger
|
|
21
|
-
|
|
22
|
-
- `/workerForge` ou `*start`
|
|
23
|
-
|
|
24
|
-
## Passos
|
|
25
|
-
|
|
26
|
-
### Step 1: Carregar Persona
|
|
27
|
-
|
|
28
|
-
Ler e adotar persona de `agents/worker-forge/agents/worker-chief.md`.
|
|
29
|
-
Carregar KB: `agents/worker-forge/data/worker-forge-kb.md`.
|
|
30
|
-
|
|
31
|
-
### Step 2: Exibir Greeting
|
|
32
|
-
|
|
33
|
-
```
|
|
34
|
-
=== WORKER FORGE ===
|
|
35
|
-
Agente Auroq | Criado por Euriler Jube
|
|
36
|
-
Usado por ele e pela Mentoria Arcane
|
|
37
|
-
|
|
38
|
-
Consultores pensam. Processos seguem fluxo rigido.
|
|
39
|
-
Workers sao diferentes — recebem missoes, executam, documentam
|
|
40
|
-
e ficam melhores com o tempo. KB viva que cresce a cada entrega.
|
|
41
|
-
|
|
42
|
-
O que posso fazer:
|
|
43
|
-
|
|
44
|
-
1. Criar worker novo — papel, skills, KB e playbook do zero
|
|
45
|
-
2. Atualizar worker — ajustar KB, playbook, missoes ou estrutura
|
|
46
|
-
3. Consertar worker — diagnosticar e corrigir problemas
|
|
47
|
-
|
|
48
|
-
Me descreve como se fosse uma vaga de emprego.
|
|
49
|
-
```
|
|
50
|
-
|
|
51
|
-
**Regras do Greeting:**
|
|
52
|
-
- NAO listar agentes internos
|
|
53
|
-
- NAO listar comandos
|
|
54
|
-
- NAO explicar o pipeline
|
|
55
|
-
- Ir direto ao ponto
|
|
56
|
-
|
|
57
|
-
### Step 3: Handoff para Discovery
|
|
58
|
-
|
|
59
|
-
Com a resposta do usuario, iniciar task `discover-needs`.
|
|
60
|
-
|
|
61
|
-
## Error Handling
|
|
62
|
-
|
|
63
|
-
| Cenario | Acao |
|
|
64
|
-
|---------|------|
|
|
65
|
-
| Usuario nao sabe o que precisa | Ajudar: "Que atividade voce faz hoje que gostaria que alguem fizesse por voce?" |
|
|
66
|
-
| Parece consultor, nao worker | Sugerir Mind Forge: "Isso parece mais um consultor que um executor. Quer o Mind Forge?" |
|
|
67
|
-
| Multiplos workers de uma vez | Fazer 1 por vez: "Vamos comecar pelo mais urgente. Qual?" |
|
|
@@ -1,155 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
task: "Validate Worker"
|
|
3
|
-
responsavel: "@worker-chief"
|
|
4
|
-
responsavel_type: "agent"
|
|
5
|
-
atomic_layer: "task"
|
|
6
|
-
Entrada: "Worker Auroq montado"
|
|
7
|
-
Saida: "Worker validado e operacional (ou lista de correcoes)"
|
|
8
|
-
Checklist:
|
|
9
|
-
- "Smoke test 1: missao simples executada"
|
|
10
|
-
- "Smoke test 2: ferramenta desconhecida pesquisada"
|
|
11
|
-
- "Smoke test 3: SOP criada automaticamente"
|
|
12
|
-
- "Smoke test 4: diagnostico executado"
|
|
13
|
-
- "Usuario aprovou"
|
|
14
|
-
execution_type: "interactive"
|
|
15
|
-
---
|
|
16
|
-
|
|
17
|
-
# Task: Validate Worker — Validacao Final
|
|
18
|
-
|
|
19
|
-
## Objetivo
|
|
20
|
-
|
|
21
|
-
Testar o worker com missoes reais e obter aprovacao do usuario.
|
|
22
|
-
|
|
23
|
-
## Posicao no Workflow
|
|
24
|
-
|
|
25
|
-
Fase 5 do pipeline. Gate: QG-WF-005.
|
|
26
|
-
|
|
27
|
-
## PRD Fulfillment Check
|
|
28
|
-
|
|
29
|
-
ANTES dos smoke tests, verificar se o worker montado atende ao WORKER-PRD gerado na Discovery.
|
|
30
|
-
|
|
31
|
-
### Step 1: Carregar WORKER-PRD
|
|
32
|
-
|
|
33
|
-
Ler `agents/worker-forge/output/{slug}/WORKER-PRD.md`.
|
|
34
|
-
Se nao existe: pular PRD Fulfillment Check e ir direto pros smoke tests (pipeline legacy).
|
|
35
|
-
|
|
36
|
-
### Step 2: Checklist Automatico
|
|
37
|
-
|
|
38
|
-
Para CADA secao do WORKER-PRD, verificar no worker montado:
|
|
39
|
-
|
|
40
|
-
**Secao 2 — Duties:**
|
|
41
|
-
- [ ] Cada duty listada no PRD tem task correspondente OU esta coberta por um dos 4 modos padrao
|
|
42
|
-
- [ ] Criterios de aceite de cada duty sao verificaveis pelo Scoreboard no agent.md
|
|
43
|
-
|
|
44
|
-
**Secao 3 — Ferramentas:**
|
|
45
|
-
- [ ] Cada ferramenta requerida esta documentada na Foundation KB ({slug}-kb.md)
|
|
46
|
-
- [ ] Nivel minimo de conhecimento coberto (API docs, troubleshooting, integracoes)
|
|
47
|
-
|
|
48
|
-
**Secao 4 — Autonomia:**
|
|
49
|
-
- [ ] Delegation Map no agent.md cobre todas as decisoes listadas no PRD
|
|
50
|
-
- [ ] Niveis de autonomia sao consistentes (min 1 nivel 7, min 1 nivel 1-3)
|
|
51
|
-
|
|
52
|
-
**Secao 5 — Metricas:**
|
|
53
|
-
- [ ] Scoreboard no agent.md reflete as metricas do PRD
|
|
54
|
-
- [ ] Cada metrica tem forma de medicao definida
|
|
55
|
-
|
|
56
|
-
**Secao 6 — Restricoes:**
|
|
57
|
-
- [ ] Boundaries no agent.md refletem restricoes do PRD
|
|
58
|
-
- [ ] Strict Rules cobrem pelo menos os "NAO faz" do PRD
|
|
59
|
-
|
|
60
|
-
### Step 3: Report de Fulfillment
|
|
61
|
-
|
|
62
|
-
```
|
|
63
|
-
=== PRD FULFILLMENT — {worker name} ===
|
|
64
|
-
|
|
65
|
-
CHECKS: {X} de {Y} aprovados
|
|
66
|
-
|
|
67
|
-
APROVADOS:
|
|
68
|
-
- {check que passou}
|
|
69
|
-
|
|
70
|
-
GAPS:
|
|
71
|
-
- {gap encontrado}: {descricao}
|
|
72
|
-
|
|
73
|
-
RECOMENDACAO: {prosseguir para smoke tests / resolver gaps primeiro}
|
|
74
|
-
```
|
|
75
|
-
|
|
76
|
-
**Decisao:**
|
|
77
|
-
- Se ZERO gaps → prosseguir pros smoke tests
|
|
78
|
-
- Se gaps menores (cosmeticos) → registrar e prosseguir
|
|
79
|
-
- Se gaps criticos (duty nao coberta, ferramenta sem KB) → voltar pra Assembly (Fase 4), corrigir, re-validar
|
|
80
|
-
|
|
81
|
-
## Smoke Tests
|
|
82
|
-
|
|
83
|
-
### Test 1: Missao Simples
|
|
84
|
-
Pedir ao worker pra executar uma missao basica do dominio dele.
|
|
85
|
-
Verificar: entendeu a missao? Checou playbook? Executou? Reportou? Documentou?
|
|
86
|
-
|
|
87
|
-
### Test 2: Pesquisa de Ferramenta Nova
|
|
88
|
-
Pedir ao worker pra estudar uma ferramenta que NAO esta na KB.
|
|
89
|
-
Verificar: pesquisou? Sintetizou? Adicionou a KB?
|
|
90
|
-
|
|
91
|
-
### Test 3: Documentacao Automatica
|
|
92
|
-
Apos Test 1, verificar se o worker criou/atualizou SOP no Playbook.
|
|
93
|
-
Verificar: SOP esta no Playbook? Tem passos claros? E reutilizavel?
|
|
94
|
-
|
|
95
|
-
### Test 4: Diagnostico
|
|
96
|
-
Apresentar um problema do dominio.
|
|
97
|
-
Verificar: consultou KB? Investigou? Diagnosticou? Propos solucao?
|
|
98
|
-
|
|
99
|
-
## Criterios de Aprovacao
|
|
100
|
-
|
|
101
|
-
3/4 smoke tests devem passar. Se 2/4 falharem: identificar causa, corrigir, re-testar.
|
|
102
|
-
|
|
103
|
-
Apos smoke tests, apresentar resultado ao usuario:
|
|
104
|
-
|
|
105
|
-
```
|
|
106
|
-
=== VALIDACAO: {worker name} ===
|
|
107
|
-
|
|
108
|
-
Smoke Tests:
|
|
109
|
-
1. Missao simples: {PASS/FAIL} — {resumo}
|
|
110
|
-
2. Pesquisa ferramenta: {PASS/FAIL} — {resumo}
|
|
111
|
-
3. Documentacao automatica: {PASS/FAIL} — {resumo}
|
|
112
|
-
4. Diagnostico: {PASS/FAIL} — {resumo}
|
|
113
|
-
|
|
114
|
-
Resultado: {3/4 ou 4/4}
|
|
115
|
-
|
|
116
|
-
{Se >=3: "Worker operacional. Quer ativar?"}
|
|
117
|
-
{Se <3: "Precisa de ajustes em {areas}. Vou corrigir."}
|
|
118
|
-
```
|
|
119
|
-
|
|
120
|
-
## Ativacao
|
|
121
|
-
|
|
122
|
-
Se usuario aprovar:
|
|
123
|
-
|
|
124
|
-
1. Mover worker de `agents/worker-forge/output/{slug}/` para `agents/{slug}/`
|
|
125
|
-
2. Registrar skill no `.claude/commands/{slashPrefix}.md`
|
|
126
|
-
3. Confirmar:
|
|
127
|
-
|
|
128
|
-
```
|
|
129
|
-
Worker ativado!
|
|
130
|
-
|
|
131
|
-
Comando: /{slashPrefix}
|
|
132
|
-
Skill: agents/{slug}/skill.md
|
|
133
|
-
|
|
134
|
-
Ele ta pronto pra receber missoes.
|
|
135
|
-
```
|
|
136
|
-
|
|
137
|
-
## Quality Gate: QG-WF-005
|
|
138
|
-
|
|
139
|
-
| Criterio | Obrigatorio |
|
|
140
|
-
|----------|-------------|
|
|
141
|
-
| >= 3/4 smoke tests passaram | Sim |
|
|
142
|
-
| Usuario aprovou | Sim |
|
|
143
|
-
|
|
144
|
-
**Veto:** < 2/4 smoke tests, usuario rejeitou.
|
|
145
|
-
|
|
146
|
-
## Error Handling
|
|
147
|
-
|
|
148
|
-
| Cenario | Acao |
|
|
149
|
-
|---------|------|
|
|
150
|
-
| Smoke test falha por KB rasa | Voltar pra Research, enriquecer KB |
|
|
151
|
-
| Smoke test falha por agent mal definido | Corrigir agent.md, re-testar |
|
|
152
|
-
| Usuario quer ajustes | Integrar, re-montar, re-testar |
|
|
153
|
-
| Worker funciona mas usuario nao gosta do tom | Ajustar personalidade no agent.md |
|
|
154
|
-
| PRD fulfillment encontra gap critico | Voltar pra Assembly (Fase 4), corrigir, re-validar |
|
|
155
|
-
| WORKER-PRD nao encontrado | Pular PRD check, executar smoke tests normalmente (pipeline legacy) |
|
|
@@ -1,96 +0,0 @@
|
|
|
1
|
-
name: "wf-worker-forge"
|
|
2
|
-
version: "1.0.0"
|
|
3
|
-
description: >
|
|
4
|
-
Pipeline de 6 fases para criar funcionarios digitais (workers) com KB viva.
|
|
5
|
-
Discovery profundo -> Research externo/interno -> Proposta -> Playback -> Assembly -> Validacao.
|
|
6
|
-
trigger: "/workerForge ou *start"
|
|
7
|
-
|
|
8
|
-
phases:
|
|
9
|
-
- phase: 0
|
|
10
|
-
name: "Discovery"
|
|
11
|
-
description: "Captar tudo que a pessoa pensa/precisa do worker"
|
|
12
|
-
tasks:
|
|
13
|
-
- "start"
|
|
14
|
-
- "discover-needs"
|
|
15
|
-
agent: "@worker-chief"
|
|
16
|
-
blocking: true
|
|
17
|
-
quality_gate: "QG-WF-001"
|
|
18
|
-
|
|
19
|
-
- phase: 1
|
|
20
|
-
name: "Research"
|
|
21
|
-
description: "Pesquisar ferramentas externas + coletar docs internos + montar KB rascunho"
|
|
22
|
-
tasks:
|
|
23
|
-
- "research-domain"
|
|
24
|
-
agent: "@knowledge-curator"
|
|
25
|
-
blocking: true
|
|
26
|
-
quality_gate: "QG-WF-002"
|
|
27
|
-
|
|
28
|
-
- phase: 2
|
|
29
|
-
name: "Proposal"
|
|
30
|
-
description: "Montar proposta completa do worker (Role + KB + Modos + Tasks)"
|
|
31
|
-
tasks:
|
|
32
|
-
- "propose-worker"
|
|
33
|
-
agent: "@worker-chief"
|
|
34
|
-
delegates_to:
|
|
35
|
-
- "@role-designer"
|
|
36
|
-
- "@knowledge-curator"
|
|
37
|
-
blocking: true
|
|
38
|
-
# Sem QG proprio — output validado pelo usuario no Playback (Phase 3, QG-WF-003)
|
|
39
|
-
|
|
40
|
-
- phase: 3
|
|
41
|
-
name: "Playback"
|
|
42
|
-
description: "Apresentar proposta ao usuario e coletar aprovacao"
|
|
43
|
-
tasks:
|
|
44
|
-
- "playback-validate"
|
|
45
|
-
agent: "@worker-chief"
|
|
46
|
-
blocking: true
|
|
47
|
-
quality_gate: "QG-WF-003"
|
|
48
|
-
|
|
49
|
-
- phase: 4
|
|
50
|
-
name: "Assembly"
|
|
51
|
-
description: "Construir worker Auroq completo"
|
|
52
|
-
tasks:
|
|
53
|
-
- "assemble-worker"
|
|
54
|
-
agent: "@worker-smith"
|
|
55
|
-
blocking: true
|
|
56
|
-
quality_gate: "QG-WF-004"
|
|
57
|
-
|
|
58
|
-
- phase: 5
|
|
59
|
-
name: "Validation"
|
|
60
|
-
description: "Smoke tests + aprovacao do usuario"
|
|
61
|
-
tasks:
|
|
62
|
-
- "validate-worker"
|
|
63
|
-
agent: "@worker-chief"
|
|
64
|
-
blocking: true
|
|
65
|
-
quality_gate: "QG-WF-005"
|
|
66
|
-
|
|
67
|
-
quality_gates:
|
|
68
|
-
- id: "QG-WF-001"
|
|
69
|
-
name: "Discovery Complete"
|
|
70
|
-
transition: "phase_0 -> phase_1"
|
|
71
|
-
blocking: true
|
|
72
|
-
criteria: "Proposito claro, >=3 duties, >=1 ferramenta, autonomia definida, >=1 criterio de sucesso"
|
|
73
|
-
|
|
74
|
-
- id: "QG-WF-002"
|
|
75
|
-
name: "Research Adequate"
|
|
76
|
-
transition: "phase_1 -> phase_2"
|
|
77
|
-
blocking: true
|
|
78
|
-
criteria: "Cada ferramenta core pesquisada, integracoes mapeadas, KB rascunho >=300 linhas"
|
|
79
|
-
|
|
80
|
-
- id: "QG-WF-003"
|
|
81
|
-
name: "User Validated"
|
|
82
|
-
transition: "phase_3 -> phase_4"
|
|
83
|
-
blocking: true
|
|
84
|
-
criteria: "Usuario aprovou proposta completa"
|
|
85
|
-
|
|
86
|
-
- id: "QG-WF-004"
|
|
87
|
-
name: "Structure Valid"
|
|
88
|
-
transition: "phase_4 -> phase_5"
|
|
89
|
-
blocking: true
|
|
90
|
-
criteria: "Self-check + validator pass, 0 errors"
|
|
91
|
-
|
|
92
|
-
- id: "QG-WF-005"
|
|
93
|
-
name: "Operational Readiness"
|
|
94
|
-
transition: "phase_5 -> done"
|
|
95
|
-
blocking: true
|
|
96
|
-
criteria: ">=3/4 smoke tests + usuario aprova"
|
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
# AUROQ-2.1.0 — Runtime Hibrido Claude Code + Codex
|
|
2
|
-
|
|
3
|
-
**Status:** InReview
|
|
4
|
-
**Origem:** pedido direto do mantenedor em 2026-06-09
|
|
5
|
-
**Release alvo:** 2.1.0
|
|
6
|
-
|
|
7
|
-
## Objetivo
|
|
8
|
-
|
|
9
|
-
Entregar o Auroq OS pronto para o aluno operar no Claude Code ou no Codex CLI, com as mesmas fontes de verdade, agentes, boundaries e fluxo de atualizacao.
|
|
10
|
-
|
|
11
|
-
## Acceptance Criteria
|
|
12
|
-
|
|
13
|
-
- [x] O instalador gera skills em `.agents/skills`, local oficial do Codex, sem poluir o namespace global do aluno.
|
|
14
|
-
- [x] O sync possui ownership, collision guard, check real de drift e execucao fora da raiz.
|
|
15
|
-
- [x] Comandos e agentes criados pelo aluno entram no sync sem lista hardcoded.
|
|
16
|
-
- [x] O Ops atualiza e valida a camada Codex junto com o framework.
|
|
17
|
-
- [x] Constitution, README, AGENTS e onboarding descrevem Claude Code e Codex como runtimes equivalentes.
|
|
18
|
-
- [x] Quality gates e testes automatizados passam.
|
|
19
|
-
- [x] O pacote npm inclui todos os arquivos necessarios para instalar a camada hibrida.
|
|
20
|
-
|
|
21
|
-
## Tasks
|
|
22
|
-
|
|
23
|
-
- [x] Reescrever o sync Codex.
|
|
24
|
-
- [x] Integrar sync/check ao instalador e ao Ops.
|
|
25
|
-
- [x] Criar validacao e testes de distribuicao.
|
|
26
|
-
- [x] Atualizar documentacao e versionamento.
|
|
27
|
-
- [x] Executar pack dry-run, smoke test do instalador e quality gates.
|
|
28
|
-
|
|
29
|
-
## File List
|
|
30
|
-
|
|
31
|
-
- `.auroq-core/constitution.md`
|
|
32
|
-
- `.auroq-core/core-config.yaml`
|
|
33
|
-
- `.claude/CLAUDE.md`
|
|
34
|
-
- `.claude/commands/AuroqOS/agents/ops.md`
|
|
35
|
-
- `.gitignore`
|
|
36
|
-
- `AGENTS.md`
|
|
37
|
-
- `CHANGELOG.md`
|
|
38
|
-
- `README.md`
|
|
39
|
-
- `agents/companion/knowledge/system-guide.md`
|
|
40
|
-
- `agents/consultor/knowledge/01-arquitetura-e-engenharia.md`
|
|
41
|
-
- `bin/auroq-os.js`
|
|
42
|
-
- `docs/stories/AUROQ-2.1.0-hybrid-runtime.md`
|
|
43
|
-
- `package.json`
|
|
44
|
-
- `package-lock.json`
|
|
45
|
-
- `scripts/sync-codex-skills.mjs`
|
|
46
|
-
- `scripts/validate-hybrid.mjs`
|
|
47
|
-
- `tests/installer-hybrid.test.mjs`
|
|
48
|
-
- `tests/sync-codex-skills.test.mjs`
|
|
49
|
-
|
|
50
|
-
## Verification
|
|
51
|
-
|
|
52
|
-
- `npm run lint` — PASS
|
|
53
|
-
- `npm run typecheck` — PASS
|
|
54
|
-
- `npm test` — PASS (3 testes, incluindo install real em temp)
|
|
55
|
-
- `npm run build` — PASS (npm pack dry-run)
|
|
56
|
-
- `npm audit --audit-level=moderate` — PASS (0 vulnerabilidades)
|
|
57
|
-
- Conteudo do pacote: 275 arquivos; bridge, validador, story e testes presentes
|
|
58
|
-
|
|
59
|
-
## Log
|
|
60
|
-
|
|
61
|
-
- 2026-06-09 — Story criada e implementacao iniciada.
|
|
62
|
-
- 2026-06-09 — Implementacao concluida e movida para InReview.
|
|
63
|
-
- 2026-06-09 — Patch 2.1.1 removeu wrapper orfao do Squad Edicao e integrou o sync automatico do Pack Arcane.
|
|
64
|
-
- 2026-06-10 — Patch 2.1.2 separou o Step de credenciais do Bootstrap 2 e adicionou o gate 1Password/vault local no Ops.
|
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
import assert from 'node:assert/strict';
|
|
2
|
-
import { execFileSync } from 'node:child_process';
|
|
3
|
-
import fs from 'node:fs';
|
|
4
|
-
import os from 'node:os';
|
|
5
|
-
import path from 'node:path';
|
|
6
|
-
import test from 'node:test';
|
|
7
|
-
|
|
8
|
-
const root = fs.realpathSync(process.cwd());
|
|
9
|
-
|
|
10
|
-
test('installer entrega projeto hibrido funcional sem sobrescrever package scripts', () => {
|
|
11
|
-
const target = fs.mkdtempSync(path.join(os.tmpdir(), 'auroq-install-test-'));
|
|
12
|
-
const fakeHome = fs.mkdtempSync(path.join(os.tmpdir(), 'auroq-home-test-'));
|
|
13
|
-
try {
|
|
14
|
-
fs.writeFileSync(path.join(target, 'package.json'), `${JSON.stringify({
|
|
15
|
-
name: 'negocio-do-aluno',
|
|
16
|
-
private: true,
|
|
17
|
-
scripts: { negocio: 'echo preservado' },
|
|
18
|
-
}, null, 2)}\n`);
|
|
19
|
-
|
|
20
|
-
execFileSync(process.execPath, [path.join(root, 'bin', 'auroq-os.js'), 'init'], {
|
|
21
|
-
cwd: target,
|
|
22
|
-
env: { ...process.env, NODE_ENV: 'test', AUROQ_SKIP_AUTH: '1', HOME: fakeHome },
|
|
23
|
-
encoding: 'utf8',
|
|
24
|
-
stdio: 'pipe',
|
|
25
|
-
});
|
|
26
|
-
|
|
27
|
-
const installedPackage = JSON.parse(fs.readFileSync(path.join(target, 'package.json'), 'utf8'));
|
|
28
|
-
assert.equal(installedPackage.scripts.negocio, 'echo preservado');
|
|
29
|
-
assert.equal(installedPackage.scripts['auroq:sync:codex'], 'node scripts/sync-codex-skills.mjs --clean');
|
|
30
|
-
assert.ok(fs.existsSync(path.join(target, '.agents', 'skills', 'companion', 'SKILL.md')));
|
|
31
|
-
assert.ok(fs.existsSync(path.join(target, '.agents', 'skills', 'ops', 'SKILL.md')));
|
|
32
|
-
assert.equal(fs.existsSync(path.join(fakeHome, '.agents', 'skills')), false);
|
|
33
|
-
|
|
34
|
-
const installedOps = fs.readFileSync(path.join(target, '.claude', 'commands', 'AuroqOS', 'agents', 'ops.md'), 'utf8');
|
|
35
|
-
assert.match(installedOps, /PRE-GATE OBRIGATORIO — sistema de senhas e credenciais/);
|
|
36
|
-
assert.match(installedOps, /Conectar agora pelo Ops \(RECOMENDADO se ele ja tem o token\)/);
|
|
37
|
-
assert.match(installedOps, /Voltar ao Step anterior da plataforma/);
|
|
38
|
-
assert.match(installedOps, /Seguir com vault local \(MENOS SEGURO\)/);
|
|
39
|
-
assert.match(installedOps, /\*conectar-1password/);
|
|
40
|
-
assert.doesNotMatch(installedOps, /#### 1\. 1Password — cofre cifrado/);
|
|
41
|
-
|
|
42
|
-
const check = execFileSync(process.execPath, [path.join(target, 'scripts', 'sync-codex-skills.mjs'), '--check'], {
|
|
43
|
-
cwd: os.tmpdir(),
|
|
44
|
-
encoding: 'utf8',
|
|
45
|
-
});
|
|
46
|
-
assert.match(check, /9 skills verificadas/);
|
|
47
|
-
|
|
48
|
-
const validation = execFileSync('npm', ['run', 'auroq:validate'], {
|
|
49
|
-
cwd: target,
|
|
50
|
-
encoding: 'utf8',
|
|
51
|
-
});
|
|
52
|
-
assert.match(validation, /Validacao hibrida passou \(9 comandos descobertos\)/);
|
|
53
|
-
|
|
54
|
-
fs.writeFileSync(path.join(target, '.claude', 'commands', 'squad-anuncios-arcane.md'), `# squad-anuncios-arcane
|
|
55
|
-
|
|
56
|
-
CRITICAL: Read and execute \`agents/squad-anuncios-arcane/tasks/start.md\`.
|
|
57
|
-
`);
|
|
58
|
-
fs.mkdirSync(path.join(target, 'agents', 'squad-anuncios-arcane', 'tasks'), { recursive: true });
|
|
59
|
-
fs.writeFileSync(path.join(target, 'agents', 'squad-anuncios-arcane', 'tasks', 'start.md'), '# Start\n');
|
|
60
|
-
execFileSync(process.execPath, [path.join(target, 'scripts', 'sync-codex-skills.mjs'), '--clean'], { cwd: target });
|
|
61
|
-
assert.ok(fs.existsSync(path.join(target, '.agents', 'skills', 'squad-anuncios-arcane', 'SKILL.md')));
|
|
62
|
-
} finally {
|
|
63
|
-
fs.rmSync(target, { recursive: true, force: true });
|
|
64
|
-
fs.rmSync(fakeHome, { recursive: true, force: true });
|
|
65
|
-
}
|
|
66
|
-
});
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
import { test } from 'node:test';
|
|
2
|
-
import assert from 'node:assert/strict';
|
|
3
|
-
import { createRequire } from 'node:module';
|
|
4
|
-
|
|
5
|
-
const require = createRequire(import.meta.url);
|
|
6
|
-
const { isValidToken, upsertEnvFileContent } = require('../lib/onepassword.js');
|
|
7
|
-
|
|
8
|
-
test('isValidToken aceita token de service account real', () => {
|
|
9
|
-
assert.equal(isValidToken('ops_' + 'a'.repeat(800)), true);
|
|
10
|
-
assert.equal(isValidToken('ops_eyJzaWduSW5BZGRyZXNzIjoibXkuMXBhc3N3b3JkLmNvbSJ9'), true);
|
|
11
|
-
});
|
|
12
|
-
|
|
13
|
-
test('isValidToken rejeita lixo do clipboard', () => {
|
|
14
|
-
assert.equal(isValidToken(''), false);
|
|
15
|
-
assert.equal(isValidToken('pbpaste > ~/.op-token'), false);
|
|
16
|
-
assert.equal(isValidToken('ops_'), false); // prefixo sem corpo
|
|
17
|
-
assert.equal(isValidToken('ops_curto'), false); // corpo curto demais
|
|
18
|
-
assert.equal(isValidToken('token ops_abc'), false); // nao comeca com ops_
|
|
19
|
-
assert.equal(isValidToken(null), false);
|
|
20
|
-
assert.equal(isValidToken(undefined), false);
|
|
21
|
-
});
|
|
22
|
-
|
|
23
|
-
test('upsertEnvFileContent adiciona o export em arquivo vazio', () => {
|
|
24
|
-
const out = upsertEnvFileContent('', 'ops_' + 'x'.repeat(40));
|
|
25
|
-
assert.match(out, /export OP_SERVICE_ACCOUNT_TOKEN='ops_x+'/);
|
|
26
|
-
assert.match(out, /gravado pelo Auroq OS/);
|
|
27
|
-
});
|
|
28
|
-
|
|
29
|
-
test('upsertEnvFileContent remove definicao antiga mas preserva comentarios do usuario', () => {
|
|
30
|
-
const existing = [
|
|
31
|
-
'export PATH="$HOME/bin:$PATH"',
|
|
32
|
-
'# comentario do usuario sobre OP_SERVICE_ACCOUNT_TOKEN — nao apagar',
|
|
33
|
-
"export OP_SERVICE_ACCOUNT_TOKEN='ops_velho1234567890123456789'",
|
|
34
|
-
" OP_SERVICE_ACCOUNT_TOKEN='ops_sem_export_indentado_123'",
|
|
35
|
-
'alias ll="ls -la"',
|
|
36
|
-
].join('\n');
|
|
37
|
-
const out = upsertEnvFileContent(existing, 'ops_' + 'n'.repeat(40));
|
|
38
|
-
assert.equal(out.includes('ops_velho'), false);
|
|
39
|
-
assert.equal(out.includes('ops_sem_export'), false);
|
|
40
|
-
// comentario do usuario que so MENCIONA a var fica intacto
|
|
41
|
-
assert.equal(out.includes('# comentario do usuario sobre OP_SERVICE_ACCOUNT_TOKEN'), true);
|
|
42
|
-
assert.equal(out.includes('export PATH="$HOME/bin:$PATH"'), true);
|
|
43
|
-
assert.equal(out.includes('alias ll="ls -la"'), true);
|
|
44
|
-
// exatamente UMA linha de export do token
|
|
45
|
-
const exports = out.split('\n').filter((l) => l.startsWith('export OP_SERVICE_ACCOUNT_TOKEN'));
|
|
46
|
-
assert.equal(exports.length, 1);
|
|
47
|
-
});
|
|
48
|
-
|
|
49
|
-
test('upsertEnvFileContent e idempotente', () => {
|
|
50
|
-
const token = 'ops_' + 'i'.repeat(40);
|
|
51
|
-
const once = upsertEnvFileContent('export FOO=bar', token);
|
|
52
|
-
const twice = upsertEnvFileContent(once, token);
|
|
53
|
-
assert.equal(once, twice);
|
|
54
|
-
});
|