synapos 2.5.0 → 2.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "framework": {
3
3
  "name": "synapos",
4
- "version": "2.5.0",
4
+ "version": "2.6.0",
5
5
  "released_at": "2026-04-03"
6
6
  },
7
7
  "best_practices": {
@@ -24,7 +24,7 @@
24
24
  }
25
25
  },
26
26
  "core": {
27
- "orchestrator": "1.5.0",
27
+ "orchestrator": "1.6.0",
28
28
  "pipeline_runner": "2.3.0",
29
29
  "gate_system": "1.5.0",
30
30
  "model_adapter": "1.1.0",
package/.synapos/VERSION CHANGED
@@ -1 +1 @@
1
- 2.5.0
1
+ 2.6.0
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: synapos-orchestrator
3
- version: 1.5.0
3
+ version: 1.6.0
4
4
  description: Meta-orquestrador do Synapos Framework — ponto de entrada universal multi-IDE
5
5
  ---
6
6
 
@@ -311,17 +311,42 @@ Construa a lista interna de squads ativos.
311
311
 
312
312
  ---
313
313
 
314
+ ## PASSO 3.5 — VERIFICAR SQUAD TEMPLATES
315
+
316
+ Verifique se existem subdiretórios em `.synapos/squad-templates/` (ignorar `.gitkeep`).
317
+
318
+ Armazene como `[HAS_TEMPLATES]` (true / false).
319
+
320
+ **Se `[HAS_TEMPLATES]` = false:**
321
+
322
+ ```
323
+ AskUserQuestion({
324
+ question: "⚠️ Nenhum squad template instalado.\n\nSem templates não é possível criar squads.\n\nInstale templates com:\n npx synapos add <template>",
325
+ options: [
326
+ { label: "Encerrar", description: "Fechar o orquestrador" }
327
+ ]
328
+ })
329
+ ```
330
+
331
+ **Pare a execução.** Não continue para PASSO 4.
332
+
333
+ ---
334
+
314
335
  ## PASSO 4 — MENU PRINCIPAL
315
336
 
316
- **Se existem squads**, use AskUserQuestion:
337
+ **Se existem squads**, monte o menu com AskUserQuestion.
338
+
339
+ Regra para a opção "Criar novo squad":
340
+ - **Inclua** `{ label: "✨ Criar novo squad", description: "Montar um novo squad do zero" }` **apenas se** `[HAS_TEMPLATES]` = true.
341
+ - **Se** `[HAS_TEMPLATES]` = false, **não inclua** essa opção e adicione um aviso no `question`: `"\n\n⚠️ Criação de squads indisponível — nenhum template instalado. Execute: npx synapos add <template>"`.
317
342
 
318
343
  ```
319
344
  AskUserQuestion({
320
- question: "Olá, {nome do usuário}! Qual squad você quer trabalhar?",
345
+ question: "Olá, {nome do usuário}! Qual squad você quer trabalhar?{aviso se sem templates}",
321
346
  options: [
322
347
  { label: "🟢 {slug}", description: "{domain} · {description} (ativo)" },
323
348
  { label: "🟡 {slug}", description: "{domain} · {description} (pausado)" },
324
- { label: "✨ Criar novo squad", description: "Montar um novo squad do zero" }
349
+ // ✨ Criar novo squad incluir SOMENTE se [HAS_TEMPLATES] = true
325
350
  ]
326
351
  })
327
352
  ```
@@ -331,12 +356,16 @@ AskUserQuestion({
331
356
  - 🟡 paused — pausado, pode retomar
332
357
  - ✅ completed — entregue
333
358
 
334
- **Se não existem squads** → vá direto para PASSO 5.
359
+ **Se não existem squads e `[HAS_TEMPLATES]` = true** → vá direto para PASSO 5.
360
+
361
+ **Se não existem squads e `[HAS_TEMPLATES]` = false** → já foi tratado no PASSO 3.5. Este passo nunca será alcançado nesse estado.
335
362
 
336
363
  ---
337
364
 
338
365
  ## PASSO 5 — SELEÇÃO DE DOMÍNIO
339
366
 
367
+ > **Pré-condição:** `[HAS_TEMPLATES]` = true (garantido pelo PASSO 3.5).
368
+
340
369
  Liste os subdiretórios em `.synapos/squad-templates/` e leia `template.yaml` para cada um.
341
370
 
342
371
  Monte as opções para AskUserQuestion:
@@ -352,17 +381,6 @@ AskUserQuestion({
352
381
  })
353
382
  ```
354
383
 
355
- **Se nenhum template for encontrado:** use AskUserQuestion para informar:
356
-
357
- ```
358
- AskUserQuestion({
359
- question: "Nenhum squad template instalado.\n\nInstale templates com: npx synapos",
360
- options: [
361
- { label: "Voltar", description: "Voltar ao menu" }
362
- ]
363
- })
364
- ```
365
-
366
384
  ---
367
385
 
368
386
  ## PASSO 6 — CONFIGURAR SQUAD
@@ -464,46 +482,6 @@ AskUserQuestion({
464
482
  })
465
483
  ```
466
484
 
467
- Seção 6.5 — Feature Session (SELEÇÃO INTERATIVA)
468
-
469
- **Use AskUserQuestion:**
470
-
471
- ```
472
- AskUserQuestion({
473
- question: "Este squad trabalha em qual feature?",
474
- options: [
475
- { label: "📂 Session existente", description: "Selecionar feature já criada" },
476
- { label: "✨ Nova feature", description: "Criar nova feature session" }
477
- ]
478
- })
479
- ```
480
-
481
- **Se "Session existente":**
482
- Liste as pastas em `docs/.squads/sessions/` com AskUserQuestion:
483
-
484
- ```
485
- AskUserQuestion({
486
- question: "Selecione a feature session:",
487
- options: [
488
- { label: "{feature-slug}", description: "{descrição do state.json}" },
489
- { label: "{feature-slug}", description: "{descrição}" }
490
- ]
491
- })
492
- ```
493
-
494
- **Se "Nova feature":**
495
-
496
- ```
497
- AskUserQuestion({
498
- question: "Qual é o nome/slug da nova feature?",
499
- options: [
500
- { label: "Vou informar", description: "Ex: auth-module, feat/pagamentos" }
501
- ]
502
- })
503
- ```
504
-
505
- `{feature-slug}` = lowercase, espaços → hífens, sem caracteres especiais.
506
-
507
485
  ---
508
486
 
509
487
  ## PASSO 7 — CRIAR SQUAD
@@ -544,8 +522,8 @@ mode: {alta | economico | solo}
544
522
  execution_mode: {bootstrap | standard | strict} # determinado pelo Mode Decision System no PASSO 2
545
523
  doc_score: {0-100} # score de documentação no momento da criação
546
524
  created_at: {YYYY-MM-DD}
547
- feature: {feature-slug}
548
- session: docs/.squads/sessions/{feature-slug}/
525
+ feature: "" # preenchido no PASSO 7.5
526
+ session: "" # preenchido no PASSO 7.5
549
527
  agents:
550
528
  - {id do agent 1}
551
529
  - {id do agent 2}
@@ -558,7 +536,7 @@ project_context:
558
536
  docs_business: docs/business/
559
537
  docs_tech: docs/tech/
560
538
  docs_context: docs/tech-context/
561
- session: docs/.squads/sessions/{feature-slug}/
539
+ session: "" # preenchido no PASSO 7.5
562
540
  ```
563
541
 
564
542
  ### 7.3 — Inicializar project-learnings.md (se não existir)
@@ -576,6 +554,57 @@ Verifique se `docs/_memory/project-learnings.md` existe. Se não existir, crie:
576
554
 
577
555
  ---
578
556
 
557
+ ## PASSO 7.5 — FEATURE SESSION
558
+
559
+ > **Executar apenas após o squad ter sido criado (arquivos do PASSO 7 já gravados).**
560
+
561
+ **Use AskUserQuestion:**
562
+
563
+ ```
564
+ AskUserQuestion({
565
+ question: "Squad {squad-slug} criado! 🎉\n\nAgora, em qual feature este squad vai trabalhar?",
566
+ options: [
567
+ { label: "📂 Session existente", description: "Selecionar feature já criada" },
568
+ { label: "✨ Nova feature", description: "Criar nova feature session" }
569
+ ]
570
+ })
571
+ ```
572
+
573
+ **Se "Session existente":**
574
+ Liste as pastas em `docs/.squads/sessions/` com AskUserQuestion:
575
+
576
+ ```
577
+ AskUserQuestion({
578
+ question: "Selecione a feature session:",
579
+ options: [
580
+ { label: "{feature-slug}", description: "{descrição do state.json}" },
581
+ { label: "{feature-slug}", description: "{descrição}" }
582
+ ]
583
+ })
584
+ ```
585
+
586
+ **Se "Nova feature":**
587
+
588
+ ```
589
+ AskUserQuestion({
590
+ question: "Qual é o nome/slug da nova feature?",
591
+ options: [
592
+ { label: "Vou informar", description: "Ex: auth-module, feat/pagamentos" }
593
+ ]
594
+ })
595
+ ```
596
+
597
+ `{feature-slug}` = lowercase, espaços → hífens, sem caracteres especiais.
598
+
599
+ Após obter o `{feature-slug}`, atualize o campo `feature` e `session` no `squad.yaml` já criado:
600
+
601
+ ```yaml
602
+ feature: {feature-slug}
603
+ session: docs/.squads/sessions/{feature-slug}/
604
+ ```
605
+
606
+ ---
607
+
579
608
  ## PASSO 8 — ATIVAR SQUAD
580
609
 
581
610
  ### 8.1 — Resumo e Confirmação
package/bin/synapos.js CHANGED
@@ -31,7 +31,7 @@ const PACKAGE_DIR = path.join(__dirname, '..');
31
31
  const VERSION = (() => {
32
32
  try {
33
33
  return JSON.parse(fs.readFileSync(path.join(PACKAGE_DIR, 'package.json'), 'utf8')).version;
34
- } catch { return '2.5.0'; }
34
+ } catch { return '2.6.0'; }
35
35
  })();
36
36
 
37
37
  // Squad definitions — value = folder name in squad-templates/
@@ -162,8 +162,8 @@ ${bold('OPÇÕES')}
162
162
  -h, --help Exibe esta ajuda
163
163
 
164
164
  ${bold('EXEMPLOS')}
165
- npx synapos Seleção interativa de squads
166
- npx synapos front Instala squad Frontend
165
+ npx synapos Instala todos os squads + seleciona IDE
166
+ npx synapos front Instala só o squad Frontend
167
167
  npx synapos front back Instala Frontend + Backend
168
168
  npx synapos front back devops Instala múltiplos squads
169
169
  `);
@@ -180,7 +180,7 @@ ${bold('EXEMPLOS')}
180
180
  process.exit(1);
181
181
  }
182
182
 
183
- // ── 1. Resolver squads via args ou seleção interativa ────────────────────────
183
+ // ── 1. Resolver squads via args ou instalar todos por padrão ─────────────────
184
184
  let selectedSquadIds = [];
185
185
 
186
186
  if (args.length > 0) {
@@ -194,24 +194,9 @@ ${bold('EXEMPLOS')}
194
194
  info(`Squads selecionados via argumento: ${selectedSquadIds.join(', ')}`);
195
195
  nl();
196
196
  } else {
197
- // Seleção interativa
198
- const { selected } = await prompts({
199
- type: 'multiselect',
200
- name: 'selected',
201
- message: 'Quais squads você quer instalar?',
202
- choices: SQUADS.map(s => ({
203
- title: s.title,
204
- value: s.value,
205
- description: s.description,
206
- selected: false,
207
- })),
208
- hint: '- Espaço para selecionar, Enter para confirmar',
209
- instructions: false,
210
- min: 1,
211
- }, { onCancel: () => { nl(); process.exit(0); } });
212
-
213
- if (!selected || selected.length === 0) process.exit(0);
214
- selectedSquadIds = selected;
197
+ // Instalar todos os squads disponíveis
198
+ selectedSquadIds = SQUADS.map(s => s.value);
199
+ info(`Instalando todos os squads disponíveis (${selectedSquadIds.length})`);
215
200
  nl();
216
201
  }
217
202
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "synapos",
3
- "version": "2.5.0",
3
+ "version": "2.6.0",
4
4
  "description": "Synapos Framework — AI agent orchestration for multi-IDE development",
5
5
  "keywords": ["ai", "agents", "claude", "cursor", "framework", "orchestration", "llm"],
6
6
  "author": "",