pantheon-opencode 1.6.0-beta.7 → 1.6.0-beta.9

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 (66) hide show
  1. package/AGENTS.md +58 -15
  2. package/CHANGELOG.md +61 -94
  3. package/README.md +81 -103
  4. package/README.pt-BR.md +19 -37
  5. package/commands/pantheon-audit.md +7 -1
  6. package/commands/pantheon-consolidate.md +1 -1
  7. package/commands/pantheon-focus.md +17 -0
  8. package/package.json +1 -2
  9. package/plugin.json +2 -2
  10. package/pyproject.toml +1 -1
  11. package/scripts/build-agents-md.mjs +2 -3
  12. package/scripts/doctor.mjs +22 -104
  13. package/scripts/hooks/scan-secrets.sh +97 -0
  14. package/scripts/install/config-migration.mjs +9 -42
  15. package/scripts/install/interactive.mjs +1 -1
  16. package/scripts/install/opencode.mjs +174 -77
  17. package/scripts/install/plugin.mjs +43 -9
  18. package/scripts/install/strings.mjs +0 -8
  19. package/scripts/probe-pantheon-cost.mjs +3 -16
  20. package/scripts/sync-artifacts.mjs +1 -0
  21. package/scripts/sync-tui.mjs +24 -3
  22. package/scripts/test-opencode-v2-sandbox.sh +203 -786
  23. package/scripts/validate-sandbox-install.mjs +138 -0
  24. package/skills-lock.json +4 -5
  25. package/src/agents/aphrodite.md +2 -9
  26. package/src/agents/demeter.md +0 -9
  27. package/src/agents/gaia.md +1 -0
  28. package/src/agents/hephaestus.md +0 -9
  29. package/src/agents/hermes.md +2 -9
  30. package/src/agents/mnemosyne.md +18 -53
  31. package/src/agents/prometheus.md +0 -9
  32. package/src/agents/themis.md +0 -1
  33. package/src/agents/zeus.md +180 -19
  34. package/src/instructions/agent-return-format.instructions.md +48 -3
  35. package/src/instructions/memory-protocol.instructions.md +8 -9
  36. package/src/instructions/zeus-anti-stall.instructions.md +54 -6
  37. package/src/instructions/zeus-council-synthesis.instructions.md +71 -0
  38. package/src/instructions/zeus-memory-operations.instructions.md +4 -4
  39. package/src/instructions/zeus-timeout-retry.instructions.md +81 -7
  40. package/src/pantheon/v2-delegation-enforce.ts +2 -1
  41. package/src/plugin-v2.ts +251 -168
  42. package/src/plugins/pantheon-hooks.ts +35 -82
  43. package/src/plugins/tui/dist/tui-v2.d.ts +9 -0
  44. package/src/plugins/tui/dist/tui-v2.d.ts.map +1 -0
  45. package/src/plugins/tui/dist/tui-v2.js +151 -0
  46. package/src/plugins/tui/dist/tui-v2.js.map +1 -0
  47. package/src/plugins/tui/dist/tui.d.ts.map +1 -1
  48. package/src/plugins/tui/dist/tui.js +29 -53
  49. package/src/plugins/tui/index-v2.ts +6 -0
  50. package/src/plugins/tui/package-lock.json +5411 -1292
  51. package/src/plugins/tui/package.json +10 -7
  52. package/src/plugins/tui/src/index-v2.tsx +108 -0
  53. package/src/plugins/tui/src/index.tsx +28 -63
  54. package/src/plugins/tui/src/opencode-v2.d.ts +13 -0
  55. package/src/plugins/tui/tsdown.config.ts +2 -2
  56. package/src/plugins/tui/tui-v2.ts +2 -0
  57. package/src/plugins/tui/tui.ts +3 -0
  58. package/src/routing.yml +4 -2
  59. package/src/skills/README.md +7 -12
  60. package/src/skills/agent-coordination/SKILL.md +83 -13
  61. package/src/skills/auto-continue/SKILL.md +13 -14
  62. package/src/skills/context-compression/SKILL.md +26 -879
  63. package/src/skills/session-goal/SKILL.md +14 -5
  64. package/src/pantheon/secret-scanner.ts +0 -489
  65. package/src/plugins/tui/README.md +0 -14
  66. package/src/skills/council-synthesis/SKILL.md +0 -29
