pantheon-opencode 1.4.2 → 1.5.0-beta.1

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 (98) hide show
  1. package/.pantheon/code-mode/.gitkeep +0 -0
  2. package/.pantheon/code-mode/.pantheon/deepwork/initial-token-40k/checkpoint-1.json +8 -0
  3. package/.pantheon/code-mode/.pantheon/deepwork/initial-token-40k/checkpoint-10.json +8 -0
  4. package/.pantheon/code-mode/.pantheon/deepwork/initial-token-40k/checkpoint-11.json +8 -0
  5. package/.pantheon/code-mode/.pantheon/deepwork/initial-token-40k/checkpoint-2.json +8 -0
  6. package/.pantheon/code-mode/.pantheon/deepwork/initial-token-40k/checkpoint-3.json +8 -0
  7. package/.pantheon/code-mode/.pantheon/deepwork/initial-token-40k/checkpoint-4.json +8 -0
  8. package/.pantheon/code-mode/.pantheon/deepwork/initial-token-40k/checkpoint-5.json +8 -0
  9. package/.pantheon/code-mode/.pantheon/deepwork/initial-token-40k/checkpoint-6.json +8 -0
  10. package/.pantheon/code-mode/.pantheon/deepwork/initial-token-40k/checkpoint-7.json +8 -0
  11. package/.pantheon/code-mode/.pantheon/deepwork/initial-token-40k/checkpoint-8.json +8 -0
  12. package/.pantheon/code-mode/.pantheon/deepwork/initial-token-40k/checkpoint-9.json +8 -0
  13. package/.pantheon/code-mode/.pantheon/deepwork/initial-token-40k/heartbeat.json +8 -0
  14. package/.pantheon/code-mode/.pantheon/deepwork/initial-token-40k/session.json +11 -0
  15. package/.pantheon/code-mode/README.md +93 -0
  16. package/.pantheon/code-mode/checkpoint-session.py +7 -0
  17. package/.pantheon/code-mode/checkpoint-session.sh +11 -0
  18. package/.pantheon/code-mode/checkpoint_session.py +481 -0
  19. package/.pantheon/code-mode/compress-inline.py +450 -0
  20. package/.pantheon/code-mode/eval-llm-judge.py +255 -0
  21. package/.pantheon/code-mode/eval-monte-carlo.py +368 -0
  22. package/.pantheon/code-mode/eval-run.py +197 -0
  23. package/.pantheon/code-mode/eval-static.py +321 -0
  24. package/.pantheon/code-mode/example-sync.sh +5 -0
  25. package/.pantheon/code-mode/session-end-save.py +186 -0
  26. package/.pantheon/code-mode/session-end-save.sh +18 -0
  27. package/.pantheon/code-mode/test-allowed.sh +5 -0
  28. package/.pantheon/code-mode/test-auto-continue-checkpoint.sh +179 -0
  29. package/.pantheon/code-mode/test-env.sh +7 -0
  30. package/.pantheon/code-mode/test-prlimit.sh +9 -0
  31. package/.pantheon/code-mode/test-timeout.sh +6 -0
  32. package/README.md +158 -1189
  33. package/README.pt-BR.md +222 -0
  34. package/bin/pantheon-init.mjs +30 -11
  35. package/opencode.json +1 -0
  36. package/package.json +14 -3
  37. package/plugin.json +15 -0
  38. package/scripts/_pantheon_paths.py +48 -7
  39. package/scripts/ci-validate-yaml.py +7 -2
  40. package/scripts/code_mode_server.py +33 -2
  41. package/scripts/doctor.mjs +135 -127
  42. package/scripts/generate-preset-docs.mjs +127 -66
  43. package/scripts/generate-prompts.sh +2 -2
  44. package/scripts/install/cli-ui.mjs +8 -1
  45. package/scripts/install/config-migration.mjs +401 -0
  46. package/scripts/install/health-check.mjs +3 -3
  47. package/scripts/install/model-picker.mjs +72 -23
  48. package/scripts/install/opencode-version.mjs +47 -0
  49. package/scripts/install/opencode.mjs +261 -88
  50. package/scripts/install/plugin.mjs +112 -42
  51. package/scripts/install/shared.mjs +13 -158
  52. package/scripts/install-mcp.mjs +44 -232
  53. package/scripts/mcp_persistence_server.py +344 -15
  54. package/scripts/mcp_resources_server.py +144 -40
  55. package/scripts/memory_mcp_server.py +2 -2
  56. package/scripts/recover-zenodo-deposition.mjs +146 -0
  57. package/scripts/sync-tui.mjs +32 -7
  58. package/scripts/test-opencode-v1-v2-sandbox.sh +591 -0
  59. package/scripts/uninstall.mjs +298 -954
  60. package/scripts/validate-zenodo-release.mjs +154 -0
  61. package/scripts/zenodo-artifact.mjs +21 -0
  62. package/scripts/zenodo-release-state.mjs +53 -0
  63. package/src/mcp/_pantheon_paths.py +48 -7
  64. package/src/mcp/code_mode_server.py +33 -2
  65. package/src/mcp/eval_store.py +1 -1
  66. package/src/mcp/mcp_persistence_server.py +344 -15
  67. package/src/mcp/mcp_resources_server.py +144 -40
  68. package/src/mcp/pantheon_vision_server.py +1 -1
  69. package/src/mcp/toon_codec.py +491 -0
  70. package/src/pantheon/background-job-board.ts +67 -1
  71. package/src/pantheon/cost-command.ts +6 -2
  72. package/src/pantheon/delegate-manager.ts +384 -0
  73. package/src/pantheon/delegate-task-adapter.ts +444 -0
  74. package/src/pantheon/delegation-notify.ts +35 -20
  75. package/src/pantheon/model-command.ts +86 -32
  76. package/src/pantheon/token-opt.ts +555 -0
  77. package/src/pantheon/toon-codec.ts +481 -0
  78. package/src/pantheon/tui-version-check.ts +1 -3
  79. package/src/pantheon/v2-bridge.ts +129 -0
  80. package/src/pantheon/v2-events.ts +131 -0
  81. package/src/pantheon/v2-hooks.ts +287 -0
  82. package/src/pantheon/v2-tool-definitions.ts +331 -0
  83. package/src/plugin-v2/index.ts +21 -0
  84. package/src/plugin-v2.ts +836 -0
  85. package/src/plugin.ts +57 -10
  86. package/src/plugins/tui/dist/server.d.ts +1 -1
  87. package/src/plugins/tui/dist/server.d.ts.map +1 -1
  88. package/src/plugins/tui/dist/server.js +1 -1
  89. package/src/plugins/tui/dist/server.js.map +1 -1
  90. package/src/plugins/tui/dist/tui.d.ts +10 -7
  91. package/src/plugins/tui/dist/tui.d.ts.map +1 -1
  92. package/src/plugins/tui/dist/tui.js +11 -8
  93. package/src/plugins/tui/dist/tui.js.map +1 -1
  94. package/src/plugins/tui/dist/tui.tsx +22 -16
  95. package/src/plugins/tui/package-lock.json +51 -51
  96. package/src/plugins/tui/package.json +7 -7
  97. package/src/plugins/tui/src/index.tsx +22 -16
  98. package/src/skills/README.md +0 -2
