pantheon-opencode 1.3.2 → 1.3.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 (57) hide show
  1. package/README.md +154 -1
  2. package/bin/pantheon-init.mjs +160 -120
  3. package/opencode.json +0 -1
  4. package/package.json +10 -5
  5. package/scripts/cost.mjs +69 -0
  6. package/scripts/doctor.mjs +56 -22
  7. package/scripts/hooks/on-subagent-delegation-stop.sh +22 -5
  8. package/scripts/install/opencode.mjs +132 -32
  9. package/scripts/install/plugin.mjs +112 -28
  10. package/scripts/install-mcp.mjs +1 -1
  11. package/scripts/redaction-gate.mjs +69 -0
  12. package/scripts/release-notes.mjs +317 -0
  13. package/scripts/test-context-compression.sh +5 -2
  14. package/scripts/validate-package.mjs +56 -0
  15. package/scripts/versioning.mjs +117 -18
  16. package/src/agents/zeus.md +80 -0
  17. package/src/pantheon/background-job-board.ts +115 -40
  18. package/src/pantheon/chat-reminders.ts +79 -0
  19. package/src/pantheon/compaction-assert.ts +160 -0
  20. package/src/pantheon/cost-command.ts +208 -0
  21. package/src/pantheon/cost-tracker.ts +108 -0
  22. package/src/pantheon/delegation-compaction.ts +237 -0
  23. package/src/pantheon/delegation-enforce.ts +144 -0
  24. package/src/pantheon/delegation-finalize.ts +277 -0
  25. package/src/pantheon/delegation-notify.ts +100 -0
  26. package/src/pantheon/delegation.ts +690 -0
  27. package/src/pantheon/dispatch-guard.ts +107 -0
  28. package/src/pantheon/file-persistence.ts +10 -6
  29. package/src/pantheon/goal-loop.ts +300 -0
  30. package/src/pantheon/goal-store.ts +97 -0
  31. package/src/pantheon/hashline/core.ts +91 -0
  32. package/src/pantheon/hashline/read-enhancer.ts +66 -0
  33. package/src/pantheon/hashline/tool.ts +260 -0
  34. package/src/pantheon/hashline/xxhash.ts +53 -0
  35. package/src/pantheon/idle-continuation.ts +54 -0
  36. package/src/pantheon/logger.ts +117 -0
  37. package/src/pantheon/plugin-once.ts +76 -0
  38. package/src/pantheon/preemptive-compact.ts +76 -0
  39. package/src/pantheon/presets.d.mts +31 -0
  40. package/src/pantheon/presets.mjs +105 -3
  41. package/src/pantheon/todo-enforcer.ts +421 -0
  42. package/src/pantheon/todo-preserve.ts +295 -0
  43. package/src/plugin.ts +406 -13
  44. package/src/plugins/pantheon-hooks.ts +52 -30
  45. package/src/plugins/tui/dist/server.d.ts +17 -0
  46. package/src/plugins/tui/dist/server.d.ts.map +1 -0
  47. package/src/plugins/tui/dist/server.js +20 -0
  48. package/src/plugins/tui/dist/server.js.map +1 -0
  49. package/src/plugins/tui/dist/tui.d.ts +303 -1
  50. package/src/plugins/tui/dist/tui.d.ts.map +1 -1
  51. package/src/plugins/tui/dist/tui.js +977 -350
  52. package/src/plugins/tui/dist/tui.tsx +1427 -150
  53. package/src/plugins/tui/package.json +4 -3
  54. package/src/plugins/tui/src/index.tsx +1427 -150
  55. package/src/plugins/tui/src/server.ts +15 -0
  56. package/src/plugins/tui/tsdown.config.ts +1 -1
  57. package/src/routing.yml +35 -2
@@ -0,0 +1,15 @@
1
+ /**
2
+ * No-op server stub for the opencode plugin loader.
3
+ *
4
+ * The opencode plugin host requires every plugin (TUI included) to expose a
5
+ * `server()` entry via `exports["./server"]` (or package.json `main`). When
6
+ * that entry is missing the host fails to attach the plugin's server half and
7
+ * the TUI runtime never wires the reactive channel — the initial JSX mounts
8
+ * but effects/refresh/events stay dead (the "mudo panel" symptom).
9
+ *
10
+ * This stub satisfies the loader contract; pantheon-tui is TUI-only and has
11
+ * no background server work of its own.
12
+ */
13
+ export default function server() {
14
+ return {}
15
+ }
@@ -2,7 +2,7 @@ import { defineConfig } from 'tsdown'
2
2
  import solid from 'rolldown-plugin-solid'
