@wrongstack/tui 0.313.1 → 0.316.2

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 (171) hide show
  1. package/dist/app-action-type.d.ts +56 -0
  2. package/dist/app-initial-state.d.ts +2 -1
  3. package/dist/app-props.d.ts +45 -2
  4. package/dist/app-settings-type.d.ts +7 -0
  5. package/dist/app-state-core-types.d.ts +18 -0
  6. package/dist/app-state.d.ts +42 -0
  7. package/dist/app-status-region.d.ts +1 -1
  8. package/dist/app-view-contract.d.ts +2 -1
  9. package/dist/app-view-pickers.d.ts +2 -1
  10. package/dist/app-view-sidebar.d.ts +2 -1
  11. package/dist/brain-panel-model.d.ts +0 -2
  12. package/dist/checkpoint-retention.d.ts +2 -3
  13. package/dist/components/agents-monitor.d.ts +3 -3
  14. package/dist/components/auth-panel.d.ts +2 -1
  15. package/dist/components/brain-decision-prompt.d.ts +2 -1
  16. package/dist/components/clear-confirm-panel.d.ts +4 -3
  17. package/dist/components/composer-status-chip.d.ts +3 -2
  18. package/dist/components/confirm-prompt.d.ts +2 -1
  19. package/dist/components/context-panel.d.ts +2 -1
  20. package/dist/components/continue-confirm-panel.d.ts +3 -2
  21. package/dist/components/coordinator-panel.d.ts +2 -1
  22. package/dist/components/cron-jobs.d.ts +2 -1
  23. package/dist/components/design-picker.d.ts +2 -1
  24. package/dist/components/enhance-panel.d.ts +4 -3
  25. package/dist/components/esc-confirm-prompt.d.ts +2 -1
  26. package/dist/components/exit-confirm-panel.d.ts +3 -2
  27. package/dist/components/f-key-picker.d.ts +1 -2
  28. package/dist/components/fallback-overlay.d.ts +2 -1
  29. package/dist/components/fleet-monitor.d.ts +2 -1
  30. package/dist/components/fleet-panel.d.ts +4 -4
  31. package/dist/components/goal-kanban-panel.d.ts +2 -1
  32. package/dist/components/help-overlay.d.ts +2 -1
  33. package/dist/components/help-panel.d.ts +2 -1
  34. package/dist/components/history/code-block-diff-helpers.d.ts +1 -6
  35. package/dist/components/history/code-block.d.ts +0 -2
  36. package/dist/components/history/copy-registry.d.ts +2 -1
  37. package/dist/components/history/index.d.ts +2 -2
  38. package/dist/components/history/replay.d.ts +2 -1
  39. package/dist/components/history/sage-memory-block.d.ts +0 -6
  40. package/dist/components/history/scroll-controller-types.d.ts +7 -12
  41. package/dist/components/history/selection-band-store.d.ts +3 -2
  42. package/dist/components/history/selection-helpers.d.ts +24 -65
  43. package/dist/components/history/tool-card.d.ts +2 -1
  44. package/dist/components/history/tool-group.d.ts +0 -7
  45. package/dist/components/history/use-history-controller.d.ts +2 -1
  46. package/dist/components/history/utils.d.ts +1 -1
  47. package/dist/components/history/wrap-geometry.d.ts +18 -125
  48. package/dist/components/history.d.ts +1 -1
  49. package/dist/components/kanban-panel.d.ts +7 -25
  50. package/dist/components/live-activity-strip.d.ts +2 -1
  51. package/dist/components/mailbox-panel.d.ts +2 -1
  52. package/dist/components/mcp-picker.d.ts +2 -1
  53. package/dist/components/mode-picker.d.ts +2 -1
  54. package/dist/components/model-picker.d.ts +2 -1
  55. package/dist/components/monitor-shell.d.ts +3 -2
  56. package/dist/components/phase-monitor.d.ts +2 -1
  57. package/dist/components/plan-panel.d.ts +3 -2
  58. package/dist/components/plugin-picker.d.ts +2 -1
  59. package/dist/components/powerline-rail.d.ts +2 -1
  60. package/dist/components/project-picker.d.ts +2 -1
  61. package/dist/components/prompt-picker.d.ts +2 -1
  62. package/dist/components/refine-countdown-panel.d.ts +3 -2
  63. package/dist/components/refine-failure-panel.d.ts +2 -1
  64. package/dist/components/resource-menu.d.ts +2 -1
  65. package/dist/components/resume-picker.d.ts +2 -1
  66. package/dist/components/scrollable-history.d.ts +2 -2
  67. package/dist/components/send-mode-picker.d.ts +3 -2
  68. package/dist/components/sessions-panel.d.ts +2 -1
  69. package/dist/components/settings-picker-filter.d.ts +2 -1
  70. package/dist/components/settings-picker.d.ts +3 -1
  71. package/dist/components/shadow-panel.d.ts +2 -1
  72. package/dist/components/shell-command-warning.d.ts +2 -1
  73. package/dist/components/sidebar-content.d.ts +4 -9
  74. package/dist/components/sidebar-panel-frame.d.ts +2 -13
  75. package/dist/components/sidebar.d.ts +2 -1
  76. package/dist/components/skill-picker.d.ts +2 -1
  77. package/dist/components/slash-confirm-panel.d.ts +3 -2
  78. package/dist/components/slash-menu.d.ts +2 -1
  79. package/dist/components/status-bar-format.d.ts +2 -0
  80. package/dist/components/status-bar-icons.d.ts +4 -0
  81. package/dist/components/status-bar-rails.d.ts +19 -6
  82. package/dist/components/status-bar-types.d.ts +18 -0
  83. package/dist/components/status-bar.d.ts +17 -7
  84. package/dist/components/status-line-registry.d.ts +62 -0
  85. package/dist/components/statusline-picker.d.ts +5 -27
  86. package/dist/components/theme-picker.d.ts +2 -1
  87. package/dist/components/theme-preview.d.ts +2 -1
  88. package/dist/components/tools-picker.d.ts +2 -1
  89. package/dist/components/topic-check-panel.d.ts +2 -1
  90. package/dist/connections-slash.d.ts +2 -1
  91. package/dist/context-fill.d.ts +4 -3
  92. package/dist/context-slash.d.ts +3 -2
  93. package/dist/cron-slash.d.ts +2 -1
  94. package/dist/esc-close-panels.d.ts +2 -1
  95. package/dist/f-key-panels.d.ts +1 -1
  96. package/dist/git-info.d.ts +22 -3
  97. package/dist/height-cache.d.ts +2 -8
  98. package/dist/history-entry.d.ts +4 -3
  99. package/dist/history-retention.d.ts +16 -6
  100. package/dist/hit-test.d.ts +2 -1
  101. package/dist/hooks/subagent-history-format.d.ts +2 -1
  102. package/dist/hooks/use-app-session-state.d.ts +2 -1
  103. package/dist/hooks/use-auth-panel.d.ts +2 -1
  104. package/dist/hooks/use-brain-panel.d.ts +2 -1
  105. package/dist/hooks/use-chip-staleness-guard.d.ts +4 -3
  106. package/dist/hooks/use-core-tui-commands.d.ts +1 -1
  107. package/dist/hooks/use-director-fleet-bridge.d.ts +2 -4
  108. package/dist/hooks/use-exit-command.d.ts +1 -1
  109. package/dist/hooks/use-file-search.d.ts +3 -7
  110. package/dist/hooks/use-fleet-generation-gate.d.ts +2 -1
  111. package/dist/hooks/use-git-session-status.d.ts +1 -1
  112. package/dist/hooks/use-history-archive.d.ts +3 -2
  113. package/dist/hooks/use-input-history-persistence.d.ts +2 -1
  114. package/dist/hooks/use-mode-picker.d.ts +2 -1
  115. package/dist/hooks/use-model-pick.d.ts +2 -1
  116. package/dist/hooks/use-next-steps-auto-submit.d.ts +2 -2
  117. package/dist/hooks/use-panel-controllers.d.ts +3 -1
  118. package/dist/hooks/use-paste-handling.d.ts +2 -1
  119. package/dist/hooks/use-prompt-picker.d.ts +4 -3
  120. package/dist/hooks/use-session-rewind.d.ts +2 -1
  121. package/dist/hooks/use-shadow-panel.d.ts +2 -1
  122. package/dist/hooks/use-sidebar-panel-data.d.ts +4 -3
  123. package/dist/hooks/use-status-sync-interval.d.ts +2 -1
  124. package/dist/hooks/use-statusline-hidden-sync.d.ts +2 -1
  125. package/dist/hooks/use-statusline-state.d.ts +9 -3
  126. package/dist/hooks/use-stream-chip-expiration.d.ts +3 -2
  127. package/dist/hooks/use-terminal-size.d.ts +3 -2
  128. package/dist/hooks/use-theme-picker-handler.d.ts +2 -1
  129. package/dist/hooks/use-tui-activity.d.ts +2 -1
  130. package/dist/hooks/use-tui-controllers.d.ts +2 -1
  131. package/dist/hooks/use-tui-environment-state.d.ts +7 -5
  132. package/dist/hooks/use-tui-event-bridge.d.ts +1 -1
  133. package/dist/index.js +8509 -8341
  134. package/dist/ink.d.ts +1 -1
  135. package/dist/input-editing.d.ts +2 -1
  136. package/dist/input-tokens.d.ts +2 -1
  137. package/dist/input-validation/action-types.d.ts +1 -1
  138. package/dist/input-validation.d.ts +4 -4
  139. package/dist/kanban-slash.d.ts +8 -32
  140. package/dist/layout-store.d.ts +2 -1
  141. package/dist/markdown-table.d.ts +1 -3
  142. package/dist/memory-context-monitor.d.ts +3 -2
  143. package/dist/memory-lifecycle-entry.d.ts +2 -1
  144. package/dist/memory-slash-format.d.ts +0 -1
  145. package/dist/mouse.d.ts +3 -2
  146. package/dist/overlay-key-router.d.ts +5 -4
  147. package/dist/paste-accumulator.d.ts +3 -2
  148. package/dist/prompt-refinement-start.d.ts +1 -1
  149. package/dist/reducers/composer.d.ts +1 -1
  150. package/dist/reducers/conversation.d.ts +1 -1
  151. package/dist/reducers/helpers.d.ts +16 -3
  152. package/dist/resume-load.d.ts +131 -0
  153. package/dist/run-blocks-controller.d.ts +2 -1
  154. package/dist/run-tui-client-registration.d.ts +3 -2
  155. package/dist/run-tui-options.d.ts +35 -2
  156. package/dist/run-tui-teardown.d.ts +2 -1
  157. package/dist/run-tui-title-controller.d.ts +2 -1
  158. package/dist/scroll-anchor.d.ts +2 -4
  159. package/dist/slash-command-lifecycle.d.ts +2 -1
  160. package/dist/submit-history.d.ts +2 -1
  161. package/dist/submit-prompt-refinement.d.ts +3 -2
  162. package/dist/terminal-title.d.ts +2 -1
  163. package/dist/theme.d.ts +2 -2
  164. package/dist/token-previews.d.ts +2 -1
  165. package/dist/tui-host-capabilities.d.ts +1 -1
  166. package/dist/tui-memory-counters.d.ts +2 -1
  167. package/dist/ui-contracts.d.ts +1 -1
  168. package/dist/ui-glyphs.d.ts +3 -1
  169. package/dist/workbench-slash.d.ts +2 -1
  170. package/package.json +9 -9
  171. package/dist/react-children-flatten.d.ts +0 -28
