sinapse-ai 1.25.1 → 1.25.3
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/.sinapse-ai/data/entity-registry.yaml +39 -14
- package/.sinapse-ai/install-manifest.yaml +3 -3
- package/CHANGELOG.md +2 -8
- package/README.en.md +38 -30
- package/README.md +33 -25
- package/bin/commands/install.js +6 -2
- package/bin/commands/update.js +6 -2
- package/bin/lib/command-generator.js +60 -36
- package/bin/lib/global-provider-adapters.js +244 -49
- package/bin/lib/provider-contract.js +23 -0
- package/bin/lib/provider-parity.js +60 -9
- package/docs/getting-started.md +13 -5
- package/docs/guides/codex-config.md +35 -51
- package/docs/guides/ide-integration.md +22 -23
- package/docs/guides/project-status-feature.md +35 -55
- package/docs/guides/user-guide.md +21 -10
- package/docs/installation/README.md +4 -4
- package/docs/installation/faq.md +84 -70
- package/docs/installation/linux.md +11 -14
- package/docs/installation/macos.md +10 -4
- package/docs/installation/troubleshooting.md +10 -4
- package/docs/installation/v4-quick-start.md +13 -13
- package/docs/installation/windows.md +11 -15
- package/docs/pt/guides/project-status-feature.md +35 -55
- package/docs/pt/guides/user-guide.md +21 -11
- package/docs/pt/installation/README.md +2 -4
- package/docs/pt/installation/faq.md +54 -89
- package/docs/pt/installation/linux.md +9 -27
- package/docs/pt/installation/macos.md +8 -12
- package/docs/pt/installation/troubleshooting.md +10 -8
- package/docs/pt/installation/v4-quick-start.md +16 -16
- package/docs/pt/installation/windows.md +8 -21
- package/docs/troubleshooting.md +9 -7
- package/package.json +1 -1
- package/scripts/validate-article-vii.js +305 -20
- package/scripts/validate-install-docs.js +87 -3
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
metadata:
|
|
2
2
|
version: 1.0.0
|
|
3
|
-
lastUpdated: '2026-07-
|
|
4
|
-
entityCount:
|
|
3
|
+
lastUpdated: '2026-07-15T14:30:07.448Z'
|
|
4
|
+
entityCount: 818
|
|
5
5
|
checksumAlgorithm: sha256
|
|
6
6
|
resolutionRate: 100
|
|
7
7
|
entities:
|
|
@@ -166,8 +166,8 @@ entities:
|
|
|
166
166
|
score: 0.7
|
|
167
167
|
constraints: []
|
|
168
168
|
extensionPoints: []
|
|
169
|
-
checksum: sha256:
|
|
170
|
-
lastVerified: '2026-07-
|
|
169
|
+
checksum: sha256:86db5a2578b6a0b4849fde4e0f4a197a41560a3a213b247f0edd8522d857ffea
|
|
170
|
+
lastVerified: '2026-07-15T13:41:11.702Z'
|
|
171
171
|
local:
|
|
172
172
|
path: bin/commands/local.js
|
|
173
173
|
layer: L1
|
|
@@ -276,8 +276,8 @@ entities:
|
|
|
276
276
|
score: 0.7
|
|
277
277
|
constraints: []
|
|
278
278
|
extensionPoints: []
|
|
279
|
-
checksum: sha256:
|
|
280
|
-
lastVerified: '2026-07-
|
|
279
|
+
checksum: sha256:05056e197ecb29e6f63a1d86d9d77d944e3083021bf632b48a76eb4cb2223b95
|
|
280
|
+
lastVerified: '2026-07-15T13:41:11.703Z'
|
|
281
281
|
command-generator:
|
|
282
282
|
path: bin/lib/command-generator.js
|
|
283
283
|
layer: L1
|
|
@@ -299,6 +299,7 @@ entities:
|
|
|
299
299
|
- constants
|
|
300
300
|
- squads
|
|
301
301
|
- fs-utils
|
|
302
|
+
- provider-contract
|
|
302
303
|
externalDeps: []
|
|
303
304
|
plannedDeps: []
|
|
304
305
|
lifecycle: production
|
|
@@ -306,8 +307,8 @@ entities:
|
|
|
306
307
|
score: 0.7
|
|
307
308
|
constraints: []
|
|
308
309
|
extensionPoints: []
|
|
309
|
-
checksum: sha256:
|
|
310
|
-
lastVerified: '2026-07-
|
|
310
|
+
checksum: sha256:837f10f3ce227b1f3ff9b3d4c9e824e8928cd67ec07b0dcebd78e85468eed003
|
|
311
|
+
lastVerified: '2026-07-15T13:41:11.703Z'
|
|
311
312
|
constants:
|
|
312
313
|
path: bin/lib/constants.js
|
|
313
314
|
layer: L1
|
|
@@ -413,7 +414,8 @@ entities:
|
|
|
413
414
|
usedBy:
|
|
414
415
|
- install
|
|
415
416
|
- update
|
|
416
|
-
dependencies:
|
|
417
|
+
dependencies:
|
|
418
|
+
- provider-contract
|
|
417
419
|
externalDeps: []
|
|
418
420
|
plannedDeps: []
|
|
419
421
|
lifecycle: production
|
|
@@ -421,8 +423,8 @@ entities:
|
|
|
421
423
|
score: 0.7
|
|
422
424
|
constraints: []
|
|
423
425
|
extensionPoints: []
|
|
424
|
-
checksum: sha256:
|
|
425
|
-
lastVerified: '2026-07-
|
|
426
|
+
checksum: sha256:898fbe5a00cf1bb77bc8e8a34ee40337145912374a2e809789a02d5345fdd679
|
|
427
|
+
lastVerified: '2026-07-15T14:30:07.273Z'
|
|
426
428
|
header:
|
|
427
429
|
path: bin/lib/header.js
|
|
428
430
|
layer: L1
|
|
@@ -475,6 +477,28 @@ entities:
|
|
|
475
477
|
extensionPoints: []
|
|
476
478
|
checksum: sha256:dc7cc1109f2bbdb7b3c5927df0de2418925842bdacdc0ba82815bfa2783d0b42
|
|
477
479
|
lastVerified: '2026-06-22T02:41:18.152Z'
|
|
480
|
+
provider-contract:
|
|
481
|
+
path: bin/lib/provider-contract.js
|
|
482
|
+
layer: L1
|
|
483
|
+
type: script
|
|
484
|
+
purpose: Entity at bin\lib\provider-contract.js
|
|
485
|
+
keywords:
|
|
486
|
+
- provider
|
|
487
|
+
- contract
|
|
488
|
+
usedBy:
|
|
489
|
+
- command-generator
|
|
490
|
+
- global-provider-adapters
|
|
491
|
+
- provider-parity
|
|
492
|
+
dependencies: []
|
|
493
|
+
externalDeps: []
|
|
494
|
+
plannedDeps: []
|
|
495
|
+
lifecycle: production
|
|
496
|
+
adaptability:
|
|
497
|
+
score: 0.7
|
|
498
|
+
constraints: []
|
|
499
|
+
extensionPoints: []
|
|
500
|
+
checksum: sha256:a18d271a73b2f371213af4d9503e302e9237920057afd521b723c96efd28fda0
|
|
501
|
+
lastVerified: '2026-07-15T13:41:11.704Z'
|
|
478
502
|
provider-parity:
|
|
479
503
|
path: bin/lib/provider-parity.js
|
|
480
504
|
layer: L1
|
|
@@ -486,7 +510,8 @@ entities:
|
|
|
486
510
|
usedBy:
|
|
487
511
|
- install
|
|
488
512
|
- update
|
|
489
|
-
dependencies:
|
|
513
|
+
dependencies:
|
|
514
|
+
- provider-contract
|
|
490
515
|
externalDeps: []
|
|
491
516
|
plannedDeps: []
|
|
492
517
|
lifecycle: production
|
|
@@ -494,8 +519,8 @@ entities:
|
|
|
494
519
|
score: 0.7
|
|
495
520
|
constraints: []
|
|
496
521
|
extensionPoints: []
|
|
497
|
-
checksum: sha256:
|
|
498
|
-
lastVerified: '2026-07-
|
|
522
|
+
checksum: sha256:5f0ff4517425fef01683f035afef1d139aede2fe47956773a398e7c761ace42d
|
|
523
|
+
lastVerified: '2026-07-15T13:41:11.704Z'
|
|
499
524
|
setup-statusline:
|
|
500
525
|
path: bin/lib/setup-statusline.js
|
|
501
526
|
layer: L1
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
# - SHA256 hashes for change detection
|
|
8
8
|
# - File types for categorization
|
|
9
9
|
#
|
|
10
|
-
version: 1.25.
|
|
10
|
+
version: 1.25.3
|
|
11
11
|
generator: scripts/generate-install-manifest.js
|
|
12
12
|
file_count: 1156
|
|
13
13
|
files:
|
|
@@ -1368,9 +1368,9 @@ files:
|
|
|
1368
1368
|
type: data
|
|
1369
1369
|
size: 9671
|
|
1370
1370
|
- path: data/entity-registry.yaml
|
|
1371
|
-
hash: sha256:
|
|
1371
|
+
hash: sha256:08edc9d3cde1bf956cce462004670a3d2924a691a16c27bdfd2bf1ce4de037f8
|
|
1372
1372
|
type: data
|
|
1373
|
-
size:
|
|
1373
|
+
size: 560701
|
|
1374
1374
|
- path: data/learned-patterns.yaml
|
|
1375
1375
|
hash: sha256:1a4cd045c087b9dfd7046ff1464a9d2edb85fba77cf0b6fba14f4bb9004c741e
|
|
1376
1376
|
type: data
|
package/CHANGELOG.md
CHANGED
|
@@ -1,14 +1,8 @@
|
|
|
1
|
-
## [1.25.
|
|
1
|
+
## [1.25.3](https://github.com/caioimori/sinapse-ai/compare/1.25.2...1.25.3) (2026-07-15)
|
|
2
2
|
|
|
3
3
|
### Bug Fixes
|
|
4
4
|
|
|
5
|
-
* **
|
|
6
|
-
* **installer:** enforce conservative provider ownership [Story sinapse-only-catalog-cleanup] ([1b4f896](https://github.com/caioimori/sinapse-ai/commit/1b4f896d520a02124dc3107c604106f8ba8c8fae))
|
|
7
|
-
* **installer:** harden ownership and hook validation [Story sinapse-only-catalog-cleanup] ([4575a84](https://github.com/caioimori/sinapse-ai/commit/4575a84d6062feb8198e9480f15365e6218b7e61))
|
|
8
|
-
* **installer:** preserve provider-owned state [Story sinapse-only-catalog-cleanup] ([df67e88](https://github.com/caioimori/sinapse-ai/commit/df67e8836e4f2f42a2cb075d6063a01e0b8ad4c6))
|
|
9
|
-
* **installer:** reconcile provider-native catalogs [Story sinapse-only-catalog-cleanup] ([830b36c](https://github.com/caioimori/sinapse-ai/commit/830b36c8108610de2067d09426bfd7e13d315672))
|
|
10
|
-
* **security:** harden managed file reconciliation [Story sinapse-only-catalog-cleanup] ([3899921](https://github.com/caioimori/sinapse-ai/commit/3899921579851a6490e4866e7284ed88afe67c92))
|
|
11
|
-
* **test:** resolve Bash paths across Windows runtimes [Story sinapse-only-catalog-cleanup] ([a788b04](https://github.com/caioimori/sinapse-ai/commit/a788b0434f9718eb74c1caa6dc0ae091ea4dac65))
|
|
5
|
+
* **installer:** restore provider adapter parity ([#385](https://github.com/caioimori/sinapse-ai/issues/385)) ([4c5c9fb](https://github.com/caioimori/sinapse-ai/commit/4c5c9fb1a60e5d8610da08f25f6f01a67a85a063))
|
|
12
6
|
|
|
13
7
|
# Changelog
|
|
14
8
|
|
package/README.en.md
CHANGED
|
@@ -19,9 +19,9 @@
|
|
|
19
19
|
|
|
20
20
|
## What is SINAPSE?
|
|
21
21
|
|
|
22
|
-
SINAPSE is an open-source meta-framework that organizes **172 AI agents into 17 specialized squads**, operating directly in the terminal via Claude Code or Codex CLI. Each agent has a defined role, each squad masters a discipline, and the entire system is governed by a **Constitution with real enforcement** --
|
|
22
|
+
SINAPSE is an open-source meta-framework that organizes **172 AI agents into 17 specialized squads**, operating directly in the terminal via Claude Code or Codex CLI. Each agent has a defined role, each squad masters a discipline, and the entire system is governed by a **Constitution with real enforcement** -- 20 registered Claude Code hooks and 9 Codex lifecycle events through the compatibility bridge.
|
|
23
23
|
|
|
24
|
-
The core concept is simple: instead of a single AI assistant trying to do everything, SINAPSE structures work into specialized teams. A branding squad handles visual identity. A cybersecurity squad handles compliance and pentesting. A copywriting squad handles persuasion and conversion.
|
|
24
|
+
The core concept is simple: instead of a single AI assistant trying to do everything, SINAPSE structures work into specialized teams. A branding squad handles visual identity. A cybersecurity squad handles compliance and pentesting. A copywriting squad handles persuasion and conversion. The runtime measures **1,412 task files**: **1,201 squad tasks** and **211 development tasks**. Of those files, **1,348 pointers are resolvable** by real agents.
|
|
25
25
|
|
|
26
26
|
Unlike tools that just chat with AI, SINAPSE enforces discipline. The **Documentation-First** pipeline requires a story to be created and validated before any code is written. Quality gates run automatically before merge. Unauthorized agents are blocked from pushing. All via hooks that intercept operations in real time -- not after the fact.
|
|
27
27
|
|
|
@@ -33,7 +33,7 @@ Generative AI has a known problem: the more you ask of it, the worse it gets. A
|
|
|
33
33
|
|
|
34
34
|
SINAPSE solves this the way human teams solve it: **coordinated specialization**. Instead of one tired generalist, you have 172 agents in 17 squads, each with a defined role, its own knowledge base, and executable tasks. An orchestrator routes your request to whoever actually knows how to solve it -- automatically, without you needing to memorize agent names or commands.
|
|
35
35
|
|
|
36
|
-
The differential isn't just the quantity of agents. It's **real governance**:
|
|
36
|
+
The differential isn't just the quantity of agents. It's **real governance**: 20 Claude Code hook registrations and 9 Codex lifecycle events intercept operations at runtime, a Constitution with 11 articles governs the framework, and 7 of those articles are NON-NEGOTIABLE -- violations are blocked before execution, not detected afterwards. **Speed with rigor, without choosing between the two.**
|
|
37
37
|
|
|
38
38
|
---
|
|
39
39
|
|
|
@@ -55,9 +55,18 @@ npx sinapse-ai doctor
|
|
|
55
55
|
|
|
56
56
|
### 3. Activate your first agent
|
|
57
57
|
|
|
58
|
+
Claude Code:
|
|
59
|
+
|
|
60
|
+
```text
|
|
61
|
+
@developer
|
|
62
|
+
*help
|
|
58
63
|
```
|
|
59
|
-
|
|
60
|
-
|
|
64
|
+
|
|
65
|
+
Codex:
|
|
66
|
+
|
|
67
|
+
```text
|
|
68
|
+
$snps
|
|
69
|
+
$sinapse-agent developer
|
|
61
70
|
```
|
|
62
71
|
|
|
63
72
|
Done. You have 17 squads operating in your terminal.
|
|
@@ -174,7 +183,7 @@ Deny rules in `.claude/settings.json` enforce this deterministically. **Framewor
|
|
|
174
183
|
|
|
175
184
|
### Constitution
|
|
176
185
|
|
|
177
|
-
SINAPSE is governed by a formal Constitution with 11 articles and
|
|
186
|
+
SINAPSE is governed by a formal Constitution with 11 articles and provider-specific enforcement surfaces: 20 Claude Code hook registrations and 9 Codex lifecycle events.
|
|
178
187
|
|
|
179
188
|
| Article | Principle | Severity |
|
|
180
189
|
|---------|-----------|----------|
|
|
@@ -213,7 +222,7 @@ SINAPSE includes 12 core agents covering the complete development cycle:
|
|
|
213
222
|
| `devops` | **Pipeline** | CI/CD, git push (exclusive), releases |
|
|
214
223
|
| `squad-creator` | **Loom** | New squad creation |
|
|
215
224
|
|
|
216
|
-
|
|
225
|
+
In Claude Code, activate an agent with `@agent-name` and use `*help` to see its commands. In Codex, start with `$snps` for routing or use `$sinapse-agent agent-id` for direct activation.
|
|
217
226
|
|
|
218
227
|
### Development Workflow
|
|
219
228
|
|
|
@@ -263,15 +272,19 @@ Each squad is an autonomous team with its own orchestrator, specialist agents, k
|
|
|
263
272
|
| **squad-growth** | Analytics, CRO, SEO, growth hacking | 7 |
|
|
264
273
|
| **squad-finance** | Budget, pricing, profitability analysis | 8 |
|
|
265
274
|
|
|
266
|
-
**Total: 17 squads, 172 specialized agents, 1,201 tasks**
|
|
275
|
+
**Total: 17 squads, 172 specialized agents, and 1,412 task files** (**1,201 squad tasks + 211 development tasks; 1,348 resolvable pointers**)
|
|
267
276
|
|
|
268
|
-
Activate any squad via its orchestrator:
|
|
277
|
+
Activate any squad via its orchestrator using the provider-native syntax:
|
|
269
278
|
|
|
270
|
-
```
|
|
279
|
+
```text
|
|
280
|
+
# Claude Code
|
|
271
281
|
@brand-orqx # Brand squad
|
|
272
282
|
@copy-orqx # Copy squad
|
|
273
|
-
|
|
274
|
-
|
|
283
|
+
|
|
284
|
+
# Codex
|
|
285
|
+
$sinapse-agent brand-orqx
|
|
286
|
+
$sinapse-agent copy-orqx
|
|
287
|
+
$snps # Route through the primary orchestrator
|
|
275
288
|
```
|
|
276
289
|
|
|
277
290
|
The orchestrator receives your request and automatically delegates to the right specialist within the squad.
|
|
@@ -285,27 +298,22 @@ SINAPSE supports two IDEs with deep integrations:
|
|
|
285
298
|
| IDE | Activation | Highlights |
|
|
286
299
|
|-----|------------|------------|
|
|
287
300
|
| **Claude Code** | `@agent-name` | Hooks, contextual rules, deny/allow, Chrome Brain |
|
|
288
|
-
| **Codex CLI** |
|
|
301
|
+
| **Codex CLI** | `$snps` or `$sinapse-agent agent-id` | Native skills, multi-model, `codex exec` for CI/CD |
|
|
289
302
|
|
|
290
303
|
Both IDEs have access to all 17 squads, 172 agents, workflows, and knowledge bases. The installer detects and configures automatically.
|
|
291
304
|
|
|
292
305
|
### Parity Table
|
|
293
306
|
|
|
294
|
-
|
|
|
295
|
-
|
|
296
|
-
|
|
|
297
|
-
|
|
|
298
|
-
|
|
|
299
|
-
|
|
|
300
|
-
|
|
|
301
|
-
|
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
| MCP servers | Full | N/A |
|
|
305
|
-
| Terminal Bus | Full | N/A |
|
|
306
|
-
|
|
307
|
-
**Claude Code** for the most integrated and automated experience.
|
|
308
|
-
**Codex CLI** for model flexibility and CI/CD automation.
|
|
307
|
+
| Measured surface | Claude Code | Codex CLI |
|
|
308
|
+
|------------------|:-----------:|:---------:|
|
|
309
|
+
| Native agents | 172 | 172 |
|
|
310
|
+
| Direct activation | `@agent-name` | `$sinapse-agent agent-id` |
|
|
311
|
+
| Primary routing | `@sinapse-orqx` | `$snps` |
|
|
312
|
+
| Installed skills | 36 | 37 |
|
|
313
|
+
| Registered hooks | 20 native registrations | 9 lifecycle events through the bridge |
|
|
314
|
+
| Validation source | `npm run validate:providers` | `npm run validate:codex-native` |
|
|
315
|
+
|
|
316
|
+
Both providers resolve the same agents, tasks, workflows, and knowledge bases. Their activation and hook surfaces are different native adapters validated independently by the parity gate.
|
|
309
317
|
|
|
310
318
|
---
|
|
311
319
|
|
|
@@ -335,7 +343,7 @@ If you identify with the first group, you're in the right place.
|
|
|
335
343
|
|
|
336
344
|
### Constitutional Enforcement
|
|
337
345
|
|
|
338
|
-
SINAPSE doesn't just document rules --
|
|
346
|
+
SINAPSE doesn't just document rules -- Claude Code uses **20 registered hooks**, while Codex exposes **9 lifecycle events** through the compatibility bridge:
|
|
339
347
|
|
|
340
348
|
- `enforce-git-push-authority.sh` -- blocks push by unauthorized agents
|
|
341
349
|
- `enforce-story-gate.cjs` -- blocks code without a validated story
|
|
@@ -400,7 +408,7 @@ npx sinapse-ai doctor --dry-run # Show what `--fix` would do without applying
|
|
|
400
408
|
npx sinapse-ai chrome-brain install # Install browser automation
|
|
401
409
|
```
|
|
402
410
|
|
|
403
|
-
All commands are safe to re-run.
|
|
411
|
+
All commands are safe to re-run. After installing, use `@agent-name` in Claude Code or `$snps` / `$sinapse-agent agent-id` in Codex.
|
|
404
412
|
|
|
405
413
|
---
|
|
406
414
|
|
package/README.md
CHANGED
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
|
|
24
24
|
SINAPSE é um meta-framework open source que organiza **172 agentes de IA em 17 squads especializados**, operando direto no terminal via Claude Code ou Codex CLI. Cada agente tem um papel definido, cada squad domina uma disciplina, e o sistema inteiro é governado por uma **Constitution com enforcement real** — 20 hooks registrados que bloqueiam violações em tempo de execução.
|
|
25
25
|
|
|
26
|
-
O conceito central é simples: em vez de um único assistente de IA tentando fazer tudo, o SINAPSE estrutura o trabalho em equipes especializadas. Um squad de branding cuida da identidade visual. Um squad de cybersecurity cuida de compliance e pentest. Um squad de copywriting cuida de persuasão e conversão. Cada um com sua própria knowledge base, workflows e tasks
|
|
26
|
+
O conceito central é simples: em vez de um único assistente de IA tentando fazer tudo, o SINAPSE estrutura o trabalho em equipes especializadas. Um squad de branding cuida da identidade visual. Um squad de cybersecurity cuida de compliance e pentest. Um squad de copywriting cuida de persuasão e conversão. Cada um com sua própria knowledge base, workflows e tasks. O runtime mede **1.412 task files**: **1.201 squad tasks** nos 17 squads e **211 development tasks**. Desses arquivos, **1.348 são resolvíveis** pelos ponteiros reais dos agentes.
|
|
27
27
|
|
|
28
28
|
Diferente de ferramentas que apenas conversam com IA, o SINAPSE impõe disciplina. O pipeline **Documentation-First** exige que uma story seja criada e validada antes de qualquer linha de código. Quality gates rodam automaticamente antes de merge. Agentes não autorizados são bloqueados de fazer push. Tudo isso via hooks que interceptam operações em tempo real — não depois.
|
|
29
29
|
|
|
@@ -63,9 +63,18 @@ Se algo estiver fora do lugar, `doctor --fix` corrige automaticamente.
|
|
|
63
63
|
|
|
64
64
|
### 3. Ative seu primeiro agente
|
|
65
65
|
|
|
66
|
+
Claude Code:
|
|
67
|
+
|
|
68
|
+
```text
|
|
69
|
+
@developer
|
|
70
|
+
*help
|
|
66
71
|
```
|
|
67
|
-
|
|
68
|
-
|
|
72
|
+
|
|
73
|
+
Codex:
|
|
74
|
+
|
|
75
|
+
```text
|
|
76
|
+
$snps
|
|
77
|
+
$sinapse-agent developer
|
|
69
78
|
```
|
|
70
79
|
|
|
71
80
|
Pronto. Você tem 17 squads operando no seu terminal.
|
|
@@ -235,7 +244,7 @@ O SINAPSE inclui 12 agentes core que cobrem o ciclo completo de desenvolvimento:
|
|
|
235
244
|
| `devops` | **Pipeline** | CI/CD, git push (exclusivo), releases |
|
|
236
245
|
| `squad-creator` | **Loom** | Criação de novos squads |
|
|
237
246
|
|
|
238
|
-
|
|
247
|
+
No Claude Code, ative um agente com `@agent-name` e use `*help` para ver seus comandos. No Codex, comece com `$snps` para roteamento ou use `$sinapse-agent agent-id` para ativação direta.
|
|
239
248
|
|
|
240
249
|
### Workflow de Desenvolvimento
|
|
241
250
|
|
|
@@ -285,15 +294,19 @@ Cada squad é uma equipe autônoma com orquestrador, agentes especialistas, know
|
|
|
285
294
|
| **squad-growth** | Analytics, CRO, SEO, growth hacking | 7 |
|
|
286
295
|
| **squad-finance** | Budget, pricing, profitability analysis | 8 |
|
|
287
296
|
|
|
288
|
-
**Total: 17 squads, 172 agentes especializados
|
|
297
|
+
**Total: 17 squads, 172 agentes especializados e 1.412 task files** (**1.201 squad tasks + 211 development tasks; 1.348 ponteiros resolvíveis**)
|
|
289
298
|
|
|
290
|
-
Cada squad é ativado via seu orquestrador:
|
|
299
|
+
Cada squad é ativado via seu orquestrador, com a sintaxe nativa do provedor:
|
|
291
300
|
|
|
292
|
-
```
|
|
301
|
+
```text
|
|
302
|
+
# Claude Code
|
|
293
303
|
@brand-orqx # Squad de brand
|
|
294
304
|
@copy-orqx # Squad de copy
|
|
295
|
-
|
|
296
|
-
|
|
305
|
+
|
|
306
|
+
# Codex
|
|
307
|
+
$sinapse-agent brand-orqx
|
|
308
|
+
$sinapse-agent copy-orqx
|
|
309
|
+
$snps # Roteamento pelo orquestrador principal
|
|
297
310
|
```
|
|
298
311
|
|
|
299
312
|
O orquestrador recebe seu pedido e delega automaticamente ao especialista correto dentro do squad.
|
|
@@ -306,28 +319,23 @@ O SINAPSE suporta duas IDEs com integrações profundas:
|
|
|
306
319
|
|
|
307
320
|
| IDE | Ativação | Destaques |
|
|
308
321
|
|-----|----------|-----------|
|
|
309
|
-
| **Claude Code** | `@agent-name`
|
|
322
|
+
| **Claude Code** | `@agent-name` | Subagentes e skills nativos, hooks e rules contextuais |
|
|
310
323
|
| **Codex CLI** | `$snps` ou `$sinapse-agent agent-id` | Agentes TOML, skills nativas e `codex exec` para CI/CD |
|
|
311
324
|
|
|
312
325
|
Ambas as IDEs têm acesso a todos os 17 squads, 172 agentes, workflows e knowledge bases. O installer detecta e configura automaticamente.
|
|
313
326
|
|
|
314
327
|
### Tabela de Paridade
|
|
315
328
|
|
|
316
|
-
|
|
|
317
|
-
|
|
318
|
-
|
|
|
319
|
-
|
|
|
320
|
-
|
|
|
321
|
-
|
|
|
322
|
-
|
|
|
323
|
-
|
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
| MCP servers | Completo | N/A |
|
|
327
|
-
| Terminal Bus | Completo | N/A |
|
|
328
|
-
|
|
329
|
-
**Claude Code** para a experiência mais integrada e automatizada.
|
|
330
|
-
**Codex CLI** para flexibilidade de modelo e automação CI/CD.
|
|
329
|
+
| Superfície medida | Claude Code | Codex CLI |
|
|
330
|
+
|-------------------|:-----------:|:---------:|
|
|
331
|
+
| Agentes nativos | 172 | 172 |
|
|
332
|
+
| Ativação direta | `@agent-name` | `$sinapse-agent agent-id` |
|
|
333
|
+
| Roteamento principal | `@sinapse-orqx` | `$snps` |
|
|
334
|
+
| Skills instaladas | 36 | 37 |
|
|
335
|
+
| Hooks registrados | 20 registros nativos | 9 eventos de lifecycle via bridge |
|
|
336
|
+
| Fonte de validação | `npm run validate:providers` | `npm run validate:codex-native` |
|
|
337
|
+
|
|
338
|
+
Os dois providers resolvem os mesmos agents, tasks, workflows e knowledge bases. As superfícies de ativação e hooks são adapters nativos diferentes e são validadas separadamente pelo gate de paridade.
|
|
331
339
|
|
|
332
340
|
---
|
|
333
341
|
|
package/bin/commands/install.js
CHANGED
|
@@ -560,7 +560,7 @@ function installFatalPhases({ squads, squadsDir, isUpsert, llmChoice, existing,
|
|
|
560
560
|
// Phase 2: Generate agent commands (shared with `update` via command-generator).
|
|
561
561
|
logger.always(`\n${CYAN}Phase 2:${NC} Generating agent commands`);
|
|
562
562
|
const commandStagingDir = getGlobalCommandStagingDir({ llmChoice, sinapseHome: SINAPSE_HOME, claudeCommandsDir: CLAUDE_COMMANDS_DIR });
|
|
563
|
-
const { writtenAgents,
|
|
563
|
+
const { writtenAgents, canonicalAgents } = regenerateAgentCommands({
|
|
564
564
|
sinapseHome: SINAPSE_HOME,
|
|
565
565
|
commandsDir: commandStagingDir,
|
|
566
566
|
squads,
|
|
@@ -571,7 +571,11 @@ function installFatalPhases({ squads, squadsDir, isUpsert, llmChoice, existing,
|
|
|
571
571
|
|
|
572
572
|
// Phase 2b: Install global agents based on LLM choice
|
|
573
573
|
const globalAdapters = deliverGlobalProviderAdapters({ llmChoice, home: HOME, commandsDir: commandStagingDir });
|
|
574
|
-
const activeAgentCount = assertProviderAdapterParity(
|
|
574
|
+
const activeAgentCount = assertProviderAdapterParity(
|
|
575
|
+
llmChoice,
|
|
576
|
+
globalAdapters,
|
|
577
|
+
canonicalAgents,
|
|
578
|
+
);
|
|
575
579
|
const installedAgentFilenames = new Set([...globalAdapters.claude, ...globalAdapters.codex]);
|
|
576
580
|
const installedIdes = [];
|
|
577
581
|
if (globalAdapters.claude.length) installedIdes.push('claude-code');
|
package/bin/commands/update.js
CHANGED
|
@@ -170,7 +170,7 @@ async function cmdUpdateGlobal() {
|
|
|
170
170
|
logger.always(`\n${CYAN}Phase 2:${NC} Regenerating commands`);
|
|
171
171
|
const commandStagingDir = getGlobalCommandStagingDir({ llmChoice, sinapseHome: SINAPSE_HOME, claudeCommandsDir: CLAUDE_COMMANDS_DIR });
|
|
172
172
|
rmDirSync(commandStagingDir);
|
|
173
|
-
const { writtenAgents, totalAgents } = regenerateAgentCommands({
|
|
173
|
+
const { writtenAgents, canonicalAgents, totalAgents } = regenerateAgentCommands({
|
|
174
174
|
sinapseHome: SINAPSE_HOME,
|
|
175
175
|
commandsDir: commandStagingDir,
|
|
176
176
|
squads,
|
|
@@ -181,7 +181,11 @@ async function cmdUpdateGlobal() {
|
|
|
181
181
|
|
|
182
182
|
// Phase 2b: Install global agents based on LLM choice
|
|
183
183
|
const globalAdapters = deliverGlobalProviderAdapters({ llmChoice, home: HOME, commandsDir: commandStagingDir });
|
|
184
|
-
const activeAgentCount = assertProviderAdapterParity(
|
|
184
|
+
const activeAgentCount = assertProviderAdapterParity(
|
|
185
|
+
llmChoice,
|
|
186
|
+
globalAdapters,
|
|
187
|
+
canonicalAgents,
|
|
188
|
+
);
|
|
185
189
|
if (globalAdapters.claude.length) logger.always(` ${GREEN}OK${NC} Claude Code global agents (${globalAdapters.claude.length})`);
|
|
186
190
|
if (globalAdapters.codex.length) logger.always(` ${GREEN}OK${NC} Codex global agents (${globalAdapters.codex.length} TOML, ${globalAdapters.skills.length} skills)`);
|
|
187
191
|
|
|
@@ -20,6 +20,7 @@ const { toForwardSlash, atomicWriteFileSync } = require('./fs-utils');
|
|
|
20
20
|
// sync-counts uses so the master-stub headline can never drift from README/persona
|
|
21
21
|
// (Constitution Article VII). Fails open to 0 if the dir is unavailable.
|
|
22
22
|
const CORE_AGENTS_DIR = path.join(ROOT, '.sinapse-ai', 'development', 'agents');
|
|
23
|
+
const { MASTER_ALIAS_ENTRY_POINTS } = require('./provider-contract');
|
|
23
24
|
|
|
24
25
|
function countCoreAgents(dir = CORE_AGENTS_DIR) {
|
|
25
26
|
try {
|
|
@@ -207,7 +208,7 @@ If the task requires expertise outside this squad:
|
|
|
207
208
|
* @param {string} [deps.commandsDir] - Target commands dir.
|
|
208
209
|
* @param {Array} deps.squads - Squad descriptors ({ name, agents, ... }).
|
|
209
210
|
* @param {string} [deps.sinapseMasterDest] - Path to the installed sinapse/ master squad.
|
|
210
|
-
* @returns {{ writtenAgents: Set<string>, totalAgents: number }}
|
|
211
|
+
* @returns {{ writtenAgents: Set<string>, canonicalAgents: Array<{ id: string, file: string, origin: string }>, aliasEntryPoints: string[], totalAgents: number }}
|
|
211
212
|
*/
|
|
212
213
|
function regenerateAgentCommands(deps = {}) {
|
|
213
214
|
const {
|
|
@@ -222,20 +223,21 @@ function regenerateAgentCommands(deps = {}) {
|
|
|
222
223
|
throw new Error('regenerateAgentCommands: `squads` array is required');
|
|
223
224
|
}
|
|
224
225
|
|
|
225
|
-
fs.mkdirSync(commandsDir, { recursive: true });
|
|
226
|
-
|
|
227
|
-
// Clear old commands (dir may not exist on a fresh install — guarded).
|
|
228
|
-
try {
|
|
229
|
-
for (const f of fs.readdirSync(commandsDir)) {
|
|
230
|
-
fs.unlinkSync(path.join(commandsDir, f));
|
|
231
|
-
}
|
|
232
|
-
} catch { /* dir may not exist yet */ }
|
|
233
|
-
|
|
234
226
|
const sinapseBase = toForwardSlash(sinapseHome);
|
|
235
227
|
const writtenAgents = new Set();
|
|
228
|
+
const catalogById = new Map();
|
|
229
|
+
const definitions = [];
|
|
230
|
+
|
|
231
|
+
function registerDefinition(definition) {
|
|
232
|
+
const previous = catalogById.get(definition.id);
|
|
233
|
+
if (previous) {
|
|
234
|
+
throw new Error(`Duplicate canonical agent ID "${definition.id}" from ${previous.origin} and ${definition.origin}`);
|
|
235
|
+
}
|
|
236
|
+
catalogById.set(definition.id, definition);
|
|
237
|
+
definitions.push(definition);
|
|
238
|
+
}
|
|
236
239
|
|
|
237
|
-
//
|
|
238
|
-
// is invokable via @agent and /SINAPSE:agents:agent.
|
|
240
|
+
// Inventory every canonical definition before clearing or writing commands.
|
|
239
241
|
for (const squad of squads) {
|
|
240
242
|
const squadPath = `${sinapseBase}/${squad.name}`;
|
|
241
243
|
const agentsDir = path.join(sinapseHome, squad.name, 'agents');
|
|
@@ -244,10 +246,14 @@ function regenerateAgentCommands(deps = {}) {
|
|
|
244
246
|
const squadAgents = fs.readdirSync(agentsDir).filter(f => f.endsWith('.md'));
|
|
245
247
|
for (const file of squadAgents) {
|
|
246
248
|
const agentId = file.replace('.md', '');
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
249
|
+
registerDefinition({
|
|
250
|
+
id: agentId,
|
|
251
|
+
file,
|
|
252
|
+
origin: path.join(agentsDir, file),
|
|
253
|
+
squadName: squad.name,
|
|
254
|
+
squadPath,
|
|
255
|
+
hasManifest: true,
|
|
256
|
+
});
|
|
251
257
|
}
|
|
252
258
|
}
|
|
253
259
|
|
|
@@ -257,29 +263,37 @@ function regenerateAgentCommands(deps = {}) {
|
|
|
257
263
|
if (fs.existsSync(coreAgentsDir)) {
|
|
258
264
|
const coreBase = toForwardSlash(coreDevelopmentDest);
|
|
259
265
|
for (const file of fs.readdirSync(coreAgentsDir).filter(f => f.endsWith('.md'))) {
|
|
260
|
-
if (file === 'README.md' || file === 'MEMORY.md' || file.startsWith('_')
|
|
266
|
+
if (file === 'README.md' || file === 'MEMORY.md' || file.startsWith('_')) continue;
|
|
261
267
|
const agentId = file.replace('.md', '');
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
268
|
+
registerDefinition({
|
|
269
|
+
id: agentId,
|
|
270
|
+
file,
|
|
271
|
+
origin: path.join(coreAgentsDir, file),
|
|
272
|
+
squadName: 'core',
|
|
273
|
+
squadPath: coreBase,
|
|
274
|
+
hasManifest: false,
|
|
275
|
+
});
|
|
266
276
|
}
|
|
267
277
|
}
|
|
268
278
|
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
279
|
+
fs.mkdirSync(commandsDir, { recursive: true });
|
|
280
|
+
for (const file of fs.readdirSync(commandsDir)) {
|
|
281
|
+
fs.unlinkSync(path.join(commandsDir, file));
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
for (const definition of definitions) {
|
|
285
|
+
const meta = extractAgentMeta(definition.origin);
|
|
286
|
+
const cmdContent = generateCommandMd(
|
|
287
|
+
definition.id,
|
|
288
|
+
meta.name,
|
|
289
|
+
meta.icon,
|
|
290
|
+
definition.squadName,
|
|
291
|
+
definition.squadPath,
|
|
292
|
+
definition.file,
|
|
293
|
+
{ hasManifest: definition.hasManifest },
|
|
294
|
+
);
|
|
295
|
+
atomicWriteFileSync(path.join(commandsDir, definition.file), cmdContent);
|
|
296
|
+
writtenAgents.add(definition.file);
|
|
283
297
|
}
|
|
284
298
|
|
|
285
299
|
// 3. Master entry points (@sinapse, @snps, @sinapse-orqx, @snps-orqx) → rich
|
|
@@ -301,7 +315,16 @@ function regenerateAgentCommands(deps = {}) {
|
|
|
301
315
|
}
|
|
302
316
|
}
|
|
303
317
|
|
|
304
|
-
|
|
318
|
+
const aliasEntryPoints = [...MASTER_ALIAS_ENTRY_POINTS]
|
|
319
|
+
.filter((id) => writtenAgents.has(`${id}.md`));
|
|
320
|
+
const canonicalAgents = definitions.map(({ id, file, origin }) => ({ id, file, origin }));
|
|
321
|
+
|
|
322
|
+
return {
|
|
323
|
+
writtenAgents,
|
|
324
|
+
canonicalAgents,
|
|
325
|
+
aliasEntryPoints,
|
|
326
|
+
totalAgents: canonicalAgents.length,
|
|
327
|
+
};
|
|
305
328
|
}
|
|
306
329
|
|
|
307
330
|
module.exports = {
|
|
@@ -309,4 +332,5 @@ module.exports = {
|
|
|
309
332
|
generateMasterStub,
|
|
310
333
|
regenerateAgentCommands,
|
|
311
334
|
countCoreAgents,
|
|
335
|
+
MASTER_ALIAS_ENTRY_POINTS,
|
|
312
336
|
};
|