@corenel/web-ui 0.7.0 → 0.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/Composer.d.ts.map +1 -1
- package/dist/Composer.js +184 -172
- package/dist/Composer.js.map +1 -1
- package/dist/ContextBar.d.ts +1 -4
- package/dist/ContextBar.d.ts.map +1 -1
- package/dist/ContextBar.js +2 -2
- package/dist/ContextBar.js.map +1 -1
- package/dist/ContextManager.d.ts +3 -6
- package/dist/ContextManager.d.ts.map +1 -1
- package/dist/ContextManager.js +58 -10
- package/dist/ContextManager.js.map +1 -1
- package/dist/SummaryTranscript.d.ts +11 -1
- package/dist/SummaryTranscript.d.ts.map +1 -1
- package/dist/SummaryTranscript.js +47 -10
- package/dist/SummaryTranscript.js.map +1 -1
- package/dist/ToolFold.d.ts +9 -0
- package/dist/ToolFold.d.ts.map +1 -0
- package/dist/ToolFold.js +32 -0
- package/dist/ToolFold.js.map +1 -0
- package/dist/Transcript.d.ts +30 -1
- package/dist/Transcript.d.ts.map +1 -1
- package/dist/Transcript.js +132 -23
- package/dist/Transcript.js.map +1 -1
- package/dist/agentChat/AgentChat.d.ts +19 -5
- package/dist/agentChat/AgentChat.d.ts.map +1 -1
- package/dist/agentChat/AgentChat.js +174 -91
- package/dist/agentChat/AgentChat.js.map +1 -1
- package/dist/agentChat/OptionsDrawer.d.ts +0 -23
- package/dist/agentChat/OptionsDrawer.d.ts.map +1 -1
- package/dist/agentChat/OptionsDrawer.js +10 -45
- package/dist/agentChat/OptionsDrawer.js.map +1 -1
- package/dist/agentChat/PlanReview.d.ts +56 -0
- package/dist/agentChat/PlanReview.d.ts.map +1 -0
- package/dist/agentChat/PlanReview.js +269 -0
- package/dist/agentChat/PlanReview.js.map +1 -0
- package/dist/agentChat/SkillsSection.js +4 -2
- package/dist/agentChat/SkillsSection.js.map +1 -1
- package/dist/agentChat/controller.d.ts +12 -3
- package/dist/agentChat/controller.d.ts.map +1 -1
- package/dist/agentChat/controller.js.map +1 -1
- package/dist/arrivalEffect.d.ts +28 -0
- package/dist/arrivalEffect.d.ts.map +1 -0
- package/dist/arrivalEffect.js +114 -0
- package/dist/arrivalEffect.js.map +1 -0
- package/dist/commandTurn.d.ts.map +1 -1
- package/dist/commandTurn.js +3 -2
- package/dist/commandTurn.js.map +1 -1
- package/dist/fx/AsteroidsOverlay.d.ts +6 -0
- package/dist/fx/AsteroidsOverlay.d.ts.map +1 -0
- package/dist/fx/AsteroidsOverlay.js +166 -0
- package/dist/fx/AsteroidsOverlay.js.map +1 -0
- package/dist/fx/FlapRow.d.ts +8 -0
- package/dist/fx/FlapRow.d.ts.map +1 -0
- package/dist/fx/FlapRow.js +12 -0
- package/dist/fx/FlapRow.js.map +1 -0
- package/dist/fx/FxText.d.ts +11 -0
- package/dist/fx/FxText.d.ts.map +1 -0
- package/dist/fx/FxText.js +50 -0
- package/dist/fx/FxText.js.map +1 -0
- package/dist/fx/LiveAnswer.d.ts +17 -0
- package/dist/fx/LiveAnswer.d.ts.map +1 -0
- package/dist/fx/LiveAnswer.js +298 -0
- package/dist/fx/LiveAnswer.js.map +1 -0
- package/dist/fx/MatrixRain.d.ts +5 -0
- package/dist/fx/MatrixRain.d.ts.map +1 -0
- package/dist/fx/MatrixRain.js +73 -0
- package/dist/fx/MatrixRain.js.map +1 -0
- package/dist/fx/NetsplitJoin.d.ts +3 -0
- package/dist/fx/NetsplitJoin.d.ts.map +1 -0
- package/dist/fx/NetsplitJoin.js +13 -0
- package/dist/fx/NetsplitJoin.js.map +1 -0
- package/dist/fx/arrivalModes.d.ts +27 -0
- package/dist/fx/arrivalModes.d.ts.map +1 -0
- package/dist/fx/arrivalModes.js +107 -0
- package/dist/fx/arrivalModes.js.map +1 -0
- package/dist/fx/tail.d.ts +16 -0
- package/dist/fx/tail.d.ts.map +1 -0
- package/dist/fx/tail.js +54 -0
- package/dist/fx/tail.js.map +1 -0
- package/dist/fx/useReveal.d.ts +2 -0
- package/dist/fx/useReveal.d.ts.map +1 -0
- package/dist/fx/useReveal.js +59 -0
- package/dist/fx/useReveal.js.map +1 -0
- package/dist/observed.d.ts +16 -0
- package/dist/observed.d.ts.map +1 -0
- package/dist/observed.js +33 -0
- package/dist/observed.js.map +1 -0
- package/dist/toolRender.d.ts +6 -2
- package/dist/toolRender.d.ts.map +1 -1
- package/dist/toolRender.js +27 -17
- package/dist/toolRender.js.map +1 -1
- package/dist/transcriptSkin.d.ts +23 -0
- package/dist/transcriptSkin.d.ts.map +1 -0
- package/dist/transcriptSkin.js +255 -0
- package/dist/transcriptSkin.js.map +1 -0
- package/dist/transcriptSkinCss.d.ts +4 -0
- package/dist/transcriptSkinCss.d.ts.map +1 -0
- package/dist/transcriptSkinCss.js +136 -0
- package/dist/transcriptSkinCss.js.map +1 -0
- package/dist/usageSummary.d.ts +31 -0
- package/dist/usageSummary.d.ts.map +1 -0
- package/dist/usageSummary.js +39 -0
- package/dist/usageSummary.js.map +1 -0
- package/dist/verificationView.d.ts +3 -0
- package/dist/verificationView.d.ts.map +1 -0
- package/dist/verificationView.js +37 -0
- package/dist/verificationView.js.map +1 -0
- package/package.json +5 -5
|
@@ -0,0 +1,255 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
/* Transcript skin -- how the chat transcript LOOKS, separate from how much tool
|
|
3
|
+
* detail it shows (transcriptView.tsx). Persisted per browser and kept in step
|
|
4
|
+
* across every mounted transcript, the same way the detail setting is.
|
|
5
|
+
*
|
|
6
|
+
* A skin paints in two layers, both scoped to the transcript subtree:
|
|
7
|
+
* - tokens: CSS custom properties set on TranscriptSkinRoot. Transcript parts
|
|
8
|
+
* already read --surface-*, --text-*, --border-*, and the --tx-* shape tokens
|
|
9
|
+
* fall back to today's values, so `default` (no tokens) is unchanged.
|
|
10
|
+
* - decorations: SKIN_CSS[skin], pseudo-elements keyed on data-tx-skin and
|
|
11
|
+
* data-tx-part, mounted only while the skin is active. */
|
|
12
|
+
import { useCallback, useEffect, useState } from 'react';
|
|
13
|
+
import { SKIN_CSS } from './transcriptSkinCss';
|
|
14
|
+
export const TRANSCRIPT_SKINS = ['default', 'terminal', 'crt', 'minimal', 'paper', 'blueprint', 'irc', 'handheld', 'receipt', 'mission', 'retro'];
|
|
15
|
+
export const TRANSCRIPT_SKIN_LABELS = {
|
|
16
|
+
default: 'Default', terminal: 'Terminal', crt: 'CRT', minimal: 'Minimal', paper: 'Paper', blueprint: 'Blueprint', irc: 'IRC',
|
|
17
|
+
handheld: 'Handheld', receipt: 'Receipt', mission: 'Mission control', retro: 'Retro desktop',
|
|
18
|
+
};
|
|
19
|
+
const KEY = 'prompd.web.transcriptSkin';
|
|
20
|
+
const EVENT = 'prompd:transcriptSkin';
|
|
21
|
+
export function isTranscriptSkin(v) {
|
|
22
|
+
return typeof v === 'string' && TRANSCRIPT_SKINS.includes(v);
|
|
23
|
+
}
|
|
24
|
+
function read() {
|
|
25
|
+
try {
|
|
26
|
+
const v = localStorage.getItem(KEY);
|
|
27
|
+
return isTranscriptSkin(v) ? v : 'default';
|
|
28
|
+
}
|
|
29
|
+
catch {
|
|
30
|
+
return 'default';
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
/** Read/write the persisted skin. Cross-instance updates sync via a `storage`
|
|
34
|
+
* event + a same-tab custom event, so every mounted transcript stays in step. */
|
|
35
|
+
export function useTranscriptSkin() {
|
|
36
|
+
const [skin, setSkinState] = useState(read);
|
|
37
|
+
useEffect(() => {
|
|
38
|
+
const sync = () => setSkinState(read());
|
|
39
|
+
window.addEventListener('storage', sync);
|
|
40
|
+
window.addEventListener(EVENT, sync);
|
|
41
|
+
return () => {
|
|
42
|
+
window.removeEventListener('storage', sync);
|
|
43
|
+
window.removeEventListener(EVENT, sync);
|
|
44
|
+
};
|
|
45
|
+
}, []);
|
|
46
|
+
const setSkin = useCallback((s) => {
|
|
47
|
+
setSkinState(s);
|
|
48
|
+
try {
|
|
49
|
+
localStorage.setItem(KEY, s);
|
|
50
|
+
}
|
|
51
|
+
catch { /* storage blocked: this tab still switches */ }
|
|
52
|
+
window.dispatchEvent(new CustomEvent(EVENT));
|
|
53
|
+
}, []);
|
|
54
|
+
return [skin, setSkin];
|
|
55
|
+
}
|
|
56
|
+
/** The `/skin [id]` command, as a pure function so it is testable without a
|
|
57
|
+
* chat. `next` is the skin to switch to, or null to leave it alone. */
|
|
58
|
+
export function skinCommand(arg, current) {
|
|
59
|
+
const want = arg.trim().toLowerCase();
|
|
60
|
+
const list = TRANSCRIPT_SKINS.map((s) => (s === current ? `${s} (current)` : s)).join(', ');
|
|
61
|
+
if (!want)
|
|
62
|
+
return { next: null, note: `Transcript skins: ${list}. Use \`/skin <name>\` to switch.` };
|
|
63
|
+
if (isTranscriptSkin(want))
|
|
64
|
+
return { next: want, note: `Transcript skin set to ${TRANSCRIPT_SKIN_LABELS[want]}.` };
|
|
65
|
+
return { next: null, note: `No skin named "${arg.trim()}". Skins: ${TRANSCRIPT_SKINS.join(', ')}.` };
|
|
66
|
+
}
|
|
67
|
+
const MONO = "'JetBrains Mono', ui-monospace, 'SF Mono', Consolas, monospace";
|
|
68
|
+
/* Token maps. Keys are custom properties; `--tx-*` are transcript-only shape
|
|
69
|
+
* tokens whose fallbacks (in Transcript.tsx / toolRender.tsx) are today's
|
|
70
|
+
* values. Values follow the approved mockup. */
|
|
71
|
+
const TOKENS = {
|
|
72
|
+
terminal: {
|
|
73
|
+
'--surface-1': '#0d1014', '--surface-2': '#0d1014',
|
|
74
|
+
'--text-primary': '#e8edf4', '--text-secondary': '#8b98a8', '--text-tertiary': '#8593a3', '--text-disabled': '#7a8797',
|
|
75
|
+
'--border-subtle': '#26303b', '--border-default': '#26303b', '--border-accent': '#26303b',
|
|
76
|
+
'--accent': '#5fb3f9', '--accent-soft': 'transparent',
|
|
77
|
+
'--danger': '#ff7b72', '--danger-soft': 'transparent', '--success': '#7ee787', '--warning': '#f2c46d',
|
|
78
|
+
'--font-mono': MONO,
|
|
79
|
+
'--tx-font': MONO, '--tx-size': '13px', '--tx-line': '1.55', '--tx-bg': '#0d1014', '--tx-fg': '#d4dae3',
|
|
80
|
+
'--tx-tool-body-pad': '2px 0 6px 4ch',
|
|
81
|
+
'--tx-user-bg': 'transparent', '--tx-user-border': '0', '--tx-user-radius': '0', '--tx-user-pad': '0',
|
|
82
|
+
'--tx-user-align': 'stretch', '--tx-user-maxw': 'none', '--tx-user-style': 'normal',
|
|
83
|
+
'--tx-tool-bg': 'transparent', '--tx-tool-border': '0', '--tx-tool-radius': '0', '--tx-tool-pad': '1px 0',
|
|
84
|
+
'--tx-glyph-display': 'inline-flex', '--tx-glyph-bg': 'transparent', '--tx-glyph-fg': '#7ee787',
|
|
85
|
+
},
|
|
86
|
+
crt: {
|
|
87
|
+
'--surface-1': '#0a0703', '--surface-2': '#120c05',
|
|
88
|
+
'--text-primary': '#ffb347', '--text-secondary': '#d99a3f', '--text-tertiary': '#a8772f', '--text-disabled': '#8a6226',
|
|
89
|
+
'--border-subtle': '#3a2a12', '--border-default': '#3a2a12', '--border-accent': '#3a2a12',
|
|
90
|
+
'--accent': '#ffd08a', '--accent-soft': 'transparent',
|
|
91
|
+
'--danger': '#ff6a3d', '--danger-soft': 'transparent', '--success': '#ffb347', '--warning': '#ffd08a',
|
|
92
|
+
'--font-mono': "'VT323', " + MONO,
|
|
93
|
+
'--tx-font': "'VT323', " + MONO, '--tx-size': '22px', '--tx-line': '1.25',
|
|
94
|
+
'--tx-bg': '#0a0703', '--tx-bg-image': 'radial-gradient(ellipse at center, #1a1206 0%, #0a0703 80%)', '--tx-fg': '#ffb347',
|
|
95
|
+
'--tx-user-bg': 'transparent', '--tx-user-border': '0', '--tx-user-radius': '0', '--tx-user-pad': '0',
|
|
96
|
+
'--tx-user-align': 'stretch', '--tx-user-maxw': 'none', '--tx-user-style': 'normal',
|
|
97
|
+
'--tx-tool-bg': 'transparent', '--tx-tool-border': '0', '--tx-tool-radius': '0', '--tx-tool-pad': '1px 0',
|
|
98
|
+
'--tx-glyph-display': 'inline-flex', '--tx-glyph-bg': 'transparent', '--tx-glyph-fg': '#ffb347',
|
|
99
|
+
},
|
|
100
|
+
minimal: {
|
|
101
|
+
'--surface-1': '#191817', '--surface-2': '#191817',
|
|
102
|
+
'--text-primary': '#e9e6e1', '--text-secondary': '#a8a29a', '--text-tertiary': '#8a857e', '--text-disabled': '#6b665f',
|
|
103
|
+
'--border-subtle': '#2f2c29', '--border-default': '#2f2c29', '--border-accent': '#2f2c29',
|
|
104
|
+
'--accent': '#e8b48f', '--accent-soft': '#262422',
|
|
105
|
+
'--danger': '#e0776b', '--danger-soft': 'transparent', '--success': '#a8a29a', '--warning': '#d9b36c',
|
|
106
|
+
'--tx-font': 'inherit', '--tx-size': '14px', '--tx-line': '1.65', '--tx-bg': '#191817', '--tx-fg': '#e9e6e1',
|
|
107
|
+
'--tx-user-bg': '#262422', '--tx-user-border': '0', '--tx-user-radius': '12px', '--tx-user-pad': '6px 12px',
|
|
108
|
+
'--tx-user-align': 'flex-end', '--tx-user-maxw': '85%', '--tx-user-style': 'normal',
|
|
109
|
+
'--tx-tool-bg': 'transparent', '--tx-tool-border': '0', '--tx-tool-radius': '0', '--tx-tool-pad': '2px 0',
|
|
110
|
+
'--tx-glyph-display': 'none', '--tx-glyph-bg': 'transparent', '--tx-glyph-fg': '#a8a29a',
|
|
111
|
+
},
|
|
112
|
+
paper: {
|
|
113
|
+
'--surface-1': '#f7f3ea', '--surface-2': '#ece5d6',
|
|
114
|
+
'--text-primary': '#2a2621', '--text-secondary': '#5b5247', '--text-tertiary': '#655b4f', '--text-disabled': '#6b6155',
|
|
115
|
+
'--border-subtle': '#ddd3c2', '--border-default': '#cfc3ae', '--border-accent': '#b9ac98',
|
|
116
|
+
'--accent': '#8a5a2b', '--accent-soft': 'transparent',
|
|
117
|
+
'--danger': '#a8412f', '--danger-soft': 'transparent', '--success': '#6d8a5f', '--warning': '#9a7a2f',
|
|
118
|
+
'--tx-font': "'Source Serif 4', Georgia, 'Times New Roman', serif", '--tx-size': '16px', '--tx-line': '1.65',
|
|
119
|
+
'--tx-bg': '#f7f3ea', '--tx-fg': '#2a2621',
|
|
120
|
+
'--tx-pad': '14px max(18px, calc((100% - 64ch) / 2))',
|
|
121
|
+
'--tx-user-bg': 'transparent', '--tx-user-border': '0', '--tx-user-radius': '0', '--tx-user-pad': '0 0 0 14px',
|
|
122
|
+
'--tx-user-align': 'stretch', '--tx-user-maxw': 'none', '--tx-user-style': 'italic',
|
|
123
|
+
'--tx-tool-bg': 'transparent', '--tx-tool-border': '0', '--tx-tool-radius': '0', '--tx-tool-pad': '3px 0',
|
|
124
|
+
'--tx-glyph-display': 'inline-flex', '--tx-glyph-bg': 'transparent', '--tx-glyph-fg': '#6d8a5f',
|
|
125
|
+
},
|
|
126
|
+
blueprint: {
|
|
127
|
+
'--surface-1': '#0e3a6b', '--surface-2': '#0e3a6b',
|
|
128
|
+
'--text-primary': '#ffffff', '--text-secondary': '#cfe4fb', '--text-tertiary': '#a9cdf2', '--text-disabled': '#7fb0e0',
|
|
129
|
+
'--border-subtle': 'rgba(159,208,255,0.5)', '--border-default': '#9fd0ff', '--border-accent': '#9fd0ff',
|
|
130
|
+
'--accent': '#7fc4ff', '--accent-soft': 'rgba(14,58,107,0.85)',
|
|
131
|
+
'--danger': '#ff9f7a', '--danger-soft': 'rgba(14,58,107,0.92)', '--success': '#9fd0ff', '--warning': '#ffe28a',
|
|
132
|
+
'--font-mono': MONO,
|
|
133
|
+
'--tx-font': MONO, '--tx-size': '13px', '--tx-line': '1.55',
|
|
134
|
+
'--tx-bg': '#0e3a6b', '--tx-fg': '#dcecff',
|
|
135
|
+
'--tx-bg-image': 'linear-gradient(rgba(170,210,255,0.16) 1px, transparent 1px), linear-gradient(90deg, rgba(170,210,255,0.16) 1px, transparent 1px), linear-gradient(rgba(170,210,255,0.07) 1px, transparent 1px), linear-gradient(90deg, rgba(170,210,255,0.07) 1px, transparent 1px)',
|
|
136
|
+
'--tx-bg-size': '80px 80px, 80px 80px, 16px 16px, 16px 16px',
|
|
137
|
+
'--tx-tool-overflow': 'visible',
|
|
138
|
+
'--tx-user-bg': 'rgba(14,58,107,0.85)', '--tx-user-border': '1px dashed #9fd0ff', '--tx-user-radius': '0', '--tx-user-pad': '6px 12px',
|
|
139
|
+
'--tx-user-align': 'flex-end', '--tx-user-maxw': '85%', '--tx-user-style': 'normal',
|
|
140
|
+
'--tx-tool-bg': 'rgba(14,58,107,0.92)', '--tx-tool-border': '1px solid #9fd0ff', '--tx-tool-radius': '0', '--tx-tool-pad': '5px 10px',
|
|
141
|
+
'--tx-glyph-display': 'inline-flex', '--tx-glyph-bg': 'transparent', '--tx-glyph-fg': '#9fd0ff',
|
|
142
|
+
},
|
|
143
|
+
/* A chat-client log: one line per speaker, tool calls as "* agent" action
|
|
144
|
+
* lines (the nicks and prefixes live in SKIN_CSS.irc). No timestamps: a
|
|
145
|
+
* turn records no time, and an invented one would be a false statement. */
|
|
146
|
+
irc: {
|
|
147
|
+
'--surface-1': '#101418', '--surface-2': '#101418',
|
|
148
|
+
'--text-primary': '#e6edf3', '--text-secondary': '#8b949e', '--text-tertiary': '#808b96', '--text-disabled': '#76818c',
|
|
149
|
+
'--border-subtle': '#1f262d', '--border-default': '#1f262d', '--border-accent': '#1f262d',
|
|
150
|
+
'--accent': '#79c0ff', '--accent-soft': 'transparent',
|
|
151
|
+
'--danger': '#ff7b72', '--danger-soft': 'transparent', '--success': '#e3b341', '--warning': '#e3b341',
|
|
152
|
+
'--font-mono': MONO,
|
|
153
|
+
'--tx-font': MONO, '--tx-size': '13px', '--tx-line': '1.6', '--tx-bg': '#101418', '--tx-fg': '#c8d0d8',
|
|
154
|
+
'--tx-tool-body-pad': '0 0 4px 4ch',
|
|
155
|
+
'--tx-user-bg': 'transparent', '--tx-user-border': '0', '--tx-user-radius': '0', '--tx-user-pad': '0',
|
|
156
|
+
'--tx-user-align': 'stretch', '--tx-user-maxw': 'none', '--tx-user-style': 'normal',
|
|
157
|
+
'--tx-tool-bg': 'transparent', '--tx-tool-border': '0', '--tx-tool-radius': '0', '--tx-tool-pad': '0 0 0 2ch',
|
|
158
|
+
'--tx-glyph-display': 'none', '--tx-glyph-bg': 'transparent', '--tx-glyph-fg': '#e3b341',
|
|
159
|
+
},
|
|
160
|
+
/* A four-green handheld screen; answers sit in a chunky text box (CSS). */
|
|
161
|
+
handheld: {
|
|
162
|
+
'--surface-1': '#9bbc0f', '--surface-2': '#8bac0f',
|
|
163
|
+
'--text-primary': '#0f380f', '--text-secondary': '#0f380f', '--text-tertiary': '#1f4a1f', '--text-disabled': '#1f4a1f',
|
|
164
|
+
'--border-subtle': '#306230', '--border-default': '#306230', '--border-accent': '#306230',
|
|
165
|
+
'--accent': '#0f380f', '--accent-soft': '#8bac0f',
|
|
166
|
+
'--danger': '#0f380f', '--danger-soft': 'transparent', '--success': '#306230', '--warning': '#306230',
|
|
167
|
+
'--font-mono': "'VT323', " + MONO,
|
|
168
|
+
'--tx-font': "'VT323', " + MONO, '--tx-size': '18px', '--tx-line': '1.2', '--tx-bg': '#9bbc0f', '--tx-fg': '#0f380f',
|
|
169
|
+
'--tx-user-bg': '#8bac0f', '--tx-user-border': '2px solid #306230', '--tx-user-radius': '0', '--tx-user-pad': '6px 9px',
|
|
170
|
+
'--tx-user-align': 'flex-end', '--tx-user-maxw': '85%', '--tx-user-style': 'normal',
|
|
171
|
+
'--tx-tool-bg': 'transparent', '--tx-tool-border': '0', '--tx-tool-radius': '0', '--tx-tool-pad': '2px 0',
|
|
172
|
+
'--tx-glyph-display': 'inline-flex', '--tx-glyph-bg': '#306230', '--tx-glyph-fg': '#9bbc0f', '--tx-glyph-radius': '0',
|
|
173
|
+
},
|
|
174
|
+
/* A thermal slip on a counter: the transcript list is the paper (CSS). */
|
|
175
|
+
receipt: {
|
|
176
|
+
'--surface-1': '#fbfaf6', '--surface-2': '#f1eee6',
|
|
177
|
+
'--text-primary': '#222222', '--text-secondary': '#444444', '--text-tertiary': '#666666', '--text-disabled': '#777777',
|
|
178
|
+
'--border-subtle': '#bbbbbb', '--border-default': '#bbbbbb', '--border-accent': '#bbbbbb',
|
|
179
|
+
'--accent': '#222222', '--accent-soft': 'transparent',
|
|
180
|
+
'--danger': '#a3261b', '--danger-soft': 'transparent', '--success': '#222222', '--warning': '#6b5300',
|
|
181
|
+
'--font-mono': "'Courier Prime', 'Courier New', monospace",
|
|
182
|
+
'--tx-font': "'Courier Prime', 'Courier New', monospace", '--tx-size': '12.5px', '--tx-line': '1.45',
|
|
183
|
+
'--tx-bg': '#d9d4cc', '--tx-fg': '#222222',
|
|
184
|
+
'--tx-user-bg': 'transparent', '--tx-user-border': '0', '--tx-user-radius': '0', '--tx-user-pad': '0',
|
|
185
|
+
'--tx-user-align': 'stretch', '--tx-user-maxw': 'none', '--tx-user-style': 'italic',
|
|
186
|
+
'--tx-tool-bg': 'transparent', '--tx-tool-border': '0', '--tx-tool-radius': '0', '--tx-tool-pad': '1px 0',
|
|
187
|
+
'--tx-glyph-display': 'none', '--tx-glyph-bg': 'transparent', '--tx-glyph-fg': '#222222',
|
|
188
|
+
},
|
|
189
|
+
/* A console log: FLIGHT / CAPCOM roles, GO / NO-GO events, T+ working time. */
|
|
190
|
+
mission: {
|
|
191
|
+
'--surface-1': '#0b1117', '--surface-2': '#0f1821',
|
|
192
|
+
'--text-primary': '#d7e3ee', '--text-secondary': '#6f8599', '--text-tertiary': '#8098ad', '--text-disabled': '#7890a5',
|
|
193
|
+
'--border-subtle': '#22313f', '--border-default': '#22313f', '--border-accent': '#22313f',
|
|
194
|
+
'--accent': '#6cc4ff', '--accent-soft': 'transparent',
|
|
195
|
+
'--danger': '#ff5d5d', '--danger-soft': 'transparent', '--success': '#3ddc84', '--warning': '#ffb454',
|
|
196
|
+
'--font-mono': MONO,
|
|
197
|
+
'--tx-font': MONO, '--tx-size': '12.5px', '--tx-line': '1.5', '--tx-bg': '#0b1117', '--tx-fg': '#d7e3ee',
|
|
198
|
+
'--tx-user-bg': 'transparent', '--tx-user-border': '0', '--tx-user-radius': '0', '--tx-user-pad': '0',
|
|
199
|
+
'--tx-user-align': 'stretch', '--tx-user-maxw': 'none', '--tx-user-style': 'normal',
|
|
200
|
+
'--tx-tool-bg': 'transparent', '--tx-tool-border': '0', '--tx-tool-radius': '0', '--tx-tool-pad': '2px 0',
|
|
201
|
+
'--tx-glyph-display': 'none', '--tx-glyph-bg': 'transparent', '--tx-glyph-fg': '#3ddc84',
|
|
202
|
+
},
|
|
203
|
+
/* Grey bevels on a teal desktop: each turn a window (CSS). */
|
|
204
|
+
retro: {
|
|
205
|
+
'--surface-1': '#ffffff', '--surface-2': '#c0c0c0',
|
|
206
|
+
'--text-primary': '#000000', '--text-secondary': '#333333', '--text-tertiary': '#333333', '--text-disabled': '#333333',
|
|
207
|
+
'--border-subtle': '#808080', '--border-default': '#808080', '--border-accent': '#808080',
|
|
208
|
+
'--accent': '#000080', '--accent-soft': '#ffffff',
|
|
209
|
+
'--danger': '#e00000', '--danger-soft': '#c0c0c0', '--success': '#008000', '--warning': '#806000',
|
|
210
|
+
'--tx-font': "Tahoma, Verdana, 'Segoe UI', sans-serif", '--tx-size': '12.5px', '--tx-line': '1.45',
|
|
211
|
+
'--tx-bg': '#008080', '--tx-fg': '#000000',
|
|
212
|
+
'--tx-user-bg': '#ffffff', '--tx-user-border': '0', '--tx-user-radius': '0', '--tx-user-pad': '6px 8px',
|
|
213
|
+
'--tx-user-align': 'stretch', '--tx-user-maxw': 'none', '--tx-user-style': 'normal',
|
|
214
|
+
'--tx-tool-bg': 'transparent', '--tx-tool-border': '0', '--tx-tool-radius': '0', '--tx-tool-pad': '2px 4px',
|
|
215
|
+
'--tx-glyph-display': 'inline-flex', '--tx-glyph-fg': '#ffffff', '--tx-glyph-radius': '0',
|
|
216
|
+
// Chips sit in the white answer box, not on the teal desktop.
|
|
217
|
+
'--surface-3': '#dcdcdc', '--text-on-accent': '#ffffff',
|
|
218
|
+
},
|
|
219
|
+
};
|
|
220
|
+
/* App tokens the transcript reads that a skin rarely wants to pick by hand
|
|
221
|
+
* (inline-code chips, warning tints, the Apply button). Derived from the skin's
|
|
222
|
+
* own colours so none of the app theme leaks in; a skin's map can still set
|
|
223
|
+
* any of them explicitly, and wins. */
|
|
224
|
+
const DERIVED = {
|
|
225
|
+
'--surface-3': 'color-mix(in srgb, var(--text-primary) 14%, var(--tx-bg))',
|
|
226
|
+
'--warning-soft': 'color-mix(in srgb, var(--warning) 16%, var(--tx-bg))',
|
|
227
|
+
'--text-on-accent': 'var(--tx-bg)',
|
|
228
|
+
'--grad-brand': 'var(--accent)',
|
|
229
|
+
'--brand-violet': 'var(--accent)',
|
|
230
|
+
};
|
|
231
|
+
/** Wraps a transcript and applies the skin to it and nothing else. `default`
|
|
232
|
+
* renders a plain wrapper: no tokens, no stylesheet, so today's look is
|
|
233
|
+
* untouched. */
|
|
234
|
+
export function TranscriptSkinRoot({ skin, children, style }) {
|
|
235
|
+
if (skin === 'default') {
|
|
236
|
+
return _jsx("div", { "data-tx-skin": "default", style: style, children: children });
|
|
237
|
+
}
|
|
238
|
+
const rootStyle = {
|
|
239
|
+
...DERIVED,
|
|
240
|
+
...TOKENS[skin],
|
|
241
|
+
background: 'var(--tx-bg)',
|
|
242
|
+
backgroundImage: 'var(--tx-bg-image, none)',
|
|
243
|
+
backgroundSize: 'var(--tx-bg-size, auto)',
|
|
244
|
+
color: 'var(--tx-fg)',
|
|
245
|
+
fontFamily: 'var(--tx-font)',
|
|
246
|
+
fontSize: 'var(--tx-size)',
|
|
247
|
+
lineHeight: 'var(--tx-line)',
|
|
248
|
+
padding: 'var(--tx-pad, 14px)',
|
|
249
|
+
borderRadius: 'var(--radius-md)',
|
|
250
|
+
position: 'relative',
|
|
251
|
+
...style,
|
|
252
|
+
};
|
|
253
|
+
return (_jsxs("div", { "data-tx-skin": skin, style: rootStyle, children: [_jsx("style", { children: SKIN_CSS[skin] }), children] }));
|
|
254
|
+
}
|
|
255
|
+
//# sourceMappingURL=transcriptSkin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transcriptSkin.js","sourceRoot":"","sources":["../transcriptSkin.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transcriptSkinCss.d.ts","sourceRoot":"","sources":["../transcriptSkinCss.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AA8DvD,eAAO,MAAM,cAAc,UAAU,CAAC;AAyEtC,eAAO,MAAM,QAAQ,EAAE,MAAM,CAAC,cAAc,EAAE,MAAM,CAYnD,CAAC"}
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
const T = (skin) => `[data-tx-skin="${skin}"]`;
|
|
2
|
+
const terminal = `
|
|
3
|
+
${T('terminal')} [data-tx-part="user"]::before { content: "you ~ % "; color: #5fb3f9; }
|
|
4
|
+
${T('terminal')} [data-tx-part="assistant"] { padding-left: 2ch; border-left: 1px solid #26303b; }
|
|
5
|
+
${T('terminal')} [data-tx-part="tool-name"] { color: #7ee787; }
|
|
6
|
+
${T('terminal')} [data-tx-status="error"] { --tx-glyph-fg: #ff7b72; }
|
|
7
|
+
${T('terminal')} [data-tx-status="error"] [data-tx-part="tool-name"] { color: #ff7b72; }
|
|
8
|
+
${T('terminal')} [data-tx-part="stats"]::before { content: "-- "; }
|
|
9
|
+
`;
|
|
10
|
+
const crt = `
|
|
11
|
+
@import url('https://fonts.googleapis.com/css2?family=VT323&display=swap');
|
|
12
|
+
${T('crt')} { text-shadow: 0 0 4px rgba(255,170,60,0.55), 0 0 12px rgba(255,140,20,0.25); }
|
|
13
|
+
${T('crt')}::after { content: ""; position: absolute; inset: 0; pointer-events: none; border-radius: inherit;
|
|
14
|
+
background: repeating-linear-gradient(to bottom, rgba(0,0,0,0.28) 0 1px, transparent 1px 3px);
|
|
15
|
+
box-shadow: inset 0 0 90px rgba(0,0,0,0.85); }
|
|
16
|
+
${T('crt')} [data-tx-part="user"]::before { content: "> "; }
|
|
17
|
+
${T('crt')} [data-tx-part="tool-name"] { text-transform: uppercase; }
|
|
18
|
+
${T('crt')} [data-tx-status="error"] { --tx-glyph-fg: #ff6a3d; }
|
|
19
|
+
${T('crt')} [data-tx-status="error"] [data-tx-part="tool-name"] { color: #ff6a3d; text-shadow: 0 0 6px rgba(255,90,40,0.7); }
|
|
20
|
+
${T('crt')} [data-tx-part="turn"]:last-child [data-tx-last]::after {
|
|
21
|
+
content: ""; display: inline-block; width: 0.6em; height: 1em; margin-left: 4px; vertical-align: -2px;
|
|
22
|
+
background: #ffb347; box-shadow: 0 0 8px rgba(255,170,60,0.7); animation: tx-crt-blink 1.1s steps(1) infinite; }
|
|
23
|
+
@keyframes tx-crt-blink { 50% { opacity: 0; } }
|
|
24
|
+
@media (prefers-reduced-motion: reduce) {
|
|
25
|
+
${T('crt')} [data-tx-part="turn"]:last-child [data-tx-last]::after { animation: none; }
|
|
26
|
+
}
|
|
27
|
+
`;
|
|
28
|
+
const minimal = `
|
|
29
|
+
${T('minimal')} [data-tx-status="error"] [data-tx-part="tool-name"] { color: #e0776b; }
|
|
30
|
+
${T('minimal')} [data-tx-part="tool-head"]:hover [data-tx-part="tool-name"] { color: #e9e6e1; }
|
|
31
|
+
`;
|
|
32
|
+
const paper = `
|
|
33
|
+
@import url('https://fonts.googleapis.com/css2?family=Source+Serif+4:ital,opsz,wght@0,8..60,400;0,8..60,600;1,8..60,400&display=swap');
|
|
34
|
+
${T('paper')} [data-tx-part="user"] { box-shadow: inset 2px 0 0 #b9ac98; }
|
|
35
|
+
${T('paper')} [data-tx-part="tool-name"] { font-variant: small-caps; letter-spacing: 0.03em; }
|
|
36
|
+
${T('paper')} [data-tx-part="tool-group"] { border-top: 1px solid #ddd3c2; border-bottom: 1px solid #ddd3c2; padding: 4px 0; }
|
|
37
|
+
${T('paper')} [data-tx-part="tool"] { box-shadow: inset 0 1px #ddd3c2, inset 0 -1px #ddd3c2; }
|
|
38
|
+
${T('paper')} [data-tx-status="error"] { --tx-glyph-fg: #a8412f; }
|
|
39
|
+
${T('paper')} [data-tx-status="error"] [data-tx-part="tool-name"] { color: #a8412f; }
|
|
40
|
+
`;
|
|
41
|
+
const blueprint = `
|
|
42
|
+
${T('blueprint')} [data-tx-part="user"]::before { content: "REQ "; color: #7fc4ff; font-size: 11px; letter-spacing: 0.1em; }
|
|
43
|
+
${T('blueprint')} [data-tx-part="tool"] { position: relative; margin-left: 18px; }
|
|
44
|
+
${T('blueprint')} [data-tx-part="tool"]::before { content: ""; position: absolute; left: -13px; top: 13px; width: 12px; border-top: 1px solid #7fc4ff; }
|
|
45
|
+
${T('blueprint')} [data-tx-part="tool"]::after { content: ""; position: absolute; left: -13px; top: -8px; bottom: -8px; border-left: 1px solid #7fc4ff; }
|
|
46
|
+
${T('blueprint')} [data-tx-part="tool-name"] { text-transform: uppercase; letter-spacing: 0.08em; }
|
|
47
|
+
${T('blueprint')} [data-tx-part="tool-body"] { border-top: 1px dashed rgba(159,208,255,0.5); }
|
|
48
|
+
${T('blueprint')} [data-tx-status="error"] { outline: 1px dashed #ff9f7a; outline-offset: -1px; --tx-glyph-fg: #ff9f7a; }
|
|
49
|
+
${T('blueprint')} [data-tx-status="error"] [data-tx-part="tool-name"] { color: #ff9f7a; }
|
|
50
|
+
${T('blueprint')} [data-tx-part="stats"] { letter-spacing: 0.06em; }
|
|
51
|
+
`;
|
|
52
|
+
/* Nicks are generic on purpose: the same code serves both apps, so the agent
|
|
53
|
+
* is "<agent>", never a product name. Exported so the Netsplit arrival effect's
|
|
54
|
+
* join line uses the very same nick. */
|
|
55
|
+
export const IRC_AGENT_NICK = 'agent';
|
|
56
|
+
const N = IRC_AGENT_NICK;
|
|
57
|
+
const irc = `
|
|
58
|
+
${T('irc')} [data-tx-part="user"]::before { content: "<you> "; color: #79c0ff; }
|
|
59
|
+
${T('irc')} [data-tx-part="assistant"]::before { content: "<${N}> "; float: left; margin-right: 1ch; color: #d2a8ff; }
|
|
60
|
+
${T('irc')} [data-tx-part="tool-name"] { color: #e3b341; font-style: italic; }
|
|
61
|
+
${T('irc')} [data-tx-part="tool-name"]::before { content: "* ${N} ran "; }
|
|
62
|
+
${T('irc')} [data-tx-status="running"] [data-tx-part="tool-name"]::before { content: "* ${N} is running "; }
|
|
63
|
+
${T('irc')} [data-tx-status="error"] [data-tx-part="tool-name"] { color: #ff7b72; }
|
|
64
|
+
${T('irc')} [data-tx-status="error"] [data-tx-part="tool-name"]::before { content: "* ${N} failed "; }
|
|
65
|
+
${T('irc')} [data-tx-part="stats"]::before { content: "-!- "; color: #3fb950; }
|
|
66
|
+
`;
|
|
67
|
+
const handheld = `
|
|
68
|
+
@import url('https://fonts.googleapis.com/css2?family=VT323&display=swap');
|
|
69
|
+
${T('handheld')} [data-tx-part="assistant"] { position: relative; margin: 3px; padding: 10px 12px 16px; background: #9bbc0f;
|
|
70
|
+
box-shadow: 0 0 0 3px #0f380f, inset 0 0 0 2px #9bbc0f, inset 0 0 0 4px #306230; }
|
|
71
|
+
${T('handheld')} [data-tx-part="turn"]:last-child [data-tx-last]::after { content: ""; position: absolute; right: 10px; bottom: 5px;
|
|
72
|
+
border: 5px solid transparent; border-top: 6px solid #0f380f; border-bottom: 0; animation: tx-hh-bob 1s steps(2) infinite; }
|
|
73
|
+
@keyframes tx-hh-bob { 50% { transform: translateY(2px); } }
|
|
74
|
+
@media (prefers-reduced-motion: reduce) {
|
|
75
|
+
${T('handheld')} [data-tx-part="turn"]:last-child [data-tx-last]::after { animation: none; }
|
|
76
|
+
}
|
|
77
|
+
${T('handheld')} [data-tx-status="error"] { --tx-glyph-bg: #9bbc0f; --tx-glyph-fg: #0f380f; }
|
|
78
|
+
${T('handheld')} [data-tx-status="error"] [data-tx-part="glyph"] { box-shadow: inset 0 0 0 2px #0f380f; }
|
|
79
|
+
${T('handheld')} [data-tx-status="error"] [data-tx-part="tool-name"] { text-decoration: underline wavy; }
|
|
80
|
+
`;
|
|
81
|
+
const receipt = `
|
|
82
|
+
@import url('https://fonts.googleapis.com/css2?family=Courier+Prime:wght@400;700&display=swap');
|
|
83
|
+
${T('receipt')} [data-tx-part="list"] { max-width: 40ch; margin: 0 auto; padding: 16px 16px 26px; background: #fbfaf6;
|
|
84
|
+
box-shadow: 0 1px 3px rgba(0,0,0,0.18);
|
|
85
|
+
-webkit-mask: linear-gradient(#000 0 0) top/100% calc(100% - 8px) no-repeat, conic-gradient(from -45deg at bottom, #0000, #000 1deg 89deg, #0000 90deg) bottom/12px 8px repeat-x;
|
|
86
|
+
mask: linear-gradient(#000 0 0) top/100% calc(100% - 8px) no-repeat, conic-gradient(from -45deg at bottom, #0000, #000 1deg 89deg, #0000 90deg) bottom/12px 8px repeat-x; }
|
|
87
|
+
${T('receipt')} [data-tx-part="list"]::before { content: "*** RECEIPT ***"; display: block; text-align: center; font-weight: 700; }
|
|
88
|
+
${T('receipt')} [data-tx-part="turn"] + [data-tx-part="turn"] { border-top: 1px dashed #999; padding-top: 12px; }
|
|
89
|
+
${T('receipt')} [data-tx-part="stats"] { font-weight: 700; border-top: 1px dashed #999; padding-top: 4px; }
|
|
90
|
+
${T('receipt')} [data-tx-part="stats"]::before { content: "TOTAL "; }
|
|
91
|
+
${T('receipt')} [data-tx-status="error"] [data-tx-part="tool-name"] { text-decoration: line-through; }
|
|
92
|
+
`;
|
|
93
|
+
/* T+ is the agent's working time (data-tx-elapsed, Transcript.tsx), not a
|
|
94
|
+
* wall clock. */
|
|
95
|
+
const mission = `
|
|
96
|
+
${T('mission')} [data-tx-part="list"]::before { content: "\\25CF LIVE MISSION LOG"; display: block; padding-bottom: 6px; border-bottom: 1px solid #22313f;
|
|
97
|
+
color: #3ddc84; font-size: 10.5px; letter-spacing: 0.14em; }
|
|
98
|
+
${T('mission')} [data-tx-part="turn"][data-tx-elapsed]::before { content: attr(data-tx-elapsed); color: #5d7488; font-size: 10.5px; letter-spacing: 0.08em; }
|
|
99
|
+
${T('mission')} [data-tx-part="user"]::before { content: "FLIGHT "; color: #ffb454; font-size: 10.5px; letter-spacing: 0.1em; }
|
|
100
|
+
${T('mission')} [data-tx-part="assistant"]::before { content: "CAPCOM "; float: left; margin-right: 1ch; color: #6cc4ff; font-size: 10.5px; letter-spacing: 0.1em; }
|
|
101
|
+
${T('mission')} [data-tx-part="tool-name"]::before { content: "GO"; display: inline-block; margin-right: 8px; padding: 0 6px; border: 1px solid #3ddc84;
|
|
102
|
+
border-radius: 3px; color: #3ddc84; font-size: 9.5px; letter-spacing: 0.1em; line-height: 1.6; }
|
|
103
|
+
${T('mission')} [data-tx-status="running"] [data-tx-part="tool-name"]::before { content: "HOLD"; border-color: #ffb454; color: #ffb454; }
|
|
104
|
+
${T('mission')} [data-tx-status="error"] [data-tx-part="tool-name"]::before { content: "NO-GO"; border-color: #ff5d5d; color: #ff5d5d; }
|
|
105
|
+
${T('mission')} [data-tx-part="stats"] { align-self: flex-start; padding: 4px 8px; border: 1px solid #22313f; background: #0f1821; }
|
|
106
|
+
${T('mission')} [data-tx-part="stats"]::before { content: "TELEMETRY "; color: #5d7488; }
|
|
107
|
+
`;
|
|
108
|
+
const BEVEL = 'inset -1px -1px #0a0a0a, inset 1px 1px #fff, inset -2px -2px #808080, inset 2px 2px #dfdfdf';
|
|
109
|
+
const SUNKEN = 'inset 1px 1px #808080, inset -1px -1px #fff, inset 2px 2px #0a0a0a, inset -2px -2px #dfdfdf';
|
|
110
|
+
const retro = `
|
|
111
|
+
${T('retro')} [data-tx-part="list"] { counter-reset: tx-win; }
|
|
112
|
+
${T('retro')} [data-tx-part="turn"] { counter-increment: tx-win; padding: 3px 3px 8px; background: #c0c0c0; box-shadow: ${BEVEL}; }
|
|
113
|
+
${T('retro')} [data-tx-part="turn"]::before { content: "Transcript - turn " counter(tx-win); display: block; padding: 3px 6px;
|
|
114
|
+
background: linear-gradient(90deg, #000080, #1084d0); color: #fff; font-weight: 700; font-size: 11.5px; }
|
|
115
|
+
${T('retro')} [data-tx-part="turn"] > [data-tx-part] { margin-left: 6px; margin-right: 6px; }
|
|
116
|
+
${T('retro')} [data-tx-part="user"] { box-shadow: ${SUNKEN}; }
|
|
117
|
+
${T('retro')} [data-tx-part="assistant"] { padding: 6px 8px; background: #fff; box-shadow: ${SUNKEN}; }
|
|
118
|
+
${T('retro')} [data-tx-part="stats"] { padding: 2px 6px; box-shadow: inset 1px 1px #808080, inset -1px -1px #fff; }
|
|
119
|
+
${T('retro')} [data-tx-status="error"] { padding: 3px; box-shadow: ${BEVEL}; }
|
|
120
|
+
${T('retro')} [data-tx-status="error"]::before { content: "Error"; display: block; padding: 2px 6px;
|
|
121
|
+
background: linear-gradient(90deg, #800000, #c04040); color: #fff; font-weight: 700; font-size: 11.5px; }
|
|
122
|
+
`;
|
|
123
|
+
export const SKIN_CSS = {
|
|
124
|
+
default: '',
|
|
125
|
+
terminal,
|
|
126
|
+
crt,
|
|
127
|
+
minimal,
|
|
128
|
+
paper,
|
|
129
|
+
blueprint,
|
|
130
|
+
irc,
|
|
131
|
+
handheld,
|
|
132
|
+
receipt,
|
|
133
|
+
mission,
|
|
134
|
+
retro,
|
|
135
|
+
};
|
|
136
|
+
//# sourceMappingURL=transcriptSkinCss.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transcriptSkinCss.js","sourceRoot":"","sources":["../transcriptSkinCss.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { ConversationTurn } from '@corenel/harness/conversation';
|
|
2
|
+
export interface UsageTotals {
|
|
3
|
+
inTok: number;
|
|
4
|
+
outTok: number;
|
|
5
|
+
/** Null when no turn measured it: unknown, not "none cached". */
|
|
6
|
+
cachedTok: number | null;
|
|
7
|
+
cost: number;
|
|
8
|
+
turns: number;
|
|
9
|
+
/** Model calls across the session; null when no turn recorded its count. */
|
|
10
|
+
calls: number | null;
|
|
11
|
+
}
|
|
12
|
+
export interface UsageRow {
|
|
13
|
+
id: string;
|
|
14
|
+
/** 1-based position among the turns that ran, so "Turn 4" means the fourth. */
|
|
15
|
+
index: number;
|
|
16
|
+
/** The turn's largest single request, or null when it was not measured. */
|
|
17
|
+
ctxTok: number | null;
|
|
18
|
+
calls: number | null;
|
|
19
|
+
inTok: number;
|
|
20
|
+
outTok: number;
|
|
21
|
+
cachedTok: number | null;
|
|
22
|
+
cost: number;
|
|
23
|
+
}
|
|
24
|
+
/** Session totals, the last `n` turns that ran (newest first), and the latest
|
|
25
|
+
* request's size -- the figure the gauge can be checked against. */
|
|
26
|
+
export declare function usageSummary(turns: readonly ConversationTurn[], n: number): {
|
|
27
|
+
session: UsageTotals;
|
|
28
|
+
recent: UsageRow[];
|
|
29
|
+
lastContext: number | null;
|
|
30
|
+
};
|
|
31
|
+
//# sourceMappingURL=usageSummary.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"usageSummary.d.ts","sourceRoot":"","sources":["../usageSummary.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAEtE,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,iEAAiE;IACjE,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,4EAA4E;IAC5E,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AAED,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,+EAA+E;IAC/E,KAAK,EAAE,MAAM,CAAC;IACd,2EAA2E;IAC3E,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,IAAI,EAAE,MAAM,CAAC;CACd;AAED;oEACoE;AACpE,wBAAgB,YAAY,CAAC,KAAK,EAAE,SAAS,gBAAgB,EAAE,EAAE,CAAC,EAAE,MAAM,GAAG;IAAE,OAAO,EAAE,WAAW,CAAC;IAAC,MAAM,EAAE,QAAQ,EAAE,CAAC;IAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAkCpJ"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/** Session totals, the last `n` turns that ran (newest first), and the latest
|
|
2
|
+
* request's size -- the figure the gauge can be checked against. */
|
|
3
|
+
export function usageSummary(turns, n) {
|
|
4
|
+
const ran = [];
|
|
5
|
+
for (const t of turns) {
|
|
6
|
+
if (!t.stats)
|
|
7
|
+
continue;
|
|
8
|
+
const calls = t.stats.calls ?? null;
|
|
9
|
+
ran.push({
|
|
10
|
+
id: t.id,
|
|
11
|
+
index: ran.length + 1,
|
|
12
|
+
// One call means the turn's billed `in` was its only request.
|
|
13
|
+
ctxTok: t.stats.ctxTok ?? (calls === 1 ? t.stats.inTok : null),
|
|
14
|
+
calls,
|
|
15
|
+
inTok: t.stats.inTok,
|
|
16
|
+
outTok: t.stats.outTok,
|
|
17
|
+
cachedTok: t.stats.cachedTok ?? null,
|
|
18
|
+
cost: t.stats.cost,
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
const sumKnown = (pick) => {
|
|
22
|
+
const known = ran.map(pick).filter((v) => v !== null);
|
|
23
|
+
return known.length ? known.reduce((a, v) => a + v, 0) : null;
|
|
24
|
+
};
|
|
25
|
+
const session = {
|
|
26
|
+
inTok: ran.reduce((a, r) => a + r.inTok, 0),
|
|
27
|
+
outTok: ran.reduce((a, r) => a + r.outTok, 0),
|
|
28
|
+
cachedTok: sumKnown((r) => r.cachedTok),
|
|
29
|
+
cost: ran.reduce((a, r) => a + r.cost, 0),
|
|
30
|
+
turns: ran.length,
|
|
31
|
+
calls: sumKnown((r) => r.calls),
|
|
32
|
+
};
|
|
33
|
+
return {
|
|
34
|
+
session,
|
|
35
|
+
recent: ran.slice(-Math.max(0, n)).reverse(),
|
|
36
|
+
lastContext: ran.length ? ran[ran.length - 1].ctxTok : null,
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=usageSummary.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"usageSummary.js","sourceRoot":"","sources":["../usageSummary.ts"],"names":[],"mappings":"AAuCA;oEACoE;AACpE,MAAM,UAAU,YAAY,CAAC,KAAkC,EAAE,CAAS;IACxE,MAAM,GAAG,GAAe,EAAE,CAAC;IAC3B,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,IAAI,CAAC,CAAC,CAAC,KAAK;YAAE,SAAS;QACvB,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,IAAI,IAAI,CAAC;QACpC,GAAG,CAAC,IAAI,CAAC;YACP,EAAE,EAAE,CAAC,CAAC,EAAE;YACR,KAAK,EAAE,GAAG,CAAC,MAAM,GAAG,CAAC;YACrB,8DAA8D;YAC9D,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;YAC9D,KAAK;YACL,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK;YACpB,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM;YACtB,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,SAAS,IAAI,IAAI;YACpC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI;SACnB,CAAC,CAAC;IACL,CAAC;IACD,MAAM,QAAQ,GAAG,CAAC,IAAoC,EAAiB,EAAE;QACvE,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;QACnE,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAChE,CAAC,CAAC;IACF,MAAM,OAAO,GAAgB;QAC3B,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;QAC3C,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;QAC7C,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;QACvC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QACzC,KAAK,EAAE,GAAG,CAAC,MAAM;QACjB,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;KAChC,CAAC;IACF,OAAO;QACL,OAAO;QACP,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE;QAC5C,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI;KAC5D,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"verificationView.d.ts","sourceRoot":"","sources":["../verificationView.tsx"],"names":[],"mappings":"AAMA,MAAM,MAAM,gBAAgB,GAAG,WAAW,GAAG,UAAU,CAAC;AAaxD,wBAAgB,mBAAmB,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC,EAAE,gBAAgB,KAAK,IAAI,CAAC,CAoBvF"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/* Turn verification summary — whether the "Observed: …" block under an agent
|
|
2
|
+
* turn starts collapsed (one line) or expanded (with the observed changes).
|
|
3
|
+
* A starting state only: each summary still toggles on its own. Persisted and
|
|
4
|
+
* synced across instances the same way as transcriptView.tsx. */
|
|
5
|
+
import { useCallback, useEffect, useState } from 'react';
|
|
6
|
+
const KEY = 'prompd.web.verificationView';
|
|
7
|
+
const EVENT = 'prompd:verificationView';
|
|
8
|
+
function read() {
|
|
9
|
+
try {
|
|
10
|
+
return localStorage.getItem(KEY) === 'expanded' ? 'expanded' : 'collapsed';
|
|
11
|
+
}
|
|
12
|
+
catch {
|
|
13
|
+
return 'collapsed';
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
export function useVerificationView() {
|
|
17
|
+
const [view, setViewState] = useState(read);
|
|
18
|
+
useEffect(() => {
|
|
19
|
+
const sync = () => setViewState(read());
|
|
20
|
+
window.addEventListener('storage', sync);
|
|
21
|
+
window.addEventListener(EVENT, sync);
|
|
22
|
+
return () => {
|
|
23
|
+
window.removeEventListener('storage', sync);
|
|
24
|
+
window.removeEventListener(EVENT, sync);
|
|
25
|
+
};
|
|
26
|
+
}, []);
|
|
27
|
+
const setView = useCallback((v) => {
|
|
28
|
+
setViewState(v);
|
|
29
|
+
try {
|
|
30
|
+
localStorage.setItem(KEY, v);
|
|
31
|
+
}
|
|
32
|
+
catch { /* storage unavailable: the choice lasts this session */ }
|
|
33
|
+
window.dispatchEvent(new CustomEvent(EVENT));
|
|
34
|
+
}, []);
|
|
35
|
+
return [view, setView];
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=verificationView.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"verificationView.js","sourceRoot":"","sources":["../verificationView.tsx"],"names":[],"mappings":"AAAA;;;iEAGiE;AACjE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAIzD,MAAM,GAAG,GAAG,6BAA6B,CAAC;AAC1C,MAAM,KAAK,GAAG,yBAAyB,CAAC;AAExC,SAAS,IAAI;IACX,IAAI,CAAC;QACH,OAAO,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC;IAC7E,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,WAAW,CAAC;IACrB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,mBAAmB;IACjC,MAAM,CAAC,IAAI,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAmB,IAAI,CAAC,CAAC;IAE9D,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,IAAI,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC;QACxC,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QACzC,MAAM,CAAC,gBAAgB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QACrC,OAAO,GAAG,EAAE;YACV,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;YAC5C,MAAM,CAAC,mBAAmB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAC1C,CAAC,CAAC;IACJ,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,OAAO,GAAG,WAAW,CAAC,CAAC,CAAmB,EAAE,EAAE;QAClD,YAAY,CAAC,CAAC,CAAC,CAAC;QAChB,IAAI,CAAC;YAAC,YAAY,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAAC,wDAAwD,CAAC,CAAC;QACxG,MAAM,CAAC,aAAa,CAAC,IAAI,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;IAC/C,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AACzB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@corenel/web-ui",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.9.0",
|
|
4
4
|
"license": "Elastic-2.0",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"description": "Corenel browser dock/agent UI — the presentational components (transcript, composer, rich content, tool render, context manager, etc.). The prompd app's AgentPanel/PolicyEditor compose these on top.",
|
|
@@ -15,10 +15,10 @@
|
|
|
15
15
|
}
|
|
16
16
|
},
|
|
17
17
|
"dependencies": {
|
|
18
|
-
"@corenel/
|
|
19
|
-
"@corenel/ui-kit": "0.
|
|
20
|
-
"@corenel/
|
|
21
|
-
"@corenel/
|
|
18
|
+
"@corenel/harness": "0.13.0",
|
|
19
|
+
"@corenel/ui-kit": "0.8.1",
|
|
20
|
+
"@corenel/tools-web": "0.8.0",
|
|
21
|
+
"@corenel/protocol": "0.12.0"
|
|
22
22
|
},
|
|
23
23
|
"peerDependencies": {
|
|
24
24
|
"react": "^18.3.1",
|