package/src/plugin.ts CHANGED
@@ -12,6 +12,11 @@ import {
12
12
  DEFAULT_LIMITS as SANDBOX_DEFAULT_LIMITS,
13
13
  } from './pantheon/context-sandbox.ts'
14
14
  import { createCostCommand } from './pantheon/cost-command.ts'
15
+ import {
16
+ buildPluginNativeDelegation,
17
+ resolveDelegateMode,
18
+ withDelegationKillSwitch,
19
+ } from './pantheon/delegate-task-adapter.ts'
15
20
  import {
16
21
  collectRootSessionIDs,
17
22
  createDelegationTools,
@@ -118,6 +123,14 @@ setInterval(
118
123
 
119
124
  // ─── Phase 4: Read-Only Enforcement + Compaction Context ───────────────
120
125
 
126
+ // WS1 (PR #94): root-session predicate shared by the Phase 4 enforcement
127
+ // guard and the native delegate toolset — both must agree on what a root is.
128
+ // (Hoisted function: `rootSessions`/`sessionHierarchy` below are resolved at
129
+ // call time, after module init.)
130
+ function isRootSession(sessionID: string): boolean {
131
+ return rootSessions.has(sessionID) || sessionHierarchy.isRoot(sessionID)
132
+ }
133
+
121
134
  // The read-only registry is populated by createDelegationTools (delegation.ts)
122
135
  // when a delegate is read-only (explicit flag or agent ∈ readOnlyAgents).
123
136
  // The guard denies edit/write/bash/task inside those sessions by throwing
@@ -126,7 +139,7 @@ const enforcementGuard = createEnforcementGuard({
126
139
  getReadOnlySessions: () => readOnlyRegistry.sessionIDs(),
127
140
  options: {
128
141
  getSessionAgent: (sessionID) => sessionAgents.get(sessionID),
129
- isRootSession: (sessionID) => rootSessions.has(sessionID) || sessionHierarchy.isRoot(sessionID),
142
+ isRootSession,
130
143
  isChildSession: (sessionID) => sessionHierarchy.isChild(sessionID),
131
144
  logger: log,
132
145
  },
@@ -359,9 +372,25 @@ const plugin: Plugin = async (input: PluginInput) => {
359
372
  const delegationBudgets = resolveDelegationBudgets()
360
373
  const wallClockTimeoutMs = resolveDelegationTimeoutMs()
361
374
 
362
- const delegation = createDelegationTools({
375
+ // WS1 (PR #94): delegation backend gate. Default = legacy (the V1
376
+ // fire-and-forget toolset, intact); PANTHEON_DELEGATE_MODE=native selects
377
+ // the thin manager over native task() semantics. Kill-switch
378
+ // PANTHEON_DELEGATION=off covers BOTH modes (native guards internally;
379
+ // legacy via withDelegationKillSwitch). finalizeDelegation always stays on
380
+ // the legacy observer: it works on the shared board in both modes and must
381
+ // never be kill-switched, so children never orphan. The idle hook below is
382
+ // untouched.
383
+ const delegationClient = adaptDelegationClient(input.client)
384
+ // Only an explicitly active routing profile may provide child models.
385
+ // An empty map deliberately lets OpenCode inherit the parent model.
386
+ const routingAgentModels = loadRoutingAgentModels({
387
+ candidates: activePresetCandidates(),
388
+ logger: log,
389
+ })
390
+ const readOnlyAgents = new Set(['apollo', 'gaia'])
391
+ const legacyDelegation = createDelegationTools({
363
392
  board,
364
- client: adaptDelegationClient(input.client),
393
+ client: delegationClient,
365
394
  options: {
366
395
  rootSessions,
367
396
  isChildSession: (sessionID) => sessionHierarchy.isChild(sessionID),
@@ -369,19 +398,37 @@ const plugin: Plugin = async (input: PluginInput) => {
369
398
  sessionHierarchy.register({ id: sessionID, parentID })
370
399
  },
371
400
  enforceRuntimeMatrix: true,
372
- readOnlyAgents: new Set(['apollo', 'gaia']),
373
- // Only an explicitly active routing profile may provide child models.
374
- // An empty map deliberately lets OpenCode inherit the parent model.
375
- agentModels: loadRoutingAgentModels({
376
- candidates: activePresetCandidates(),
377
- logger: log,
378
- }),
401
+ readOnlyAgents,
402
+ agentModels: routingAgentModels,
379
403
  delegationBudgets,
380
404
  stepCapTracker,
381
405
  ...(routingPermissionTask != null ? { permissionTask: routingPermissionTask } : {}),
382
406
  ...(wallClockTimeoutMs !== undefined ? { wallClockTimeoutMs } : {}),
383
407
  },
384
408
  })
409
+ const delegateMode = resolveDelegateMode()
410
+ if (delegateMode === 'native') {
411
+ log.info('[Pantheon Plugin] Delegation mode: native (PANTHEON_DELEGATE_MODE=native)')
412
+ }
413
+ const delegation =
414
+ delegateMode === 'native'
415
+ ? buildPluginNativeDelegation({
416
+ board,
417
+ client: delegationClient,
418
+ isRootSession,
419
+ registerChildSession: (sessionID, parentID) => {
420
+ sessionHierarchy.register({ id: sessionID, parentID })
421
+ },
422
+ registerReadOnlySession: (sessionID, info) => {
423
+ readOnlyRegistry.register(sessionID, info)
424
+ },
425
+ readOnlyAgents,
426
+ agentModels: routingAgentModels,
427
+ stepCap: stepCapTracker,
428
+ ...(wallClockTimeoutMs !== undefined ? { wallClockTimeoutMs } : {}),
429
+ finalizeDelegation: legacyDelegation.finalizeDelegation,
430
+ })
431
+ : withDelegationKillSwitch(legacyDelegation)
385
432
 
386
433
  // Proactive idle-child scan (Fix 2): finalize children that are idle on the
387
434
  // board but have no MD report on disk — eliminates the phantom "running"
@@ -14,4 +14,4 @@
14
14
  declare function server(): {};
15
15
  //#endregion
16
16
  export { server as default };
17
- //# sourceMappingURL=server.d.ts.map
17
+ //# sourceMappingURL=server.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","names":[],"sources":["../src/server.ts"],"mappings":";;;;;;;;;;;;;iBAYwB"}
1
+ {"version":3,"file":"server.d.ts","names":[],"sources":["../src/server.ts"],"mappings":";;;;;;;;;;;;;iBAYwB"}
@@ -17,4 +17,4 @@ function server() {
17
17
  //#endregion
18
18
  export { server as default };
19
19
 
20
- //# sourceMappingURL=server.js.map
20
+ //# sourceMappingURL=server.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","names":[],"sources":["../src/server.ts"],"sourcesContent":["/**\n * No-op server stub for the opencode plugin loader.\n *\n * The opencode plugin host requires every plugin (TUI included) to expose a\n * `server()` entry via `exports[\"./server\"]` (or package.json `main`). When\n * that entry is missing the host fails to attach the plugin's server half and\n * the TUI runtime never wires the reactive channel — the initial JSX mounts\n * but effects/refresh/events stay dead (the \"mudo panel\" symptom).\n *\n * This stub satisfies the loader contract; pantheon-tui is TUI-only and has\n * no background server work of its own.\n */\nexport default function server() {\n return {}\n}\n"],"mappings":";;;;;;;;;;;;;AAYA,SAAwB,SAAS;CAC/B,OAAO,CAAC;AACV"}
1
+ {"version":3,"file":"server.js","names":[],"sources":["../src/server.ts"],"sourcesContent":["/**\n * No-op server stub for the opencode plugin loader.\n *\n * The opencode plugin host requires every plugin (TUI included) to expose a\n * `server()` entry via `exports[\"./server\"]` (or package.json `main`). When\n * that entry is missing the host fails to attach the plugin's server half and\n * the TUI runtime never wires the reactive channel — the initial JSX mounts\n * but effects/refresh/events stay dead (the \"mudo panel\" symptom).\n *\n * This stub satisfies the loader contract; pantheon-tui is TUI-only and has\n * no background server work of its own.\n */\nexport default function server() {\n return {}\n}\n"],"mappings":";;;;;;;;;;;;;AAYA,SAAwB,SAAS;CAC/B,OAAO,CAAC;AACV"}
@@ -22,7 +22,7 @@ type DelegationEntry = {
22
22
  read?: boolean;
23
23
  /** Internal provenance used to keep a finalized md report authoritative.
24
24
  * 'children-only' = a native task() child session with NO board report
25
- * (rendered with the distinct `[task]` tag); 'md' = board report wins. */
25
+ * (rendered with the distinct `[native]` tag); 'md' = board report wins. */
26
26
  source?: 'child' | 'live' | 'md' | 'children-only';
27
27
  };
28
28
  /** Parse one delegation report md header into a structured entry.
@@ -59,7 +59,7 @@ declare function readAllDelegationEntries(root: string): Promise<DelegationEntry
59
59
  declare function resolveDelegationsDir(state: {
60
60
  directory?: string;
61
61
  worktree?: string;
62
- } | undefined, cwd?: string): string;
62
+ } | undefined, cwd?: any): string;
63
63
  /** Project root derived from the delegations dir: `<root>/.pantheon/delegations`
64
64
  * → `<root>`. Used to point the panel logger at the REAL hooks.log — passing
65
65
  * the delegations dir (or its dirname) directly made createTuiLogger append
@@ -279,10 +279,12 @@ type ChildDelegationLike = {
279
279
  * (fail-open: a freshly-seen child is assumed active; the 1s poll + md
280
280
  * correct it as soon as terminal data exists). */
281
281
  declare function childStatusToState(status: string | undefined): 'running' | 'completed';
282
- /** Row tag for a delegation entry: `[task]` for native task() children
283
- * (source 'children-only' — no board report), `[<alias>]` for board rows
284
- * ([apo-1]). The panel renders the tag with a distinct style so native
285
- * task() children are visually separable from pantheon_delegate jobs. */
282
+ /** Row tag for a delegation entry: `[native]` for native task() children
283
+ * (source 'children-only' — no board report), `[pantheon:<alias>]` for board
284
+ * rows ([pantheon:apo-1]) — the same tags the manager prints in
285
+ * pantheon_delegation_list, so panel rows and CLI list lines match. The
286
+ * panel renders the tag with a distinct style so native task() children are
287
+ * visually separable from pantheon_delegate jobs. */
286
288
  declare function delegationTag(entry: DelegationEntry): string;
287
289
  /** Turn child sessions (PRIMARY) enriched with md reports into the display
288
290
  * list. One entry per child id (duplicates across re-fetches collapse).
@@ -293,7 +295,7 @@ declare function delegationTag(entry: DelegationEntry): string;
293
295
  * time.created. A report-less child is a NATIVE task() child (every
294
296
  * child of the current session — pantheon_delegate OR the native `task()`
295
297
  * tool — carries parentID = caller), so it gets source 'children-only'
296
- * and the `[task]` tag instead of a board alias.
298
+ * and the `[native]` tag instead of a board alias.
297
299
  * Terminal md state wins over the derived state; a running md defers to
298
300
  * the child's live status. Sorted running-first (compareDelegationEntries).
299
301
  * Pure — no I/O. */
@@ -319,6 +321,7 @@ type LiveDelegationStore = {
319
321
  };
320
322
  declare const plugin: TuiPluginModule & {
321
323
  id: string;
324
+ setup: () => Promise<void>;
322
325
  };
323
326
  //#endregion
324
327
  export { ChildDelegationLike, DelegationActivity, DelegationEntry, DelegationToolPart, IDLE_SILENCE_MS, LiveDelegationEntry, LiveDelegationStore, ParsedDelegationToolPart, STALE_RUNNING_THRESHOLD_MS, TuiSessionSources, buildChildrenPath, childStatusToState, childrenToDelegationEntries, collectDelegationToolParts, compareDelegationEntries, plugin as default, delegationActivity, delegationActivityLabel, delegationElapsed, delegationSpinnerFrame, delegationTag, fmtElapsed, isValidSessionId, markStaleIfRunning, mergeChildDelegationSources, mergeDelegationSources, navigateToDelegationSession, panelLogDir, parseDelegationMarkdown, parseDelegationToolPart, readAllDelegationEntries, readDelegationEntries, reduceDelegationToolPart, removeDelegationEntry, resolveCurrentSessionID, resolveDelegationsDir, safeSessionPath, seedLiveDelegationMap, toDelegationEntry, tuiLogPath, visibleDelegationList };
@@ -1 +1 @@
1
- {"version":3,"file":"tui.d.ts","names":[],"sources":["../src/index.tsx"],"mappings":";;KAo7BY;;EAEV;;EAEA;;;;EAIA;;EAEA;EACA;;EASA;;EAEA;EACA;EACA;;EAEA;;;;EAIA;;;;;;;;;;;iBAsBc,wBACd,aACA,oBACA,qBACC;;;;;;iBAkHmB,sBAAsB,cAAc,QAAQ;;;;;;;;iBAwC5C,yBAAyB,eAAe,QAAQ;;;;;;;;iBAWtD,sBACd;EAAS;EAAoB;eAC7B;;;;;;iBAYc,YAAY;;;iBAMZ,WAAW;;;;iBAOX,yBAAyB,GAAG,iBAAiB,GAAG;;;;;iBAWhD,sBACd,cAAc,mBACd,sBACA,cACA,4BACC;;cASU;;;;cAKA;;;;;;;;;iBAUG,mBACd,OAAO,iBACP,aACA,uBACC;;;iBAWa,WAAW;;;iBAcX,kBAAkB,OAAO,iBAAiB;;;KAQ9C;iBAQI,mBAAmB,OAAO,kBAAkB;iBAc5C,wBAAwB,OAAO;;iBAoB/B,uBAAuB;;;;;;;iBAWvB,4BACd,mBAAmB,mBACnB,eAAe,wBACd;;KAmFS;EACV;EACA;EACA;EACA;EACA;EACA;IACE;IACA,QAAQ;IACR;IACA;IACA;MAAS;MAAgB;;;;;KAKjB;;EAEV;;EAEA;;EAEA;EACA;;EAEA;EACA;;EAEA;;EAEA;EACA;EACA;EACA;;EAEA;;;KAIU;EACV;EACA;EACA;EACA;;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;;;;;iBAac,wBACd,MAAM,oBACN,eACC;;;iBA+Ea,yBACd,KAAK,YAAY,sBACjB,MAAM,oBACN;;;iBA+Fc,sBACd,KAAK,YAAY,sBACjB;;;;;;iBAiBc,2BACd;EAAqB;EAAa;iBAClC,YAAY,uDACX;;;;;iBA2Ba,sBACd,KAAK,YAAY,sBACjB,gBAAgB,sBAChB;;;iBAWc,kBAAkB,MAAM,sBAAsB;;;;;;iBAqB9C,uBACd,eAAe,uBACf,aAAa,oBACZ;;;;;;;;;iBA8Da,iBAAiB,cAAc;;;;KAOnC;;EAEV;EACA;;IAEE;MAAU;;;IAEV;MAAU;QAAY;QAAe,SAAS;;;;;;;;;;iBASlC,wBAAwB,SAAS;;;;;;;;iBAmBjC,gBAAgB;EAAgB;IAAQ;;;;;;;iBASxC,kBAAkB;EAAkC;IAAQ;;;;KAKhE;;EAEV;;EAEA;;;EAGA;;;EAGA;EACA;IACE;IACA;;;;;;;iBAQY,mBAAmB;;;;;iBASnB,cAAc,OAAO;;;;;;;;;;;;;;iBAiBrB,4BACd,mBAAmB,mCACnB,aAAa,mBACb,eACC;;;;;;iBA0Ca,4BACd;EAAS,YAAY,cAAc,SAAS;eAC5C;;;;;KAiLU;EACV,KAAK,YAAY;;EAEjB;;EAEA;;cAucI,QAAQ;EAAoB"}
1
+ {"version":3,"file":"tui.d.ts","names":[],"sources":["../src/index.tsx"],"mappings":";;KAo7BY;;EAEV;;EAEA;;;;EAIA;;EAEA;EACA;;EASA;;EAEA;EACA;EACA;;EAEA;;;;EAIA;;;;;;;;;;;iBAsBc,wBACd,aACA,oBACA,qBACC;;;;;;iBAkHmB,sBAAsB,cAAc,QAAQ;;;;;;;;iBAwC5C,yBAAyB,eAAe,QAAQ;;;;;;;;iBAWtD,sBACd;EAAS;EAAoB;eAC7B;;;;;;iBAYc,YAAY;;;iBAMZ,WAAW;;;;iBAOX,yBAAyB,GAAG,iBAAiB,GAAG;;;;;iBAWhD,sBACd,cAAc,mBACd,sBACA,cACA,4BACC;;cASU;;;;cAKA;;;;;;;;;iBAUG,mBACd,OAAO,iBACP,aACA,uBACC;;;iBAWa,WAAW;;;iBAcX,kBAAkB,OAAO,iBAAiB;;;KAQ9C;iBAQI,mBAAmB,OAAO,kBAAkB;iBAc5C,wBAAwB,OAAO;;iBAoB/B,uBAAuB;;;;;;;iBAWvB,4BACd,mBAAmB,mBACnB,eAAe,wBACd;;KAmFS;EACV;EACA;EACA;EACA;EACA;EACA;IACE;IACA,QAAQ;IACR;IACA;IACA;MAAS;MAAgB;;;;;KAKjB;;EAEV;;EAEA;;EAEA;EACA;;EAEA;EACA;;EAEA;;EAEA;EACA;EACA;EACA;;EAEA;;;KAIU;EACV;EACA;EACA;EACA;;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;;;;;iBAac,wBACd,MAAM,oBACN,eACC;;;iBA+Ea,yBACd,KAAK,YAAY,sBACjB,MAAM,oBACN;;;iBA+Fc,sBACd,KAAK,YAAY,sBACjB;;;;;;iBAiBc,2BACd;EAAqB;EAAa;iBAClC,YAAY,uDACX;;;;;iBA2Ba,sBACd,KAAK,YAAY,sBACjB,gBAAgB,sBAChB;;;iBAWc,kBAAkB,MAAM,sBAAsB;;;;;;iBAqB9C,uBACd,eAAe,uBACf,aAAa,oBACZ;;;;;;;;;iBA8Da,iBAAiB,cAAc;;;;KAOnC;;EAEV;EACA;;IAEE;MAAU;;;IAEV;MAAU;QAAY;QAAe,SAAS;;;;;;;;;;iBASlC,wBAAwB,SAAS;;;;;;;;iBAmBjC,gBAAgB;EAAgB;IAAQ;;;;;;;iBASxC,kBAAkB;EAAkC;IAAQ;;;;KAKhE;;EAEV;;EAEA;;;EAGA;;;EAGA;EACA;IACE;IACA;;;;;;;iBAQY,mBAAmB;;;;;;;iBAWnB,cAAc,OAAO;;;;;;;;;;;;;;iBAiBrB,4BACd,mBAAmB,mCACnB,aAAa,mBACb,eACC;;;;;;iBA0Ca,4BACd;EAAS,YAAY,cAAc,SAAS;eAC5C;;;;;KAiLU;EACV,KAAK,YAAY;;EAEjB;;EAEA;;cAucI,QAAQ;EAAoB;EAAY,aAAa"}
@@ -164,7 +164,7 @@ async function detectVersion(api) {
164
164
  if (ver) return ver;
165
165
  }
166
166
  } catch {}
167
- return "1.4.2";
167
+ return "1.5.0";
168
168
  }
169
169
  /**
170
170
  * usage-bar — AI subscription usage gauge for the opencode TUI.
@@ -1311,12 +1311,14 @@ function childStatusToState(status) {
1311
1311
  if (status === "idle") return "completed";
1312
1312
  return "running";
1313
1313
  }
1314
- /** Row tag for a delegation entry: `[task]` for native task() children
1315
- * (source 'children-only' — no board report), `[<alias>]` for board rows
1316
- * ([apo-1]). The panel renders the tag with a distinct style so native
1317
- * task() children are visually separable from pantheon_delegate jobs. */
1314
+ /** Row tag for a delegation entry: `[native]` for native task() children
1315
+ * (source 'children-only' — no board report), `[pantheon:<alias>]` for board
1316
+ * rows ([pantheon:apo-1]) — the same tags the manager prints in
1317
+ * pantheon_delegation_list, so panel rows and CLI list lines match. The
1318
+ * panel renders the tag with a distinct style so native task() children are
1319
+ * visually separable from pantheon_delegate jobs. */
1318
1320
  function delegationTag(entry) {
1319
- return entry.source === "children-only" ? "[task]" : `[${entry.alias}]`;
1321
+ return entry.source === "children-only" ? "[native]" : `[pantheon:${entry.alias}]`;
1320
1322
  }
1321
1323
  /** Turn child sessions (PRIMARY) enriched with md reports into the display
1322
1324
  * list. One entry per child id (duplicates across re-fetches collapse).
@@ -1327,7 +1329,7 @@ function delegationTag(entry) {
1327
1329
  * time.created. A report-less child is a NATIVE task() child (every
1328
1330
  * child of the current session — pantheon_delegate OR the native `task()`
1329
1331
  * tool — carries parentID = caller), so it gets source 'children-only'
1330
- * and the `[task]` tag instead of a board alias.
1332
+ * and the `[native]` tag instead of a board alias.
1331
1333
  * Terminal md state wins over the derived state; a running md defers to
1332
1334
  * the child's live status. Sorted running-first (compareDelegationEntries).
1333
1335
  * Pure — no I/O. */
@@ -1871,7 +1873,8 @@ const tui = (api, _options, _meta) => {
1871
1873
  };
1872
1874
  const plugin = {
1873
1875
  id: "pantheon.tui",
1874
- tui
1876
+ tui,
1877
+ setup: async () => {}
1875
1878
  };
1876
1879
  //#endregion
1877
1880
  export { IDLE_SILENCE_MS, STALE_RUNNING_THRESHOLD_MS, buildChildrenPath, childStatusToState, childrenToDelegationEntries, collectDelegationToolParts, compareDelegationEntries, plugin as default, delegationActivity, delegationActivityLabel, delegationElapsed, delegationSpinnerFrame, delegationTag, fmtElapsed, isValidSessionId, markStaleIfRunning, mergeChildDelegationSources, mergeDelegationSources, navigateToDelegationSession, panelLogDir, parseDelegationMarkdown, parseDelegationToolPart, readAllDelegationEntries, readDelegationEntries, reduceDelegationToolPart, removeDelegationEntry, resolveCurrentSessionID, resolveDelegationsDir, safeSessionPath, seedLiveDelegationMap, toDelegationEntry, tuiLogPath, visibleDelegationList };
@@ -1 +1 @@
1
- {"version":3,"file":"tui.js","names":[],"sources":[],"mappings":""}
1
+ {"version":3,"file":"tui.js","names":[],"sources":[],"mappings":""}
@@ -892,18 +892,18 @@ async function setupUsageBar(api: TuiPluginApi) {
892
892
  * (`client.session.children` + `session.parentID === current`).
893
893
  * Live status comes from `api.state.session.status(childID)`
894
894
  * (busy/retry → running; idle → terminal). This does NOT depend on
895
- * tool-part events, which runtime 1.18.13 may not deliver for
896
- * pantheon_delegate (the "(0) even while delegating" symptom).
895
+ * tool-part events, which runtime 1.18.13 may not deliver for
896
+ * pantheon_delegate (the "(0) even while delegating" symptom).
897
897
  *
898
898
  * 1b. NATIVE task() CHILDREN — `session.children` returns ALL children,
899
899
  * and the native `task()` tool ALSO spawns a child session with
900
900
  * parentID = caller. A child WITHOUT a board report is a native
901
901
  * task() child: childrenToDelegationEntries tags it source
902
- * 'children-only' with the `[task]` row tag (distinct info color),
902
+ * 'children-only' with the `[native]` row tag (distinct info color),
903
903
  * so native task() work is visible in the panel alongside board
904
- * delegates ([apo-1]) — never filtered out, never duplicated with a
905
- * board row for the same child (a child WITH a report keeps the md
906
- * entry, source 'md').
904
+ * delegates ([pantheon:apo-1]) — never filtered out, never duplicated
905
+ * with a board row for the same child (a child WITH a report keeps the
906
+ * md entry, source 'md').
907
907
  *
908
908
  * 2. ENRICHMENT + HISTORY — markdown reports the job board persists under
909
909
  * `.pantheon/delegations/<sessionID>/<alias>.md` (written by
@@ -975,7 +975,7 @@ export type DelegationEntry = {
975
975
  read?: boolean
976
976
  /** Internal provenance used to keep a finalized md report authoritative.
977
977
  * 'children-only' = a native task() child session with NO board report
978
- * (rendered with the distinct `[task]` tag); 'md' = board report wins. */
978
+ * (rendered with the distinct `[native]` tag); 'md' = board report wins. */
979
979
  source?: 'child' | 'live' | 'md' | 'children-only'
980
980
  }
981
981
 
@@ -1885,12 +1885,14 @@ export function childStatusToState(status: string | undefined): 'running' | 'com
1885
1885
  return 'running' // busy, retry, or unknown
1886
1886
  }
1887
1887
 
1888
- /** Row tag for a delegation entry: `[task]` for native task() children
1889
- * (source 'children-only' — no board report), `[<alias>]` for board rows
1890
- * ([apo-1]). The panel renders the tag with a distinct style so native
1891
- * task() children are visually separable from pantheon_delegate jobs. */
1888
+ /** Row tag for a delegation entry: `[native]` for native task() children
1889
+ * (source 'children-only' — no board report), `[pantheon:<alias>]` for board
1890
+ * rows ([pantheon:apo-1]) — the same tags the manager prints in
1891
+ * pantheon_delegation_list, so panel rows and CLI list lines match. The
1892
+ * panel renders the tag with a distinct style so native task() children are
1893
+ * visually separable from pantheon_delegate jobs. */
1892
1894
  export function delegationTag(entry: DelegationEntry): string {
1893
- return entry.source === 'children-only' ? '[task]' : `[${entry.alias}]`
1895
+ return entry.source === 'children-only' ? '[native]' : `[pantheon:${entry.alias}]`
1894
1896
  }
1895
1897
 
1896
1898
  /** Turn child sessions (PRIMARY) enriched with md reports into the display
@@ -1902,7 +1904,7 @@ export function delegationTag(entry: DelegationEntry): string {
1902
1904
  * time.created. A report-less child is a NATIVE task() child (every
1903
1905
  * child of the current session — pantheon_delegate OR the native `task()`
1904
1906
  * tool — carries parentID = caller), so it gets source 'children-only'
1905
- * and the `[task]` tag instead of a board alias.
1907
+ * and the `[native]` tag instead of a board alias.
1906
1908
  * Terminal md state wins over the derived state; a running md defers to
1907
1909
  * the child's live status. Sorted running-first (compareDelegationEntries).
1908
1910
  * Pure — no I/O. */
@@ -2092,8 +2094,8 @@ function DelegationRow(props: {
2092
2094
  }
2093
2095
  })
2094
2096
 
2095
- // The row tag: `[task]` for native task() children (no board report),
2096
- // `[apo-1]`-style alias for pantheon_delegate board rows. Rendered with
2097
+ // The row tag: `[native]` for native task() children (no board report),
2098
+ // `[pantheon:apo-1]`-style alias for pantheon_delegate board rows. Rendered with
2097
2099
  // the info color so task() children are visually distinct from delegates.
2098
2100
  const tagColor = createMemo(() => (props.job.source === 'children-only' ? theme().info : color()))
2099
2101
 
@@ -2591,9 +2593,13 @@ const tui: TuiPlugin = (api, _options, _meta) => {
2591
2593
  })
2592
2594
  }
2593
2595
 
2594
- const plugin: TuiPluginModule & { id: string } = {
2596
+ const plugin: TuiPluginModule & { id: string; setup: () => Promise<void> } = {
2595
2597
  id: 'pantheon.tui',
2596
2598
  tui,
2599
+ // Beta loader contract: every `plugins` directory entry must expose a
2600
+ // no-op `setup` so the entry loads as `pantheon.tui` with zero errors
2601
+ // (sandbox probe evidence). The TUI itself boots via `tui()`.
2602
+ setup: async () => {},
2597
2603
  }
2598
2604
 
2599
2605
  export default plugin
@@ -1,18 +1,18 @@
1
1
  {
2
2
  "name": "pantheon-tui",
3
- "version": "1.4.1",
3
+ "version": "1.5.0",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "pantheon-tui",
9
- "version": "1.4.1",
9
+ "version": "1.5.0",
10
10
  "license": "MIT",
11
11
  "dependencies": {
12
12
  "@opencode-ai/plugin": ">=1.14.0",
13
- "@opentui/core": ">=0.4.5",
14
- "@opentui/solid": ">=0.4.5",
15
- "solid-js": ">=1.9.0"
13
+ "@opentui/core": ">=0.5.10",
14
+ "@opentui/solid": ">=0.5.10",
15
+ "solid-js": ">=1.9.12"
16
16
  },
17
17
  "devDependencies": {
18
18
  "rolldown-plugin-solid": "^0.2.1",
@@ -21,9 +21,9 @@
21
21
  "peerDependencies": {
22
22
  "@opencode-ai/plugin": ">=1.14.0",
23
23
  "@opencode-ai/sdk": ">=1.14.0",
24
- "@opentui/core": ">=0.4.5",
25
- "@opentui/solid": ">=0.4.5",
26
- "solid-js": ">=1.9.0"
24
+ "@opentui/core": ">=0.5.10",
25
+ "@opentui/solid": ">=0.5.10",
26
+ "solid-js": ">=1.9.12"
27
27
  }
28
28
  },
29
29
  "node_modules/@ai-sdk/provider": {
@@ -660,35 +660,35 @@
660
660
  }
661
661
  },
662
662
  "node_modules/@opentui/core": {
663
- "version": "0.4.5",
664
- "resolved": "https://registry.npmjs.org/@opentui/core/-/core-0.4.5.tgz",
665
- "integrity": "sha512-JsgRTPkA6e+Vxmumxai6SElOSlRQkbzNKHlCfemlArRiLhfC1IZ9RXJo2QH4xSu+uBOWAM90uss73/pPlkdEig==",
663
+ "version": "0.5.10",
664
+ "resolved": "https://registry.npmjs.org/@opentui/core/-/core-0.5.10.tgz",
665
+ "integrity": "sha512-C3a2UbmefeAjIxAgm4BqjuSxKT4oqutfvYFwVvUgMxmGRHkNbBc/s7sukV0JgwcxFcV3uMFrXxo+E+BQtvuOiw==",
666
666
  "license": "MIT",
667
667
  "dependencies": {
668
- "bun-ffi-structs": "0.2.4",
668
+ "bun-ffi-structs": "0.3.1",
669
669
  "diff": "9.0.0",
670
670
  "marked": "17.0.1",
671
671
  "string-width": "7.2.0",
672
672
  "strip-ansi": "7.1.2"
673
673
  },
674
674
  "optionalDependencies": {
675
- "@opentui/core-darwin-arm64": "0.4.5",
676
- "@opentui/core-darwin-x64": "0.4.5",
677
- "@opentui/core-linux-arm64": "0.4.5",
678
- "@opentui/core-linux-arm64-musl": "0.4.5",
679
- "@opentui/core-linux-x64": "0.4.5",
680
- "@opentui/core-linux-x64-musl": "0.4.5",
681
- "@opentui/core-win32-arm64": "0.4.5",
682
- "@opentui/core-win32-x64": "0.4.5"
675
+ "@opentui/core-darwin-arm64": "0.5.10",
676
+ "@opentui/core-darwin-x64": "0.5.10",
677
+ "@opentui/core-linux-arm64": "0.5.10",
678
+ "@opentui/core-linux-arm64-musl": "0.5.10",
679
+ "@opentui/core-linux-x64": "0.5.10",
680
+ "@opentui/core-linux-x64-musl": "0.5.10",
681
+ "@opentui/core-win32-arm64": "0.5.10",
682
+ "@opentui/core-win32-x64": "0.5.10"
683
683
  },
684
684
  "peerDependencies": {
685
685
  "web-tree-sitter": "0.25.10"
686
686
  }
687
687
  },
688
688
  "node_modules/@opentui/core-darwin-arm64": {
689
- "version": "0.4.5",
690
- "resolved": "https://registry.npmjs.org/@opentui/core-darwin-arm64/-/core-darwin-arm64-0.4.5.tgz",
691
- "integrity": "sha512-8KUG0oRidnR+oW1RSZJ72/PhZLl+qRRMk5U/mieF4c0SJ5V3tYACpBZAKzQfHNd1f7QzD8FHZct1lPpQgtmkWg==",
689
+ "version": "0.5.10",
690
+ "resolved": "https://registry.npmjs.org/@opentui/core-darwin-arm64/-/core-darwin-arm64-0.5.10.tgz",
691
+ "integrity": "sha512-Vyb+nTbhab8ZcRy5gg1loEEGwRcIbjAeVRIBfHBcbFDqmITBOg7x2gqJ+x/TnoOy4uwMhCmICUN2wiyREw3r1Q==",
692
692
  "cpu": [
693
693
  "arm64"
694
694
  ],
@@ -699,9 +699,9 @@
699
699
  ]
700
700
  },
701
701
  "node_modules/@opentui/core-darwin-x64": {
702
- "version": "0.4.5",
703
- "resolved": "https://registry.npmjs.org/@opentui/core-darwin-x64/-/core-darwin-x64-0.4.5.tgz",
704
- "integrity": "sha512-R2bocsg55gwjOqCp/MWFgFYzRmsduKegB6nzgFAPCvAD/L5Jf30xpWJWFlSg3x8vxe1L9WJ84dfqa4M7mZZ3wA==",
702
+ "version": "0.5.10",
703
+ "resolved": "https://registry.npmjs.org/@opentui/core-darwin-x64/-/core-darwin-x64-0.5.10.tgz",
704
+ "integrity": "sha512-tTFLcM7Oj1gTyhm/bUdAt3C6grZdCxPk6+/g2azcZBUlI3/62LwbeRS6HbQKFFmm+1fUmX8cq6kWrtul885mVg==",
705
705
  "cpu": [
706
706
  "x64"
707
707
  ],
@@ -712,9 +712,9 @@
712
712
  ]
713
713
  },
714
714
  "node_modules/@opentui/core-linux-arm64": {
715
- "version": "0.4.5",
716
- "resolved": "https://registry.npmjs.org/@opentui/core-linux-arm64/-/core-linux-arm64-0.4.5.tgz",
717
- "integrity": "sha512-R4MZ25a4CzOAGVjW9aj1hUfzQGVfCJwrwBDbNs2SXaIvzcZqkxCVtU4FoQ5LsaD0j/BdNQVg2CIfFkFsm1fDuQ==",
715
+ "version": "0.5.10",
716
+ "resolved": "https://registry.npmjs.org/@opentui/core-linux-arm64/-/core-linux-arm64-0.5.10.tgz",
717
+ "integrity": "sha512-ncJXcgudhBf2GdJyF3xVQN/Ec+1F7GOL+pRrURmgBYSj2v1w6EyoDQFAACtPTK2c3R38W6fvZwL4JSLlm4EFXQ==",
718
718
  "cpu": [
719
719
  "arm64"
720
720
  ],
@@ -725,9 +725,9 @@
725
725
  ]
726
726
  },
727
727
  "node_modules/@opentui/core-linux-arm64-musl": {
728
- "version": "0.4.5",
729
- "resolved": "https://registry.npmjs.org/@opentui/core-linux-arm64-musl/-/core-linux-arm64-musl-0.4.5.tgz",
730
- "integrity": "sha512-ieqdyKI6EIYPalYAETB2wsdP83hr5Ifi+dFnBFUmdEEFHsoKwBmn2S7bsTOYlX7Bg03F4/YPIg+IvRpeC+cUJw==",
728
+ "version": "0.5.10",
729
+ "resolved": "https://registry.npmjs.org/@opentui/core-linux-arm64-musl/-/core-linux-arm64-musl-0.5.10.tgz",
730
+ "integrity": "sha512-dGMphDKexSdeYqwl0wgoFBP88Ta/cdi1Zc1mk29/ENkSCGz+74zlCHgqTHRNGLmI8W5TfuUtCyktQH11/Z+TBQ==",
731
731
  "cpu": [
732
732
  "arm64"
733
733
  ],
@@ -738,9 +738,9 @@
738
738
  ]
739
739
  },
740
740
  "node_modules/@opentui/core-linux-x64": {
741
- "version": "0.4.5",
742
- "resolved": "https://registry.npmjs.org/@opentui/core-linux-x64/-/core-linux-x64-0.4.5.tgz",
743
- "integrity": "sha512-SNyuQoxMKI1vuJhgxSSW96adWM6LqFl2SoS3GM4tGeneGOanVVG2Y06PvlytXvF4cKik97t0rqkVMRetmOs93w==",
741
+ "version": "0.5.10",
742
+ "resolved": "https://registry.npmjs.org/@opentui/core-linux-x64/-/core-linux-x64-0.5.10.tgz",
743
+ "integrity": "sha512-5qtYaOgwVycZD1GaGshTRsi0rXPAmVExO03N1JQaHu+NYxK/vXSOc7Bu4QW0sPXx3Sp0SpzpP+FHjXABfoK66g==",
744
744
  "cpu": [
745
745
  "x64"
746
746
  ],
@@ -751,9 +751,9 @@
751
751
  ]
752
752
  },
