sinapse-ai 9.0.0 → 9.2.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/.sinapse-ai/core/quality-gates/focus-area-recommender.js +105 -2
- package/.sinapse-ai/data/entity-registry.yaml +772 -847
- package/.sinapse-ai/data/registry-update-log.jsonl +1 -0
- package/.sinapse-ai/install-manifest.yaml +6 -6
- package/CHROME-BRAIN-INSTALL.md +2 -2
- package/bin/cli.js +2 -2
- package/bin/sinapse-cli +283 -283
- package/package.json +2 -5
- /package/{install-chrome-brain.sh → scripts/install-chrome-brain.sh} +0 -0
- /package/{install-squads.sh → scripts/install-squads.sh} +0 -0
- /package/{update-squads.sh → scripts/update-squads.sh} +0 -0
|
@@ -611,3 +611,4 @@
|
|
|
611
611
|
{"timestamp":"2026-04-03T15:13:09.088Z","action":"change","path":".sinapse-ai/data/sinapse-kb.md","trigger":"watcher"}
|
|
612
612
|
{"timestamp":"2026-04-03T17:07:46.494Z","action":"change","path":".sinapse-ai/infrastructure/scripts/validate-codex-delegation.js","trigger":"watcher"}
|
|
613
613
|
{"timestamp":"2026-04-03T17:38:02.915Z","action":"change","path":".sinapse-ai/development/agents/sinapse-orqx.md","trigger":"watcher"}
|
|
614
|
+
{"timestamp":"2026-04-03T18:34:42.499Z","action":"change","path":".sinapse-ai/core/quality-gates/focus-area-recommender.js","trigger":"watcher"}
|
|
@@ -7,8 +7,8 @@
|
|
|
7
7
|
# - SHA256 hashes for change detection
|
|
8
8
|
# - File types for categorization
|
|
9
9
|
#
|
|
10
|
-
version: 9.
|
|
11
|
-
generated_at: "2026-04-
|
|
10
|
+
version: 9.2.0
|
|
11
|
+
generated_at: "2026-04-03T19:23:29.442Z"
|
|
12
12
|
generator: scripts/generate-install-manifest.js
|
|
13
13
|
file_count: 1120
|
|
14
14
|
files:
|
|
@@ -1001,9 +1001,9 @@ files:
|
|
|
1001
1001
|
type: core
|
|
1002
1002
|
size: 9003
|
|
1003
1003
|
- path: core/quality-gates/focus-area-recommender.js
|
|
1004
|
-
hash: sha256:
|
|
1004
|
+
hash: sha256:4b2e7e432d2f491f339d30622c0f853b84bb4e6f4fa68876977c5c0807791f1a
|
|
1005
1005
|
type: core
|
|
1006
|
-
size:
|
|
1006
|
+
size: 14346
|
|
1007
1007
|
- path: core/quality-gates/human-review-orchestrator.js
|
|
1008
1008
|
hash: sha256:caa61d8bc776eaff9d49ad75daff92039db8c2c04a72595f038ab1b2482fec8b
|
|
1009
1009
|
type: core
|
|
@@ -1241,9 +1241,9 @@ files:
|
|
|
1241
1241
|
type: data
|
|
1242
1242
|
size: 9586
|
|
1243
1243
|
- path: data/entity-registry.yaml
|
|
1244
|
-
hash: sha256:
|
|
1244
|
+
hash: sha256:92372ecd9b4c4450cabebb030021019ad3f561c7b7cafe93aac83dcde1d46b9f
|
|
1245
1245
|
type: data
|
|
1246
|
-
size:
|
|
1246
|
+
size: 514640
|
|
1247
1247
|
- path: data/learned-patterns.yaml
|
|
1248
1248
|
hash: sha256:24ac0b160615583a0ff783d3da8af80b7f94191575d6db2054ec8e10a3f945dc
|
|
1249
1249
|
type: data
|
package/CHROME-BRAIN-INSTALL.md
CHANGED
|
@@ -12,8 +12,8 @@ sinapse chrome-brain install
|
|
|
12
12
|
npx sinapse-ai chrome-brain install
|
|
13
13
|
|
|
14
14
|
# Option 3: Standalone script (macOS/Linux)
|
|
15
|
-
chmod +x install-chrome-brain.sh
|
|
16
|
-
./install-chrome-brain.sh
|
|
15
|
+
chmod +x scripts/install-chrome-brain.sh
|
|
16
|
+
./scripts/install-chrome-brain.sh
|
|
17
17
|
```
|
|
18
18
|
|
|
19
19
|
## What Gets Installed
|
package/bin/cli.js
CHANGED
|
@@ -942,13 +942,13 @@ function runBash(script) {
|
|
|
942
942
|
function cmdInstallLocal() {
|
|
943
943
|
header();
|
|
944
944
|
console.log(`${CYAN}▸ Installing squads in current project...${NC}\n`);
|
|
945
|
-
runBash('install-squads.sh');
|
|
945
|
+
runBash('scripts/install-squads.sh');
|
|
946
946
|
}
|
|
947
947
|
|
|
948
948
|
function cmdUpdateLocal() {
|
|
949
949
|
header();
|
|
950
950
|
console.log(`${CYAN}▸ Updating squads in current project...${NC}\n`);
|
|
951
|
-
runBash('update-squads.sh');
|
|
951
|
+
runBash('scripts/update-squads.sh');
|
|
952
952
|
}
|
|
953
953
|
|
|
954
954
|
// ── List / Status / Help ─────────────────────────────────────────────────────
|
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/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/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/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
|