@cianfrani/ai-ui 0.1.0-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +144 -0
  3. package/dist/ai-ui.js +3218 -0
  4. package/dist/types/index.d.ts +7 -0
  5. package/dist/types/lib/has-slot-controller.d.ts +21 -0
  6. package/dist/types/lib/tool-tone.d.ts +2 -0
  7. package/dist/types/native-styles.d.ts +5 -0
  8. package/dist/types/semantic/ai-conversation.d.ts +28 -0
  9. package/dist/types/semantic/ai-event.d.ts +91 -0
  10. package/dist/types/semantic/ai-message.d.ts +45 -0
  11. package/dist/types/semantic/ai-thinking.d.ts +41 -0
  12. package/dist/types/semantic/ai-tool-call.d.ts +59 -0
  13. package/dist/types/semantic/ai-tool-result.d.ts +44 -0
  14. package/dist/types/semantic/index.d.ts +6 -0
  15. package/dist/types/visual/avatar.d.ts +34 -0
  16. package/dist/types/visual/badge.d.ts +32 -0
  17. package/dist/types/visual/divider.d.ts +26 -0
  18. package/dist/types/visual/icon.d.ts +24 -0
  19. package/dist/types/visual/index.d.ts +9 -0
  20. package/dist/types/visual/markdown.d.ts +52 -0
  21. package/dist/types/visual/stack.d.ts +32 -0
  22. package/dist/types/visual/status.d.ts +33 -0
  23. package/dist/types/visual/surface.d.ts +34 -0
  24. package/dist/types/visual/text.d.ts +37 -0
  25. package/package.json +67 -0
  26. package/src/custom-elements.json +3741 -0
  27. package/src/index.ts +8 -0
  28. package/src/lib/has-slot-controller.ts +61 -0
  29. package/src/lib/tool-tone.ts +18 -0
  30. package/src/native-styles.ts +29 -0
  31. package/src/semantic/ai-conversation.ts +84 -0
  32. package/src/semantic/ai-event.ts +452 -0
  33. package/src/semantic/ai-message.ts +235 -0
  34. package/src/semantic/ai-thinking.ts +190 -0
  35. package/src/semantic/ai-tool-call.ts +513 -0
  36. package/src/semantic/ai-tool-result.ts +239 -0
  37. package/src/semantic/index.ts +6 -0
  38. package/src/visual/avatar.ts +163 -0
  39. package/src/visual/badge.ts +141 -0
  40. package/src/visual/divider.ts +97 -0
  41. package/src/visual/icon.ts +97 -0
  42. package/src/visual/index.ts +9 -0
  43. package/src/visual/markdown.ts +888 -0
  44. package/src/visual/stack.ts +115 -0
  45. package/src/visual/status.ts +170 -0
  46. package/src/visual/surface.ts +150 -0
  47. package/src/visual/text.ts +141 -0
