@tienne/gestalt 0.16.0 → 0.17.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.
Files changed (65) hide show
  1. package/dist/package.json +1 -4
  2. package/dist/src/cli/index.d.ts.map +1 -1
  3. package/dist/src/cli/index.js +0 -7
  4. package/dist/src/cli/index.js.map +1 -1
  5. package/package.json +1 -4
  6. package/dist/src/cli/commands/monitor.d.ts +0 -2
  7. package/dist/src/cli/commands/monitor.d.ts.map +0 -1
  8. package/dist/src/cli/commands/monitor.js +0 -13
  9. package/dist/src/cli/commands/monitor.js.map +0 -1
  10. package/dist/src/tui/components/TUIApp.d.ts +0 -20
  11. package/dist/src/tui/components/TUIApp.d.ts.map +0 -1
  12. package/dist/src/tui/components/TUIApp.js +0 -84
  13. package/dist/src/tui/components/TUIApp.js.map +0 -1
  14. package/dist/src/tui/hooks/event-store-reader.d.ts +0 -28
  15. package/dist/src/tui/hooks/event-store-reader.d.ts.map +0 -1
  16. package/dist/src/tui/hooks/event-store-reader.js +0 -141
  17. package/dist/src/tui/hooks/event-store-reader.js.map +0 -1
  18. package/dist/src/tui/hooks/useEventStorePoller.d.ts +0 -12
  19. package/dist/src/tui/hooks/useEventStorePoller.d.ts.map +0 -1
  20. package/dist/src/tui/hooks/useEventStorePoller.js +0 -84
  21. package/dist/src/tui/hooks/useEventStorePoller.js.map +0 -1
  22. package/dist/src/tui/screens/DashboardScreen.d.ts +0 -4
  23. package/dist/src/tui/screens/DashboardScreen.d.ts.map +0 -1
  24. package/dist/src/tui/screens/DashboardScreen.js +0 -132
  25. package/dist/src/tui/screens/DashboardScreen.js.map +0 -1
  26. package/dist/src/tui/screens/DebugScreen.d.ts +0 -4
  27. package/dist/src/tui/screens/DebugScreen.d.ts.map +0 -1
  28. package/dist/src/tui/screens/DebugScreen.js +0 -40
  29. package/dist/src/tui/screens/DebugScreen.js.map +0 -1
  30. package/dist/src/tui/screens/EvolutionScreen.d.ts +0 -4
  31. package/dist/src/tui/screens/EvolutionScreen.d.ts.map +0 -1
  32. package/dist/src/tui/screens/EvolutionScreen.js +0 -136
  33. package/dist/src/tui/screens/EvolutionScreen.js.map +0 -1
  34. package/dist/src/tui/screens/HUDPanel.d.ts +0 -4
  35. package/dist/src/tui/screens/HUDPanel.d.ts.map +0 -1
  36. package/dist/src/tui/screens/HUDPanel.js +0 -13
  37. package/dist/src/tui/screens/HUDPanel.js.map +0 -1
  38. package/dist/src/tui/screens/InterviewScreen.d.ts +0 -4
  39. package/dist/src/tui/screens/InterviewScreen.d.ts.map +0 -1
  40. package/dist/src/tui/screens/InterviewScreen.js +0 -103
  41. package/dist/src/tui/screens/InterviewScreen.js.map +0 -1
  42. package/dist/src/tui/screens/LogScreen.d.ts +0 -4
  43. package/dist/src/tui/screens/LogScreen.d.ts.map +0 -1
  44. package/dist/src/tui/screens/LogScreen.js +0 -83
  45. package/dist/src/tui/screens/LogScreen.js.map +0 -1
  46. package/dist/src/tui/screens/SessionListScreen.d.ts +0 -4
  47. package/dist/src/tui/screens/SessionListScreen.d.ts.map +0 -1
  48. package/dist/src/tui/screens/SessionListScreen.js +0 -71
  49. package/dist/src/tui/screens/SessionListScreen.js.map +0 -1
  50. package/dist/src/tui/screens/SpecViewerScreen.d.ts +0 -4
  51. package/dist/src/tui/screens/SpecViewerScreen.d.ts.map +0 -1
  52. package/dist/src/tui/screens/SpecViewerScreen.js +0 -73
  53. package/dist/src/tui/screens/SpecViewerScreen.js.map +0 -1
  54. package/dist/src/tui/widgets/DriftMeter.d.ts +0 -15
  55. package/dist/src/tui/widgets/DriftMeter.d.ts.map +0 -1
  56. package/dist/src/tui/widgets/DriftMeter.js +0 -27
  57. package/dist/src/tui/widgets/DriftMeter.js.map +0 -1
  58. package/dist/src/tui/widgets/GestaltPrincipleBar.d.ts +0 -9
  59. package/dist/src/tui/widgets/GestaltPrincipleBar.d.ts.map +0 -1
  60. package/dist/src/tui/widgets/GestaltPrincipleBar.js +0 -35
  61. package/dist/src/tui/widgets/GestaltPrincipleBar.js.map +0 -1
  62. package/dist/src/tui/widgets/TaskDAGTree.d.ts +0 -15
  63. package/dist/src/tui/widgets/TaskDAGTree.d.ts.map +0 -1
  64. package/dist/src/tui/widgets/TaskDAGTree.js +0 -54
  65. package/dist/src/tui/widgets/TaskDAGTree.js.map +0 -1