753
753
  "node_modules/@opentui/core-linux-x64-musl": {
754
- "version": "0.4.5",
755
- "resolved": "https://registry.npmjs.org/@opentui/core-linux-x64-musl/-/core-linux-x64-musl-0.4.5.tgz",
756
- "integrity": "sha512-mKVKcIcPiSVVZZsdPSBoWwoa2/TCeQAaMDeHF7PFw2kt5bTXZPP7xxWfRQLCNIcA1eaGl59UuwUWHDR2Ve548Q==",
754
+ "version": "0.5.10",
755
+ "resolved": "https://registry.npmjs.org/@opentui/core-linux-x64-musl/-/core-linux-x64-musl-0.5.10.tgz",
756
+ "integrity": "sha512-Oj4H9hApuvuTKPWxh4SoZAgGJorR7vbvnrZA/cAkSMAk2VGSoHRRcqeXQbcH8IcdjVZ0KFpv8Zkl/D5Ye+2mew==",
757
757
  "cpu": [
758
758
  "x64"
759
759
  ],
@@ -764,9 +764,9 @@
764
764
  ]
765
765
  },
766
766
  "node_modules/@opentui/core-win32-arm64": {
767
- "version": "0.4.5",
768
- "resolved": "https://registry.npmjs.org/@opentui/core-win32-arm64/-/core-win32-arm64-0.4.5.tgz",
769
- "integrity": "sha512-GHTTsqeR45q2Iek9Rb7ty+x/hAKn2jZ1ujlCgPR8LBKyF7h0E1dNFryoZ7ehMc3kJndP1sKn836IemKFqxuDdQ==",
767
+ "version": "0.5.10",
768
+ "resolved": "https://registry.npmjs.org/@opentui/core-win32-arm64/-/core-win32-arm64-0.5.10.tgz",
769
+ "integrity": "sha512-A9VhgvTxQoUdZ+8LmUumEng1sQNbj9QQQT3NYG9mSxI54qTANi7vOWNSphMiY6RMVsr22pgm6nUvSSvJXv7Jog==",
770
770
  "cpu": [
771
771
  "arm64"
772
772
  ],
@@ -777,9 +777,9 @@
777
777
  ]
