@copilotkitnext/angular 1.52.0-next.8 → 1.52.1-next.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +225 -432
- package/dist/README.md +225 -432
- package/dist/fesm2022/copilotkitnext-angular.mjs +322 -164
- package/dist/fesm2022/copilotkitnext-angular.mjs.map +1 -1
- package/dist/lib/agent.d.ts +20 -20
- package/dist/lib/components/chat/copilot-chat-assistant-message.d.ts +46 -46
- package/dist/lib/components/chat/copilot-chat-message-view.d.ts +126 -126
- package/dist/lib/components/chat/copilot-chat-tool-calls-view.d.ts +23 -23
- package/dist/lib/components/chat/copilot-chat-user-message-branch-navigation.d.ts +6 -6
- package/dist/lib/components/chat/copilot-chat-user-message.d.ts +6 -6
- package/dist/lib/components/chat/copilot-chat-view-scroll-view.d.ts +18 -18
- package/dist/lib/components/chat/copilot-chat-view.d.ts +54 -54
- package/dist/lib/components/chat/copilot-chat.d.ts +18 -18
- package/dist/lib/config.d.ts +2 -0
- package/dist/lib/copilotkit.d.ts +7 -1
- package/dist/lib/license-watermark.d.ts +1 -0
- package/dist/lib/render-tool-calls.d.ts +23 -23
- package/dist/styles.css +3 -0
- package/package.json +18 -18
- package/dist/esm2022/copilotkitnext-angular.mjs +0 -5
- package/dist/esm2022/index.mjs +0 -2
- package/dist/esm2022/lib/agent-context.mjs +0 -25
- package/dist/esm2022/lib/agent.mjs +0 -73
- package/dist/esm2022/lib/chat-config.mjs +0 -35
- package/dist/esm2022/lib/chat-state.mjs +0 -18
- package/dist/esm2022/lib/components/chat/copilot-chat-assistant-message-buttons.mjs +0 -344
- package/dist/esm2022/lib/components/chat/copilot-chat-assistant-message-renderer.mjs +0 -260
- package/dist/esm2022/lib/components/chat/copilot-chat-assistant-message-toolbar.mjs +0 -22
- package/dist/esm2022/lib/components/chat/copilot-chat-assistant-message.mjs +0 -415
- package/dist/esm2022/lib/components/chat/copilot-chat-assistant-message.types.mjs +0 -2
- package/dist/esm2022/lib/components/chat/copilot-chat-audio-recorder.mjs +0 -196
- package/dist/esm2022/lib/components/chat/copilot-chat-buttons.mjs +0 -299
- package/dist/esm2022/lib/components/chat/copilot-chat-input-defaults.mjs +0 -39
- package/dist/esm2022/lib/components/chat/copilot-chat-input.mjs +0 -634
- package/dist/esm2022/lib/components/chat/copilot-chat-input.types.mjs +0 -10
- package/dist/esm2022/lib/components/chat/copilot-chat-message-view-cursor.mjs +0 -27
- package/dist/esm2022/lib/components/chat/copilot-chat-message-view.mjs +0 -269
- package/dist/esm2022/lib/components/chat/copilot-chat-message-view.types.mjs +0 -2
- package/dist/esm2022/lib/components/chat/copilot-chat-textarea.mjs +0 -139
- package/dist/esm2022/lib/components/chat/copilot-chat-tool-calls-view.mjs +0 -36
- package/dist/esm2022/lib/components/chat/copilot-chat-toolbar.mjs +0 -20
- package/dist/esm2022/lib/components/chat/copilot-chat-tools-menu.mjs +0 -203
- package/dist/esm2022/lib/components/chat/copilot-chat-user-message-branch-navigation.mjs +0 -118
- package/dist/esm2022/lib/components/chat/copilot-chat-user-message-buttons.mjs +0 -182
- package/dist/esm2022/lib/components/chat/copilot-chat-user-message-renderer.mjs +0 -28
- package/dist/esm2022/lib/components/chat/copilot-chat-user-message-toolbar.mjs +0 -25
- package/dist/esm2022/lib/components/chat/copilot-chat-user-message.mjs +0 -328
- package/dist/esm2022/lib/components/chat/copilot-chat-user-message.types.mjs +0 -2
- package/dist/esm2022/lib/components/chat/copilot-chat-view-disclaimer.mjs +0 -48
- package/dist/esm2022/lib/components/chat/copilot-chat-view-feather.mjs +0 -41
- package/dist/esm2022/lib/components/chat/copilot-chat-view-handlers.mjs +0 -19
- package/dist/esm2022/lib/components/chat/copilot-chat-view-input-container.mjs +0 -96
- package/dist/esm2022/lib/components/chat/copilot-chat-view-scroll-to-bottom-button.mjs +0 -89
- package/dist/esm2022/lib/components/chat/copilot-chat-view-scroll-view.mjs +0 -456
- package/dist/esm2022/lib/components/chat/copilot-chat-view.mjs +0 -404
- package/dist/esm2022/lib/components/chat/copilot-chat-view.types.mjs +0 -2
- package/dist/esm2022/lib/components/chat/copilot-chat.mjs +0 -165
- package/dist/esm2022/lib/config.mjs +0 -9
- package/dist/esm2022/lib/copilotkit.mjs +0 -125
- package/dist/esm2022/lib/directives/copilotkit-agent-context.mjs +0 -130
- package/dist/esm2022/lib/directives/stick-to-bottom.mjs +0 -170
- package/dist/esm2022/lib/directives/tooltip.mjs +0 -217
- package/dist/esm2022/lib/human-in-the-loop.mjs +0 -19
- package/dist/esm2022/lib/render-tool-calls.mjs +0 -167
- package/dist/esm2022/lib/resize-observer.mjs +0 -152
- package/dist/esm2022/lib/scroll-position.mjs +0 -123
- package/dist/esm2022/lib/slots/copilot-slot.mjs +0 -156
- package/dist/esm2022/lib/slots/index.mjs +0 -4
- package/dist/esm2022/lib/slots/slot.types.mjs +0 -6
- package/dist/esm2022/lib/slots/slot.utils.mjs +0 -235
- package/dist/esm2022/lib/tools.mjs +0 -31
- package/dist/esm2022/lib/utils.mjs +0 -10
- package/dist/esm2022/public-api.mjs +0 -48
|
@@ -1,165 +0,0 @@
|
|
|
1
|
-
import { Component, input, ChangeDetectionStrategy, ViewEncapsulation, signal, effect, ChangeDetectorRef, Injector, computed, inject, } from "@angular/core";
|
|
2
|
-
import { CommonModule } from "@angular/common";
|
|
3
|
-
import { CopilotChatView } from "./copilot-chat-view";
|
|
4
|
-
import { DEFAULT_AGENT_ID, randomUUID } from "@copilotkitnext/shared";
|
|
5
|
-
import { AGUIConnectNotImplementedError, } from "@ag-ui/client";
|
|
6
|
-
import { injectAgentStore } from "../../agent";
|
|
7
|
-
import { CopilotKit } from "../../copilotkit";
|
|
8
|
-
import { ChatState } from "../../chat-state";
|
|
9
|
-
import * as i0 from "@angular/core";
|
|
10
|
-
/**
|
|
11
|
-
* CopilotChat component - Angular equivalent of React's <CopilotChat>
|
|
12
|
-
* Provides a complete chat interface that wires an agent to the chat view
|
|
13
|
-
*
|
|
14
|
-
* @example
|
|
15
|
-
* ```html
|
|
16
|
-
* <copilot-chat [agentId]="'default'" [threadId]="'abc123'"></copilot-chat>
|
|
17
|
-
* ```
|
|
18
|
-
*/
|
|
19
|
-
export class CopilotChat {
|
|
20
|
-
inputValue = signal("");
|
|
21
|
-
agentId = input();
|
|
22
|
-
threadId = input();
|
|
23
|
-
inputComponent = input();
|
|
24
|
-
resolvedAgentId = computed(() => this.agentId() ?? DEFAULT_AGENT_ID);
|
|
25
|
-
agentStore = injectAgentStore(this.resolvedAgentId);
|
|
26
|
-
copilotKit = inject(CopilotKit);
|
|
27
|
-
// readonly chatConfig = injectChatConfig();
|
|
28
|
-
cdr = inject(ChangeDetectorRef);
|
|
29
|
-
injector = inject(Injector);
|
|
30
|
-
messages = computed(() => this.agentStore()?.messages());
|
|
31
|
-
isRunning = computed(() => this.agentStore()?.isRunning());
|
|
32
|
-
showCursor = signal(false);
|
|
33
|
-
generatedThreadId = randomUUID();
|
|
34
|
-
hasConnectedOnce = false;
|
|
35
|
-
constructor() {
|
|
36
|
-
// Connect once when agent becomes available
|
|
37
|
-
// Connect once when agent becomes available
|
|
38
|
-
effect(() => {
|
|
39
|
-
const a = this.agentStore()?.agent;
|
|
40
|
-
if (!a)
|
|
41
|
-
return;
|
|
42
|
-
// Apply thread id when agent is available
|
|
43
|
-
a.threadId = this.threadId() || this.generatedThreadId;
|
|
44
|
-
if (!this.hasConnectedOnce) {
|
|
45
|
-
this.hasConnectedOnce = true;
|
|
46
|
-
if ("isCopilotKitAgent" in a) {
|
|
47
|
-
this.connectToAgent(a);
|
|
48
|
-
}
|
|
49
|
-
else {
|
|
50
|
-
// Non-CopilotKit agent: nothing to connect; keep default cursor state
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
}, { allowSignalWrites: true });
|
|
54
|
-
// Keep agent threadId in sync with input
|
|
55
|
-
effect(() => {
|
|
56
|
-
const a = this.agentStore()?.agent;
|
|
57
|
-
if (a) {
|
|
58
|
-
a.threadId = this.threadId() || this.generatedThreadId;
|
|
59
|
-
}
|
|
60
|
-
});
|
|
61
|
-
// Hide cursor when agent starts (runAgent via core does not pass subscriber callbacks)
|
|
62
|
-
effect(() => {
|
|
63
|
-
if (this.isRunning()) {
|
|
64
|
-
this.showCursor.set(false);
|
|
65
|
-
this.cdr.markForCheck();
|
|
66
|
-
}
|
|
67
|
-
}, { allowSignalWrites: true });
|
|
68
|
-
}
|
|
69
|
-
async connectToAgent(agent) {
|
|
70
|
-
if (!agent)
|
|
71
|
-
return;
|
|
72
|
-
this.showCursor.set(true);
|
|
73
|
-
this.cdr.markForCheck();
|
|
74
|
-
try {
|
|
75
|
-
await this.copilotKit.core.connectAgent({ agent });
|
|
76
|
-
this.showCursor.set(false);
|
|
77
|
-
this.cdr.markForCheck();
|
|
78
|
-
}
|
|
79
|
-
catch (error) {
|
|
80
|
-
if (error instanceof AGUIConnectNotImplementedError) {
|
|
81
|
-
// Connect not implemented (e.g. agent only supports run), ignore
|
|
82
|
-
}
|
|
83
|
-
else {
|
|
84
|
-
console.error("Failed to connect to agent:", error);
|
|
85
|
-
}
|
|
86
|
-
this.showCursor.set(false);
|
|
87
|
-
this.cdr.markForCheck();
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
async submitInput(value) {
|
|
91
|
-
const agent = this.agentStore()?.agent;
|
|
92
|
-
if (!agent || !value.trim())
|
|
93
|
-
return;
|
|
94
|
-
// Add user message
|
|
95
|
-
const userMessage = {
|
|
96
|
-
id: randomUUID(),
|
|
97
|
-
role: "user",
|
|
98
|
-
content: value,
|
|
99
|
-
};
|
|
100
|
-
agent.addMessage(userMessage);
|
|
101
|
-
// Clear the input
|
|
102
|
-
this.inputValue.set("");
|
|
103
|
-
// Show cursor while processing
|
|
104
|
-
this.showCursor.set(true);
|
|
105
|
-
this.cdr.markForCheck();
|
|
106
|
-
// Run the agent via core so tools (and context, forwardedProps) are included
|
|
107
|
-
try {
|
|
108
|
-
await this.copilotKit.core.runAgent({ agent });
|
|
109
|
-
}
|
|
110
|
-
catch (error) {
|
|
111
|
-
console.error("Agent run error:", error);
|
|
112
|
-
}
|
|
113
|
-
finally {
|
|
114
|
-
this.showCursor.set(false);
|
|
115
|
-
this.cdr.markForCheck();
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
changeInput(value) {
|
|
119
|
-
this.inputValue.set(value);
|
|
120
|
-
}
|
|
121
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CopilotChat, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
122
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.14", type: CopilotChat, isStandalone: true, selector: "copilot-chat", inputs: { agentId: { classPropertyName: "agentId", publicName: "agentId", isSignal: true, isRequired: false, transformFunction: null }, threadId: { classPropertyName: "threadId", publicName: "threadId", isSignal: true, isRequired: false, transformFunction: null }, inputComponent: { classPropertyName: "inputComponent", publicName: "inputComponent", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "data-copilotkit": "" } }, providers: [
|
|
123
|
-
{
|
|
124
|
-
provide: ChatState,
|
|
125
|
-
useExisting: CopilotChat,
|
|
126
|
-
},
|
|
127
|
-
], ngImport: i0, template: `
|
|
128
|
-
<copilot-chat-view
|
|
129
|
-
[messages]="messages() ?? []"
|
|
130
|
-
[autoScroll]="true"
|
|
131
|
-
[messageViewClass]="'w-full'"
|
|
132
|
-
[showCursor]="showCursor()"
|
|
133
|
-
[inputComponent]="inputComponent()"
|
|
134
|
-
>
|
|
135
|
-
</copilot-chat-view>
|
|
136
|
-
`, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: CopilotChatView, selector: "copilot-chat-view", inputs: ["messages", "autoScroll", "showCursor", "messageViewComponent", "messageViewTemplate", "messageViewClass", "scrollViewComponent", "scrollViewTemplate", "scrollViewClass", "scrollToBottomButtonComponent", "scrollToBottomButtonTemplate", "scrollToBottomButtonClass", "inputComponent", "inputTemplate", "inputContainerComponent", "inputContainerTemplate", "inputContainerClass", "featherComponent", "featherTemplate", "featherClass", "disclaimerComponent", "disclaimerTemplate", "disclaimerClass", "disclaimerText"], outputs: ["assistantMessageThumbsUp", "assistantMessageThumbsDown", "assistantMessageReadAloud", "assistantMessageRegenerate", "userMessageCopy", "userMessageEdit"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
137
|
-
}
|
|
138
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CopilotChat, decorators: [{
|
|
139
|
-
type: Component,
|
|
140
|
-
args: [{
|
|
141
|
-
selector: "copilot-chat",
|
|
142
|
-
standalone: true,
|
|
143
|
-
imports: [CommonModule, CopilotChatView],
|
|
144
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
145
|
-
encapsulation: ViewEncapsulation.None,
|
|
146
|
-
host: { "data-copilotkit": "" },
|
|
147
|
-
template: `
|
|
148
|
-
<copilot-chat-view
|
|
149
|
-
[messages]="messages() ?? []"
|
|
150
|
-
[autoScroll]="true"
|
|
151
|
-
[messageViewClass]="'w-full'"
|
|
152
|
-
[showCursor]="showCursor()"
|
|
153
|
-
[inputComponent]="inputComponent()"
|
|
154
|
-
>
|
|
155
|
-
</copilot-chat-view>
|
|
156
|
-
`,
|
|
157
|
-
providers: [
|
|
158
|
-
{
|
|
159
|
-
provide: ChatState,
|
|
160
|
-
useExisting: CopilotChat,
|
|
161
|
-
},
|
|
162
|
-
],
|
|
163
|
-
}]
|
|
164
|
-
}], ctorParameters: () => [] });
|
|
165
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29waWxvdC1jaGF0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL2NoYXQvY29waWxvdC1jaGF0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsS0FBSyxFQUNMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsTUFBTSxFQUNOLE1BQU0sRUFDTixpQkFBaUIsRUFDakIsUUFBUSxFQUVSLFFBQVEsRUFDUixNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUV0RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsVUFBVSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdEUsT0FBTyxFQUdMLDhCQUE4QixHQUMvQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDL0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7QUFFN0M7Ozs7Ozs7O0dBUUc7QUF5QkgsTUFBTSxPQUFPLFdBQVc7SUFDYixVQUFVLEdBQUcsTUFBTSxDQUFTLEVBQUUsQ0FBQyxDQUFDO0lBQ2hDLE9BQU8sR0FBRyxLQUFLLEVBQXNCLENBQUM7SUFDdEMsUUFBUSxHQUFHLEtBQUssRUFBc0IsQ0FBQztJQUN2QyxjQUFjLEdBQUcsS0FBSyxFQUF5QixDQUFDO0lBQ3hDLGVBQWUsR0FBRyxRQUFRLENBQ3pDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxnQkFBZ0IsQ0FDekMsQ0FBQztJQUNPLFVBQVUsR0FBRyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsZUFB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QUNULElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzNCLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDMUIsQ0FBQztJQUNILENBQUM7SUFFRCxXQUFXLENBQUMsS0FBYTtRQUN2QixJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM3QixDQUFDO3dHQW5IVSxXQUFXOzRGQUFYLFdBQVcsMGdCQVBYO1lBQ1Q7Z0JBQ0UsT0FBTyxFQUFFLFNBQVM7Z0JBQ2xCLFdBQVcsRUFBRSxXQUFXO2FBQ3pCO1NBQ0YsMEJBZlM7Ozs7Ozs7OztHQVNULDJEQWJTLFlBQVksK0JBQUUsZUFBZTs7NEZBcUI1QixXQUFXO2tCQXhCdkIsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsY0FBYztvQkFDeEIsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLE9BQU8sRUFBRSxDQUFDLFlBQVksRUFBRSxlQUFlLENBQUM7b0JBQ3hDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO29CQUMvQyxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTtvQkFDckMsSUFBSSxFQUFFLEVBQUUsaUJBQWlCLEVBQUUsRUFBRSxFQUFFO29CQUMvQixRQUFRLEVBQUU7Ozs7Ozs7OztHQVNUO29CQUNELFNBQVMsRUFBRTt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsU0FBUzs0QkFDbEIsV0FBVyxhQUFhO3lCQUN6QjtxQkFDRjtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgaW5wdXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgc2lnbmFsLFxuICBlZmZlY3QsXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBJbmplY3RvcixcbiAgVHlwZSxcbiAgY29tcHV0ZWQsXG4gIGluamVjdCxcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcbmltcG9ydCB7IENvcGlsb3RDaGF0VmlldyB9IGZyb20gXCIuL2NvcGlsb3QtY2hhdC12aWV3XCI7XG5cbmltcG9ydCB7IERFRkFVTFRfQUdFTlRfSUQsIHJhbmRvbVVVSUQgfSBmcm9tIFwiQGNvcGlsb3RraXRuZXh0L3NoYXJlZFwiO1xuaW1wb3J0IHtcbiAgTWVzc2FnZSxcbiAgQWJzdHJhY3RBZ2VudCxcbiAgQUdVSUNvbm5lY3ROb3RJbXBsZW1lbnRlZEVycm9yLFxufSBmcm9tIFwiQGFnLXVpL2NsaWVudFwiO1xuaW1wb3J0IHsgaW5qZWN0QWdlbnRTdG9yZSB9IGZyb20gXCIuLi8uLi9hZ2VudFwiO1xuaW1wb3J0IHsgQ29waWxvdEtpdCB9IGZyb20gXCIuLi8uLi9jb3BpbG90a2l0XCI7XG5pbXBvcnQgeyBDaGF0U3RhdGUgfSBmcm9tIFwiLi4vLi4vY2hhdC1zdGF0ZVwiO1xuXG4vKipcbiAqIENvcGlsb3RDaGF0IGNvbXBvbmVudCAtIEFuZ3VsYXIgZXF1aXZhbGVudCBvZiBSZWFjdCdzIDxDb3BpbG90Q2hhdD5cbiAqIFByb3ZpZGVzIGEgY29tcGxldGUgY2hhdCBpbnRlcmZhY2UgdGhhdCB3aXJlcyBhbiBhZ2VudCB0byB0aGUgY2hhdCB2aWV3XG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYGh0bWxcbiAqIDxjb3BpbG90LWNoYXQgW2FnZW50SWRdPVwiJ2RlZmF1bHQnXCIgW3RocmVhZElkXT1cIidhYmMxMjMnXCI+PC9jb3BpbG90LWNoYXQ+XG4gKiBgYGBcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiBcImNvcGlsb3QtY2hhdFwiLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBDb3BpbG90Q2hhdFZpZXddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgaG9zdDogeyBcImRhdGEtY29waWxvdGtpdFwiOiBcIlwiIH0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPGNvcGlsb3QtY2hhdC12aWV3XG4gICAgICBbbWVzc2FnZXNdPVwibWVzc2FnZXMoKSA/PyBbXVwiXG4gICAgICBbYXV0b1Njcm9sbF09XCJ0cnVlXCJcbiAgICAgIFttZXNzYWdlVmlld0NsYXNzXT1cIid3LWZ1bGwnXCJcbiAgICAgIFtzaG93Q3Vyc29yXT1cInNob3dDdXJzb3IoKVwiXG4gICAgICBbaW5wdXRDb21wb25lbnRdPVwiaW5wdXRDb21wb25lbnQoKVwiXG4gICAgPlxuICAgIDwvY29waWxvdC1jaGF0LXZpZXc+XG4gIGAsXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IENoYXRTdGF0ZSxcbiAgICAgIHVzZUV4aXN0aW5nOiBDb3BpbG90Q2hhdCxcbiAgICB9LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBDb3BpbG90Q2hhdCBpbXBsZW1lbnRzIENoYXRTdGF0ZSB7XG4gIHJlYWRvbmx5IGlucHV0VmFsdWUgPSBzaWduYWw8c3RyaW5nPihcIlwiKTtcbiAgcmVhZG9ubHkgYWdlbnRJZCA9IGlucHV0PHN0cmluZyB8IHVuZGVmaW5lZD4oKTtcbiAgcmVhZG9ubHkgdGhyZWFkSWQgPSBpbnB1dDxzdHJpbmcgfCB1bmRlZmluZWQ+KCk7XG4gIHJlYWRvbmx5IGlucHV0Q29tcG9uZW50ID0gaW5wdXQ8VHlwZTxhbnk+IHwgdW5kZWZpbmVkPigpO1xuICBwcml2YXRlIHJlYWRvbmx5IHJlc29sdmVkQWdlbnRJZCA9IGNvbXB1dGVkKFxuICAgICgpID0+IHRoaXMuYWdlbnRJZCgpID8/IERFRkFVTFRfQUdFTlRfSUQsXG4gICk7XG4gIHJlYWRvbmx5IGFnZW50U3RvcmUgPSBpbmplY3RBZ2VudFN0b3JlKHRoaXMucmVzb2x2ZWRBZ2VudElkKTtcbiAgcHJpdmF0ZSByZWFkb25seSBjb3BpbG90S2l0ID0gaW5qZWN0KENvcGlsb3RLaXQpO1xuICAvLyByZWFkb25seSBjaGF0Q29uZmlnID0gaW5qZWN0Q2hhdENvbmZpZygpO1xuICByZWFkb25seSBjZHIgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuICByZWFkb25seSBpbmplY3RvciA9IGluamVjdChJbmplY3Rvcik7XG5cbiAgcHJvdGVjdGVkIG1lc3NhZ2VzID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5hZ2VudFN0b3JlKCk/Lm1lc3NhZ2VzKCkpO1xuICBwcm90ZWN0ZWQgaXNSdW5uaW5nID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5hZ2VudFN0b3JlKCk/LmlzUnVubmluZygpKTtcbiAgcHJvdGVjdGVkIHNob3dDdXJzb3IgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gIHByaXZhdGUgZ2VuZXJhdGVkVGhyZWFkSWQ6IHN0cmluZyA9IHJhbmRvbVVVSUQoKTtcbiAgcHJpdmF0ZSBoYXNDb25uZWN0ZWRPbmNlID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgLy8gQ29ubmVjdCBvbmNlIHdoZW4gYWdlbnQgYmVjb21lcyBhdmFpbGFibGVcbiAgICAvLyBDb25uZWN0IG9uY2Ugd2hlbiBhZ2VudCBiZWNvbWVzIGF2YWlsYWJsZVxuICAgIGVmZmVjdChcbiAgICAgICgpID0+IHtcbiAgICAgICAgY29uc3QgYSA9IHRoaXMuYWdlbnRTdG9yZSgpPy5hZ2VudDtcbiAgICAgICAgaWYgKCFhKSByZXR1cm47XG4gICAgICAgIC8vIEFwcGx5IHRocmVhZCBpZCB3aGVuIGFnZW50IGlzIGF2YWlsYWJsZVxuICAgICAgICBhLnRocmVhZElkID0gdGhpcy50aHJlYWRJZCgpIHx8IHRoaXMuZ2VuZXJhdGVkVGhyZWFkSWQ7XG4gICAgICAgIGlmICghdGhpcy5oYXNDb25uZWN0ZWRPbmNlKSB7XG4gICAgICAgICAgdGhpcy5oYXNDb25uZWN0ZWRPbmNlID0gdHJ1ZTtcbiAgICAgICAgICBpZiAoXCJpc0NvcGlsb3RLaXRBZ2VudFwiIGluIChhIGFzIGFueSkpIHtcbiAgICAgICAgICAgIHRoaXMuY29ubmVjdFRvQWdlbnQoYSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIE5vbi1Db3BpbG90S2l0IGFnZW50OiBub3RoaW5nIHRvIGNvbm5lY3Q7IGtlZXAgZGVmYXVsdCBjdXJzb3Igc3RhdGVcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH0sXG4gICAgKTtcblxuICAgIC8vIEtlZXAgYWdlbnQgdGhyZWFkSWQgaW4gc3luYyB3aXRoIGlucHV0XG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIGNvbnN0IGEgPSB0aGlzLmFnZW50U3RvcmUoKT8uYWdlbnQ7XG4gICAgICBpZiAoYSkge1xuICAgICAgICBhLnRocmVhZElkID0gdGhpcy50aHJlYWRJZCgpIHx8IHRoaXMuZ2VuZXJhdGVkVGhyZWFkSWQ7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICAvLyBIaWRlIGN1cnNvciB3aGVuIGFnZW50IHN0YXJ0cyAocnVuQWdlbnQgdmlhIGNvcmUgZG9lcyBub3QgcGFzcyBzdWJzY3JpYmVyIGNhbGxiYWNrcylcbiAgICBlZmZlY3QoXG4gICAgICAoKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLmlzUnVubmluZygpKSB7XG4gICAgICAgICAgdGhpcy5zaG93Q3Vyc29yLnNldChmYWxzZSk7XG4gICAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH0sXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgY29ubmVjdFRvQWdlbnQoYWdlbnQ6IEFic3RyYWN0QWdlbnQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIWFnZW50KSByZXR1cm47XG5cbiAgICB0aGlzLnNob3dDdXJzb3Iuc2V0KHRydWUpO1xuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuXG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHRoaXMuY29waWxvdEtpdC5jb3JlLmNvbm5lY3RBZ2VudCh7IGFnZW50IH0pO1xuICAgICAgdGhpcy5zaG93Q3Vyc29yLnNldChmYWxzZSk7XG4gICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgQUdVSUNvbm5lY3ROb3RJbXBsZW1lbnRlZEVycm9yKSB7XG4gICAgICAgIC8vIENvbm5lY3Qgbm90IGltcGxlbWVudGVkIChlLmcuIGFnZW50IG9ubHkgc3VwcG9ydHMgcnVuKSwgaWdub3JlXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zb2xlLmVycm9yKFwiRmFpbGVkIHRvIGNvbm5lY3QgdG8gYWdlbnQ6XCIsIGVycm9yKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuc2hvd0N1cnNvci5zZXQoZmFsc2UpO1xuICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgc3VibWl0SW5wdXQodmFsdWU6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGFnZW50ID0gdGhpcy5hZ2VudFN0b3JlKCk/LmFnZW50O1xuICAgIGlmICghYWdlbnQgfHwgIXZhbHVlLnRyaW0oKSkgcmV0dXJuO1xuXG4gICAgLy8gQWRkIHVzZXIgbWVzc2FnZVxuICAgIGNvbnN0IHVzZXJNZXNzYWdlOiBNZXNzYWdlID0ge1xuICAgICAgaWQ6IHJhbmRvbVVVSUQoKSxcbiAgICAgIHJvbGU6IFwidXNlclwiLFxuICAgICAgY29udGVudDogdmFsdWUsXG4gICAgfTtcbiAgICBhZ2VudC5hZGRNZXNzYWdlKHVzZXJNZXNzYWdlKTtcblxuICAgIC8vIENsZWFyIHRoZSBpbnB1dFxuICAgIHRoaXMuaW5wdXRWYWx1ZS5zZXQoXCJcIik7XG5cbiAgICAvLyBTaG93IGN1cnNvciB3aGlsZSBwcm9jZXNzaW5nXG4gICAgdGhpcy5zaG93Q3Vyc29yLnNldCh0cnVlKTtcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcblxuICAgIC8vIFJ1biB0aGUgYWdlbnQgdmlhIGNvcmUgc28gdG9vbHMgKGFuZCBjb250ZXh0LCBmb3J3YXJkZWRQcm9wcykgYXJlIGluY2x1ZGVkXG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHRoaXMuY29waWxvdEtpdC5jb3JlLnJ1bkFnZW50KHsgYWdlbnQgfSk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoXCJBZ2VudCBydW4gZXJyb3I6XCIsIGVycm9yKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5zaG93Q3Vyc29yLnNldChmYWxzZSk7XG4gICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG4gIH1cblxuICBjaGFuZ2VJbnB1dCh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5pbnB1dFZhbHVlLnNldCh2YWx1ZSk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { inject, InjectionToken } from "@angular/core";
|
|
2
|
-
export const COPILOT_KIT_CONFIG = new InjectionToken("COPILOT_KIT_CONFIG");
|
|
3
|
-
export function injectCopilotKitConfig() {
|
|
4
|
-
return inject(COPILOT_KIT_CONFIG);
|
|
5
|
-
}
|
|
6
|
-
export function provideCopilotKit(config) {
|
|
7
|
-
return { provide: COPILOT_KIT_CONFIG, useValue: config };
|
|
8
|
-
}
|
|
9
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxjQUFjLEVBQVksTUFBTSxlQUFlLENBQUM7QUFvQmpFLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLElBQUksY0FBYyxDQUNsRCxvQkFBb0IsQ0FDckIsQ0FBQztBQUVGLE1BQU0sVUFBVSxzQkFBc0I7SUFDcEMsT0FBTyxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQztBQUNwQyxDQUFDO0FBRUQsTUFBTSxVQUFVLGlCQUFpQixDQUFDLE1BQXdCO0lBQ3hELE9BQU8sRUFBRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxDQUFDO0FBQzNELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QsIEluamVjdGlvblRva2VuLCBQcm92aWRlciB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBBYnN0cmFjdEFnZW50IH0gZnJvbSBcIkBhZy11aS9jbGllbnRcIjtcbmltcG9ydCB7XG4gIENsaWVudFRvb2wsXG4gIEZyb250ZW5kVG9vbENvbmZpZyxcbiAgSHVtYW5JblRoZUxvb3BDb25maWcsXG4gIFJlbmRlclRvb2xDYWxsQ29uZmlnLFxufSBmcm9tIFwiLi90b29sc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIENvcGlsb3RLaXRDb25maWcge1xuICBydW50aW1lVXJsPzogc3RyaW5nO1xuICBoZWFkZXJzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbiAgcHJvcGVydGllcz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICBhZ2VudHM/OiBSZWNvcmQ8c3RyaW5nLCBBYnN0cmFjdEFnZW50PjtcbiAgdG9vbHM/OiBDbGllbnRUb29sW107XG4gIHJlbmRlclRvb2xDYWxscz86IFJlbmRlclRvb2xDYWxsQ29uZmlnW107XG4gIGZyb250ZW5kVG9vbHM/OiBGcm9udGVuZFRvb2xDb25maWdbXTtcbiAgaHVtYW5JblRoZUxvb3A/OiBIdW1hbkluVGhlTG9vcENvbmZpZ1tdO1xufVxuXG5leHBvcnQgY29uc3QgQ09QSUxPVF9LSVRfQ09ORklHID0gbmV3IEluamVjdGlvblRva2VuPENvcGlsb3RLaXRDb25maWc+KFxuICBcIkNPUElMT1RfS0lUX0NPTkZJR1wiLFxuKTtcblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdENvcGlsb3RLaXRDb25maWcoKTogQ29waWxvdEtpdENvbmZpZyB7XG4gIHJldHVybiBpbmplY3QoQ09QSUxPVF9LSVRfQ09ORklHKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb3ZpZGVDb3BpbG90S2l0KGNvbmZpZzogQ29waWxvdEtpdENvbmZpZyk6IFByb3ZpZGVyIHtcbiAgcmV0dXJuIHsgcHJvdmlkZTogQ09QSUxPVF9LSVRfQ09ORklHLCB1c2VWYWx1ZTogY29uZmlnIH07XG59XG4iXX0=
|
|
@@ -1,125 +0,0 @@
|
|
|
1
|
-
import { CopilotKitCore } from "@copilotkitnext/core";
|
|
2
|
-
import { Injectable, Injector, runInInjectionContext, signal, inject, } from "@angular/core";
|
|
3
|
-
import { injectCopilotKitConfig } from "./config";
|
|
4
|
-
import { HumanInTheLoop } from "./human-in-the-loop";
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
export class CopilotKit {
|
|
7
|
-
#config = injectCopilotKitConfig();
|
|
8
|
-
#hitl = inject(HumanInTheLoop);
|
|
9
|
-
#rootInjector = inject(Injector);
|
|
10
|
-
#agents = signal(this.#config.agents ?? {});
|
|
11
|
-
agents = this.#agents.asReadonly();
|
|
12
|
-
core = new CopilotKitCore({
|
|
13
|
-
runtimeUrl: this.#config.runtimeUrl,
|
|
14
|
-
headers: this.#config.headers,
|
|
15
|
-
properties: this.#config.properties,
|
|
16
|
-
agents__unsafe_dev_only: this.#config.agents,
|
|
17
|
-
tools: this.#config.tools,
|
|
18
|
-
});
|
|
19
|
-
#toolCallRenderConfigs = signal([]);
|
|
20
|
-
#clientToolCallRenderConfigs = signal([]);
|
|
21
|
-
#humanInTheLoopToolRenderConfigs = signal([]);
|
|
22
|
-
toolCallRenderConfigs = this.#toolCallRenderConfigs.asReadonly();
|
|
23
|
-
clientToolCallRenderConfigs = this.#clientToolCallRenderConfigs.asReadonly();
|
|
24
|
-
humanInTheLoopToolRenderConfigs = this.#humanInTheLoopToolRenderConfigs.asReadonly();
|
|
25
|
-
constructor() {
|
|
26
|
-
this.#config.renderToolCalls?.forEach((renderConfig) => {
|
|
27
|
-
this.addRenderToolCall(renderConfig);
|
|
28
|
-
});
|
|
29
|
-
this.#config.tools?.forEach((tool) => {
|
|
30
|
-
if (tool.renderer && tool.parameters) {
|
|
31
|
-
this.addRenderToolCall({
|
|
32
|
-
name: tool.name,
|
|
33
|
-
args: tool.parameters,
|
|
34
|
-
component: tool.renderer,
|
|
35
|
-
agentId: tool.agentId,
|
|
36
|
-
});
|
|
37
|
-
}
|
|
38
|
-
});
|
|
39
|
-
this.#config.frontendTools?.forEach((clientTool) => {
|
|
40
|
-
this.addFrontendTool({ ...clientTool, injector: this.#rootInjector });
|
|
41
|
-
});
|
|
42
|
-
this.#config.humanInTheLoop?.forEach((humanInTheLoopTool) => {
|
|
43
|
-
this.addHumanInTheLoop(humanInTheLoopTool);
|
|
44
|
-
});
|
|
45
|
-
this.core.subscribe({
|
|
46
|
-
onAgentsChanged: () => {
|
|
47
|
-
this.#agents.set(this.core.agents);
|
|
48
|
-
},
|
|
49
|
-
});
|
|
50
|
-
}
|
|
51
|
-
#bindClientTool(clientToolWithInjector) {
|
|
52
|
-
const { injector, handler, ...frontendCandidate } = clientToolWithInjector;
|
|
53
|
-
return {
|
|
54
|
-
...frontendCandidate,
|
|
55
|
-
handler: (args, context) => runInInjectionContext(injector, () => handler(args, context)),
|
|
56
|
-
};
|
|
57
|
-
}
|
|
58
|
-
addFrontendTool(clientToolWithInjector) {
|
|
59
|
-
const tool = this.#bindClientTool(clientToolWithInjector);
|
|
60
|
-
this.core.addTool(tool);
|
|
61
|
-
this.#clientToolCallRenderConfigs.update((current) => [
|
|
62
|
-
...current,
|
|
63
|
-
clientToolWithInjector,
|
|
64
|
-
]);
|
|
65
|
-
}
|
|
66
|
-
addRenderToolCall(renderConfig) {
|
|
67
|
-
this.#toolCallRenderConfigs.update((current) => [...current, renderConfig]);
|
|
68
|
-
}
|
|
69
|
-
#bindHumanInTheLoopTool(humanInTheLoopTool) {
|
|
70
|
-
return {
|
|
71
|
-
...humanInTheLoopTool,
|
|
72
|
-
handler: (args, { toolCall }) => {
|
|
73
|
-
return this.#hitl.onResult(toolCall.id, humanInTheLoopTool.name);
|
|
74
|
-
},
|
|
75
|
-
};
|
|
76
|
-
}
|
|
77
|
-
addHumanInTheLoop(humanInTheLoopTool) {
|
|
78
|
-
this.#humanInTheLoopToolRenderConfigs.update((current) => [
|
|
79
|
-
...current,
|
|
80
|
-
humanInTheLoopTool,
|
|
81
|
-
]);
|
|
82
|
-
const tool = this.#bindHumanInTheLoopTool(humanInTheLoopTool);
|
|
83
|
-
this.core.addTool(tool);
|
|
84
|
-
}
|
|
85
|
-
#isSameAgentId(target, agentId) {
|
|
86
|
-
if (agentId) {
|
|
87
|
-
return target.agentId === agentId;
|
|
88
|
-
}
|
|
89
|
-
return true;
|
|
90
|
-
}
|
|
91
|
-
removeTool(toolName, agentId) {
|
|
92
|
-
this.core.removeTool(toolName, agentId);
|
|
93
|
-
const keep = (config) => config.name !== toolName ||
|
|
94
|
-
(agentId === undefined
|
|
95
|
-
? !!config.agentId
|
|
96
|
-
: !this.#isSameAgentId(config, agentId));
|
|
97
|
-
this.#clientToolCallRenderConfigs.update((current) => current.filter(keep));
|
|
98
|
-
this.#humanInTheLoopToolRenderConfigs.update((current) => current.filter(keep));
|
|
99
|
-
this.#toolCallRenderConfigs.update((current) => current.filter(keep));
|
|
100
|
-
}
|
|
101
|
-
getAgent(agentId) {
|
|
102
|
-
return this.core.getAgent(agentId);
|
|
103
|
-
}
|
|
104
|
-
updateRuntime(options) {
|
|
105
|
-
if (options.runtimeUrl !== undefined) {
|
|
106
|
-
this.core.setRuntimeUrl(options.runtimeUrl);
|
|
107
|
-
}
|
|
108
|
-
if (options.headers !== undefined) {
|
|
109
|
-
this.core.setHeaders(options.headers);
|
|
110
|
-
}
|
|
111
|
-
if (options.properties !== undefined) {
|
|
112
|
-
this.core.setProperties(options.properties);
|
|
113
|
-
}
|
|
114
|
-
if (options.agents !== undefined) {
|
|
115
|
-
this.core.setAgents__unsafe_dev_only(options.agents);
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CopilotKit, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
119
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CopilotKit, providedIn: "root" });
|
|
120
|
-
}
|
|
121
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CopilotKit, decorators: [{
|
|
122
|
-
type: Injectable,
|
|
123
|
-
args: [{ providedIn: "root" }]
|
|
124
|
-
}], ctorParameters: () => [] });
|
|
125
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29waWxvdGtpdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvY29waWxvdGtpdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQWdCLGNBQWMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3BFLE9BQU8sRUFDTCxVQUFVLEVBQ1YsUUFBUSxFQUdSLHFCQUFxQixFQUNyQixNQUFNLEVBQ04sTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBTXZCLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNsRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7O0FBR3JELE1BQU0sT0FBTyxVQUFVO0lBQ1osT0FBTyxHQUFHLHNCQUFzQixFQUFFLENBQUM7SUFDbkMsS0FBSyxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUMvQixhQUFhLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2pDLE9BQU8sR0FBRyxNQUFNLENBQ3ZCLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FDMUIsQ0FBQztJQUNPLE1BQU0sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBRW5DLElBQUksR0FBRyxJQUFJLGNBQWMsQ0FBQztRQUNqQyxVQUFVLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVO1FBQ25DLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU87UUFDN0IsVUFBVSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVTtRQUNuQyx1QkFBdUIsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU07UUFDNUMsS0FBSyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSztLQUMxQixDQUFDLENBQUM7SUFFTSxzQkFBc0IsR0FDN0IsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ0osNEJBQTRCLEdBQ25DLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNKLGdDQUFnQyxHQUVyQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7SUFFTixxQkFBcUIsR0FDNUIsSUFBSSxDQUFDLHNCQUFzQixDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ2xDLDJCQUEyQixHQUNsQyxJQUFJLENBQUMsNEJBQTRCLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDeEMsK0JBQStCLEdBQ3RDLElBQUksQ0FBQyxnQ0FBZ0MsQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUVyRDtRQUNFLElBQUksQ0FBQyxPQUFPLENBQUMsZUFBZSxFQUFFLE9BQU8sQ0FBQyxDQUFDLFlBQVksRUFBRSxFQUFFO1lBQ3JELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUN2QyxDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQ25DLElBQUksSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7Z0JBQ3JDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztvQkFDckIsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO29CQUNmLElBQUksRUFBRSxJQUFJLENBQUMsVUFBVTtvQkFDckIsU0FBUyxFQUFFLElBQUksQ0FBQyxRQUFRO29CQUN4QixPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU87aUJBQ3RCLENBQUMsQ0FBQztZQUNMLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLE9BQU8sQ0FBQyxDQUFDLFVBQVUsRUFBRSxFQUFFO1lBQ2pELElBQUksQ0FBQyxlQUFlLENBQUMsRUFBRSxHQUFHLFVBQVUsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUM7UUFDeEUsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWMsRUFBRSxPQUFPLENBQUMsQ0FBQyxrQkFBa0IsRUFBRSxFQUFFO1lBQzFELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQzdDLENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7WUFDbEIsZUFBZSxFQUFFLEdBQUcsRUFBRTtnQkFDcEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNyQyxDQUFDO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELGVBQWUsQ0FDYixzQkFFQztRQUVELE1BQU0sRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLEdBQUcsaUJBQWlCLEVBQUUsR0FBRyxzQkFBc0IsQ0FBQztRQUUzRSxPQUFPO1lBQ0wsR0FBRyxpQkFBaUI7WUFDcEIsT0FBTyxFQUFFLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxFQUFFLENBQ3pCLHFCQUFxQixDQUFDLFFBQVEsRUFBRSxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1NBQ2hFLENBQUM7SUFDSixDQUFDO0lBRUQsZUFBZSxDQUNiLHNCQUVDO1FBRUQsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1FBRTFELElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRXhCLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDO1lBQ3BELEdBQUcsT0FBTztZQUNWLHNCQUFzQjtTQUN2QixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsaUJBQWlCLENBQUMsWUFBa0M7UUFDbEQsSUFBSSxDQUFDLHNCQUFzQixDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLE9BQU8sRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDO0lBQzlFLENBQUM7SUFFRCx1QkFBdUIsQ0FDckIsa0JBQXdDO1FBRXhDLE9BQU87WUFDTCxHQUFHLGtCQUFrQjtZQUNyQixPQUFPLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFO2dCQUM5QixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUUsa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDbkUsQ0FBQztTQUNGLENBQUM7SUFDSixDQUFDO0lBRUQsaUJBQWlCLENBQUMsa0JBQXdDO1FBQ3hELElBQUksQ0FBQyxnQ0FBZ0MsQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDO1lBQ3hELEdBQUcsT0FBTztZQUNWLGtCQUFrQjtTQUNuQixDQUFDLENBQUM7UUFFSCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsdUJBQXVCLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUU5RCxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMxQixDQUFDO0lBRUQsY0FBYyxDQUNaLE1BQVMsRUFDVCxPQUFnQjtRQUVoQixJQUFJLE9BQU8sRUFBRSxDQUFDO1lBQ1osT0FBTyxNQUFNLENBQUMsT0FBTyxLQUFLLE9BQU8sQ0FBQztRQUNwQyxDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsVUFBVSxDQUFDLFFBQWdCLEVBQUUsT0FBZ0I7UUFDM0MsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ3hDLE1BQU0sSUFBSSxHQUFHLENBQUMsTUFBMEMsRUFBRSxFQUFFLENBQzFELE1BQU0sQ0FBQyxJQUFJLEtBQUssUUFBUTtZQUN4QixDQUFDLE9BQU8sS0FBSyxTQUFTO2dCQUNwQixDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPO2dCQUNsQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO1FBQzdDLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUM1RSxJQUFJLENBQUMsZ0NBQWdDLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FDdkQsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FDckIsQ0FBQztRQUNGLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUN4RSxDQUFDO0lBRUQsUUFBUSxDQUFDLE9BQWU7UUFDdEIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRUQsYUFBYSxDQUFDLE9BS2I7UUFDQyxJQUFJLE9BQU8sQ0FBQyxVQUFVLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDckMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzlDLENBQUM7UUFDRCxJQUFJLE9BQU8sQ0FBQyxPQUFPLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDbEMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3hDLENBQUM7UUFDRCxJQUFJLE9BQU8sQ0FBQyxVQUFVLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDckMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzlDLENBQUM7UUFDRCxJQUFJLE9BQU8sQ0FBQyxNQUFNLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDakMsSUFBSSxDQUFDLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDdkQsQ0FBQztJQUNILENBQUM7d0dBcktVLFVBQVU7NEdBQVYsVUFBVSxjQURHLE1BQU07OzRGQUNuQixVQUFVO2tCQUR0QixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFic3RyYWN0QWdlbnQgfSBmcm9tIFwiQGFnLXVpL2NsaWVudFwiO1xuaW1wb3J0IHsgRnJvbnRlbmRUb29sLCBDb3BpbG90S2l0Q29yZSB9IGZyb20gXCJAY29waWxvdGtpdG5leHQvY29yZVwiO1xuaW1wb3J0IHtcbiAgSW5qZWN0YWJsZSxcbiAgSW5qZWN0b3IsXG4gIFNpZ25hbCxcbiAgV3JpdGFibGVTaWduYWwsXG4gIHJ1bkluSW5qZWN0aW9uQ29udGV4dCxcbiAgc2lnbmFsLFxuICBpbmplY3QsXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQge1xuICBGcm9udGVuZFRvb2xDb25maWcsXG4gIEh1bWFuSW5UaGVMb29wQ29uZmlnLFxuICBSZW5kZXJUb29sQ2FsbENvbmZpZyxcbn0gZnJvbSBcIi4vdG9vbHNcIjtcbmltcG9ydCB7IGluamVjdENvcGlsb3RLaXRDb25maWcgfSBmcm9tIFwiLi9jb25maWdcIjtcbmltcG9ydCB7IEh1bWFuSW5UaGVMb29wIH0gZnJvbSBcIi4vaHVtYW4taW4tdGhlLWxvb3BcIjtcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiBcInJvb3RcIiB9KVxuZXhwb3J0IGNsYXNzIENvcGlsb3RLaXQge1xuICByZWFkb25seSAjY29uZmlnID0gaW5qZWN0Q29waWxvdEtpdENvbmZpZygpO1xuICByZWFkb25seSAjaGl0bCA9IGluamVjdChIdW1hbkluVGhlTG9vcCk7XG4gIHJlYWRvbmx5ICNyb290SW5qZWN0b3IgPSBpbmplY3QoSW5qZWN0b3IpO1xuICByZWFkb25seSAjYWdlbnRzID0gc2lnbmFsPFJlY29yZDxzdHJpbmcsIEFic3RyYWN0QWdlbnQ+PihcbiAgICB0aGlzLiNjb25maWcuYWdlbnRzID8/IHt9LFxuICApO1xuICByZWFkb25seSBhZ2VudHMgPSB0aGlzLiNhZ2VudHMuYXNSZWFkb25seSgpO1xuXG4gIHJlYWRvbmx5IGNvcmUgPSBuZXcgQ29waWxvdEtpdENvcmUoe1xuICAgIHJ1bnRpbWVVcmw6IHRoaXMuI2NvbmZpZy5ydW50aW1lVXJsLFxuICAgIGhlYWRlcnM6IHRoaXMuI2NvbmZpZy5oZWFkZXJzLFxuICAgIHByb3BlcnRpZXM6IHRoaXMuI2NvbmZpZy5wcm9wZXJ0aWVzLFxuICAgIGFnZW50c19fdW5zYWZlX2Rldl9vbmx5OiB0aGlzLiNjb25maWcuYWdlbnRzLFxuICAgIHRvb2xzOiB0aGlzLiNjb25maWcudG9vbHMsXG4gIH0pO1xuXG4gIHJlYWRvbmx5ICN0b29sQ2FsbFJlbmRlckNvbmZpZ3M6IFdyaXRhYmxlU2lnbmFsPFJlbmRlclRvb2xDYWxsQ29uZmlnW10+ID1cbiAgICBzaWduYWwoW10pO1xuICByZWFkb25seSAjY2xpZW50VG9vbENhbGxSZW5kZXJDb25maWdzOiBXcml0YWJsZVNpZ25hbDxGcm9udGVuZFRvb2xDb25maWdbXT4gPVxuICAgIHNpZ25hbChbXSk7XG4gIHJlYWRvbmx5ICNodW1hbkluVGhlTG9vcFRvb2xSZW5kZXJDb25maWdzOiBXcml0YWJsZVNpZ25hbDxcbiAgICBIdW1hbkluVGhlTG9vcENvbmZpZ1tdXG4gID4gPSBzaWduYWwoW10pO1xuXG4gIHJlYWRvbmx5IHRvb2xDYWxsUmVuZGVyQ29uZmlnczogU2lnbmFsPFJlbmRlclRvb2xDYWxsQ29uZmlnW10+ID1cbiAgICB0aGlzLiN0b29sQ2FsbFJlbmRlckNvbmZpZ3MuYXNSZWFkb25seSgpO1xuICByZWFkb25seSBjbGllbnRUb29sQ2FsbFJlbmRlckNvbmZpZ3M6IFNpZ25hbDxGcm9udGVuZFRvb2xDb25maWdbXT4gPVxuICAgIHRoaXMuI2NsaWVudFRvb2xDYWxsUmVuZGVyQ29uZmlncy5hc1JlYWRvbmx5KCk7XG4gIHJlYWRvbmx5IGh1bWFuSW5UaGVMb29wVG9vbFJlbmRlckNvbmZpZ3M6IFNpZ25hbDxIdW1hbkluVGhlTG9vcENvbmZpZ1tdPiA9XG4gICAgdGhpcy4jaHVtYW5JblRoZUxvb3BUb29sUmVuZGVyQ29uZmlncy5hc1JlYWRvbmx5KCk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy4jY29uZmlnLnJlbmRlclRvb2xDYWxscz8uZm9yRWFjaCgocmVuZGVyQ29uZmlnKSA9PiB7XG4gICAgICB0aGlzLmFkZFJlbmRlclRvb2xDYWxsKHJlbmRlckNvbmZpZyk7XG4gICAgfSk7XG5cbiAgICB0aGlzLiNjb25maWcudG9vbHM/LmZvckVhY2goKHRvb2wpID0+IHtcbiAgICAgIGlmICh0b29sLnJlbmRlcmVyICYmIHRvb2wucGFyYW1ldGVycykge1xuICAgICAgICB0aGlzLmFkZFJlbmRlclRvb2xDYWxsKHtcbiAgICAgICAgICBuYW1lOiB0b29sLm5hbWUsXG4gICAgICAgICAgYXJnczogdG9vbC5wYXJhbWV0ZXJzLFxuICAgICAgICAgIGNvbXBvbmVudDogdG9vbC5yZW5kZXJlcixcbiAgICAgICAgICBhZ2VudElkOiB0b29sLmFnZW50SWQsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy4jY29uZmlnLmZyb250ZW5kVG9vbHM/LmZvckVhY2goKGNsaWVudFRvb2wpID0+IHtcbiAgICAgIHRoaXMuYWRkRnJvbnRlbmRUb29sKHsgLi4uY2xpZW50VG9vbCwgaW5qZWN0b3I6IHRoaXMuI3Jvb3RJbmplY3RvciB9KTtcbiAgICB9KTtcblxuICAgIHRoaXMuI2NvbmZpZy5odW1hbkluVGhlTG9vcD8uZm9yRWFjaCgoaHVtYW5JblRoZUxvb3BUb29sKSA9PiB7XG4gICAgICB0aGlzLmFkZEh1bWFuSW5UaGVMb29wKGh1bWFuSW5UaGVMb29wVG9vbCk7XG4gICAgfSk7XG5cbiAgICB0aGlzLmNvcmUuc3Vic2NyaWJlKHtcbiAgICAgIG9uQWdlbnRzQ2hhbmdlZDogKCkgPT4ge1xuICAgICAgICB0aGlzLiNhZ2VudHMuc2V0KHRoaXMuY29yZS5hZ2VudHMpO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gICNiaW5kQ2xpZW50VG9vbChcbiAgICBjbGllbnRUb29sV2l0aEluamVjdG9yOiBGcm9udGVuZFRvb2xDb25maWcgJiB7XG4gICAgICBpbmplY3RvcjogSW5qZWN0b3I7XG4gICAgfSxcbiAgKTogRnJvbnRlbmRUb29sIHtcbiAgICBjb25zdCB7IGluamVjdG9yLCBoYW5kbGVyLCAuLi5mcm9udGVuZENhbmRpZGF0ZSB9ID0gY2xpZW50VG9vbFdpdGhJbmplY3RvcjtcblxuICAgIHJldHVybiB7XG4gICAgICAuLi5mcm9udGVuZENhbmRpZGF0ZSxcbiAgICAgIGhhbmRsZXI6IChhcmdzLCBjb250ZXh0KSA9PlxuICAgICAgICBydW5JbkluamVjdGlvbkNvbnRleHQoaW5qZWN0b3IsICgpID0+IGhhbmRsZXIoYXJncywgY29udGV4dCkpLFxuICAgIH07XG4gIH1cblxuICBhZGRGcm9udGVuZFRvb2woXG4gICAgY2xpZW50VG9vbFdpdGhJbmplY3RvcjogRnJvbnRlbmRUb29sQ29uZmlnICYge1xuICAgICAgaW5qZWN0b3I6IEluamVjdG9yO1xuICAgIH0sXG4gICk6IHZvaWQge1xuICAgIGNvbnN0IHRvb2wgPSB0aGlzLiNiaW5kQ2xpZW50VG9vbChjbGllbnRUb29sV2l0aEluamVjdG9yKTtcblxuICAgIHRoaXMuY29yZS5hZGRUb29sKHRvb2wpO1xuXG4gICAgdGhpcy4jY2xpZW50VG9vbENhbGxSZW5kZXJDb25maWdzLnVwZGF0ZSgoY3VycmVudCkgPT4gW1xuICAgICAgLi4uY3VycmVudCxcbiAgICAgIGNsaWVudFRvb2xXaXRoSW5qZWN0b3IsXG4gICAgXSk7XG4gIH1cblxuICBhZGRSZW5kZXJUb29sQ2FsbChyZW5kZXJDb25maWc6IFJlbmRlclRvb2xDYWxsQ29uZmlnKTogdm9pZCB7XG4gICAgdGhpcy4jdG9vbENhbGxSZW5kZXJDb25maWdzLnVwZGF0ZSgoY3VycmVudCkgPT4gWy4uLmN1cnJlbnQsIHJlbmRlckNvbmZpZ10pO1xuICB9XG5cbiAgI2JpbmRIdW1hbkluVGhlTG9vcFRvb2woXG4gICAgaHVtYW5JblRoZUxvb3BUb29sOiBIdW1hbkluVGhlTG9vcENvbmZpZyxcbiAgKTogRnJvbnRlbmRUb29sIHtcbiAgICByZXR1cm4ge1xuICAgICAgLi4uaHVtYW5JblRoZUxvb3BUb29sLFxuICAgICAgaGFuZGxlcjogKGFyZ3MsIHsgdG9vbENhbGwgfSkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy4jaGl0bC5vblJlc3VsdCh0b29sQ2FsbC5pZCwgaHVtYW5JblRoZUxvb3BUb29sLm5hbWUpO1xuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgYWRkSHVtYW5JblRoZUxvb3AoaHVtYW5JblRoZUxvb3BUb29sOiBIdW1hbkluVGhlTG9vcENvbmZpZyk6IHZvaWQge1xuICAgIHRoaXMuI2h1bWFuSW5UaGVMb29wVG9vbFJlbmRlckNvbmZpZ3MudXBkYXRlKChjdXJyZW50KSA9PiBbXG4gICAgICAuLi5jdXJyZW50LFxuICAgICAgaHVtYW5JblRoZUxvb3BUb29sLFxuICAgIF0pO1xuXG4gICAgY29uc3QgdG9vbCA9IHRoaXMuI2JpbmRIdW1hbkluVGhlTG9vcFRvb2woaHVtYW5JblRoZUxvb3BUb29sKTtcblxuICAgIHRoaXMuY29yZS5hZGRUb29sKHRvb2wpO1xuICB9XG5cbiAgI2lzU2FtZUFnZW50SWQ8VCBleHRlbmRzIHsgYWdlbnRJZD86IHN0cmluZyB9PihcbiAgICB0YXJnZXQ6IFQsXG4gICAgYWdlbnRJZD86IHN0cmluZyxcbiAgKTogYm9vbGVhbiB7XG4gICAgaWYgKGFnZW50SWQpIHtcbiAgICAgIHJldHVybiB0YXJnZXQuYWdlbnRJZCA9PT0gYWdlbnRJZDtcbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHJlbW92ZVRvb2wodG9vbE5hbWU6IHN0cmluZywgYWdlbnRJZD86IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuY29yZS5yZW1vdmVUb29sKHRvb2xOYW1lLCBhZ2VudElkKTtcbiAgICBjb25zdCBrZWVwID0gKGNvbmZpZzogeyBuYW1lOiBzdHJpbmc7IGFnZW50SWQ/OiBzdHJpbmcgfSkgPT5cbiAgICAgIGNvbmZpZy5uYW1lICE9PSB0b29sTmFtZSB8fFxuICAgICAgKGFnZW50SWQgPT09IHVuZGVmaW5lZFxuICAgICAgICA/ICEhY29uZmlnLmFnZW50SWRcbiAgICAgICAgOiAhdGhpcy4jaXNTYW1lQWdlbnRJZChjb25maWcsIGFnZW50SWQpKTtcbiAgICB0aGlzLiNjbGllbnRUb29sQ2FsbFJlbmRlckNvbmZpZ3MudXBkYXRlKChjdXJyZW50KSA9PiBjdXJyZW50LmZpbHRlcihrZWVwKSk7XG4gICAgdGhpcy4jaHVtYW5JblRoZUxvb3BUb29sUmVuZGVyQ29uZmlncy51cGRhdGUoKGN1cnJlbnQpID0+XG4gICAgICBjdXJyZW50LmZpbHRlcihrZWVwKSxcbiAgICApO1xuICAgIHRoaXMuI3Rvb2xDYWxsUmVuZGVyQ29uZmlncy51cGRhdGUoKGN1cnJlbnQpID0+IGN1cnJlbnQuZmlsdGVyKGtlZXApKTtcbiAgfVxuXG4gIGdldEFnZW50KGFnZW50SWQ6IHN0cmluZyk6IEFic3RyYWN0QWdlbnQgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLmNvcmUuZ2V0QWdlbnQoYWdlbnRJZCk7XG4gIH1cblxuICB1cGRhdGVSdW50aW1lKG9wdGlvbnM6IHtcbiAgICBydW50aW1lVXJsPzogc3RyaW5nO1xuICAgIGhlYWRlcnM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuICAgIHByb3BlcnRpZXM/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgICBhZ2VudHM/OiBSZWNvcmQ8c3RyaW5nLCBBYnN0cmFjdEFnZW50PjtcbiAgfSk6IHZvaWQge1xuICAgIGlmIChvcHRpb25zLnJ1bnRpbWVVcmwgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5jb3JlLnNldFJ1bnRpbWVVcmwob3B0aW9ucy5ydW50aW1lVXJsKTtcbiAgICB9XG4gICAgaWYgKG9wdGlvbnMuaGVhZGVycyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLmNvcmUuc2V0SGVhZGVycyhvcHRpb25zLmhlYWRlcnMpO1xuICAgIH1cbiAgICBpZiAob3B0aW9ucy5wcm9wZXJ0aWVzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuY29yZS5zZXRQcm9wZXJ0aWVzKG9wdGlvbnMucHJvcGVydGllcyk7XG4gICAgfVxuICAgIGlmIChvcHRpb25zLmFnZW50cyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLmNvcmUuc2V0QWdlbnRzX191bnNhZmVfZGV2X29ubHkob3B0aW9ucy5hZ2VudHMpO1xuICAgIH1cbiAgfVxufVxuIl19
|
|
@@ -1,130 +0,0 @@
|
|
|
1
|
-
import { Directive, Input, Inject, } from "@angular/core";
|
|
2
|
-
import { CopilotKit } from "../copilotkit";
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
import * as i1 from "../copilotkit";
|
|
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 CopilotKitAgentContext {
|
|
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.core.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.core.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.14", ngImport: i0, type: CopilotKitAgentContext, deps: [{ token: CopilotKit }], target: i0.ɵɵFactoryTarget.Directive });
|
|
111
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.14", type: CopilotKitAgentContext, 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.14", ngImport: i0, type: CopilotKitAgentContext, decorators: [{
|
|
114
|
-
type: Directive,
|
|
115
|
-
args: [{
|
|
116
|
-
selector: "[copilotkitAgentContext]",
|
|
117
|
-
standalone: true,
|
|
118
|
-
}]
|
|
119
|
-
}], ctorParameters: () => [{ type: i1.CopilotKit, decorators: [{
|
|
120
|
-
type: Inject,
|
|
121
|
-
args: [CopilotKit]
|
|
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29waWxvdGtpdC1hZ2VudC1jb250ZXh0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9kaXJlY3RpdmVzL2NvcGlsb3RraXQtYWdlbnQtY29udGV4dC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULEtBQUssRUFLTCxNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7O0FBRzNDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBc0JHO0FBS0gsTUFBTSxPQUFPLHNCQUFzQjtJQUdnQjtJQUZ6QyxTQUFTLENBQVU7SUFFM0IsWUFBaUQsVUFBc0I7UUFBdEIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtJQUFHLENBQUM7SUFFM0U7OztPQUdHO0lBQzhCLE9BQU8sQ0FBVztJQUVuRDs7O09BR0c7SUFDTSxXQUFXLENBQVU7SUFFOUI7OztPQUdHO0lBQ00sS0FBSyxDQUFPO0lBRXJCLFFBQVE7UUFDTixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDcEIsQ0FBQztJQUVELFdBQVcsQ0FBQyxPQUFzQjtRQUNoQywwQ0FBMEM7UUFDMUMsTUFBTSxnQkFBZ0IsR0FBRyxTQUFTLElBQUksT0FBTyxDQUFDO1FBQzlDLE1BQU0sb0JBQW9CLEdBQUcsYUFBYSxJQUFJLE9BQU8sQ0FBQztRQUN0RCxNQUFNLGNBQWMsR0FBRyxPQUFPLElBQUksT0FBTyxDQUFDO1FBRTFDLElBQUksZ0JBQWdCLElBQUksb0JBQW9CLElBQUksY0FBYyxFQUFFLENBQUM7WUFDL0QsMERBQTBEO1lBQzFELElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO2dCQUNuQixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDdkIsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBRUQ7O09BRUc7SUFDSyxVQUFVO1FBQ2hCLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUV2QyxJQUFJLFlBQVksRUFBRSxDQUFDO1lBQ2pCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ2pFLENBQUM7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSyxhQUFhO1FBQ25CLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDcEIsQ0FBQztJQUVEOztPQUVHO0lBQ0ssYUFBYTtRQUNuQixJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNuQixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ25ELElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO1FBQzdCLENBQUM7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSyxVQUFVO1FBQ2hCLHdDQUF3QztRQUN4QyxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNqQixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7UUFDdEIsQ0FBQztRQUVELDBDQUEwQztRQUMxQywyREFBMkQ7UUFDM0QsSUFBSSxJQUFJLENBQUMsV0FBVyxLQUFLLFNBQVMsSUFBSSxJQUFJLENBQUMsS0FBSyxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQy9ELE9BQU87Z0JBQ0wsV0FBVyxFQUFFLElBQUksQ0FBQyxXQUFXO2dCQUM3QixLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7YUFDbEIsQ0FBQztRQUNKLENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7d0dBN0ZVLHNCQUFzQixrQkFHYixVQUFVOzRGQUhuQixzQkFBc0I7OzRGQUF0QixzQkFBc0I7a0JBSmxDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLDBCQUEwQjtvQkFDcEMsVUFBVSxFQUFFLElBQUk7aUJBQ2pCOzswQkFJYyxNQUFNOzJCQUFDLFVBQVU7eUNBTUcsT0FBTztzQkFBdkMsS0FBSzt1QkFBQyx3QkFBd0I7Z0JBTXRCLFdBQVc7c0JBQW5CLEtBQUs7Z0JBTUcsS0FBSztzQkFBYixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgRGlyZWN0aXZlLFxuICBJbnB1dCxcbiAgT25Jbml0LFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgSW5qZWN0LFxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgQ29waWxvdEtpdCB9IGZyb20gXCIuLi9jb3BpbG90a2l0XCI7XG5pbXBvcnQgdHlwZSB7IENvbnRleHQgfSBmcm9tIFwiQGFnLXVpL2NsaWVudFwiO1xuXG4vKipcbiAqIERpcmVjdGl2ZSB0byBtYW5hZ2UgYWdlbnQgY29udGV4dCBpbiBDb3BpbG90S2l0LlxuICogQXV0b21hdGljYWxseSBhZGRzIGNvbnRleHQgb24gaW5pdCwgdXBkYXRlcyBvbiBjaGFuZ2VzLCBhbmQgcmVtb3ZlcyBvbiBkZXN0cm95LlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGBodG1sXG4gKiA8IS0tIFdpdGggc2VwYXJhdGUgaW5wdXRzIC0tPlxuICogPGRpdiBjb3BpbG90a2l0QWdlbnRDb250ZXh0XG4gKiAgICAgIFtkZXNjcmlwdGlvbl09XCInVXNlciBwcmVmZXJlbmNlcydcIlxuICogICAgICBbdmFsdWVdPVwidXNlclNldHRpbmdzXCI+XG4gKiA8L2Rpdj5cbiAqXG4gKiA8IS0tIFdpdGggY29udGV4dCBvYmplY3QgLS0+XG4gKiA8ZGl2IFtjb3BpbG90a2l0QWdlbnRDb250ZXh0XT1cImNvbnRleHRPYmplY3RcIj5cbiAqIDwvZGl2PlxuICpcbiAqIDwhLS0gV2l0aCBkeW5hbWljIHZhbHVlcyAtLT5cbiAqIDxkaXYgY29waWxvdGtpdEFnZW50Q29udGV4dFxuICogICAgICBkZXNjcmlwdGlvbj1cIkZvcm0gc3RhdGVcIlxuICogICAgICBbdmFsdWVdPVwiZm9ybURhdGEkIHwgYXN5bmNcIj5cbiAqIDwvZGl2PlxuICogYGBgXG4gKi9cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogXCJbY29waWxvdGtpdEFnZW50Q29udGV4dF1cIixcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgQ29waWxvdEtpdEFnZW50Q29udGV4dCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xuICBwcml2YXRlIGNvbnRleHRJZD86IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihASW5qZWN0KENvcGlsb3RLaXQpIHByaXZhdGUgcmVhZG9ubHkgY29waWxvdGtpdDogQ29waWxvdEtpdCkge31cblxuICAvKipcbiAgICogQ29udGV4dCBvYmplY3QgY29udGFpbmluZyBib3RoIGRlc2NyaXB0aW9uIGFuZCB2YWx1ZS5cbiAgICogSWYgcHJvdmlkZWQsIHRoaXMgdGFrZXMgcHJlY2VkZW5jZSBvdmVyIGluZGl2aWR1YWwgaW5wdXRzLlxuICAgKi9cbiAgQElucHV0KFwiY29waWxvdGtpdEFnZW50Q29udGV4dFwiKSBjb250ZXh0PzogQ29udGV4dDtcblxuICAvKipcbiAgICogRGVzY3JpcHRpb24gb2YgdGhlIGNvbnRleHQuXG4gICAqIFVzZWQgd2hlbiBjb250ZXh0IG9iamVjdCBpcyBub3QgcHJvdmlkZWQuXG4gICAqL1xuICBASW5wdXQoKSBkZXNjcmlwdGlvbj86IHN0cmluZztcblxuICAvKipcbiAgICogVmFsdWUgb2YgdGhlIGNvbnRleHQuXG4gICAqIFVzZWQgd2hlbiBjb250ZXh0IG9iamVjdCBpcyBub3QgcHJvdmlkZWQuXG4gICAqL1xuICBASW5wdXQoKSB2YWx1ZT86IGFueTtcblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmFkZENvbnRleHQoKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAvLyBDaGVjayBpZiBhbnkgcmVsZXZhbnQgaW5wdXQgaGFzIGNoYW5nZWRcbiAgICBjb25zdCBoYXNDb250ZXh0Q2hhbmdlID0gXCJjb250ZXh0XCIgaW4gY2hhbmdlcztcbiAgICBjb25zdCBoYXNEZXNjcmlwdGlvbkNoYW5nZSA9IFwiZGVzY3JpcHRpb25cIiBpbiBjaGFuZ2VzO1xuICAgIGNvbnN0IGhhc1ZhbHVlQ2hhbmdlID0gXCJ2YWx1ZVwiIGluIGNoYW5nZXM7XG5cbiAgICBpZiAoaGFzQ29udGV4dENoYW5nZSB8fCBoYXNEZXNjcmlwdGlvbkNoYW5nZSB8fCBoYXNWYWx1ZUNoYW5nZSkge1xuICAgICAgLy8gU2tpcCB0aGUgZmlyc3QgY2hhbmdlIGFzIG5nT25Jbml0IGhhbmRsZXMgaW5pdGlhbCBzZXR1cFxuICAgICAgaWYgKHRoaXMuY29udGV4dElkKSB7XG4gICAgICAgIHRoaXMudXBkYXRlQ29udGV4dCgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMucmVtb3ZlQ29udGV4dCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgdGhlIGNvbnRleHQgdG8gQ29waWxvdEtpdFxuICAgKi9cbiAgcHJpdmF0ZSBhZGRDb250ZXh0KCk6IHZvaWQge1xuICAgIGNvbnN0IGNvbnRleHRUb0FkZCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXG4gICAgaWYgKGNvbnRleHRUb0FkZCkge1xuICAgICAgdGhpcy5jb250ZXh0SWQgPSB0aGlzLmNvcGlsb3RraXQuY29yZS5hZGRDb250ZXh0KGNvbnRleHRUb0FkZCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZXMgdGhlIGNvbnRleHQgYnkgcmVtb3ZpbmcgdGhlIG9sZCBvbmUgYW5kIGFkZGluZyBhIG5ldyBvbmVcbiAgICovXG4gIHByaXZhdGUgdXBkYXRlQ29udGV4dCgpOiB2b2lkIHtcbiAgICB0aGlzLnJlbW92ZUNvbnRleHQoKTtcbiAgICB0aGlzLmFkZENvbnRleHQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmVzIHRoZSBjdXJyZW50IGNvbnRleHQgZnJvbSBDb3BpbG90S2l0XG4gICAqL1xuICBwcml2YXRlIHJlbW92ZUNvbnRleHQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuY29udGV4dElkKSB7XG4gICAgICB0aGlzLmNvcGlsb3RraXQuY29yZS5yZW1vdmVDb250ZXh0KHRoaXMuY29udGV4dElkKTtcbiAgICAgIHRoaXMuY29udGV4dElkID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBjb250ZXh0IG9iamVjdCBmcm9tIGlucHV0c1xuICAgKi9cbiAgcHJpdmF0ZSBnZXRDb250ZXh0KCk6IENvbnRleHQgfCBudWxsIHtcbiAgICAvLyBJZiBjb250ZXh0IG9iamVjdCBpcyBwcm92aWRlZCwgdXNlIGl0XG4gICAgaWYgKHRoaXMuY29udGV4dCkge1xuICAgICAgcmV0dXJuIHRoaXMuY29udGV4dDtcbiAgICB9XG5cbiAgICAvLyBPdGhlcndpc2UsIGJ1aWxkIGZyb20gaW5kaXZpZHVhbCBpbnB1dHNcbiAgICAvLyBOb3RlOiBudWxsIGlzIGEgdmFsaWQgdmFsdWUsIGJ1dCB1bmRlZmluZWQgbWVhbnMgbm90IHNldFxuICAgIGlmICh0aGlzLmRlc2NyaXB0aW9uICE9PSB1bmRlZmluZWQgJiYgdGhpcy52YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBkZXNjcmlwdGlvbjogdGhpcy5kZXNjcmlwdGlvbixcbiAgICAgICAgdmFsdWU6IHRoaXMudmFsdWUsXG4gICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiBudWxsO1xuICB9XG59XG4iXX0=
|