@@ -0,0 +1,3741 @@
1
+ {
2
+ "schemaVersion": "1.0.0",
3
+ "readme": "",
4
+ "modules": [
5
+ {
6
+ "kind": "javascript-module",
7
+ "path": "src/lib/has-slot-controller.ts",
8
+ "declarations": [
9
+ {
10
+ "kind": "class",
11
+ "description": "Reactive controller that tracks whether named/default slots have content.\n\nUsage:\n private readonly hasSlot = new HasSlotController(this, \"[default]\");\n // then in render():\n this.hasSlot.test(\"[default]\") // → boolean",
12
+ "name": "HasSlotController",
13
+ "members": [
14
+ {
15
+ "kind": "field",
16
+ "name": "host",
17
+ "type": {
18
+ "text": "ReactiveControllerHost & Element"
19
+ }
20
+ },
21
+ {
22
+ "kind": "field",
23
+ "name": "slotNames",
24
+ "type": {
25
+ "text": "string[]"
26
+ },
27
+ "default": "slotNames"
28
+ },
29
+ {
30
+ "kind": "method",
31
+ "name": "hasDefaultSlot",
32
+ "privacy": "private",
33
+ "return": {
34
+ "type": {
35
+ "text": "boolean"
36
+ }
37
+ }
38
+ },
39
+ {
40
+ "kind": "method",
41
+ "name": "hasNamedSlot",
42
+ "privacy": "private",
43
+ "return": {
44
+ "type": {
45
+ "text": "boolean"
46
+ }
47
+ },
48
+ "parameters": [
49
+ {
50
+ "name": "name",
51
+ "type": {
52
+ "text": "string"
53
+ }
54
+ }
55
+ ]
56
+ },
57
+ {
58
+ "kind": "method",
59
+ "name": "test",
60
+ "return": {
61
+ "type": {
62
+ "text": "boolean"
63
+ }
64
+ },
65
+ "parameters": [
66
+ {
67
+ "name": "slotName",
68
+ "type": {
69
+ "text": "string"
70
+ }
71
+ }
72
+ ],
73
+ "description": "Test whether a slot has content. Use `\"[default]\"` for the default slot."
74
+ },
75
+ {
76
+ "kind": "method",
77
+ "name": "hostConnected",
78
+ "return": {
79
+ "type": {
80
+ "text": "void"
81
+ }
82
+ }
83
+ },
84
+ {
85
+ "kind": "method",
86
+ "name": "hostDisconnected",
87
+ "return": {
88
+ "type": {
89
+ "text": "void"
90
+ }
91
+ }
92
+ },
93
+ {
94
+ "kind": "field",
95
+ "name": "handleSlotChange",
96
+ "privacy": "private"
97
+ }
98
+ ]
99
+ }
100
+ ],
101
+ "exports": [
102
+ {
103
+ "kind": "js",
104
+ "name": "HasSlotController",
105
+ "declaration": {
106
+ "name": "HasSlotController",
107
+ "module": "src/lib/has-slot-controller.ts"
108
+ }
109
+ }
110
+ ]
111
+ },
112
+ {
113
+ "kind": "javascript-module",
114
+ "path": "src/lib/tool-tone.ts",
115
+ "declarations": [
116
+ {
117
+ "kind": "function",
118
+ "name": "getToolTone",
119
+ "return": {
120
+ "type": {
121
+ "text": "ToolTone"
122
+ }
123
+ },
124
+ "parameters": [
125
+ {
126
+ "name": "name",
127
+ "type": {
128
+ "text": "string"
129
+ }
130
+ }
131
+ ]
132
+ }
133
+ ],
134
+ "exports": [
135
+ {
136
+ "kind": "js",
137
+ "name": "getToolTone",
138
+ "declaration": {
139
+ "name": "getToolTone",
140
+ "module": "src/lib/tool-tone.ts"
141
+ }
142
+ }
143
+ ]
144
+ },
145
+ {
146
+ "kind": "javascript-module",
147
+ "path": "src/semantic/ai-conversation.ts",
148
+ "declarations": [
149
+ {
150
+ "kind": "class",
151
+ "description": "Root ordered transcript container for message-first AI conversations.",
152
+ "name": "AiConversation",
153
+ "cssProperties": [
154
+ {
155
+ "description": "Conversation background. Default: transparent",
156
+ "name": "--ai-conversation-background"
157
+ },
158
+ {
159
+ "description": "Default text color. Default: var(--ai-color-text)",
160
+ "name": "--ai-conversation-color"
161
+ },
162
+ {
163
+ "description": "Vertical gap between direct child records. Default: var(--ai-space-lg)",
164
+ "name": "--ai-conversation-gap"
165
+ },
166
+ {
167
+ "description": "Gap when density=\"compact\". Default: var(--ai-space-sm)",
168
+ "name": "--ai-conversation-compact-gap"
169
+ },
170
+ {
171
+ "description": "Optional visual marker for live conversations. Default: transparent",
172
+ "name": "--ai-conversation-live-border-color"
173
+ }
174
+ ],
175
+ "slots": [
176
+ {
177
+ "description": "Ordered records: ai-message, ai-tool-call, ai-tool-result, ai-thinking, ai-event, or native elements.",
178
+ "name": ""
179
+ }
180
+ ],
181
+ "members": [
182
+ {
183
+ "kind": "field",
184
+ "name": "density",
185
+ "type": {
186
+ "text": "\"comfortable\" | \"compact\""
187
+ },
188
+ "default": "\"comfortable\"",
189
+ "description": "Spacing density for transcript rows. Invalid values fall back to comfortable.",
190
+ "attribute": "density",
191
+ "reflects": true
192
+ },
193
+ {
194
+ "kind": "field",
195
+ "name": "live",
196
+ "type": {
197
+ "text": "boolean"
198
+ },
199
+ "default": "false",
200
+ "description": "Whether this is a live/streaming region. Adds aria-live=\"polite\" by default.",
201
+ "attribute": "live",
202
+ "reflects": true
203
+ },
204
+ {
205
+ "kind": "field",
206
+ "name": "label",
207
+ "type": {
208
+ "text": "string"
209
+ },
210
+ "default": "\"Conversation\"",
211
+ "description": "Accessible label for the conversation region.",
212
+ "attribute": "label",
213
+ "reflects": true
214
+ },
215
+ {
216
+ "kind": "field",
217
+ "name": "normalizedDensity",
218
+ "type": {
219
+ "text": "\"comfortable\" | \"compact\""
220
+ },
221
+ "privacy": "private",
222
+ "readonly": true
223
+ }
224
+ ],
225
+ "attributes": [
226
+ {
227
+ "name": "density",
228
+ "type": {
229
+ "text": "\"comfortable\" | \"compact\""
230
+ },
231
+ "default": "\"comfortable\"",
232
+ "description": "Spacing density for transcript rows. Invalid values fall back to comfortable.",
233
+ "fieldName": "density"
234
+ },
235
+ {
236
+ "name": "live",
237
+ "type": {
238
+ "text": "boolean"
239
+ },
240
+ "default": "false",
241
+ "description": "Whether this is a live/streaming region. Adds aria-live=\"polite\" by default.",
242
+ "fieldName": "live"
243
+ },
244
+ {
245
+ "name": "label",
246
+ "type": {
247
+ "text": "string"
248
+ },
249
+ "default": "\"Conversation\"",
250
+ "description": "Accessible label for the conversation region.",
251
+ "fieldName": "label"
252
+ }
253
+ ],
254
+ "superclass": {
255
+ "name": "LitElement",
256
+ "package": "lit"
257
+ },
258
+ "tagName": "ai-conversation",
259
+ "customElement": true
260
+ }
261
+ ],
262
+ "exports": [
263
+ {
264
+ "kind": "js",
265
+ "name": "AiConversation",
266
+ "declaration": {
267
+ "name": "AiConversation",
268
+ "module": "src/semantic/ai-conversation.ts"
269
+ }
270
+ },
271
+ {
272
+ "kind": "custom-element-definition",
273
+ "name": "ai-conversation",
274
+ "declaration": {
275
+ "name": "AiConversation",
276
+ "module": "src/semantic/ai-conversation.ts"
277
+ }
278
+ }
279
+ ]
280
+ },
281
+ {
282
+ "kind": "javascript-module",
283
+ "path": "src/semantic/ai-event.ts",
284
+ "declarations": [
285
+ {
286
+ "kind": "class",
287
+ "description": "Non-message, non-operation transcript event.\n\nRepresents status changes, model switches, checkpoints, notes,\nsystem messages, errors, or custom events within an AI transcript.",
288
+ "name": "AiEvent",
289
+ "cssProperties": [
290
+ {
291
+ "description": "Event background. Default: transparent",
292
+ "name": "--ai-event-background-color"
293
+ },
294
+ {
295
+ "description": "Event text color. Default: var(--ai-color-text-muted)",
296
+ "name": "--ai-event-text-color"
297
+ },
298
+ {
299
+ "description": "Event border color. Default: var(--ai-color-border)",
300
+ "name": "--ai-event-border-color"
301
+ },
302
+ {
303
+ "description": "Event border width. Default: 0",
304
+ "name": "--ai-event-border-width"
305
+ },
306
+ {
307
+ "description": "Event border radius. Default: 0",
308
+ "name": "--ai-event-border-radius"
309
+ },
310
+ {
311
+ "description": "Content gap. Default: var(--ai-space-sm)",
312
+ "name": "--ai-event-content-gap"
313
+ },
314
+ {
315
+ "description": "Expanded content indentation. Default: clamp(20px, 7vw, 58px)",
316
+ "name": "--ai-event-content-indent"
317
+ },
318
+ {
319
+ "description": "Divider rule color. Default: subtle muted text color",
320
+ "name": "--ai-event-rule-color"
321
+ },
322
+ {
323
+ "description": "Divider rule color when expanded. Default: stronger muted text color",
324
+ "name": "--ai-event-open-rule-color"
325
+ },
326
+ {
327
+ "description": "Meta slot text color. Default: var(--ai-color-text-muted)",
328
+ "name": "--ai-event-meta-color"
329
+ },
330
+ {
331
+ "description": "Info severity color. Default: var(--ai-color-info)",
332
+ "name": "--ai-event-info-color"
333
+ },
334
+ {
335
+ "description": "Warning severity color. Default: var(--ai-color-warning)",
336
+ "name": "--ai-event-warning-color"
337
+ },
338
+ {
339
+ "description": "Error severity color. Default: var(--ai-color-error)",
340
+ "name": "--ai-event-error-color"
341
+ }
342
+ ],
343
+ "slots": [
344
+ {
345
+ "description": "Custom summary/label override",
346
+ "name": "summary"
347
+ },
348
+ {
349
+ "description": "Timestamps, source labels",
350
+ "name": "meta"
351
+ },
352
+ {
353
+ "description": "Default: event content",
354
+ "name": ""
355
+ }
356
+ ],
357
+ "members": [
358
+ {
359
+ "kind": "field",
360
+ "name": "kind",
361
+ "type": {
362
+ "text": "\"status\" | \"model-change\" | \"checkpoint\" | \"note\" | \"system\" | \"error\" | \"custom\""
363
+ },
364
+ "default": "\"custom\"",
365
+ "description": "Event kind.",
366
+ "attribute": "kind",
367
+ "reflects": true
368
+ },
369
+ {
370
+ "kind": "field",
371
+ "name": "severity",
372
+ "type": {
373
+ "text": "\"info\" | \"warning\" | \"error\""
374
+ },
375
+ "default": "\"info\"",
376
+ "description": "Severity level — controls accent color.",
377
+ "attribute": "severity",
378
+ "reflects": true
379
+ },
380
+ {
381
+ "kind": "field",
382
+ "name": "source",
383
+ "type": {
384
+ "text": "string"
385
+ },
386
+ "default": "\"\"",
387
+ "description": "Origin source identifier.",
388
+ "attribute": "source",
389
+ "reflects": true
390
+ },
391
+ {
392
+ "kind": "field",
393
+ "name": "htmlFor",
394
+ "type": {
395
+ "text": "string"
396
+ },
397
+ "default": "\"\"",
398
+ "description": "ID of the element this event pertains to (maps to `for` attribute).",
399
+ "attribute": "for",
400
+ "reflects": true
401
+ },
402
+ {
403
+ "kind": "field",
404
+ "name": "open",
405
+ "type": {
406
+ "text": "boolean"
407
+ },
408
+ "default": "false",
409
+ "description": "Whether the event details are expanded.",
410
+ "attribute": "open",
411
+ "reflects": true
412
+ },
413
+ {
414
+ "kind": "field",
415
+ "name": "_details",
416
+ "type": {
417
+ "text": "HTMLDetailsElement | null"
418
+ },
419
+ "privacy": "private"
420
+ },
421
+ {
422
+ "kind": "method",
423
+ "name": "show",
424
+ "return": {
425
+ "type": {
426
+ "text": "void"
427
+ }
428
+ },
429
+ "description": "Expand the event details."
430
+ },
431
+ {
432
+ "kind": "method",
433
+ "name": "hide",
434
+ "return": {
435
+ "type": {
436
+ "text": "void"
437
+ }
438
+ },
439
+ "description": "Collapse the event details."
440
+ },
441
+ {
442
+ "kind": "method",
443
+ "name": "toggle",
444
+ "return": {
445
+ "type": {
446
+ "text": "void"
447
+ }
448
+ },
449
+ "parameters": [
450
+ {
451
+ "name": "force",
452
+ "optional": true,
453
+ "type": {
454
+ "text": "boolean"
455
+ }
456
+ }
457
+ ],
458
+ "description": "Toggle open state. Optionally force open/closed."
459
+ },
460
+ {
461
+ "kind": "field",
462
+ "name": "_prevOpen",
463
+ "type": {
464
+ "text": "boolean"
465
+ },
466
+ "privacy": "private",
467
+ "default": "false"
468
+ },
469
+ {
470
+ "kind": "method",
471
+ "name": "_onToggle",
472
+ "privacy": "private",
473
+ "return": {
474
+ "type": {
475
+ "text": "void"
476
+ }
477
+ }
478
+ },
479
+ {
480
+ "kind": "field",
481
+ "name": "_severityColor",
482
+ "type": {
483
+ "text": "string"
484
+ },
485
+ "privacy": "private",
486
+ "readonly": true
487
+ },
488
+ {
489
+ "kind": "field",
490
+ "name": "_kindLabel",
491
+ "type": {
492
+ "text": "string"
493
+ },
494
+ "privacy": "private",
495
+ "readonly": true
496
+ }
497
+ ],
498
+ "events": [
499
+ {
500
+ "type": {
501
+ "text": "CustomEvent"
502
+ }
503
+ },
504
+ {
505
+ "description": "Dispatched when opened. Bubbles, composed.",
506
+ "name": "ai-show"
507
+ },
508
+ {
509
+ "description": "Dispatched when closed. Bubbles, composed.",
510
+ "name": "ai-hide"
511
+ }
512
+ ],
513
+ "attributes": [
514
+ {
515
+ "name": "kind",
516
+ "type": {
517
+ "text": "\"status\" | \"model-change\" | \"checkpoint\" | \"note\" | \"system\" | \"error\" | \"custom\""
518
+ },
519
+ "default": "\"custom\"",
520
+ "description": "Event kind.",
521
+ "fieldName": "kind"
522
+ },
523
+ {
524
+ "name": "severity",
525
+ "type": {
526
+ "text": "\"info\" | \"warning\" | \"error\""
527
+ },
528
+ "default": "\"info\"",
529
+ "description": "Severity level — controls accent color.",
530
+ "fieldName": "severity"
531
+ },
532
+ {
533
+ "name": "source",
534
+ "type": {
535
+ "text": "string"
536
+ },
537
+ "default": "\"\"",
538
+ "description": "Origin source identifier.",
539
+ "fieldName": "source"
540
+ },
541
+ {
542
+ "name": "for",
543
+ "type": {
544
+ "text": "string"
545
+ },
546
+ "default": "\"\"",
547
+ "description": "ID of the element this event pertains to (maps to `for` attribute).",
548
+ "fieldName": "htmlFor"
549
+ },
550
+ {
551
+ "name": "open",
552
+ "type": {
553
+ "text": "boolean"
554
+ },
555
+ "default": "false",
556
+ "description": "Whether the event details are expanded.",
557
+ "fieldName": "open"
558
+ }
559
+ ],
560
+ "superclass": {
561
+ "name": "LitElement",
562
+ "package": "lit"
563
+ },
564
+ "tagName": "ai-event",
565
+ "customElement": true
566
+ }
567
+ ],
568
+ "exports": [
569
+ {
570
+ "kind": "js",
571
+ "name": "AiEvent",
572
+ "declaration": {
573
+ "name": "AiEvent",
574
+ "module": "src/semantic/ai-event.ts"
575
+ }
576
+ },
577
+ {
578
+ "kind": "custom-element-definition",
579
+ "name": "ai-event",
580
+ "declaration": {
581
+ "name": "AiEvent",
582
+ "module": "src/semantic/ai-event.ts"
583
+ }
584
+ }
585
+ ]
586
+ },
587
+ {
588
+ "kind": "javascript-module",
589
+ "path": "src/semantic/ai-message.ts",
590
+ "declarations": [
591
+ {
592
+ "kind": "class",
593
+ "description": "Message-first transcript record with role-specific pi-ui presentation.",
594
+ "name": "AiMessage",
595
+ "cssProperties": [
596
+ {
597
+ "description": "Message body background. Default: transparent",
598
+ "name": "--ai-message-background"
599
+ },
600
+ {
601
+ "description": "Message text color. Default: inherit",
602
+ "name": "--ai-message-color"
603
+ },
604
+ {
605
+ "description": "Optional message border color. Default: transparent",
606
+ "name": "--ai-message-border-color"
607
+ },
608
+ {
609
+ "description": "Optional border width. Default: 0",
610
+ "name": "--ai-message-border-width"
611
+ },
612
+ {
613
+ "description": "Optional message radius. Default: 0",
614
+ "name": "--ai-message-radius"
615
+ },
616
+ {
617
+ "description": "Gap between slotted content blocks. Default: var(--spacing-xs)",
618
+ "name": "--ai-message-gap"
619
+ },
620
+ {
621
+ "description": "User bubble background. Default: var(--accent)",
622
+ "name": "--ai-message-user-background"
623
+ },
624
+ {
625
+ "description": "User bubble color. Default: var(--text-on-accent)",
626
+ "name": "--ai-message-user-color"
627
+ },
628
+ {
629
+ "description": "User bubble max width. Default: min(90%, 640px)",
630
+ "name": "--ai-message-user-max-width"
631
+ },
632
+ {
633
+ "description": "Assistant rail color.",
634
+ "name": "--ai-message-assistant-rail-color"
635
+ },
636
+ {
637
+ "description": "Assistant label color. Default: var(--text-muted)",
638
+ "name": "--ai-message-assistant-label-color"
639
+ },
640
+ {
641
+ "description": "Meta text color. Default: var(--text-muted)",
642
+ "name": "--ai-message-meta-color"
643
+ }
644
+ ],
645
+ "slots": [
646
+ {
647
+ "description": "Content blocks, usually ai-markdown, ai-thinking, ai-tool-call, ai-tool-result, or ai-event.",
648
+ "name": ""
649
+ },
650
+ {
651
+ "description": "Timestamp, model, or other metadata. Prefer native <time>.",
652
+ "name": "meta"
653
+ },
654
+ {
655
+ "description": "Optional actor avatar.",
656
+ "name": "avatar"
657
+ },
658
+ {
659
+ "description": "Optional actor label.",
660
+ "name": "actor"
661
+ }
662
+ ],
663
+ "members": [
664
+ {
665
+ "kind": "field",
666
+ "name": "role",
667
+ "type": {
668
+ "text": "\"user\" | \"assistant\" | \"system\" | \"tool\""
669
+ },
670
+ "default": "\"assistant\"",
671
+ "description": "Message author/source role. Unknown values render as system-style rows.",
672
+ "attribute": "role",
673
+ "reflects": true
674
+ },
675
+ {
676
+ "kind": "field",
677
+ "name": "htmlFor",
678
+ "type": {
679
+ "text": "string"
680
+ },
681
+ "default": "\"\"",
682
+ "description": "Optional associated record id; maps to native `for` attribute.",
683
+ "attribute": "for",
684
+ "reflects": true
685
+ },
686
+ {
687
+ "kind": "field",
688
+ "name": "status",
689
+ "type": {
690
+ "text": "\"pending\" | \"running\" | \"success\" | \"error\" | \"cancelled\" | \"unknown\""
691
+ },
692
+ "default": "\"unknown\"",
693
+ "description": "Message lifecycle status.",
694
+ "attribute": "status",
695
+ "reflects": true
696
+ },
697
+ {
698
+ "kind": "field",
699
+ "name": "timestamp",
700
+ "type": {
701
+ "text": "string"
702
+ },
703
+ "default": "\"\"",
704
+ "description": "ISO-ish timestamp for metadata/association; visual formatting is left to slotted meta.",
705
+ "attribute": "timestamp",
706
+ "reflects": true
707
+ },
708
+ {
709
+ "kind": "field",
710
+ "name": "label",
711
+ "type": {
712
+ "text": "string"
713
+ },
714
+ "default": "\"\"",
715
+ "description": "Display label for role chrome.",
716
+ "attribute": "label",
717
+ "reflects": true
718
+ },
719
+ {
720
+ "kind": "field",
721
+ "name": "normalizedRole",
722
+ "type": {
723
+ "text": "AiMessageRole"
724
+ },
725
+ "privacy": "private",
726
+ "readonly": true
727
+ },
728
+ {
729
+ "kind": "field",
730
+ "name": "actorLabel",
731
+ "type": {
732
+ "text": "string"
733
+ },
734
+ "privacy": "private",
735
+ "readonly": true
736
+ }
737
+ ],
738
+ "attributes": [
739
+ {
740
+ "name": "role",
741
+ "type": {
742
+ "text": "\"user\" | \"assistant\" | \"system\" | \"tool\""
743
+ },
744
+ "default": "\"assistant\"",
745
+ "description": "Message author/source role. Unknown values render as system-style rows.",
746
+ "fieldName": "role"
747
+ },
748
+ {
749
+ "name": "for",
750
+ "type": {
751
+ "text": "string"
752
+ },
753
+ "default": "\"\"",
754
+ "description": "Optional associated record id; maps to native `for` attribute.",
755
+ "fieldName": "htmlFor"
756
+ },
757
+ {
758
+ "name": "status",
759
+ "type": {
760
+ "text": "\"pending\" | \"running\" | \"success\" | \"error\" | \"cancelled\" | \"unknown\""
761
+ },
762
+ "default": "\"unknown\"",
763
+ "description": "Message lifecycle status.",
764
+ "fieldName": "status"
765
+ },
766
+ {
767
+ "name": "timestamp",
768
+ "type": {
769
+ "text": "string"
770
+ },
771
+ "default": "\"\"",
772
+ "description": "ISO-ish timestamp for metadata/association; visual formatting is left to slotted meta.",
773
+ "fieldName": "timestamp"
774
+ },
775
+ {
776
+ "name": "label",
777
+ "type": {
778
+ "text": "string"
779
+ },
780
+ "default": "\"\"",
781
+ "description": "Display label for role chrome.",
782
+ "fieldName": "label"
783
+ }
784
+ ],
785
+ "superclass": {
786
+ "name": "LitElement",
787
+ "package": "lit"
788
+ },
789
+ "tagName": "ai-message",
790
+ "customElement": true
791
+ }
792
+ ],
793
+ "exports": [
794
+ {
795
+ "kind": "js",
796
+ "name": "AiMessage",
797
+ "declaration": {
798
+ "name": "AiMessage",
799
+ "module": "src/semantic/ai-message.ts"
800
+ }
801
+ },
802
+ {
803
+ "kind": "custom-element-definition",
804
+ "name": "ai-message",
805
+ "declaration": {
806
+ "name": "AiMessage",
807
+ "module": "src/semantic/ai-message.ts"
808
+ }
809
+ }
810
+ ]
811
+ },
812
+ {
813
+ "kind": "javascript-module",
814
+ "path": "src/semantic/ai-thinking.ts",
815
+ "declarations": [
816
+ {
817
+ "kind": "class",
818
+ "description": "Specialized assistant content block for model reasoning.",
819
+ "name": "AiThinking",
820
+ "cssProperties": [
821
+ {
822
+ "description": "Thinking content color.",
823
+ "name": "--ai-thinking-color"
824
+ },
825
+ {
826
+ "description": "Muted/placeholder color.",
827
+ "name": "--ai-thinking-muted-color"
828
+ },
829
+ {
830
+ "description": "Max scroll height. Default: 140px",
831
+ "name": "--ai-thinking-max-height"
832
+ },
833
+ {
834
+ "description": "Summary color.",
835
+ "name": "--ai-thinking-summary-color"
836
+ }
837
+ ],
838
+ "slots": [
839
+ {
840
+ "description": "Thinking content if content property is not set.",
841
+ "name": ""
842
+ },
843
+ {
844
+ "description": "Optional metadata.",
845
+ "name": "meta"
846
+ }
847
+ ],
848
+ "members": [
849
+ {
850
+ "kind": "field",
851
+ "name": "content",
852
+ "type": {
853
+ "text": "string"
854
+ },
855
+ "default": "\"\"",
856
+ "description": "Thinking text to render. Prefer property binding for streaming content.",
857
+ "attribute": "content"
858
+ },
859
+ {
860
+ "kind": "field",
861
+ "name": "source",
862
+ "type": {
863
+ "text": "\"model\" | \"assistant\" | \"unknown\""
864
+ },
865
+ "default": "\"unknown\"",
866
+ "description": "Origin of the thinking block.",
867
+ "attribute": "source",
868
+ "reflects": true
869
+ },
870
+ {
871
+ "kind": "field",
872
+ "name": "redacted",
873
+ "type": {
874
+ "text": "boolean"
875
+ },
876
+ "default": "false",
877
+ "description": "Thinking exists but is not available.",
878
+ "attribute": "redacted",
879
+ "reflects": true
880
+ },
881
+ {
882
+ "kind": "field",
883
+ "name": "open",
884
+ "type": {
885
+ "text": "boolean"
886
+ },
887
+ "default": "false",
888
+ "description": "Whether the disclosure is expanded.",
889
+ "attribute": "open",
890
+ "reflects": true
891
+ },
892
+ {
893
+ "kind": "field",
894
+ "name": "headline",
895
+ "type": {
896
+ "text": "string"
897
+ },
898
+ "default": "\"\"",
899
+ "description": "Optional summary headline. Defaults to a first-sentence summary of content.",
900
+ "attribute": "headline",
901
+ "reflects": true
902
+ },
903
+ {
904
+ "kind": "method",
905
+ "name": "show",
906
+ "return": {
907
+ "type": {
908
+ "text": "void"
909
+ }
910
+ }
911
+ },
912
+ {
913
+ "kind": "method",
914
+ "name": "hide",
915
+ "return": {
916
+ "type": {
917
+ "text": "void"
918
+ }
919
+ }
920
+ },
921
+ {
922
+ "kind": "method",
923
+ "name": "toggle",
924
+ "return": {
925
+ "type": {
926
+ "text": "void"
927
+ }
928
+ },
929
+ "parameters": [
930
+ {
931
+ "name": "force",
932
+ "optional": true,
933
+ "type": {
934
+ "text": "boolean"
935
+ }
936
+ }
937
+ ]
938
+ },
939
+ {
940
+ "kind": "method",
941
+ "name": "handleShow",
942
+ "privacy": "private"
943
+ },
944
+ {
945
+ "kind": "method",
946
+ "name": "handleHide",
947
+ "privacy": "private"
948
+ }
949
+ ],
950
+ "events": [
951
+ {
952
+ "name": "ai-show",
953
+ "type": {
954
+ "text": "CustomEvent"
955
+ },
956
+ "description": "Emitted when disclosure opens. Bubbles, composed."
957
+ },
958
+ {
959
+ "name": "ai-hide",
960
+ "type": {
961
+ "text": "CustomEvent"
962
+ },
963
+ "description": "Emitted when disclosure closes. Bubbles, composed."
964
+ }
965
+ ],
966
+ "attributes": [
967
+ {
968
+ "name": "content",
969
+ "type": {
970
+ "text": "string"
971
+ },
972
+ "default": "\"\"",
973
+ "description": "Thinking text to render. Prefer property binding for streaming content.",
974
+ "fieldName": "content"
975
+ },
976
+ {
977
+ "name": "source",
978
+ "type": {
979
+ "text": "\"model\" | \"assistant\" | \"unknown\""
980
+ },
981
+ "default": "\"unknown\"",
982
+ "description": "Origin of the thinking block.",
983
+ "fieldName": "source"
984
+ },
985
+ {
986
+ "name": "redacted",
987
+ "type": {
988
+ "text": "boolean"
989
+ },
990
+ "default": "false",
991
+ "description": "Thinking exists but is not available.",
992
+ "fieldName": "redacted"
993
+ },
994
+ {
995
+ "name": "open",
996
+ "type": {
997
+ "text": "boolean"
998
+ },
999
+ "default": "false",
1000
+ "description": "Whether the disclosure is expanded.",
1001
+ "fieldName": "open"
1002
+ },
1003
+ {
1004
+ "name": "headline",
1005
+ "type": {
1006
+ "text": "string"
1007
+ },
1008
+ "default": "\"\"",
1009
+ "description": "Optional summary headline. Defaults to a first-sentence summary of content.",
1010
+ "fieldName": "headline"
1011
+ }
1012
+ ],
1013
+ "superclass": {
1014
+ "name": "LitElement",
1015
+ "package": "lit"
1016
+ },
1017
+ "tagName": "ai-thinking",
1018
+ "customElement": true
1019
+ }
1020
+ ],
1021
+ "exports": [
1022
+ {
1023
+ "kind": "js",
1024
+ "name": "AiThinking",
1025
+ "declaration": {
1026
+ "name": "AiThinking",
1027
+ "module": "src/semantic/ai-thinking.ts"
1028
+ }
1029
+ },
1030
+ {
1031
+ "kind": "custom-element-definition",
1032
+ "name": "ai-thinking",
1033
+ "declaration": {
1034
+ "name": "AiThinking",
1035
+ "module": "src/semantic/ai-thinking.ts"
1036
+ }
1037
+ }
1038
+ ]
1039
+ },
1040
+ {
1041
+ "kind": "javascript-module",
1042
+ "path": "src/semantic/ai-tool-call.ts",
1043
+ "declarations": [
1044
+ {
1045
+ "kind": "class",
1046
+ "description": "Specialized assistant content block for a tool call.",
1047
+ "name": "AiToolCall",
1048
+ "cssProperties": [
1049
+ {
1050
+ "description": "Tool call background.",
1051
+ "name": "--ai-tool-call-background"
1052
+ },
1053
+ {
1054
+ "description": "Tool call text color.",
1055
+ "name": "--ai-tool-call-color"
1056
+ },
1057
+ {
1058
+ "description": "Tool call border color.",
1059
+ "name": "--ai-tool-call-border-color"
1060
+ },
1061
+ {
1062
+ "description": "Summary row background.",
1063
+ "name": "--ai-tool-call-summary-background"
1064
+ },
1065
+ {
1066
+ "description": "Input slot background.",
1067
+ "name": "--ai-tool-call-input-background"
1068
+ },
1069
+ {
1070
+ "description": "Generic status color.",
1071
+ "name": "--ai-tool-call-status-color"
1072
+ },
1073
+ {
1074
+ "description": "Success status color.",
1075
+ "name": "--ai-tool-call-success-color"
1076
+ },
1077
+ {
1078
+ "description": "Error status color.",
1079
+ "name": "--ai-tool-call-error-color"
1080
+ },
1081
+ {
1082
+ "description": "Running status color.",
1083
+ "name": "--ai-tool-call-running-color"
1084
+ }
1085
+ ],
1086
+ "slots": [
1087
+ {
1088
+ "description": "Custom summary row/header",
1089
+ "name": "summary"
1090
+ },
1091
+ {
1092
+ "description": "Tool input/arguments; native <pre><code> is recommended.",
1093
+ "name": "input"
1094
+ },
1095
+ {
1096
+ "description": "Result/details content, commonly nested ai-tool-result.",
1097
+ "name": ""
1098
+ }
1099
+ ],
1100
+ "members": [
1101
+ {
1102
+ "kind": "field",
1103
+ "name": "id",
1104
+ "type": {
1105
+ "text": "string"
1106
+ },
1107
+ "default": "\"\"",
1108
+ "attribute": "id",
1109
+ "reflects": true
1110
+ },
1111
+ {
1112
+ "kind": "field",
1113
+ "name": "name",
1114
+ "type": {
1115
+ "text": "string"
1116
+ },
1117
+ "default": "\"\"",
1118
+ "attribute": "name",
1119
+ "reflects": true
1120
+ },
1121
+ {
1122
+ "kind": "field",
1123
+ "name": "label",
1124
+ "type": {
1125
+ "text": "string"
1126
+ },
1127
+ "default": "\"\"",
1128
+ "attribute": "label",
1129
+ "reflects": true
1130
+ },
1131
+ {
1132
+ "kind": "field",
1133
+ "name": "kind",
1134
+ "type": {
1135
+ "text": "\"tool\" | \"shell\" | \"file\" | \"search\" | \"delegate\" | \"network\" | \"custom\" | \"unknown\""
1136
+ },
1137
+ "default": "\"unknown\"",
1138
+ "attribute": "kind",
1139
+ "reflects": true
1140
+ },
1141
+ {
1142
+ "kind": "field",
1143
+ "name": "effect",
1144
+ "type": {
1145
+ "text": "\"read\" | \"write\" | \"mixed\" | \"unknown\""
1146
+ },
1147
+ "default": "\"unknown\"",
1148
+ "attribute": "effect",
1149
+ "reflects": true
1150
+ },
1151
+ {
1152
+ "kind": "field",
1153
+ "name": "headline",
1154
+ "type": {
1155
+ "text": "string"
1156
+ },
1157
+ "default": "\"\"",
1158
+ "attribute": "headline",
1159
+ "reflects": true
1160
+ },
1161
+ {
1162
+ "kind": "field",
1163
+ "name": "subline",
1164
+ "type": {
1165
+ "text": "string"
1166
+ },
1167
+ "default": "\"\"",
1168
+ "attribute": "subline",
1169
+ "reflects": true
1170
+ },
1171
+ {
1172
+ "kind": "field",
1173
+ "name": "status",
1174
+ "type": {
1175
+ "text": "\"pending\" | \"running\" | \"success\" | \"error\" | \"cancelled\" | \"unknown\""
1176
+ },
1177
+ "default": "\"unknown\"",
1178
+ "attribute": "status",
1179
+ "reflects": true
1180
+ },
1181
+ {
1182
+ "kind": "field",
1183
+ "name": "open",
1184
+ "type": {
1185
+ "text": "boolean"
1186
+ },
1187
+ "default": "false",
1188
+ "attribute": "open",
1189
+ "reflects": true
1190
+ },
1191
+ {
1192
+ "kind": "field",
1193
+ "name": "hasSlot",
1194
+ "privacy": "private",
1195
+ "readonly": true,
1196
+ "default": "new HasSlotController(this, \"[default]\", \"input\", \"summary\")"
1197
+ },
1198
+ {
1199
+ "kind": "field",
1200
+ "name": "tone",
1201
+ "privacy": "private",
1202
+ "readonly": true
1203
+ },
1204
+ {
1205
+ "kind": "field",
1206
+ "name": "badgeText",
1207
+ "type": {
1208
+ "text": "string"
1209
+ },
1210
+ "privacy": "private",
1211
+ "readonly": true
1212
+ },
1213
+ {
1214
+ "kind": "field",
1215
+ "name": "headlineText",
1216
+ "type": {
1217
+ "text": "string"
1218
+ },
1219
+ "privacy": "private",
1220
+ "readonly": true
1221
+ },
1222
+ {
1223
+ "kind": "field",
1224
+ "name": "hasBodyContent",
1225
+ "type": {
1226
+ "text": "boolean"
1227
+ },
1228
+ "privacy": "private",
1229
+ "readonly": true
1230
+ },
1231
+ {
1232
+ "kind": "field",
1233
+ "name": "hasInputContent",
1234
+ "type": {
1235
+ "text": "boolean"
1236
+ },
1237
+ "privacy": "private",
1238
+ "readonly": true
1239
+ },
1240
+ {
1241
+ "kind": "field",
1242
+ "name": "hasSummaryContent",
1243
+ "type": {
1244
+ "text": "boolean"
1245
+ },
1246
+ "privacy": "private",
1247
+ "readonly": true
1248
+ },
1249
+ {
1250
+ "kind": "field",
1251
+ "name": "isExpandable",
1252
+ "type": {
1253
+ "text": "boolean"
1254
+ },
1255
+ "privacy": "private",
1256
+ "readonly": true
1257
+ },
1258
+ {
1259
+ "kind": "field",
1260
+ "name": "hasVisibleHeaderContent",
1261
+ "type": {
1262
+ "text": "boolean"
1263
+ },
1264
+ "privacy": "private",
1265
+ "readonly": true
1266
+ },
1267
+ {
1268
+ "kind": "method",
1269
+ "name": "show",
1270
+ "return": {
1271
+ "type": {
1272
+ "text": "void"
1273
+ }
1274
+ }
1275
+ },
1276
+ {
1277
+ "kind": "method",
1278
+ "name": "hide",
1279
+ "return": {
1280
+ "type": {
1281
+ "text": "void"
1282
+ }
1283
+ }
1284
+ },
1285
+ {
1286
+ "kind": "method",
1287
+ "name": "toggle",
1288
+ "return": {
1289
+ "type": {
1290
+ "text": "void"
1291
+ }
1292
+ },
1293
+ "parameters": [
1294
+ {
1295
+ "name": "force",
1296
+ "optional": true,
1297
+ "type": {
1298
+ "text": "boolean"
1299
+ }
1300
+ }
1301
+ ]
1302
+ },
1303
+ {
1304
+ "kind": "method",
1305
+ "name": "emitToggle",
1306
+ "privacy": "private",
1307
+ "parameters": [
1308
+ {
1309
+ "name": "isOpen",
1310
+ "type": {
1311
+ "text": "boolean"
1312
+ }
1313
+ }
1314
+ ]
1315
+ },
1316
+ {
1317
+ "kind": "method",
1318
+ "name": "handleToggle",
1319
+ "privacy": "private",
1320
+ "parameters": [
1321
+ {
1322
+ "name": "e",
1323
+ "type": {
1324
+ "text": "Event"
1325
+ }
1326
+ }
1327
+ ]
1328
+ },
1329
+ {
1330
+ "kind": "method",
1331
+ "name": "renderIcon",
1332
+ "privacy": "private"
1333
+ },
1334
+ {
1335
+ "kind": "method",
1336
+ "name": "renderHeaderContent",
1337
+ "privacy": "private"
1338
+ }
1339
+ ],
1340
+ "events": [
1341
+ {
1342
+ "type": {
1343
+ "text": "CustomEvent"
1344
+ }
1345
+ },
1346
+ {
1347
+ "description": "Emitted when disclosure opens. Bubbles, composed.",
1348
+ "name": "ai-show"
1349
+ },
1350
+ {
1351
+ "description": "Emitted when disclosure closes. Bubbles, composed.",
1352
+ "name": "ai-hide"
1353
+ }
1354
+ ],
1355
+ "attributes": [
1356
+ {
1357
+ "name": "id",
1358
+ "type": {
1359
+ "text": "string"
1360
+ },
1361
+ "default": "\"\"",
1362
+ "fieldName": "id"
1363
+ },
1364
+ {
1365
+ "name": "name",
1366
+ "type": {
1367
+ "text": "string"
1368
+ },
1369
+ "default": "\"\"",
1370
+ "fieldName": "name"
1371
+ },
1372
+ {
1373
+ "name": "label",
1374
+ "type": {
1375
+ "text": "string"
1376
+ },
1377
+ "default": "\"\"",
1378
+ "fieldName": "label"
1379
+ },
1380
+ {
1381
+ "name": "kind",
1382
+ "type": {
1383
+ "text": "\"tool\" | \"shell\" | \"file\" | \"search\" | \"delegate\" | \"network\" | \"custom\" | \"unknown\""
1384
+ },
1385
+ "default": "\"unknown\"",
1386
+ "fieldName": "kind"
1387
+ },
1388
+ {
1389
+ "name": "effect",
1390
+ "type": {
1391
+ "text": "\"read\" | \"write\" | \"mixed\" | \"unknown\""
1392
+ },
1393
+ "default": "\"unknown\"",
1394
+ "fieldName": "effect"
1395
+ },
1396
+ {
1397
+ "name": "headline",
1398
+ "type": {
1399
+ "text": "string"
1400
+ },
1401
+ "default": "\"\"",
1402
+ "fieldName": "headline"
1403
+ },
1404
+ {
1405
+ "name": "subline",
1406
+ "type": {
1407
+ "text": "string"
1408
+ },
1409
+ "default": "\"\"",
1410
+ "fieldName": "subline"
1411
+ },
1412
+ {
1413
+ "name": "status",
1414
+ "type": {
1415
+ "text": "\"pending\" | \"running\" | \"success\" | \"error\" | \"cancelled\" | \"unknown\""
1416
+ },
1417
+ "default": "\"unknown\"",
1418
+ "fieldName": "status"
1419
+ },
1420
+ {
1421
+ "name": "open",
1422
+ "type": {
1423
+ "text": "boolean"
1424
+ },
1425
+ "default": "false",
1426
+ "fieldName": "open"
1427
+ }
1428
+ ],
1429
+ "superclass": {
1430
+ "name": "LitElement",
1431
+ "package": "lit"
1432
+ },
1433
+ "tagName": "ai-tool-call",
1434
+ "customElement": true
1435
+ }
1436
+ ],
1437
+ "exports": [
1438
+ {
1439
+ "kind": "js",
1440
+ "name": "AiToolCall",
1441
+ "declaration": {
1442
+ "name": "AiToolCall",
1443
+ "module": "src/semantic/ai-tool-call.ts"
1444
+ }
1445
+ },
1446
+ {
1447
+ "kind": "custom-element-definition",
1448
+ "name": "ai-tool-call",
1449
+ "declaration": {
1450
+ "name": "AiToolCall",
1451
+ "module": "src/semantic/ai-tool-call.ts"
1452
+ }
1453
+ }
1454
+ ]
1455
+ },
1456
+ {
1457
+ "kind": "javascript-module",
1458
+ "path": "src/semantic/ai-tool-result.ts",
1459
+ "declarations": [
1460
+ {
1461
+ "kind": "function",
1462
+ "name": "normalizeToolOutput",
1463
+ "return": {
1464
+ "type": {
1465
+ "text": "string"
1466
+ }
1467
+ },
1468
+ "parameters": [
1469
+ {
1470
+ "name": "content",
1471
+ "type": {
1472
+ "text": "string"
1473
+ }
1474
+ }
1475
+ ]
1476
+ },
1477
+ {
1478
+ "kind": "class",
1479
+ "description": "Specialized runtime/tool output content block.",
1480
+ "name": "AiToolResult",
1481
+ "cssProperties": [
1482
+ {
1483
+ "description": "Output text color.",
1484
+ "name": "--ai-tool-result-color"
1485
+ },
1486
+ {
1487
+ "description": "Output background.",
1488
+ "name": "--ai-tool-result-background"
1489
+ },
1490
+ {
1491
+ "description": "Meta slot text color.",
1492
+ "name": "--ai-tool-result-meta-color"
1493
+ },
1494
+ {
1495
+ "description": "Error text color.",
1496
+ "name": "--ai-tool-result-error-color"
1497
+ },
1498
+ {
1499
+ "description": "Code/output text color.",
1500
+ "name": "--ai-tool-result-code-color"
1501
+ },
1502
+ {
1503
+ "description": "Code/output font family.",
1504
+ "name": "--ai-tool-result-code-font"
1505
+ },
1506
+ {
1507
+ "description": "Maximum output height. Default: 240px",
1508
+ "name": "--ai-tool-result-max-height"
1509
+ }
1510
+ ],
1511
+ "slots": [
1512
+ {
1513
+ "description": "Output content. If absent and content is set, renders normalized output in <pre>.",
1514
+ "name": ""
1515
+ },
1516
+ {
1517
+ "description": "Optional source/channel/truncation metadata.",
1518
+ "name": "meta"
1519
+ }
1520
+ ],
1521
+ "members": [
1522
+ {
1523
+ "kind": "field",
1524
+ "name": "htmlFor",
1525
+ "type": {
1526
+ "text": "string"
1527
+ },
1528
+ "default": "\"\"",
1529
+ "description": "Associated ai-tool-call[id]. Missing/mismatched ids are allowed.",
1530
+ "attribute": "for",
1531
+ "reflects": true
1532
+ },
1533
+ {
1534
+ "kind": "field",
1535
+ "name": "name",
1536
+ "type": {
1537
+ "text": "string"
1538
+ },
1539
+ "default": "\"\"",
1540
+ "description": "Tool/result source name.",
1541
+ "attribute": "name",
1542
+ "reflects": true
1543
+ },
1544
+ {
1545
+ "kind": "field",
1546
+ "name": "status",
1547
+ "type": {
1548
+ "text": "\"success\" | \"error\" | \"cancelled\" | \"unknown\""
1549
+ },
1550
+ "default": "\"unknown\"",
1551
+ "description": "Result status.",
1552
+ "attribute": "status",
1553
+ "reflects": true
1554
+ },
1555
+ {
1556
+ "kind": "field",
1557
+ "name": "channel",
1558
+ "type": {
1559
+ "text": "\"result\" | \"stdout\" | \"stderr\" | \"log\" | \"unknown\""
1560
+ },
1561
+ "default": "\"unknown\"",
1562
+ "description": "Output channel.",
1563
+ "attribute": "channel",
1564
+ "reflects": true
1565
+ },
1566
+ {
1567
+ "kind": "field",
1568
+ "name": "contentType",
1569
+ "type": {
1570
+ "text": "string"
1571
+ },
1572
+ "default": "\"text/plain\"",
1573
+ "description": "MIME/content type hint.",
1574
+ "attribute": "content-type",
1575
+ "reflects": true
1576
+ },
1577
+ {
1578
+ "kind": "field",
1579
+ "name": "content",
1580
+ "type": {
1581
+ "text": "string"
1582
+ },
1583
+ "default": "\"\"",
1584
+ "description": "Raw output content. Prefer property binding for large content.",
1585
+ "attribute": "content"
1586
+ },
1587
+ {
1588
+ "kind": "field",
1589
+ "name": "truncated",
1590
+ "type": {
1591
+ "text": "boolean"
1592
+ },
1593
+ "default": "false",
1594
+ "description": "Whether the rendered output was truncated upstream.",
1595
+ "attribute": "truncated",
1596
+ "reflects": true
1597
+ },
1598
+ {
1599
+ "kind": "field",
1600
+ "name": "hasSlot",
1601
+ "privacy": "private",
1602
+ "readonly": true,
1603
+ "default": "new HasSlotController(this, \"[default]\", \"meta\")"
1604
+ },
1605
+ {
1606
+ "kind": "field",
1607
+ "name": "hasDefaultContent",
1608
+ "type": {
1609
+ "text": "boolean"
1610
+ },
1611
+ "privacy": "private",
1612
+ "readonly": true
1613
+ },
1614
+ {
1615
+ "kind": "field",
1616
+ "name": "hasMetaContent",
1617
+ "type": {
1618
+ "text": "boolean"
1619
+ },
1620
+ "privacy": "private",
1621
+ "readonly": true
1622
+ }
1623
+ ],
1624
+ "attributes": [
1625
+ {
1626
+ "name": "for",
1627
+ "type": {
1628
+ "text": "string"
1629
+ },
1630
+ "default": "\"\"",
1631
+ "description": "Associated ai-tool-call[id]. Missing/mismatched ids are allowed.",
1632
+ "fieldName": "htmlFor"
1633
+ },
1634
+ {
1635
+ "name": "name",
1636
+ "type": {
1637
+ "text": "string"
1638
+ },
1639
+ "default": "\"\"",
1640
+ "description": "Tool/result source name.",
1641
+ "fieldName": "name"
1642
+ },
1643
+ {
1644
+ "name": "status",
1645
+ "type": {
1646
+ "text": "\"success\" | \"error\" | \"cancelled\" | \"unknown\""
1647
+ },
1648
+ "default": "\"unknown\"",
1649
+ "description": "Result status.",
1650
+ "fieldName": "status"
1651
+ },
1652
+ {
1653
+ "name": "channel",
1654
+ "type": {
1655
+ "text": "\"result\" | \"stdout\" | \"stderr\" | \"log\" | \"unknown\""
1656
+ },
1657
+ "default": "\"unknown\"",
1658
+ "description": "Output channel.",
1659
+ "fieldName": "channel"
1660
+ },
1661
+ {
1662
+ "name": "content-type",
1663
+ "type": {
1664
+ "text": "string"
1665
+ },
1666
+ "default": "\"text/plain\"",
1667
+ "description": "MIME/content type hint.",
1668
+ "fieldName": "contentType"
1669
+ },
1670
+ {
1671
+ "name": "content",
1672
+ "type": {
1673
+ "text": "string"
1674
+ },
1675
+ "default": "\"\"",
1676
+ "description": "Raw output content. Prefer property binding for large content.",
1677
+ "fieldName": "content"
1678
+ },
1679
+ {
1680
+ "name": "truncated",
1681
+ "type": {
1682
+ "text": "boolean"
1683
+ },
1684
+ "default": "false",
1685
+ "description": "Whether the rendered output was truncated upstream.",
1686
+ "fieldName": "truncated"
1687
+ }
1688
+ ],
1689
+ "superclass": {
1690
+ "name": "LitElement",
1691
+ "package": "lit"
1692
+ },
1693
+ "tagName": "ai-tool-result",
1694
+ "customElement": true
1695
+ }
1696
+ ],
1697
+ "exports": [
1698
+ {
1699
+ "kind": "js",
1700
+ "name": "normalizeToolOutput",
1701
+ "declaration": {
1702
+ "name": "normalizeToolOutput",
1703
+ "module": "src/semantic/ai-tool-result.ts"
1704
+ }
1705
+ },
1706
+ {
1707
+ "kind": "js",
1708
+ "name": "AiToolResult",
1709
+ "declaration": {
1710
+ "name": "AiToolResult",
1711
+ "module": "src/semantic/ai-tool-result.ts"
1712
+ }
1713
+ },
1714
+ {
1715
+ "kind": "custom-element-definition",
1716
+ "name": "ai-tool-result",
1717
+ "declaration": {
1718
+ "name": "AiToolResult",
1719
+ "module": "src/semantic/ai-tool-result.ts"
1720
+ }
1721
+ }
1722
+ ]
1723
+ },
1724
+ {
1725
+ "kind": "javascript-module",
1726
+ "path": "src/semantic/index.ts",
1727
+ "declarations": [],
1728
+ "exports": [
1729
+ {
1730
+ "kind": "js",
1731
+ "name": "*",
1732
+ "declaration": {
1733
+ "name": "*",
1734
+ "module": "src/semantic/ai-conversation"
1735
+ }
1736
+ },
1737
+ {
1738
+ "kind": "js",
1739
+ "name": "*",
1740
+ "declaration": {
1741
+ "name": "*",
1742
+ "module": "src/semantic/ai-message"
1743
+ }
1744
+ },
1745
+ {
1746
+ "kind": "js",
1747
+ "name": "*",
1748
+ "declaration": {
1749
+ "name": "*",
1750
+ "module": "src/semantic/ai-tool-call"
1751
+ }
1752
+ },
1753
+ {
1754
+ "kind": "js",
1755
+ "name": "*",
1756
+ "declaration": {
1757
+ "name": "*",
1758
+ "module": "src/semantic/ai-tool-result"
1759
+ }
1760
+ },
1761
+ {
1762
+ "kind": "js",
1763
+ "name": "*",
1764
+ "declaration": {
1765
+ "name": "*",
1766
+ "module": "src/semantic/ai-thinking"
1767
+ }
1768
+ },
1769
+ {
1770
+ "kind": "js",
1771
+ "name": "*",
1772
+ "declaration": {
1773
+ "name": "*",
1774
+ "module": "src/semantic/ai-event"
1775
+ }
1776
+ }
1777
+ ]
1778
+ },
1779
+ {
1780
+ "kind": "javascript-module",
1781
+ "path": "src/visual/avatar.ts",
1782
+ "declarations": [
1783
+ {
1784
+ "kind": "class",
1785
+ "description": "Actor/agent identity marker.",
1786
+ "name": "AiAvatar",
1787
+ "cssProperties": [
1788
+ {
1789
+ "description": "Avatar width/height.",
1790
+ "name": "--size"
1791
+ },
1792
+ {
1793
+ "description": "Fallback background.",
1794
+ "name": "--background-color"
1795
+ },
1796
+ {
1797
+ "description": "Initials/icon color.",
1798
+ "name": "--text-color"
1799
+ },
1800
+ {
1801
+ "description": "Border color.",
1802
+ "name": "--border-color"
1803
+ },
1804
+ {
1805
+ "description": "Avatar radius.",
1806
+ "name": "--border-radius"
1807
+ },
1808
+ {
1809
+ "description": "Initials font size.",
1810
+ "name": "--font-size"
1811
+ },
1812
+ {
1813
+ "description": "Initials font weight. Default: 700",
1814
+ "name": "--font-weight"
1815
+ }
1816
+ ],
1817
+ "slots": [
1818
+ {
1819
+ "description": "Custom avatar content/icon.",
1820
+ "name": ""
1821
+ }
1822
+ ],
1823
+ "members": [
1824
+ {
1825
+ "kind": "field",
1826
+ "name": "src",
1827
+ "type": {
1828
+ "text": "string"
1829
+ },
1830
+ "default": "\"\"",
1831
+ "description": "Image source URL. When set, renders an <img>.",
1832
+ "attribute": "src",
1833
+ "reflects": true
1834
+ },
1835
+ {
1836
+ "kind": "field",
1837
+ "name": "name",
1838
+ "type": {
1839
+ "text": "string"
1840
+ },
1841
+ "default": "\"\"",
1842
+ "description": "Display name. Used for initials fallback and img alt text.",
1843
+ "attribute": "name",
1844
+ "reflects": true
1845
+ },
1846
+ {
1847
+ "kind": "field",
1848
+ "name": "size",
1849
+ "type": {
1850
+ "text": "\"sm\" | \"md\" | \"lg\""
1851
+ },
1852
+ "default": "\"md\"",
1853
+ "description": "Size preset.",
1854
+ "attribute": "size",
1855
+ "reflects": true
1856
+ },
1857
+ {
1858
+ "kind": "field",
1859
+ "name": "tone",
1860
+ "type": {
1861
+ "text": "\"neutral\" | \"accent\" | \"user\" | \"assistant\" | \"agent\""
1862
+ },
1863
+ "default": "\"neutral\"",
1864
+ "description": "Semantic color tone.",
1865
+ "attribute": "tone",
1866
+ "reflects": true
1867
+ },
1868
+ {
1869
+ "kind": "method",
1870
+ "name": "getInitials",
1871
+ "privacy": "private",
1872
+ "return": {
1873
+ "type": {
1874
+ "text": "string"
1875
+ }
1876
+ }
1877
+ },
1878
+ {
1879
+ "kind": "method",
1880
+ "name": "getToneColors",
1881
+ "privacy": "private",
1882
+ "return": {
1883
+ "type": {
1884
+ "text": "{ bg: string; text: string; border: string }"
1885
+ }
1886
+ }
1887
+ }
1888
+ ],
1889
+ "attributes": [
1890
+ {
1891
+ "name": "src",
1892
+ "type": {
1893
+ "text": "string"
1894
+ },
1895
+ "default": "\"\"",
1896
+ "description": "Image source URL. When set, renders an <img>.",
1897
+ "fieldName": "src"
1898
+ },
1899
+ {
1900
+ "name": "name",
1901
+ "type": {
1902
+ "text": "string"
1903
+ },
1904
+ "default": "\"\"",
1905
+ "description": "Display name. Used for initials fallback and img alt text.",
1906
+ "fieldName": "name"
1907
+ },
1908
+ {
1909
+ "name": "size",
1910
+ "type": {
1911
+ "text": "\"sm\" | \"md\" | \"lg\""
1912
+ },
1913
+ "default": "\"md\"",
1914
+ "description": "Size preset.",
1915
+ "fieldName": "size"
1916
+ },
1917
+ {
1918
+ "name": "tone",
1919
+ "type": {
1920
+ "text": "\"neutral\" | \"accent\" | \"user\" | \"assistant\" | \"agent\""
1921
+ },
1922
+ "default": "\"neutral\"",
1923
+ "description": "Semantic color tone.",
1924
+ "fieldName": "tone"
1925
+ }
1926
+ ],
1927
+ "superclass": {
1928
+ "name": "LitElement",
1929
+ "package": "lit"
1930
+ },
1931
+ "tagName": "ai-avatar",
1932
+ "customElement": true
1933
+ }
1934
+ ],
1935
+ "exports": [
1936
+ {
1937
+ "kind": "js",
1938
+ "name": "AiAvatar",
1939
+ "declaration": {
1940
+ "name": "AiAvatar",
1941
+ "module": "src/visual/avatar.ts"
1942
+ }
1943
+ },
1944
+ {
1945
+ "kind": "custom-element-definition",
1946
+ "name": "ai-avatar",
1947
+ "declaration": {
1948
+ "name": "AiAvatar",
1949
+ "module": "src/visual/avatar.ts"
1950
+ }
1951
+ }
1952
+ ]
1953
+ },
1954
+ {
1955
+ "kind": "javascript-module",
1956
+ "path": "src/visual/badge.ts",
1957
+ "declarations": [
1958
+ {
1959
+ "kind": "class",
1960
+ "description": "Compact semantic label/status chip.",
1961
+ "name": "AiBadge",
1962
+ "cssProperties": [
1963
+ {
1964
+ "description": "Badge background.",
1965
+ "name": "--background-color"
1966
+ },
1967
+ {
1968
+ "description": "Badge text color.",
1969
+ "name": "--text-color"
1970
+ },
1971
+ {
1972
+ "description": "Badge border color.",
1973
+ "name": "--border-color"
1974
+ },
1975
+ {
1976
+ "description": "Badge radius.",
1977
+ "name": "--border-radius"
1978
+ },
1979
+ {
1980
+ "description": "Leading dot color.",
1981
+ "name": "--dot-color"
1982
+ },
1983
+ {
1984
+ "description": "Font size.",
1985
+ "name": "--font-size"
1986
+ },
1987
+ {
1988
+ "description": "Font weight. Default: 600",
1989
+ "name": "--font-weight"
1990
+ },
1991
+ {
1992
+ "description": "Gap between dot/content.",
1993
+ "name": "--inline-gap"
1994
+ }
1995
+ ],
1996
+ "slots": [
1997
+ {
1998
+ "description": "Badge label.",
1999
+ "name": ""
2000
+ }
2001
+ ],
2002
+ "members": [
2003
+ {
2004
+ "kind": "field",
2005
+ "name": "tone",
2006
+ "type": {
2007
+ "text": "| \"neutral\"\n | \"accent\"\n | \"success\"\n | \"warning\"\n | \"error\"\n | \"info\""
2008
+ },
2009
+ "default": "\"neutral\"",
2010
+ "description": "Semantic color tone.",
2011
+ "attribute": "tone",
2012
+ "reflects": true
2013
+ },
2014
+ {
2015
+ "kind": "field",
2016
+ "name": "size",
2017
+ "type": {
2018
+ "text": "\"sm\" | \"md\""
2019
+ },
2020
+ "default": "\"md\"",
2021
+ "description": "Size preset.",
2022
+ "attribute": "size",
2023
+ "reflects": true
2024
+ },
2025
+ {
2026
+ "kind": "field",
2027
+ "name": "dot",
2028
+ "type": {
2029
+ "text": "boolean"
2030
+ },
2031
+ "default": "false",
2032
+ "description": "Whether to show a leading dot indicator.",
2033
+ "attribute": "dot",
2034
+ "reflects": true
2035
+ },
2036
+ {
2037
+ "kind": "method",
2038
+ "name": "getToneColors",
2039
+ "privacy": "private",
2040
+ "return": {
2041
+ "type": {
2042
+ "text": "{ bg: string; text: string; border: string }"
2043
+ }
2044
+ }
2045
+ }
2046
+ ],
2047
+ "attributes": [
2048
+ {
2049
+ "name": "tone",
2050
+ "type": {
2051
+ "text": "| \"neutral\"\n | \"accent\"\n | \"success\"\n | \"warning\"\n | \"error\"\n | \"info\""
2052
+ },
2053
+ "default": "\"neutral\"",
2054
+ "description": "Semantic color tone.",
2055
+ "fieldName": "tone"
2056
+ },
2057
+ {
2058
+ "name": "size",
2059
+ "type": {
2060
+ "text": "\"sm\" | \"md\""
2061
+ },
2062
+ "default": "\"md\"",
2063
+ "description": "Size preset.",
2064
+ "fieldName": "size"
2065
+ },
2066
+ {
2067
+ "name": "dot",
2068
+ "type": {
2069
+ "text": "boolean"
2070
+ },
2071
+ "default": "false",
2072
+ "description": "Whether to show a leading dot indicator.",
2073
+ "fieldName": "dot"
2074
+ }
2075
+ ],
2076
+ "superclass": {
2077
+ "name": "LitElement",
2078
+ "package": "lit"
2079
+ },
2080
+ "tagName": "ai-badge",
2081
+ "customElement": true
2082
+ }
2083
+ ],
2084
+ "exports": [
2085
+ {
2086
+ "kind": "js",
2087
+ "name": "AiBadge",
2088
+ "declaration": {
2089
+ "name": "AiBadge",
2090
+ "module": "src/visual/badge.ts"
2091
+ }
2092
+ },
2093
+ {
2094
+ "kind": "custom-element-definition",
2095
+ "name": "ai-badge",
2096
+ "declaration": {
2097
+ "name": "AiBadge",
2098
+ "module": "src/visual/badge.ts"
2099
+ }
2100
+ }
2101
+ ]
2102
+ },
2103
+ {
2104
+ "kind": "javascript-module",
2105
+ "path": "src/visual/divider.ts",
2106
+ "declarations": [
2107
+ {
2108
+ "kind": "class",
2109
+ "description": "Separator/section marker.",
2110
+ "name": "AiDivider",
2111
+ "cssProperties": [
2112
+ {
2113
+ "description": "Divider line color.",
2114
+ "name": "--line-color"
2115
+ },
2116
+ {
2117
+ "description": "Divider thickness.",
2118
+ "name": "--line-width"
2119
+ },
2120
+ {
2121
+ "description": "Label text color.",
2122
+ "name": "--text-color"
2123
+ },
2124
+ {
2125
+ "description": "Label background to mask line.",
2126
+ "name": "--label-background-color"
2127
+ },
2128
+ {
2129
+ "description": "Gap between line and label.",
2130
+ "name": "--label-gap"
2131
+ }
2132
+ ],
2133
+ "slots": [
2134
+ {
2135
+ "description": "Optional label/content centered in divider.",
2136
+ "name": ""
2137
+ }
2138
+ ],
2139
+ "members": [
2140
+ {
2141
+ "kind": "field",
2142
+ "name": "orientation",
2143
+ "type": {
2144
+ "text": "\"horizontal\" | \"vertical\""
2145
+ },
2146
+ "default": "\"horizontal\"",
2147
+ "description": "Axis of the divider line.",
2148
+ "attribute": "orientation",
2149
+ "reflects": true
2150
+ },
2151
+ {
2152
+ "kind": "field",
2153
+ "name": "tone",
2154
+ "type": {
2155
+ "text": "\"subtle\" | \"default\" | \"strong\""
2156
+ },
2157
+ "default": "\"default\"",
2158
+ "description": "Visual prominence of the divider.",
2159
+ "attribute": "tone",
2160
+ "reflects": true
2161
+ }
2162
+ ],
2163
+ "attributes": [
2164
+ {
2165
+ "name": "orientation",
2166
+ "type": {
2167
+ "text": "\"horizontal\" | \"vertical\""
2168
+ },
2169
+ "default": "\"horizontal\"",
2170
+ "description": "Axis of the divider line.",
2171
+ "fieldName": "orientation"
2172
+ },
2173
+ {
2174
+ "name": "tone",
2175
+ "type": {
2176
+ "text": "\"subtle\" | \"default\" | \"strong\""
2177
+ },
2178
+ "default": "\"default\"",
2179
+ "description": "Visual prominence of the divider.",
2180
+ "fieldName": "tone"
2181
+ }
2182
+ ],
2183
+ "superclass": {
2184
+ "name": "LitElement",
2185
+ "package": "lit"
2186
+ },
2187
+ "tagName": "ai-divider",
2188
+ "customElement": true
2189
+ }
2190
+ ],
2191
+ "exports": [
2192
+ {
2193
+ "kind": "js",
2194
+ "name": "AiDivider",
2195
+ "declaration": {
2196
+ "name": "AiDivider",
2197
+ "module": "src/visual/divider.ts"
2198
+ }
2199
+ },
2200
+ {
2201
+ "kind": "custom-element-definition",
2202
+ "name": "ai-divider",
2203
+ "declaration": {
2204
+ "name": "AiDivider",
2205
+ "module": "src/visual/divider.ts"
2206
+ }
2207
+ }
2208
+ ]
2209
+ },
2210
+ {
2211
+ "kind": "javascript-module",
2212
+ "path": "src/visual/icon.ts",
2213
+ "declarations": [
2214
+ {
2215
+ "kind": "class",
2216
+ "description": "Consistent icon sizing/tone wrapper.",
2217
+ "name": "AiIcon",
2218
+ "cssProperties": [
2219
+ {
2220
+ "description": "Icon width/height.",
2221
+ "name": "--size"
2222
+ },
2223
+ {
2224
+ "description": "Icon color.",
2225
+ "name": "--color"
2226
+ }
2227
+ ],
2228
+ "slots": [
2229
+ {
2230
+ "description": "SVG/icon content.",
2231
+ "name": ""
2232
+ }
2233
+ ],
2234
+ "members": [
2235
+ {
2236
+ "kind": "field",
2237
+ "name": "size",
2238
+ "type": {
2239
+ "text": "\"xs\" | \"sm\" | \"md\" | \"lg\""
2240
+ },
2241
+ "default": "\"md\"",
2242
+ "description": "Size preset.",
2243
+ "attribute": "size",
2244
+ "reflects": true
2245
+ },
2246
+ {
2247
+ "kind": "field",
2248
+ "name": "tone",
2249
+ "type": {
2250
+ "text": "| \"default\"\n | \"muted\"\n | \"accent\"\n | \"success\"\n | \"warning\"\n | \"error\""
2251
+ },
2252
+ "default": "\"default\"",
2253
+ "description": "Semantic color tone.",
2254
+ "attribute": "tone",
2255
+ "reflects": true
2256
+ },
2257
+ {
2258
+ "kind": "method",
2259
+ "name": "getToneColor",
2260
+ "privacy": "private",
2261
+ "return": {
2262
+ "type": {
2263
+ "text": "string"
2264
+ }
2265
+ }
2266
+ }
2267
+ ],
2268
+ "attributes": [
2269
+ {
2270
+ "name": "size",
2271
+ "type": {
2272
+ "text": "\"xs\" | \"sm\" | \"md\" | \"lg\""
2273
+ },
2274
+ "default": "\"md\"",
2275
+ "description": "Size preset.",
2276
+ "fieldName": "size"
2277
+ },
2278
+ {
2279
+ "name": "tone",
2280
+ "type": {
2281
+ "text": "| \"default\"\n | \"muted\"\n | \"accent\"\n | \"success\"\n | \"warning\"\n | \"error\""
2282
+ },
2283
+ "default": "\"default\"",
2284
+ "description": "Semantic color tone.",
2285
+ "fieldName": "tone"
2286
+ }
2287
+ ],
2288
+ "superclass": {
2289
+ "name": "LitElement",
2290
+ "package": "lit"
2291
+ },
2292
+ "tagName": "ai-icon",
2293
+ "customElement": true
2294
+ }
2295
+ ],
2296
+ "exports": [
2297
+ {
2298
+ "kind": "js",
2299
+ "name": "AiIcon",
2300
+ "declaration": {
2301
+ "name": "AiIcon",
2302
+ "module": "src/visual/icon.ts"
2303
+ }
2304
+ },
2305
+ {
2306
+ "kind": "custom-element-definition",
2307
+ "name": "ai-icon",
2308
+ "declaration": {
2309
+ "name": "AiIcon",
2310
+ "module": "src/visual/icon.ts"
2311
+ }
2312
+ }
2313
+ ]
2314
+ },
2315
+ {
2316
+ "kind": "javascript-module",
2317
+ "path": "src/visual/index.ts",
2318
+ "declarations": [],
2319
+ "exports": [
2320
+ {
2321
+ "kind": "js",
2322
+ "name": "*",
2323
+ "declaration": {
2324
+ "name": "*",
2325
+ "module": "src/visual/stack"
2326
+ }
2327
+ },
2328
+ {
2329
+ "kind": "js",
2330
+ "name": "*",
2331
+ "declaration": {
2332
+ "name": "*",
2333
+ "module": "src/visual/surface"
2334
+ }
2335
+ },
2336
+ {
2337
+ "kind": "js",
2338
+ "name": "*",
2339
+ "declaration": {
2340
+ "name": "*",
2341
+ "module": "src/visual/text"
2342
+ }
2343
+ },
2344
+ {
2345
+ "kind": "js",
2346
+ "name": "*",
2347
+ "declaration": {
2348
+ "name": "*",
2349
+ "module": "src/visual/markdown"
2350
+ }
2351
+ },
2352
+ {
2353
+ "kind": "js",
2354
+ "name": "*",
2355
+ "declaration": {
2356
+ "name": "*",
2357
+ "module": "src/visual/badge"
2358
+ }
2359
+ },
2360
+ {
2361
+ "kind": "js",
2362
+ "name": "*",
2363
+ "declaration": {
2364
+ "name": "*",
2365
+ "module": "src/visual/status"
2366
+ }
2367
+ },
2368
+ {
2369
+ "kind": "js",
2370
+ "name": "*",
2371
+ "declaration": {
2372
+ "name": "*",
2373
+ "module": "src/visual/avatar"
2374
+ }
2375
+ },
2376
+ {
2377
+ "kind": "js",
2378
+ "name": "*",
2379
+ "declaration": {
2380
+ "name": "*",
2381
+ "module": "src/visual/icon"
2382
+ }
2383
+ },
2384
+ {
2385
+ "kind": "js",
2386
+ "name": "*",
2387
+ "declaration": {
2388
+ "name": "*",
2389
+ "module": "src/visual/divider"
2390
+ }
2391
+ }
2392
+ ]
2393
+ },
2394
+ {
2395
+ "kind": "javascript-module",
2396
+ "path": "src/visual/markdown.ts",
2397
+ "declarations": [
2398
+ {
2399
+ "kind": "class",
2400
+ "description": "Markdown content renderer. Parses and renders markdown source.",
2401
+ "name": "AiMarkdown",
2402
+ "cssProperties": [
2403
+ {
2404
+ "description": "Body text color.",
2405
+ "name": "--ai-markdown-color"
2406
+ },
2407
+ {
2408
+ "description": "Link color.",
2409
+ "name": "--ai-markdown-link-color"
2410
+ },
2411
+ {
2412
+ "description": "Inline/block code background.",
2413
+ "name": "--ai-markdown-code-background"
2414
+ },
2415
+ {
2416
+ "description": "Code text color.",
2417
+ "name": "--ai-markdown-code-color"
2418
+ },
2419
+ {
2420
+ "description": "Blockquote/table/pre border.",
2421
+ "name": "--ai-markdown-border-color"
2422
+ },
2423
+ {
2424
+ "description": "Heading color.",
2425
+ "name": "--ai-markdown-heading-color"
2426
+ },
2427
+ {
2428
+ "description": "Vertical rhythm between markdown blocks.",
2429
+ "name": "--ai-markdown-gap"
2430
+ }
2431
+ ],
2432
+ "slots": [
2433
+ {
2434
+ "description": "Fallback content if content property is empty.",
2435
+ "name": ""
2436
+ }
2437
+ ],
2438
+ "members": [
2439
+ {
2440
+ "kind": "field",
2441
+ "name": "content",
2442
+ "type": {
2443
+ "text": "string"
2444
+ },
2445
+ "default": "\"\"",
2446
+ "description": "Markdown content to render. Does NOT reflect (large content).",
2447
+ "attribute": "content"
2448
+ },
2449
+ {
2450
+ "kind": "field",
2451
+ "name": "tone",
2452
+ "type": {
2453
+ "text": "\"assistant\" | \"user\" | \"system\" | \"tool\""
2454
+ },
2455
+ "default": "\"assistant\"",
2456
+ "description": "Visual tone for prose style parity with pi-ui messages.",
2457
+ "attribute": "tone",
2458
+ "reflects": true
2459
+ },
2460
+ {
2461
+ "kind": "field",
2462
+ "name": "trusted",
2463
+ "type": {
2464
+ "text": "boolean"
2465
+ },
2466
+ "default": "false",
2467
+ "description": "Whether the content is trusted (affects link behavior).",
2468
+ "attribute": "trusted",
2469
+ "reflects": true
2470
+ },
2471
+ {
2472
+ "kind": "method",
2473
+ "name": "parseInlines",
2474
+ "privacy": "private",
2475
+ "return": {
2476
+ "type": {
2477
+ "text": "InlinePart[]"
2478
+ }
2479
+ },
2480
+ "parameters": [
2481
+ {
2482
+ "name": "text",
2483
+ "type": {
2484
+ "text": "string"
2485
+ }
2486
+ }
2487
+ ]
2488
+ },
2489
+ {
2490
+ "kind": "method",
2491
+ "name": "renderInline",
2492
+ "privacy": "private",
2493
+ "parameters": [
2494
+ {
2495
+ "name": "text",
2496
+ "type": {
2497
+ "text": "string"
2498
+ }
2499
+ }
2500
+ ]
2501
+ },
2502
+ {
2503
+ "kind": "method",
2504
+ "name": "parseTableRow",
2505
+ "privacy": "private",
2506
+ "return": {
2507
+ "type": {
2508
+ "text": "string[]"
2509
+ }
2510
+ },
2511
+ "parameters": [
2512
+ {
2513
+ "name": "line",
2514
+ "type": {
2515
+ "text": "string"
2516
+ }
2517
+ }
2518
+ ]
2519
+ },
2520
+ {
2521
+ "kind": "method",
2522
+ "name": "parseTableAligns",
2523
+ "privacy": "private",
2524
+ "return": {
2525
+ "type": {
2526
+ "text": "(\"left\" | \"center\" | \"right\")[]"
2527
+ }
2528
+ },
2529
+ "parameters": [
2530
+ {
2531
+ "name": "separator",
2532
+ "type": {
2533
+ "text": "string"
2534
+ }
2535
+ }
2536
+ ]
2537
+ },
2538
+ {
2539
+ "kind": "method",
2540
+ "name": "isTableSeparator",
2541
+ "privacy": "private",
2542
+ "return": {
2543
+ "type": {
2544
+ "text": "boolean"
2545
+ }
2546
+ },
2547
+ "parameters": [
2548
+ {
2549
+ "name": "line",
2550
+ "type": {
2551
+ "text": "string"
2552
+ }
2553
+ },
2554
+ {
2555
+ "name": "columnCount",
2556
+ "type": {
2557
+ "text": "number"
2558
+ }
2559
+ }
2560
+ ]
2561
+ },
2562
+ {
2563
+ "kind": "method",
2564
+ "name": "indentLevel",
2565
+ "privacy": "private",
2566
+ "return": {
2567
+ "type": {
2568
+ "text": "number"
2569
+ }
2570
+ },
2571
+ "parameters": [
2572
+ {
2573
+ "name": "line",
2574
+ "type": {
2575
+ "text": "string"
2576
+ }
2577
+ }
2578
+ ]
2579
+ },
2580
+ {
2581
+ "kind": "method",
2582
+ "name": "parseBlocks",
2583
+ "privacy": "private",
2584
+ "return": {
2585
+ "type": {
2586
+ "text": "Block[]"
2587
+ }
2588
+ },
2589
+ "parameters": [
2590
+ {
2591
+ "name": "source",
2592
+ "type": {
2593
+ "text": "string"
2594
+ }
2595
+ }
2596
+ ]
2597
+ },
2598
+ {
2599
+ "kind": "method",
2600
+ "name": "parseCodeBlock",
2601
+ "privacy": "private",
2602
+ "parameters": [
2603
+ {
2604
+ "name": "lines",
2605
+ "type": {
2606
+ "text": "string[]"
2607
+ }
2608
+ },
2609
+ {
2610
+ "name": "startIndex",
2611
+ "type": {
2612
+ "text": "number"
2613
+ }
2614
+ },
2615
+ {
2616
+ "name": "trimmed",
2617
+ "type": {
2618
+ "text": "string"
2619
+ }
2620
+ }
2621
+ ]
2622
+ },
2623
+ {
2624
+ "kind": "method",
2625
+ "name": "parseHeadingBlock",
2626
+ "privacy": "private",
2627
+ "return": {
2628
+ "type": {
2629
+ "text": "Block | undefined"
2630
+ }
2631
+ },
2632
+ "parameters": [
2633
+ {
2634
+ "name": "trimmed",
2635
+ "type": {
2636
+ "text": "string"
2637
+ }
2638
+ }
2639
+ ]
2640
+ },
2641
+ {
2642
+ "kind": "method",
2643
+ "name": "parseBlockquoteBlock",
2644
+ "privacy": "private",
2645
+ "parameters": [
2646
+ {
2647
+ "name": "lines",
2648
+ "type": {
2649
+ "text": "string[]"
2650
+ }
2651
+ },
2652
+ {
2653
+ "name": "startIndex",
2654
+ "type": {
2655
+ "text": "number"
2656
+ }
2657
+ },
2658
+ {
2659
+ "name": "trimmed",
2660
+ "type": {
2661
+ "text": "string"
2662
+ }
2663
+ }
2664
+ ]
2665
+ },
2666
+ {
2667
+ "kind": "method",
2668
+ "name": "parseListBlock",
2669
+ "privacy": "private",
2670
+ "parameters": [
2671
+ {
2672
+ "name": "lines",
2673
+ "type": {
2674
+ "text": "string[]"
2675
+ }
2676
+ },
2677
+ {
2678
+ "name": "startIndex",
2679
+ "type": {
2680
+ "text": "number"
2681
+ }
2682
+ },
2683
+ {
2684
+ "name": "trimmed",
2685
+ "type": {
2686
+ "text": "string"
2687
+ }
2688
+ }
2689
+ ]
2690
+ },
2691
+ {
2692
+ "kind": "method",
2693
+ "name": "skipBlankLines",
2694
+ "privacy": "private",
2695
+ "return": {
2696
+ "type": {
2697
+ "text": "number"
2698
+ }
2699
+ },
2700
+ "parameters": [
2701
+ {
2702
+ "name": "lines",
2703
+ "type": {
2704
+ "text": "string[]"
2705
+ }
2706
+ },
2707
+ {
2708
+ "name": "from",
2709
+ "type": {
2710
+ "text": "number"
2711
+ }
2712
+ }
2713
+ ]
2714
+ },
2715
+ {
2716
+ "kind": "method",
2717
+ "name": "parseNestedChildren",
2718
+ "privacy": "private",
2719
+ "return": {
2720
+ "type": {
2721
+ "text": "Block[]"
2722
+ }
2723
+ },
2724
+ "parameters": [
2725
+ {
2726
+ "name": "lines",
2727
+ "type": {
2728
+ "text": "string[]"
2729
+ }
2730
+ },
2731
+ {
2732
+ "name": "startIndex",
2733
+ "type": {
2734
+ "text": "number"
2735
+ }
2736
+ },
2737
+ {
2738
+ "name": "baseIndent",
2739
+ "type": {
2740
+ "text": "number"
2741
+ }
2742
+ }
2743
+ ]
2744
+ },
2745
+ {
2746
+ "kind": "method",
2747
+ "name": "collectList",
2748
+ "privacy": "private",
2749
+ "parameters": [
2750
+ {
2751
+ "name": "lines",
2752
+ "type": {
2753
+ "text": "string[]"
2754
+ }
2755
+ },
2756
+ {
2757
+ "name": "startIndex",
2758
+ "type": {
2759
+ "text": "number"
2760
+ }
2761
+ },
2762
+ {
2763
+ "name": "type",
2764
+ "type": {
2765
+ "text": "\"ul\" | \"ol\""
2766
+ }
2767
+ }
2768
+ ]
2769
+ },
2770
+ {
2771
+ "kind": "method",
2772
+ "name": "countNestedLines",
2773
+ "privacy": "private",
2774
+ "return": {
2775
+ "type": {
2776
+ "text": "number"
2777
+ }
2778
+ },
2779
+ "parameters": [
2780
+ {
2781
+ "name": "lines",
2782
+ "type": {
2783
+ "text": "string[]"
2784
+ }
2785
+ },
2786
+ {
2787
+ "name": "startIndex",
2788
+ "type": {
2789
+ "text": "number"
2790
+ }
2791
+ },
2792
+ {
2793
+ "name": "baseIndent",
2794
+ "type": {
2795
+ "text": "number"
2796
+ }
2797
+ }
2798
+ ]
2799
+ },
2800
+ {
2801
+ "kind": "method",
2802
+ "name": "parseTableBlock",
2803
+ "privacy": "private",
2804
+ "parameters": [
2805
+ {
2806
+ "name": "lines",
2807
+ "type": {
2808
+ "text": "string[]"
2809
+ }
2810
+ },
2811
+ {
2812
+ "name": "startIndex",
2813
+ "type": {
2814
+ "text": "number"
2815
+ }
2816
+ },
2817
+ {
2818
+ "name": "trimmed",
2819
+ "type": {
2820
+ "text": "string"
2821
+ }
2822
+ }
2823
+ ]
2824
+ },
2825
+ {
2826
+ "kind": "method",
2827
+ "name": "parseParagraphBlock",
2828
+ "privacy": "private",
2829
+ "parameters": [
2830
+ {
2831
+ "name": "lines",
2832
+ "type": {
2833
+ "text": "string[]"
2834
+ }
2835
+ },
2836
+ {
2837
+ "name": "startIndex",
2838
+ "type": {
2839
+ "text": "number"
2840
+ }
2841
+ }
2842
+ ]
2843
+ },
2844
+ {
2845
+ "kind": "method",
2846
+ "name": "startsStructuredBlock",
2847
+ "privacy": "private",
2848
+ "return": {
2849
+ "type": {
2850
+ "text": "boolean"
2851
+ }
2852
+ },
2853
+ "parameters": [
2854
+ {
2855
+ "name": "lines",
2856
+ "type": {
2857
+ "text": "string[]"
2858
+ }
2859
+ },
2860
+ {
2861
+ "name": "index",
2862
+ "type": {
2863
+ "text": "number"
2864
+ }
2865
+ },
2866
+ {
2867
+ "name": "trimmed",
2868
+ "type": {
2869
+ "text": "string"
2870
+ }
2871
+ }
2872
+ ]
2873
+ },
2874
+ {
2875
+ "kind": "method",
2876
+ "name": "startsTable",
2877
+ "privacy": "private",
2878
+ "return": {
2879
+ "type": {
2880
+ "text": "boolean"
2881
+ }
2882
+ },
2883
+ "parameters": [
2884
+ {
2885
+ "name": "trimmed",
2886
+ "type": {
2887
+ "text": "string"
2888
+ }
2889
+ }
2890
+ ]
2891
+ },
2892
+ {
2893
+ "kind": "method",
2894
+ "name": "isTableStart",
2895
+ "privacy": "private",
2896
+ "return": {
2897
+ "type": {
2898
+ "text": "boolean"
2899
+ }
2900
+ },
2901
+ "parameters": [
2902
+ {
2903
+ "name": "lines",
2904
+ "type": {
2905
+ "text": "string[]"
2906
+ }
2907
+ },
2908
+ {
2909
+ "name": "index",
2910
+ "type": {
2911
+ "text": "number"
2912
+ }
2913
+ },
2914
+ {
2915
+ "name": "trimmed",
2916
+ "type": {
2917
+ "text": "string"
2918
+ }
2919
+ }
2920
+ ]
2921
+ },
2922
+ {
2923
+ "kind": "method",
2924
+ "name": "renderBlocks",
2925
+ "privacy": "private",
2926
+ "return": {
2927
+ "type": {
2928
+ "text": "unknown"
2929
+ }
2930
+ },
2931
+ "parameters": [
2932
+ {
2933
+ "name": "blocks",
2934
+ "type": {
2935
+ "text": "Block[]"
2936
+ }
2937
+ }
2938
+ ]
2939
+ },
2940
+ {
2941
+ "kind": "method",
2942
+ "name": "renderBlock",
2943
+ "privacy": "private",
2944
+ "return": {
2945
+ "type": {
2946
+ "text": "unknown"
2947
+ }
2948
+ },
2949
+ "parameters": [
2950
+ {
2951
+ "name": "block",
2952
+ "type": {
2953
+ "text": "Block"
2954
+ }
2955
+ }
2956
+ ]
2957
+ },
2958
+ {
2959
+ "kind": "method",
2960
+ "name": "renderMarkdown",
2961
+ "privacy": "private",
2962
+ "parameters": [
2963
+ {
2964
+ "name": "source",
2965
+ "type": {
2966
+ "text": "string"
2967
+ }
2968
+ }
2969
+ ]
2970
+ }
2971
+ ],
2972
+ "attributes": [
2973
+ {
2974
+ "name": "content",
2975
+ "type": {
2976
+ "text": "string"
2977
+ },
2978
+ "default": "\"\"",
2979
+ "description": "Markdown content to render. Does NOT reflect (large content).",
2980
+ "fieldName": "content"
2981
+ },
2982
+ {
2983
+ "name": "tone",
2984
+ "type": {
2985
+ "text": "\"assistant\" | \"user\" | \"system\" | \"tool\""
2986
+ },
2987
+ "default": "\"assistant\"",
2988
+ "description": "Visual tone for prose style parity with pi-ui messages.",
2989
+ "fieldName": "tone"
2990
+ },
2991
+ {
2992
+ "name": "trusted",
2993
+ "type": {
2994
+ "text": "boolean"
2995
+ },
2996
+ "default": "false",
2997
+ "description": "Whether the content is trusted (affects link behavior).",
2998
+ "fieldName": "trusted"
2999
+ }
3000
+ ],
3001
+ "superclass": {
3002
+ "name": "LitElement",
3003
+ "package": "lit"
3004
+ },
3005
+ "tagName": "ai-markdown",
3006
+ "customElement": true
3007
+ }
3008
+ ],
3009
+ "exports": [
3010
+ {
3011
+ "kind": "js",
3012
+ "name": "AiMarkdown",
3013
+ "declaration": {
3014
+ "name": "AiMarkdown",
3015
+ "module": "src/visual/markdown.ts"
3016
+ }
3017
+ },
3018
+ {
3019
+ "kind": "custom-element-definition",
3020
+ "name": "ai-markdown",
3021
+ "declaration": {
3022
+ "name": "AiMarkdown",
3023
+ "module": "src/visual/markdown.ts"
3024
+ }
3025
+ }
3026
+ ]
3027
+ },
3028
+ {
3029
+ "kind": "javascript-module",
3030
+ "path": "src/visual/stack.ts",
3031
+ "declarations": [
3032
+ {
3033
+ "kind": "class",
3034
+ "description": "Flex layout primitive.",
3035
+ "name": "AiStack",
3036
+ "cssProperties": [
3037
+ {
3038
+ "description": "Overrides computed gap.",
3039
+ "name": "--gap"
3040
+ },
3041
+ {
3042
+ "description": "Overrides align-items.",
3043
+ "name": "--align-items"
3044
+ },
3045
+ {
3046
+ "description": "Overrides justify-content.",
3047
+ "name": "--justify-content"
3048
+ }
3049
+ ],
3050
+ "slots": [
3051
+ {
3052
+ "description": "Stack children.",
3053
+ "name": ""
3054
+ }
3055
+ ],
3056
+ "members": [
3057
+ {
3058
+ "kind": "field",
3059
+ "name": "direction",
3060
+ "type": {
3061
+ "text": "\"row\" | \"column\""
3062
+ },
3063
+ "default": "\"column\"",
3064
+ "description": "Flex direction.",
3065
+ "attribute": "direction",
3066
+ "reflects": true
3067
+ },
3068
+ {
3069
+ "kind": "field",
3070
+ "name": "gap",
3071
+ "type": {
3072
+ "text": "\"none\" | \"2xs\" | \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"2xl\""
3073
+ },
3074
+ "default": "\"none\"",
3075
+ "description": "Gap between children.",
3076
+ "attribute": "gap",
3077
+ "reflects": true
3078
+ },
3079
+ {
3080
+ "kind": "field",
3081
+ "name": "align",
3082
+ "type": {
3083
+ "text": "\"start\" | \"center\" | \"end\" | \"stretch\" | \"baseline\""
3084
+ },
3085
+ "default": "\"stretch\"",
3086
+ "description": "Cross-axis alignment.",
3087
+ "attribute": "align",
3088
+ "reflects": true
3089
+ },
3090
+ {
3091
+ "kind": "field",
3092
+ "name": "justify",
3093
+ "type": {
3094
+ "text": "| \"start\"\n | \"center\"\n | \"end\"\n | \"between\"\n | \"around\"\n | \"evenly\""
3095
+ },
3096
+ "default": "\"start\"",
3097
+ "description": "Main-axis justification.",
3098
+ "attribute": "justify",
3099
+ "reflects": true
3100
+ },
3101
+ {
3102
+ "kind": "field",
3103
+ "name": "wrap",
3104
+ "type": {
3105
+ "text": "boolean"
3106
+ },
3107
+ "default": "false",
3108
+ "description": "Whether children wrap.",
3109
+ "attribute": "wrap",
3110
+ "reflects": true
3111
+ },
3112
+ {
3113
+ "kind": "field",
3114
+ "name": "inline",
3115
+ "type": {
3116
+ "text": "boolean"
3117
+ },
3118
+ "default": "false",
3119
+ "description": "Whether to use inline-flex instead of flex.",
3120
+ "attribute": "inline",
3121
+ "reflects": true
3122
+ }
3123
+ ],
3124
+ "attributes": [
3125
+ {
3126
+ "name": "direction",
3127
+ "type": {
3128
+ "text": "\"row\" | \"column\""
3129
+ },
3130
+ "default": "\"column\"",
3131
+ "description": "Flex direction.",
3132
+ "fieldName": "direction"
3133
+ },
3134
+ {
3135
+ "name": "gap",
3136
+ "type": {
3137
+ "text": "\"none\" | \"2xs\" | \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"2xl\""
3138
+ },
3139
+ "default": "\"none\"",
3140
+ "description": "Gap between children.",
3141
+ "fieldName": "gap"
3142
+ },
3143
+ {
3144
+ "name": "align",
3145
+ "type": {
3146
+ "text": "\"start\" | \"center\" | \"end\" | \"stretch\" | \"baseline\""
3147
+ },
3148
+ "default": "\"stretch\"",
3149
+ "description": "Cross-axis alignment.",
3150
+ "fieldName": "align"
3151
+ },
3152
+ {
3153
+ "name": "justify",
3154
+ "type": {
3155
+ "text": "| \"start\"\n | \"center\"\n | \"end\"\n | \"between\"\n | \"around\"\n | \"evenly\""
3156
+ },
3157
+ "default": "\"start\"",
3158
+ "description": "Main-axis justification.",
3159
+ "fieldName": "justify"
3160
+ },
3161
+ {
3162
+ "name": "wrap",
3163
+ "type": {
3164
+ "text": "boolean"
3165
+ },
3166
+ "default": "false",
3167
+ "description": "Whether children wrap.",
3168
+ "fieldName": "wrap"
3169
+ },
3170
+ {
3171
+ "name": "inline",
3172
+ "type": {
3173
+ "text": "boolean"
3174
+ },
3175
+ "default": "false",
3176
+ "description": "Whether to use inline-flex instead of flex.",
3177
+ "fieldName": "inline"
3178
+ }
3179
+ ],
3180
+ "superclass": {
3181
+ "name": "LitElement",
3182
+ "package": "lit"
3183
+ },
3184
+ "tagName": "ai-stack",
3185
+ "customElement": true
3186
+ }
3187
+ ],
3188
+ "exports": [
3189
+ {
3190
+ "kind": "js",
3191
+ "name": "AiStack",
3192
+ "declaration": {
3193
+ "name": "AiStack",
3194
+ "module": "src/visual/stack.ts"
3195
+ }
3196
+ },
3197
+ {
3198
+ "kind": "custom-element-definition",
3199
+ "name": "ai-stack",
3200
+ "declaration": {
3201
+ "name": "AiStack",
3202
+ "module": "src/visual/stack.ts"
3203
+ }
3204
+ }
3205
+ ]
3206
+ },
3207
+ {
3208
+ "kind": "javascript-module",
3209
+ "path": "src/visual/status.ts",
3210
+ "declarations": [
3211
+ {
3212
+ "kind": "class",
3213
+ "description": "Status dot/icon indicator.",
3214
+ "name": "AiStatus",
3215
+ "cssProperties": [
3216
+ {
3217
+ "description": "Indicator size.",
3218
+ "name": "--size"
3219
+ },
3220
+ {
3221
+ "description": "Indicator color.",
3222
+ "name": "--color"
3223
+ },
3224
+ {
3225
+ "description": "Idle color.",
3226
+ "name": "--idle-color"
3227
+ },
3228
+ {
3229
+ "description": "Running color.",
3230
+ "name": "--running-color"
3231
+ },
3232
+ {
3233
+ "description": "Success color.",
3234
+ "name": "--success-color"
3235
+ },
3236
+ {
3237
+ "description": "Error color.",
3238
+ "name": "--error-color"
3239
+ },
3240
+ {
3241
+ "description": "Cancelled color.",
3242
+ "name": "--cancelled-color"
3243
+ },
3244
+ {
3245
+ "description": "Running pulse duration. Default: 1.5s",
3246
+ "name": "--pulse-duration"
3247
+ }
3248
+ ],
3249
+ "slots": [
3250
+ {
3251
+ "description": "Optional custom icon/content.",
3252
+ "name": ""
3253
+ }
3254
+ ],
3255
+ "members": [
3256
+ {
3257
+ "kind": "field",
3258
+ "name": "state",
3259
+ "type": {
3260
+ "text": "| \"idle\"\n | \"running\"\n | \"success\"\n | \"error\"\n | \"cancelled\"\n | \"unknown\""
3261
+ },
3262
+ "default": "\"unknown\"",
3263
+ "description": "Current status state.",
3264
+ "attribute": "state",
3265
+ "reflects": true
3266
+ },
3267
+ {
3268
+ "kind": "field",
3269
+ "name": "size",
3270
+ "type": {
3271
+ "text": "\"xs\" | \"sm\" | \"md\" | \"lg\""
3272
+ },
3273
+ "default": "\"md\"",
3274
+ "description": "Size preset.",
3275
+ "attribute": "size",
3276
+ "reflects": true
3277
+ },
3278
+ {
3279
+ "kind": "field",
3280
+ "name": "variant",
3281
+ "type": {
3282
+ "text": "\"dot\" | \"icon\""
3283
+ },
3284
+ "default": "\"dot\"",
3285
+ "description": "Display variant — dot or icon.",
3286
+ "attribute": "variant",
3287
+ "reflects": true
3288
+ },
3289
+ {
3290
+ "kind": "method",
3291
+ "name": "getStateColor",
3292
+ "privacy": "private",
3293
+ "return": {
3294
+ "type": {
3295
+ "text": "string"
3296
+ }
3297
+ }
3298
+ },
3299
+ {
3300
+ "kind": "method",
3301
+ "name": "getFallbackIconPath",
3302
+ "privacy": "private",
3303
+ "return": {
3304
+ "type": {
3305
+ "text": "string"
3306
+ }
3307
+ }
3308
+ }
3309
+ ],
3310
+ "attributes": [
3311
+ {
3312
+ "name": "state",
3313
+ "type": {
3314
+ "text": "| \"idle\"\n | \"running\"\n | \"success\"\n | \"error\"\n | \"cancelled\"\n | \"unknown\""
3315
+ },
3316
+ "default": "\"unknown\"",
3317
+ "description": "Current status state.",
3318
+ "fieldName": "state"
3319
+ },
3320
+ {
3321
+ "name": "size",
3322
+ "type": {
3323
+ "text": "\"xs\" | \"sm\" | \"md\" | \"lg\""
3324
+ },
3325
+ "default": "\"md\"",
3326
+ "description": "Size preset.",
3327
+ "fieldName": "size"
3328
+ },
3329
+ {
3330
+ "name": "variant",
3331
+ "type": {
3332
+ "text": "\"dot\" | \"icon\""
3333
+ },
3334
+ "default": "\"dot\"",
3335
+ "description": "Display variant — dot or icon.",
3336
+ "fieldName": "variant"
3337
+ }
3338
+ ],
3339
+ "superclass": {
3340
+ "name": "LitElement",
3341
+ "package": "lit"
3342
+ },
3343
+ "tagName": "ai-status",
3344
+ "customElement": true
3345
+ }
3346
+ ],
3347
+ "exports": [
3348
+ {
3349
+ "kind": "js",
3350
+ "name": "AiStatus",
3351
+ "declaration": {
3352
+ "name": "AiStatus",
3353
+ "module": "src/visual/status.ts"
3354
+ }
3355
+ },
3356
+ {
3357
+ "kind": "custom-element-definition",
3358
+ "name": "ai-status",
3359
+ "declaration": {
3360
+ "name": "AiStatus",
3361
+ "module": "src/visual/status.ts"
3362
+ }
3363
+ }
3364
+ ]
3365
+ },
3366
+ {
3367
+ "kind": "javascript-module",
3368
+ "path": "src/visual/surface.ts",
3369
+ "declarations": [
3370
+ {
3371
+ "kind": "class",
3372
+ "description": "Themed container/surface.",
3373
+ "name": "AiSurface",
3374
+ "cssProperties": [
3375
+ {
3376
+ "description": "Surface background.",
3377
+ "name": "--background-color"
3378
+ },
3379
+ {
3380
+ "description": "Surface text color.",
3381
+ "name": "--text-color"
3382
+ },
3383
+ {
3384
+ "description": "Border color.",
3385
+ "name": "--border-color"
3386
+ },
3387
+ {
3388
+ "description": "Border width.",
3389
+ "name": "--border-width"
3390
+ },
3391
+ {
3392
+ "description": "Border radius.",
3393
+ "name": "--border-radius"
3394
+ },
3395
+ {
3396
+ "description": "Box shadow.",
3397
+ "name": "--shadow"
3398
+ },
3399
+ {
3400
+ "description": "Hover background when interactive.",
3401
+ "name": "--hover-background-color"
3402
+ },
3403
+ {
3404
+ "description": "Focus ring for slotted/native focus styling.",
3405
+ "name": "--focus-ring"
3406
+ }
3407
+ ],
3408
+ "slots": [
3409
+ {
3410
+ "description": "Surface content.",
3411
+ "name": ""
3412
+ }
3413
+ ],
3414
+ "members": [
3415
+ {
3416
+ "kind": "field",
3417
+ "name": "variant",
3418
+ "type": {
3419
+ "text": "\"flat\" | \"outlined\" | \"raised\" | \"sunken\""
3420
+ },
3421
+ "default": "\"flat\"",
3422
+ "description": "Visual variant.",
3423
+ "attribute": "variant",
3424
+ "reflects": true
3425
+ },
3426
+ {
3427
+ "kind": "field",
3428
+ "name": "tone",
3429
+ "type": {
3430
+ "text": "| \"neutral\"\n | \"accent\"\n | \"success\"\n | \"warning\"\n | \"error\"\n | \"info\""
3431
+ },
3432
+ "default": "\"neutral\"",
3433
+ "description": "Semantic color tone.",
3434
+ "attribute": "tone",
3435
+ "reflects": true
3436
+ },
3437
+ {
3438
+ "kind": "field",
3439
+ "name": "radius",
3440
+ "type": {
3441
+ "text": "\"none\" | \"sm\" | \"md\" | \"lg\" | \"pill\""
3442
+ },
3443
+ "default": "\"md\"",
3444
+ "description": "Border radius preset.",
3445
+ "attribute": "radius",
3446
+ "reflects": true
3447
+ },
3448
+ {
3449
+ "kind": "field",
3450
+ "name": "interactive",
3451
+ "type": {
3452
+ "text": "boolean"
3453
+ },
3454
+ "default": "false",
3455
+ "description": "Whether the surface is clickable/hoverable.",
3456
+ "attribute": "interactive",
3457
+ "reflects": true
3458
+ },
3459
+ {
3460
+ "kind": "method",
3461
+ "name": "getToneColors",
3462
+ "privacy": "private",
3463
+ "return": {
3464
+ "type": {
3465
+ "text": "{ bg: string; text: string; border: string }"
3466
+ }
3467
+ }
3468
+ }
3469
+ ],
3470
+ "attributes": [
3471
+ {
3472
+ "name": "variant",
3473
+ "type": {
3474
+ "text": "\"flat\" | \"outlined\" | \"raised\" | \"sunken\""
3475
+ },
3476
+ "default": "\"flat\"",
3477
+ "description": "Visual variant.",
3478
+ "fieldName": "variant"
3479
+ },
3480
+ {
3481
+ "name": "tone",
3482
+ "type": {
3483
+ "text": "| \"neutral\"\n | \"accent\"\n | \"success\"\n | \"warning\"\n | \"error\"\n | \"info\""
3484
+ },
3485
+ "default": "\"neutral\"",
3486
+ "description": "Semantic color tone.",
3487
+ "fieldName": "tone"
3488
+ },
3489
+ {
3490
+ "name": "radius",
3491
+ "type": {
3492
+ "text": "\"none\" | \"sm\" | \"md\" | \"lg\" | \"pill\""
3493
+ },
3494
+ "default": "\"md\"",
3495
+ "description": "Border radius preset.",
3496
+ "fieldName": "radius"
3497
+ },
3498
+ {
3499
+ "name": "interactive",
3500
+ "type": {
3501
+ "text": "boolean"
3502
+ },
3503
+ "default": "false",
3504
+ "description": "Whether the surface is clickable/hoverable.",
3505
+ "fieldName": "interactive"
3506
+ }
3507
+ ],
3508
+ "superclass": {
3509
+ "name": "LitElement",
3510
+ "package": "lit"
3511
+ },
3512
+ "tagName": "ai-surface",
3513
+ "customElement": true
3514
+ }
3515
+ ],
3516
+ "exports": [
3517
+ {
3518
+ "kind": "js",
3519
+ "name": "AiSurface",
3520
+ "declaration": {
3521
+ "name": "AiSurface",
3522
+ "module": "src/visual/surface.ts"
3523
+ }
3524
+ },
3525
+ {
3526
+ "kind": "custom-element-definition",
3527
+ "name": "ai-surface",
3528
+ "declaration": {
3529
+ "name": "AiSurface",
3530
+ "module": "src/visual/surface.ts"
3531
+ }
3532
+ }
3533
+ ]
3534
+ },
3535
+ {
3536
+ "kind": "javascript-module",
3537
+ "path": "src/visual/text.ts",
3538
+ "declarations": [
3539
+ {
3540
+ "kind": "class",
3541
+ "description": "Typography primitive.",
3542
+ "name": "AiText",
3543
+ "cssProperties": [
3544
+ {
3545
+ "description": "Text color.",
3546
+ "name": "--text-color"
3547
+ },
3548
+ {
3549
+ "description": "Font family.",
3550
+ "name": "--font-family"
3551
+ },
3552
+ {
3553
+ "description": "Monospace font family.",
3554
+ "name": "--font-family-mono"
3555
+ },
3556
+ {
3557
+ "description": "Font size.",
3558
+ "name": "--font-size"
3559
+ },
3560
+ {
3561
+ "description": "Font weight.",
3562
+ "name": "--font-weight"
3563
+ },
3564
+ {
3565
+ "description": "Line height.",
3566
+ "name": "--line-height"
3567
+ },
3568
+ {
3569
+ "description": "Letter spacing.",
3570
+ "name": "--letter-spacing"
3571
+ }
3572
+ ],
3573
+ "slots": [
3574
+ {
3575
+ "description": "Text/inline content.",
3576
+ "name": ""
3577
+ }
3578
+ ],
3579
+ "members": [
3580
+ {
3581
+ "kind": "field",
3582
+ "name": "size",
3583
+ "type": {
3584
+ "text": "\"caption\" | \"meta\" | \"ui\" | \"body\" | \"title\" | \"display\""
3585
+ },
3586
+ "default": "\"body\"",
3587
+ "description": "Size preset.",
3588
+ "attribute": "size",
3589
+ "reflects": true
3590
+ },
3591
+ {
3592
+ "kind": "field",
3593
+ "name": "weight",
3594
+ "type": {
3595
+ "text": "\"normal\" | \"medium\" | \"semibold\" | \"bold\""
3596
+ },
3597
+ "default": "\"normal\"",
3598
+ "description": "Font weight preset.",
3599
+ "attribute": "weight",
3600
+ "reflects": true
3601
+ },
3602
+ {
3603
+ "kind": "field",
3604
+ "name": "tone",
3605
+ "type": {
3606
+ "text": "| \"default\"\n | \"muted\"\n | \"accent\"\n | \"success\"\n | \"warning\"\n | \"error\""
3607
+ },
3608
+ "default": "\"default\"",
3609
+ "description": "Semantic color tone.",
3610
+ "attribute": "tone",
3611
+ "reflects": true
3612
+ },
3613
+ {
3614
+ "kind": "field",
3615
+ "name": "mono",
3616
+ "type": {
3617
+ "text": "boolean"
3618
+ },
3619
+ "default": "false",
3620
+ "description": "Whether to use monospace font.",
3621
+ "attribute": "mono",
3622
+ "reflects": true
3623
+ },
3624
+ {
3625
+ "kind": "field",
3626
+ "name": "truncate",
3627
+ "type": {
3628
+ "text": "boolean"
3629
+ },
3630
+ "default": "false",
3631
+ "description": "Whether to truncate with ellipsis.",
3632
+ "attribute": "truncate",
3633
+ "reflects": true
3634
+ },
3635
+ {
3636
+ "kind": "field",
3637
+ "name": "inline",
3638
+ "type": {
3639
+ "text": "boolean"
3640
+ },
3641
+ "default": "false",
3642
+ "description": "Whether to use inline display.",
3643
+ "attribute": "inline",
3644
+ "reflects": true
3645
+ },
3646
+ {
3647
+ "kind": "method",
3648
+ "name": "getToneColor",
3649
+ "privacy": "private",
3650
+ "return": {
3651
+ "type": {
3652
+ "text": "string"
3653
+ }
3654
+ }
3655
+ }
3656
+ ],
3657
+ "attributes": [
3658
+ {
3659
+ "name": "size",
3660
+ "type": {
3661
+ "text": "\"caption\" | \"meta\" | \"ui\" | \"body\" | \"title\" | \"display\""
3662
+ },
3663
+ "default": "\"body\"",
3664
+ "description": "Size preset.",
3665
+ "fieldName": "size"
3666
+ },
3667
+ {
3668
+ "name": "weight",
3669
+ "type": {
3670
+ "text": "\"normal\" | \"medium\" | \"semibold\" | \"bold\""
3671
+ },
3672
+ "default": "\"normal\"",
3673
+ "description": "Font weight preset.",
3674
+ "fieldName": "weight"
3675
+ },
3676
+ {
3677
+ "name": "tone",
3678
+ "type": {
3679
+ "text": "| \"default\"\n | \"muted\"\n | \"accent\"\n | \"success\"\n | \"warning\"\n | \"error\""
3680
+ },
3681
+ "default": "\"default\"",
3682
+ "description": "Semantic color tone.",
3683
+ "fieldName": "tone"
3684
+ },
3685
+ {
3686
+ "name": "mono",
3687
+ "type": {
3688
+ "text": "boolean"
3689
+ },
3690
+ "default": "false",
3691
+ "description": "Whether to use monospace font.",
3692
+ "fieldName": "mono"
3693
+ },
3694
+ {
3695
+ "name": "truncate",
3696
+ "type": {
3697
+ "text": "boolean"
3698
+ },
3699
+ "default": "false",
3700
+ "description": "Whether to truncate with ellipsis.",
3701
+ "fieldName": "truncate"
3702
+ },
3703
+ {
3704
+ "name": "inline",
3705
+ "type": {
3706
+ "text": "boolean"
3707
+ },
3708
+ "default": "false",
3709
+ "description": "Whether to use inline display.",
3710
+ "fieldName": "inline"
3711
+ }
3712
+ ],
3713
+ "superclass": {
3714
+ "name": "LitElement",
3715
+ "package": "lit"
3716
+ },
3717
+ "tagName": "ai-text",
3718
+ "customElement": true
3719
+ }
3720
+ ],
3721
+ "exports": [
3722
+ {
3723
+ "kind": "js",
3724
+ "name": "AiText",
3725
+ "declaration": {
3726
+ "name": "AiText",
3727
+ "module": "src/visual/text.ts"
3728
+ }
3729
+ },
3730
+ {
3731
+ "kind": "custom-element-definition",
3732
+ "name": "ai-text",
3733
+ "declaration": {
3734
+ "name": "AiText",
3735
+ "module": "src/visual/text.ts"
3736
+ }
3737
+ }
3738
+ ]
3739
+ }
3740
+ ]
3741
+ }