@tylertech/forge-ai 0.14.0 → 0.15.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 (46) hide show
  1. package/custom-elements.json +520 -278
  2. package/dist/ai-agent-selector/ai-agent-selector.mjs +1 -1
  3. package/dist/ai-chat-header/ai-chat-header.d.ts +5 -0
  4. package/dist/ai-chat-header/ai-chat-header.mjs +9 -3
  5. package/dist/ai-chat-header/ai-chat-header.scss.mjs +1 -1
  6. package/dist/ai-chatbot/agent-adapter.d.ts +1 -0
  7. package/dist/ai-chatbot/ai-chatbot-base.mjs +0 -1
  8. package/dist/ai-chatbot/ai-chatbot.d.ts +5 -1
  9. package/dist/ai-chatbot/ai-chatbot.mjs +18 -5
  10. package/dist/ai-chatbot/index.d.ts +1 -0
  11. package/dist/ai-chatbot/index.mjs +4 -1
  12. package/dist/ai-chatbot/message-state-controller.d.ts +8 -11
  13. package/dist/ai-chatbot/message-state-controller.mjs +7 -129
  14. package/dist/ai-chatbot/request-serialization.d.ts +33 -0
  15. package/dist/ai-chatbot/request-serialization.mjs +31 -0
  16. package/dist/ai-chatbot/types.d.ts +0 -73
  17. package/dist/ai-chatbot-launcher/ai-chatbot-launcher.d.ts +14 -2
  18. package/dist/ai-chatbot-launcher/ai-chatbot-launcher.mjs +47 -11
  19. package/dist/ai-chatbot-launcher/ai-chatbot-launcher.scss.mjs +1 -1
  20. package/dist/ai-conversations-panel/ai-conversations-panel.d.ts +10 -0
  21. package/dist/ai-conversations-panel/ai-conversations-panel.mjs +68 -7
  22. package/dist/ai-conversations-panel/ai-conversations-panel.scss.mjs +1 -1
  23. package/dist/ai-dialog/ai-dialog.mjs +1 -1
  24. package/dist/ai-dropdown-menu/ai-dropdown-menu.mjs +1 -1
  25. package/dist/ai-dropdown-menu/index.d.ts +1 -1
  26. package/dist/ai-edit-thread/ai-edit-thread.d.ts +5 -0
  27. package/dist/ai-edit-thread/ai-edit-thread.mjs +16 -9
  28. package/dist/ai-error-message/ai-error-message.d.ts +7 -1
  29. package/dist/ai-error-message/ai-error-message.mjs +40 -5
  30. package/dist/ai-error-message/ai-error-message.scss.mjs +1 -1
  31. package/dist/ai-error-message/index.d.ts +1 -0
  32. package/dist/ai-fab/ai-fab.d.ts +2 -0
  33. package/dist/ai-fab/ai-fab.mjs +5 -1
  34. package/dist/ai-icon-button/ai-icon-button.mjs +4 -1
  35. package/dist/ai-message-thread/ai-message-thread.mjs +1 -1
  36. package/dist/ai-sidebar/ai-sidebar.mjs +2 -2
  37. package/dist/ai-thread-actions-menu/ai-thread-actions-menu.d.ts +5 -0
  38. package/dist/ai-thread-actions-menu/ai-thread-actions-menu.mjs +6 -2
  39. package/dist/ai-threads-search/ai-threads-search.d.ts +13 -1
  40. package/dist/ai-threads-search/ai-threads-search.mjs +87 -30
  41. package/dist/ai-threads-search/ai-threads-search.scss.mjs +1 -1
  42. package/dist/ai-tool-call-indicator/ai-tool-call-indicator.scss.mjs +1 -1
  43. package/dist/ai-voice-input/ai-voice-input.mjs +2 -2
  44. package/dist/core/chatbot-core-controller.mjs +6 -8
  45. package/dist/index.mjs +4 -1
  46. package/package.json +1 -1
@@ -737,156 +737,156 @@
737
737
  },
738
738
  {
739
739
  "kind": "javascript-module",
740
- "path": "src/lib/ai-button/ai-button.ts",
740
+ "path": "src/lib/ai-chain-of-thought/ai-chain-of-thought.ts",
741
741
  "declarations": [
742
742
  {
743
743
  "kind": "variable",
744
- "name": "AiButtonComponentTagName",
744
+ "name": "AiChainOfThoughtComponentTagName",
745
745
  "type": {
746
746
  "text": "keyof HTMLElementTagNameMap"
747
747
  },
748
- "default": "'forge-ai-button'"
748
+ "default": "'forge-ai-chain-of-thought'"
749
749
  },
750
750
  {
751
751
  "kind": "class",
752
752
  "description": "",
753
- "name": "AiButtonComponent",
754
- "slots": [
755
- {
756
- "description": "Default slot for button content",
757
- "name": ""
758
- }
759
- ],
753
+ "name": "AiChainOfThoughtComponent",
760
754
  "members": [
761
755
  {
762
756
  "kind": "field",
763
- "name": "disabled",
757
+ "name": "expanded",
764
758
  "type": {
765
759
  "text": "boolean"
766
760
  },
767
761
  "privacy": "public",
768
762
  "default": "false",
769
- "description": "Whether the button is disabled",
770
- "attribute": "disabled",
763
+ "description": "Whether the chain of thought is expanded",
764
+ "attribute": "expanded",
771
765
  "reflects": true
772
766
  }
773
767
  ],
774
768
  "attributes": [
775
769
  {
776
- "name": "disabled",
770
+ "name": "expanded",
777
771
  "type": {
778
772
  "text": "boolean"
779
773
  },
780
774
  "default": "false",
781
- "description": "Whether the button is disabled",
782
- "fieldName": "disabled"
775
+ "description": "Whether the chain of thought is expanded",
776
+ "fieldName": "expanded"
783
777
  }
784
778
  ],
785
779
  "superclass": {
786
780
  "name": "LitElement",
787
781
  "package": "lit"
788
782
  },
789
- "tagName": "forge-ai-button",
783
+ "tagName": "forge-ai-chain-of-thought",
790
784
  "customElement": true
791
785
  }
792
786
  ],
793
787
  "exports": [
794
788
  {
795
789
  "kind": "js",
796
- "name": "AiButtonComponentTagName",
790
+ "name": "AiChainOfThoughtComponentTagName",
797
791
  "declaration": {
798
- "name": "AiButtonComponentTagName",
799
- "module": "src/lib/ai-button/ai-button.ts"
792
+ "name": "AiChainOfThoughtComponentTagName",
793
+ "module": "src/lib/ai-chain-of-thought/ai-chain-of-thought.ts"
800
794
  }
801
795
  },
802
796
  {
803
797
  "kind": "js",
804
- "name": "AiButtonComponent",
798
+ "name": "AiChainOfThoughtComponent",
805
799
  "declaration": {
806
- "name": "AiButtonComponent",
807
- "module": "src/lib/ai-button/ai-button.ts"
800
+ "name": "AiChainOfThoughtComponent",
801
+ "module": "src/lib/ai-chain-of-thought/ai-chain-of-thought.ts"
808
802
  }
809
803
  },
810
804
  {
811
805
  "kind": "custom-element-definition",
812
806
  "declaration": {
813
- "name": "AiButtonComponent",
814
- "module": "src/lib/ai-button/ai-button.ts"
807
+ "name": "AiChainOfThoughtComponent",
808
+ "module": "src/lib/ai-chain-of-thought/ai-chain-of-thought.ts"
815
809
  }
816
810
  }
817
811
  ]
818
812
  },
