pantheon-opencode 1.5.0-beta.13 → 1.5.0-beta.15

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 (42) hide show
  1. package/CHANGELOG.md +59 -0
  2. package/package.json +1 -1
  3. package/plugin.json +1 -1
  4. package/pyproject.toml +2 -5
  5. package/src/agents/zeus.md +4 -26
  6. package/src/pantheon/background-job-board.ts +4 -4
  7. package/src/pantheon/delegate-manager.ts +95 -10
  8. package/src/pantheon/delegation-classifier.ts +3 -4
  9. package/src/pantheon/delegation-finalize.ts +69 -7
  10. package/src/pantheon/delegation.ts +16 -4
  11. package/src/pantheon/presets.d.mts +0 -20
  12. package/src/pantheon/presets.mjs +0 -64
  13. package/src/pantheon/toon-codec.ts +1 -1
  14. package/src/plugin-v2.ts +4 -6
  15. package/src/plugin.ts +6 -6
  16. package/src/plugins/pantheon-hooks.ts +1 -1
  17. package/src/plugins/tui/dist/tui.d.ts +57 -40
  18. package/src/plugins/tui/dist/tui.d.ts.map +1 -1
  19. package/src/plugins/tui/dist/tui.js +145 -54
  20. package/src/plugins/tui/package-lock.json +2 -2
  21. package/src/plugins/tui/package.json +1 -1
  22. package/src/plugins/tui/src/index.tsx +245 -83
  23. package/src/routing.yml +0 -16
  24. package/scripts/hash_verify.py +0 -192
  25. package/scripts/test-context-compression.sh +0 -169
  26. package/src/pantheon/auto-wake.ts +0 -85
  27. package/src/pantheon/chat-reminders.ts +0 -9
  28. package/src/pantheon/comment-checker.ts +0 -48
  29. package/src/pantheon/compaction-assert.ts +0 -160
  30. package/src/pantheon/compaction-handoff.ts +0 -304
  31. package/src/pantheon/cost-tracker.ts +0 -108
  32. package/src/pantheon/dispatch-guard.ts +0 -109
  33. package/src/pantheon/permission-eval.ts +0 -284
  34. package/src/pantheon/preemptive-compact.ts +0 -76
  35. package/src/pantheon/provider-capabilities.ts +0 -221
  36. package/src/pantheon/provider-stream-tracker.ts +0 -182
  37. package/src/pantheon/retry-policy.ts +0 -212
  38. package/src/pantheon/token-opt.ts +0 -689
  39. package/src/pantheon/v2-events.ts +0 -148
  40. package/src/pantheon/v2-hooks.ts +0 -287
  41. package/src/pantheon/v2-tool-definitions.ts +0 -331
  42. package/src/pantheon/zeus-delegate-with-retry.ts +0 -406
@@ -213,70 +213,6 @@ function loadRoutingYaml(routingPath) {
213
213
  return routing && typeof routing === 'object' ? routing : null
214
214
  }
215
215
 