3
3
 
4
4
  export default defineConfig({
5
- entry: { tui: 'src/index.tsx' },
5
+ entry: { tui: 'src/index.tsx', server: 'src/server.ts' },
6
6
  format: ['esm'],
7
7
  platform: 'node',
8
8
  outDir: 'dist',
package/src/routing.yml CHANGED
@@ -14,7 +14,8 @@ presets:
14
14
  apiKeyEnv: PANTHEON_OPENCODE_API_KEY
15
15
  agents:
16
16
  athena: { model: opencode/deepseek-v4-pro, reasoning_effort: high, fallback_models: [opencode/mimo-v2.5] }
17
- themis: { model: opencode/deepseek-v4-pro, reasoning_effort: high, fallback_models: [opencode/mimo-v2.5] }
17
+ # themis (PR #46 W4): phase reviews run on v4-flash (cost/empty-signature fix); pro only for the FINAL gate (manual override).
18
+ themis: { model: opencode/deepseek-v4-flash, reasoning_effort: high, fallback_models: [opencode/mimo-v2.5] }
18
19
  zeus: { model: opencode/deepseek-v4-flash, reasoning_effort: medium, fallback_models: [opencode/mimo-v2.5] }
19
20
  hermes: { model: opencode/deepseek-v4-flash, reasoning_effort: medium, fallback_models: [opencode/mimo-v2.5] }
20
21
  aphrodite: { model: opencode/deepseek-v4-flash, reasoning_effort: medium, fallback_models: [opencode/mimo-v2.5] }
@@ -555,4 +556,36 @@ platforms:
555
556
  background_job_board:
556
557
  max_concurrent_per_agent: 3
557
558
  signal_dir: .pantheon/deepwork/board-signals/
558
- persistence_dir: .pantheon/board/jobs/
559
+ persistence_path: .pantheon/board/state.json
560
+ background_delegation:
561
+ timeout_ms: 900000 # 15 min
562
+ poll_ms: 250
563
+ max_compaction_items: 10
564
+ prune_ttl_ms: 86400000 # 24h
565
+ read_only_agents: [apollo, gaia]
566
+ session_max: 3
567
+ retry_count: 1
568
+ todo_enforcer:
569
+ enabled: true
570
+ cooldown_base_ms: 5000 # base backoff between injections
571
+ max_consecutive_failures: 5 # stop injecting after this many failures
572
+ failure_reset_ms: 300000 # quiet period before the counter resets (5 min)
573
+ user_activity_quiet_ms: 30000 # skip injection this long after a user message (30s)
574
+ child_active_ms: 120000 # native (non-board) background child newer than this = still running → skip (2 min).
575
+ # Board children (delegations) are resolved by taskID instead: running → skip;
576
+ # terminal jobs (completed/error/cancelled/reconciled) NEVER suppress (T6 fix).
577
+ # Runtime kill-switch: PANTHEON_TODO_ENFORCER=off (doc mirror only — the
578
+ # env var is the real switch, read at plugin construction).
579
+ hashline:
580
+ enabled: true
581
+ enhance_read: true
582
+ # Wave 2 (PR #46): tag-anchored edits. enhance_read augments `read` output
583
+ # with per-line sha256 tags (12#XJ|content); hashline_edit anchors edits to
584
+ # those refs. Documentation mirror — the plugin resolves behavior in code.
585
+ full_auto:
586
+ enabled: false # opt-in: goal continuations are OFF by default
587
+ max_continuations: 25 # hard cap on goal continuations per session
588
+ # Wave 3 (PR #46): full-auto goal loop. One active goal per session
589
+ # (pending → in_progress → done); while active, idle sessions are
590
+ # continued automatically toward the objective. Documentation mirror —
591
+ # the plugin resolves behavior in code (GOAL_LOOP_DEFAULTS).