819
813
  {
820
814
  "kind": "javascript-module",
821
- "path": "src/lib/ai-chain-of-thought/ai-chain-of-thought.ts",
815
+ "path": "src/lib/ai-button/ai-button.ts",
822
816
  "declarations": [
823
817
  {
824
818
  "kind": "variable",
825
- "name": "AiChainOfThoughtComponentTagName",
819
+ "name": "AiButtonComponentTagName",
826
820
  "type": {
827
821
  "text": "keyof HTMLElementTagNameMap"
828
822
  },
829
- "default": "'forge-ai-chain-of-thought'"
823
+ "default": "'forge-ai-button'"
830
824
  },
831
825
  {
832
826
  "kind": "class",
833
827
  "description": "",
834
- "name": "AiChainOfThoughtComponent",
828
+ "name": "AiButtonComponent",
829
+ "slots": [
830
+ {
831
+ "description": "Default slot for button content",
832
+ "name": ""
833
+ }
834
+ ],
835
835
  "members": [
836
836
  {
837
837
  "kind": "field",
838
- "name": "expanded",
838
+ "name": "disabled",
839
839
  "type": {
840
840
  "text": "boolean"
841
841
  },
842
842
  "privacy": "public",
843
843
  "default": "false",
844
- "description": "Whether the chain of thought is expanded",
845
- "attribute": "expanded",
844
+ "description": "Whether the button is disabled",
845
+ "attribute": "disabled",
846
846
  "reflects": true
847
847
  }
848
848
  ],
849
849
  "attributes": [
850
850
  {
851
- "name": "expanded",
851
+ "name": "disabled",
852
852
  "type": {
853
853
  "text": "boolean"
854
854
  },
855
855
  "default": "false",
856
- "description": "Whether the chain of thought is expanded",
857
- "fieldName": "expanded"
856
+ "description": "Whether the button is disabled",
857
+ "fieldName": "disabled"
858
858
  }
859
859
  ],
860
860
  "superclass": {
861
861
  "name": "LitElement",
862
862
  "package": "lit"
863
863
  },
864
- "tagName": "forge-ai-chain-of-thought",
864
+ "tagName": "forge-ai-button",
865
865
  "customElement": true
866
866
  }
867
867
  ],
868
868
  "exports": [
869
869
  {
870
870
  "kind": "js",
871
- "name": "AiChainOfThoughtComponentTagName",
871
+ "name": "AiButtonComponentTagName",
872
872
  "declaration": {
873
- "name": "AiChainOfThoughtComponentTagName",
874
- "module": "src/lib/ai-chain-of-thought/ai-chain-of-thought.ts"
873
+ "name": "AiButtonComponentTagName",
874
+ "module": "src/lib/ai-button/ai-button.ts"
875
875
  }
876
876
  },
877
877
  {
878
878
  "kind": "js",
879
- "name": "AiChainOfThoughtComponent",
879
+ "name": "AiButtonComponent",
880
880
  "declaration": {
881
- "name": "AiChainOfThoughtComponent",
882
- "module": "src/lib/ai-chain-of-thought/ai-chain-of-thought.ts"
881
+ "name": "AiButtonComponent",
882
+ "module": "src/lib/ai-button/ai-button.ts"
883
883
  }
884
884
  },
885
885
  {
886
886
  "kind": "custom-element-definition",
887
887
  "declaration": {
888
- "name": "AiChainOfThoughtComponent",
889
- "module": "src/lib/ai-chain-of-thought/ai-chain-of-thought.ts"
888
+ "name": "AiButtonComponent",
889
+ "module": "src/lib/ai-button/ai-button.ts"
890
890
  }
891
891
  }
892
892
  ]
@@ -1078,6 +1078,17 @@
1078
1078
  "description": "Shows the conversations button (hamburger menu) for accessing conversation history",
1079
1079
  "attribute": "show-conversations-button"
1080
1080
  },
1081
+ {
1082
+ "kind": "field",
1083
+ "name": "hasConversationsError",
1084
+ "type": {
1085
+ "text": "boolean"
1086
+ },
1087
+ "privacy": "public",
1088
+ "default": "false",
1089
+ "description": "Shows an error badge on the conversations button, indicating a failure inside the conversations panel (default: false)",
1090
+ "attribute": "has-conversations-error"
1091
+ },
1081
1092
  {
1082
1093
  "kind": "method",
1083
1094
  "name": "showAgentInfo",
@@ -1233,6 +1244,15 @@
1233
1244
  "default": "false",
1234
1245
  "description": "Shows the conversations button (hamburger menu) for accessing conversation history",
1235
1246
  "fieldName": "showConversationsButton"
1247
+ },
1248
+ {
1249
+ "name": "has-conversations-error",
1250
+ "type": {
1251
+ "text": "boolean"
1252
+ },
1253
+ "default": "false",
1254
+ "description": "Shows an error badge on the conversations button, indicating a failure inside the conversations panel (default: false)",
1255
+ "fieldName": "hasConversationsError"
1236
1256
  }
1237
1257
  ],
1238
1258
  "superclass": {
@@ -3695,6 +3715,16 @@
3695
3715
  "description": "When true, shows a loading indicator in the conversations panel's recent chats list while threads are loading (default: false)",
3696
3716
  "attribute": "threads-loading"
3697
3717
  },
3718
+ {
3719
+ "kind": "field",
3720
+ "name": "threadsError",
3721
+ "type": {
3722
+ "text": "string | undefined"
3723
+ },
3724
+ "privacy": "public",
3725
+ "description": "Message describing a failed thread load. When set, the conversations panel shows the message with a retry button instead of its empty state or loading indicator. The conversations button also shows an error badge so the failure is visible with the panel closed. If threads are already loaded the list stays visible and the message renders as a compact single line with a retry - at the bottom of the list when a page was in flight, otherwise above it. Clear it once a load succeeds.",
3726
+ "attribute": "threads-error"
3727
+ },
3698
3728
  {
3699
3729
  "kind": "method",
3700
3730
  "name": "sendMessage",
@@ -4351,7 +4381,7 @@
4351
4381
  "type": {
4352
4382
  "text": "CustomEvent<ForgeAiChatbotThreadSelectEventData>"
4353
4383
  },
4354
- "description": "Fired when user selects a thread",
4384
+ "description": "Fired when user selects a thread. Cancelable - prevents selectedThreadId from being set, leaving the host to commit it once its own load resolves",
4355
4385
  "name": "forge-ai-chatbot-thread-select"
4356
4386
  },
4357
4387
  {
@@ -4388,6 +4418,13 @@
4388
4418
  },
4389
4419
  "description": "Fired when user deletes a thread. Cancelable - if prevented, call onSuccess() to commit deletion or onError() to revert. Otherwise optimistically removed.",
4390
4420
  "name": "forge-ai-chatbot-thread-delete"
4421
+ },
4422
+ {
4423
+ "type": {
4424
+ "text": "CustomEvent<void>"
4425
+ },
4426
+ "description": "Fired when the retry button in the conversations panel's error state is clicked. Re-request the threads and clear threadsError once the load succeeds",
4427
+ "name": "forge-ai-chatbot-thread-retry"
4391
4428
  }
4392
4429
  ],
4393
4430
  "attributes": [
@@ -4474,6 +4511,14 @@
4474
4511
  "description": "When true, shows a loading indicator in the conversations panel's recent chats list while threads are loading (default: false)",
4475
4512
  "fieldName": "threadsLoading"
4476
4513
  },
4514
+ {
4515
+ "name": "threads-error",
4516
+ "type": {
4517
+ "text": "string | undefined"
4518
+ },
4519
+ "description": "Message describing a failed thread load. When set, the conversations panel shows the message with a retry button instead of its empty state or loading indicator. The conversations button also shows an error badge so the failure is visible with the panel closed. If threads are already loaded the list stays visible and the message renders as a compact single line with a retry - at the bottom of the list when a page was in flight, otherwise above it. Clear it once a load succeeds.",
4520
+ "fieldName": "threadsError"
4521
+ },
4477
4522
  {
4478
4523
  "name": "file-upload",
4479
4524
  "type": {
@@ -5441,13 +5486,6 @@
5441
5486
  "type": {
5442
5487
  "text": "string"
5443
5488
  }
5444
- },
5445
- {
5446
- "name": "event",
5447
- "optional": true,
5448
- "type": {
5449
- "text": "MessageStartEvent"
5450
- }
5451
5489
  }
5452
5490
  ]
5453
5491
  },
@@ -5472,13 +5510,6 @@
5472
5510
  "type": {
5473
5511
  "text": "string"
5474
5512
  }
5475
- },
5476
- {
5477
- "name": "event",
5478
- "optional": true,
5479
- "type": {
5480
- "text": "MessageDeltaEvent"
5481
- }
5482
5513
  }
5483
5514
  ]
5484
5515
  },
@@ -5497,13 +5528,6 @@
5497
5528
  "type": {
5498
5529
  "text": "string"
5499
5530
  }
