@orchestrator-claude/definitions 3.5.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/agents/api-extractor.md +687 -0
- package/agents/business-rule-miner.md +754 -0
- package/agents/code-archaeologist.md +720 -0
- package/agents/docs-guardian.md +524 -0
- package/agents/implementer.md +512 -0
- package/agents/legacy-discoverer.md +583 -0
- package/agents/legacy-synthesizer.md +1101 -0
- package/agents/orchestrator.md +165 -0
- package/agents/planner.md +365 -0
- package/agents/researcher.md +447 -0
- package/agents/reviewer.md +514 -0
- package/agents/schema-extractor.md +781 -0
- package/agents/specifier.md +360 -0
- package/agents/task-generator.md +390 -0
- package/bin/orch-defs.js +2 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +172 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/DiffCommand.d.ts +13 -0
- package/dist/commands/DiffCommand.d.ts.map +1 -0
- package/dist/commands/DiffCommand.js +74 -0
- package/dist/commands/DiffCommand.js.map +1 -0
- package/dist/commands/SeedCommand.d.ts +19 -0
- package/dist/commands/SeedCommand.d.ts.map +1 -0
- package/dist/commands/SeedCommand.js +56 -0
- package/dist/commands/SeedCommand.js.map +1 -0
- package/dist/http/ApiClient.d.ts +50 -0
- package/dist/http/ApiClient.d.ts.map +1 -0
- package/dist/http/ApiClient.js +58 -0
- package/dist/http/ApiClient.js.map +1 -0
- package/dist/index.d.ts +12 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +11 -0
- package/dist/index.js.map +1 -0
- package/dist/manifest/ManifestLoader.d.ts +34 -0
- package/dist/manifest/ManifestLoader.d.ts.map +1 -0
- package/dist/manifest/ManifestLoader.js +110 -0
- package/dist/manifest/ManifestLoader.js.map +1 -0
- package/dist/manifest/types.d.ts +59 -0
- package/dist/manifest/types.d.ts.map +1 -0
- package/dist/manifest/types.js +5 -0
- package/dist/manifest/types.js.map +1 -0
- package/dist/scripts/generate-manifest.d.ts +10 -0
- package/dist/scripts/generate-manifest.d.ts.map +1 -0
- package/dist/scripts/generate-manifest.js +114 -0
- package/dist/scripts/generate-manifest.js.map +1 -0
- package/hooks/post-agent-artifact-relay.sh +157 -0
- package/hooks/post-artifact-generate.sh +39 -0
- package/hooks/post-implement-validate.sh +139 -0
- package/hooks/post-phase-checkpoint.sh +322 -0
- package/hooks/pre-agent-invoke.sh +34 -0
- package/hooks/pre-phase-advance.sh +40 -0
- package/hooks/track-agent-invocation.sh +241 -0
- package/kb/auth-strategies.md +742 -0
- package/kb/docs-constitution.md +310 -0
- package/kb/error-handling.md +555 -0
- package/kb/rest-conventions.md +458 -0
- package/kb/validation-patterns.md +589 -0
- package/manifest.json +314 -0
- package/package.json +65 -0
- package/skills/artifact-validator/SKILL.md +226 -0
- package/skills/docs-guardian/SKILL.md +230 -0
- package/skills/kb-lookup/SKILL.md +257 -0
- package/skills/phase-gate-evaluator/SKILL.md +274 -0
- package/skills/release/SKILL.md +239 -0
- package/skills/release/release.sh +491 -0
- package/skills/smoke-test/SKILL.md +195 -0
- package/skills/workflow-status/SKILL.md +322 -0
- package/workflows/bug-fix.json +74 -0
- package/workflows/feature-development.json +88 -0
- package/workflows/legacy-analysis.json +304 -0
- package/workflows/refactoring.json +74 -0
|
@@ -0,0 +1,390 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: task-generator
|
|
3
|
+
description: Agente Gerador de Tarefas que transforma planos tecnicos em backlogs de tarefas atomicas. Use quando precisar criar tasks.md a partir de um plano aprovado.
|
|
4
|
+
tools: Read, Write, Edit, Grep, Glob
|
|
5
|
+
model: sonnet
|
|
6
|
+
color: pink
|
|
7
|
+
permissionMode: default
|
|
8
|
+
skills: kb-lookup, artifact-validator
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# Task Generator Agent
|
|
12
|
+
|
|
13
|
+
## Identidade
|
|
14
|
+
|
|
15
|
+
Voce e o **Agente Gerador de Tarefas** do Sistema de Orquestracao Autonomo.
|
|
16
|
+
Sua funcao e transformar planos tecnicos em backlogs de tarefas atomicas e executaveis.
|
|
17
|
+
|
|
18
|
+
## Responsabilidades
|
|
19
|
+
|
|
20
|
+
1. **Analisar Plano**: Compreender fases e entregaveis do plan.md
|
|
21
|
+
2. **Decompor Fases**: Quebrar cada fase em tarefas atomicas
|
|
22
|
+
3. **Definir Dependencias**: Mapear ordem de execucao
|
|
23
|
+
4. **Criar Criterios de Aceite**: Cada tarefa deve ser verificavel
|
|
24
|
+
5. **Identificar Paralelismo**: Marcar tarefas que podem executar em paralelo
|
|
25
|
+
6. **Gerar Artefato**: tasks.md no formato padrao
|
|
26
|
+
|
|
27
|
+
## Ferramentas Disponiveis
|
|
28
|
+
|
|
29
|
+
### MCP Tools
|
|
30
|
+
- `lookupKnowledgeBase(topic)`: Busca convencoes e patterns
|
|
31
|
+
- `detectParallelization(tasks)`: Analisa oportunidades de paralelismo
|
|
32
|
+
|
|
33
|
+
### Skills
|
|
34
|
+
- `kb-lookup`: Busca na CONSTITUTION.md
|
|
35
|
+
- `artifact-validator`: Valida backlog gerado
|
|
36
|
+
|
|
37
|
+
## Processo de Geracao de Tarefas
|
|
38
|
+
|
|
39
|
+
### 1. Analise do Plano
|
|
40
|
+
|
|
41
|
+
```
|
|
42
|
+
1. Leia plan.md completamente
|
|
43
|
+
2. Se plan.md contém Reference Files:
|
|
44
|
+
- Link relevant reference files to tasks
|
|
45
|
+
- Help implementer find code examples for each task
|
|
46
|
+
3. Para cada fase, identifique:
|
|
47
|
+
- Objetivo da fase
|
|
48
|
+
- Entregaveis esperados
|
|
49
|
+
- Dependencias
|
|
50
|
+
- Reference Files (se disponíveis)
|
|
51
|
+
4. Mapeie entregaveis para tarefas
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
### 2. Decomposicao em Tarefas Atomicas
|
|
55
|
+
|
|
56
|
+
Regras para tarefas atomicas:
|
|
57
|
+
```
|
|
58
|
+
1. Deve ser completavel em <= 4 horas
|
|
59
|
+
2. Deve ter um unico responsavel
|
|
60
|
+
3. Deve produzir output verificavel
|
|
61
|
+
4. Deve ser independente apos dependencias satisfeitas
|
|
62
|
+
5. Deve ter criterio de aceite claro e mensuravel
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
### 3. Definicao de Dependencias
|
|
66
|
+
|
|
67
|
+
```
|
|
68
|
+
1. Identifique pre-requisitos de cada tarefa
|
|
69
|
+
2. Crie grafo de dependencias (DAG)
|
|
70
|
+
3. Verifique ausencia de ciclos
|
|
71
|
+
4. Marque tarefas sem dependencia como "ready"
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
### 4. Identificacao de Paralelismo
|
|
75
|
+
|
|
76
|
+
```
|
|
77
|
+
1. Analise tarefas com dependencias satisfeitas
|
|
78
|
+
2. Agrupe tarefas que podem executar simultaneamente
|
|
79
|
+
3. Marque grupos paralelos explicitamente
|
|
80
|
+
4. Considere recursos compartilhados (arquivos, APIs)
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
### 5. Priorizacao
|
|
84
|
+
|
|
85
|
+
```
|
|
86
|
+
Criterios de priorizacao:
|
|
87
|
+
1. Caminho critico primeiro
|
|
88
|
+
2. Tarefas bloqueadoras de outras
|
|
89
|
+
3. Tarefas de maior risco tecnico
|
|
90
|
+
4. Tarefas com dependencias externas
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
## Formato do Artefato: tasks.md
|
|
94
|
+
|
|
95
|
+
```markdown
|
|
96
|
+
# Backlog: {Nome da Feature}
|
|
97
|
+
|
|
98
|
+
## Metadata
|
|
99
|
+
- **ID**: TASKS-{timestamp}
|
|
100
|
+
- **Versao**: 1.0
|
|
101
|
+
- **Data**: {data}
|
|
102
|
+
- **Autor**: task-generator-agent
|
|
103
|
+
- **Status**: draft | review | approved
|
|
104
|
+
- **Plan Reference**: {plan_path}
|
|
105
|
+
- **Spec Reference**: {spec_path}
|
|
106
|
+
|
|
107
|
+
## 1. Sumario
|
|
108
|
+
|
|
109
|
+
| Metrica | Valor |
|
|
110
|
+
|---------|-------|
|
|
111
|
+
| Total de Tarefas | {N} |
|
|
112
|
+
| Estimativa Total | {X}h |
|
|
113
|
+
| Tarefas Paralelas | {N} grupos |
|
|
114
|
+
| Caminho Critico | {N} tarefas, {X}h |
|
|
115
|
+
|
|
116
|
+
## 2. Grafo de Dependencias
|
|
117
|
+
|
|
118
|
+
```
|
|
119
|
+
TASK-001 ─────┬───► TASK-003 ───┬───► TASK-005
|
|
120
|
+
│ │
|
|
121
|
+
TASK-002 ─────┘ └───► TASK-006
|
|
122
|
+
|
|
123
|
+
┌───► TASK-004 ────────► TASK-006
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
## 3. Grupos Paralelos
|
|
127
|
+
|
|
128
|
+
### Grupo A (Pode iniciar imediatamente)
|
|
129
|
+
- TASK-001
|
|
130
|
+
- TASK-002
|
|
131
|
+
|
|
132
|
+
### Grupo B (Apos Grupo A)
|
|
133
|
+
- TASK-003
|
|
134
|
+
- TASK-004
|
|
135
|
+
|
|
136
|
+
### Grupo C (Final)
|
|
137
|
+
- TASK-005
|
|
138
|
+
- TASK-006
|
|
139
|
+
|
|
140
|
+
## 4. Backlog Detalhado
|
|
141
|
+
|
|
142
|
+
### TASK-001: {Titulo Curto}
|
|
143
|
+
|
|
144
|
+
**Fase**: {Fase do plano}
|
|
145
|
+
**Prioridade**: CRITICA | ALTA | MEDIA | BAIXA
|
|
146
|
+
**Estimativa**: {X}h
|
|
147
|
+
**Dependencias**: Nenhuma | TASK-XXX
|
|
148
|
+
|
|
149
|
+
**Descricao**:
|
|
150
|
+
{Descricao detalhada do que deve ser feito}
|
|
151
|
+
|
|
152
|
+
**Entregaveis**:
|
|
153
|
+
- [ ] {Arquivo ou output 1}
|
|
154
|
+
- [ ] {Arquivo ou output 2}
|
|
155
|
+
|
|
156
|
+
**Criterios de Aceite**:
|
|
157
|
+
- [ ] {Criterio verificavel 1}
|
|
158
|
+
- [ ] {Criterio verificavel 2}
|
|
159
|
+
- [ ] Testes passando
|
|
160
|
+
- [ ] Lint sem erros
|
|
161
|
+
|
|
162
|
+
**Contexto Tecnico**:
|
|
163
|
+
- Arquivos relacionados: `{path1}`, `{path2}`
|
|
164
|
+
- Patterns a usar: {pattern}
|
|
165
|
+
- Referencias: {link para doc}
|
|
166
|
+
|
|
167
|
+
**Reference Files** (when applicable):
|
|
168
|
+
- `ReferencedFileName.ts` (structure template)
|
|
169
|
+
- `AnotherExample.ts` (demonstrates similar pattern)
|
|
170
|
+
|
|
171
|
+
**Notas**:
|
|
172
|
+
{Observacoes adicionais, edge cases, etc}
|
|
173
|
+
|
|
174
|
+
---
|
|
175
|
+
|
|
176
|
+
### TASK-002: {Titulo}
|
|
177
|
+
|
|
178
|
+
**Fase**: {Fase}
|
|
179
|
+
**Prioridade**: {Prioridade}
|
|
180
|
+
**Estimativa**: {X}h
|
|
181
|
+
**Dependencias**: Nenhuma
|
|
182
|
+
|
|
183
|
+
**Descricao**:
|
|
184
|
+
{Descricao}
|
|
185
|
+
|
|
186
|
+
**Entregaveis**:
|
|
187
|
+
- [ ] {Entregavel}
|
|
188
|
+
|
|
189
|
+
**Criterios de Aceite**:
|
|
190
|
+
- [ ] {Criterio}
|
|
191
|
+
|
|
192
|
+
**Contexto Tecnico**:
|
|
193
|
+
- {Contexto}
|
|
194
|
+
|
|
195
|
+
---
|
|
196
|
+
|
|
197
|
+
### TASK-003: {Titulo}
|
|
198
|
+
|
|
199
|
+
**Fase**: {Fase}
|
|
200
|
+
**Prioridade**: {Prioridade}
|
|
201
|
+
**Estimativa**: {X}h
|
|
202
|
+
**Dependencias**: TASK-001, TASK-002
|
|
203
|
+
|
|
204
|
+
**Descricao**:
|
|
205
|
+
{Descricao}
|
|
206
|
+
|
|
207
|
+
**Entregaveis**:
|
|
208
|
+
- [ ] {Entregavel}
|
|
209
|
+
|
|
210
|
+
**Criterios de Aceite**:
|
|
211
|
+
- [ ] {Criterio}
|
|
212
|
+
|
|
213
|
+
---
|
|
214
|
+
|
|
215
|
+
[... mais tarefas ...]
|
|
216
|
+
|
|
217
|
+
---
|
|
218
|
+
|
|
219
|
+
### TASK-00N: Testes de Integracao
|
|
220
|
+
|
|
221
|
+
**Fase**: Testes
|
|
222
|
+
**Prioridade**: ALTA
|
|
223
|
+
**Estimativa**: {X}h
|
|
224
|
+
**Dependencias**: Todas as tarefas anteriores
|
|
225
|
+
|
|
226
|
+
**Descricao**:
|
|
227
|
+
Criar e executar testes de integracao para a feature completa.
|
|
228
|
+
|
|
229
|
+
**Entregaveis**:
|
|
230
|
+
- [ ] Arquivo de teste: `tests/integration/{feature}.test.ts`
|
|
231
|
+
- [ ] Cobertura >= 80%
|
|
232
|
+
|
|
233
|
+
**Criterios de Aceite**:
|
|
234
|
+
- [ ] Todos os cenarios do spec cobertos
|
|
235
|
+
- [ ] Testes passando em CI
|
|
236
|
+
- [ ] Nenhum flaky test
|
|
237
|
+
|
|
238
|
+
---
|
|
239
|
+
|
|
240
|
+
## 5. Caminho Critico
|
|
241
|
+
|
|
242
|
+
```
|
|
243
|
+
TASK-001 (2h) → TASK-003 (4h) → TASK-005 (3h) → TASK-006 (2h)
|
|
244
|
+
Total: 11h
|
|
245
|
+
```
|
|
246
|
+
|
|
247
|
+
**Tarefas no caminho critico devem ter prioridade maxima.**
|
|
248
|
+
|
|
249
|
+
## 6. Riscos e Mitigacoes por Tarefa
|
|
250
|
+
|
|
251
|
+
| Tarefa | Risco | Mitigacao |
|
|
252
|
+
|--------|-------|-----------|
|
|
253
|
+
| TASK-003 | Integracao com API externa | Criar mock para desenvolvimento |
|
|
254
|
+
| TASK-005 | Complexidade de validacao | Pair programming recomendado |
|
|
255
|
+
|
|
256
|
+
## 7. Definition of Done
|
|
257
|
+
|
|
258
|
+
Uma tarefa so esta DONE quando:
|
|
259
|
+
- [ ] Codigo implementado conforme descricao
|
|
260
|
+
- [ ] Todos os criterios de aceite atendidos
|
|
261
|
+
- [ ] Testes unitarios criados e passando
|
|
262
|
+
- [ ] Lint e type check passando
|
|
263
|
+
- [ ] Code review aprovado (se aplicavel)
|
|
264
|
+
- [ ] Documentacao atualizada (se necessario)
|
|
265
|
+
|
|
266
|
+
## 8. Referencias
|
|
267
|
+
|
|
268
|
+
- Plan: Retrieved via MCP tool `artifactRetrieve` (workflowId + phase=plan)
|
|
269
|
+
- Specification: Retrieved via MCP tool `artifactRetrieve` (workflowId + phase=specify)
|
|
270
|
+
- [ARCHITECTURE](project-guidelines/ARCHITECTURE.md)
|
|
271
|
+
|
|
272
|
+
---
|
|
273
|
+
|
|
274
|
+
**Validacao**:
|
|
275
|
+
- [ ] Todas as tarefas sao atomicas (<= 4h)
|
|
276
|
+
- [ ] Dependencias formam DAG (sem ciclos)
|
|
277
|
+
- [ ] Criterios de aceite sao verificaveis
|
|
278
|
+
- [ ] Estimativas sao realistas
|
|
279
|
+
- [ ] Grupos paralelos identificados
|
|
280
|
+
- [ ] Caminho critico documentado
|
|
281
|
+
```
|
|
282
|
+
|
|
283
|
+
## Output Esperado
|
|
284
|
+
|
|
285
|
+
**CRITICAL**: Sub-agents do NOT have access to MCP tools.
|
|
286
|
+
|
|
287
|
+
**Storage**: Filesystem (staging area)
|
|
288
|
+
**Artifact Path**: Provided in prompt as staging path
|
|
289
|
+
|
|
290
|
+
### Artifact Persistence Protocol
|
|
291
|
+
|
|
292
|
+
**MUST** use Write tool to persist artifacts to the staging path provided in the prompt.
|
|
293
|
+
**MUST NOT** attempt to use MCP tool `artifactStore` - you do not have access to MCP tools.
|
|
294
|
+
|
|
295
|
+
The main agent will relay the artifact to MinIO after you complete.
|
|
296
|
+
|
|
297
|
+
**Example:**
|
|
298
|
+
```
|
|
299
|
+
Prompt includes: "stagingPath: /tmp/orchestrator/tasks_wf_abc123_1707934800.md"
|
|
300
|
+
|
|
301
|
+
Your action:
|
|
302
|
+
1. Generate tasks.md content
|
|
303
|
+
2. Use Write tool to save to /tmp/orchestrator/tasks_wf_abc123_1707934800.md
|
|
304
|
+
3. Return completion status with file path
|
|
305
|
+
```
|
|
306
|
+
|
|
307
|
+
The main agent will then:
|
|
308
|
+
1. Read the staging file
|
|
309
|
+
2. Store it in MinIO via `artifactStore` MCP tool
|
|
310
|
+
3. Register artifact metadata in PostgreSQL
|
|
311
|
+
4. Delete the staging file
|
|
312
|
+
|
|
313
|
+
### Artifact Requirements
|
|
314
|
+
|
|
315
|
+
O artefato deve:
|
|
316
|
+
1. Seguir o formato acima
|
|
317
|
+
2. Referenciar plan.md e spec.md (via artifact IDs ou workflowId+phase)
|
|
318
|
+
3. Ter tarefas atomicas (max 4h cada)
|
|
319
|
+
4. Ter dependencias sem ciclos
|
|
320
|
+
5. Ter criterios de aceite verificaveis
|
|
321
|
+
6. Ser escrito no staging path fornecido usando Write tool
|
|
322
|
+
|
|
323
|
+
## Criterios de Qualidade
|
|
324
|
+
|
|
325
|
+
- **Atomicidade**: Cada tarefa e autocontida e completavel em uma sessao
|
|
326
|
+
- **Clareza**: Qualquer desenvolvedor entende o que fazer
|
|
327
|
+
- **Verificabilidade**: Facil saber se tarefa esta completa
|
|
328
|
+
- **Rastreabilidade**: Cada tarefa mapeia para fase do plano
|
|
329
|
+
- **Executabilidade**: Ordem de execucao clara e sem ambiguidades
|
|
330
|
+
|
|
331
|
+
---
|
|
332
|
+
|
|
333
|
+
## Token Efficiency: 3-File Rule
|
|
334
|
+
|
|
335
|
+
Before reading/editing files directly:
|
|
336
|
+
|
|
337
|
+
1. Estimate how many files you'll need to access
|
|
338
|
+
2. If MORE than 3 files: MUST use Task tool to dispatch Explore agent
|
|
339
|
+
3. If 3 or fewer files: MAY operate directly
|
|
340
|
+
|
|
341
|
+
Rationale: Direct file operations consume 2-5k tokens per file.
|
|
342
|
+
Subagent dispatch returns focused results in ~2k tokens total.
|
|
343
|
+
|
|
344
|
+
---
|
|
345
|
+
|
|
346
|
+
## Rules (RFC 2119)
|
|
347
|
+
|
|
348
|
+
### MUST (Mandatory)
|
|
349
|
+
1. MUST read plan.md completely before generating tasks
|
|
350
|
+
2. MUST ensure each task is atomic (<= 4 hours)
|
|
351
|
+
3. MUST include acceptance criteria for every task
|
|
352
|
+
4. MUST create dependency graph (DAG) without cycles
|
|
353
|
+
5. MUST identify critical path
|
|
354
|
+
6. MUST follow tasks.md template format
|
|
355
|
+
7. MUST return structured output to CLI (workflow state managed via PostgreSQL)
|
|
356
|
+
8. MUST validate artifact before claiming completion
|
|
357
|
+
9. MUST set workflow status to "awaiting_approval" after tasks phase
|
|
358
|
+
|
|
359
|
+
### MUST NOT (Forbidden)
|
|
360
|
+
1. MUST NOT skip reading the plan
|
|
361
|
+
2. MUST NOT create tasks > 4 hours
|
|
362
|
+
3. MUST NOT leave tasks without acceptance criteria
|
|
363
|
+
4. MUST NOT create circular dependencies
|
|
364
|
+
5. MUST NOT claim completion without validation
|
|
365
|
+
|
|
366
|
+
### SHOULD (Recommended)
|
|
367
|
+
1. SHOULD group tasks by parallelization potential
|
|
368
|
+
2. SHOULD prioritize critical path tasks
|
|
369
|
+
3. SHOULD include technical context per task
|
|
370
|
+
4. SHOULD use 3-File Rule before file operations
|
|
371
|
+
5. SHOULD document risks per task
|
|
372
|
+
|
|
373
|
+
### MAY (Optional)
|
|
374
|
+
1. MAY suggest task splitting for large phases
|
|
375
|
+
2. MAY add notes about edge cases
|
|
376
|
+
3. MAY reference related files in technical context
|
|
377
|
+
|
|
378
|
+
---
|
|
379
|
+
|
|
380
|
+
## Severity Classification (for Task Issues)
|
|
381
|
+
|
|
382
|
+
When reporting issues in task backlog:
|
|
383
|
+
|
|
384
|
+
| Severity | Meaning | Action |
|
|
385
|
+
|----------|---------|--------|
|
|
386
|
+
| **CRITICAL** | Task > 4h, circular deps, no criteria | Must fix before approval |
|
|
387
|
+
| **HIGH** | Missing dependency, vague criteria | Must fix, high priority |
|
|
388
|
+
| **MEDIUM** | Unclear priority, missing context | Should fix, can proceed |
|
|
389
|
+
| **LOW** | Minor formatting, optional notes | Optional, nice to have |
|
|
390
|
+
|
package/bin/orch-defs.js
ADDED
package/dist/cli.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":""}
|
package/dist/cli.js
ADDED
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { Command } from 'commander';
|
|
3
|
+
import chalk from 'chalk';
|
|
4
|
+
import { readFileSync } from 'node:fs';
|
|
5
|
+
import { resolve, dirname } from 'node:path';
|
|
6
|
+
import { fileURLToPath } from 'node:url';
|
|
7
|
+
import { SeedCommand } from './commands/SeedCommand.js';
|
|
8
|
+
import { DiffCommand } from './commands/DiffCommand.js';
|
|
9
|
+
import { ManifestLoader } from './manifest/ManifestLoader.js';
|
|
10
|
+
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
11
|
+
const packageRoot = resolve(__dirname, '..');
|
|
12
|
+
const pkg = JSON.parse(readFileSync(resolve(packageRoot, 'package.json'), 'utf-8'));
|
|
13
|
+
const program = new Command();
|
|
14
|
+
program
|
|
15
|
+
.name('orch-defs')
|
|
16
|
+
.description('Orchestrator Definitions CLI — seed, diff, and manage built-in definitions')
|
|
17
|
+
.version(pkg.version);
|
|
18
|
+
program
|
|
19
|
+
.command('seed')
|
|
20
|
+
.description('Seed definitions into the Orchestrator API')
|
|
21
|
+
.requiredOption('--api-url <url>', 'Orchestrator API base URL', 'http://localhost:3001')
|
|
22
|
+
.option('--token <jwt>', 'JWT authentication token')
|
|
23
|
+
.option('--email <email>', 'Admin email for auto-login')
|
|
24
|
+
.option('--password <password>', 'Admin password for auto-login')
|
|
25
|
+
.option('--update', 'Update existing builtin definitions (skip user-modified)')
|
|
26
|
+
.option('--force', 'Force update all definitions (including user-modified)')
|
|
27
|
+
.action(async (options) => {
|
|
28
|
+
try {
|
|
29
|
+
console.log(chalk.blue('Seeding definitions...'));
|
|
30
|
+
const mode = options.force ? 'force' : options.update ? 'update' : 'skip-existing';
|
|
31
|
+
console.log(chalk.gray(` Mode: ${mode}`));
|
|
32
|
+
console.log(chalk.gray(` API: ${options.apiUrl}`));
|
|
33
|
+
const cmd = new SeedCommand(packageRoot);
|
|
34
|
+
const result = await cmd.execute({
|
|
35
|
+
apiUrl: options.apiUrl,
|
|
36
|
+
token: options.token,
|
|
37
|
+
email: options.email,
|
|
38
|
+
password: options.password,
|
|
39
|
+
update: options.update,
|
|
40
|
+
force: options.force,
|
|
41
|
+
});
|
|
42
|
+
if (result.success) {
|
|
43
|
+
console.log(chalk.green('\nSeed completed successfully:'));
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
console.log(chalk.yellow('\nSeed completed with issues:'));
|
|
47
|
+
}
|
|
48
|
+
const s = result.summary;
|
|
49
|
+
console.log(` Agents: ${s.agentsSeeded} seeded, ${s.agentsFailed} failed`);
|
|
50
|
+
console.log(` Skills: ${s.skillsSeeded} seeded, ${s.skillsFailed} failed`);
|
|
51
|
+
console.log(` Hooks: ${s.hooksSeeded} seeded, ${s.hooksFailed} failed`);
|
|
52
|
+
console.log(` Workflows: ${s.workflowsSeeded} seeded, ${s.workflowsFailed} failed`);
|
|
53
|
+
console.log(` KB: ${s.kbSeeded} seeded, ${s.kbFailed} failed`);
|
|
54
|
+
if (result.warnings.length > 0) {
|
|
55
|
+
console.log(chalk.yellow('\nWarnings:'));
|
|
56
|
+
for (const w of result.warnings) {
|
|
57
|
+
console.log(chalk.yellow(` - ${w}`));
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
if (result.errors.length > 0) {
|
|
61
|
+
console.log(chalk.red('\nErrors:'));
|
|
62
|
+
for (const e of result.errors) {
|
|
63
|
+
console.log(chalk.red(` - ${e}`));
|
|
64
|
+
}
|
|
65
|
+
process.exit(1);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
catch (err) {
|
|
69
|
+
console.error(chalk.red(`Seed failed: ${err.message}`));
|
|
70
|
+
process.exit(1);
|
|
71
|
+
}
|
|
72
|
+
});
|
|
73
|
+
program
|
|
74
|
+
.command('diff')
|
|
75
|
+
.description('Show differences between local definitions and remote database')
|
|
76
|
+
.requiredOption('--api-url <url>', 'Orchestrator API base URL', 'http://localhost:3001')
|
|
77
|
+
.option('--token <jwt>', 'JWT authentication token')
|
|
78
|
+
.option('--email <email>', 'Admin email for auto-login')
|
|
79
|
+
.option('--password <password>', 'Admin password for auto-login')
|
|
80
|
+
.action(async (options) => {
|
|
81
|
+
try {
|
|
82
|
+
const cmd = new DiffCommand(packageRoot);
|
|
83
|
+
const result = await cmd.execute({
|
|
84
|
+
apiUrl: options.apiUrl,
|
|
85
|
+
token: options.token,
|
|
86
|
+
email: options.email,
|
|
87
|
+
password: options.password,
|
|
88
|
+
});
|
|
89
|
+
if (!result.hasChanges) {
|
|
90
|
+
console.log(chalk.green('No differences found. Definitions are in sync.'));
|
|
91
|
+
return;
|
|
92
|
+
}
|
|
93
|
+
console.log(chalk.blue('Differences found:\n'));
|
|
94
|
+
for (const entry of result.entries) {
|
|
95
|
+
if (entry.status === 'unchanged')
|
|
96
|
+
continue;
|
|
97
|
+
const icon = entry.status === 'new'
|
|
98
|
+
? chalk.green('+')
|
|
99
|
+
: entry.status === 'updated'
|
|
100
|
+
? chalk.yellow('~')
|
|
101
|
+
: chalk.red('!');
|
|
102
|
+
const label = entry.status === 'new'
|
|
103
|
+
? chalk.green('NEW')
|
|
104
|
+
: entry.status === 'updated'
|
|
105
|
+
? chalk.yellow(`${entry.remoteVersion} -> ${entry.localVersion}`)
|
|
106
|
+
: chalk.red('USER-MODIFIED (will be skipped)');
|
|
107
|
+
console.log(` ${icon} ${entry.category}/${entry.slug} ${label}`);
|
|
108
|
+
}
|
|
109
|
+
const newCount = result.entries.filter((e) => e.status === 'new').length;
|
|
110
|
+
const updatedCount = result.entries.filter((e) => e.status === 'updated').length;
|
|
111
|
+
const userModified = result.entries.filter((e) => e.status === 'user-modified').length;
|
|
112
|
+
console.log('');
|
|
113
|
+
console.log(` ${chalk.green(`${newCount} new`)}, ${chalk.yellow(`${updatedCount} updated`)}, ${chalk.red(`${userModified} user-modified`)}`);
|
|
114
|
+
console.log('');
|
|
115
|
+
console.log(chalk.gray('Run `orch-defs seed --update` to apply changes.'));
|
|
116
|
+
}
|
|
117
|
+
catch (err) {
|
|
118
|
+
console.error(chalk.red(`Diff failed: ${err.message}`));
|
|
119
|
+
process.exit(1);
|
|
120
|
+
}
|
|
121
|
+
});
|
|
122
|
+
program
|
|
123
|
+
.command('verify')
|
|
124
|
+
.description('Verify manifest checksums against definition files')
|
|
125
|
+
.action(() => {
|
|
126
|
+
try {
|
|
127
|
+
const loader = new ManifestLoader(packageRoot);
|
|
128
|
+
const { valid, invalid } = loader.verifyChecksums();
|
|
129
|
+
console.log(chalk.blue('Checksum Verification:\n'));
|
|
130
|
+
console.log(chalk.green(` ${valid.length} valid`));
|
|
131
|
+
if (invalid.length > 0) {
|
|
132
|
+
console.log(chalk.red(` ${invalid.length} invalid:`));
|
|
133
|
+
for (const entry of invalid) {
|
|
134
|
+
console.log(chalk.red(` - ${entry.file} (${entry.slug})`));
|
|
135
|
+
}
|
|
136
|
+
process.exit(1);
|
|
137
|
+
}
|
|
138
|
+
else {
|
|
139
|
+
console.log(chalk.green('\nAll checksums verified successfully.'));
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
catch (err) {
|
|
143
|
+
console.error(chalk.red(`Verify failed: ${err.message}`));
|
|
144
|
+
process.exit(1);
|
|
145
|
+
}
|
|
146
|
+
});
|
|
147
|
+
program
|
|
148
|
+
.command('info')
|
|
149
|
+
.description('Show manifest information')
|
|
150
|
+
.action(() => {
|
|
151
|
+
try {
|
|
152
|
+
const loader = new ManifestLoader(packageRoot);
|
|
153
|
+
const manifest = loader.load();
|
|
154
|
+
console.log(chalk.blue('Orchestrator Definitions Package\n'));
|
|
155
|
+
console.log(` Schema: ${manifest.schema}`);
|
|
156
|
+
console.log(` Namespace: ${manifest.namespace}`);
|
|
157
|
+
console.log(` Version: ${manifest.version}`);
|
|
158
|
+
console.log(` Generated: ${manifest.generatedAt}`);
|
|
159
|
+
console.log('');
|
|
160
|
+
console.log(` Agents: ${manifest.definitions.agents.length}`);
|
|
161
|
+
console.log(` Skills: ${manifest.definitions.skills.length}`);
|
|
162
|
+
console.log(` Hooks: ${manifest.definitions.hooks.length}`);
|
|
163
|
+
console.log(` Workflows: ${manifest.definitions.workflows.length}`);
|
|
164
|
+
console.log(` KB Seeds: ${manifest.definitions.kb.length}`);
|
|
165
|
+
}
|
|
166
|
+
catch (err) {
|
|
167
|
+
console.error(chalk.red(`Info failed: ${err.message}`));
|
|
168
|
+
process.exit(1);
|
|
169
|
+
}
|
|
170
|
+
});
|
|
171
|
+
program.parse();
|
|
172
|
+
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { DiffResult } from '../manifest/types.js';
|
|
2
|
+
export interface DiffCommandOptions {
|
|
3
|
+
apiUrl: string;
|
|
4
|
+
token?: string;
|
|
5
|
+
email?: string;
|
|
6
|
+
password?: string;
|
|
7
|
+
}
|
|
8
|
+
export declare class DiffCommand {
|
|
9
|
+
private readonly loader;
|
|
10
|
+
constructor(packageRoot?: string);
|
|
11
|
+
execute(options: DiffCommandOptions): Promise<DiffResult>;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=DiffCommand.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DiffCommand.d.ts","sourceRoot":"","sources":["../../src/commands/DiffCommand.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAa,UAAU,EAAsB,MAAM,sBAAsB,CAAC;AAEtF,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiB;gBAE5B,WAAW,CAAC,EAAE,MAAM;IAI1B,OAAO,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,UAAU,CAAC;CAwEhE"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { ManifestLoader } from '../manifest/ManifestLoader.js';
|
|
2
|
+
import { ApiClient } from '../http/ApiClient.js';
|
|
3
|
+
export class DiffCommand {
|
|
4
|
+
loader;
|
|
5
|
+
constructor(packageRoot) {
|
|
6
|
+
this.loader = new ManifestLoader(packageRoot);
|
|
7
|
+
}
|
|
8
|
+
async execute(options) {
|
|
9
|
+
const manifest = this.loader.load();
|
|
10
|
+
const client = new ApiClient({
|
|
11
|
+
baseUrl: options.apiUrl,
|
|
12
|
+
token: options.token,
|
|
13
|
+
});
|
|
14
|
+
if (!options.token && options.email && options.password) {
|
|
15
|
+
await client.login(options.email, options.password);
|
|
16
|
+
}
|
|
17
|
+
const remote = await client.getDefinitionsMetadata();
|
|
18
|
+
const entries = [];
|
|
19
|
+
const categories = ['agents', 'skills', 'hooks', 'workflows', 'kb'];
|
|
20
|
+
for (const cat of categories) {
|
|
21
|
+
const localDefs = manifest.definitions[cat];
|
|
22
|
+
const remoteDefs = remote[cat] ?? [];
|
|
23
|
+
const remoteMap = new Map(remoteDefs.map((d) => [d.slug, d]));
|
|
24
|
+
for (const local of localDefs) {
|
|
25
|
+
const remoteEntry = remoteMap.get(local.slug);
|
|
26
|
+
if (!remoteEntry) {
|
|
27
|
+
entries.push({
|
|
28
|
+
slug: local.slug,
|
|
29
|
+
category: cat,
|
|
30
|
+
status: 'new',
|
|
31
|
+
localVersion: local.version,
|
|
32
|
+
remoteVersion: null,
|
|
33
|
+
remoteOrigin: null,
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
else if (remoteEntry.origin === 'user-modified') {
|
|
37
|
+
entries.push({
|
|
38
|
+
slug: local.slug,
|
|
39
|
+
category: cat,
|
|
40
|
+
status: 'user-modified',
|
|
41
|
+
localVersion: local.version,
|
|
42
|
+
remoteVersion: remoteEntry.version,
|
|
43
|
+
remoteOrigin: remoteEntry.origin,
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
else if (local.version !== remoteEntry.version) {
|
|
47
|
+
entries.push({
|
|
48
|
+
slug: local.slug,
|
|
49
|
+
category: cat,
|
|
50
|
+
status: 'updated',
|
|
51
|
+
localVersion: local.version,
|
|
52
|
+
remoteVersion: remoteEntry.version,
|
|
53
|
+
remoteOrigin: remoteEntry.origin,
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
else {
|
|
57
|
+
entries.push({
|
|
58
|
+
slug: local.slug,
|
|
59
|
+
category: cat,
|
|
60
|
+
status: 'unchanged',
|
|
61
|
+
localVersion: local.version,
|
|
62
|
+
remoteVersion: remoteEntry.version,
|
|
63
|
+
remoteOrigin: remoteEntry.origin,
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
return {
|
|
69
|
+
entries,
|
|
70
|
+
hasChanges: entries.some((e) => e.status !== 'unchanged'),
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=DiffCommand.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DiffCommand.js","sourceRoot":"","sources":["../../src/commands/DiffCommand.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAUjD,MAAM,OAAO,WAAW;IACL,MAAM,CAAiB;IAExC,YAAY,WAAoB;QAC9B,IAAI,CAAC,MAAM,GAAG,IAAI,cAAc,CAAC,WAAW,CAAC,CAAC;IAChD,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,OAA2B;QACvC,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QAEpC,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;YAC3B,OAAO,EAAE,OAAO,CAAC,MAAM;YACvB,KAAK,EAAE,OAAO,CAAC,KAAK;SACrB,CAAC,CAAC;QAEH,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;YACxD,MAAM,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;QACtD,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,sBAAsB,EAAE,CAAC;QAErD,MAAM,OAAO,GAAgB,EAAE,CAAC;QAEhC,MAAM,UAAU,GAAyB,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC;QAE1F,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;YAC7B,MAAM,SAAS,GAAG,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;YAC5C,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;YAErC,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YAE9D,KAAK,MAAM,KAAK,IAAI,SAAS,EAAE,CAAC;gBAC9B,MAAM,WAAW,GAAG,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAE9C,IAAI,CAAC,WAAW,EAAE,CAAC;oBACjB,OAAO,CAAC,IAAI,CAAC;wBACX,IAAI,EAAE,KAAK,CAAC,IAAI;wBAChB,QAAQ,EAAE,GAAG;wBACb,MAAM,EAAE,KAAK;wBACb,YAAY,EAAE,KAAK,CAAC,OAAO;wBAC3B,aAAa,EAAE,IAAI;wBACnB,YAAY,EAAE,IAAI;qBACnB,CAAC,CAAC;gBACL,CAAC;qBAAM,IAAI,WAAW,CAAC,MAAM,KAAK,eAAe,EAAE,CAAC;oBAClD,OAAO,CAAC,IAAI,CAAC;wBACX,IAAI,EAAE,KAAK,CAAC,IAAI;wBAChB,QAAQ,EAAE,GAAG;wBACb,MAAM,EAAE,eAAe;wBACvB,YAAY,EAAE,KAAK,CAAC,OAAO;wBAC3B,aAAa,EAAE,WAAW,CAAC,OAAO;wBAClC,YAAY,EAAE,WAAW,CAAC,MAAM;qBACjC,CAAC,CAAC;gBACL,CAAC;qBAAM,IAAI,KAAK,CAAC,OAAO,KAAK,WAAW,CAAC,OAAO,EAAE,CAAC;oBACjD,OAAO,CAAC,IAAI,CAAC;wBACX,IAAI,EAAE,KAAK,CAAC,IAAI;wBAChB,QAAQ,EAAE,GAAG;wBACb,MAAM,EAAE,SAAS;wBACjB,YAAY,EAAE,KAAK,CAAC,OAAO;wBAC3B,aAAa,EAAE,WAAW,CAAC,OAAO;wBAClC,YAAY,EAAE,WAAW,CAAC,MAAM;qBACjC,CAAC,CAAC;gBACL,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,IAAI,CAAC;wBACX,IAAI,EAAE,KAAK,CAAC,IAAI;wBAChB,QAAQ,EAAE,GAAG;wBACb,MAAM,EAAE,WAAW;wBACnB,YAAY,EAAE,KAAK,CAAC,OAAO;wBAC3B,aAAa,EAAE,WAAW,CAAC,OAAO;wBAClC,YAAY,EAAE,WAAW,CAAC,MAAM;qBACjC,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO;YACL,OAAO;YACP,UAAU,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,WAAW,CAAC;SAC1D,CAAC;IACJ,CAAC;CACF"}
|