@luckydraw/cumulus 0.17.0 → 0.18.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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"webchat.d.ts","sourceRoot":"","sources":["../../../src/gateway/adapters/webchat.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAM7B,OAAO,EAGL,KAAK,sBAAsB,EAC5B,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"webchat.d.ts","sourceRoot":"","sources":["../../../src/gateway/adapters/webchat.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAM7B,OAAO,EAGL,KAAK,sBAAsB,EAC5B,MAAM,sBAAsB,CAAC;AAU9B,MAAM,WAAW,oBAAoB;IACnC,6DAA6D;IAC7D,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC;IACpB,wCAAwC;IACxC,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,qEAAqE;IACrE,YAAY,CAAC,EAAE,OAAO,CACpB,IAAI,CAAC,sBAAsB,EAAE,UAAU,GAAG,YAAY,GAAG,eAAe,CAAC,CAC1E,CAAC;CACH;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3B;AAsGD;;GAEG;AACH,wBAAgB,eAAe,CAC7B,GAAG,EAAE,IAAI,CAAC,eAAe,EACzB,GAAG,EAAE,IAAI,CAAC,cAAc,EACxB,OAAO,CAAC,EAAE,MAAM,EAAE,GACjB,OAAO,CA4BT;AAID;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,oBAAoB,GAC3B,oBAAoB,CAmJtB"}
|
|
@@ -10,6 +10,8 @@ import * as path from 'path';
|
|
|
10
10
|
import { fileURLToPath } from 'url';
|
|
11
11
|
import { WebSocketServer } from 'ws';
|
|
12
12
|
import { sendMessage, getOrCreateThread, } from '../../lib/gateway.js';
|
|
13
|
+
import { listAlwaysIncludeFiles, addAlwaysIncludeFile, removeAlwaysIncludeFile, } from '../../lib/config.js';
|
|
14
|
+
import { executeRevert } from '../../lib/revert.js';
|
|
13
15
|
// ─── Rate limiting ───────────────────────────────────────────────────────────
|
|
14
16
|
const RATE_LIMIT_WINDOW = 60_000; // 1 minute
|
|
15
17
|
const RATE_LIMIT_MAX = 20; // messages per window
|
|
@@ -134,6 +136,31 @@ export function createWebChatAdapter(config) {
|
|
|
134
136
|
await handleCreateThread(ws, data);
|
|
135
137
|
return;
|
|
136
138
|
}
|
|
139
|
+
// Handle include list
|
|
140
|
+
if (data.type === 'include_list') {
|
|
141
|
+
await handleIncludeList(ws, data);
|
|
142
|
+
return;
|
|
143
|
+
}
|
|
144
|
+
// Handle include add
|
|
145
|
+
if (data.type === 'include_add') {
|
|
146
|
+
await handleIncludeAdd(ws, data);
|
|
147
|
+
return;
|
|
148
|
+
}
|
|
149
|
+
// Handle include remove
|
|
150
|
+
if (data.type === 'include_remove') {
|
|
151
|
+
await handleIncludeRemove(ws, data);
|
|
152
|
+
return;
|
|
153
|
+
}
|
|
154
|
+
// Handle revert list
|
|
155
|
+
if (data.type === 'revert_list') {
|
|
156
|
+
await handleRevertList(ws, data);
|
|
157
|
+
return;
|
|
158
|
+
}
|
|
159
|
+
// Handle revert execute
|
|
160
|
+
if (data.type === 'revert_execute') {
|
|
161
|
+
await handleRevertExecute(ws, data);
|
|
162
|
+
return;
|
|
163
|
+
}
|
|
137
164
|
// Handle chat message
|
|
138
165
|
if (data.type === 'message') {
|
|
139
166
|
// Rate limit
|
|
@@ -179,6 +206,7 @@ async function handleHistory(ws, data) {
|
|
|
179
206
|
const limit = Math.min(data.limit || 50, 200);
|
|
180
207
|
const slice = all.slice(-limit);
|
|
181
208
|
const messages = slice.map((m) => ({
|
|
209
|
+
id: m.id,
|
|
182
210
|
role: m.role,
|
|
183
211
|
content: m.content,
|
|
184
212
|
timestamp: m.timestamp,
|
|
@@ -258,6 +286,135 @@ async function handleCreateThread(ws, data) {
|
|
|
258
286
|
});
|
|
259
287
|
}
|
|
260
288
|
}
|
|
289
|
+
async function handleIncludeList(ws, data) {
|
|
290
|
+
try {
|
|
291
|
+
const result = await listAlwaysIncludeFiles(data.threadName);
|
|
292
|
+
const files = [
|
|
293
|
+
...result.global.map((p) => ({ path: p, scope: 'global' })),
|
|
294
|
+
...result.thread.map((p) => ({ path: p, scope: 'thread' })),
|
|
295
|
+
];
|
|
296
|
+
wsSend(ws, { type: 'include_list', threadName: data.threadName, files });
|
|
297
|
+
}
|
|
298
|
+
catch (err) {
|
|
299
|
+
wsSend(ws, {
|
|
300
|
+
type: 'error',
|
|
301
|
+
error: `Failed to list include files: ${err instanceof Error ? err.message : String(err)}`,
|
|
302
|
+
threadName: data.threadName,
|
|
303
|
+
});
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
async function handleIncludeAdd(ws, data) {
|
|
307
|
+
try {
|
|
308
|
+
if (!data.filePath) {
|
|
309
|
+
wsSend(ws, { type: 'error', error: 'Missing filePath', threadName: data.threadName });
|
|
310
|
+
return;
|
|
311
|
+
}
|
|
312
|
+
const threadName = data.scope === 'global' ? undefined : data.threadName;
|
|
313
|
+
await addAlwaysIncludeFile(data.filePath, threadName);
|
|
314
|
+
// Return updated list
|
|
315
|
+
await handleIncludeList(ws, { type: 'include_list', threadName: data.threadName });
|
|
316
|
+
wsSend(ws, {
|
|
317
|
+
type: 'include_added',
|
|
318
|
+
threadName: data.threadName,
|
|
319
|
+
filePath: data.filePath,
|
|
320
|
+
scope: data.scope || 'thread',
|
|
321
|
+
});
|
|
322
|
+
}
|
|
323
|
+
catch (err) {
|
|
324
|
+
wsSend(ws, {
|
|
325
|
+
type: 'error',
|
|
326
|
+
error: `Failed to add include file: ${err instanceof Error ? err.message : String(err)}`,
|
|
327
|
+
threadName: data.threadName,
|
|
328
|
+
});
|
|
329
|
+
}
|
|
330
|
+
}
|
|
331
|
+
async function handleIncludeRemove(ws, data) {
|
|
332
|
+
try {
|
|
333
|
+
if (!data.filePath) {
|
|
334
|
+
wsSend(ws, { type: 'error', error: 'Missing filePath', threadName: data.threadName });
|
|
335
|
+
return;
|
|
336
|
+
}
|
|
337
|
+
// Try removing from thread first, then global
|
|
338
|
+
try {
|
|
339
|
+
await removeAlwaysIncludeFile(data.filePath, data.threadName);
|
|
340
|
+
}
|
|
341
|
+
catch {
|
|
342
|
+
await removeAlwaysIncludeFile(data.filePath, undefined);
|
|
343
|
+
}
|
|
344
|
+
// Return updated list
|
|
345
|
+
await handleIncludeList(ws, { type: 'include_list', threadName: data.threadName });
|
|
346
|
+
wsSend(ws, {
|
|
347
|
+
type: 'include_removed',
|
|
348
|
+
threadName: data.threadName,
|
|
349
|
+
filePath: data.filePath,
|
|
350
|
+
});
|
|
351
|
+
}
|
|
352
|
+
catch (err) {
|
|
353
|
+
wsSend(ws, {
|
|
354
|
+
type: 'error',
|
|
355
|
+
error: `Failed to remove include file: ${err instanceof Error ? err.message : String(err)}`,
|
|
356
|
+
threadName: data.threadName,
|
|
357
|
+
});
|
|
358
|
+
}
|
|
359
|
+
}
|
|
360
|
+
async function handleRevertList(ws, data) {
|
|
361
|
+
try {
|
|
362
|
+
const thread = await getOrCreateThread(data.threadName);
|
|
363
|
+
const all = await thread.history.getAll();
|
|
364
|
+
// Build turn pairs (user + assistant) for the revert UI
|
|
365
|
+
const turns = [];
|
|
366
|
+
let turnIndex = 0;
|
|
367
|
+
for (let i = 0; i < all.length; i++) {
|
|
368
|
+
const msg = all[i];
|
|
369
|
+
if (msg.role === 'user') {
|
|
370
|
+
turnIndex++;
|
|
371
|
+
const preview = msg.content.slice(0, 80).replace(/\n/g, ' ');
|
|
372
|
+
turns.push({
|
|
373
|
+
index: turnIndex,
|
|
374
|
+
userMessageId: msg.id,
|
|
375
|
+
preview,
|
|
376
|
+
timestamp: msg.timestamp,
|
|
377
|
+
hasGitSnapshot: !!msg.metadata?.gitSnapshot,
|
|
378
|
+
messageCount: all.length - i, // messages that would be removed
|
|
379
|
+
});
|
|
380
|
+
}
|
|
381
|
+
}
|
|
382
|
+
// Newest first
|
|
383
|
+
turns.reverse();
|
|
384
|
+
wsSend(ws, { type: 'revert_list', threadName: data.threadName, turns });
|
|
385
|
+
}
|
|
386
|
+
catch (err) {
|
|
387
|
+
wsSend(ws, {
|
|
388
|
+
type: 'error',
|
|
389
|
+
error: `Failed to list turns: ${err instanceof Error ? err.message : String(err)}`,
|
|
390
|
+
threadName: data.threadName,
|
|
391
|
+
});
|
|
392
|
+
}
|
|
393
|
+
}
|
|
394
|
+
async function handleRevertExecute(ws, data) {
|
|
395
|
+
try {
|
|
396
|
+
if (!data.targetMessageId) {
|
|
397
|
+
wsSend(ws, { type: 'error', error: 'Missing targetMessageId', threadName: data.threadName });
|
|
398
|
+
return;
|
|
399
|
+
}
|
|
400
|
+
const thread = await getOrCreateThread(data.threadName);
|
|
401
|
+
const result = await executeRevert(thread.history, data.targetMessageId);
|
|
402
|
+
wsSend(ws, {
|
|
403
|
+
type: 'revert_done',
|
|
404
|
+
threadName: data.threadName,
|
|
405
|
+
success: result.success,
|
|
406
|
+
removedCount: result.removedCount,
|
|
407
|
+
error: result.error,
|
|
408
|
+
});
|
|
409
|
+
}
|
|
410
|
+
catch (err) {
|
|
411
|
+
wsSend(ws, {
|
|
412
|
+
type: 'error',
|
|
413
|
+
error: `Failed to revert: ${err instanceof Error ? err.message : String(err)}`,
|
|
414
|
+
threadName: data.threadName,
|
|
415
|
+
});
|
|
416
|
+
}
|
|
417
|
+
}
|
|
261
418
|
async function handleChatMessage(ws, data, pipelineOpts) {
|
|
262
419
|
const { threadName, message, images } = data;
|
|
263
420
|
if (!threadName || !message) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"webchat.js","sourceRoot":"","sources":["../../../src/gateway/adapters/webchat.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"webchat.js","sourceRoot":"","sources":["../../../src/gateway/adapters/webchat.ts"],"names":[],"mappings":"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"}
|
|
@@ -574,6 +574,148 @@
|
|
|
574
574
|
'}',
|
|
575
575
|
'.cumulus-topbar-title { font-weight: 600; font-size: 15px; color: #e0e0e0; }',
|
|
576
576
|
'.cumulus-topbar-right { display: flex; align-items: center; gap: 10px; }',
|
|
577
|
+
|
|
578
|
+
/* ── Panel header action buttons ── */
|
|
579
|
+
'.cumulus-panel-actions { display: flex; align-items: center; gap: 4px; margin-left: auto; margin-right: 8px; }',
|
|
580
|
+
'.cumulus-panel-action-btn {',
|
|
581
|
+
' background: none; border: 1px solid transparent; color: #777;',
|
|
582
|
+
' cursor: pointer; font-size: 11px; padding: 2px 7px;',
|
|
583
|
+
' border-radius: 3px; font-family: inherit; white-space: nowrap;',
|
|
584
|
+
'}',
|
|
585
|
+
'.cumulus-panel-action-btn:hover { color: #ddd; border-color: #555; }',
|
|
586
|
+
|
|
587
|
+
/* ── Overlay (covers the thread panel) ── */
|
|
588
|
+
'.cumulus-overlay {',
|
|
589
|
+
' position: absolute; top: 0; left: 0; right: 0; bottom: 0;',
|
|
590
|
+
' background: #1e1e1e; z-index: 10;',
|
|
591
|
+
' display: flex; flex-direction: column;',
|
|
592
|
+
' overflow: hidden;',
|
|
593
|
+
'}',
|
|
594
|
+
'.cumulus-overlay-header {',
|
|
595
|
+
' display: flex; align-items: center; justify-content: space-between;',
|
|
596
|
+
' padding: 0 0.85em; height: 40px;',
|
|
597
|
+
' background: #2d2d2d; border-bottom: 1px solid #3a3a3a;',
|
|
598
|
+
' flex-shrink: 0;',
|
|
599
|
+
'}',
|
|
600
|
+
'.cumulus-overlay-title { font-weight: 600; font-size: 14px; color: #e0e0e0; }',
|
|
601
|
+
'.cumulus-overlay-close {',
|
|
602
|
+
' background: none; border: none; color: #666; cursor: pointer;',
|
|
603
|
+
' font-size: 18px; padding: 2px 4px; line-height: 1;',
|
|
604
|
+
'}',
|
|
605
|
+
'.cumulus-overlay-close:hover { color: #e0e0e0; }',
|
|
606
|
+
'.cumulus-overlay-body {',
|
|
607
|
+
' flex: 1; overflow-y: auto; padding: 0.75em;',
|
|
608
|
+
'}',
|
|
609
|
+
'.cumulus-overlay-footer {',
|
|
610
|
+
' padding: 0.6em 0.85em; background: #2d2d2d;',
|
|
611
|
+
' border-top: 1px solid #3a3a3a; flex-shrink: 0;',
|
|
612
|
+
'}',
|
|
613
|
+
|
|
614
|
+
/* ── Include list items ── */
|
|
615
|
+
'.cumulus-include-item {',
|
|
616
|
+
' display: flex; align-items: center; justify-content: space-between;',
|
|
617
|
+
' padding: 0.45em 0.6em; border-radius: 4px;',
|
|
618
|
+
' border: 1px solid #333; margin-bottom: 0.35em;',
|
|
619
|
+
'}',
|
|
620
|
+
'.cumulus-include-item:hover { border-color: #555; }',
|
|
621
|
+
'.cumulus-include-path {',
|
|
622
|
+
' font-family: "SF Mono", Consolas, monospace; font-size: 0.85em;',
|
|
623
|
+
' color: #ccc; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; flex: 1;',
|
|
624
|
+
'}',
|
|
625
|
+
'.cumulus-include-scope {',
|
|
626
|
+
' font-size: 0.75em; color: #888; background: #2a2a2a;',
|
|
627
|
+
' border: 1px solid #3a3a3a; border-radius: 3px;',
|
|
628
|
+
' padding: 1px 6px; margin-left: 8px; flex-shrink: 0;',
|
|
629
|
+
'}',
|
|
630
|
+
'.cumulus-include-remove {',
|
|
631
|
+
' background: none; border: none; color: #666; cursor: pointer;',
|
|
632
|
+
' font-size: 16px; padding: 0 4px; margin-left: 6px; flex-shrink: 0;',
|
|
633
|
+
'}',
|
|
634
|
+
'.cumulus-include-remove:hover { color: #ef4444; }',
|
|
635
|
+
|
|
636
|
+
/* ── Include add row ── */
|
|
637
|
+
'.cumulus-include-add-row {',
|
|
638
|
+
' display: flex; gap: 6px; align-items: center;',
|
|
639
|
+
'}',
|
|
640
|
+
'.cumulus-include-add-input {',
|
|
641
|
+
' flex: 1; background: #1e1e1e; border: 1px solid #3a3a3a;',
|
|
642
|
+
' color: #e0e0e0; padding: 0.4em 0.6em; border-radius: 4px;',
|
|
643
|
+
' font-family: "SF Mono", Consolas, monospace; font-size: 0.85em;',
|
|
644
|
+
' outline: none;',
|
|
645
|
+
'}',
|
|
646
|
+
'.cumulus-include-add-input:focus { border-color: #0066cc; }',
|
|
647
|
+
'.cumulus-include-add-input::placeholder { color: #555; }',
|
|
648
|
+
'.cumulus-scope-toggle {',
|
|
649
|
+
' background: #2a2a2a; border: 1px solid #3a3a3a; color: #aaa;',
|
|
650
|
+
' padding: 0.35em 0.6em; border-radius: 4px; cursor: pointer;',
|
|
651
|
+
' font-size: 0.8em; white-space: nowrap;',
|
|
652
|
+
'}',
|
|
653
|
+
'.cumulus-scope-toggle:hover { border-color: #555; color: #ddd; }',
|
|
654
|
+
'.cumulus-include-add-btn {',
|
|
655
|
+
' background: #0066cc; border: none; color: white;',
|
|
656
|
+
' padding: 0.4em 0.8em; border-radius: 4px; cursor: pointer;',
|
|
657
|
+
' font-size: 0.85em; white-space: nowrap;',
|
|
658
|
+
'}',
|
|
659
|
+
'.cumulus-include-add-btn:hover { background: #0077ee; }',
|
|
660
|
+
|
|
661
|
+
/* ── Revert turn items ── */
|
|
662
|
+
'.cumulus-revert-item {',
|
|
663
|
+
' display: flex; align-items: center; gap: 0.6em;',
|
|
664
|
+
' padding: 0.55em 0.6em; border-radius: 4px;',
|
|
665
|
+
' border: 1px solid #333; margin-bottom: 0.35em; cursor: pointer;',
|
|
666
|
+
'}',
|
|
667
|
+
'.cumulus-revert-item:hover { border-color: #555; background: #252525; }',
|
|
668
|
+
'.cumulus-revert-turn-num {',
|
|
669
|
+
' font-size: 0.8em; color: #888; background: #2a2a2a;',
|
|
670
|
+
' border: 1px solid #3a3a3a; border-radius: 3px;',
|
|
671
|
+
' padding: 1px 6px; flex-shrink: 0; min-width: 3em; text-align: center;',
|
|
672
|
+
'}',
|
|
673
|
+
'.cumulus-revert-preview {',
|
|
674
|
+
' flex: 1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;',
|
|
675
|
+
' color: #ccc; font-size: 0.9em;',
|
|
676
|
+
'}',
|
|
677
|
+
'.cumulus-revert-time {',
|
|
678
|
+
' font-size: 0.75em; color: #666; flex-shrink: 0;',
|
|
679
|
+
'}',
|
|
680
|
+
'.cumulus-revert-git-badge {',
|
|
681
|
+
' font-size: 0.7em; color: #22c55e; background: rgba(34,197,94,0.1);',
|
|
682
|
+
' border: 1px solid rgba(34,197,94,0.3); border-radius: 3px;',
|
|
683
|
+
' padding: 0 5px; flex-shrink: 0;',
|
|
684
|
+
'}',
|
|
685
|
+
|
|
686
|
+
/* ── Revert confirm panel ── */
|
|
687
|
+
'.cumulus-revert-confirm {',
|
|
688
|
+
' padding: 1.5em; display: flex; flex-direction: column;',
|
|
689
|
+
' align-items: center; gap: 1em; text-align: center;',
|
|
690
|
+
'}',
|
|
691
|
+
'.cumulus-revert-confirm-text { color: #ccc; font-size: 0.95em; }',
|
|
692
|
+
'.cumulus-revert-confirm-warn { color: #f59e0b; font-size: 0.85em; }',
|
|
693
|
+
'.cumulus-revert-confirm-actions { display: flex; gap: 8px; }',
|
|
694
|
+
'.cumulus-revert-confirm-btn {',
|
|
695
|
+
' padding: 0.4em 1.2em; border-radius: 4px; cursor: pointer;',
|
|
696
|
+
' font-size: 0.9em; border: 1px solid #3a3a3a;',
|
|
697
|
+
'}',
|
|
698
|
+
'.cumulus-revert-confirm-btn.danger {',
|
|
699
|
+
' background: #8b2222; border-color: #a33; color: white;',
|
|
700
|
+
'}',
|
|
701
|
+
'.cumulus-revert-confirm-btn.danger:hover { background: #a33; }',
|
|
702
|
+
'.cumulus-revert-confirm-btn.cancel {',
|
|
703
|
+
' background: #2a2a2a; color: #ccc;',
|
|
704
|
+
'}',
|
|
705
|
+
'.cumulus-revert-confirm-btn.cancel:hover { background: #3a3a3a; }',
|
|
706
|
+
|
|
707
|
+
/* ── Status message ── */
|
|
708
|
+
'.cumulus-overlay-status {',
|
|
709
|
+
' padding: 0.4em 0.6em; font-size: 0.85em; border-radius: 4px;',
|
|
710
|
+
' margin-top: 0.5em; text-align: center;',
|
|
711
|
+
'}',
|
|
712
|
+
'.cumulus-overlay-status.success { color: #22c55e; background: rgba(34,197,94,0.1); }',
|
|
713
|
+
'.cumulus-overlay-status.error { color: #ef4444; background: rgba(239,68,68,0.1); }',
|
|
714
|
+
|
|
715
|
+
/* ── Empty overlay state ── */
|
|
716
|
+
'.cumulus-overlay-empty {',
|
|
717
|
+
' color: #555; font-size: 0.9em; text-align: center; padding: 2em;',
|
|
718
|
+
'}',
|
|
577
719
|
].join('\n');
|
|
578
720
|
|
|
579
721
|
// ─── HTML Escaping ───────────────────────────────────────────────────────────
|
|
@@ -1774,6 +1916,7 @@
|
|
|
1774
1916
|
|
|
1775
1917
|
var panel = document.createElement('div');
|
|
1776
1918
|
panel.className = 'cumulus-thread-panel';
|
|
1919
|
+
panel.style.position = 'relative'; // for overlay positioning
|
|
1777
1920
|
panel.setAttribute('data-testid', 'webchat-panel-' + threadName);
|
|
1778
1921
|
panel.setAttribute('data-thread-panel', threadName);
|
|
1779
1922
|
|
|
@@ -1797,6 +1940,32 @@
|
|
|
1797
1940
|
|
|
1798
1941
|
panelHeader.appendChild(titleLeft);
|
|
1799
1942
|
|
|
1943
|
+
// Action buttons (include + revert)
|
|
1944
|
+
var actions = document.createElement('div');
|
|
1945
|
+
actions.className = 'cumulus-panel-actions';
|
|
1946
|
+
|
|
1947
|
+
var includeBtn = document.createElement('button');
|
|
1948
|
+
includeBtn.className = 'cumulus-panel-action-btn';
|
|
1949
|
+
includeBtn.setAttribute('data-testid', 'webchat-include-btn');
|
|
1950
|
+
includeBtn.setAttribute('title', 'Manage always-include files');
|
|
1951
|
+
includeBtn.textContent = '/include';
|
|
1952
|
+
includeBtn.addEventListener('click', function () {
|
|
1953
|
+
openIncludeOverlay(panel, threadName);
|
|
1954
|
+
});
|
|
1955
|
+
actions.appendChild(includeBtn);
|
|
1956
|
+
|
|
1957
|
+
var revertBtn = document.createElement('button');
|
|
1958
|
+
revertBtn.className = 'cumulus-panel-action-btn';
|
|
1959
|
+
revertBtn.setAttribute('data-testid', 'webchat-revert-btn');
|
|
1960
|
+
revertBtn.setAttribute('title', 'Revert conversation to earlier point');
|
|
1961
|
+
revertBtn.textContent = '/revert';
|
|
1962
|
+
revertBtn.addEventListener('click', function () {
|
|
1963
|
+
openRevertOverlay(panel, threadName);
|
|
1964
|
+
});
|
|
1965
|
+
actions.appendChild(revertBtn);
|
|
1966
|
+
|
|
1967
|
+
panelHeader.appendChild(actions);
|
|
1968
|
+
|
|
1800
1969
|
var closeBtn = document.createElement('button');
|
|
1801
1970
|
closeBtn.className = 'cumulus-thread-panel-close';
|
|
1802
1971
|
closeBtn.setAttribute('data-testid', 'webchat-panel-close');
|
|
@@ -2142,6 +2311,272 @@
|
|
|
2142
2311
|
}
|
|
2143
2312
|
}
|
|
2144
2313
|
|
|
2314
|
+
// ── Include overlay ──
|
|
2315
|
+
function openIncludeOverlay(panel, threadName) {
|
|
2316
|
+
// Remove existing overlay if any
|
|
2317
|
+
var existing = panel.querySelector('.cumulus-overlay');
|
|
2318
|
+
if (existing) { existing.remove(); return; }
|
|
2319
|
+
|
|
2320
|
+
var overlay = document.createElement('div');
|
|
2321
|
+
overlay.className = 'cumulus-overlay';
|
|
2322
|
+
|
|
2323
|
+
var header = document.createElement('div');
|
|
2324
|
+
header.className = 'cumulus-overlay-header';
|
|
2325
|
+
var title = document.createElement('span');
|
|
2326
|
+
title.className = 'cumulus-overlay-title';
|
|
2327
|
+
title.textContent = 'Always-Include Files';
|
|
2328
|
+
header.appendChild(title);
|
|
2329
|
+
var closeBtn = document.createElement('button');
|
|
2330
|
+
closeBtn.className = 'cumulus-overlay-close';
|
|
2331
|
+
closeBtn.textContent = '\xD7';
|
|
2332
|
+
closeBtn.addEventListener('click', function () { overlay.remove(); });
|
|
2333
|
+
header.appendChild(closeBtn);
|
|
2334
|
+
overlay.appendChild(header);
|
|
2335
|
+
|
|
2336
|
+
var body = document.createElement('div');
|
|
2337
|
+
body.className = 'cumulus-overlay-body';
|
|
2338
|
+
body.innerHTML = '<div class="cumulus-overlay-empty">Loading\u2026</div>';
|
|
2339
|
+
overlay.appendChild(body);
|
|
2340
|
+
|
|
2341
|
+
// Footer with add input
|
|
2342
|
+
var footer = document.createElement('div');
|
|
2343
|
+
footer.className = 'cumulus-overlay-footer';
|
|
2344
|
+
var addRow = document.createElement('div');
|
|
2345
|
+
addRow.className = 'cumulus-include-add-row';
|
|
2346
|
+
|
|
2347
|
+
var addInput = document.createElement('input');
|
|
2348
|
+
addInput.className = 'cumulus-include-add-input';
|
|
2349
|
+
addInput.setAttribute('placeholder', '/path/to/file');
|
|
2350
|
+
addInput.setAttribute('data-testid', 'webchat-include-add-input');
|
|
2351
|
+
|
|
2352
|
+
var currentScope = 'thread';
|
|
2353
|
+
var scopeBtn = document.createElement('button');
|
|
2354
|
+
scopeBtn.className = 'cumulus-scope-toggle';
|
|
2355
|
+
scopeBtn.textContent = 'thread';
|
|
2356
|
+
scopeBtn.setAttribute('data-testid', 'webchat-include-scope-toggle');
|
|
2357
|
+
scopeBtn.addEventListener('click', function () {
|
|
2358
|
+
currentScope = currentScope === 'thread' ? 'global' : 'thread';
|
|
2359
|
+
scopeBtn.textContent = currentScope;
|
|
2360
|
+
});
|
|
2361
|
+
|
|
2362
|
+
var addBtn = document.createElement('button');
|
|
2363
|
+
addBtn.className = 'cumulus-include-add-btn';
|
|
2364
|
+
addBtn.textContent = 'Add';
|
|
2365
|
+
addBtn.setAttribute('data-testid', 'webchat-include-add-btn');
|
|
2366
|
+
addBtn.addEventListener('click', function () {
|
|
2367
|
+
var filePath = addInput.value.trim();
|
|
2368
|
+
if (!filePath) return;
|
|
2369
|
+
connection && connection.send(JSON.stringify({
|
|
2370
|
+
type: 'include_add', threadName: threadName,
|
|
2371
|
+
filePath: filePath, scope: currentScope,
|
|
2372
|
+
}));
|
|
2373
|
+
addInput.value = '';
|
|
2374
|
+
});
|
|
2375
|
+
|
|
2376
|
+
addInput.addEventListener('keydown', function (e) {
|
|
2377
|
+
if (e.key === 'Enter') { addBtn.click(); }
|
|
2378
|
+
});
|
|
2379
|
+
|
|
2380
|
+
addRow.appendChild(addInput);
|
|
2381
|
+
addRow.appendChild(scopeBtn);
|
|
2382
|
+
addRow.appendChild(addBtn);
|
|
2383
|
+
footer.appendChild(addRow);
|
|
2384
|
+
overlay.appendChild(footer);
|
|
2385
|
+
|
|
2386
|
+
// Store references for the message handler to update
|
|
2387
|
+
overlay._includeBody = body;
|
|
2388
|
+
overlay._threadName = threadName;
|
|
2389
|
+
|
|
2390
|
+
panel.appendChild(overlay);
|
|
2391
|
+
|
|
2392
|
+
// Request the list
|
|
2393
|
+
connection && connection.send(JSON.stringify({ type: 'include_list', threadName: threadName }));
|
|
2394
|
+
}
|
|
2395
|
+
|
|
2396
|
+
function renderIncludeList(panel, threadName, files) {
|
|
2397
|
+
var overlay = panel.querySelector('.cumulus-overlay');
|
|
2398
|
+
if (!overlay || overlay._threadName !== threadName) return;
|
|
2399
|
+
var body = overlay._includeBody;
|
|
2400
|
+
if (!body) return;
|
|
2401
|
+
|
|
2402
|
+
body.innerHTML = '';
|
|
2403
|
+
if (files.length === 0) {
|
|
2404
|
+
body.innerHTML = '<div class="cumulus-overlay-empty">No always-include files configured.</div>';
|
|
2405
|
+
return;
|
|
2406
|
+
}
|
|
2407
|
+
|
|
2408
|
+
files.forEach(function (f) {
|
|
2409
|
+
var item = document.createElement('div');
|
|
2410
|
+
item.className = 'cumulus-include-item';
|
|
2411
|
+
|
|
2412
|
+
var pathEl = document.createElement('span');
|
|
2413
|
+
pathEl.className = 'cumulus-include-path';
|
|
2414
|
+
pathEl.textContent = f.path;
|
|
2415
|
+
pathEl.setAttribute('title', f.path);
|
|
2416
|
+
item.appendChild(pathEl);
|
|
2417
|
+
|
|
2418
|
+
var scopeEl = document.createElement('span');
|
|
2419
|
+
scopeEl.className = 'cumulus-include-scope';
|
|
2420
|
+
scopeEl.textContent = f.scope;
|
|
2421
|
+
item.appendChild(scopeEl);
|
|
2422
|
+
|
|
2423
|
+
var removeBtn = document.createElement('button');
|
|
2424
|
+
removeBtn.className = 'cumulus-include-remove';
|
|
2425
|
+
removeBtn.textContent = '\xD7';
|
|
2426
|
+
removeBtn.setAttribute('title', 'Remove');
|
|
2427
|
+
removeBtn.addEventListener('click', function () {
|
|
2428
|
+
connection && connection.send(JSON.stringify({
|
|
2429
|
+
type: 'include_remove', threadName: threadName, filePath: f.path,
|
|
2430
|
+
}));
|
|
2431
|
+
});
|
|
2432
|
+
item.appendChild(removeBtn);
|
|
2433
|
+
|
|
2434
|
+
body.appendChild(item);
|
|
2435
|
+
});
|
|
2436
|
+
}
|
|
2437
|
+
|
|
2438
|
+
// ── Revert overlay ──
|
|
2439
|
+
function openRevertOverlay(panel, threadName) {
|
|
2440
|
+
var existing = panel.querySelector('.cumulus-overlay');
|
|
2441
|
+
if (existing) { existing.remove(); return; }
|
|
2442
|
+
|
|
2443
|
+
var overlay = document.createElement('div');
|
|
2444
|
+
overlay.className = 'cumulus-overlay';
|
|
2445
|
+
|
|
2446
|
+
var header = document.createElement('div');
|
|
2447
|
+
header.className = 'cumulus-overlay-header';
|
|
2448
|
+
var title = document.createElement('span');
|
|
2449
|
+
title.className = 'cumulus-overlay-title';
|
|
2450
|
+
title.textContent = 'Revert Conversation';
|
|
2451
|
+
header.appendChild(title);
|
|
2452
|
+
var closeBtn = document.createElement('button');
|
|
2453
|
+
closeBtn.className = 'cumulus-overlay-close';
|
|
2454
|
+
closeBtn.textContent = '\xD7';
|
|
2455
|
+
closeBtn.addEventListener('click', function () { overlay.remove(); });
|
|
2456
|
+
header.appendChild(closeBtn);
|
|
2457
|
+
overlay.appendChild(header);
|
|
2458
|
+
|
|
2459
|
+
var body = document.createElement('div');
|
|
2460
|
+
body.className = 'cumulus-overlay-body';
|
|
2461
|
+
body.innerHTML = '<div class="cumulus-overlay-empty">Loading\u2026</div>';
|
|
2462
|
+
overlay.appendChild(body);
|
|
2463
|
+
|
|
2464
|
+
overlay._revertBody = body;
|
|
2465
|
+
overlay._threadName = threadName;
|
|
2466
|
+
|
|
2467
|
+
panel.appendChild(overlay);
|
|
2468
|
+
|
|
2469
|
+
// Request the turn list
|
|
2470
|
+
connection && connection.send(JSON.stringify({ type: 'revert_list', threadName: threadName }));
|
|
2471
|
+
}
|
|
2472
|
+
|
|
2473
|
+
function renderRevertList(panel, threadName, turns) {
|
|
2474
|
+
var overlay = panel.querySelector('.cumulus-overlay');
|
|
2475
|
+
if (!overlay || overlay._threadName !== threadName) return;
|
|
2476
|
+
var body = overlay._revertBody;
|
|
2477
|
+
if (!body) return;
|
|
2478
|
+
|
|
2479
|
+
body.innerHTML = '';
|
|
2480
|
+
if (turns.length === 0) {
|
|
2481
|
+
body.innerHTML = '<div class="cumulus-overlay-empty">No turns to revert to.</div>';
|
|
2482
|
+
return;
|
|
2483
|
+
}
|
|
2484
|
+
|
|
2485
|
+
// Skip the first turn (most recent) — nothing to revert to
|
|
2486
|
+
var revertableTurns = turns.length > 1 ? turns.slice(1) : turns;
|
|
2487
|
+
|
|
2488
|
+
revertableTurns.forEach(function (turn) {
|
|
2489
|
+
var item = document.createElement('div');
|
|
2490
|
+
item.className = 'cumulus-revert-item';
|
|
2491
|
+
item.setAttribute('data-testid', 'webchat-revert-turn');
|
|
2492
|
+
|
|
2493
|
+
var numEl = document.createElement('span');
|
|
2494
|
+
numEl.className = 'cumulus-revert-turn-num';
|
|
2495
|
+
numEl.textContent = '#' + turn.index;
|
|
2496
|
+
item.appendChild(numEl);
|
|
2497
|
+
|
|
2498
|
+
var previewEl = document.createElement('span');
|
|
2499
|
+
previewEl.className = 'cumulus-revert-preview';
|
|
2500
|
+
previewEl.textContent = turn.preview;
|
|
2501
|
+
item.appendChild(previewEl);
|
|
2502
|
+
|
|
2503
|
+
if (turn.hasGitSnapshot) {
|
|
2504
|
+
var gitBadge = document.createElement('span');
|
|
2505
|
+
gitBadge.className = 'cumulus-revert-git-badge';
|
|
2506
|
+
gitBadge.textContent = 'git';
|
|
2507
|
+
item.appendChild(gitBadge);
|
|
2508
|
+
}
|
|
2509
|
+
|
|
2510
|
+
var timeEl = document.createElement('span');
|
|
2511
|
+
timeEl.className = 'cumulus-revert-time';
|
|
2512
|
+
timeEl.textContent = formatTime(turn.timestamp);
|
|
2513
|
+
item.appendChild(timeEl);
|
|
2514
|
+
|
|
2515
|
+
item.addEventListener('click', function () {
|
|
2516
|
+
showRevertConfirm(overlay, threadName, turn);
|
|
2517
|
+
});
|
|
2518
|
+
|
|
2519
|
+
body.appendChild(item);
|
|
2520
|
+
});
|
|
2521
|
+
}
|
|
2522
|
+
|
|
2523
|
+
function showRevertConfirm(overlay, threadName, turn) {
|
|
2524
|
+
var body = overlay._revertBody;
|
|
2525
|
+
if (!body) return;
|
|
2526
|
+
|
|
2527
|
+
body.innerHTML = '';
|
|
2528
|
+
var confirm = document.createElement('div');
|
|
2529
|
+
confirm.className = 'cumulus-revert-confirm';
|
|
2530
|
+
|
|
2531
|
+
var text = document.createElement('div');
|
|
2532
|
+
text.className = 'cumulus-revert-confirm-text';
|
|
2533
|
+
text.textContent = 'Revert to after turn #' + turn.index + '?';
|
|
2534
|
+
confirm.appendChild(text);
|
|
2535
|
+
|
|
2536
|
+
var warn = document.createElement('div');
|
|
2537
|
+
warn.className = 'cumulus-revert-confirm-warn';
|
|
2538
|
+
warn.textContent = turn.messageCount + ' message(s) will be removed. This cannot be undone.';
|
|
2539
|
+
confirm.appendChild(warn);
|
|
2540
|
+
|
|
2541
|
+
var actions = document.createElement('div');
|
|
2542
|
+
actions.className = 'cumulus-revert-confirm-actions';
|
|
2543
|
+
|
|
2544
|
+
var cancelBtn = document.createElement('button');
|
|
2545
|
+
cancelBtn.className = 'cumulus-revert-confirm-btn cancel';
|
|
2546
|
+
cancelBtn.textContent = 'Cancel';
|
|
2547
|
+
cancelBtn.addEventListener('click', function () {
|
|
2548
|
+
// Re-request list
|
|
2549
|
+
connection && connection.send(JSON.stringify({ type: 'revert_list', threadName: threadName }));
|
|
2550
|
+
});
|
|
2551
|
+
actions.appendChild(cancelBtn);
|
|
2552
|
+
|
|
2553
|
+
var revertBtn = document.createElement('button');
|
|
2554
|
+
revertBtn.className = 'cumulus-revert-confirm-btn danger';
|
|
2555
|
+
revertBtn.setAttribute('data-testid', 'webchat-revert-confirm');
|
|
2556
|
+
revertBtn.textContent = 'Revert';
|
|
2557
|
+
revertBtn.addEventListener('click', function () {
|
|
2558
|
+
revertBtn.disabled = true;
|
|
2559
|
+
revertBtn.textContent = 'Reverting\u2026';
|
|
2560
|
+
connection && connection.send(JSON.stringify({
|
|
2561
|
+
type: 'revert_execute', threadName: threadName,
|
|
2562
|
+
targetMessageId: turn.userMessageId,
|
|
2563
|
+
}));
|
|
2564
|
+
});
|
|
2565
|
+
actions.appendChild(revertBtn);
|
|
2566
|
+
|
|
2567
|
+
confirm.appendChild(actions);
|
|
2568
|
+
body.appendChild(confirm);
|
|
2569
|
+
}
|
|
2570
|
+
|
|
2571
|
+
function formatTime(ts) {
|
|
2572
|
+
var d = new Date(typeof ts === 'number' ? ts : Date.parse(ts));
|
|
2573
|
+
var h = d.getHours();
|
|
2574
|
+
var m = d.getMinutes();
|
|
2575
|
+
var ampm = h >= 12 ? 'PM' : 'AM';
|
|
2576
|
+
h = h % 12 || 12;
|
|
2577
|
+
return h + ':' + (m < 10 ? '0' : '') + m + ' ' + ampm;
|
|
2578
|
+
}
|
|
2579
|
+
|
|
2145
2580
|
// ── Message router ──
|
|
2146
2581
|
function handleServerMessage(data) {
|
|
2147
2582
|
switch (data.type) {
|
|
@@ -2187,7 +2622,7 @@
|
|
|
2187
2622
|
var state = getThreadState(data.threadName);
|
|
2188
2623
|
if (data.messages && data.messages.length > 0) {
|
|
2189
2624
|
state.messages = data.messages.map(function (m) {
|
|
2190
|
-
return { role: m.role, content: m.content };
|
|
2625
|
+
return { id: m.id, role: m.role, content: m.content };
|
|
2191
2626
|
});
|
|
2192
2627
|
}
|
|
2193
2628
|
refreshThreadPanel(data.threadName);
|
|
@@ -2249,6 +2684,52 @@
|
|
|
2249
2684
|
refreshThreadPanel(data.threadName);
|
|
2250
2685
|
}
|
|
2251
2686
|
break;
|
|
2687
|
+
|
|
2688
|
+
// ── Include/Revert responses ──
|
|
2689
|
+
case 'include_list':
|
|
2690
|
+
if (data.threadName && data.files) {
|
|
2691
|
+
var panel = document.querySelector('[data-thread-panel="' + data.threadName + '"]');
|
|
2692
|
+
if (panel) renderIncludeList(panel, data.threadName, data.files);
|
|
2693
|
+
}
|
|
2694
|
+
break;
|
|
2695
|
+
|
|
2696
|
+
case 'include_added':
|
|
2697
|
+
case 'include_removed':
|
|
2698
|
+
// List already updated by the handler — no extra action needed
|
|
2699
|
+
break;
|
|
2700
|
+
|
|
2701
|
+
case 'revert_list':
|
|
2702
|
+
if (data.threadName && data.turns) {
|
|
2703
|
+
var panel = document.querySelector('[data-thread-panel="' + data.threadName + '"]');
|
|
2704
|
+
if (panel) renderRevertList(panel, data.threadName, data.turns);
|
|
2705
|
+
}
|
|
2706
|
+
break;
|
|
2707
|
+
|
|
2708
|
+
case 'revert_done':
|
|
2709
|
+
if (data.threadName) {
|
|
2710
|
+
var panel = document.querySelector('[data-thread-panel="' + data.threadName + '"]');
|
|
2711
|
+
if (panel) {
|
|
2712
|
+
var overlay = panel.querySelector('.cumulus-overlay');
|
|
2713
|
+
if (data.success) {
|
|
2714
|
+
// Reload history and close overlay
|
|
2715
|
+
var tState = getThreadState(data.threadName);
|
|
2716
|
+
tState.messages = [];
|
|
2717
|
+
tState.historyLoaded = false;
|
|
2718
|
+
// Re-request history
|
|
2719
|
+
connection && connection.send(JSON.stringify({
|
|
2720
|
+
type: 'history', threadName: data.threadName, limit: 200,
|
|
2721
|
+
}));
|
|
2722
|
+
if (overlay) overlay.remove();
|
|
2723
|
+
} else {
|
|
2724
|
+
// Show error in overlay
|
|
2725
|
+
if (overlay && overlay._revertBody) {
|
|
2726
|
+
overlay._revertBody.innerHTML = '<div class="cumulus-overlay-status error">' +
|
|
2727
|
+
escapeHtml(data.error || 'Revert failed') + '</div>';
|
|
2728
|
+
}
|
|
2729
|
+
}
|
|
2730
|
+
}
|
|
2731
|
+
}
|
|
2732
|
+
break;
|
|
2252
2733
|
}
|
|
2253
2734
|
}
|
|
2254
2735
|
|