5500
- },
5501
- {
5502
- "name": "event",
5503
- "optional": true,
5504
- "type": {
5505
- "text": "MessageEndEvent"
5506
- }
5507
5531
  }
5508
5532
  ]
5509
5533
  },
@@ -5522,13 +5546,6 @@
5522
5546
  "type": {
5523
5547
  "text": "ToolCall"
5524
5548
  }
5525
- },
5526
- {
5527
- "name": "event",
5528
- "optional": true,
5529
- "type": {
5530
- "text": "ToolCallStartEvent"
5531
- }
5532
5549
  }
5533
5550
  ]
5534
5551
  },
@@ -5553,13 +5570,6 @@
5553
5570
  "type": {
5554
5571
  "text": "Partial<ToolCall>"
5555
5572
  }
5556
- },
5557
- {
5558
- "name": "eventData",
5559
- "optional": true,
5560
- "type": {
5561
- "text": "{\n eventType: 'tool-call-args' | 'tool-call-end';\n event: ToolCallArgsEvent | ToolCallEndEvent;\n }"
5562
- }
5563
5573
  }
5564
5574
  ]
5565
5575
  },
@@ -5637,13 +5647,6 @@
5637
5647
  "type": {
5638
5648
  "text": "ChatMessage"
5639
5649
  }
5640
- },
5641
- {
5642
- "name": "event",
5643
- "optional": true,
5644
- "type": {
5645
- "text": "MessageStartEvent"
5646
- }
5647
5650
  }
5648
5651
  ]
5649
5652
  },
@@ -5724,13 +5727,6 @@
5724
5727
  "type": {
5725
5728
  "text": "ChatMessage['status']"
5726
5729
  }
5727
- },
5728
- {
5729
- "name": "event",
5730
- "optional": true,
5731
- "type": {
5732
- "text": "MessageEndEvent"
5733
- }
5734
5730
  }
5735
5731
  ]
5736
5732
  },
@@ -5875,6 +5871,66 @@
5875
5871
  }
5876
5872
  ]
5877
5873
  },
5874
+ {
5875
+ "kind": "javascript-module",
5876
+ "path": "src/lib/ai-chatbot/request-serialization.ts",
5877
+ "declarations": [
5878
+ {
5879
+ "kind": "function",
5880
+ "name": "toRequestToolCall",
5881
+ "return": {
5882
+ "type": {
5883
+ "text": "RequestToolCall"
5884
+ }
5885
+ },
5886
+ "parameters": [
5887
+ {
5888
+ "name": "toolCall",
5889
+ "type": {
5890
+ "text": "ToolCall"
5891
+ }
5892
+ }
5893
+ ],
5894
+ "description": "Projects a tool call onto its wire shape. This is the single boundary at which\nlocal state is dropped, so adapters never have to remember to omit it."
5895
+ },
5896
+ {
5897
+ "kind": "function",
5898
+ "name": "toRequestMessages",
5899
+ "return": {
5900
+ "type": {
5901
+ "text": "RequestMessage[]"
5902
+ }
5903
+ },
5904
+ "parameters": [
5905
+ {
5906
+ "name": "messages",
5907
+ "type": {
5908
+ "text": "ChatMessage[]"
5909
+ }
5910
+ }
5911
+ ],
5912
+ "description": "Projects the thread onto the messages an agent endpoint is sent: client-only\nmessages and empty assistant turns are dropped, and every remaining message is\nrebuilt field by field rather than spread, so no local state can leak into a\nrequest body."
5913
+ }
5914
+ ],
5915
+ "exports": [
5916
+ {
5917
+ "kind": "js",
5918
+ "name": "toRequestToolCall",
5919
+ "declaration": {
5920
+ "name": "toRequestToolCall",
5921
+ "module": "src/lib/ai-chatbot/request-serialization.ts"
5922
+ }
5923
+ },
5924
+ {
5925
+ "kind": "js",
5926
+ "name": "toRequestMessages",
5927
+ "declaration": {
5928
+ "name": "toRequestMessages",
5929
+ "module": "src/lib/ai-chatbot/request-serialization.ts"
5930
+ }
5931
+ }
5932
+ ]
5933
+ },
5878
5934
  {
5879
5935
  "kind": "javascript-module",
5880
5936
  "path": "src/lib/ai-chatbot/types.ts",
@@ -6232,6 +6288,17 @@
6232
6288
  "description": "The name of the current thread (shown in conversation view breadcrumb)",
6233
6289
  "attribute": "thread-name"
6234
6290
  },
6291
+ {
6292
+ "kind": "field",
6293
+ "name": "showHistoryButton",
6294
+ "type": {
6295
+ "text": "boolean"
6296
+ },
6297
+ "privacy": "public",
6298
+ "default": "false",
6299
+ "description": "Controls the prompt bar's chat history button and its popover (default: false). Visibility is yours to decide - the component never infers it from whether chats are loaded, so an empty `threads` shows \"No chats yet\" rather than removing the entry point",
6300
+ "attribute": "show-history-button"
6301
+ },
6235
6302
  {
6236
6303
  "kind": "field",
6237
6304
  "name": "showThreadRename",
@@ -6283,9 +6350,19 @@
6283
6350
  },
6284
6351
  "privacy": "public",
6285
6352
  "default": "false",
6286
- "description": "Whether chats are currently loading, used to gate the history button and its disabled state",
6353
+ "description": "Whether chats are currently loading, used to show a spinner on the history button and disable it",
6287
6354
  "attribute": "threads-loading"
6288
6355
  },
6356
+ {
6357
+ "kind": "field",
6358
+ "name": "threadsError",
6359
+ "type": {
6360
+ "text": "string | undefined"
6361
+ },
6362
+ "privacy": "public",
6363
+ "description": "Message describing a failed chat history load. When set, the history popover/view shows the message with a retry button instead of the empty state, and the history button shows an error badge so the failure is visible with the popover closed. If chats are already loaded the list stays visible and the message renders as a compact single line with a retry - at the bottom of the list when a page was in flight, otherwise above it. Clear it once a load succeeds.",
6364
+ "attribute": "threads-error"
6365
+ },
6289
6366
  {
6290
6367
  "kind": "field",
6291
6368
  "name": "selectedThreadId",
@@ -6307,6 +6384,17 @@
6307
6384
  }
6308
6385
  }
6309
6386
  },
6387
+ {
6388
+ "kind": "method",
6389
+ "name": "showWelcome",
6390
+ "privacy": "public",
6391
+ "return": {
6392
+ "type": {
6393
+ "text": "void"
6394
+ }
6395
+ },
6396
+ "description": "Returns to the welcome view without touching conversation state. Unlike `startNewChat()`, this\nleaves messages, `selectedThreadId`, and the adapter's thread untouched, so an abandoned thread\nselection can be undone without discarding the conversation the user was already in."
6397
+ },
6310
6398
  {
6311
6399
  "kind": "method",
6312
6400
  "name": "showHistory",
@@ -6923,7 +7011,7 @@
6923
7011
  "type": {
6924
7012
  "text": "CustomEvent<ForgeAiChatbotLauncherThreadSelectEventData>"
6925
7013
  },
6926
- "description": "Fired when a thread is selected from the history popover or full history view",
7014
+ "description": "Fired when a thread is selected from the history popover or full history view. Cancelable - prevents selectedThreadId from being set and the transition to the conversation view, leaving the host to commit both once its own load resolves",
6927
7015
  "name": "forge-ai-chatbot-launcher-thread-select"
6928
7016
  },
6929
7017
  {
@@ -6946,6 +7034,13 @@
6946
7034
  },
6947
7035
  "description": "Fired when \"New chat\" is clicked from the full history view. Cancelable - prevents startNewChat() from being called",
6948
7036
  "name": "forge-ai-chatbot-launcher-new-chat"
7037
+ },
7038
+ {
7039
+ "type": {
7040
+ "text": "CustomEvent<void>"
7041
+ },
7042
+ "description": "Fired when the retry button in the history error state is clicked. Re-request the chats and clear threadsError once the load succeeds",
7043
+ "name": "forge-ai-chatbot-launcher-thread-retry"
6949
7044
  }
6950
7045
  ],
