@copilotkitnext/angular 0.0.9-alpha.2 → 0.0.10

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 +3 -3
  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,212 +0,0 @@
1
- import { DestroyRef, inject, signal, computed, runInInjectionContext, } from "@angular/core";
2
- import { toObservable } from "@angular/core/rxjs-interop";
3
- import { CopilotKitService } from "../core/copilotkit.service";
4
- import { DEFAULT_AGENT_ID } from "@copilotkitnext/shared";
5
- import { CopilotKitCoreRuntimeConnectionStatus } from "@copilotkitnext/core";
6
- /**
7
- * Watches an agent and provides reactive signals for its state.
8
- * Must be called within an injection context.
9
- * Automatically cleans up when the component/service is destroyed.
10
- *
11
- * @param config - Optional configuration with agentId
12
- * @returns Object with agent, messages, and isRunning signals plus observables
13
- *
14
- * @example
15
- * ```typescript
16
- * export class MyComponent {
17
- * // Automatically tracks agent state
18
- * agentState = watchAgent({ agentId: 'my-agent' });
19
- *
20
- * constructor() {
21
- * effect(() => {
22
- * const messages = this.agentState.messages();
23
- * const isRunning = this.agentState.isRunning();
24
- * console.log('Messages:', messages.length, 'Running:', isRunning);
25
- * });
26
- * }
27
- * }
28
- * ```
29
- */
30
- export function watchAgent(config) {
31
- // Use inject() internally to get required services
32
- const service = inject(CopilotKitService);
33
- const destroyRef = inject(DestroyRef);
34
- const effectiveAgentId = config?.agentId ?? DEFAULT_AGENT_ID;
35
- // Create reactive signals with tick mechanism for reliable updates
36
- const agentSignal = signal(undefined);
37
- const tick = signal(0);
38
- const isRunningSignal = signal(false);
39
- // Create computed messages signal that reacts to tick changes
40
- const messages = computed(() => {
41
- // Access tick to ensure recomputation
42
- tick();
43
- const a = agentSignal();
44
- if (!a)
45
- return [];
46
- // Return a shallow clone to ensure change detection
47
- return a.messages.map((m) => ({ ...m }));
48
- });
49
- // Get initial agent
50
- const updateAgent = () => {
51
- const agent = service.copilotkit.getAgent(effectiveAgentId);
52
- agentSignal.set(agent);
53
- return agent;
54
- };
55
- // Initial update
56
- let currentAgent = updateAgent();
57
- // Subscribe to agent changes
58
- let agentSubscription;
59
- const subscribeToAgent = () => {
60
- // Unsubscribe from previous agent if any
61
- agentSubscription?.unsubscribe();
62
- if (currentAgent) {
63
- agentSubscription = currentAgent.subscribe({
64
- onMessagesChanged() {
65
- // Increment tick to force recomputation of messages computed
66
- tick.update((v) => v + 1);
67
- },
68
- onStateChanged() {
69
- // Increment tick to force recomputation
70
- tick.update((v) => v + 1);
71
- },
72
- onRunInitialized() {
73
- isRunningSignal.set(true);
74
- },
75
- onRunFinalized() {
76
- isRunningSignal.set(false);
77
- },
78
- onRunFailed() {
79
- isRunningSignal.set(false);
80
- },
81
- });
82
- }
83
- };
84
- // Initial subscription
85
- subscribeToAgent();
86
- // Subscribe to CopilotKit changes to detect agent updates
87
- const coreUnsubscribe = service.copilotkit.subscribe({
88
- onRuntimeConnectionStatusChanged({ status }) {
89
- if (status === CopilotKitCoreRuntimeConnectionStatus.Connected ||
90
- status === CopilotKitCoreRuntimeConnectionStatus.Disconnected ||
91
- status === CopilotKitCoreRuntimeConnectionStatus.Error) {
92
- // Re-check agent when runtime connection state changes
93
- currentAgent = updateAgent();
94
- subscribeToAgent();
95
- }
96
- },
97
- });
98
- // Register cleanup
99
- const unsubscribe = () => {
100
- agentSubscription?.unsubscribe();
101
- coreUnsubscribe(); // subscribe returns a function directly
102
- };
103
- destroyRef.onDestroy(unsubscribe);
104
- // Create observables from signals using toObservable
105
- const agent$ = toObservable(agentSignal);
106
- const isRunning$ = toObservable(isRunningSignal);
107
- const messages$ = toObservable(messages);
108
- return {
109
- agent: agentSignal.asReadonly(),
110
- messages: messages,
111
- isRunning: isRunningSignal.asReadonly(),
112
- agent$,
113
- messages$,
114
- isRunning$,
115
- unsubscribe,
116
- };
117
- }
118
- /**
119
- * Gets an agent by ID without subscribing to changes.
120
- *
121
- * @param service - The CopilotKitService instance
122
- * @param agentId - Optional agent ID (defaults to DEFAULT_AGENT_ID)
123
- * @returns The agent or undefined if not found
124
- *
125
- * @example
126
- * ```typescript
127
- * export class MyComponent {
128
- * constructor(private copilotkit: CopilotKitService) {}
129
- *
130
- * getCurrentAgent() {
131
- * return getAgent(this.copilotkit, 'my-agent');
132
- * }
133
- * }
134
- * ```
135
- */
136
- export function getAgent(service, agentId) {
137
- const effectiveAgentId = agentId ?? DEFAULT_AGENT_ID;
138
- return service.copilotkit.getAgent(effectiveAgentId);
139
- }
140
- /**
141
- * Convenience wrapper for watchAgent that handles injection context.
142
- * Useful when you need to call watchAgent outside of a constructor or field initializer.
143
- *
144
- * @param injector - The Angular Injector to use for injection context
145
- * @param config - Optional configuration with agentId
146
- * @returns Object with agent, messages, and isRunning signals plus observables
147
- *
148
- * @example
149
- * ```typescript
150
- * export class MyComponent {
151
- * constructor(private injector: Injector) {}
152
- *
153
- * switchAgent(newAgentId: string) {
154
- * // Can call outside of constructor using watchAgentWith
155
- * const watcher = watchAgentWith(this.injector, { agentId: newAgentId });
156
- * this.agent = watcher.agent;
157
- * this.messages = watcher.messages;
158
- * this.isRunning = watcher.isRunning;
159
- * }
160
- * }
161
- * ```
162
- */
163
- export function watchAgentWith(injector, config) {
164
- return runInInjectionContext(injector, () => watchAgent(config));
165
- }
166
- /**
167
- * Subscribes to an agent's events with custom callbacks.
168
- * Returns a cleanup function that should be called to unsubscribe.
169
- *
170
- * @param service - The CopilotKitService instance
171
- * @param agentId - Optional agent ID (defaults to DEFAULT_AGENT_ID)
172
- * @param callbacks - Event callbacks
173
- * @returns Cleanup function to unsubscribe
174
- *
175
- * @example
176
- * ```typescript
177
- * export class MyComponent implements OnInit, OnDestroy {
178
- * private unsubscribe?: () => void;
179
- *
180
- * constructor(private copilotkit: CopilotKitService) {}
181
- *
182
- * ngOnInit() {
183
- * this.unsubscribe = subscribeToAgent(this.copilotkit, 'my-agent', {
184
- * onRunInitialized: () => console.log('Run started'),
185
- * onRunFinalized: () => console.log('Run completed'),
186
- * onRunFailed: (error) => console.error('Run failed', error),
187
- * });
188
- * }
189
- *
190
- * ngOnDestroy() {
191
- * this.unsubscribe?.();
192
- * }
193
- * }
194
- * ```
195
- */
196
- export function subscribeToAgent(service, agentId, callbacks) {
197
- const effectiveAgentId = agentId ?? DEFAULT_AGENT_ID;
198
- const agent = service.copilotkit.getAgent(effectiveAgentId);
199
- if (!agent) {
200
- // Return no-op cleanup if agent doesn't exist
201
- return () => { };
202
- }
203
- const subscription = agent.subscribe({
204
- onMessagesChanged: callbacks?.onMessagesChanged,
205
- onStateChanged: callbacks?.onStateChanged,
206
- onRunInitialized: callbacks?.onRunInitialized,
207
- onRunFinalized: callbacks?.onRunFinalized,
208
- onRunFailed: callbacks?.onRunFailed,
209
- });
210
- return () => subscription.unsubscribe();
211
- }
212
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdlbnQudXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdXRpbHMvYWdlbnQudXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFVBQVUsRUFDVixNQUFNLEVBQ04sTUFBTSxFQUNOLFFBQVEsRUFFUixxQkFBcUIsR0FDdEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzFELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBTS9ELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzFELE9BQU8sRUFBRSxxQ0FBcUMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRTdFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXVCRztBQUNILE1BQU0sVUFBVSxVQUFVLENBQUMsTUFBNkI7SUFDdEQsbURBQW1EO0lBQ25ELE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQzFDLE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUN0QyxNQUFNLGdCQUFnQixHQUFHLE1BQU0sRUFBRSxPQUFPLElBQUksZ0JBQWdCLENBQUM7SUFFN0QsbUVBQW1FO0lBQ25FLE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBNEIsU0FBUyxDQUFDLENBQUM7SUFDakUsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFTLENBQUMsQ0FBQyxDQUFDO0lBQy9CLE1BQU0sZUFBZSxHQUFHLE1BQU0sQ0FBVSxLQUFLLENBQUMsQ0FBQztJQUUvQyw4REFBOEQ7SUFDOUQsTUFBTSxRQUFRLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtRQUM3QixzQ0FBc0M7UUFDdEMsSUFBSSxFQUFFLENBQUM7UUFDUCxNQUFNLENBQUMsR0FBRyxXQUFXLEVBQUUsQ0FBQztRQUN4QixJQUFJLENB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YztRQUN6QyxXQUFXLEVBQUUsU0FBUyxFQUFFLFdBQVc7S0FDcEMsQ0FBQyxDQUFDO0lBRUgsT0FBTyxHQUFHLEVBQUUsQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLENBQUM7QUFDMUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIERlc3Ryb3lSZWYsXG4gIGluamVjdCxcbiAgc2lnbmFsLFxuICBjb21wdXRlZCxcbiAgSW5qZWN0b3IsXG4gIHJ1bkluSW5qZWN0aW9uQ29udGV4dCxcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IHRvT2JzZXJ2YWJsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcFwiO1xuaW1wb3J0IHsgQ29waWxvdEtpdFNlcnZpY2UgfSBmcm9tIFwiLi4vY29yZS9jb3BpbG90a2l0LnNlcnZpY2VcIjtcbmltcG9ydCB7XG4gIEFnZW50U3Vic2NyaXB0aW9uQ2FsbGJhY2tzLFxuICBBZ2VudFdhdGNoUmVzdWx0LFxufSBmcm9tIFwiLi4vY29yZS9jb3BpbG90a2l0LnR5cGVzXCI7XG5pbXBvcnQgeyBBYnN0cmFjdEFnZW50IH0gZnJvbSBcIkBhZy11aS9jbGllbnRcIjtcbmltcG9ydCB7IERFRkFVTFRfQUdFTlRfSUQgfSBmcm9tIFwiQGNvcGlsb3RraXRuZXh0L3NoYXJlZFwiO1xuaW1wb3J0IHsgQ29waWxvdEtpdENvcmVSdW50aW1lQ29ubmVjdGlvblN0YXR1cyB9IGZyb20gXCJAY29waWxvdGtpdG5leHQvY29yZVwiO1xuXG4vKipcbiAqIFdhdGNoZXMgYW4gYWdlbnQgYW5kIHByb3ZpZGVzIHJlYWN0aXZlIHNpZ25hbHMgZm9yIGl0cyBzdGF0ZS5cbiAqIE11c3QgYmUgY2FsbGVkIHdpdGhpbiBhbiBpbmplY3Rpb24gY29udGV4dC5cbiAqIEF1dG9tYXRpY2FsbHkgY2xlYW5zIHVwIHdoZW4gdGhlIGNvbXBvbmVudC9zZXJ2aWNlIGlzIGRlc3Ryb3llZC5cbiAqXG4gKiBAcGFyYW0gY29uZmlnIC0gT3B0aW9uYWwgY29uZmlndXJhdGlvbiB3aXRoIGFnZW50SWRcbiAqIEByZXR1cm5zIE9iamVjdCB3aXRoIGFnZW50LCBtZXNzYWdlcywgYW5kIGlzUnVubmluZyBzaWduYWxzIHBsdXMgb2JzZXJ2YWJsZXNcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogZXhwb3J0IGNsYXNzIE15Q29tcG9uZW50IHtcbiAqICAgLy8gQXV0b21hdGljYWxseSB0cmFja3MgYWdlbnQgc3RhdGVcbiAqICAgYWdlbnRTdGF0ZSA9IHdhdGNoQWdlbnQoeyBhZ2VudElkOiAnbXktYWdlbnQnIH0pO1xuICpcbiAqICAgY29uc3RydWN0b3IoKSB7XG4gKiAgICAgZWZmZWN0KCgpID0+IHtcbiAqICAgICAgIGNvbnN0IG1lc3NhZ2VzID0gdGhpcy5hZ2VudFN0YXRlLm1lc3NhZ2VzKCk7XG4gKiAgICAgICBjb25zdCBpc1J1bm5pbmcgPSB0aGlzLmFnZW50U3RhdGUuaXNSdW5uaW5nKCk7XG4gKiAgICAgICBjb25zb2xlLmxvZygnTWVzc2FnZXM6JywgbWVzc2FnZXMubGVuZ3RoLCAnUnVubmluZzonLCBpc1J1bm5pbmcpO1xuICogICAgIH0pO1xuICogICB9XG4gKiB9XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHdhdGNoQWdlbnQoY29uZmlnPzogeyBhZ2VudElkPzogc3RyaW5nIH0pOiBBZ2VudFdhdGNoUmVzdWx0IHtcbiAgLy8gVXNlIGluamVjdCgpIGludGVybmFsbHkgdG8gZ2V0IHJlcXVpcmVkIHNlcnZpY2VzXG4gIGNvbnN0IHNlcnZpY2UgPSBpbmplY3QoQ29waWxvdEtpdFNlcnZpY2UpO1xuICBjb25zdCBkZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuICBjb25zdCBlZmZlY3RpdmVBZ2VudElkID0gY29uZmlnPy5hZ2VudElkID8/IERFRkFVTFRfQUdFTlRfSUQ7XG5cbiAgLy8gQ3JlYXRlIHJlYWN0aXZlIHNpZ25hbHMgd2l0aCB0aWNrIG1lY2hhbmlzbSBmb3IgcmVsaWFibGUgdXBkYXRlc1xuICBjb25zdCBhZ2VudFNpZ25hbCA9IHNpZ25hbDxBYnN0cmFjdEFnZW50IHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICBjb25zdCB0aWNrID0gc2lnbmFsPG51bWJlcj4oMCk7XG4gIGNvbnN0IGlzUnVubmluZ1NpZ25hbCA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XG5cbiAgLy8gQ3JlYXRlIGNvbXB1dGVkIG1lc3NhZ2VzIHNpZ25hbCB0aGF0IHJlYWN0cyB0byB0aWNrIGNoYW5nZXNcbiAgY29uc3QgbWVzc2FnZXMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgLy8gQWNjZXNzIHRpY2sgdG8gZW5zdXJlIHJlY29tcHV0YXRpb25cbiAgICB0aWNrKCk7XG4gICAgY29uc3QgYSA9IGFnZW50U2lnbmFsKCk7XG4gICAgaWYgKCFhKSByZXR1cm4gW107XG4gICAgLy8gUmV0dXJuIGEgc2hhbGxvdyBjbG9uZSB0byBlbnN1cmUgY2hhbmdlIGRldGVjdGlvblxuICAgIHJldHVybiBhLm1lc3NhZ2VzLm1hcCgobSkgPT4gKHsgLi4ubSB9KSk7XG4gIH0pO1xuXG4gIC8vIEdldCBpbml0aWFsIGFnZW50XG4gIGNvbnN0IHVwZGF0ZUFnZW50ID0gKCkgPT4ge1xuICAgIGNvbnN0IGFnZW50ID0gc2VydmljZS5jb3BpbG90a2l0LmdldEFnZW50KGVmZmVjdGl2ZUFnZW50SWQpO1xuICAgIGFnZW50U2lnbmFsLnNldChhZ2VudCk7XG4gICAgcmV0dXJuIGFnZW50O1xuICB9O1xuXG4gIC8vIEluaXRpYWwgdXBkYXRlXG4gIGxldCBjdXJyZW50QWdlbnQgPSB1cGRhdGVBZ2VudCgpO1xuXG4gIC8vIFN1YnNjcmliZSB0byBhZ2VudCBjaGFuZ2VzXG4gIGxldCBhZ2VudFN1YnNjcmlwdGlvbjogeyB1bnN1YnNjcmliZTogKCkgPT4gdm9pZCB9IHwgdW5kZWZpbmVkO1xuXG4gIGNvbnN0IHN1YnNjcmliZVRvQWdlbnQgPSAoKSA9PiB7XG4gICAgLy8gVW5zdWJzY3JpYmUgZnJvbSBwcmV2aW91cyBhZ2VudCBpZiBhbnlcbiAgICBhZ2VudFN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcblxuICAgIGlmIChjdXJyZW50QWdlbnQpIHtcbiAgICAgIGFnZW50U3Vic2NyaXB0aW9uID0gY3VycmVudEFnZW50LnN1YnNjcmliZSh7XG4gICAgICAgIG9uTWVzc2FnZXNDaGFuZ2VkKCkge1xuICAgICAgICAgIC8vIEluY3JlbWVudCB0aWNrIHRvIGZvcmNlIHJlY29tcHV0YXRpb24gb2YgbWVzc2FnZXMgY29tcHV0ZWRcbiAgICAgICAgICB0aWNrLnVwZGF0ZSgodikgPT4gdiArIDEpO1xuICAgICAgICB9LFxuICAgICAgICBvblN0YXRlQ2hhbmdlZCgpIHtcbiAgICAgICAgICAvLyBJbmNyZW1lbnQgdGljayB0byBmb3JjZSByZWNvbXB1dGF0aW9uXG4gICAgICAgICAgdGljay51cGRhdGUoKHYpID0+IHYgKyAxKTtcbiAgICAgICAgfSxcbiAgICAgICAgb25SdW5Jbml0aWFsaXplZCgpIHtcbiAgICAgICAgICBpc1J1bm5pbmdTaWduYWwuc2V0KHRydWUpO1xuICAgICAgICB9LFxuICAgICAgICBvblJ1bkZpbmFsaXplZCgpIHtcbiAgICAgICAgICBpc1J1bm5pbmdTaWduYWwuc2V0KGZhbHNlKTtcbiAgICAgICAgfSxcbiAgICAgICAgb25SdW5GYWlsZWQoKSB7XG4gICAgICAgICAgaXNSdW5uaW5nU2lnbmFsLnNldChmYWxzZSk7XG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9XG4gIH07XG5cbiAgLy8gSW5pdGlhbCBzdWJzY3JpcHRpb25cbiAgc3Vic2NyaWJlVG9BZ2VudCgpO1xuXG4gIC8vIFN1YnNjcmliZSB0byBDb3BpbG90S2l0IGNoYW5nZXMgdG8gZGV0ZWN0IGFnZW50IHVwZGF0ZXNcbiAgY29uc3QgY29yZVVuc3Vic2NyaWJlID0gc2VydmljZS5jb3BpbG90a2l0LnN1YnNjcmliZSh7XG4gICAgb25SdW50aW1lQ29ubmVjdGlvblN0YXR1c0NoYW5nZWQoeyBzdGF0dXMgfSkge1xuICAgICAgaWYgKFxuICAgICAgICBzdGF0dXMgPT09IENvcGlsb3RLaXRDb3JlUnVudGltZUNvbm5lY3Rpb25TdGF0dXMuQ29ubmVjdGVkIHx8XG4gICAgICAgIHN0YXR1cyA9PT0gQ29waWxvdEtpdENvcmVSdW50aW1lQ29ubmVjdGlvblN0YXR1cy5EaXNjb25uZWN0ZWQgfHxcbiAgICAgICAgc3RhdHVzID09PSBDb3BpbG90S2l0Q29yZVJ1bnRpbWVDb25uZWN0aW9uU3RhdHVzLkVycm9yXG4gICAgICApIHtcbiAgICAgICAgLy8gUmUtY2hlY2sgYWdlbnQgd2hlbiBydW50aW1lIGNvbm5lY3Rpb24gc3RhdGUgY2hhbmdlc1xuICAgICAgICBjdXJyZW50QWdlbnQgPSB1cGRhdGVBZ2VudCgpO1xuICAgICAgICBzdWJzY3JpYmVUb0FnZW50KCk7XG4gICAgICB9XG4gICAgfSxcbiAgfSk7XG5cbiAgLy8gUmVnaXN0ZXIgY2xlYW51cFxuICBjb25zdCB1bnN1YnNjcmliZSA9ICgpID0+IHtcbiAgICBhZ2VudFN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICBjb3JlVW5zdWJzY3JpYmUoKTsgLy8gc3Vic2NyaWJlIHJldHVybnMgYSBmdW5jdGlvbiBkaXJlY3RseVxuICB9O1xuXG4gIGRlc3Ryb3lSZWYub25EZXN0cm95KHVuc3Vic2NyaWJlKTtcblxuICAvLyBDcmVhdGUgb2JzZXJ2YWJsZXMgZnJvbSBzaWduYWxzIHVzaW5nIHRvT2JzZXJ2YWJsZVxuICBjb25zdCBhZ2VudCQgPSB0b09ic2VydmFibGUoYWdlbnRTaWduYWwpO1xuICBjb25zdCBpc1J1bm5pbmckID0gdG9PYnNlcnZhYmxlKGlzUnVubmluZ1NpZ25hbCk7XG4gIGNvbnN0IG1lc3NhZ2VzJCA9IHRvT2JzZXJ2YWJsZShtZXNzYWdlcyk7XG5cbiAgcmV0dXJuIHtcbiAgICBhZ2VudDogYWdlbnRTaWduYWwuYXNSZWFkb25seSgpLFxuICAgIG1lc3NhZ2VzOiBtZXNzYWdlcyxcbiAgICBpc1J1bm5pbmc6IGlzUnVubmluZ1NpZ25hbC5hc1JlYWRvbmx5KCksXG4gICAgYWdlbnQkLFxuICAgIG1lc3NhZ2VzJCxcbiAgICBpc1J1bm5pbmckLFxuICAgIHVuc3Vic2NyaWJlLFxuICB9O1xufVxuXG4vKipcbiAqIEdldHMgYW4gYWdlbnQgYnkgSUQgd2l0aG91dCBzdWJzY3JpYmluZyB0byBjaGFuZ2VzLlxuICpcbiAqIEBwYXJhbSBzZXJ2aWNlIC0gVGhlIENvcGlsb3RLaXRTZXJ2aWNlIGluc3RhbmNlXG4gKiBAcGFyYW0gYWdlbnRJZCAtIE9wdGlvbmFsIGFnZW50IElEIChkZWZhdWx0cyB0byBERUZBVUxUX0FHRU5UX0lEKVxuICogQHJldHVybnMgVGhlIGFnZW50IG9yIHVuZGVmaW5lZCBpZiBub3QgZm91bmRcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogZXhwb3J0IGNsYXNzIE15Q29tcG9uZW50IHtcbiAqICAgY29uc3RydWN0b3IocHJpdmF0ZSBjb3BpbG90a2l0OiBDb3BpbG90S2l0U2VydmljZSkge31cbiAqXG4gKiAgIGdldEN1cnJlbnRBZ2VudCgpIHtcbiAqICAgICByZXR1cm4gZ2V0QWdlbnQodGhpcy5jb3BpbG90a2l0LCAnbXktYWdlbnQnKTtcbiAqICAgfVxuICogfVxuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRBZ2VudChcbiAgc2VydmljZTogQ29waWxvdEtpdFNlcnZpY2UsXG4gIGFnZW50SWQ/OiBzdHJpbmdcbik6IEFic3RyYWN0QWdlbnQgfCB1bmRlZmluZWQge1xuICBjb25zdCBlZmZlY3RpdmVBZ2VudElkID0gYWdlbnRJZCA/PyBERUZBVUxUX0FHRU5UX0lEO1xuICByZXR1cm4gc2VydmljZS5jb3BpbG90a2l0LmdldEFnZW50KGVmZmVjdGl2ZUFnZW50SWQpO1xufVxuXG4vLyBSZS1leHBvcnQgdGhlIHR5cGUgZm9yIGNvbnZlbmllbmNlICh0aGUgYWN0dWFsIHR5cGUgaXMgaW4gY29waWxvdGtpdC50eXBlcylcbmV4cG9ydCB0eXBlIHsgQWdlbnRXYXRjaFJlc3VsdCB9IGZyb20gXCIuLi9jb3JlL2NvcGlsb3RraXQudHlwZXNcIjtcblxuLyoqXG4gKiBDb252ZW5pZW5jZSB3cmFwcGVyIGZvciB3YXRjaEFnZW50IHRoYXQgaGFuZGxlcyBpbmplY3Rpb24gY29udGV4dC5cbiAqIFVzZWZ1bCB3aGVuIHlvdSBuZWVkIHRvIGNhbGwgd2F0Y2hBZ2VudCBvdXRzaWRlIG9mIGEgY29uc3RydWN0b3Igb3IgZmllbGQgaW5pdGlhbGl6ZXIuXG4gKlxuICogQHBhcmFtIGluamVjdG9yIC0gVGhlIEFuZ3VsYXIgSW5qZWN0b3IgdG8gdXNlIGZvciBpbmplY3Rpb24gY29udGV4dFxuICogQHBhcmFtIGNvbmZpZyAtIE9wdGlvbmFsIGNvbmZpZ3VyYXRpb24gd2l0aCBhZ2VudElkXG4gKiBAcmV0dXJucyBPYmplY3Qgd2l0aCBhZ2VudCwgbWVzc2FnZXMsIGFuZCBpc1J1bm5pbmcgc2lnbmFscyBwbHVzIG9ic2VydmFibGVzXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGV4cG9ydCBjbGFzcyBNeUNvbXBvbmVudCB7XG4gKiAgIGNvbnN0cnVjdG9yKHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yKSB7fVxuICpcbiAqICAgc3dpdGNoQWdlbnQobmV3QWdlbnRJZDogc3RyaW5nKSB7XG4gKiAgICAgLy8gQ2FuIGNhbGwgb3V0c2lkZSBvZiBjb25zdHJ1Y3RvciB1c2luZyB3YXRjaEFnZW50V2l0aFxuICogICAgIGNvbnN0IHdhdGNoZXIgPSB3YXRjaEFnZW50V2l0aCh0aGlzLmluamVjdG9yLCB7IGFnZW50SWQ6IG5ld0FnZW50SWQgfSk7XG4gKiAgICAgdGhpcy5hZ2VudCA9IHdhdGNoZXIuYWdlbnQ7XG4gKiAgICAgdGhpcy5tZXNzYWdlcyA9IHdhdGNoZXIubWVzc2FnZXM7XG4gKiAgICAgdGhpcy5pc1J1bm5pbmcgPSB3YXRjaGVyLmlzUnVubmluZztcbiAqICAgfVxuICogfVxuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB3YXRjaEFnZW50V2l0aChcbiAgaW5qZWN0b3I6IEluamVjdG9yLFxuICBjb25maWc/OiB7IGFnZW50SWQ/OiBzdHJpbmcgfVxuKTogQWdlbnRXYXRjaFJlc3VsdCB7XG4gIHJldHVybiBydW5JbkluamVjdGlvbkNvbnRleHQoaW5qZWN0b3IsICgpID0+IHdhdGNoQWdlbnQoY29uZmlnKSk7XG59XG5cbi8qKlxuICogU3Vic2NyaWJlcyB0byBhbiBhZ2VudCdzIGV2ZW50cyB3aXRoIGN1c3RvbSBjYWxsYmFja3MuXG4gKiBSZXR1cm5zIGEgY2xlYW51cCBmdW5jdGlvbiB0aGF0IHNob3VsZCBiZSBjYWxsZWQgdG8gdW5zdWJzY3JpYmUuXG4gKlxuICogQHBhcmFtIHNlcnZpY2UgLSBUaGUgQ29waWxvdEtpdFNlcnZpY2UgaW5zdGFuY2VcbiAqIEBwYXJhbSBhZ2VudElkIC0gT3B0aW9uYWwgYWdlbnQgSUQgKGRlZmF1bHRzIHRvIERFRkFVTFRfQUdFTlRfSUQpXG4gKiBAcGFyYW0gY2FsbGJhY2tzIC0gRXZlbnQgY2FsbGJhY2tzXG4gKiBAcmV0dXJucyBDbGVhbnVwIGZ1bmN0aW9uIHRvIHVuc3Vic2NyaWJlXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGV4cG9ydCBjbGFzcyBNeUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAqICAgcHJpdmF0ZSB1bnN1YnNjcmliZT86ICgpID0+IHZvaWQ7XG4gKlxuICogICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNvcGlsb3RraXQ6IENvcGlsb3RLaXRTZXJ2aWNlKSB7fVxuICpcbiAqICAgbmdPbkluaXQoKSB7XG4gKiAgICAgdGhpcy51bnN1YnNjcmliZSA9IHN1YnNjcmliZVRvQWdlbnQodGhpcy5jb3BpbG90a2l0LCAnbXktYWdlbnQnLCB7XG4gKiAgICAgICBvblJ1bkluaXRpYWxpemVkOiAoKSA9PiBjb25zb2xlLmxvZygnUnVuIHN0YXJ0ZWQnKSxcbiAqICAgICAgIG9uUnVuRmluYWxpemVkOiAoKSA9PiBjb25zb2xlLmxvZygnUnVuIGNvbXBsZXRlZCcpLFxuICogICAgICAgb25SdW5GYWlsZWQ6IChlcnJvcikgPT4gY29uc29sZS5lcnJvcignUnVuIGZhaWxlZCcsIGVycm9yKSxcbiAqICAgICB9KTtcbiAqICAgfVxuICpcbiAqICAgbmdPbkRlc3Ryb3koKSB7XG4gKiAgICAgdGhpcy51bnN1YnNjcmliZT8uKCk7XG4gKiAgIH1cbiAqIH1cbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gc3Vic2NyaWJlVG9BZ2VudChcbiAgc2VydmljZTogQ29waWxvdEtpdFNlcnZpY2UsXG4gIGFnZW50SWQ/OiBzdHJpbmcsXG4gIGNhbGxiYWNrcz86IEFnZW50U3Vic2NyaXB0aW9uQ2FsbGJhY2tzXG4pOiAoKSA9PiB2b2lkIHtcbiAgY29uc3QgZWZmZWN0aXZlQWdlbnRJZCA9IGFnZW50SWQgPz8gREVGQVVMVF9BR0VOVF9JRDtcbiAgY29uc3QgYWdlbnQgPSBzZXJ2aWNlLmNvcGlsb3RraXQuZ2V0QWdlbnQoZWZmZWN0aXZlQWdlbnRJZCk7XG5cbiAgaWYgKCFhZ2VudCkge1xuICAgIC8vIFJldHVybiBuby1vcCBjbGVhbnVwIGlmIGFnZW50IGRvZXNuJ3QgZXhpc3RcbiAgICByZXR1cm4gKCkgPT4ge307XG4gIH1cblxuICBjb25zdCBzdWJzY3JpcHRpb24gPSBhZ2VudC5zdWJzY3JpYmUoe1xuICAgIG9uTWVzc2FnZXNDaGFuZ2VkOiBjYWxsYmFja3M/Lm9uTWVzc2FnZXNDaGFuZ2VkLFxuICAgIG9uU3RhdGVDaGFuZ2VkOiBjYWxsYmFja3M/Lm9uU3RhdGVDaGFuZ2VkLFxuICAgIG9uUnVuSW5pdGlhbGl6ZWQ6IGNhbGxiYWNrcz8ub25SdW5Jbml0aWFsaXplZCxcbiAgICBvblJ1bkZpbmFsaXplZDogY2FsbGJhY2tzPy5vblJ1bkZpbmFsaXplZCxcbiAgICBvblJ1bkZhaWxlZDogY2FsbGJhY2tzPy5vblJ1bkZhaWxlZCxcbiAgfSk7XG5cbiAgcmV0dXJuICgpID0+IHN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xufVxuIl19
@@ -1,186 +0,0 @@
1
- import { inject } from '@angular/core';
2
- import { CopilotChatConfigurationService } from '../core/chat-configuration/chat-configuration.service';
3
- /**
4
- * Watches chat configuration and provides reactive access to all configuration values.
5
- * Must be called within an injection context.
6
- *
7
- * @returns Object with reactive signals and handler functions
8
- *
9
- * @example
10
- * ```typescript
11
- * export class ChatInputComponent {
12
- * config = watchChatConfig();
13
- *
14
- * constructor() {
15
- * effect(() => {
16
- * const placeholder = this.config.labels().chatInputPlaceholder;
17
- * console.log('Placeholder:', placeholder);
18
- * });
19
- * }
20
- *
21
- * handleSubmit(value: string) {
22
- * this.config.submitInput(value);
23
- * }
24
- * }
25
- * ```
26
- */
27
- export function watchChatConfig() {
28
- const service = inject(CopilotChatConfigurationService);
29
- return {
30
- labels: service.labels,
31
- inputValue: service.inputValue,
32
- submitInput: (value) => service.submitInput(value),
33
- changeInput: (value) => service.changeInput(value)
34
- };
35
- }
36
- /**
37
- * Registers chat configuration within an injection context.
38
- * Automatically updates the configuration when called.
39
- *
40
- * @param config - The configuration to register
41
- *
42
- * @example
43
- * ```typescript
44
- * export class ChatComponent {
45
- * constructor() {
46
- * registerChatConfig({
47
- * labels: {
48
- * chatInputPlaceholder: "How can I help?"
49
- * },
50
- * onSubmitInput: (value) => this.handleSubmit(value)
51
- * });
52
- * }
53
- * }
54
- * ```
55
- */
56
- export function registerChatConfig(config) {
57
- const service = inject(CopilotChatConfigurationService);
58
- service.updateConfiguration(config);
59
- }
60
- /**
61
- * Gets the current chat labels signal.
62
- *
63
- * @param service - The CopilotChatConfigurationService instance
64
- * @returns Signal containing the current labels
65
- *
66
- * @example
67
- * ```typescript
68
- * export class ChatComponent {
69
- * constructor(private chatConfig: CopilotChatConfigurationService) {
70
- * const labels = getChatLabels(this.chatConfig);
71
- * effect(() => {
72
- * console.log('Current labels:', labels());
73
- * });
74
- * }
75
- * }
76
- * ```
77
- */
78
- export function getChatLabels(service) {
79
- return service.labels;
80
- }
81
- /**
82
- * Updates chat labels.
83
- *
84
- * @param service - The CopilotChatConfigurationService instance
85
- * @param labels - Partial labels to merge with defaults
86
- *
87
- * @example
88
- * ```typescript
89
- * export class ChatComponent {
90
- * updatePlaceholder(text: string) {
91
- * setChatLabels(this.chatConfig, {
92
- * chatInputPlaceholder: text
93
- * });
94
- * }
95
- * }
96
- * ```
97
- */
98
- export function setChatLabels(service, labels) {
99
- service.setLabels(labels);
100
- }
101
- /**
102
- * Gets the current input value signal.
103
- *
104
- * @param service - The CopilotChatConfigurationService instance
105
- * @returns Signal containing the current input value
106
- *
107
- * @example
108
- * ```typescript
109
- * export class ChatInputComponent {
110
- * inputValue = getChatInputValue(this.chatConfig);
111
- *
112
- * constructor(private chatConfig: CopilotChatConfigurationService) {
113
- * effect(() => {
114
- * const value = this.inputValue();
115
- * if (value) {
116
- * this.updateTextarea(value);
117
- * }
118
- * });
119
- * }
120
- * }
121
- * ```
122
- */
123
- export function getChatInputValue(service) {
124
- return service.inputValue;
125
- }
126
- /**
127
- * Sets the current input value.
128
- *
129
- * @param service - The CopilotChatConfigurationService instance
130
- * @param value - The new input value
131
- *
132
- * @example
133
- * ```typescript
134
- * export class ChatInputComponent {
135
- * onInputChange(event: Event) {
136
- * const value = (event.target as HTMLInputElement).value;
137
- * setChatInputValue(this.chatConfig, value);
138
- * }
139
- * }
140
- * ```
141
- */
142
- export function setChatInputValue(service, value) {
143
- service.setInputValue(value);
144
- }
145
- /**
146
- * Creates a chat configuration controller with dynamic update capabilities.
147
- * This is useful when you need to programmatically manage configuration.
148
- *
149
- * @param service - The CopilotChatConfigurationService instance
150
- * @param initialConfig - Optional initial configuration
151
- * @returns Controller object with update and reset methods
152
- *
153
- * @example
154
- * ```typescript
155
- * export class ChatManagerComponent {
156
- * chatController = createChatConfigController(this.chatConfig, {
157
- * labels: { chatInputPlaceholder: "Ask me..." }
158
- * });
159
- *
160
- * constructor(private chatConfig: CopilotChatConfigurationService) {}
161
- *
162
- * updateForSupportMode() {
163
- * this.chatController.update({
164
- * labels: { chatInputPlaceholder: "Describe your issue..." }
165
- * });
166
- * }
167
- *
168
- * resetToDefaults() {
169
- * this.chatController.reset();
170
- * }
171
- * }
172
- * ```
173
- */
174
- export function createChatConfigController(service, initialConfig) {
175
- // Apply initial configuration if provided
176
- if (initialConfig) {
177
- service.updateConfiguration(initialConfig);
178
- }
179
- return {
180
- update: (config) => service.updateConfiguration(config),
181
- reset: () => service.reset(),
182
- getLabels: () => service.labels(),
183
- getInputValue: () => service.inputValue()
184
- };
185
- }
186
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdC1jb25maWcudXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdXRpbHMvY2hhdC1jb25maWcudXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUMvQyxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSx1REFBdUQsQ0FBQztBQU14Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F1Qkc7QUFDSCxNQUFNLFVBQVUsZUFBZTtJQU03QixNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsK0JBQStCLENBQUMsQ0FBQztJQUV4RCxPQUFPO1FBQ0wsTUFBTSxFQUFFLE9BQU8sQ0FBQyxNQUFNO1FBQ3RCLFVBQVUsRUFBRSxPQUFPLENBQUMsVUFBVTtRQUM5QixXQUFXLEVBQUUsQ0FBQyxLQUFhLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDO1FBQzFELFdBQVcsRUFBRSxDQUFDLEtBQWEsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUM7S0FDM0QsQ0FBQztBQUNKLENBQUM7QUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW1CRztBQUNILE1BQU0sVUFBVSxrQkFBa0IsQ0FBQyxNQUFnQztJQUNqRSxNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsK0JBQStCLENBQUMsQ0FBQztJQUN4RCxPQUFPLENBQUMsbUJBQW1CLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDdEMsQ0FBQztBQUVEOzs7Ozs7Ozs7Ozs7Ozs7OztHQWlCRztBQUNILE1BQU0sVUFBVSxhQUFhLENBQzNCLE9BQXdDO0lBRXhDLE9BQU8sT0FBTyxDQUFDLE1BQU0sQ0FBQztBQUN4QixDQUFDO0FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnQkc7QUFDSCxNQUFNLFVBQVUsYUFBYSxDQUMzQixPQUF3QyxFQUN4QyxNQUFrQztJQUVsQyxPQUFPLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQzVCLENBQUM7QUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBcUJHO0FBQ0gsTUFBTSxVQUFVLGlCQUFpQixDQUMvQixPQUF3QztJQUV4QyxPQUFPLE9BQU8sQ0FBQyxVQUFVLENBQUM7QUFDNUIsQ0FBQztBQUVEOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUNILE1BQU0sVUFBVSxpQkFBaUIsQ0FDL0IsT0FBd0MsRUFDeEMsS0FBeUI7SUFFekIsT0FBTyxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUMvQixDQUFDO0FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E0Qkc7QUFDSCxNQUFNLFVBQVUsMEJBQTBCLENBQ3hDLE9BQXdDLEVBQ3hDLGFBQXdDO0lBT3hDLDBDQUEwQztJQUMxQyxJQUFJLGFBQWEsRUFBRSxDQUFDO1FBQ2xCLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRUQsT0FBTztRQUNMLE1BQU0sRUFBRSxDQUFDLE1BQWdDLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLENBQUM7UUFDakYsS0FBSyxFQUFFLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUU7UUFDNUIsU0FBUyxFQUFFLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUU7UUFDakMsYUFBYSxFQUFFLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUU7S0FDMUMsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QsIFNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29waWxvdENoYXRDb25maWd1cmF0aW9uU2VydmljZSB9IGZyb20gJy4uL2NvcmUvY2hhdC1jb25maWd1cmF0aW9uL2NoYXQtY29uZmlndXJhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IFxuICBDb3BpbG90Q2hhdENvbmZpZ3VyYXRpb24sXG4gIENvcGlsb3RDaGF0TGFiZWxzXG59IGZyb20gJy4uL2NvcmUvY2hhdC1jb25maWd1cmF0aW9uL2NoYXQtY29uZmlndXJhdGlvbi50eXBlcyc7XG5cbi8qKlxuICogV2F0Y2hlcyBjaGF0IGNvbmZpZ3VyYXRpb24gYW5kIHByb3ZpZGVzIHJlYWN0aXZlIGFjY2VzcyB0byBhbGwgY29uZmlndXJhdGlvbiB2YWx1ZXMuXG4gKiBNdXN0IGJlIGNhbGxlZCB3aXRoaW4gYW4gaW5qZWN0aW9uIGNvbnRleHQuXG4gKiBcbiAqIEByZXR1cm5zIE9iamVjdCB3aXRoIHJlYWN0aXZlIHNpZ25hbHMgYW5kIGhhbmRsZXIgZnVuY3Rpb25zXG4gKiBcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBleHBvcnQgY2xhc3MgQ2hhdElucHV0Q29tcG9uZW50IHtcbiAqICAgY29uZmlnID0gd2F0Y2hDaGF0Q29uZmlnKCk7XG4gKiAgIFxuICogICBjb25zdHJ1Y3RvcigpIHtcbiAqICAgICBlZmZlY3QoKCkgPT4ge1xuICogICAgICAgY29uc3QgcGxhY2Vob2xkZXIgPSB0aGlzLmNvbmZpZy5sYWJlbHMoKS5jaGF0SW5wdXRQbGFjZWhvbGRlcjtcbiAqICAgICAgIGNvbnNvbGUubG9nKCdQbGFjZWhvbGRlcjonLCBwbGFjZWhvbGRlcik7XG4gKiAgICAgfSk7XG4gKiAgIH1cbiAqICAgXG4gKiAgIGhhbmRsZVN1Ym1pdCh2YWx1ZTogc3RyaW5nKSB7XG4gKiAgICAgdGhpcy5jb25maWcuc3VibWl0SW5wdXQodmFsdWUpO1xuICogICB9XG4gKiB9XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHdhdGNoQ2hhdENvbmZpZygpOiB7XG4gIGxhYmVsczogU2lnbmFsPENvcGlsb3RDaGF0TGFiZWxzPjtcbiAgaW5wdXRWYWx1ZTogU2lnbmFsPHN0cmluZyB8IHVuZGVmaW5lZD47XG4gIHN1Ym1pdElucHV0OiAodmFsdWU6IHN0cmluZykgPT4gdm9pZDtcbiAgY2hhbmdlSW5wdXQ6ICh2YWx1ZTogc3RyaW5nKSA9PiB2b2lkO1xufSB7XG4gIGNvbnN0IHNlcnZpY2UgPSBpbmplY3QoQ29waWxvdENoYXRDb25maWd1cmF0aW9uU2VydmljZSk7XG4gIFxuICByZXR1cm4ge1xuICAgIGxhYmVsczogc2VydmljZS5sYWJlbHMsXG4gICAgaW5wdXRWYWx1ZTogc2VydmljZS5pbnB1dFZhbHVlLFxuICAgIHN1Ym1pdElucHV0OiAodmFsdWU6IHN0cmluZykgPT4gc2VydmljZS5zdWJtaXRJbnB1dCh2YWx1ZSksXG4gICAgY2hhbmdlSW5wdXQ6ICh2YWx1ZTogc3RyaW5nKSA9PiBzZXJ2aWNlLmNoYW5nZUlucHV0KHZhbHVlKVxuICB9O1xufVxuXG4vKipcbiAqIFJlZ2lzdGVycyBjaGF0IGNvbmZpZ3VyYXRpb24gd2l0aGluIGFuIGluamVjdGlvbiBjb250ZXh0LlxuICogQXV0b21hdGljYWxseSB1cGRhdGVzIHRoZSBjb25maWd1cmF0aW9uIHdoZW4gY2FsbGVkLlxuICogXG4gKiBAcGFyYW0gY29uZmlnIC0gVGhlIGNvbmZpZ3VyYXRpb24gdG8gcmVnaXN0ZXJcbiAqIFxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGV4cG9ydCBjbGFzcyBDaGF0Q29tcG9uZW50IHtcbiAqICAgY29uc3RydWN0b3IoKSB7XG4gKiAgICAgcmVnaXN0ZXJDaGF0Q29uZmlnKHtcbiAqICAgICAgIGxhYmVsczoge1xuICogICAgICAgICBjaGF0SW5wdXRQbGFjZWhvbGRlcjogXCJIb3cgY2FuIEkgaGVscD9cIlxuICogICAgICAgfSxcbiAqICAgICAgIG9uU3VibWl0SW5wdXQ6ICh2YWx1ZSkgPT4gdGhpcy5oYW5kbGVTdWJtaXQodmFsdWUpXG4gKiAgICAgfSk7XG4gKiAgIH1cbiAqIH1cbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVnaXN0ZXJDaGF0Q29uZmlnKGNvbmZpZzogQ29waWxvdENoYXRDb25maWd1cmF0aW9uKTogdm9pZCB7XG4gIGNvbnN0IHNlcnZpY2UgPSBpbmplY3QoQ29waWxvdENoYXRDb25maWd1cmF0aW9uU2VydmljZSk7XG4gIHNlcnZpY2UudXBkYXRlQ29uZmlndXJhdGlvbihjb25maWcpO1xufVxuXG4vKipcbiAqIEdldHMgdGhlIGN1cnJlbnQgY2hhdCBsYWJlbHMgc2lnbmFsLlxuICogXG4gKiBAcGFyYW0gc2VydmljZSAtIFRoZSBDb3BpbG90Q2hhdENvbmZpZ3VyYXRpb25TZXJ2aWNlIGluc3RhbmNlXG4gKiBAcmV0dXJucyBTaWduYWwgY29udGFpbmluZyB0aGUgY3VycmVudCBsYWJlbHNcbiAqIFxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGV4cG9ydCBjbGFzcyBDaGF0Q29tcG9uZW50IHtcbiAqICAgY29uc3RydWN0b3IocHJpdmF0ZSBjaGF0Q29uZmlnOiBDb3BpbG90Q2hhdENvbmZpZ3VyYXRpb25TZXJ2aWNlKSB7XG4gKiAgICAgY29uc3QgbGFiZWxzID0gZ2V0Q2hhdExhYmVscyh0aGlzLmNoYXRDb25maWcpO1xuICogICAgIGVmZmVjdCgoKSA9PiB7XG4gKiAgICAgICBjb25zb2xlLmxvZygnQ3VycmVudCBsYWJlbHM6JywgbGFiZWxzKCkpO1xuICogICAgIH0pO1xuICogICB9XG4gKiB9XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldENoYXRMYWJlbHMoXG4gIHNlcnZpY2U6IENvcGlsb3RDaGF0Q29uZmlndXJhdGlvblNlcnZpY2Vcbik6IFNpZ25hbDxDb3BpbG90Q2hhdExhYmVscz4ge1xuICByZXR1cm4gc2VydmljZS5sYWJlbHM7XG59XG5cbi8qKlxuICogVXBkYXRlcyBjaGF0IGxhYmVscy5cbiAqIFxuICogQHBhcmFtIHNlcnZpY2UgLSBUaGUgQ29waWxvdENoYXRDb25maWd1cmF0aW9uU2VydmljZSBpbnN0YW5jZVxuICogQHBhcmFtIGxhYmVscyAtIFBhcnRpYWwgbGFiZWxzIHRvIG1lcmdlIHdpdGggZGVmYXVsdHNcbiAqIFxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGV4cG9ydCBjbGFzcyBDaGF0Q29tcG9uZW50IHtcbiAqICAgdXBkYXRlUGxhY2Vob2xkZXIodGV4dDogc3RyaW5nKSB7XG4gKiAgICAgc2V0Q2hhdExhYmVscyh0aGlzLmNoYXRDb25maWcsIHtcbiAqICAgICAgIGNoYXRJbnB1dFBsYWNlaG9sZGVyOiB0ZXh0XG4gKiAgICAgfSk7XG4gKiAgIH1cbiAqIH1cbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gc2V0Q2hhdExhYmVscyhcbiAgc2VydmljZTogQ29waWxvdENoYXRDb25maWd1cmF0aW9uU2VydmljZSxcbiAgbGFiZWxzOiBQYXJ0aWFsPENvcGlsb3RDaGF0TGFiZWxzPlxuKTogdm9pZCB7XG4gIHNlcnZpY2Uuc2V0TGFiZWxzKGxhYmVscyk7XG59XG5cbi8qKlxuICogR2V0cyB0aGUgY3VycmVudCBpbnB1dCB2YWx1ZSBzaWduYWwuXG4gKiBcbiAqIEBwYXJhbSBzZXJ2aWNlIC0gVGhlIENvcGlsb3RDaGF0Q29uZmlndXJhdGlvblNlcnZpY2UgaW5zdGFuY2VcbiAqIEByZXR1cm5zIFNpZ25hbCBjb250YWluaW5nIHRoZSBjdXJyZW50IGlucHV0IHZhbHVlXG4gKiBcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBleHBvcnQgY2xhc3MgQ2hhdElucHV0Q29tcG9uZW50IHtcbiAqICAgaW5wdXRWYWx1ZSA9IGdldENoYXRJbnB1dFZhbHVlKHRoaXMuY2hhdENvbmZpZyk7XG4gKiAgIFxuICogICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNoYXRDb25maWc6IENvcGlsb3RDaGF0Q29uZmlndXJhdGlvblNlcnZpY2UpIHtcbiAqICAgICBlZmZlY3QoKCkgPT4ge1xuICogICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLmlucHV0VmFsdWUoKTtcbiAqICAgICAgIGlmICh2YWx1ZSkge1xuICogICAgICAgICB0aGlzLnVwZGF0ZVRleHRhcmVhKHZhbHVlKTtcbiAqICAgICAgIH1cbiAqICAgICB9KTtcbiAqICAgfVxuICogfVxuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRDaGF0SW5wdXRWYWx1ZShcbiAgc2VydmljZTogQ29waWxvdENoYXRDb25maWd1cmF0aW9uU2VydmljZVxuKTogU2lnbmFsPHN0cmluZyB8IHVuZGVmaW5lZD4ge1xuICByZXR1cm4gc2VydmljZS5pbnB1dFZhbHVlO1xufVxuXG4vKipcbiAqIFNldHMgdGhlIGN1cnJlbnQgaW5wdXQgdmFsdWUuXG4gKiBcbiAqIEBwYXJhbSBzZXJ2aWNlIC0gVGhlIENvcGlsb3RDaGF0Q29uZmlndXJhdGlvblNlcnZpY2UgaW5zdGFuY2VcbiAqIEBwYXJhbSB2YWx1ZSAtIFRoZSBuZXcgaW5wdXQgdmFsdWVcbiAqIFxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGV4cG9ydCBjbGFzcyBDaGF0SW5wdXRDb21wb25lbnQge1xuICogICBvbklucHV0Q2hhbmdlKGV2ZW50OiBFdmVudCkge1xuICogICAgIGNvbnN0IHZhbHVlID0gKGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KS52YWx1ZTtcbiAqICAgICBzZXRDaGF0SW5wdXRWYWx1ZSh0aGlzLmNoYXRDb25maWcsIHZhbHVlKTtcbiAqICAgfVxuICogfVxuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXRDaGF0SW5wdXRWYWx1ZShcbiAgc2VydmljZTogQ29waWxvdENoYXRDb25maWd1cmF0aW9uU2VydmljZSxcbiAgdmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZFxuKTogdm9pZCB7XG4gIHNlcnZpY2Uuc2V0SW5wdXRWYWx1ZSh2YWx1ZSk7XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIGNoYXQgY29uZmlndXJhdGlvbiBjb250cm9sbGVyIHdpdGggZHluYW1pYyB1cGRhdGUgY2FwYWJpbGl0aWVzLlxuICogVGhpcyBpcyB1c2VmdWwgd2hlbiB5b3UgbmVlZCB0byBwcm9ncmFtbWF0aWNhbGx5IG1hbmFnZSBjb25maWd1cmF0aW9uLlxuICogXG4gKiBAcGFyYW0gc2VydmljZSAtIFRoZSBDb3BpbG90Q2hhdENvbmZpZ3VyYXRpb25TZXJ2aWNlIGluc3RhbmNlXG4gKiBAcGFyYW0gaW5pdGlhbENvbmZpZyAtIE9wdGlvbmFsIGluaXRpYWwgY29uZmlndXJhdGlvblxuICogQHJldHVybnMgQ29udHJvbGxlciBvYmplY3Qgd2l0aCB1cGRhdGUgYW5kIHJlc2V0IG1ldGhvZHNcbiAqIFxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGV4cG9ydCBjbGFzcyBDaGF0TWFuYWdlckNvbXBvbmVudCB7XG4gKiAgIGNoYXRDb250cm9sbGVyID0gY3JlYXRlQ2hhdENvbmZpZ0NvbnRyb2xsZXIodGhpcy5jaGF0Q29uZmlnLCB7XG4gKiAgICAgbGFiZWxzOiB7IGNoYXRJbnB1dFBsYWNlaG9sZGVyOiBcIkFzayBtZS4uLlwiIH1cbiAqICAgfSk7XG4gKiAgIFxuICogICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNoYXRDb25maWc6IENvcGlsb3RDaGF0Q29uZmlndXJhdGlvblNlcnZpY2UpIHt9XG4gKiAgIFxuICogICB1cGRhdGVGb3JTdXBwb3J0TW9kZSgpIHtcbiAqICAgICB0aGlzLmNoYXRDb250cm9sbGVyLnVwZGF0ZSh7XG4gKiAgICAgICBsYWJlbHM6IHsgY2hhdElucHV0UGxhY2Vob2xkZXI6IFwiRGVzY3JpYmUgeW91ciBpc3N1ZS4uLlwiIH1cbiAqICAgICB9KTtcbiAqICAgfVxuICogICBcbiAqICAgcmVzZXRUb0RlZmF1bHRzKCkge1xuICogICAgIHRoaXMuY2hhdENvbnRyb2xsZXIucmVzZXQoKTtcbiAqICAgfVxuICogfVxuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVDaGF0Q29uZmlnQ29udHJvbGxlcihcbiAgc2VydmljZTogQ29waWxvdENoYXRDb25maWd1cmF0aW9uU2VydmljZSxcbiAgaW5pdGlhbENvbmZpZz86IENvcGlsb3RDaGF0Q29uZmlndXJhdGlvblxuKToge1xuICB1cGRhdGU6IChjb25maWc6IENvcGlsb3RDaGF0Q29uZmlndXJhdGlvbikgPT4gdm9pZDtcbiAgcmVzZXQ6ICgpID0+IHZvaWQ7XG4gIGdldExhYmVsczogKCkgPT4gQ29waWxvdENoYXRMYWJlbHM7XG4gIGdldElucHV0VmFsdWU6ICgpID0+IHN0cmluZyB8IHVuZGVmaW5lZDtcbn0ge1xuICAvLyBBcHBseSBpbml0aWFsIGNvbmZpZ3VyYXRpb24gaWYgcHJvdmlkZWRcbiAgaWYgKGluaXRpYWxDb25maWcpIHtcbiAgICBzZXJ2aWNlLnVwZGF0ZUNvbmZpZ3VyYXRpb24oaW5pdGlhbENvbmZpZyk7XG4gIH1cbiAgXG4gIHJldHVybiB7XG4gICAgdXBkYXRlOiAoY29uZmlnOiBDb3BpbG90Q2hhdENvbmZpZ3VyYXRpb24pID0+IHNlcnZpY2UudXBkYXRlQ29uZmlndXJhdGlvbihjb25maWcpLFxuICAgIHJlc2V0OiAoKSA9PiBzZXJ2aWNlLnJlc2V0KCksXG4gICAgZ2V0TGFiZWxzOiAoKSA9PiBzZXJ2aWNlLmxhYmVscygpLFxuICAgIGdldElucHV0VmFsdWU6ICgpID0+IHNlcnZpY2UuaW5wdXRWYWx1ZSgpXG4gIH07XG59Il19
@@ -1,20 +0,0 @@
1
- import { inject } from "@angular/core";
2
- import { CopilotKitService } from "../core/copilotkit.service";
3
- /**
4
- * Utility function to inject the CopilotKit service in a component or directive.
5
- *
6
- * @example
7
- * ```typescript
8
- * export class MyComponent {
9
- * private copilotkit = injectCopilotKit();
10
- *
11
- * sendMessage() {
12
- * this.copilotkit.copilotkit.sendMessage(...);
13
- * }
14
- * }
15
- * ```
16
- */
17
- export function injectCopilotKit() {
18
- return inject(CopilotKitService);
19
- }
20
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29waWxvdGtpdC51dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy91dGlscy9jb3BpbG90a2l0LnV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFL0Q7Ozs7Ozs7Ozs7Ozs7R0FhRztBQUNILE1BQU0sVUFBVSxnQkFBZ0I7SUFDOUIsT0FBTyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztBQUNuQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IENvcGlsb3RLaXRTZXJ2aWNlIH0gZnJvbSBcIi4uL2NvcmUvY29waWxvdGtpdC5zZXJ2aWNlXCI7XG5cbi8qKlxuICogVXRpbGl0eSBmdW5jdGlvbiB0byBpbmplY3QgdGhlIENvcGlsb3RLaXQgc2VydmljZSBpbiBhIGNvbXBvbmVudCBvciBkaXJlY3RpdmUuXG4gKiBcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBleHBvcnQgY2xhc3MgTXlDb21wb25lbnQge1xuICogICBwcml2YXRlIGNvcGlsb3RraXQgPSBpbmplY3RDb3BpbG90S2l0KCk7XG4gKiAgIFxuICogICBzZW5kTWVzc2FnZSgpIHtcbiAqICAgICB0aGlzLmNvcGlsb3RraXQuY29waWxvdGtpdC5zZW5kTWVzc2FnZSguLi4pO1xuICogICB9XG4gKiB9XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGluamVjdENvcGlsb3RLaXQoKSB7XG4gIHJldHVybiBpbmplY3QoQ29waWxvdEtpdFNlcnZpY2UpO1xufSJdfQ==