sinapse-ai 9.4.0 → 9.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/.claude/CLAUDE.md +10 -4
- package/.claude/hooks/enforce-architecture-first.py +197 -197
- package/.claude/hooks/enforce-git-push-authority.sh +25 -4
- package/.claude/hooks/mind-clone-governance.py +193 -193
- package/.claude/hooks/read-protection.py +152 -152
- package/.claude/hooks/sql-governance.py +183 -183
- package/.claude/hooks/verify-packages.cjs +83 -0
- package/.claude/hooks/write-path-validation.py +195 -195
- package/.claude/rules/hook-governance.md +1 -0
- package/.claude/rules/mandatory-delegation.md +24 -0
- package/.claude/rules/project-intelligence.md +63 -0
- package/.claude/rules/response-format.md +4 -0
- package/.claude/rules/safe-collaboration.md +4 -2
- package/.claude/rules/security-data-protection.md +18 -0
- package/.claude/rules/squad-awareness.md +93 -67
- package/.claude/rules/token-economy.md +148 -0
- package/.codex/agents/analyst.md +90 -0
- package/.codex/agents/architect.md +78 -0
- package/.codex/agents/data-engineer.md +38 -0
- package/.codex/agents/developer.md +97 -0
- package/.codex/agents/devops.md +121 -0
- package/.codex/agents/product-lead.md +27 -0
- package/.codex/agents/project-lead.md +28 -0
- package/.codex/agents/quality-gate.md +89 -0
- package/.codex/agents/sprint-lead.md +28 -0
- package/.codex/agents/squad-creator.md +58 -0
- package/.codex/agents/ux-design-expert.md +28 -0
- package/.sinapse-ai/core/code-intel/registry-syncer.js +56 -3
- package/.sinapse-ai/core/doctor/checks/agent-memory.js +5 -1
- package/.sinapse-ai/core/doctor/checks/claude-md.js +4 -1
- package/.sinapse-ai/core/doctor/checks/code-intel.js +5 -1
- package/.sinapse-ai/core/doctor/checks/commands-count.js +4 -1
- package/.sinapse-ai/core/doctor/checks/constitution-consistency.js +4 -1
- package/.sinapse-ai/core/doctor/checks/core-config.js +4 -1
- package/.sinapse-ai/core/doctor/checks/entity-registry.js +6 -1
- package/.sinapse-ai/core/doctor/checks/git-hooks.js +5 -1
- package/.sinapse-ai/core/doctor/checks/graph-dashboard.js +4 -1
- package/.sinapse-ai/core/doctor/checks/hooks-claude-count.js +5 -1
- package/.sinapse-ai/core/doctor/checks/ide-sync.js +4 -1
- package/.sinapse-ai/core/doctor/checks/node-version.js +4 -1
- package/.sinapse-ai/core/doctor/checks/npm-packages.js +4 -1
- package/.sinapse-ai/core/doctor/checks/rules-files.js +4 -1
- package/.sinapse-ai/core/doctor/checks/settings-json.js +4 -1
- package/.sinapse-ai/core/doctor/checks/skills-count.js +4 -1
- package/.sinapse-ai/core/doctor/index.js +157 -50
- package/.sinapse-ai/core/ids/registry-updater.js +6 -1
- package/.sinapse-ai/core/logger/index.js +319 -0
- package/.sinapse-ai/core/orchestration/terminal-spawner.js +2 -2
- package/.sinapse-ai/core/telemetry/index.js +247 -0
- package/.sinapse-ai/data/entity-registry.yaml +1384 -944
- package/.sinapse-ai/development/agents/architect.md +5 -0
- package/.sinapse-ai/development/agents/data-engineer.md +38 -0
- package/.sinapse-ai/development/agents/developer.md +28 -0
- package/.sinapse-ai/development/agents/devops.md +4 -0
- package/.sinapse-ai/development/agents/product-lead.md +27 -0
- package/.sinapse-ai/development/agents/project-lead.md +28 -0
- package/.sinapse-ai/development/agents/quality-gate.md +4 -0
- package/.sinapse-ai/development/agents/sprint-lead/MEMORY.md +8 -0
- package/.sinapse-ai/development/agents/sprint-lead.md +28 -0
- package/.sinapse-ai/development/agents/squad-creator.md +58 -0
- package/.sinapse-ai/development/agents/ux-design-expert.md +28 -0
- package/.sinapse-ai/development/knowledge-base/agent-communication-protocol.md +127 -0
- package/.sinapse-ai/development/knowledge-base/database-scaling-patterns.md +374 -0
- package/.sinapse-ai/development/knowledge-base/environment-deployment-patterns.md +353 -0
- package/.sinapse-ai/development/knowledge-base/gotchas-patterns.md +224 -0
- package/.sinapse-ai/development/knowledge-base/infrastructure-decision-framework.md +221 -0
- package/.sinapse-ai/development/knowledge-base/security-pre-deploy-checklist.md +410 -0
- package/.sinapse-ai/development/knowledge-base/software-architecture-patterns.md +299 -0
- package/.sinapse-ai/development/knowledge-base/token-economy-guide.md +198 -0
- package/.sinapse-ai/development/scripts/populate-entity-registry.js +5 -1
- package/.sinapse-ai/development/skills/captcha-handler.md +82 -0
- package/.sinapse-ai/development/skills/chrome-brain.md +81 -0
- package/.sinapse-ai/development/skills/deploy-readiness.md +93 -0
- package/.sinapse-ai/development/skills/model-router.md +92 -0
- package/.sinapse-ai/development/skills/sinapse-methodology.md +175 -0
- package/.sinapse-ai/development/skills/story-fast-track.md +71 -0
- package/.sinapse-ai/development/tasks/dev-develop-story.md +10 -0
- package/.sinapse-ai/development/tasks/environment-promotion-pipeline.md +582 -0
- package/.sinapse-ai/development/tasks/generate-agent-handoff.md +223 -0
- package/.sinapse-ai/development/tasks/infrastructure-assessment.md +432 -0
- package/.sinapse-ai/development/tasks/load-testing-setup.md +611 -0
- package/.sinapse-ai/development/tasks/observability-blueprint.md +562 -0
- package/.sinapse-ai/development/templates/legal/breach-notification-tmpl.md +113 -0
- package/.sinapse-ai/development/templates/legal/privacy-policy-tmpl.md +93 -0
- package/.sinapse-ai/development/templates/legal/terms-of-service-tmpl.md +85 -0
- package/.sinapse-ai/development/templates/service-template/README.md.hbs +159 -159
- package/.sinapse-ai/development/templates/service-template/__tests__/index.test.ts.hbs +238 -238
- package/.sinapse-ai/development/templates/service-template/client.ts.hbs +404 -404
- package/.sinapse-ai/development/templates/service-template/errors.ts.hbs +183 -183
- package/.sinapse-ai/development/templates/service-template/index.ts.hbs +121 -121
- package/.sinapse-ai/development/templates/service-template/package.json.hbs +88 -88
- package/.sinapse-ai/development/templates/service-template/types.ts.hbs +146 -146
- package/.sinapse-ai/development/templates/squad-template/LICENSE +22 -22
- package/.sinapse-ai/development/workflows/story-development-cycle.yaml +40 -1
- package/.sinapse-ai/hooks/ids-post-commit.js +22 -0
- package/.sinapse-ai/infrastructure/contracts/compatibility/README.md +42 -0
- package/.sinapse-ai/infrastructure/contracts/compatibility/sinapse-current.yaml +35 -0
- package/.sinapse-ai/infrastructure/scripts/llm-routing/templates/claude-free-tracked.cmd +127 -127
- package/.sinapse-ai/infrastructure/scripts/llm-routing/templates/deepseek-proxy.cmd +71 -71
- package/.sinapse-ai/infrastructure/scripts/llm-routing/templates/deepseek-usage.cmd +51 -51
- package/.sinapse-ai/infrastructure/scripts/pr-review-ai.js +16 -13
- package/.sinapse-ai/infrastructure/scripts/setup-project-infra.js +128 -0
- package/.sinapse-ai/infrastructure/scripts/test-discovery.js +8 -3
- package/.sinapse-ai/infrastructure/scripts/validate-manifest-parity.js +380 -0
- package/.sinapse-ai/infrastructure/scripts/validate-parity.js +76 -25
- package/.sinapse-ai/infrastructure/templates/coderabbit.yaml.template +280 -280
- package/.sinapse-ai/infrastructure/templates/config/env.example +16 -0
- package/.sinapse-ai/infrastructure/templates/config/gitignore-additions.tmpl +59 -0
- package/.sinapse-ai/infrastructure/templates/github/CODEOWNERS.template +12 -0
- package/.sinapse-ai/infrastructure/templates/github/PULL_REQUEST_TEMPLATE.md +29 -0
- package/.sinapse-ai/infrastructure/templates/github/ci-template.yml +77 -0
- package/.sinapse-ai/infrastructure/templates/github/issue-templates/bug_report.md +34 -0
- package/.sinapse-ai/infrastructure/templates/github/issue-templates/feature_request.md +19 -0
- package/.sinapse-ai/infrastructure/templates/github-workflows/ci.yml.template +170 -170
- package/.sinapse-ai/infrastructure/templates/github-workflows/pr-automation.yml.template +331 -331
- package/.sinapse-ai/infrastructure/templates/github-workflows/release.yml.template +197 -197
- package/.sinapse-ai/infrastructure/templates/gitignore/gitignore-brownfield-merge.tmpl +19 -19
- package/.sinapse-ai/infrastructure/templates/gitignore/gitignore-node.tmpl +86 -86
- package/.sinapse-ai/infrastructure/templates/gitignore/gitignore-python.tmpl +146 -146
- package/.sinapse-ai/infrastructure/templates/gitignore/gitignore-sinapse-base.tmpl +64 -64
- package/.sinapse-ai/infrastructure/templates/sinapse-sync.yaml.template +183 -183
- package/.sinapse-ai/install-manifest.yaml +275 -140
- package/.sinapse-ai/local-config.yaml.template +65 -65
- package/.sinapse-ai/monitor/hooks/lib/__init__.py +2 -2
- package/.sinapse-ai/monitor/hooks/lib/enrich.py +59 -59
- package/.sinapse-ai/monitor/hooks/lib/send_event.py +48 -48
- package/.sinapse-ai/monitor/hooks/notification.py +30 -30
- package/.sinapse-ai/monitor/hooks/post_tool_use.py +46 -46
- package/.sinapse-ai/monitor/hooks/pre_compact.py +30 -30
- package/.sinapse-ai/monitor/hooks/pre_tool_use.py +41 -41
- package/.sinapse-ai/monitor/hooks/stop.py +30 -30
- package/.sinapse-ai/monitor/hooks/subagent_stop.py +30 -30
- package/.sinapse-ai/monitor/hooks/user_prompt_submit.py +39 -39
- package/.sinapse-ai/product/templates/adr.hbs +126 -126
- package/.sinapse-ai/product/templates/dbdr.hbs +242 -242
- package/.sinapse-ai/product/templates/epic.hbs +213 -213
- package/.sinapse-ai/product/templates/pmdr.hbs +187 -187
- package/.sinapse-ai/product/templates/prd-v2.0.hbs +217 -217
- package/.sinapse-ai/product/templates/prd.hbs +202 -202
- package/.sinapse-ai/product/templates/story-tmpl.yaml +59 -0
- package/.sinapse-ai/product/templates/story.hbs +264 -264
- package/.sinapse-ai/product/templates/task.hbs +171 -171
- package/.sinapse-ai/product/templates/tmpl-comment-on-examples.sql +159 -159
- package/.sinapse-ai/product/templates/tmpl-migration-script.sql +92 -92
- package/.sinapse-ai/product/templates/tmpl-rls-granular-policies.sql +105 -105
- package/.sinapse-ai/product/templates/tmpl-rls-kiss-policy.sql +11 -11
- package/.sinapse-ai/product/templates/tmpl-rls-roles.sql +136 -136
- package/.sinapse-ai/product/templates/tmpl-rls-simple.sql +78 -78
- package/.sinapse-ai/product/templates/tmpl-rls-tenant.sql +153 -153
- package/.sinapse-ai/product/templates/tmpl-rollback-script.sql +78 -78
- package/.sinapse-ai/product/templates/tmpl-seed-data.sql +141 -141
- package/.sinapse-ai/product/templates/tmpl-smoke-test.sql +17 -17
- package/.sinapse-ai/product/templates/tmpl-staging-copy-merge.sql +140 -140
- package/.sinapse-ai/product/templates/tmpl-stored-proc.sql +141 -141
- package/.sinapse-ai/product/templates/tmpl-trigger.sql +153 -153
- package/.sinapse-ai/product/templates/tmpl-view-materialized.sql +134 -134
- package/.sinapse-ai/product/templates/tmpl-view.sql +178 -178
- package/.sinapse-ai/scripts/diagnostics/health-dashboard/package-lock.json +427 -355
- package/LICENSE +34 -34
- package/README.en.md +167 -20
- package/README.md +190 -22
- package/bin/cli.js +510 -196
- package/bin/postinstall.js +564 -0
- package/bin/sinapse-cli +283 -283
- package/bin/sinapse-graph.js +9 -0
- package/bin/sinapse-init.js +36 -4
- package/bin/sinapse-minimal.js +20 -9
- package/bin/sinapse.js +202 -122
- package/bin/utils/deprecation-warning.js +46 -0
- package/bin/utils/pre-push-safety.js +14 -0
- package/docs/TELEMETRY.md +131 -0
- package/docs/chrome-brain-upgrade-plan.md +624 -0
- package/docs/framework/orqx-plan.md +1 -1
- package/docs/installation/chrome-brain.md +17 -7
- package/docs/mega-upgrade-orchestration-plan.md +71 -0
- package/docs/pt/contributing.md +20 -0
- package/docs/research-synthesis-for-upgrade.md +511 -0
- package/docs/security-audit-report.md +306 -0
- package/package.json +20 -8
- package/packages/installer/src/config/configure-environment.js +19 -44
- package/packages/installer/src/detection/detect-project-type.js +181 -63
- package/packages/installer/src/installer/manifest-signature.js +32 -17
- package/packages/installer/src/wizard/i18n.js +12 -0
- package/packages/installer/src/wizard/ide-config-generator.js +8 -39
- package/packages/installer/src/wizard/index.js +119 -14
- package/packages/installer/src/wizard/questions.js +2 -3
- package/packages/installer/tests/integration/environment-configuration.test.js +7 -5
- package/packages/installer/tests/unit/detection/detect-project-type.test.js +138 -1
- package/packages/installer/tests/unit/doctor/doctor-orchestrator.test.js +3 -3
- package/packages/sinapse-install/bin/edmcp.js +0 -0
- package/packages/sinapse-install/bin/sinapse-install.js +0 -0
- package/packages/sinapse-pro-cli/bin/sinapse-pro.js +0 -0
- package/scripts/check-markdown-links.py +353 -353
- package/scripts/coverage-report-summary.js +169 -0
- package/scripts/generate-install-manifest.js +6 -2
- package/scripts/release-readiness.js +169 -0
- package/scripts/test-install-matrix-local.sh +153 -0
- package/scripts/validate-install-docs.js +394 -0
- package/scripts/validate-no-external-refs.js +376 -0
- package/scripts/validate-squad-orqx.js +302 -0
- package/scripts/validate-story-meta.js +263 -0
- package/squads/claude-code-mastery/CHANGELOG.md +1 -1
- package/squads/claude-code-mastery/README.md +2 -2
- package/squads/claude-code-mastery/squad.yaml +1 -1
- package/squads/squad-artdir/README.md +90 -0
- package/squads/squad-artdir/agents/accessibility-guardian.md +184 -0
- package/squads/squad-artdir/agents/artdir-orqx.md +145 -0
- package/squads/squad-artdir/agents/color-psychologist.md +166 -0
- package/squads/squad-artdir/agents/cro-persuasion.md +161 -0
- package/squads/squad-artdir/agents/design-system-architect.md +100 -0
- package/squads/squad-artdir/agents/ia-architect.md +169 -0
- package/squads/squad-artdir/agents/interaction-designer.md +162 -0
- package/squads/squad-artdir/agents/layout-engineer.md +163 -0
- package/squads/squad-artdir/agents/motion-architect.md +185 -0
- package/squads/squad-artdir/agents/platform-aesthetic-director.md +84 -0
- package/squads/squad-artdir/agents/premium-packaging-strategist.md +107 -0
- package/squads/squad-artdir/agents/product-surface-director.md +86 -0
- package/squads/squad-artdir/agents/type-systemist.md +138 -0
- package/squads/squad-artdir/agents/visual-strategist.md +127 -0
- package/squads/squad-artdir/checklists/seven-pillars-validation-checklist.md +172 -0
- package/squads/squad-artdir/knowledge-base/case-nyo-ia-reference.md +289 -0
- package/squads/squad-artdir/knowledge-base/deliverables-templates.md +457 -0
- package/squads/squad-artdir/knowledge-base/motion-technique-catalog.md +247 -0
- package/squads/squad-artdir/knowledge-base/premium-packaging-principles.md +133 -0
- package/squads/squad-artdir/knowledge-base/psychological-toolkit.md +229 -0
- package/squads/squad-artdir/knowledge-base/saas-art-direction-canon.md +242 -0
- package/squads/squad-artdir/knowledge-base/seven-pillars-framework.md +289 -0
- package/squads/squad-artdir/knowledge-base/ten-pillars-framework.md +221 -0
- package/squads/squad-artdir/package.json +20 -0
- package/squads/squad-artdir/squad.yaml +271 -0
- package/squads/squad-artdir/tasks/audit-conversion.md +97 -0
- package/squads/squad-artdir/tasks/audit-drift-multi-surface.md +55 -0
- package/squads/squad-artdir/tasks/consult-saas-canon.md +54 -0
- package/squads/squad-artdir/tasks/create-art-direction-brief.md +110 -0
- package/squads/squad-artdir/tasks/create-premium-packaging-brief.md +61 -0
- package/squads/squad-artdir/tasks/create-wireflow.md +84 -0
- package/squads/squad-artdir/tasks/design-color-system.md +81 -0
- package/squads/squad-artdir/tasks/design-product-surface.md +60 -0
- package/squads/squad-artdir/tasks/design-token-system.md +58 -0
- package/squads/squad-artdir/tasks/diagnose-visual-language.md +92 -0
- package/squads/squad-artdir/tasks/first-5-minutes-choreography.md +65 -0
- package/squads/squad-artdir/tasks/specify-motion-system.md +84 -0
- package/squads/squad-artdir/tasks/validate-against-pillars.md +143 -0
- package/squads/squad-artdir/templates/art-direction-brief-template.md +215 -0
- package/squads/squad-artdir/workflows/conversion-audit-cycle.yaml +78 -0
- package/squads/squad-artdir/workflows/full-art-direction-cycle.yaml +98 -0
- package/squads/squad-artdir/workflows/saas-platform-art-direction-cycle.yaml +174 -0
- package/squads/squad-brand/knowledge-base/ai-visual-generation-canon.md +234 -0
- package/squads/squad-brand/squad.yaml +20 -6
- package/squads/squad-claude/knowledge-base/context-window-optimization.md +1 -1
- package/squads/squad-claude/knowledge-base/swarm-orchestration-patterns.md +2 -2
- package/squads/squad-content/knowledge-base/ai-native-content-loop.md +220 -0
- package/squads/squad-content/knowledge-base/signal-intelligence-v2.md +234 -0
- package/squads/squad-content/knowledge-base/task-ownership-map.md +235 -0
- package/squads/squad-content/squad.yaml +187 -27
- package/squads/squad-copy/knowledge-base/ai-copy-human-loop-canon.md +235 -0
- package/squads/squad-copy/squad.yaml +19 -4
- package/squads/squad-design/knowledge-base/cross-surface-token-canon.md +209 -0
- package/squads/squad-design/squad.yaml +19 -4
- package/.sinapse-ai/core/registry/service-registry.json +0 -6346
- package/.sinapse-ai/data/registry-update-log.jsonl +0 -1323
- package/.sinapse-ai/manifests/agents.csv +0 -29
- package/.sinapse-ai/manifests/tasks.csv +0 -204
- package/.sinapse-ai/manifests/workers.csv +0 -196
- package/squads/squad-growth/tasks/calculate-sample-size.md +0 -121
- package/squads/squad-paidmedia/tasks/calculate-sample-size.md +0 -57
package/bin/sinapse-cli
CHANGED
|
@@ -1,283 +1,283 @@
|
|
|
1
|
-
#!/bin/bash
|
|
2
|
-
# ══════════════════════════════════════════════════════════════════════════════
|
|
3
|
-
# sinapse — CLI unificado do Sinapse
|
|
4
|
-
# ══════════════════════════════════════════════════════════════════════════════
|
|
5
|
-
#
|
|
6
|
-
# Comandos:
|
|
7
|
-
# sinapse install Instala squads em um projeto (primeira vez)
|
|
8
|
-
# sinapse update Atualiza squads em projeto existente
|
|
9
|
-
# sinapse list Lista todas as squads e agentes disponíveis
|
|
10
|
-
# sinapse status Mostra status das squads no projeto atual
|
|
11
|
-
# sinapse pull Puxa atualizações do repo e atualiza projeto atual
|
|
12
|
-
# sinapse help Mostra esta ajuda
|
|
13
|
-
#
|
|
14
|
-
# Setup (rodar uma vez):
|
|
15
|
-
# echo 'export PATH="$HOME/Workspace/caio-imori/sinapse:$PATH"' >> ~/.bashrc
|
|
16
|
-
# source ~/.bashrc
|
|
17
|
-
#
|
|
18
|
-
# ══════════════════════════════════════════════════════════════════════════════
|
|
19
|
-
|
|
20
|
-
set -e
|
|
21
|
-
|
|
22
|
-
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
23
|
-
|
|
24
|
-
# Cores
|
|
25
|
-
GREEN='\033[0;32m'
|
|
26
|
-
YELLOW='\033[1;33m'
|
|
27
|
-
BLUE='\033[0;34m'
|
|
28
|
-
RED='\033[0;31m'
|
|
29
|
-
CYAN='\033[0;36m'
|
|
30
|
-
BOLD='\033[1m'
|
|
31
|
-
NC='\033[0m'
|
|
32
|
-
|
|
33
|
-
VERSION="1.0.0"
|
|
34
|
-
|
|
35
|
-
# ══════════════════════════════════════════════════════════════════════════════
|
|
36
|
-
# Helpers
|
|
37
|
-
# ══════════════════════════════════════════════════════════════════════════════
|
|
38
|
-
|
|
39
|
-
header() {
|
|
40
|
-
echo ""
|
|
41
|
-
echo -e "${CYAN}${BOLD} ╔═╗╦╔╗╔╔═╗╔═╗╔═╗╔═╗${NC}"
|
|
42
|
-
echo -e "${CYAN}${BOLD} ╚═╗║║║║╠═╣╠═╝╚═╗║╣ ${NC}"
|
|
43
|
-
echo -e "${CYAN}${BOLD} ╚═╝╩╝╚╝╩ ╩╩ ╚═╝╚═╝${NC}"
|
|
44
|
-
echo -e " ${BOLD}v${VERSION}${NC} — 17 squads | 149 agents | 1196 tasks"
|
|
45
|
-
echo ""
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
# ══════════════════════════════════════════════════════════════════════════════
|
|
49
|
-
# sinapse install
|
|
50
|
-
# ══════════════════════════════════════════════════════════════════════════════
|
|
51
|
-
|
|
52
|
-
cmd_install() {
|
|
53
|
-
header
|
|
54
|
-
echo -e "${BLUE}▸ Instalando squads no projeto...${NC}"
|
|
55
|
-
echo ""
|
|
56
|
-
bash "$SCRIPT_DIR/../scripts/install-squads.sh"
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
# ══════════════════════════════════════════════════════════════════════════════
|
|
60
|
-
# sinapse update
|
|
61
|
-
# ══════════════════════════════════════════════════════════════════════════════
|
|
62
|
-
|
|
63
|
-
cmd_update() {
|
|
64
|
-
header
|
|
65
|
-
echo -e "${BLUE}▸ Atualizando squads no projeto...${NC}"
|
|
66
|
-
echo ""
|
|
67
|
-
bash "$SCRIPT_DIR/../scripts/update-squads.sh"
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
# ══════════════════════════════════════════════════════════════════════════════
|
|
71
|
-
# sinapse list
|
|
72
|
-
# ══════════════════════════════════════════════════════════════════════════════
|
|
73
|
-
|
|
74
|
-
cmd_list() {
|
|
75
|
-
header
|
|
76
|
-
echo -e "${BOLD}Squads disponíveis:${NC}"
|
|
77
|
-
echo ""
|
|
78
|
-
|
|
79
|
-
total_agents=0
|
|
80
|
-
total_tasks=0
|
|
81
|
-
|
|
82
|
-
for squad_dir in "$SCRIPT_DIR"/squad-*/; do
|
|
83
|
-
[ ! -d "$squad_dir" ] && continue
|
|
84
|
-
squad_name=$(basename "$squad_dir")
|
|
85
|
-
manifest="$squad_dir/squad.yaml"
|
|
86
|
-
[ ! -f "$manifest" ] && continue
|
|
87
|
-
|
|
88
|
-
# Skip deprecated
|
|
89
|
-
[[ "$squad_name" == *".deprecated"* ]] && continue
|
|
90
|
-
|
|
91
|
-
sp=$(grep "^slashPrefix:" "$manifest" | head -1 | sed 's/^slashPrefix: *//' | tr -d '"' | tr -d "'" | tr -d ' ')
|
|
92
|
-
[ -z "$sp" ] && sp="--"
|
|
93
|
-
|
|
94
|
-
agent_count=$(ls "$squad_dir/agents/"*.md 2>/dev/null | wc -l | tr -d ' ')
|
|
95
|
-
task_count=$(ls "$squad_dir/tasks/"*.md 2>/dev/null | wc -l | tr -d ' ')
|
|
96
|
-
total_agents=$((total_agents + agent_count))
|
|
97
|
-
total_tasks=$((total_tasks + task_count))
|
|
98
|
-
|
|
99
|
-
# Short description
|
|
100
|
-
desc=$(grep "^description:" "$manifest" | head -1 | sed 's/^description: *//' | tr -d '"' | cut -c1-60)
|
|
101
|
-
|
|
102
|
-
printf " ${CYAN}%-12s${NC} ${GREEN}%3s agents${NC} ${YELLOW}%3s tasks${NC} %s\n" "/$sp" "$agent_count" "$task_count" "$desc"
|
|
103
|
-
done
|
|
104
|
-
|
|
105
|
-
echo ""
|
|
106
|
-
echo -e " ${BOLD}Total: ${GREEN}${total_agents} agents${NC} | ${YELLOW}${total_tasks} tasks${NC}"
|
|
107
|
-
echo ""
|
|
108
|
-
echo -e " ${YELLOW}Uso:${NC} sinapse list agents ${CYAN}<squad>${NC} — ver agentes de uma squad"
|
|
109
|
-
echo ""
|
|
110
|
-
|
|
111
|
-
# If second arg is "agents" and third is a squad prefix
|
|
112
|
-
if [ "$1" = "agents" ] && [ -n "$2" ]; then
|
|
113
|
-
cmd_list_agents "$2"
|
|
114
|
-
fi
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
cmd_list_agents() {
|
|
118
|
-
local prefix="$1"
|
|
119
|
-
echo -e "${BOLD}Agentes da squad /$prefix:${NC}"
|
|
120
|
-
echo ""
|
|
121
|
-
|
|
122
|
-
for squad_dir in "$SCRIPT_DIR"/squad-*/; do
|
|
123
|
-
[ ! -d "$squad_dir" ] && continue
|
|
124
|
-
manifest="$squad_dir/squad.yaml"
|
|
125
|
-
[ ! -f "$manifest" ] && continue
|
|
126
|
-
|
|
127
|
-
sp=$(grep "^slashPrefix:" "$manifest" | head -1 | sed 's/^slashPrefix: *//' | tr -d '"' | tr -d "'" | tr -d ' ')
|
|
128
|
-
[ "$sp" != "$prefix" ] && continue
|
|
129
|
-
|
|
130
|
-
for agent_file in "$squad_dir/agents/"*.md; do
|
|
131
|
-
[ ! -f "$agent_file" ] && continue
|
|
132
|
-
agent_id=$(basename "$agent_file" .md)
|
|
133
|
-
# Try to get agent title from first # heading
|
|
134
|
-
title=$(head -5 "$agent_file" | grep "^# " | head -1 | sed 's/^# //')
|
|
135
|
-
printf " ${CYAN}/%s:agents:%-30s${NC} %s\n" "$sp" "$agent_id" "$title"
|
|
136
|
-
done
|
|
137
|
-
break
|
|
138
|
-
done
|
|
139
|
-
echo ""
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
# ══════════════════════════════════════════════════════════════════════════════
|
|
143
|
-
# sinapse status
|
|
144
|
-
# ══════════════════════════════════════════════════════════════════════════════
|
|
145
|
-
|
|
146
|
-
cmd_status() {
|
|
147
|
-
header
|
|
148
|
-
|
|
149
|
-
if [ ! -d "./squads" ]; then
|
|
150
|
-
echo -e " ${RED}✗${NC} Squads não instaladas neste projeto"
|
|
151
|
-
echo -e " ${YELLOW}Rode:${NC} sinapse install"
|
|
152
|
-
echo ""
|
|
153
|
-
return
|
|
154
|
-
fi
|
|
155
|
-
|
|
156
|
-
echo -e "${BOLD}Status das squads neste projeto:${NC}"
|
|
157
|
-
echo ""
|
|
158
|
-
|
|
159
|
-
installed=0
|
|
160
|
-
missing=0
|
|
161
|
-
|
|
162
|
-
for squad_dir in "$SCRIPT_DIR"/squad-*/; do
|
|
163
|
-
[ ! -d "$squad_dir" ] && continue
|
|
164
|
-
squad_name=$(basename "$squad_dir")
|
|
165
|
-
[[ "$squad_name" == *".deprecated"* ]] && continue
|
|
166
|
-
manifest="$squad_dir/squad.yaml"
|
|
167
|
-
[ ! -f "$manifest" ] && continue
|
|
168
|
-
|
|
169
|
-
target="./squads/$squad_name"
|
|
170
|
-
if [ -L "$target" ] || [ -d "$target" ]; then
|
|
171
|
-
echo -e " ${GREEN}✓${NC} $squad_name"
|
|
172
|
-
installed=$((installed + 1))
|
|
173
|
-
else
|
|
174
|
-
echo -e " ${RED}✗${NC} $squad_name ${YELLOW}(não instalada)${NC}"
|
|
175
|
-
missing=$((missing + 1))
|
|
176
|
-
fi
|
|
177
|
-
done
|
|
178
|
-
|
|
179
|
-
echo ""
|
|
180
|
-
echo -e " ${GREEN}${installed} instaladas${NC} | ${RED}${missing} faltando${NC}"
|
|
181
|
-
|
|
182
|
-
if [ $missing -gt 0 ]; then
|
|
183
|
-
echo -e " ${YELLOW}Rode:${NC} sinapse update"
|
|
184
|
-
fi
|
|
185
|
-
|
|
186
|
-
# Check awareness
|
|
187
|
-
if [ -f ".claude/rules/squad-awareness.md" ]; then
|
|
188
|
-
echo -e " ${GREEN}✓${NC} squad-awareness.md presente"
|
|
189
|
-
else
|
|
190
|
-
echo -e " ${RED}✗${NC} squad-awareness.md ausente"
|
|
191
|
-
fi
|
|
192
|
-
|
|
193
|
-
# Check commands
|
|
194
|
-
cmd_count=$(find .claude/commands/ -name "*.md" 2>/dev/null | wc -l | tr -d ' ')
|
|
195
|
-
if [ "$cmd_count" -gt 0 ]; then
|
|
196
|
-
echo -e " ${GREEN}✓${NC} $cmd_count command files"
|
|
197
|
-
else
|
|
198
|
-
echo -e " ${RED}✗${NC} Nenhum command file"
|
|
199
|
-
fi
|
|
200
|
-
|
|
201
|
-
echo ""
|
|
202
|
-
}
|
|
203
|
-
|
|
204
|
-
# ══════════════════════════════════════════════════════════════════════════════
|
|
205
|
-
# sinapse pull
|
|
206
|
-
# ══════════════════════════════════════════════════════════════════════════════
|
|
207
|
-
|
|
208
|
-
cmd_pull() {
|
|
209
|
-
header
|
|
210
|
-
echo -e "${BLUE}▸ Puxando atualizações do sinapse...${NC}"
|
|
211
|
-
echo ""
|
|
212
|
-
|
|
213
|
-
cd "$SCRIPT_DIR"
|
|
214
|
-
git pull
|
|
215
|
-
echo ""
|
|
216
|
-
|
|
217
|
-
# Se estamos num projeto com squads, atualizar
|
|
218
|
-
cd - > /dev/null
|
|
219
|
-
if [ -d "./squads" ]; then
|
|
220
|
-
echo -e "${BLUE}▸ Atualizando projeto atual...${NC}"
|
|
221
|
-
echo ""
|
|
222
|
-
bash "$SCRIPT_DIR/../scripts/update-squads.sh"
|
|
223
|
-
else
|
|
224
|
-
echo -e "${YELLOW}Não estamos em um projeto com squads. Só o repo foi atualizado.${NC}"
|
|
225
|
-
echo ""
|
|
226
|
-
fi
|
|
227
|
-
}
|
|
228
|
-
|
|
229
|
-
# ══════════════════════════════════════════════════════════════════════════════
|
|
230
|
-
# sinapse help
|
|
231
|
-
# ══════════════════════════════════════════════════════════════════════════════
|
|
232
|
-
|
|
233
|
-
cmd_help() {
|
|
234
|
-
header
|
|
235
|
-
echo -e "${BOLD}Comandos:${NC}"
|
|
236
|
-
echo ""
|
|
237
|
-
echo -e " ${CYAN}sinapse install${NC} Instala squads em projeto (primeira vez)"
|
|
238
|
-
echo -e " ${CYAN}sinapse update${NC} Atualiza squads (novas squads + awareness + commands)"
|
|
239
|
-
echo -e " ${CYAN}sinapse list${NC} Lista todas as squads disponíveis"
|
|
240
|
-
echo -e " ${CYAN}sinapse list agents <prefix>${NC} Lista agentes de uma squad (ex: sinapse list agents brand)"
|
|
241
|
-
echo -e " ${CYAN}sinapse status${NC} Status das squads no projeto atual"
|
|
242
|
-
echo -e " ${CYAN}sinapse pull${NC} Git pull + atualiza projeto atual"
|
|
243
|
-
echo -e " ${CYAN}sinapse help${NC} Mostra esta ajuda"
|
|
244
|
-
echo ""
|
|
245
|
-
echo -e "${BOLD}Setup (rodar uma vez):${NC}"
|
|
246
|
-
echo ""
|
|
247
|
-
echo -e " ${YELLOW}# Adicionar ao PATH:${NC}"
|
|
248
|
-
echo -e " echo 'export PATH=\"\$HOME/Workspace/caio-imori/sinapse:\$PATH\"' >> ~/.bashrc"
|
|
249
|
-
echo -e " source ~/.bashrc"
|
|
250
|
-
echo ""
|
|
251
|
-
echo -e "${BOLD}Uso típico:${NC}"
|
|
252
|
-
echo ""
|
|
253
|
-
echo -e " ${GREEN}# Projeto novo:${NC}"
|
|
254
|
-
echo -e " cd meu-projeto"
|
|
255
|
-
echo -e " sinapse install"
|
|
256
|
-
echo ""
|
|
257
|
-
echo -e " ${GREEN}# Projeto existente (após git pull no sinapse):${NC}"
|
|
258
|
-
echo -e " cd meu-projeto"
|
|
259
|
-
echo -e " sinapse update"
|
|
260
|
-
echo ""
|
|
261
|
-
echo -e " ${GREEN}# Tudo de uma vez (pull + update):${NC}"
|
|
262
|
-
echo -e " cd meu-projeto"
|
|
263
|
-
echo -e " sinapse pull"
|
|
264
|
-
echo ""
|
|
265
|
-
}
|
|
266
|
-
|
|
267
|
-
# ══════════════════════════════════════════════════════════════════════════════
|
|
268
|
-
# Router
|
|
269
|
-
# ══════════════════════════════════════════════════════════════════════════════
|
|
270
|
-
|
|
271
|
-
case "${1:-help}" in
|
|
272
|
-
install) cmd_install ;;
|
|
273
|
-
update) cmd_update ;;
|
|
274
|
-
list) shift; cmd_list "$@" ;;
|
|
275
|
-
status) cmd_status ;;
|
|
276
|
-
pull) cmd_pull ;;
|
|
277
|
-
help|--help|-h) cmd_help ;;
|
|
278
|
-
*)
|
|
279
|
-
echo -e "${RED}Comando desconhecido:${NC} $1"
|
|
280
|
-
echo -e "Rode ${CYAN}sinapse help${NC} para ver comandos disponíveis"
|
|
281
|
-
exit 1
|
|
282
|
-
;;
|
|
283
|
-
esac
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# ══════════════════════════════════════════════════════════════════════════════
|
|
3
|
+
# sinapse — CLI unificado do Sinapse
|
|
4
|
+
# ══════════════════════════════════════════════════════════════════════════════
|
|
5
|
+
#
|
|
6
|
+
# Comandos:
|
|
7
|
+
# sinapse install Instala squads em um projeto (primeira vez)
|
|
8
|
+
# sinapse update Atualiza squads em projeto existente
|
|
9
|
+
# sinapse list Lista todas as squads e agentes disponíveis
|
|
10
|
+
# sinapse status Mostra status das squads no projeto atual
|
|
11
|
+
# sinapse pull Puxa atualizações do repo e atualiza projeto atual
|
|
12
|
+
# sinapse help Mostra esta ajuda
|
|
13
|
+
#
|
|
14
|
+
# Setup (rodar uma vez):
|
|
15
|
+
# echo 'export PATH="$HOME/Workspace/caio-imori/sinapse:$PATH"' >> ~/.bashrc
|
|
16
|
+
# source ~/.bashrc
|
|
17
|
+
#
|
|
18
|
+
# ══════════════════════════════════════════════════════════════════════════════
|
|
19
|
+
|
|
20
|
+
set -e
|
|
21
|
+
|
|
22
|
+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
23
|
+
|
|
24
|
+
# Cores
|
|
25
|
+
GREEN='\033[0;32m'
|
|
26
|
+
YELLOW='\033[1;33m'
|
|
27
|
+
BLUE='\033[0;34m'
|
|
28
|
+
RED='\033[0;31m'
|
|
29
|
+
CYAN='\033[0;36m'
|
|
30
|
+
BOLD='\033[1m'
|
|
31
|
+
NC='\033[0m'
|
|
32
|
+
|
|
33
|
+
VERSION="1.0.0"
|
|
34
|
+
|
|
35
|
+
# ══════════════════════════════════════════════════════════════════════════════
|
|
36
|
+
# Helpers
|
|
37
|
+
# ══════════════════════════════════════════════════════════════════════════════
|
|
38
|
+
|
|
39
|
+
header() {
|
|
40
|
+
echo ""
|
|
41
|
+
echo -e "${CYAN}${BOLD} ╔═╗╦╔╗╔╔═╗╔═╗╔═╗╔═╗${NC}"
|
|
42
|
+
echo -e "${CYAN}${BOLD} ╚═╗║║║║╠═╣╠═╝╚═╗║╣ ${NC}"
|
|
43
|
+
echo -e "${CYAN}${BOLD} ╚═╝╩╝╚╝╩ ╩╩ ╚═╝╚═╝${NC}"
|
|
44
|
+
echo -e " ${BOLD}v${VERSION}${NC} — 17 squads | 149 agents | 1196 tasks"
|
|
45
|
+
echo ""
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
# ══════════════════════════════════════════════════════════════════════════════
|
|
49
|
+
# sinapse install
|
|
50
|
+
# ══════════════════════════════════════════════════════════════════════════════
|
|
51
|
+
|
|
52
|
+
cmd_install() {
|
|
53
|
+
header
|
|
54
|
+
echo -e "${BLUE}▸ Instalando squads no projeto...${NC}"
|
|
55
|
+
echo ""
|
|
56
|
+
bash "$SCRIPT_DIR/../scripts/install-squads.sh"
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
# ══════════════════════════════════════════════════════════════════════════════
|
|
60
|
+
# sinapse update
|
|
61
|
+
# ══════════════════════════════════════════════════════════════════════════════
|
|
62
|
+
|
|
63
|
+
cmd_update() {
|
|
64
|
+
header
|
|
65
|
+
echo -e "${BLUE}▸ Atualizando squads no projeto...${NC}"
|
|
66
|
+
echo ""
|
|
67
|
+
bash "$SCRIPT_DIR/../scripts/update-squads.sh"
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
# ══════════════════════════════════════════════════════════════════════════════
|
|
71
|
+
# sinapse list
|
|
72
|
+
# ══════════════════════════════════════════════════════════════════════════════
|
|
73
|
+
|
|
74
|
+
cmd_list() {
|
|
75
|
+
header
|
|
76
|
+
echo -e "${BOLD}Squads disponíveis:${NC}"
|
|
77
|
+
echo ""
|
|
78
|
+
|
|
79
|
+
total_agents=0
|
|
80
|
+
total_tasks=0
|
|
81
|
+
|
|
82
|
+
for squad_dir in "$SCRIPT_DIR"/squad-*/; do
|
|
83
|
+
[ ! -d "$squad_dir" ] && continue
|
|
84
|
+
squad_name=$(basename "$squad_dir")
|
|
85
|
+
manifest="$squad_dir/squad.yaml"
|
|
86
|
+
[ ! -f "$manifest" ] && continue
|
|
87
|
+
|
|
88
|
+
# Skip deprecated
|
|
89
|
+
[[ "$squad_name" == *".deprecated"* ]] && continue
|
|
90
|
+
|
|
91
|
+
sp=$(grep "^slashPrefix:" "$manifest" | head -1 | sed 's/^slashPrefix: *//' | tr -d '"' | tr -d "'" | tr -d ' ')
|
|
92
|
+
[ -z "$sp" ] && sp="--"
|
|
93
|
+
|
|
94
|
+
agent_count=$(ls "$squad_dir/agents/"*.md 2>/dev/null | wc -l | tr -d ' ')
|
|
95
|
+
task_count=$(ls "$squad_dir/tasks/"*.md 2>/dev/null | wc -l | tr -d ' ')
|
|
96
|
+
total_agents=$((total_agents + agent_count))
|
|
97
|
+
total_tasks=$((total_tasks + task_count))
|
|
98
|
+
|
|
99
|
+
# Short description
|
|
100
|
+
desc=$(grep "^description:" "$manifest" | head -1 | sed 's/^description: *//' | tr -d '"' | cut -c1-60)
|
|
101
|
+
|
|
102
|
+
printf " ${CYAN}%-12s${NC} ${GREEN}%3s agents${NC} ${YELLOW}%3s tasks${NC} %s\n" "/$sp" "$agent_count" "$task_count" "$desc"
|
|
103
|
+
done
|
|
104
|
+
|
|
105
|
+
echo ""
|
|
106
|
+
echo -e " ${BOLD}Total: ${GREEN}${total_agents} agents${NC} | ${YELLOW}${total_tasks} tasks${NC}"
|
|
107
|
+
echo ""
|
|
108
|
+
echo -e " ${YELLOW}Uso:${NC} sinapse list agents ${CYAN}<squad>${NC} — ver agentes de uma squad"
|
|
109
|
+
echo ""
|
|
110
|
+
|
|
111
|
+
# If second arg is "agents" and third is a squad prefix
|
|
112
|
+
if [ "$1" = "agents" ] && [ -n "$2" ]; then
|
|
113
|
+
cmd_list_agents "$2"
|
|
114
|
+
fi
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
cmd_list_agents() {
|
|
118
|
+
local prefix="$1"
|
|
119
|
+
echo -e "${BOLD}Agentes da squad /$prefix:${NC}"
|
|
120
|
+
echo ""
|
|
121
|
+
|
|
122
|
+
for squad_dir in "$SCRIPT_DIR"/squad-*/; do
|
|
123
|
+
[ ! -d "$squad_dir" ] && continue
|
|
124
|
+
manifest="$squad_dir/squad.yaml"
|
|
125
|
+
[ ! -f "$manifest" ] && continue
|
|
126
|
+
|
|
127
|
+
sp=$(grep "^slashPrefix:" "$manifest" | head -1 | sed 's/^slashPrefix: *//' | tr -d '"' | tr -d "'" | tr -d ' ')
|
|
128
|
+
[ "$sp" != "$prefix" ] && continue
|
|
129
|
+
|
|
130
|
+
for agent_file in "$squad_dir/agents/"*.md; do
|
|
131
|
+
[ ! -f "$agent_file" ] && continue
|
|
132
|
+
agent_id=$(basename "$agent_file" .md)
|
|
133
|
+
# Try to get agent title from first # heading
|
|
134
|
+
title=$(head -5 "$agent_file" | grep "^# " | head -1 | sed 's/^# //')
|
|
135
|
+
printf " ${CYAN}/%s:agents:%-30s${NC} %s\n" "$sp" "$agent_id" "$title"
|
|
136
|
+
done
|
|
137
|
+
break
|
|
138
|
+
done
|
|
139
|
+
echo ""
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
# ══════════════════════════════════════════════════════════════════════════════
|
|
143
|
+
# sinapse status
|
|
144
|
+
# ══════════════════════════════════════════════════════════════════════════════
|
|
145
|
+
|
|
146
|
+
cmd_status() {
|
|
147
|
+
header
|
|
148
|
+
|
|
149
|
+
if [ ! -d "./squads" ]; then
|
|
150
|
+
echo -e " ${RED}✗${NC} Squads não instaladas neste projeto"
|
|
151
|
+
echo -e " ${YELLOW}Rode:${NC} sinapse install"
|
|
152
|
+
echo ""
|
|
153
|
+
return
|
|
154
|
+
fi
|
|
155
|
+
|
|
156
|
+
echo -e "${BOLD}Status das squads neste projeto:${NC}"
|
|
157
|
+
echo ""
|
|
158
|
+
|
|
159
|
+
installed=0
|
|
160
|
+
missing=0
|
|
161
|
+
|
|
162
|
+
for squad_dir in "$SCRIPT_DIR"/squad-*/; do
|
|
163
|
+
[ ! -d "$squad_dir" ] && continue
|
|
164
|
+
squad_name=$(basename "$squad_dir")
|
|
165
|
+
[[ "$squad_name" == *".deprecated"* ]] && continue
|
|
166
|
+
manifest="$squad_dir/squad.yaml"
|
|
167
|
+
[ ! -f "$manifest" ] && continue
|
|
168
|
+
|
|
169
|
+
target="./squads/$squad_name"
|
|
170
|
+
if [ -L "$target" ] || [ -d "$target" ]; then
|
|
171
|
+
echo -e " ${GREEN}✓${NC} $squad_name"
|
|
172
|
+
installed=$((installed + 1))
|
|
173
|
+
else
|
|
174
|
+
echo -e " ${RED}✗${NC} $squad_name ${YELLOW}(não instalada)${NC}"
|
|
175
|
+
missing=$((missing + 1))
|
|
176
|
+
fi
|
|
177
|
+
done
|
|
178
|
+
|
|
179
|
+
echo ""
|
|
180
|
+
echo -e " ${GREEN}${installed} instaladas${NC} | ${RED}${missing} faltando${NC}"
|
|
181
|
+
|
|
182
|
+
if [ $missing -gt 0 ]; then
|
|
183
|
+
echo -e " ${YELLOW}Rode:${NC} sinapse update"
|
|
184
|
+
fi
|
|
185
|
+
|
|
186
|
+
# Check awareness
|
|
187
|
+
if [ -f ".claude/rules/squad-awareness.md" ]; then
|
|
188
|
+
echo -e " ${GREEN}✓${NC} squad-awareness.md presente"
|
|
189
|
+
else
|
|
190
|
+
echo -e " ${RED}✗${NC} squad-awareness.md ausente"
|
|
191
|
+
fi
|
|
192
|
+
|
|
193
|
+
# Check commands
|
|
194
|
+
cmd_count=$(find .claude/commands/ -name "*.md" 2>/dev/null | wc -l | tr -d ' ')
|
|
195
|
+
if [ "$cmd_count" -gt 0 ]; then
|
|
196
|
+
echo -e " ${GREEN}✓${NC} $cmd_count command files"
|
|
197
|
+
else
|
|
198
|
+
echo -e " ${RED}✗${NC} Nenhum command file"
|
|
199
|
+
fi
|
|
200
|
+
|
|
201
|
+
echo ""
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
# ══════════════════════════════════════════════════════════════════════════════
|
|
205
|
+
# sinapse pull
|
|
206
|
+
# ══════════════════════════════════════════════════════════════════════════════
|
|
207
|
+
|
|
208
|
+
cmd_pull() {
|
|
209
|
+
header
|
|
210
|
+
echo -e "${BLUE}▸ Puxando atualizações do sinapse...${NC}"
|
|
211
|
+
echo ""
|
|
212
|
+
|
|
213
|
+
cd "$SCRIPT_DIR"
|
|
214
|
+
git pull
|
|
215
|
+
echo ""
|
|
216
|
+
|
|
217
|
+
# Se estamos num projeto com squads, atualizar
|
|
218
|
+
cd - > /dev/null
|
|
219
|
+
if [ -d "./squads" ]; then
|
|
220
|
+
echo -e "${BLUE}▸ Atualizando projeto atual...${NC}"
|
|
221
|
+
echo ""
|
|
222
|
+
bash "$SCRIPT_DIR/../scripts/update-squads.sh"
|
|
223
|
+
else
|
|
224
|
+
echo -e "${YELLOW}Não estamos em um projeto com squads. Só o repo foi atualizado.${NC}"
|
|
225
|
+
echo ""
|
|
226
|
+
fi
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
# ══════════════════════════════════════════════════════════════════════════════
|
|
230
|
+
# sinapse help
|
|
231
|
+
# ══════════════════════════════════════════════════════════════════════════════
|
|
232
|
+
|
|
233
|
+
cmd_help() {
|
|
234
|
+
header
|
|
235
|
+
echo -e "${BOLD}Comandos:${NC}"
|
|
236
|
+
echo ""
|
|
237
|
+
echo -e " ${CYAN}sinapse install${NC} Instala squads em projeto (primeira vez)"
|
|
238
|
+
echo -e " ${CYAN}sinapse update${NC} Atualiza squads (novas squads + awareness + commands)"
|
|
239
|
+
echo -e " ${CYAN}sinapse list${NC} Lista todas as squads disponíveis"
|
|
240
|
+
echo -e " ${CYAN}sinapse list agents <prefix>${NC} Lista agentes de uma squad (ex: sinapse list agents brand)"
|
|
241
|
+
echo -e " ${CYAN}sinapse status${NC} Status das squads no projeto atual"
|
|
242
|
+
echo -e " ${CYAN}sinapse pull${NC} Git pull + atualiza projeto atual"
|
|
243
|
+
echo -e " ${CYAN}sinapse help${NC} Mostra esta ajuda"
|
|
244
|
+
echo ""
|
|
245
|
+
echo -e "${BOLD}Setup (rodar uma vez):${NC}"
|
|
246
|
+
echo ""
|
|
247
|
+
echo -e " ${YELLOW}# Adicionar ao PATH:${NC}"
|
|
248
|
+
echo -e " echo 'export PATH=\"\$HOME/Workspace/caio-imori/sinapse:\$PATH\"' >> ~/.bashrc"
|
|
249
|
+
echo -e " source ~/.bashrc"
|
|
250
|
+
echo ""
|
|
251
|
+
echo -e "${BOLD}Uso típico:${NC}"
|
|
252
|
+
echo ""
|
|
253
|
+
echo -e " ${GREEN}# Projeto novo:${NC}"
|
|
254
|
+
echo -e " cd meu-projeto"
|
|
255
|
+
echo -e " sinapse install"
|
|
256
|
+
echo ""
|
|
257
|
+
echo -e " ${GREEN}# Projeto existente (após git pull no sinapse):${NC}"
|
|
258
|
+
echo -e " cd meu-projeto"
|
|
259
|
+
echo -e " sinapse update"
|
|
260
|
+
echo ""
|
|
261
|
+
echo -e " ${GREEN}# Tudo de uma vez (pull + update):${NC}"
|
|
262
|
+
echo -e " cd meu-projeto"
|
|
263
|
+
echo -e " sinapse pull"
|
|
264
|
+
echo ""
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
# ══════════════════════════════════════════════════════════════════════════════
|
|
268
|
+
# Router
|
|
269
|
+
# ══════════════════════════════════════════════════════════════════════════════
|
|
270
|
+
|
|
271
|
+
case "${1:-help}" in
|
|
272
|
+
install) cmd_install ;;
|
|
273
|
+
update) cmd_update ;;
|
|
274
|
+
list) shift; cmd_list "$@" ;;
|
|
275
|
+
status) cmd_status ;;
|
|
276
|
+
pull) cmd_pull ;;
|
|
277
|
+
help|--help|-h) cmd_help ;;
|
|
278
|
+
*)
|
|
279
|
+
echo -e "${RED}Comando desconhecido:${NC} $1"
|
|
280
|
+
echo -e "Rode ${CYAN}sinapse help${NC} para ver comandos disponíveis"
|
|
281
|
+
exit 1
|
|
282
|
+
;;
|
|
283
|
+
esac
|
package/bin/sinapse-graph.js
CHANGED
|
@@ -1,6 +1,15 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
'use strict';
|
|
3
3
|
|
|
4
|
+
// Story 10.13 — sinapse-graph is internal/deprecated for end users.
|
|
5
|
+
// Story 10.30 (Cycle 5) — removed from package.json `bin` for v10.0.0.
|
|
6
|
+
// File kept in the repo for one release cycle as a forwarder, then
|
|
7
|
+
// deleted entirely in v11. The dashboard functionality is preserved
|
|
8
|
+
// for backward compat during the v11 transition window via direct
|
|
9
|
+
// `node bin/sinapse-graph.js` invocation only.
|
|
10
|
+
const { emitDeprecationWarning } = require('./utils/deprecation-warning');
|
|
11
|
+
emitDeprecationWarning('sinapse-graph');
|
|
12
|
+
|
|
4
13
|
const { run } = require('../.sinapse-ai/core/graph-dashboard/cli');
|
|
5
14
|
|
|
6
15
|
run(process.argv.slice(2)).catch((err) => {
|
package/bin/sinapse-init.js
CHANGED
|
@@ -557,6 +557,14 @@ async function main() {
|
|
|
557
557
|
};
|
|
558
558
|
|
|
559
559
|
// Step 1: Copy basic IDE rules files
|
|
560
|
+
// Story 10.38: Merge-only policy. If the target file already exists, we
|
|
561
|
+
// ALWAYS merge via MarkdownMerger — never overwrite — so that user custom
|
|
562
|
+
// rules in CLAUDE.md / instructions.md are preserved across re-installs.
|
|
563
|
+
const { MarkdownMerger } = require(path.join(
|
|
564
|
+
sourceCoreDir, '..', 'packages', 'installer', 'src', 'merger', 'strategies', 'markdown-merger.js'
|
|
565
|
+
));
|
|
566
|
+
const markdownMerger = new MarkdownMerger();
|
|
567
|
+
|
|
560
568
|
for (const ide of ides) {
|
|
561
569
|
if (ide !== 'none' && ideRulesMap[ide]) {
|
|
562
570
|
const ideConfig = ideRulesMap[ide];
|
|
@@ -565,10 +573,34 @@ async function main() {
|
|
|
565
573
|
|
|
566
574
|
if (fs.existsSync(sourceRules)) {
|
|
567
575
|
await fse.ensureDir(path.dirname(targetRules));
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
576
|
+
|
|
577
|
+
const targetExists = fs.existsSync(targetRules);
|
|
578
|
+
if (targetExists) {
|
|
579
|
+
try {
|
|
580
|
+
const existing = await fse.readFile(targetRules, 'utf8');
|
|
581
|
+
const incoming = await fse.readFile(sourceRules, 'utf8');
|
|
582
|
+
const mergeResult = await markdownMerger.merge(existing, incoming);
|
|
583
|
+
await fse.writeFile(targetRules, mergeResult.content, 'utf8');
|
|
584
|
+
console.log(
|
|
585
|
+
chalk.green('✓') +
|
|
586
|
+
` ${ide.charAt(0).toUpperCase() + ide.slice(1)} rules merged (existing content preserved)`
|
|
587
|
+
);
|
|
588
|
+
} catch (mergeErr) {
|
|
589
|
+
// Merge failed: back up existing file before overwriting so nothing is lost.
|
|
590
|
+
const backupPath = `${targetRules}.backup.${Date.now()}`;
|
|
591
|
+
await fse.copy(targetRules, backupPath);
|
|
592
|
+
await fse.copy(sourceRules, targetRules);
|
|
593
|
+
console.log(
|
|
594
|
+
chalk.yellow('⚠') +
|
|
595
|
+
` ${ide} rules merge failed (${mergeErr.message}); existing file backed up to ${path.basename(backupPath)}`
|
|
596
|
+
);
|
|
597
|
+
}
|
|
598
|
+
} else {
|
|
599
|
+
await fse.copy(sourceRules, targetRules);
|
|
600
|
+
console.log(
|
|
601
|
+
chalk.green('✓') + ` ${ide.charAt(0).toUpperCase() + ide.slice(1)} base rules installed`
|
|
602
|
+
);
|
|
603
|
+
}
|
|
572
604
|
}
|
|
573
605
|
}
|
|
574
606
|
}
|