@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.
- package/dist/app-action-type.d.ts +56 -0
- package/dist/app-initial-state.d.ts +2 -1
- package/dist/app-props.d.ts +45 -2
- package/dist/app-settings-type.d.ts +7 -0
- package/dist/app-state-core-types.d.ts +18 -0
- package/dist/app-state.d.ts +42 -0
- package/dist/app-status-region.d.ts +1 -1
- package/dist/app-view-contract.d.ts +2 -1
- package/dist/app-view-pickers.d.ts +2 -1
- package/dist/app-view-sidebar.d.ts +2 -1
- package/dist/brain-panel-model.d.ts +0 -2
- package/dist/checkpoint-retention.d.ts +2 -3
- package/dist/components/agents-monitor.d.ts +3 -3
- package/dist/components/auth-panel.d.ts +2 -1
- package/dist/components/brain-decision-prompt.d.ts +2 -1
- package/dist/components/clear-confirm-panel.d.ts +4 -3
- package/dist/components/composer-status-chip.d.ts +3 -2
- package/dist/components/confirm-prompt.d.ts +2 -1
- package/dist/components/context-panel.d.ts +2 -1
- package/dist/components/continue-confirm-panel.d.ts +3 -2
- package/dist/components/coordinator-panel.d.ts +2 -1
- package/dist/components/cron-jobs.d.ts +2 -1
- package/dist/components/design-picker.d.ts +2 -1
- package/dist/components/enhance-panel.d.ts +4 -3
- package/dist/components/esc-confirm-prompt.d.ts +2 -1
- package/dist/components/exit-confirm-panel.d.ts +3 -2
- package/dist/components/f-key-picker.d.ts +1 -2
- package/dist/components/fallback-overlay.d.ts +2 -1
- package/dist/components/fleet-monitor.d.ts +2 -1
- package/dist/components/fleet-panel.d.ts +4 -4
- package/dist/components/goal-kanban-panel.d.ts +2 -1
- package/dist/components/help-overlay.d.ts +2 -1
- package/dist/components/help-panel.d.ts +2 -1
- package/dist/components/history/code-block-diff-helpers.d.ts +1 -6
- package/dist/components/history/code-block.d.ts +0 -2
- package/dist/components/history/copy-registry.d.ts +2 -1
- package/dist/components/history/index.d.ts +2 -2
- package/dist/components/history/replay.d.ts +2 -1
- package/dist/components/history/sage-memory-block.d.ts +0 -6
- package/dist/components/history/scroll-controller-types.d.ts +7 -12
- package/dist/components/history/selection-band-store.d.ts +3 -2
- package/dist/components/history/selection-helpers.d.ts +24 -65
- package/dist/components/history/tool-card.d.ts +2 -1
- package/dist/components/history/tool-group.d.ts +0 -7
- package/dist/components/history/use-history-controller.d.ts +2 -1
- package/dist/components/history/utils.d.ts +1 -1
- package/dist/components/history/wrap-geometry.d.ts +18 -125
- package/dist/components/history.d.ts +1 -1
- package/dist/components/kanban-panel.d.ts +7 -25
- package/dist/components/live-activity-strip.d.ts +2 -1
- package/dist/components/mailbox-panel.d.ts +2 -1
- package/dist/components/mcp-picker.d.ts +2 -1
- package/dist/components/mode-picker.d.ts +2 -1
- package/dist/components/model-picker.d.ts +2 -1
- package/dist/components/monitor-shell.d.ts +3 -2
- package/dist/components/phase-monitor.d.ts +2 -1
- package/dist/components/plan-panel.d.ts +3 -2
- package/dist/components/plugin-picker.d.ts +2 -1
- package/dist/components/powerline-rail.d.ts +2 -1
- package/dist/components/project-picker.d.ts +2 -1
- package/dist/components/prompt-picker.d.ts +2 -1
- package/dist/components/refine-countdown-panel.d.ts +3 -2
- package/dist/components/refine-failure-panel.d.ts +2 -1
- package/dist/components/resource-menu.d.ts +2 -1
- package/dist/components/resume-picker.d.ts +2 -1
- package/dist/components/scrollable-history.d.ts +2 -2
- package/dist/components/send-mode-picker.d.ts +3 -2
- package/dist/components/sessions-panel.d.ts +2 -1
- package/dist/components/settings-picker-filter.d.ts +2 -1
- package/dist/components/settings-picker.d.ts +3 -1
- package/dist/components/shadow-panel.d.ts +2 -1
- package/dist/components/shell-command-warning.d.ts +2 -1
- package/dist/components/sidebar-content.d.ts +4 -9
- package/dist/components/sidebar-panel-frame.d.ts +2 -13
- package/dist/components/sidebar.d.ts +2 -1
- package/dist/components/skill-picker.d.ts +2 -1
- package/dist/components/slash-confirm-panel.d.ts +3 -2
- package/dist/components/slash-menu.d.ts +2 -1
- package/dist/components/status-bar-format.d.ts +2 -0
- package/dist/components/status-bar-icons.d.ts +4 -0
- package/dist/components/status-bar-rails.d.ts +19 -6
- package/dist/components/status-bar-types.d.ts +18 -0
- package/dist/components/status-bar.d.ts +17 -7
- package/dist/components/status-line-registry.d.ts +62 -0
- package/dist/components/statusline-picker.d.ts +5 -27
- package/dist/components/theme-picker.d.ts +2 -1
- package/dist/components/theme-preview.d.ts +2 -1
- package/dist/components/tools-picker.d.ts +2 -1
- package/dist/components/topic-check-panel.d.ts +2 -1
- package/dist/connections-slash.d.ts +2 -1
- package/dist/context-fill.d.ts +4 -3
- package/dist/context-slash.d.ts +3 -2
- package/dist/cron-slash.d.ts +2 -1
- package/dist/esc-close-panels.d.ts +2 -1
- package/dist/f-key-panels.d.ts +1 -1
- package/dist/git-info.d.ts +22 -3
- package/dist/height-cache.d.ts +2 -8
- package/dist/history-entry.d.ts +4 -3
- package/dist/history-retention.d.ts +16 -6
- package/dist/hit-test.d.ts +2 -1
- package/dist/hooks/subagent-history-format.d.ts +2 -1
- package/dist/hooks/use-app-session-state.d.ts +2 -1
- package/dist/hooks/use-auth-panel.d.ts +2 -1
- package/dist/hooks/use-brain-panel.d.ts +2 -1
- package/dist/hooks/use-chip-staleness-guard.d.ts +4 -3
- package/dist/hooks/use-core-tui-commands.d.ts +1 -1
- package/dist/hooks/use-director-fleet-bridge.d.ts +2 -4
- package/dist/hooks/use-exit-command.d.ts +1 -1
- package/dist/hooks/use-file-search.d.ts +3 -7
- package/dist/hooks/use-fleet-generation-gate.d.ts +2 -1
- package/dist/hooks/use-git-session-status.d.ts +1 -1
- package/dist/hooks/use-history-archive.d.ts +3 -2
- package/dist/hooks/use-input-history-persistence.d.ts +2 -1
- package/dist/hooks/use-mode-picker.d.ts +2 -1
- package/dist/hooks/use-model-pick.d.ts +2 -1
- package/dist/hooks/use-next-steps-auto-submit.d.ts +2 -2
- package/dist/hooks/use-panel-controllers.d.ts +3 -1
- package/dist/hooks/use-paste-handling.d.ts +2 -1
- package/dist/hooks/use-prompt-picker.d.ts +4 -3
- package/dist/hooks/use-session-rewind.d.ts +2 -1
- package/dist/hooks/use-shadow-panel.d.ts +2 -1
- package/dist/hooks/use-sidebar-panel-data.d.ts +4 -3
- package/dist/hooks/use-status-sync-interval.d.ts +2 -1
- package/dist/hooks/use-statusline-hidden-sync.d.ts +2 -1
- package/dist/hooks/use-statusline-state.d.ts +9 -3
- package/dist/hooks/use-stream-chip-expiration.d.ts +3 -2
- package/dist/hooks/use-terminal-size.d.ts +3 -2
- package/dist/hooks/use-theme-picker-handler.d.ts +2 -1
- package/dist/hooks/use-tui-activity.d.ts +2 -1
- package/dist/hooks/use-tui-controllers.d.ts +2 -1
- package/dist/hooks/use-tui-environment-state.d.ts +7 -5
- package/dist/hooks/use-tui-event-bridge.d.ts +1 -1
- package/dist/index.js +8509 -8341
- package/dist/ink.d.ts +1 -1
- package/dist/input-editing.d.ts +2 -1
- package/dist/input-tokens.d.ts +2 -1
- package/dist/input-validation/action-types.d.ts +1 -1
- package/dist/input-validation.d.ts +4 -4
- package/dist/kanban-slash.d.ts +8 -32
- package/dist/layout-store.d.ts +2 -1
- package/dist/markdown-table.d.ts +1 -3
- package/dist/memory-context-monitor.d.ts +3 -2
- package/dist/memory-lifecycle-entry.d.ts +2 -1
- package/dist/memory-slash-format.d.ts +0 -1
- package/dist/mouse.d.ts +3 -2
- package/dist/overlay-key-router.d.ts +5 -4
- package/dist/paste-accumulator.d.ts +3 -2
- package/dist/prompt-refinement-start.d.ts +1 -1
- package/dist/reducers/composer.d.ts +1 -1
- package/dist/reducers/conversation.d.ts +1 -1
- package/dist/reducers/helpers.d.ts +16 -3
- package/dist/resume-load.d.ts +131 -0
- package/dist/run-blocks-controller.d.ts +2 -1
- package/dist/run-tui-client-registration.d.ts +3 -2
- package/dist/run-tui-options.d.ts +35 -2
- package/dist/run-tui-teardown.d.ts +2 -1
- package/dist/run-tui-title-controller.d.ts +2 -1
- package/dist/scroll-anchor.d.ts +2 -4
- package/dist/slash-command-lifecycle.d.ts +2 -1
- package/dist/submit-history.d.ts +2 -1
- package/dist/submit-prompt-refinement.d.ts +3 -2
- package/dist/terminal-title.d.ts +2 -1
- package/dist/theme.d.ts +2 -2
- package/dist/token-previews.d.ts +2 -1
- package/dist/tui-host-capabilities.d.ts +1 -1
- package/dist/tui-memory-counters.d.ts +2 -1
- package/dist/ui-contracts.d.ts +1 -1
- package/dist/ui-glyphs.d.ts +3 -1
- package/dist/workbench-slash.d.ts +2 -1
- package/package.json +9 -9
- 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 {
|
|
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
|
/**
|
package/dist/input-editing.d.ts
CHANGED
|
@@ -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
|
-
|
|
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
|
package/dist/input-tokens.d.ts
CHANGED
|
@@ -32,7 +32,7 @@ export declare function tokenSpanAt(buffer: string, cursor: number): {
|
|
|
32
32
|
start: number;
|
|
33
33
|
end: number;
|
|
34
34
|
} | null;
|
|
35
|
-
|
|
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
|
|
55
|
-
export {
|
|
56
|
-
export { MAX_ACTION_DEPTH, MAX_ACTION_STRING_FIELD, MAX_BATCHED_ACTIONS, MAX_ENTRY_TEXT_CHARS, MAX_FLEET_ENTRIES, MAX_HISTORY_ENTRIES,
|
|
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 {
|
|
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;
|
package/dist/kanban-slash.d.ts
CHANGED
|
@@ -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
|
-
|
|
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
|
-
/**
|
|
53
|
-
|
|
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
|
-
|
|
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
|
package/dist/layout-store.d.ts
CHANGED
|
@@ -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
|
-
|
|
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
|
package/dist/markdown-table.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
71
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
1
|
+
interface PasteOverflowState {
|
|
2
2
|
readonly overflow: true;
|
|
3
3
|
}
|
|
4
4
|
export type PasteAccumState = string | PasteOverflowState | null;
|
|
5
|
-
|
|
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,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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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) =>
|
|
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;
|