778
778
  },
779
779
  "node_modules/@opentui/core-win32-x64": {
780
- "version": "0.4.5",
781
- "resolved": "https://registry.npmjs.org/@opentui/core-win32-x64/-/core-win32-x64-0.4.5.tgz",
782
- "integrity": "sha512-Y8T/yXCDGagRGiQrtmuB6AhRcPucKFs/Dre3v8kJwNYqDccI4FzUPKclZ7djfmRZNjl7JUqPhZZP/PwDpQocMg==",
780
+ "version": "0.5.10",
781
+ "resolved": "https://registry.npmjs.org/@opentui/core-win32-x64/-/core-win32-x64-0.5.10.tgz",
782
+ "integrity": "sha512-u3KHa7kEeWrmKVDRJYpxSGO+g5E9cMGlrmTsPN3GVPHUmQMiREUawLXUvsU8+IHaQnqG3Q5nuE1yf4fPBzS+Qw==",
783
783
  "cpu": [
784
784
  "x64"
785
785
  ],
@@ -790,14 +790,14 @@
790
790
  ]
791
791
  },
792
792
  "node_modules/@opentui/solid": {
793
- "version": "0.4.5",
794
- "resolved": "https://registry.npmjs.org/@opentui/solid/-/solid-0.4.5.tgz",
795
- "integrity": "sha512-B0RSkXnrtPVfEJOX+Hj+axjLJ3lzbG1BZw5I7Pvb9OPp48Vzg2cW2a3cSa86/q48ndLt647i/XwFPIw/jqnI5g==",
793
+ "version": "0.5.10",
794
+ "resolved": "https://registry.npmjs.org/@opentui/solid/-/solid-0.5.10.tgz",
795
+ "integrity": "sha512-KrmMIsHiKBHOABTC0brOwqWm+sGq1ZX2sGCAx6WgtBbE3STMup9n8TAy/6gUYhwcjC9zugT53ytfSVwCwVWZUg==",
796
796
  "license": "MIT",
797
797
  "dependencies": {
798
798
  "@babel/core": "7.28.0",
799
799
  "@babel/preset-typescript": "7.27.1",
800
- "@opentui/core": "0.4.5",
800
+ "@opentui/core": "0.5.10",
801
801
  "babel-plugin-module-resolver": "5.0.2",
802
802
  "babel-preset-solid": "1.9.12",
803
803
  "entities": "7.0.1",
@@ -1568,9 +1568,9 @@
1568
1568
  }
1569
1569
  },
