@pellux/goodvibes-tui 2.0.20 → 2.1.0
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 +70 -0
- package/README.md +16 -16
- package/docs/README.md +4 -4
- package/docs/foundation-artifacts/operator-contract.json +59 -4
- package/package.json +16 -6
- package/src/cli/management.ts +5 -2
- package/src/cli/tui-startup.ts +34 -39
- package/src/core/agent-view-render.ts +157 -0
- package/src/core/approval-alert.ts +49 -11
- package/src/core/bookmark-navigation.ts +7 -1
- package/src/core/budget-breach-notifier.ts +27 -8
- package/src/core/compaction-receipt.ts +1 -1
- package/src/core/context-usage.ts +1 -1
- package/src/core/conversation-compaction-render.ts +3 -3
- package/src/core/conversation-display-only.ts +86 -0
- package/src/core/conversation-event-navigation.ts +27 -0
- package/src/core/conversation-line-cache.ts +216 -447
- package/src/core/conversation-render-context.ts +20 -27
- package/src/core/conversation-rendering.ts +157 -575
- package/src/core/conversation-splash-state.ts +6 -1
- package/src/core/conversation-types.ts +35 -0
- package/src/core/conversation-usage.ts +12 -0
- package/src/core/conversation.ts +130 -131
- package/src/core/long-task-notifier.ts +100 -31
- package/src/core/notices.ts +75 -0
- package/src/core/pairing-tailscale-gateway.ts +1 -1
- package/src/core/process-output-log.ts +143 -0
- package/src/core/rewind-receipt.ts +1 -1
- package/src/core/session-focus.ts +190 -0
- package/src/core/session-resume-core.ts +23 -81
- package/src/core/stream-event-wiring.ts +31 -5
- package/src/core/system-message-noise.ts +2 -2
- package/src/core/system-message-router.ts +16 -18
- package/src/core/turn-event-wiring.ts +272 -33
- package/src/core/work-tree-focus.ts +290 -0
- package/src/core/work-tree-fold-store.ts +143 -0
- package/src/core/work-tree-model.ts +799 -0
- package/src/core/work-tree-render.ts +384 -0
- package/src/core/work-tree-sources.ts +184 -0
- package/src/core/work-tree-wiring.ts +176 -0
- package/src/core/workstream-notification.ts +36 -6
- package/src/core/wrfc-notice-titles.ts +37 -0
- package/src/input/agents-modal-text.ts +119 -0
- package/src/input/agents-modal.ts +699 -0
- package/src/input/bookmark-modal.ts +33 -9
- package/src/input/changes-git.ts +251 -0
- package/src/input/changes-modal.ts +629 -0
- package/src/input/changes-model.ts +125 -0
- package/src/input/command-palette-types.ts +41 -0
- package/src/input/command-palette.ts +272 -0
- package/src/input/command-registry.ts +77 -35
- package/src/input/commands/acp-runtime.ts +19 -9
- package/src/input/commands/channel-runtime.ts +2 -2
- package/src/input/commands/ci-runtime.ts +1 -1
- package/src/input/commands/codebase-runtime.ts +1 -1
- package/src/input/commands/config.ts +7 -1
- package/src/input/commands/context-window.ts +25 -19
- package/src/input/commands/control-room-runtime.ts +18 -18
- package/src/input/commands/conversation-runtime.ts +0 -1
- package/src/input/commands/cost-runtime.ts +29 -20
- package/src/input/commands/diff-runtime.ts +35 -181
- package/src/input/commands/eval.ts +1 -1
- package/src/input/commands/experience-runtime.ts +3 -7
- package/src/input/commands/fresh-conversation.ts +86 -0
- package/src/input/commands/git-runtime.ts +5 -22
- package/src/input/commands/graph-runtime.ts +1 -1
- package/src/input/commands/guidance-runtime.ts +1 -1
- package/src/input/commands/health-runtime.ts +8 -9
- package/src/input/commands/hooks-runtime.ts +2 -2
- package/src/input/commands/hosted-runtime.ts +3 -3
- package/src/input/commands/incident-runtime.ts +3 -3
- package/src/input/commands/intelligence-runtime.ts +6 -9
- package/src/input/commands/knowledge.ts +2 -2
- package/src/input/commands/legacy-panel-command.ts +57 -0
- package/src/input/commands/local-auth-runtime.ts +8 -9
- package/src/input/commands/local-provider-runtime.ts +7 -4
- package/src/input/commands/local-runtime.ts +12 -15
- package/src/input/commands/local-setup-review.ts +1 -1
- package/src/input/commands/local-setup.ts +13 -19
- package/src/input/commands/memory.ts +1 -1
- package/src/input/commands/notify-runtime.ts +9 -0
- package/src/input/commands/operator-runtime.ts +10 -12
- package/src/input/commands/permissions-provenance.ts +3 -3
- package/src/input/commands/planning-runtime.ts +7 -7
- package/src/input/commands/platform-sandbox-runtime.ts +2 -2
- package/src/input/commands/platform-services-runtime.ts +1 -1
- package/src/input/commands/policy-dispatch.ts +2 -2
- package/src/input/commands/policy.ts +3 -3
- package/src/input/commands/provider.ts +1 -1
- package/src/input/commands/remote-runtime.ts +1 -1
- package/src/input/commands/review-runtime.ts +39 -94
- package/src/input/commands/rewind-runtime.ts +81 -108
- package/src/input/commands/runtime-services.ts +15 -17
- package/src/input/commands/services-runtime.ts +2 -2
- package/src/input/commands/session-content.ts +21 -5
- package/src/input/commands/session-workflow.ts +13 -38
- package/src/input/commands/settings-sync-runtime.ts +2 -2
- package/src/input/commands/shell-core.ts +19 -4
- package/src/input/commands/skills-runtime.ts +2 -2
- package/src/input/commands/status-runtime.ts +13 -0
- package/src/input/commands/subscription-runtime.ts +1 -1
- package/src/input/commands/tasks-runtime.ts +2 -8
- package/src/input/commands/work-plan-runtime.ts +4 -4
- package/src/input/commands/workstream-attempts.ts +24 -47
- package/src/input/commands/workstream-runtime.ts +2 -2
- package/src/input/commands/worktree-runtime.ts +3 -3
- package/src/input/commands.ts +3 -1
- package/src/input/composer-editor.ts +44 -0
- package/src/input/concealed-input.ts +1 -1
- package/src/input/config-modal-types.ts +20 -8
- package/src/input/config-modal.ts +106 -105
- package/src/input/confirm-dialog-types.ts +28 -0
- package/src/input/confirm-dialog.ts +70 -0
- package/src/input/delete-key-policy.ts +3 -3
- package/src/input/feed-context-factory.ts +15 -16
- package/src/input/handler-command-route.ts +7 -42
- package/src/input/handler-content-actions.ts +16 -15
- package/src/input/handler-feed-routes.ts +26 -211
- package/src/input/handler-feed.ts +68 -95
- package/src/input/handler-interactions.ts +5 -3
- package/src/input/handler-modal-routes.ts +215 -216
- package/src/input/handler-modal-stack.ts +81 -11
- package/src/input/handler-modal-token-routes.ts +4 -0
- package/src/input/handler-onboarding.ts +0 -1
- package/src/input/handler-picker-routes.ts +65 -107
- package/src/input/handler-session-view-route.ts +149 -0
- package/src/input/handler-shortcuts.ts +16 -154
- package/src/input/handler-types.ts +4 -2
- package/src/input/handler-ui-state.ts +45 -15
- package/src/input/handler-work-tree-route.ts +123 -0
- package/src/input/handler.ts +25 -70
- package/src/input/keybindings.ts +16 -71
- package/src/input/masked-entry-modal.ts +117 -0
- package/src/input/mcp-workspace.ts +48 -17
- package/src/input/model-picker-filter.ts +8 -0
- package/src/input/model-picker-open.ts +99 -0
- package/src/input/model-picker-types.ts +1 -1
- package/src/input/model-picker.ts +92 -9
- package/src/input/notifications-modal.ts +123 -0
- package/src/input/overlay-filter.ts +26 -0
- package/src/input/profile-picker-modal.ts +37 -8
- package/src/input/search.ts +3 -3
- package/src/input/selection-modal-queue.ts +2 -0
- package/src/input/selection-modal.ts +28 -16
- package/src/input/session-picker-modal.ts +33 -8
- package/src/input/settings-modal-activation.ts +7 -2
- package/src/input/settings-modal-data.ts +11 -6
- package/src/input/settings-modal-types.ts +1 -1
- package/src/input/settings-modal.ts +20 -20
- package/src/input/submission-intent.ts +1 -1
- package/src/input/submission-router.ts +4 -9
- package/src/input/surface-modal-host.ts +110 -0
- package/src/input/theme-settings-actions.ts +82 -0
- package/src/input/usage-modal.ts +183 -0
- package/src/input/views.ts +97 -0
- package/src/main.ts +175 -165
- package/src/permissions/hunk-selection.ts +1 -1
- package/src/permissions/prompt-card.ts +511 -0
- package/src/permissions/prompt.ts +59 -622
- package/src/renderer/agents-modal.ts +310 -0
- package/src/renderer/autocomplete-overlay.ts +42 -220
- package/src/renderer/back-to-bottom.ts +80 -0
- package/src/renderer/block-actions-overlay.ts +30 -48
- package/src/renderer/bookmark-modal.ts +48 -79
- package/src/renderer/changes-modal.ts +325 -0
- package/src/renderer/code-block.ts +184 -106
- package/src/renderer/command-palette.ts +93 -0
- package/src/renderer/composer-fragments.ts +4 -4
- package/src/renderer/composer.ts +146 -0
- package/src/renderer/compositor.ts +26 -160
- package/src/renderer/config-modal.ts +185 -81
- package/src/renderer/confirm-dialog.ts +50 -0
- package/src/renderer/context-inspector.ts +116 -154
- package/src/renderer/context-status-hint.ts +4 -4
- package/src/renderer/conversation-layout.ts +20 -0
- package/src/renderer/conversation-overlays.ts +94 -84
- package/src/renderer/conversation-surface.ts +19 -38
- package/src/renderer/diff-tint.ts +98 -0
- package/src/renderer/file-picker-overlay.ts +63 -90
- package/src/renderer/footer-targets.ts +38 -0
- package/src/renderer/git-status.ts +3 -4
- package/src/renderer/header-line.ts +140 -117
- package/src/renderer/help-overlay.ts +133 -219
- package/src/renderer/history-search-overlay.ts +15 -12
- package/src/renderer/lane-graph/bead.ts +800 -0
- package/src/renderer/lane-graph/glyphs.ts +134 -0
- package/src/renderer/lane-graph/layout.ts +248 -0
- package/src/renderer/lane-graph/paint.ts +537 -0
- package/src/renderer/lane-graph/semantic-memo.ts +77 -0
- package/src/renderer/layout-engine.ts +2 -57
- package/src/renderer/layout.ts +7 -13
- package/src/renderer/markdown-inline.ts +2 -1
- package/src/renderer/markdown-table.ts +17 -12
- package/src/renderer/markdown.ts +92 -34
- package/src/renderer/masked-entry-modal.ts +78 -0
- package/src/renderer/mcp-workspace.ts +166 -203
- package/src/renderer/model-workspace.ts +381 -436
- package/src/renderer/notifications-modal.ts +116 -0
- package/src/renderer/onboarding/onboarding-wizard.ts +178 -588
- package/src/renderer/process-view.ts +192 -0
- package/src/renderer/profile-picker-modal.ts +58 -110
- package/src/renderer/search-overlay.ts +6 -3
- package/src/renderer/selection-modal-overlay.ts +87 -327
- package/src/renderer/semantic-diff.ts +2 -2
- package/src/renderer/session-chips.ts +102 -0
- package/src/renderer/session-picker-modal.ts +177 -297
- package/src/renderer/settings-modal-connections.ts +14 -23
- package/src/renderer/settings-modal-context.ts +367 -0
- package/src/renderer/settings-modal-helpers.ts +6 -11
- package/src/renderer/settings-modal.ts +322 -726
- package/src/renderer/shell-surface.ts +277 -175
- package/src/renderer/shortcuts-overlay.ts +217 -0
- package/src/renderer/status-line.ts +475 -0
- package/src/renderer/surface-compose.ts +174 -0
- package/src/renderer/surface-kit-extra.ts +303 -0
- package/src/renderer/surface-kit-list.ts +366 -0
- package/src/renderer/surface-kit-parts.ts +360 -0
- package/src/renderer/surface-kit.ts +568 -0
- package/src/renderer/syntax-highlighter.ts +280 -197
- package/src/renderer/syntax-theme.ts +51 -0
- package/src/renderer/system-message.ts +0 -1
- package/src/renderer/term-caps.ts +42 -1
- package/src/renderer/terminal-bg-probe.ts +116 -19
- package/src/renderer/terminal-palette-probe.ts +322 -0
- package/src/renderer/terminal-palette-reader.ts +183 -0
- package/src/renderer/terminal-palette.ts +58 -0
- package/src/renderer/theme-mode-config.ts +16 -1
- package/src/renderer/theme.ts +234 -207
- package/src/renderer/thinking.ts +0 -1
- package/src/renderer/throbber.ts +188 -0
- package/src/renderer/toast-center.ts +119 -0
- package/src/renderer/ui-factory.ts +39 -602
- package/src/renderer/ui-primitives.ts +8 -25
- package/src/renderer/usage-modal.ts +353 -0
- package/src/renderer/user-message.ts +58 -0
- package/src/renderer/voice-capture-chip.ts +53 -0
- package/src/runtime/bootstrap-command-context.ts +0 -5
- package/src/runtime/bootstrap-command-parts.ts +38 -89
- package/src/runtime/bootstrap-core.ts +13 -15
- package/src/runtime/bootstrap-hook-bridge.ts +12 -21
- package/src/runtime/bootstrap-notifier-sync.ts +17 -1
- package/src/runtime/bootstrap-shell.ts +16 -50
- package/src/runtime/bootstrap.ts +14 -14
- package/src/runtime/client/fleet-union.ts +5 -5
- package/src/runtime/client/hosted-exit.ts +2 -2
- package/src/runtime/client/hosted-sessions.ts +1 -1
- package/src/runtime/client/spine-adoption.ts +1 -1
- package/src/runtime/context-accounting-source.ts +5 -4
- package/src/runtime/index.ts +1 -0
- package/src/runtime/notification-dispatch.ts +102 -29
- package/src/runtime/recovery-offer-wiring.ts +4 -1
- package/src/runtime/recovery-prompt.ts +31 -15
- package/src/runtime/runtime-services-types.ts +10 -6
- package/src/runtime/services.ts +17 -12
- package/src/runtime/session-continuity-hints.ts +2 -5
- package/src/runtime/session-inbound-inputs.ts +1 -1
- package/src/runtime/session-resume-liveness-confirm.ts +14 -2
- package/src/runtime/startup-typeahead-gate.ts +103 -0
- package/src/runtime/store/domains/domain-read-matrix.ts +0 -1
- package/src/runtime/store/domains/index.ts +0 -8
- package/src/runtime/store/selectors/index.ts +0 -28
- package/src/runtime/store/state.ts +0 -8
- package/src/runtime/ui-services.ts +4 -6
- package/src/runtime/usage-tracker.ts +348 -0
- package/src/runtime/wrfc-persistence.ts +4 -4
- package/src/shell/blocking-input.ts +92 -2
- package/src/shell/recovery-input-helpers.ts +1 -1
- package/src/shell/session-views.ts +539 -0
- package/src/shell/status-report.ts +86 -0
- package/src/shell/transcript-scroll.ts +68 -0
- package/src/shell/ui-openers.ts +84 -172
- package/src/shell/view-openers.ts +205 -0
- package/src/tools/wrfc-agent-guard.ts +22 -2
- package/src/utils/format-duration.ts +4 -8
- package/src/utils/splash-lines.ts +9 -1
- package/src/utils/terminal-width.ts +56 -0
- package/src/verification/verification-ledger.ts +18 -16
- package/src/{panels → views}/agent-inspector-shared.ts +2 -2
- package/src/{panels → views}/builtin-modals.ts +22 -21
- package/src/views/builtin-views.ts +135 -0
- package/src/{panels → views}/confirm-state.ts +9 -9
- package/src/{panels → views}/diff-review-model.ts +10 -3
- package/src/{panels → views}/eval-registry.ts +1 -1
- package/src/{panels → views}/fleet-acts.ts +49 -85
- package/src/{panels/fleet-panel-format.ts → views/fleet-format.ts} +40 -40
- package/src/{panels → views}/fleet-gateway.ts +5 -5
- package/src/{panels → views}/fleet-observed-render.ts +16 -16
- package/src/{panels → views}/fleet-read-model.ts +9 -9
- package/src/{panels/fleet-tabs.ts → views/fleet-session-tabs.ts} +13 -13
- package/src/{panels → views}/fleet-spawn.ts +33 -49
- package/src/{panels → views}/fleet-steer.ts +12 -12
- package/src/{panels → views}/fleet-stop.ts +4 -4
- package/src/{panels → views}/fleet-transcript.ts +26 -27
- package/src/{panels/fleet-panel-worktree-detail.ts → views/fleet-worktree-detail.ts} +7 -7
- package/src/{panels → views}/hosted-session-feed.ts +6 -6
- package/src/views/modal-surface-registry.ts +41 -0
- package/src/{panels → views}/modals/devices-modal.ts +2 -2
- package/src/{panels → views}/modals/hooks-modal.ts +13 -13
- package/src/{panels → views}/modals/keybindings-modal.ts +19 -27
- package/src/{panels → views}/modals/knowledge-modal.ts +6 -5
- package/src/{panels → views}/modals/local-auth-modal.ts +22 -21
- package/src/{panels → views}/modals/marketplace-modal.ts +11 -11
- package/src/{panels → views}/modals/memory-modal.ts +8 -8
- package/src/{panels → views}/modals/modal-surface-helpers.ts +15 -5
- package/src/{panels → views}/modals/pairing-modal.ts +9 -9
- package/src/{panels → views}/modals/planning-modal.ts +15 -20
- package/src/{panels → views}/modals/plugins-modal.ts +6 -6
- package/src/{panels → views}/modals/policy-modal.ts +13 -5
- package/src/{panels → views}/modals/provider-health-modal.ts +4 -4
- package/src/{panels → views}/modals/remote-modal.ts +3 -3
- package/src/{panels → views}/modals/sandbox-modal.ts +4 -4
- package/src/{panels → views}/modals/security-modal.ts +22 -16
- package/src/{panels → views}/modals/services-modal.ts +3 -3
- package/src/{panels → views}/modals/settings-sync-modal.ts +4 -4
- package/src/{panels → views}/modals/skills-modal.ts +9 -9
- package/src/{panels → views}/modals/subscription-modal.ts +3 -3
- package/src/{panels → views}/modals/work-plan-modal.ts +10 -13
- package/src/views/notifications-feed.ts +314 -0
- package/src/{panels → views}/polish-core.ts +38 -36
- package/src/{panels → views}/polish-tables.ts +35 -26
- package/src/{panels → views}/polish.ts +101 -95
- package/src/{panels → views}/project-planning-answer-actions.ts +3 -3
- package/src/{panels → views}/provider-health-routes.ts +14 -14
- package/src/{panels → views}/search-focus.ts +8 -8
- package/src/{panels → views}/session-maintenance.ts +11 -11
- package/src/views/skills-discovery.ts +159 -0
- package/src/views/view-deps.ts +80 -0
- package/src/views/view-panel-adapter.ts +53 -0
- package/src/{panels → views}/workstream-graph-render.ts +1 -1
- package/src/core/conversation-fold.ts +0 -101
- package/src/core/conversation-turn-structure.ts +0 -464
- package/src/core/conversation-user-receipts.ts +0 -42
- package/src/input/commands/operator-panel-runtime.ts +0 -186
- package/src/input/panel-integration-actions.ts +0 -33
- package/src/input/panel-mouse-geometry.ts +0 -97
- package/src/input/panel-paste-flood-guard.ts +0 -86
- package/src/panels/base-panel.ts +0 -301
- package/src/panels/builtin/agent.ts +0 -27
- package/src/panels/builtin/development.ts +0 -92
- package/src/panels/builtin/knowledge.ts +0 -12
- package/src/panels/builtin/operations.ts +0 -177
- package/src/panels/builtin/session.ts +0 -81
- package/src/panels/builtin/shared.ts +0 -357
- package/src/panels/builtin-panels.ts +0 -28
- package/src/panels/cost-tracker-panel.ts +0 -746
- package/src/panels/diff-panel.ts +0 -797
- package/src/panels/diff-review-panel.ts +0 -395
- package/src/panels/expandable-list-panel.ts +0 -189
- package/src/panels/fleet-deep-link.ts +0 -31
- package/src/panels/fleet-panel.ts +0 -799
- package/src/panels/git-panel.ts +0 -800
- package/src/panels/hosted-session-panel.ts +0 -221
- package/src/panels/index.ts +0 -21
- package/src/panels/local-auth-panel.ts +0 -478
- package/src/panels/notifications-feed.ts +0 -127
- package/src/panels/notifications-panel.ts +0 -160
- package/src/panels/panel-confirm-overlay.ts +0 -72
- package/src/panels/panel-manager.ts +0 -791
- package/src/panels/plugins-panel.ts +0 -371
- package/src/panels/scrollable-list-panel.ts +0 -498
- package/src/panels/skills-panel.ts +0 -454
- package/src/panels/token-budget-panel.ts +0 -688
- package/src/panels/types.ts +0 -191
- package/src/panels/wrfc-panel-format.ts +0 -133
- package/src/renderer/diff-view.ts +0 -134
- package/src/renderer/fleet-tab-strip.ts +0 -56
- package/src/renderer/footer-tips.ts +0 -53
- package/src/renderer/fullscreen-primitives.ts +0 -146
- package/src/renderer/fullscreen-workspace.ts +0 -194
- package/src/renderer/hint-grammar.ts +0 -52
- package/src/renderer/modal-factory.ts +0 -480
- package/src/renderer/overlay-box.ts +0 -154
- package/src/renderer/overlay-viewport.ts +0 -104
- package/src/renderer/panel-composite.ts +0 -145
- package/src/renderer/panel-workspace-bar.ts +0 -54
- package/src/renderer/process-indicator.ts +0 -163
- package/src/renderer/tab-strip.ts +0 -222
- package/src/renderer/text-layout.ts +0 -31
- package/src/renderer/tool-call.ts +0 -276
- package/src/renderer/tool-result-expanded-lines.ts +0 -48
- package/src/renderer/tool-result-summary.ts +0 -219
- package/src/runtime/diagnostics/panels/index.ts +0 -21
- package/src/runtime/diagnostics/panels/ops.ts +0 -156
- package/src/runtime/perf/panel-contracts.ts +0 -32
- package/src/runtime/store/domains/panels.ts +0 -117
- /package/src/{panels → views}/memory-consolidation-gateway.ts +0 -0
- /package/src/{panels → views}/modals/modal-theme.ts +0 -0
- /package/src/{panels → views}/provider-health-domains.ts +0 -0
|
@@ -1,156 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* OpsPanel, diagnostic data provider for the Operator Control Plane.
|
|
3
|
-
*
|
|
4
|
-
* Subscribes to OPS_AUDIT events from the UI-facing ops event feed and maintains a
|
|
5
|
-
* bounded buffer of intervention records for display
|
|
6
|
-
* in the Ops panel.
|
|
7
|
-
*
|
|
8
|
-
* Controls are only shown when the OpsControlPlane reports the action is legal
|
|
9
|
-
* (state machine allows it), satisfying requirement: "No illegal action appears in UI".
|
|
10
|
-
*/
|
|
11
|
-
import type { RuntimeEventEnvelope } from '@/runtime/index.ts';
|
|
12
|
-
import type { PanelConfig } from '@/runtime/index.ts';
|
|
13
|
-
import { DEFAULT_PANEL_CONFIG, appendBounded, applyFilter } from '@/runtime/index.ts';
|
|
14
|
-
import type { DiagnosticFilter } from '@/runtime/index.ts';
|
|
15
|
-
import type { OpsInterventionReason, OpsEvent } from '@/runtime/index.ts';
|
|
16
|
-
import type { UiEventFeed } from '@/runtime/index.ts';
|
|
17
|
-
|
|
18
|
-
// ---------------------------------------------------------------------------
|
|
19
|
-
// Audit entry
|
|
20
|
-
// ---------------------------------------------------------------------------
|
|
21
|
-
|
|
22
|
-
/**
|
|
23
|
-
* Immutable audit record for a single operator intervention.
|
|
24
|
-
*/
|
|
25
|
-
export interface OpsAuditEntry {
|
|
26
|
-
/** Monotonic sequence number. */
|
|
27
|
-
readonly seq: number;
|
|
28
|
-
/** Epoch ms when the intervention was recorded. */
|
|
29
|
-
readonly ts: number;
|
|
30
|
-
/** The action taken (e.g. 'task.cancel', 'agent.cancel'). */
|
|
31
|
-
readonly action: string;
|
|
32
|
-
/** The target task or agent ID. */
|
|
33
|
-
readonly targetId: string;
|
|
34
|
-
/** Whether this intervention targeted a task or an agent. */
|
|
35
|
-
readonly targetKind: 'task' | 'agent';
|
|
36
|
-
/** The reason code for the intervention. */
|
|
37
|
-
readonly reason: OpsInterventionReason;
|
|
38
|
-
/** Optional operator note. */
|
|
39
|
-
readonly note?: string;
|
|
40
|
-
/** Outcome of the intervention. */
|
|
41
|
-
readonly outcome: 'success' | 'rejected' | 'error';
|
|
42
|
-
/** Error message if outcome is not success. */
|
|
43
|
-
readonly errorMessage?: string;
|
|
44
|
-
/** Trace identifier from the event envelope. */
|
|
45
|
-
readonly traceId: string;
|
|
46
|
-
/** Session identifier from the event envelope. */
|
|
47
|
-
readonly sessionId: string;
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
// ---------------------------------------------------------------------------
|
|
51
|
-
// OpsPanel
|
|
52
|
-
// ---------------------------------------------------------------------------
|
|
53
|
-
|
|
54
|
-
/** Internal mutable record (same shape as immutable OpsAuditEntry). */
|
|
55
|
-
type MutableAuditRecord = {
|
|
56
|
-
seq: number;
|
|
57
|
-
ts: number;
|
|
58
|
-
action: string;
|
|
59
|
-
targetId: string;
|
|
60
|
-
targetKind: 'task' | 'agent';
|
|
61
|
-
reason: OpsInterventionReason;
|
|
62
|
-
note?: string;
|
|
63
|
-
outcome: 'success' | 'rejected' | 'error';
|
|
64
|
-
errorMessage?: string;
|
|
65
|
-
traceId: string;
|
|
66
|
-
sessionId: string;
|
|
67
|
-
};
|
|
68
|
-
|
|
69
|
-
/** Type alias for the OPS_AUDIT event shape. */
|
|
70
|
-
type OpsAuditEvent = Extract<OpsEvent, { type: 'OPS_AUDIT' }>;
|
|
71
|
-
|
|
72
|
-
export class OpsPanel {
|
|
73
|
-
private readonly _config: PanelConfig;
|
|
74
|
-
private readonly _events: UiEventFeed<OpsEvent>;
|
|
75
|
-
|
|
76
|
-
private readonly _audit: MutableAuditRecord[] = [];
|
|
77
|
-
private _seq = 0;
|
|
78
|
-
|
|
79
|
-
private readonly _subscribers = new Set<() => void>();
|
|
80
|
-
private _unsub: (() => void) | null = null;
|
|
81
|
-
|
|
82
|
-
public constructor(
|
|
83
|
-
events: UiEventFeed<OpsEvent>,
|
|
84
|
-
config: PanelConfig = DEFAULT_PANEL_CONFIG
|
|
85
|
-
) {
|
|
86
|
-
this._config = config;
|
|
87
|
-
this._events = events;
|
|
88
|
-
this._start();
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
private _start(): void {
|
|
92
|
-
this._unsub = this._events.onEnvelope('OPS_AUDIT', (envelope) => {
|
|
93
|
-
this._handleAudit(envelope as RuntimeEventEnvelope<'OPS_AUDIT', OpsAuditEvent>);
|
|
94
|
-
});
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
private _handleAudit(
|
|
98
|
-
envelope: RuntimeEventEnvelope<'OPS_AUDIT', OpsAuditEvent>
|
|
99
|
-
): void {
|
|
100
|
-
const payload = envelope.payload;
|
|
101
|
-
|
|
102
|
-
const record: MutableAuditRecord = {
|
|
103
|
-
seq: ++this._seq,
|
|
104
|
-
ts: envelope.ts,
|
|
105
|
-
action: payload.action,
|
|
106
|
-
targetId: payload.targetId,
|
|
107
|
-
targetKind: payload.targetKind,
|
|
108
|
-
reason: payload.reason,
|
|
109
|
-
note: payload.note,
|
|
110
|
-
outcome: payload.outcome,
|
|
111
|
-
errorMessage: payload.errorMessage,
|
|
112
|
-
traceId: envelope.traceId ?? '',
|
|
113
|
-
sessionId: envelope.sessionId ?? '',
|
|
114
|
-
};
|
|
115
|
-
|
|
116
|
-
appendBounded(this._audit, record, this._config.bufferLimit);
|
|
117
|
-
this._notify();
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
/**
|
|
121
|
-
* Returns a filtered snapshot of the audit log, most recent first.
|
|
122
|
-
*/
|
|
123
|
-
public getSnapshot(filter?: DiagnosticFilter): OpsAuditEntry[] {
|
|
124
|
-
const entries = this._audit.map((r) => ({ ...r }) as OpsAuditEntry);
|
|
125
|
-
return applyFilter(entries, filter, (e) => e.ts);
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
/**
|
|
129
|
-
* Subscribe to data changes. Returns an unsubscribe function.
|
|
130
|
-
*/
|
|
131
|
-
public subscribe(callback: () => void): () => void {
|
|
132
|
-
this._subscribers.add(callback);
|
|
133
|
-
return () => { this._subscribers.delete(callback); };
|
|
134
|
-
}
|
|
135
|
-
|
|
136
|
-
/**
|
|
137
|
-
* Dispose the panel, unsubscribing from the event bus.
|
|
138
|
-
*/
|
|
139
|
-
public dispose(): void {
|
|
140
|
-
if (this._unsub) {
|
|
141
|
-
this._unsub();
|
|
142
|
-
this._unsub = null;
|
|
143
|
-
}
|
|
144
|
-
this._subscribers.clear();
|
|
145
|
-
}
|
|
146
|
-
|
|
147
|
-
private _notify(): void {
|
|
148
|
-
for (const cb of this._subscribers) {
|
|
149
|
-
try {
|
|
150
|
-
cb();
|
|
151
|
-
} catch {
|
|
152
|
-
// Non-fatal, subscriber errors must not crash the panel
|
|
153
|
-
}
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
}
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Panel resource contracts, backward-compat shim.
|
|
3
|
-
*
|
|
4
|
-
* Re-exports the SDK's component contract types and helpers. TUI code that
|
|
5
|
-
* previously used local `ComponentResourceContract` / `ComponentHealthState`
|
|
6
|
-
* types (with `panelId`) now uses the SDK types (with `componentId`).
|
|
7
|
-
*
|
|
8
|
-
* Backward-compat aliases are re-exported:
|
|
9
|
-
* - `PanelResourceContract` = `Omit<ComponentResourceContract,'componentId'> & { panelId }`
|
|
10
|
-
* - `PanelHealthState` = `Omit<ComponentHealthState,'componentId'> & { panelId }`
|
|
11
|
-
*
|
|
12
|
-
* These keep TUI-internal code that still uses `.panelId` compiling while
|
|
13
|
-
* the broader migration to `.componentId` proceeds.
|
|
14
|
-
*/
|
|
15
|
-
|
|
16
|
-
export type {
|
|
17
|
-
ComponentThrottleStatus,
|
|
18
|
-
ComponentHealthStatus,
|
|
19
|
-
ComponentResourceContract,
|
|
20
|
-
ComponentHealthState,
|
|
21
|
-
PanelThrottleStatus,
|
|
22
|
-
PanelHealthStatus,
|
|
23
|
-
PanelResourceContract,
|
|
24
|
-
PanelHealthState,
|
|
25
|
-
} from '@/runtime/index.ts';
|
|
26
|
-
|
|
27
|
-
export {
|
|
28
|
-
CATEGORY_CONTRACTS,
|
|
29
|
-
buildContract,
|
|
30
|
-
createInitialComponentHealthState,
|
|
31
|
-
createInitialPanelHealthState,
|
|
32
|
-
} from '@/runtime/index.ts';
|
|
@@ -1,117 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Panels domain state, tracks the panel-first operator UX surfaces:
|
|
3
|
-
* which panels are open, their layout, and focus state.
|
|
4
|
-
*/
|
|
5
|
-
|
|
6
|
-
/** All known panel identifiers in the TUI. */
|
|
7
|
-
export type PanelId =
|
|
8
|
-
| 'main_conversation'
|
|
9
|
-
| 'agent_monitor'
|
|
10
|
-
| 'task_list'
|
|
11
|
-
| 'tool_trace'
|
|
12
|
-
| 'diff_viewer'
|
|
13
|
-
| 'file_explorer'
|
|
14
|
-
| 'git_status'
|
|
15
|
-
| 'mcp_inspector'
|
|
16
|
-
| 'plugin_manager'
|
|
17
|
-
| 'telemetry_dashboard'
|
|
18
|
-
| 'session_list';
|
|
19
|
-
|
|
20
|
-
/** Layout position within a split-pane TUI layout. */
|
|
21
|
-
export type PanelPosition = 'primary' | 'secondary' | 'sidebar' | 'footer';
|
|
22
|
-
|
|
23
|
-
/** State of a single panel. */
|
|
24
|
-
export interface PanelState {
|
|
25
|
-
/** Panel identifier. */
|
|
26
|
-
id: PanelId;
|
|
27
|
-
/** Whether the panel is currently open/visible. */
|
|
28
|
-
open: boolean;
|
|
29
|
-
/** Layout position assignment. */
|
|
30
|
-
position: PanelPosition;
|
|
31
|
-
/** Relative size weight within its position slot (1–100). */
|
|
32
|
-
sizeWeight: number;
|
|
33
|
-
/** Whether the panel currently has input focus. */
|
|
34
|
-
focused: boolean;
|
|
35
|
-
/** Epoch ms when the panel was last activated. */
|
|
36
|
-
lastActivatedAt?: number;
|
|
37
|
-
/**
|
|
38
|
-
* Scroll offset in lines (for scrollable panels).
|
|
39
|
-
*/
|
|
40
|
-
scrollOffset: number;
|
|
41
|
-
/** Whether the panel content is collapsed. */
|
|
42
|
-
collapsed: boolean;
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
/**
|
|
46
|
-
* PanelDomainState, panel layout and focus management.
|
|
47
|
-
*/
|
|
48
|
-
export interface PanelDomainState {
|
|
49
|
-
// ── Domain metadata ────────────────────────────────────────────────────────
|
|
50
|
-
/** Monotonic revision counter; increments on every mutation. */
|
|
51
|
-
revision: number;
|
|
52
|
-
/** Timestamp of last mutation (Date.now()). */
|
|
53
|
-
lastUpdatedAt: number;
|
|
54
|
-
/** Subsystem that triggered the last mutation. */
|
|
55
|
-
source: string;
|
|
56
|
-
|
|
57
|
-
// ── Panel registry ─────────────────────────────────────────────────────────
|
|
58
|
-
/** All panels keyed by PanelId. */
|
|
59
|
-
panels: Map<PanelId, PanelState>;
|
|
60
|
-
/** The panel currently holding keyboard focus. */
|
|
61
|
-
focusedPanelId: PanelId;
|
|
62
|
-
/** Previously focused panel (for focus restoration). */
|
|
63
|
-
previousFocusedPanelId?: PanelId;
|
|
64
|
-
|
|
65
|
-
// ── Layout ─────────────────────────────────────────────────────────────────
|
|
66
|
-
/** Whether the sidebar is visible. */
|
|
67
|
-
sidebarVisible: boolean;
|
|
68
|
-
/** Whether the footer panel row is visible. */
|
|
69
|
-
footerVisible: boolean;
|
|
70
|
-
/** Current terminal width in columns. */
|
|
71
|
-
terminalColumns: number;
|
|
72
|
-
/** Current terminal height in rows. */
|
|
73
|
-
terminalRows: number;
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
/**
|
|
77
|
-
* Returns the default initial state for the panels domain.
|
|
78
|
-
*/
|
|
79
|
-
export function createInitialPanelsState(): PanelDomainState {
|
|
80
|
-
const defaultPanel = (id: PanelId, open: boolean, position: PanelPosition): PanelState => ({
|
|
81
|
-
id,
|
|
82
|
-
open,
|
|
83
|
-
position,
|
|
84
|
-
sizeWeight: 50,
|
|
85
|
-
focused: id === 'main_conversation',
|
|
86
|
-
lastActivatedAt: undefined,
|
|
87
|
-
scrollOffset: 0,
|
|
88
|
-
collapsed: false,
|
|
89
|
-
});
|
|
90
|
-
|
|
91
|
-
const panels = new Map<PanelId, PanelState>([
|
|
92
|
-
['main_conversation', defaultPanel('main_conversation', true, 'primary')],
|
|
93
|
-
['agent_monitor', defaultPanel('agent_monitor', false, 'secondary')],
|
|
94
|
-
['task_list', defaultPanel('task_list', false, 'secondary')],
|
|
95
|
-
['tool_trace', defaultPanel('tool_trace', false, 'footer')],
|
|
96
|
-
['diff_viewer', defaultPanel('diff_viewer', false, 'secondary')],
|
|
97
|
-
['file_explorer', defaultPanel('file_explorer', false, 'sidebar')],
|
|
98
|
-
['git_status', defaultPanel('git_status', false, 'sidebar')],
|
|
99
|
-
['mcp_inspector', defaultPanel('mcp_inspector', false, 'secondary')],
|
|
100
|
-
['plugin_manager', defaultPanel('plugin_manager', false, 'secondary')],
|
|
101
|
-
['telemetry_dashboard', defaultPanel('telemetry_dashboard', false, 'secondary')],
|
|
102
|
-
['session_list', defaultPanel('session_list', false, 'sidebar')],
|
|
103
|
-
]);
|
|
104
|
-
|
|
105
|
-
return {
|
|
106
|
-
revision: 0,
|
|
107
|
-
lastUpdatedAt: 0,
|
|
108
|
-
source: 'init',
|
|
109
|
-
panels,
|
|
110
|
-
focusedPanelId: 'main_conversation',
|
|
111
|
-
previousFocusedPanelId: undefined,
|
|
112
|
-
sidebarVisible: false,
|
|
113
|
-
footerVisible: false,
|
|
114
|
-
terminalColumns: 80,
|
|
115
|
-
terminalRows: 24,
|
|
116
|
-
};
|
|
117
|
-
}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|