6951
7046
  "attributes": [
@@ -6965,6 +7060,15 @@
6965
7060
  "description": "The name of the current thread (shown in conversation view breadcrumb)",
6966
7061
  "fieldName": "threadName"
6967
7062
  },
7063
+ {
7064
+ "name": "show-history-button",
7065
+ "type": {
7066
+ "text": "boolean"
7067
+ },
7068
+ "default": "false",
7069
+ "description": "Controls the prompt bar's chat history button and its popover (default: false). Visibility is yours to decide - the component never infers it from whether chats are loaded, so an empty `threads` shows \"No chats yet\" rather than removing the entry point",
7070
+ "fieldName": "showHistoryButton"
7071
+ },
6968
7072
  {
6969
7073
  "name": "show-thread-rename",
6970
7074
  "type": {
@@ -6998,9 +7102,17 @@
6998
7102
  "text": "boolean"
6999
7103
  },
7000
7104
  "default": "false",
7001
- "description": "Whether chats are currently loading, used to gate the history button and its disabled state",
7105
+ "description": "Whether chats are currently loading, used to show a spinner on the history button and disable it",
7002
7106
  "fieldName": "threadsLoading"
7003
7107
  },
7108
+ {
7109
+ "name": "threads-error",
7110
+ "type": {
7111
+ "text": "string | undefined"
7112
+ },
7113
+ "description": "Message describing a failed chat history load. When set, the history popover/view shows the message with a retry button instead of the empty state, and the history button shows an error badge so the failure is visible with the popover closed. If chats are already loaded the list stays visible and the message renders as a compact single line with a retry - at the bottom of the list when a page was in flight, otherwise above it. Clear it once a load succeeds.",
7114
+ "fieldName": "threadsError"
7115
+ },
7004
7116
  {
7005
7117
  "name": "selected-thread-id",
7006
7118
  "type": {
@@ -7842,6 +7954,16 @@
7842
7954
  "attribute": "loading",
7843
7955
  "reflects": true
7844
7956
  },
7957
+ {
7958
+ "kind": "field",
7959
+ "name": "errorMessage",
7960
+ "type": {
7961
+ "text": "string | undefined"
7962
+ },
7963
+ "privacy": "public",
7964
+ "description": "Message describing a failed thread load. When no threads are loaded, an error banner with a\nretry button replaces the empty state and loading indicator. When threads are already on screen\nthe list stays visible and the message shows as a compact single line with a retry - at the bottom\nof the list if a page was in flight, otherwise above it. The host owns this value and should clear\nit once a load succeeds.",
7965
+ "attribute": "error-message"
7966
+ },
7845
7967
  {
7846
7968
  "kind": "method",
7847
7969
  "name": "resetToMainView",
@@ -7902,8 +8024,15 @@
7902
8024
  },
7903
8025
  "description": "Fired when thread delete confirmed. Cancelable - if prevented, call onSuccess() to commit deletion or onError() to revert. Otherwise optimistically removed.",
7904
8026
  "name": "forge-ai-conversations-panel-delete"
7905
- }
7906
- ],
8027
+ },
8028
+ {
8029
+ "type": {
8030
+ "text": "CustomEvent<void>"
8031
+ },
8032
+ "description": "Fired when the retry button in the error state is clicked. The host should re-request the threads and clear errorMessage once the load succeeds.",
8033
+ "name": "forge-ai-conversations-panel-retry"
8034
+ }
8035
+ ],
7907
8036
  "attributes": [
7908
8037
  {
7909
8038
  "name": "threads",
@@ -7953,6 +8082,14 @@
7953
8082
  },
7954
8083
  "default": "false",
7955
8084
  "fieldName": "loading"
8085
+ },
8086
+ {
8087
+ "name": "error-message",
8088
+ "type": {
8089
+ "text": "string | undefined"
8090
+ },
8091
+ "description": "Message describing a failed thread load. When no threads are loaded, an error banner with a\nretry button replaces the empty state and loading indicator. When threads are already on screen\nthe list stays visible and the message shows as a compact single line with a retry - at the bottom\nof the list if a page was in flight, otherwise above it. The host owns this value and should clear\nit once a load succeeds.",
8092
+ "fieldName": "errorMessage"
7956
8093
  }
7957
8094
  ],
7958
8095
  "superclass": {
@@ -9195,6 +9332,17 @@
9195
9332
  "privacy": "public",
9196
9333
  "default": "''",
9197
9334
  "attribute": "value"
9335
+ },
9336
+ {
9337
+ "kind": "field",
9338
+ "name": "density",
9339
+ "type": {
9340
+ "text": "EditThreadDensity"
9341
+ },
9342
+ "privacy": "public",
9343
+ "default": "'small'",
9344
+ "description": "The density of the cancel/save buttons",
9345
+ "attribute": "density"
9198
9346
  }
9199
9347
  ],
9200
9348
  "events": [
@@ -9228,6 +9376,15 @@
9228
9376
  },
9229
9377
  "default": "''",
9230
9378
  "fieldName": "value"
9379
+ },
9380
+ {
9381
+ "name": "density",
9382
+ "type": {
9383
+ "text": "EditThreadDensity"
9384
+ },
9385
+ "default": "'small'",
9386
+ "description": "The density of the cancel/save buttons",
9387
+ "fieldName": "density"
9231
9388
  }
9232
9389
  ],
9233
9390
  "superclass": {
@@ -9264,6 +9421,79 @@
9264
9421
  }
9265
9422
  ]
9266
9423
  },
9424
+ {
9425
+ "kind": "javascript-module",
9426
+ "path": "src/lib/ai-empty-state/ai-empty-state.ts",
9427
+ "declarations": [
9428
+ {
9429
+ "kind": "variable",
9430
+ "name": "AiEmptyStateComponentTagName",
9431
+ "type": {
9432
+ "text": "keyof HTMLElementTagNameMap"
9433
+ },
9434
+ "default": "'forge-ai-empty-state'"
9435
+ },
9436
+ {
9437
+ "kind": "class",
9438
+ "description": "",
9439
+ "name": "AiEmptyStateComponent",
9440
+ "slots": [
9441
+ {
9442
+ "description": "The welcome message content (overrides the default message).",
9443
+ "name": ""
9444
+ },
9445
+ {
9446
+ "description": "The icon/graphic to display.",
9447
+ "name": "icon"
9448
+ },
9449
+ {
9450
+ "description": "The custom heading/title to display.",
9451
+ "name": "heading"
9452
+ },
9453
+ {
9454
+ "description": "The custom body message content.",
9455
+ "name": "body"
9456
+ },
9457
+ {
9458
+ "description": "The actions or suggestions to display below the message.",
9459
+ "name": "actions"
9460
+ }
9461
+ ],
9462
+ "members": [],
9463
+ "superclass": {
9464
+ "name": "LitElement",
9465
+ "package": "lit"
9466
+ },
9467
+ "tagName": "forge-ai-empty-state",
9468
+ "customElement": true
9469
+ }
9470
+ ],
9471
+ "exports": [
9472
+ {
9473
+ "kind": "js",
9474
+ "name": "AiEmptyStateComponentTagName",
9475
+ "declaration": {
9476
+ "name": "AiEmptyStateComponentTagName",
9477
+ "module": "src/lib/ai-empty-state/ai-empty-state.ts"
9478
+ }
9479
+ },
9480
+ {
9481
+ "kind": "js",
9482
+ "name": "AiEmptyStateComponent",
9483
+ "declaration": {
9484
+ "name": "AiEmptyStateComponent",
9485
+ "module": "src/lib/ai-empty-state/ai-empty-state.ts"
9486
+ }
9487
+ },
9488
+ {
9489
+ "kind": "custom-element-definition",
9490
+ "declaration": {
9491
+ "name": "AiEmptyStateComponent",
9492
+ "module": "src/lib/ai-empty-state/ai-empty-state.ts"
9493
+ }
9494
+ }
9495
+ ]
9496
+ },
9267
9497
  {
9268
9498
  "kind": "javascript-module",
9269
9499
  "path": "src/lib/ai-embedded-chat/ai-embedded-chat.ts",
@@ -9500,79 +9730,6 @@
9500
9730
  }
9501
9731
  ]
9502
9732
  },
