jupyter-chat-components 0.2.0 → 0.4.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/style/base.css CHANGED
@@ -222,6 +222,223 @@
222
222
  opacity: 0.5;
223
223
  }
224
224
 
225
+ /* ACP-style Tool Calls */
226
+ .jp-ai-tool-calls {
227
+ padding: 4px 0;
228
+ font-size: var(--jp-content-font-size1);
229
+ line-height: var(--jp-content-line-height);
230
+ margin-bottom: 4px;
231
+ }
232
+
233
+ .jp-ai-tool-call-item {
234
+ padding: 1px 0;
235
+ font-family: var(--jp-content-font-family);
236
+ }
237
+
238
+ .jp-ai-tool-call-item-in-progress,
239
+ .jp-ai-tool-call-item-pending {
240
+ color: var(--jp-ui-font-color2);
241
+ }
242
+
243
+ .jp-ai-tool-call-item-completed,
244
+ .jp-ai-tool-call-item-failed {
245
+ color: var(--jp-ui-font-color2);
246
+ }
247
+
248
+ .jp-ai-tool-call-item-completed .jp-ai-tool-call-item-icon {
249
+ color: var(--jp-success-color1, #388e3c);
250
+ }
251
+
252
+ .jp-ai-tool-call-item-failed .jp-ai-tool-call-item-icon {
253
+ color: var(--jp-error-color1, #d32f2f);
254
+ }
255
+
256
+ details.jp-ai-tool-call-item summary,
257
+ .jp-ai-tool-call-item details summary {
258
+ cursor: pointer;
259
+ list-style: none;
260
+ }
261
+
262
+ details.jp-ai-tool-call-item summary::-webkit-details-marker,
263
+ .jp-ai-tool-call-item details summary::-webkit-details-marker {
264
+ display: none;
265
+ }
266
+
267
+ details.jp-ai-tool-call-item summary::after,
268
+ .jp-ai-tool-call-item details summary::after {
269
+ content: '';
270
+ display: inline-block;
271
+ border-left: 4px solid transparent;
272
+ border-right: 4px solid transparent;
273
+ border-top: 5px solid currentcolor;
274
+ margin-left: 6px;
275
+ vertical-align: middle;
276
+ opacity: 0.5;
277
+ }
278
+
279
+ details[open].jp-ai-tool-call-item summary::after,
280
+ .jp-ai-tool-call-item details[open] summary::after {
281
+ border-top: none;
282
+ border-bottom: 5px solid currentcolor;
283
+ }
284
+
285
+ .jp-ai-tool-call-item-detail {
286
+ margin: 2px 0 2px 20px;
287
+ font-size: var(--jp-code-font-size);
288
+ font-family: var(--jp-code-font-family);
289
+ color: var(--jp-ui-font-color2);
290
+ white-space: pre-wrap;
291
+ word-break: break-all;
292
+ }
293
+
294
+ .jp-ai-tool-call-permission-buttons {
295
+ display: flex;
296
+ gap: 6px;
297
+ margin: 4px 0;
298
+ align-items: center;
299
+ flex-wrap: wrap;
300
+ }
301
+
302
+ .jp-ai-tool-call-permission-tree {
303
+ color: var(--jp-ui-font-color2);
304
+ font-family: monospace;
305
+ }
306
+
307
+ .jp-ai-tool-call-permission-btn {
308
+ padding: 2px 6px;
309
+ font-size: var(--jp-ui-font-size1);
310
+ font-family: var(--jp-ui-font-family);
311
+ border-radius: 3px;
312
+ border: 1px solid var(--jp-border-color1);
313
+ cursor: pointer;
314
+ background: var(--jp-layout-color1);
315
+ color: var(--jp-ui-font-color1);
316
+ }
317
+
318
+ .jp-ai-tool-call-permission-btn:disabled {
319
+ opacity: 0.5;
320
+ cursor: not-allowed;
321
+ }
322
+
323
+ .jp-ai-tool-call-permission-btn:hover:not(:disabled) {
324
+ background: var(--jp-layout-color2);
325
+ }
326
+
327
+ .jp-ai-tool-call-permission-btn-allow-once,
328
+ .jp-ai-tool-call-permission-btn-allow-always {
329
+ border-color: var(--jp-success-color1, #388e3c);
330
+ color: var(--jp-success-color1, #388e3c);
331
+ }
332
+
333
+ .jp-ai-tool-call-permission-btn-reject-once {
334
+ border-color: var(--jp-error-color1, #d32f2f);
335
+ color: var(--jp-error-color1, #d32f2f);
336
+ }
337
+
338
+ .jp-ai-tool-call-permission-label {
339
+ font-size: var(--jp-ui-font-size0);
340
+ color: var(--jp-ui-font-color2);
341
+ }
342
+
343
+ .jp-ai-tool-call-diff-container {
344
+ margin: 4px 0 4px 20px;
345
+ }
346
+
347
+ .jp-ai-tool-call-diff-block {
348
+ margin-bottom: 4px;
349
+ border: 1px solid var(--jp-border-color2);
350
+ border-radius: 3px;
351
+ overflow: hidden;
352
+ }
353
+
354
+ .jp-ai-tool-call-diff-header {
355
+ padding: 0 8px;
356
+ font-size: var(--jp-ui-font-size0);
357
+ font-family: var(--jp-code-font-family);
358
+ color: var(--jp-ui-font-color2);
359
+ }
360
+
361
+ .jp-ai-tool-call-diff-header-clickable {
362
+ cursor: pointer;
363
+ }
364
+
365
+ .jp-ai-tool-call-diff-header-clickable:hover {
366
+ text-decoration: underline;
367
+ }
368
+
369
+ .jp-ai-tool-call-diff-content {
370
+ margin: 0;
371
+ padding: 0;
372
+ font-size: var(--jp-code-font-size);
373
+ font-family: var(--jp-code-font-family);
374
+ line-height: var(--jp-code-line-height);
375
+ }
376
+
377
+ .jp-ai-tool-call-diff-line {
378
+ display: grid;
379
+ grid-template-columns: auto minmax(0, 1fr);
380
+ column-gap: 8px;
381
+ align-items: start;
382
+ padding: 0 8px;
383
+ min-height: calc(var(--jp-code-line-height) * 1em);
384
+ }
385
+
386
+ .jp-ai-tool-call-diff-line-prefix {
387
+ width: 1ch;
388
+ color: var(--jp-ui-font-color3);
389
+ user-select: none;
390
+ text-align: center;
391
+ }
392
+
393
+ .jp-ai-tool-call-diff-line-text {
394
+ min-width: 0;
395
+ white-space: pre-wrap;
396
+ word-break: break-word;
397
+ }
398
+
399
+ .jp-ai-tool-call-diff-line-text:empty::before {
400
+ content: '·';
401
+ opacity: 0.35;
402
+ }
403
+
404
+ .jp-ai-tool-call-diff-line.jp-mod-added {
405
+ background: color-mix(
406
+ in srgb,
407
+ var(--jp-success-color1, #388e3c) 15%,
408
+ transparent
409
+ );
410
+ }
411
+
412
+ .jp-ai-tool-call-diff-line.jp-mod-removed {
413
+ background: color-mix(
414
+ in srgb,
415
+ var(--jp-error-color1, #d32f2f) 15%,
416
+ transparent
417
+ );
418
+ }
419
+
420
+ .jp-ai-tool-call-diff-line.jp-mod-context {
421
+ color: var(--jp-ui-font-color2);
422
+ }
423
+
424
+ .jp-ai-tool-call-diff-empty {
425
+ padding: 6px 8px;
426
+ color: var(--jp-ui-font-color2);
427
+ font-style: italic;
428
+ }
429
+
430
+ .jp-ai-tool-call-diff-toggle {
431
+ padding: 4px 8px 8px;
432
+ border: none;
433
+ background: none;
434
+ color: var(--jp-ui-font-color2);
435
+ font-family: var(--jp-ui-font-family);
436
+ font-size: var(--jp-ui-font-size0);
437
+ font-style: italic;
438
+ cursor: pointer;
439
+ text-align: left;
440
+ }
441
+
225
442
  /* Inline Diff */
226
443
  .jp-ai-inline-diff-container {
227
444
  display: flex;
@@ -323,3 +540,61 @@
323
540
  color: var(--jp-ui-font-color1);
324
541
  text-decoration: underline;
325
542
  }
543
+
544
+ /* Message Queue Styling */
545
+ .jp-chat-message-queue {
546
+ display: flex;
547
+ flex-direction: column;
548
+ align-items: flex-end;
549
+ gap: 8px;
550
+ pointer-events: none;
551
+ width: 100%;
552
+ }
553
+
554
+ .jp-chat-message-queue-bubble {
555
+ position: relative;
556
+ display: inline-flex;
557
+ align-items: center;
558
+ gap: 6px;
559
+ background-color: var(--jp-layout-color2);
560
+ border: 1px solid var(--jp-border-color1);
561
+ border-radius: 16px;
562
+ padding: 4px 28px 4px 12px;
563
+ pointer-events: auto;
564
+ }
565
+
566
+ .jp-chat-message-queue-text {
567
+ font-size: var(--jp-ui-font-size0);
568
+ overflow: hidden;
569
+ text-overflow: ellipsis;
570
+ white-space: nowrap;
571
+ }
572
+
573
+ .jp-chat-message-queue-remove {
574
+ position: absolute;
575
+ right: 6px;
576
+ top: 50%;
577
+ transform: translateY(-50%);
578
+ display: inline-flex;
579
+ align-items: center;
580
+ justify-content: center;
581
+ width: 16px;
582
+ height: 16px;
583
+ padding: 0;
584
+ border: none;
585
+ border-radius: 50%;
586
+ background: transparent;
587
+ color: var(--jp-ui-font-color2);
588
+ font-size: 10px;
589
+ cursor: pointer;
590
+ opacity: 0;
591
+ }
592
+
593
+ .jp-chat-message-queue-remove:hover {
594
+ background: var(--jp-layout-color3);
595
+ color: var(--jp-ui-font-color1);
596
+ }
597
+
598
+ .jp-chat-message-queue-bubble:hover .jp-chat-message-queue-remove {
599
+ opacity: 1;
600
+ }