@pellux/goodvibes-tui 0.18.12 → 0.18.13
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 +50 -0
- package/README.md +1 -1
- package/docs/foundation-artifacts/operator-contract.json +1 -1
- package/package.json +2 -2
- package/src/config/index.ts +1 -138
- package/src/config/subscription-providers.ts +1 -127
- package/src/core/conversation-rendering.ts +3 -3
- package/src/core/conversation.ts +176 -423
- package/src/core/history.ts +45 -0
- package/src/core/orchestrator.ts +3 -735
- package/src/core/system-message-router.ts +19 -58
- package/src/input/handler-content-actions.ts +2 -2
- package/src/input/handler-feed.ts +1 -1
- package/src/input/handler-modal-token-routes.ts +1 -1
- package/src/input/handler-ui-state.ts +1 -1
- package/src/input/handler.ts +1 -1
- package/src/input/search.ts +1 -1
- package/src/input/selection.ts +2 -2
- package/src/main.ts +1 -1
- package/src/panels/agent-inspector-panel.ts +3 -3
- package/src/panels/agent-logs-panel.ts +3 -3
- package/src/panels/approval-panel.ts +2 -2
- package/src/panels/automation-control-panel.ts +3 -3
- package/src/panels/base-panel.ts +14 -14
- package/src/panels/builtin/operations.ts +1 -1
- package/src/panels/builtin/session.ts +1 -1
- package/src/panels/builtin/shared.ts +3 -3
- package/src/panels/cockpit-panel.ts +2 -2
- package/src/panels/communication-panel.ts +3 -3
- package/src/panels/context-visualizer-panel.ts +2 -2
- package/src/panels/control-plane-panel.ts +3 -3
- package/src/panels/cost-tracker-panel.ts +3 -3
- package/src/panels/debug-panel.ts +2 -2
- package/src/panels/diff-panel.ts +2 -2
- package/src/panels/docs-panel.ts +1 -1
- package/src/panels/eval-panel.ts +2 -2
- package/src/panels/file-explorer-panel.ts +3 -3
- package/src/panels/file-preview-panel.ts +3 -3
- package/src/panels/forensics-panel.ts +2 -2
- package/src/panels/git-panel.ts +1 -1
- package/src/panels/hooks-panel.ts +3 -3
- package/src/panels/incident-review-panel.ts +1 -1
- package/src/panels/intelligence-panel.ts +2 -2
- package/src/panels/knowledge-panel.ts +1 -1
- package/src/panels/local-auth-panel.ts +2 -2
- package/src/panels/marketplace-panel.ts +1 -1
- package/src/panels/mcp-panel.ts +3 -3
- package/src/panels/memory-panel.ts +1 -1
- package/src/panels/ops-control-panel.ts +3 -3
- package/src/panels/ops-strategy-panel.ts +2 -2
- package/src/panels/orchestration-panel.ts +2 -2
- package/src/panels/panel-list-panel.ts +6 -6
- package/src/panels/plan-dashboard-panel.ts +1 -1
- package/src/panels/plugins-panel.ts +2 -2
- package/src/panels/policy-panel.ts +2 -2
- package/src/panels/polish.ts +3 -3
- package/src/panels/provider-accounts-panel.ts +2 -2
- package/src/panels/provider-health-panel.ts +2 -2
- package/src/panels/provider-stats-panel.ts +3 -3
- package/src/panels/remote-panel.ts +3 -3
- package/src/panels/routes-panel.ts +3 -3
- package/src/panels/sandbox-panel.ts +2 -2
- package/src/panels/schedule-panel.ts +1 -1
- package/src/panels/security-panel.ts +2 -2
- package/src/panels/services-panel.ts +2 -2
- package/src/panels/session-browser-panel.ts +2 -2
- package/src/panels/settings-sync-panel.ts +2 -2
- package/src/panels/skills-panel.ts +6 -6
- package/src/panels/subscription-panel.ts +2 -2
- package/src/panels/symbol-outline-panel.ts +3 -3
- package/src/panels/system-messages-panel.ts +4 -4
- package/src/panels/tasks-panel.ts +2 -2
- package/src/panels/thinking-panel.ts +3 -3
- package/src/panels/token-budget-panel.ts +1 -1
- package/src/panels/tool-inspector-panel.ts +3 -3
- package/src/panels/types.ts +5 -5
- package/src/panels/watchers-panel.ts +3 -3
- package/src/panels/welcome-panel.ts +1 -1
- package/src/panels/worktree-panel.ts +2 -2
- package/src/panels/wrfc-panel.ts +3 -3
- package/src/permissions/prompt.ts +3 -22
- package/src/plugins/loader.ts +15 -304
- package/src/renderer/agent-detail-modal.ts +1 -1
- package/src/renderer/autocomplete-overlay.ts +2 -2
- package/src/renderer/bookmark-modal.ts +1 -1
- package/src/renderer/bottom-bar.ts +2 -2
- package/src/renderer/buffer.ts +1 -1
- package/src/renderer/code-block.ts +2 -2
- package/src/renderer/compositor.ts +2 -2
- package/src/renderer/context-inspector.ts +1 -1
- package/src/renderer/conversation-layout.ts +2 -2
- package/src/renderer/conversation-overlays.ts +1 -1
- package/src/renderer/conversation-surface.ts +2 -2
- package/src/renderer/diff-view.ts +2 -2
- package/src/renderer/diff.ts +1 -1
- package/src/renderer/file-picker-overlay.ts +2 -2
- package/src/renderer/file-tree.ts +2 -2
- package/src/renderer/help-overlay.ts +1 -1
- package/src/renderer/history-search-overlay.ts +2 -2
- package/src/renderer/live-tail-modal.ts +1 -1
- package/src/renderer/markdown.ts +2 -2
- package/src/renderer/modal-factory.ts +3 -3
- package/src/renderer/model-picker-overlay.ts +2 -2
- package/src/renderer/overlay-box.ts +2 -2
- package/src/renderer/panel-composite.ts +1 -1
- package/src/renderer/panel-picker-overlay.ts +2 -2
- package/src/renderer/panel-tab-bar.ts +1 -1
- package/src/renderer/panel-workspace-bar.ts +1 -1
- package/src/renderer/process-indicator.ts +2 -2
- package/src/renderer/process-modal.ts +1 -1
- package/src/renderer/profile-picker-modal.ts +2 -2
- package/src/renderer/progress.ts +2 -2
- package/src/renderer/search-overlay.ts +2 -2
- package/src/renderer/selection-modal-overlay.ts +2 -2
- package/src/renderer/session-picker-modal.ts +2 -2
- package/src/renderer/settings-modal.ts +2 -2
- package/src/renderer/shell-surface.ts +1 -1
- package/src/renderer/system-message.ts +1 -1
- package/src/renderer/tab-strip.ts +2 -2
- package/src/renderer/text-layout.ts +1 -1
- package/src/renderer/thinking.ts +1 -1
- package/src/renderer/tool-call.ts +2 -2
- package/src/renderer/ui-factory.ts +2 -2
- package/src/runtime/bootstrap-command-context.ts +4 -5
- package/src/runtime/bootstrap-command-parts.ts +1 -3
- package/src/runtime/bootstrap-core.ts +3 -2
- package/src/runtime/bootstrap-hook-bridge.ts +15 -174
- package/src/runtime/bootstrap-shell.ts +4 -4
- package/src/runtime/bootstrap.ts +1 -1
- package/src/runtime/context.ts +4 -20
- package/src/runtime/diagnostics/panels/index.ts +1 -1
- package/src/runtime/diagnostics/panels/ops.ts +1 -1
- package/src/runtime/diagnostics/panels/panel-resources.ts +118 -0
- package/src/runtime/perf/panel-contracts.ts +32 -0
- package/src/runtime/perf/panel-health-monitor.ts +18 -0
- package/src/runtime/services.ts +4 -4
- package/src/runtime/store/domains/conversation.ts +1 -181
- package/src/runtime/store/domains/permissions.ts +1 -143
- package/src/runtime/store/helpers/reducers/conversation.ts +1 -228
- package/src/runtime/store/helpers/reducers/lifecycle.ts +1 -440
- package/src/runtime/store/selectors/index.ts +11 -6
- package/src/runtime/store/state.ts +12 -4
- package/src/runtime/ui-events.ts +46 -0
- package/src/runtime/ui-services.ts +1 -1
- package/src/shell/ui-openers.ts +1 -1
- package/src/tools/index.ts +1 -186
- package/src/types/grid.ts +48 -0
- package/src/utils/clipboard.ts +21 -0
- package/src/utils/splash-lines.ts +1 -1
- package/src/utils/terminal-width.ts +185 -0
- package/src/version.ts +1 -1
- package/src/daemon/facade-composition.ts +0 -398
- package/src/daemon/facade.ts +0 -638
- package/src/daemon/surface-policy.ts +0 -60
- package/src/daemon/types.ts +0 -191
- package/src/runtime/ui-read-models-core.ts +0 -95
- package/src/runtime/ui-read-models-operations.ts +0 -203
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* MemoryPanel — project memory substrate TUI panel.
|
|
3
3
|
*/
|
|
4
4
|
|
|
5
|
-
import type { Line } from '
|
|
5
|
+
import type { Line } from '../types/grid.ts';
|
|
6
6
|
import type { MemoryRegistry } from '@pellux/goodvibes-sdk/platform/state/memory-store';
|
|
7
7
|
import type { MemoryRecord, MemoryClass } from '@pellux/goodvibes-sdk/platform/state/memory-store';
|
|
8
8
|
import { BasePanel } from './base-panel.ts';
|
|
@@ -7,13 +7,13 @@
|
|
|
7
7
|
* Requires the `operator-control-plane` feature flag to be enabled.
|
|
8
8
|
* Open via Ctrl+O keybind or `/ops view` command.
|
|
9
9
|
*/
|
|
10
|
-
import type { Line } from '
|
|
10
|
+
import type { Line } from '../types/grid.ts';
|
|
11
11
|
import type { OpsEvent } from '@pellux/goodvibes-sdk/platform/runtime/events/index';
|
|
12
|
-
import type { UiEventFeed } from '
|
|
12
|
+
import type { UiEventFeed } from '../runtime/ui-events.ts';
|
|
13
13
|
import type { OpsAuditEntry } from '../runtime/diagnostics/panels/ops.ts';
|
|
14
14
|
import { OpsPanel } from '../runtime/diagnostics/panels/ops.ts';
|
|
15
15
|
import { BasePanel } from './base-panel.ts';
|
|
16
|
-
import { createEmptyLine } from '
|
|
16
|
+
import { createEmptyLine } from '../types/grid.ts';
|
|
17
17
|
import {
|
|
18
18
|
buildEmptyState,
|
|
19
19
|
buildPanelLine,
|
|
@@ -8,10 +8,10 @@
|
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
10
|
import { BasePanel } from './base-panel.ts';
|
|
11
|
-
import type { Line } from '
|
|
11
|
+
import type { Line } from '../types/grid.ts';
|
|
12
12
|
import type { PlannerDecision, ExecutionStrategy } from '@pellux/goodvibes-sdk/platform/core/adaptive-planner';
|
|
13
13
|
import type { PlannerEvent } from '@pellux/goodvibes-sdk/platform/runtime/events/index';
|
|
14
|
-
import type { UiEventFeed } from '
|
|
14
|
+
import type { UiEventFeed } from '../runtime/ui-events.ts';
|
|
15
15
|
import type { OpsStrategyQuery } from '../runtime/ui-service-queries.ts';
|
|
16
16
|
import {
|
|
17
17
|
buildEmptyState,
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { Line } from '
|
|
2
|
-
import { createEmptyLine } from '
|
|
1
|
+
import type { Line } from '../types/grid.ts';
|
|
2
|
+
import { createEmptyLine } from '../types/grid.ts';
|
|
3
3
|
import { BasePanel } from './base-panel.ts';
|
|
4
4
|
import type { UiOrchestrationSnapshot, UiReadModel } from '../runtime/ui-read-models.ts';
|
|
5
5
|
import {
|
|
@@ -12,12 +12,12 @@
|
|
|
12
12
|
*
|
|
13
13
|
* Open via /panel list.
|
|
14
14
|
*/
|
|
15
|
-
import type { Line, Cell } from '
|
|
15
|
+
import type { Line, Cell } from '../types/grid.ts';
|
|
16
16
|
import type { PanelCategory, PanelRegistration } from './types.ts';
|
|
17
17
|
import { BasePanel } from './base-panel.ts';
|
|
18
18
|
import type { PanelManager } from './panel-manager.ts';
|
|
19
|
-
import type {
|
|
20
|
-
import { createEmptyLine } from '
|
|
19
|
+
import type { ComponentHealthMonitor } from '../runtime/perf/panel-health-monitor.ts';
|
|
20
|
+
import { createEmptyLine } from '../types/grid.ts';
|
|
21
21
|
import {
|
|
22
22
|
buildEmptyState,
|
|
23
23
|
buildKeyValueLine,
|
|
@@ -30,7 +30,7 @@ import {
|
|
|
30
30
|
resolvePrimaryScrollableSection,
|
|
31
31
|
type PanelWorkspaceSection,
|
|
32
32
|
} from './polish.ts';
|
|
33
|
-
import { truncateDisplay } from '
|
|
33
|
+
import { truncateDisplay } from '../utils/terminal-width.ts';
|
|
34
34
|
import { wrapWithHangingIndent } from '../renderer/text-layout.ts';
|
|
35
35
|
import {
|
|
36
36
|
getPanelSearchFocusTransition,
|
|
@@ -112,9 +112,9 @@ export class PanelListPanel extends BasePanel {
|
|
|
112
112
|
|
|
113
113
|
public constructor(
|
|
114
114
|
private readonly panelManager: PanelManager,
|
|
115
|
-
|
|
115
|
+
componentHealthMonitor?: ComponentHealthMonitor,
|
|
116
116
|
) {
|
|
117
|
-
super('panel-list', 'Panel List', 'L', 'session',
|
|
117
|
+
super('panel-list', 'Panel List', 'L', 'session', componentHealthMonitor);
|
|
118
118
|
}
|
|
119
119
|
|
|
120
120
|
public override onActivate(): void {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { Line } from '
|
|
1
|
+
import type { Line } from '../types/grid.ts';
|
|
2
2
|
import type { ExecutionPlan, PlanItem, PlanItemStatus } from '@pellux/goodvibes-sdk/platform/core/execution-plan';
|
|
3
3
|
import { BasePanel } from './base-panel.ts';
|
|
4
4
|
import type { PlanDashboardQuery } from '../runtime/ui-service-queries.ts';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { Line } from '
|
|
2
|
-
import { createEmptyLine } from '
|
|
1
|
+
import type { Line } from '../types/grid.ts';
|
|
2
|
+
import { createEmptyLine } from '../types/grid.ts';
|
|
3
3
|
import { BasePanel } from './base-panel.ts';
|
|
4
4
|
import type { PluginManagerObserver, PluginStatus } from '@pellux/goodvibes-sdk/platform/plugins/manager';
|
|
5
5
|
import {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { Line } from '
|
|
2
|
-
import { createEmptyLine } from '
|
|
1
|
+
import type { Line } from '../types/grid.ts';
|
|
2
|
+
import { createEmptyLine } from '../types/grid.ts';
|
|
3
3
|
import { BasePanel } from './base-panel.ts';
|
|
4
4
|
import type { PolicyRuntimeState } from '@pellux/goodvibes-sdk/platform/runtime/permissions/policy-runtime';
|
|
5
5
|
import type { PolicyPanelSnapshot } from '../runtime/diagnostics/panels/policy.ts';
|
package/src/panels/polish.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type { Line } from '
|
|
2
|
-
import { createEmptyLine, createStyledCell } from '
|
|
3
|
-
import { getDisplayWidth, wrapText } from '
|
|
1
|
+
import type { Line } from '../types/grid.ts';
|
|
2
|
+
import { createEmptyLine, createStyledCell } from '../types/grid.ts';
|
|
3
|
+
import { getDisplayWidth, wrapText } from '../utils/terminal-width.ts';
|
|
4
4
|
import { getSurfaceContentRows, getTrackedVisibleWindow, getVisibleWindow, type VisibleWindow } from '../renderer/surface-layout.ts';
|
|
5
5
|
import { GLYPHS, UI_TONES } from '../renderer/ui-primitives.ts';
|
|
6
6
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { Line } from '
|
|
2
|
-
import { createEmptyLine } from '
|
|
1
|
+
import type { Line } from '../types/grid.ts';
|
|
2
|
+
import { createEmptyLine } from '../types/grid.ts';
|
|
3
3
|
import { BasePanel } from './base-panel.ts';
|
|
4
4
|
import {
|
|
5
5
|
buildDetailBlock,
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import type { ConfigManager } from '@pellux/goodvibes-sdk/platform/config/manager';
|
|
2
2
|
import { BasePanel } from './base-panel.ts';
|
|
3
|
-
import { createEmptyLine, createStyledCell, type Line } from '
|
|
3
|
+
import { createEmptyLine, createStyledCell, type Line } from '../types/grid.ts';
|
|
4
4
|
import type { ProviderAuthRouteDescriptor } from '@pellux/goodvibes-sdk/platform/providers/interface';
|
|
5
5
|
import type { ProviderEvent, TurnEvent } from '@pellux/goodvibes-sdk/platform/runtime/events/index';
|
|
6
|
-
import type { UiEventFeed } from '
|
|
6
|
+
import type { UiEventFeed } from '../runtime/ui-events.ts';
|
|
7
7
|
import {
|
|
8
8
|
type ProviderRuntimeInspectionQuery,
|
|
9
9
|
} from '../runtime/ui-service-queries.ts';
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { BasePanel } from './base-panel.ts';
|
|
2
|
-
import type { Line } from '
|
|
2
|
+
import type { Line } from '../types/grid.ts';
|
|
3
3
|
import type { ProviderEvent, TurnEvent } from '@pellux/goodvibes-sdk/platform/runtime/events/index';
|
|
4
|
-
import type { UiEventFeed } from '
|
|
4
|
+
import type { UiEventFeed } from '../runtime/ui-events.ts';
|
|
5
5
|
import type { UiProvidersSnapshot, UiReadModel } from '../runtime/ui-read-models.ts';
|
|
6
6
|
import {
|
|
7
7
|
buildEmptyState,
|
|
@@ -11,7 +11,7 @@ import {
|
|
|
11
11
|
DEFAULT_PANEL_PALETTE,
|
|
12
12
|
type PanelWorkspaceSection,
|
|
13
13
|
} from './polish.ts';
|
|
14
|
-
import { truncateDisplay } from '
|
|
14
|
+
import { truncateDisplay } from '../utils/terminal-width.ts';
|
|
15
15
|
|
|
16
16
|
// ---------------------------------------------------------------------------
|
|
17
17
|
// Constants
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { Line } from '
|
|
2
|
-
import { createEmptyLine } from '
|
|
1
|
+
import type { Line } from '../types/grid.ts';
|
|
2
|
+
import { createEmptyLine } from '../types/grid.ts';
|
|
3
3
|
import { BasePanel } from './base-panel.ts';
|
|
4
4
|
import type { UiReadModel, UiRemoteSnapshot } from '../runtime/ui-read-models.ts';
|
|
5
5
|
import {
|
|
@@ -14,7 +14,7 @@ import {
|
|
|
14
14
|
resolvePrimaryScrollableSection,
|
|
15
15
|
type PanelWorkspaceSection,
|
|
16
16
|
} from './polish.ts';
|
|
17
|
-
import { truncateDisplay } from '
|
|
17
|
+
import { truncateDisplay } from '../utils/terminal-width.ts';
|
|
18
18
|
import { getTrackedVisibleWindow } from '../renderer/surface-layout.ts';
|
|
19
19
|
|
|
20
20
|
const C = {
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import type { Line } from '
|
|
2
|
-
import { createEmptyLine } from '
|
|
1
|
+
import type { Line } from '../types/grid.ts';
|
|
2
|
+
import { createEmptyLine } from '../types/grid.ts';
|
|
3
3
|
import { BasePanel } from './base-panel.ts';
|
|
4
4
|
import type { UiReadModel, UiRoutesSnapshot } from '../runtime/ui-read-models.ts';
|
|
5
|
-
import { truncateDisplay } from '
|
|
5
|
+
import { truncateDisplay } from '../utils/terminal-width.ts';
|
|
6
6
|
import {
|
|
7
7
|
buildEmptyState,
|
|
8
8
|
buildGuidanceLine,
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { Line } from '
|
|
2
|
-
import { createEmptyLine } from '
|
|
1
|
+
import type { Line } from '../types/grid.ts';
|
|
2
|
+
import { createEmptyLine } from '../types/grid.ts';
|
|
3
3
|
import { BasePanel } from './base-panel.ts';
|
|
4
4
|
import { ConfigManager } from '@pellux/goodvibes-sdk/platform/config/manager';
|
|
5
5
|
import { buildSandboxReview, listSandboxPresets, listSandboxProfiles } from '@pellux/goodvibes-sdk/platform/runtime/sandbox/manager';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { BasePanel } from './base-panel.ts';
|
|
2
|
-
import { type Line } from '
|
|
2
|
+
import { type Line } from '../types/grid.ts';
|
|
3
3
|
import type { AutomationManager } from '@pellux/goodvibes-sdk/platform/automation/index';
|
|
4
4
|
import type { AutomationJob } from '@pellux/goodvibes-sdk/platform/automation/jobs';
|
|
5
5
|
import type { AutomationRun } from '@pellux/goodvibes-sdk/platform/automation/runs';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { Line } from '
|
|
2
|
-
import { createEmptyLine } from '
|
|
1
|
+
import type { Line } from '../types/grid.ts';
|
|
2
|
+
import { createEmptyLine } from '../types/grid.ts';
|
|
3
3
|
import { BasePanel } from './base-panel.ts';
|
|
4
4
|
import type { TokenAuditResult } from '@pellux/goodvibes-sdk/platform/security/token-audit';
|
|
5
5
|
import type { UiReadModel, UiSecuritySnapshot } from '../runtime/ui-read-models.ts';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { Line } from '
|
|
2
|
-
import { createEmptyLine } from '
|
|
1
|
+
import type { Line } from '../types/grid.ts';
|
|
2
|
+
import { createEmptyLine } from '../types/grid.ts';
|
|
3
3
|
import { BasePanel } from './base-panel.ts';
|
|
4
4
|
import {
|
|
5
5
|
type ServiceConfig,
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
// SessionBrowserPanel — browse, search, and resume old sessions.
|
|
3
3
|
// ---------------------------------------------------------------------------
|
|
4
4
|
|
|
5
|
-
import type { Line } from '
|
|
5
|
+
import type { Line } from '../types/grid.ts';
|
|
6
6
|
import { BasePanel } from './base-panel.ts';
|
|
7
7
|
import type { SessionInfo } from '@pellux/goodvibes-sdk/platform/sessions/manager';
|
|
8
8
|
import { logger } from '@pellux/goodvibes-sdk/platform/utils/logger';
|
|
@@ -17,7 +17,7 @@ import {
|
|
|
17
17
|
DEFAULT_PANEL_PALETTE,
|
|
18
18
|
type PanelWorkspaceSection,
|
|
19
19
|
} from './polish.ts';
|
|
20
|
-
import { truncateDisplay } from '
|
|
20
|
+
import { truncateDisplay } from '../utils/terminal-width.ts';
|
|
21
21
|
import { summarizeError } from '@pellux/goodvibes-sdk/platform/utils/error-display';
|
|
22
22
|
import {
|
|
23
23
|
getPanelSearchFocusTransition,
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { Line } from '
|
|
2
|
-
import { createEmptyLine } from '
|
|
1
|
+
import type { Line } from '../types/grid.ts';
|
|
2
|
+
import { createEmptyLine } from '../types/grid.ts';
|
|
3
3
|
import { BasePanel } from './base-panel.ts';
|
|
4
4
|
import {
|
|
5
5
|
buildDetailBlock,
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { existsSync, readdirSync, readFileSync } from 'node:fs';
|
|
2
2
|
import { join } from 'node:path';
|
|
3
|
-
import type { Line } from '
|
|
4
|
-
import { createEmptyLine } from '
|
|
5
|
-
import { getDisplayWidth, truncateDisplay } from '
|
|
3
|
+
import type { Line } from '../types/grid.ts';
|
|
4
|
+
import { createEmptyLine } from '../types/grid.ts';
|
|
5
|
+
import { getDisplayWidth, truncateDisplay } from '../utils/terminal-width.ts';
|
|
6
6
|
import { BasePanel } from './base-panel.ts';
|
|
7
|
-
import type {
|
|
7
|
+
import type { ComponentHealthMonitor } from '../runtime/perf/panel-health-monitor.ts';
|
|
8
8
|
import type { ShellPathService } from '@pellux/goodvibes-sdk/platform/runtime/shell-paths';
|
|
9
9
|
import {
|
|
10
10
|
buildEmptyState,
|
|
@@ -55,7 +55,7 @@ export interface SkillRecord {
|
|
|
55
55
|
|
|
56
56
|
export interface SkillsPanelOptions {
|
|
57
57
|
shellPaths: Pick<ShellPathService, 'workingDirectory' | 'homeDirectory'>;
|
|
58
|
-
|
|
58
|
+
componentHealthMonitor?: ComponentHealthMonitor;
|
|
59
59
|
}
|
|
60
60
|
|
|
61
61
|
function parseFrontmatter(content: string): Record<string, string> {
|
|
@@ -243,7 +243,7 @@ export class SkillsPanel extends BasePanel {
|
|
|
243
243
|
private cacheDirty = true;
|
|
244
244
|
|
|
245
245
|
public constructor(options: SkillsPanelOptions) {
|
|
246
|
-
super('skills', 'Skills', 'K', 'monitoring', options.
|
|
246
|
+
super('skills', 'Skills', 'K', 'monitoring', options.componentHealthMonitor);
|
|
247
247
|
this.shellPaths = options.shellPaths;
|
|
248
248
|
}
|
|
249
249
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { Line } from '
|
|
2
|
-
import { createEmptyLine } from '
|
|
1
|
+
import type { Line } from '../types/grid.ts';
|
|
2
|
+
import { createEmptyLine } from '../types/grid.ts';
|
|
3
3
|
import { BasePanel } from './base-panel.ts';
|
|
4
4
|
import type { ProviderSubscription, PendingSubscriptionLogin } from '@pellux/goodvibes-sdk/platform/config/subscriptions';
|
|
5
5
|
import { listBuiltinSubscriptionProviders } from '../config/subscription-providers.ts';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { BasePanel } from './base-panel.ts';
|
|
2
|
-
import { createEmptyLine } from '
|
|
3
|
-
import type { Line } from '
|
|
2
|
+
import { createEmptyLine } from '../types/grid.ts';
|
|
3
|
+
import type { Line } from '../types/grid.ts';
|
|
4
4
|
import {
|
|
5
5
|
buildEmptyState,
|
|
6
6
|
buildPanelLine,
|
|
@@ -9,7 +9,7 @@ import {
|
|
|
9
9
|
resolveScrollablePanelSection,
|
|
10
10
|
DEFAULT_PANEL_PALETTE,
|
|
11
11
|
} from './polish.ts';
|
|
12
|
-
import { getDisplayWidth } from '
|
|
12
|
+
import { getDisplayWidth } from '../utils/terminal-width.ts';
|
|
13
13
|
|
|
14
14
|
// ── Symbol types ────────────────────────────────────────────────────────────
|
|
15
15
|
|
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
import { BasePanel } from './base-panel.ts';
|
|
7
|
-
import type { Line } from '
|
|
8
|
-
import type {
|
|
7
|
+
import type { Line } from '../types/grid.ts';
|
|
8
|
+
import type { ComponentHealthMonitor } from '../runtime/perf/panel-health-monitor.ts';
|
|
9
9
|
import {
|
|
10
10
|
buildBodyText,
|
|
11
11
|
buildEmptyState,
|
|
@@ -54,8 +54,8 @@ export class SystemMessagesPanel extends BasePanel {
|
|
|
54
54
|
private _scrollOffset = 0;
|
|
55
55
|
private readonly configManager: ConfigManager;
|
|
56
56
|
|
|
57
|
-
constructor(configManager: ConfigManager,
|
|
58
|
-
super('system-messages', 'System Messages', 'J', 'monitoring',
|
|
57
|
+
constructor(configManager: ConfigManager, componentHealthMonitor?: ComponentHealthMonitor) {
|
|
58
|
+
super('system-messages', 'System Messages', 'J', 'monitoring', componentHealthMonitor);
|
|
59
59
|
this.configManager = configManager;
|
|
60
60
|
}
|
|
61
61
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { Line } from '
|
|
2
|
-
import { createEmptyLine } from '
|
|
1
|
+
import type { Line } from '../types/grid.ts';
|
|
2
|
+
import { createEmptyLine } from '../types/grid.ts';
|
|
3
3
|
import { BasePanel } from './base-panel.ts';
|
|
4
4
|
import type { RuntimeTask, TaskLifecycleState } from '@pellux/goodvibes-sdk/platform/runtime/store/domains/tasks';
|
|
5
5
|
import type { ManagedWorktreeMeta } from '@pellux/goodvibes-sdk/platform/runtime/worktree/registry';
|
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
// ThinkingPanel — streams model reasoning tokens in real-time.
|
|
3
3
|
// ---------------------------------------------------------------------------
|
|
4
4
|
|
|
5
|
-
import type { Line } from '
|
|
5
|
+
import type { Line } from '../types/grid.ts';
|
|
6
6
|
import { BasePanel } from './base-panel.ts';
|
|
7
7
|
import type { TurnEvent } from '@pellux/goodvibes-sdk/platform/runtime/events/index';
|
|
8
|
-
import type { UiEventFeed } from '
|
|
8
|
+
import type { UiEventFeed } from '../runtime/ui-events.ts';
|
|
9
9
|
import {
|
|
10
10
|
buildEmptyState,
|
|
11
11
|
buildPanelLine,
|
|
@@ -15,7 +15,7 @@ import {
|
|
|
15
15
|
DEFAULT_PANEL_PALETTE,
|
|
16
16
|
type PanelWorkspaceSection,
|
|
17
17
|
} from './polish.ts';
|
|
18
|
-
import { truncateDisplay } from '
|
|
18
|
+
import { truncateDisplay } from '../utils/terminal-width.ts';
|
|
19
19
|
|
|
20
20
|
const C = {
|
|
21
21
|
headerBg: '#1a1a2e',
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { ConfigManager } from '@pellux/goodvibes-sdk/platform/config/manager';
|
|
2
2
|
import { BasePanel } from './base-panel.ts';
|
|
3
|
-
import { createEmptyLine, createStyledCell, type Line } from '
|
|
3
|
+
import { createEmptyLine, createStyledCell, type Line } from '../types/grid.ts';
|
|
4
4
|
import type { Orchestrator } from '../core/orchestrator';
|
|
5
5
|
import { evaluateSessionMaintenance } from '@pellux/goodvibes-sdk/platform/runtime/session-maintenance';
|
|
6
6
|
import type { UiReadModel, UiSessionSnapshot } from '../runtime/ui-read-models.ts';
|
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
// ToolInspectorPanel — chronological list of tool calls with args/results.
|
|
3
3
|
// ---------------------------------------------------------------------------
|
|
4
4
|
|
|
5
|
-
import type { Line } from '
|
|
5
|
+
import type { Line } from '../types/grid.ts';
|
|
6
6
|
import { BasePanel } from './base-panel.ts';
|
|
7
7
|
import type { ToolEvent, TurnEvent } from '@pellux/goodvibes-sdk/platform/runtime/events/index';
|
|
8
|
-
import type { UiEventFeed } from '
|
|
8
|
+
import type { UiEventFeed } from '../runtime/ui-events.ts';
|
|
9
9
|
import {
|
|
10
10
|
buildEmptyState,
|
|
11
11
|
buildPanelLine,
|
|
@@ -15,7 +15,7 @@ import {
|
|
|
15
15
|
DEFAULT_PANEL_PALETTE,
|
|
16
16
|
type PanelWorkspaceSection,
|
|
17
17
|
} from './polish.ts';
|
|
18
|
-
import { truncateDisplay } from '
|
|
18
|
+
import { truncateDisplay } from '../utils/terminal-width.ts';
|
|
19
19
|
|
|
20
20
|
const C = {
|
|
21
21
|
headerBg: '#1a1a2e',
|
package/src/panels/types.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { Line } from '
|
|
2
|
-
import type {
|
|
1
|
+
import type { Line } from '../types/grid.ts';
|
|
2
|
+
import type { ComponentResourceContract, ComponentHealthState } from '../runtime/perf/panel-contracts.ts';
|
|
3
3
|
|
|
4
4
|
export type PanelCategory = 'development' | 'agent' | 'monitoring' | 'session' | 'ai';
|
|
5
5
|
|
|
@@ -23,10 +23,10 @@ export interface Panel {
|
|
|
23
23
|
needsRender: boolean;
|
|
24
24
|
|
|
25
25
|
// Resource contract (optional — panels may declare resource requirements)
|
|
26
|
-
resourceContract?: Readonly<
|
|
26
|
+
resourceContract?: Readonly<ComponentResourceContract>;
|
|
27
27
|
|
|
28
|
-
// Health state (optional — set by
|
|
29
|
-
healthState?: Readonly<
|
|
28
|
+
// Health state (optional — set by ComponentHealthMonitor when panel is registered)
|
|
29
|
+
healthState?: Readonly<ComponentHealthState>;
|
|
30
30
|
|
|
31
31
|
// Input (optional)
|
|
32
32
|
handleInput?(key: string): boolean;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import type { Line } from '
|
|
2
|
-
import { createEmptyLine } from '
|
|
1
|
+
import type { Line } from '../types/grid.ts';
|
|
2
|
+
import { createEmptyLine } from '../types/grid.ts';
|
|
3
3
|
import { BasePanel } from './base-panel.ts';
|
|
4
4
|
import type { UiReadModel, UiWatchersSnapshot } from '../runtime/ui-read-models.ts';
|
|
5
|
-
import { truncateDisplay } from '
|
|
5
|
+
import { truncateDisplay } from '../utils/terminal-width.ts';
|
|
6
6
|
import {
|
|
7
7
|
buildEmptyState,
|
|
8
8
|
buildGuidanceLine,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { Line } from '
|
|
1
|
+
import type { Line } from '../types/grid.ts';
|
|
2
2
|
import { BasePanel } from './base-panel.ts';
|
|
3
3
|
import { buildGuidanceLine, buildPanelLine, buildPanelWorkspace, DEFAULT_PANEL_PALETTE } from './polish.ts';
|
|
4
4
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { Line } from '
|
|
2
|
-
import { createEmptyLine } from '
|
|
1
|
+
import type { Line } from '../types/grid.ts';
|
|
2
|
+
import { createEmptyLine } from '../types/grid.ts';
|
|
3
3
|
import { BasePanel } from './base-panel.ts';
|
|
4
4
|
import { buildKeyValueLine, buildPanelLine, buildPanelWorkspace, DEFAULT_PANEL_PALETTE, resolvePrimaryScrollableSection, type PanelWorkspaceSection } from './polish.ts';
|
|
5
5
|
import { summarizeWorktreeOwnership, type WorktreeRegistry, type WorktreeStatusRecord } from '@pellux/goodvibes-sdk/platform/runtime/worktree/registry';
|
package/src/panels/wrfc-panel.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import type { Line } from '
|
|
1
|
+
import type { Line } from '../types/grid.ts';
|
|
2
2
|
import type { WrfcChain, WrfcState, QualityGateResult } from '@pellux/goodvibes-sdk/platform/agents/wrfc-types';
|
|
3
3
|
import type { WrfcController } from '@pellux/goodvibes-sdk/platform/agents/wrfc-controller';
|
|
4
4
|
import { BasePanel } from './base-panel.ts';
|
|
5
5
|
import type { WorkflowEvent } from '@pellux/goodvibes-sdk/platform/runtime/events/index';
|
|
6
|
-
import type { UiEventFeed } from '
|
|
6
|
+
import type { UiEventFeed } from '../runtime/ui-events.ts';
|
|
7
7
|
import {
|
|
8
8
|
buildPanelLine,
|
|
9
9
|
buildPanelWorkspace,
|
|
@@ -14,7 +14,7 @@ import {
|
|
|
14
14
|
buildStyledPanelLine,
|
|
15
15
|
buildEmptyState,
|
|
16
16
|
} from './polish.ts';
|
|
17
|
-
import { getDisplayWidth } from '
|
|
17
|
+
import { getDisplayWidth } from '../utils/terminal-width.ts';
|
|
18
18
|
|
|
19
19
|
// ---------------------------------------------------------------------------
|
|
20
20
|
// Colour palette
|
|
@@ -1,29 +1,10 @@
|
|
|
1
|
-
import { type Line } from '
|
|
1
|
+
import { type Line } from '../types/grid.ts';
|
|
2
2
|
import { UIFactory } from '../renderer/ui-factory.ts';
|
|
3
3
|
import type { PermissionCategory, PermissionRequestAnalysis } from '@pellux/goodvibes-sdk/platform/permissions/types';
|
|
4
4
|
import { buildPermissionApprovalBrief, getDisplayArg } from '@pellux/goodvibes-sdk/platform/permissions/briefs/build';
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
tool: string;
|
|
9
|
-
args: Record<string, unknown>;
|
|
10
|
-
category: PermissionCategory;
|
|
11
|
-
analysis: PermissionRequestAnalysis;
|
|
12
|
-
workingDirectory?: string;
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
export interface PermissionPromptDecision {
|
|
16
|
-
approved: boolean;
|
|
17
|
-
remember?: boolean;
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
export type PermissionRequestHandler = (
|
|
21
|
-
request: PermissionPromptRequest,
|
|
22
|
-
) => Promise<PermissionPromptDecision>;
|
|
23
|
-
|
|
24
|
-
export interface PermissionRequest extends PermissionPromptRequest {
|
|
25
|
-
resolve: (approved: boolean, remember?: boolean) => void;
|
|
26
|
-
}
|
|
6
|
+
import type { PermissionPromptRequest, PermissionPromptDecision, PermissionRequestHandler, PermissionRequest } from '@pellux/goodvibes-sdk/platform/permissions/prompt';
|
|
7
|
+
export type { PermissionPromptRequest, PermissionPromptDecision, PermissionRequestHandler, PermissionRequest };
|
|
27
8
|
|
|
28
9
|
/**
|
|
29
10
|
* PermissionPromptUI - Renders a permission prompt as Line[] fragments.
|