9503
- {
9504
- "kind": "javascript-module",
9505
- "path": "src/lib/ai-empty-state/ai-empty-state.ts",
9506
- "declarations": [
9507
- {
9508
- "kind": "variable",
9509
- "name": "AiEmptyStateComponentTagName",
9510
- "type": {
9511
- "text": "keyof HTMLElementTagNameMap"
9512
- },
9513
- "default": "'forge-ai-empty-state'"
9514
- },
9515
- {
9516
- "kind": "class",
9517
- "description": "",
9518
- "name": "AiEmptyStateComponent",
9519
- "slots": [
9520
- {
9521
- "description": "The welcome message content (overrides the default message).",
9522
- "name": ""
9523
- },
9524
- {
9525
- "description": "The icon/graphic to display.",
9526
- "name": "icon"
9527
- },
9528
- {
9529
- "description": "The custom heading/title to display.",
9530
- "name": "heading"
9531
- },
9532
- {
9533
- "description": "The custom body message content.",
9534
- "name": "body"
9535
- },
9536
- {
9537
- "description": "The actions or suggestions to display below the message.",
9538
- "name": "actions"
9539
- }
9540
- ],
9541
- "members": [],
9542
- "superclass": {
9543
- "name": "LitElement",
9544
- "package": "lit"
9545
- },
9546
- "tagName": "forge-ai-empty-state",
9547
- "customElement": true
9548
- }
9549
- ],
9550
- "exports": [
9551
- {
9552
- "kind": "js",
9553
- "name": "AiEmptyStateComponentTagName",
9554
- "declaration": {
9555
- "name": "AiEmptyStateComponentTagName",
9556
- "module": "src/lib/ai-empty-state/ai-empty-state.ts"
9557
- }
9558
- },
9559
- {
9560
- "kind": "js",
9561
- "name": "AiEmptyStateComponent",
9562
- "declaration": {
9563
- "name": "AiEmptyStateComponent",
9564
- "module": "src/lib/ai-empty-state/ai-empty-state.ts"
9565
- }
9566
- },
9567
- {
9568
- "kind": "custom-element-definition",
9569
- "declaration": {
9570
- "name": "AiEmptyStateComponent",
9571
- "module": "src/lib/ai-empty-state/ai-empty-state.ts"
9572
- }
9573
- }
9574
- ]
9575
- },
9576
9733
  {
9577
9734
  "kind": "javascript-module",
9578
9735
  "path": "src/lib/ai-error-message/ai-error-message.ts",
@@ -9591,7 +9748,7 @@
9591
9748
  "name": "AiErrorMessageComponent",
9592
9749
  "slots": [
9593
9750
  {
9594
- "description": "The error title text",
9751
+ "description": "The error title text. When empty the banner collapses to a single row alongside the icon.",
9595
9752
  "name": "title"
9596
9753
  },
9597
9754
  {
@@ -9599,7 +9756,31 @@
9599
9756
  "name": ""
9600
9757
  }
9601
9758
  ],
9602
- "members": [],
9759
+ "members": [
9760
+ {
9761
+ "kind": "field",
9762
+ "name": "density",
9763
+ "type": {
9764
+ "text": "ErrorMessageDensity"
9765
+ },
9766
+ "privacy": "public",
9767
+ "default": "'medium'",
9768
+ "description": "The density of the banner. `'small'` tightens the padding, gap, and icon for use in compact surfaces like lists and panels (default: 'medium')",
9769
+ "attribute": "density",
9770
+ "reflects": true
9771
+ }
9772
+ ],
9773
+ "attributes": [
9774
+ {
9775
+ "name": "density",
9776
+ "type": {
9777
+ "text": "ErrorMessageDensity"
9778
+ },
9779
+ "default": "'medium'",
9780
+ "description": "The density of the banner. `'small'` tightens the padding, gap, and icon for use in compact surfaces like lists and panels (default: 'medium')",
9781
+ "fieldName": "density"
9782
+ }
9783
+ ],
9603
9784
  "superclass": {
9604
9785
  "name": "LitElement",
9605
9786
  "package": "lit"
@@ -9699,6 +9880,17 @@
9699
9880
  "description": "Whether the button is extended",
9700
9881
  "attribute": "extended",
9701
9882
  "reflects": true
9883
+ },
9884
+ {
9885
+ "kind": "field",
9886
+ "name": "label",
9887
+ "type": {
9888
+ "text": "string"
9889
+ },
9890
+ "privacy": "public",
9891
+ "default": "'Launch chatbot'",
9892
+ "description": "Accessible label for the button, announced by screen readers.",
9893
+ "attribute": "label"
9702
9894
  }
9703
9895
  ],
9704
9896
  "attributes": [
@@ -9719,6 +9911,15 @@
9719
9911
  "default": "false",
9720
9912
  "description": "Whether the button is extended",
9721
9913
  "fieldName": "extended"
9914
+ },
9915
+ {
9916
+ "name": "label",
9917
+ "type": {
9918
+ "text": "string"
9919
+ },
9920
+ "default": "'Launch chatbot'",
9921
+ "description": "Accessible label for the button, announced by screen readers.",
9922
+ "fieldName": "label"
9722
9923
  }
9723
9924
  ],
9724
9925
  "superclass": {
@@ -12370,6 +12571,17 @@
12370
12571
  "privacy": "public",
12371
12572
  "default": "false",
12372
12573
  "attribute": "show-delete"
12574
+ },
12575
+ {
12576
+ "kind": "field",
12577
+ "name": "density",
12578
+ "type": {
12579
+ "text": "DropdownMenuDensity"
12580
+ },
12581
+ "privacy": "public",
12582
+ "default": "'small'",
12583
+ "description": "The density of the trigger button",
12584
+ "attribute": "density"
12373
12585
  }
12374
12586
  ],
12375
12587
  "events": [
@@ -12425,6 +12637,15 @@
12425
12637
  },
12426
12638
  "default": "false",
12427
12639
  "fieldName": "showDelete"
12640
+ },
12641
+ {
12642
+ "name": "density",
12643
+ "type": {
12644
+ "text": "DropdownMenuDensity"
12645
+ },
12646
+ "default": "'small'",
12647
+ "description": "The density of the trigger button",
12648
+ "fieldName": "density"
12428
12649
  }
12429
12650
  ],
12430
12651
  "superclass": {
@@ -12756,18 +12977,19 @@
12756
12977
  "text": "string"
12757
12978
  },
12758
12979
  "privacy": "public",
12759
- "default": "'Search chats...'",
12980
+ "default": "'Find a chat'",
12981
+ "description": "Placeholder text for the search input. The input's aria-label is \"Search\" - avoid reusing\nthat word here so screen readers don't announce the same word twice.",
12760
12982
  "attribute": "placeholder"
12761
12983
  },
12762
12984
  {
12763
12985
  "kind": "field",
12764
- "name": "emptyMessage",
12986
+ "name": "errorMessage",
12765
12987
  "type": {
12766
- "text": "string"
12988
+ "text": "string | undefined"
12767
12989
  },
12768
12990
  "privacy": "public",
12769
- "default": "'No chats found'",
12770
- "attribute": "empty-message"
12991
+ "description": "Message describing a failed thread load. When no threads are loaded, an error banner with a\nretry button replaces the empty state. When threads are already on screen the list stays visible\nand the message shows as a compact single line with a retry - at the bottom of the list if a page\nwas in flight, otherwise above it. The host owns this value and should clear it once a load succeeds.",
12992
+ "attribute": "error-message"
12771
12993
  },
12772
12994
  {
12773
12995
  "kind": "field",
@@ -12876,6 +13098,13 @@
12876
13098
  },
12877
13099
  "description": "Fired when the back button (shown via showBackButton) is clicked.",
12878
13100
  "name": "forge-ai-threads-search-back"
13101
+ },
13102
+ {
13103
+ "type": {
13104
+ "text": "CustomEvent<void>"
13105
+ },
13106
+ "description": "Fired when the retry button in the error state is clicked. The host should re-request the threads and clear errorMessage once the load succeeds.",
13107
+ "name": "forge-ai-threads-search-retry"
12879
13108
  }
12880
13109
  ],
