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.
Files changed (38) hide show
  1. package/.pantheon/code-mode/manifest.json +21 -0
  2. package/CHANGELOG.md +835 -0
  3. package/README.md +103 -15
  4. package/README.pt-BR.md +57 -13
  5. package/package.json +8 -3
  6. package/plugin.json +1 -1
  7. package/pyproject.toml +57 -0
  8. package/scripts/code_mode_server.py +403 -42
  9. package/scripts/install/opencode.mjs +42 -0
  10. package/scripts/install/plugin.mjs +3 -33
  11. package/scripts/manifest-inventory.mjs +410 -0
  12. package/scripts/mcp_persistence_server.py +516 -163
  13. package/scripts/package-evidence.mjs +242 -0
  14. package/scripts/probe-pantheon-cost.mjs +10 -1
  15. package/scripts/release-beta-version.mjs +61 -60
  16. package/scripts/sync-tui.mjs +76 -54
  17. package/scripts/test-opencode-v1-v2-sandbox.sh +79 -161
  18. package/scripts/validation-policy.mjs +7 -7
  19. package/scripts/version-check.mjs +113 -108
  20. package/scripts/versioning.mjs +131 -88
  21. package/src/agents/zeus.md +2 -2
  22. package/src/mcp/code_mode_server.py +403 -42
  23. package/src/mcp/mcp_persistence_server.py +516 -163
  24. package/src/pantheon/background-job-board.ts +14 -0
  25. package/src/pantheon/compaction-handoff.ts +304 -0
  26. package/src/pantheon/cost-command.ts +62 -42
  27. package/src/pantheon/delegate-manager.ts +109 -12
  28. package/src/pantheon/native-probe.ts +234 -0
  29. package/src/pantheon/native-task-status.ts +139 -0
  30. package/src/pantheon/provider-capabilities.ts +221 -0
  31. package/src/pantheon/provider-stream-tracker.ts +182 -0
  32. package/src/pantheon/task-result-guard.ts +107 -0
  33. package/src/pantheon/token-opt.ts +18 -110
  34. package/src/pantheon/tool-ceiling.ts +159 -0
  35. package/src/pantheon/v2-events.ts +10 -1
  36. package/src/plugin.ts +19 -1
  37. package/src/plugins/tui/package-lock.json +2 -2
  38. 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
- [![Version](https://img.shields.io/github/v/release/ils15/pantheon-opencode?label=version)](https://github.com/ils15/pantheon-opencode/releases/tag/v1.5.0)
11
+ [![Version](https://img.shields.io/github/v/release/ils15/pantheon-opencode?label=version)](https://github.com/ils15/pantheon-opencode/releases/latest)
12
12
  [![CI](https://img.shields.io/github/actions/workflow/status/ils15/pantheon-opencode/ci.yml?branch=main&label=CI)](https://github.com/ils15/pantheon-opencode/actions)
13
13
  [![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.22306637.svg)](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
- Current release: **v1.5.0**. Pantheon is designed for OpenCode and depends on
74
- the availability and configuration of OpenCode and any optional services you
75
- choose to use. Check the [releases](https://github.com/ils15/pantheon-opencode/releases)
76
- and [changelog](CHANGELOG.md) for the latest changes.
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
- ## What's new in 1.5.0
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
- ## Beta releases
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
- A pull request labeled exactly `release:beta` triggers the beta release path. See [docs/RELEASING.md](docs/RELEASING.md) for validation and recovery details.
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. Environmental
168
- failures (network, provider auth, Docker) are classified as `AMBIENTAL` and
169
- never fail the run; only real failures do.
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 published v1.4.3
214
- record, use the [Zenodo DOI](https://doi.org/10.5281/zenodo.22306637); citation
215
- metadata is also available in [CITATION.cff](CITATION.cff).
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
- [![Versão](https://img.shields.io/github/v/release/ils15/pantheon-opencode?label=versão)](https://github.com/ils15/pantheon-opencode/releases/tag/v1.5.0)
11
+ [![Versão](https://img.shields.io/github/v/release/ils15/pantheon-opencode?label=versão)](https://github.com/ils15/pantheon-opencode/releases/latest)
12
12
  [![CI](https://img.shields.io/github/actions/workflow/status/ils15/pantheon-opencode/ci.yml?branch=main&label=CI)](https://github.com/ils15/pantheon-opencode/actions)
13
13
  [![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.22306637.svg)](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 atual: **v1.5.0**. O Pantheon foi feito para OpenCode e depende da
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
- ## Novidades da 1.5.0
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` (apenas V1) pode selecionar o banco com
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 beta
174
+ ## Releases
157
175
 
158
- Um pull request com o label exato `release:beta` aciona o fluxo de release beta. Consulte [docs/RELEASING.md](docs/RELEASING.md) para detalhes de validação e recuperação.
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. Falhas ambientais (rede, auth de provider, Docker) são classificadas
169
- como `AMBIENTAL` e nunca falham a execução; apenas falhas reais falham.
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 publicado
215
- da v1.4.3, use o [DOI do Zenodo](https://doi.org/10.5281/zenodo.22306637); os
216
- metadados de citação também estão em [CITATION.cff](CITATION.cff).
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.2",
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 && npm pack --dry-run",
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.0",
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