@aragon-agent/tui 0.0.0-stage → 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +27 -0
- package/LICENSE +21 -0
- package/README.md +81 -2
- package/dist/index.d.ts +11 -0
- package/dist/index.js +11 -0
- package/dist/input/control-sequences.d.ts +71 -0
- package/dist/input/control-sequences.js +222 -0
- package/dist/input/csiu-keys.d.ts +66 -0
- package/dist/input/csiu-keys.js +181 -0
- package/dist/input/cursor-report.d.ts +61 -0
- package/dist/input/cursor-report.js +97 -0
- package/dist/input/enter-sequences.d.ts +64 -0
- package/dist/input/enter-sequences.js +153 -0
- package/dist/input/interrupt-gesture.d.ts +18 -0
- package/dist/input/interrupt-gesture.js +19 -0
- package/dist/input/keyboard-enhancement.d.ts +42 -0
- package/dist/input/keyboard-enhancement.js +65 -0
- package/dist/input/keymap.d.ts +20 -0
- package/dist/input/keymap.js +99 -0
- package/dist/input/limits.d.ts +118 -0
- package/dist/input/limits.js +109 -0
- package/dist/input/mouse-events.d.ts +87 -0
- package/dist/input/mouse-events.js +212 -0
- package/dist/input/paste-parse.d.ts +83 -0
- package/dist/input/paste-parse.js +107 -0
- package/dist/input/pointer-router.d.ts +11 -0
- package/dist/input/pointer-router.js +14 -0
- package/dist/input/stdin-filter.d.ts +112 -0
- package/dist/input/stdin-filter.js +657 -0
- package/dist/input/win32-input-mode.d.ts +61 -0
- package/dist/input/win32-input-mode.js +269 -0
- package/dist/model/agent/agent-mode.d.ts +108 -0
- package/dist/model/agent/agent-mode.js +121 -0
- package/dist/model/agent/entry-limits.d.ts +65 -0
- package/dist/model/agent/entry-limits.js +133 -0
- package/dist/model/agent/governance-view.d.ts +40 -0
- package/dist/model/agent/governance-view.js +40 -0
- package/dist/model/agent/invocation-card.d.ts +77 -0
- package/dist/model/agent/invocation-card.js +169 -0
- package/dist/model/agent/model-probe-limits.d.ts +39 -0
- package/dist/model/agent/model-probe-limits.js +25 -0
- package/dist/model/agent/model-probe.d.ts +104 -0
- package/dist/model/agent/model-probe.js +391 -0
- package/dist/model/agent/queued-messages.d.ts +23 -0
- package/dist/model/agent/queued-messages.js +49 -0
- package/dist/model/agent/reducer.d.ts +857 -0
- package/dist/model/agent/reducer.js +1646 -0
- package/dist/model/agent/retry-view.d.ts +68 -0
- package/dist/model/agent/retry-view.js +95 -0
- package/dist/model/agent/usage.d.ts +47 -0
- package/dist/model/agent/usage.js +84 -0
- package/dist/model/compaction/limits.d.ts +61 -0
- package/dist/model/compaction/limits.js +64 -0
- package/dist/model/compaction/meter.d.ts +276 -0
- package/dist/model/compaction/meter.js +512 -0
- package/dist/model/compaction/pressure.d.ts +163 -0
- package/dist/model/compaction/pressure.js +199 -0
- package/dist/model/compaction/reason-text.d.ts +36 -0
- package/dist/model/compaction/reason-text.js +78 -0
- package/dist/model/compaction/types.d.ts +360 -0
- package/dist/model/compaction/types.js +22 -0
- package/dist/model/config/governance-config.d.ts +125 -0
- package/dist/model/config/governance-config.js +164 -0
- package/dist/model/config/kit-resolution.d.ts +93 -0
- package/dist/model/config/kit-resolution.js +226 -0
- package/dist/model/config/model-kits.d.ts +225 -0
- package/dist/model/config/model-kits.js +302 -0
- package/dist/model/config/model-profile-resolution.d.ts +28 -0
- package/dist/model/config/model-profile-resolution.js +88 -0
- package/dist/model/config/model-profiles.d.ts +103 -0
- package/dist/model/config/model-profiles.js +188 -0
- package/dist/model/config/model-settings-types.d.ts +71 -0
- package/dist/model/config/model-settings-types.js +18 -0
- package/dist/model/config/schema.d.ts +1645 -0
- package/dist/model/config/schema.js +1383 -0
- package/dist/model/fast/limits.d.ts +152 -0
- package/dist/model/fast/limits.js +152 -0
- package/dist/model/fast/resolve.d.ts +44 -0
- package/dist/model/fast/resolve.js +107 -0
- package/dist/model/fast/task-summary-types.d.ts +66 -0
- package/dist/model/fast/task-summary-types.js +17 -0
- package/dist/model/fast/types.d.ts +141 -0
- package/dist/model/fast/types.js +14 -0
- package/dist/model/governance/governed-dispatch.d.ts +19 -0
- package/dist/model/governance/governed-dispatch.js +17 -0
- package/dist/model/governance/limits.d.ts +107 -0
- package/dist/model/governance/limits.js +131 -0
- package/dist/model/governance/posture.d.ts +35 -0
- package/dist/model/governance/posture.js +59 -0
- package/dist/model/governance/rules/events-table.d.ts +46 -0
- package/dist/model/governance/rules/events-table.js +94 -0
- package/dist/model/governance/types.d.ts +661 -0
- package/dist/model/governance/types.js +27 -0
- package/dist/model/logging/levels.d.ts +40 -0
- package/dist/model/logging/levels.js +59 -0
- package/dist/model/logging/log-port.d.ts +38 -0
- package/dist/model/logging/log-port.js +41 -0
- package/dist/model/logging/secret-registry.d.ts +32 -0
- package/dist/model/logging/secret-registry.js +73 -0
- package/dist/model/proc/limits.d.ts +214 -0
- package/dist/model/proc/limits.js +221 -0
- package/dist/model/proc/progress.d.ts +47 -0
- package/dist/model/proc/progress.js +163 -0
- package/dist/model/proc/types.d.ts +269 -0
- package/dist/model/proc/types.js +15 -0
- package/dist/model/proc/wait-view.d.ts +65 -0
- package/dist/model/proc/wait-view.js +66 -0
- package/dist/model/prompts/copy.d.ts +89 -0
- package/dist/model/prompts/copy.js +131 -0
- package/dist/model/prompts/fill.d.ts +51 -0
- package/dist/model/prompts/fill.js +46 -0
- package/dist/model/prompts/limits.d.ts +53 -0
- package/dist/model/prompts/limits.js +53 -0
- package/dist/model/prompts/search.d.ts +58 -0
- package/dist/model/prompts/search.js +146 -0
- package/dist/model/prompts/types.d.ts +204 -0
- package/dist/model/prompts/types.js +13 -0
- package/dist/model/prompts/validate.d.ts +22 -0
- package/dist/model/prompts/validate.js +69 -0
- package/dist/model/team/activity.d.ts +67 -0
- package/dist/model/team/activity.js +130 -0
- package/dist/model/team/limits.d.ts +308 -0
- package/dist/model/team/limits.js +330 -0
- package/dist/model/team/model.d.ts +104 -0
- package/dist/model/team/model.js +150 -0
- package/dist/model/team/panel-rows.d.ts +48 -0
- package/dist/model/team/panel-rows.js +75 -0
- package/dist/model/team/timeline.d.ts +74 -0
- package/dist/model/team/timeline.js +101 -0
- package/dist/model/team/types.d.ts +354 -0
- package/dist/model/team/types.js +13 -0
- package/dist/model/todo/acceptance.d.ts +120 -0
- package/dist/model/todo/acceptance.js +399 -0
- package/dist/model/todo/follow-through.d.ts +138 -0
- package/dist/model/todo/follow-through.js +248 -0
- package/dist/model/todo/limits.d.ts +152 -0
- package/dist/model/todo/limits.js +152 -0
- package/dist/model/todo/panel-rows.d.ts +45 -0
- package/dist/model/todo/panel-rows.js +70 -0
- package/dist/model/todo/plan-sections.d.ts +60 -0
- package/dist/model/todo/plan-sections.js +108 -0
- package/dist/model/todo/row-window.d.ts +51 -0
- package/dist/model/todo/row-window.js +107 -0
- package/dist/model/todo/types.d.ts +124 -0
- package/dist/model/todo/types.js +12 -0
- package/dist/model/tools/human-input.d.ts +212 -0
- package/dist/model/tools/human-input.js +265 -0
- package/dist/model/tools/patch.d.ts +115 -0
- package/dist/model/tools/patch.js +453 -0
- package/dist/model/tools/terminal-output.d.ts +115 -0
- package/dist/model/tools/terminal-output.js +201 -0
- package/dist/model/tools/tool-output-store.d.ts +68 -0
- package/dist/model/tools/tool-output-store.js +102 -0
- package/dist/model/update/limits.d.ts +111 -0
- package/dist/model/update/limits.js +111 -0
- package/dist/model/update/semver.d.ts +89 -0
- package/dist/model/update/semver.js +295 -0
- package/dist/model/update/types.d.ts +169 -0
- package/dist/model/update/types.js +68 -0
- package/dist/testing/governance-fixtures.d.ts +13 -0
- package/dist/testing/governance-fixtures.js +98 -0
- package/dist/testing/mini-vt.d.ts +28 -0
- package/dist/testing/mini-vt.js +158 -0
- package/dist/testing/render-at-width.d.ts +16 -0
- package/dist/testing/render-at-width.js +57 -0
- package/dist/testing/terminal-harness.d.ts +15 -0
- package/dist/testing/terminal-harness.js +40 -0
- package/dist/testing/vt-screen.d.ts +28 -0
- package/dist/testing/vt-screen.js +139 -0
- package/dist/ui/ActivityLine.d.ts +26 -0
- package/dist/ui/ActivityLine.js +51 -0
- package/dist/ui/AutocompletePopup.d.ts +23 -0
- package/dist/ui/AutocompletePopup.js +17 -0
- package/dist/ui/BottomStatusRow.d.ts +10 -0
- package/dist/ui/BottomStatusRow.js +9 -0
- package/dist/ui/Composer.d.ts +115 -0
- package/dist/ui/Composer.js +64 -0
- package/dist/ui/GovernancePanel.d.ts +50 -0
- package/dist/ui/GovernancePanel.js +77 -0
- package/dist/ui/GovernanceRun.d.ts +18 -0
- package/dist/ui/GovernanceRun.js +11 -0
- package/dist/ui/Header.d.ts +48 -0
- package/dist/ui/Header.js +27 -0
- package/dist/ui/Logo.d.ts +32 -0
- package/dist/ui/Logo.js +65 -0
- package/dist/ui/Markdown.d.ts +29 -0
- package/dist/ui/Markdown.js +116 -0
- package/dist/ui/PromptCaret.d.ts +11 -0
- package/dist/ui/PromptCaret.js +31 -0
- package/dist/ui/PromptInput.d.ts +192 -0
- package/dist/ui/PromptInput.js +689 -0
- package/dist/ui/QueuePanel.d.ts +8 -0
- package/dist/ui/QueuePanel.js +9 -0
- package/dist/ui/QueueStatusRow.d.ts +24 -0
- package/dist/ui/QueueStatusRow.js +51 -0
- package/dist/ui/ScrollbackShell.d.ts +132 -0
- package/dist/ui/ScrollbackShell.js +26 -0
- package/dist/ui/SessionOpener.d.ts +30 -0
- package/dist/ui/SessionOpener.js +12 -0
- package/dist/ui/StatusBar.d.ts +130 -0
- package/dist/ui/StatusBar.js +61 -0
- package/dist/ui/TeamPanel.d.ts +76 -0
- package/dist/ui/TeamPanel.js +103 -0
- package/dist/ui/ToastStack.d.ts +8 -0
- package/dist/ui/ToastStack.js +31 -0
- package/dist/ui/TodoPanel.d.ts +52 -0
- package/dist/ui/TodoPanel.js +214 -0
- package/dist/ui/Transcript.d.ts +105 -0
- package/dist/ui/Transcript.js +258 -0
- package/dist/ui/UpdateLine.d.ts +44 -0
- package/dist/ui/UpdateLine.js +129 -0
- package/dist/ui/activity-phrases.d.ts +33 -0
- package/dist/ui/activity-phrases.js +50 -0
- package/dist/ui/capabilities.d.ts +27 -0
- package/dist/ui/capabilities.js +65 -0
- package/dist/ui/clipboard-task.d.ts +29 -0
- package/dist/ui/clipboard-task.js +66 -0
- package/dist/ui/clipboard.d.ts +31 -0
- package/dist/ui/clipboard.js +157 -0
- package/dist/ui/color-runtime.d.ts +5 -0
- package/dist/ui/color-runtime.js +29 -0
- package/dist/ui/composer-input.d.ts +38 -0
- package/dist/ui/composer-input.js +79 -0
- package/dist/ui/composer-limits.d.ts +30 -0
- package/dist/ui/composer-limits.js +45 -0
- package/dist/ui/composer-rows.d.ts +73 -0
- package/dist/ui/composer-rows.js +129 -0
- package/dist/ui/console-bridge.d.ts +19 -0
- package/dist/ui/console-bridge.js +52 -0
- package/dist/ui/density.d.ts +26 -0
- package/dist/ui/density.js +34 -0
- package/dist/ui/display-tab.d.ts +51 -0
- package/dist/ui/display-tab.js +82 -0
- package/dist/ui/editor-navigation.d.ts +55 -0
- package/dist/ui/editor-navigation.js +96 -0
- package/dist/ui/editor-reducer.d.ts +108 -0
- package/dist/ui/editor-reducer.js +187 -0
- package/dist/ui/enter-frames.d.ts +47 -0
- package/dist/ui/enter-frames.js +117 -0
- package/dist/ui/entries/AssistantEntry.d.ts +37 -0
- package/dist/ui/entries/AssistantEntry.js +43 -0
- package/dist/ui/entries/CompactionCard.d.ts +88 -0
- package/dist/ui/entries/CompactionCard.js +222 -0
- package/dist/ui/entries/DiffView.d.ts +61 -0
- package/dist/ui/entries/DiffView.js +103 -0
- package/dist/ui/entries/EntryFrame.d.ts +23 -0
- package/dist/ui/entries/EntryFrame.js +6 -0
- package/dist/ui/entries/FastCard.d.ts +53 -0
- package/dist/ui/entries/FastCard.js +105 -0
- package/dist/ui/entries/GovernanceCard.d.ts +30 -0
- package/dist/ui/entries/GovernanceCard.js +32 -0
- package/dist/ui/entries/InvocationCard.d.ts +20 -0
- package/dist/ui/entries/InvocationCard.js +32 -0
- package/dist/ui/entries/QueuedEntry.d.ts +27 -0
- package/dist/ui/entries/QueuedEntry.js +33 -0
- package/dist/ui/entries/RetryCard.d.ts +56 -0
- package/dist/ui/entries/RetryCard.js +60 -0
- package/dist/ui/entries/ServiceCard.d.ts +82 -0
- package/dist/ui/entries/ServiceCard.js +151 -0
- package/dist/ui/entries/TeamCard.d.ts +55 -0
- package/dist/ui/entries/TeamCard.js +94 -0
- package/dist/ui/entries/TodoCard.d.ts +54 -0
- package/dist/ui/entries/TodoCard.js +98 -0
- package/dist/ui/entries/ToolCard.d.ts +81 -0
- package/dist/ui/entries/ToolCard.js +169 -0
- package/dist/ui/entries/ToolPreview.d.ts +59 -0
- package/dist/ui/entries/ToolPreview.js +208 -0
- package/dist/ui/entries/UserEntry.d.ts +36 -0
- package/dist/ui/entries/UserEntry.js +57 -0
- package/dist/ui/entries/WaitCard.d.ts +37 -0
- package/dist/ui/entries/WaitCard.js +92 -0
- package/dist/ui/exit-snapshot.d.ts +43 -0
- package/dist/ui/exit-snapshot.js +26 -0
- package/dist/ui/frame-differ.d.ts +166 -0
- package/dist/ui/frame-differ.js +354 -0
- package/dist/ui/frame-observer.d.ts +17 -0
- package/dist/ui/frame-observer.js +94 -0
- package/dist/ui/frame-parser.d.ts +7 -0
- package/dist/ui/frame-parser.js +18 -0
- package/dist/ui/gauge.d.ts +39 -0
- package/dist/ui/gauge.js +55 -0
- package/dist/ui/glyphs.d.ts +178 -0
- package/dist/ui/glyphs.js +165 -0
- package/dist/ui/governance-copy.d.ts +69 -0
- package/dist/ui/governance-copy.js +104 -0
- package/dist/ui/governance-status.d.ts +145 -0
- package/dist/ui/governance-status.js +326 -0
- package/dist/ui/gradient.d.ts +11 -0
- package/dist/ui/gradient.js +50 -0
- package/dist/ui/ink-runtime.d.ts +4 -0
- package/dist/ui/ink-runtime.js +51 -0
- package/dist/ui/interaction-copy.d.ts +84 -0
- package/dist/ui/interaction-copy.js +41 -0
- package/dist/ui/interaction-hints.d.ts +44 -0
- package/dist/ui/interaction-hints.js +97 -0
- package/dist/ui/layout/AppShell.d.ts +17 -0
- package/dist/ui/layout/AppShell.js +6 -0
- package/dist/ui/layout/Gutter.d.ts +67 -0
- package/dist/ui/layout/Gutter.js +42 -0
- package/dist/ui/layout/MeasuredEntry.d.ts +21 -0
- package/dist/ui/layout/MeasuredEntry.js +30 -0
- package/dist/ui/layout/OverlayFrame.d.ts +73 -0
- package/dist/ui/layout/OverlayFrame.js +110 -0
- package/dist/ui/layout/ScrollIndicator.d.ts +32 -0
- package/dist/ui/layout/ScrollIndicator.js +22 -0
- package/dist/ui/layout/ScrollViewport.d.ts +40 -0
- package/dist/ui/layout/ScrollViewport.js +222 -0
- package/dist/ui/layout/agents-board.d.ts +102 -0
- package/dist/ui/layout/agents-board.js +389 -0
- package/dist/ui/layout/autocomplete.d.ts +18 -0
- package/dist/ui/layout/autocomplete.js +26 -0
- package/dist/ui/layout/budget.d.ts +43 -0
- package/dist/ui/layout/budget.js +52 -0
- package/dist/ui/layout/cells.d.ts +61 -0
- package/dist/ui/layout/cells.js +156 -0
- package/dist/ui/layout/document-layout.d.ts +13 -0
- package/dist/ui/layout/document-layout.js +10 -0
- package/dist/ui/layout/follow-state.d.ts +138 -0
- package/dist/ui/layout/follow-state.js +148 -0
- package/dist/ui/layout/frame.d.ts +36 -0
- package/dist/ui/layout/frame.js +39 -0
- package/dist/ui/layout/governance-board.d.ts +121 -0
- package/dist/ui/layout/governance-board.js +382 -0
- package/dist/ui/layout/governance-card.d.ts +53 -0
- package/dist/ui/layout/governance-card.js +134 -0
- package/dist/ui/layout/governance-chip.d.ts +38 -0
- package/dist/ui/layout/governance-chip.js +64 -0
- package/dist/ui/layout/governance-panel.d.ts +85 -0
- package/dist/ui/layout/governance-panel.js +358 -0
- package/dist/ui/layout/governance-roster.d.ts +65 -0
- package/dist/ui/layout/governance-roster.js +275 -0
- package/dist/ui/layout/header-hints.d.ts +90 -0
- package/dist/ui/layout/header-hints.js +110 -0
- package/dist/ui/layout/header-left.d.ts +115 -0
- package/dist/ui/layout/header-left.js +206 -0
- package/dist/ui/layout/invocation-card.d.ts +41 -0
- package/dist/ui/layout/invocation-card.js +91 -0
- package/dist/ui/layout/kit-chip.d.ts +50 -0
- package/dist/ui/layout/kit-chip.js +81 -0
- package/dist/ui/layout/overlay-window.d.ts +43 -0
- package/dist/ui/layout/overlay-window.js +51 -0
- package/dist/ui/layout/queue-layout.d.ts +19 -0
- package/dist/ui/layout/queue-layout.js +26 -0
- package/dist/ui/layout/rail.d.ts +7 -0
- package/dist/ui/layout/rail.js +16 -0
- package/dist/ui/layout/scroll-indicator.d.ts +27 -0
- package/dist/ui/layout/scroll-indicator.js +36 -0
- package/dist/ui/layout/scroll.d.ts +37 -0
- package/dist/ui/layout/scroll.js +99 -0
- package/dist/ui/layout/scrollbar-geometry.d.ts +17 -0
- package/dist/ui/layout/scrollbar-geometry.js +13 -0
- package/dist/ui/layout/session-chip.d.ts +52 -0
- package/dist/ui/layout/session-chip.js +64 -0
- package/dist/ui/layout/shortcut-panel-layout.d.ts +191 -0
- package/dist/ui/layout/shortcut-panel-layout.js +321 -0
- package/dist/ui/layout/status-detail-layout.d.ts +9 -0
- package/dist/ui/layout/status-detail-layout.js +79 -0
- package/dist/ui/layout/status-layout.d.ts +140 -0
- package/dist/ui/layout/status-layout.js +262 -0
- package/dist/ui/layout/task-summary-cell.d.ts +61 -0
- package/dist/ui/layout/task-summary-cell.js +65 -0
- package/dist/ui/layout/team-panel.d.ts +18 -0
- package/dist/ui/layout/team-panel.js +25 -0
- package/dist/ui/layout/team-row.d.ts +139 -0
- package/dist/ui/layout/team-row.js +246 -0
- package/dist/ui/layout/todo-layout.d.ts +62 -0
- package/dist/ui/layout/todo-layout.js +102 -0
- package/dist/ui/layout/useTerminalSize.d.ts +13 -0
- package/dist/ui/layout/useTerminalSize.js +50 -0
- package/dist/ui/layout/viewport-geometry.d.ts +29 -0
- package/dist/ui/layout/viewport-geometry.js +28 -0
- package/dist/ui/layout/virtual-window.d.ts +112 -0
- package/dist/ui/layout/virtual-window.js +494 -0
- package/dist/ui/layout/wait-bar.d.ts +34 -0
- package/dist/ui/layout/wait-bar.js +48 -0
- package/dist/ui/layout/wrap-rows.d.ts +26 -0
- package/dist/ui/layout/wrap-rows.js +88 -0
- package/dist/ui/live-clamp.d.ts +14 -0
- package/dist/ui/live-clamp.js +46 -0
- package/dist/ui/markdown-blocks.d.ts +107 -0
- package/dist/ui/markdown-blocks.js +240 -0
- package/dist/ui/overlays/AgentsBoardOverlay.d.ts +57 -0
- package/dist/ui/overlays/AgentsBoardOverlay.js +183 -0
- package/dist/ui/overlays/ConfirmDialog.d.ts +31 -0
- package/dist/ui/overlays/ConfirmDialog.js +44 -0
- package/dist/ui/overlays/GovernanceBoardOverlay.d.ts +41 -0
- package/dist/ui/overlays/GovernanceBoardOverlay.js +76 -0
- package/dist/ui/overlays/GovernanceSettingsPage.d.ts +48 -0
- package/dist/ui/overlays/GovernanceSettingsPage.js +93 -0
- package/dist/ui/overlays/HelpOverlay.d.ts +29 -0
- package/dist/ui/overlays/HelpOverlay.js +232 -0
- package/dist/ui/overlays/KitEditor.d.ts +23 -0
- package/dist/ui/overlays/KitEditor.js +101 -0
- package/dist/ui/overlays/KitManager.d.ts +23 -0
- package/dist/ui/overlays/KitManager.js +104 -0
- package/dist/ui/overlays/KitPicker.d.ts +49 -0
- package/dist/ui/overlays/KitPicker.js +58 -0
- package/dist/ui/overlays/ModelDiscoveryList.d.ts +23 -0
- package/dist/ui/overlays/ModelDiscoveryList.js +161 -0
- package/dist/ui/overlays/ModelPicker.d.ts +26 -0
- package/dist/ui/overlays/ModelPicker.js +63 -0
- package/dist/ui/overlays/ModelProfileEditor.d.ts +29 -0
- package/dist/ui/overlays/ModelProfileEditor.js +168 -0
- package/dist/ui/overlays/ModelProfilePicker.d.ts +48 -0
- package/dist/ui/overlays/ModelProfilePicker.js +231 -0
- package/dist/ui/overlays/PlanReviewOverlay.d.ts +51 -0
- package/dist/ui/overlays/PlanReviewOverlay.js +132 -0
- package/dist/ui/overlays/PromptEditorPage.d.ts +48 -0
- package/dist/ui/overlays/PromptEditorPage.js +227 -0
- package/dist/ui/overlays/PromptLibraryOverlay.d.ts +37 -0
- package/dist/ui/overlays/PromptLibraryOverlay.js +191 -0
- package/dist/ui/overlays/PromptPicker.d.ts +36 -0
- package/dist/ui/overlays/PromptPicker.js +129 -0
- package/dist/ui/overlays/PromptTextArea.d.ts +86 -0
- package/dist/ui/overlays/PromptTextArea.js +141 -0
- package/dist/ui/overlays/QuestionOverlay.d.ts +39 -0
- package/dist/ui/overlays/QuestionOverlay.js +258 -0
- package/dist/ui/overlays/QueueOverlay.d.ts +22 -0
- package/dist/ui/overlays/QueueOverlay.js +79 -0
- package/dist/ui/overlays/SettingsScreen.d.ts +228 -0
- package/dist/ui/overlays/SettingsScreen.js +1037 -0
- package/dist/ui/overlays/ShortcutPanel.d.ts +39 -0
- package/dist/ui/overlays/ShortcutPanel.js +106 -0
- package/dist/ui/overlays/TeamFanoutPage.d.ts +51 -0
- package/dist/ui/overlays/TeamFanoutPage.js +90 -0
- package/dist/ui/overlays/governance-settings.d.ts +79 -0
- package/dist/ui/overlays/governance-settings.js +140 -0
- package/dist/ui/overlays/kit-picker-state.d.ts +87 -0
- package/dist/ui/overlays/kit-picker-state.js +136 -0
- package/dist/ui/overlays/kit-settings-state.d.ts +129 -0
- package/dist/ui/overlays/kit-settings-state.js +268 -0
- package/dist/ui/overlays/model-probe-view.d.ts +128 -0
- package/dist/ui/overlays/model-probe-view.js +225 -0
- package/dist/ui/overlays/model-profile-state.d.ts +177 -0
- package/dist/ui/overlays/model-profile-state.js +301 -0
- package/dist/ui/overlays/prompt-library-state.d.ts +162 -0
- package/dist/ui/overlays/prompt-library-state.js +335 -0
- package/dist/ui/overlays/prompt-picker-state.d.ts +71 -0
- package/dist/ui/overlays/prompt-picker-state.js +98 -0
- package/dist/ui/overlays/team-fanout-state.d.ts +106 -0
- package/dist/ui/overlays/team-fanout-state.js +155 -0
- package/dist/ui/overlays/use-model-probe.d.ts +30 -0
- package/dist/ui/overlays/use-model-probe.js +109 -0
- package/dist/ui/palettes.d.ts +112 -0
- package/dist/ui/palettes.js +130 -0
- package/dist/ui/paste-frames.d.ts +91 -0
- package/dist/ui/paste-frames.js +117 -0
- package/dist/ui/paste-tokens.d.ts +90 -0
- package/dist/ui/paste-tokens.js +147 -0
- package/dist/ui/render-cache.d.ts +81 -0
- package/dist/ui/render-cache.js +196 -0
- package/dist/ui/render-governor.d.ts +54 -0
- package/dist/ui/render-governor.js +78 -0
- package/dist/ui/run-metrics.d.ts +23 -0
- package/dist/ui/run-metrics.js +27 -0
- package/dist/ui/run-status-row.d.ts +63 -0
- package/dist/ui/run-status-row.js +54 -0
- package/dist/ui/screen.d.ts +107 -0
- package/dist/ui/screen.js +234 -0
- package/dist/ui/scrollback/LiveTail.d.ts +115 -0
- package/dist/ui/scrollback/LiveTail.js +48 -0
- package/dist/ui/scrollback/band.d.ts +114 -0
- package/dist/ui/scrollback/band.js +143 -0
- package/dist/ui/scrollback/budget.d.ts +90 -0
- package/dist/ui/scrollback/budget.js +100 -0
- package/dist/ui/scrollback/canvas.d.ts +100 -0
- package/dist/ui/scrollback/canvas.js +114 -0
- package/dist/ui/scrollback/cursor-probe.d.ts +71 -0
- package/dist/ui/scrollback/cursor-probe.js +133 -0
- package/dist/ui/scrollback/drain.d.ts +32 -0
- package/dist/ui/scrollback/drain.js +64 -0
- package/dist/ui/scrollback/exit-summary.d.ts +23 -0
- package/dist/ui/scrollback/exit-summary.js +25 -0
- package/dist/ui/scrollback/limits.d.ts +98 -0
- package/dist/ui/scrollback/limits.js +98 -0
- package/dist/ui/scrollback/live-preview.d.ts +34 -0
- package/dist/ui/scrollback/live-preview.js +130 -0
- package/dist/ui/scrollback/overflow-print.d.ts +108 -0
- package/dist/ui/scrollback/overflow-print.js +120 -0
- package/dist/ui/scrollback/renderer.d.ts +48 -0
- package/dist/ui/scrollback/renderer.js +186 -0
- package/dist/ui/scrollback/scrollback-writer.d.ts +174 -0
- package/dist/ui/scrollback/scrollback-writer.js +648 -0
- package/dist/ui/scrollback/settled-boundary.d.ts +42 -0
- package/dist/ui/scrollback/settled-boundary.js +109 -0
- package/dist/ui/scrollback/tail-anchor.d.ts +71 -0
- package/dist/ui/scrollback/tail-anchor.js +79 -0
- package/dist/ui/scrollback/tail-window.d.ts +73 -0
- package/dist/ui/scrollback/tail-window.js +89 -0
- package/dist/ui/scrollback/use-scrollback-view.d.ts +139 -0
- package/dist/ui/scrollback/use-scrollback-view.js +601 -0
- package/dist/ui/scrollback/writer-shapes.d.ts +127 -0
- package/dist/ui/scrollback/writer-shapes.js +159 -0
- package/dist/ui/scrollbar-controller.d.ts +30 -0
- package/dist/ui/scrollbar-controller.js +124 -0
- package/dist/ui/selection/highlight.d.ts +39 -0
- package/dist/ui/selection/highlight.js +64 -0
- package/dist/ui/selection/screen-mirror.d.ts +24 -0
- package/dist/ui/selection/screen-mirror.js +35 -0
- package/dist/ui/selection/selection-controller.d.ts +104 -0
- package/dist/ui/selection/selection-controller.js +372 -0
- package/dist/ui/selection/selection.d.ts +90 -0
- package/dist/ui/selection/selection.js +223 -0
- package/dist/ui/shortcuts.d.ts +81 -0
- package/dist/ui/shortcuts.js +221 -0
- package/dist/ui/status-feedback.d.ts +35 -0
- package/dist/ui/status-feedback.js +38 -0
- package/dist/ui/stdout-frame-writer.d.ts +74 -0
- package/dist/ui/stdout-frame-writer.js +155 -0
- package/dist/ui/team-status.d.ts +166 -0
- package/dist/ui/team-status.js +252 -0
- package/dist/ui/terminal-plan.d.ts +52 -0
- package/dist/ui/terminal-plan.js +49 -0
- package/dist/ui/theme.d.ts +96 -0
- package/dist/ui/theme.js +130 -0
- package/dist/ui/transcript-text.d.ts +41 -0
- package/dist/ui/transcript-text.js +282 -0
- package/dist/ui/use-height-store.d.ts +31 -0
- package/dist/ui/use-height-store.js +76 -0
- package/dist/ui/use-render-governor.d.ts +39 -0
- package/dist/ui/use-render-governor.js +57 -0
- package/dist/ui/use-wheel-routing.d.ts +57 -0
- package/dist/ui/use-wheel-routing.js +152 -0
- package/dist/ui/win-vt-force.d.ts +136 -0
- package/dist/ui/win-vt-force.js +237 -0
- package/dist/ui/win-vt-input.d.ts +57 -0
- package/dist/ui/win-vt-input.js +62 -0
- package/package.json +86 -4
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Log levels — the ordering, the names, and the two coercion helpers.
|
|
3
|
+
*
|
|
4
|
+
* Kept in its own module because it is the one piece of the logging subsystem
|
|
5
|
+
* the config layer (`schema.ts`) and the settings screen need, and neither
|
|
6
|
+
* should have to pull in a file sink to learn what "debug" is called.
|
|
7
|
+
*
|
|
8
|
+
* PRIVACY IS PART OF THE LADDER, not a side effect of it:
|
|
9
|
+
*
|
|
10
|
+
* error crashes, failed requests, config write/parse failures
|
|
11
|
+
* warn degraded migrations, clamped values, dropped records
|
|
12
|
+
* info lifecycle, config writes, turn boundaries + token counts, tool
|
|
13
|
+
* names and durations — NO conversation content at all
|
|
14
|
+
* debug the above plus prompts / replies / tool args truncated to
|
|
15
|
+
* `previewChars`
|
|
16
|
+
* trace full message bodies, full tool arguments and output
|
|
17
|
+
*
|
|
18
|
+
* `info` is the default precisely so that "send me your log" is a safe thing to
|
|
19
|
+
* ask a user. `debug` and above are not, and the README says so.
|
|
20
|
+
*/
|
|
21
|
+
export declare const LOG_LEVELS: {
|
|
22
|
+
readonly silent: 0;
|
|
23
|
+
readonly error: 10;
|
|
24
|
+
readonly warn: 20;
|
|
25
|
+
readonly info: 30;
|
|
26
|
+
readonly debug: 40;
|
|
27
|
+
readonly trace: 50;
|
|
28
|
+
};
|
|
29
|
+
export type LogLevelName = keyof typeof LOG_LEVELS;
|
|
30
|
+
export declare const LOG_LEVEL_NAMES: readonly LogLevelName[];
|
|
31
|
+
export declare function isLogLevel(v: unknown): v is LogLevelName;
|
|
32
|
+
/**
|
|
33
|
+
* Coerce anything into a level, falling back rather than throwing.
|
|
34
|
+
*
|
|
35
|
+
* Same discipline as `clampTheme` / `clampThinkingLevel`: a nonsense value in
|
|
36
|
+
* the config file must not stop the CLI from starting.
|
|
37
|
+
*/
|
|
38
|
+
export declare function clampLogLevel(v: unknown, fallback: LogLevelName): LogLevelName;
|
|
39
|
+
/** True when a record at `level` should be emitted under `threshold`. */
|
|
40
|
+
export declare function isLevelEnabled(level: LogLevelName, threshold: LogLevelName): boolean;
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Log levels — the ordering, the names, and the two coercion helpers.
|
|
3
|
+
*
|
|
4
|
+
* Kept in its own module because it is the one piece of the logging subsystem
|
|
5
|
+
* the config layer (`schema.ts`) and the settings screen need, and neither
|
|
6
|
+
* should have to pull in a file sink to learn what "debug" is called.
|
|
7
|
+
*
|
|
8
|
+
* PRIVACY IS PART OF THE LADDER, not a side effect of it:
|
|
9
|
+
*
|
|
10
|
+
* error crashes, failed requests, config write/parse failures
|
|
11
|
+
* warn degraded migrations, clamped values, dropped records
|
|
12
|
+
* info lifecycle, config writes, turn boundaries + token counts, tool
|
|
13
|
+
* names and durations — NO conversation content at all
|
|
14
|
+
* debug the above plus prompts / replies / tool args truncated to
|
|
15
|
+
* `previewChars`
|
|
16
|
+
* trace full message bodies, full tool arguments and output
|
|
17
|
+
*
|
|
18
|
+
* `info` is the default precisely so that "send me your log" is a safe thing to
|
|
19
|
+
* ask a user. `debug` and above are not, and the README says so.
|
|
20
|
+
*/
|
|
21
|
+
export const LOG_LEVELS = {
|
|
22
|
+
silent: 0,
|
|
23
|
+
error: 10,
|
|
24
|
+
warn: 20,
|
|
25
|
+
info: 30,
|
|
26
|
+
debug: 40,
|
|
27
|
+
trace: 50,
|
|
28
|
+
};
|
|
29
|
+
export const LOG_LEVEL_NAMES = [
|
|
30
|
+
'silent',
|
|
31
|
+
'error',
|
|
32
|
+
'warn',
|
|
33
|
+
'info',
|
|
34
|
+
'debug',
|
|
35
|
+
'trace',
|
|
36
|
+
];
|
|
37
|
+
export function isLogLevel(v) {
|
|
38
|
+
return typeof v === 'string' && Object.prototype.hasOwnProperty.call(LOG_LEVELS, v);
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Coerce anything into a level, falling back rather than throwing.
|
|
42
|
+
*
|
|
43
|
+
* Same discipline as `clampTheme` / `clampThinkingLevel`: a nonsense value in
|
|
44
|
+
* the config file must not stop the CLI from starting.
|
|
45
|
+
*/
|
|
46
|
+
export function clampLogLevel(v, fallback) {
|
|
47
|
+
if (isLogLevel(v))
|
|
48
|
+
return v;
|
|
49
|
+
if (typeof v === 'string' && isLogLevel(v.trim().toLowerCase())) {
|
|
50
|
+
return v.trim().toLowerCase();
|
|
51
|
+
}
|
|
52
|
+
return fallback;
|
|
53
|
+
}
|
|
54
|
+
/** True when a record at `level` should be emitted under `threshold`. */
|
|
55
|
+
export function isLevelEnabled(level, threshold) {
|
|
56
|
+
if (threshold === 'silent')
|
|
57
|
+
return false;
|
|
58
|
+
return LOG_LEVELS[level] <= LOG_LEVELS[threshold];
|
|
59
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The logging PORT the terminal-UI code writes to (tui-package-split S1 / D10).
|
|
3
|
+
*
|
|
4
|
+
* WHY A PORT AND NOT THE LOGGER. The process-wide `Logger` (file sink, redaction, session
|
|
5
|
+
* id, the four process hooks) is infrastructure that belongs to the executable, not to the
|
|
6
|
+
* terminal runtime. Four view-model / renderer modules used to call `getLogger()`
|
|
7
|
+
* directly; once those modules live in their own package they must not reach back into
|
|
8
|
+
* the CLI to do it. They call `getTuiLogger()` instead, with the SAME arguments, and the
|
|
9
|
+
* CLI connects the real logger when `logging/logger.ts` is loaded (see the bottom of that file).
|
|
10
|
+
*
|
|
11
|
+
* THE DEFAULT IS A NO-OP, AND THAT IS DELIBERATE: a consumer that never installs a
|
|
12
|
+
* logger (the package's own tests, an embedder) gets silence rather than a crash or a
|
|
13
|
+
* stray file. `getTuiLogger()` NEVER returns `undefined`, so a call site needs no guard.
|
|
14
|
+
*
|
|
15
|
+
* `TuiLogScope` must stay a SUBSET of the CLI's `LogScope`: that is what lets the CLI's
|
|
16
|
+
* `Logger` be assigned to this port with no cast. The compiler enforces it at the single
|
|
17
|
+
* wiring site at the bottom of `logger.ts`; widening this union without widening `LogScope` there is a
|
|
18
|
+
* compile error, not a silently dropped record.
|
|
19
|
+
*/
|
|
20
|
+
export type TuiLogScope = 'cli' | 'config' | 'compaction' | 'llm';
|
|
21
|
+
export type TuiLogData = Record<string, unknown>;
|
|
22
|
+
export interface TuiScopedLogger {
|
|
23
|
+
error(msg: string, data?: TuiLogData): void;
|
|
24
|
+
warn(msg: string, data?: TuiLogData): void;
|
|
25
|
+
info(msg: string, data?: TuiLogData): void;
|
|
26
|
+
debug(msg: string, data?: TuiLogData): void;
|
|
27
|
+
}
|
|
28
|
+
export interface TuiLogger {
|
|
29
|
+
error(scope: TuiLogScope, msg: string, data?: TuiLogData): void;
|
|
30
|
+
warn(scope: TuiLogScope, msg: string, data?: TuiLogData): void;
|
|
31
|
+
info(scope: TuiLogScope, msg: string, data?: TuiLogData): void;
|
|
32
|
+
debug(scope: TuiLogScope, msg: string, data?: TuiLogData): void;
|
|
33
|
+
child(scope: TuiLogScope): TuiScopedLogger;
|
|
34
|
+
}
|
|
35
|
+
/** Installs the real logger; `null` restores the no-op default (tests, teardown). */
|
|
36
|
+
export declare function setTuiLogger(logger: TuiLogger | null): void;
|
|
37
|
+
/** Never `undefined`: the default is a no-op, so call sites need no guard. */
|
|
38
|
+
export declare function getTuiLogger(): TuiLogger;
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The logging PORT the terminal-UI code writes to (tui-package-split S1 / D10).
|
|
3
|
+
*
|
|
4
|
+
* WHY A PORT AND NOT THE LOGGER. The process-wide `Logger` (file sink, redaction, session
|
|
5
|
+
* id, the four process hooks) is infrastructure that belongs to the executable, not to the
|
|
6
|
+
* terminal runtime. Four view-model / renderer modules used to call `getLogger()`
|
|
7
|
+
* directly; once those modules live in their own package they must not reach back into
|
|
8
|
+
* the CLI to do it. They call `getTuiLogger()` instead, with the SAME arguments, and the
|
|
9
|
+
* CLI connects the real logger when `logging/logger.ts` is loaded (see the bottom of that file).
|
|
10
|
+
*
|
|
11
|
+
* THE DEFAULT IS A NO-OP, AND THAT IS DELIBERATE: a consumer that never installs a
|
|
12
|
+
* logger (the package's own tests, an embedder) gets silence rather than a crash or a
|
|
13
|
+
* stray file. `getTuiLogger()` NEVER returns `undefined`, so a call site needs no guard.
|
|
14
|
+
*
|
|
15
|
+
* `TuiLogScope` must stay a SUBSET of the CLI's `LogScope`: that is what lets the CLI's
|
|
16
|
+
* `Logger` be assigned to this port with no cast. The compiler enforces it at the single
|
|
17
|
+
* wiring site at the bottom of `logger.ts`; widening this union without widening `LogScope` there is a
|
|
18
|
+
* compile error, not a silently dropped record.
|
|
19
|
+
*/
|
|
20
|
+
const NOOP_SCOPED = {
|
|
21
|
+
error: () => { },
|
|
22
|
+
warn: () => { },
|
|
23
|
+
info: () => { },
|
|
24
|
+
debug: () => { },
|
|
25
|
+
};
|
|
26
|
+
const NOOP_LOGGER = {
|
|
27
|
+
error: () => { },
|
|
28
|
+
warn: () => { },
|
|
29
|
+
info: () => { },
|
|
30
|
+
debug: () => { },
|
|
31
|
+
child: () => NOOP_SCOPED,
|
|
32
|
+
};
|
|
33
|
+
let installed = null;
|
|
34
|
+
/** Installs the real logger; `null` restores the no-op default (tests, teardown). */
|
|
35
|
+
export function setTuiLogger(logger) {
|
|
36
|
+
installed = logger;
|
|
37
|
+
}
|
|
38
|
+
/** Never `undefined`: the default is a no-op, so call sites need no guard. */
|
|
39
|
+
export function getTuiLogger() {
|
|
40
|
+
return installed ?? NOOP_LOGGER;
|
|
41
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The live set of secret literals the redactor must never let reach disk.
|
|
3
|
+
*
|
|
4
|
+
* WHY A REGISTRY AND NOT A SNAPSHOT (aragon-home-config-and-logging P0-3):
|
|
5
|
+
*
|
|
6
|
+
* The format regexes in `redact.ts` catch the three vendors we know about. This
|
|
7
|
+
* registry is the backstop for everything else — a custom endpoint whose key
|
|
8
|
+
* looks like nothing in particular. That backstop only works if it holds the
|
|
9
|
+
* keys we ACTUALLY have, which is a moving target: `installLogging()` runs
|
|
10
|
+
* before commander has parsed `--api-key`, and a key the user types into the
|
|
11
|
+
* settings screen mid-session arrives later still. A set captured at startup
|
|
12
|
+
* would miss the single most common path by which a key enters the process, and
|
|
13
|
+
* would miss it silently, because the vendor regexes happen to cover the keys
|
|
14
|
+
* we test with.
|
|
15
|
+
*
|
|
16
|
+
* Process-lifetime, append-only, never serialised, never written anywhere.
|
|
17
|
+
*/
|
|
18
|
+
export declare function registerSecret(value: string | undefined | null): void;
|
|
19
|
+
/** Convenience for the `apiKeys` maps every registration site happens to hold. */
|
|
20
|
+
export declare function registerSecretsFrom(keys: Record<string, string | null | undefined> | undefined): void;
|
|
21
|
+
/** Register dedicated credentials in untrusted parsed config before schema validation. */
|
|
22
|
+
export declare function registerProfileSecrets(value: unknown): void;
|
|
23
|
+
/**
|
|
24
|
+
* Every known secret, LONGEST FIRST.
|
|
25
|
+
*
|
|
26
|
+
* Order matters: when one key is a prefix of another, replacing the short one
|
|
27
|
+
* first leaves the remainder of the long one in the file — a partial key is
|
|
28
|
+
* still a leak, and a more convincing one for being partial.
|
|
29
|
+
*/
|
|
30
|
+
export declare function getSecrets(): readonly string[];
|
|
31
|
+
/** Tests only. Production code has no reason to forget a secret. */
|
|
32
|
+
export declare function clearSecretsForTest(): void;
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The live set of secret literals the redactor must never let reach disk.
|
|
3
|
+
*
|
|
4
|
+
* WHY A REGISTRY AND NOT A SNAPSHOT (aragon-home-config-and-logging P0-3):
|
|
5
|
+
*
|
|
6
|
+
* The format regexes in `redact.ts` catch the three vendors we know about. This
|
|
7
|
+
* registry is the backstop for everything else — a custom endpoint whose key
|
|
8
|
+
* looks like nothing in particular. That backstop only works if it holds the
|
|
9
|
+
* keys we ACTUALLY have, which is a moving target: `installLogging()` runs
|
|
10
|
+
* before commander has parsed `--api-key`, and a key the user types into the
|
|
11
|
+
* settings screen mid-session arrives later still. A set captured at startup
|
|
12
|
+
* would miss the single most common path by which a key enters the process, and
|
|
13
|
+
* would miss it silently, because the vendor regexes happen to cover the keys
|
|
14
|
+
* we test with.
|
|
15
|
+
*
|
|
16
|
+
* Process-lifetime, append-only, never serialised, never written anywhere.
|
|
17
|
+
*/
|
|
18
|
+
const secrets = new Set();
|
|
19
|
+
/**
|
|
20
|
+
* Minimum length for a value to count as a secret.
|
|
21
|
+
*
|
|
22
|
+
* Registering `"1"` or `"off"` would blank out every occurrence of that
|
|
23
|
+
* substring in ordinary log text, which destroys the log's usefulness while
|
|
24
|
+
* protecting nothing.
|
|
25
|
+
*/
|
|
26
|
+
const MIN_SECRET_LENGTH = 8;
|
|
27
|
+
export function registerSecret(value) {
|
|
28
|
+
if (typeof value !== 'string')
|
|
29
|
+
return;
|
|
30
|
+
const trimmed = value.trim();
|
|
31
|
+
if (trimmed.length < MIN_SECRET_LENGTH)
|
|
32
|
+
return;
|
|
33
|
+
secrets.add(trimmed);
|
|
34
|
+
}
|
|
35
|
+
/** Convenience for the `apiKeys` maps every registration site happens to hold. */
|
|
36
|
+
export function registerSecretsFrom(keys) {
|
|
37
|
+
if (!keys)
|
|
38
|
+
return;
|
|
39
|
+
for (const value of Object.values(keys))
|
|
40
|
+
registerSecret(value);
|
|
41
|
+
}
|
|
42
|
+
/** Register dedicated credentials in untrusted parsed config before schema validation. */
|
|
43
|
+
export function registerProfileSecrets(value) {
|
|
44
|
+
if (!value || typeof value !== 'object')
|
|
45
|
+
return;
|
|
46
|
+
const profiles = value.modelProfiles;
|
|
47
|
+
if (!profiles || typeof profiles !== 'object')
|
|
48
|
+
return;
|
|
49
|
+
const entries = profiles.entries;
|
|
50
|
+
if (!Array.isArray(entries))
|
|
51
|
+
return;
|
|
52
|
+
for (const entry of entries) {
|
|
53
|
+
if (!entry || typeof entry !== 'object')
|
|
54
|
+
continue;
|
|
55
|
+
const key = entry.apiKey;
|
|
56
|
+
if (typeof key === 'string')
|
|
57
|
+
registerSecret(key);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Every known secret, LONGEST FIRST.
|
|
62
|
+
*
|
|
63
|
+
* Order matters: when one key is a prefix of another, replacing the short one
|
|
64
|
+
* first leaves the remainder of the long one in the file — a partial key is
|
|
65
|
+
* still a leak, and a more convincing one for being partial.
|
|
66
|
+
*/
|
|
67
|
+
export function getSecrets() {
|
|
68
|
+
return [...secrets].sort((a, b) => b.length - a.length);
|
|
69
|
+
}
|
|
70
|
+
/** Tests only. Production code has no reason to forget a secret. */
|
|
71
|
+
export function clearSecretsForTest() {
|
|
72
|
+
secrets.clear();
|
|
73
|
+
}
|
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PROC_LIMITS — the single authority on every structural bound the process
|
|
3
|
+
* supervisor enforces (background-service-supervision §6).
|
|
4
|
+
*
|
|
5
|
+
* ASCII ONLY: `src/proc/**` is inside the glyph scanner's scope
|
|
6
|
+
* (`glyphs.test.ts::inScope`), whose hardcoded directory regex this feature
|
|
7
|
+
* extends. A NEW TREE IS INVISIBLE TO THAT SCAN UNTIL IT IS NAMED THERE, and a
|
|
8
|
+
* guard rail that silently stops guarding is worse than no guard rail — this
|
|
9
|
+
* package has now paid for that edit eleven times.
|
|
10
|
+
*
|
|
11
|
+
* TWO KINDS OF NUMBER, AND THEY ARE NOT INTERCHANGEABLE — the distinction
|
|
12
|
+
* `TODO_LIMITS` and `TEAM_LIMITS` each record at length:
|
|
13
|
+
*
|
|
14
|
+
* - Everything below is STRUCTURAL: how many rows a tail can physically carry,
|
|
15
|
+
* how many children one session may hold, how long a kill may take before it
|
|
16
|
+
* stops being a kill. A user has no business tuning them, so they are
|
|
17
|
+
* constants.
|
|
18
|
+
* - The four `bash.*` config keys (`config/schema.ts`) are POLICY: register the
|
|
19
|
+
* tools at all, let the classifier fire, how long a launch may block the
|
|
20
|
+
* turn, how long to wait for readiness. They are clamped, persisted and
|
|
21
|
+
* user-facing.
|
|
22
|
+
*/
|
|
23
|
+
export declare const PROC_LIMITS: {
|
|
24
|
+
/**
|
|
25
|
+
* Rows the per-service ring retains.
|
|
26
|
+
*
|
|
27
|
+
* DELIBERATELY A DIFFERENT NUMBER FROM `cardTailRows` BELOW, and from
|
|
28
|
+
* `LIVE_TAIL_ROWS` (8) in `tools/tool-output-store.ts`. They bound unrelated
|
|
29
|
+
* things — what `bash_output` can page back through, versus what one card
|
|
30
|
+
* draws — and a shared literal is how a later edit collapses two bounds into
|
|
31
|
+
* one.
|
|
32
|
+
*/
|
|
33
|
+
readonly serviceTailRows: 200;
|
|
34
|
+
/** Rows a snapshot (and therefore a card) carries. */
|
|
35
|
+
readonly cardTailRows: 8;
|
|
36
|
+
/**
|
|
37
|
+
* JOB RECORDS one session may hold — services AND tasks share the number.
|
|
38
|
+
*
|
|
39
|
+
* NAMED `maxJobs`, NOT `maxServices` (long-task-jobs D-7). A constant that
|
|
40
|
+
* counts two kinds of job while being called `maxServices` is the next edit's
|
|
41
|
+
* bug: the limit and its refusal message would go on saying "service" while
|
|
42
|
+
* the model is holding a training run.
|
|
43
|
+
*
|
|
44
|
+
* Eviction only ever removes a record in a TERMINAL state
|
|
45
|
+
* (`exited | failed | stopped`). When all 16 are live `start()` refuses and
|
|
46
|
+
* names the oldest ids rather than evicting: evicting a live record would
|
|
47
|
+
* orphan a running server that nothing can any longer name or stop.
|
|
48
|
+
*/
|
|
49
|
+
readonly maxJobs: 16;
|
|
50
|
+
/**
|
|
51
|
+
* How long `bash` waits after `'exit'` for the stdio streams to close before
|
|
52
|
+
* settling anyway.
|
|
53
|
+
*
|
|
54
|
+
* This number IS defence 1. `'close'` fires only once every stream is closed,
|
|
55
|
+
* and a detached grandchild that inherited the pipe keeps it open after the
|
|
56
|
+
* shell is long gone — so a tool that settles on `'close'` alone has a path
|
|
57
|
+
* that never settles at all.
|
|
58
|
+
*
|
|
59
|
+
* IT IS A BOUND, NOT A VERDICT. Expiry says "stop waiting"; it does NOT say
|
|
60
|
+
* the pipe was held, and the note is only printed when the streams are
|
|
61
|
+
* observed still open at that moment (`proc/output-streams.ts` records the
|
|
62
|
+
* release-gate failure a timer-based verdict caused). The ordinary path does
|
|
63
|
+
* not even reach this bound: two ended streams after `'exit'` settle the call
|
|
64
|
+
* with the byte-identical body, one notification earlier.
|
|
65
|
+
*/
|
|
66
|
+
readonly drainMs: 250;
|
|
67
|
+
/**
|
|
68
|
+
* How long an aborted/timed-out `bash` waits after the kill before settling
|
|
69
|
+
* WHETHER OR NOT the child ever reported exit.
|
|
70
|
+
*
|
|
71
|
+
* A pending promise after an abort is the bug; a possibly-premature result is
|
|
72
|
+
* not.
|
|
73
|
+
*/
|
|
74
|
+
readonly killGraceMs: 2000;
|
|
75
|
+
/** Readiness port probe interval. */
|
|
76
|
+
readonly probeIntervalMs: 500;
|
|
77
|
+
/** Socket timeout for one readiness probe. */
|
|
78
|
+
readonly probeSocketTimeoutMs: 1000;
|
|
79
|
+
/**
|
|
80
|
+
* Output-event coalescing window inside the supervisor.
|
|
81
|
+
*
|
|
82
|
+
* At the SOURCE rather than in the view, because the same event is also
|
|
83
|
+
* consumed by `/bg` and by `bash_output`. A webpack build emitting thousands
|
|
84
|
+
* of lines a second must not become thousands of React renders.
|
|
85
|
+
*/
|
|
86
|
+
readonly outputCoalesceMs: 100;
|
|
87
|
+
/** `SIGTERM` -> `SIGKILL` escalation window for a graceful stop. */
|
|
88
|
+
readonly stopGraceMs: 3000;
|
|
89
|
+
/**
|
|
90
|
+
* How long to KEEP ASKING whether the `SIGKILL` actually landed before
|
|
91
|
+
* declaring the job `stopped`.
|
|
92
|
+
*
|
|
93
|
+
* THIS NUMBER IS NOT A GUESS ABOUT THE PLATFORM. `killTree` spawns `taskkill`,
|
|
94
|
+
* which is a process of its own: a Windows tree kill of a shell plus its node
|
|
95
|
+
* child measures ~0.8 s on the reference machine (while starting `cmd` costs
|
|
96
|
+
* 50 ms), so the fixed 250 ms this used to allow expired first and `stop()`
|
|
97
|
+
* reported `stopped` with the child still running - AC-18 caught exactly that.
|
|
98
|
+
* The wait stays BOUNDED against the opposite failure (a promise that never
|
|
99
|
+
* resolves); at this deadline the record keeps the honest `killIncomplete`
|
|
100
|
+
* flag instead.
|
|
101
|
+
*/
|
|
102
|
+
readonly killVerifyMs: 2000;
|
|
103
|
+
/** Liveness poll interval while waiting for a `SIGKILL` to land. */
|
|
104
|
+
readonly killVerifyPollMs: 50;
|
|
105
|
+
/**
|
|
106
|
+
* How long ONE synchronous tree kill (`killTreeSync`) may take.
|
|
107
|
+
*
|
|
108
|
+
* MEASURED, NOT GUESSED. A `taskkill /pid <shell> /t /f` of a shell plus its
|
|
109
|
+
* node child takes 1027-1058 ms on the reference machine on an IDLE host (five
|
|
110
|
+
* samples, 2026-10-23), so the old 2000 ms was 1.9x the honest cost and the
|
|
111
|
+
* 2026-10-23 release run - where the whole suite took 340 s against the usual
|
|
112
|
+
* 200-240 s - is comfortably inside the range where a single tree kill exceeds
|
|
113
|
+
* it. Crossing it is not a slow kill, it is NO kill: `spawnSync` kills
|
|
114
|
+
* `taskkill` itself at the deadline and the tree keeps running (verified: a
|
|
115
|
+
* 150 ms budget left the child alive 1.5 s later, `ETIMEDOUT` / `status null`).
|
|
116
|
+
*
|
|
117
|
+
* 5000 ms is ~5x the measured cost. It is a CEILING and not a cost: a tree that
|
|
118
|
+
* dies in the usual second still returns in that second. The worst case is
|
|
119
|
+
* `maxJobs` (16) trees at the ceiling on an exit hook, which is why this is not
|
|
120
|
+
* any larger - the reaper prefers a reported miss to an exit that never ends,
|
|
121
|
+
* and the miss is now reported (`ProcRecord.killIncomplete`).
|
|
122
|
+
*/
|
|
123
|
+
readonly killTreeSyncTimeoutMs: 5000;
|
|
124
|
+
/** Below this many terminal columns the status chip degrades to `[N]`. */
|
|
125
|
+
readonly statusCompactCols: 92;
|
|
126
|
+
/**
|
|
127
|
+
* Rows of new output one `job_wait` result carries, in addition to its status,
|
|
128
|
+
* progress, cursor, `[note]`/`[stalled]` and `[next]` lines.
|
|
129
|
+
*
|
|
130
|
+
* THE NUMBER IS THE FEATURE. One wait must cost ~150 tokens, not the ~6k a
|
|
131
|
+
* 200-row tail costs - that economy is the whole reason `job_wait` exists
|
|
132
|
+
* instead of a seventh `bash_output` poll.
|
|
133
|
+
*/
|
|
134
|
+
readonly waitTailRows: 6;
|
|
135
|
+
/**
|
|
136
|
+
* Seconds a single wait may block, as a STRUCTURAL floor and ceiling (`jobs.waitSeconds` is clamped into this range).
|
|
137
|
+
*
|
|
138
|
+
* THE ONE AUTHORITY FOR THE CEILING (extended-job-wait I-2): the executor
|
|
139
|
+
* override (`JOB_WAIT_TOOL_CEILING_MS`), `WAIT_SECONDS_RANGE.max`, the tool
|
|
140
|
+
* description and the prompt block all derive from, or are asserted equal to,
|
|
141
|
+
* `waitMaxSeconds`. Changing it here and missing another reader is how a wait
|
|
142
|
+
* is silently cut short by a layer nobody remembered.
|
|
143
|
+
*/
|
|
144
|
+
readonly waitMinSeconds: 5;
|
|
145
|
+
readonly waitMaxSeconds: 1200;
|
|
146
|
+
/**
|
|
147
|
+
* Cadence of the in-wait heartbeat, in ms.
|
|
148
|
+
*
|
|
149
|
+
* ONE HZ because the reader needs "a few seconds ago" precision, not a stream:
|
|
150
|
+
* subscribing to the supervisor's 100 ms output coalescing would mean ~12000
|
|
151
|
+
* pointless view updates across a 20-minute wait. The same beat also carries the
|
|
152
|
+
* wall-clock deadline re-check (see `proc/wait.ts`).
|
|
153
|
+
*/
|
|
154
|
+
readonly waitHeartbeatMs: 1000;
|
|
155
|
+
/**
|
|
156
|
+
* Characters one extracted progress line may occupy.
|
|
157
|
+
*
|
|
158
|
+
* Also the width the card's progress row is assumed to take, which is why
|
|
159
|
+
* `ui/layout/virtual-window.ts` can count it as exactly one row.
|
|
160
|
+
*/
|
|
161
|
+
readonly waitProgressChars: 80;
|
|
162
|
+
/**
|
|
163
|
+
* Rows `extractProgress` scans, from the tail, before giving up.
|
|
164
|
+
*
|
|
165
|
+
* Eight because a tqdm bar plus its ETA plus the loss line above it is the
|
|
166
|
+
* realistic worst case, and because a wider window is how a stale `100%` from
|
|
167
|
+
* an earlier phase wins over the live one.
|
|
168
|
+
*/
|
|
169
|
+
readonly progressScanRows: 8;
|
|
170
|
+
/** Notices one `<job_notices>` block may render. Bounded so the block stays ~8 lines. */
|
|
171
|
+
readonly maxNotices: 8;
|
|
172
|
+
/** Log rows a failed job's notice carries. Two: the message and the frame above it. */
|
|
173
|
+
readonly noticeTailRows: 2;
|
|
174
|
+
/** Rows `job_list` prints before it collapses the rest into `+N more`. */
|
|
175
|
+
readonly listRows: 8;
|
|
176
|
+
/**
|
|
177
|
+
* Consecutive waits with no new row and no progress change before the
|
|
178
|
+
* `[guard]` line is prepended (R-3).
|
|
179
|
+
*
|
|
180
|
+
* A HINT, NEVER A REFUSAL: the seventh wait still waits. Refusing would take
|
|
181
|
+
* the decision away from the model at exactly the point where it has the most
|
|
182
|
+
* context.
|
|
183
|
+
*/
|
|
184
|
+
readonly maxConsecutiveWaits: 6;
|
|
185
|
+
/** Bytes one mirrored job log may occupy before it stops appending. */
|
|
186
|
+
readonly logMirrorMaxBytes: 2000000;
|
|
187
|
+
/** Coalescing window for the log mirror's appends (<=4 writes/second). */
|
|
188
|
+
readonly mirrorFlushMs: 250;
|
|
189
|
+
/** Session directories the mirror keeps, newest by mtime. */
|
|
190
|
+
readonly mirrorRetainDirs: 5;
|
|
191
|
+
};
|
|
192
|
+
/**
|
|
193
|
+
* Bumped whenever the wording of the `<background_services>` block changes, so a
|
|
194
|
+
* behaviour report can be tied to a block revision with one grep.
|
|
195
|
+
*/
|
|
196
|
+
export declare const BACKGROUND_SERVICES_BLOCK_VERSION = "v1";
|
|
197
|
+
/**
|
|
198
|
+
* The same discipline for the `<background_jobs>` block. A SEPARATE CONSTANT,
|
|
199
|
+
* not a bump of the one above: the two blocks are spliced by different flags
|
|
200
|
+
* (`bash.background` and `jobs.enabled`), so one version number covering both
|
|
201
|
+
* would make "which block changed" unanswerable from a report.
|
|
202
|
+
*/
|
|
203
|
+
export declare const JOBS_BLOCK_VERSION = "v2-2026-10";
|
|
204
|
+
/**
|
|
205
|
+
* Head-room the executor's own `job_wait` timer leaves above the longest wait.
|
|
206
|
+
*
|
|
207
|
+
* It is a SECOND, INDEPENDENT clock, not a coupling to `toolTimeoutMs`
|
|
208
|
+
* (extended-job-wait I-4'): the idle watchdog is paused for the whole wait, so
|
|
209
|
+
* when `waitForJob` itself misbehaves this is the only thing left that can end
|
|
210
|
+
* the call. `toolTimeoutMs` no longer constrains a wait at all.
|
|
211
|
+
*/
|
|
212
|
+
export declare const JOB_WAIT_MARGIN_MS = 30000;
|
|
213
|
+
/** The executor ceiling for `job_wait`: the longest wait plus its margin (1230 s). */
|
|
214
|
+
export declare const JOB_WAIT_TOOL_CEILING_MS: number;
|