pantheon-opencode 1.1.1-beta.11 → 1.1.1-beta.12
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/opencode.json +49 -2
- package/package.json +1 -1
- package/pantheon.schema.json +1 -1
- 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/routing.yml +11 -30
- package/commands/pantheon-audit.md +0 -25
- package/commands/pantheon-deepwork.md +0 -79
- package/commands/pantheon-focus.md +0 -9
- package/commands/pantheon-forget.md +0 -58
- package/commands/pantheon-optimize.md +0 -79
- package/commands/pantheon-remember.md +0 -44
- package/commands/pantheon-search.md +0 -48
- package/commands/pantheon-status.md +0 -71
- package/commands/pantheon.md +0 -49
- 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
|
@@ -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**
|
package/commands/pantheon.md
DELETED
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: "Dispatch a question to 2-4 specialist agents via inline Zeus council"
|
|
3
|
-
agent: zeus
|
|
4
|
-
---
|
|
5
|
-
# /pantheon — Council Synthesis
|
|
6
|
-
|
|
7
|
-
**What:** Dispatches the question to 2-3 specialist agents **in parallel** via `task()`, then synthesizes their responses into a single recommendation with resolved divergences.
|
|
8
|
-
**Usage:** `/pantheon <question>`
|
|
9
|
-
**When:** Architecture trade-offs, technology selection, security assessments, multi-stakeholder concerns
|
|
10
|
-
**Returns:** Structured synthesis with recommendation, confidence level, resolved divergences
|
|
11
|
-
|
|
12
|
-
## Dispatch Selection
|
|
13
|
-
|
|
14
|
-
Choose 2-3 agents based on domain:
|
|
15
|
-
|
|
16
|
-
| Domain | Specialists |
|
|
17
|
-
|--------|-------------|
|
|
18
|
-
| Architecture | hermes, demeter, themis, athena |
|
|
19
|
-
| Security | themis, hermes, prometheus, nyx |
|
|
20
|
-
| Database | demeter, hermes, prometheus |
|
|
21
|
-
| AI/RAG | hephaestus, nyx |
|
|
22
|
-
| Infrastructure | prometheus, hermes, themis |
|
|
23
|
-
| Frontend/UX | aphrodite, themis, hermes |
|
|
24
|
-
| Observability | nyx, hermes |
|
|
25
|
-
| General | athena, themis, hermes |
|
|
26
|
-
|
|
27
|
-
Send ALL `task()` calls in a single message. Each must return: Recommendation · Reasoning · Trade-offs · Risks · Confidence.
|
|
28
|
-
|
|
29
|
-
## Synthesis Structure
|
|
30
|
-
|
|
31
|
-
After ALL responses arrive, produce EXACTLY this structure:
|
|
32
|
-
|
|
33
|
-
### 📋 Individual Assessments
|
|
34
|
-
For each specialist: Recommendation, Reasoning, Trade-offs, Risks, Confidence
|
|
35
|
-
|
|
36
|
-
### ✅ Agreements
|
|
37
|
-
Where 2+ specialists converge
|
|
38
|
-
|
|
39
|
-
### ⚡ Divergences
|
|
40
|
-
Where they disagree — resolve each one with reasoning
|
|
41
|
-
|
|
42
|
-
### 🔥 Total Divergence
|
|
43
|
-
If ALL specialists disagree on a point, call this out explicitly
|
|
44
|
-
|
|
45
|
-
### 🏆 Recommendation
|
|
46
|
-
Decisive conclusion with confidence level
|
|
47
|
-
|
|
48
|
-
## Question:
|
|
49
|
-
$ARGUMENTS
|
|
@@ -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)
|