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.
Files changed (53) hide show
  1. package/AGENTS.global.md +3 -3
  2. package/AGENTS.md +1 -1
  3. package/CHANGELOG.md +39 -0
  4. package/README.md +85 -31
  5. package/README.pt-BR.md +7 -4
  6. package/bin/pantheon-init.mjs +278 -102
  7. package/package.json +5 -3
  8. package/plugin.json +1 -1
  9. package/pyproject.toml +1 -1
  10. package/scripts/build-agents-md.mjs +77 -13
  11. package/scripts/check-plugin-v2-coverage.mjs +7 -7
  12. package/scripts/doctor.mjs +242 -19
  13. package/scripts/install/backup.mjs +191 -18
  14. package/scripts/install/cli-ui.mjs +73 -0
  15. package/scripts/install/file-inventory.mjs +555 -0
  16. package/scripts/install/interactive.mjs +69 -391
  17. package/scripts/install/migrate.mjs +45 -38
  18. package/scripts/install/model-picker.mjs +63 -22
  19. package/scripts/install/opencode-version.mjs +9 -1
  20. package/scripts/install/opencode.mjs +279 -79
  21. package/scripts/install/plan-artifact.mjs +517 -0
  22. package/scripts/install/plan.mjs +165 -3
  23. package/scripts/install/plugin.mjs +118 -14
  24. package/scripts/install/prompt-result.mjs +2 -0
  25. package/scripts/install/shared.mjs +188 -65
  26. package/scripts/install/state.mjs +63 -8
  27. package/scripts/install/venv.mjs +15 -6
  28. package/scripts/install/verify.mjs +128 -0
  29. package/scripts/install/vision-prompt.mjs +2 -0
  30. package/scripts/install-mcp.mjs +1 -1
  31. package/scripts/manifest-inventory.mjs +49 -3
  32. package/scripts/node-engine-policy.mjs +85 -0
  33. package/scripts/package-evidence.mjs +6 -0
  34. package/scripts/postinstall.mjs +26 -26
  35. package/scripts/reconcile.mjs +325 -0
  36. package/scripts/sync-tui.mjs +5 -1
  37. package/scripts/uninstall.mjs +258 -34
  38. package/scripts/update.mjs +164 -0
  39. package/scripts/validate-node-engine-policy.mjs +13 -0
  40. package/scripts/version-check.mjs +34 -1
  41. package/scripts/versioning.mjs +9 -1
  42. package/skills-lock.json +3 -3
  43. package/src/agents/mnemosyne.md +7 -2
  44. package/src/instructions/memory-protocol.instructions.md +2 -2
  45. package/src/instructions/zeus-memory-operations.instructions.md +4 -3
  46. package/src/pantheon/v2-unsupported.mjs +2 -3
  47. package/src/plugins/tui/dist/tui-v2.js +2 -2
  48. package/src/plugins/tui/dist/tui.js +1 -1
  49. package/src/plugins/tui/package-lock.json +3 -3
  50. package/src/plugins/tui/package.json +2 -2
  51. package/src/skills/artifact-management/SKILL.md +5 -1
  52. package/src/skills/memory-bank/SKILL.md +5 -1
  53. package/src/skills/worktrees/SKILL.md +30 -11
@@ -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
- return { inventory, updates: prepareInventoryVersion(inventory, newVersion) }
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": "91d68c8f2d1b642725adfc6df11e55865a8491aca690dc27d02ea7c778d49d41",
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": "4717cf18b43550c9f02cfab810968b97a5b2584f00a15516ecba643c80cdc110",
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": "0033c5f8a50f210f31f0256ba8cc0fd99c65674a2aabedb05d8e69447b5ec218"
21
+ "src/skills/worktrees/SKILL.md": "9cf2b036e90d9ff7c6deb786ad7bab2cb78d6bf39166a67d5cbeafc29f593c6e"
22
22
  }
@@ -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. **Scrub**: Automatic — `memory_store` MCP server applies regex scrub before persisting. No manual steps.
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
- - Scrubbing: automatic via MCP layer on persistence
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
- - A memory write is optional and conditional on a write tool being exposed and permitted in the active session. Search permission does not imply write permission; in the reported Beta 10 Zeus root, `memory_store` is not exposed/granted.
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 in the active root tool list. The reported Beta
23
- 10 Zeus root has `memory_search` but no `memory_store` grant/tool; search access
24
- does not imply write access. If a write tool is available, use
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
- * `^22.22.2 || ^24.15.0 || >=26.0.0`, every admitted version already defaults to
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.11`);
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.11${preset().name ? ` ⚡ ${preset().name}` : ""}`);
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
  })();
@@ -167,7 +167,7 @@ async function detectVersion(api) {
167
167
  if (ver) return ver;
168
168
  }
169
169
  } catch {}
170
- return "1.6.0-beta.11";
170
+ return "1.6.0-beta.13";
171
171
  }
172
172
  /**
173
173
  * usage-bar — AI subscription usage gauge for the opencode TUI.
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "pantheon-tui",
3
- "version": "1.6.0-beta.11",
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.11",
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": "^22.22.2 || ^24.15.0 || >=26.0.0"
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.11",
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": "^22.22.2 || ^24.15.0 || >=26.0.0"
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/ ← COMMITTED — permanent ADRs
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 | Permanent, versioned | Project context: architecture, patterns, progress |
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 ../project-feature-x feature-x
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
- # List worktrees
24
- git worktree list
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
- # Remove a worktree
27
- git worktree remove ../project-feature-x
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. Create worktree: `git worktree add ../<name> <branch>`
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. Clean up: `git worktree remove ../<name>`
36
- 5. Delete branch if no longer needed
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
- - Name worktrees descriptively: `../project-auth-refactor`
41
- - Remove worktrees when done (they consume disk space)
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