@@ -14,6 +14,7 @@ import { existsSync, mkdirSync, readdirSync, readFileSync, rmSync, writeFileSync
14
14
  import { homedir } from 'node:os'
15
15
  import { join } from 'node:path'
16
16
  import { fileURLToPath, pathToFileURL } from 'node:url'
17
+ import { resolveOpenCodeVersion } from './install/opencode-version.mjs'
17
18
 
18
19
  const __dirname = fileURLToPath(new URL('.', import.meta.url))
19
20
  const ROOT = join(__dirname, '..')
@@ -63,7 +64,7 @@ function resolveConfigDir() {
63
64
  * The raw TSX source is never copied — the loader consumes only the bundle.
64
65
  * @returns {{ created: number, skipped: number }}
65
66
  */
66
- function copyPluginFiles(srcDir, dstDir) {
67
+ function copyPluginFiles(srcDir, dstDir, version) {
67
68
  const result = { created: 0, skipped: 0 }
68
69
 
69
70
  mkdirSync(dstDir, { recursive: true })
@@ -87,11 +88,30 @@ function copyPluginFiles(srcDir, dstDir) {
87
88
  // package.json
88
89
  const pkgSrc = join(srcDir, 'package.json')
89
90
  if (existsSync(pkgSrc)) {
90
- const content = readFileSync(pkgSrc, 'utf8')
91
+ const packageJson = JSON.parse(readFileSync(pkgSrc, 'utf8'))
92
+ if (version === 'v2' && packageJson.exports?.['./tui-v2']) {
93
+ packageJson.exports['./tui'] = packageJson.exports['./tui-v2']
94
+ }
95
+ const content = `${JSON.stringify(packageJson, null, 2)}\n`
91
96
  if (writeIfChanged(join(dstDir, 'package.json'), content)) result.created++
92
97
  else result.skipped++
93
98
  }
94
99
 
100
+ const tuiEntry = join(srcDir, version === 'v2' ? 'tui-v2.ts' : 'tui.ts')
101
+ if (existsSync(tuiEntry)) {
102
+ if (writeIfChanged(join(dstDir, 'tui.ts'), readFileSync(tuiEntry, 'utf8'))) result.created++
103
+ else result.skipped++
104
+ }
105
+
106
+ const v2ServerEntry = join(srcDir, 'index-v2.ts')
107
+ const v2ServerDestination = join(dstDir, 'index.ts')
108
+ if (version === 'v2' && existsSync(v2ServerEntry)) {
109
+ if (writeIfChanged(v2ServerDestination, readFileSync(v2ServerEntry, 'utf8'))) result.created++
110
+ else result.skipped++
111
+ } else if (existsSync(v2ServerDestination)) {
112
+ rmSync(v2ServerDestination, { force: true })
113
+ }
114
+
95
115
  // Keep the copied plugin installable with deterministic npm ci.
96
116
  const lockSrc = join(srcDir, 'package-lock.json')
97
117
  if (existsSync(lockSrc)) {
@@ -169,7 +189,8 @@ async function main() {
169
189
  const sourceVersion = readVersion(join(tuiSrcDir, 'package.json'))
170
190
 
171
191
  // Copy fresh files
172
- const { created } = copyPluginFiles(tuiSrcDir, tuiCopyDir)
192
+ const version = resolveOpenCodeVersion('auto', { warn: (message) => console.warn(message) })
193
+ const { created } = copyPluginFiles(tuiSrcDir, tuiCopyDir, version)
173
194
 
174
195
  // Lockfile installation is the only accepted dependency path. Strip
175
196
  // global-context npm vars so a global postinstall can't trigger ECIGLOBAL.