pantheon-opencode 1.5.0-beta.2 → 1.5.0-beta.4
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/.pantheon/code-mode/manifest.json +21 -0
- package/CHANGELOG.md +835 -0
- package/README.md +103 -15
- package/README.pt-BR.md +57 -13
- package/package.json +8 -3
- package/plugin.json +1 -1
- package/pyproject.toml +57 -0
- package/scripts/code_mode_server.py +403 -42
- package/scripts/install/opencode.mjs +42 -0
- package/scripts/install/plugin.mjs +3 -33
- package/scripts/manifest-inventory.mjs +410 -0
- package/scripts/mcp_persistence_server.py +516 -163
- package/scripts/package-evidence.mjs +242 -0
- package/scripts/probe-pantheon-cost.mjs +10 -1
- package/scripts/release-beta-version.mjs +61 -60
- package/scripts/sync-tui.mjs +76 -54
- package/scripts/test-opencode-v1-v2-sandbox.sh +79 -161
- package/scripts/validation-policy.mjs +7 -7
- package/scripts/version-check.mjs +113 -108
- package/scripts/versioning.mjs +131 -88
- package/src/agents/zeus.md +2 -2
- package/src/mcp/code_mode_server.py +403 -42
- package/src/mcp/mcp_persistence_server.py +516 -163
- package/src/pantheon/background-job-board.ts +14 -0
- package/src/pantheon/compaction-handoff.ts +304 -0
- package/src/pantheon/cost-command.ts +62 -42
- package/src/pantheon/delegate-manager.ts +109 -12
- package/src/pantheon/native-probe.ts +234 -0
- package/src/pantheon/native-task-status.ts +139 -0
- package/src/pantheon/provider-capabilities.ts +221 -0
- package/src/pantheon/provider-stream-tracker.ts +182 -0
- package/src/pantheon/task-result-guard.ts +107 -0
- package/src/pantheon/token-opt.ts +18 -110
- package/src/pantheon/tool-ceiling.ts +159 -0
- package/src/pantheon/v2-events.ts +10 -1
- package/src/plugin.ts +19 -1
- package/src/plugins/tui/package-lock.json +2 -2
- package/src/plugins/tui/package.json +1 -1
package/README.md
CHANGED
|
@@ -8,7 +8,7 @@ want useful structure without giving up control of their code.
|
|
|
8
8
|
[Português (Brasil)](README.pt-BR.md) ·
|
|
9
9
|
[Repository](https://github.com/ils15/pantheon-opencode) · [MIT License](LICENSE)
|
|
10
10
|
|
|
11
|
-
[](https://github.com/ils15/pantheon-opencode/releases/
|
|
11
|
+
[](https://github.com/ils15/pantheon-opencode/releases/latest)
|
|
12
12
|
[](https://github.com/ils15/pantheon-opencode/actions)
|
|
13
13
|
[](https://doi.org/10.5281/zenodo.22306637)
|
|
14
14
|
|
|
@@ -70,13 +70,65 @@ clear handoff between stages of work.
|
|
|
70
70
|
|
|
71
71
|
## Status
|
|
72
72
|
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
73
|
+
Operational checkout version: **v1.5.0-beta.2** (candidate; publication is not
|
|
74
|
+
asserted here). Pantheon is designed for OpenCode and depends on the
|
|
75
|
+
availability and configuration of OpenCode and any optional services you choose
|
|
76
|
+
to use. Check the [releases](https://github.com/ils15/pantheon-opencode/releases)
|
|
77
|
+
and [changelog](CHANGELOG.md) for the latest published changes.
|
|
77
78
|
|
|
79
|
+
## Native delegation mode
|
|
78
80
|
|
|
79
|
-
|
|
81
|
+
Set `PANTHEON_DELEGATE_MODE=native` to use OpenCode's native child-session
|
|
82
|
+
delegation. Native mode is strict: it does not use foreground fallback, model
|
|
83
|
+
failover, or retry; it performs a lazy capability probe on the first dispatch,
|
|
84
|
+
and includes the resulting status in the delegation receipt.
|
|
85
|
+
|
|
86
|
+
## Cost tool backend
|
|
87
|
+
|
|
88
|
+
`pantheon_cost` has one backend: read-only `node:sqlite` against the selected
|
|
89
|
+
`opencode.db`. On Node versions without `node:sqlite` (Node < 22.5), the tool
|
|
90
|
+
returns `status: UNSUPPORTED`; it has no CLI fallback. Database failures return
|
|
91
|
+
a contract status such as `UNAVAILABLE` or
|
|
92
|
+
`CORRUPT_DATA` and include diagnostic detail, including captured stderr when
|
|
93
|
+
available.
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
## Code-mode execution (explicit opt-in)
|
|
97
|
+
|
|
98
|
+
Scripts run through the `pantheon-code-mode` MCP server (`execute_code_script`)
|
|
99
|
+
only when they are explicitly approved. Approval is recorded in
|
|
100
|
+
`.pantheon/code-mode/manifest.json` with the SHA-256 of each script:
|
|
101
|
+
|
|
102
|
+
```json
|
|
103
|
+
{
|
|
104
|
+
"version": 1,
|
|
105
|
+
"scripts": {
|
|
106
|
+
"example-sync.sh": "<sha256>"
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
- **No manifest → nothing executes.** A missing manifest returns
|
|
112
|
+
`INVALID_STATE`; scripts are never run implicitly.
|
|
113
|
+
- **Not listed → `CONFLICT`.** The script must be approved first.
|
|
114
|
+
- **Hash mismatch → `CORRUPT_DATA`.** The SHA-256 of the file on disk must
|
|
115
|
+
match the manifest entry, so edits after approval are detected.
|
|
116
|
+
|
|
117
|
+
Approve or re-approve a script with the `approve_code_script` MCP tool:
|
|
118
|
+
|
|
119
|
+
```
|
|
120
|
+
approve_code_script("checkpoint-session.sh")
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
The installer seeds the manifest with the SHA-256 of every bundled script, so
|
|
124
|
+
shipped scripts stay approved across installs. Re-run `approve_code_script`
|
|
125
|
+
after intentionally editing a script. Status codes follow the shared nine-code
|
|
126
|
+
contract (`OK`, `UNSUPPORTED`, `UNAVAILABLE`, `INVALID_INPUT`, `INVALID_STATE`,
|
|
127
|
+
`CONFLICT`, `CORRUPT_DATA`, `TIMEOUT`, `ESCALATE`); with `json_output=true`,
|
|
128
|
+
results carry a `status` field.
|
|
129
|
+
|
|
130
|
+
|
|
131
|
+
## What's new in 1.5.0-beta.2
|
|
80
132
|
|
|
81
133
|
- OpenCode-only installer: platform guides consolidated into a single
|
|
82
134
|
[OpenCode guide](docs/platforms/opencode.md).
|
|
@@ -95,7 +147,7 @@ and [changelog](CHANGELOG.md) for the latest changes.
|
|
|
95
147
|
[Beta2 agent economy policy](docs/ws3-token-opt-measurements.md#beta2-agent-economy-policy).
|
|
96
148
|
- A `--prompts` installer flag is planned for a future release.
|
|
97
149
|
|
|
98
|
-
## OpenCode V1/V2 — Dual Version (1.5.0)
|
|
150
|
+
## OpenCode V1/V2 — Dual Version (1.5.0-beta.2)
|
|
99
151
|
|
|
100
152
|
Pantheon has two **exclusive** OpenCode plugin contracts. Ordinary OpenCode
|
|
101
153
|
configuration may be shared, but the Pantheon plugin registration is selected
|
|
@@ -153,9 +205,21 @@ The installer still writes the compatibility settings required by the selected
|
|
|
153
205
|
OpenCode host, such as `experimental.subagent_depth`; this does not convert a
|
|
154
206
|
V1 plugin into V2 or provide V2 with V1 hooks.
|
|
155
207
|
|
|
156
|
-
##
|
|
208
|
+
## Releases
|
|
209
|
+
|
|
210
|
+
Publication is authorized **only** by an explicit `workflow_dispatch` of the
|
|
211
|
+
`Release` workflow (`release_channel` input selects beta or stable). PR labels,
|
|
212
|
+
pushes, merges, and tags never publish anything, and every validation gate is
|
|
213
|
+
fail-closed: only an explicit PASS authorizes release evidence. See
|
|
214
|
+
[docs/RELEASING.md](docs/RELEASING.md) for validation and recovery details.
|
|
157
215
|
|
|
158
|
-
|
|
216
|
+
Release validation keeps each manifest with its lockfile: the root
|
|
217
|
+
`package.json` + `package-lock.json` and the TUI
|
|
218
|
+
`src/plugins/tui/package.json` + `src/plugins/tui/package-lock.json`. Both use
|
|
219
|
+
`npm ci --ignore-scripts`; an `npm ci` failure blocks the run and there is no
|
|
220
|
+
`npm install` fallback. A release carries one `.tgz` tarball, computes the
|
|
221
|
+
SHA-256 of that same artifact, and binds the tarball and GitHub release to the
|
|
222
|
+
full `TARGET_SHA`; a second pack is not interchangeable.
|
|
159
223
|
|
|
160
224
|
## Sandbox validation (V1/V2)
|
|
161
225
|
|
|
@@ -164,9 +228,9 @@ package as a real user inside an isolated sandbox (own `HOME`, npm prefix and
|
|
|
164
228
|
venv) — never the dev environment. It checks OpenCode V1 (`opencode`) and V2
|
|
165
229
|
(`opencode2`) side by side: binaries, MCP connectivity, `doctor`, and — with
|
|
166
230
|
`--prompts` — a prompt battery covering the `pantheon://agents` resource,
|
|
167
|
-
memory store/recall, filesystem writes and agent delegation.
|
|
168
|
-
|
|
169
|
-
|
|
231
|
+
memory store/recall, filesystem writes and agent delegation. The gate is
|
|
232
|
+
fail-closed: every required check must return an explicit PASS; timeouts,
|
|
233
|
+
auth/network/provider failures and missing prerequisites block the run.
|
|
170
234
|
|
|
171
235
|
```bash
|
|
172
236
|
scripts/test-opencode-v1-v2-sandbox.sh --prepare # tarball + install + init in the sandbox
|
|
@@ -180,6 +244,9 @@ Modes are combinable (e.g. `--prepare --run v1 --prompts`). Binaries are
|
|
|
180
244
|
resolved strictly inside the sandbox npm prefix — a non-prepared sandbox fails
|
|
181
245
|
fast instead of silently testing the host installation.
|
|
182
246
|
|
|
247
|
+
This validates the prepared isolated sandbox only. A PASS is not proof of
|
|
248
|
+
support for every real host or for host configurations that were not exercised.
|
|
249
|
+
|
|
183
250
|
Env overrides:
|
|
184
251
|
|
|
185
252
|
| Variable | Default | Purpose |
|
|
@@ -193,6 +260,26 @@ Env overrides:
|
|
|
193
260
|
Exit codes: `0` no real failures · `1` real failure (see `prompts-report.md`
|
|
194
261
|
in the sandbox root) · `2` usage error · `3` sandbox not prepared.
|
|
195
262
|
|
|
263
|
+
### Intentional memory MCP divergence
|
|
264
|
+
|
|
265
|
+
`scripts/memory_mcp_server.py` and `src/mcp/memory_mcp_server.py` are
|
|
266
|
+
intentionally different. The standalone `scripts/` copy keeps the lightweight
|
|
267
|
+
`memory_*` contract; the installed `src/mcp/` copy additionally exposes the
|
|
268
|
+
optional codemap schema and `code_index`, `code_query`, and `code_neighbors`.
|
|
269
|
+
The other shared MCP copies remain identical. Do not overwrite one memory copy
|
|
270
|
+
with the other.
|
|
271
|
+
|
|
272
|
+
### Task-result guard
|
|
273
|
+
|
|
274
|
+
A `task-result-guard` intercepts calls to the native `task()` tool where the
|
|
275
|
+
child session returns an empty or missing result. Instead of surfacing a silent
|
|
276
|
+
`completed` with no payload (which confuses the orchestrator), the guard now
|
|
277
|
+
raises an explicit error. This catches the common free-tier failure mode where a
|
|
278
|
+
child session exceeds the uncached-prefill token budget (`BackendAdmissionRejected`)
|
|
279
|
+
and returns nothing. For large payloads, prefer `pantheon_delegate` over native
|
|
280
|
+
`task()` — the delegation layer has better timeout and error handling.
|
|
281
|
+
|
|
282
|
+
|
|
196
283
|
## Documentation
|
|
197
284
|
|
|
198
285
|
- [Installation](docs/INSTALLATION.md) · [Quick start](docs/QUICKSTART.md)
|
|
@@ -210,9 +297,10 @@ or pull request.
|
|
|
210
297
|
|
|
211
298
|
## Citation and DOI
|
|
212
299
|
|
|
213
|
-
Pantheon is released under the [MIT License](LICENSE). For the
|
|
214
|
-
record, use the [Zenodo DOI](https://doi.org/10.5281/zenodo.22306637);
|
|
215
|
-
metadata is also available
|
|
300
|
+
Pantheon is released under the [MIT License](LICENSE). For the historical
|
|
301
|
+
published v1.4.3 record only, use the [Zenodo DOI](https://doi.org/10.5281/zenodo.22306637);
|
|
302
|
+
it is not the current operational version. Citation metadata is also available
|
|
303
|
+
in [CITATION.cff](CITATION.cff).
|
|
216
304
|
|
|
217
305
|
Canonical repository: <https://github.com/ils15/pantheon-opencode>
|
|
218
306
|
|
package/README.pt-BR.md
CHANGED
|
@@ -8,7 +8,7 @@ e equipes que querem mais estrutura sem perder o controle do próprio código.
|
|
|
8
8
|
[English](README.md) ·
|
|
9
9
|
[Repositório](https://github.com/ils15/pantheon-opencode) · [Licença MIT](LICENSE)
|
|
10
10
|
|
|
11
|
-
[](https://github.com/ils15/pantheon-opencode/releases/
|
|
11
|
+
[](https://github.com/ils15/pantheon-opencode/releases/latest)
|
|
12
12
|
[](https://github.com/ils15/pantheon-opencode/actions)
|
|
13
13
|
[](https://doi.org/10.5281/zenodo.22306637)
|
|
14
14
|
|
|
@@ -71,13 +71,31 @@ verificações repetíveis e passagens claras entre etapas do trabalho.
|
|
|
71
71
|
|
|
72
72
|
## Status
|
|
73
73
|
|
|
74
|
-
Versão
|
|
74
|
+
Versão operacional neste checkout: **v1.5.0-beta.2** (candidata; esta página
|
|
75
|
+
não afirma publicação). O Pantheon foi feito para OpenCode e depende da
|
|
75
76
|
disponibilidade e da configuração do OpenCode e dos serviços opcionais que você
|
|
76
77
|
escolher. Veja as [releases](https://github.com/ils15/pantheon-opencode/releases)
|
|
77
|
-
e o [changelog](CHANGELOG.md) para acompanhar as mudanças.
|
|
78
|
+
e o [changelog](CHANGELOG.md) para acompanhar as mudanças publicadas.
|
|
78
79
|
|
|
79
80
|
|
|
80
|
-
##
|
|
81
|
+
## Execução code-mode (opt-in explícito)
|
|
82
|
+
|
|
83
|
+
Scripts executados pelo MCP server `pantheon-code-mode` (`execute_code_script`)
|
|
84
|
+
só rodam quando aprovados explicitamente. A aprovação fica em
|
|
85
|
+
`.pantheon/code-mode/manifest.json` com o SHA-256 de cada script.
|
|
86
|
+
|
|
87
|
+
- **Sem manifest → nada executa** (`INVALID_STATE`); nunca há execução implícita.
|
|
88
|
+
- **Script fora do manifest → `CONFLICT`**; é preciso aprovar antes.
|
|
89
|
+
- **Hash divergente → `CORRUPT_DATA`**; edições após a aprovação são detectadas.
|
|
90
|
+
|
|
91
|
+
Aprove (ou reaprove) um script com a tool `approve_code_script`. O instalador
|
|
92
|
+
semeia o manifest com o hash de todos os scripts empacotados. Os resultados
|
|
93
|
+
seguem o contrato de nove códigos (`OK`, `UNSUPPORTED`, `UNAVAILABLE`,
|
|
94
|
+
`INVALID_INPUT`, `INVALID_STATE`, `CONFLICT`, `CORRUPT_DATA`, `TIMEOUT`,
|
|
95
|
+
`ESCALATE`) e, com `json_output=true`, incluem o campo `status`.
|
|
96
|
+
|
|
97
|
+
|
|
98
|
+
## Novidades da 1.5.0-beta.2
|
|
81
99
|
|
|
82
100
|
- Instalador exclusivo para OpenCode: guias de plataformas consolidados em um
|
|
83
101
|
único [guia OpenCode](docs/platforms/opencode.md).
|
|
@@ -93,7 +111,7 @@ e o [changelog](CHANGELOG.md) para acompanhar as mudanças.
|
|
|
93
111
|
lado — veja [Validação em sandbox](#validação-em-sandbox-v1v2).
|
|
94
112
|
- A flag `--prompts` do instalador está planejada para uma release futura.
|
|
95
113
|
|
|
96
|
-
## OpenCode V1/V2 — Versão dupla (1.5.0)
|
|
114
|
+
## OpenCode V1/V2 — Versão dupla (1.5.0-beta.2)
|
|
97
115
|
|
|
98
116
|
O Pantheon tem dois contratos de plugin OpenCode **exclusivos**. A configuração
|
|
99
117
|
comum do OpenCode pode ser compartilhada, mas o registro do plugin Pantheon é
|
|
@@ -141,7 +159,7 @@ instalador remove referências Pantheon das duas formas de config antes de
|
|
|
141
159
|
gravar apenas o registro Pantheon selecionado. Entradas de terceiros não são
|
|
142
160
|
convertidas nem reivindicadas por essa regra.
|
|
143
161
|
|
|
144
|
-
O relatório `pantheon_cost
|
|
162
|
+
O relatório `pantheon_cost`, disponível nos plugins V1 e V2, pode selecionar o banco com
|
|
145
163
|
`PANTHEON_OPENCODE_VERSION=v1` ou `v2` (`opencode.db` ou `opencode-v2.db`).
|
|
146
164
|
`PANTHEON_COST_DB=/caminho/absoluto/para/opencode.db` tem precedência sobre o
|
|
147
165
|
seletor de versão, e um `dbPath` explícito fornecido pelo chamador da
|
|
@@ -153,9 +171,21 @@ O instalador continua gravando as configurações de compatibilidade exigidas
|
|
|
153
171
|
pelo host OpenCode selecionado, como `experimental.subagent_depth`; isso não
|
|
154
172
|
converte um plugin V1 em V2 nem dá hooks V1 ao V2.
|
|
155
173
|
|
|
156
|
-
## Releases
|
|
174
|
+
## Releases
|
|
157
175
|
|
|
158
|
-
|
|
176
|
+
A publicação é autorizada **somente** por um `workflow_dispatch` explícito do
|
|
177
|
+
workflow `Release` (o input `release_channel` escolhe beta ou stable). Labels
|
|
178
|
+
de PR, push, merge e tag nunca publicam nada, e todos os gates de validação são
|
|
179
|
+
fail-closed: somente um PASS explícito autoriza release evidence. Consulte
|
|
180
|
+
[docs/RELEASING.md](docs/RELEASING.md) para detalhes de validação e recuperação.
|
|
181
|
+
|
|
182
|
+
A validação mantém cada manifest junto do seu lockfile: o root
|
|
183
|
+
`package.json` + `package-lock.json` e o TUI
|
|
184
|
+
`src/plugins/tui/package.json` + `src/plugins/tui/package-lock.json`. Ambos usam
|
|
185
|
+
`npm ci --ignore-scripts`; uma falha em `npm ci` bloqueia a execução e não há
|
|
186
|
+
fallback para `npm install`. Uma release carrega um único tarball `.tgz`, calcula
|
|
187
|
+
o SHA-256 desse mesmo artefato e vincula o tarball e o GitHub Release ao
|
|
188
|
+
`TARGET_SHA` completo; um segundo pack não é intercambiável.
|
|
159
189
|
|
|
160
190
|
## Validação em sandbox (V1/V2)
|
|
161
191
|
|
|
@@ -165,8 +195,9 @@ prefix npm e venv próprios) — nunca o ambiente de desenvolvimento. Ele verifi
|
|
|
165
195
|
OpenCode V1 (`opencode`) e V2 (`opencode2`) lado a lado: binários, conectividade
|
|
166
196
|
MCP, `doctor` e — com `--prompts` — uma bateria de prompts cobrindo o recurso
|
|
167
197
|
`pantheon://agents`, memory store/recall, escrita no filesystem e delegação de
|
|
168
|
-
agente.
|
|
169
|
-
|
|
198
|
+
agente. O gate é fail-closed: todo check obrigatório precisa terminar em PASS
|
|
199
|
+
explícito; timeout, falha de auth/rede/provider e pré-requisitos ausentes
|
|
200
|
+
bloqueiam a execução.
|
|
170
201
|
|
|
171
202
|
```bash
|
|
172
203
|
scripts/test-opencode-v1-v2-sandbox.sh --prepare # tarball + install + init no sandbox
|
|
@@ -180,6 +211,9 @@ Os modos são combináveis (ex.: `--prepare --run v1 --prompts`). Os binários s
|
|
|
180
211
|
resolvidos estritamente dentro do prefix npm do sandbox — um sandbox não
|
|
181
212
|
preparado falha rápido em vez de testar silenciosamente a instalação do host.
|
|
182
213
|
|
|
214
|
+
Isso valida somente o sandbox isolado e preparado. Um PASS não prova suporte
|
|
215
|
+
para todo host real nem para configurações de host que não foram exercitadas.
|
|
216
|
+
|
|
183
217
|
Variáveis de ambiente:
|
|
184
218
|
|
|
185
219
|
| Variável | Padrão | Finalidade |
|
|
@@ -194,6 +228,15 @@ Códigos de saída: `0` sem falhas reais · `1` falha real (veja
|
|
|
194
228
|
`prompts-report.md` na raiz do sandbox) · `2` erro de uso · `3` sandbox não
|
|
195
229
|
preparado.
|
|
196
230
|
|
|
231
|
+
### Divergência intencional do memory MCP
|
|
232
|
+
|
|
233
|
+
`scripts/memory_mcp_server.py` e `src/mcp/memory_mcp_server.py` são
|
|
234
|
+
intencionalmente diferentes. A cópia independente em `scripts/` mantém o
|
|
235
|
+
contrato leve de `memory_*`; a cópia instalada em `src/mcp/` também expõe o
|
|
236
|
+
schema opcional de codemap e `code_index`, `code_query` e `code_neighbors`. As
|
|
237
|
+
outras cópias compartilhadas permanecem idênticas. Não sobrescreva uma cópia de
|
|
238
|
+
memória com a outra.
|
|
239
|
+
|
|
197
240
|
## Documentação
|
|
198
241
|
|
|
199
242
|
- [Instalação](docs/INSTALLATION.md) · [Início rápido](docs/QUICKSTART.md)
|
|
@@ -211,9 +254,10 @@ uma issue ou pull request.
|
|
|
211
254
|
|
|
212
255
|
## Citação e DOI
|
|
213
256
|
|
|
214
|
-
O Pantheon é distribuído sob a [Licença MIT](LICENSE). Para o registro
|
|
215
|
-
da v1.4.3, use o [DOI do Zenodo](https://doi.org/10.5281/zenodo.22306637);
|
|
216
|
-
metadados de citação também estão em
|
|
257
|
+
O Pantheon é distribuído sob a [Licença MIT](LICENSE). Para o registro histórico
|
|
258
|
+
publicado da v1.4.3 apenas, use o [DOI do Zenodo](https://doi.org/10.5281/zenodo.22306637);
|
|
259
|
+
essa não é a versão operacional atual. Os metadados de citação também estão em
|
|
260
|
+
[CITATION.cff](CITATION.cff).
|
|
217
261
|
|
|
218
262
|
Repositório canônico: <https://github.com/ils15/pantheon-opencode>
|
|
219
263
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pantheon-opencode",
|
|
3
|
-
"version": "1.5.0-beta.
|
|
3
|
+
"version": "1.5.0-beta.4",
|
|
4
4
|
"description": "Multi-agent orchestration for OpenCode — 14 specialized agents, TDD, Themis review gates.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"publishConfig": {
|
|
@@ -28,7 +28,9 @@
|
|
|
28
28
|
"version:status": "node scripts/versioning.mjs status",
|
|
29
29
|
"version:apply": "node scripts/versioning.mjs apply",
|
|
30
30
|
"version:check": "node scripts/version-check.mjs",
|
|
31
|
-
"release:dry-run": "node scripts/versioning.mjs status && node scripts/release-notes.mjs &&
|
|
31
|
+
"release:dry-run": "node scripts/versioning.mjs status && node scripts/release-notes.mjs && node scripts/package-evidence.mjs",
|
|
32
|
+
"package:evidence": "node scripts/package-evidence.mjs",
|
|
33
|
+
"package:validate": "node scripts/validate-package.mjs",
|
|
32
34
|
"publish:next": "npm publish --tag next --access public",
|
|
33
35
|
"lint": "npx biome ci .",
|
|
34
36
|
"typecheck": "npx tsc --noEmit",
|
|
@@ -47,7 +49,9 @@
|
|
|
47
49
|
},
|
|
48
50
|
"files": [
|
|
49
51
|
"LICENSE",
|
|
52
|
+
"package-lock.json",
|
|
50
53
|
"plugin.json",
|
|
54
|
+
"pyproject.toml",
|
|
51
55
|
"scripts/install/*.mjs",
|
|
52
56
|
"scripts/*.py",
|
|
53
57
|
"src/plugin.ts",
|
|
@@ -64,6 +68,7 @@
|
|
|
64
68
|
"!src/agents/README.md",
|
|
65
69
|
"bin/*.mjs",
|
|
66
70
|
"AGENTS.md",
|
|
71
|
+
"CHANGELOG.md",
|
|
67
72
|
"opencode.json",
|
|
68
73
|
"src/mcp/*.py",
|
|
69
74
|
"src/instructions/*.instructions.md",
|
|
@@ -84,7 +89,7 @@
|
|
|
84
89
|
],
|
|
85
90
|
"dependencies": {
|
|
86
91
|
"@opencode-ai/plugin": "1.18.18",
|
|
87
|
-
"js-yaml": "^4.3.
|
|
92
|
+
"js-yaml": "^4.3.2",
|
|
88
93
|
"zod": "4.1.8"
|
|
89
94
|
},
|
|
90
95
|
"devDependencies": {
|
package/plugin.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pantheon",
|
|
3
3
|
"publisher": "ils15",
|
|
4
|
-
"version": "1.5.0",
|
|
4
|
+
"version": "1.5.0-beta.4",
|
|
5
5
|
"displayName": "Pantheon",
|
|
6
6
|
"description": "Conductor-Delegate orchestration platform with 14 specialized agents, 21 skills, and OpenCode support.",
|
|
7
7
|
"agents": "./src/agents",
|
package/pyproject.toml
ADDED
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
[build-system]
|
|
2
|
+
requires = ["setuptools>=64"]
|
|
3
|
+
build-backend = "setuptools.backends._legacy:_Backend"
|
|
4
|
+
|
|
5
|
+
[project]
|
|
6
|
+
name = "pantheon"
|
|
7
|
+
version = "1.5.0-beta.4"
|
|
8
|
+
description = "Multi-agent orchestration framework"
|
|
9
|
+
requires-python = ">=3.11"
|
|
10
|
+
dependencies = []
|
|
11
|
+
|
|
12
|
+
[tool.pytest.ini_options]
|
|
13
|
+
testpaths = ["tests"]
|
|
14
|
+
asyncio_mode = "auto"
|
|
15
|
+
addopts = "-v --tb=short"
|
|
16
|
+
|
|
17
|
+
[tool.ruff]
|
|
18
|
+
line-length = 88
|
|
19
|
+
target-version = "py311"
|
|
20
|
+
|
|
21
|
+
[tool.ruff.lint]
|
|
22
|
+
select = ["E", "F", "W", "I", "N", "UP", "B", "SIM", "PL", "RUF", "C901"]
|
|
23
|
+
ignore = ["E501"]
|
|
24
|
+
|
|
25
|
+
[tool.ruff.lint.per-file-ignores]
|
|
26
|
+
"__init__.py" = ["F401"]
|
|
27
|
+
# Legacy command-line scripts intentionally use hyphenated filenames.
|
|
28
|
+
"scripts/ci-validate-yaml.py" = ["N999"]
|
|
29
|
+
"scripts/scrub-secrets.py" = ["N999"]
|
|
30
|
+
# These modules defer optional/heavy imports until the corresponding command is used.
|
|
31
|
+
"scripts/vector_memory/*.py" = ["PLC0415"]
|
|
32
|
+
"tests/test_code_mode_args.py" = ["PLC0415"]
|
|
33
|
+
"tests/test_code_mode_sandbox.py" = ["PLC0415", "N806"]
|
|
34
|
+
"tests/test_code_mode_server.py" = ["PLC0415"]
|
|
35
|
+
"tests/test_eval_store.py" = ["PLC0415", "PLR2004"]
|
|
36
|
+
"tests/test_memory_mcp_server.py" = ["PLC0415", "PLR2004"]
|
|
37
|
+
# Existing public APIs and test fixtures are intentionally broad/simple; refactoring
|
|
38
|
+
# them would be behavior-affecting rather than a mechanical lint correction.
|
|
39
|
+
"scripts/code_mode_server.py" = ["PLR0913"]
|
|
40
|
+
"src/mcp/code_mode_server.py" = ["PLR0913"]
|
|
41
|
+
"scripts/mcp_persistence_server.py" = ["PLR0913"]
|
|
42
|
+
"src/mcp/mcp_persistence_server.py" = ["PLR0913"]
|
|
43
|
+
"scripts/memory_mcp_server.py" = ["C901"]
|
|
44
|
+
"scripts/vector_memory/index.py" = ["C901", "PLR0913", "PLR2004", "PLW0603", "PLW2901"]
|
|
45
|
+
"scripts/vector_memory/cli.py" = ["PLR2004"]
|
|
46
|
+
"scripts/vector_memory/query.py" = ["PLR0913"]
|
|
47
|
+
"src/mcp/eval_store.py" = ["PLR2004"]
|
|
48
|
+
"tests/test_code_mode_frontmatter.py" = ["PLR2004"]
|
|
49
|
+
"tests/test_eval_judge.py" = ["PLR2004"]
|
|
50
|
+
"tests/test_eval_static.py" = ["PLR2004"]
|
|
51
|
+
"tests/test_mcp_persistence_server.py" = ["PLR2004"]
|
|
52
|
+
|
|
53
|
+
[tool.mypy]
|
|
54
|
+
python_version = "3.11"
|
|
55
|
+
strict = true
|
|
56
|
+
ignore_missing_imports = true
|
|
57
|
+
disallow_untyped_defs = true
|