12881
13110
  "attributes": [
@@ -12937,16 +13166,17 @@
12937
13166
  "type": {
12938
13167
  "text": "string"
12939
13168
  },
12940
- "default": "'Search chats...'",
13169
+ "default": "'Find a chat'",
13170
+ "description": "Placeholder text for the search input. The input's aria-label is \"Search\" - avoid reusing\nthat word here so screen readers don't announce the same word twice.",
12941
13171
  "fieldName": "placeholder"
12942
13172
  },
12943
13173
  {
12944
- "name": "empty-message",
13174
+ "name": "error-message",
12945
13175
  "type": {
12946
- "text": "string"
13176
+ "text": "string | undefined"
12947
13177
  },
12948
- "default": "'No chats found'",
12949
- "fieldName": "emptyMessage"
13178
+ "description": "Message describing a failed thread load. When no threads are loaded, an error banner with a\nretry button replaces the empty state. When threads are already on screen the list stays visible\nand the message shows as a compact single line with a retry - at the bottom of the list if a page\nwas in flight, otherwise above it. The host owns this value and should clear it once a load succeeds.",
13179
+ "fieldName": "errorMessage"
12950
13180
  },
12951
13181
  {
12952
13182
  "name": "show-thread-rename",
@@ -15387,14 +15617,14 @@
15387
15617
  "path": "src/lib/ai-attachment/ai-attachment.ts",
15388
15618
  "lineNumber": 41
15389
15619
  },
15390
- "AiButtonComponent": {
15391
- "path": "src/lib/ai-button/ai-button.ts",
15392
- "lineNumber": 22
15393
- },
15394
15620
  "AiChainOfThoughtComponent": {
15395
15621
  "path": "src/lib/ai-chain-of-thought/ai-chain-of-thought.ts",
15396
15622
  "lineNumber": 17
15397
15623
  },
15624
+ "AiButtonComponent": {
15625
+ "path": "src/lib/ai-button/ai-button.ts",
15626
+ "lineNumber": 22
15627
+ },
15398
15628
  "ForgeAiChatHeaderAgentChangeEventData": {
15399
15629
  "path": "src/lib/ai-chat-header/ai-chat-header.ts",
15400
15630
  "lineNumber": 39
@@ -15409,7 +15639,7 @@
15409
15639
  },
15410
15640
  "AiChatHeaderComponent": {
15411
15641
  "path": "src/lib/ai-chat-header/ai-chat-header.ts",
15412
- "lineNumber": 81
15642
+ "lineNumber": 82
15413
15643
  },
15414
15644
  "AiChatInterfaceComponent": {
15415
15645
  "path": "src/lib/ai-chat-interface/ai-chat-interface.ts",
@@ -15428,92 +15658,92 @@
15428
15658
  "lineNumber": 40
15429
15659
  },
15430
15660
  "MessageStartEvent": {
15431
- "path": "src/lib/ai-chatbot/types.ts",
15432
- "lineNumber": 120
15661
+ "path": "src/lib/ai-chatbot/agent-adapter.ts",
15662
+ "lineNumber": 4
15433
15663
  },
15434
15664
  "MessageDeltaEvent": {
15435
- "path": "src/lib/ai-chatbot/types.ts",
15436
- "lineNumber": 124
15665
+ "path": "src/lib/ai-chatbot/agent-adapter.ts",
15666
+ "lineNumber": 9
15437
15667
  },
15438
15668
  "MessageEndEvent": {
15439
- "path": "src/lib/ai-chatbot/types.ts",
15440
- "lineNumber": 129
15669
+ "path": "src/lib/ai-chatbot/agent-adapter.ts",
15670
+ "lineNumber": 15
15441
15671
  },
15442
15672
  "ToolCallEvent": {
15443
15673
  "path": "src/lib/ai-chatbot/agent-adapter.ts",
15444
15674
  "lineNumber": 20
15445
15675
  },
15446
15676
  "ToolCallStartEvent": {
15447
- "path": "src/lib/ai-chatbot/types.ts",
15448
- "lineNumber": 133
15677
+ "path": "src/lib/ai-chatbot/agent-adapter.ts",
15678
+ "lineNumber": 28
15449
15679
  },
15450
15680
  "ToolCallArgsEvent": {
15451
- "path": "src/lib/ai-chatbot/types.ts",
15452
- "lineNumber": 139
15681
+ "path": "src/lib/ai-chatbot/agent-adapter.ts",
15682
+ "lineNumber": 35
15453
15683
  },
15454
15684
  "ToolCallEndEvent": {
15455
- "path": "src/lib/ai-chatbot/types.ts",
15456
- "lineNumber": 147
15685
+ "path": "src/lib/ai-chatbot/agent-adapter.ts",
15686
+ "lineNumber": 45
15457
15687
  },
15458
15688
  "ToolResultEvent": {
15459
- "path": "src/lib/ai-chatbot/types.ts",
15460
- "lineNumber": 154
15689
+ "path": "src/lib/ai-chatbot/agent-adapter.ts",
15690
+ "lineNumber": 53
15461
15691
  },
15462
15692
  "AdapterState": {
15463
15693
  "path": "src/lib/ai-chatbot/agent-adapter.ts",
15464
- "lineNumber": 60
15694
+ "lineNumber": 61
15465
15695
  },
15466
15696
  "FileUploadEvent": {
15467
15697
  "path": "src/lib/ai-chatbot/agent-adapter.ts",
15468
- "lineNumber": 66
15698
+ "lineNumber": 67
15469
15699
  },
15470
15700
  "FileRemoveEvent": {
15471
15701
  "path": "src/lib/ai-chatbot/types.ts",
15472
- "lineNumber": 282
15702
+ "lineNumber": 229
15473
15703
  },
15474
15704
  "ErrorEvent": {
15475
15705
  "path": "src/lib/ai-chatbot/agent-adapter.ts",
15476
- "lineNumber": 76
15706
+ "lineNumber": 77
15477
15707
  },
15478
15708
  "CustomAgentEvent": {
15479
15709
  "path": "src/lib/ai-chatbot/agent-adapter.ts",
15480
- "lineNumber": 80
15710
+ "lineNumber": 81
15481
15711
  },
15482
15712
  "RawAgentEvent": {
15483
15713
  "path": "src/lib/ai-chatbot/agent-adapter.ts",
15484
- "lineNumber": 86
15714
+ "lineNumber": 87
15485
15715
  },
15486
15716
  "RunStartedAgentEvent": {
15487
15717
  "path": "src/lib/ai-chatbot/agent-adapter.ts",
15488
- "lineNumber": 91
15718
+ "lineNumber": 92
15489
15719
  },
15490
15720
  "StepStartedAgentEvent": {
15491
15721
  "path": "src/lib/ai-chatbot/agent-adapter.ts",
15492
- "lineNumber": 97
15722
+ "lineNumber": 98
15493
15723
  },
15494
15724
  "StepFinishedAgentEvent": {
15495
15725
  "path": "src/lib/ai-chatbot/agent-adapter.ts",
15496
- "lineNumber": 102
15726
+ "lineNumber": 103
15497
15727
  },
15498
15728
  "StateSnapshotAgentEvent": {
15499
15729
  "path": "src/lib/ai-chatbot/agent-adapter.ts",
15500
- "lineNumber": 107
15730
+ "lineNumber": 108
15501
15731
  },
15502
15732
  "StateDeltaAgentEvent": {
15503
15733
  "path": "src/lib/ai-chatbot/agent-adapter.ts",
15504
- "lineNumber": 112
15734
+ "lineNumber": 113
15505
15735
  },
15506
15736
  "ActivitySnapshotAgentEvent": {
15507
15737
  "path": "src/lib/ai-chatbot/agent-adapter.ts",
15508
- "lineNumber": 117
15738
+ "lineNumber": 118
15509
15739
  },
15510
15740
  "ActivityDeltaAgentEvent": {
15511
15741
  "path": "src/lib/ai-chatbot/agent-adapter.ts",
15512
- "lineNumber": 124
15742
+ "lineNumber": 125
15513
15743
  },
15514
15744
  "AgentAdapter": {
15515
15745
  "path": "src/lib/ai-chatbot/agent-adapter.ts",
15516
- "lineNumber": 130
15746
+ "lineNumber": 131
15517
15747
  },
15518
15748
  "AgentRunnerConfig": {
15519
15749
  "path": "src/lib/ai-chatbot/agent-runner.ts",
@@ -15545,35 +15775,35 @@
15545
15775
  },