package/dist/ink.d.ts CHANGED
@@ -9,7 +9,7 @@ type BoxOwnProps = Omit<ComponentProps<typeof InkBox>, 'ref' | 'borderColor' | '
9
9
  backgroundColor?: string | undefined;
10
10
  };
11
11
  export { Static, measureElement, useAnimation, useApp, useInput, useStdin, useStdout, } from 'ink';
12
- export type { BoxProps, DOMElement, TextProps, Key } from 'ink';
12
+ export type { DOMElement, Key } from 'ink';
13
13
  /** Ink `Text` with `color`/`backgroundColor` remapped to the pastel palette. */
14
14
  export declare function Text({ color, backgroundColor, ...rest }: TextOwnProps): ReactElement;
15
15
  /**
@@ -50,7 +50,7 @@ export declare function nextInputWordStart(buffer: string, cursor: number): numb
50
50
  * should land in it. `null` means there is nothing to delete (cursor at
51
51
  * the relevant boundary).
52
52
  */
53
- export interface WordDeleteResult {
53
+ interface WordDeleteResult {
54
54
  buffer: string;
55
55
  cursor: number;
56
56
  }
@@ -73,4 +73,5 @@ export declare function deleteWordBackward(buffer: string, cursor: number): Word
73
73
  * following word run is removed.
74
74
  */
75
75
  export declare function deleteWordForward(buffer: string, cursor: number): WordDeleteResult | null;
76
+ export {};
76
77
  //# sourceMappingURL=input-editing.d.ts.map
@@ -32,7 +32,7 @@ export declare function tokenSpanAt(buffer: string, cursor: number): {
32
32
  start: number;
33
33
  end: number;
34
34
  } | null;
35
- export interface ChipSpan {
35
+ interface ChipSpan {
36
36
  text: string;
37
37
  /** True for an attachment chip token, false for a plain run. */
38
38
  chip: boolean;
@@ -68,4 +68,5 @@ export declare function layoutInputRows(prompt: string, value: string, cursor: n
68
68
  * buffer. Exported for the TUI input-click handler and unit tests.
69
69
  */
70
70
  export declare function inputIndexAtRowCol(prompt: string, value: string, width: number, row: number, col: number): number;
71
+ export {};
71
72
  //# sourceMappingURL=input-tokens.d.ts.map
@@ -1,4 +1,4 @@
1
1
  /** Known reducer action types — exact, compile-time checked allow-list. */
2
- export declare const ALLOWED_ACTION_TYPES: readonly ["addEntry", "archiveLoaded", "startArchiveLoad", "authBusy", "authCatalog", "authClose", "authConfirmEnd", "authConfirmStart", "authFilter", "authFlowDone", "authFlowLog", "authFlowStart", "authHint", "authMove", "authOpen", "authPromptChange", "authPromptEnd", "authPromptStart", "authProviders", "authView", "autonomyPickerClose", "autonomyPickerHint", "autonomyPickerMove", "autonomyPickerOpen", "brainBusy", "brainClose", "brainHint", "brainMove", "brainOpen", "brainPromptClear", "brainPromptSet", "brainRiskChange", "brainRowMove", "brainSetLog", "brainSettingsLoaded", "brainStatus", "brainView", "checkpointReceived", "clearConfirmClose", "clearConfirmOpen", "clearConfirmSetValue", "clearHistory", "clearInput", "clearInputHistory", "closeAllPanels", "collabBugFound", "collabEvalComplete", "sidebarScroll", "sidebarScrollReset", "toggleSidebarFocus", "skillPickerClose", "skillPickerHint", "skillPickerMove", "skillPickerOpen", "resourceMenuClose", "resourceMenuConfirm", "resourceMenuFilter", "resourceMenuHint", "resourceMenuMove", "resourceMenuOpen", "collabPlanEmitted", "collabSessionDone", "collabSubagentSpawned", "compactHistory", "confirmClearAll", "confirmClose", "confirmOpen", "continueConfirmClose", "continueConfirmOpen", "copiedNotice", "coordinatorEvent", "countdownEnded", "countdownTick", "debugStreamStats", "debugStreamStatsClear", "dequeueFirst", "designPickerClose", "designPickerMove", "designPickerOpen", "designPickerStack", "enhanceBusy", "enhanceClose", "enhanceOpen", "enhanceSet", "enqueue", "escConfirmClose", "escConfirmOpen", "fallbackOverlayClose", "fallbackOverlayMove", "fallbackOverlayOpen", "eternalStage", "exitConfirmClose", "exitConfirmOpen", "fKeyPickerClose", "fKeyPickerMove", "fKeyPickerOpen", "fleetBatch", "fleetBudgetExtended", "fleetBudgetWarning", "fleetConcurrency", "fleetCost", "fleetCtxPct", "fleetDelta", "fleetDone", "fleetMessage", "fleetRemove", "fleetSeed", "fleetSpawn", "fleetStart", "fleetTool", "fleetToolEnd", "fleetToolStart", "fleetUsage", "goalRunElapsed", "goalRunInit", "goalRunMonitorToggle", "goalRunPhaseUpdate", "goalRunReset", "goalRunRunningPhases", "goalRunTaskActive", "goalSummary", "helpClose", "helpFilter", "helpHint", "helpMove", "helpOpen", "hint", "historyDown", "historyPush", "historyUp", "interrupt", "leaderCtxPct", "leaderIterEnd", "leaderIterStart", "leaderToolEnd", "leaderToolStart", "mcpPickerBusy", "mcpPickerClose", "mcpPickerHint", "mcpPickerMove", "mcpPickerOpen", "mcpPickerSetItems", "modePickerClose", "modePickerHint", "modePickerMove", "modePickerOpen", "modelPickerBack", "modelPickerClose", "modelPickerHint", "modelPickerMove", "modelPickerOpen", "modelPickerPickProvider", "modelPickerSearch", "pickerClose", "pickerMove", "pickerOpen", "pickerSetMatches", "pluginPickerBusy", "pluginPickerClose", "pluginPickerHint", "pluginPickerMove", "pluginPickerOpen", "pluginPickerSetItems", "projectPickerClose", "projectPickerFilter", "projectPickerHint", "projectPickerMove", "projectPickerOpen", "promptPickerCategory", "promptPickerClose", "promptPickerMove", "promptPickerOpen", "queueClear", "queueDelete", "queueToggleRefine", "refineCountdownClose", "refineCountdownOpen", "refineFailureClose", "refineFailureOpen", "replaceHistory", "resetContextChip", "resetInterrupts", "resumePickerBusy", "resumePickerClose", "resumePickerError", "resumePickerHint", "resumePickerMove", "resumePickerOpen", "rewindOverlayClose", "rewindOverlayMove", "rewindOverlayOpen", "sddBoardSnapshot", "sddBoardFocusNext", "sddBoardFocusPrev", "sendModePickerClose", "sendModePickerMove", "sendModePickerOpen", "sessionResumeConfirmClear", "sessionResumeConfirmSet", "sessionRewound", "sessionsPanelBusy", "sessionsPanelMove", "sessionsPanelSet", "setBuffer", "setFleetChat", "setHistoryScrolled", "setInputHistory", "setViewportRows", "settingsClose", "settingsFieldMove", "settingsFieldSet", "settingsFilterSet", "settingsHint", "settingsOpen", "settingsThinkingEditCancel", "settingsThinkingEditChange", "settingsThinkingEditCommit", "settingsThinkingEditStart", "settingsWrongProxyUrlEditCancel", "settingsWrongProxyUrlEditChange", "settingsWrongProxyUrlEditCommit", "settingsWrongProxyUrlEditStart", "settingsValueChange", "settingsValueSet", "shadowClose", "shadowHint", "shadowOpen", "shadowUpdate", "shellCommandWarningClose", "shellCommandWarningOpen", "slashConfirmClose", "slashConfirmOpen", "slashPickerClose", "slashPickerMove", "slashPickerOpen", "status", "statuslineChipExpire", "statuslineChipShow", "statuslineClose", "statuslineFieldMove", "statuslineFieldSet", "statuslineHint", "statuslineOpen", "statuslineToggle", "statuslineVisibleChipsSync", "steerConsume", "steerStart", "streamDelta", "streamReset", "themePickerClose", "themePickerHint", "themePickerMove", "themePickerOpen", "toggleAgentsMonitor", "toggleAuditPanel", "toggleContextPanel", "toggleConnectionsPanel", "toggleCoordinatorMonitor", "toggleCronMonitor", "toggleGoalKanbanPanel", "toggleGoalPanel", "toggleHelp", "toggleKanbanPanel", "toggleMonitor", "togglePlanPanel", "toggleProcessList", "toggleQueuePanel", "toggleSddBoardMonitor", "toggleSessionsPanel", "toggleTodosMonitor", "toggleWorktreeMonitor", "toolEnded", "toolStarted", "toolStreamAppend", "toolStreamClear", "topicCheckBusy", "toolsPickerBusy", "toolsPickerClose", "toolsPickerFilter", "toolsPickerHint", "toolsPickerMove", "toolsPickerOpen", "toolsPickerSetItems", "toolsPickerToggle", "worktreeRemove", "worktreeUpsert"];
2
+ export declare const ALLOWED_ACTION_TYPES: readonly ["addEntry", "archiveLoaded", "startArchiveLoad", "authBusy", "authCatalog", "authClose", "authConfirmEnd", "authConfirmStart", "authFilter", "authFlowDone", "authFlowLog", "authFlowStart", "authHint", "authMove", "authOpen", "authPromptChange", "authPromptEnd", "authPromptStart", "authProviders", "authView", "autonomyPickerClose", "autonomyPickerHint", "autonomyPickerMove", "autonomyPickerOpen", "brainBusy", "brainClose", "brainHint", "brainMove", "brainOpen", "brainPromptClear", "brainPromptSet", "brainRiskChange", "brainRowMove", "brainSetLog", "brainSettingsLoaded", "brainStatus", "brainView", "checkpointReceived", "clearConfirmClose", "clearConfirmOpen", "clearConfirmSetValue", "clearHistory", "clearInput", "clearInputHistory", "closeAllPanels", "collabBugFound", "collabEvalComplete", "sidebarScroll", "sidebarScrollReset", "toggleSidebarFocus", "skillPickerClose", "skillPickerHint", "skillPickerMove", "skillPickerOpen", "resourceMenuClose", "resourceMenuConfirm", "resourceMenuFilter", "resourceMenuHint", "resourceMenuMove", "resourceMenuOpen", "collabPlanEmitted", "collabSessionDone", "collabSubagentSpawned", "compactHistory", "confirmClearAll", "confirmClose", "confirmOpen", "continueConfirmClose", "continueConfirmOpen", "copiedNotice", "coordinatorEvent", "countdownEnded", "countdownTick", "debugStreamStats", "debugStreamStatsClear", "dequeueFirst", "designPickerClose", "designPickerMove", "designPickerOpen", "designPickerStack", "enhanceBusy", "enhanceClose", "enhanceOpen", "enhanceSet", "enqueue", "escConfirmClose", "escConfirmOpen", "fallbackOverlayClose", "fallbackOverlayMove", "fallbackOverlayOpen", "eternalStage", "exitConfirmClose", "exitConfirmOpen", "fKeyPickerClose", "fKeyPickerMove", "fKeyPickerOpen", "fleetBatch", "fleetBudgetExtended", "fleetBudgetWarning", "fleetConcurrency", "fleetCost", "fleetCtxPct", "fleetDelta", "fleetDone", "fleetMessage", "fleetRemove", "fleetSeed", "fleetSpawn", "fleetStart", "fleetTool", "fleetToolEnd", "fleetToolStart", "fleetUsage", "goalRunElapsed", "goalRunInit", "goalRunMonitorToggle", "goalRunPhaseUpdate", "goalRunReset", "goalRunRunningPhases", "goalRunTaskActive", "goalSummary", "helpClose", "helpFilter", "helpHint", "helpMove", "helpOpen", "hint", "historyDown", "historyPush", "historyUp", "interrupt", "leaderCtxPct", "leaderIterEnd", "leaderIterStart", "leaderToolEnd", "leaderToolStart", "mcpPickerBusy", "mcpPickerClose", "mcpPickerHint", "mcpPickerMove", "mcpPickerOpen", "mcpPickerSetItems", "modePickerClose", "modePickerHint", "modePickerMove", "modePickerOpen", "modelPickerBack", "modelPickerClose", "modelPickerHint", "modelPickerMove", "modelPickerOpen", "modelPickerPickProvider", "modelPickerSearch", "pickerClose", "pickerMove", "pickerOpen", "pickerSetMatches", "pluginPickerBusy", "pluginPickerClose", "pluginPickerHint", "pluginPickerMove", "pluginPickerOpen", "pluginPickerSetItems", "projectPickerClose", "projectPickerFilter", "projectPickerHint", "projectPickerMove", "projectPickerOpen", "promptPickerCategory", "promptPickerClose", "promptPickerMove", "promptPickerOpen", "queueClear", "queueDelete", "queueToggleRefine", "refineCountdownClose", "refineCountdownOpen", "refineFailureClose", "refineFailureOpen", "replaceHistory", "autoProceedRelease", "resumeLoadStart", "resumeLoadTick", "resumeStreamChunk", "resumeLoadAbort", "resetContextChip", "resetInterrupts", "resumePickerBusy", "resumePickerClose", "resumePickerError", "resumePickerHint", "resumePickerMove", "resumePickerOpen", "rewindOverlayClose", "rewindOverlayMove", "rewindOverlayOpen", "sddBoardSnapshot", "sddBoardFocusNext", "sddBoardFocusPrev", "sendModePickerClose", "sendModePickerMove", "sendModePickerOpen", "sessionResumeConfirmClear", "sessionResumeConfirmSet", "sessionRewound", "sessionsPanelBusy", "sessionsPanelMove", "sessionsPanelSet", "setBuffer", "setFleetChat", "setHistoryScrolled", "setInputHistory", "setViewportRows", "settingsClose", "settingsFieldMove", "settingsFieldSet", "settingsFilterSet", "settingsHint", "settingsOpen", "settingsThinkingEditCancel", "settingsThinkingEditChange", "settingsThinkingEditCommit", "settingsThinkingEditStart", "settingsWrongProxyUrlEditCancel", "settingsWrongProxyUrlEditChange", "settingsWrongProxyUrlEditCommit", "settingsWrongProxyUrlEditStart", "settingsValueChange", "settingsValueSet", "shadowClose", "shadowHint", "shadowOpen", "shadowUpdate", "shellCommandWarningClose", "shellCommandWarningOpen", "slashConfirmClose", "slashConfirmOpen", "slashPickerClose", "slashPickerMove", "slashPickerOpen", "status", "statuslineChipExpire", "statuslineChipShow", "statuslineClose", "statuslineFieldMove", "statuslineFieldSet", "statuslineHint", "statuslineOpen", "statuslineToggle", "statuslineVisibleChipsSync", "steerConsume", "steerStart", "streamDelta", "streamReset", "themePickerClose", "themePickerHint", "themePickerMove", "themePickerOpen", "toggleAgentsMonitor", "toggleAuditPanel", "toggleContextPanel", "toggleConnectionsPanel", "toggleCoordinatorMonitor", "toggleCronMonitor", "toggleGoalKanbanPanel", "toggleGoalPanel", "toggleHelp", "toggleKanbanPanel", "toggleMonitor", "togglePlanPanel", "toggleProcessList", "toggleQueuePanel", "toggleSddBoardMonitor", "toggleSessionsPanel", "toggleTodosMonitor", "toggleWorktreeMonitor", "toolEnded", "toolStarted", "toolStreamAppend", "toolStreamClear", "topicCheckBusy", "toolsPickerBusy", "toolsPickerClose", "toolsPickerFilter", "toolsPickerHint", "toolsPickerMove", "toolsPickerOpen", "toolsPickerSetItems", "toolsPickerToggle", "worktreeRemove", "worktreeUpsert"];
3
3
  export type AllowedActionType = (typeof ALLOWED_ACTION_TYPES)[number];
4
4
  //# sourceMappingURL=action-types.d.ts.map
@@ -51,12 +51,12 @@
51
51
  * ONE place so the allowed set is auditable.
52
52
  */
53
53
  import type { ValidationResult } from './input-validation/result.js';
54
- export { ALLOWED_ACTION_TYPES, type AllowedActionType, } from './input-validation/action-types.js';
55
- export { ALLOWED_AUTONOMY_MODES, ALLOWED_CAPABILITY_FIELDS, ALLOWED_COLLAB_VERDICTS, ALLOWED_ENTRY_KINDS, ALLOWED_FLEET_CHAT_MODES, ALLOWED_FLEET_STATUSES, ALLOWED_KEY_EVENT_FIELDS, ALLOWED_MOUSE_BUTTONS, ALLOWED_MOUSE_KINDS, ALLOWED_PICKER_KINDS, ALLOWED_SCROLL_DIRS, ALLOWED_SDD_OPS, ALLOWED_SEND_MODES, TEXT_BEARING_ENTRY_KINDS, } from './input-validation/allow-lists.js';
56
- export { MAX_ACTION_DEPTH, MAX_ACTION_STRING_FIELD, MAX_BATCHED_ACTIONS, MAX_ENTRY_TEXT_CHARS, MAX_FLEET_ENTRIES, MAX_HISTORY_ENTRIES, MAX_HOST_STRING_FIELD, MAX_INPUT_BUFFER_CHARS, MAX_PASTE_CHARS, MAX_PASTE_FRAGMENT_CHARS, MAX_PICKER_MATCHES, MAX_RECENT_MESSAGES, MAX_RECENT_TOOLS, } from './input-validation/limits.js';
54
+ export { ALLOWED_ACTION_TYPES } from './input-validation/action-types.js';
55
+ export { ALLOWED_ENTRY_KINDS, ALLOWED_FLEET_STATUSES, ALLOWED_KEY_EVENT_FIELDS, ALLOWED_MOUSE_BUTTONS, ALLOWED_MOUSE_KINDS, TEXT_BEARING_ENTRY_KINDS } from './input-validation/allow-lists.js';
56
+ export { MAX_ACTION_DEPTH, MAX_ACTION_STRING_FIELD, MAX_BATCHED_ACTIONS, MAX_ENTRY_TEXT_CHARS, MAX_FLEET_ENTRIES, MAX_HISTORY_ENTRIES, MAX_INPUT_BUFFER_CHARS, MAX_PASTE_CHARS, MAX_PASTE_FRAGMENT_CHARS, MAX_PICKER_MATCHES, MAX_RECENT_MESSAGES, MAX_RECENT_TOOLS } from './input-validation/limits.js';
57
57
  export type { ValidationError, ValidationOk, ValidationResult, } from './input-validation/result.js';
58
58
  export { validateFleetEntry, validateRestoreEntry } from './input-validation/state-entries.js';
59
- export { validateKeyEventFields, validateMouseEvent, validatePasteContent, validateStdinFragment, } from './input-validation/terminal.js';
59
+ export { validateMouseEvent, validatePasteContent, validateStdinFragment } from './input-validation/terminal.js';
60
60
  export declare function validateAction(action: {
61
61
  type: string;
62
62
  [key: string]: unknown;
@@ -29,7 +29,7 @@ import { type KanbanAuditSummary } from './kanban-audit.js';
29
29
  * We mirror that exact precedence so a `/kanban add` issued while the panel
30
30
  * is open lands on the same board the user is looking at.
31
31
  */
32
- export interface KanbanAddTarget {
32
+ interface KanbanAddTarget {
33
33
  boardId: string;
34
34
  boardTitle: string;
35
35
  /** Column that the task will be placed in. Defaults to the first column. */
@@ -49,8 +49,11 @@ export interface KanbanSlashDeps {
49
49
  * subdirectory of the project.
50
50
  */
51
51
  projectRoot: string;
52
- /** Optional session id; when present, prefer a `session:<id>`-tagged board. */
53
- sessionId?: string | null | undefined;
52
+ /**
53
+ * Session running the TUI. Used to prefer a `session:<id>`-tagged board, and
54
+ * to attribute every board event `/kanban` writes.
55
+ */
56
+ sessionId: string;
54
57
  /**
55
58
  * Panel-open bridge installed by `App`. Calling `onPanelOpen.current(...)`
56
59
  * with `'toggleKanbanPanel'` opens the kanban panel — same mechanism the
@@ -71,7 +74,7 @@ export interface KanbanSlashDeps {
71
74
  terminalWidth?: number | undefined;
72
75
  }
73
76
  export declare function createKanbanSlashCommand(deps: KanbanSlashDeps): SlashCommand;
74
- export type ParsedKanbanArgs = {
77
+ type ParsedKanbanArgs = {
75
78
  kind: 'open';
76
79
  } | {
77
80
  kind: 'help';
@@ -130,20 +133,6 @@ export declare function parseKanbanArgs(raw: string): ParsedKanbanArgs;
130
133
  * Exported so tests can validate the precedence rules against fixture boards.
131
134
  */
132
135
  export declare function resolveAddTarget(deps: Pick<KanbanSlashDeps, 'projectRoot' | 'sessionId'>, column: string | null): Promise<KanbanAddTarget | null>;
133
- /**
134
- * Resolve a user-supplied board query to a specific board. Three match
135
- * strategies are tried in order:
136
- *
137
- * 1. **Exact id match** — fastest, never ambiguous.
138
- * 2. **Exact title match** (case-insensitive) — what `/kanban use Sprint 2`
139
- * should hit when the user types the title verbatim.
140
- * 3. **Tag match** — for `goal:<text>` or `session:<id>` tags so the
141
- * Goal → Kanban bridge can navigate by tag without knowing the id.
142
- *
143
- * Returns null when no summary matches. The caller can then surface a
144
- * helpful error pointing at `/kanban boards`.
145
- */
146
- export declare function resolveBoardByQuery(deps: Pick<KanbanSlashDeps, 'projectRoot'>, query: string): Promise<KanbanBoardSummary | null>;
147
136
  /**
148
137
  * Render the kanban queue health report as a compact markdown block.
149
138
  * Surfaces the same Sprint-2 fields the WebUI's `KanbanView` shows
@@ -151,20 +140,6 @@ export declare function resolveBoardByQuery(deps: Pick<KanbanSlashDeps, 'project
151
140
  * plus per-status counts and the last dispatch / last recovery stamps.
152
141
  */
153
142
  export declare function renderHealthReport(health: KanbanQueueHealth): string;
154
- /**
155
- * Render the Kanban Cleaner audit across the project. Mirrors the WebUI
156
- * `KanbanCleanerAlert` vocabulary so a user running either surface gets
157
- * the same findings.
158
- *
159
- * Two modes:
160
- * - `boardQuery` empty → audit every board (per-board table).
161
- * - `boardQuery` present → audit the single matching board, or report
162
- * a clear "not found" error.
163
- *
164
- * Each board's row shows the issue counts (error · warning) and the
165
- * top-3 issues, biasing toward error severity first.
166
- */
167
- export declare function renderProjectAudit(deps: Pick<KanbanSlashDeps, 'projectRoot'>, boardQuery: string): Promise<string>;
168
143
  /**
169
144
  * Render a board-row table from a list of audited boards. The output
170
145
  * is a compact markdown block suitable for the slash composer.
@@ -182,4 +157,5 @@ export declare function renderAuditReport(rows: ReadonlyArray<{
182
157
  * useful output (column titles truncated, counts abbreviated).
183
158
  */
184
159
  export declare function renderBoardsList(boards: readonly KanbanBoardSummary[], width?: number): string;
160
+ export {};
185
161
  //# sourceMappingURL=kanban-slash.d.ts.map
@@ -11,7 +11,7 @@
11
11
  * Calls should be batched; writes are debounced (500ms idle after last set).
12
12
  */
13
13
  import type { EntryLayout } from './layout-engine.js';
14
- export interface LayoutStoreOptions {
14
+ interface LayoutStoreOptions {
15
15
  /** Directory where the session's layout snapshot is stored. */
16
16
  sessionDataDir: string | undefined;
17
17
  /** When true, skip all disk I/O (for testing / no-session mode). */
@@ -93,4 +93,5 @@ export declare class LayoutStore {
93
93
  /** Cancel any pending flush. */
94
94
  private cancelFlush;
95
95
  }
96
+ export {};
96
97
  //# sourceMappingURL=layout-store.d.ts.map
@@ -1,4 +1,4 @@
1
- import { breakTerminalLigatures, displayWidth } from './terminal-width.js';
1
+ import { displayWidth } from './terminal-width.js';
2
2
  /**
3
3
  * Scan a body of prose for GitHub-flavoured markdown tables and replace
4
4
  * each one with a Unicode box-drawing rendering that fits the terminal
@@ -25,6 +25,4 @@ export declare function detectTable(lines: string[], start: number): number;
25
25
  export declare function renderTable(tableLines: string[], maxWidth: number): string;
26
26
  /** Same width implementation used by Ink's own Yoga measurement/output path. */
27
27
  export declare const strWidth: typeof displayWidth;
28
- /** Backward-compatible table export; ligature handling now lives centrally. */
29
- export declare const breakLigatures: typeof breakTerminalLigatures;
30
28
  //# sourceMappingURL=markdown-table.d.ts.map
@@ -1,4 +1,4 @@
1
- export interface MemoryContextDetail {
1
+ interface MemoryContextDetail {
2
2
  id: string;
3
3
  kind: string;
4
4
  text: string;
@@ -31,7 +31,7 @@ export interface MemoryContextTransition {
31
31
  action: 'injected' | 'entered' | 'exited';
32
32
  reason: string;
33
33
  }
34
- export interface MemoryInjectorSummary {
34
+ interface MemoryInjectorSummary {
35
35
  at: string;
36
36
  trigger: string;
37
37
  matched: number;
@@ -61,4 +61,5 @@ export declare function memoryEventMatchesSession(payload: unknown, currentSessi
61
61
  export declare function readMemoryRecordTotal(store: unknown): Promise<number | undefined>;
62
62
  export declare function applyMemoryInjectorRun(state: MemoryContextMonitorState, payload: Record<string, unknown>): MemoryContextMonitorState;
63
63
  export declare function applyMemoryContextSnapshot(state: MemoryContextMonitorState, payload: Record<string, unknown>): MemoryContextMonitorState;
64
+ export {};
64
65
  //# sourceMappingURL=memory-context-monitor.d.ts.map
@@ -1,8 +1,9 @@
1
1
  export type MemoryLifecycleAction = 'entered' | 'updated' | 'merged' | 'recovered' | 'exited' | 'related' | 'superseded' | 'archived' | 'staled' | 'contradicted';
2
- export interface MemoryLifecycleEntryData {
2
+ interface MemoryLifecycleEntryData {
3
3
  action: MemoryLifecycleAction;
4
4
  label: string;
5
5
  detail?: string | undefined;
6
6
  }
7
7
  export declare function memoryLifecycleEntry(event: string, payload: Record<string, unknown>): MemoryLifecycleEntryData | null;
8
+ export {};
8
9
  //# sourceMappingURL=memory-lifecycle-entry.d.ts.map
@@ -3,7 +3,6 @@ export declare const SCOPE_LABEL: Record<MemoryScope, string>;
3
3
  export declare const TYPE_EMOJI: Record<MemoryType, string>;
4
4
  export declare const PRIORITY_EMOJI: Record<MemoryPriority, string>;
5
5
  export declare const KIND_EMOJI: Record<string, string>;
6
- export declare function parseDate(ts: string): Date | null;
7
6
  export declare function daysAgo(ts: string, now?: number): number | null;
8
7
  export declare function fmtDate(ts: string): string;
9
8
  export declare function recencyLabel(days: number | null): string;
package/dist/mouse.d.ts CHANGED
@@ -67,8 +67,8 @@ export declare const ALT_SCREEN_ON: string;
67
67
  * Exit the alternate screen buffer (DECRST 1049), restoring the normal screen.
68
68
  */
69
69
  export declare const ALT_SCREEN_OFF: string;
70
- export type MouseEventKind = 'press' | 'release' | 'move' | 'wheel';
71
- export type MouseButton = 'left' | 'middle' | 'right' | 'none';
70
+ type MouseEventKind = 'press' | 'release' | 'move' | 'wheel';
71
+ type MouseButton = 'left' | 'middle' | 'right' | 'none';
72
72
  export interface MouseEventInfo {
73
73
  kind: MouseEventKind;
74
74
  button: MouseButton;
@@ -124,4 +124,5 @@ export declare function splitTrailingMousePartial(data: string): {
124
124
  * The input layer drops these so they never land in the buffer as typed text.
125
125
  */
126
126
  export declare function isLeakedMouseInput(input: string): boolean;
127
+ export {};
127
128
  //# sourceMappingURL=mouse.d.ts.map
@@ -12,7 +12,7 @@ import type { SettingsCapabilities } from './tui-host-capabilities.js';
12
12
  * of whatever picker happened to be open (worst case: the project picker,
13
13
  * where confirm triggers an exit-42 respawn).
14
14
  */
15
- export interface PointerOverlayGeometry {
15
+ interface PointerOverlayGeometry {
16
16
  termRows: number;
17
17
  viewportRows: number;
18
18
  }
@@ -20,7 +20,7 @@ export declare function overlayPointerKey(state: State, input: string, key: KeyE
20
20
  isEnter: boolean;
21
21
  cancelAction: Action | null;
22
22
  };
23
- export interface BusyInterruptKeyHost {
23
+ interface BusyInterruptKeyHost {
24
24
  readonly state: State;
25
25
  readonly dismissedAt: MutableCell<number>;
26
26
  readonly streamingText: MutableCell<string>;
@@ -37,7 +37,7 @@ export interface BusyInterruptKeyHost {
37
37
  * runs an Esc press really means "interrupt the run".
38
38
  */
39
39
  export declare function routeBusyInterruptKey(host: BusyInterruptKeyHost, key: KeyEvent): boolean;
40
- export interface ModalOverlayKeyHost {
40
+ interface ModalOverlayKeyHost {
41
41
  readonly state: State;
42
42
  readonly enhanceCancelled: MutableCell<boolean>;
43
43
  readonly enhanceController: MutableCell<AbortController | null>;
@@ -45,7 +45,7 @@ export interface ModalOverlayKeyHost {
45
45
  }
46
46
  /** Route the modal overlay ladder that has precedence over every composer key. */
47
47
  export declare function routeModalOverlayKey(host: ModalOverlayKeyHost, input: string, key: KeyEvent): boolean;
48
- export interface SettingsOverlayKeyHost {
48
+ interface SettingsOverlayKeyHost {
49
49
  readonly state: State;
50
50
  readonly getSettings: SettingsCapabilities['getSettings'];
51
51
  readonly saveSettings: SettingsCapabilities['saveSettings'];
@@ -61,4 +61,5 @@ export declare function routeSettingsOverlayKey(host: SettingsOverlayKeyHost, in
61
61
  * swallowing every key here froze the composer with no visible panel.
62
62
  */
63
63
  export declare function routePanelEscapeKey(state: State, key: KeyEvent, dispatch: (action: Action) => void, processListOnBottom: boolean): boolean;
64
+ export {};
64
65
  //# sourceMappingURL=overlay-key-router.d.ts.map
@@ -1,8 +1,8 @@
1
- export interface PasteOverflowState {
1
+ interface PasteOverflowState {
2
2
  readonly overflow: true;
3
3
  }
4
4
  export type PasteAccumState = string | PasteOverflowState | null;
5
- export interface PasteFeedResult {
5
+ interface PasteFeedResult {
6
6
  /** New accumulator state: text while buffering, overflow marker, or `null` when idle. */
7
7
  accum: PasteAccumState;
8
8
  /**
@@ -22,4 +22,5 @@ export interface PasteFeedResult {
22
22
  * handle it as normal input); otherwise the updated accumulation state.
23
23
  */
24
24
  export declare function feedPaste(accum: PasteAccumState, input: string): PasteFeedResult | null;
25
+ export {};
25
26
  //# sourceMappingURL=paste-accumulator.d.ts.map
@@ -1,7 +1,7 @@
1
1
  interface MutableSlot<T> {
2
2
  current: T;
3
3
  }
4
- export interface StartPromptRefinementOptions<T> {
4
+ interface StartPromptRefinementOptions<T> {
5
5
  original: string;
6
6
  controller: AbortController;
7
7
  originalSlot: MutableSlot<string>;
@@ -1,6 +1,6 @@
1
1
  import type { Action } from '../app-action-type.js';
2
2
  import type { State } from '../app-state.js';
3
- declare const composerActionTypes: readonly ["brainPromptSet", "brainPromptClear", "pickerOpen", "pickerClose", "pickerSetMatches", "pickerMove", "toolStarted", "toolEnded", "toolStreamAppend", "toolStreamClear", "enqueue", "dequeueFirst", "queueClear", "queueDelete", "queueToggleRefine", "slashPickerOpen", "slashPickerClose", "slashPickerMove", "historyPush", "historyUp", "historyDown", "setInputHistory", "clearInputHistory", "modelPickerOpen", "modelPickerClose", "modelPickerMove", "modelPickerPickProvider", "modelPickerBack", "modelPickerSearch", "modelPickerHint", "autonomyPickerOpen", "autonomyPickerClose", "autonomyPickerMove", "autonomyPickerHint", "themePickerOpen", "themePickerClose", "themePickerMove", "themePickerHint", "modePickerOpen", "modePickerClose", "modePickerMove", "modePickerHint", "skillPickerOpen", "skillPickerClose", "skillPickerMove", "skillPickerHint", "resourceMenuOpen", "resourceMenuClose", "resourceMenuMove", "resourceMenuHint", "resourceMenuFilter", "resourceMenuConfirm", "designPickerOpen", "designPickerClose", "designPickerMove", "designPickerStack", "promptPickerOpen", "promptPickerClose", "promptPickerMove", "promptPickerCategory", "resumePickerOpen", "resumePickerClose", "resumePickerMove", "resumePickerBusy", "resumePickerHint", "resumePickerError", "replaceHistory"];
3
+ declare const composerActionTypes: readonly ["brainPromptSet", "brainPromptClear", "pickerOpen", "pickerClose", "pickerSetMatches", "pickerMove", "toolStarted", "toolEnded", "toolStreamAppend", "toolStreamClear", "enqueue", "dequeueFirst", "queueClear", "queueDelete", "queueToggleRefine", "slashPickerOpen", "slashPickerClose", "slashPickerMove", "historyPush", "historyUp", "historyDown", "setInputHistory", "clearInputHistory", "modelPickerOpen", "modelPickerClose", "modelPickerMove", "modelPickerPickProvider", "modelPickerBack", "modelPickerSearch", "modelPickerHint", "autonomyPickerOpen", "autonomyPickerClose", "autonomyPickerMove", "autonomyPickerHint", "themePickerOpen", "themePickerClose", "themePickerMove", "themePickerHint", "modePickerOpen", "modePickerClose", "modePickerMove", "modePickerHint", "skillPickerOpen", "skillPickerClose", "skillPickerMove", "skillPickerHint", "resourceMenuOpen", "resourceMenuClose", "resourceMenuMove", "resourceMenuHint", "resourceMenuFilter", "resourceMenuConfirm", "designPickerOpen", "designPickerClose", "designPickerMove", "designPickerStack", "promptPickerOpen", "promptPickerClose", "promptPickerMove", "promptPickerCategory", "resumePickerOpen", "resumePickerClose", "resumePickerMove", "resumePickerBusy", "resumePickerHint", "resumePickerError", "replaceHistory", "resumeLoadStart", "resumeLoadTick", "resumeStreamChunk", "resumeLoadAbort"];
4
4
  type ComposerAction = Extract<Action, {
5
5
  type: (typeof composerActionTypes)[number];
6
6
  }>;
@@ -1,6 +1,6 @@
1
1
  import type { Action } from '../app-action-type.js';
2
2
  import type { State } from '../app-state.js';
3
- declare const conversationActionTypes: readonly ["addEntry", "archiveLoaded", "startArchiveLoad", "compactHistory", "setBuffer", "clearInput", "clearHistory", "streamDelta", "streamReset", "status", "interrupt", "steerStart", "steerConsume", "resetInterrupts", "hint", "copiedNotice", "brainStatus"];
3
+ declare const conversationActionTypes: readonly ["addEntry", "archiveLoaded", "startArchiveLoad", "compactHistory", "autoProceedRelease", "setBuffer", "clearInput", "clearHistory", "streamDelta", "streamReset", "status", "interrupt", "steerStart", "steerConsume", "resetInterrupts", "hint", "copiedNotice", "brainStatus"];
4
4
  type ConversationAction = Extract<Action, {
5
5
  type: (typeof conversationActionTypes)[number];
6
6
  }>;
@@ -12,12 +12,25 @@ export declare const MAX_ASSISTANT_STREAM_RETAINED_CHARS = 16384;
12
12
  * Reducer stream state is only the live rendering tail, not the canonical
13
13
  * provider response; completed output remains available from the committed
14
14
  * history entry and session log.
15
+ *
16
+ * `maxChars` is a HIGH-WATER mark, not an exact cap: the buffer may grow to
17
+ * `2 * maxChars` and is then cut back to `maxChars`. Trimming on every delta
18
+ * looks tidier but costs O(current) PER TOKEN — V8 has to flatten the
19
+ * accumulated rope before it can slice it, so a saturated buffer memcpy'd its
20
+ * whole length for every token that arrived. Measured over 60k deltas into a
21
+ * 64KB buffer: 139ms trimming eagerly versus 1.2ms with this high-water cut,
22
+ * for the same retained tail. The fleet bridge runs three of these per delta
23
+ * per subagent, so that cost multiplied.
24
+ *
25
+ * Guarantees: the result always ends with `delta`, always retains at least the
26
+ * most recent `maxChars` characters written, and never exceeds `2 * maxChars`.
27
+ * Callers hold a live rendering tail whose exact length the user cannot
28
+ * observe, so the doubled ceiling (128KB at the largest call site, against the
29
+ * 500k-char entry limit in `input-validation/limits.ts`) buys the per-token
30
+ * copy away.
15
31
  */
16
32
  export declare function retainStreamTail(current: string, delta: string, maxChars: number): string;
17
- /** Caps applied to tool `input` payloads before retention in history entries. */
18
- export declare const MAX_RETAINED_INPUT_CHARS = 2048;
19
33
  export declare const MAX_RETAINED_INPUT_DEPTH = 4;
20
- export declare const MAX_RETAINED_INPUT_ITEMS = 64;
21
34
  /**
22
35
  * Deep-truncate a tool input for long-term retention in history entries.
23
36
  * Strings are capped per-string, arrays/objects are capped in breadth and
@@ -0,0 +1,131 @@
1
+ /**
2
+ * The `/resume` loading experience.
3
+ *
4
+ * A resume has two phases with completely different pacing, and the screen has
5
+ * to say which one it is in:
6
+ *
7
+ * 1. **reading** — seconds of work with nothing to show. The journal is parsed
8
+ * (measured: 0.4s for 18 MB, 2.7s for 131 MB), ownership is claimed, the
9
+ * writer is opened. This phase gets a live block: a spinner, a byte-progress
10
+ * bar, and a rolling tail of the stages the host actually reports. Before
11
+ * this existed the screen simply froze on the old transcript with one static
12
+ * line, which is why a working resume read as a hang.
13
+ * 2. **replaying** — the transcript itself, streamed in in small batches so it
14
+ * scrolls into place the way it did when it was live, instead of appearing
15
+ * as one instantaneous wall of text.
16
+ *
17
+ * Everything here is pure so the block can be asserted on directly; the reducer
18
+ * owns the state and the picker hook owns the pacing.
19
+ */
20
+ /**
21
+ * Human label for a host stage.
22
+ *
23
+ * Unknown stages fall back to the raw name rather than being dropped: a stage
24
+ * this table has not caught up with is still more informative than silence,
25
+ * and silence is exactly what made a stuck resume undiagnosable.
26
+ */
27
+ export declare function resumeStageLabel(stage: string): string;
28
+ /** Braille spinner; one frame per tick while the read phase runs. */
29
+ export declare const RESUME_SPINNER_FRAMES: readonly ['⠋', '⠙', '⠹', '⠸', '⠼', '⠴', '⠦', '⠧', '⠇', '⠏'];
30
+ /** Spinner cadence. Fast enough to read as motion, slow enough to be free. */
31
+ export declare const RESUME_SPINNER_MS = 120;
32
+ export interface ResumeLoadState {
33
+ /** Canonical id of the session being opened. */
34
+ sessionId: string;
35
+ /** Display name (session name, title, or id) shown in the headline. */
36
+ label: string;
37
+ /**
38
+ * Id of the history entry the block is rendered into.
39
+ *
40
+ * Carried explicitly rather than derived from `nextId`: background producers
41
+ * (mailbox notices, fleet chatter) can append entries while the journal is
42
+ * being read, and a positionally-derived id would then rewrite one of THEM
43
+ * with the progress block.
44
+ */
45
+ blockEntryId: number;
46
+ phase: 'reading' | 'replaying';
47
+ loadedBytes: number;
48
+ totalBytes: number;
49
+ /** Stage lines, oldest first. Only the newest {@link LOG_ROWS} are rendered. */
50
+ log: string[];
51
+ /**
52
+ * Entries committed so far, and the total to commit, during `replaying`.
53
+ * Read by the statusline while the transcript streams; the block itself is
54
+ * gone by then.
55
+ */
56
+ replayed: number;
57
+ total: number;
58
+ /** Spinner frame index, advanced by the ticker. */
59
+ frame: number;
60
+ }
61
+ /**
62
+ * Render the loading block as the text of a single history entry.
63
+ *
64
+ * A single entry rather than a bespoke viewport widget on purpose: it lives in
65
+ * the transcript, scrolls with it, and needs no changes to the virtual-scroll
66
+ * anchor accounting — which is measured on every commit and is the one part of
67
+ * the history renderer that must not be perturbed for a progress indicator.
68
+ *
69
+ * At most 5 rows: headline, bar, and the newest {@link LOG_ROWS} stage lines.
70
+ */
71
+ export declare function renderResumeLoadBlock(load: ResumeLoadState): string;
72
+ /**
73
+ * Append a stage line, collapsing an immediate repeat.
74
+ *
75
+ * The host can re-report the same stage (a retry, a renewed reservation), and a
76
+ * block whose three visible rows are the same sentence three times tells the
77
+ * user nothing.
78
+ */
79
+ export declare function appendResumeLog(log: readonly string[], line: string): string[];
80
+ /**
81
+ * The todo board the screen should show.
82
+ *
83
+ * `/resume` wipes the transcript to the clean slate `/clear` leaves (see
84
+ * `resumeLoadStart` in `reducers/composer.ts`), but the board itself lives in
85
+ * `agent.ctx` and the host does not replace it until it has read the journal
86
+ * and re-pointed the sidecars — seconds during which the LEAVING session's
87
+ * missions sat under the incoming session's loading block, in the swarm panel,
88
+ * the F6 monitor and the sidebar's MISSIONS card alike. Blank it for the length
89
+ * of the resume; the host's `replaceTodos` then fills it with the resumed
90
+ * session's board, or leaves it empty when that session had none.
91
+ *
92
+ * Display-only on purpose. A resume that fails, or lands read-only, rolls the
93
+ * agent back to the session it was already in — and that session's board is
94
+ * still the truth, so it comes back rather than staying falsely empty.
95
+ */
96
+ export declare function todosForScreen<T>(todos: T[], resumeLoad: ResumeLoadState | null | undefined): T[];
97
+ /** The parts of a picker row that decide whether it can be resumed at all. */
98
+ export interface ResumableSession {
99
+ isCurrent?: boolean | undefined;
100
+ live?: {
101
+ pid: number;
102
+ clientType?: string | undefined;
103
+ } | undefined;
104
+ }
105
+ /**
106
+ * Why this session cannot be resumed — or `undefined` when it can.
107
+ *
108
+ * One predicate for both consumers: the picker dims and labels the row with it,
109
+ * and the Enter handler refuses with it. They used to be separate checks, which
110
+ * is how the `/resume` picker ended up enforcing less than the F10 sessions
111
+ * panel did for the same situation — F10 had a `pid` test, `/resume` had none,
112
+ * and nothing made the two disagree visible.
113
+ *
114
+ * "Live" means another process holds this session's registry lease: a second
115
+ * `wstack --tui`, the WebUI server, SimpleUI, a REPL. Two writers appending to
116
+ * one journal interleave their turns and corrupt the transcript, so this is a
117
+ * refusal, not a warning.
118
+ */
119
+ export declare function resumeBlockedReason(session: ResumableSession): string | undefined;
120
+ /** Delay between batches. ~14ms lands near one terminal repaint. */
121
+ export declare const RESUME_STREAM_FRAME_MS = 14;
122
+ /**
123
+ * Batch size for streaming `total` entries into the transcript.
124
+ *
125
+ * Scaled by length rather than fixed, so a 740-entry session (what a 131 MB
126
+ * journal replays to) and a 30-entry one both finish in roughly half a second:
127
+ * long enough to read as the transcript scrolling into place, short enough that
128
+ * nobody waits for it.
129
+ */
130
+ export declare function resumeChunkSize(total: number): number;
131
+ //# sourceMappingURL=resume-load.d.ts.map
@@ -16,7 +16,7 @@ export interface RunBlocksRefs {
16
16
  readonly chime: MutableCell<boolean>;
17
17
  readonly state: MutableCell<State>;
18
18
  }
19
- export interface RunBlocksHost {
19
+ interface RunBlocksHost {
20
20
  readonly capabilities: RunBlocksCapabilities;
21
21
  readonly refs: RunBlocksRefs;
22
22
  dispatch(action: Action): void;
@@ -27,4 +27,5 @@ export interface RunBlocksHost {
27
27
  * shell only supplies stable capabilities and mutable lifecycle cells.
28
28
  */
29
29
  export declare function createRunBlocksController(host: RunBlocksHost): (blocks: ContentBlock[]) => Promise<void>;
30
+ export {};
30
31
  //# sourceMappingURL=run-blocks-controller.d.ts.map
@@ -1,6 +1,6 @@
1
1
  import type { EventBus } from '@wrongstack/core/kernel';
2
2
  import type { Config } from '@wrongstack/core/types';
3
- export interface RunTuiClientRegistrationOptions {
3
+ interface RunTuiClientRegistrationOptions {
4
4
  projectRoot?: string | undefined;
5
5
  events: EventBus;
6
6
  appConfig?: Config | undefined;
@@ -10,9 +10,10 @@ export interface RunTuiClientRegistrationOptions {
10
10
  getAgentId?: (() => string | undefined) | undefined;
11
11
  isCleaned: () => boolean;
12
12
  }
13
- export interface RunTuiClientRegistration {
13
+ interface RunTuiClientRegistration {
14
14
  register(): Promise<string | null>;
15
15
  unregister(): void;
16
16
  }
17
17
  export declare function createRunTuiClientRegistration(opts: RunTuiClientRegistrationOptions): RunTuiClientRegistration;
18
+ export {};
18
19
  //# sourceMappingURL=run-tui-client-registration.d.ts.map
@@ -2,8 +2,9 @@ import type { Agent } from '@wrongstack/core/agent';
2
2
  import type { AutonomousCoordinator, CoordinatorEvent, Director } from '@wrongstack/core/coordination';
3
3
  import type { EventBus } from '@wrongstack/core/kernel';
4
4
  import type { SlashCommandRegistry } from '@wrongstack/core/registry';
5
+ import type { StatuslineLines } from '@wrongstack/core/statusline';
5
6
  import type { QueueStore } from '@wrongstack/core/storage';
6
- import type { AttachmentStore, AutonomyStage, ConfigStore, ContextSnapshot, FleetChatVerbosity, Message, SkillLoader, ThemePresetId, TokenCounter, TokenSavingTier } from '@wrongstack/core/types';
7
+ import type { AttachmentStore, AutonomyStage, ConfigStore, ContextSnapshot, FleetChatVerbosity, Message, SessionLoadProgress, SkillLoader, ThemePresetId, TokenCounter, TokenSavingTier } from '@wrongstack/core/types';
7
8
  import type { VisionAdapters } from '@wrongstack/runtime/vision';
8
9
  import type { SddLifecycleResult, SddRunControl } from '@wrongstack/sdd';
9
10
  import type { AgentTranscriptReader } from './components/agents-monitor.js';
@@ -266,6 +267,12 @@ export interface RunTuiOptions {
266
267
  } | undefined;
267
268
  /** Capability-gated low-effort reasoning hint for the prompt refiner. */
268
269
  getEnhancerReasoning?: ((providerId?: string, modelId?: string) => import('@wrongstack/core/types').ReasoningRequest | undefined | Promise<import('@wrongstack/core/types').ReasoningRequest | undefined>) | undefined;
270
+ /**
271
+ * Effort levels the ACTIVE model documents (models.dev reasoningConfig),
272
+ * for the model-aware /settings reasoning-effort cycle. Undefined =
273
+ * vocabulary undocumented; the picker cycles the full canonical set.
274
+ */
275
+ getActiveModelReasoningEffortLevels?: (() => string[] | undefined) | undefined;
269
276
  /** Build an ephemeral Provider for retrying a failed refinement on another model (no session switch). */
270
277
  buildEnhancerProvider?: ((providerId: string, modelId: string) => Promise<import('@wrongstack/core/types').Provider | undefined>) | undefined;
271
278
  /** Resolve the one-key "retry with another model" fallback ref on a refine failure. */
@@ -286,6 +293,13 @@ export interface RunTuiOptions {
286
293
  * make each toggle immediately durable.
287
294
  */
288
295
  saveStatuslineHiddenItems: (items: StatuslineItem[]) => Promise<void>;
296
+ /**
297
+ * Per-chip statusline line assignment (statusline.json schema v2).
298
+ * Optional: hosts that don't load it keep the core contract defaults.
299
+ */
300
+ statuslineLines?: StatuslineLines | undefined;
301
+ setStatuslineLines?: (lines: StatuslineLines) => void;
302
+ saveStatuslineLines?: (lines: StatuslineLines) => Promise<void>;
289
303
  /**
290
304
  * Controller for the agents monitor overlay. App installs a dispatch-backed
291
305
  * setter on mount so the `/agents on|off` slash command can toggle the
@@ -495,7 +509,14 @@ export interface RunTuiOptions {
495
509
  * rebuild agent context, and return hydrated entries for the TUI to
496
510
  * display. Returns null when resume fails.
497
511
  */
498
- onResumeSession?: ((sessionId: string) => Promise<{
512
+ onResumeSession?: ((sessionId: string, onLoadProgress?: (progress: SessionLoadProgress) => void,
513
+ /**
514
+ * Live stage names as each step of the resume begins (`resolve_id`,
515
+ * `open_journal`, `swap_writer`, …). Drives the rolling rows of the
516
+ * resume loading block, so the screen reports what is actually
517
+ * happening instead of a spinner over an unexplained multi-second wait.
518
+ */
519
+ onStage?: (stage: string) => void) => Promise<{
499
520
  entries: import('./components/history/types.js').HistoryEntry[];
500
521
  nextId: number;
501
522
  sessionId: string;
@@ -508,6 +529,18 @@ export interface RunTuiOptions {
508
529
  * until the next ctx.pct event lands.
509
530
  */
510
531
  contextSnapshot?: ContextSnapshot | undefined;
532
+ /** `false` = transcript replayed read-only; the session was not claimed. */
533
+ attached?: boolean | undefined;
534
+ /** Non-fatal problems to surface next to the replayed transcript. */
535
+ warnings?: string[] | undefined;
536
+ /**
537
+ * `<nextsteps>` parsed from the resumed session's final assistant turn.
538
+ *
539
+ * OFFERED, never executed: the resume lists them and stops. Empty when
540
+ * the session did not end on a next-steps block, when it has open todos
541
+ * (the board keeps precedence), or when the transcript is read-only.
542
+ */
543
+ nextSteps?: string[] | undefined;
511
544
  } | null>) | undefined;
512
545
  getProjectPickerItems?: (() => Promise<import('./components/project-picker.js').ProjectPickerItem[]>) | undefined;
513
546
  onProjectSelect?: ((key: string, kind: 'project' | 'action') => void) | undefined;