@copilotkitnext/angular 0.0.9-alpha.3 → 0.0.11

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 (210) hide show
  1. package/dist/esm2022/index.mjs +2 -70
  2. package/dist/esm2022/lib/agent.mjs +73 -0
  3. package/dist/esm2022/lib/chat-config.mjs +35 -0
  4. package/dist/esm2022/lib/chat-state.mjs +18 -0
  5. package/dist/esm2022/lib/components/chat/copilot-chat-assistant-message-buttons.mjs +344 -0
  6. package/dist/esm2022/lib/components/chat/copilot-chat-assistant-message-renderer.mjs +260 -0
  7. package/dist/esm2022/lib/components/chat/copilot-chat-assistant-message-toolbar.mjs +22 -0
  8. package/dist/esm2022/{components/chat/copilot-chat-assistant-message.component.mjs → lib/components/chat/copilot-chat-assistant-message.mjs} +216 -240
  9. package/dist/esm2022/lib/components/chat/copilot-chat-assistant-message.types.mjs +2 -0
  10. package/dist/esm2022/lib/components/chat/copilot-chat-audio-recorder.mjs +196 -0
  11. package/dist/esm2022/lib/components/chat/copilot-chat-buttons.mjs +299 -0
  12. package/dist/esm2022/lib/components/chat/copilot-chat-input-defaults.mjs +39 -0
  13. package/dist/esm2022/lib/components/chat/copilot-chat-input.mjs +634 -0
  14. package/dist/esm2022/lib/components/chat/copilot-chat-input.types.mjs +10 -0
  15. package/dist/esm2022/lib/components/chat/copilot-chat-message-view-cursor.mjs +27 -0
  16. package/dist/esm2022/lib/components/chat/copilot-chat-message-view.mjs +268 -0
  17. package/dist/esm2022/lib/components/chat/copilot-chat-message-view.types.mjs +2 -0
  18. package/dist/esm2022/lib/components/chat/copilot-chat-textarea.mjs +139 -0
  19. package/dist/esm2022/lib/components/chat/copilot-chat-tool-calls-view.mjs +36 -0
  20. package/dist/esm2022/lib/components/chat/copilot-chat-toolbar.mjs +20 -0
  21. package/dist/esm2022/lib/components/chat/copilot-chat-tools-menu.mjs +203 -0
  22. package/dist/esm2022/lib/components/chat/copilot-chat-user-message-branch-navigation.mjs +118 -0
  23. package/dist/esm2022/lib/components/chat/copilot-chat-user-message-buttons.mjs +182 -0
  24. package/dist/esm2022/lib/components/chat/copilot-chat-user-message-renderer.mjs +28 -0
  25. package/dist/esm2022/lib/components/chat/copilot-chat-user-message-toolbar.mjs +25 -0
  26. package/dist/esm2022/lib/components/chat/copilot-chat-user-message.mjs +306 -0
  27. package/dist/esm2022/lib/components/chat/copilot-chat-user-message.types.mjs +2 -0
  28. package/dist/esm2022/lib/components/chat/copilot-chat-view-disclaimer.mjs +48 -0
  29. package/dist/esm2022/lib/components/chat/copilot-chat-view-feather.mjs +41 -0
  30. package/dist/esm2022/lib/components/chat/copilot-chat-view-handlers.mjs +19 -0
  31. package/dist/esm2022/lib/components/chat/copilot-chat-view-input-container.mjs +96 -0
  32. package/dist/esm2022/lib/components/chat/copilot-chat-view-scroll-to-bottom-button.mjs +89 -0
  33. package/dist/esm2022/lib/components/chat/copilot-chat-view-scroll-view.mjs +456 -0
  34. package/dist/esm2022/lib/components/chat/copilot-chat-view.mjs +404 -0
  35. package/dist/esm2022/lib/components/chat/copilot-chat-view.types.mjs +2 -0
  36. package/dist/esm2022/lib/components/chat/copilot-chat.mjs +167 -0
  37. package/dist/esm2022/lib/config.mjs +9 -0
  38. package/dist/esm2022/lib/copilotkit.mjs +124 -0
  39. package/dist/esm2022/lib/directives/copilotkit-agent-context.mjs +130 -0
  40. package/dist/esm2022/lib/directives/stick-to-bottom.mjs +170 -0
  41. package/dist/esm2022/lib/directives/tooltip.mjs +217 -0
  42. package/dist/esm2022/lib/human-in-the-loop.mjs +19 -0
  43. package/dist/esm2022/lib/render-tool-calls.mjs +131 -0
  44. package/dist/esm2022/lib/resize-observer.mjs +152 -0
  45. package/dist/esm2022/lib/scroll-position.mjs +124 -0
  46. package/dist/esm2022/lib/slots/copilot-slot.mjs +156 -0
  47. package/dist/esm2022/lib/slots/index.mjs +4 -0
  48. package/dist/esm2022/lib/slots/slot.types.mjs +3 -3
  49. package/dist/esm2022/lib/slots/slot.utils.mjs +19 -15
  50. package/dist/esm2022/lib/tools.mjs +31 -0
  51. package/dist/esm2022/lib/utils.mjs +3 -3
  52. package/dist/esm2022/public-api.mjs +47 -0
  53. package/dist/fesm2022/copilotkitnext-angular.mjs +5249 -8271
  54. package/dist/fesm2022/copilotkitnext-angular.mjs.map +1 -1
  55. package/dist/index.d.ts +1 -55
  56. package/dist/lib/agent.d.ts +53 -0
  57. package/dist/{core/chat-configuration/chat-configuration.types.d.ts → lib/chat-config.d.ts} +4 -8
  58. package/dist/lib/chat-state.d.ts +10 -0
  59. package/dist/lib/components/chat/copilot-chat-assistant-message-buttons.d.ts +68 -0
  60. package/dist/lib/components/chat/copilot-chat-assistant-message-renderer.d.ts +26 -0
  61. package/dist/lib/components/chat/copilot-chat-assistant-message-toolbar.d.ts +7 -0
  62. package/dist/lib/components/chat/copilot-chat-assistant-message.d.ts +178 -0
  63. package/dist/{components → lib/components}/chat/copilot-chat-assistant-message.types.d.ts +1 -1
  64. package/dist/{components/chat/copilot-chat-audio-recorder.component.d.ts → lib/components/chat/copilot-chat-audio-recorder.d.ts} +10 -10
  65. package/dist/lib/components/chat/copilot-chat-buttons.d.ts +65 -0
  66. package/dist/lib/components/chat/copilot-chat-input-defaults.d.ts +38 -0
  67. package/dist/lib/components/chat/copilot-chat-input.d.ts +133 -0
  68. package/dist/{components → lib/components}/chat/copilot-chat-input.types.d.ts +11 -11
  69. package/dist/lib/components/chat/copilot-chat-message-view-cursor.d.ts +11 -0
  70. package/dist/{components/chat/copilot-chat-message-view.component.d.ts → lib/components/chat/copilot-chat-message-view.d.ts} +68 -36
  71. package/dist/{components → lib/components}/chat/copilot-chat-message-view.types.d.ts +2 -2
  72. package/dist/lib/components/chat/copilot-chat-textarea.d.ts +41 -0
  73. package/dist/lib/components/chat/copilot-chat-tool-calls-view.d.ts +55 -0
  74. package/dist/lib/components/chat/copilot-chat-toolbar.d.ts +7 -0
  75. package/dist/lib/components/chat/copilot-chat-tools-menu.d.ts +20 -0
  76. package/dist/lib/components/chat/copilot-chat-user-message-branch-navigation.d.ts +20 -0
  77. package/dist/lib/components/chat/copilot-chat-user-message-buttons.d.ts +35 -0
  78. package/dist/lib/components/chat/copilot-chat-user-message-renderer.d.ts +8 -0
  79. package/dist/lib/components/chat/copilot-chat-user-message-toolbar.d.ts +7 -0
  80. package/dist/lib/components/chat/copilot-chat-user-message.d.ts +55 -0
  81. package/dist/{components → lib/components}/chat/copilot-chat-user-message.types.d.ts +2 -2
  82. package/dist/lib/components/chat/copilot-chat-view-disclaimer.d.ts +15 -0
  83. package/dist/{components/chat/copilot-chat-view-feather.component.d.ts → lib/components/chat/copilot-chat-view-feather.d.ts} +6 -6
  84. package/dist/{components/chat/copilot-chat-view-handlers.service.d.ts → lib/components/chat/copilot-chat-view-handlers.d.ts} +3 -3
  85. package/dist/lib/components/chat/copilot-chat-view-input-container.d.ts +23 -0
  86. package/dist/lib/components/chat/copilot-chat-view-scroll-to-bottom-button.d.ts +16 -0
  87. package/dist/lib/components/chat/copilot-chat-view-scroll-view.d.ts +114 -0
  88. package/dist/lib/components/chat/copilot-chat-view.d.ts +239 -0
  89. package/dist/{components → lib/components}/chat/copilot-chat-view.types.d.ts +2 -2
  90. package/dist/lib/components/chat/copilot-chat.d.ts +67 -0
  91. package/dist/lib/config.d.ts +16 -0
  92. package/dist/lib/copilotkit.d.ts +29 -0
  93. package/dist/{directives/copilotkit-agent-context.directive.d.ts → lib/directives/copilotkit-agent-context.d.ts} +5 -5
  94. package/dist/lib/directives/stick-to-bottom.d.ts +62 -0
  95. package/dist/lib/directives/tooltip.d.ts +33 -0
  96. package/dist/lib/human-in-the-loop.d.ts +13 -0
  97. package/dist/lib/render-tool-calls.d.ts +75 -0
  98. package/dist/{services/resize-observer.service.d.ts → lib/resize-observer.d.ts} +2 -2
  99. package/dist/{services/scroll-position.service.d.ts → lib/scroll-position.d.ts} +6 -6
  100. package/dist/lib/slots/copilot-slot.d.ts +34 -0
  101. package/dist/lib/slots/index.d.ts +3 -0
  102. package/dist/lib/slots/slot.types.d.ts +1 -1
  103. package/dist/lib/slots/slot.utils.d.ts +6 -4
  104. package/dist/lib/tools.d.ts +63 -0
  105. package/dist/lib/utils.d.ts +1 -1
  106. package/dist/public-api.d.ts +46 -0
  107. package/dist/styles.css +0 -69
  108. package/package.json +5 -5
  109. package/dist/components/chat/copilot-chat-assistant-message-buttons.component.d.ts +0 -75
  110. package/dist/components/chat/copilot-chat-assistant-message-renderer.component.d.ts +0 -31
  111. package/dist/components/chat/copilot-chat-assistant-message-toolbar.component.d.ts +0 -8
  112. package/dist/components/chat/copilot-chat-assistant-message.component.d.ts +0 -132
  113. package/dist/components/chat/copilot-chat-buttons.component.d.ts +0 -66
  114. package/dist/components/chat/copilot-chat-input-defaults.d.ts +0 -37
  115. package/dist/components/chat/copilot-chat-input.component.d.ts +0 -133
  116. package/dist/components/chat/copilot-chat-message-view-cursor.component.d.ts +0 -15
  117. package/dist/components/chat/copilot-chat-textarea.component.d.ts +0 -45
  118. package/dist/components/chat/copilot-chat-tool-calls-view.component.d.ts +0 -35
  119. package/dist/components/chat/copilot-chat-toolbar.component.d.ts +0 -8
  120. package/dist/components/chat/copilot-chat-tools-menu.component.d.ts +0 -20
  121. package/dist/components/chat/copilot-chat-user-message-branch-navigation.component.d.ts +0 -23
  122. package/dist/components/chat/copilot-chat-user-message-buttons.component.d.ts +0 -39
  123. package/dist/components/chat/copilot-chat-user-message-renderer.component.d.ts +0 -9
  124. package/dist/components/chat/copilot-chat-user-message-toolbar.component.d.ts +0 -8
  125. package/dist/components/chat/copilot-chat-user-message.component.d.ts +0 -55
  126. package/dist/components/chat/copilot-chat-view-disclaimer.component.d.ts +0 -15
  127. package/dist/components/chat/copilot-chat-view-input-container.component.d.ts +0 -23
  128. package/dist/components/chat/copilot-chat-view-scroll-to-bottom-button.component.d.ts +0 -17
  129. package/dist/components/chat/copilot-chat-view-scroll-view.component.d.ts +0 -84
  130. package/dist/components/chat/copilot-chat-view.component.d.ts +0 -205
  131. package/dist/components/chat/copilot-chat.component.d.ts +0 -36
  132. package/dist/components/copilotkit-tool-render.component.d.ts +0 -25
  133. package/dist/core/chat-configuration/chat-configuration.providers.d.ts +0 -54
  134. package/dist/core/chat-configuration/chat-configuration.service.d.ts +0 -75
  135. package/dist/core/copilotkit.providers.d.ts +0 -13
  136. package/dist/core/copilotkit.service.d.ts +0 -119
  137. package/dist/core/copilotkit.types.d.ts +0 -81
  138. package/dist/directives/copilotkit-agent.directive.d.ts +0 -106
  139. package/dist/directives/copilotkit-chat-config.directive.d.ts +0 -84
  140. package/dist/directives/copilotkit-config.directive.d.ts +0 -44
  141. package/dist/directives/copilotkit-frontend-tool.directive.d.ts +0 -25
  142. package/dist/directives/copilotkit-human-in-the-loop.directive.d.ts +0 -124
  143. package/dist/directives/stick-to-bottom.directive.d.ts +0 -62
  144. package/dist/esm2022/components/chat/copilot-chat-assistant-message-buttons.component.mjs +0 -384
  145. package/dist/esm2022/components/chat/copilot-chat-assistant-message-renderer.component.mjs +0 -286
  146. package/dist/esm2022/components/chat/copilot-chat-assistant-message-toolbar.component.mjs +0 -27
  147. package/dist/esm2022/components/chat/copilot-chat-assistant-message.types.mjs +0 -2
  148. package/dist/esm2022/components/chat/copilot-chat-audio-recorder.component.mjs +0 -202
  149. package/dist/esm2022/components/chat/copilot-chat-buttons.component.mjs +0 -321
  150. package/dist/esm2022/components/chat/copilot-chat-input-defaults.mjs +0 -38
  151. package/dist/esm2022/components/chat/copilot-chat-input.component.mjs +0 -666
  152. package/dist/esm2022/components/chat/copilot-chat-input.types.mjs +0 -10
  153. package/dist/esm2022/components/chat/copilot-chat-message-view-cursor.component.mjs +0 -45
  154. package/dist/esm2022/components/chat/copilot-chat-message-view.component.mjs +0 -296
  155. package/dist/esm2022/components/chat/copilot-chat-message-view.types.mjs +0 -2
  156. package/dist/esm2022/components/chat/copilot-chat-textarea.component.mjs +0 -188
  157. package/dist/esm2022/components/chat/copilot-chat-tool-calls-view.component.mjs +0 -222
  158. package/dist/esm2022/components/chat/copilot-chat-toolbar.component.mjs +0 -25
  159. package/dist/esm2022/components/chat/copilot-chat-tools-menu.component.mjs +0 -199
  160. package/dist/esm2022/components/chat/copilot-chat-user-message-branch-navigation.component.mjs +0 -137
  161. package/dist/esm2022/components/chat/copilot-chat-user-message-buttons.component.mjs +0 -207
  162. package/dist/esm2022/components/chat/copilot-chat-user-message-renderer.component.mjs +0 -35
  163. package/dist/esm2022/components/chat/copilot-chat-user-message-toolbar.component.mjs +0 -34
  164. package/dist/esm2022/components/chat/copilot-chat-user-message.component.mjs +0 -341
  165. package/dist/esm2022/components/chat/copilot-chat-user-message.types.mjs +0 -2
  166. package/dist/esm2022/components/chat/copilot-chat-view-disclaimer.component.mjs +0 -52
  167. package/dist/esm2022/components/chat/copilot-chat-view-feather.component.mjs +0 -55
  168. package/dist/esm2022/components/chat/copilot-chat-view-handlers.service.mjs +0 -19
  169. package/dist/esm2022/components/chat/copilot-chat-view-input-container.component.mjs +0 -110
  170. package/dist/esm2022/components/chat/copilot-chat-view-scroll-to-bottom-button.component.mjs +0 -93
  171. package/dist/esm2022/components/chat/copilot-chat-view-scroll-view.component.mjs +0 -443
  172. package/dist/esm2022/components/chat/copilot-chat-view.component.mjs +0 -479
  173. package/dist/esm2022/components/chat/copilot-chat-view.types.mjs +0 -2
  174. package/dist/esm2022/components/chat/copilot-chat.component.mjs +0 -220
  175. package/dist/esm2022/components/copilotkit-tool-render.component.mjs +0 -150
  176. package/dist/esm2022/core/chat-configuration/chat-configuration.providers.mjs +0 -65
  177. package/dist/esm2022/core/chat-configuration/chat-configuration.service.mjs +0 -145
  178. package/dist/esm2022/core/chat-configuration/chat-configuration.types.mjs +0 -26
  179. package/dist/esm2022/core/copilotkit.providers.mjs +0 -34
  180. package/dist/esm2022/core/copilotkit.service.mjs +0 -411
  181. package/dist/esm2022/core/copilotkit.types.mjs +0 -13
  182. package/dist/esm2022/directives/copilotkit-agent-context.directive.mjs +0 -130
  183. package/dist/esm2022/directives/copilotkit-agent.directive.mjs +0 -221
  184. package/dist/esm2022/directives/copilotkit-chat-config.directive.mjs +0 -218
  185. package/dist/esm2022/directives/copilotkit-config.directive.mjs +0 -94
  186. package/dist/esm2022/directives/copilotkit-frontend-tool.directive.mjs +0 -128
  187. package/dist/esm2022/directives/copilotkit-human-in-the-loop.directive.mjs +0 -265
  188. package/dist/esm2022/directives/stick-to-bottom.directive.mjs +0 -181
  189. package/dist/esm2022/lib/directives/tooltip.directive.mjs +0 -211
  190. package/dist/esm2022/lib/slots/copilot-slot.component.mjs +0 -154
  191. package/dist/esm2022/services/resize-observer.service.mjs +0 -152
  192. package/dist/esm2022/services/scroll-position.service.mjs +0 -124
  193. package/dist/esm2022/types/frontend-tool.mjs +0 -2
  194. package/dist/esm2022/types/human-in-the-loop.mjs +0 -2
  195. package/dist/esm2022/utils/agent-context.utils.mjs +0 -114
  196. package/dist/esm2022/utils/agent.utils.mjs +0 -212
  197. package/dist/esm2022/utils/chat-config.utils.mjs +0 -186
  198. package/dist/esm2022/utils/copilotkit.utils.mjs +0 -20
  199. package/dist/esm2022/utils/frontend-tool.utils.mjs +0 -224
  200. package/dist/esm2022/utils/human-in-the-loop.utils.mjs +0 -293
  201. package/dist/lib/directives/tooltip.directive.d.ts +0 -33
  202. package/dist/lib/slots/copilot-slot.component.d.ts +0 -34
  203. package/dist/types/frontend-tool.d.ts +0 -37
  204. package/dist/types/human-in-the-loop.d.ts +0 -44
  205. package/dist/utils/agent-context.utils.d.ts +0 -75
  206. package/dist/utils/agent.utils.d.ts +0 -108
  207. package/dist/utils/chat-config.utils.d.ts +0 -166
  208. package/dist/utils/copilotkit.utils.d.ts +0 -16
  209. package/dist/utils/frontend-tool.utils.d.ts +0 -119
  210. package/dist/utils/human-in-the-loop.utils.d.ts +0 -92
