pantheon-opencode 1.1.1-beta.9 → 1.1.3-beta.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/commands/pantheon-consolidate.md +11 -0
- package/opencode.json +49 -2
- package/package.json +1 -1
- package/pantheon.schema.json +1 -1
- package/scripts/install-mcp.mjs +54 -18
- package/scripts/mcp_persistence_server.py +3 -3
- package/src/agents/mnemosyne.md +9 -1
- package/src/agents/nyx.md +7 -1
- package/src/agents/themis.md +8 -2
- package/src/agents/zeus.md +10 -0
- package/src/mcp/install-mcp.mjs +54 -18
- package/src/mcp/mcp_persistence_server.py +3 -3
- package/src/plugins/tui/dist/tui.d.ts.map +1 -1
- package/src/plugins/tui/dist/tui.js +208 -112
- package/src/plugins/tui/dist/tui.tsx +162 -45
- package/src/plugins/tui/src/index.tsx +162 -45
- package/src/routing.yml +11 -30
- package/commands/pantheon-focus.md +0 -9
- package/commands/pantheon-forget.md +0 -58
- package/commands/pantheon-reflect.md +0 -16
- package/commands/pantheon-remember.md +0 -44
- package/commands/pantheon-search.md +0 -48
- package/commands/pantheon-status.md +0 -71
- package/commands/pantheon-verify.md +0 -17
- package/scripts/check-version-consistency.sh +0 -23
- package/scripts/generate-routing-docs.mjs +0 -104
- package/scripts/manifest.mjs +0 -597
- package/scripts/memory_cache.py +0 -78
- package/scripts/paths.py +0 -64
- package/scripts/prune_context.py +0 -72
- package/scripts/release-bundle.mjs +0 -109
- package/scripts/todo_enforcer.py +0 -242
- package/scripts/validate_agent_frontmatter.py +0 -226
package/src/routing.yml
CHANGED
|
@@ -2,7 +2,6 @@ version: 1.0
|
|
|
2
2
|
agents:
|
|
3
3
|
zeus:
|
|
4
4
|
role: Central orchestrator
|
|
5
|
-
model_tier: code
|
|
6
5
|
reasoning_effort: medium
|
|
7
6
|
user_invocable: true
|
|
8
7
|
can_delegate: true
|
|
@@ -41,7 +40,6 @@ agents:
|
|
|
41
40
|
- incremental-implementation
|
|
42
41
|
athena:
|
|
43
42
|
role: Strategic planner
|
|
44
|
-
model_tier: premium
|
|
45
43
|
reasoning_effort: high
|
|
46
44
|
user_invocable: true
|
|
47
45
|
can_delegate: true
|
|
@@ -61,7 +59,6 @@ agents:
|
|
|
61
59
|
- memory-bank
|
|
62
60
|
apollo:
|
|
63
61
|
role: Investigation scout
|
|
64
|
-
model_tier: free
|
|
65
62
|
reasoning_effort: low
|
|
66
63
|
user_invocable: false
|
|
67
64
|
can_delegate: false
|
|
@@ -79,7 +76,6 @@ agents:
|
|
|
79
76
|
- auto-continue
|
|
80
77
|
hermes:
|
|
81
78
|
role: Backend specialist
|
|
82
|
-
model_tier: code
|
|
83
79
|
reasoning_effort: medium
|
|
84
80
|
user_invocable: true
|
|
85
81
|
can_delegate: true
|
|
@@ -92,6 +88,10 @@ agents:
|
|
|
92
88
|
- obsolete_lib_detection
|
|
93
89
|
- memory_store
|
|
94
90
|
- pantheon_code_mode
|
|
91
|
+
subagent_can_delegate_to:
|
|
92
|
+
- apollo
|
|
93
|
+
- themis
|
|
94
|
+
- mnemosyne
|
|
95
95
|
skills:
|
|
96
96
|
- tdd-with-agents
|
|
97
97
|
- file-prompts
|
|
@@ -100,7 +100,6 @@ agents:
|
|
|
100
100
|
- incremental-implementation
|
|
101
101
|
aphrodite:
|
|
102
102
|
role: Frontend specialist
|
|
103
|
-
model_tier: code
|
|
104
103
|
reasoning_effort: medium
|
|
105
104
|
user_invocable: true
|
|
106
105
|
can_delegate: false
|
|
@@ -113,13 +112,13 @@ agents:
|
|
|
113
112
|
- deprecated_npm_detection
|
|
114
113
|
- memory_store
|
|
115
114
|
- pantheon_resources_memory_bank
|
|
115
|
+
- pantheon_code_mode
|
|
116
116
|
skills:
|
|
117
117
|
- tdd-with-agents
|
|
118
118
|
- visual-review-pipeline
|
|
119
119
|
- file-prompts
|
|
120
120
|
demeter:
|
|
121
121
|
role: Database specialist
|
|
122
|
-
model_tier: code
|
|
123
122
|
reasoning_effort: medium
|
|
124
123
|
user_invocable: true
|
|
125
124
|
can_delegate: false
|
|
@@ -132,12 +131,12 @@ agents:
|
|
|
132
131
|
- index_strategy
|
|
133
132
|
- memory_store
|
|
134
133
|
- memory_recall
|
|
134
|
+
- pantheon_code_mode
|
|
135
135
|
skills:
|
|
136
136
|
- tdd-with-agents
|
|
137
137
|
- incremental-implementation
|
|
138
138
|
themis:
|
|
139
139
|
role: Quality gate
|
|
140
|
-
model_tier: premium
|
|
141
140
|
reasoning_effort: high
|
|
142
141
|
user_invocable: true
|
|
143
142
|
can_delegate: true
|
|
@@ -151,6 +150,7 @@ agents:
|
|
|
151
150
|
- deprecation_audit
|
|
152
151
|
- memory_search
|
|
153
152
|
- pantheon_resources
|
|
153
|
+
- pantheon_code_mode
|
|
154
154
|
subagent_can_delegate_to:
|
|
155
155
|
- mnemosyne
|
|
156
156
|
skills:
|
|
@@ -160,7 +160,6 @@ agents:
|
|
|
160
160
|
- context-compression
|
|
161
161
|
prometheus:
|
|
162
162
|
role: Infrastructure specialist
|
|
163
|
-
model_tier: code
|
|
164
163
|
reasoning_effort: medium
|
|
165
164
|
user_invocable: true
|
|
166
165
|
can_delegate: false
|
|
@@ -178,7 +177,6 @@ agents:
|
|
|
178
177
|
- incremental-implementation
|
|
179
178
|
hephaestus:
|
|
180
179
|
role: AI pipelines
|
|
181
|
-
model_tier: code
|
|
182
180
|
reasoning_effort: medium
|
|
183
181
|
user_invocable: true
|
|
184
182
|
can_delegate: false
|
|
@@ -190,12 +188,12 @@ agents:
|
|
|
190
188
|
- embedding_strategy
|
|
191
189
|
- ai_workflow_composition
|
|
192
190
|
- memory_search
|
|
191
|
+
- pantheon_code_mode
|
|
193
192
|
skills:
|
|
194
193
|
- tdd-with-agents
|
|
195
194
|
- auto-continue
|
|
196
195
|
nyx:
|
|
197
196
|
role: Observability
|
|
198
|
-
model_tier: free
|
|
199
197
|
reasoning_effort: low
|
|
200
198
|
user_invocable: true
|
|
201
199
|
can_delegate: false
|
|
@@ -207,12 +205,12 @@ agents:
|
|
|
207
205
|
- alerting
|
|
208
206
|
- monitoring_dashboards
|
|
209
207
|
- pantheon_resources_routing
|
|
208
|
+
- pantheon_code_mode
|
|
210
209
|
skills:
|
|
211
210
|
- security-hardening
|
|
212
211
|
- auto-continue
|
|
213
212
|
gaia:
|
|
214
213
|
role: Remote sensing domain specialist
|
|
215
|
-
model_tier: free
|
|
216
214
|
reasoning_effort: low
|
|
217
215
|
user_invocable: false
|
|
218
216
|
can_delegate: false
|
|
@@ -226,7 +224,6 @@ agents:
|
|
|
226
224
|
- auto-continue
|
|
227
225
|
iris:
|
|
228
226
|
role: GitHub operations
|
|
229
|
-
model_tier: free
|
|
230
227
|
reasoning_effort: low
|
|
231
228
|
user_invocable: true
|
|
232
229
|
can_delegate: false
|
|
@@ -238,17 +235,14 @@ agents:
|
|
|
238
235
|
- release_management
|
|
239
236
|
- changelog_generation
|
|
240
237
|
- pantheon_resources
|
|
241
|
-
subagent_can_delegate_to:
|
|
242
|
-
- mnemosyne
|
|
243
238
|
skills:
|
|
244
239
|
- git-workflow-and-versioning
|
|
245
240
|
- artifact-management
|
|
246
241
|
mnemosyne:
|
|
247
242
|
role: Memory bank
|
|
248
|
-
model_tier: free
|
|
249
243
|
reasoning_effort: low
|
|
250
244
|
user_invocable: true
|
|
251
|
-
can_delegate:
|
|
245
|
+
can_delegate: false
|
|
252
246
|
can_receive_delegation: true
|
|
253
247
|
capabilities:
|
|
254
248
|
- memory_bank_management
|
|
@@ -260,6 +254,7 @@ agents:
|
|
|
260
254
|
- memory_store
|
|
261
255
|
- memory_recall
|
|
262
256
|
- pantheon_resources_memory_bank
|
|
257
|
+
- pantheon_code_mode
|
|
263
258
|
subagent_can_delegate_to: []
|
|
264
259
|
skills:
|
|
265
260
|
- artifact-management
|
|
@@ -268,7 +263,6 @@ agents:
|
|
|
268
263
|
- session-goal
|
|
269
264
|
talos:
|
|
270
265
|
role: Hotfix agent
|
|
271
|
-
model_tier: free
|
|
272
266
|
reasoning_effort: low
|
|
273
267
|
user_invocable: true
|
|
274
268
|
can_delegate: false
|
|
@@ -379,19 +373,6 @@ platforms:
|
|
|
379
373
|
- bash_execution
|
|
380
374
|
- web_fetch
|
|
381
375
|
- web_search
|
|
382
|
-
fallback_chains:
|
|
383
|
-
premium_agents:
|
|
384
|
-
primary: deepseek/deepseek-v4-pro
|
|
385
|
-
secondary: mimo/v2.5
|
|
386
|
-
emergency: deepseek/deepseek-v4-pro
|
|
387
|
-
code_agents:
|
|
388
|
-
primary: deepseek/deepseek-v4-flash
|
|
389
|
-
secondary: mimo/v2.5
|
|
390
|
-
emergency: deepseek/deepseek-v4-flash
|
|
391
|
-
free_agents:
|
|
392
|
-
primary: deepseek/deepseek-v4-flash
|
|
393
|
-
secondary: mimo/v2.5
|
|
394
|
-
emergency: deepseek/deepseek-v4-flash
|
|
395
376
|
background_job_board:
|
|
396
377
|
max_concurrent_per_agent: 3
|
|
397
378
|
signal_dir: .pantheon/deepwork/board-signals/
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: "Pin a session goal to prevent scope creep. Usage: /pantheon-focus"
|
|
3
|
-
agent: "zeus"
|
|
4
|
-
---
|
|
5
|
-
# /pantheon-focus — Session Goal
|
|
6
|
-
|
|
7
|
-
**What:** Pins a session objective. When active, all agents verify every action against the pinned goal. Off-topic work is flagged and blocked.
|
|
8
|
-
**Usage:** `/pantheon-focus <short objective>`
|
|
9
|
-
**Commands:** `/pantheon-focus list` — show all active goals, `/pantheon-focus clear` — remove all
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: "Compress old memory entries into summarized form. /pantheon-forget lists entries older than N days, then replaces them with a compressed summary. --auto applies without confirmation. Usage: /pantheon-forget"
|
|
3
|
-
agent: "zeus"
|
|
4
|
-
---
|
|
5
|
-
# /pantheon-forget — Memory Range Compression
|
|
6
|
-
|
|
7
|
-
**What:** Applies range compression to old memory entries — groups entries by time period and namespace, generates a concise summary via fast LLM, replaces N raw entries with 1 summary. Companion to memory_consolidate (merge) vs memory_forget (compress).
|
|
8
|
-
|
|
9
|
-
## Usage
|
|
10
|
-
|
|
11
|
-
```
|
|
12
|
-
/pantheon-forget → Lista candidatas (7+ dias, modo interativo)
|
|
13
|
-
/pantheon-forget --days=30 → Só entradas com 30+ dias
|
|
14
|
-
/pantheon-forget --namespace=sessions → Namespace específico
|
|
15
|
-
/pantheon-forget --namespace=sessions --days=14 Combinado
|
|
16
|
-
/pantheon-forget --auto → Comprime sem confirmação
|
|
17
|
-
/pantheon-forget --auto --days=30 --compress → Agressivo: 30+ dias + comprimir em 1 arquivo
|
|
18
|
-
/pantheon-forget --dry-run → Preview sem modificar
|
|
19
|
-
```
|
|
20
|
-
|
|
21
|
-
## Flags
|
|
22
|
-
|
|
23
|
-
| Flag | Default | Descrição |
|
|
24
|
-
|------|---------|-----------|
|
|
25
|
-
| `--days=<N>` | `7` | Idade mínima em dias |
|
|
26
|
-
| `--namespace=<ns>` | `all` | Namespace específico |
|
|
27
|
-
| `--auto` | off | Comprimir sem confirmação |
|
|
28
|
-
| `--dry-run` | off | Preview sem modificar |
|
|
29
|
-
| `--compress` | off | Comprimir tudo em 1 único entry (modo agressivo) |
|
|
30
|
-
|
|
31
|
-
## How It Works
|
|
32
|
-
|
|
33
|
-
1. `memory_list()` → obtém entradas, filtra por idade
|
|
34
|
-
2. Agrupa por namespace + mês
|
|
35
|
-
3. Cada grupo: envia para LLM fast com prompt:
|
|
36
|
-
```
|
|
37
|
-
Summarize these N memory entries into 2-3 sentences:
|
|
38
|
-
[entries...]
|
|
39
|
-
```
|
|
40
|
-
4. Substitui grupo por entry único com key `compressed:<namespace>:<YYYY-MM>`
|
|
41
|
-
5. Entradas originais são deletadas via `memory_forget()`
|
|
42
|
-
|
|
43
|
-
## Output
|
|
44
|
-
|
|
45
|
-
```
|
|
46
|
-
🗜️ Memory Range Compression
|
|
47
|
-
|
|
48
|
-
Group: sessions · 2026-06 (15 entries · 1.2K tokens)
|
|
49
|
-
→ "Sessões de junho focadas em migração FastAPI, ajustes de rota e correção de testes."
|
|
50
|
-
→ Compressed: 15 → 1 entry ✅
|
|
51
|
-
|
|
52
|
-
Group: decisions · 2026-05 (8 entries · 640 tokens)
|
|
53
|
-
→ "Decisões de maio sobre arquitetura: monorepo mantido, SQLAlchemy 2.0 como padrão."
|
|
54
|
-
→ Compressed: 8 → 1 entry ✅
|
|
55
|
-
|
|
56
|
-
Summary: 2 groups compressed, 23 entries → 2 entries (-91%)
|
|
57
|
-
Tokens saved: ~1.8K
|
|
58
|
-
```
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: "Reflect on workflow friction and create improvement action items"
|
|
3
|
-
agent: zeus
|
|
4
|
-
---
|
|
5
|
-
# /pantheon-reflect — Workflow Reflection
|
|
6
|
-
|
|
7
|
-
**What:** After completing a task, reflect on what could be improved. Turns repeated friction into reusable skills, agents, or config improvements.
|
|
8
|
-
**Usage:** `/pantheon-reflect [session-or-task]`
|
|
9
|
-
**Returns:** Structured reflection with action items
|
|
10
|
-
|
|
11
|
-
## When to Use
|
|
12
|
-
- After completing a complex feature
|
|
13
|
-
- When you notice the same manual steps repeating
|
|
14
|
-
- At end of work session
|
|
15
|
-
|
|
16
|
-
Delegates to @mnemosyne with `skill: reflect`.
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: "Store or recall a memory interactively. /pantheon-remember <text> → stores it. /pantheon-remember recall <key> → retrieves it. Omitting args starts interactive mode. Usage: /pantheon-remember"
|
|
3
|
-
agent: "zeus"
|
|
4
|
-
---
|
|
5
|
-
# /pantheon-remember — Memory Store & Recall
|
|
6
|
-
|
|
7
|
-
**What:** Stores a memory entry via `memory_store()` or recalls via `memory_recall()`. Interactive mode if no arguments.
|
|
8
|
-
|
|
9
|
-
## Usage
|
|
10
|
-
|
|
11
|
-
```
|
|
12
|
-
/pantheon-remember "Decisão: usar FastAPI em vez de Flask" → Store (namespace: default)
|
|
13
|
-
/pantheon-remember "Decisão: ..." --namespace=decisions → Store em namespace específico
|
|
14
|
-
/pantheon-remember recall "FastAPI decision" → Recall por key
|
|
15
|
-
/pantheon-remember recall "FastAPI decision" --namespace=decisions → Recall em namespace
|
|
16
|
-
/pantheon-remember → Modo interativo (pergunta→store→pergunta recall)
|
|
17
|
-
```
|
|
18
|
-
|
|
19
|
-
## Behavior
|
|
20
|
-
|
|
21
|
-
### Store mode (default)
|
|
22
|
-
1. Chama `memory_store()` com o texto fornecido
|
|
23
|
-
2. Metadata: preenche `agent`, `type`, `timestamp` automaticamente
|
|
24
|
-
3. Pergunta: "Quer buscar algo relacionado? (y/n)"
|
|
25
|
-
- `y` → `memory_recall()` com extração automática de keywords
|
|
26
|
-
- `n` → fim
|
|
27
|
-
|
|
28
|
-
### Recall mode
|
|
29
|
-
1. Chama `memory_recall()` com a key fornecida
|
|
30
|
-
2. Se não achar, tenta `memory_search()` como fallback
|
|
31
|
-
|
|
32
|
-
### Interactive mode (no args)
|
|
33
|
-
1. "O que você quer armazenar?"
|
|
34
|
-
2. Recebe texto → `memory_store()`
|
|
35
|
-
3. "Quer buscar algo relacionado?"
|
|
36
|
-
4. Opcional: "Qual namespace?" (default: "default")
|
|
37
|
-
|
|
38
|
-
## Output
|
|
39
|
-
|
|
40
|
-
```
|
|
41
|
-
✅ Stored — id: 42 | namespace: decisions | key: auto-generated
|
|
42
|
-
📎 Related entries (memory_recall):
|
|
43
|
-
- #1: "Decisão: usar FastAPI..." (score: 0.92)
|
|
44
|
-
```
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: "Search memories by text with optional namespace filter, category, and result limit. /pantheon-search <query> --namespace=<ns> --top=<N> --stats. Usage: /pantheon-search"
|
|
3
|
-
agent: "zeus"
|
|
4
|
-
---
|
|
5
|
-
# /pantheon-search — Memory Search
|
|
6
|
-
|
|
7
|
-
**What:** Searches memory entries via `memory_search()` with hybrid vector + keyword (RRF fusion). Supports namespace filter, result limit, and stats view.
|
|
8
|
-
|
|
9
|
-
## Usage
|
|
10
|
-
|
|
11
|
-
```
|
|
12
|
-
/pantheon-search "FastAPI performance" → Busca em todos os namespaces
|
|
13
|
-
/pantheon-search "FastAPI" --namespace=decisions → Busca só em decisions
|
|
14
|
-
/pantheon-search "bug pattern" --namespace=sessions --top=10 → 10 resultados
|
|
15
|
-
/pantheon-search --stats → memory_stats() completo
|
|
16
|
-
/pantheon-search --stats --namespace=decisions → Stats por namespace
|
|
17
|
-
```
|
|
18
|
-
|
|
19
|
-
## Flags
|
|
20
|
-
|
|
21
|
-
| Flag | Default | Descrição |
|
|
22
|
-
|------|---------|-----------|
|
|
23
|
-
| `--namespace=<ns>` | `all` | Filtrar por namespace específico |
|
|
24
|
-
| `--top=<N>` | `5` | Número de resultados (max 50) |
|
|
25
|
-
| `--stats` | off | Mostrar estatísticas em vez de buscar |
|
|
26
|
-
|
|
27
|
-
## Output (search)
|
|
28
|
-
|
|
29
|
-
```
|
|
30
|
-
🔍 Memory Search: "FastAPI performance"
|
|
31
|
-
|
|
32
|
-
Results (namespace: all):
|
|
33
|
-
#1 │ decisions │ "Decisão: usar FastAPI..." │ score: 0.89 │ 2026-07-20
|
|
34
|
-
#2 │ repo │ "FastAPI async patterns" │ score: 0.74 │ 2026-07-18
|
|
35
|
-
#3 │ sessions │ "FastAPI migration done" │ score: 0.61 │ 2026-07-15
|
|
36
|
-
|
|
37
|
-
Found 3 results in 2 namespaces (0.23s)
|
|
38
|
-
```
|
|
39
|
-
|
|
40
|
-
## Output (stats)
|
|
41
|
-
|
|
42
|
-
```
|
|
43
|
-
📊 Memory Stats
|
|
44
|
-
Total entries: 142
|
|
45
|
-
Namespaces: decisions (58), sessions (44), repo (28), default (12)
|
|
46
|
-
Vector entries: 142
|
|
47
|
-
DB size: 1.2 MB
|
|
48
|
-
```
|
|
@@ -1,71 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: "Show Pantheon version, model tier, and all available agents with status"
|
|
3
|
-
agent: "zeus"
|
|
4
|
-
---
|
|
5
|
-
# /pantheon-status — System Status & Agent Registry
|
|
6
|
-
|
|
7
|
-
**What:** Displays the current Pantheon version, model tier (Pro/Free), and a full status table of all agents.
|
|
8
|
-
**Usage:** `/pantheon-status`
|
|
9
|
-
**Returns:** Version badge · model tier · agent table with availability
|
|
10
|
-
**Use when:** You want to see what version of Pantheon is running and which agents are loaded
|
|
11
|
-
|
|
12
|
-
## Output Format
|
|
13
|
-
|
|
14
|
-
Produce EXACTLY this structure:
|
|
15
|
-
|
|
16
|
-
```
|
|
17
|
-
## 🏛️ Pantheon System Status
|
|
18
|
-
|
|
19
|
-
**Version:** vX.Y.Z
|
|
20
|
-
**Model Tier:** Pro (premium models) | Free (default models)
|
|
21
|
-
**Platform:** <detect: opencode | claude | cursor | windsurf | vscode>
|
|
22
|
-
**Agents loaded:** N of 14
|
|
23
|
-
|
|
24
|
-
### Agent Registry
|
|
25
|
-
|
|
26
|
-
| Agent | Role | Tier | Status |
|
|
27
|
-
|-------|------|------|--------|
|
|
28
|
-
| @zeus | Central orchestrator | default | ✅ |
|
|
29
|
-
| @athena | Strategic planner | premium | ✅ |
|
|
30
|
-
| @hermes | Backend (FastAPI) | default | ✅ |
|
|
31
|
-
| @aphrodite | Frontend (React) | default | ✅ |
|
|
32
|
-
| @demeter | Database | default | ✅ |
|
|
33
|
-
| @themis | Quality & security | premium | ✅ |
|
|
34
|
-
| @prometheus | Infrastructure | default | ✅ |
|
|
35
|
-
| @apollo | Codebase discovery | fast | ✅ |
|
|
36
|
-
| @iris | GitHub operations | fast | ✅ |
|
|
37
|
-
| @mnemosyne | Memory bank | fast | ✅ |
|
|
38
|
-
| @talos | Hotfixes | fast | ✅ |
|
|
39
|
-
| @hephaestus | AI pipelines | default | ✅ |
|
|
40
|
-
| @nyx | Observability | fast | ✅ |
|
|
41
|
-
| @gaia | Remote sensing | fast | ✅ |
|
|
42
|
-
|
|
43
|
-
### Commands Available
|
|
44
|
-
|
|
45
|
-
`/pantheon` `/pantheon-status` `/audit` `/focus` `/deepwork` `/optimize` `/sketch` `/` `/` `/` `/pantheon-remember` `/pantheon-search` `/` `/pantheon-forget`
|
|
46
|
-
|
|
47
|
-
### Health
|
|
48
|
-
|
|
49
|
-
- ✅ All agents responding
|
|
50
|
-
- ⚠️ N agents degraded (if any)
|
|
51
|
-
- ❌ N agents unavailable (if any)
|
|
52
|
-
```
|
|
53
|
-
|
|
54
|
-
## How to Detect Version
|
|
55
|
-
|
|
56
|
-
Read `package.json` → `"version"` field. If unavailable, read `plugin.json` → `"version"`.
|
|
57
|
-
|
|
58
|
-
## How to Detect Model Tier
|
|
59
|
-
|
|
60
|
-
- **Pro:** Any agent with `model_tier: premium` in `routing.yml` is using a premium model (athena, themis)
|
|
61
|
-
- **Free:** All agents using `default` or `fast` tier models
|
|
62
|
-
- Report based on what `routing.yml` declares for the active platform
|
|
63
|
-
|
|
64
|
-
## How to Detect Platform
|
|
65
|
-
|
|
66
|
-
Check for platform-specific markers:
|
|
67
|
-
- `opencode.json` present → **OpenCode**
|
|
68
|
-
- `.claude/` directory → **Claude Code**
|
|
69
|
-
- `.cursor/` directory → **Cursor**
|
|
70
|
-
- `.windsurf/` directory → **Windsurf**
|
|
71
|
-
- `.vscode/` directory → **VS Code Copilot**
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: "Create verification plan before non-trivial changes"
|
|
3
|
-
agent: zeus
|
|
4
|
-
---
|
|
5
|
-
# /pantheon-verify — Verification Planning
|
|
6
|
-
|
|
7
|
-
**What:** Plans an evidence path before non-trivial changes, defining how to verify correctness.
|
|
8
|
-
**Usage:** `/pantheon-verify <change-description>`
|
|
9
|
-
**Returns:** Verification plan with strategy, rollback, and acceptance criteria
|
|
10
|
-
|
|
11
|
-
## When to Use
|
|
12
|
-
- Before changes touching 3+ files
|
|
13
|
-
- Before DB migrations or schema changes
|
|
14
|
-
- Before API contract changes
|
|
15
|
-
- Before dependency upgrades
|
|
16
|
-
|
|
17
|
-
Delegates to @themis + @athena with `skill: verification-planning`.
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env bash
|
|
2
|
-
# check-version-consistency.sh — Verifies all 3 manifests have the same version
|
|
3
|
-
set -euo pipefail
|
|
4
|
-
|
|
5
|
-
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
6
|
-
ROOT="$(dirname "$SCRIPT_DIR")"
|
|
7
|
-
|
|
8
|
-
pkg_ver=$(node -p "require('$ROOT/package.json').version")
|
|
9
|
-
plugin_ver=$(node -p "require('$ROOT/plugin.json').version")
|
|
10
|
-
gh_plugin_ver=$(node -p "require('$ROOT/.github/plugin/plugin.json').version")
|
|
11
|
-
|
|
12
|
-
echo "package.json: $pkg_ver"
|
|
13
|
-
echo "plugin.json: $plugin_ver"
|
|
14
|
-
echo ".github/plugin/plugin.json: $gh_plugin_ver"
|
|
15
|
-
|
|
16
|
-
if [ "$pkg_ver" != "$plugin_ver" ] || [ "$pkg_ver" != "$gh_plugin_ver" ]; then
|
|
17
|
-
echo "❌ Version mismatch across manifests!"
|
|
18
|
-
echo ""
|
|
19
|
-
echo "Fix: run 'node scripts/versioning.mjs apply' to sync all manifests"
|
|
20
|
-
exit 1
|
|
21
|
-
fi
|
|
22
|
-
|
|
23
|
-
echo "✅ All versions match: $pkg_ver"
|
|
@@ -1,104 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
/**
|
|
3
|
-
* generate-routing-docs.mjs — Generate routing docs from routing.yml
|
|
4
|
-
*
|
|
5
|
-
* Reads the canonical routing.yml and outputs markdown documentation
|
|
6
|
-
* to stdout. Pipe to a file to save: node generate-routing-docs.mjs > ROUTING.md
|
|
7
|
-
*/
|
|
8
|
-
|
|
9
|
-
import { existsSync, readFileSync } from 'node:fs'
|
|
10
|
-
import { dirname, join } from 'node:path'
|
|
11
|
-
import { fileURLToPath } from 'node:url'
|
|
12
|
-
import yaml from 'js-yaml'
|
|
13
|
-
|
|
14
|
-
const __dirname = dirname(fileURLToPath(import.meta.url))
|
|
15
|
-
const ROOT = join(__dirname, '..')
|
|
16
|
-
|
|
17
|
-
const routingPath = join(ROOT, 'routing.yml')
|
|
18
|
-
if (!existsSync(routingPath)) {
|
|
19
|
-
console.error('❌ routing.yml not found')
|
|
20
|
-
process.exit(1)
|
|
21
|
-
}
|
|
22
|
-
const routing = yaml.load(readFileSync(routingPath, 'utf8'))
|
|
23
|
-
|
|
24
|
-
const agents = routing.agents || {}
|
|
25
|
-
const matrix = routing.routing_matrix || []
|
|
26
|
-
const handoffs = routing.handoffs || {}
|
|
27
|
-
|
|
28
|
-
let doc = ''
|
|
29
|
-
|
|
30
|
-
// Title
|
|
31
|
-
doc += `# Pantheon Routing Reference\n\n`
|
|
32
|
-
doc += `Auto-generated from \`routing.yml\` (v${routing.version || '?'})\n\n`
|
|
33
|
-
doc += `${Object.keys(agents).length} agents · ${matrix.length} routing rules · ${Object.keys(handoffs).length} agent handoff groups\n\n`
|
|
34
|
-
|
|
35
|
-
// Agent Registry
|
|
36
|
-
doc += `---\n\n## Agent Registry\n\n`
|
|
37
|
-
doc += `All ${Object.keys(agents).length} Pantheon agents with roles, model tiers, and capabilities.\n\n`
|
|
38
|
-
doc += `| Agent | Role | Model Tier | User-Invocable | Delegates To | Skills |\n`
|
|
39
|
-
doc += `|-------|------|-----------|----------------|-------------|--------|\n`
|
|
40
|
-
|
|
41
|
-
for (const [name, info] of Object.entries(agents)) {
|
|
42
|
-
const role = info.role || '—'
|
|
43
|
-
const tier = info.model_tier || '—'
|
|
44
|
-
const invocable = info.user_invocable ? '✅ Yes' : '❌ No'
|
|
45
|
-
const delegates = (info.subagent_can_delegate_to || []).join(', ') || '—'
|
|
46
|
-
const agentSkills = (info.skills || []).map((s) => `\`${s}\``).join(', ') || '—'
|
|
47
|
-
doc += `| **@${name}** | ${role} | ${tier} | ${invocable} | ${delegates} | ${agentSkills} |\n`
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
// Routing Matrix
|
|
51
|
-
doc += `\n---\n\n## Routing Matrix\n\n`
|
|
52
|
-
doc += `Task category → primary agent mapping. Use this to decide which agent to invoke.\n\n`
|
|
53
|
-
doc += `| Category | Primary Agent | Model Tier | Can Run Parallel With |\n`
|
|
54
|
-
doc += `|----------|--------------|-----------|----------------------|\n`
|
|
55
|
-
|
|
56
|
-
for (const entry of matrix) {
|
|
57
|
-
const primary = `@${entry.primary_agent}`
|
|
58
|
-
const tier = entry.model_tier || '—'
|
|
59
|
-
const parallel = entry.parallel_with ? entry.parallel_with.map((a) => `@${a}`).join(', ') : '—'
|
|
60
|
-
doc += `| ${entry.category} | ${primary} | ${tier} | ${parallel} |\n`
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
// Handoff Reference
|
|
64
|
-
doc += `\n---\n\n## Handoff Reference\n\n`
|
|
65
|
-
doc += `Structured delegation contracts between agents.\n\n`
|
|
66
|
-
|
|
67
|
-
for (const [agentName, agentHandoffs] of Object.entries(handoffs)) {
|
|
68
|
-
doc += `### @${agentName}\n\n`
|
|
69
|
-
doc += `| Handoff | Target Agent | Model Tier | Description |\n`
|
|
70
|
-
doc += `|---------|-------------|-----------|-------------|\n`
|
|
71
|
-
|
|
72
|
-
for (const [key, handoff] of Object.entries(agentHandoffs)) {
|
|
73
|
-
if (typeof handoff !== 'object') continue
|
|
74
|
-
const target = `@${handoff.agent}`
|
|
75
|
-
const tier = handoff.model_tier || '—'
|
|
76
|
-
const desc = handoff.description || handoff.prompt?.substring(0, 80) || '—'
|
|
77
|
-
doc += `| **${key}** | ${target} | ${tier} | ${desc} |\n`
|
|
78
|
-
}
|
|
79
|
-
doc += `\n`
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
// Deployment platforms
|
|
83
|
-
doc += `---\n\n## Deployment Platforms\n\n`
|
|
84
|
-
doc += `Supported platforms and their configuration details.\n\n`
|
|
85
|
-
doc += `| Platform | Directory | Format | Handoff Strategy |\n`
|
|
86
|
-
doc += `|----------|-----------|--------|-----------------|\n`
|
|
87
|
-
|
|
88
|
-
const PLATFORM_INFO = {
|
|
89
|
-
opencode: { dir: '.opencode/agents/', format: '.md with YAML', handoff: 'native (YAML)' },
|
|
90
|
-
claude: { dir: '.claude/agents/', format: '.md with YAML', handoff: 'embed (body)' },
|
|
91
|
-
cursor: { dir: '.cursor/rules/', format: '.mdc rule files', handoff: 'embed (body)' },
|
|
92
|
-
windsurf: { dir: '.windsurf/rules/', format: '.md rule files', handoff: 'embed (body)' },
|
|
93
|
-
cline: { dir: '.clinerules/', format: 'plain text', handoff: 'embed (body)' },
|
|
94
|
-
copilot: { dir: '.github/agents/', format: '.agent.md with YAML', handoff: 'native (YAML)' },
|
|
95
|
-
continue: { dir: '.continue/rules/', format: '.md rules', handoff: 'embed (body)' },
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
for (const [platform, info] of Object.entries(PLATFORM_INFO)) {
|
|
99
|
-
doc += `| **${platform}** | ${info.dir} | ${info.format} | ${info.handoff} |\n`
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
doc += `\n---\n\n*Generated on ${new Date().toISOString().split('T')[0]} from \`routing.yml\`*\n`
|
|
103
|
-
|
|
104
|
-
console.log(doc)
|