@pellux/goodvibes-tui 0.18.12 → 0.18.17
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 +172 -0
- package/README.md +1 -1
- package/docs/foundation-artifacts/operator-contract.json +1 -1
- package/package.json +3 -2
- package/src/config/index.ts +1 -138
- 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/daemon/cli.ts +82 -6
- package/src/input/command-registry.ts +2 -0
- package/src/input/commands/control-room-runtime.ts +1 -1
- package/src/input/commands/health-runtime.ts +1 -1
- package/src/input/commands/local-setup-review.ts +1 -1
- package/src/input/commands/platform-access-runtime.ts +1 -1
- package/src/input/commands/qrcode-runtime.ts +20 -0
- package/src/input/commands/subscription-runtime.ts +1 -1
- package/src/input/commands.ts +2 -0
- package/src/input/handler-content-actions.ts +2 -2
- package/src/input/handler-feed.ts +7 -1
- package/src/input/handler-modal-routes.ts +19 -2
- package/src/input/handler-modal-token-routes.ts +4 -1
- package/src/input/handler-picker-routes.ts +4 -2
- package/src/input/handler-ui-state.ts +1 -1
- package/src/input/handler.ts +1 -1
- package/src/input/model-picker.ts +11 -0
- package/src/input/search.ts +1 -1
- package/src/input/selection.ts +2 -2
- package/src/input/settings-modal.ts +31 -3
- package/src/main.ts +1 -1
- package/src/panels/agent-inspector-panel.ts +3 -3
- package/src/panels/agent-logs-panel.ts +26 -27
- 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 +67 -1
- package/src/panels/builtin/shared.ts +4 -4
- 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-account-snapshot.ts +1 -1
- package/src/panels/provider-accounts-panel.ts +25 -29
- package/src/panels/provider-health-panel.ts +2 -2
- package/src/panels/provider-stats-panel.ts +3 -3
- package/src/panels/qr-panel.ts +182 -0
- 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/scrollable-list-panel.ts +407 -0
- package/src/panels/security-panel.ts +2 -2
- package/src/panels/services-panel.ts +3 -3
- 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 +3 -3
- 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 +22 -21
- 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/qr-renderer.ts +117 -0
- 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-helpers.ts +122 -0
- package/src/renderer/settings-modal.ts +149 -113
- 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 +5 -6
- package/src/runtime/bootstrap-command-parts.ts +32 -18
- 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 +7 -2
- package/src/runtime/context.ts +4 -20
- package/src/runtime/diagnostics/panels/index.ts +6 -6
- 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 +5 -5
- package/src/runtime/store/domains/domain-read-matrix.ts +0 -2
- package/src/runtime/store/selectors/index.ts +11 -6
- package/src/runtime/store/state.ts +12 -4
- package/src/runtime/ui-events.ts +1 -0
- package/src/runtime/ui-read-model-helpers.ts +1 -32
- package/src/runtime/ui-read-models-observability-maintenance.ts +1 -81
- package/src/runtime/ui-read-models-observability-options.ts +1 -5
- package/src/runtime/ui-read-models-observability-remote.ts +1 -73
- package/src/runtime/ui-read-models-observability-security.ts +1 -172
- package/src/runtime/ui-read-models-observability-system.ts +1 -217
- package/src/runtime/ui-read-models-observability.ts +1 -59
- package/src/runtime/ui-service-queries.ts +1 -114
- 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/config/service-registry.ts +0 -1
- package/src/config/subscription-providers.ts +0 -127
- 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/diagnostics/actions.ts +0 -776
- package/src/runtime/diagnostics/index.ts +0 -99
- package/src/runtime/diagnostics/panels/agents.ts +0 -252
- package/src/runtime/diagnostics/panels/events.ts +0 -188
- package/src/runtime/diagnostics/panels/health.ts +0 -242
- package/src/runtime/diagnostics/panels/tasks.ts +0 -251
- package/src/runtime/diagnostics/panels/tool-calls.ts +0 -267
- package/src/runtime/diagnostics/provider.ts +0 -262
- package/src/runtime/store/domains/conversation.ts +0 -181
- package/src/runtime/store/domains/permissions.ts +0 -143
- package/src/runtime/store/helpers/reducers/conversation.ts +0 -228
- package/src/runtime/store/helpers/reducers/lifecycle.ts +0 -440
- package/src/runtime/store/helpers/reducers/shared.ts +0 -60
- package/src/runtime/store/helpers/reducers/sync.ts +0 -555
- package/src/runtime/store/helpers/reducers.ts +0 -30
- package/src/runtime/ui-read-models-core.ts +0 -95
- package/src/runtime/ui-read-models-operations.ts +0 -203
|
@@ -1,203 +0,0 @@
|
|
|
1
|
-
import type { ControlPlaneRecentEvent, SharedApprovalRecord, SharedSessionRecord } from '@pellux/goodvibes-sdk/platform/control-plane/index';
|
|
2
|
-
import type { RuntimeServices } from './services.ts';
|
|
3
|
-
import type { AutomationJob } from '@pellux/goodvibes-sdk/platform/automation/jobs';
|
|
4
|
-
import type { AutomationRun } from '@pellux/goodvibes-sdk/platform/automation/runs';
|
|
5
|
-
import type { AutomationRouteBinding } from '@pellux/goodvibes-sdk/platform/automation/routes';
|
|
6
|
-
import type { WatcherRecord } from '@pellux/goodvibes-sdk/platform/runtime/store/domains/watchers';
|
|
7
|
-
import type { OrchestrationGraphRecord } from '@pellux/goodvibes-sdk/platform/runtime/store/domains/orchestration';
|
|
8
|
-
import type { RuntimeCommunicationRecord } from '@pellux/goodvibes-sdk/platform/runtime/store/domains/communication';
|
|
9
|
-
import type { ControlPlaneClientRecord } from '@pellux/goodvibes-sdk/platform/runtime/store/domains/control-plane';
|
|
10
|
-
import type { AcpConnection } from '@pellux/goodvibes-sdk/platform/runtime/store/domains/acp';
|
|
11
|
-
import { combineSubscriptions, createStoreBackedReadModel } from '@pellux/goodvibes-sdk/platform/runtime/ui-read-model-helpers';
|
|
12
|
-
import type { UiReadModel } from '@pellux/goodvibes-sdk/platform/runtime/ui-read-models-base';
|
|
13
|
-
|
|
14
|
-
export interface UiAutomationSnapshot {
|
|
15
|
-
readonly jobs: readonly AutomationJob[];
|
|
16
|
-
readonly runs: readonly AutomationRun[];
|
|
17
|
-
readonly totalJobs: number;
|
|
18
|
-
readonly totalRuns: number;
|
|
19
|
-
readonly activeRunIds: readonly string[];
|
|
20
|
-
readonly totalFailed: number;
|
|
21
|
-
readonly sourceCount: number;
|
|
22
|
-
readonly deliveryTotals: {
|
|
23
|
-
readonly succeeded: number;
|
|
24
|
-
readonly failed: number;
|
|
25
|
-
readonly deadLettered: number;
|
|
26
|
-
};
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
export interface UiRoutesSnapshot {
|
|
30
|
-
readonly bindings: readonly AutomationRouteBinding[];
|
|
31
|
-
readonly bindingIdsBySurface: Readonly<Record<string, readonly string[]>>;
|
|
32
|
-
readonly totalBindings: number;
|
|
33
|
-
readonly activeBindingIds: readonly string[];
|
|
34
|
-
readonly totalResolved: number;
|
|
35
|
-
readonly totalFailures: number;
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
export interface UiWatchersSnapshot {
|
|
39
|
-
readonly watchers: readonly WatcherRecord[];
|
|
40
|
-
readonly totalWatchers: number;
|
|
41
|
-
readonly activeWatcherIds: readonly string[];
|
|
42
|
-
readonly totalDegraded: number;
|
|
43
|
-
readonly totalLagged: number;
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
export interface UiOrchestrationSnapshot {
|
|
47
|
-
readonly graphs: readonly OrchestrationGraphRecord[];
|
|
48
|
-
readonly totalGraphs: number;
|
|
49
|
-
readonly activeGraphIds: readonly string[];
|
|
50
|
-
readonly totalCompletedGraphs: number;
|
|
51
|
-
readonly totalFailedGraphs: number;
|
|
52
|
-
readonly recursionGuardTrips: number;
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
export interface UiCommunicationSnapshot {
|
|
56
|
-
readonly records: readonly RuntimeCommunicationRecord[];
|
|
57
|
-
readonly totalSent: number;
|
|
58
|
-
readonly totalDelivered: number;
|
|
59
|
-
readonly totalBlocked: number;
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
export interface UiControlPlaneSnapshot {
|
|
63
|
-
readonly connectionState: string;
|
|
64
|
-
readonly activeClientIds: readonly string[];
|
|
65
|
-
readonly requestCount: number;
|
|
66
|
-
readonly errorCount: number;
|
|
67
|
-
readonly host: string;
|
|
68
|
-
readonly port: number;
|
|
69
|
-
readonly clients: readonly ControlPlaneClientRecord[];
|
|
70
|
-
readonly approvals: readonly SharedApprovalRecord[];
|
|
71
|
-
readonly sessions: readonly SharedSessionRecord[];
|
|
72
|
-
readonly recentEvents: readonly ControlPlaneRecentEvent[];
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
export interface UiOperationsReadModels {
|
|
76
|
-
readonly automation: UiReadModel<UiAutomationSnapshot>;
|
|
77
|
-
readonly routes: UiReadModel<UiRoutesSnapshot>;
|
|
78
|
-
readonly watchers: UiReadModel<UiWatchersSnapshot>;
|
|
79
|
-
readonly orchestration: UiReadModel<UiOrchestrationSnapshot>;
|
|
80
|
-
readonly communication: UiReadModel<UiCommunicationSnapshot>;
|
|
81
|
-
readonly controlPlane: UiReadModel<UiControlPlaneSnapshot>;
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
export interface UiOperationsReadModelOptions {
|
|
85
|
-
readonly getControlPlaneRecentEvents?: (limit: number) => readonly ControlPlaneRecentEvent[];
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
export function createOperationsReadModels(
|
|
89
|
-
runtimeServices: RuntimeServices,
|
|
90
|
-
options: UiOperationsReadModelOptions = {},
|
|
91
|
-
): UiOperationsReadModels {
|
|
92
|
-
const { runtimeStore } = runtimeServices;
|
|
93
|
-
|
|
94
|
-
return {
|
|
95
|
-
automation: createStoreBackedReadModel(runtimeServices, () => {
|
|
96
|
-
const state = runtimeStore.getState();
|
|
97
|
-
const jobs = state.automation.jobIds
|
|
98
|
-
.map((id) => state.automation.jobs.get(id))
|
|
99
|
-
.filter((job): job is AutomationJob => job !== undefined)
|
|
100
|
-
.sort((a, b) => (b.nextRunAt ?? 0) - (a.nextRunAt ?? 0) || a.name.localeCompare(b.name));
|
|
101
|
-
const runs = state.automation.runIds
|
|
102
|
-
.map((id) => state.automation.runs.get(id))
|
|
103
|
-
.filter((run): run is AutomationRun => run !== undefined)
|
|
104
|
-
.sort((a, b) => b.queuedAt - a.queuedAt || a.id.localeCompare(b.id));
|
|
105
|
-
return {
|
|
106
|
-
jobs,
|
|
107
|
-
runs,
|
|
108
|
-
totalJobs: state.automation.totalJobs,
|
|
109
|
-
totalRuns: state.automation.totalRuns,
|
|
110
|
-
activeRunIds: state.automation.activeRunIds,
|
|
111
|
-
totalFailed: state.automation.totalFailed,
|
|
112
|
-
sourceCount: state.automation.sourceIds.length,
|
|
113
|
-
deliveryTotals: {
|
|
114
|
-
succeeded: state.deliveries.totalSucceeded,
|
|
115
|
-
failed: state.deliveries.totalFailed,
|
|
116
|
-
deadLettered: state.deliveries.totalDeadLettered,
|
|
117
|
-
},
|
|
118
|
-
};
|
|
119
|
-
}),
|
|
120
|
-
routes: createStoreBackedReadModel(runtimeServices, () => {
|
|
121
|
-
const state = runtimeStore.getState().routes;
|
|
122
|
-
const bindings = state.bindingIds
|
|
123
|
-
.map((id) => state.bindings.get(id))
|
|
124
|
-
.filter((binding): binding is AutomationRouteBinding => binding !== undefined)
|
|
125
|
-
.sort((a, b) => b.lastSeenAt - a.lastSeenAt || a.id.localeCompare(b.id));
|
|
126
|
-
return {
|
|
127
|
-
bindings,
|
|
128
|
-
bindingIdsBySurface: state.bindingIdsBySurface,
|
|
129
|
-
totalBindings: state.totalBindings,
|
|
130
|
-
activeBindingIds: state.activeBindingIds,
|
|
131
|
-
totalResolved: state.totalResolved,
|
|
132
|
-
totalFailures: state.totalFailures,
|
|
133
|
-
};
|
|
134
|
-
}),
|
|
135
|
-
watchers: createStoreBackedReadModel(runtimeServices, () => {
|
|
136
|
-
const state = runtimeStore.getState().watchers;
|
|
137
|
-
const watchers = state.watcherIds
|
|
138
|
-
.map((id) => state.watchers.get(id))
|
|
139
|
-
.filter((watcher): watcher is WatcherRecord => watcher !== undefined)
|
|
140
|
-
.sort((a, b) => (b.lastHeartbeatAt ?? 0) - (a.lastHeartbeatAt ?? 0) || a.id.localeCompare(b.id));
|
|
141
|
-
return {
|
|
142
|
-
watchers,
|
|
143
|
-
totalWatchers: state.watcherIds.length,
|
|
144
|
-
activeWatcherIds: state.activeWatcherIds,
|
|
145
|
-
totalDegraded: state.totalDegraded,
|
|
146
|
-
totalLagged: state.totalLagged,
|
|
147
|
-
};
|
|
148
|
-
}),
|
|
149
|
-
orchestration: createStoreBackedReadModel(runtimeServices, () => {
|
|
150
|
-
const state = runtimeStore.getState().orchestration;
|
|
151
|
-
const graphs = [...state.graphs.values()].sort((a, b) => b.createdAt - a.createdAt);
|
|
152
|
-
return {
|
|
153
|
-
graphs,
|
|
154
|
-
totalGraphs: state.totalGraphs,
|
|
155
|
-
activeGraphIds: state.activeGraphIds,
|
|
156
|
-
totalCompletedGraphs: state.totalCompletedGraphs,
|
|
157
|
-
totalFailedGraphs: state.totalFailedGraphs,
|
|
158
|
-
recursionGuardTrips: state.recursionGuardTrips,
|
|
159
|
-
};
|
|
160
|
-
}),
|
|
161
|
-
communication: createStoreBackedReadModel(runtimeServices, () => {
|
|
162
|
-
const state = runtimeStore.getState().communication;
|
|
163
|
-
const records = state.recentRecordIds
|
|
164
|
-
.map((id) => state.records.get(id))
|
|
165
|
-
.filter((record): record is RuntimeCommunicationRecord => record !== undefined)
|
|
166
|
-
.sort((a, b) => b.timestamp - a.timestamp);
|
|
167
|
-
return {
|
|
168
|
-
records,
|
|
169
|
-
totalSent: state.totalSent,
|
|
170
|
-
totalDelivered: state.totalDelivered,
|
|
171
|
-
totalBlocked: state.totalBlocked,
|
|
172
|
-
};
|
|
173
|
-
}),
|
|
174
|
-
controlPlane: {
|
|
175
|
-
getSnapshot() {
|
|
176
|
-
const state = runtimeStore.getState().controlPlane;
|
|
177
|
-
const clients = state.clientIds
|
|
178
|
-
.map((id) => state.clients.get(id))
|
|
179
|
-
.filter((client): client is ControlPlaneClientRecord => client !== undefined)
|
|
180
|
-
.sort((a, b) => (b.lastSeenAt ?? 0) - (a.lastSeenAt ?? 0) || a.id.localeCompare(b.id));
|
|
181
|
-
return {
|
|
182
|
-
connectionState: state.connectionState,
|
|
183
|
-
activeClientIds: state.activeClientIds,
|
|
184
|
-
requestCount: state.requestCount,
|
|
185
|
-
errorCount: state.errorCount,
|
|
186
|
-
host: state.host,
|
|
187
|
-
port: state.port,
|
|
188
|
-
clients,
|
|
189
|
-
approvals: runtimeServices.approvalBroker.listApprovals(6),
|
|
190
|
-
sessions: runtimeServices.sessionBroker.listSessions(6),
|
|
191
|
-
recentEvents: options.getControlPlaneRecentEvents?.(6) ?? [],
|
|
192
|
-
};
|
|
193
|
-
},
|
|
194
|
-
subscribe(listener) {
|
|
195
|
-
const unsubs = [
|
|
196
|
-
runtimeStore.subscribe(listener),
|
|
197
|
-
runtimeServices.approvalBroker.subscribe(listener),
|
|
198
|
-
];
|
|
199
|
-
return combineSubscriptions(...unsubs);
|
|
200
|
-
},
|
|
201
|
-
},
|
|
202
|
-
};
|
|
203
|
-
}
|