216
- const RETRY_ERROR_TYPES = new Set(['auth', 'rate_limit', 'timeout', 'other'])
217
-
218
- /**
219
- * Load the R1 per-error-type retry policy from routing.yml (`retry_policy:`).
220
- * Fail-open: missing/unparseable config yields null (the caller falls back
221
- * to DEFAULT_RETRY_POLICY) and warns via the optional logger.
222
- *
223
- * @param {object} [opts]
224
- * @param {string} [opts.routingPath]
225
- * @param {{warn?: Function}} [opts.logger]
226
- * @returns {Record<string, number>|null} error-type → max retries
227
- */
228
- export function loadRoutingRetryPolicy({ routingPath, logger = console } = {}) {
229
- try {
230
- const routing = loadRoutingYaml(routingPath)
231
- const policy = routing?.retry_policy
232
- if (!policy || typeof policy !== 'object' || Array.isArray(policy)) return null
233
- const out = {}
234
- for (const [type, max] of Object.entries(policy)) {
235
- if (RETRY_ERROR_TYPES.has(type) && Number.isSafeInteger(max) && max >= 0) {
236
- out[type] = max
237
- }
238
- }
239
- return Object.keys(out).length > 0 ? out : null
240
- } catch (err) {
241
- const reason = err instanceof Error ? err.message : String(err)
242
- logger.warn?.(`presets: routing.yml retry_policy unavailable (${reason})`)
243
- return null
244
- }
245
- }
246
-
247
- /**
248
- * Load the R1 provider cooldown config from routing.yml (`cooldown:`).
249
- * Fail-open: missing/unparseable config yields null (caller falls back to
250
- * DEFAULT_COOLDOWN).
251
- *
252
- * @param {object} [opts]
253
- * @param {string} [opts.routingPath]
254
- * @param {{warn?: Function}} [opts.logger]
255
- * @returns {{allowed_fails: number, cooldown_time_seconds: number}|null}
256
- */
257
- export function loadRoutingCooldown({ routingPath, logger = console } = {}) {
258
- try {
259
- const routing = loadRoutingYaml(routingPath)
260
- const cooldown = routing?.cooldown
261
- if (!cooldown || typeof cooldown !== 'object' || Array.isArray(cooldown)) return null
262
- const allowedFails = cooldown.allowed_fails
263
- const cooldownTimeSeconds = cooldown.cooldown_time_seconds
264
- if (
265
- !Number.isSafeInteger(allowedFails) ||
266
- allowedFails < 1 ||
267
- !Number.isSafeInteger(cooldownTimeSeconds) ||
268
- cooldownTimeSeconds < 1
269
- ) {
270
- return null
271
- }
272
- return { allowed_fails: allowedFails, cooldown_time_seconds: cooldownTimeSeconds }
273
- } catch (err) {
274
- const reason = err instanceof Error ? err.message : String(err)
275
- logger.warn?.(`presets: routing.yml cooldown unavailable (${reason})`)
276
- return null
277
- }
278
- }
279
-
280
216
  /**
281
217
  * Load the R4 per-agent step caps from routing.yml
282
218
  * (`agents.<name>.max_steps`). Fail-open: missing config yields {}.
@@ -53,7 +53,7 @@ function looksNumeric(text: string): boolean {
53
53
  return INT_RE.test(text) || FLOAT_RE.test(text)
54
54
  }
55
55
 
56
- /** Nominal chars-per-token ratio (same fixed basis as token-opt metering). */
56
+ /** Nominal chars-per-token ratio (same fixed basis as toon-codec metering). */
57
57
  export const CHARS_PER_TOKEN = 4
58
58
 
