pantheon-opencode 1.6.0-beta.10 → 1.6.0-beta.11
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/AGENTS.global.md +42 -18
- package/AGENTS.md +1 -1
- package/CHANGELOG.md +24 -0
- package/README.md +66 -21
- package/bin/pantheon-init.mjs +44 -1
- package/package.json +4 -4
- package/plugin.json +1 -1
- package/pyproject.toml +1 -1
- package/scripts/build-agents-md.mjs +60 -6
- package/scripts/install/backup.mjs +475 -0
- package/scripts/install/cli-ui.mjs +6 -1
- package/scripts/install/exit-codes.mjs +26 -0
- package/scripts/install/interactive.mjs +15 -1
- package/scripts/install/migrate.mjs +41 -22
- package/scripts/install/opencode.mjs +562 -50
- package/scripts/install/plan.mjs +287 -0
- package/scripts/install/plugin.mjs +22 -8
- package/scripts/install/shared.mjs +89 -55
- package/scripts/install/strings.mjs +20 -0
- package/scripts/install/venv.mjs +13 -3
- package/scripts/install/vision-prompt.mjs +11 -1
- package/scripts/mcp_persistence.py +50 -15
- package/scripts/prune.mjs +9 -3
- package/scripts/restore.mjs +222 -0
- package/skills-lock.json +1 -1
- package/src/agents/iris.md +6 -0
- package/src/agents/zeus.md +19 -62
- package/src/instructions/agent-return-format.instructions.md +17 -15
- package/src/instructions/memory-protocol.instructions.md +3 -2
- package/src/instructions/test-economy.instructions.md +21 -0
- package/src/instructions/zeus-anti-stall.instructions.md +6 -6
- package/src/instructions/zeus-council-synthesis.instructions.md +10 -11
- package/src/instructions/zeus-memory-operations.instructions.md +10 -6
- package/src/instructions/zeus-timeout-retry.instructions.md +28 -9
- package/src/mcp/mcp_persistence.py +50 -15
- package/src/pantheon/cost-command.ts +5 -2
- package/src/pantheon/model-agents.ts +19 -0
- package/src/pantheon/model-command.ts +218 -56
- package/src/pantheon/v2-model-overrides.ts +275 -0
- package/src/pantheon/v2-tools.ts +18 -29
- package/src/plugin-v2.ts +13 -0
- package/src/plugins/tui/dist/tui-v2.js +2 -2
- package/src/plugins/tui/dist/tui.js +1 -1
- package/src/plugins/tui/package-lock.json +2 -2
- package/src/plugins/tui/package.json +1 -1
- package/src/skills/auto-continue/SKILL.md +14 -6
package/src/pantheon/v2-tools.ts
CHANGED
|
@@ -311,7 +311,7 @@ async function executeCost(
|
|
|
311
311
|
|
|
312
312
|
// ─── pantheon_model ─────────────────────────────────────────────────────
|
|
313
313
|
|
|
314
|
-
/** JSON Schema for `pantheon_model
|
|
314
|
+
/** JSON Schema for V2 `pantheon_model`; global scope is intentionally absent. */
|
|
315
315
|
const MODEL_INPUT: Record<string, unknown> = {
|
|
316
316
|
type: 'object',
|
|
317
317
|
additionalProperties: false,
|
|
@@ -330,39 +330,27 @@ const MODEL_INPUT: Record<string, unknown> = {
|
|
|
330
330
|
},
|
|
331
331
|
scope: {
|
|
332
332
|
type: 'string',
|
|
333
|
-
enum: ['project'
|
|
334
|
-
description: '
|
|
335
|
-
},
|
|
336
|
-
confirm: {
|
|
337
|
-
type: 'boolean',
|
|
338
|
-
description: 'Explicit confirmation for a mutating operation; required for global changes.',
|
|
339
|
-
},
|
|
340
|
-
authorize_global: {
|
|
341
|
-
type: 'boolean',
|
|
342
|
-
description: 'Separate authorization for global configuration; not implied by confirm.',
|
|
333
|
+
enum: ['project'],
|
|
334
|
+
description: 'Project scope only; global overrides are not supported in V2.',
|
|
343
335
|
},
|
|
344
336
|
},
|
|
345
337
|
}
|
|
346
338
|
|
|
347
|
-
const
|
|
348
|
-
'the interactive wizard has no user in the V2 tool surface — pass action="status" to read ' +
|
|
349
|
-
'the current overrides, or pass agent and model explicitly for action="set"'
|
|
350
|
-
|
|
351
|
-
/**
|
|
352
|
-
* The V1 command falls back to an interactive readline prompt when invoked
|
|
353
|
-
* with no arguments. A tool call has no user at the terminal, so that fallback
|
|
354
|
-
* would block the call until it timed out. `ask` is injected to refuse
|
|
355
|
-
* deterministically instead, which routes through the command's own
|
|
356
|
-
* `wizard canceled` error path rather than forking its logic.
|
|
357
|
-
*/
|
|
358
|
-
const modelCommand = createModelCommand({
|
|
359
|
-
ask: () => Promise.reject(new Error(WIZARD_UNAVAILABLE)),
|
|
360
|
-
})
|
|
339
|
+
const modelCommand = createModelCommand({ v2Mode: true })
|
|
361
340
|
|
|
362
341
|
async function executeModel(
|
|
363
342
|
input: Record<string, unknown>,
|
|
364
343
|
context: unknown,
|
|
365
344
|
): Promise<V2ToolResult> {
|
|
345
|
+
if (input.scope !== undefined && input.scope !== 'project') {
|
|
346
|
+
return { output: 'Error: V2 pantheon_model is project-only; global scope is not supported.' }
|
|
347
|
+
}
|
|
348
|
+
if (Object.hasOwn(input, 'confirm') || Object.hasOwn(input, 'authorize_global')) {
|
|
349
|
+
return {
|
|
350
|
+
output:
|
|
351
|
+
'Error: V2 pantheon_model does not accept authorization flags; global authorization is not supported by this tool.',
|
|
352
|
+
}
|
|
353
|
+
}
|
|
366
354
|
// The V1 tool validates its own args (zod) and reports failures as text.
|
|
367
355
|
const output = await modelCommand.pantheon_model.execute(
|
|
368
356
|
input as Parameters<typeof modelCommand.pantheon_model.execute>[0],
|
|
@@ -415,10 +403,11 @@ export function createV2ToolDefinitions(visionRuntime?: V2VisionRuntime): V2Tool
|
|
|
415
403
|
{
|
|
416
404
|
name: 'pantheon_model',
|
|
417
405
|
description:
|
|
418
|
-
'Show, set, or reset per-agent model overrides in active-preset.json
|
|
419
|
-
'
|
|
420
|
-
'
|
|
421
|
-
'
|
|
406
|
+
'Show, set, or reset explicit per-agent project-scoped model overrides in active-preset.json. ' +
|
|
407
|
+
'V2 ignores static preset names and PANTHEON_MODEL_PRESET; no wizard or implicit model ' +
|
|
408
|
+
'selection. Global overrides are not read or written in V2; future global support requires ' +
|
|
409
|
+
'separate explicit authorization. Pass action="status" to read project-scoped overrides. ' +
|
|
410
|
+
'Never writes .env or top-level model/small_model.',
|
|
422
411
|
input: MODEL_INPUT,
|
|
423
412
|
output: {},
|
|
424
413
|
execute: executeModel,
|
package/src/plugin-v2.ts
CHANGED
|
@@ -110,6 +110,7 @@ import {
|
|
|
110
110
|
v2ResourceTarget,
|
|
111
111
|
} from './pantheon/v2-delegation-enforce.ts'
|
|
112
112
|
import { createV2ExecuteAfter, resolveV2SandboxConfig } from './pantheon/v2-execute-after.ts'
|
|
113
|
+
import { applyV2ModelOverrides, readV2ModelConfiguration } from './pantheon/v2-model-overrides.ts'
|
|
113
114
|
import { createV2ToolDefinitions, type V2ToolResult } from './pantheon/v2-tools.ts'
|
|
114
115
|
import { V2_UNSUPPORTED_FEATURE_SEED } from './pantheon/v2-unsupported.mjs'
|
|
115
116
|
import { buildV2VisionPromptContext, type V2VisionRuntime } from './pantheon/v2-vision.ts'
|
|
@@ -351,6 +352,18 @@ function transformAgents(draft: AgentDraft): void {
|
|
|
351
352
|
markUnsupported('agent-transform-list')
|
|
352
353
|
return
|
|
353
354
|
}
|
|
355
|
+
try {
|
|
356
|
+
const modelConfiguration = readV2ModelConfiguration()
|
|
357
|
+
if (modelConfiguration.warnings.length > 0) {
|
|
358
|
+
// The V2 server PluginContext has no documented user-visible notification
|
|
359
|
+
// or logging channel; preserve the degradation for status diagnostics.
|
|
360
|
+
markUnsupported('agent-model-overrides')
|
|
361
|
+
}
|
|
362
|
+
applyV2ModelOverrides(draft, modelConfiguration.overrides)
|
|
363
|
+
} catch {
|
|
364
|
+
// Model configuration is optional. Preserve host models if it cannot be read.
|
|
365
|
+
markUnsupported('agent-model-overrides')
|
|
366
|
+
}
|
|
354
367
|
try {
|
|
355
368
|
for (const agent of agents) {
|
|
356
369
|
draft.update(agent.id, (current) => {
|
|
@@ -477,7 +477,7 @@ function Sidebar(props) {
|
|
|
477
477
|
setProp(_el$, "width", "100%");
|
|
478
478
|
setProp(_el$, "padding", 1);
|
|
479
479
|
setProp(_el$2, "attributes", 1);
|
|
480
|
-
insert(_el$2, `Pantheon v1.6.0-beta.
|
|
480
|
+
insert(_el$2, `Pantheon v1.6.0-beta.11`);
|
|
481
481
|
insertNode(_el$3, createTextNode(`OpenCode V2 · plugin TUI ativo`));
|
|
482
482
|
insert(_el$, createComponent(Show, {
|
|
483
483
|
get when() {
|
|
@@ -623,7 +623,7 @@ function HomeStatus(props) {
|
|
|
623
623
|
const muted = () => props.context.theme?.text?.muted ?? props.context.theme?.text?.base;
|
|
624
624
|
return (() => {
|
|
625
625
|
var _el$20 = createElement("text");
|
|
626
|
-
insert(_el$20, () => `Pantheon v1.6.0-beta.
|
|
626
|
+
insert(_el$20, () => `Pantheon v1.6.0-beta.11${preset().name ? ` ⚡ ${preset().name}` : ""}`);
|
|
627
627
|
effect((_$p) => setProp(_el$20, "fg", muted(), _$p));
|
|
628
628
|
return _el$20;
|
|
629
629
|
})();
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pantheon-tui",
|
|
3
|
-
"version": "1.6.0-beta.
|
|
3
|
+
"version": "1.6.0-beta.11",
|
|
4
4
|
"lockfileVersion": 3,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "pantheon-tui",
|
|
9
|
-
"version": "1.6.0-beta.
|
|
9
|
+
"version": "1.6.0-beta.11",
|
|
10
10
|
"license": "MIT",
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"@opencode-ai/plugin": "1.18.33",
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pantheon-tui",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "1.6.0-beta.
|
|
4
|
+
"version": "1.6.0-beta.11",
|
|
5
5
|
"description": "Pantheon TUI plugin — V1 rich sidebar and usage gauges; native V2 status, session and delegation sidebar",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"engines": {
|
|
@@ -55,16 +55,16 @@ Full-auto may continue only within a task and scope the user explicitly authoriz
|
|
|
55
55
|
## Implementation Pattern
|
|
56
56
|
|
|
57
57
|
```
|
|
58
|
-
1. Create
|
|
59
|
-
2.
|
|
60
|
-
3.
|
|
61
|
-
4.
|
|
58
|
+
1. Create a checklist only for multi-step work; a one-step fix needs no todo ceremony
|
|
59
|
+
2. Use native todo operations only when a todo-write tool is visible in the active session; otherwise keep the checklist explicit in the conversation
|
|
60
|
+
3. Mark work complete in the available checklist as soon as it is done
|
|
61
|
+
4. Do not claim that the native todo list was updated when no todo-write tool is exposed
|
|
62
62
|
5. Do NOT ask "should I continue?" between clear steps
|
|
63
63
|
6. Stop at any applicable risk gate; do not require a plan/review gate for a low-risk edit
|
|
64
64
|
7. After gate approval, resume with next todo
|
|
65
65
|
```
|
|
66
66
|
|
|
67
|
-
**Never batch-complete
|
|
67
|
+
**Never batch-complete checklist items.** Mark each completed as soon as done; do not imply a tool call occurred unless it did.
|
|
68
68
|
|
|
69
69
|
---
|
|
70
70
|
|
|
@@ -107,6 +107,14 @@ Only expand to full cooldown when hitting a mandatory gate.
|
|
|
107
107
|
|
|
108
108
|
## Timeout & Retry Enforcement
|
|
109
109
|
|
|
110
|
+
Delegate through the root `subagent` tool observed in the Beta 10 runtime. `task()` is
|
|
111
|
+
host/API terminology, not an assumed root tool; call shape and background support are
|
|
112
|
+
runtime-dependent. Prefer synchronous dispatch unless the active schema exposes background
|
|
113
|
+
and the host provides an observable completion notification. Do not assume `task_status`,
|
|
114
|
+
`cancel_task`, or board-based tracking/recovery tools are available. When no completion
|
|
115
|
+
mechanism is observable, use synchronous dispatch or state the limitation; do not claim
|
|
116
|
+
that jobs are being tracked or recovered.
|
|
117
|
+
|
|
110
118
|
When a delegated agent does not respond in time, enforce the timeout policy defined in
|
|
111
119
|
`src/instructions/zeus-timeout-retry.instructions.md`.
|
|
112
120
|
|
|
@@ -128,7 +136,7 @@ When dispatching, set the expectation explicitly:
|
|
|
128
136
|
|
|
129
137
|
### Timeout Tracking Table
|
|
130
138
|
|
|
131
|
-
Maintain
|
|
139
|
+
Maintain an in-context (not persistent/native) checklist of delegations when needed:
|
|
132
140
|
|
|
133
141
|
| Agent | Started | Timeout | Status | Partial OK? |
|
|
134
142
|
|-------|---------|---------|--------|-------------|
|