@@ -1,132 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { useMemo } from 'react';
3
- import { Box, Text } from 'ink';
4
- import { GestaltPrincipleBar } from '../widgets/GestaltPrincipleBar.js';
5
- import { TaskDAGTree } from '../widgets/TaskDAGTree.js';
6
- import { DriftMeter } from '../widgets/DriftMeter.js';
7
- const PLANNING_PRINCIPLES = [
8
- 'figure_ground',
9
- 'closure',
10
- 'proximity',
11
- 'continuity',
12
- ];
13
- function parseDashboardEvents(events, sessionId) {
14
- const sessionEvents = sessionId
15
- ? events.filter((e) => e.aggregateId === sessionId)
16
- : [];
17
- const completedPhases = [];
18
- let currentPhase = null;
19
- const tasks = [];
20
- const taskStatusMap = new Map();
21
- let driftOverall = 0;
22
- const driftDimensions = [];
23
- let sessionType = '';
24
- for (const ev of sessionEvents) {
25
- const payload = ev.payload;
26
- if (ev.eventType.includes('session.started')) {
27
- sessionType = ev.aggregateType;
28
- }
29
- // Planning phase tracking
30
- if (ev.eventType === 'execute.planning.step.completed') {
31
- const principle = payload.principle;
32
- if (principle) {
33
- const phase = principle;
34
- if (!completedPhases.includes(phase)) {
35
- completedPhases.push(phase);
36
- }
37
- }
38
- }
39
- // Determine current planning phase
40
- if (ev.eventType === 'execute.session.started') {
41
- currentPhase = 'figure_ground';
42
- }
43
- // Task extraction from plan completion
44
- if (ev.eventType === 'execute.plan.completed') {
45
- const atomicTasks = payload.atomicTasks;
46
- if (atomicTasks) {
47
- for (const t of atomicTasks) {
48
- tasks.push({
49
- id: t.taskId,
50
- title: t.title,
51
- status: 'pending',
52
- dependsOn: t.dependsOn ?? [],
53
- });
54
- }
55
- }
56
- }
57
- // Task status updates
58
- if (ev.eventType === 'execute.task.completed' ||
59
- ev.eventType === 'evolve.task.completed') {
60
- const taskId = payload.taskId;
61
- const status = payload.status;
62
- if (taskId && status) {
63
- taskStatusMap.set(taskId, status);
64
- }
65
- }
66
- // Drift measurements
67
- if (ev.eventType === 'execute.drift.measured') {
68
- const overall = payload.overall;
69
- const dimensions = payload.dimensions;
70
- if (overall !== undefined) {
71
- driftOverall = overall;
72
- }
73
- if (dimensions) {
74
- driftDimensions.length = 0;
75
- for (const dim of dimensions) {
76
- driftDimensions.push({
77
- name: dim.name,
78
- score: dim.score,
79
- weight: dim.weight ?? 0.33,
80
- });
81
- }
82
- }
83
- }
84
- }
85
- // Apply task status updates
86
- for (const task of tasks) {
87
- const status = taskStatusMap.get(task.id);
88
- if (status === 'completed')
89
- task.status = 'completed';
90
- else if (status === 'failed')
91
- task.status = 'failed';
92
- else if (status === 'in_progress')
93
- task.status = 'in_progress';
94
- else if (status === 'skipped')
95
- task.status = 'skipped';
96
- }
97
- // Determine current phase based on completed phases
98
- if (completedPhases.length > 0 && completedPhases.length < PLANNING_PRINCIPLES.length) {
99
- currentPhase = PLANNING_PRINCIPLES[completedPhases.length] ?? null;
100
- }
101
- else if (completedPhases.length >= PLANNING_PRINCIPLES.length) {
102
- currentPhase = null;
103
- }
104
- // Build active tasks list
105
- const activeTasks = tasks
106
- .filter((t) => t.status === 'in_progress' || t.status === 'pending')
107
- .slice(0, 10)
108
- .map((t) => ({ taskId: t.id, title: t.title, status: t.status }));
109
- return {
110
- currentPhase,
111
- completedPhases,
112
- tasks,
113
- driftDimensions,
114
- driftOverall,
115
- driftThreshold: 0.3,
116
- activeTasks,
117
- sessionType,
118
- };
119
- }
120
- export function DashboardScreen({ events, selectedSessionId, }) {
121
- const data = useMemo(() => parseDashboardEvents(events, selectedSessionId), [events, selectedSessionId]);
122
- if (!selectedSessionId) {
123
- return (_jsxs(Box, { flexDirection: "column", alignItems: "center", justifyContent: "center", minHeight: 10, children: [_jsx(Text, { bold: true, color: "yellow", children: "No session selected" }), _jsx(Text, { dimColor: true, children: "Press 1 to go to Sessions and select one." })] }));
124
- }
125
- return (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Box, { marginBottom: 1, gap: 1, children: [_jsx(Text, { bold: true, children: "Dashboard" }), _jsx(Text, { dimColor: true, children: "|" }), _jsx(Text, { color: "cyan", children: truncate(selectedSessionId, 24) }), data.sessionType && (_jsxs(Text, { dimColor: true, children: ["(", data.sessionType, ")"] }))] }), _jsx(Box, { marginBottom: 1, children: _jsx(GestaltPrincipleBar, { currentPhase: data.currentPhase, completedPhases: data.completedPhases }) }), _jsxs(Box, { gap: 2, marginBottom: 1, children: [_jsx(Box, { flexDirection: "column", flexGrow: 1, flexBasis: 0, children: data.tasks.length > 0 ? (_jsx(TaskDAGTree, { tasks: data.tasks, maxHeight: 15 })) : (_jsxs(Box, { flexDirection: "column", children: [_jsx(Text, { bold: true, children: "Task DAG" }), _jsx(Text, { dimColor: true, children: "No tasks yet (planning not complete)" })] })) }), _jsx(Box, { flexDirection: "column", flexGrow: 1, flexBasis: 0, children: data.driftDimensions.length > 0 ? (_jsx(DriftMeter, { dimensions: data.driftDimensions, overall: data.driftOverall, threshold: data.driftThreshold })) : (_jsxs(Box, { flexDirection: "column", children: [_jsx(Text, { bold: true, children: "Drift" }), _jsx(Text, { dimColor: true, children: "No drift data yet" })] })) })] }), _jsxs(Box, { flexDirection: "column", children: [_jsxs(Box, { gap: 1, marginBottom: 1, children: [_jsx(Text, { bold: true, children: "Active Tasks" }), _jsxs(Text, { dimColor: true, children: ["(", data.activeTasks.length, ")"] })] }), data.activeTasks.length === 0 ? (_jsx(Text, { dimColor: true, children: " No active tasks" })) : (data.activeTasks.map((task) => (_jsxs(Box, { paddingLeft: 1, gap: 1, children: [_jsx(Text, { color: task.status === 'in_progress' ? 'cyan' : 'gray', children: task.status === 'in_progress' ? '>' : 'o' }), _jsx(Text, { color: task.status === 'in_progress' ? 'cyan' : 'gray', bold: task.status === 'in_progress', children: task.taskId }), _jsx(Text, { dimColor: true, children: truncate(task.title, 50) })] }, task.taskId))))] })] }));
126
- }
127
- function truncate(str, max) {
128
- if (str.length <= max)
129
- return str;
130
- return str.slice(0, max - 3) + '...';
131
- }
132
- //# sourceMappingURL=DashboardScreen.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"DashboardScreen.js","sourceRoot":"","sources":["../../../../src/tui/screens/DashboardScreen.tsx"],"names":[],"mappings":"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"}
@@ -1,4 +0,0 @@
1
- import React from 'react';
2
- import type { ScreenProps } from '../components/TUIApp.js';
3
- export declare function DebugScreen({ events, stats, isConnected, }: ScreenProps): React.ReactElement;
4
- //# sourceMappingURL=DebugScreen.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"DebugScreen.d.ts","sourceRoot":"","sources":["../../../../src/tui/screens/DebugScreen.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAE3D,wBAAgB,WAAW,CAAC,EAC1B,MAAM,EACN,KAAK,EACL,WAAW,GACZ,EAAE,WAAW,GAAG,KAAK,CAAC,YAAY,CA8HlC"}
@@ -1,40 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { Box, Text } from 'ink';
3
- export function DebugScreen({ events, stats, isConnected, }) {
4
- const latestEvent = events.length > 0 ? events[events.length - 1] : null;
5
- return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Box, { marginBottom: 1, children: _jsx(Text, { bold: true, children: "Debug Info" }) }), _jsxs(Box, { flexDirection: "column", marginBottom: 1, children: [_jsx(Text, { bold: true, color: "cyan", children: "Connection" }), _jsxs(Box, { paddingLeft: 2, gap: 1, children: [_jsx(Text, { children: "Status:" }), _jsx(Text, { color: isConnected ? 'green' : 'red', bold: true, children: isConnected ? 'Connected' : 'Disconnected' })] })] }), _jsxs(Box, { flexDirection: "column", marginBottom: 1, children: [_jsxs(Box, { gap: 1, children: [_jsx(Text, { bold: true, color: "cyan", children: "Event Stats" }), _jsxs(Text, { dimColor: true, children: ["(total: ", stats.totalEvents, ")"] })] }), stats.oldestEvent && (_jsxs(Box, { paddingLeft: 2, gap: 1, children: [_jsx(Text, { dimColor: true, children: "oldest:" }), _jsx(Text, { children: formatTimestamp(stats.oldestEvent) })] })), stats.newestEvent && (_jsxs(Box, { paddingLeft: 2, gap: 1, children: [_jsx(Text, { dimColor: true, children: "newest:" }), _jsx(Text, { children: formatTimestamp(stats.newestEvent) })] }))] }), _jsxs(Box, { flexDirection: "column", marginBottom: 1, children: [_jsx(Text, { bold: true, color: "yellow", children: "By Event Type" }), Object.keys(stats.byType).length === 0 ? (_jsx(Box, { paddingLeft: 2, children: _jsx(Text, { dimColor: true, children: "(no events)" }) })) : (Object.entries(stats.byType)
6
- .sort(([, a], [, b]) => b - a)
7
- .map(([type, count]) => (_jsxs(Box, { paddingLeft: 2, gap: 1, children: [_jsx(Box, { width: 40, children: _jsx(Text, { children: type }) }), _jsx(Text, { color: "yellow", children: count }), _jsx(Text, { dimColor: true, children: renderMiniBar(count, stats.totalEvents, 15) })] }, type))))] }), _jsxs(Box, { flexDirection: "column", marginBottom: 1, children: [_jsx(Text, { bold: true, color: "magenta", children: "By Aggregate Type" }), Object.keys(stats.byAggregate).length === 0 ? (_jsx(Box, { paddingLeft: 2, children: _jsx(Text, { dimColor: true, children: "(no events)" }) })) : (Object.entries(stats.byAggregate)
8
- .sort(([, a], [, b]) => b - a)
9
- .map(([agg, count]) => (_jsxs(Box, { paddingLeft: 2, gap: 1, children: [_jsx(Box, { width: 20, children: _jsx(Text, { children: agg }) }), _jsx(Text, { color: "magenta", children: count }), _jsx(Text, { dimColor: true, children: renderMiniBar(count, stats.totalEvents, 15) })] }, agg))))] }), _jsxs(Box, { flexDirection: "column", children: [_jsx(Text, { bold: true, color: "green", children: "Latest Event (raw)" }), latestEvent ? (_jsxs(Box, { paddingLeft: 2, flexDirection: "column", children: [_jsxs(Box, { gap: 1, children: [_jsx(Text, { dimColor: true, children: "id:" }), _jsx(Text, { children: latestEvent.id })] }), _jsxs(Box, { gap: 1, children: [_jsx(Text, { dimColor: true, children: "type:" }), _jsx(Text, { children: latestEvent.eventType })] }), _jsxs(Box, { gap: 1, children: [_jsx(Text, { dimColor: true, children: "aggregate:" }), _jsxs(Text, { children: [latestEvent.aggregateType, "/", truncate(latestEvent.aggregateId, 24)] })] }), _jsxs(Box, { gap: 1, children: [_jsx(Text, { dimColor: true, children: "time:" }), _jsx(Text, { children: latestEvent.timestamp })] }), _jsxs(Box, { marginTop: 1, flexDirection: "column", children: [_jsx(Text, { dimColor: true, children: "payload:" }), _jsx(Box, { paddingLeft: 2, children: _jsx(Text, { color: "green", children: truncate(JSON.stringify(latestEvent.payload, null, 2), 200) }) })] })] })) : (_jsx(Box, { paddingLeft: 2, children: _jsx(Text, { dimColor: true, children: "(no events)" }) }))] })] }));
10
- }
11
- function renderMiniBar(count, total, width) {
12
- if (total === 0)
13
- return '[' + ' '.repeat(width) + ']';
14
- const ratio = count / total;
15
- const filled = Math.round(ratio * width);
16
- const empty = width - filled;
17
- return '[' + '='.repeat(filled) + ' '.repeat(empty) + ']';
18
- }
19
- function truncate(str, max) {
20
- if (str.length <= max)
21
- return str;
22
- return str.slice(0, max - 3) + '...';
23
- }
24
- function formatTimestamp(ts) {
25
- try {
26
- const d = new Date(ts);
27
- return d.toLocaleString('en-US', {
28
- month: 'short',
29
- day: '2-digit',
30
- hour: '2-digit',
31
- minute: '2-digit',
32
- second: '2-digit',
33
- hour12: false,
34
- });
35
- }
36
- catch {
37
- return ts.slice(0, 19);
38
- }
39
- }
40
- //# sourceMappingURL=DebugScreen.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"DebugScreen.js","sourceRoot":"","sources":["../../../../src/tui/screens/DebugScreen.tsx"],"names":[],"mappings":"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"}
@@ -1,4 +0,0 @@
1
- import React from 'react';
2
- import type { ScreenProps } from '../components/TUIApp.js';
3
- export declare function EvolutionScreen({ events, selectedSessionId, }: ScreenProps): React.ReactElement;
4
- //# sourceMappingURL=EvolutionScreen.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"EvolutionScreen.d.ts","sourceRoot":"","sources":["../../../../src/tui/screens/EvolutionScreen.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAkB,MAAM,OAAO,CAAC;AAEvC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAwI3D,wBAAgB,eAAe,CAAC,EAC9B,MAAM,EACN,iBAAiB,GAClB,EAAE,WAAW,GAAG,KAAK,CAAC,YAAY,CAkIlC"}
@@ -1,136 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { useMemo } from 'react';
3
- import { Box, Text } from 'ink';
4
- function parseEvolutionEvents(events, sessionId) {
5
- const sessionEvents = sessionId
6
- ? events.filter((e) => e.aggregateId === sessionId)
7
- : [];
8
- const generations = [];
9
- const laterals = [];
10
- let terminationReason = null;
11
- let fixAttempts = 0;
12
- let isEscalated = false;
13
- let currentStage = 'none';
14
- for (const ev of sessionEvents) {
15
- const payload = ev.payload;
16
- // Evaluation results → score tracking per generation
17
- if (ev.eventType === 'evaluate.contextual.completed' || ev.eventType === 'execute.evaluation.completed') {
18
- const overallScore = payload.overallScore ?? 0;
19
- const goalAlignment = payload.goalAlignment ?? 0;
20
- generations.push({
21
- generation: generations.length + 1,
22
- overallScore,
23
- goalAlignment,
24
- patchFields: [],
25
- timestamp: ev.timestamp,
26
- });
27
- }
28
- // Spec patches
29
- if (ev.eventType === 'evolve.spec.patched') {
30
- const fieldsChanged = payload.fieldsChanged ?? [];
31
- const lastGen = generations[generations.length - 1];
32
- if (lastGen) {
33
- lastGen.patchFields = fieldsChanged;
34
- }
35
- currentStage = 'patch';
36
- }
37
- // Structural fixes
38
- if (ev.eventType === 'evolve.structural.fix.started') {
39
- fixAttempts++;
40
- currentStage = 'fix';
41
- }
42
- if (ev.eventType === 'evolve.structural.fix.completed') {
43
- currentStage = 'fix_done';
44
- }
45
- // Lateral thinking
46
- if (ev.eventType === 'evolve.lateral.started') {
47
- const persona = payload.persona ?? '';
48
- const pattern = payload.pattern ?? '';
49
- laterals.push({ persona, pattern, status: 'started', timestamp: ev.timestamp });
50
- currentStage = 'lateral';
51
- }
52
- if (ev.eventType === 'evolve.lateral.completed') {
53
- const persona = payload.persona ?? '';
54
- const matching = laterals.find((l) => l.persona === persona && l.status === 'started');
55
- if (matching) {
56
- matching.status = 'completed';
57
- }
58
- currentStage = 'lateral_done';
59
- }
60
- // Termination
61
- if (ev.eventType === 'evolve.terminated') {
62
- terminationReason = payload.reason ?? 'unknown';
63
- }
64
- // Human escalation
65
- if (ev.eventType === 'evolve.human.escalation') {
66
- isEscalated = true;
67
- terminationReason = 'human_escalation';
68
- }
69
- // Re-execution
70
- if (ev.eventType === 'evolve.re.execution.started') {
71
- currentStage = 're_executing';
72
- }
73
- }
74
- return {
75
- generations,
76
- laterals,
77
- terminationReason,
78
- fixAttempts,
79
- isEscalated,
80
- currentStage,
81
- };
82
- }
83
- const PERSONA_ICONS = {
84
- multistability: '~',
85
- simplicity: '-',
86
- reification: '+',
87
- invariance: '=',
88
- };
89
- const PERSONA_COLORS = {
90
- multistability: 'magenta',
91
- simplicity: 'green',
92
- reification: 'yellow',
93
- invariance: 'cyan',
94
- };
95
- export function EvolutionScreen({ events, selectedSessionId, }) {
96
- const data = useMemo(() => parseEvolutionEvents(events, selectedSessionId), [events, selectedSessionId]);
97
- if (!selectedSessionId) {
98
- return (_jsxs(Box, { flexDirection: "column", alignItems: "center", justifyContent: "center", minHeight: 10, children: [_jsx(Text, { bold: true, color: "yellow", children: "No session selected" }), _jsx(Text, { dimColor: true, children: "Press 1 to go to Sessions and select one." })] }));
99
- }
100
- if (data.generations.length === 0 && data.laterals.length === 0) {
101
- return (_jsxs(Box, { flexDirection: "column", alignItems: "center", justifyContent: "center", minHeight: 10, children: [_jsx(Text, { bold: true, color: "yellow", children: "No evolution data" }), _jsx(Text, { dimColor: true, children: "No evolution events found for this session." })] }));
102
- }
103
- return (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Box, { marginBottom: 1, gap: 1, children: [_jsx(Text, { bold: true, children: "Evolution" }), _jsx(Text, { dimColor: true, children: "|" }), _jsx(Text, { color: "cyan", children: truncate(selectedSessionId, 24) }), _jsx(Text, { dimColor: true, children: "|" }), _jsxs(Text, { dimColor: true, children: ["gens: ", data.generations.length] }), _jsxs(Text, { dimColor: true, children: ["fixes: ", data.fixAttempts] }), _jsxs(Text, { dimColor: true, children: ["stage: ", data.currentStage] }), data.terminationReason && (_jsxs(Text, { color: data.terminationReason === 'success' ? 'green' : 'red', children: ["[", data.terminationReason, "]"] }))] }), data.generations.length > 0 && (_jsxs(Box, { flexDirection: "column", marginBottom: 1, children: [_jsx(Text, { bold: true, children: "Score Progression" }), _jsxs(Box, { paddingLeft: 2, flexDirection: "column", children: [_jsxs(Box, { gap: 1, children: [_jsx(Box, { width: 12, children: _jsx(Text, { dimColor: true, children: "overall:" }) }), _jsx(Text, { children: renderSparkline(data.generations.map((g) => g.overallScore)) })] }), _jsxs(Box, { gap: 1, children: [_jsx(Box, { width: 12, children: _jsx(Text, { dimColor: true, children: "goalAlign:" }) }), _jsx(Text, { children: renderSparkline(data.generations.map((g) => g.goalAlignment)) })] })] })] })), _jsxs(Box, { flexDirection: "column", marginBottom: 1, children: [_jsxs(Box, { gap: 1, children: [_jsx(Text, { bold: true, children: "Generations" }), _jsxs(Text, { dimColor: true, children: ["(", data.generations.length, ")"] })] }), data.generations.map((gen) => {
104
- const scoreColor = gen.overallScore >= 0.85 ? 'green' : gen.overallScore >= 0.5 ? 'yellow' : 'red';
105
- const goalColor = gen.goalAlignment >= 0.80 ? 'green' : gen.goalAlignment >= 0.5 ? 'yellow' : 'red';
106
- return (_jsxs(Box, { paddingLeft: 2, gap: 1, children: [_jsxs(Text, { bold: true, children: ["G", gen.generation] }), _jsxs(Text, { color: scoreColor, children: ["score:", (gen.overallScore * 100).toFixed(0), "%"] }), _jsxs(Text, { color: goalColor, children: ["goal:", (gen.goalAlignment * 100).toFixed(0), "%"] }), renderScoreBar(gen.overallScore, 15), gen.patchFields.length > 0 && (_jsxs(Text, { dimColor: true, children: ["patch:[", gen.patchFields.join(','), "]"] }))] }, gen.generation));
107
- })] }), data.laterals.length > 0 && (_jsxs(Box, { flexDirection: "column", marginBottom: 1, children: [_jsxs(Box, { gap: 1, children: [_jsx(Text, { bold: true, children: "Lateral Thinking" }), _jsxs(Text, { dimColor: true, children: ["(", data.laterals.length, " attempts)"] })] }), data.laterals.map((lat, i) => {
108
- const icon = PERSONA_ICONS[lat.persona] ?? '?';
109
- const color = PERSONA_COLORS[lat.persona] ?? 'gray';
110
- return (_jsxs(Box, { paddingLeft: 2, gap: 1, children: [_jsx(Text, { color: color, children: icon }), _jsx(Text, { color: color, bold: true, children: lat.persona }), _jsxs(Text, { dimColor: true, children: ["(", lat.pattern, ")"] }), _jsx(Text, { color: lat.status === 'completed' ? 'green' : 'cyan', children: lat.status === 'completed' ? 'done' : 'active' })] }, i));
111
- })] })), data.isEscalated && (_jsx(Box, { marginTop: 1, paddingX: 1, borderStyle: "single", borderColor: "red", children: _jsx(Text, { color: "red", bold: true, children: "HUMAN ESCALATION \u2014 All lateral personas exhausted. Manual intervention required." }) }))] }));
112
- }
113
- function renderSparkline(values) {
114
- if (values.length === 0)
115
- return '';
116
- const blocks = [' ', '\u2581', '\u2582', '\u2583', '\u2584', '\u2585', '\u2586', '\u2587', '\u2588'];
117
- return values
118
- .map((v) => {
119
- const clamped = Math.max(0, Math.min(1, v));
120
- const idx = Math.round(clamped * (blocks.length - 1));
121
- return blocks[idx] ?? ' ';
122
- })
123
- .join('');
124
- }
125
- function renderScoreBar(score, width) {
126
- const filled = Math.round(score * width);
127
- const empty = width - filled;
128
- const color = score >= 0.85 ? 'green' : score >= 0.5 ? 'yellow' : 'red';
129
- return (_jsx(Text, { color: color, children: '[' + '='.repeat(filled) + ' '.repeat(empty) + ']' }));
130
- }
131
- function truncate(str, max) {
132
- if (str.length <= max)
133
- return str;
134
- return str.slice(0, max - 3) + '...';
135
- }
136
- //# sourceMappingURL=EvolutionScreen.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"EvolutionScreen.js","sourceRoot":"","sources":["../../../../src/tui/screens/EvolutionScreen.tsx"],"names":[],"mappings":";AAAA,OAAc,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AA4BhC,SAAS,oBAAoB,CAC3B,MAAqB,EACrB,SAAwB;IAExB,MAAM,aAAa,GAAG,SAAS;QAC7B,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,KAAK,SAAS,CAAC;QACnD,CAAC,CAAC,EAAE,CAAC;IAEP,MAAM,WAAW,GAAuB,EAAE,CAAC;IAC3C,MAAM,QAAQ,GAAoB,EAAE,CAAC;IACrC,IAAI,iBAAiB,GAAkB,IAAI,CAAC;IAC5C,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,IAAI,WAAW,GAAG,KAAK,CAAC;IACxB,IAAI,YAAY,GAAG,MAAM,CAAC;IAE1B,KAAK,MAAM,EAAE,IAAI,aAAa,EAAE,CAAC;QAC/B,MAAM,OAAO,GAAG,EAAE,CAAC,OAAkC,CAAC;QAEtD,qDAAqD;QACrD,IAAI,EAAE,CAAC,SAAS,KAAK,+BAA+B,IAAI,EAAE,CAAC,SAAS,KAAK,8BAA8B,EAAE,CAAC;YACxG,MAAM,YAAY,GAAI,OAAO,CAAC,YAAuB,IAAI,CAAC,CAAC;YAC3D,MAAM,aAAa,GAAI,OAAO,CAAC,aAAwB,IAAI,CAAC,CAAC;YAC7D,WAAW,CAAC,IAAI,CAAC;gBACf,UAAU,EAAE,WAAW,CAAC,MAAM,GAAG,CAAC;gBAClC,YAAY;gBACZ,aAAa;gBACb,WAAW,EAAE,EAAE;gBACf,SAAS,EAAE,EAAE,CAAC,SAAS;aACxB,CAAC,CAAC;QACL,CAAC;QAED,eAAe;QACf,IAAI,EAAE,CAAC,SAAS,KAAK,qBAAqB,EAAE,CAAC;YAC3C,MAAM,aAAa,GAAI,OAAO,CAAC,aAA0B,IAAI,EAAE,CAAC;YAChE,MAAM,OAAO,GAAG,WAAW,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YACpD,IAAI,OAAO,EAAE,CAAC;gBACZ,OAAO,CAAC,WAAW,GAAG,aAAa,CAAC;YACtC,CAAC;YACD,YAAY,GAAG,OAAO,CAAC;QACzB,CAAC;QAED,mBAAmB;QACnB,IAAI,EAAE,CAAC,SAAS,KAAK,+BAA+B,EAAE,CAAC;YACrD,WAAW,EAAE,CAAC;YACd,YAAY,GAAG,KAAK,CAAC;QACvB,CAAC;QAED,IAAI,EAAE,CAAC,SAAS,KAAK,iCAAiC,EAAE,CAAC;YACvD,YAAY,GAAG,UAAU,CAAC;QAC5B,CAAC;QAED,mBAAmB;QACnB,IAAI,EAAE,CAAC,SAAS,KAAK,wBAAwB,EAAE,CAAC;YAC9C,MAAM,OAAO,GAAI,OAAO,CAAC,OAAkB,IAAI,EAAE,CAAC;YAClD,MAAM,OAAO,GAAI,OAAO,CAAC,OAAkB,IAAI,EAAE,CAAC;YAClD,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC;YAChF,YAAY,GAAG,SAAS,CAAC;QAC3B,CAAC;QAED,IAAI,EAAE,CAAC,SAAS,KAAK,0BAA0B,EAAE,CAAC;YAChD,MAAM,OAAO,GAAI,OAAO,CAAC,OAAkB,IAAI,EAAE,CAAC;YAClD,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,OAAO,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC;YACvF,IAAI,QAAQ,EAAE,CAAC;gBACb,QAAQ,CAAC,MAAM,GAAG,WAAW,CAAC;YAChC,CAAC;YACD,YAAY,GAAG,cAAc,CAAC;QAChC,CAAC;QAED,cAAc;QACd,IAAI,EAAE,CAAC,SAAS,KAAK,mBAAmB,EAAE,CAAC;YACzC,iBAAiB,GAAI,OAAO,CAAC,MAAiB,IAAI,SAAS,CAAC;QAC9D,CAAC;QAED,mBAAmB;QACnB,IAAI,EAAE,CAAC,SAAS,KAAK,yBAAyB,EAAE,CAAC;YAC/C,WAAW,GAAG,IAAI,CAAC;YACnB,iBAAiB,GAAG,kBAAkB,CAAC;QACzC,CAAC;QAED,eAAe;QACf,IAAI,EAAE,CAAC,SAAS,KAAK,6BAA6B,EAAE,CAAC;YACnD,YAAY,GAAG,cAAc,CAAC;QAChC,CAAC;IACH,CAAC;IAED,OAAO;QACL,WAAW;QACX,QAAQ;QACR,iBAAiB;QACjB,WAAW;QACX,WAAW;QACX,YAAY;KACb,CAAC;AACJ,CAAC;AAED,MAAM,aAAa,GAA2B;IAC5C,cAAc,EAAE,GAAG;IACnB,UAAU,EAAE,GAAG;IACf,WAAW,EAAE,GAAG;IAChB,UAAU,EAAE,GAAG;CAChB,CAAC;AAEF,MAAM,cAAc,GAA2B;IAC7C,cAAc,EAAE,SAAS;IACzB,UAAU,EAAE,OAAO;IACnB,WAAW,EAAE,QAAQ;IACrB,UAAU,EAAE,MAAM;CACnB,CAAC;AAEF,MAAM,UAAU,eAAe,CAAC,EAC9B,MAAM,EACN,iBAAiB,GACL;IACZ,MAAM,IAAI,GAAG,OAAO,CAClB,GAAG,EAAE,CAAC,oBAAoB,CAAC,MAAM,EAAE,iBAAiB,CAAC,EACrD,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAC5B,CAAC;IAEF,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACvB,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,UAAU,EAAC,QAAQ,EAAC,cAAc,EAAC,QAAQ,EAAC,SAAS,EAAE,EAAE,aACnF,KAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAC,QAAQ,oCAA2B,EACpD,KAAC,IAAI,IAAC,QAAQ,gEAAiD,IAC3D,CACP,CAAC;IACJ,CAAC;IAED,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAChE,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,UAAU,EAAC,QAAQ,EAAC,cAAc,EAAC,QAAQ,EAAC,SAAS,EAAE,EAAE,aACnF,KAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAC,QAAQ,kCAAyB,EAClD,KAAC,IAAI,IAAC,QAAQ,kEAAmD,IAC7D,CACP,CAAC;IACJ,CAAC;IAED,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,aAEzB,MAAC,GAAG,IAAC,YAAY,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,aAC1B,KAAC,IAAI,IAAC,IAAI,gCAAiB,EAC3B,KAAC,IAAI,IAAC,QAAQ,wBAAS,EACvB,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,YAAE,QAAQ,CAAC,iBAAiB,EAAE,EAAE,CAAC,GAAQ,EAC3D,KAAC,IAAI,IAAC,QAAQ,wBAAS,EACvB,MAAC,IAAI,IAAC,QAAQ,6BAAQ,IAAI,CAAC,WAAW,CAAC,MAAM,IAAQ,EACrD,MAAC,IAAI,IAAC,QAAQ,8BAAS,IAAI,CAAC,WAAW,IAAQ,EAC/C,MAAC,IAAI,IAAC,QAAQ,8BAAS,IAAI,CAAC,YAAY,IAAQ,EAC/C,IAAI,CAAC,iBAAiB,IAAI,CACzB,MAAC,IAAI,IAAC,KAAK,EAAE,IAAI,CAAC,iBAAiB,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,kBAC/D,IAAI,CAAC,iBAAiB,SACnB,CACR,IACG,EAGL,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,IAAI,CAC9B,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,YAAY,EAAE,CAAC,aACzC,KAAC,IAAI,IAAC,IAAI,wCAAyB,EACnC,MAAC,GAAG,IAAC,WAAW,EAAE,CAAC,EAAE,aAAa,EAAC,QAAQ,aACzC,MAAC,GAAG,IAAC,GAAG,EAAE,CAAC,aACT,KAAC,GAAG,IAAC,KAAK,EAAE,EAAE,YACZ,KAAC,IAAI,IAAC,QAAQ,+BAAgB,GAC1B,EACN,KAAC,IAAI,cACF,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,GACxD,IACH,EACN,MAAC,GAAG,IAAC,GAAG,EAAE,CAAC,aACT,KAAC,GAAG,IAAC,KAAK,EAAE,EAAE,YACZ,KAAC,IAAI,IAAC,QAAQ,iCAAkB,GAC5B,EACN,KAAC,IAAI,cACF,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,GACzD,IACH,IACF,IACF,CACP,EAGD,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,YAAY,EAAE,CAAC,aACzC,MAAC,GAAG,IAAC,GAAG,EAAE,CAAC,aACT,KAAC,IAAI,IAAC,IAAI,kCAAmB,EAC7B,MAAC,IAAI,IAAC,QAAQ,wBAAG,IAAI,CAAC,WAAW,CAAC,MAAM,SAAS,IAC7C,EACL,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;wBAC5B,MAAM,UAAU,GAAG,GAAG,CAAC,YAAY,IAAI,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,YAAY,IAAI,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC;wBACnG,MAAM,SAAS,GAAG,GAAG,CAAC,aAAa,IAAI,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,aAAa,IAAI,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC;wBACpG,OAAO,CACL,MAAC,GAAG,IAAsB,WAAW,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,aAC9C,MAAC,IAAI,IAAC,IAAI,wBAAG,GAAG,CAAC,UAAU,IAAQ,EACnC,MAAC,IAAI,IAAC,KAAK,EAAE,UAAU,uBACd,CAAC,GAAG,CAAC,YAAY,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SACrC,EACP,MAAC,IAAI,IAAC,KAAK,EAAE,SAAS,sBACd,CAAC,GAAG,CAAC,aAAa,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SACrC,EACN,cAAc,CAAC,GAAG,CAAC,YAAY,EAAE,EAAE,CAAC,EACpC,GAAG,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,IAAI,CAC7B,MAAC,IAAI,IAAC,QAAQ,8BAAS,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAC1D,KAXO,GAAG,CAAC,UAAU,CAYlB,CACP,CAAC;oBACJ,CAAC,CAAC,IACE,EAGL,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,CAC3B,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,YAAY,EAAE,CAAC,aACzC,MAAC,GAAG,IAAC,GAAG,EAAE,CAAC,aACT,KAAC,IAAI,IAAC,IAAI,uCAAwB,EAClC,MAAC,IAAI,IAAC,QAAQ,wBAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,kBAAkB,IACnD,EACL,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE;wBAC5B,MAAM,IAAI,GAAG,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC;wBAC/C,MAAM,KAAK,GAAG,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC;wBACpD,OAAO,CACL,MAAC,GAAG,IAAS,WAAW,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,aACjC,KAAC,IAAI,IAAC,KAAK,EAAE,KAAK,YAAG,IAAI,GAAQ,EACjC,KAAC,IAAI,IAAC,KAAK,EAAE,KAAK,EAAE,IAAI,kBACrB,GAAG,CAAC,OAAO,GACP,EACP,MAAC,IAAI,IAAC,QAAQ,wBAAG,GAAG,CAAC,OAAO,SAAS,EACrC,KAAC,IAAI,IAAC,KAAK,EAAE,GAAG,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,YACvD,GAAG,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,GAC1C,KARC,CAAC,CASL,CACP,CAAC;oBACJ,CAAC,CAAC,IACE,CACP,EAGA,IAAI,CAAC,WAAW,IAAI,CACnB,KAAC,GAAG,IAAC,SAAS,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,WAAW,EAAC,QAAQ,EAAC,WAAW,EAAC,KAAK,YACpE,KAAC,IAAI,IAAC,KAAK,EAAC,KAAK,EAAC,IAAI,4GAEf,GACH,CACP,IACG,CACP,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CAAC,MAAgB;IACvC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IACnC,MAAM,MAAM,GAAG,CAAC,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACrG,OAAO,MAAM;SACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACT,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC5C,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;QACtD,OAAO,MAAM,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC;IAC5B,CAAC,CAAC;SACD,IAAI,CAAC,EAAE,CAAC,CAAC;AACd,CAAC;AAED,SAAS,cAAc,CAAC,KAAa,EAAE,KAAa;IAClD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC;IACzC,MAAM,KAAK,GAAG,KAAK,GAAG,MAAM,CAAC;IAC7B,MAAM,KAAK,GAAG,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC;IACxE,OAAO,CACL,KAAC,IAAI,IAAC,KAAK,EAAE,KAAK,YACf,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,GAC9C,CACR,CAAC;AACJ,CAAC;AAED,SAAS,QAAQ,CAAC,GAAW,EAAE,GAAW;IACxC,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG;QAAE,OAAO,GAAG,CAAC;IAClC,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC;AACvC,CAAC"}
@@ -1,4 +0,0 @@
1
- import React from 'react';
2
- import type { ScreenProps } from '../components/TUIApp.js';
3
- export declare function HUDPanel({ events, sessions, stats, isConnected, }: ScreenProps): React.ReactElement;
4
- //# sourceMappingURL=HUDPanel.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"HUDPanel.d.ts","sourceRoot":"","sources":["../../../../src/tui/screens/HUDPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAE3D,wBAAgB,QAAQ,CAAC,EACvB,MAAM,EACN,QAAQ,EACR,KAAK,EACL,WAAW,GACZ,EAAE,WAAW,GAAG,KAAK,CAAC,YAAY,CA6BlC"}
@@ -1,13 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { Box, Text } from 'ink';
3
- export function HUDPanel({ events, sessions, stats, isConnected, }) {
4
- const activeSessions = sessions.filter((s) => s.status === 'in_progress').length;
5
- const latestEventType = events.length > 0 ? events[events.length - 1]?.eventType ?? '-' : '-';
6
- return (_jsxs(Box, { borderStyle: "single", borderColor: "yellow", paddingX: 1, gap: 2, children: [_jsx(Box, { gap: 1, children: _jsx(Text, { color: "yellow", bold: true, children: "HUD" }) }), _jsxs(Box, { gap: 1, children: [_jsx(Text, { dimColor: true, children: "events:" }), _jsx(Text, { color: "white", children: stats.totalEvents })] }), _jsxs(Box, { gap: 1, children: [_jsx(Text, { dimColor: true, children: "sessions:" }), _jsx(Text, { color: "white", children: sessions.length }), _jsxs(Text, { dimColor: true, children: ["(", activeSessions, " active)"] })] }), _jsxs(Box, { gap: 1, children: [_jsx(Text, { dimColor: true, children: "latest:" }), _jsx(Text, { color: "cyan", children: truncate(latestEventType, 30) })] }), _jsx(Box, { gap: 1, children: _jsx(Text, { color: isConnected ? 'green' : 'red', children: isConnected ? 'OK' : 'ERR' }) })] }));
7
- }
8
- function truncate(str, max) {
9
- if (str.length <= max)
10
- return str;
11
- return str.slice(0, max - 3) + '...';
12
- }
13
- //# sourceMappingURL=HUDPanel.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"HUDPanel.js","sourceRoot":"","sources":["../../../../src/tui/screens/HUDPanel.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAGhC,MAAM,UAAU,QAAQ,CAAC,EACvB,MAAM,EACN,QAAQ,EACR,KAAK,EACL,WAAW,GACC;IACZ,MAAM,cAAc,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,aAAa,CAAC,CAAC,MAAM,CAAC;IACjF,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,SAAS,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;IAE9F,OAAO,CACL,MAAC,GAAG,IAAC,WAAW,EAAC,QAAQ,EAAC,WAAW,EAAC,QAAQ,EAAC,QAAQ,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,aAChE,KAAC,GAAG,IAAC,GAAG,EAAE,CAAC,YACT,KAAC,IAAI,IAAC,KAAK,EAAC,QAAQ,EAAC,IAAI,0BAAW,GAChC,EACN,MAAC,GAAG,IAAC,GAAG,EAAE,CAAC,aACT,KAAC,IAAI,IAAC,QAAQ,8BAAe,EAC7B,KAAC,IAAI,IAAC,KAAK,EAAC,OAAO,YAAE,KAAK,CAAC,WAAW,GAAQ,IAC1C,EACN,MAAC,GAAG,IAAC,GAAG,EAAE,CAAC,aACT,KAAC,IAAI,IAAC,QAAQ,gCAAiB,EAC/B,KAAC,IAAI,IAAC,KAAK,EAAC,OAAO,YAAE,QAAQ,CAAC,MAAM,GAAQ,EAC5C,MAAC,IAAI,IAAC,QAAQ,wBAAG,cAAc,gBAAgB,IAC3C,EACN,MAAC,GAAG,IAAC,GAAG,EAAE,CAAC,aACT,KAAC,IAAI,IAAC,QAAQ,8BAAe,EAC7B,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,YAAE,QAAQ,CAAC,eAAe,EAAE,EAAE,CAAC,GAAQ,IACrD,EACN,KAAC,GAAG,IAAC,GAAG,EAAE,CAAC,YACT,KAAC,IAAI,IAAC,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,YACvC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,GACtB,GACH,IACF,CACP,CAAC;AACJ,CAAC;AAED,SAAS,QAAQ,CAAC,GAAW,EAAE,GAAW;IACxC,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG;QAAE,OAAO,GAAG,CAAC;IAClC,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC;AACvC,CAAC"}
@@ -1,4 +0,0 @@
1
- import React from 'react';
2
- import type { ScreenProps } from '../components/TUIApp.js';
3
- export declare function InterviewScreen({ events, selectedSessionId, }: ScreenProps): React.ReactElement;
4
- //# sourceMappingURL=InterviewScreen.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"InterviewScreen.d.ts","sourceRoot":"","sources":["../../../../src/tui/screens/InterviewScreen.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4B,MAAM,OAAO,CAAC;AAEjD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAqG3D,wBAAgB,eAAe,CAAC,EAC9B,MAAM,EACN,iBAAiB,GAClB,EAAE,WAAW,GAAG,KAAK,CAAC,YAAY,CA4GlC"}
@@ -1,103 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import React, { useMemo, useState } from 'react';
3
- import { Box, Text, useInput } from 'ink';
4
- function parseInterviewEvents(events, sessionId) {
5
- const sessionEvents = sessionId
6
- ? events.filter((e) => e.aggregateId === sessionId)
7
- : [];
8
- let topic = '';
9
- let overallAmbiguity = null;
10
- let status = 'unknown';
11
- const rounds = [];
12
- const questionMap = new Map();
13
- for (const ev of sessionEvents) {
14
- const payload = ev.payload;
15
- if (ev.eventType === 'interview.session.started') {
16
- topic = payload.topic ?? '';
17
- status = 'in_progress';
18
- }
19
- if (ev.eventType === 'interview.question.asked') {
20
- const roundNumber = payload.roundNumber ?? rounds.length + 1;
21
- const question = payload.question ?? '';
22
- const principle = payload.gestaltFocus ?? payload.principle ?? '';
23
- const existing = questionMap.get(roundNumber) ?? { roundNumber };
24
- existing.question = question;
25
- existing.gestaltPrinciple = principle;
26
- questionMap.set(roundNumber, existing);
27
- }
28
- if (ev.eventType === 'interview.response.recorded') {
29
- const roundNumber = payload.roundNumber ?? rounds.length + 1;
30
- const response = payload.response ?? payload.userResponse ?? '';
31
- const existing = questionMap.get(roundNumber) ?? { roundNumber };
32
- existing.response = response;
33
- questionMap.set(roundNumber, existing);
34
- }
35
- if (ev.eventType === 'interview.resolution.scored' || ev.eventType === 'interview.ambiguity.scored') {
36
- const overall = payload.overall;
37
- const roundNumber = payload.roundNumber;
38
- if (overall !== undefined) {
39
- overallAmbiguity = overall;
40
- }
41
- if (roundNumber !== undefined) {
42
- const existing = questionMap.get(roundNumber);
43
- if (existing) {
44
- existing.resolutionScore = overall ?? null;
45
- }
46
- }
47
- }
48
- if (ev.eventType === 'interview.session.completed') {
49
- status = 'completed';
50
- }
51
- }
52
- // Assemble rounds from map
53
- for (const [roundNum, data] of questionMap.entries()) {
54
- rounds.push({
55
- roundNumber: roundNum,
56
- question: data.question ?? '',
57
- response: data.response ?? '',
58
- resolutionScore: data.resolutionScore ?? null,
59
- gestaltPrinciple: data.gestaltPrinciple ?? '',
60
- });
61
- }
62
- rounds.sort((a, b) => a.roundNumber - b.roundNumber);
63
- return { topic, rounds, overallAmbiguity, status };
64
- }
65
- const PRINCIPLE_COLORS = {
66
- closure: 'magenta',
67
- proximity: 'blue',
68
- similarity: 'yellow',
69
- figure_ground: 'green',
70
- continuity: 'cyan',
71
- };
72
- export function InterviewScreen({ events, selectedSessionId, }) {
73
- const data = useMemo(() => parseInterviewEvents(events, selectedSessionId), [events, selectedSessionId]);
74
- const [scrollOffset, setScrollOffset] = useState(0);
75
- const visibleRounds = 5;
76
- useInput((_input, key) => {
77
- if (key.upArrow) {
78
- setScrollOffset((prev) => Math.max(0, prev - 1));
79
- }
80
- if (key.downArrow) {
81
- setScrollOffset((prev) => Math.min(Math.max(0, data.rounds.length - visibleRounds), prev + 1));
82
- }
83
- });
84
- if (!selectedSessionId) {
85
- return (_jsxs(Box, { flexDirection: "column", alignItems: "center", justifyContent: "center", minHeight: 10, children: [_jsx(Text, { bold: true, color: "yellow", children: "No session selected" }), _jsx(Text, { dimColor: true, children: "Press 1 to go to Sessions and select one." })] }));
86
- }
87
- if (data.rounds.length === 0) {
88
- return (_jsxs(Box, { flexDirection: "column", alignItems: "center", justifyContent: "center", minHeight: 10, children: [_jsx(Text, { bold: true, color: "yellow", children: "No interview data" }), _jsx(Text, { dimColor: true, children: "This session may not be an interview, or no Q&A rounds have been recorded." })] }));
89
- }
90
- const displayedRounds = data.rounds.slice(scrollOffset, scrollOffset + visibleRounds);
91
- return (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Box, { marginBottom: 1, gap: 1, children: [_jsx(Text, { bold: true, children: "Interview" }), _jsx(Text, { dimColor: true, children: "|" }), _jsx(Text, { color: "cyan", children: truncate(data.topic || selectedSessionId, 40) }), _jsx(Text, { dimColor: true, children: "|" }), _jsx(Text, { color: data.status === 'completed' ? 'green' : 'cyan', children: data.status }), data.overallAmbiguity !== null && (_jsxs(React.Fragment, { children: [_jsx(Text, { dimColor: true, children: "| resolution:" }), _jsxs(Text, { color: data.overallAmbiguity >= 0.8 ? 'green' : data.overallAmbiguity >= 0.5 ? 'yellow' : 'red', children: [(data.overallAmbiguity * 100).toFixed(0), "%"] })] }))] }), _jsx(Box, { marginBottom: 1, children: _jsxs(Text, { dimColor: true, children: ["Rounds ", scrollOffset + 1, "-", Math.min(scrollOffset + visibleRounds, data.rounds.length), " of", ' ', data.rounds.length, " | Up/Down to scroll"] }) }), displayedRounds.map((round) => (_jsxs(Box, { flexDirection: "column", marginBottom: 1, children: [_jsxs(Box, { gap: 1, children: [_jsxs(Text, { bold: true, color: "white", children: ["R", round.roundNumber] }), round.gestaltPrinciple && (_jsxs(Text, { color: PRINCIPLE_COLORS[round.gestaltPrinciple] ?? 'gray', children: ["[", round.gestaltPrinciple, "]"] })), round.resolutionScore !== null && (_jsxs(Text, { dimColor: true, children: ["res: ", renderMiniBar(round.resolutionScore, 10), ' ', (round.resolutionScore * 100).toFixed(0), "%"] }))] }), _jsxs(Box, { paddingLeft: 2, flexDirection: "column", children: [_jsxs(Box, { children: [_jsx(Text, { color: "yellow", children: "Q: " }), _jsx(Text, { children: truncate(round.question, 80) })] }), round.response ? (_jsxs(Box, { children: [_jsx(Text, { color: "green", children: "A: " }), _jsx(Text, { children: truncate(round.response, 80) })] })) : (_jsxs(Box, { children: [_jsx(Text, { color: "gray", children: "A: " }), _jsx(Text, { dimColor: true, children: "(awaiting response)" })] }))] })] }, round.roundNumber)))] }));
92
- }
93
- function renderMiniBar(score, width) {
94
- const filled = Math.round(score * width);
95
- const empty = width - filled;
96
- return '[' + '#'.repeat(filled) + ' '.repeat(empty) + ']';
97
- }
98
- function truncate(str, max) {
99
- if (str.length <= max)
100
- return str;
101
- return str.slice(0, max - 3) + '...';
102
- }
103
- //# sourceMappingURL=InterviewScreen.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"InterviewScreen.js","sourceRoot":"","sources":["../../../../src/tui/screens/InterviewScreen.tsx"],"names":[],"mappings":"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"}
@@ -1,4 +0,0 @@
1
- import React from 'react';
2
- import type { ScreenProps } from '../components/TUIApp.js';
3
- export declare function LogScreen({ events, }: ScreenProps): React.ReactElement;
4
- //# sourceMappingURL=LogScreen.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"LogScreen.d.ts","sourceRoot":"","sources":["../../../../src/tui/screens/LogScreen.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4B,MAAM,OAAO,CAAC;AAEjD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAgC3D,wBAAgB,SAAS,CAAC,EACxB,MAAM,GACP,EAAE,WAAW,GAAG,KAAK,CAAC,YAAY,CAkElC"}