59
59
  function charsToTokens(chars: number): number {
package/src/plugin-v2.ts CHANGED
@@ -681,12 +681,10 @@ function createV2ToolDefinitionsFromContext(_context: PluginContext): V2ToolDef[
681
681
  name,
682
682
  description: toolDescriptions[name] ?? `Pantheon tool: ${name}`,
683
683
  input: { type: 'object' as const, properties: {} },
684
- // FOLLOW-UP: connect the real wrappers from
685
- // src/pantheon/v2-tool-definitions.ts (createV2ToolDefinitions with
686
- // costCommand/goalTools) once V1 infrastructure is resolvable in the V2
687
- // standalone context. The before/after factories in v2-hooks.ts:216-282
688
- // are likewise unwired. Until then, placeholders resolve to the object
689
- // shape so the beta host never sees a bare string.
684
+ // FOLLOW-UP: wire the real tool wrappers (costCommand/goalTools) once V1
685
+ // infrastructure is resolvable in the V2 standalone context. Until then,
686
+ // placeholders resolve to the object shape so the beta host never sees a
687
+ // bare string.
690
688
  execute: async (_input: Record<string, unknown>, _context: unknown): Promise<V2ToolResult> => {
691
689
  return { output: `${name}: ${v2UnavailableMessage}` }
692
690
  },
package/src/plugin.ts CHANGED
@@ -66,10 +66,10 @@ import { activePresetCandidates, createVisionHandler } from './pantheon/vision.t
66
66
  const log = createPantheonLogger({ module: 'pantheon-plugin' })
67
67
 
68
68
  // R4: per-agent step caps from routing.yml `agents.<name>.max_steps`
69
- // (fail-open → {} = no agent capped). R1 retry_policy/cooldown are NOT
70
- // wired here — the plugin has no retry path (opencode cannot intercept task
71
- // completion); zeus waves load them via presets.mjs loaders and pass them
72
- // to zeusDelegateWithRetry explicitly.
69
+ // (fail-open → {} = no agent capped). The R1 retry_policy/cooldown block and
70
+ // its presets.mjs loaders were removed together with their only consumer
71
+ // (zeus-delegate-with-retry.ts); the plugin has no retry path (opencode cannot
72
+ // intercept task completion).
73
73
  const stepCapTracker = new StepCapTracker(loadRoutingMaxSteps({ logger: log }))
74
74
 
75
75
  // O5: permission.task glob rules from routing.yml `permission.task`
@@ -517,8 +517,8 @@ const plugin: Plugin = async (input: PluginInput) => {
517
517
 
518
518
  // Wave 4 (PR #46): /cost — delegation cost + token visibility. Reads
519
519
  // opencode.db read-only via the single node:sqlite backend.
520
- // Fully wired (unlike dispatch-guard, which is manual-orchestration-only
521
- // because opencode 1.18.x cannot intercept task completion via hooks).
520
+ // Fully wired. (opencode 1.18.x cannot intercept task completion via hooks,
521
+ // so empty-result handling lives in delegation-classifier.ts.)
522
522
  const costCommand = createCostCommand()
523
523
  const modelCommand = createModelCommand()
524
524
 
@@ -783,7 +783,7 @@ function delegationAgent(tool: string, args?: unknown): string {
783
783
  * panel tracks the child end-to-end. Fire-and-forget and silent: a mirror
784
784
  * failure must never surface into the tool call or the transcript.
785
785
  * registerLaunchIfAbsent keeps it idempotent against any other dispatcher
786
- * (v2-events, plugin double-load, repeated after-hook firings).
786
+ * (plugin double-load, repeated after-hook firings).
787
787
  */
788
788
  function mirrorNativeBackgroundDispatch(
789
789
  input: { tool: string; sessionID: string },
@@ -44,11 +44,12 @@ declare function parseDelegationMarkdown(raw: string, fileAlias?: string, sessio
44
44
  declare function readDelegationEntries(dir: string): Promise<DelegationEntry[]>;
45
45
  /** Read delegation reports from EVERY session under
46
46
  * `<root>/.pantheon/delegations/<sessionID>/<alias>.md` — the panel's
47
- * HISTORY channel. Unlike the children/live channels it does NOT depend on a
48
- * resolved sessionID: with no focused session (null/placeholder), the panel
49
- * still shows the reports from all past sessions (running first, Finalized
50
- * desc — the sort applied by readDelegationEntries). Fail-open: a
51
- * missing/unreadable directory yields []. */
47
+ * ENRICHMENT source. The read is deliberately unfiltered (each entry carries
48
+ * its directory's sessionID, so a taskID match can enrich any channel);
49
+ * callers MUST scope the merged result with {@link filterDelegationsToSession}
50
+ * before rendering — only the active session's reports are shown. Entries are
51
+ * running first, Finalized desc (the sort applied by readDelegationEntries).
52
+ * Fail-open: a missing/unreadable directory yields []. */
52
53
  declare function readAllDelegationEntries(root: string): Promise<DelegationEntry[]>;
53
54
  /** The persisted subset of BackgroundJobRecord the panel consumes. Duck-typed
54
55
  * so a corrupt/older record never breaks parsing. */
@@ -118,6 +119,15 @@ declare const STALE_RUNNING_THRESHOLD_MS: number;
118
119
  * considered stale. Combined with the stale-running threshold to produce the
119
120
  * display-only `stale-running` state. */
120
121
  declare const IDLE_SILENCE_MS: number;
122
+ /** Visual-only terminal retention windows. Reports remain on disk and in the
123
+ * board; these constants only control which rows enter the TUI window. */
124
+ declare const DELEGATION_DONE_RETENTION_MS: number;
125
+ declare const DELEGATION_FAILED_RETENTION_MS: number;
126
+ /** Alias-less NATIVE task() live entries never receive a board alias (the
127
+ * task tool output carries none), so the 30s alias-less prune in
128
+ * mergeChildDelegationSources must not apply to them — 5 minutes covers a
129
+ * slow child listing while still bounding the live map. */
130
+ declare const NATIVE_LIVE_ALIASLESS_TTL_MS: number;
121
131
  /**
122
132
  * Mark a running entry as `stale-running` if it has been running longer than
123
133
  * the threshold AND has no recent activity (no `updatedAt` change in the last
@@ -150,11 +160,12 @@ declare function delegationSpinnerFrame(now: number): string;
150
160
  type DelegationDisplayState = DelegationEntry['state'];
151
161
  /** Semantic tone mapped to the TUI theme at the row ({@link DelegationRow}).
152
162
  * Kept separate + pure so the color channel is testable without booting the
153
- * renderer. */
154
- type DelegationStateTone = 'warning' | 'error' | 'success' | 'muted';
155
- /** Color is the ONLY channel separating `stale-running` from a live `running`
156
- * row — the 4-glyph row design has no dedicated stale shape. Display-only;
157
- * no behavior change. */
163
+ * renderer. Every display state resolves to one of the three status colors;
164
+ * the row paints its whole content with it (see {@link DelegationRow}). */
165
+ type DelegationStateTone = 'warning' | 'error' | 'success';
166
+ /** Status → color mapping for the whole-row tone. Red = failure, green =
167
+ * terminal, yellow = in flight. The glyph remains a redundant channel so the
168
+ * state stays legible in monochrome. Display-only; no behavior change. */
158
169
  declare function delegationStateTone(state: DelegationDisplayState): DelegationStateTone;
159
170
  type ToolActivity = {
160
171
  tool: string;
@@ -287,10 +298,29 @@ declare function boardRecordToDelegationEntry(record: BoardJobRecord): Delegatio
287
298
  * other channel (running first, then most recent). Pure. */
288
299
  declare function boardRecordsToDelegationEntries(records: readonly BoardJobRecord[]): DelegationEntry[];
289
300
  /** Merge the board over any other channel. The board is AUTHORITATIVE for
290
- * state/alias/agent (it is the persisted FSM) and it is the only channel
291
- * that carries jobs from OTHER sessions. Dedup by taskID first, then by
292
- * (sessionID, alias) — aliases are per parent session. Pure. */
301
+ * state/alias/agent (it is the persisted FSM). This merge is intentionally
302
+ * UNSCOPED so the board can enrich an active-session row (dedup by taskID);
303
+ * the caller scopes the merged list with {@link filterDelegationsToSession},
304
+ * which is what keeps other-session board jobs out of the panel. Dedup by
305
+ * taskID first, then by (sessionID, alias) — aliases are per parent session. Pure. */
293
306
  declare function mergeBoardDelegationSources(base: readonly DelegationEntry[], board: readonly DelegationEntry[]): DelegationEntry[];
307
+ /** Scope a fully-merged display list to the ACTIVE session only.
308
+ *
309
+ * The panel is session-scoped: rows from other sessions (board snapshot, md
310
+ * history under `.pantheon/delegations/<other-session>/`) and rows with no
311
+ * attributable session (empty sessionID) are DROPPED. The previous
312
+ * cross-session behavior rendered those rows and clicking them led to
313
+ * "Session not found" — there is no cross-session channel anymore.
314
+ *
315
+ * The board/md channels still feed the merge UNFILTERED so the board can
316
+ * ENRICH an active-session row with state/alias/agent (dedup by taskID), but
317
+ * they can never introduce a row for another session: this filter is applied
318
+ * ONCE, after every merge (children + live + md + board).
319
+ *
320
+ * Returns [] when no active session resolves (null/placeholder) — there is no
321
+ * scope to show. Native children always carry the active session id (stamped
322
+ * by `childrenToDelegationEntries`), so they survive the filter. Pure. */
323
+ declare function filterDelegationsToSession(entries: readonly DelegationEntry[], activeSessionID: string | null | undefined): DelegationEntry[];
294
324
  /** Server-aligned session id validity: opencode rejects anything not starting
295
325
  * with "ses" (SchemaError). This deliberately mirrors that exact contract —
296
326
  * nothing stricter, nothing looser — so a template placeholder ("{sessionID}"),
@@ -390,8 +420,9 @@ declare function delegationRowGlyph(status: DelegationRowStatus): string;
390
420
  * Pure. */
391
421
  declare function delegationRowMarker(state: DelegationDisplayState, now?: number): string;
392
422
  /** ONE identity per row: the short board alias (`apo-1`); a row without a
393
- * board alias (native task() child, alias `native-task`) shows the agent
394
- * instead — never alias + agent stacked. Pure. */
423
+ * board alias (native task() child `native-task` / `native-<id>`, or an
424
+ * alias-less native live row `live-<callID>` kept as children-only) shows
425
+ * the agent instead — never alias + agent stacked. Pure. */
395
426
  declare function delegationRowIdentity(entry: DelegationEntry): string;
396
427
  /** Fixed alias cell, pad-right + hard-truncate to `width` (default 7) so
397
428
  * identities line up across rows. Pure. */
@@ -422,12 +453,14 @@ declare const DELEGATION_VISIBLE_CEILING = 8;
422
453
  * still a live job — it must never read as done); failed counts
423
454
  * error/startup_failed; cancelled reads as done. Pure. */
424
455
  declare function formatDelegationHeader(entries: readonly DelegationEntry[]): string;
425
- /** Cap the panel: live rows first, then most-recent terminal rows, at most
426
- * `maxVisible` total. `hidden` is how many were dropped (rendered as
427
- * "… +N more"). Pure. */
456
+ /** Cap the panel: live rows first, then most-recent retained terminal rows, at
457
+ * most `maxVisible` total. Hidden counts describe the retained render list,
458
+ * not expired history. */
428
459
  declare function ceilingDelegationList(all: readonly DelegationEntry[], maxVisible?: number, now?: number): {
429
460
  visible: DelegationEntry[];
430
461
  hidden: number;
462
+ hiddenActive: number;
463
+ hiddenTerminal: number;
431
464
  };
432
465
  /** Split a display list into native task() rows vs pantheon_delegate rows.
433
466
  * Native = source 'children-only' (no board report); everything else counts
@@ -441,26 +474,6 @@ declare function countDelegationSources(entries: readonly DelegationEntry[]): {
441
474
  * breakdown (pantheon = children WITH a board report, native = children
442
475
  * WITHOUT one). Pure — the View logs the returned string verbatim. */
443
476
  declare function formatPanelLogLine(children: number, pantheon: number, native: number, md: number, events: number): string;
444
- /** Turn child sessions (PRIMARY) enriched with md reports into the display
445
- * list. One entry per child id (duplicates across re-fetches collapse).
446
- * The md report is matched by `Task ID` (== child.id) and supplies alias,
447
- * agent, description, terminal state and duration. A child without a
448
- * report still renders: description from its title, agent from the child
449
- * itself (fallback 'agent'), state derived from its status, startedAt from
450
- * time.created. A report-less child is a NATIVE task() child (every
451
- * child of the current session — pantheon_delegate OR the native `task()`
452
- * tool — carries parentID = caller), so it gets source 'children-only',
453
- * the internal alias 'native-task' instead of a
454
- * board alias. The 'task nativa' description fallback keeps the row
455
- * non-empty when the child carries no title.
456
- * Terminal md state wins over the derived state; a running md defers to
457
- * the child's live status. A running child is NEVER archived — it always
458
- * lands in the active split (splitDelegationList active = running/retry).
459
- * `parentSessionID` (the focused session id) is stamped on report-less
460
- * children so the row carries its origin session; omit it and they stay
461
- * unscoped ('').
462
- * Sorted running-first (compareDelegationEntries).
463
- * Pure — no I/O. */
464
477
  declare function childrenToDelegationEntries(children: readonly ChildDelegationLike[] | undefined, md: readonly DelegationEntry[], now?: number, parentSessionID?: string): DelegationEntry[];
465
478
  /** Navigate the TUI to a child session (click/Enter on a delegation row).
466
479
  * Returns false when the route API is unavailable or the target id is
@@ -468,8 +481,12 @@ declare function childrenToDelegationEntries(children: readonly ChildDelegationL
468
481
  * server-valid session id ("ses...") ever reaches the router, so an
469
482
  * unsubstituted "{sessionID}" placeholder can never be routed. */
470
483
  declare function navigateToDelegationSession(route: {
471
- navigate?: (name: string, params?: Record<string, unknown>) => void;
484
+ navigate?: (name: string, params?: Record<string, unknown>) => void | PromiseLike<void>;
472
485
  } | undefined, taskID: string | undefined): boolean;
486
+ /** Build the mouse handler used by each delegation row. */
487
+ declare function createDelegationRowOpenHandler(route: {
488
+ navigate?: (name: string, params?: Record<string, unknown>) => void | PromiseLike<void>;
489
+ } | undefined, taskID: string | undefined): () => void;
473
490
  /** Plugin-level live delegation store shared with the event subscriptions
474
491
  * in `tui()`: the map of live entries + a version signal bumped on every
475
492
  * mutation. The View subscribes to the version (in an effect) to refresh the
@@ -486,5 +503,5 @@ declare const plugin: TuiPluginModule & {
486
503
  setup: () => Promise<void>;
487
504
  };
488
505
  //#endregion
489
- export { BoardJobRecord, ChildDelegationLike, DELEGATION_ALIAS_WIDTH, DELEGATION_DESCRIPTION_MAX, DELEGATION_ELAPSED_WIDTH, DELEGATION_ROW_GLYPHS, DELEGATION_VISIBLE_CEILING, DelegationActivity, DelegationDisplayState, DelegationEntry, DelegationRowStatus, DelegationStateTone, DelegationToolPart, IDLE_SILENCE_MS, LiveDelegationEntry, LiveDelegationStore, ParsedDelegationToolPart, STALE_RUNNING_THRESHOLD_MS, ToolActivity, TuiSessionSources, boardRecordToDelegationEntry, boardRecordsToDelegationEntries, boardStatePath, buildChildrenPath, ceilingDelegationList, childStatusToState, childrenToDelegationEntries, collectDelegationToolParts, compareDelegationEntries, countDelegationSources, plugin as default, delegationActivity, delegationActivityLabel, delegationElapsed, delegationRowGlyph, delegationRowIdentity, delegationRowMarker, delegationRowStatus, delegationSpinnerFrame, delegationStateTone, extractToolActivity, fmtElapsed, formatDelegationAlias, formatDelegationElapsed, formatDelegationHeader, formatDelegationRowLead, formatPanelLogLine, isValidSessionId, latestToolActivityFor, markStaleIfRunning, mergeBoardDelegationSources, mergeChildDelegationSources, mergeDelegationSources, navigateToDelegationSession, panelLogDir, parseDelegationMarkdown, parseDelegationToolPart, readAllDelegationEntries, readBoardState, readDelegationEntries, reduceDelegationToolPart, removeDelegationEntry, resolveCurrentSessionID, resolveDelegationsDir, resolvePantheonRoot, safeSessionPath, seedLiveDelegationMap, splitDelegationList, toDelegationEntry, trackToolActivity, truncateDelegationDescription, tuiLogPath, visibleDelegationList };
506
+ export { BoardJobRecord, ChildDelegationLike, DELEGATION_ALIAS_WIDTH, DELEGATION_DESCRIPTION_MAX, DELEGATION_DONE_RETENTION_MS, DELEGATION_ELAPSED_WIDTH, DELEGATION_FAILED_RETENTION_MS, DELEGATION_ROW_GLYPHS, DELEGATION_VISIBLE_CEILING, DelegationActivity, DelegationDisplayState, DelegationEntry, DelegationRowStatus, DelegationStateTone, DelegationToolPart, IDLE_SILENCE_MS, LiveDelegationEntry, LiveDelegationStore, NATIVE_LIVE_ALIASLESS_TTL_MS, ParsedDelegationToolPart, STALE_RUNNING_THRESHOLD_MS, ToolActivity, TuiSessionSources, boardRecordToDelegationEntry, boardRecordsToDelegationEntries, boardStatePath, buildChildrenPath, ceilingDelegationList, childStatusToState, childrenToDelegationEntries, collectDelegationToolParts, compareDelegationEntries, countDelegationSources, createDelegationRowOpenHandler, plugin as default, delegationActivity, delegationActivityLabel, delegationElapsed, delegationRowGlyph, delegationRowIdentity, delegationRowMarker, delegationRowStatus, delegationSpinnerFrame, delegationStateTone, extractToolActivity, filterDelegationsToSession, fmtElapsed, formatDelegationAlias, formatDelegationElapsed, formatDelegationHeader, formatDelegationRowLead, formatPanelLogLine, isValidSessionId, latestToolActivityFor, markStaleIfRunning, mergeBoardDelegationSources, mergeChildDelegationSources, mergeDelegationSources, navigateToDelegationSession, panelLogDir, parseDelegationMarkdown, parseDelegationToolPart, readAllDelegationEntries, readBoardState, readDelegationEntries, reduceDelegationToolPart, removeDelegationEntry, resolveCurrentSessionID, resolveDelegationsDir, resolvePantheonRoot, safeSessionPath, seedLiveDelegationMap, splitDelegationList, toDelegationEntry, trackToolActivity, truncateDelegationDescription, tuiLogPath, visibleDelegationList };
490
507
  //# sourceMappingURL=tui.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tui.d.ts","names":[],"sources":["../src/index.tsx"],"mappings":"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"}
1
+ {"version":3,"file":"tui.d.ts","names":[],"sources":["../src/index.tsx"],"mappings":"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"}