15546
15776
  "ForgeAiChatbotMessageEventData": {
15547
15777
  "path": "src/lib/ai-chatbot/ai-chatbot.ts",
15548
- "lineNumber": 78
15778
+ "lineNumber": 79
15549
15779
  },
15550
15780
  "ForgeAiChatbotToolCallEventData": {
15551
15781
  "path": "src/lib/ai-chatbot/ai-chatbot.ts",
15552
- "lineNumber": 82
15782
+ "lineNumber": 83
15553
15783
  },
15554
15784
  "ForgeAiChatbotErrorEventData": {
15555
15785
  "path": "src/lib/ai-chatbot/ai-chatbot.ts",
15556
- "lineNumber": 88
15786
+ "lineNumber": 89
15557
15787
  },
15558
15788
  "ForgeAiChatbotFileSelectEventData": {
15559
15789
  "path": "src/lib/ai-chatbot/types.ts",
15560
- "lineNumber": 286
15790
+ "lineNumber": 233
15561
15791
  },
15562
15792
  "ForgeAiChatbotFileRemoveEventData": {
15563
15793
  "path": "src/lib/ai-chatbot/ai-chatbot.ts",
15564
- "lineNumber": 104
15794
+ "lineNumber": 105
15565
15795
  },
15566
15796
  "ForgeAiChatbotResponseFeedbackEventData": {
15567
15797
  "path": "src/lib/ai-chatbot/ai-chatbot.ts",
15568
- "lineNumber": 108
15798
+ "lineNumber": 109
15569
15799
  },
15570
15800
  "ForgeAiChatbotAgentChangeEventData": {
15571
15801
  "path": "src/lib/ai-chatbot/ai-chatbot.ts",
15572
- "lineNumber": 114
15802
+ "lineNumber": 115
15573
15803
  },
15574
15804
  "AiChatbotComponent": {
15575
15805
  "path": "src/lib/ai-chatbot/ai-chatbot.ts",
15576
- "lineNumber": 177
15806
+ "lineNumber": 180
15577
15807
  },
15578
15808
  "CreateToolRendererElementConfig": {
15579
15809
  "path": "src/lib/ai-chatbot/create-tool-renderer.ts",
@@ -15621,11 +15851,19 @@
15621
15851
  },
15622
15852
  "MessageStateControllerConfig": {
15623
15853
  "path": "src/lib/ai-chatbot/message-state-controller.ts",
15624
- "lineNumber": 23
15854
+ "lineNumber": 14
15625
15855
  },
15626
15856
  "MessageStateController": {
15627
15857
  "path": "src/lib/ai-chatbot/message-state-controller.ts",
15628
- "lineNumber": 36
15858
+ "lineNumber": 27
15859
+ },
15860
+ "RequestToolCall": {
15861
+ "path": "src/lib/ai-chatbot/request-serialization.ts",
15862
+ "lineNumber": 9
15863
+ },
15864
+ "RequestMessage": {
15865
+ "path": "src/lib/ai-chatbot/request-serialization.ts",
15866
+ "lineNumber": 18
15629
15867
  },
15630
15868
  "HeadingLevel": {
15631
15869
  "path": "src/lib/ai-chatbot/types.ts",
@@ -15683,101 +15921,97 @@
15683
15921
  "path": "src/lib/ai-chatbot/types.ts",
15684
15922
  "lineNumber": 92
15685
15923
  },
15686
- "StreamEvent": {
15687
- "path": "src/lib/ai-chatbot/types.ts",
15688
- "lineNumber": 161
15689
- },
15690
15924
  "ChatMessage": {
15691
15925
  "path": "src/lib/ai-chatbot/types.ts",
15692
- "lineNumber": 170
15926
+ "lineNumber": 120
15693
15927
  },
15694
15928
  "ClientMessageKind": {
15695
15929
  "path": "src/lib/ai-chatbot/types.ts",
15696
- "lineNumber": 192
15930
+ "lineNumber": 141
15697
15931
  },
15698
15932
  "ClientMessageAction": {
15699
15933
  "path": "src/lib/ai-chatbot/types.ts",
15700
- "lineNumber": 194
15934
+ "lineNumber": 143
15701
15935
  },
15702
15936
  "ClientMessageInput": {
15703
15937
  "path": "src/lib/ai-chatbot/types.ts",
15704
- "lineNumber": 204
15938
+ "lineNumber": 153
15705
15939
  },
15706
15940
  "ToolCall": {
15707
15941
  "path": "src/lib/ai-chatbot/types.ts",
15708
- "lineNumber": 212
15942
+ "lineNumber": 161
15709
15943
  },
15710
15944
  "ResponseItem": {
15711
15945
  "path": "src/lib/ai-chatbot/types.ts",
15712
- "lineNumber": 226
15946
+ "lineNumber": 174
15713
15947
  },
15714
15948
  "FeedbackType": {
15715
15949
  "path": "src/lib/ai-chatbot/types.ts",
15716
- "lineNumber": 230
15950
+ "lineNumber": 178
15717
15951
  },
15718
15952
  "ResponseFeedback": {
15719
15953
  "path": "src/lib/ai-chatbot/types.ts",
15720
- "lineNumber": 232
15954
+ "lineNumber": 180
15721
15955
  },
15722
15956
  "AssistantResponse": {
15723
15957
  "path": "src/lib/ai-chatbot/types.ts",
15724
- "lineNumber": 237
15958
+ "lineNumber": 185
15725
15959
  },
15726
15960
  "FileAttachment": {
15727
15961
  "path": "src/lib/ai-chatbot/types.ts",
15728
- "lineNumber": 247
15962
+ "lineNumber": 194
15729
15963
  },
15730
15964
  "UploadedFileMetadata": {
15731
15965
  "path": "src/lib/ai-chatbot/types.ts",
15732
- "lineNumber": 260
15966
+ "lineNumber": 207
15733
15967
  },
15734
15968
  "FileUploadCallbacks": {
15735
15969
  "path": "src/lib/ai-chatbot/types.ts",
15736
- "lineNumber": 268
15970
+ "lineNumber": 215
15737
15971
  },
15738
15972
  "FileUploadHandler": {
15739
15973
  "path": "src/lib/ai-chatbot/types.ts",
15740
- "lineNumber": 275
15974
+ "lineNumber": 222
15741
15975
  },
15742
15976
  "FileRemoveCallbacks": {
15743
15977
  "path": "src/lib/ai-chatbot/types.ts",
15744
- "lineNumber": 277
15978
+ "lineNumber": 224
15745
15979
  },
15746
15980
  "MessageItem": {
15747
15981
  "path": "src/lib/ai-chatbot/types.ts",
15748
- "lineNumber": 299
15982
+ "lineNumber": 246
15749
15983
  },
15750
15984
  "ThreadState": {
15751
15985
  "path": "src/lib/ai-chatbot/types.ts",
15752
- "lineNumber": 304
15986
+ "lineNumber": 251
15753
15987
  },
15754
15988
  "ForgeAiChatbotThreadSelectEventData": {
15755
15989
  "path": "src/lib/ai-chatbot/types.ts",
15756
- "lineNumber": 311
15990
+ "lineNumber": 258
15757
15991
  },
15758
15992
  "ForgeAiChatbotThreadSearchEventData": {
15759
15993
  "path": "src/lib/ai-chatbot/types.ts",
15760
- "lineNumber": 316
15994
+ "lineNumber": 263
15761
15995
  },
15762
15996
  "ForgeAiChatbotThreadLoadMoreEventData": {
15763
15997
  "path": "src/lib/ai-chatbot/types.ts",
15764
- "lineNumber": 321
15998
+ "lineNumber": 268
15765
15999
  },
15766
16000
  "ForgeAiChatbotThreadRenameEventData": {
15767
16001
  "path": "src/lib/ai-chatbot/types.ts",
15768
- "lineNumber": 326
16002
+ "lineNumber": 273
15769
16003
  },
15770
16004
  "ForgeAiChatbotThreadDeleteEventData": {
15771
16005
  "path": "src/lib/ai-chatbot/types.ts",
15772
- "lineNumber": 334
16006
+ "lineNumber": 281
15773
16007
  },