1570
1570
  "node_modules/bun-ffi-structs": {
1571
- "version": "0.2.4",
1572
- "resolved": "https://registry.npmjs.org/bun-ffi-structs/-/bun-ffi-structs-0.2.4.tgz",
1573
- "integrity": "sha512-AJzsqoVFs1KBbJbWHIYrVZLDC3NhTqqh25awRXqzoLzmBAKr5oqk6+CwuYHAekKx+VBCYVohBoKuRq40dV+TYg==",
1571
+ "version": "0.3.1",
1572
+ "resolved": "https://registry.npmjs.org/bun-ffi-structs/-/bun-ffi-structs-0.3.1.tgz",
1573
+ "integrity": "sha512-3gM7PpVWLyrwxWjcilSiGuhWanhZivvo6l0u573NziPH6f/gwk6McbaYgn7oJWov6pKGRTDbrg94W5DcJsKTtQ==",
1574
1574
  "license": "MIT",
1575
1575
  "peerDependencies": {
1576
1576
  "typescript": "^5"
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "pantheon-tui",
3
3
  "type": "module",
4
- "version": "1.4.2",
4
+ "version": "1.5.0-beta.1",
5
5
  "description": "Pantheon TUI plugin — sidebar (version, preset, sessions, real-time delegations) + AI subscription usage gauges incl. OpenCode Go/Zen dollar limits (vendored, MIT)",
6
6
  "license": "MIT",
7
7
  "exports": {
@@ -19,9 +19,9 @@
19
19
  "peerDependencies": {
20
20
  "@opencode-ai/plugin": ">=1.14.0",
21
21
  "@opencode-ai/sdk": ">=1.14.0",
22
- "@opentui/core": ">=0.4.5",
23
- "@opentui/solid": ">=0.4.5",
24
- "solid-js": ">=1.9.0"
22
+ "@opentui/core": ">=0.5.10",
23
+ "@opentui/solid": ">=0.5.10",
24
+ "solid-js": ">=1.9.12"
25
25
  },
26
26
  "devDependencies": {
27
27
  "rolldown-plugin-solid": "^0.2.1",
@@ -29,8 +29,8 @@
29
29
  },
30
30
  "dependencies": {
31
31
  "@opencode-ai/plugin": ">=1.14.0",
32
- "@opentui/core": ">=0.4.5",
33
- "@opentui/solid": ">=0.4.5",
34
- "solid-js": ">=1.9.0"
32
+ "@opentui/core": ">=0.5.10",
33
+ "@opentui/solid": ">=0.5.10",
34
+ "solid-js": ">=1.9.12"
35
35
  }
36
36
  }