@@ -1,220 +0,0 @@
1
- import { Component, Input, ChangeDetectionStrategy, ViewEncapsulation, signal, effect, Optional, SkipSelf, } from "@angular/core";
2
- import { CommonModule } from "@angular/common";
3
- import { CopilotChatViewComponent } from "./copilot-chat-view.component";
4
- import { CopilotChatConfigurationService } from "../../core/chat-configuration/chat-configuration.service";
5
- import { COPILOT_CHAT_INITIAL_CONFIG, } from "../../core/chat-configuration/chat-configuration.types";
6
- import { watchAgentWith } from "../../utils/agent.utils";
7
- import { DEFAULT_AGENT_ID, randomUUID } from "@copilotkitnext/shared";
8
- import { ProxiedCopilotRuntimeAgent } from "@copilotkitnext/core";
9
- import * as i0 from "@angular/core";
10
- import * as i1 from "../../core/chat-configuration/chat-configuration.service";
11
- /**
12
- * CopilotChat component - Angular equivalent of React's <CopilotChat>
13
- * Provides a complete chat interface that wires an agent to the chat view
14
- *
15
- * @example
16
- * ```html
17
- * <copilot-chat [agentId]="'default'" [threadId]="'abc123'"></copilot-chat>
18
- * ```
19
- */
20
- export class CopilotChatComponent {
21
- chatConfig;
22
- cdr;
23
- injector;
24
- agentId;
25
- threadId;
26
- inputComponent;
27
- constructor(chatConfig, cdr, injector) {
28
- this.chatConfig = chatConfig;
29
- this.cdr = cdr;
30
- this.injector = injector;
31
- // Create initial watcher once (constructor is a safe injection context)
32
- const initialId = this.agentId ?? DEFAULT_AGENT_ID;
33
- this.createWatcher(initialId);
34
- // Connect once when agent becomes available
35
- effect(() => {
36
- const a = this.agent();
37
- if (!a)
38
- return;
39
- // Apply thread id when agent is available
40
- a.threadId = this.threadId || this.generatedThreadId;
41
- if (!this.hasConnectedOnce) {
42
- this.hasConnectedOnce = true;
43
- if (a instanceof ProxiedCopilotRuntimeAgent) {
44
- this.connectToAgent(a);
45
- }
46
- else {
47
- // Not a CopilotKit agent: ensure UI not showing loading cursor
48
- this.showCursor.set(false);
49
- this.cdr.markForCheck();
50
- }
51
- }
52
- }, { allowSignalWrites: true });
53
- }
54
- // Signals from watchAgent - destructured from watcher
55
- agent;
56
- messages;
57
- isRunning;
58
- showCursor = signal(false);
59
- generatedThreadId = randomUUID();
60
- watcher;
61
- hasConnectedOnce = false;
62
- ngOnInit() {
63
- this.setupChatHandlers();
64
- }
65
- ngOnChanges(changes) {
66
- if (changes["agentId"] && !changes["agentId"].firstChange) {
67
- const newId = this.agentId ?? DEFAULT_AGENT_ID;
68
- this.createWatcher(newId);
69
- }
70
- if (changes["threadId"] && !changes["threadId"].firstChange) {
71
- const a = this.agent();
72
- if (a) {
73
- a.threadId = this.threadId || this.generatedThreadId;
74
- }
75
- }
76
- }
77
- async connectToAgent(agent) {
78
- if (!agent)
79
- return;
80
- this.showCursor.set(true);
81
- this.cdr.markForCheck();
82
- try {
83
- await agent.runAgent({ forwardedProps: { __copilotkitConnect: true } }, {
84
- onTextMessageStartEvent: () => {
85
- this.showCursor.set(false);
86
- this.cdr.detectChanges();
87
- },
88
- onToolCallStartEvent: () => {
89
- this.showCursor.set(false);
90
- this.cdr.detectChanges();
91
- },
92
- });
93
- this.showCursor.set(false);
94
- this.cdr.markForCheck();
95
- }
96
- catch (error) {
97
- console.error("Failed to connect to agent:", error);
98
- this.showCursor.set(false);
99
- this.cdr.markForCheck();
100
- }
101
- }
102
- setupChatHandlers() {
103
- if (!this.chatConfig)
104
- return;
105
- // Handle input submission
106
- this.chatConfig.setSubmitHandler(async (value) => {
107
- const agent = this.agent();
108
- if (!agent || !value.trim())
109
- return;
110
- // Add user message
111
- const userMessage = {
112
- id: randomUUID(),
113
- role: "user",
114
- content: value,
115
- };
116
- agent.addMessage(userMessage);
117
- // Clear the input
118
- this.chatConfig.setInputValue("");
119
- // Show cursor while processing
120
- this.showCursor.set(true);
121
- this.cdr.markForCheck();
122
- // Run the agent with named subscriber callbacks
123
- try {
124
- await agent.runAgent({}, {
125
- onTextMessageStartEvent: () => {
126
- this.showCursor.set(false);
127
- this.cdr.detectChanges();
128
- },
129
- onToolCallStartEvent: () => {
130
- this.showCursor.set(false);
131
- this.cdr.detectChanges();
132
- },
133
- });
134
- }
135
- catch (error) {
136
- console.error("Agent run error:", error);
137
- }
138
- finally {
139
- this.showCursor.set(false);
140
- this.cdr.markForCheck();
141
- }
142
- });
143
- // Handle input value changes (optional)
144
- this.chatConfig.setChangeHandler(() => {
145
- // Keep input state if needed
146
- });
147
- }
148
- createWatcher(desiredAgentId) {
149
- // Tear down previous watcher if it exists to prevent parallel subscriptions
150
- this.watcher?.unsubscribe();
151
- // Create new watcher using the ergonomic helper
152
- const w = watchAgentWith(this.injector, { agentId: desiredAgentId });
153
- // Destructure signals directly to class fields
154
- this.agent = w.agent;
155
- this.messages = w.messages;
156
- this.isRunning = w.isRunning;
157
- this.watcher = w;
158
- // Reset connection state for new agent
159
- this.hasConnectedOnce = false;
160
- }
161
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CopilotChatComponent, deps: [{ token: i1.CopilotChatConfigurationService, optional: true }, { token: i0.ChangeDetectorRef }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
162
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: CopilotChatComponent, isStandalone: true, selector: "copilot-chat", inputs: { agentId: "agentId", threadId: "threadId", inputComponent: "inputComponent" }, providers: [
163
- {
164
- provide: CopilotChatConfigurationService,
165
- deps: [
166
- [new Optional(), new SkipSelf(), CopilotChatConfigurationService],
167
- [new Optional(), COPILOT_CHAT_INITIAL_CONFIG],
168
- ],
169
- useFactory: (parent, initial) => parent ?? new CopilotChatConfigurationService(initial ?? null),
170
- },
171
- ], usesOnChanges: true, ngImport: i0, template: `
172
- <copilot-chat-view
173
- [messages]="messages()"
174
- [autoScroll]="true"
175
- [messageViewClass]="'w-full'"
176
- [showCursor]="showCursor()"
177
- [inputComponent]="inputComponent"
178
- >
179
- </copilot-chat-view>
180
- `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: CopilotChatViewComponent, selector: "copilot-chat-view", inputs: ["messages", "autoScroll", "showCursor", "messageViewComponent", "messageViewTemplate", "messageViewClass", "scrollViewComponent", "scrollViewTemplate", "scrollViewClass", "scrollToBottomButtonComponent", "scrollToBottomButtonTemplate", "scrollToBottomButtonClass", "inputComponent", "inputTemplate", "inputContainerComponent", "inputContainerTemplate", "inputContainerClass", "featherComponent", "featherTemplate", "featherClass", "disclaimerComponent", "disclaimerTemplate", "disclaimerClass", "disclaimerText"], outputs: ["assistantMessageThumbsUp", "assistantMessageThumbsDown", "assistantMessageReadAloud", "assistantMessageRegenerate", "userMessageCopy", "userMessageEdit"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
181
- }
182
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CopilotChatComponent, decorators: [{
183
- type: Component,
184
- args: [{
185
- selector: "copilot-chat",
186
- standalone: true,
187
- imports: [CommonModule, CopilotChatViewComponent],
188
- changeDetection: ChangeDetectionStrategy.OnPush,
189
- encapsulation: ViewEncapsulation.None,
190
- providers: [
191
- {
192
- provide: CopilotChatConfigurationService,
193
- deps: [
194
- [new Optional(), new SkipSelf(), CopilotChatConfigurationService],
195
- [new Optional(), COPILOT_CHAT_INITIAL_CONFIG],
196
- ],
197
- useFactory: (parent, initial) => parent ?? new CopilotChatConfigurationService(initial ?? null),
198
- },
199
- ],
200
- template: `
201
- <copilot-chat-view
202
- [messages]="messages()"
203
- [autoScroll]="true"
204
- [messageViewClass]="'w-full'"
205
- [showCursor]="showCursor()"
206
- [inputComponent]="inputComponent"
207
- >
208
- </copilot-chat-view>
209
- `,
210
- }]
211
- }], ctorParameters: () => [{ type: i1.CopilotChatConfigurationService, decorators: [{
212
- type: Optional
213
- }] }, { type: i0.ChangeDetectorRef }, { type: i0.Injector }], propDecorators: { agentId: [{
214
- type: Input
215
- }], threadId: [{
216
- type: Input
217
- }], inputComponent: [{
218
- type: Input
219
- }] } });
220
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29waWxvdC1jaGF0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2NoYXQvY29waWxvdC1jaGF0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULEtBQUssRUFJTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLE1BQU0sRUFDTixNQUFNLEVBSU4sUUFBUSxFQUNSLFFBQVEsR0FFVCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDekUsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sMERBQTBELENBQUM7QUFDM0csT0FBTyxFQUNMLDJCQUEyQixHQUU1QixNQUFNLHdEQUF3RCxDQUFDO0FBQ2hFLE9BQU8sRUFBYyxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNyRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsVUFBVSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFdEUsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7OztBQUVsRTs7Ozs7Ozs7R0FRRztBQStCSCxNQUFNLE9BQU8sb0JBQW9CO0lBTVQ7SUFDWjtJQUNBO0lBUEQsT0FBTyxDQUFVO0lBQ2pCLFFBQVEsQ0FBVTtJQUNsQixjQUFjLENBQWE7SUFFcEMsWUFDc0IsVUFBa0QsRUFDOUQsR0FBc0IsRUFDdEIsUUFBa0I7UUFGTixlQUFVLEdBQVYsVUFBVSxDQUF3QztRQUM5RCxRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUN0QixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBRTFCLHdFQUF3RTtRQUN4RSxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsT0FBTyxJQUFJLGdCQUFnQixDQUFDO1FBQ25ELElBQUks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QUUsMkJBQTJCLENBQUM7NkJBQzlDOzRCQUNELFVBQVUsRUFBRSxDQUNWLE1BQThDLEVBQzlDLE9BQXdDLEVBQ3hDLEVBQUUsQ0FBQyxNQUFNLElBQUksSUFBSSwrQkFBK0IsQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDO3lCQUNwRTtxQkFDRjtvQkFDRCxRQUFRLEVBQUU7Ozs7Ozs7OztHQVNUO2lCQUNGOzswQkFPSSxRQUFRO2dHQUxGLE9BQU87c0JBQWYsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIElucHV0LFxuICBPbkluaXQsXG4gIE9uQ2hhbmdlcyxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxuICBzaWduYWwsXG4gIGVmZmVjdCxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIFNpZ25hbCxcbiAgSW5qZWN0b3IsXG4gIE9wdGlvbmFsLFxuICBTa2lwU2VsZixcbiAgVHlwZSxcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcbmltcG9ydCB7IENvcGlsb3RDaGF0Vmlld0NvbXBvbmVudCB9IGZyb20gXCIuL2NvcGlsb3QtY2hhdC12aWV3LmNvbXBvbmVudFwiO1xuaW1wb3J0IHsgQ29waWxvdENoYXRDb25maWd1cmF0aW9uU2VydmljZSB9IGZyb20gXCIuLi8uLi9jb3JlL2NoYXQtY29uZmlndXJhdGlvbi9jaGF0LWNvbmZpZ3VyYXRpb24uc2VydmljZVwiO1xuaW1wb3J0IHtcbiAgQ09QSUxPVF9DSEFUX0lOSVRJQUxfQ09ORklHLFxuICBDb3BpbG90Q2hhdENvbmZpZ3VyYXRpb24sXG59IGZyb20gXCIuLi8uLi9jb3JlL2NoYXQtY29uZmlndXJhdGlvbi9jaGF0LWNvbmZpZ3VyYXRpb24udHlwZXNcIjtcbmltcG9ydCB7IHdhdGNoQWdlbnQsIHdhdGNoQWdlbnRXaXRoIH0gZnJvbSBcIi4uLy4uL3V0aWxzL2FnZW50LnV0aWxzXCI7XG5pbXBvcnQgeyBERUZBVUxUX0FHRU5UX0lELCByYW5kb21VVUlEIH0gZnJvbSBcIkBjb3BpbG90a2l0bmV4dC9zaGFyZWRcIjtcbmltcG9ydCB7IE1lc3NhZ2UsIEFic3RyYWN0QWdlbnQgfSBmcm9tIFwiQGFnLXVpL2NsaWVudFwiO1xuaW1wb3J0IHsgUHJveGllZENvcGlsb3RSdW50aW1lQWdlbnQgfSBmcm9tIFwiQGNvcGlsb3RraXRuZXh0L2NvcmVcIjtcblxuLyoqXG4gKiBDb3BpbG90Q2hhdCBjb21wb25lbnQgLSBBbmd1bGFyIGVxdWl2YWxlbnQgb2YgUmVhY3QncyA8Q29waWxvdENoYXQ+XG4gKiBQcm92aWRlcyBhIGNvbXBsZXRlIGNoYXQgaW50ZXJmYWNlIHRoYXQgd2lyZXMgYW4gYWdlbnQgdG8gdGhlIGNoYXQgdmlld1xuICpcbiAqIEBleGFtcGxlXG4gKiBgYGBodG1sXG4gKiA8Y29waWxvdC1jaGF0IFthZ2VudElkXT1cIidkZWZhdWx0J1wiIFt0aHJlYWRJZF09XCInYWJjMTIzJ1wiPjwvY29waWxvdC1jaGF0PlxuICogYGBgXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogXCJjb3BpbG90LWNoYXRcIixcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgQ29waWxvdENoYXRWaWV3Q29tcG9uZW50XSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IENvcGlsb3RDaGF0Q29uZmlndXJhdGlvblNlcnZpY2UsXG4gICAgICBkZXBzOiBbXG4gICAgICAgIFtuZXcgT3B0aW9uYWwoKSwgbmV3IFNraXBTZWxmKCksIENvcGlsb3RDaGF0Q29uZmlndXJhdGlvblNlcnZpY2VdLFxuICAgICAgICBbbmV3IE9wdGlvbmFsKCksIENPUElMT1RfQ0hBVF9JTklUSUFMX0NPTkZJR10sXG4gICAgICBdLFxuICAgICAgdXNlRmFjdG9yeTogKFxuICAgICAgICBwYXJlbnQ6IENvcGlsb3RDaGF0Q29uZmlndXJhdGlvblNlcnZpY2UgfCBudWxsLFxuICAgICAgICBpbml0aWFsOiBDb3BpbG90Q2hhdENvbmZpZ3VyYXRpb24gfCBudWxsXG4gICAgICApID0+IHBhcmVudCA/PyBuZXcgQ29waWxvdENoYXRDb25maWd1cmF0aW9uU2VydmljZShpbml0aWFsID8/IG51bGwpLFxuICAgIH0sXG4gIF0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPGNvcGlsb3QtY2hhdC12aWV3XG4gICAgICBbbWVzc2FnZXNdPVwibWVzc2FnZXMoKVwiXG4gICAgICBbYXV0b1Njcm9sbF09XCJ0cnVlXCJcbiAgICAgIFttZXNzYWdlVmlld0NsYXNzXT1cIid3LWZ1bGwnXCJcbiAgICAgIFtzaG93Q3Vyc29yXT1cInNob3dDdXJzb3IoKVwiXG4gICAgICBbaW5wdXRDb21wb25lbnRdPVwiaW5wdXRDb21wb25lbnRcIlxuICAgID5cbiAgICA8L2NvcGlsb3QtY2hhdC12aWV3PlxuICBgLFxufSlcbmV4cG9ydCBjbGFzcyBDb3BpbG90Q2hhdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcbiAgQElucHV0KCkgYWdlbnRJZD86IHN0cmluZztcbiAgQElucHV0KCkgdGhyZWFkSWQ/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIGlucHV0Q29tcG9uZW50PzogVHlwZTxhbnk+O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBPcHRpb25hbCgpIHByaXZhdGUgY2hhdENvbmZpZzogQ29waWxvdENoYXRDb25maWd1cmF0aW9uU2VydmljZSB8IG51bGwsXG4gICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yXG4gICkge1xuICAgIC8vIENyZWF0ZSBpbml0aWFsIHdhdGNoZXIgb25jZSAoY29uc3RydWN0b3IgaXMgYSBzYWZlIGluamVjdGlvbiBjb250ZXh0KVxuICAgIGNvbnN0IGluaXRpYWxJZCA9IHRoaXMuYWdlbnRJZCA/PyBERUZBVUxUX0FHRU5UX0lEO1xuICAgIHRoaXMuY3JlYXRlV2F0Y2hlcihpbml0aWFsSWQpO1xuXG4gICAgLy8gQ29ubmVjdCBvbmNlIHdoZW4gYWdlbnQgYmVjb21lcyBhdmFpbGFibGVcbiAgICBlZmZlY3QoXG4gICAgICAoKSA9PiB7XG4gICAgICAgIGNvbnN0IGEgPSB0aGlzLmFnZW50KCk7XG4gICAgICAgIGlmICghYSkgcmV0dXJuO1xuICAgICAgICAvLyBBcHBseSB0aHJlYWQgaWQgd2hlbiBhZ2VudCBpcyBhdmFpbGFibGVcbiAgICAgICAgYS50aHJlYWRJZCA9IHRoaXMudGhyZWFkSWQgfHwgdGhpcy5nZW5lcmF0ZWRUaHJlYWRJZDtcbiAgICAgICAgaWYgKCF0aGlzLmhhc0Nvbm5lY3RlZE9uY2UpIHtcbiAgICAgICAgICB0aGlzLmhhc0Nvbm5lY3RlZE9uY2UgPSB0cnVlO1xuICAgICAgICAgIGlmIChhIGluc3RhbmNlb2YgUHJveGllZENvcGlsb3RSdW50aW1lQWdlbnQpIHtcbiAgICAgICAgICAgIHRoaXMuY29ubmVjdFRvQWdlbnQoYSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIE5vdCBhIENvcGlsb3RLaXQgYWdlbnQ6IGVuc3VyZSBVSSBub3Qgc2hvd2luZyBsb2FkaW5nIGN1cnNvclxuICAgICAgICAgICAgdGhpcy5zaG93Q3Vyc29yLnNldChmYWxzZSk7XG4gICAgICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH1cbiAgICApO1xuICB9XG5cbiAgLy8gU2lnbmFscyBmcm9tIHdhdGNoQWdlbnQgLSBkZXN0cnVjdHVyZWQgZnJvbSB3YXRjaGVyXG4gIHByb3RlY3RlZCBhZ2VudCE6IFNpZ25hbDxBYnN0cmFjdEFnZW50IHwgdW5kZWZpbmVkPjtcbiAgcHJvdGVjdGVkIG1lc3NhZ2VzITogU2lnbmFsPE1lc3NhZ2VbXT47XG4gIHByb3RlY3RlZCBpc1J1bm5pbmchOiBTaWduYWw8Ym9vbGVhbj47XG4gIHByb3RlY3RlZCBzaG93Q3Vyc29yID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcblxuICBwcml2YXRlIGdlbmVyYXRlZFRocmVhZElkOiBzdHJpbmcgPSByYW5kb21VVUlEKCk7XG4gIHByaXZhdGUgd2F0Y2hlcj86IFJldHVyblR5cGU8dHlwZW9mIHdhdGNoQWdlbnQ+O1xuICBwcml2YXRlIGhhc0Nvbm5lY3RlZE9uY2UgPSBmYWxzZTtcblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnNldHVwQ2hhdEhhbmRsZXJzKCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXNbXCJhZ2VudElkXCJdICYmICFjaGFuZ2VzW1wiYWdlbnRJZFwiXS5maXJzdENoYW5nZSkge1xuICAgICAgY29uc3QgbmV3SWQgPSB0aGlzLmFnZW50SWQgPz8gREVGQVVMVF9BR0VOVF9JRDtcbiAgICAgIHRoaXMuY3JlYXRlV2F0Y2hlcihuZXdJZCk7XG4gICAgfVxuICAgIGlmIChjaGFuZ2VzW1widGhyZWFkSWRcIl0gJiYgIWNoYW5nZXNbXCJ0aHJlYWRJZFwiXS5maXJzdENoYW5nZSkge1xuICAgICAgY29uc3QgYSA9IHRoaXMuYWdlbnQoKTtcbiAgICAgIGlmIChhKSB7XG4gICAgICAgIGEudGhyZWFkSWQgPSB0aGlzLnRocmVhZElkIHx8IHRoaXMuZ2VuZXJhdGVkVGhyZWFkSWQ7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBjb25uZWN0VG9BZ2VudChhZ2VudDogQWJzdHJhY3RBZ2VudCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICghYWdlbnQpIHJldHVybjtcblxuICAgIHRoaXMuc2hvd0N1cnNvci5zZXQodHJ1ZSk7XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG5cbiAgICB0cnkge1xuICAgICAgYXdhaXQgYWdlbnQucnVuQWdlbnQoXG4gICAgICAgIHsgZm9yd2FyZGVkUHJvcHM6IHsgX19jb3BpbG90a2l0Q29ubmVjdDogdHJ1ZSB9IH0sXG4gICAgICAgIHtcbiAgICAgICAgICBvblRleHRNZXNzYWdlU3RhcnRFdmVudDogKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zaG93Q3Vyc29yLnNldChmYWxzZSk7XG4gICAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBvblRvb2xDYWxsU3RhcnRFdmVudDogKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zaG93Q3Vyc29yLnNldChmYWxzZSk7XG4gICAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgfSxcbiAgICAgICAgfVxuICAgICAgKTtcbiAgICAgIHRoaXMuc2hvd0N1cnNvci5zZXQoZmFsc2UpO1xuICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoXCJGYWlsZWQgdG8gY29ubmVjdCB0byBhZ2VudDpcIiwgZXJyb3IpO1xuICAgICAgdGhpcy5zaG93Q3Vyc29yLnNldChmYWxzZSk7XG4gICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNldHVwQ2hhdEhhbmRsZXJzKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5jaGF0Q29uZmlnKSByZXR1cm47XG5cbiAgICAvLyBIYW5kbGUgaW5wdXQgc3VibWlzc2lvblxuICAgIHRoaXMuY2hhdENvbmZpZy5zZXRTdWJtaXRIYW5kbGVyKGFzeW5jICh2YWx1ZTogc3RyaW5nKSA9PiB7XG4gICAgICBjb25zdCBhZ2VudCA9IHRoaXMuYWdlbnQoKTtcbiAgICAgIGlmICghYWdlbnQgfHwgIXZhbHVlLnRyaW0oKSkgcmV0dXJuO1xuXG4gICAgICAvLyBBZGQgdXNlciBtZXNzYWdlXG4gICAgICBjb25zdCB1c2VyTWVzc2FnZTogTWVzc2FnZSA9IHtcbiAgICAgICAgaWQ6IHJhbmRvbVVVSUQoKSxcbiAgICAgICAgcm9sZTogXCJ1c2VyXCIsXG4gICAgICAgIGNvbnRlbnQ6IHZhbHVlLFxuICAgICAgfTtcbiAgICAgIGFnZW50LmFkZE1lc3NhZ2UodXNlck1lc3NhZ2UpO1xuXG4gICAgICAvLyBDbGVhciB0aGUgaW5wdXRcbiAgICAgIHRoaXMuY2hhdENvbmZpZyEuc2V0SW5wdXRWYWx1ZShcIlwiKTtcblxuICAgICAgLy8gU2hvdyBjdXJzb3Igd2hpbGUgcHJvY2Vzc2luZ1xuICAgICAgdGhpcy5zaG93Q3Vyc29yLnNldCh0cnVlKTtcbiAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuXG4gICAgICAvLyBSdW4gdGhlIGFnZW50IHdpdGggbmFtZWQgc3Vic2NyaWJlciBjYWxsYmFja3NcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IGFnZW50LnJ1bkFnZW50KFxuICAgICAgICAgIHt9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIG9uVGV4dE1lc3NhZ2VTdGFydEV2ZW50OiAoKSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMuc2hvd0N1cnNvci5zZXQoZmFsc2UpO1xuICAgICAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgb25Ub29sQ2FsbFN0YXJ0RXZlbnQ6ICgpID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5zaG93Q3Vyc29yLnNldChmYWxzZSk7XG4gICAgICAgICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfVxuICAgICAgICApO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihcIkFnZW50IHJ1biBlcnJvcjpcIiwgZXJyb3IpO1xuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgdGhpcy5zaG93Q3Vyc29yLnNldChmYWxzZSk7XG4gICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gSGFuZGxlIGlucHV0IHZhbHVlIGNoYW5nZXMgKG9wdGlvbmFsKVxuICAgIHRoaXMuY2hhdENvbmZpZy5zZXRDaGFuZ2VIYW5kbGVyKCgpID0+IHtcbiAgICAgIC8vIEtlZXAgaW5wdXQgc3RhdGUgaWYgbmVlZGVkXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZVdhdGNoZXIoZGVzaXJlZEFnZW50SWQ6IHN0cmluZykge1xuICAgIC8vIFRlYXIgZG93biBwcmV2aW91cyB3YXRjaGVyIGlmIGl0IGV4aXN0cyB0byBwcmV2ZW50IHBhcmFsbGVsIHN1YnNjcmlwdGlvbnNcbiAgICB0aGlzLndhdGNoZXI/LnVuc3Vic2NyaWJlKCk7XG5cbiAgICAvLyBDcmVhdGUgbmV3IHdhdGNoZXIgdXNpbmcgdGhlIGVyZ29ub21pYyBoZWxwZXJcbiAgICBjb25zdCB3ID0gd2F0Y2hBZ2VudFdpdGgodGhpcy5pbmplY3RvciwgeyBhZ2VudElkOiBkZXNpcmVkQWdlbnRJZCB9KTtcblxuICAgIC8vIERlc3RydWN0dXJlIHNpZ25hbHMgZGlyZWN0bHkgdG8gY2xhc3MgZmllbGRzXG4gICAgdGhpcy5hZ2VudCA9IHcuYWdlbnQ7XG4gICAgdGhpcy5tZXNzYWdlcyA9IHcubWVzc2FnZXM7XG4gICAgdGhpcy5pc1J1bm5pbmcgPSB3LmlzUnVubmluZztcbiAgICB0aGlzLndhdGNoZXIgPSB3O1xuXG4gICAgLy8gUmVzZXQgY29ubmVjdGlvbiBzdGF0ZSBmb3IgbmV3IGFnZW50XG4gICAgdGhpcy5oYXNDb25uZWN0ZWRPbmNlID0gZmFsc2U7XG4gIH1cbn1cbiJdfQ==
@@ -1,150 +0,0 @@
1
- import { Component, Input, ViewContainerRef, TemplateRef, inject, ViewChild, } from "@angular/core";
2
- import { CommonModule } from "@angular/common";
3
- import { CopilotKitService } from "../core/copilotkit.service";
4
- import { ToolCallStatus } from "../core/copilotkit.types";
5
- import * as i0 from "@angular/core";
6
- import * as i1 from "@angular/common";
7
- export class CopilotKitToolRenderComponent {
8
- toolName;
9
- args;
10
- status = ToolCallStatus.InProgress;
11
- result;
12
- description;
13
- container;
14
- copilotkit = inject(CopilotKitService);
15
- componentRef;
16
- templateRef;
17
- templateContext;
18
- ngAfterViewInit() {
19
- this.renderTool();
20
- }
21
- ngOnChanges(changes) {
22
- if (changes["toolName"] ||
23
- changes["args"] ||
24
- changes["status"] ||
25
- changes["result"]) {
26
- this.renderTool();
27
- }
28
- }
29
- renderTool() {
30
- // Clear existing component
31
- if (this.componentRef) {
32
- this.componentRef.destroy();
33
- this.componentRef = undefined;
34
- }
35
- // Clear template
36
- this.templateRef = undefined;
37
- this.templateContext = undefined;
38
- if (!this.toolName) {
39
- return;
40
- }
41
- // Get the tool render configuration
42
- const toolRender = this.copilotkit.getToolRender(this.toolName);
43
- if (!toolRender) {
44
- console.warn(`No render found for tool: ${this.toolName}`);
45
- return;
46
- }
47
- // Prepare props to pass to the component
48
- const props = {
49
- name: this.toolName,
50
- description: this.description || "",
51
- args: this.args,
52
- status: this.status,
53
- result: this.result,
54
- };
55
- // Check if render is a Component class or TemplateRef
56
- if (this.isComponentClass(toolRender.render)) {
57
- // Create component dynamically
58
- this.renderComponent(toolRender.render, props);
59
- }
60
- else if (this.isTemplateRef(toolRender.render)) {
61
- // Use template
62
- this.renderTemplate(toolRender.render, props);
63
- }
64
- else {
65
- console.error(`Invalid render type for tool: ${this.toolName}`);
66
- }
67
- }
68
- renderComponent(componentClass, props) {
69
- // Clear the container
70
- this.container.clear();
71
- // Create the component
72
- this.componentRef = this.container.createComponent(componentClass);
73
- // Determine declared inputs to avoid NG0303 logs
74
- const cmpDef = componentClass.ɵcmp;
75
- const declaredInputs = new Set(Object.keys(cmpDef?.inputs ?? {}));
76
- if (declaredInputs.has('props')) {
77
- this.componentRef.setInput('props', props);
78
- }
79
- else {
80
- for (const [key, value] of Object.entries(props)) {
81
- if (declaredInputs.has(key)) {
82
- this.componentRef.setInput(key, value);
83
- }
84
- }
85
- }
86
- // Trigger change detection
87
- this.componentRef.changeDetectorRef.detectChanges();
88
- }
89
- renderTemplate(template, props) {
90
- this.templateRef = template;
91
- this.templateContext = {
92
- $implicit: props,
93
- name: props.name,
94
- description: props.description,
95
- args: props.args,
96
- status: props.status,
97
- result: props.result,
98
- };
99
- }
100
- isComponentClass(value) {
101
- return typeof value === "function" && value.prototype;
102
- }
103
- isTemplateRef(value) {
104
- return value instanceof TemplateRef;
105
- }
106
- ngOnDestroy() {
107
- if (this.componentRef) {
108
- this.componentRef.destroy();
109
- }
110
- }
111
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CopilotKitToolRenderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
112
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: CopilotKitToolRenderComponent, isStandalone: true, selector: "copilotkit-tool-render", inputs: { toolName: "toolName", args: "args", status: "status", result: "result", description: "description" }, viewQueries: [{ propertyName: "container", first: true, predicate: ["dynamicContainer"], descendants: true, read: ViewContainerRef, static: true }], usesOnChanges: true, ngImport: i0, template: `
113
- <ng-container #dynamicContainer></ng-container>
114
- <ng-container *ngIf="templateRef && templateContext">
115
- <ng-container
116
- *ngTemplateOutlet="templateRef; context: templateContext"
117
- ></ng-container>
118
- </ng-container>
119
- `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] });
120
- }
121
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CopilotKitToolRenderComponent, decorators: [{
122
- type: Component,
123
- args: [{
124
- selector: "copilotkit-tool-render",
125
- standalone: true,
126
- imports: [CommonModule],
127
- template: `
128
- <ng-container #dynamicContainer></ng-container>
129
- <ng-container *ngIf="templateRef && templateContext">
130
- <ng-container
131
- *ngTemplateOutlet="templateRef; context: templateContext"
132
- ></ng-container>
133
- </ng-container>
134
- `,
135
- }]
136
- }], propDecorators: { toolName: [{
137
- type: Input
138
- }], args: [{
139
- type: Input
140
- }], status: [{
141
- type: Input
142
- }], result: [{
143
- type: Input
144
- }], description: [{
145
- type: Input
146
- }], container: [{
147
- type: ViewChild,
148
- args: ["dynamicContainer", { read: ViewContainerRef, static: true }]
149
- }] } });
150
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29waWxvdGtpdC10b29sLXJlbmRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy9jb3BpbG90a2l0LXRvb2wtcmVuZGVyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULEtBQUssRUFDTCxnQkFBZ0IsRUFDaEIsV0FBVyxFQUtYLE1BQU0sRUFDTixTQUFTLEdBRVYsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBSy9ELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7O0FBZTFELE1BQU0sT0FBTyw2QkFBNkI7SUFDL0IsUUFBUSxDQUFVO0lBQ2xCLElBQUksQ0FBTTtJQUNWLE1BQU0sR0FBbUIsY0FBYyxDQUFDLFVBQVUsQ0FBQztJQUNuRCxNQUFNLENBQU87SUFDYixXQUFXLENBQVU7SUFHdEIsU0FBUyxDQUFvQjtJQUU3QixVQUFVLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDdkMsWUFBWSxDQUFxQjtJQUV6QyxXQUFXLENBQW9CO0lBQy9CLGVBQWUsQ0FBTztJQUV0QixlQUFlO1FBQ2IsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ3BCLENBQUM7SUFFRCxXQUFXLENBQUMsT0FBc0I7UUFDaEMsSUFDRSxPQUFPLENBQUMsVUFBVSxDQUFDO1lBQ25CLE9BQU8sQ0FBQyxNQUFNLENBQUM7WUFDZixPQUFPLENBQUMsUUFBUSxDQUFDO1lBQ2pCLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFDakIsQ0FBQztZQUNELElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNwQixDQUFDO0lBQ0gsQ0FBQztJQUVPLFVBQVU7UUFDaEIsMkJBQTJCO1FBQzNCLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3RCLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDNUIsSUFBSSxDQUFDLFlBQVksR0FBRyxTQUFTLENBQUM7UUFDaEMsQ0FBQztRQUVELGlCQUFpQjtRQUNqQixJQUFJLENBQUMsV0FBVyxHQUFHLFNBQVMsQ0FBQztRQUM3QixJQUFJLENBQUMsZUFBZSxHQUFHLFNBQVMsQ0FBQztRQUVqQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ25CLE9BQU87UUFDVCxDQUFDO1FBRUQsb0NBQW9DO1FBQ3BDLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxRQUFRLENBRWpELENBQUM7UUFFZCxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDaEIsT0FBTyxDQUFDLElBQUksQ0FBQyw2QkFBNkIsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7WUFDM0QsT0FBTztRQUNULENBQUM7UUFFRCx5Q0FBeUM7UUFDekMsTUFBTSxLQUFLLEdBQXVCO1lBQ2hDLElBQUksRUFBRSxJQUFJLENBQUMsUUFBUTtZQUNuQixXQUFXLEVBQUUsSUFBSSxDQUFDLFdBQVcsSUFBSSxFQUFFO1lBQ25DLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtZQUNmLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTtZQUNuQixNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07U0FDcEIsQ0FBQztRQUVGLHNEQUFzRDtRQUN0RCxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUM3QywrQkFBK0I7WUFDL0IsSUFBSSxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ2pELENBQUM7YUFBTSxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7WUFDakQsZUFBZTtZQUNmLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNoRCxDQUFDO2FBQU0sQ0FBQztZQUNOLE9BQU8sQ0FBQyxLQUFLLENBQUMsaUNBQWlDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQ2xFLENBQUM7SUFDSCxDQUFDO0lBRU8sZUFBZSxDQUNyQixjQUF5QixFQUN6QixLQUFvQjtRQUVwQixzQkFBc0I7UUFDdEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUV2Qix1QkFBdUI7UUFDdkIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLGVBQWUsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUVuRSxpREFBaUQ7UUFDakQsTUFBTSxNQUFNLEdBQVMsY0FBc0IsQ0FBQyxJQUFJLENBQUM7UUFDakQsTUFBTSxjQUFjLEdBQUcsSUFBSSxHQUFHLENBQVMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFFMUUsSUFBSSxjQUFjLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDaEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzdDLENBQUM7YUFBTSxDQUFDO1lBQ04sS0FBSyxNQUFNLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztnQkFDakQsSUFBSSxjQUFjLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7b0JBQzVCLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztnQkFDekMsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO1FBRUQsMkJBQTJCO1FBQzNCLElBQUksQ0FBQyxZQUFZLENBQUMsaUJBQWlCLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDdEQsQ0FBQztJQUVPLGNBQWMsQ0FDcEIsUUFBMEIsRUFDMUIsS0FBb0I7UUFFcEIsSUFBSSxDQUFDLFdBQVcsR0FBRyxRQUFRLENBQUM7UUFDNUIsSUFBSSxDQUFDLGVBQWUsR0FBRztZQUNyQixTQUFTLEVBQUUsS0FBSztZQUNoQixJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUk7WUFDaEIsV0FBVyxFQUFFLEtBQUssQ0FBQyxXQUFXO1lBQzlCLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSTtZQUNoQixNQUFNLEVBQUUsS0FBSyxDQUFDLE1BQU07WUFDcEIsTUFBTSxFQUFFLEtBQUssQ0FBQyxNQUFNO1NBQ3JCLENBQUM7SUFDSixDQUFDO0lBRU8sZ0JBQWdCLENBQUMsS0FBVTtRQUNqQyxPQUFPLE9BQU8sS0FBSyxLQUFLLFVBQVUsSUFBSSxLQUFLLENBQUMsU0FBUyxDQUFDO0lBQ3hELENBQUM7SUFFTyxhQUFhLENBQUMsS0FBVTtRQUM5QixPQUFPLEtBQUssWUFBWSxXQUFXLENBQUM7SUFDdEMsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUN0QixJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQzlCLENBQUM7SUFDSCxDQUFDO3dHQXBJVSw2QkFBNkI7NEZBQTdCLDZCQUE2Qiw0UkFPRCxnQkFBZ0IsZ0VBaEI3Qzs7Ozs7OztHQU9ULDJEQVJTLFlBQVk7OzRGQVVYLDZCQUE2QjtrQkFiekMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsd0JBQXdCO29CQUNsQyxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDO29CQUN2QixRQUFRLEVBQUU7Ozs7Ozs7R0FPVDtpQkFDRjs4QkFFVSxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBR0UsU0FBUztzQkFEaEIsU0FBUzt1QkFBQyxrQkFBa0IsRUFBRSxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgVmlld0NvbnRhaW5lclJlZixcbiAgVGVtcGxhdGVSZWYsXG4gIFR5cGUsXG4gIE9uQ2hhbmdlcyxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgQ29tcG9uZW50UmVmLFxuICBpbmplY3QsXG4gIFZpZXdDaGlsZCxcbiAgQWZ0ZXJWaWV3SW5pdCxcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcbmltcG9ydCB7IENvcGlsb3RLaXRTZXJ2aWNlIH0gZnJvbSBcIi4uL2NvcmUvY29waWxvdGtpdC5zZXJ2aWNlXCI7XG5pbXBvcnQgdHlwZSB7XG4gIFRvb2xDYWxsUHJvcHMsXG4gIEFuZ3VsYXJUb29sQ2FsbFJlbmRlcixcbn0gZnJvbSBcIi4uL2NvcmUvY29waWxvdGtpdC50eXBlc1wiO1xuaW1wb3J0IHsgVG9vbENhbGxTdGF0dXMgfSBmcm9tIFwiLi4vY29yZS9jb3BpbG90a2l0LnR5cGVzXCI7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogXCJjb3BpbG90a2l0LXRvb2wtcmVuZGVyXCIsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxuZy1jb250YWluZXIgI2R5bmFtaWNDb250YWluZXI+PC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRlbXBsYXRlUmVmICYmIHRlbXBsYXRlQ29udGV4dFwiPlxuICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cInRlbXBsYXRlUmVmOyBjb250ZXh0OiB0ZW1wbGF0ZUNvbnRleHRcIlxuICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuICBgLFxufSlcbmV4cG9ydCBjbGFzcyBDb3BpbG90S2l0VG9vbFJlbmRlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgQWZ0ZXJWaWV3SW5pdCB7XG4gIEBJbnB1dCgpIHRvb2xOYW1lITogc3RyaW5nO1xuICBASW5wdXQoKSBhcmdzOiBhbnk7XG4gIEBJbnB1dCgpIHN0YXR1czogVG9vbENhbGxTdGF0dXMgPSBUb29sQ2FsbFN0YXR1cy5JblByb2dyZXNzO1xuICBASW5wdXQoKSByZXN1bHQ/OiBhbnk7XG4gIEBJbnB1dCgpIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuXG4gIEBWaWV3Q2hpbGQoXCJkeW5hbWljQ29udGFpbmVyXCIsIHsgcmVhZDogVmlld0NvbnRhaW5lclJlZiwgc3RhdGljOiB0cnVlIH0pXG4gIHByaXZhdGUgY29udGFpbmVyITogVmlld0NvbnRhaW5lclJlZjtcblxuICBwcml2YXRlIGNvcGlsb3RraXQgPSBpbmplY3QoQ29waWxvdEtpdFNlcnZpY2UpO1xuICBwcml2YXRlIGNvbXBvbmVudFJlZj86IENvbXBvbmVudFJlZjxhbnk+O1xuXG4gIHRlbXBsYXRlUmVmPzogVGVtcGxhdGVSZWY8YW55PjtcbiAgdGVtcGxhdGVDb250ZXh0PzogYW55O1xuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnJlbmRlclRvb2woKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoXG4gICAgICBjaGFuZ2VzW1widG9vbE5hbWVcIl0gfHxcbiAgICAgIGNoYW5nZXNbXCJhcmdzXCJdIHx8XG4gICAgICBjaGFuZ2VzW1wic3RhdHVzXCJdIHx8XG4gICAgICBjaGFuZ2VzW1wicmVzdWx0XCJdXG4gICAgKSB7XG4gICAgICB0aGlzLnJlbmRlclRvb2woKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHJlbmRlclRvb2woKTogdm9pZCB7XG4gICAgLy8gQ2xlYXIgZXhpc3RpbmcgY29tcG9uZW50XG4gICAgaWYgKHRoaXMuY29tcG9uZW50UmVmKSB7XG4gICAgICB0aGlzLmNvbXBvbmVudFJlZi5kZXN0cm95KCk7XG4gICAgICB0aGlzLmNvbXBvbmVudFJlZiA9IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvLyBDbGVhciB0ZW1wbGF0ZVxuICAgIHRoaXMudGVtcGxhdGVSZWYgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy50ZW1wbGF0ZUNvbnRleHQgPSB1bmRlZmluZWQ7XG5cbiAgICBpZiAoIXRoaXMudG9vbE5hbWUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBHZXQgdGhlIHRvb2wgcmVuZGVyIGNvbmZpZ3VyYXRpb25cbiAgICBjb25zdCB0b29sUmVuZGVyID0gdGhpcy5jb3BpbG90a2l0LmdldFRvb2xSZW5kZXIodGhpcy50b29sTmFtZSkgYXNcbiAgICAgIHwgQW5ndWxhclRvb2xDYWxsUmVuZGVyXG4gICAgICB8IHVuZGVmaW5lZDtcblxuICAgIGlmICghdG9vbFJlbmRlcikge1xuICAgICAgY29uc29sZS53YXJuKGBObyByZW5kZXIgZm91bmQgZm9yIHRvb2w6ICR7dGhpcy50b29sTmFtZX1gKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBQcmVwYXJlIHByb3BzIHRvIHBhc3MgdG8gdGhlIGNvbXBvbmVudFxuICAgIGNvbnN0IHByb3BzOiBUb29sQ2FsbFByb3BzPGFueT4gPSB7XG4gICAgICBuYW1lOiB0aGlzLnRvb2xOYW1lLFxuICAgICAgZGVzY3JpcHRpb246IHRoaXMuZGVzY3JpcHRpb24gfHwgXCJcIixcbiAgICAgIGFyZ3M6IHRoaXMuYXJncyxcbiAgICAgIHN0YXR1czogdGhpcy5zdGF0dXMsXG4gICAgICByZXN1bHQ6IHRoaXMucmVzdWx0LFxuICAgIH07XG5cbiAgICAvLyBDaGVjayBpZiByZW5kZXIgaXMgYSBDb21wb25lbnQgY2xhc3Mgb3IgVGVtcGxhdGVSZWZcbiAgICBpZiAodGhpcy5pc0NvbXBvbmVudENsYXNzKHRvb2xSZW5kZXIucmVuZGVyKSkge1xuICAgICAgLy8gQ3JlYXRlIGNvbXBvbmVudCBkeW5hbWljYWxseVxuICAgICAgdGhpcy5yZW5kZXJDb21wb25lbnQodG9vbFJlbmRlci5yZW5kZXIsIHByb3BzKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXNUZW1wbGF0ZVJlZih0b29sUmVuZGVyLnJlbmRlcikpIHtcbiAgICAgIC8vIFVzZSB0ZW1wbGF0ZVxuICAgICAgdGhpcy5yZW5kZXJUZW1wbGF0ZSh0b29sUmVuZGVyLnJlbmRlciwgcHJvcHMpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zb2xlLmVycm9yKGBJbnZhbGlkIHJlbmRlciB0eXBlIGZvciB0b29sOiAke3RoaXMudG9vbE5hbWV9YCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSByZW5kZXJDb21wb25lbnQoXG4gICAgY29tcG9uZW50Q2xhc3M6IFR5cGU8YW55PixcbiAgICBwcm9wczogVG9vbENhbGxQcm9wc1xuICApOiB2b2lkIHtcbiAgICAvLyBDbGVhciB0aGUgY29udGFpbmVyXG4gICAgdGhpcy5jb250YWluZXIuY2xlYXIoKTtcblxuICAgIC8vIENyZWF0ZSB0aGUgY29tcG9uZW50XG4gICAgdGhpcy5jb21wb25lbnRSZWYgPSB0aGlzLmNvbnRhaW5lci5jcmVhdGVDb21wb25lbnQoY29tcG9uZW50Q2xhc3MpO1xuXG4gICAgLy8gRGV0ZXJtaW5lIGRlY2xhcmVkIGlucHV0cyB0byBhdm9pZCBORzAzMDMgbG9nc1xuICAgIGNvbnN0IGNtcERlZjogYW55ID0gKGNvbXBvbmVudENsYXNzIGFzIGFueSkuybVjbXA7XG4gICAgY29uc3QgZGVjbGFyZWRJbnB1dHMgPSBuZXcgU2V0PHN0cmluZz4oT2JqZWN0LmtleXMoY21wRGVmPy5pbnB1dHMgPz8ge30pKTtcblxuICAgIGlmIChkZWNsYXJlZElucHV0cy5oYXMoJ3Byb3BzJykpIHtcbiAgICAgIHRoaXMuY29tcG9uZW50UmVmLnNldElucHV0KCdwcm9wcycsIHByb3BzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMocHJvcHMpKSB7XG4gICAgICAgIGlmIChkZWNsYXJlZElucHV0cy5oYXMoa2V5KSkge1xuICAgICAgICAgIHRoaXMuY29tcG9uZW50UmVmLnNldElucHV0KGtleSwgdmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gVHJpZ2dlciBjaGFuZ2UgZGV0ZWN0aW9uXG4gICAgdGhpcy5jb21wb25lbnRSZWYuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgcHJpdmF0ZSByZW5kZXJUZW1wbGF0ZShcbiAgICB0ZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PixcbiAgICBwcm9wczogVG9vbENhbGxQcm9wc1xuICApOiB2b2lkIHtcbiAgICB0aGlzLnRlbXBsYXRlUmVmID0gdGVtcGxhdGU7XG4gICAgdGhpcy50ZW1wbGF0ZUNvbnRleHQgPSB7XG4gICAgICAkaW1wbGljaXQ6IHByb3BzLFxuICAgICAgbmFtZTogcHJvcHMubmFtZSxcbiAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcy5kZXNjcmlwdGlvbixcbiAgICAgIGFyZ3M6IHByb3BzLmFyZ3MsXG4gICAgICBzdGF0dXM6IHByb3BzLnN0YXR1cyxcbiAgICAgIHJlc3VsdDogcHJvcHMucmVzdWx0LFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGlzQ29tcG9uZW50Q2xhc3ModmFsdWU6IGFueSk6IHZhbHVlIGlzIFR5cGU8YW55PiB7XG4gICAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gXCJmdW5jdGlvblwiICYmIHZhbHVlLnByb3RvdHlwZTtcbiAgfVxuXG4gIHByaXZhdGUgaXNUZW1wbGF0ZVJlZih2YWx1ZTogYW55KTogdmFsdWUgaXMgVGVtcGxhdGVSZWY8YW55PiB7XG4gICAgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgVGVtcGxhdGVSZWY7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5jb21wb25lbnRSZWYpIHtcbiAgICAgIHRoaXMuY29tcG9uZW50UmVmLmRlc3Ryb3koKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -1,65 +0,0 @@
1
- import { CopilotChatConfigurationService } from './chat-configuration.service';
2
- import { COPILOT_CHAT_INITIAL_CONFIG } from './chat-configuration.types';
3
- /**
4
- * Provides CopilotKit chat configuration at a specific component level.
5
- * This allows for scoped configuration where different parts of the app
6
- * can have different chat configurations.
7
- *
8
- * @param config - Optional initial configuration
9
- * @returns Array of providers
10
- *
11
- * @example
12
- * ```typescript
13
- * // Global configuration in app.config.ts
14
- * export const appConfig: ApplicationConfig = {
15
- * providers: [
16
- * provideCopilotChatConfiguration({
17
- * labels: {
18
- * chatInputPlaceholder: "How can I help you today?"
19
- * }
20
- * })
21
- * ]
22
- * };
23
- *
24
- * // Component-scoped configuration
25
- * @Component({
26
- * selector: 'customer-support-chat',
27
- * providers: [
28
- * provideCopilotChatConfiguration({
29
- * labels: {
30
- * chatInputPlaceholder: "Describe your issue..."
31
- * },
32
- * onSubmitInput: (value) => console.log('Support message:', value)
33
- * })
34
- * ],
35
- * template: `...`
36
- * })
37
- * export class CustomerSupportChatComponent {}
38
- *
39
- * // Multiple independent chats
40
- * @Component({
41
- * selector: 'sales-chat',
42
- * providers: [
43
- * provideCopilotChatConfiguration({
44
- * labels: {
45
- * chatInputPlaceholder: "Ask about our products..."
46
- * }
47
- * })
48
- * ],
49
- * template: `...`
50
- * })
51
- * export class SalesChatComponent {}
52
- * ```
53
- */
54
- export function provideCopilotChatConfiguration(config) {
55
- return [
56
- // Provide the service
57
- CopilotChatConfigurationService,
58
- // Provide the initial configuration
59
- {
60
- provide: COPILOT_CHAT_INITIAL_CONFIG,
61
- useValue: config || {}
62
- }
63
- ];
64
- }
65
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdC1jb25maWd1cmF0aW9uLnByb3ZpZGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb3JlL2NoYXQtY29uZmlndXJhdGlvbi9jaGF0LWNvbmZpZ3VyYXRpb24ucHJvdmlkZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQy9FLE9BQU8sRUFFTCwyQkFBMkIsRUFDNUIsTUFBTSw0QkFBNEIsQ0FBQztBQUVwQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FrREc7QUFDSCxNQUFNLFVBQVUsK0JBQStCLENBQzdDLE1BQWlDO0lBRWpDLE9BQU87UUFDTCxzQkFBc0I7UUFDdEIsK0JBQStCO1FBQy9CLG9DQUFvQztRQUNwQztZQUNFLE9BQU8sRUFBRSwyQkFBMkI7WUFDcEMsUUFBUSxFQUFFLE1BQU0sSUFBSSxFQUFFO1NBQ3ZCO0tBQ0YsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQcm92aWRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29waWxvdENoYXRDb25maWd1cmF0aW9uU2VydmljZSB9IGZyb20gJy4vY2hhdC1jb25maWd1cmF0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgXG4gIENvcGlsb3RDaGF0Q29uZmlndXJhdGlvbixcbiAgQ09QSUxPVF9DSEFUX0lOSVRJQUxfQ09ORklHIFxufSBmcm9tICcuL2NoYXQtY29uZmlndXJhdGlvbi50eXBlcyc7XG5cbi8qKlxuICogUHJvdmlkZXMgQ29waWxvdEtpdCBjaGF0IGNvbmZpZ3VyYXRpb24gYXQgYSBzcGVjaWZpYyBjb21wb25lbnQgbGV2ZWwuXG4gKiBUaGlzIGFsbG93cyBmb3Igc2NvcGVkIGNvbmZpZ3VyYXRpb24gd2hlcmUgZGlmZmVyZW50IHBhcnRzIG9mIHRoZSBhcHBcbiAqIGNhbiBoYXZlIGRpZmZlcmVudCBjaGF0IGNvbmZpZ3VyYXRpb25zLlxuICogXG4gKiBAcGFyYW0gY29uZmlnIC0gT3B0aW9uYWwgaW5pdGlhbCBjb25maWd1cmF0aW9uXG4gKiBAcmV0dXJucyBBcnJheSBvZiBwcm92aWRlcnNcbiAqIFxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIC8vIEdsb2JhbCBjb25maWd1cmF0aW9uIGluIGFwcC5jb25maWcudHNcbiAqIGV4cG9ydCBjb25zdCBhcHBDb25maWc6IEFwcGxpY2F0aW9uQ29uZmlnID0ge1xuICogICBwcm92aWRlcnM6IFtcbiAqICAgICBwcm92aWRlQ29waWxvdENoYXRDb25maWd1cmF0aW9uKHtcbiAqICAgICAgIGxhYmVsczoge1xuICogICAgICAgICBjaGF0SW5wdXRQbGFjZWhvbGRlcjogXCJIb3cgY2FuIEkgaGVscCB5b3UgdG9kYXk/XCJcbiAqICAgICAgIH1cbiAqICAgICB9KVxuICogICBdXG4gKiB9O1xuICogXG4gKiAvLyBDb21wb25lbnQtc2NvcGVkIGNvbmZpZ3VyYXRpb25cbiAqIEBDb21wb25lbnQoe1xuICogICBzZWxlY3RvcjogJ2N1c3RvbWVyLXN1cHBvcnQtY2hhdCcsXG4gKiAgIHByb3ZpZGVyczogW1xuICogICAgIHByb3ZpZGVDb3BpbG90Q2hhdENvbmZpZ3VyYXRpb24oe1xuICogICAgICAgbGFiZWxzOiB7XG4gKiAgICAgICAgIGNoYXRJbnB1dFBsYWNlaG9sZGVyOiBcIkRlc2NyaWJlIHlvdXIgaXNzdWUuLi5cIlxuICogICAgICAgfSxcbiAqICAgICAgIG9uU3VibWl0SW5wdXQ6ICh2YWx1ZSkgPT4gY29uc29sZS5sb2coJ1N1cHBvcnQgbWVzc2FnZTonLCB2YWx1ZSlcbiAqICAgICB9KVxuICogICBdLFxuICogICB0ZW1wbGF0ZTogYC4uLmBcbiAqIH0pXG4gKiBleHBvcnQgY2xhc3MgQ3VzdG9tZXJTdXBwb3J0Q2hhdENvbXBvbmVudCB7fVxuICogXG4gKiAvLyBNdWx0aXBsZSBpbmRlcGVuZGVudCBjaGF0c1xuICogQENvbXBvbmVudCh7XG4gKiAgIHNlbGVjdG9yOiAnc2FsZXMtY2hhdCcsXG4gKiAgIHByb3ZpZGVyczogW1xuICogICAgIHByb3ZpZGVDb3BpbG90Q2hhdENvbmZpZ3VyYXRpb24oe1xuICogICAgICAgbGFiZWxzOiB7XG4gKiAgICAgICAgIGNoYXRJbnB1dFBsYWNlaG9sZGVyOiBcIkFzayBhYm91dCBvdXIgcHJvZHVjdHMuLi5cIlxuICogICAgICAgfVxuICogICAgIH0pXG4gKiAgIF0sXG4gKiAgIHRlbXBsYXRlOiBgLi4uYFxuICogfSlcbiAqIGV4cG9ydCBjbGFzcyBTYWxlc0NoYXRDb21wb25lbnQge31cbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gcHJvdmlkZUNvcGlsb3RDaGF0Q29uZmlndXJhdGlvbihcbiAgY29uZmlnPzogQ29waWxvdENoYXRDb25maWd1cmF0aW9uXG4pOiBQcm92aWRlcltdIHtcbiAgcmV0dXJuIFtcbiAgICAvLyBQcm92aWRlIHRoZSBzZXJ2aWNlXG4gICAgQ29waWxvdENoYXRDb25maWd1cmF0aW9uU2VydmljZSxcbiAgICAvLyBQcm92aWRlIHRoZSBpbml0aWFsIGNvbmZpZ3VyYXRpb25cbiAgICB7XG4gICAgICBwcm92aWRlOiBDT1BJTE9UX0NIQVRfSU5JVElBTF9DT05GSUcsXG4gICAgICB1c2VWYWx1ZTogY29uZmlnIHx8IHt9XG4gICAgfVxuICBdO1xufSJdfQ==
@@ -1,145 +0,0 @@
1
- import { Injectable, Inject, Optional, signal } from '@angular/core';
2
- import { COPILOT_CHAT_DEFAULT_LABELS, COPILOT_CHAT_INITIAL_CONFIG } from './chat-configuration.types';
3
- import * as i0 from "@angular/core";
4
- /**
5
- * Service for managing CopilotKit chat configuration.
6
- * Can be provided at different component levels for scoped configuration.
7
- *
8
- * @example
9
- * ```typescript
10
- * // Global configuration
11
- * providers: [provideCopilotChatConfiguration({ labels: { ... } })]
12
- *
13
- * // Component-scoped configuration
14
- * @Component({
15
- * providers: [provideCopilotChatConfiguration()],
16
- * ...
17
- * })
18
- * ```
19
- */
20
- export class CopilotChatConfigurationService {
21
- initialConfig;
22
- // State signals
23
- _labels;
24
- _inputValue;
25
- _onSubmitInput;
26
- _onChangeInput;
27
- // Public readonly signals
28
- labels;
29
- inputValue;
30
- constructor(initialConfig) {
31
- this.initialConfig = initialConfig;
32
- // Initialize state signals
33
- this._labels = signal(this.mergeLabels(this.initialConfig?.labels));
34
- this._inputValue = signal(this.initialConfig?.inputValue);
35
- this._onSubmitInput = signal(this.initialConfig?.onSubmitInput);
36
- this._onChangeInput = signal(this.initialConfig?.onChangeInput);
37
- // Initialize public readonly signals
38
- this.labels = this._labels.asReadonly();
39
- this.inputValue = this._inputValue.asReadonly();
40
- }
41
- /**
42
- * Update chat labels (partial update, merged with defaults)
43
- */
44
- setLabels(labels) {
45
- this._labels.set(this.mergeLabels(labels));
46
- }
47
- /**
48
- * Update the current input value
49
- */
50
- setInputValue(value) {
51
- this._inputValue.set(value);
52
- // Also trigger change handler if set
53
- if (value !== undefined) {
54
- this.changeInput(value);
55
- }
56
- }
57
- /**
58
- * Set the submit input handler
59
- */
60
- setSubmitHandler(handler) {
61
- this._onSubmitInput.set(handler);
62
- }
63
- /**
64
- * Set the change input handler
65
- */
66
- setChangeHandler(handler) {
67
- this._onChangeInput.set(handler);
68
- }
69
- /**
70
- * Submit the current input value
71
- */
72
- submitInput(value) {
73
- const handler = this._onSubmitInput();
74
- if (handler) {
75
- handler(value);
76
- }
77
- }
78
- /**
79
- * Handle input value change
80
- */
81
- changeInput(value) {
82
- const handler = this._onChangeInput();
83
- if (handler) {
84
- handler(value);
85
- }
86
- }
87
- /**
88
- * Update the entire configuration at once
89
- */
90
- updateConfiguration(config) {
91
- if (config.labels) {
92
- this.setLabels(config.labels);
93
- }
94
- if (config.inputValue !== undefined) {
95
- this._inputValue.set(config.inputValue);
96
- }
97
- if (config.onSubmitInput) {
98
- this.setSubmitHandler(config.onSubmitInput);
99
- }
100
- if (config.onChangeInput) {
101
- this.setChangeHandler(config.onChangeInput);
102
- }
103
- }
104
- /**
105
- * Reset configuration to defaults
106
- */
107
- reset() {
108
- this._labels.set(COPILOT_CHAT_DEFAULT_LABELS);
109
- this._inputValue.set(undefined);
110
- this._onSubmitInput.set(undefined);
111
- this._onChangeInput.set(undefined);
112
- }
113
- /**
114
- * Get the current submit handler
115
- */
116
- getSubmitHandler() {
117
- return this._onSubmitInput();
118
- }
119
- /**
120
- * Get the current change handler
121
- */
122
- getChangeHandler() {
123
- return this._onChangeInput();
124
- }
125
- /**
126
- * Merge partial labels with defaults
127
- */
128
- mergeLabels(partial) {
129
- return {
130
- ...COPILOT_CHAT_DEFAULT_LABELS,
131
- ...partial
132
- };
133
- }
134
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CopilotChatConfigurationService, deps: [{ token: COPILOT_CHAT_INITIAL_CONFIG, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
135
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CopilotChatConfigurationService });
136
- }
137
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CopilotChatConfigurationService, decorators: [{
138
- type: Injectable
139
- }], ctorParameters: () => [{ type: undefined, decorators: [{
140
- type: Optional
141
- }, {
142
- type: Inject,
143
- args: [COPILOT_CHAT_INITIAL_CONFIG]
144
- }] }] });
145
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdC1jb25maWd1cmF0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29yZS9jaGF0LWNvbmZpZ3VyYXRpb24vY2hhdC1jb25maWd1cmF0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRSxPQUFPLEVBR0wsMkJBQTJCLEVBQzNCLDJCQUEyQixFQUM1QixNQUFNLDRCQUE0QixDQUFDOztBQUVwQzs7Ozs7Ozs7Ozs7Ozs7O0dBZUc7QUFFSCxNQUFNLE9BQU8sK0JBQStCO0lBWTBCO0lBWHBFLGdCQUFnQjtJQUNDLE9BQU8sQ0FBK0M7SUFDdEQsV0FBVyxDQUFnRDtJQUMzRCxjQUFjLENBQW1FO0lBQ2pGLGNBQWMsQ0FBbUU7SUFFbEcsMEJBQTBCO0lBQ2pCLE1BQU0sQ0FBK0Y7SUFDckcsVUFBVSxDQUFnRztJQUVuSCxZQUNvRSxhQUE4QztRQUE5QyxrQkFBYSxHQUFiLGFBQWEsQ0FBaUM7UUFFaEgsMkJBQTJCO1FBQzNCLElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUNuQixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsTUFBTSxDQUFDLENBQzdDLENBQUM7UUFDRixJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sQ0FDdkIsSUFBSSxDQUFDLGFBQWEsRUFBRSxVQUFVLENBQy9CLENBQUM7UUFDRixJQUFJLENBQUMsY0FBYyxHQUFHLE1BQU0sQ0FDMUIsSUFBSSxDQUFDLGFBQWEsRUFBRSxhQUFhLENBQ2xDLENBQUM7UUFDRixJQUFJLENBQUMsY0FBYyxHQUFHLE1BQU0sQ0FDMUIsSUFBSSxDQUFDLGFBQWEsRUFBRSxhQUFhLENBQ2xDLENBQUM7UUFFRixxQ0FBcUM7UUFDckMsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ3hDLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUNsRCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxTQUFTLENBQUMsTUFBa0M7UUFDMUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFRDs7T0FFRztJQUNILGFBQWEsQ0FBQyxLQUF5QjtRQUNyQyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM1QixxQ0FBcUM7UUFDckMsSUFBSSxLQUFLLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDeEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMxQixDQUFDO0lBQ0gsQ0FBQztJQUVEOztPQUVHO0lBQ0gsZ0JBQWdCLENBQUMsT0FBOEM7UUFDN0QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsZ0JBQWdCLENBQUMsT0FBOEM7UUFDN0QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsV0FBVyxDQUFDLEtBQWE7UUFDdkIsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3RDLElBQUksT0FBTyxFQUFFLENBQUM7WUFDWixPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDakIsQ0FBQztJQUNILENBQUM7SUFFRDs7T0FFRztJQUNILFdBQVcsQ0FBQyxLQUFhO1FBQ3ZCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN0QyxJQUFJLE9BQU8sRUFBRSxDQUFDO1lBQ1osT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pCLENBQUM7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxtQkFBbUIsQ0FBQyxNQUFnQztRQUNsRCxJQUFJLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNsQixJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNoQyxDQUFDO1FBQ0QsSUFBSSxNQUFNLENBQUMsVUFBVSxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ3BDLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUMxQyxDQUFDO1FBQ0QsSUFBSSxNQUFNLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDekIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUM5QyxDQUFDO1FBQ0QsSUFBSSxNQUFNLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDekIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUM5QyxDQUFDO0lBQ0gsQ0FBQztJQUVEOztPQUVHO0lBQ0gsS0FBSztRQUNILElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLDJCQUEyQixDQUFDLENBQUM7UUFDOUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDaEMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDbkMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsZ0JBQWdCO1FBQ2QsT0FBTyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDL0IsQ0FBQztJQUVEOztPQUVHO0lBQ0gsZ0JBQWdCO1FBQ2QsT0FBTyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDL0IsQ0FBQztJQUVEOztPQUVHO0lBQ0ssV0FBVyxDQUFDLE9BQW9DO1FBQ3RELE9BQU87WUFDTCxHQUFHLDJCQUEyQjtZQUM5QixHQUFHLE9BQU87U0FDWCxDQUFDO0lBQ0osQ0FBQzt3R0F2SVUsK0JBQStCLGtCQVlwQiwyQkFBMkI7NEdBWnRDLCtCQUErQjs7NEZBQS9CLCtCQUErQjtrQkFEM0MsVUFBVTs7MEJBYU4sUUFBUTs7MEJBQUksTUFBTTsyQkFBQywyQkFBMkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3QsIE9wdGlvbmFsLCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFxuICBDb3BpbG90Q2hhdENvbmZpZ3VyYXRpb24sIFxuICBDb3BpbG90Q2hhdExhYmVscyxcbiAgQ09QSUxPVF9DSEFUX0RFRkFVTFRfTEFCRUxTLFxuICBDT1BJTE9UX0NIQVRfSU5JVElBTF9DT05GSUdcbn0gZnJvbSAnLi9jaGF0LWNvbmZpZ3VyYXRpb24udHlwZXMnO1xuXG4vKipcbiAqIFNlcnZpY2UgZm9yIG1hbmFnaW5nIENvcGlsb3RLaXQgY2hhdCBjb25maWd1cmF0aW9uLlxuICogQ2FuIGJlIHByb3ZpZGVkIGF0IGRpZmZlcmVudCBjb21wb25lbnQgbGV2ZWxzIGZvciBzY29wZWQgY29uZmlndXJhdGlvbi5cbiAqIFxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIC8vIEdsb2JhbCBjb25maWd1cmF0aW9uXG4gKiBwcm92aWRlcnM6IFtwcm92aWRlQ29waWxvdENoYXRDb25maWd1cmF0aW9uKHsgbGFiZWxzOiB7IC4uLiB9IH0pXVxuICogXG4gKiAvLyBDb21wb25lbnQtc2NvcGVkIGNvbmZpZ3VyYXRpb25cbiAqIEBDb21wb25lbnQoe1xuICogICBwcm92aWRlcnM6IFtwcm92aWRlQ29waWxvdENoYXRDb25maWd1cmF0aW9uKCldLFxuICogICAuLi5cbiAqIH0pXG4gKiBgYGBcbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIENvcGlsb3RDaGF0Q29uZmlndXJhdGlvblNlcnZpY2Uge1xuICAvLyBTdGF0ZSBzaWduYWxzXG4gIHByaXZhdGUgcmVhZG9ubHkgX2xhYmVsczogUmV0dXJuVHlwZTx0eXBlb2Ygc2lnbmFsPENvcGlsb3RDaGF0TGFiZWxzPj47XG4gIHByaXZhdGUgcmVhZG9ubHkgX2lucHV0VmFsdWU6IFJldHVyblR5cGU8dHlwZW9mIHNpZ25hbDxzdHJpbmcgfCB1bmRlZmluZWQ+PjtcbiAgcHJpdmF0ZSByZWFkb25seSBfb25TdWJtaXRJbnB1dDogUmV0dXJuVHlwZTx0eXBlb2Ygc2lnbmFsPCgodmFsdWU6IHN0cmluZykgPT4gdm9pZCkgfCB1bmRlZmluZWQ+PjtcbiAgcHJpdmF0ZSByZWFkb25seSBfb25DaGFuZ2VJbnB1dDogUmV0dXJuVHlwZTx0eXBlb2Ygc2lnbmFsPCgodmFsdWU6IHN0cmluZykgPT4gdm9pZCkgfCB1bmRlZmluZWQ+PjtcbiAgXG4gIC8vIFB1YmxpYyByZWFkb25seSBzaWduYWxzXG4gIHJlYWRvbmx5IGxhYmVsczogUmV0dXJuVHlwZTx0eXBlb2Ygc2lnbmFsPENvcGlsb3RDaGF0TGFiZWxzPj5bJ2FzUmVhZG9ubHknXSBleHRlbmRzICgpID0+IGluZmVyIFIgPyBSIDogbmV2ZXI7XG4gIHJlYWRvbmx5IGlucHV0VmFsdWU6IFJldHVyblR5cGU8dHlwZW9mIHNpZ25hbDxzdHJpbmcgfCB1bmRlZmluZWQ+PlsnYXNSZWFkb25seSddIGV4dGVuZHMgKCkgPT4gaW5mZXIgUiA/IFIgOiBuZXZlcjtcbiAgXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoQ09QSUxPVF9DSEFUX0lOSVRJQUxfQ09ORklHKSBwcml2YXRlIHJlYWRvbmx5IGluaXRpYWxDb25maWc6IENvcGlsb3RDaGF0Q29uZmlndXJhdGlvbiB8IG51bGxcbiAgKSB7XG4gICAgLy8gSW5pdGlhbGl6ZSBzdGF0ZSBzaWduYWxzXG4gICAgdGhpcy5fbGFiZWxzID0gc2lnbmFsPENvcGlsb3RDaGF0TGFiZWxzPihcbiAgICAgIHRoaXMubWVyZ2VMYWJlbHModGhpcy5pbml0aWFsQ29uZmlnPy5sYWJlbHMpXG4gICAgKTtcbiAgICB0aGlzLl9pbnB1dFZhbHVlID0gc2lnbmFsPHN0cmluZyB8IHVuZGVmaW5lZD4oXG4gICAgICB0aGlzLmluaXRpYWxDb25maWc/LmlucHV0VmFsdWVcbiAgICApO1xuICAgIHRoaXMuX29uU3VibWl0SW5wdXQgPSBzaWduYWw8KCh2YWx1ZTogc3RyaW5nKSA9PiB2b2lkKSB8IHVuZGVmaW5lZD4oXG4gICAgICB0aGlzLmluaXRpYWxDb25maWc/Lm9uU3VibWl0SW5wdXRcbiAgICApO1xuICAgIHRoaXMuX29uQ2hhbmdlSW5wdXQgPSBzaWduYWw8KCh2YWx1ZTogc3RyaW5nKSA9PiB2b2lkKSB8IHVuZGVmaW5lZD4oXG4gICAgICB0aGlzLmluaXRpYWxDb25maWc/Lm9uQ2hhbmdlSW5wdXRcbiAgICApO1xuICAgIFxuICAgIC8vIEluaXRpYWxpemUgcHVibGljIHJlYWRvbmx5IHNpZ25hbHNcbiAgICB0aGlzLmxhYmVscyA9IHRoaXMuX2xhYmVscy5hc1JlYWRvbmx5KCk7XG4gICAgdGhpcy5pbnB1dFZhbHVlID0gdGhpcy5faW5wdXRWYWx1ZS5hc1JlYWRvbmx5KCk7XG4gIH1cbiAgXG4gIC8qKlxuICAgKiBVcGRhdGUgY2hhdCBsYWJlbHMgKHBhcnRpYWwgdXBkYXRlLCBtZXJnZWQgd2l0aCBkZWZhdWx0cylcbiAgICovXG4gIHNldExhYmVscyhsYWJlbHM6IFBhcnRpYWw8Q29waWxvdENoYXRMYWJlbHM+KTogdm9pZCB7XG4gICAgdGhpcy5fbGFiZWxzLnNldCh0aGlzLm1lcmdlTGFiZWxzKGxhYmVscykpO1xuICB9XG4gIFxuICAvKipcbiAgICogVXBkYXRlIHRoZSBjdXJyZW50IGlucHV0IHZhbHVlXG4gICAqL1xuICBzZXRJbnB1dFZhbHVlKHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQpOiB2b2lkIHtcbiAgICB0aGlzLl9pbnB1dFZhbHVlLnNldCh2YWx1ZSk7XG4gICAgLy8gQWxzbyB0cmlnZ2VyIGNoYW5nZSBoYW5kbGVyIGlmIHNldFxuICAgIGlmICh2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLmNoYW5nZUlucHV0KHZhbHVlKTtcbiAgICB9XG4gIH1cbiAgXG4gIC8qKlxuICAgKiBTZXQgdGhlIHN1Ym1pdCBpbnB1dCBoYW5kbGVyXG4gICAqL1xuICBzZXRTdWJtaXRIYW5kbGVyKGhhbmRsZXI6ICgodmFsdWU6IHN0cmluZykgPT4gdm9pZCkgfCB1bmRlZmluZWQpOiB2b2lkIHtcbiAgICB0aGlzLl9vblN1Ym1pdElucHV0LnNldChoYW5kbGVyKTtcbiAgfVxuICBcbiAgLyoqXG4gICAqIFNldCB0aGUgY2hhbmdlIGlucHV0IGhhbmRsZXJcbiAgICovXG4gIHNldENoYW5nZUhhbmRsZXIoaGFuZGxlcjogKCh2YWx1ZTogc3RyaW5nKSA9PiB2b2lkKSB8IHVuZGVmaW5lZCk6IHZvaWQge1xuICAgIHRoaXMuX29uQ2hhbmdlSW5wdXQuc2V0KGhhbmRsZXIpO1xuICB9XG4gIFxuICAvKipcbiAgICogU3VibWl0IHRoZSBjdXJyZW50IGlucHV0IHZhbHVlXG4gICAqL1xuICBzdWJtaXRJbnB1dCh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3QgaGFuZGxlciA9IHRoaXMuX29uU3VibWl0SW5wdXQoKTtcbiAgICBpZiAoaGFuZGxlcikge1xuICAgICAgaGFuZGxlcih2YWx1ZSk7XG4gICAgfVxuICB9XG4gIFxuICAvKipcbiAgICogSGFuZGxlIGlucHV0IHZhbHVlIGNoYW5nZVxuICAgKi9cbiAgY2hhbmdlSW5wdXQodmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IGhhbmRsZXIgPSB0aGlzLl9vbkNoYW5nZUlucHV0KCk7XG4gICAgaWYgKGhhbmRsZXIpIHtcbiAgICAgIGhhbmRsZXIodmFsdWUpO1xuICAgIH1cbiAgfVxuICBcbiAgLyoqXG4gICAqIFVwZGF0ZSB0aGUgZW50aXJlIGNvbmZpZ3VyYXRpb24gYXQgb25jZVxuICAgKi9cbiAgdXBkYXRlQ29uZmlndXJhdGlvbihjb25maWc6IENvcGlsb3RDaGF0Q29uZmlndXJhdGlvbik6IHZvaWQge1xuICAgIGlmIChjb25maWcubGFiZWxzKSB7XG4gICAgICB0aGlzLnNldExhYmVscyhjb25maWcubGFiZWxzKTtcbiAgICB9XG4gICAgaWYgKGNvbmZpZy5pbnB1dFZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuX2lucHV0VmFsdWUuc2V0KGNvbmZpZy5pbnB1dFZhbHVlKTtcbiAgICB9XG4gICAgaWYgKGNvbmZpZy5vblN1Ym1pdElucHV0KSB7XG4gICAgICB0aGlzLnNldFN1Ym1pdEhhbmRsZXIoY29uZmlnLm9uU3VibWl0SW5wdXQpO1xuICAgIH1cbiAgICBpZiAoY29uZmlnLm9uQ2hhbmdlSW5wdXQpIHtcbiAgICAgIHRoaXMuc2V0Q2hhbmdlSGFuZGxlcihjb25maWcub25DaGFuZ2VJbnB1dCk7XG4gICAgfVxuICB9XG4gIFxuICAvKipcbiAgICogUmVzZXQgY29uZmlndXJhdGlvbiB0byBkZWZhdWx0c1xuICAgKi9cbiAgcmVzZXQoKTogdm9pZCB7XG4gICAgdGhpcy5fbGFiZWxzLnNldChDT1BJTE9UX0NIQVRfREVGQVVMVF9MQUJFTFMpO1xuICAgIHRoaXMuX2lucHV0VmFsdWUuc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5fb25TdWJtaXRJbnB1dC5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLl9vbkNoYW5nZUlucHV0LnNldCh1bmRlZmluZWQpO1xuICB9XG4gIFxuICAvKipcbiAgICogR2V0IHRoZSBjdXJyZW50IHN1Ym1pdCBoYW5kbGVyXG4gICAqL1xuICBnZXRTdWJtaXRIYW5kbGVyKCk6ICgodmFsdWU6IHN0cmluZykgPT4gdm9pZCkgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl9vblN1Ym1pdElucHV0KCk7XG4gIH1cbiAgXG4gIC8qKlxuICAgKiBHZXQgdGhlIGN1cnJlbnQgY2hhbmdlIGhhbmRsZXJcbiAgICovXG4gIGdldENoYW5nZUhhbmRsZXIoKTogKCh2YWx1ZTogc3RyaW5nKSA9PiB2b2lkKSB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX29uQ2hhbmdlSW5wdXQoKTtcbiAgfVxuICBcbiAgLyoqXG4gICAqIE1lcmdlIHBhcnRpYWwgbGFiZWxzIHdpdGggZGVmYXVsdHNcbiAgICovXG4gIHByaXZhdGUgbWVyZ2VMYWJlbHMocGFydGlhbD86IFBhcnRpYWw8Q29waWxvdENoYXRMYWJlbHM+KTogQ29waWxvdENoYXRMYWJlbHMge1xuICAgIHJldHVybiB7XG4gICAgICAuLi5DT1BJTE9UX0NIQVRfREVGQVVMVF9MQUJFTFMsXG4gICAgICAuLi5wYXJ0aWFsXG4gICAgfTtcbiAgfVxufVxuIl19