@corenel/editor 0.1.0 → 0.2.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.
@@ -7,16 +7,33 @@
7
7
  *
8
8
  * Wiring (host): in the Monaco onMount, call installInlineAssist(editor, monaco, ports).
9
9
  */
10
+ /** Inject the keyframes the panel uses (spinner, entrance) once per document. */
11
+ function ensureInlineAssistStyles() {
12
+ const ID = 'corenel-inline-assist-styles';
13
+ if (typeof document === 'undefined' || document.getElementById(ID))
14
+ return;
15
+ const s = document.createElement('style');
16
+ s.id = ID;
17
+ s.textContent =
18
+ '@keyframes corenel-ia-spin{to{transform:rotate(360deg)}}' +
19
+ // Emerge from the + button: small + low at the bottom-left origin, then scale/rise out.
20
+ '@keyframes corenel-ia-in{from{opacity:0;transform:translateY(12px) scale(.82)}60%{opacity:1}to{opacity:1;transform:none}}';
21
+ document.head.appendChild(s);
22
+ }
10
23
  /** Attach the inline assistant to a Monaco editor. Returns a dispose function. */
11
24
  export function installInlineAssist(editor, monaco, ports) {
12
25
  const name = ports.name || 'Corenel';
13
26
  const PREF = monaco.editor.ContentWidgetPositionPreference;
27
+ ensureInlineAssistStyles();
14
28
  let open = false;
15
29
  let streaming = false;
16
30
  let anchor = null;
17
31
  let insertPos = null;
18
32
  let abort = null;
19
33
  let docDown = null;
34
+ // The selection captured WHEN THE PANEL OPENS — reading it at submit time is too
35
+ // late (focus has moved to the input and the editor selection is gone).
36
+ let selectionAtOpen = null;
20
37
  // --- widget DOM ---
21
38
  const root = document.createElement('div');
22
39
  root.className = 'corenel-inline-assist';
@@ -33,6 +50,7 @@ export function installInlineAssist(editor, monaco, ports) {
33
50
  'color:#fff', 'font-size:11px', 'font-weight:700', 'letter-spacing:0.01em',
34
51
  'box-shadow:0 1px 6px color-mix(in srgb, var(--brand-blue,#3b82f6) 45%, transparent)',
35
52
  'opacity:0.35', // faint until hovered, so it stays out of the way
53
+ 'margin-left:5px', // nudge clear of the caret/glyph it anchors to
36
54
  'transition:background .12s,box-shadow .12s,opacity .12s',
37
55
  ].join(';');
38
56
  // Collapsed: just a (+). The label reveals on hover (set in the events below).
@@ -43,27 +61,108 @@ export function installInlineAssist(editor, monaco, ports) {
43
61
  pipLabel.textContent = `Ask ${name}`;
44
62
  pipLabel.style.cssText = 'display:none;color:#fff;white-space:nowrap;';
45
63
  pip.append(pipMark, pipLabel);
64
+ // Touch devices have no hover, so the faint collapsed pip is invisible + the 20px
65
+ // target is too small. On a coarse pointer, render it as a full-opacity labeled
66
+ // pill with a ~32px tap target from the start (the hover handlers below never fire).
67
+ const coarsePointer = typeof matchMedia !== 'undefined' && matchMedia('(pointer: coarse)').matches;
68
+ if (coarsePointer) {
69
+ pip.style.opacity = '1';
70
+ pip.style.width = 'auto';
71
+ pip.style.minHeight = '32px';
72
+ pip.style.padding = '0 12px 0 9px';
73
+ pipLabel.style.display = 'inline';
74
+ }
46
75
  const panel = document.createElement('div');
47
76
  panel.style.cssText = [
48
- 'display:none', 'flex-direction:column', 'gap:8px', 'width:340px', 'padding:10px',
49
- 'border-radius:10px', 'border:1px solid var(--border-default,#444)', 'background:var(--surface-1,#1e1e1e)',
50
- 'box-shadow:var(--shadow-3,0 8px 30px rgba(0,0,0,.4))',
77
+ 'display:none', 'flex-direction:column', 'gap:9px', 'width:360px', 'max-width:calc(100vw - 24px)', 'padding:11px 12px 12px',
78
+ 'box-sizing:border-box', 'border-radius:12px', 'border:1px solid var(--border-default,#444)',
79
+ 'background:linear-gradient(180deg, color-mix(in srgb, var(--brand-blue,#3b82f6) 6%, var(--surface-1,#1e1e1e)), var(--surface-1,#1e1e1e))',
80
+ 'box-shadow:0 14px 44px rgba(0,0,0,.45), 0 0 0 1px color-mix(in srgb, var(--brand-blue,#3b82f6) 18%, transparent)',
81
+ // Anchored above the line: its bottom-left corner sits at the cursor column (where
82
+ // the + pip was), so the entrance grows out of the + button rather than floating in.
83
+ 'transform-origin:bottom left',
84
+ // Nudge it down toward the cursor line so it reads as attached to the + (relative
85
+ // offset, not a transform, so it stacks with the drag transform + entrance anim).
86
+ 'position:relative', 'top:45px',
51
87
  ].join(';');
88
+ const ICON_X = '<svg width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round"><path d="M6 6l12 12M18 6L6 18"/></svg>';
89
+ const ICON_GRIP = '<svg width="13" height="13" viewBox="0 0 24 24" fill="currentColor"><circle cx="9" cy="6" r="1.4"/><circle cx="15" cy="6" r="1.4"/><circle cx="9" cy="12" r="1.4"/><circle cx="15" cy="12" r="1.4"/><circle cx="9" cy="18" r="1.4"/><circle cx="15" cy="18" r="1.4"/></svg>';
90
+ const ICON_SEND = '<svg width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round"><path d="M12 19V5M5 12l7-7 7 7"/></svg>';
91
+ const ICON_STOP = '<svg width="12" height="12" viewBox="0 0 24 24" fill="currentColor"><rect x="5" y="5" width="14" height="14" rx="2.5"/></svg>';
92
+ /** A small ghost icon button (close). */
93
+ const iconBtn = (svg, title) => {
94
+ const b = document.createElement('button');
95
+ b.type = 'button';
96
+ b.title = title;
97
+ b.innerHTML = svg;
98
+ b.style.cssText = 'display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;flex-shrink:0;border:0;border-radius:6px;background:transparent;color:var(--text-tertiary,#888);cursor:pointer;transition:background .1s,color .1s;';
99
+ b.onmouseenter = () => { b.style.background = 'var(--surface-2,#252525)'; b.style.color = 'var(--text-primary,#eee)'; };
100
+ b.onmouseleave = () => { b.style.background = 'transparent'; b.style.color = 'var(--text-tertiary,#888)'; };
101
+ return b;
102
+ };
103
+ // Header doubles as the DRAG HANDLE so the panel can be moved off text you're reading.
52
104
  const header = document.createElement('div');
53
- header.style.cssText = 'display:flex;align-items:center;gap:6px;color:var(--text-secondary,#bbb);font-size:11px;font-weight:700;';
54
- header.innerHTML = `${ports.brandSvg || '<span style="color:var(--brand-blue,#3b82f6)">✦</span>'}<span>Ask ${name}</span>`;
55
- const input = document.createElement('input');
56
- input.type = 'text';
105
+ header.style.cssText = 'display:flex;align-items:center;gap:7px;cursor:move;touch-action:none;user-select:none;color:var(--text-secondary,#bbb);font-size:11.5px;font-weight:700;';
106
+ const headTitle = document.createElement('div');
107
+ headTitle.style.cssText = 'display:flex;align-items:center;gap:6px;flex:1;min-width:0;';
108
+ headTitle.innerHTML = `${ports.brandSvg || '<span style="color:var(--brand-blue,#3b82f6);font-size:13px">✦</span>'}<span>Ask ${name}</span>`;
109
+ const grip = document.createElement('span');
110
+ grip.innerHTML = ICON_GRIP;
111
+ grip.style.cssText = 'display:inline-flex;color:var(--text-disabled,#666);';
112
+ grip.title = 'Drag to move';
113
+ const closeBtn = iconBtn(ICON_X, 'Close (Esc)');
114
+ closeBtn.onclick = () => { close(); editor.focus(); };
115
+ header.append(headTitle, grip, closeBtn);
116
+ // The composer ("chatbox") at the BOTTOM: a rounded container holding an
117
+ // auto-growing textarea + the send/stop button — the Composer's input language,
118
+ // reimplemented in vanilla DOM (the React Composer can't mount in a Monaco widget).
119
+ const chatbox = document.createElement('div');
120
+ chatbox.style.cssText = [
121
+ 'display:flex', 'align-items:flex-end', 'gap:7px', 'padding:6px 6px 6px 11px',
122
+ 'border-radius:11px', 'border:1px solid var(--border-default,#444)', 'background:var(--surface-2,#252525)',
123
+ 'transition:border-color .12s,box-shadow .12s',
124
+ ].join(';');
125
+ const input = document.createElement('textarea');
126
+ input.rows = 1;
57
127
  input.placeholder = `Ask ${name} to help you write…`;
58
128
  input.style.cssText = [
59
- 'width:100%', 'box-sizing:border-box', 'height:32px', 'padding:0 10px', 'border-radius:7px',
60
- 'border:1px solid var(--border-default,#444)', 'background:var(--surface-2,#252525)',
61
- 'color:var(--text-primary,#eee)', 'font-size:13px', 'font-family:inherit', 'outline:none',
129
+ 'flex:1', 'min-width:0', 'box-sizing:border-box', 'resize:none', 'border:0', 'outline:none', 'background:transparent',
130
+ 'color:var(--text-primary,#eee)', 'font-size:13px', 'font-family:inherit', 'line-height:1.45',
131
+ 'max-height:120px', 'overflow-y:auto', 'padding:6px 0',
132
+ ].join(';');
133
+ input.onfocus = () => { chatbox.style.borderColor = 'var(--brand-blue,#3b82f6)'; chatbox.style.boxShadow = '0 0 0 3px color-mix(in srgb,var(--brand-blue,#3b82f6) 16%,transparent)'; };
134
+ input.onblur = () => { chatbox.style.borderColor = 'var(--border-default,#444)'; chatbox.style.boxShadow = 'none'; };
135
+ // Grow with content (resting 1 line, up to the cap, then scroll).
136
+ const autoGrow = () => { input.style.height = 'auto'; input.style.height = `${Math.min(input.scrollHeight, 120)}px`; };
137
+ input.oninput = autoGrow;
138
+ const sendBtn = document.createElement('button');
139
+ sendBtn.type = 'button';
140
+ sendBtn.title = 'Send';
141
+ sendBtn.innerHTML = ICON_SEND;
142
+ sendBtn.style.cssText = [
143
+ 'display:inline-flex', 'align-items:center', 'justify-content:center', 'width:30px', 'height:30px', 'flex-shrink:0',
144
+ 'border:0', 'border-radius:8px', 'background:var(--grad-brand,var(--brand-blue,#3b82f6))', 'color:#fff', 'cursor:pointer',
145
+ 'box-shadow:0 1px 7px color-mix(in srgb,var(--brand-blue,#3b82f6) 40%,transparent)', 'transition:filter .12s',
62
146
  ].join(';');
147
+ sendBtn.onmouseenter = () => { sendBtn.style.filter = 'brightness(1.08)'; };
148
+ sendBtn.onmouseleave = () => { sendBtn.style.filter = 'none'; };
149
+ sendBtn.onclick = () => { if (streaming) {
150
+ abort?.abort();
151
+ }
152
+ else {
153
+ void ask(input.value);
154
+ } };
155
+ chatbox.append(input, sendBtn);
63
156
  const chips = document.createElement('div');
64
157
  chips.style.cssText = 'display:flex;flex-direction:column;gap:5px;';
158
+ // Working state: a spinner + text (the send button flips to a Stop square too).
65
159
  const status = document.createElement('div');
66
- status.style.cssText = 'display:none;align-items:center;gap:6px;color:var(--text-tertiary,#888);font-size:11px;';
160
+ status.style.cssText = 'display:none;align-items:center;gap:8px;color:var(--text-tertiary,#888);font-size:11.5px;';
161
+ const spinner = document.createElement('span');
162
+ spinner.style.cssText = 'width:12px;height:12px;flex-shrink:0;border-radius:50%;border:2px solid color-mix(in srgb,var(--brand-blue,#3b82f6) 28%,transparent);border-top-color:var(--brand-blue,#3b82f6);animation:corenel-ia-spin .7s linear infinite;';
163
+ const statusText = document.createElement('span');
164
+ statusText.style.cssText = 'min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;';
165
+ status.append(spinner, statusText);
67
166
  // Sign-in CTA shown when a use is blocked by the access gate (free limit reached).
68
167
  const signinBtn = document.createElement('button');
69
168
  signinBtn.type = 'button';
@@ -76,8 +175,37 @@ export function installInlineAssist(editor, monaco, ports) {
76
175
  signinBtn.onclick = () => { ports.signIn?.(); close(); };
77
176
  signinBtn.onmouseenter = () => { signinBtn.style.filter = 'brightness(1.1)'; };
78
177
  signinBtn.onmouseleave = () => { signinBtn.style.filter = 'none'; };
79
- panel.append(header, input, chips, status, signinBtn);
178
+ // Flipped layout: suggestions on top, the chatbox composer pinned to the bottom.
179
+ panel.append(header, chips, status, chatbox, signinBtn);
80
180
  root.append(pip, panel);
181
+ // --- drag (header handle) ---
182
+ let dragging = false;
183
+ const dragOffset = { x: 0, y: 0 };
184
+ let dragFrom = { x: 0, y: 0, ox: 0, oy: 0 };
185
+ header.onpointerdown = (e) => {
186
+ if (e.target.closest('button'))
187
+ return; // don't drag from the close button
188
+ dragging = true;
189
+ dragFrom = { x: e.clientX, y: e.clientY, ox: dragOffset.x, oy: dragOffset.y };
190
+ try {
191
+ header.setPointerCapture(e.pointerId);
192
+ }
193
+ catch { /* older engines */ }
194
+ e.preventDefault();
195
+ };
196
+ header.onpointermove = (e) => {
197
+ if (!dragging)
198
+ return;
199
+ dragOffset.x = dragFrom.ox + (e.clientX - dragFrom.x);
200
+ dragOffset.y = dragFrom.oy + (e.clientY - dragFrom.y);
201
+ panel.style.transform = `translate(${dragOffset.x}px, ${dragOffset.y}px)`;
202
+ };
203
+ const endDrag = (e) => { dragging = false; try {
204
+ header.releasePointerCapture(e.pointerId);
205
+ }
206
+ catch { /* ignore */ } };
207
+ header.onpointerup = endDrag;
208
+ header.onpointercancel = endDrag;
81
209
  const chipStyle = [
82
210
  'text-align:left', 'padding:6px 9px', 'border-radius:7px', 'cursor:pointer',
83
211
  'border:1px solid var(--border-subtle,#3a3a3a)', 'background:var(--surface-2,#252525)',
@@ -88,7 +216,12 @@ export function installInlineAssist(editor, monaco, ports) {
88
216
  const CHIP_BG_HOVER = 'color-mix(in srgb, var(--brand-blue,#3b82f6) 14%, var(--surface-2,#252525))';
89
217
  const CHIP_BORDER = 'var(--border-subtle,#3a3a3a)';
90
218
  const CHIP_BORDER_HOVER = 'color-mix(in srgb, var(--brand-blue,#3b82f6) 45%, var(--border-subtle,#3a3a3a))';
219
+ // How far the panel is pulled toward the cursor line (so it reads as attached to
220
+ // the + pip). Applied in the direction Monaco actually placed it (see afterRender).
221
+ const PANEL_OFFSET = 45;
91
222
  const widget = {
223
+ // Overflow the editor so the offset panel isn't clipped at a border.
224
+ allowEditorOverflow: true,
92
225
  getId: () => 'corenel.inlineAssist',
93
226
  getDomNode: () => root,
94
227
  getPosition: () => {
@@ -98,18 +231,40 @@ export function installInlineAssist(editor, monaco, ports) {
98
231
  // Collapsed pip sits inline AT the cursor (EXACT); the open panel floats above.
99
232
  return { position: p, preference: open ? [PREF.ABOVE, PREF.BELOW] : [PREF.EXACT, PREF.ABOVE] };
100
233
  },
234
+ // Monaco flips the panel below the line (near the top border) and clamps it at the
235
+ // edges — pull it toward the cursor in WHICHEVER direction it landed, and grow from
236
+ // the matching corner, so the offset is never applied the wrong way.
237
+ afterRender: (pos) => {
238
+ // Null = Monaco didn't place it this cycle — keep the current (reset-on-open)
239
+ // offset rather than forcing the above-case, which would be wrong for a flip.
240
+ if (!open || pos == null)
241
+ return;
242
+ const below = pos === PREF.BELOW;
243
+ panel.style.top = `${below ? -PANEL_OFFSET : PANEL_OFFSET}px`;
244
+ panel.style.transformOrigin = below ? 'top left' : 'bottom left';
245
+ },
101
246
  };
102
247
  // --- visibility (pip) ---
103
248
  function lineIsBlank(line) {
104
249
  const model = editor.getModel();
105
250
  return !model || model.getLineContent(line).trim() === '';
106
251
  }
252
+ function hasSelection() {
253
+ const s = editor.getSelection();
254
+ return !!s && !(s.startLineNumber === s.endLineNumber && s.startColumn === s.endColumn);
255
+ }
107
256
  function pipShouldShow() {
108
257
  if (open)
109
258
  return false;
110
259
  const mode = ports.getMode();
111
260
  if (mode === 'hide')
112
261
  return false;
262
+ // Never show the pip while a selection is active. As a content widget anchored at
263
+ // the caret, its appearance/layout races the first selection-replacing keystroke
264
+ // and swallows it. Editing a selection stays available via Ctrl+I, which snapshots
265
+ // the selection when the panel opens.
266
+ if (hasSelection())
267
+ return false;
113
268
  const p = editor.getPosition();
114
269
  if (!p)
115
270
  return false;
@@ -122,9 +277,15 @@ export function installInlineAssist(editor, monaco, ports) {
122
277
  }
123
278
  // --- ask + insert ---
124
279
  function setStatus(text, busy) {
125
- status.style.display = text ? 'flex' : 'none';
126
- status.textContent = text;
127
280
  streaming = busy;
281
+ statusText.textContent = text;
282
+ status.style.display = text ? 'flex' : 'none';
283
+ spinner.style.display = busy ? 'inline-block' : 'none';
284
+ // The send button becomes a Stop button while a request is in flight, and the
285
+ // chips step aside so the working state reads clearly.
286
+ sendBtn.innerHTML = busy ? ICON_STOP : ICON_SEND;
287
+ sendBtn.title = busy ? 'Stop' : 'Send';
288
+ chips.style.display = busy ? 'none' : 'flex';
128
289
  }
129
290
  function insertDelta(text) {
130
291
  if (!insertPos)
@@ -148,6 +309,9 @@ export function installInlineAssist(editor, monaco, ports) {
148
309
  const start = anchor || editor.getPosition();
149
310
  if (!model || !start || !request.trim() || streaming)
150
311
  return;
312
+ // Claim the slot SYNCHRONOUSLY so a second send during the async access check can't
313
+ // re-enter and start a concurrent run (orphaning the first's abort + double-writing).
314
+ streaming = true;
151
315
  // Access gate (a feature guard — free-quota then sign-in). Block before spending.
152
316
  const access = await ports.checkAccess?.();
153
317
  if (access && !access.allowed) {
@@ -155,19 +319,42 @@ export function installInlineAssist(editor, monaco, ports) {
155
319
  return;
156
320
  }
157
321
  signinBtn.style.display = 'none';
158
- insertPos = { ...start };
322
+ // A non-empty selection (when enabled) is the span being edited. We leave it in
323
+ // place while the model works and pass it as context; only once the FULL reply is
324
+ // back do we swap the span for it in ONE atomic, undoable edit. So a bad reply,
325
+ // an error, or a cancel never corrupts the original — and the model produces the
326
+ // complete replacement rather than us blanking the text and rebuilding it live.
327
+ const selRange = (ports.includeSelection?.() !== false && selectionAtOpen
328
+ && !(selectionAtOpen.startLineNumber === selectionAtOpen.endLineNumber && selectionAtOpen.startColumn === selectionAtOpen.endColumn))
329
+ ? selectionAtOpen : null;
330
+ const selection = selRange ? model.getValueInRange(selRange) : '';
331
+ // Cursor asks stream inline (insertPos drives insertDelta); selection asks buffer
332
+ // and replace at the end (no insertPos, so deltas don't write to the document).
333
+ insertPos = selRange ? null : { ...start };
159
334
  abort = new AbortController();
160
335
  setStatus(`${name} is writing…`, true);
161
336
  input.disabled = true;
162
337
  try {
163
- await ports.ask({ request, docText: model.getValue(), line: start.lineNumber, column: start.column }, abort.signal, (d) => insertDelta(d));
164
- if (insertPos) {
338
+ const full = await ports.ask({ request, docText: model.getValue(), line: start.lineNumber, column: start.column, selection }, abort.signal, (d) => { if (!selRange)
339
+ insertDelta(d); });
340
+ if (selRange) {
341
+ if (full.trim()) {
342
+ editor.executeEdits('corenel-inline', [{ range: selRange, text: full, forceMoveMarkers: true }]);
343
+ const parts = full.split('\n');
344
+ editor.setPosition(parts.length === 1
345
+ ? { lineNumber: selRange.startLineNumber, column: selRange.startColumn + full.length }
346
+ : { lineNumber: selRange.startLineNumber + parts.length - 1, column: parts[parts.length - 1].length + 1 });
347
+ }
348
+ }
349
+ else if (insertPos) {
165
350
  editor.setPosition(insertPos);
166
351
  }
167
352
  close();
168
353
  editor.focus();
169
354
  }
170
355
  catch (e) {
356
+ // Selection asks only edit on success, so the original is untouched here. Cursor
357
+ // asks keep whatever already streamed in (unchanged behavior).
171
358
  setStatus(abort?.signal.aborted ? 'Stopped.' : `Error: ${e?.message || e}`, false);
172
359
  }
173
360
  finally {
@@ -196,19 +383,37 @@ export function installInlineAssist(editor, monaco, ports) {
196
383
  anchor = editor.getPosition();
197
384
  if (!anchor)
198
385
  return;
386
+ // Snapshot the selection now, before focus leaves the editor for the panel input.
387
+ selectionAtOpen = editor.getSelection();
199
388
  open = true;
200
389
  input.value = '';
390
+ input.style.height = 'auto'; // reset the auto-grown textarea to its resting height
201
391
  setStatus('', false);
202
392
  signinBtn.style.display = 'none';
393
+ // Reset any prior drag offset + placement offset (a previous open may have been
394
+ // flipped BELOW, leaving top:-45), then play the entrance each time it opens.
395
+ dragOffset.x = 0;
396
+ dragOffset.y = 0;
397
+ panel.style.transform = '';
398
+ panel.style.top = `${PANEL_OFFSET}px`;
399
+ panel.style.transformOrigin = 'bottom left';
400
+ // No fill-mode: after the entrance, transform reverts to the inline value so the
401
+ // drag handler can move the panel (a `forwards`/`both` fill would pin it). The
402
+ // ease-out curve makes it shoot out of the + and settle.
403
+ panel.style.animation = 'corenel-ia-in .2s cubic-bezier(.16,1,.3,1)';
203
404
  rebuildChips();
204
405
  render();
406
+ // Focus synchronously inside the opening gesture so iOS raises the keyboard
407
+ // (a deferred focus loses the user-gesture and the keyboard never shows); the
408
+ // timeout is a desktop fallback if the sync focus doesn't take before layout.
409
+ input.focus();
205
410
  setTimeout(() => input.focus(), 0);
206
411
  // Click anywhere outside the panel dismisses it (capture phase so it fires
207
412
  // before other handlers). The opening click already passed, so this won't
208
413
  // self-close.
209
414
  docDown = (e) => { if (!root.contains(e.target))
210
415
  close(); };
211
- document.addEventListener('mousedown', docDown, true);
416
+ document.addEventListener('pointerdown', docDown, true);
212
417
  }
213
418
  function close() {
214
419
  open = false;
@@ -217,15 +422,25 @@ export function installInlineAssist(editor, monaco, ports) {
217
422
  }
218
423
  setStatus('', false);
219
424
  anchor = null;
425
+ selectionAtOpen = null;
426
+ panel.style.transform = '';
427
+ panel.style.animation = '';
220
428
  if (docDown) {
221
- document.removeEventListener('mousedown', docDown, true);
429
+ document.removeEventListener('pointerdown', docDown, true);
222
430
  docDown = null;
223
431
  }
224
432
  render();
225
433
  }
226
434
  // --- events ---
227
- pip.onmousedown = (e) => { e.preventDefault(); };
228
- pip.onclick = () => openPanel();
435
+ // Open on pointerup so a touch TAP works (not just a mouse click); pointerdown
436
+ // claims the gesture (preventDefault + stopPropagation) so Monaco's editor touch
437
+ // layer doesn't scroll/blur and swallow it. Enter/Space open it for keyboard users.
438
+ pip.onpointerdown = (e) => { e.preventDefault(); e.stopPropagation(); };
439
+ pip.onpointerup = (e) => { e.preventDefault(); e.stopPropagation(); openPanel(); };
440
+ pip.onkeydown = (e) => { if (e.key === 'Enter' || e.key === ' ') {
441
+ e.preventDefault();
442
+ openPanel();
443
+ } };
229
444
  pip.onmouseenter = () => {
230
445
  pipLabel.style.display = 'inline';
231
446
  pip.style.opacity = '1';
@@ -235,6 +450,8 @@ export function installInlineAssist(editor, monaco, ports) {
235
450
  editor.layoutContentWidget(widget);
236
451
  };
237
452
  pip.onmouseleave = () => {
453
+ if (coarsePointer)
454
+ return; // touch: stay a full-opacity labeled pill
238
455
  pipLabel.style.display = 'none';
239
456
  pip.style.opacity = '0.35';
240
457
  pip.style.width = '20px';
@@ -243,8 +460,9 @@ export function installInlineAssist(editor, monaco, ports) {
243
460
  editor.layoutContentWidget(widget);
244
461
  };
245
462
  input.onkeydown = (e) => {
246
- e.stopPropagation(); // keep Monaco shortcuts out of the input
247
- if (e.key === 'Enter') {
463
+ e.stopPropagation(); // keep Monaco shortcuts out of the textarea
464
+ // Enter sends; Shift/Cmd/Ctrl+Enter inserts a newline (a real chatbox).
465
+ if (e.key === 'Enter' && !e.shiftKey && !e.metaKey && !e.ctrlKey) {
248
466
  e.preventDefault();
249
467
  void ask(input.value);
250
468
  }
@@ -263,7 +481,7 @@ export function installInlineAssist(editor, monaco, ports) {
263
481
  return () => {
264
482
  abort?.abort();
265
483
  if (docDown)
266
- document.removeEventListener('mousedown', docDown, true);
484
+ document.removeEventListener('pointerdown', docDown, true);
267
485
  d1.dispose();
268
486
  d2.dispose();
269
487
  editor.removeContentWidget(widget);
@@ -1 +1 @@
1
- {"version":3,"file":"inlineAssist.js","sourceRoot":"","sources":["../inlineAssist.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"inlineAssist.js","sourceRoot":"","sources":["../inlineAssist.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AA0FH,iFAAiF;AACjF,SAAS,wBAAwB;IAC/B,MAAM,EAAE,GAAG,8BAA8B,CAAC;IAC1C,IAAI,OAAO,QAAQ,KAAK,WAAW,IAAI,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;QAAE,OAAO;IAC3E,MAAM,CAAC,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IAC1C,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC;IACV,CAAC,CAAC,WAAW;QACX,0DAA0D;YAC1D,wFAAwF;YACxF,2HAA2H,CAAC;IAC9H,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;AAC/B,CAAC;AAED,kFAAkF;AAClF,MAAM,UAAU,mBAAmB,CAAC,MAAkB,EAAE,MAAkB,EAAE,KAAwB;IAClG,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,IAAI,SAAS,CAAC;IACrC,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,+BAA+B,CAAC;IAC3D,wBAAwB,EAAE,CAAC;IAE3B,IAAI,IAAI,GAAG,KAAK,CAAC;IACjB,IAAI,SAAS,GAAG,KAAK,CAAC;IACtB,IAAI,MAAM,GAAe,IAAI,CAAC;IAC9B,IAAI,SAAS,GAAe,IAAI,CAAC;IACjC,IAAI,KAAK,GAA2B,IAAI,CAAC;IACzC,IAAI,OAAO,GAAgC,IAAI,CAAC;IAChD,iFAAiF;IACjF,wEAAwE;IACxE,IAAI,eAAe,GAA0B,IAAI,CAAC;IAElD,qBAAqB;IACrB,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAC3C,IAAI,CAAC,SAAS,GAAG,uBAAuB,CAAC;IACzC,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,sEAAsE,CAAC;IAE5F,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;IAC7C,GAAG,CAAC,IAAI,GAAG,QAAQ,CAAC;IACpB,GAAG,CAAC,KAAK,GAAG,OAAO,IAAI,WAAW,CAAC;IACnC,0EAA0E;IAC1E,GAAG,CAAC,KAAK,CAAC,OAAO,GAAG;QAClB,qBAAqB,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,SAAS;QAChF,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,uBAAuB;QAC1G,0EAA0E;QAC1E,sCAAsC;QACtC,YAAY,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,uBAAuB;QAC1E,qFAAqF;QACrF,cAAc,EAAE,kDAAkD;QAClE,iBAAiB,EAAE,+CAA+C;QAClE,yDAAyD;KAC1D,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACZ,+EAA+E;IAC/E,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IAC/C,OAAO,CAAC,SAAS,GAAG,KAAK,CAAC,QAAQ,IAAI,GAAG,CAAC;IAC1C,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,iGAAiG,CAAC;IAC1H,MAAM,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IAChD,QAAQ,CAAC,WAAW,GAAG,OAAO,IAAI,EAAE,CAAC;IACrC,QAAQ,CAAC,KAAK,CAAC,OAAO,GAAG,6CAA6C,CAAC;IACvE,GAAG,CAAC,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAE9B,kFAAkF;IAClF,gFAAgF;IAChF,qFAAqF;IACrF,MAAM,aAAa,GAAG,OAAO,UAAU,KAAK,WAAW,IAAI,UAAU,CAAC,mBAAmB,CAAC,CAAC,OAAO,CAAC;IACnG,IAAI,aAAa,EAAE,CAAC;QAClB,GAAG,CAAC,KAAK,CAAC,OAAO,GAAG,GAAG,CAAC;QACxB,GAAG,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC;QACzB,GAAG,CAAC,KAAK,CAAC,SAAS,GAAG,MAAM,CAAC;QAC7B,GAAG,CAAC,KAAK,CAAC,OAAO,GAAG,cAAc,CAAC;QACnC,QAAQ,CAAC,KAAK,CAAC,OAAO,GAAG,QAAQ,CAAC;IACpC,CAAC;IAED,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAC5C,KAAK,CAAC,KAAK,CAAC,OAAO,GAAG;QACpB,cAAc,EAAE,uBAAuB,EAAE,SAAS,EAAE,aAAa,EAAE,8BAA8B,EAAE,wBAAwB;QAC3H,uBAAuB,EAAE,oBAAoB,EAAE,6CAA6C;QAC5F,0IAA0I;QAC1I,kHAAkH;QAClH,mFAAmF;QACnF,qFAAqF;QACrF,8BAA8B;QAC9B,kFAAkF;QAClF,kFAAkF;QAClF,mBAAmB,EAAE,UAAU;KAChC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAEZ,MAAM,MAAM,GAAG,oKAAoK,CAAC;IACpL,MAAM,SAAS,GAAG,6QAA6Q,CAAC;IAChS,MAAM,SAAS,GAAG,6LAA6L,CAAC;IAChN,MAAM,SAAS,GAAG,+HAA+H,CAAC;IAElJ,yCAAyC;IACzC,MAAM,OAAO,GAAG,CAAC,GAAW,EAAE,KAAa,EAAqB,EAAE;QAChE,MAAM,CAAC,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QAC3C,CAAC,CAAC,IAAI,GAAG,QAAQ,CAAC;QAAC,CAAC,CAAC,KAAK,GAAG,KAAK,CAAC;QAAC,CAAC,CAAC,SAAS,GAAG,GAAG,CAAC;QACtD,CAAC,CAAC,KAAK,CAAC,OAAO,GAAG,0OAA0O,CAAC;QAC7P,CAAC,CAAC,YAAY,GAAG,GAAG,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,UAAU,GAAG,0BAA0B,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,GAAG,0BAA0B,CAAC,CAAC,CAAC,CAAC;QACxH,CAAC,CAAC,YAAY,GAAG,GAAG,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,UAAU,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,GAAG,2BAA2B,CAAC,CAAC,CAAC,CAAC;QAC5G,OAAO,CAAC,CAAC;IACX,CAAC,CAAC;IAEF,uFAAuF;IACvF,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAC7C,MAAM,CAAC,KAAK,CAAC,OAAO,GAAG,2JAA2J,CAAC;IACnL,MAAM,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAChD,SAAS,CAAC,KAAK,CAAC,OAAO,GAAG,6DAA6D,CAAC;IACxF,SAAS,CAAC,SAAS,GAAG,GAAG,KAAK,CAAC,QAAQ,IAAI,uEAAuE,aAAa,IAAI,SAAS,CAAC;IAC7I,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IAC5C,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC3B,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,sDAAsD,CAAC;IAC5E,IAAI,CAAC,KAAK,GAAG,cAAc,CAAC;IAC5B,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IAChD,QAAQ,CAAC,OAAO,GAAG,GAAG,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;IACtD,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;IAEzC,yEAAyE;IACzE,gFAAgF;IAChF,oFAAoF;IACpF,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAC9C,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG;QACtB,cAAc,EAAE,sBAAsB,EAAE,SAAS,EAAE,0BAA0B;QAC7E,oBAAoB,EAAE,6CAA6C,EAAE,qCAAqC;QAC1G,8CAA8C;KAC/C,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACZ,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;IACjD,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC;IACf,KAAK,CAAC,WAAW,GAAG,OAAO,IAAI,qBAAqB,CAAC;IACrD,KAAK,CAAC,KAAK,CAAC,OAAO,GAAG;QACpB,QAAQ,EAAE,aAAa,EAAE,uBAAuB,EAAE,aAAa,EAAE,UAAU,EAAE,cAAc,EAAE,wBAAwB;QACrH,gCAAgC,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,kBAAkB;QAC7F,kBAAkB,EAAE,iBAAiB,EAAE,eAAe;KACvD,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACZ,KAAK,CAAC,OAAO,GAAG,GAAG,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,WAAW,GAAG,2BAA2B,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,GAAG,wEAAwE,CAAC,CAAC,CAAC,CAAC;IACvL,KAAK,CAAC,MAAM,GAAG,GAAG,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,WAAW,GAAG,4BAA4B,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IACrH,kEAAkE;IAClE,MAAM,QAAQ,GAAG,GAAG,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,YAAY,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACvH,KAAK,CAAC,OAAO,GAAG,QAAQ,CAAC;IACzB,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;IACjD,OAAO,CAAC,IAAI,GAAG,QAAQ,CAAC;IAAC,OAAO,CAAC,KAAK,GAAG,MAAM,CAAC;IAAC,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC;IAC/E,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG;QACtB,qBAAqB,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,YAAY,EAAE,aAAa,EAAE,eAAe;QACnH,UAAU,EAAE,mBAAmB,EAAE,wDAAwD,EAAE,YAAY,EAAE,gBAAgB;QACzH,mFAAmF,EAAE,wBAAwB;KAC9G,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACZ,OAAO,CAAC,YAAY,GAAG,GAAG,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,kBAAkB,CAAC,CAAC,CAAC,CAAC;IAC5E,OAAO,CAAC,YAAY,GAAG,GAAG,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IAChE,OAAO,CAAC,OAAO,GAAG,GAAG,EAAE,GAAG,IAAI,SAAS,EAAE,CAAC;QAAC,KAAK,EAAE,KAAK,EAAE,CAAC;IAAC,CAAC;SAAM,CAAC;QAAC,KAAK,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAAC,CAAC,CAAC,CAAC,CAAC;IAC/F,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAE/B,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAC5C,KAAK,CAAC,KAAK,CAAC,OAAO,GAAG,6CAA6C,CAAC;IAEpE,gFAAgF;IAChF,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAC7C,MAAM,CAAC,KAAK,CAAC,OAAO,GAAG,2FAA2F,CAAC;IACnH,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IAC/C,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,gOAAgO,CAAC;IACzP,MAAM,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IAClD,UAAU,CAAC,KAAK,CAAC,OAAO,GAAG,wEAAwE,CAAC;IACpG,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IAEnC,mFAAmF;IACnF,MAAM,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;IACnD,SAAS,CAAC,IAAI,GAAG,QAAQ,CAAC;IAC1B,SAAS,CAAC,WAAW,GAAG,SAAS,CAAC;IAClC,SAAS,CAAC,KAAK,CAAC,OAAO,GAAG;QACxB,cAAc,EAAE,uBAAuB,EAAE,aAAa,EAAE,gBAAgB,EAAE,UAAU,EAAE,mBAAmB;QACzG,wDAAwD,EAAE,YAAY,EAAE,gBAAgB,EAAE,iBAAiB;QAC3G,qBAAqB,EAAE,gBAAgB,EAAE,uBAAuB;KACjE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACZ,SAAS,CAAC,OAAO,GAAG,GAAG,EAAE,GAAG,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;IACzD,SAAS,CAAC,YAAY,GAAG,GAAG,EAAE,GAAG,SAAS,CAAC,KAAK,CAAC,MAAM,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAC;IAC/E,SAAS,CAAC,YAAY,GAAG,GAAG,EAAE,GAAG,SAAS,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IAEpE,iFAAiF;IACjF,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;IACxD,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAExB,+BAA+B;IAC/B,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,MAAM,UAAU,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;IAClC,IAAI,QAAQ,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;IAC5C,MAAM,CAAC,aAAa,GAAG,CAAC,CAAC,EAAE,EAAE;QAC3B,IAAK,CAAC,CAAC,MAAsB,CAAC,OAAO,CAAC,QAAQ,CAAC;YAAE,OAAO,CAAC,mCAAmC;QAC5F,QAAQ,GAAG,IAAI,CAAC;QAChB,QAAQ,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,EAAE,EAAE,UAAU,CAAC,CAAC,EAAE,EAAE,EAAE,UAAU,CAAC,CAAC,EAAE,CAAC;QAC9E,IAAI,CAAC;YAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAAC,mBAAmB,CAAC,CAAC;QAC5E,CAAC,CAAC,cAAc,EAAE,CAAC;IACrB,CAAC,CAAC;IACF,MAAM,CAAC,aAAa,GAAG,CAAC,CAAC,EAAE,EAAE;QAC3B,IAAI,CAAC,QAAQ;YAAE,OAAO;QACtB,UAAU,CAAC,CAAC,GAAG,QAAQ,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QACtD,UAAU,CAAC,CAAC,GAAG,QAAQ,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QACtD,KAAK,CAAC,KAAK,CAAC,SAAS,GAAG,aAAa,UAAU,CAAC,CAAC,OAAO,UAAU,CAAC,CAAC,KAAK,CAAC;IAC5E,CAAC,CAAC;IACF,MAAM,OAAO,GAAG,CAAC,CAAe,EAAE,EAAE,GAAG,QAAQ,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC;QAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;IACrI,MAAM,CAAC,WAAW,GAAG,OAAO,CAAC;IAC7B,MAAM,CAAC,eAAe,GAAG,OAAO,CAAC;IAEjC,MAAM,SAAS,GAAG;QAChB,iBAAiB,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,gBAAgB;QAC3E,+CAA+C,EAAE,qCAAqC;QACtF,kCAAkC,EAAE,gBAAgB,EAAE,qBAAqB;QAC3E,sDAAsD;KACvD,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACZ,MAAM,OAAO,GAAG,0BAA0B,CAAC;IAC3C,MAAM,aAAa,GAAG,6EAA6E,CAAC;IACpG,MAAM,WAAW,GAAG,8BAA8B,CAAC;IACnD,MAAM,iBAAiB,GAAG,iFAAiF,CAAC;IAE5G,iFAAiF;IACjF,oFAAoF;IACpF,MAAM,YAAY,GAAG,EAAE,CAAC;IACxB,MAAM,MAAM,GAAsB;QAChC,qEAAqE;QACrE,mBAAmB,EAAE,IAAI;QACzB,KAAK,EAAE,GAAG,EAAE,CAAC,sBAAsB;QACnC,UAAU,EAAE,GAAG,EAAE,CAAC,IAAI;QACtB,WAAW,EAAE,GAAG,EAAE;YAChB,MAAM,CAAC,GAAG,IAAI,IAAI,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;YACzD,IAAI,CAAC,CAAC;gBAAE,OAAO,IAAI,CAAC;YACpB,gFAAgF;YAChF,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACjG,CAAC;QACD,mFAAmF;QACnF,oFAAoF;QACpF,qEAAqE;QACrE,WAAW,EAAE,CAAC,GAAG,EAAE,EAAE;YACnB,8EAA8E;YAC9E,8EAA8E;YAC9E,IAAI,CAAC,IAAI,IAAI,GAAG,IAAI,IAAI;gBAAE,OAAO;YACjC,MAAM,KAAK,GAAG,GAAG,KAAK,IAAI,CAAC,KAAK,CAAC;YACjC,KAAK,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,IAAI,CAAC;YAC9D,KAAK,CAAC,KAAK,CAAC,eAAe,GAAG,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,aAAa,CAAC;QACnE,CAAC;KACF,CAAC;IAEF,2BAA2B;IAC3B,SAAS,WAAW,CAAC,IAAY;QAC/B,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;QAChC,OAAO,CAAC,KAAK,IAAI,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC;IAC5D,CAAC;IACD,SAAS,YAAY;QACnB,MAAM,CAAC,GAAG,MAAM,CAAC,YAAY,EAAE,CAAC;QAChC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,eAAe,KAAK,CAAC,CAAC,aAAa,IAAI,CAAC,CAAC,WAAW,KAAK,CAAC,CAAC,SAAS,CAAC,CAAC;IAC1F,CAAC;IACD,SAAS,aAAa;QACpB,IAAI,IAAI;YAAE,OAAO,KAAK,CAAC;QACvB,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC;QAC7B,IAAI,IAAI,KAAK,MAAM;YAAE,OAAO,KAAK,CAAC;QAClC,kFAAkF;QAClF,iFAAiF;QACjF,mFAAmF;QACnF,sCAAsC;QACtC,IAAI,YAAY,EAAE;YAAE,OAAO,KAAK,CAAC;QACjC,MAAM,CAAC,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;QAC/B,IAAI,CAAC,CAAC;YAAE,OAAO,KAAK,CAAC;QACrB,OAAO,IAAI,KAAK,QAAQ,IAAI,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;IACxD,CAAC;IACD,SAAS,MAAM;QACb,KAAK,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;QAC7C,GAAG,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QAC/E,MAAM,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;IACrC,CAAC;IAED,uBAAuB;IACvB,SAAS,SAAS,CAAC,IAAY,EAAE,IAAa;QAC5C,SAAS,GAAG,IAAI,CAAC;QACjB,UAAU,CAAC,WAAW,GAAG,IAAI,CAAC;QAC9B,MAAM,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;QAC9C,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC;QACvD,8EAA8E;QAC9E,uDAAuD;QACvD,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;QACjD,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;QACvC,KAAK,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;IAC/C,CAAC;IACD,SAAS,WAAW,CAAC,IAAY;QAC/B,IAAI,CAAC,SAAS;YAAE,OAAO;QACvB,MAAM,CAAC,YAAY,CAAC,gBAAgB,EAAE,CAAC;gBACrC,KAAK,EAAE,EAAE,eAAe,EAAE,SAAS,CAAC,UAAU,EAAE,WAAW,EAAE,SAAS,CAAC,MAAM,EAAE,aAAa,EAAE,SAAS,CAAC,UAAU,EAAE,SAAS,EAAE,SAAS,CAAC,MAAM,EAAE;gBACjJ,IAAI,EAAE,gBAAgB,EAAE,IAAI;aAC7B,CAAC,CAAC,CAAC;QACJ,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC/B,SAAS,GAAG,KAAK,CAAC,MAAM,KAAK,CAAC;YAC5B,CAAC,CAAC,EAAE,UAAU,EAAE,SAAS,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE;YAC9E,CAAC,CAAC,EAAE,UAAU,EAAE,SAAS,CAAC,UAAU,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;IAC1G,CAAC;IACD,SAAS,WAAW,CAAC,MAAc;QACjC,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QACzB,SAAS,CAAC,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC;QAChE,MAAM,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;IACrC,CAAC;IACD,KAAK,UAAU,GAAG,CAAC,OAAe;QAChC,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;QAChC,MAAM,KAAK,GAAG,MAAM,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;QAC7C,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,SAAS;YAAE,OAAO;QAC7D,oFAAoF;QACpF,sFAAsF;QACtF,SAAS,GAAG,IAAI,CAAC;QACjB,kFAAkF;QAClF,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;QAC3C,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YAAC,WAAW,CAAC,MAAM,CAAC,MAAM,IAAI,kBAAkB,IAAI,GAAG,CAAC,CAAC;YAAC,OAAO;QAAC,CAAC;QACnG,SAAS,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;QAEjC,gFAAgF;QAChF,kFAAkF;QAClF,gFAAgF;QAChF,iFAAiF;QACjF,gFAAgF;QAChF,MAAM,QAAQ,GAAG,CAAC,KAAK,CAAC,gBAAgB,EAAE,EAAE,KAAK,KAAK,IAAI,eAAe;eACpE,CAAC,CAAC,eAAe,CAAC,eAAe,KAAK,eAAe,CAAC,aAAa,IAAI,eAAe,CAAC,WAAW,KAAK,eAAe,CAAC,SAAS,CAAC,CAAC;YACrI,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC;QAC3B,MAAM,SAAS,GAAG,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAElE,kFAAkF;QAClF,gFAAgF;QAChF,SAAS,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,CAAC;QAC3C,KAAK,GAAG,IAAI,eAAe,EAAE,CAAC;QAC9B,SAAS,CAAC,GAAG,IAAI,cAAc,EAAE,IAAI,CAAC,CAAC;QACvC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,GAAG,CAC1B,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,SAAS,EAAE,EAC/F,KAAK,CAAC,MAAM,EACZ,CAAC,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,QAAQ;gBAAE,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAC1C,CAAC;YACF,IAAI,QAAQ,EAAE,CAAC;gBACb,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;oBAChB,MAAM,CAAC,YAAY,CAAC,gBAAgB,EAAE,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;oBACjG,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBAC/B,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC;wBACnC,CAAC,CAAC,EAAE,UAAU,EAAE,QAAQ,CAAC,eAAe,EAAE,MAAM,EAAE,QAAQ,CAAC,WAAW,GAAG,IAAI,CAAC,MAAM,EAAE;wBACtF,CAAC,CAAC,EAAE,UAAU,EAAE,QAAQ,CAAC,eAAe,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,CAAC;gBAC/G,CAAC;YACH,CAAC;iBAAM,IAAI,SAAS,EAAE,CAAC;gBACrB,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;YAChC,CAAC;YACD,KAAK,EAAE,CAAC;YACR,MAAM,CAAC,KAAK,EAAE,CAAC;QACjB,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,iFAAiF;YACjF,+DAA+D;YAC/D,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAW,CAAW,EAAE,OAAO,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;QAChG,CAAC;gBAAS,CAAC;YACT,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC;QACzB,CAAC;IACH,CAAC;IAED,SAAS,YAAY;QACnB,KAAK,CAAC,SAAS,GAAG,EAAE,CAAC;QACrB,MAAM,CAAC,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;QAC/B,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;QAChC,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,IAAI,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACnI,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;YACjC,MAAM,CAAC,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;YAC3C,CAAC,CAAC,IAAI,GAAG,QAAQ,CAAC;YAClB,CAAC,CAAC,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC;YACxB,CAAC,CAAC,KAAK,CAAC,OAAO,GAAG,SAAS,CAAC;YAC5B,CAAC,CAAC,OAAO,GAAG,GAAG,EAAE,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;YAC1C,CAAC,CAAC,YAAY,GAAG,GAAG,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,UAAU,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,GAAG,0BAA0B,CAAC,CAAC,CAAC,CAAC;YACpJ,CAAC,CAAC,YAAY,GAAG,GAAG,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,UAAU,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,GAAG,4BAA4B,CAAC,CAAC,CAAC,CAAC;YAC1I,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IAED,SAAS,SAAS;QAChB,IAAI,KAAK,CAAC,OAAO,EAAE,KAAK,MAAM;YAAE,OAAO;QACvC,MAAM,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;QAC9B,IAAI,CAAC,MAAM;YAAE,OAAO;QACpB,kFAAkF;QAClF,eAAe,GAAG,MAAM,CAAC,YAAY,EAAE,CAAC;QACxC,IAAI,GAAG,IAAI,CAAC;QACZ,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC;QACjB,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC,sDAAsD;QACnF,SAAS,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;QACrB,SAAS,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;QACjC,gFAAgF;QAChF,8EAA8E;QAC9E,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC;QAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC;QACnC,KAAK,CAAC,KAAK,CAAC,SAAS,GAAG,EAAE,CAAC;QAC3B,KAAK,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,YAAY,IAAI,CAAC;QACtC,KAAK,CAAC,KAAK,CAAC,eAAe,GAAG,aAAa,CAAC;QAC5C,iFAAiF;QACjF,+EAA+E;QAC/E,yDAAyD;QACzD,KAAK,CAAC,KAAK,CAAC,SAAS,GAAG,4CAA4C,CAAC;QACrE,YAAY,EAAE,CAAC;QACf,MAAM,EAAE,CAAC;QACT,4EAA4E;QAC5E,8EAA8E;QAC9E,8EAA8E;QAC9E,KAAK,CAAC,KAAK,EAAE,CAAC;QACd,UAAU,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC;QACnC,2EAA2E;QAC3E,0EAA0E;QAC1E,cAAc;QACd,OAAO,GAAG,CAAC,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAc,CAAC;YAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;QACpE,QAAQ,CAAC,gBAAgB,CAAC,aAAa,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;IAC1D,CAAC;IACD,SAAS,KAAK;QACZ,IAAI,GAAG,KAAK,CAAC;QACb,IAAI,SAAS,EAAE,CAAC;YAAC,KAAK,EAAE,KAAK,EAAE,CAAC;QAAC,CAAC;QAClC,SAAS,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;QACrB,MAAM,GAAG,IAAI,CAAC;QACd,eAAe,GAAG,IAAI,CAAC;QACvB,KAAK,CAAC,KAAK,CAAC,SAAS,GAAG,EAAE,CAAC;QAC3B,KAAK,CAAC,KAAK,CAAC,SAAS,GAAG,EAAE,CAAC;QAC3B,IAAI,OAAO,EAAE,CAAC;YAAC,QAAQ,CAAC,mBAAmB,CAAC,aAAa,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;YAAC,OAAO,GAAG,IAAI,CAAC;QAAC,CAAC;QAC5F,MAAM,EAAE,CAAC;IACX,CAAC;IAED,iBAAiB;IACjB,+EAA+E;IAC/E,iFAAiF;IACjF,oFAAoF;IACpF,GAAG,CAAC,aAAa,GAAG,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,CAAC;IACxE,GAAG,CAAC,WAAW,GAAG,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC;IACnF,GAAG,CAAC,SAAS,GAAG,CAAC,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC,GAAG,KAAK,OAAO,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,EAAE,CAAC;QAAC,CAAC,CAAC,cAAc,EAAE,CAAC;QAAC,SAAS,EAAE,CAAC;IAAC,CAAC,CAAC,CAAC,CAAC;IACxG,GAAG,CAAC,YAAY,GAAG,GAAG,EAAE;QACtB,QAAQ,CAAC,KAAK,CAAC,OAAO,GAAG,QAAQ,CAAC;QAClC,GAAG,CAAC,KAAK,CAAC,OAAO,GAAG,GAAG,CAAC;QACxB,GAAG,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC;QACzB,GAAG,CAAC,KAAK,CAAC,OAAO,GAAG,aAAa,CAAC;QAClC,GAAG,CAAC,KAAK,CAAC,UAAU,GAAG,yDAAyD,CAAC;QACjF,MAAM,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;IACrC,CAAC,CAAC;IACF,GAAG,CAAC,YAAY,GAAG,GAAG,EAAE;QACtB,IAAI,aAAa;YAAE,OAAO,CAAC,0CAA0C;QACrE,QAAQ,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;QAChC,GAAG,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;QAC3B,GAAG,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC;QACzB,GAAG,CAAC,KAAK,CAAC,OAAO,GAAG,GAAG,CAAC;QACxB,GAAG,CAAC,KAAK,CAAC,UAAU,GAAG,2BAA2B,CAAC;QACnD,MAAM,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;IACrC,CAAC,CAAC;IACF,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC,EAAE,EAAE;QACtB,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC,4CAA4C;QACjE,wEAAwE;QACxE,IAAI,CAAC,CAAC,GAAG,KAAK,OAAO,IAAI,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;YAAC,CAAC,CAAC,cAAc,EAAE,CAAC;YAAC,KAAK,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAAC,CAAC;aAC3G,IAAI,CAAC,CAAC,GAAG,KAAK,QAAQ,EAAE,CAAC;YAAC,CAAC,CAAC,cAAc,EAAE,CAAC;YAAC,KAAK,EAAE,CAAC;YAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QAAC,CAAC;IAC/E,CAAC,CAAC;IAEF,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAChC,MAAM,EAAE,GAAG,MAAM,CAAC,yBAAyB,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,IAAI;QAAE,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5E,MAAM,EAAE,GAAG,MAAM,CAAC,qBAAqB,CAAC,GAAG,EAAE,GAAkD,CAAC,CAAC,CAAC;IAClG,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC;IAClF,MAAM,EAAE,CAAC;IAET,OAAO,GAAG,EAAE;QACV,KAAK,EAAE,KAAK,EAAE,CAAC;QACf,IAAI,OAAO;YAAE,QAAQ,CAAC,mBAAmB,CAAC,aAAa,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;QACxE,EAAE,CAAC,OAAO,EAAE,CAAC;QACb,EAAE,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;IACrC,CAAC,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"UsageButton.d.ts","sourceRoot":"","sources":["../../panels/UsageButton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsC,MAAM,OAAO,CAAC;AAI3D;;;4DAG4D;AAC5D,wBAAgB,WAAW,CAAC,EAAE,YAAY,EAAE,EAAE;IAAE,YAAY,EAAE,MAAM,CAAA;CAAE,qBAyCrE"}
1
+ {"version":3,"file":"UsageButton.d.ts","sourceRoot":"","sources":["../../panels/UsageButton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsC,MAAM,OAAO,CAAC;AAK3D;;;4DAG4D;AAC5D,wBAAgB,WAAW,CAAC,EAAE,YAAY,EAAE,EAAE;IAAE,YAAY,EAAE,MAAM,CAAA;CAAE,qBAwCrE"}
@@ -1,5 +1,6 @@
1
1
  import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
2
2
  import { useState, useRef, useEffect } from 'react';
3
+ import { useEscape } from '@corenel/ui-kit/useEscape';
3
4
  import { useUsage, fmtCost, fmtTok, clearUsage } from '@corenel/ui-kit/usage';
4
5
  import { IcTrash } from '@corenel/ui-kit/icons';
5
6
  /** The prompt-token estimate, doubling as the entry point to usage history.
@@ -10,16 +11,14 @@ export function UsageButton({ promptTokens }) {
10
11
  const [open, setOpen] = useState(false);
11
12
  const { records, session, lifetime } = useUsage();
12
13
  const ref = useRef(null);
14
+ useEscape(open, () => setOpen(false));
13
15
  useEffect(() => {
14
16
  if (!open)
15
17
  return;
16
18
  const onDoc = (e) => { if (ref.current && !ref.current.contains(e.target))
17
19
  setOpen(false); };
18
- const onEsc = (e) => { if (e.key === 'Escape')
19
- setOpen(false); };
20
20
  document.addEventListener('mousedown', onDoc);
21
- document.addEventListener('keydown', onEsc);
22
- return () => { document.removeEventListener('mousedown', onDoc); document.removeEventListener('keydown', onEsc); };
21
+ return () => { document.removeEventListener('mousedown', onDoc); };
23
22
  }, [open]);
24
23
  return (_jsxs("div", { ref: ref, style: { position: 'relative' }, children: [_jsxs("button", { style: us.btn(open), onClick: () => setOpen((o) => !o), title: "Prompt token estimate \u00B7 click for usage", "aria-haspopup": "dialog", "aria-expanded": open, children: [_jsxs("span", { style: us.est, children: ["~", promptTokens.toLocaleString(), " tok"] }), _jsx("span", { style: us.cost, children: fmtCost(session.cost) })] }), open && (_jsxs("div", { style: us.menu, role: "dialog", "aria-label": "Usage", children: [_jsxs("div", { style: us.totals, children: [_jsxs("span", { children: ["session ", fmtTok(session.inTok), " in \u00B7 ", fmtTok(session.outTok), " out \u00B7 ", session.runs, " run", session.runs === 1 ? '' : 's'] }), _jsxs("span", { children: ["lifetime ", fmtCost(lifetime.cost), " \u00B7 ", lifetime.runs] })] }), _jsxs("div", { style: us.list, children: [records.length === 0 && _jsx("div", { style: us.empty, children: "No runs yet." }), records.slice(0, 50).map((r) => (_jsxs("div", { style: us.row, children: [_jsx("span", { style: us.model, children: r.modelLabel }), _jsxs("span", { style: us.tok, children: ["in ", r.inEst != null ? `${fmtTok(r.inEst)}→` : '', fmtTok(r.inTok), " \u00B7 out ", fmtTok(r.outTok)] }), _jsx("span", { style: us.rowCost, children: fmtCost(r.cost) })] }, r.id)))] }), records.length > 0 && _jsxs("button", { style: us.clear, onClick: () => clearUsage(), children: [_jsx(IcTrash, { size: 11 }), " Clear history"] })] }))] }));
25
24
  }
@@ -1 +1 @@
1
- {"version":3,"file":"UsageButton.js","sourceRoot":"","sources":["../../panels/UsageButton.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"UsageButton.js","sourceRoot":"","sources":["../../panels/UsageButton.tsx"],"names":[],"mappings":"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"}
@@ -45,9 +45,30 @@ export type WfEvent = {
45
45
  id: string;
46
46
  message: string;
47
47
  guardrail?: GuardrailStepInfo;
48
+ }
49
+ /** Mechanical degrade applied to the remaining frontier (no LLM): models swapped
50
+ * cheaper and/or optional nodes dropped. */
51
+ | {
52
+ type: 'degrade';
53
+ downgraded: {
54
+ id: string;
55
+ model: string;
56
+ }[];
57
+ dropped: string[];
58
+ reason: string;
59
+ }
60
+ /** A live re-plan round-trip: the orchestrator was handed budget state to re-fit
61
+ * the remaining work. */
62
+ | {
63
+ type: 'replan';
64
+ reason: string;
65
+ spent: number;
66
+ limit: number;
67
+ kind: 'usd' | 'tokens' | 'ms';
48
68
  } | {
49
69
  type: 'done';
50
70
  finalOutput: string;
71
+ stopped?: 'budget';
51
72
  } | {
52
73
  type: 'error';
53
74
  message: string;
@@ -105,6 +126,8 @@ export interface WorkflowRun {
105
126
  error?: string;
106
127
  /** Wall-clock start (ms epoch), used to compute totalMs on completion. */
107
128
  startedAt: number;
129
+ /** Set when the run was hard-stopped before natural completion. */
130
+ stopped?: 'budget';
108
131
  }
109
132
  export declare function emptyRun(startedAt: number): WorkflowRun;
110
133
  /** Fold one event into the run, returning a new run (steps array + touched step
@@ -1 +1 @@
1
- {"version":3,"file":"workflowModel.d.ts","sourceRoot":"","sources":["../workflowModel.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"workflowModel.d.ts","sourceRoot":"","sources":["../workflowModel.ts"],"names":[],"mappings":"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"}