pantheon-opencode 1.6.0-beta.11 → 1.6.0-beta.13
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 +3 -3
- package/AGENTS.md +1 -1
- package/CHANGELOG.md +39 -0
- package/README.md +85 -31
- package/README.pt-BR.md +7 -4
- package/bin/pantheon-init.mjs +278 -102
- package/package.json +5 -3
- package/plugin.json +1 -1
- package/pyproject.toml +1 -1
- package/scripts/build-agents-md.mjs +77 -13
- package/scripts/check-plugin-v2-coverage.mjs +7 -7
- package/scripts/doctor.mjs +242 -19
- package/scripts/install/backup.mjs +191 -18
- package/scripts/install/cli-ui.mjs +73 -0
- package/scripts/install/file-inventory.mjs +555 -0
- package/scripts/install/interactive.mjs +69 -391
- package/scripts/install/migrate.mjs +45 -38
- package/scripts/install/model-picker.mjs +63 -22
- package/scripts/install/opencode-version.mjs +9 -1
- package/scripts/install/opencode.mjs +279 -79
- package/scripts/install/plan-artifact.mjs +517 -0
- package/scripts/install/plan.mjs +165 -3
- package/scripts/install/plugin.mjs +118 -14
- package/scripts/install/prompt-result.mjs +2 -0
- package/scripts/install/shared.mjs +188 -65
- package/scripts/install/state.mjs +63 -8
- package/scripts/install/venv.mjs +15 -6
- package/scripts/install/verify.mjs +128 -0
- package/scripts/install/vision-prompt.mjs +2 -0
- package/scripts/install-mcp.mjs +1 -1
- package/scripts/manifest-inventory.mjs +49 -3
- package/scripts/node-engine-policy.mjs +85 -0
- package/scripts/package-evidence.mjs +6 -0
- package/scripts/postinstall.mjs +26 -26
- package/scripts/reconcile.mjs +325 -0
- package/scripts/sync-tui.mjs +5 -1
- package/scripts/uninstall.mjs +258 -34
- package/scripts/update.mjs +164 -0
- package/scripts/validate-node-engine-policy.mjs +13 -0
- package/scripts/version-check.mjs +34 -1
- package/scripts/versioning.mjs +9 -1
- package/skills-lock.json +3 -3
- package/src/agents/mnemosyne.md +7 -2
- package/src/instructions/memory-protocol.instructions.md +2 -2
- package/src/instructions/zeus-memory-operations.instructions.md +4 -3
- package/src/pantheon/v2-unsupported.mjs +2 -3
- 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 +3 -3
- package/src/plugins/tui/package.json +2 -2
- package/src/skills/artifact-management/SKILL.md +5 -1
- package/src/skills/memory-bank/SKILL.md +5 -1
- package/src/skills/worktrees/SKILL.md +30 -11
package/scripts/versioning.mjs
CHANGED
|
@@ -111,7 +111,15 @@ function analyzeConventionalCommits(since) {
|
|
|
111
111
|
function prepareManifests(newVersion) {
|
|
112
112
|
if (!SEMVER_PATTERN.test(newVersion)) throw new Error(`invalid version: ${newVersion}`)
|
|
113
113
|
const inventory = validateInventory(ROOT, { allowVersionDivergence: true })
|
|
114
|
-
|
|
114
|
+
const releaseMetadataFiles = new Set(
|
|
115
|
+
inventory.documents
|
|
116
|
+
.filter(({ entry }) => entry.role === 'metadata')
|
|
117
|
+
.map(({ entry }) => entry.file),
|
|
118
|
+
)
|
|
119
|
+
const updates = prepareInventoryVersion(inventory, newVersion).filter(
|
|
120
|
+
({ path }) => !releaseMetadataFiles.has(path.slice(ROOT.length + 1)),
|
|
121
|
+
)
|
|
122
|
+
return { inventory, updates }
|
|
115
123
|
}
|
|
116
124
|
|
|
117
125
|
/**
|
package/skills-lock.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"src/skills/agent-coordination/SKILL.md": "d4bd70c18bc5726ea6784fe0a9c514446ca313e4c3ba4d658a0ff6658001aece",
|
|
3
|
-
"src/skills/artifact-management/SKILL.md": "
|
|
3
|
+
"src/skills/artifact-management/SKILL.md": "24dc1ca4660246ef37c3d3a5b246b7f63e3739f0ef741ed0a2e21d9abd3e9165",
|
|
4
4
|
"src/skills/auto-continue/SKILL.md": "3fd4167b2e015510aec428098d27bb15854ba239c4dc7a064177d62e2353af86",
|
|
5
5
|
"src/skills/clonedeps/SKILL.md": "3e0b43cf96da98c83699dc48db3fd58fbfda84b9022bb70d3747875c81c3e124",
|
|
6
6
|
"src/skills/code-review-checklist/SKILL.md": "6445513ab880efdb1005861ae13cb9a215f80b9d260f6278499f60771e07858c",
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
"src/skills/git-workflow-and-versioning/SKILL.md": "685a94041f1b4ce2a430301f517b89102055696267c369a7e8fb191606659276",
|
|
10
10
|
"src/skills/incremental-implementation/SKILL.md": "7065ddb45da3c6b6751de07f290e92e6cb072e949a2e3aaae13ee7762f0a70fc",
|
|
11
11
|
"src/skills/loop-engineering/SKILL.md": "f804e545821b9cca8fe0ec517307ed902446f28c2ca8ff9194c0f987cf7229e3",
|
|
12
|
-
"src/skills/memory-bank/SKILL.md": "
|
|
12
|
+
"src/skills/memory-bank/SKILL.md": "7fd7a65cd48f68793f60afa0d18b87692957888c7dad414213907b5e83d76395",
|
|
13
13
|
"src/skills/reflect/SKILL.md": "4c7608c2a55cb8a50ac90fc0e2446bdf25e7914b1748cb7731c311d13c29dfdd",
|
|
14
14
|
"src/skills/security-hardening/SKILL.md": "6d637e122421f7bc3b751f04854ad343a5a5d35249458bc8939233138fd3f20d",
|
|
15
15
|
"src/skills/session-goal/SKILL.md": "3a708d15a59a6bff2dd32ff7ead6548ecccc7be8d39437fee3133ea6254b6134",
|
|
@@ -18,5 +18,5 @@
|
|
|
18
18
|
"src/skills/tdd-with-agents/SKILL.md": "9d20607ea34fc3e02c7e3ef5186b103d84196bd9a13aaadd55a44f41339125da",
|
|
19
19
|
"src/skills/verification-planning/SKILL.md": "14186446ef51e1ba2c87b337e8d5f86e566d805156ab21fba2a75f8c4a99df3f",
|
|
20
20
|
"src/skills/visual-review-pipeline/SKILL.md": "f6e65ff75a9325c38e0e9dde8e87f09b873e14e490936ef48aa80201bb68fe10",
|
|
21
|
-
"src/skills/worktrees/SKILL.md": "
|
|
21
|
+
"src/skills/worktrees/SKILL.md": "9cf2b036e90d9ff7c6deb786ad7bab2cb78d6bf39166a67d5cbeafc29f593c6e"
|
|
22
22
|
}
|
package/src/agents/mnemosyne.md
CHANGED
|
@@ -84,7 +84,7 @@ Mnemosyne executes the expanded compression pipeline. When Zeus delegates compre
|
|
|
84
84
|
- IMPL/REVIEW artifacts to archive
|
|
85
85
|
- Next phase agent info
|
|
86
86
|
|
|
87
|
-
2. **
|
|
87
|
+
2. **Privacy check**: Never store secrets, credentials, or tokens in durable memory. The current `memory_store` handler stores submitted values and metadata; automatic regex scrubbing/redaction is not guaranteed. Omit sensitive content or redact it before storing.
|
|
88
88
|
|
|
89
89
|
3. **Write ZZ artifact**: Create `.pantheon/memory-bank/.tmp/ZZ-phase{N}-context.md` with:
|
|
90
90
|
- From/To agent info
|
|
@@ -112,7 +112,7 @@ Mnemosyne executes the expanded compression pipeline. When Zeus delegates compre
|
|
|
112
112
|
|
|
113
113
|
### Write Protocol
|
|
114
114
|
- Atomic write: .tmp → fsync → validate → rename
|
|
115
|
-
-
|
|
115
|
+
- Secret handling: omit or manually redact secrets before durable storage; do not rely on automatic MCP scrubbing.
|
|
116
116
|
|
|
117
117
|
### Safety
|
|
118
118
|
- NEVER compress ADR notes, active PLAN, NEEDS_REVISION/FAILED reviews
|
|
@@ -154,6 +154,11 @@ Use this only when the user or Zeus explicitly asks to preserve a reusable resul
|
|
|
154
154
|
|
|
155
155
|
**Use only for an explicit request to preserve one reusable result.** Background completion, Apollo discovery, and `subtask_summary` return are not triggers for durable storage.
|
|
156
156
|
|
|
157
|
+
`pantheon-memory` stores durable SQLite entries with no entry TTL. Its search is
|
|
158
|
+
FTS5/BM25 lexical matching only, with no semantic/vector fallback. Never store
|
|
159
|
+
secrets, credentials, or tokens: the MCP stores submitted values and metadata
|
|
160
|
+
without guaranteed automatic scrubbing.
|
|
161
|
+
|
|
157
162
|
**Command:** `@mnemosyne Store <concise reusable result>`
|
|
158
163
|
|
|
159
164
|
**What it does:**
|
|
@@ -16,8 +16,8 @@ These rules apply to all agents; each agent file may add domain-specific rules.
|
|
|
16
16
|
- Use a targeted query (`top_k=2`); do not search the whole prompt by default. Missing or irrelevant results never block current work.
|
|
17
17
|
|
|
18
18
|
### Persistence
|
|
19
|
-
-
|
|
20
|
-
- Store at most one concise, reusable top-level result; never persist routine child summaries, phase updates, test logs, or temporary state. Confirm a successful write before claiming persistence.
|
|
19
|
+
- Tool grants vary by agent/runtime. Zeus's installed allowlist has `memory_search` and temporary `context_save`/`context_get` checkpoints, but no durable writes; Mnemosyne's includes `memory_store` and other durable-memory tools. Use only tools exposed and permitted in the active session.
|
|
20
|
+
- Store at most one concise, reusable top-level result; never persist routine child summaries, phase updates, test logs, or temporary state. Confirm a successful write before claiming persistence. Never store secrets, credentials, or tokens. `memory_store` stores submitted values and metadata without guaranteed redaction; omit sensitive content or redact it before storage.
|
|
21
21
|
- If no write tool is available or the write did not succeed, say that the information was not persisted. Do not imply automatic memory storage or recovery. Add ADRs to the memory bank only when explicitly requested.
|
|
22
22
|
|
|
23
23
|
### Relevance and permanent records
|
|
@@ -19,9 +19,10 @@ Use a recent, directly matching decision only after checking current context;
|
|
|
19
19
|
otherwise treat it as background, never as authority to skip a needed review.
|
|
20
20
|
|
|
21
21
|
Persist only reusable, material decisions, and only if a memory-write tool is
|
|
22
|
-
explicitly exposed and permitted
|
|
23
|
-
|
|
24
|
-
does not imply write access. If a write
|
|
22
|
+
explicitly exposed and permitted. Inspect the active tool grants/catalog to
|
|
23
|
+
determine availability; temporary `context_save`/`context_get` checkpoints are
|
|
24
|
+
not durable memory writes. Search access does not imply write access. If a write
|
|
25
|
+
tool is available and permitted, use
|
|
25
26
|
`key="council:<yyyy-mm-dd>:<slug>"`, JSON-stringify both `value` and `metadata`,
|
|
26
27
|
and confirm success before claiming persistence. Otherwise tell the user the
|
|
27
28
|
decision was not persisted. Keep any saved record concise: question, recommendation,
|
|
@@ -21,9 +21,8 @@
|
|
|
21
21
|
* So a `.mjs` import is the only form all three consumers can share, and it
|
|
22
22
|
* matches the existing `src/pantheon/presets.mjs` + `.d.mts` precedent.
|
|
23
23
|
*
|
|
24
|
-
* NOT the reason: type-stripping. `package.json#engines` admits
|
|
25
|
-
*
|
|
26
|
-
* unflagged type-stripping (it landed in 22.18.0), so that argument would not
|
|
24
|
+
* NOT the reason: type-stripping. `package.json#engines` admits Node >=26.4.0,
|
|
25
|
+
* which defaults to unflagged type-stripping (it landed in 22.18.0), so that argument would not
|
|
27
26
|
* have held on any admitted version. The live hazard is that `engines` is not
|
|
28
27
|
* ENFORCED: a Node 20 user can run `doctor` and would get no type-stripping,
|
|
29
28
|
* which is an argument for a runtime version check, not for this file's shape.
|
|
@@ -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.13`);
|
|
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.13${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.13",
|
|
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.13",
|
|
10
10
|
"license": "MIT",
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"@opencode-ai/plugin": "1.18.33",
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
"tsdown": "0.23.0"
|
|
21
21
|
},
|
|
22
22
|
"engines": {
|
|
23
|
-
"node": "
|
|
23
|
+
"node": ">=26.4.0"
|
|
24
24
|
},
|
|
25
25
|
"peerDependencies": {
|
|
26
26
|
"@opencode-ai/plugin": "1.18.33",
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pantheon-tui",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "1.6.0-beta.
|
|
4
|
+
"version": "1.6.0-beta.13",
|
|
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": {
|
|
8
|
-
"node": "
|
|
8
|
+
"node": ">=26.4.0"
|
|
9
9
|
},
|
|
10
10
|
"exports": {
|
|
11
11
|
"./tui": "./dist/tui.js",
|
|
@@ -23,12 +23,16 @@ All ephemeral artifacts live in `.pantheon/memory-bank/.tmp/` — gitignored and
|
|
|
23
23
|
│ ├── IMPL-phase1-hermes.md
|
|
24
24
|
│ ├── IMPL-phase1-aphrodite.md
|
|
25
25
|
│ └── REVIEW-<feature>.md
|
|
26
|
-
├── _notes/ ←
|
|
26
|
+
├── _notes/ ← permanent ADRs; Git tracking follows repository policy
|
|
27
27
|
│ └── ADR-<topic>.md
|
|
28
28
|
├── 01-active-context.md
|
|
29
29
|
└── 02-progress-log.md
|
|
30
30
|
```
|
|
31
31
|
|
|
32
|
+
Memory Bank files are not automatically versioned or shared across clones.
|
|
33
|
+
Check the repository's ignore/commit policy before relying on `_tasks/` records
|
|
34
|
+
or other files being tracked; `_tasks/` may be Git-ignored.
|
|
35
|
+
|
|
32
36
|
---
|
|
33
37
|
|
|
34
38
|
## Artifact Types
|
|
@@ -16,7 +16,7 @@ Complete guide to Pantheon memory bank — structure, rules, optimization, and m
|
|
|
16
16
|
|
|
17
17
|
| System | Where | Owner | Lifetime | Purpose |
|
|
18
18
|
|--------|-------|-------|----------|---------|
|
|
19
|
-
| **Memory Bank** | `.pantheon/memory-bank/` | Team |
|
|
19
|
+
| **Memory Bank** | `.pantheon/memory-bank/` | Team | Files persist in the working tree; Git tracking depends on repository ignore/commit policy | Project context: architecture, patterns, progress |
|
|
20
20
|
| **VS Code `/memories/`** | `.vscode/` or workspace | Agent | Session/repo scoped | Atomic facts, conversation plans |
|
|
21
21
|
|
|
22
22
|
---
|
|
@@ -39,6 +39,10 @@ Complete guide to Pantheon memory bank — structure, rules, optimization, and m
|
|
|
39
39
|
└── NOTE0001-topic.md ← Architectural decisions, findings
|
|
40
40
|
```
|
|
41
41
|
|
|
42
|
+
Memory Bank files are not automatically synchronized across clones. In
|
|
43
|
+
particular, `_tasks/` records may be Git-ignored; only files tracked and
|
|
44
|
+
committed under the repository's policy are shared through Git.
|
|
45
|
+
|
|
42
46
|
### File Update Frequency
|
|
43
47
|
|
|
44
48
|
| File | Fill when | Update frequency |
|
|
@@ -16,28 +16,47 @@ Use git worktrees to create isolated working directories for parallel or experim
|
|
|
16
16
|
|
|
17
17
|
## Setup
|
|
18
18
|
|
|
19
|
+
Use this persistent external default for new worktrees:
|
|
20
|
+
|
|
21
|
+
```text
|
|
22
|
+
<project-parent>/.pantheon-worktrees/<exact-repository-directory-basename>/<task>
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
Resolve the project directory to an absolute path, then use its exact final
|
|
26
|
+
directory basename as the repository component; spaces are valid and must not
|
|
27
|
+
be normalized into a potentially colliding slug. For example, a project at
|
|
28
|
+
`/home/user/My Project` uses
|
|
29
|
+
`/home/user/.pantheon-worktrees/My Project/feature-name`. Replace
|
|
30
|
+
`<task>` with a short descriptive task name. This keeps worktrees outside
|
|
31
|
+
the project and reuses the same location across agent sessions.
|
|
32
|
+
|
|
19
33
|
```bash
|
|
20
|
-
# Create a worktree
|
|
21
|
-
git worktree add
|
|
34
|
+
# Create a worktree at the recommended external location
|
|
35
|
+
git worktree add "/home/user/.pantheon-worktrees/My Project/feature-name" task-branch
|
|
36
|
+
|
|
37
|
+
# List worktrees and their absolute paths
|
|
38
|
+
git worktree list --porcelain
|
|
22
39
|
|
|
23
|
-
#
|
|
24
|
-
git worktree
|
|
40
|
+
# Only after the user explicitly authorizes removal, remove that exact worktree
|
|
41
|
+
git worktree remove "/home/user/.pantheon-worktrees/My Project/feature-name"
|
|
25
42
|
|
|
26
|
-
#
|
|
27
|
-
git
|
|
43
|
+
# Only after the user explicitly authorizes branch deletion
|
|
44
|
+
git branch -d task-branch
|
|
28
45
|
```
|
|
29
46
|
|
|
30
47
|
## Workflow
|
|
31
48
|
|
|
32
|
-
1.
|
|
49
|
+
1. Resolve the project directory to an absolute path and create the worktree at `<project-parent>/.pantheon-worktrees/<exact-repository-directory-basename>/<task>`.
|
|
33
50
|
2. Work in the worktree directory
|
|
34
51
|
3. Commit and push from within the worktree
|
|
35
|
-
4.
|
|
36
|
-
5.
|
|
52
|
+
4. Leave the worktree and branch in place when the task is done unless the user explicitly authorizes removal or deletion.
|
|
53
|
+
5. If authorized, remove only the exact worktree path above; delete its branch only with separate explicit user authorization.
|
|
37
54
|
|
|
38
55
|
## Rules
|
|
39
56
|
- Never create worktrees inside the main project directory
|
|
40
|
-
-
|
|
41
|
-
-
|
|
57
|
+
- Use the persistent external default `<project-parent>/.pantheon-worktrees/<exact-repository-directory-basename>/<task>`
|
|
58
|
+
- Use the exact repository directory basename (spaces included); do not normalize it into a lossy slug
|
|
59
|
+
- Name worktrees descriptively, for example `feature-name` or `auth-refactor`
|
|
60
|
+
- Never remove a worktree or delete a branch unless the user explicitly authorizes that action
|
|
42
61
|
- Worktrees share the same git history — pushing from a worktree is the same as pushing from main
|
|
43
62
|
- Escalate to @iris for branch management if unsure
|