15774
16008
  "ContextItem": {
15775
16009
  "path": "src/lib/ai-chatbot/types.ts",
15776
- "lineNumber": 341
16010
+ "lineNumber": 288
15777
16011
  },
15778
16012
  "ForgeAiChatbotContextRemoveEventData": {
15779
16013
  "path": "src/lib/ai-chatbot/types.ts",
15780
- "lineNumber": 350
16014
+ "lineNumber": 297
15781
16015
  },
15782
16016
  "LauncherViewState": {
15783
16017
  "path": "src/lib/ai-chatbot-launcher/ai-chatbot-launcher.ts",
@@ -15805,7 +16039,7 @@
15805
16039
  },
15806
16040
  "AiChatbotLauncherComponent": {
15807
16041
  "path": "src/lib/ai-chatbot-launcher/ai-chatbot-launcher.ts",
15808
- "lineNumber": 147
16042
+ "lineNumber": 151
15809
16043
  },
15810
16044
  "AiClientMessageComponent": {
15811
16045
  "path": "src/lib/ai-client-message/ai-client-message.ts",
@@ -15829,27 +16063,27 @@
15829
16063
  },
15830
16064
  "ForgeAiConversationsPanelSelectEventData": {
15831
16065
  "path": "src/lib/ai-conversations-panel/ai-conversations-panel.ts",
15832
- "lineNumber": 31
16066
+ "lineNumber": 33
15833
16067
  },
15834
16068
  "ForgeAiConversationsPanelSearchEventData": {
15835
16069
  "path": "src/lib/ai-conversations-panel/ai-conversations-panel.ts",
15836
- "lineNumber": 36
16070
+ "lineNumber": 38
15837
16071
  },
15838
16072
  "ForgeAiConversationsPanelLoadMoreEventData": {
15839
16073
  "path": "src/lib/ai-conversations-panel/ai-conversations-panel.ts",
15840
- "lineNumber": 41
16074
+ "lineNumber": 43
15841
16075
  },
15842
16076
  "ForgeAiConversationsPanelRenameEventData": {
15843
16077
  "path": "src/lib/ai-conversations-panel/ai-conversations-panel.ts",
15844
- "lineNumber": 46
16078
+ "lineNumber": 48
15845
16079
  },
15846
16080
  "ForgeAiConversationsPanelDeleteEventData": {
15847
16081
  "path": "src/lib/ai-conversations-panel/ai-conversations-panel.ts",
15848
- "lineNumber": 54
16082
+ "lineNumber": 56
15849
16083
  },
15850
16084
  "AiConversationsPanelComponent": {
15851
16085
  "path": "src/lib/ai-conversations-panel/ai-conversations-panel.ts",
15852
- "lineNumber": 77
16086
+ "lineNumber": 80
15853
16087
  },
15854
16088
  "ForgeAiCopyButtonCopyEventData": {
15855
16089
  "path": "src/lib/ai-copy-button/ai-copy-button.ts",
@@ -15931,25 +16165,33 @@
15931
16165
  "path": "src/lib/ai-dropdown-menu/selection-manager.ts",
15932
16166
  "lineNumber": 85
15933
16167
  },
16168
+ "EditThreadDensity": {
16169
+ "path": "src/lib/ai-edit-thread/ai-edit-thread.ts",
16170
+ "lineNumber": 7
16171
+ },
15934
16172
  "ForgeAiEditThreadSaveEventData": {
15935
16173
  "path": "src/lib/ai-edit-thread/ai-edit-thread.ts",
15936
- "lineNumber": 19
16174
+ "lineNumber": 22
15937
16175
  },
15938
16176
  "AiEditThreadComponent": {
15939
16177
  "path": "src/lib/ai-edit-thread/ai-edit-thread.ts",
15940
- "lineNumber": 35
16178
+ "lineNumber": 38
16179
+ },
16180
+ "AiEmptyStateComponent": {
16181
+ "path": "src/lib/ai-empty-state/ai-empty-state.ts",
16182
+ "lineNumber": 23
15941
16183
  },
15942
16184
  "AiEmbeddedChatComponent": {
15943
16185
  "path": "src/lib/ai-embedded-chat/ai-embedded-chat.ts",
15944
16186
  "lineNumber": 47
15945
16187
  },
15946
- "AiEmptyStateComponent": {
15947
- "path": "src/lib/ai-empty-state/ai-empty-state.ts",
15948
- "lineNumber": 23
16188
+ "ErrorMessageDensity": {
16189
+ "path": "src/lib/ai-error-message/ai-error-message.ts",
16190
+ "lineNumber": 13
15949
16191
  },
15950
16192
  "AiErrorMessageComponent": {
15951
16193
  "path": "src/lib/ai-error-message/ai-error-message.ts",
15952
- "lineNumber": 22
16194
+ "lineNumber": 27
15953
16195
  },
15954
16196
  "AiFabComponent": {
15955
16197
  "path": "src/lib/ai-fab/ai-fab.ts",
@@ -16109,19 +16351,19 @@
16109
16351
  },
16110
16352
  "ForgeAiThreadActionsMenuRenameEventData": {
16111
16353
  "path": "src/lib/ai-thread-actions-menu/ai-thread-actions-menu.ts",
16112
- "lineNumber": 24
16354
+ "lineNumber": 25
16113
16355
  },
16114
16356
  "ForgeAiThreadActionsMenuDeleteClickEventData": {
16115
16357
  "path": "src/lib/ai-thread-actions-menu/ai-thread-actions-menu.ts",
16116
- "lineNumber": 28
16358
+ "lineNumber": 29
16117
16359
  },
16118
16360
  "ForgeAiThreadActionsMenuOpenEventData": {
16119
16361
  "path": "src/lib/ai-thread-actions-menu/ai-thread-actions-menu.ts",
16120
- "lineNumber": 32
16362
+ "lineNumber": 33
16121
16363
  },
16122
16364
  "AiThreadActionsMenuComponent": {
16123
16365
  "path": "src/lib/ai-thread-actions-menu/ai-thread-actions-menu.ts",
16124
- "lineNumber": 51
16366
+ "lineNumber": 52
16125
16367
  },
16126
16368
  "Thread": {
16127
16369
  "path": "src/lib/ai-threads/ai-threads.ts",
@@ -16149,31 +16391,31 @@
16149
16391
  },
16150
16392
  "ForgeAiThreadsSearchQueryEventData": {
16151
16393
  "path": "src/lib/ai-threads-search/ai-threads-search.ts",
16152
- "lineNumber": 34
16394
+ "lineNumber": 36
16153
16395
  },
16154
16396
  "ForgeAiThreadsSearchLoadMoreEventData": {
16155
16397
  "path": "src/lib/ai-threads-search/ai-threads-search.ts",
16156
- "lineNumber": 39
16398
+ "lineNumber": 41
16157
16399
  },
16158
16400
  "ForgeAiThreadsSearchSelectEventData": {
16159
16401
  "path": "src/lib/ai-threads-search/ai-threads-search.ts",
16160
- "lineNumber": 44
16402
+ "lineNumber": 46
16161
16403
  },
16162
16404
  "ForgeAiThreadsSearchRenameEventData": {
16163
16405
  "path": "src/lib/ai-threads-search/ai-threads-search.ts",
16164
- "lineNumber": 49
16406
+ "lineNumber": 51
16165
16407
  },
16166
16408
  "ForgeAiThreadsSearchDeleteEventData": {
16167
16409
  "path": "src/lib/ai-threads-search/ai-threads-search.ts",
16168
- "lineNumber": 57
16410
+ "lineNumber": 59
16169
16411
  },
16170
16412
  "ForgeAiThreadsSearchDeleteConfirmEventData": {
16171
16413
  "path": "src/lib/ai-threads-search/ai-threads-search.ts",
16172
- "lineNumber": 64
16414
+ "lineNumber": 66
16173
16415
  },
16174
16416
  "AiThreadsSearchComponent": {
16175
16417
  "path": "src/lib/ai-threads-search/ai-threads-search.ts",
16176
- "lineNumber": 88
16418
+ "lineNumber": 91
16177
16419
  },
16178
16420
  "AiToolCallIndicatorComponent": {
16179
16421
  "path": "src/lib/ai-tool-call-indicator/ai-tool-call-indicator.ts",