@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.
- package/dist/esm2022/index.mjs +2 -70
- package/dist/esm2022/lib/agent.mjs +73 -0
- package/dist/esm2022/lib/chat-config.mjs +35 -0
- package/dist/esm2022/lib/chat-state.mjs +18 -0
- package/dist/esm2022/lib/components/chat/copilot-chat-assistant-message-buttons.mjs +344 -0
- package/dist/esm2022/lib/components/chat/copilot-chat-assistant-message-renderer.mjs +260 -0
- package/dist/esm2022/lib/components/chat/copilot-chat-assistant-message-toolbar.mjs +22 -0
- package/dist/esm2022/{components/chat/copilot-chat-assistant-message.component.mjs → lib/components/chat/copilot-chat-assistant-message.mjs} +216 -240
- package/dist/esm2022/lib/components/chat/copilot-chat-assistant-message.types.mjs +2 -0
- package/dist/esm2022/lib/components/chat/copilot-chat-audio-recorder.mjs +196 -0
- package/dist/esm2022/lib/components/chat/copilot-chat-buttons.mjs +299 -0
- package/dist/esm2022/lib/components/chat/copilot-chat-input-defaults.mjs +39 -0
- package/dist/esm2022/lib/components/chat/copilot-chat-input.mjs +634 -0
- package/dist/esm2022/lib/components/chat/copilot-chat-input.types.mjs +10 -0
- package/dist/esm2022/lib/components/chat/copilot-chat-message-view-cursor.mjs +27 -0
- package/dist/esm2022/lib/components/chat/copilot-chat-message-view.mjs +268 -0
- package/dist/esm2022/lib/components/chat/copilot-chat-message-view.types.mjs +2 -0
- package/dist/esm2022/lib/components/chat/copilot-chat-textarea.mjs +139 -0
- package/dist/esm2022/lib/components/chat/copilot-chat-tool-calls-view.mjs +36 -0
- package/dist/esm2022/lib/components/chat/copilot-chat-toolbar.mjs +20 -0
- package/dist/esm2022/lib/components/chat/copilot-chat-tools-menu.mjs +203 -0
- package/dist/esm2022/lib/components/chat/copilot-chat-user-message-branch-navigation.mjs +118 -0
- package/dist/esm2022/lib/components/chat/copilot-chat-user-message-buttons.mjs +182 -0
- package/dist/esm2022/lib/components/chat/copilot-chat-user-message-renderer.mjs +28 -0
- package/dist/esm2022/lib/components/chat/copilot-chat-user-message-toolbar.mjs +25 -0
- package/dist/esm2022/lib/components/chat/copilot-chat-user-message.mjs +306 -0
- package/dist/esm2022/lib/components/chat/copilot-chat-user-message.types.mjs +2 -0
- package/dist/esm2022/lib/components/chat/copilot-chat-view-disclaimer.mjs +48 -0
- package/dist/esm2022/lib/components/chat/copilot-chat-view-feather.mjs +41 -0
- package/dist/esm2022/lib/components/chat/copilot-chat-view-handlers.mjs +19 -0
- package/dist/esm2022/lib/components/chat/copilot-chat-view-input-container.mjs +96 -0
- package/dist/esm2022/lib/components/chat/copilot-chat-view-scroll-to-bottom-button.mjs +89 -0
- package/dist/esm2022/lib/components/chat/copilot-chat-view-scroll-view.mjs +456 -0
- package/dist/esm2022/lib/components/chat/copilot-chat-view.mjs +404 -0
- package/dist/esm2022/lib/components/chat/copilot-chat-view.types.mjs +2 -0
- package/dist/esm2022/lib/components/chat/copilot-chat.mjs +167 -0
- package/dist/esm2022/lib/config.mjs +9 -0
- package/dist/esm2022/lib/copilotkit.mjs +124 -0
- package/dist/esm2022/lib/directives/copilotkit-agent-context.mjs +130 -0
- package/dist/esm2022/lib/directives/stick-to-bottom.mjs +170 -0
- package/dist/esm2022/lib/directives/tooltip.mjs +217 -0
- package/dist/esm2022/lib/human-in-the-loop.mjs +19 -0
- package/dist/esm2022/lib/render-tool-calls.mjs +131 -0
- package/dist/esm2022/lib/resize-observer.mjs +152 -0
- package/dist/esm2022/lib/scroll-position.mjs +124 -0
- package/dist/esm2022/lib/slots/copilot-slot.mjs +156 -0
- package/dist/esm2022/lib/slots/index.mjs +4 -0
- package/dist/esm2022/lib/slots/slot.types.mjs +3 -3
- package/dist/esm2022/lib/slots/slot.utils.mjs +19 -15
- package/dist/esm2022/lib/tools.mjs +31 -0
- package/dist/esm2022/lib/utils.mjs +3 -3
- package/dist/esm2022/public-api.mjs +47 -0
- package/dist/fesm2022/copilotkitnext-angular.mjs +5249 -8271
- package/dist/fesm2022/copilotkitnext-angular.mjs.map +1 -1
- package/dist/index.d.ts +1 -55
- package/dist/lib/agent.d.ts +53 -0
- package/dist/{core/chat-configuration/chat-configuration.types.d.ts → lib/chat-config.d.ts} +4 -8
- package/dist/lib/chat-state.d.ts +10 -0
- package/dist/lib/components/chat/copilot-chat-assistant-message-buttons.d.ts +68 -0
- package/dist/lib/components/chat/copilot-chat-assistant-message-renderer.d.ts +26 -0
- package/dist/lib/components/chat/copilot-chat-assistant-message-toolbar.d.ts +7 -0
- package/dist/lib/components/chat/copilot-chat-assistant-message.d.ts +178 -0
- package/dist/{components → lib/components}/chat/copilot-chat-assistant-message.types.d.ts +1 -1
- package/dist/{components/chat/copilot-chat-audio-recorder.component.d.ts → lib/components/chat/copilot-chat-audio-recorder.d.ts} +10 -10
- package/dist/lib/components/chat/copilot-chat-buttons.d.ts +65 -0
- package/dist/lib/components/chat/copilot-chat-input-defaults.d.ts +38 -0
- package/dist/lib/components/chat/copilot-chat-input.d.ts +133 -0
- package/dist/{components → lib/components}/chat/copilot-chat-input.types.d.ts +11 -11
- package/dist/lib/components/chat/copilot-chat-message-view-cursor.d.ts +11 -0
- package/dist/{components/chat/copilot-chat-message-view.component.d.ts → lib/components/chat/copilot-chat-message-view.d.ts} +68 -36
- package/dist/{components → lib/components}/chat/copilot-chat-message-view.types.d.ts +2 -2
- package/dist/lib/components/chat/copilot-chat-textarea.d.ts +41 -0
- package/dist/lib/components/chat/copilot-chat-tool-calls-view.d.ts +55 -0
- package/dist/lib/components/chat/copilot-chat-toolbar.d.ts +7 -0
- package/dist/lib/components/chat/copilot-chat-tools-menu.d.ts +20 -0
- package/dist/lib/components/chat/copilot-chat-user-message-branch-navigation.d.ts +20 -0
- package/dist/lib/components/chat/copilot-chat-user-message-buttons.d.ts +35 -0
- package/dist/lib/components/chat/copilot-chat-user-message-renderer.d.ts +8 -0
- package/dist/lib/components/chat/copilot-chat-user-message-toolbar.d.ts +7 -0
- package/dist/lib/components/chat/copilot-chat-user-message.d.ts +55 -0
- package/dist/{components → lib/components}/chat/copilot-chat-user-message.types.d.ts +2 -2
- package/dist/lib/components/chat/copilot-chat-view-disclaimer.d.ts +15 -0
- package/dist/{components/chat/copilot-chat-view-feather.component.d.ts → lib/components/chat/copilot-chat-view-feather.d.ts} +6 -6
- package/dist/{components/chat/copilot-chat-view-handlers.service.d.ts → lib/components/chat/copilot-chat-view-handlers.d.ts} +3 -3
- package/dist/lib/components/chat/copilot-chat-view-input-container.d.ts +23 -0
- package/dist/lib/components/chat/copilot-chat-view-scroll-to-bottom-button.d.ts +16 -0
- package/dist/lib/components/chat/copilot-chat-view-scroll-view.d.ts +114 -0
- package/dist/lib/components/chat/copilot-chat-view.d.ts +239 -0
- package/dist/{components → lib/components}/chat/copilot-chat-view.types.d.ts +2 -2
- package/dist/lib/components/chat/copilot-chat.d.ts +67 -0
- package/dist/lib/config.d.ts +16 -0
- package/dist/lib/copilotkit.d.ts +29 -0
- package/dist/{directives/copilotkit-agent-context.directive.d.ts → lib/directives/copilotkit-agent-context.d.ts} +5 -5
- package/dist/lib/directives/stick-to-bottom.d.ts +62 -0
- package/dist/lib/directives/tooltip.d.ts +33 -0
- package/dist/lib/human-in-the-loop.d.ts +13 -0
- package/dist/lib/render-tool-calls.d.ts +75 -0
- package/dist/{services/resize-observer.service.d.ts → lib/resize-observer.d.ts} +2 -2
- package/dist/{services/scroll-position.service.d.ts → lib/scroll-position.d.ts} +6 -6
- package/dist/lib/slots/copilot-slot.d.ts +34 -0
- package/dist/lib/slots/index.d.ts +3 -0
- package/dist/lib/slots/slot.types.d.ts +1 -1
- package/dist/lib/slots/slot.utils.d.ts +6 -4
- package/dist/lib/tools.d.ts +63 -0
- package/dist/lib/utils.d.ts +1 -1
- package/dist/public-api.d.ts +46 -0
- package/dist/styles.css +0 -69
- package/package.json +3 -3
- package/dist/components/chat/copilot-chat-assistant-message-buttons.component.d.ts +0 -75
- package/dist/components/chat/copilot-chat-assistant-message-renderer.component.d.ts +0 -31
- package/dist/components/chat/copilot-chat-assistant-message-toolbar.component.d.ts +0 -8
- package/dist/components/chat/copilot-chat-assistant-message.component.d.ts +0 -132
- package/dist/components/chat/copilot-chat-buttons.component.d.ts +0 -66
- package/dist/components/chat/copilot-chat-input-defaults.d.ts +0 -37
- package/dist/components/chat/copilot-chat-input.component.d.ts +0 -133
- package/dist/components/chat/copilot-chat-message-view-cursor.component.d.ts +0 -15
- package/dist/components/chat/copilot-chat-textarea.component.d.ts +0 -45
- package/dist/components/chat/copilot-chat-tool-calls-view.component.d.ts +0 -35
- package/dist/components/chat/copilot-chat-toolbar.component.d.ts +0 -8
- package/dist/components/chat/copilot-chat-tools-menu.component.d.ts +0 -20
- package/dist/components/chat/copilot-chat-user-message-branch-navigation.component.d.ts +0 -23
- package/dist/components/chat/copilot-chat-user-message-buttons.component.d.ts +0 -39
- package/dist/components/chat/copilot-chat-user-message-renderer.component.d.ts +0 -9
- package/dist/components/chat/copilot-chat-user-message-toolbar.component.d.ts +0 -8
- package/dist/components/chat/copilot-chat-user-message.component.d.ts +0 -55
- package/dist/components/chat/copilot-chat-view-disclaimer.component.d.ts +0 -15
- package/dist/components/chat/copilot-chat-view-input-container.component.d.ts +0 -23
- package/dist/components/chat/copilot-chat-view-scroll-to-bottom-button.component.d.ts +0 -17
- package/dist/components/chat/copilot-chat-view-scroll-view.component.d.ts +0 -84
- package/dist/components/chat/copilot-chat-view.component.d.ts +0 -205
- package/dist/components/chat/copilot-chat.component.d.ts +0 -36
- package/dist/components/copilotkit-tool-render.component.d.ts +0 -25
- package/dist/core/chat-configuration/chat-configuration.providers.d.ts +0 -54
- package/dist/core/chat-configuration/chat-configuration.service.d.ts +0 -75
- package/dist/core/copilotkit.providers.d.ts +0 -13
- package/dist/core/copilotkit.service.d.ts +0 -119
- package/dist/core/copilotkit.types.d.ts +0 -81
- package/dist/directives/copilotkit-agent.directive.d.ts +0 -106
- package/dist/directives/copilotkit-chat-config.directive.d.ts +0 -84
- package/dist/directives/copilotkit-config.directive.d.ts +0 -44
- package/dist/directives/copilotkit-frontend-tool.directive.d.ts +0 -25
- package/dist/directives/copilotkit-human-in-the-loop.directive.d.ts +0 -124
- package/dist/directives/stick-to-bottom.directive.d.ts +0 -62
- package/dist/esm2022/components/chat/copilot-chat-assistant-message-buttons.component.mjs +0 -384
- package/dist/esm2022/components/chat/copilot-chat-assistant-message-renderer.component.mjs +0 -286
- package/dist/esm2022/components/chat/copilot-chat-assistant-message-toolbar.component.mjs +0 -27
- package/dist/esm2022/components/chat/copilot-chat-assistant-message.types.mjs +0 -2
- package/dist/esm2022/components/chat/copilot-chat-audio-recorder.component.mjs +0 -202
- package/dist/esm2022/components/chat/copilot-chat-buttons.component.mjs +0 -321
- package/dist/esm2022/components/chat/copilot-chat-input-defaults.mjs +0 -38
- package/dist/esm2022/components/chat/copilot-chat-input.component.mjs +0 -666
- package/dist/esm2022/components/chat/copilot-chat-input.types.mjs +0 -10
- package/dist/esm2022/components/chat/copilot-chat-message-view-cursor.component.mjs +0 -45
- package/dist/esm2022/components/chat/copilot-chat-message-view.component.mjs +0 -296
- package/dist/esm2022/components/chat/copilot-chat-message-view.types.mjs +0 -2
- package/dist/esm2022/components/chat/copilot-chat-textarea.component.mjs +0 -188
- package/dist/esm2022/components/chat/copilot-chat-tool-calls-view.component.mjs +0 -222
- package/dist/esm2022/components/chat/copilot-chat-toolbar.component.mjs +0 -25
- package/dist/esm2022/components/chat/copilot-chat-tools-menu.component.mjs +0 -199
- package/dist/esm2022/components/chat/copilot-chat-user-message-branch-navigation.component.mjs +0 -137
- package/dist/esm2022/components/chat/copilot-chat-user-message-buttons.component.mjs +0 -207
- package/dist/esm2022/components/chat/copilot-chat-user-message-renderer.component.mjs +0 -35
- package/dist/esm2022/components/chat/copilot-chat-user-message-toolbar.component.mjs +0 -34
- package/dist/esm2022/components/chat/copilot-chat-user-message.component.mjs +0 -341
- package/dist/esm2022/components/chat/copilot-chat-user-message.types.mjs +0 -2
- package/dist/esm2022/components/chat/copilot-chat-view-disclaimer.component.mjs +0 -52
- package/dist/esm2022/components/chat/copilot-chat-view-feather.component.mjs +0 -55
- package/dist/esm2022/components/chat/copilot-chat-view-handlers.service.mjs +0 -19
- package/dist/esm2022/components/chat/copilot-chat-view-input-container.component.mjs +0 -110
- package/dist/esm2022/components/chat/copilot-chat-view-scroll-to-bottom-button.component.mjs +0 -93
- package/dist/esm2022/components/chat/copilot-chat-view-scroll-view.component.mjs +0 -443
- package/dist/esm2022/components/chat/copilot-chat-view.component.mjs +0 -479
- package/dist/esm2022/components/chat/copilot-chat-view.types.mjs +0 -2
- package/dist/esm2022/components/chat/copilot-chat.component.mjs +0 -220
- package/dist/esm2022/components/copilotkit-tool-render.component.mjs +0 -150
- package/dist/esm2022/core/chat-configuration/chat-configuration.providers.mjs +0 -65
- package/dist/esm2022/core/chat-configuration/chat-configuration.service.mjs +0 -145
- package/dist/esm2022/core/chat-configuration/chat-configuration.types.mjs +0 -26
- package/dist/esm2022/core/copilotkit.providers.mjs +0 -34
- package/dist/esm2022/core/copilotkit.service.mjs +0 -411
- package/dist/esm2022/core/copilotkit.types.mjs +0 -13
- package/dist/esm2022/directives/copilotkit-agent-context.directive.mjs +0 -130
- package/dist/esm2022/directives/copilotkit-agent.directive.mjs +0 -221
- package/dist/esm2022/directives/copilotkit-chat-config.directive.mjs +0 -218
- package/dist/esm2022/directives/copilotkit-config.directive.mjs +0 -94
- package/dist/esm2022/directives/copilotkit-frontend-tool.directive.mjs +0 -128
- package/dist/esm2022/directives/copilotkit-human-in-the-loop.directive.mjs +0 -265
- package/dist/esm2022/directives/stick-to-bottom.directive.mjs +0 -181
- package/dist/esm2022/lib/directives/tooltip.directive.mjs +0 -211
- package/dist/esm2022/lib/slots/copilot-slot.component.mjs +0 -154
- package/dist/esm2022/services/resize-observer.service.mjs +0 -152
- package/dist/esm2022/services/scroll-position.service.mjs +0 -124
- package/dist/esm2022/types/frontend-tool.mjs +0 -2
- package/dist/esm2022/types/human-in-the-loop.mjs +0 -2
- package/dist/esm2022/utils/agent-context.utils.mjs +0 -114
- package/dist/esm2022/utils/agent.utils.mjs +0 -212
- package/dist/esm2022/utils/chat-config.utils.mjs +0 -186
- package/dist/esm2022/utils/copilotkit.utils.mjs +0 -20
- package/dist/esm2022/utils/frontend-tool.utils.mjs +0 -224
- package/dist/esm2022/utils/human-in-the-loop.utils.mjs +0 -293
- package/dist/lib/directives/tooltip.directive.d.ts +0 -33
- package/dist/lib/slots/copilot-slot.component.d.ts +0 -34
- package/dist/types/frontend-tool.d.ts +0 -37
- package/dist/types/human-in-the-loop.d.ts +0 -44
- package/dist/utils/agent-context.utils.d.ts +0 -75
- package/dist/utils/agent.utils.d.ts +0 -108
- package/dist/utils/chat-config.utils.d.ts +0 -166
- package/dist/utils/copilotkit.utils.d.ts +0 -16
- package/dist/utils/frontend-tool.utils.d.ts +0 -119
- package/dist/utils/human-in-the-loop.utils.d.ts +0 -92
|
@@ -1,130 +0,0 @@
|
|
|
1
|
-
import { Directive, Input, Inject, } from "@angular/core";
|
|
2
|
-
import { CopilotKitService } from "../core/copilotkit.service";
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
import * as i1 from "../core/copilotkit.service";
|
|
5
|
-
/**
|
|
6
|
-
* Directive to manage agent context in CopilotKit.
|
|
7
|
-
* Automatically adds context on init, updates on changes, and removes on destroy.
|
|
8
|
-
*
|
|
9
|
-
* @example
|
|
10
|
-
* ```html
|
|
11
|
-
* <!-- With separate inputs -->
|
|
12
|
-
* <div copilotkitAgentContext
|
|
13
|
-
* [description]="'User preferences'"
|
|
14
|
-
* [value]="userSettings">
|
|
15
|
-
* </div>
|
|
16
|
-
*
|
|
17
|
-
* <!-- With context object -->
|
|
18
|
-
* <div [copilotkitAgentContext]="contextObject">
|
|
19
|
-
* </div>
|
|
20
|
-
*
|
|
21
|
-
* <!-- With dynamic values -->
|
|
22
|
-
* <div copilotkitAgentContext
|
|
23
|
-
* description="Form state"
|
|
24
|
-
* [value]="formData$ | async">
|
|
25
|
-
* </div>
|
|
26
|
-
* ```
|
|
27
|
-
*/
|
|
28
|
-
export class CopilotKitAgentContextDirective {
|
|
29
|
-
copilotkit;
|
|
30
|
-
contextId;
|
|
31
|
-
constructor(copilotkit) {
|
|
32
|
-
this.copilotkit = copilotkit;
|
|
33
|
-
}
|
|
34
|
-
/**
|
|
35
|
-
* Context object containing both description and value.
|
|
36
|
-
* If provided, this takes precedence over individual inputs.
|
|
37
|
-
*/
|
|
38
|
-
context;
|
|
39
|
-
/**
|
|
40
|
-
* Description of the context.
|
|
41
|
-
* Used when context object is not provided.
|
|
42
|
-
*/
|
|
43
|
-
description;
|
|
44
|
-
/**
|
|
45
|
-
* Value of the context.
|
|
46
|
-
* Used when context object is not provided.
|
|
47
|
-
*/
|
|
48
|
-
value;
|
|
49
|
-
ngOnInit() {
|
|
50
|
-
this.addContext();
|
|
51
|
-
}
|
|
52
|
-
ngOnChanges(changes) {
|
|
53
|
-
// Check if any relevant input has changed
|
|
54
|
-
const hasContextChange = "context" in changes;
|
|
55
|
-
const hasDescriptionChange = "description" in changes;
|
|
56
|
-
const hasValueChange = "value" in changes;
|
|
57
|
-
if (hasContextChange || hasDescriptionChange || hasValueChange) {
|
|
58
|
-
// Skip the first change as ngOnInit handles initial setup
|
|
59
|
-
if (this.contextId) {
|
|
60
|
-
this.updateContext();
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
ngOnDestroy() {
|
|
65
|
-
this.removeContext();
|
|
66
|
-
}
|
|
67
|
-
/**
|
|
68
|
-
* Adds the context to CopilotKit
|
|
69
|
-
*/
|
|
70
|
-
addContext() {
|
|
71
|
-
const contextToAdd = this.getContext();
|
|
72
|
-
if (contextToAdd) {
|
|
73
|
-
this.contextId = this.copilotkit.copilotkit.addContext(contextToAdd);
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
/**
|
|
77
|
-
* Updates the context by removing the old one and adding a new one
|
|
78
|
-
*/
|
|
79
|
-
updateContext() {
|
|
80
|
-
this.removeContext();
|
|
81
|
-
this.addContext();
|
|
82
|
-
}
|
|
83
|
-
/**
|
|
84
|
-
* Removes the current context from CopilotKit
|
|
85
|
-
*/
|
|
86
|
-
removeContext() {
|
|
87
|
-
if (this.contextId) {
|
|
88
|
-
this.copilotkit.copilotkit.removeContext(this.contextId);
|
|
89
|
-
this.contextId = undefined;
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
/**
|
|
93
|
-
* Gets the context object from inputs
|
|
94
|
-
*/
|
|
95
|
-
getContext() {
|
|
96
|
-
// If context object is provided, use it
|
|
97
|
-
if (this.context) {
|
|
98
|
-
return this.context;
|
|
99
|
-
}
|
|
100
|
-
// Otherwise, build from individual inputs
|
|
101
|
-
// Note: null is a valid value, but undefined means not set
|
|
102
|
-
if (this.description !== undefined && this.value !== undefined) {
|
|
103
|
-
return {
|
|
104
|
-
description: this.description,
|
|
105
|
-
value: this.value,
|
|
106
|
-
};
|
|
107
|
-
}
|
|
108
|
-
return null;
|
|
109
|
-
}
|
|
110
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CopilotKitAgentContextDirective, deps: [{ token: CopilotKitService }], target: i0.ɵɵFactoryTarget.Directive });
|
|
111
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: CopilotKitAgentContextDirective, isStandalone: true, selector: "[copilotkitAgentContext]", inputs: { context: ["copilotkitAgentContext", "context"], description: "description", value: "value" }, usesOnChanges: true, ngImport: i0 });
|
|
112
|
-
}
|
|
113
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CopilotKitAgentContextDirective, decorators: [{
|
|
114
|
-
type: Directive,
|
|
115
|
-
args: [{
|
|
116
|
-
selector: "[copilotkitAgentContext]",
|
|
117
|
-
standalone: true,
|
|
118
|
-
}]
|
|
119
|
-
}], ctorParameters: () => [{ type: i1.CopilotKitService, decorators: [{
|
|
120
|
-
type: Inject,
|
|
121
|
-
args: [CopilotKitService]
|
|
122
|
-
}] }], propDecorators: { context: [{
|
|
123
|
-
type: Input,
|
|
124
|
-
args: ["copilotkitAgentContext"]
|
|
125
|
-
}], description: [{
|
|
126
|
-
type: Input
|
|
127
|
-
}], value: [{
|
|
128
|
-
type: Input
|
|
129
|
-
}] } });
|
|
130
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29waWxvdGtpdC1hZ2VudC1jb250ZXh0LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9kaXJlY3RpdmVzL2NvcGlsb3RraXQtYWdlbnQtY29udGV4dC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxLQUFLLEVBS0wsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7QUFHL0Q7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FzQkc7QUFLSCxNQUFNLE9BQU8sK0JBQStCO0lBTUk7SUFIdEMsU0FBUyxDQUFVO0lBRTNCLFlBQzhDLFVBQTZCO1FBQTdCLGVBQVUsR0FBVixVQUFVLENBQW1CO0lBQ3hFLENBQUM7SUFFSjs7O09BR0c7SUFDOEIsT0FBTyxDQUFXO0lBRW5EOzs7T0FHRztJQUNNLFdBQVcsQ0FBVTtJQUU5Qjs7O09BR0c7SUFDTSxLQUFLLENBQU87SUFFckIsUUFBUTtRQUNOLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUNwQixDQUFDO0lBRUQsV0FBVyxDQUFDLE9BQXNCO1FBQ2hDLDBDQUEwQztRQUMxQyxNQUFNLGdCQUFnQixHQUFHLFNBQVMsSUFBSSxPQUFPLENBQUM7UUFDOUMsTUFBTSxvQkFBb0IsR0FBRyxhQUFhLElBQUksT0FBTyxDQUFDO1FBQ3RELE1BQU0sY0FBYyxHQUFHLE9BQU8sSUFBSSxPQUFPLENBQUM7UUFFMUMsSUFBSSxnQkFBZ0IsSUFBSSxvQkFBb0IsSUFBSSxjQUFjLEVBQUUsQ0FBQztZQUMvRCwwREFBMEQ7WUFDMUQsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7Z0JBQ25CLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUN2QixDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFFRDs7T0FFRztJQUNLLFVBQVU7UUFDaEIsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBRXZDLElBQUksWUFBWSxFQUFFLENBQUM7WUFDakIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDdkUsQ0FBQztJQUNILENBQUM7SUFFRDs7T0FFRztJQUNLLGFBQWE7UUFDbkIsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUNwQixDQUFDO0lBRUQ7O09BRUc7SUFDSyxhQUFhO1FBQ25CLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ25CLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDekQsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7UUFDN0IsQ0FBQztJQUNILENBQUM7SUFFRDs7T0FFRztJQUNLLFVBQVU7UUFDaEIsd0NBQXdDO1FBQ3hDLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2pCLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztRQUN0QixDQUFDO1FBRUQsMENBQTBDO1FBQzFDLDJEQUEyRDtRQUMzRCxJQUFJLElBQUksQ0FBQyxXQUFXLEtBQUssU0FBUyxJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDL0QsT0FBTztnQkFDTCxXQUFXLEVBQUUsSUFBSSxDQUFDLFdBQVc7Z0JBQzdCLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSzthQUNsQixDQUFDO1FBQ0osQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQzt3R0FqR1UsK0JBQStCLGtCQU1oQyxpQkFBaUI7NEZBTmhCLCtCQUErQjs7NEZBQS9CLCtCQUErQjtrQkFKM0MsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsMEJBQTBCO29CQUNwQyxVQUFVLEVBQUUsSUFBSTtpQkFDakI7OzBCQU9JLE1BQU07MkJBQUMsaUJBQWlCO3lDQU9NLE9BQU87c0JBQXZDLEtBQUs7dUJBQUMsd0JBQXdCO2dCQU10QixXQUFXO3NCQUFuQixLQUFLO2dCQU1HLEtBQUs7c0JBQWIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIERpcmVjdGl2ZSxcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIFNpbXBsZUNoYW5nZXMsXG4gIEluamVjdCxcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IENvcGlsb3RLaXRTZXJ2aWNlIH0gZnJvbSBcIi4uL2NvcmUvY29waWxvdGtpdC5zZXJ2aWNlXCI7XG5pbXBvcnQgdHlwZSB7IENvbnRleHQgfSBmcm9tIFwiQGFnLXVpL2NsaWVudFwiO1xuXG4vKipcbiAqIERpcmVjdGl2ZSB0byBtYW5hZ2UgYWdlbnQgY29udGV4dCBpbiBDb3BpbG90S2l0LlxuICogQXV0b21hdGljYWxseSBhZGRzIGNvbnRleHQgb24gaW5pdCwgdXBkYXRlcyBvbiBjaGFuZ2VzLCBhbmQgcmVtb3ZlcyBvbiBkZXN0cm95LlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGBodG1sXG4gKiA8IS0tIFdpdGggc2VwYXJhdGUgaW5wdXRzIC0tPlxuICogPGRpdiBjb3BpbG90a2l0QWdlbnRDb250ZXh0XG4gKiAgICAgIFtkZXNjcmlwdGlvbl09XCInVXNlciBwcmVmZXJlbmNlcydcIlxuICogICAgICBbdmFsdWVdPVwidXNlclNldHRpbmdzXCI+XG4gKiA8L2Rpdj5cbiAqXG4gKiA8IS0tIFdpdGggY29udGV4dCBvYmplY3QgLS0+XG4gKiA8ZGl2IFtjb3BpbG90a2l0QWdlbnRDb250ZXh0XT1cImNvbnRleHRPYmplY3RcIj5cbiAqIDwvZGl2PlxuICpcbiAqIDwhLS0gV2l0aCBkeW5hbWljIHZhbHVlcyAtLT5cbiAqIDxkaXYgY29waWxvdGtpdEFnZW50Q29udGV4dFxuICogICAgICBkZXNjcmlwdGlvbj1cIkZvcm0gc3RhdGVcIlxuICogICAgICBbdmFsdWVdPVwiZm9ybURhdGEkIHwgYXN5bmNcIj5cbiAqIDwvZGl2PlxuICogYGBgXG4gKi9cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogXCJbY29waWxvdGtpdEFnZW50Q29udGV4dF1cIixcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgQ29waWxvdEtpdEFnZW50Q29udGV4dERpcmVjdGl2ZVxuICBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3lcbntcbiAgcHJpdmF0ZSBjb250ZXh0SWQ/OiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQEluamVjdChDb3BpbG90S2l0U2VydmljZSkgcHJpdmF0ZSByZWFkb25seSBjb3BpbG90a2l0OiBDb3BpbG90S2l0U2VydmljZVxuICApIHt9XG5cbiAgLyoqXG4gICAqIENvbnRleHQgb2JqZWN0IGNvbnRhaW5pbmcgYm90aCBkZXNjcmlwdGlvbiBhbmQgdmFsdWUuXG4gICAqIElmIHByb3ZpZGVkLCB0aGlzIHRha2VzIHByZWNlZGVuY2Ugb3ZlciBpbmRpdmlkdWFsIGlucHV0cy5cbiAgICovXG4gIEBJbnB1dChcImNvcGlsb3RraXRBZ2VudENvbnRleHRcIikgY29udGV4dD86IENvbnRleHQ7XG5cbiAgLyoqXG4gICAqIERlc2NyaXB0aW9uIG9mIHRoZSBjb250ZXh0LlxuICAgKiBVc2VkIHdoZW4gY29udGV4dCBvYmplY3QgaXMgbm90IHByb3ZpZGVkLlxuICAgKi9cbiAgQElucHV0KCkgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFZhbHVlIG9mIHRoZSBjb250ZXh0LlxuICAgKiBVc2VkIHdoZW4gY29udGV4dCBvYmplY3QgaXMgbm90IHByb3ZpZGVkLlxuICAgKi9cbiAgQElucHV0KCkgdmFsdWU/OiBhbnk7XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5hZGRDb250ZXh0KCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgLy8gQ2hlY2sgaWYgYW55IHJlbGV2YW50IGlucHV0IGhhcyBjaGFuZ2VkXG4gICAgY29uc3QgaGFzQ29udGV4dENoYW5nZSA9IFwiY29udGV4dFwiIGluIGNoYW5nZXM7XG4gICAgY29uc3QgaGFzRGVzY3JpcHRpb25DaGFuZ2UgPSBcImRlc2NyaXB0aW9uXCIgaW4gY2hhbmdlcztcbiAgICBjb25zdCBoYXNWYWx1ZUNoYW5nZSA9IFwidmFsdWVcIiBpbiBjaGFuZ2VzO1xuXG4gICAgaWYgKGhhc0NvbnRleHRDaGFuZ2UgfHwgaGFzRGVzY3JpcHRpb25DaGFuZ2UgfHwgaGFzVmFsdWVDaGFuZ2UpIHtcbiAgICAgIC8vIFNraXAgdGhlIGZpcnN0IGNoYW5nZSBhcyBuZ09uSW5pdCBoYW5kbGVzIGluaXRpYWwgc2V0dXBcbiAgICAgIGlmICh0aGlzLmNvbnRleHRJZCkge1xuICAgICAgICB0aGlzLnVwZGF0ZUNvbnRleHQoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnJlbW92ZUNvbnRleHQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIHRoZSBjb250ZXh0IHRvIENvcGlsb3RLaXRcbiAgICovXG4gIHByaXZhdGUgYWRkQ29udGV4dCgpOiB2b2lkIHtcbiAgICBjb25zdCBjb250ZXh0VG9BZGQgPSB0aGlzLmdldENvbnRleHQoKTtcblxuICAgIGlmIChjb250ZXh0VG9BZGQpIHtcbiAgICAgIHRoaXMuY29udGV4dElkID0gdGhpcy5jb3BpbG90a2l0LmNvcGlsb3RraXQuYWRkQ29udGV4dChjb250ZXh0VG9BZGQpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGVzIHRoZSBjb250ZXh0IGJ5IHJlbW92aW5nIHRoZSBvbGQgb25lIGFuZCBhZGRpbmcgYSBuZXcgb25lXG4gICAqL1xuICBwcml2YXRlIHVwZGF0ZUNvbnRleHQoKTogdm9pZCB7XG4gICAgdGhpcy5yZW1vdmVDb250ZXh0KCk7XG4gICAgdGhpcy5hZGRDb250ZXh0KCk7XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlcyB0aGUgY3VycmVudCBjb250ZXh0IGZyb20gQ29waWxvdEtpdFxuICAgKi9cbiAgcHJpdmF0ZSByZW1vdmVDb250ZXh0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmNvbnRleHRJZCkge1xuICAgICAgdGhpcy5jb3BpbG90a2l0LmNvcGlsb3RraXQucmVtb3ZlQ29udGV4dCh0aGlzLmNvbnRleHRJZCk7XG4gICAgICB0aGlzLmNvbnRleHRJZCA9IHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgY29udGV4dCBvYmplY3QgZnJvbSBpbnB1dHNcbiAgICovXG4gIHByaXZhdGUgZ2V0Q29udGV4dCgpOiBDb250ZXh0IHwgbnVsbCB7XG4gICAgLy8gSWYgY29udGV4dCBvYmplY3QgaXMgcHJvdmlkZWQsIHVzZSBpdFxuICAgIGlmICh0aGlzLmNvbnRleHQpIHtcbiAgICAgIHJldHVybiB0aGlzLmNvbnRleHQ7XG4gICAgfVxuXG4gICAgLy8gT3RoZXJ3aXNlLCBidWlsZCBmcm9tIGluZGl2aWR1YWwgaW5wdXRzXG4gICAgLy8gTm90ZTogbnVsbCBpcyBhIHZhbGlkIHZhbHVlLCBidXQgdW5kZWZpbmVkIG1lYW5zIG5vdCBzZXRcbiAgICBpZiAodGhpcy5kZXNjcmlwdGlvbiAhPT0gdW5kZWZpbmVkICYmIHRoaXMudmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGVzY3JpcHRpb246IHRoaXMuZGVzY3JpcHRpb24sXG4gICAgICAgIHZhbHVlOiB0aGlzLnZhbHVlLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuIl19
|
|
@@ -1,221 +0,0 @@
|
|
|
1
|
-
import { Directive, Input, Output, EventEmitter, signal, Inject, } 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
|
-
import * as i0 from "@angular/core";
|
|
7
|
-
import * as i1 from "../core/copilotkit.service";
|
|
8
|
-
/**
|
|
9
|
-
* Directive to watch and interact with CopilotKit agents.
|
|
10
|
-
* Provides reactive outputs for agent state changes.
|
|
11
|
-
*
|
|
12
|
-
* @example
|
|
13
|
-
* ```html
|
|
14
|
-
* <!-- Basic usage with default agent -->
|
|
15
|
-
* <div copilotkitAgent
|
|
16
|
-
* (agentChange)="onAgentChange($event)"
|
|
17
|
-
* (runningChange)="isProcessing = $event">
|
|
18
|
-
* Content here
|
|
19
|
-
* </div>
|
|
20
|
-
*
|
|
21
|
-
* <!-- With specific agent ID -->
|
|
22
|
-
* <div copilotkitAgent
|
|
23
|
-
* [agentId]="'my-agent-id'"
|
|
24
|
-
* (agentChange)="currentAgent = $event"
|
|
25
|
-
* (runningChange)="onRunningStateChange($event)"
|
|
26
|
-
* (messagesChange)="onMessagesUpdate($event)"
|
|
27
|
-
* (stateChange)="onStateUpdate($event)">
|
|
28
|
-
* Content here
|
|
29
|
-
* </div>
|
|
30
|
-
*
|
|
31
|
-
* <!-- Two-way binding for running state -->
|
|
32
|
-
* <div copilotkitAgent
|
|
33
|
-
* [(running)]="isAgentRunning">
|
|
34
|
-
* <span *ngIf="isAgentRunning">Processing...</span>
|
|
35
|
-
* </div>
|
|
36
|
-
* ```
|
|
37
|
-
*/
|
|
38
|
-
export class CopilotKitAgentDirective {
|
|
39
|
-
copilotkit;
|
|
40
|
-
agent;
|
|
41
|
-
agentSubscription;
|
|
42
|
-
coreUnsubscribe; // subscribe returns function directly
|
|
43
|
-
_isRunning = false;
|
|
44
|
-
runningSignal = signal(false);
|
|
45
|
-
agentSignal = signal(undefined);
|
|
46
|
-
constructor(copilotkit) {
|
|
47
|
-
this.copilotkit = copilotkit;
|
|
48
|
-
}
|
|
49
|
-
/**
|
|
50
|
-
* The ID of the agent to watch.
|
|
51
|
-
* If not provided, uses the default agent ID.
|
|
52
|
-
*/
|
|
53
|
-
agentId;
|
|
54
|
-
/**
|
|
55
|
-
* Alternative input using the directive selector.
|
|
56
|
-
* Allows: [copilotkitAgent]="'agent-id'"
|
|
57
|
-
*/
|
|
58
|
-
set directiveAgentId(value) {
|
|
59
|
-
this.agentId = value || undefined;
|
|
60
|
-
}
|
|
61
|
-
/**
|
|
62
|
-
* Emits when the agent instance changes.
|
|
63
|
-
*/
|
|
64
|
-
agentChange = new EventEmitter();
|
|
65
|
-
/**
|
|
66
|
-
* Emits when the running state changes.
|
|
67
|
-
*/
|
|
68
|
-
runningChange = new EventEmitter();
|
|
69
|
-
/**
|
|
70
|
-
* Observable of the running state.
|
|
71
|
-
*/
|
|
72
|
-
get running$() {
|
|
73
|
-
return toObservable(this.runningSignal);
|
|
74
|
-
}
|
|
75
|
-
/**
|
|
76
|
-
* Observable of the agent instance.
|
|
77
|
-
*/
|
|
78
|
-
get agent$() {
|
|
79
|
-
return toObservable(this.agentSignal);
|
|
80
|
-
}
|
|
81
|
-
/**
|
|
82
|
-
* Two-way binding for running state.
|
|
83
|
-
*/
|
|
84
|
-
get running() {
|
|
85
|
-
return this._isRunning;
|
|
86
|
-
}
|
|
87
|
-
set running(value) {
|
|
88
|
-
// Input setter for two-way binding (though typically read-only from agent)
|
|
89
|
-
this._isRunning = value;
|
|
90
|
-
}
|
|
91
|
-
/**
|
|
92
|
-
* Emits when agent messages change.
|
|
93
|
-
*/
|
|
94
|
-
messagesChange = new EventEmitter();
|
|
95
|
-
/**
|
|
96
|
-
* Emits when agent state changes.
|
|
97
|
-
*/
|
|
98
|
-
stateChange = new EventEmitter();
|
|
99
|
-
/**
|
|
100
|
-
* Emits when a run is initialized.
|
|
101
|
-
*/
|
|
102
|
-
runInitialized = new EventEmitter();
|
|
103
|
-
/**
|
|
104
|
-
* Emits when a run is finalized.
|
|
105
|
-
*/
|
|
106
|
-
runFinalized = new EventEmitter();
|
|
107
|
-
/**
|
|
108
|
-
* Emits when a run fails.
|
|
109
|
-
*/
|
|
110
|
-
runFailed = new EventEmitter();
|
|
111
|
-
ngOnInit() {
|
|
112
|
-
this.setupAgent();
|
|
113
|
-
this.subscribeToCore();
|
|
114
|
-
}
|
|
115
|
-
ngOnChanges(changes) {
|
|
116
|
-
if (changes["agentId"] && !changes["agentId"].firstChange) {
|
|
117
|
-
// Agent ID changed, re-setup
|
|
118
|
-
this.cleanupAgentSubscription();
|
|
119
|
-
this.setupAgent();
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
ngOnDestroy() {
|
|
123
|
-
this.cleanupAgentSubscription();
|
|
124
|
-
this.cleanupCoreSubscription();
|
|
125
|
-
}
|
|
126
|
-
setupAgent() {
|
|
127
|
-
const effectiveAgentId = this.agentId ?? DEFAULT_AGENT_ID;
|
|
128
|
-
this.agent = this.copilotkit.getAgent(effectiveAgentId);
|
|
129
|
-
// Update signals
|
|
130
|
-
this.agentSignal.set(this.agent);
|
|
131
|
-
// Emit initial agent
|
|
132
|
-
this.agentChange.emit(this.agent);
|
|
133
|
-
// Subscribe to agent events
|
|
134
|
-
this.subscribeToAgent();
|
|
135
|
-
}
|
|
136
|
-
subscribeToAgent() {
|
|
137
|
-
this.cleanupAgentSubscription();
|
|
138
|
-
if (this.agent) {
|
|
139
|
-
this.agentSubscription = this.agent.subscribe({
|
|
140
|
-
onMessagesChanged: (params) => {
|
|
141
|
-
this.messagesChange.emit(params);
|
|
142
|
-
},
|
|
143
|
-
onStateChanged: (params) => {
|
|
144
|
-
this.stateChange.emit(params);
|
|
145
|
-
},
|
|
146
|
-
onRunInitialized: (params) => {
|
|
147
|
-
this._isRunning = true;
|
|
148
|
-
this.runningSignal.set(true);
|
|
149
|
-
this.runningChange.emit(true);
|
|
150
|
-
this.runInitialized.emit(params);
|
|
151
|
-
},
|
|
152
|
-
onRunFinalized: (params) => {
|
|
153
|
-
this._isRunning = false;
|
|
154
|
-
this.runningSignal.set(false);
|
|
155
|
-
this.runningChange.emit(false);
|
|
156
|
-
this.runFinalized.emit(params);
|
|
157
|
-
},
|
|
158
|
-
onRunFailed: (params) => {
|
|
159
|
-
this._isRunning = false;
|
|
160
|
-
this.runningSignal.set(false);
|
|
161
|
-
this.runningChange.emit(false);
|
|
162
|
-
this.runFailed.emit(params);
|
|
163
|
-
},
|
|
164
|
-
});
|
|
165
|
-
}
|
|
166
|
-
}
|
|
167
|
-
subscribeToCore() {
|
|
168
|
-
// Subscribe to CopilotKit changes to detect agent updates
|
|
169
|
-
this.coreUnsubscribe = this.copilotkit.copilotkit.subscribe({
|
|
170
|
-
onRuntimeConnectionStatusChanged: ({ status }) => {
|
|
171
|
-
if (status === CopilotKitCoreRuntimeConnectionStatus.Connected ||
|
|
172
|
-
status === CopilotKitCoreRuntimeConnectionStatus.Disconnected) {
|
|
173
|
-
// Re-check agent when runtime connection changes state
|
|
174
|
-
this.setupAgent();
|
|
175
|
-
}
|
|
176
|
-
},
|
|
177
|
-
});
|
|
178
|
-
}
|
|
179
|
-
cleanupAgentSubscription() {
|
|
180
|
-
this.agentSubscription?.unsubscribe();
|
|
181
|
-
this.agentSubscription = undefined;
|
|
182
|
-
}
|
|
183
|
-
cleanupCoreSubscription() {
|
|
184
|
-
this.coreUnsubscribe?.();
|
|
185
|
-
this.coreUnsubscribe = undefined;
|
|
186
|
-
}
|
|
187
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CopilotKitAgentDirective, deps: [{ token: CopilotKitService }], target: i0.ɵɵFactoryTarget.Directive });
|
|
188
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: CopilotKitAgentDirective, isStandalone: true, selector: "[copilotkitAgent]", inputs: { agentId: "agentId", directiveAgentId: ["copilotkitAgent", "directiveAgentId"], running: "running" }, outputs: { agentChange: "agentChange", runningChange: "runningChange", messagesChange: "messagesChange", stateChange: "stateChange", runInitialized: "runInitialized", runFinalized: "runFinalized", runFailed: "runFailed" }, usesOnChanges: true, ngImport: i0 });
|
|
189
|
-
}
|
|
190
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CopilotKitAgentDirective, decorators: [{
|
|
191
|
-
type: Directive,
|
|
192
|
-
args: [{
|
|
193
|
-
selector: "[copilotkitAgent]",
|
|
194
|
-
standalone: true,
|
|
195
|
-
}]
|
|
196
|
-
}], ctorParameters: () => [{ type: i1.CopilotKitService, decorators: [{
|
|
197
|
-
type: Inject,
|
|
198
|
-
args: [CopilotKitService]
|
|
199
|
-
}] }], propDecorators: { agentId: [{
|
|
200
|
-
type: Input
|
|
201
|
-
}], directiveAgentId: [{
|
|
202
|
-
type: Input,
|
|
203
|
-
args: ["copilotkitAgent"]
|
|
204
|
-
}], agentChange: [{
|
|
205
|
-
type: Output
|
|
206
|
-
}], runningChange: [{
|
|
207
|
-
type: Output
|
|
208
|
-
}], running: [{
|
|
209
|
-
type: Input
|
|
210
|
-
}], messagesChange: [{
|
|
211
|
-
type: Output
|
|
212
|
-
}], stateChange: [{
|
|
213
|
-
type: Output
|
|
214
|
-
}], runInitialized: [{
|
|
215
|
-
type: Output
|
|
216
|
-
}], runFinalized: [{
|
|
217
|
-
type: Output
|
|
218
|
-
}], runFailed: [{
|
|
219
|
-
type: Output
|
|
220
|
-
}] } });
|
|
221
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29waWxvdGtpdC1hZ2VudC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZGlyZWN0aXZlcy9jb3BpbG90a2l0LWFnZW50LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULEtBQUssRUFDTCxNQUFNLEVBQ04sWUFBWSxFQUtaLE1BQU0sRUFDTixNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRTFELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRS9ELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzFELE9BQU8sRUFBRSxxQ0FBcUMsRUFBRSxNQUFNLHNCQUFzQixDQUFDOzs7QUFFN0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBNkJHO0FBS0gsTUFBTSxPQUFPLHdCQUF3QjtJQVNXO0lBUnRDLEtBQUssQ0FBaUI7SUFDdEIsaUJBQWlCLENBQStCO0lBQ2hELGVBQWUsQ0FBYyxDQUFDLHNDQUFzQztJQUNwRSxVQUFVLEdBQUcsS0FBSyxDQUFDO0lBQ25CLGFBQWEsR0FBRyxNQUFNLENBQVUsS0FBSyxDQUFDLENBQUM7SUFDdkMsV0FBVyxHQUFHLE1BQU0sQ0FBNEIsU0FBUyxDQUFDLENBQUM7SUFFbkUsWUFDOEMsVUFBNkI7UUFBN0IsZUFBVSxHQUFWLFVBQVUsQ0FBbUI7SUFDeEUsQ0FBQztJQUVKOzs7T0FHRztJQUNNLE9BQU8sQ0FBVTtJQUUxQjs7O09BR0c7SUFDSCxJQUNJLGdCQUFnQixDQUFDLEtBQXlCO1FBQzVDLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxJQUFJLFNBQVMsQ0FBQztJQUNwQyxDQUFDO0lBRUQ7O09BRUc7SUFDTyxXQUFXLEdBQUcsSUFBSSxZQUFZLEVBQTZCLENBQUM7SUFF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LENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyx3QkFBd0I7UUFDOUIsSUFBSSxDQUFDLGlCQUFpQixFQUFFLFdBQVcsRUFBRSxDQUFDO1FBQ3RDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxTQUFTLENBQUM7SUFDckMsQ0FBQztJQUVPLHVCQUF1QjtRQUM3QixJQUFJLENBQUMsZUFBZSxFQUFFLEVBQUUsQ0FBQztRQUN6QixJQUFJLENBQUMsZUFBZSxHQUFHLFNBQVMsQ0FBQztJQUNuQyxDQUFDO3dHQWhMVSx3QkFBd0Isa0JBU3pCLGlCQUFpQjs0RkFUaEIsd0JBQXdCOzs0RkFBeEIsd0JBQXdCO2tCQUpwQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxtQkFBbUI7b0JBQzdCLFVBQVUsRUFBRSxJQUFJO2lCQUNqQjs7MEJBVUksTUFBTTsyQkFBQyxpQkFBaUI7eUNBT2xCLE9BQU87c0JBQWYsS0FBSztnQkFPRixnQkFBZ0I7c0JBRG5CLEtBQUs7dUJBQUMsaUJBQWlCO2dCQVFkLFdBQVc7c0JBQXBCLE1BQU07Z0JBS0csYUFBYTtzQkFBdEIsTUFBTTtnQkFvQkgsT0FBTztzQkFEVixLQUFLO2dCQVlJLGNBQWM7c0JBQXZCLE1BQU07Z0JBS0csV0FBVztzQkFBcEIsTUFBTTtnQkFLRyxjQUFjO3NCQUF2QixNQUFNO2dCQUtHLFlBQVk7c0JBQXJCLE1BQU07Z0JBS0csU0FBUztzQkFBbEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIERpcmVjdGl2ZSxcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgRXZlbnRFbWl0dGVyLFxuICBPbkluaXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBTaW1wbGVDaGFuZ2VzLFxuICBzaWduYWwsXG4gIEluamVjdCxcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IHRvT2JzZXJ2YWJsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcFwiO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQgeyBDb3BpbG90S2l0U2VydmljZSB9IGZyb20gXCIuLi9jb3JlL2NvcGlsb3RraXQuc2VydmljZVwiO1xuaW1wb3J0IHsgQWJzdHJhY3RBZ2VudCB9IGZyb20gXCJAYWctdWkvY2xpZW50XCI7XG5pbXBvcnQgeyBERUZBVUxUX0FHRU5UX0lEIH0gZnJvbSBcIkBjb3BpbG90a2l0bmV4dC9zaGFyZWRcIjtcbmltcG9ydCB7IENvcGlsb3RLaXRDb3JlUnVudGltZUNvbm5lY3Rpb25TdGF0dXMgfSBmcm9tIFwiQGNvcGlsb3RraXRuZXh0L2NvcmVcIjtcblxuLyoqXG4gKiBEaXJlY3RpdmUgdG8gd2F0Y2ggYW5kIGludGVyYWN0IHdpdGggQ29waWxvdEtpdCBhZ2VudHMuXG4gKiBQcm92aWRlcyByZWFjdGl2ZSBvdXRwdXRzIGZvciBhZ2VudCBzdGF0ZSBjaGFuZ2VzLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGBodG1sXG4gKiA8IS0tIEJhc2ljIHVzYWdlIHdpdGggZGVmYXVsdCBhZ2VudCAtLT5cbiAqIDxkaXYgY29waWxvdGtpdEFnZW50XG4gKiAgICAgIChhZ2VudENoYW5nZSk9XCJvbkFnZW50Q2hhbmdlKCRldmVudClcIlxuICogICAgICAocnVubmluZ0NoYW5nZSk9XCJpc1Byb2Nlc3NpbmcgPSAkZXZlbnRcIj5cbiAqICAgQ29udGVudCBoZXJlXG4gKiA8L2Rpdj5cbiAqXG4gKiA8IS0tIFdpdGggc3BlY2lmaWMgYWdlbnQgSUQgLS0+XG4gKiA8ZGl2IGNvcGlsb3RraXRBZ2VudFxuICogICAgICBbYWdlbnRJZF09XCInbXktYWdlbnQtaWQnXCJcbiAqICAgICAgKGFnZW50Q2hhbmdlKT1cImN1cnJlbnRBZ2VudCA9ICRldmVudFwiXG4gKiAgICAgIChydW5uaW5nQ2hhbmdlKT1cIm9uUnVubmluZ1N0YXRlQ2hhbmdlKCRldmVudClcIlxuICogICAgICAobWVzc2FnZXNDaGFuZ2UpPVwib25NZXNzYWdlc1VwZGF0ZSgkZXZlbnQpXCJcbiAqICAgICAgKHN0YXRlQ2hhbmdlKT1cIm9uU3RhdGVVcGRhdGUoJGV2ZW50KVwiPlxuICogICBDb250ZW50IGhlcmVcbiAqIDwvZGl2PlxuICpcbiAqIDwhLS0gVHdvLXdheSBiaW5kaW5nIGZvciBydW5uaW5nIHN0YXRlIC0tPlxuICogPGRpdiBjb3BpbG90a2l0QWdlbnRcbiAqICAgICAgWyhydW5uaW5nKV09XCJpc0FnZW50UnVubmluZ1wiPlxuICogICA8c3BhbiAqbmdJZj1cImlzQWdlbnRSdW5uaW5nXCI+UHJvY2Vzc2luZy4uLjwvc3Bhbj5cbiAqIDwvZGl2PlxuICogYGBgXG4gKi9cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogXCJbY29waWxvdGtpdEFnZW50XVwiLFxuICBzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBDb3BpbG90S2l0QWdlbnREaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSBhZ2VudD86IEFic3RyYWN0QWdlbnQ7XG4gIHByaXZhdGUgYWdlbnRTdWJzY3JpcHRpb24/OiB7IHVuc3Vic2NyaWJlOiAoKSA9PiB2b2lkIH07XG4gIHByaXZhdGUgY29yZVVuc3Vic2NyaWJlPzogKCkgPT4gdm9pZDsgLy8gc3Vic2NyaWJlIHJldHVybnMgZnVuY3Rpb24gZGlyZWN0bHlcbiAgcHJpdmF0ZSBfaXNSdW5uaW5nID0gZmFsc2U7XG4gIHByaXZhdGUgcnVubmluZ1NpZ25hbCA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XG4gIHByaXZhdGUgYWdlbnRTaWduYWwgPSBzaWduYWw8QWJzdHJhY3RBZ2VudCB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KENvcGlsb3RLaXRTZXJ2aWNlKSBwcml2YXRlIHJlYWRvbmx5IGNvcGlsb3RraXQ6IENvcGlsb3RLaXRTZXJ2aWNlXG4gICkge31cblxuICAvKipcbiAgICogVGhlIElEIG9mIHRoZSBhZ2VudCB0byB3YXRjaC5cbiAgICogSWYgbm90IHByb3ZpZGVkLCB1c2VzIHRoZSBkZWZhdWx0IGFnZW50IElELlxuICAgKi9cbiAgQElucHV0KCkgYWdlbnRJZD86IHN0cmluZztcblxuICAvKipcbiAgICogQWx0ZXJuYXRpdmUgaW5wdXQgdXNpbmcgdGhlIGRpcmVjdGl2ZSBzZWxlY3Rvci5cbiAgICogQWxsb3dzOiBbY29waWxvdGtpdEFnZW50XT1cIidhZ2VudC1pZCdcIlxuICAgKi9cbiAgQElucHV0KFwiY29waWxvdGtpdEFnZW50XCIpXG4gIHNldCBkaXJlY3RpdmVBZ2VudElkKHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLmFnZW50SWQgPSB2YWx1ZSB8fCB1bmRlZmluZWQ7XG4gIH1cblxuICAvKipcbiAgICogRW1pdHMgd2hlbiB0aGUgYWdlbnQgaW5zdGFuY2UgY2hhbmdlcy5cbiAgICovXG4gIEBPdXRwdXQoKSBhZ2VudENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8QWJzdHJhY3RBZ2VudCB8IHVuZGVmaW5lZD4oKTtcblxuICAvKipcbiAgICogRW1pdHMgd2hlbiB0aGUgcnVubmluZyBzdGF0ZSBjaGFuZ2VzLlxuICAgKi9cbiAgQE91dHB1dCgpIHJ1bm5pbmdDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgLyoqXG4gICAqIE9ic2VydmFibGUgb2YgdGhlIHJ1bm5pbmcgc3RhdGUuXG4gICAqL1xuICBnZXQgcnVubmluZyQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRvT2JzZXJ2YWJsZSh0aGlzLnJ1bm5pbmdTaWduYWwpO1xuICB9XG5cbiAgLyoqXG4gICAqIE9ic2VydmFibGUgb2YgdGhlIGFnZW50IGluc3RhbmNlLlxuICAgKi9cbiAgZ2V0IGFnZW50JCgpOiBPYnNlcnZhYmxlPEFic3RyYWN0QWdlbnQgfCB1bmRlZmluZWQ+IHtcbiAgICByZXR1cm4gdG9PYnNlcnZhYmxlKHRoaXMuYWdlbnRTaWduYWwpO1xuICB9XG5cbiAgLyoqXG4gICAqIFR3by13YXkgYmluZGluZyBmb3IgcnVubmluZyBzdGF0ZS5cbiAgICovXG4gIEBJbnB1dCgpXG4gIGdldCBydW5uaW5nKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9pc1J1bm5pbmc7XG4gIH1cbiAgc2V0IHJ1bm5pbmcodmFsdWU6IGJvb2xlYW4pIHtcbiAgICAvLyBJbnB1dCBzZXR0ZXIgZm9yIHR3by13YXkgYmluZGluZyAodGhvdWdoIHR5cGljYWxseSByZWFkLW9ubHkgZnJvbSBhZ2VudClcbiAgICB0aGlzLl9pc1J1bm5pbmcgPSB2YWx1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFbWl0cyB3aGVuIGFnZW50IG1lc3NhZ2VzIGNoYW5nZS5cbiAgICovXG4gIEBPdXRwdXQoKSBtZXNzYWdlc0NoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIC8qKlxuICAgKiBFbWl0cyB3aGVuIGFnZW50IHN0YXRlIGNoYW5nZXMuXG4gICAqL1xuICBAT3V0cHV0KCkgc3RhdGVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICAvKipcbiAgICogRW1pdHMgd2hlbiBhIHJ1biBpcyBpbml0aWFsaXplZC5cbiAgICovXG4gIEBPdXRwdXQoKSBydW5Jbml0aWFsaXplZCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIC8qKlxuICAgKiBFbWl0cyB3aGVuIGEgcnVuIGlzIGZpbmFsaXplZC5cbiAgICovXG4gIEBPdXRwdXQoKSBydW5GaW5hbGl6ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICAvKipcbiAgICogRW1pdHMgd2hlbiBhIHJ1biBmYWlscy5cbiAgICovXG4gIEBPdXRwdXQoKSBydW5GYWlsZWQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnNldHVwQWdlbnQoKTtcbiAgICB0aGlzLnN1YnNjcmliZVRvQ29yZSgpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzW1wiYWdlbnRJZFwiXSAmJiAhY2hhbmdlc1tcImFnZW50SWRcIl0uZmlyc3RDaGFuZ2UpIHtcbiAgICAgIC8vIEFnZW50IElEIGNoYW5nZWQsIHJlLXNldHVwXG4gICAgICB0aGlzLmNsZWFudXBBZ2VudFN1YnNjcmlwdGlvbigpO1xuICAgICAgdGhpcy5zZXR1cEFnZW50KCk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5jbGVhbnVwQWdlbnRTdWJzY3JpcHRpb24oKTtcbiAgICB0aGlzLmNsZWFudXBDb3JlU3Vic2NyaXB0aW9uKCk7XG4gIH1cblxuICBwcml2YXRlIHNldHVwQWdlbnQoKTogdm9pZCB7XG4gICAgY29uc3QgZWZmZWN0aXZlQWdlbnRJZCA9IHRoaXMuYWdlbnRJZCA/PyBERUZBVUxUX0FHRU5UX0lEO1xuICAgIHRoaXMuYWdlbnQgPSB0aGlzLmNvcGlsb3RraXQuZ2V0QWdlbnQoZWZmZWN0aXZlQWdlbnRJZCk7XG5cbiAgICAvLyBVcGRhdGUgc2lnbmFsc1xuICAgIHRoaXMuYWdlbnRTaWduYWwuc2V0KHRoaXMuYWdlbnQpO1xuXG4gICAgLy8gRW1pdCBpbml0aWFsIGFnZW50XG4gICAgdGhpcy5hZ2VudENoYW5nZS5lbWl0KHRoaXMuYWdlbnQpO1xuXG4gICAgLy8gU3Vic2NyaWJlIHRvIGFnZW50IGV2ZW50c1xuICAgIHRoaXMuc3Vic2NyaWJlVG9BZ2VudCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBzdWJzY3JpYmVUb0FnZW50KCk6IHZvaWQge1xuICAgIHRoaXMuY2xlYW51cEFnZW50U3Vic2NyaXB0aW9uKCk7XG5cbiAgICBpZiAodGhpcy5hZ2VudCkge1xuICAgICAgdGhpcy5hZ2VudFN1YnNjcmlwdGlvbiA9IHRoaXMuYWdlbnQuc3Vic2NyaWJlKHtcbiAgICAgICAgb25NZXNzYWdlc0NoYW5nZWQ6IChwYXJhbXMpID0+IHtcbiAgICAgICAgICB0aGlzLm1lc3NhZ2VzQ2hhbmdlLmVtaXQocGFyYW1zKTtcbiAgICAgICAgfSxcbiAgICAgICAgb25TdGF0ZUNoYW5nZWQ6IChwYXJhbXMpID0+IHtcbiAgICAgICAgICB0aGlzLnN0YXRlQ2hhbmdlLmVtaXQocGFyYW1zKTtcbiAgICAgICAgfSxcbiAgICAgICAgb25SdW5Jbml0aWFsaXplZDogKHBhcmFtcykgPT4ge1xuICAgICAgICAgIHRoaXMuX2lzUnVubmluZyA9IHRydWU7XG4gICAgICAgICAgdGhpcy5ydW5uaW5nU2lnbmFsLnNldCh0cnVlKTtcbiAgICAgICAgICB0aGlzLnJ1bm5pbmdDaGFuZ2UuZW1pdCh0cnVlKTtcbiAgICAgICAgICB0aGlzLnJ1bkluaXRpYWxpemVkLmVtaXQocGFyYW1zKTtcbiAgICAgICAgfSxcbiAgICAgICAgb25SdW5GaW5hbGl6ZWQ6IChwYXJhbXMpID0+IHtcbiAgICAgICAgICB0aGlzLl9pc1J1bm5pbmcgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLnJ1bm5pbmdTaWduYWwuc2V0KGZhbHNlKTtcbiAgICAgICAgICB0aGlzLnJ1bm5pbmdDaGFuZ2UuZW1pdChmYWxzZSk7XG4gICAgICAgICAgdGhpcy5ydW5GaW5hbGl6ZWQuZW1pdChwYXJhbXMpO1xuICAgICAgICB9LFxuICAgICAgICBvblJ1bkZhaWxlZDogKHBhcmFtcykgPT4ge1xuICAgICAgICAgIHRoaXMuX2lzUnVubmluZyA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMucnVubmluZ1NpZ25hbC5zZXQoZmFsc2UpO1xuICAgICAgICAgIHRoaXMucnVubmluZ0NoYW5nZS5lbWl0KGZhbHNlKTtcbiAgICAgICAgICB0aGlzLnJ1bkZhaWxlZC5lbWl0KHBhcmFtcyk7XG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHN1YnNjcmliZVRvQ29yZSgpOiB2b2lkIHtcbiAgICAvLyBTdWJzY3JpYmUgdG8gQ29waWxvdEtpdCBjaGFuZ2VzIHRvIGRldGVjdCBhZ2VudCB1cGRhdGVzXG4gICAgdGhpcy5jb3JlVW5zdWJzY3JpYmUgPSB0aGlzLmNvcGlsb3RraXQuY29waWxvdGtpdC5zdWJzY3JpYmUoe1xuICAgICAgb25SdW50aW1lQ29ubmVjdGlvblN0YXR1c0NoYW5nZWQ6ICh7IHN0YXR1cyB9KSA9PiB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICBzdGF0dXMgPT09IENvcGlsb3RLaXRDb3JlUnVudGltZUNvbm5lY3Rpb25TdGF0dXMuQ29ubmVjdGVkIHx8XG4gICAgICAgICAgc3RhdHVzID09PSBDb3BpbG90S2l0Q29yZVJ1bnRpbWVDb25uZWN0aW9uU3RhdHVzLkRpc2Nvbm5lY3RlZFxuICAgICAgICApIHtcbiAgICAgICAgICAvLyBSZS1jaGVjayBhZ2VudCB3aGVuIHJ1bnRpbWUgY29ubmVjdGlvbiBjaGFuZ2VzIHN0YXRlXG4gICAgICAgICAgdGhpcy5zZXR1cEFnZW50KCk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGNsZWFudXBBZ2VudFN1YnNjcmlwdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLmFnZW50U3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuYWdlbnRTdWJzY3JpcHRpb24gPSB1bmRlZmluZWQ7XG4gIH1cblxuICBwcml2YXRlIGNsZWFudXBDb3JlU3Vic2NyaXB0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMuY29yZVVuc3Vic2NyaWJlPy4oKTtcbiAgICB0aGlzLmNvcmVVbnN1YnNjcmliZSA9IHVuZGVmaW5lZDtcbiAgfVxufVxuIl19
|
|
@@ -1,218 +0,0 @@
|
|
|
1
|
-
import { Directive, Input, Output, EventEmitter, Optional, isDevMode, Inject, } from "@angular/core";
|
|
2
|
-
import { CopilotChatConfigurationService } from "../core/chat-configuration/chat-configuration.service";
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
import * as i1 from "../core/chat-configuration/chat-configuration.service";
|
|
5
|
-
/**
|
|
6
|
-
* Directive for configuring CopilotKit chat settings declaratively in templates.
|
|
7
|
-
* Works with the CopilotChatConfigurationService to provide reactive chat configuration.
|
|
8
|
-
*
|
|
9
|
-
* @example
|
|
10
|
-
* ```html
|
|
11
|
-
* <!-- Basic usage with individual inputs -->
|
|
12
|
-
* <div copilotkitChatConfig
|
|
13
|
-
* [labels]="customLabels"
|
|
14
|
-
* [inputValue]="currentInput"
|
|
15
|
-
* (submitInput)="onSubmit($event)"
|
|
16
|
-
* (changeInput)="onChange($event)">
|
|
17
|
-
* <!-- Chat UI components -->
|
|
18
|
-
* </div>
|
|
19
|
-
*
|
|
20
|
-
* <!-- Using configuration object -->
|
|
21
|
-
* <div [copilotkitChatConfig]="chatConfig">
|
|
22
|
-
* <!-- Chat UI components -->
|
|
23
|
-
* </div>
|
|
24
|
-
*
|
|
25
|
-
* <!-- Two-way binding for input value -->
|
|
26
|
-
* <div copilotkitChatConfig
|
|
27
|
-
* [(value)]="chatInput"
|
|
28
|
-
* (submitInput)="handleSubmit($event)">
|
|
29
|
-
* <!-- Chat UI components -->
|
|
30
|
-
* </div>
|
|
31
|
-
* ```
|
|
32
|
-
*/
|
|
33
|
-
export class CopilotKitChatConfigDirective {
|
|
34
|
-
chatConfig;
|
|
35
|
-
_value;
|
|
36
|
-
submitHandler;
|
|
37
|
-
changeHandler;
|
|
38
|
-
constructor(chatConfig) {
|
|
39
|
-
this.chatConfig = chatConfig;
|
|
40
|
-
}
|
|
41
|
-
/**
|
|
42
|
-
* Partial labels to override defaults
|
|
43
|
-
*/
|
|
44
|
-
labels;
|
|
45
|
-
/**
|
|
46
|
-
* The current input value
|
|
47
|
-
*/
|
|
48
|
-
inputValue;
|
|
49
|
-
/**
|
|
50
|
-
* Event emitted when input is submitted
|
|
51
|
-
*/
|
|
52
|
-
submitInput = new EventEmitter();
|
|
53
|
-
/**
|
|
54
|
-
* Event emitted when input value changes
|
|
55
|
-
*/
|
|
56
|
-
changeInput = new EventEmitter();
|
|
57
|
-
/**
|
|
58
|
-
* Alternative: accept full configuration object
|
|
59
|
-
*/
|
|
60
|
-
set config(value) {
|
|
61
|
-
if (value) {
|
|
62
|
-
if (value.labels)
|
|
63
|
-
this.labels = value.labels;
|
|
64
|
-
if (value.inputValue !== undefined)
|
|
65
|
-
this.inputValue = value.inputValue;
|
|
66
|
-
// Store handlers for later setup
|
|
67
|
-
if (value.onSubmitInput)
|
|
68
|
-
this.submitHandler = value.onSubmitInput;
|
|
69
|
-
if (value.onChangeInput)
|
|
70
|
-
this.changeHandler = value.onChangeInput;
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
/**
|
|
74
|
-
* Two-way binding for input value
|
|
75
|
-
*/
|
|
76
|
-
get value() {
|
|
77
|
-
return this._value;
|
|
78
|
-
}
|
|
79
|
-
set value(v) {
|
|
80
|
-
this._value = v;
|
|
81
|
-
this.valueChange.emit(v);
|
|
82
|
-
if (v !== undefined) {
|
|
83
|
-
this.updateInputValue(v);
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
/**
|
|
87
|
-
* Two-way binding output for value
|
|
88
|
-
*/
|
|
89
|
-
valueChange = new EventEmitter();
|
|
90
|
-
ngOnInit() {
|
|
91
|
-
if (!this.chatConfig) {
|
|
92
|
-
if (isDevMode()) {
|
|
93
|
-
console.warn("CopilotKitChatConfigDirective: No CopilotChatConfigurationService found. " +
|
|
94
|
-
"Make sure to provide it using provideCopilotChatConfiguration().");
|
|
95
|
-
}
|
|
96
|
-
return;
|
|
97
|
-
}
|
|
98
|
-
this.updateConfiguration();
|
|
99
|
-
this.setupHandlers();
|
|
100
|
-
}
|
|
101
|
-
ngOnChanges(changes) {
|
|
102
|
-
if (!this.chatConfig) {
|
|
103
|
-
return;
|
|
104
|
-
}
|
|
105
|
-
const relevantChanges = changes["labels"] || changes["inputValue"] || changes["value"];
|
|
106
|
-
if (relevantChanges && !relevantChanges.firstChange) {
|
|
107
|
-
this.updateConfiguration();
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
ngOnDestroy() {
|
|
111
|
-
// Cleanup if needed
|
|
112
|
-
}
|
|
113
|
-
/**
|
|
114
|
-
* Submit the current input value
|
|
115
|
-
*/
|
|
116
|
-
submit(value) {
|
|
117
|
-
// Emit to template binding
|
|
118
|
-
this.submitInput.emit(value);
|
|
119
|
-
// Call service handler
|
|
120
|
-
if (this.chatConfig) {
|
|
121
|
-
this.chatConfig.submitInput(value);
|
|
122
|
-
}
|
|
123
|
-
// Call provided handler
|
|
124
|
-
if (this.submitHandler) {
|
|
125
|
-
this.submitHandler(value);
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
/**
|
|
129
|
-
* Handle input value change
|
|
130
|
-
*/
|
|
131
|
-
change(value) {
|
|
132
|
-
// Update internal value
|
|
133
|
-
this._value = value;
|
|
134
|
-
// Emit to template bindings
|
|
135
|
-
this.changeInput.emit(value);
|
|
136
|
-
this.valueChange.emit(value);
|
|
137
|
-
// Call service handler
|
|
138
|
-
if (this.chatConfig) {
|
|
139
|
-
this.chatConfig.changeInput(value);
|
|
140
|
-
}
|
|
141
|
-
// Call provided handler
|
|
142
|
-
if (this.changeHandler) {
|
|
143
|
-
this.changeHandler(value);
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
updateConfiguration() {
|
|
147
|
-
if (!this.chatConfig) {
|
|
148
|
-
return;
|
|
149
|
-
}
|
|
150
|
-
// Update labels if provided
|
|
151
|
-
if (this.labels) {
|
|
152
|
-
this.chatConfig.setLabels(this.labels);
|
|
153
|
-
}
|
|
154
|
-
// Update input value if provided
|
|
155
|
-
const valueToSet = this._value !== undefined ? this._value : this.inputValue;
|
|
156
|
-
if (valueToSet !== undefined) {
|
|
157
|
-
this.chatConfig.setInputValue(valueToSet);
|
|
158
|
-
}
|
|
159
|
-
}
|
|
160
|
-
updateInputValue(value) {
|
|
161
|
-
if (this.chatConfig) {
|
|
162
|
-
this.chatConfig.setInputValue(value);
|
|
163
|
-
this.chatConfig.changeInput(value);
|
|
164
|
-
}
|
|
165
|
-
}
|
|
166
|
-
setupHandlers() {
|
|
167
|
-
if (!this.chatConfig) {
|
|
168
|
-
return;
|
|
169
|
-
}
|
|
170
|
-
// Create composite handlers that call both service and directive handlers
|
|
171
|
-
const submitComposite = (value) => {
|
|
172
|
-
this.submitInput.emit(value);
|
|
173
|
-
if (this.submitHandler) {
|
|
174
|
-
this.submitHandler(value);
|
|
175
|
-
}
|
|
176
|
-
};
|
|
177
|
-
const changeComposite = (value) => {
|
|
178
|
-
this.changeInput.emit(value);
|
|
179
|
-
this.valueChange.emit(value);
|
|
180
|
-
if (this.changeHandler) {
|
|
181
|
-
this.changeHandler(value);
|
|
182
|
-
}
|
|
183
|
-
};
|
|
184
|
-
// Set handlers on the service
|
|
185
|
-
this.chatConfig.setSubmitHandler(submitComposite);
|
|
186
|
-
this.chatConfig.setChangeHandler(changeComposite);
|
|
187
|
-
}
|
|
188
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CopilotKitChatConfigDirective, deps: [{ token: CopilotChatConfigurationService, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
|
|
189
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: CopilotKitChatConfigDirective, isStandalone: true, selector: "[copilotkitChatConfig]", inputs: { labels: "labels", inputValue: "inputValue", config: ["copilotkitChatConfig", "config"], value: "value" }, outputs: { submitInput: "submitInput", changeInput: "changeInput", valueChange: "valueChange" }, usesOnChanges: true, ngImport: i0 });
|
|
190
|
-
}
|
|
191
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CopilotKitChatConfigDirective, decorators: [{
|
|
192
|
-
type: Directive,
|
|
193
|
-
args: [{
|
|
194
|
-
selector: "[copilotkitChatConfig]",
|
|
195
|
-
standalone: true,
|
|
196
|
-
}]
|
|
197
|
-
}], ctorParameters: () => [{ type: i1.CopilotChatConfigurationService, decorators: [{
|
|
198
|
-
type: Optional
|
|
199
|
-
}, {
|
|
200
|
-
type: Inject,
|
|
201
|
-
args: [CopilotChatConfigurationService]
|
|
202
|
-
}] }], propDecorators: { labels: [{
|
|
203
|
-
type: Input
|
|
204
|
-
}], inputValue: [{
|
|
205
|
-
type: Input
|
|
206
|
-
}], submitInput: [{
|
|
207
|
-
type: Output
|
|
208
|
-
}], changeInput: [{
|
|
209
|
-
type: Output
|
|
210
|
-
}], config: [{
|
|
211
|
-
type: Input,
|
|
212
|
-
args: ["copilotkitChatConfig"]
|
|
213
|
-
}], value: [{
|
|
214
|
-
type: Input
|
|
215
|
-
}], valueChange: [{
|
|
216
|
-
type: Output
|
|
217
|
-
}] } });
|
|
218
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29waWxvdGtpdC1jaGF0LWNvbmZpZy5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZGlyZWN0aXZlcy9jb3BpbG90a2l0LWNoYXQtY29uZmlnLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULEtBQUssRUFDTCxNQUFNLEVBQ04sWUFBWSxFQUtaLFFBQVEsRUFDUixTQUFTLEVBQ1QsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLHVEQUF1RCxDQUFDOzs7QUFNeEc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTJCRztBQUtILE1BQU0sT0FBTyw2QkFBNkI7SUFVckI7SUFQWCxNQUFNLENBQVU7SUFDaEIsYUFBYSxDQUEyQjtJQUN4QyxhQUFhLENBQTJCO0lBRWhELFlBR21CLFVBQWtEO1FBQWxELGVBQVUsR0FBVixVQUFVLENBQXdDO0lBQ2xFLENBQUM7SUFFSjs7T0FFRztJQUNNLE1BQU0sQ0FBOEI7SUFFN0M7O09BRUc7SUFDTSxVQUFVLENBQVU7SUFFN0I7O09BRUc7SUFDTyxXQUFXLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztJQUVuRDs7T0FFRztJQUNPLFdBQVcsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO0lBRW5EOztPQUVHO0lBQ0gsSUFDSSxNQUFNLENBQUMsS0FBMkM7UUFDcEQsSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUNWLElBQUksS0FBSyxDQUFDLE1BQU07Z0JBQUUsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDO1lBQzdDLElBQUksS0FBSyxDQUFDLFVBQVUsS0FBSyxTQUFTO2dCQUFFLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDLFVBQVUsQ0FBQztZQUN2RSxpQ0FBaUM7WUFDakMsSUFBSSxLQUFLLENBQUMsYUFBYTtnQkFBRSxJ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Q0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDN0IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDN0IsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7Z0JBQ3ZCLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDNUIsQ0FBQztRQUNILENBQUMsQ0FBQztRQUVGLDhCQUE4QjtRQUM5QixJQUFJLENBQUMsVUFBVSxDQUFDLGdCQUFnQixDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ2xELElBQUksQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDcEQsQ0FBQzt3R0E1TFUsNkJBQTZCLGtCQVM5QiwrQkFBK0I7NEZBVDlCLDZCQUE2Qjs7NEZBQTdCLDZCQUE2QjtrQkFKekMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsd0JBQXdCO29CQUNsQyxVQUFVLEVBQUUsSUFBSTtpQkFDakI7OzBCQVNJLFFBQVE7OzBCQUNSLE1BQU07MkJBQUMsK0JBQStCO3lDQU9oQyxNQUFNO3NCQUFkLEtBQUs7Z0JBS0csVUFBVTtzQkFBbEIsS0FBSztnQkFLSSxXQUFXO3NCQUFwQixNQUFNO2dCQUtHLFdBQVc7c0JBQXBCLE1BQU07Z0JBTUgsTUFBTTtzQkFEVCxLQUFLO3VCQUFDLHNCQUFzQjtnQkFlekIsS0FBSztzQkFEUixLQUFLO2dCQWVJLFdBQVc7c0JBQXBCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBEaXJlY3RpdmUsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIEV2ZW50RW1pdHRlcixcbiAgT25Jbml0LFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgT3B0aW9uYWwsXG4gIGlzRGV2TW9kZSxcbiAgSW5qZWN0LFxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgQ29waWxvdENoYXRDb25maWd1cmF0aW9uU2VydmljZSB9IGZyb20gXCIuLi9jb3JlL2NoYXQtY29uZmlndXJhdGlvbi9jaGF0LWNvbmZpZ3VyYXRpb24uc2VydmljZVwiO1xuaW1wb3J0IHtcbiAgQ29waWxvdENoYXRDb25maWd1cmF0aW9uLFxuICBDb3BpbG90Q2hhdExhYmVscyxcbn0gZnJvbSBcIi4uL2NvcmUvY2hhdC1jb25maWd1cmF0aW9uL2NoYXQtY29uZmlndXJhdGlvbi50eXBlc1wiO1xuXG4vKipcbiAqIERpcmVjdGl2ZSBmb3IgY29uZmlndXJpbmcgQ29waWxvdEtpdCBjaGF0IHNldHRpbmdzIGRlY2xhcmF0aXZlbHkgaW4gdGVtcGxhdGVzLlxuICogV29ya3Mgd2l0aCB0aGUgQ29waWxvdENoYXRDb25maWd1cmF0aW9uU2VydmljZSB0byBwcm92aWRlIHJlYWN0aXZlIGNoYXQgY29uZmlndXJhdGlvbi5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgaHRtbFxuICogPCEtLSBCYXNpYyB1c2FnZSB3aXRoIGluZGl2aWR1YWwgaW5wdXRzIC0tPlxuICogPGRpdiBjb3BpbG90a2l0Q2hhdENvbmZpZ1xuICogICAgICBbbGFiZWxzXT1cImN1c3RvbUxhYmVsc1wiXG4gKiAgICAgIFtpbnB1dFZhbHVlXT1cImN1cnJlbnRJbnB1dFwiXG4gKiAgICAgIChzdWJtaXRJbnB1dCk9XCJvblN1Ym1pdCgkZXZlbnQpXCJcbiAqICAgICAgKGNoYW5nZUlucHV0KT1cIm9uQ2hhbmdlKCRldmVudClcIj5cbiAqICAgPCEtLSBDaGF0IFVJIGNvbXBvbmVudHMgLS0+XG4gKiA8L2Rpdj5cbiAqXG4gKiA8IS0tIFVzaW5nIGNvbmZpZ3VyYXRpb24gb2JqZWN0IC0tPlxuICogPGRpdiBbY29waWxvdGtpdENoYXRDb25maWddPVwiY2hhdENvbmZpZ1wiPlxuICogICA8IS0tIENoYXQgVUkgY29tcG9uZW50cyAtLT5cbiAqIDwvZGl2PlxuICpcbiAqIDwhLS0gVHdvLXdheSBiaW5kaW5nIGZvciBpbnB1dCB2YWx1ZSAtLT5cbiAqIDxkaXYgY29waWxvdGtpdENoYXRDb25maWdcbiAqICAgICAgWyh2YWx1ZSldPVwiY2hhdElucHV0XCJcbiAqICAgICAgKHN1Ym1pdElucHV0KT1cImhhbmRsZVN1Ym1pdCgkZXZlbnQpXCI+XG4gKiAgIDwhLS0gQ2hhdCBVSSBjb21wb25lbnRzIC0tPlxuICogPC9kaXY+XG4gKiBgYGBcbiAqL1xuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiBcIltjb3BpbG90a2l0Q2hhdENvbmZpZ11cIixcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgQ29waWxvdEtpdENoYXRDb25maWdEaXJlY3RpdmVcbiAgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95XG57XG4gIHByaXZhdGUgX3ZhbHVlPzogc3RyaW5nO1xuICBwcml2YXRlIHN1Ym1pdEhhbmRsZXI/OiAodmFsdWU6IHN0cmluZykgPT4gdm9pZDtcbiAgcHJpdmF0ZSBjaGFuZ2VIYW5kbGVyPzogKHZhbHVlOiBzdHJpbmcpID0+IHZvaWQ7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQE9wdGlvbmFsKClcbiAgICBASW5qZWN0KENvcGlsb3RDaGF0Q29uZmlndXJhdGlvblNlcnZpY2UpXG4gICAgcHJpdmF0ZSByZWFkb25seSBjaGF0Q29uZmlnOiBDb3BpbG90Q2hhdENvbmZpZ3VyYXRpb25TZXJ2aWNlIHwgbnVsbFxuICApIHt9XG5cbiAgLyoqXG4gICAqIFBhcnRpYWwgbGFiZWxzIHRvIG92ZXJyaWRlIGRlZmF1bHRzXG4gICAqL1xuICBASW5wdXQoKSBsYWJlbHM/OiBQYXJ0aWFsPENvcGlsb3RDaGF0TGFiZWxzPjtcblxuICAvKipcbiAgICogVGhlIGN1cnJlbnQgaW5wdXQgdmFsdWVcbiAgICovXG4gIEBJbnB1dCgpIGlucHV0VmFsdWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEV2ZW50IGVtaXR0ZWQgd2hlbiBpbnB1dCBpcyBzdWJtaXR0ZWRcbiAgICovXG4gIEBPdXRwdXQoKSBzdWJtaXRJbnB1dCA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuXG4gIC8qKlxuICAgKiBFdmVudCBlbWl0dGVkIHdoZW4gaW5wdXQgdmFsdWUgY2hhbmdlc1xuICAgKi9cbiAgQE91dHB1dCgpIGNoYW5nZUlucHV0ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgLyoqXG4gICAqIEFsdGVybmF0aXZlOiBhY2NlcHQgZnVsbCBjb25maWd1cmF0aW9uIG9iamVjdFxuICAgKi9cbiAgQElucHV0KFwiY29waWxvdGtpdENoYXRDb25maWdcIilcbiAgc2V0IGNvbmZpZyh2YWx1ZTogQ29waWxvdENoYXRDb25maWd1cmF0aW9uIHwgdW5kZWZpbmVkKSB7XG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICBpZiAodmFsdWUubGFiZWxzKSB0aGlzLmxhYmVscyA9IHZhbHVlLmxhYmVscztcbiAgICAgIGlmICh2YWx1ZS5pbnB1dFZhbHVlICE9PSB1bmRlZmluZWQpIHRoaXMuaW5wdXRWYWx1ZSA9IHZhbHVlLmlucHV0VmFsdWU7XG4gICAgICAvLyBTdG9yZSBoYW5kbGVycyBmb3IgbGF0ZXIgc2V0dXBcbiAgICAgIGlmICh2YWx1ZS5vblN1Ym1pdElucHV0KSB0aGlzLnN1Ym1pdEhhbmRsZXIgPSB2YWx1ZS5vblN1Ym1pdElucHV0O1xuICAgICAgaWYgKHZhbHVlLm9uQ2hhbmdlSW5wdXQpIHRoaXMuY2hhbmdlSGFuZGxlciA9IHZhbHVlLm9uQ2hhbmdlSW5wdXQ7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFR3by13YXkgYmluZGluZyBmb3IgaW5wdXQgdmFsdWVcbiAgICovXG4gIEBJbnB1dCgpXG4gIGdldCB2YWx1ZSgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl92YWx1ZTtcbiAgfVxuICBzZXQgdmFsdWUodjogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy5fdmFsdWUgPSB2O1xuICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh2KTtcbiAgICBpZiAodiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLnVwZGF0ZUlucHV0VmFsdWUodik7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFR3by13YXkgYmluZGluZyBvdXRwdXQgZm9yIHZhbHVlXG4gICAqL1xuICBAT3V0cHV0KCkgdmFsdWVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZyB8IHVuZGVmaW5lZD4oKTtcblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuY2hhdENvbmZpZykge1xuICAgICAgaWYgKGlzRGV2TW9kZSgpKSB7XG4gICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICBcIkNvcGlsb3RLaXRDaGF0Q29uZmlnRGlyZWN0aXZlOiBObyBDb3BpbG90Q2hhdENvbmZpZ3VyYXRpb25TZXJ2aWNlIGZvdW5kLiBcIiArXG4gICAgICAgICAgICBcIk1ha2Ugc3VyZSB0byBwcm92aWRlIGl0IHVzaW5nIHByb3ZpZGVDb3BpbG90Q2hhdENvbmZpZ3VyYXRpb24oKS5cIlxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMudXBkYXRlQ29uZmlndXJhdGlvbigpO1xuICAgIHRoaXMuc2V0dXBIYW5kbGVycygpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmICghdGhpcy5jaGF0Q29uZmlnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgcmVsZXZhbnRDaGFuZ2VzID1cbiAgICAgIGNoYW5nZXNbXCJsYWJlbHNcIl0gfHwgY2hhbmdlc1tcImlucHV0VmFsdWVcIl0gfHwgY2hhbmdlc1tcInZhbHVlXCJdO1xuXG4gICAgaWYgKHJlbGV2YW50Q2hhbmdlcyAmJiAhcmVsZXZhbnRDaGFuZ2VzLmZpcnN0Q2hhbmdlKSB7XG4gICAgICB0aGlzLnVwZGF0ZUNvbmZpZ3VyYXRpb24oKTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAvLyBDbGVhbnVwIGlmIG5lZWRlZFxuICB9XG5cbiAgLyoqXG4gICAqIFN1Ym1pdCB0aGUgY3VycmVudCBpbnB1dCB2YWx1ZVxuICAgKi9cbiAgc3VibWl0KHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAvLyBFbWl0IHRvIHRlbXBsYXRlIGJpbmRpbmdcbiAgICB0aGlzLnN1Ym1pdElucHV0LmVtaXQodmFsdWUpO1xuXG4gICAgLy8gQ2FsbCBzZXJ2aWNlIGhhbmRsZXJcbiAgICBpZiAodGhpcy5jaGF0Q29uZmlnKSB7XG4gICAgICB0aGlzLmNoYXRDb25maWcuc3VibWl0SW5wdXQodmFsdWUpO1xuICAgIH1cblxuICAgIC8vIENhbGwgcHJvdmlkZWQgaGFuZGxlclxuICAgIGlmICh0aGlzLnN1Ym1pdEhhbmRsZXIpIHtcbiAgICAgIHRoaXMuc3VibWl0SGFuZGxlcih2YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZSBpbnB1dCB2YWx1ZSBjaGFuZ2VcbiAgICovXG4gIGNoYW5nZSh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgLy8gVXBkYXRlIGludGVybmFsIHZhbHVlXG4gICAgdGhpcy5fdmFsdWUgPSB2YWx1ZTtcblxuICAgIC8vIEVtaXQgdG8gdGVtcGxhdGUgYmluZGluZ3NcbiAgICB0aGlzLmNoYW5nZUlucHV0LmVtaXQodmFsdWUpO1xuICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh2YWx1ZSk7XG5cbiAgICAvLyBDYWxsIHNlcnZpY2UgaGFuZGxlclxuICAgIGlmICh0aGlzLmNoYXRDb25maWcpIHtcbiAgICAgIHRoaXMuY2hhdENvbmZpZy5jaGFuZ2VJbnB1dCh2YWx1ZSk7XG4gICAgfVxuXG4gICAgLy8gQ2FsbCBwcm92aWRlZCBoYW5kbGVyXG4gICAgaWYgKHRoaXMuY2hhbmdlSGFuZGxlcikge1xuICAgICAgdGhpcy5jaGFuZ2VIYW5kbGVyKHZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZUNvbmZpZ3VyYXRpb24oKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmNoYXRDb25maWcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBVcGRhdGUgbGFiZWxzIGlmIHByb3ZpZGVkXG4gICAgaWYgKHRoaXMubGFiZWxzKSB7XG4gICAgICB0aGlzLmNoYXRDb25maWcuc2V0TGFiZWxzKHRoaXMubGFiZWxzKTtcbiAgICB9XG5cbiAgICAvLyBVcGRhdGUgaW5wdXQgdmFsdWUgaWYgcHJvdmlkZWRcbiAgICBjb25zdCB2YWx1ZVRvU2V0ID1cbiAgICAgIHRoaXMuX3ZhbHVlICE9PSB1bmRlZmluZWQgPyB0aGlzLl92YWx1ZSA6IHRoaXMuaW5wdXRWYWx1ZTtcbiAgICBpZiAodmFsdWVUb1NldCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLmNoYXRDb25maWcuc2V0SW5wdXRWYWx1ZSh2YWx1ZVRvU2V0KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZUlucHV0VmFsdWUodmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICh0aGlzLmNoYXRDb25maWcpIHtcbiAgICAgIHRoaXMuY2hhdENvbmZpZy5zZXRJbnB1dFZhbHVlKHZhbHVlKTtcbiAgICAgIHRoaXMuY2hhdENvbmZpZy5jaGFuZ2VJbnB1dCh2YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZXR1cEhhbmRsZXJzKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5jaGF0Q29uZmlnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gQ3JlYXRlIGNvbXBvc2l0ZSBoYW5kbGVycyB0aGF0IGNhbGwgYm90aCBzZXJ2aWNlIGFuZCBkaXJlY3RpdmUgaGFuZGxlcnNcbiAgICBjb25zdCBzdWJtaXRDb21wb3NpdGUgPSAodmFsdWU6IHN0cmluZykgPT4ge1xuICAgICAgdGhpcy5zdWJtaXRJbnB1dC5lbWl0KHZhbHVlKTtcbiAgICAgIGlmICh0aGlzLnN1Ym1pdEhhbmRsZXIpIHtcbiAgICAgICAgdGhpcy5zdWJtaXRIYW5kbGVyKHZhbHVlKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgY29uc3QgY2hhbmdlQ29tcG9zaXRlID0gKHZhbHVlOiBzdHJpbmcpID0+IHtcbiAgICAgIHRoaXMuY2hhbmdlSW5wdXQuZW1pdCh2YWx1ZSk7XG4gICAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQodmFsdWUpO1xuICAgICAgaWYgKHRoaXMuY2hhbmdlSGFuZGxlcikge1xuICAgICAgICB0aGlzLmNoYW5nZUhhbmRsZXIodmFsdWUpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICAvLyBTZXQgaGFuZGxlcnMgb24gdGhlIHNlcnZpY2VcbiAgICB0aGlzLmNoYXRDb25maWcuc2V0U3VibWl0SGFuZGxlcihzdWJtaXRDb21wb3NpdGUpO1xuICAgIHRoaXMuY2hhdENvbmZpZy5zZXRDaGFuZ2VIYW5kbGVyKGNoYW5nZUNvbXBvc2l0ZSk7XG4gIH1cbn1cbiJdfQ==
|