@copilotkitnext/angular 0.0.5 → 0.0.7
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 +110 -0
- package/dist/README.md +110 -0
- package/dist/components/chat/copilot-chat-assistant-message.component.d.ts +1 -0
- package/dist/components/chat/copilot-chat.component.d.ts +3 -5
- package/dist/esm2022/components/chat/copilot-chat-assistant-message.component.mjs +11 -5
- package/dist/esm2022/components/chat/copilot-chat-tool-calls-view.component.mjs +14 -8
- package/dist/esm2022/components/chat/copilot-chat.component.mjs +26 -26
- package/dist/esm2022/components/copilotkit-tool-render.component.mjs +7 -10
- package/dist/esm2022/core/copilotkit.service.mjs +2 -14
- package/dist/esm2022/index.mjs +2 -2
- package/dist/esm2022/lib/slots/copilot-slot.component.mjs +15 -5
- package/dist/esm2022/lib/slots/slot.utils.mjs +14 -5
- package/dist/esm2022/utils/agent.utils.mjs +28 -20
- package/dist/fesm2022/copilotkitnext-angular.mjs +108 -84
- package/dist/fesm2022/copilotkitnext-angular.mjs.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/utils/agent.utils.d.ts +27 -18
- package/package.json +3 -3
|
@@ -57,10 +57,19 @@ function createComponent(viewContainer, component, props, injector, outputs) {
|
|
|
57
57
|
injector
|
|
58
58
|
});
|
|
59
59
|
if (props) {
|
|
60
|
-
// Apply props using setInput
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
60
|
+
// Apply props using setInput, but only for declared inputs
|
|
61
|
+
const cmpDef = component.ɵcmp;
|
|
62
|
+
const declaredInputs = new Set(Object.keys(cmpDef?.inputs ?? {}));
|
|
63
|
+
if (declaredInputs.has('props')) {
|
|
64
|
+
componentRef.setInput('props', props);
|
|
65
|
+
}
|
|
66
|
+
else {
|
|
67
|
+
for (const key in props) {
|
|
68
|
+
if (declaredInputs.has(key)) {
|
|
69
|
+
const value = props[key];
|
|
70
|
+
componentRef.setInput(key, value);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
64
73
|
}
|
|
65
74
|
}
|
|
66
75
|
if (outputs) {
|
|
@@ -219,4 +228,4 @@ export function createSlotRenderer(defaultComponent, slotName) {
|
|
|
219
228
|
});
|
|
220
229
|
};
|
|
221
230
|
}
|
|
222
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xvdC51dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvc2xvdHMvc2xvdC51dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsV0FBVyxFQUtYLE1BQU0sRUFDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQW1ELFdBQVcsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUU1Rjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F1Qkc7QUFDSCxNQUFNLFVBQVUsVUFBVSxDQUN4QixhQUErQixFQUMvQixPQUE2QjtJQUU3QixNQUFNLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLEdBQUcsT0FBTyxDQUFDO0lBRXJFLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUV0QixNQUFNLGFBQWEsR0FBRyxJQUFJLElBQUksZ0JBQWdCLENBQUM7SUFDL0MsTUFBTSxpQkFBaUIsR0FBRyxRQUFRLElBQUksYUFBYSxDQUFDLFFBQVEsQ0FBQztJQUU3RCxJQUFJLGFBQWEsWUFBWSxXQUFXLEVBQUUsQ0FBQztRQUN6QywrQkFBK0I7UUFDL0IsT0FBTyxhQUFhLENBQUMsa0JBQWtCLENBQUMsYUFBYSxFQUFFO1lBQ3JELFNBQVMsRUFBRSxLQUFLLElBQUksRUFBRTtZQUN0QixLQUFLLEVBQUUsS0FBSyxJQUFJLEVBQUU7U0FDWixDQUFDLENBQUM7SUFDWixDQUFDO1NBQU0sSUFBSSxlQUFlLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQztRQUMxQyxnREFBZ0Q7UUFDaEQsSUFBSSxDQUFDO1lBQ0gsT0FBTyxlQUFlLENBQ3BCLGFBQWEsRUFDYixhQUF3QixFQUN4QixLQUFLLEVBQ0wsaUJBQWlCLEVBQ2pCLE9BQU8sQ0FDUixDQUFDO1FBQ0osQ0FBQztRQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7WUFDZixPQUFPLENBQUMsSUFBSSxDQUFDLDZC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O0FBRUQ7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFDSCxNQUFNLFVBQVUsa0JBQWtCLENBQ2hDLGdCQUF5QixFQUN6QixRQUFpQjtJQUVqQixtRUFBbUU7SUFDbkUsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBRWpELE9BQU8sQ0FDTCxhQUErQixFQUMvQixJQUFtQixFQUNuQixLQUFrQixFQUNsQixPQUE4QyxFQUM5QyxFQUFFO1FBQ0YsK0NBQStDO1FBQy9DLElBQUksUUFBUSxJQUFJLENBQUMsSUFBSSxJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQ2hDLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDbkMsSUFBSSxLQUFLLEVBQUUsQ0FBQztnQkFDVixJQUFJLEtBQUssQ0FBQyxTQUFTO29CQUFFLElBQUksR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDO3FCQUN2QyxJQUFJLEtBQUssQ0FBQyxRQUFRO29CQUFFLElBQUksR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDO1lBQ2pELENBQUM7UUFDSCxDQUFDO1FBRUQsT0FBTyxVQUFVLENBQUMsYUFBYSxFQUFFO1lBQy9CLElBQUk7WUFDSixnQkFBZ0I7WUFDaEIsS0FBSztZQUNMLE9BQU87U0FDUixDQUFDLENBQUM7SUFDTCxDQUFDLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgXG4gIFR5cGUsIFxuICBUZW1wbGF0ZVJlZiwgXG4gIFZpZXdDb250YWluZXJSZWYsXG4gIENvbXBvbmVudFJlZixcbiAgRW1iZWRkZWRWaWV3UmVmLFxuICBJbmplY3RvcixcbiAgaW5qZWN0XG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU2xvdFZhbHVlLCBSZW5kZXJTbG90T3B0aW9ucywgU2xvdFJlZ2lzdHJ5RW50cnksIFNMT1RfQ09ORklHIH0gZnJvbSAnLi9zbG90LnR5cGVzJztcblxuLyoqXG4gKiBSZW5kZXJzIGEgc2xvdCB2YWx1ZSBpbnRvIGEgVmlld0NvbnRhaW5lclJlZi5cbiAqIFRoaXMgaXMgdGhlIGNvcmUgdXRpbGl0eSBmb3Igc2xvdCByZW5kZXJpbmcuXG4gKiBcbiAqIEBwYXJhbSB2aWV3Q29udGFpbmVyIC0gVGhlIFZpZXdDb250YWluZXJSZWYgdG8gcmVuZGVyIGludG9cbiAqIEBwYXJhbSBvcHRpb25zIC0gT3B0aW9ucyBmb3IgcmVuZGVyaW5nIHRoZSBzbG90XG4gKiBAcmV0dXJucyBUaGUgY3JlYXRlZCBjb21wb25lbnQgb3IgZW1iZWRkZWQgdmlldyByZWZlcmVuY2VcbiAqIFxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGV4cG9ydCBjbGFzcyBNeUNvbXBvbmVudCB7XG4gKiAgIEBWaWV3Q2hpbGQoJ2NvbnRhaW5lcicsIHsgcmVhZDogVmlld0NvbnRhaW5lclJlZiB9KSBjb250YWluZXIhOiBWaWV3Q29udGFpbmVyUmVmO1xuICogICBcbiAqICAgcmVuZGVyQnV0dG9uKCkge1xuICogICAgIHJlbmRlclNsb3QodGhpcy5jb250YWluZXIsIHtcbiAqICAgICAgIHNsb3Q6IHRoaXMuYnV0dG9uT3ZlcnJpZGUsXG4gKiAgICAgICBkZWZhdWx0Q29tcG9uZW50OiBEZWZhdWx0QnV0dG9uLFxuICogICAgICAgcHJvcHM6IHsgdGV4dDogJ0NsaWNrIG1lJyB9LFxuICogICAgICAgb3V0cHV0czogeyBjbGljazogKGV2ZW50KSA9PiB0aGlzLmhhbmRsZUNsaWNrKGV2ZW50KSB9XG4gKiAgICAgfSk7XG4gKiAgIH1cbiAqIH1cbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVuZGVyU2xvdDxUID0gYW55PihcbiAgdmlld0NvbnRhaW5lcjogVmlld0NvbnRhaW5lclJlZixcbiAgb3B0aW9uczogUmVuZGVyU2xvdE9wdGlvbnM8VD5cbik6IENvbXBvbmVudFJlZjxUPiB8IEVtYmVkZGVkVmlld1JlZjxUPiB8IG51bGwge1xuICBjb25zdCB7IHNsb3QsIGRlZmF1bHRDb21wb25lbnQsIHByb3BzLCBpbmplY3Rvciwgb3V0cHV0cyB9ID0gb3B0aW9ucztcbiAgXG4gIHZpZXdDb250YWluZXIuY2xlYXIoKTtcbiAgXG4gIGNvbnN0IGVmZmVjdGl2ZVNsb3QgPSBzbG90ID8/IGRlZmF1bHRDb21wb25lbnQ7XG4gIGNvbnN0IGVmZmVjdGl2ZUluamVjdG9yID0gaW5qZWN0b3IgPz8gdmlld0NvbnRhaW5lci5pbmplY3RvcjtcbiAgXG4gIGlmIChlZmZlY3RpdmVTbG90IGluc3RhbmNlb2YgVGVtcGxhdGVSZWYpIHtcbiAgICAvLyBUZW1wbGF0ZVJlZjogcmVuZGVyIHRlbXBsYXRlXG4gICAgcmV0dXJuIHZpZXdDb250YWluZXIuY3JlYXRlRW1iZWRkZWRWaWV3KGVmZmVjdGl2ZVNsb3QsIHtcbiAgICAgICRpbXBsaWNpdDogcHJvcHMgPz8ge30sXG4gICAgICBwcm9wczogcHJvcHMgPz8ge31cbiAgICB9IGFzIGFueSk7XG4gIH0gZWxzZSBpZiAoaXNDb21wb25lbnRUeXBlKGVmZmVjdGl2ZVNsb3QpKSB7XG4gICAgLy8gQ29tcG9uZW50IHR5cGUgLSB3cmFwIGluIHRyeS9jYXRjaCBmb3Igc2FmZXR5XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBjcmVhdGVDb21wb25lbnQoXG4gICAgICAgIHZpZXdDb250YWluZXIsXG4gICAgICAgIGVmZmVjdGl2ZVNsb3QgYXMgVHlwZTxUPixcbiAgICAgICAgcHJvcHMsXG4gICAgICAgIGVmZmVjdGl2ZUluamVjdG9yLFxuICAgICAgICBvdXRwdXRzXG4gICAgICApO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLndhcm4oJ0ZhaWxlZCB0byBjcmVhdGUgY29tcG9uZW50OicsIGVmZmVjdGl2ZVNsb3QsIGVycm9yKTtcbiAgICAgIC8vIEZhbGwgdGhyb3VnaCB0byBkZWZhdWx0IGNvbXBvbmVudFxuICAgIH1cbiAgfVxuICBcbiAgLy8gRGVmYXVsdDogcmVuZGVyIGRlZmF1bHQgY29tcG9uZW50IGlmIHByb3ZpZGVkXG4gIHJldHVybiBkZWZhdWx0Q29tcG9uZW50ID8gY3JlYXRlQ29tcG9uZW50KFxuICAgIHZpZXdDb250YWluZXIsXG4gICAgZGVmYXVsdENvbXBvbmVudCxcbiAgICBwcm9wcyxcbiAgICBlZmZlY3RpdmVJbmplY3RvcixcbiAgICBvdXRwdXRzXG4gICkgOiBudWxsO1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYSBjb21wb25lbnQgYW5kIGFwcGxpZXMgcHJvcGVydGllcy5cbiAqL1xuZnVuY3Rpb24gY3JlYXRlQ29tcG9uZW50PFQ+KFxuICB2aWV3Q29udGFpbmVyOiBWaWV3Q29udGFpbmVyUmVmLFxuICBjb21wb25lbnQ6IFR5cGU8VD4sXG4gIHByb3BzPzogUGFydGlhbDxUPixcbiAgaW5qZWN0b3I/OiBJbmplY3RvcixcbiAgb3V0cHV0cz86IFJlY29yZDxzdHJpbmcsIChldmVudDogYW55KSA9PiB2b2lkPlxuKTogQ29tcG9uZW50UmVmPFQ+IHtcbiAgY29uc3QgY29tcG9uZW50UmVmID0gdmlld0NvbnRhaW5lci5jcmVhdGVDb21wb25lbnQoY29tcG9uZW50LCB7XG4gICAgaW5qZWN0b3JcbiAgfSk7XG4gIFxuICBpZiAocHJvcHMpIHtcbiAgICAvLyBBcHBseSBwcm9wcyB1c2luZyBzZXRJbnB1dFxuICAgIGZvciAoY29uc3Qga2V5IGluIHByb3BzKSB7XG4gICAgICBjb25zdCB2YWx1ZSA9IHByb3BzW2tleV07XG4gICAgICBjb21wb25lbnRSZWYuc2V0SW5wdXQoa2V5LCB2YWx1ZSk7XG4gICAgfVxuICB9XG4gIFxuICBpZiAob3V0cHV0cykge1xuICAgIC8vIFdpcmUgdXAgb3V0cHV0IGV2ZW50IGhhbmRsZXJzIHdpdGggcHJvcGVyIGNsZWFudXBcbiAgICBjb25zdCBpbnN0YW5jZSA9IGNvbXBvbmVudFJlZi5pbnN0YW5jZSBhcyBhbnk7XG4gICAgY29uc3Qgc3Vic2NyaXB0aW9uczogYW55W10gPSBbXTtcbiAgICBcbiAgICBmb3IgKGNvbnN0IFtldmVudE5hbWUsIGhhbmRsZXJdIG9mIE9iamVjdC5lbnRyaWVzKG91dHB1dHMpKSB7XG4gICAgICBpZiAoaW5zdGFuY2VbZXZlbnROYW1lXT8uc3Vic2NyaWJlKSB7XG4gICAgICAgIGNvbnN0IHN1YnNjcmlwdGlvbiA9IGluc3RhbmNlW2V2ZW50TmFtZV0uc3Vic2NyaWJlKGhhbmRsZXIpO1xuICAgICAgICBzdWJzY3JpcHRpb25zLnB1c2goc3Vic2NyaXB0aW9uKTtcbiAgICAgIH1cbiAgICB9XG4gICAgXG4gICAgLy8gUmVnaXN0ZXIgY2xlYW51cCBvbiBjb21wb25lbnQgZGVzdHJveVxuICAgIGNvbXBvbmVudFJlZi5vbkRlc3Ryb3koKCkgPT4ge1xuICAgICAgc3Vic2NyaXB0aW9ucy5mb3JFYWNoKHN1YiA9PiBzdWIudW5zdWJzY3JpYmUoKSk7XG4gICAgfSk7XG4gIH1cbiAgXG4gIC8vIFRyaWdnZXIgY2hhbmdlIGRldGVjdGlvblxuICBjb21wb25lbnRSZWYuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICBcbiAgcmV0dXJuIGNvbXBvbmVudFJlZjtcbn1cblxuXG4vKipcbiAqIENoZWNrcyBpZiBhIHZhbHVlIGlzIGEgY29tcG9uZW50IHR5cGUuXG4gKiBTaW1wbGlmaWVkIGNoZWNrIC0gcmVseSBvbiB0cnkvY2F0Y2ggZm9yIGFjdHVhbCB2YWxpZGF0aW9uLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNDb21wb25lbnRUeXBlKHZhbHVlOiBhbnkpOiBib29sZWFuIHtcbiAgLy8gQXJyb3cgZnVuY3Rpb25zIGFuZCByZWd1bGFyIGZ1bmN0aW9ucyB3aXRob3V0IGEgcHJvdG90eXBlIGFyZSBub3QgY29tcG9uZW50c1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nICYmICEhdmFsdWUucHJvdG90eXBlO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiBhIHZhbHVlIGlzIGEgdmFsaWQgc2xvdCB2YWx1ZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzU2xvdFZhbHVlKHZhbHVlOiBhbnkpOiB2YWx1ZSBpcyBTbG90VmFsdWUge1xuICByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBUZW1wbGF0ZVJlZiB8fCBpc0NvbXBvbmVudFR5cGUodmFsdWUpO1xufVxuXG4vKipcbiAqIE5vcm1hbGl6ZXMgYSBzbG90IHZhbHVlIHRvIGEgY29uc2lzdGVudCBmb3JtYXQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBub3JtYWxpemVTbG90VmFsdWU8VCA9IGFueT4oXG4gIHZhbHVlOiBTbG90VmFsdWU8VD4gfCB1bmRlZmluZWQsXG4gIGRlZmF1bHRDb21wb25lbnQ6IFR5cGU8VD4gfCB1bmRlZmluZWRcbik6IFNsb3RSZWdpc3RyeUVudHJ5PFQ+IHtcbiAgaWYgKCF2YWx1ZSkge1xuICAgIHJldHVybiB7IGNvbXBvbmVudDogZGVmYXVsdENvbXBvbmVudCB9O1xuICB9XG4gIFxuICBpZiAodmFsdWUgaW5zdGFuY2VvZiBUZW1wbGF0ZVJlZikge1xuICAgIHJldHVybiB7IHRlbXBsYXRlOiB2YWx1ZSB9O1xuICB9XG4gIFxuICBpZiAoaXNDb21wb25lbnRUeXBlKHZhbHVlKSkge1xuICAgIHJldHVybiB7IGNvbXBvbmVudDogdmFsdWUgYXMgVHlwZTxUPiB9O1xuICB9XG4gIFxuICByZXR1cm4geyBjb21wb25lbnQ6IGRlZmF1bHRDb21wb25lbnQgfTtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgc2xvdCBjb25maWd1cmF0aW9uIG1hcCBmb3IgYSBjb21wb25lbnQuXG4gKiBcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBzbG90cyA9IGNyZWF0ZVNsb3RDb25maWcoe1xuICogICBzZW5kQnV0dG9uOiBDdXN0b21TZW5kQnV0dG9uLFxuICogICB0b29sYmFyOiAnY3VzdG9tLXRvb2xiYXItY2xhc3MnLFxuICogICBmb290ZXI6IGZvb3RlclRlbXBsYXRlXG4gKiB9LCB7XG4gKiAgIHNlbmRCdXR0b246IERlZmF1bHRTZW5kQnV0dG9uLFxuICogICB0b29sYmFyOiBEZWZhdWx0VG9vbGJhcixcbiAqICAgZm9vdGVyOiBEZWZhdWx0Rm9vdGVyXG4gKiB9KTtcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlU2xvdENvbmZpZzxUIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgVHlwZTxhbnk+Pj4oXG4gIG92ZXJyaWRlczogUGFydGlhbDxSZWNvcmQ8a2V5b2YgVCwgU2xvdFZhbHVlPj4sXG4gIGRlZmF1bHRzOiBUXG4pOiBNYXA8a2V5b2YgVCwgU2xvdFJlZ2lzdHJ5RW50cnk+IHtcbiAgY29uc3QgY29uZmlnID0gbmV3IE1hcDxrZXlvZiBULCBTbG90UmVnaXN0cnlFbnRyeT4oKTtcbiAgXG4gIGZvciAoY29uc3Qga2V5IGluIGRlZmF1bHRzKSB7XG4gICAgY29uc3Qgb3ZlcnJpZGUgPSBvdmVycmlkZXNba2V5XTtcbiAgICBjb25zdCBkZWZhdWx0Q29tcG9uZW50ID0gZGVmYXVsdHNba2V5XTtcbiAgICBjb25maWcuc2V0KGtleSwgbm9ybWFsaXplU2xvdFZhbHVlKG92ZXJyaWRlLCBkZWZhdWx0Q29tcG9uZW50KSk7XG4gIH1cbiAgXG4gIHJldHVybiBjb25maWc7XG59XG5cbi8qKlxuICogUHJvdmlkZXMgc2xvdCBjb25maWd1cmF0aW9uIHRvIGNoaWxkIGNvbXBvbmVudHMgdmlhIERJLlxuICogXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogQENvbXBvbmVudCh7XG4gKiAgIHByb3ZpZGVyczogW1xuICogICAgIHByb3ZpZGVTbG90cyh7XG4gKiAgICAgICBzZW5kQnV0dG9uOiBDdXN0b21TZW5kQnV0dG9uLFxuICogICAgICAgdG9vbGJhcjogQ3VzdG9tVG9vbGJhclxuICogICAgIH0pXG4gKiAgIF1cbiAqIH0pXG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHByb3ZpZGVTbG90cyhzbG90czogUmVjb3JkPHN0cmluZywgVHlwZTxhbnk+Pikge1xuICBjb25zdCBzbG90TWFwID0gbmV3IE1hcDxzdHJpbmcsIFNsb3RSZWdpc3RyeUVudHJ5PigpO1xuICBcbiAgLy8gT25seSBhY2NlcHQgY29tcG9uZW50IHR5cGVzIGluIERJICh0ZW1wbGF0ZXMgbGFjayB2aWV3IGNvbnRleHQpXG4gIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHNsb3RzKSkge1xuICAgIGlmIChpc0NvbXBvbmVudFR5cGUodmFsdWUpKSB7XG4gICAgICBzbG90TWFwLnNldChrZXksIHsgY29tcG9uZW50OiB2YWx1ZSBhcyBUeXBlPGFueT4gfSk7XG4gICAgfVxuICB9XG4gIFxuICByZXR1cm4ge1xuICAgIHByb3ZpZGU6IFNMT1RfQ09ORklHLFxuICAgIHVzZVZhbHVlOiBzbG90TWFwXG4gIH07XG59XG5cbi8qKlxuICogR2V0cyBzbG90IGNvbmZpZ3VyYXRpb24gZnJvbSBESS5cbiAqIE11c3QgYmUgY2FsbGVkIHdpdGhpbiBhbiBpbmplY3Rpb24gY29udGV4dC5cbiAqIFxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGV4cG9ydCBjbGFzcyBNeUNvbXBvbmVudCB7XG4gKiAgIHNsb3RzID0gZ2V0U2xvdENvbmZpZygpO1xuICogICBcbiAqICAgbmdPbkluaXQoKSB7XG4gKiAgICAgY29uc3Qgc2VuZEJ1dHRvbiA9IHRoaXMuc2xvdHM/LmdldCgnc2VuZEJ1dHRvbicpO1xuICogICB9XG4gKiB9XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFNsb3RDb25maWcoKTogUmVhZG9ubHlNYXA8c3RyaW5nLCBTbG90UmVnaXN0cnlFbnRyeT4gfCBudWxsIHtcbiAgcmV0dXJuIGluamVjdChTTE9UX0NPTkZJRywgeyBvcHRpb25hbDogdHJ1ZSB9KTtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgcmVuZGVyIGZ1bmN0aW9uIGZvciBhIHNwZWNpZmljIHNsb3QuXG4gKiBVc2VmdWwgZm9yIGNyZWF0aW5nIHJldXNhYmxlIHNsb3QgcmVuZGVyZXJzLlxuICogXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgcmVuZGVyU2VuZEJ1dHRvbiA9IGNyZWF0ZVNsb3RSZW5kZXJlcihcbiAqICAgRGVmYXVsdFNlbmRCdXR0b24sXG4gKiAgICdzZW5kQnV0dG9uJ1xuICogKTtcbiAqIFxuICogLy8gTGF0ZXIgaW4gdGVtcGxhdGVcbiAqIHJlbmRlclNlbmRCdXR0b24odGhpcy52aWV3Q29udGFpbmVyLCB0aGlzLnNlbmRCdXR0b25PdmVycmlkZSk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVNsb3RSZW5kZXJlcjxUPihcbiAgZGVmYXVsdENvbXBvbmVudDogVHlwZTxUPixcbiAgc2xvdE5hbWU/OiBzdHJpbmdcbikge1xuICAvLyBHZXQgY29uZmlnIGluIHRoZSBpbmplY3Rpb24gY29udGV4dCB3aGVuIHRoZSByZW5kZXJlciBpcyBjcmVhdGVkXG4gIGNvbnN0IGNvbmZpZyA9IHNsb3ROYW1lID8gZ2V0U2xvdENvbmZpZygpIDogbnVsbDtcbiAgXG4gIHJldHVybiAoXG4gICAgdmlld0NvbnRhaW5lcjogVmlld0NvbnRhaW5lclJlZixcbiAgICBzbG90PzogU2xvdFZhbHVlPFQ+LFxuICAgIHByb3BzPzogUGFydGlhbDxUPixcbiAgICBvdXRwdXRzPzogUmVjb3JkPHN0cmluZywgKGV2ZW50OiBhbnkpID0+IHZvaWQ+XG4gICkgPT4ge1xuICAgIC8vIENoZWNrIERJIGZvciBvdmVycmlkZXMgaWYgc2xvdCBuYW1lIHByb3ZpZGVkXG4gICAgaWYgKHNsb3ROYW1lICYmICFzbG90ICYmIGNvbmZpZykge1xuICAgICAgY29uc3QgZW50cnkgPSBjb25maWcuZ2V0KHNsb3ROYW1lKTtcbiAgICAgIGlmIChlbnRyeSkge1xuICAgICAgICBpZiAoZW50cnkuY29tcG9uZW50KSBzbG90ID0gZW50cnkuY29tcG9uZW50O1xuICAgICAgICBlbHNlIGlmIChlbnRyeS50ZW1wbGF0ZSkgc2xvdCA9IGVudHJ5LnRlbXBsYXRlO1xuICAgICAgfVxuICAgIH1cbiAgICBcbiAgICByZXR1cm4gcmVuZGVyU2xvdCh2aWV3Q29udGFpbmVyLCB7XG4gICAgICBzbG90LFxuICAgICAgZGVmYXVsdENvbXBvbmVudCxcbiAgICAgIHByb3BzLFxuICAgICAgb3V0cHV0c1xuICAgIH0pO1xuICB9O1xufSJdfQ==
|
|
231
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xvdC51dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvc2xvdHMvc2xvdC51dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsV0FBVyxFQUtYLE1BQU0sRUFDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQW1ELFdBQVcsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUU1Rjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F1Qkc7QUFDSCxNQUFNLFVBQVUsVUFBVSxDQUN4QixhQUErQixFQUMvQixPQUE2QjtJQUU3QixNQUFNLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLEdBQUcsT0FBTyxDQUFDO0lBRXJFLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUV0QixNQUFNLGFBQWEsR0FBRyxJQUFJLElBQUksZ0JBQWdCLENBQUM7SUFDL0MsTUFBTSxpQkFBaUIsR0FBRyxRQUFRLElBQUksYUFBYSxDQUFDLFFBQVEsQ0FBQztJQUU3RCxJQUFJLGFBQWEsWUFBWSxXQUFXLEVBQUUsQ0FBQztRQUN6QywrQkFBK0I7UUFDL0IsT0FBTyxhQUFhLENBQUMsa0JBQWtCLENBQUMsYUFBYSxFQUFFO1lBQ3JELFNBQVMsRUFBRSxLQUFLLElBQUksRUFBRTtZQUN0QixLQUFLLEVBQUUsS0FBSyxJQUFJLEVBQUU7U0FDWixDQUFDLENBQUM7SUFDWixDQUFDO1NBQU0sSUFBSSxlQUFlLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQztRQUMxQyxnREFBZ0Q7UUFDaEQsSUFBSSxDQUFDO1lBQ0gsT0FBTyxlQUFlLENBQ3BCLGFBQWEsRUFDYixhQUF3QixFQUN4QixLQUFLLEVBQ0wsaUJBQWlCLEVBQ2pCLE9BQU8sQ0FDUixDQUFDO1FBQ0osQ0FBQztRQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7WUFDZixPQUFPLENBQUMsSUFBSSxDQUFDLDZC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LGdCQUFnQjtZQUNoQixLQUFLO1lBQ0wsT0FBTztTQUNSLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBcbiAgVHlwZSwgXG4gIFRlbXBsYXRlUmVmLCBcbiAgVmlld0NvbnRhaW5lclJlZixcbiAgQ29tcG9uZW50UmVmLFxuICBFbWJlZGRlZFZpZXdSZWYsXG4gIEluamVjdG9yLFxuICBpbmplY3Rcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTbG90VmFsdWUsIFJlbmRlclNsb3RPcHRpb25zLCBTbG90UmVnaXN0cnlFbnRyeSwgU0xPVF9DT05GSUcgfSBmcm9tICcuL3Nsb3QudHlwZXMnO1xuXG4vKipcbiAqIFJlbmRlcnMgYSBzbG90IHZhbHVlIGludG8gYSBWaWV3Q29udGFpbmVyUmVmLlxuICogVGhpcyBpcyB0aGUgY29yZSB1dGlsaXR5IGZvciBzbG90IHJlbmRlcmluZy5cbiAqIFxuICogQHBhcmFtIHZpZXdDb250YWluZXIgLSBUaGUgVmlld0NvbnRhaW5lclJlZiB0byByZW5kZXIgaW50b1xuICogQHBhcmFtIG9wdGlvbnMgLSBPcHRpb25zIGZvciByZW5kZXJpbmcgdGhlIHNsb3RcbiAqIEByZXR1cm5zIFRoZSBjcmVhdGVkIGNvbXBvbmVudCBvciBlbWJlZGRlZCB2aWV3IHJlZmVyZW5jZVxuICogXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogZXhwb3J0IGNsYXNzIE15Q29tcG9uZW50IHtcbiAqICAgQFZpZXdDaGlsZCgnY29udGFpbmVyJywgeyByZWFkOiBWaWV3Q29udGFpbmVyUmVmIH0pIGNvbnRhaW5lciE6IFZpZXdDb250YWluZXJSZWY7XG4gKiAgIFxuICogICByZW5kZXJCdXR0b24oKSB7XG4gKiAgICAgcmVuZGVyU2xvdCh0aGlzLmNvbnRhaW5lciwge1xuICogICAgICAgc2xvdDogdGhpcy5idXR0b25PdmVycmlkZSxcbiAqICAgICAgIGRlZmF1bHRDb21wb25lbnQ6IERlZmF1bHRCdXR0b24sXG4gKiAgICAgICBwcm9wczogeyB0ZXh0OiAnQ2xpY2sgbWUnIH0sXG4gKiAgICAgICBvdXRwdXRzOiB7IGNsaWNrOiAoZXZlbnQpID0+IHRoaXMuaGFuZGxlQ2xpY2soZXZlbnQpIH1cbiAqICAgICB9KTtcbiAqICAgfVxuICogfVxuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZW5kZXJTbG90PFQgPSBhbnk+KFxuICB2aWV3Q29udGFpbmVyOiBWaWV3Q29udGFpbmVyUmVmLFxuICBvcHRpb25zOiBSZW5kZXJTbG90T3B0aW9uczxUPlxuKTogQ29tcG9uZW50UmVmPFQ+IHwgRW1iZWRkZWRWaWV3UmVmPFQ+IHwgbnVsbCB7XG4gIGNvbnN0IHsgc2xvdCwgZGVmYXVsdENvbXBvbmVudCwgcHJvcHMsIGluamVjdG9yLCBvdXRwdXRzIH0gPSBvcHRpb25zO1xuICBcbiAgdmlld0NvbnRhaW5lci5jbGVhcigpO1xuICBcbiAgY29uc3QgZWZmZWN0aXZlU2xvdCA9IHNsb3QgPz8gZGVmYXVsdENvbXBvbmVudDtcbiAgY29uc3QgZWZmZWN0aXZlSW5qZWN0b3IgPSBpbmplY3RvciA/PyB2aWV3Q29udGFpbmVyLmluamVjdG9yO1xuICBcbiAgaWYgKGVmZmVjdGl2ZVNsb3QgaW5zdGFuY2VvZiBUZW1wbGF0ZVJlZikge1xuICAgIC8vIFRlbXBsYXRlUmVmOiByZW5kZXIgdGVtcGxhdGVcbiAgICByZXR1cm4gdmlld0NvbnRhaW5lci5jcmVhdGVFbWJlZGRlZFZpZXcoZWZmZWN0aXZlU2xvdCwge1xuICAgICAgJGltcGxpY2l0OiBwcm9wcyA/PyB7fSxcbiAgICAgIHByb3BzOiBwcm9wcyA/PyB7fVxuICAgIH0gYXMgYW55KTtcbiAgfSBlbHNlIGlmIChpc0NvbXBvbmVudFR5cGUoZWZmZWN0aXZlU2xvdCkpIHtcbiAgICAvLyBDb21wb25lbnQgdHlwZSAtIHdyYXAgaW4gdHJ5L2NhdGNoIGZvciBzYWZldHlcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIGNyZWF0ZUNvbXBvbmVudChcbiAgICAgICAgdmlld0NvbnRhaW5lcixcbiAgICAgICAgZWZmZWN0aXZlU2xvdCBhcyBUeXBlPFQ+LFxuICAgICAgICBwcm9wcyxcbiAgICAgICAgZWZmZWN0aXZlSW5qZWN0b3IsXG4gICAgICAgIG91dHB1dHNcbiAgICAgICk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUud2FybignRmFpbGVkIHRvIGNyZWF0ZSBjb21wb25lbnQ6JywgZWZmZWN0aXZlU2xvdCwgZXJyb3IpO1xuICAgICAgLy8gRmFsbCB0aHJvdWdoIHRvIGRlZmF1bHQgY29tcG9uZW50XG4gICAgfVxuICB9XG4gIFxuICAvLyBEZWZhdWx0OiByZW5kZXIgZGVmYXVsdCBjb21wb25lbnQgaWYgcHJvdmlkZWRcbiAgcmV0dXJuIGRlZmF1bHRDb21wb25lbnQgPyBjcmVhdGVDb21wb25lbnQoXG4gICAgdmlld0NvbnRhaW5lcixcbiAgICBkZWZhdWx0Q29tcG9uZW50LFxuICAgIHByb3BzLFxuICAgIGVmZmVjdGl2ZUluamVjdG9yLFxuICAgIG91dHB1dHNcbiAgKSA6IG51bGw7XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIGNvbXBvbmVudCBhbmQgYXBwbGllcyBwcm9wZXJ0aWVzLlxuICovXG5mdW5jdGlvbiBjcmVhdGVDb21wb25lbnQ8VD4oXG4gIHZpZXdDb250YWluZXI6IFZpZXdDb250YWluZXJSZWYsXG4gIGNvbXBvbmVudDogVHlwZTxUPixcbiAgcHJvcHM/OiBQYXJ0aWFsPFQ+LFxuICBpbmplY3Rvcj86IEluamVjdG9yLFxuICBvdXRwdXRzPzogUmVjb3JkPHN0cmluZywgKGV2ZW50OiBhbnkpID0+IHZvaWQ+XG4pOiBDb21wb25lbnRSZWY8VD4ge1xuICBjb25zdCBjb21wb25lbnRSZWYgPSB2aWV3Q29udGFpbmVyLmNyZWF0ZUNvbXBvbmVudChjb21wb25lbnQsIHtcbiAgICBpbmplY3RvclxuICB9KTtcbiAgXG4gIGlmIChwcm9wcykge1xuICAgIC8vIEFwcGx5IHByb3BzIHVzaW5nIHNldElucHV0LCBidXQgb25seSBmb3IgZGVjbGFyZWQgaW5wdXRzXG4gICAgY29uc3QgY21wRGVmOiBhbnkgPSAoY29tcG9uZW50IGFzIGFueSkuybVjbXA7XG4gICAgY29uc3QgZGVjbGFyZWRJbnB1dHMgPSBuZXcgU2V0PHN0cmluZz4oT2JqZWN0LmtleXMoY21wRGVmPy5pbnB1dHMgPz8ge30pKTtcblxuICAgIGlmIChkZWNsYXJlZElucHV0cy5oYXMoJ3Byb3BzJykpIHtcbiAgICAgIGNvbXBvbmVudFJlZi5zZXRJbnB1dCgncHJvcHMnLCBwcm9wcyBhcyBhbnkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBmb3IgKGNvbnN0IGtleSBpbiBwcm9wcykge1xuICAgICAgICBpZiAoZGVjbGFyZWRJbnB1dHMuaGFzKGtleSkpIHtcbiAgICAgICAgICBjb25zdCB2YWx1ZSA9IChwcm9wcyBhcyBhbnkpW2tleV07XG4gICAgICAgICAgY29tcG9uZW50UmVmLnNldElucHV0KGtleSwgdmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG4gIFxuICBpZiAob3V0cHV0cykge1xuICAgIC8vIFdpcmUgdXAgb3V0cHV0IGV2ZW50IGhhbmRsZXJzIHdpdGggcHJvcGVyIGNsZWFudXBcbiAgICBjb25zdCBpbnN0YW5jZSA9IGNvbXBvbmVudFJlZi5pbnN0YW5jZSBhcyBhbnk7XG4gICAgY29uc3Qgc3Vic2NyaXB0aW9uczogYW55W10gPSBbXTtcbiAgICBcbiAgICBmb3IgKGNvbnN0IFtldmVudE5hbWUsIGhhbmRsZXJdIG9mIE9iamVjdC5lbnRyaWVzKG91dHB1dHMpKSB7XG4gICAgICBpZiAoaW5zdGFuY2VbZXZlbnROYW1lXT8uc3Vic2NyaWJlKSB7XG4gICAgICAgIGNvbnN0IHN1YnNjcmlwdGlvbiA9IGluc3RhbmNlW2V2ZW50TmFtZV0uc3Vic2NyaWJlKGhhbmRsZXIpO1xuICAgICAgICBzdWJzY3JpcHRpb25zLnB1c2goc3Vic2NyaXB0aW9uKTtcbiAgICAgIH1cbiAgICB9XG4gICAgXG4gICAgLy8gUmVnaXN0ZXIgY2xlYW51cCBvbiBjb21wb25lbnQgZGVzdHJveVxuICAgIGNvbXBvbmVudFJlZi5vbkRlc3Ryb3koKCkgPT4ge1xuICAgICAgc3Vic2NyaXB0aW9ucy5mb3JFYWNoKHN1YiA9PiBzdWIudW5zdWJzY3JpYmUoKSk7XG4gICAgfSk7XG4gIH1cbiAgXG4gIC8vIFRyaWdnZXIgY2hhbmdlIGRldGVjdGlvblxuICBjb21wb25lbnRSZWYuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICBcbiAgcmV0dXJuIGNvbXBvbmVudFJlZjtcbn1cblxuXG4vKipcbiAqIENoZWNrcyBpZiBhIHZhbHVlIGlzIGEgY29tcG9uZW50IHR5cGUuXG4gKiBTaW1wbGlmaWVkIGNoZWNrIC0gcmVseSBvbiB0cnkvY2F0Y2ggZm9yIGFjdHVhbCB2YWxpZGF0aW9uLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNDb21wb25lbnRUeXBlKHZhbHVlOiBhbnkpOiBib29sZWFuIHtcbiAgLy8gQXJyb3cgZnVuY3Rpb25zIGFuZCByZWd1bGFyIGZ1bmN0aW9ucyB3aXRob3V0IGEgcHJvdG90eXBlIGFyZSBub3QgY29tcG9uZW50c1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nICYmICEhdmFsdWUucHJvdG90eXBlO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiBhIHZhbHVlIGlzIGEgdmFsaWQgc2xvdCB2YWx1ZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzU2xvdFZhbHVlKHZhbHVlOiBhbnkpOiB2YWx1ZSBpcyBTbG90VmFsdWUge1xuICByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBUZW1wbGF0ZVJlZiB8fCBpc0NvbXBvbmVudFR5cGUodmFsdWUpO1xufVxuXG4vKipcbiAqIE5vcm1hbGl6ZXMgYSBzbG90IHZhbHVlIHRvIGEgY29uc2lzdGVudCBmb3JtYXQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBub3JtYWxpemVTbG90VmFsdWU8VCA9IGFueT4oXG4gIHZhbHVlOiBTbG90VmFsdWU8VD4gfCB1bmRlZmluZWQsXG4gIGRlZmF1bHRDb21wb25lbnQ6IFR5cGU8VD4gfCB1bmRlZmluZWRcbik6IFNsb3RSZWdpc3RyeUVudHJ5PFQ+IHtcbiAgaWYgKCF2YWx1ZSkge1xuICAgIHJldHVybiB7IGNvbXBvbmVudDogZGVmYXVsdENvbXBvbmVudCB9O1xuICB9XG4gIFxuICBpZiAodmFsdWUgaW5zdGFuY2VvZiBUZW1wbGF0ZVJlZikge1xuICAgIHJldHVybiB7IHRlbXBsYXRlOiB2YWx1ZSB9O1xuICB9XG4gIFxuICBpZiAoaXNDb21wb25lbnRUeXBlKHZhbHVlKSkge1xuICAgIHJldHVybiB7IGNvbXBvbmVudDogdmFsdWUgYXMgVHlwZTxUPiB9O1xuICB9XG4gIFxuICByZXR1cm4geyBjb21wb25lbnQ6IGRlZmF1bHRDb21wb25lbnQgfTtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgc2xvdCBjb25maWd1cmF0aW9uIG1hcCBmb3IgYSBjb21wb25lbnQuXG4gKiBcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBzbG90cyA9IGNyZWF0ZVNsb3RDb25maWcoe1xuICogICBzZW5kQnV0dG9uOiBDdXN0b21TZW5kQnV0dG9uLFxuICogICB0b29sYmFyOiAnY3VzdG9tLXRvb2xiYXItY2xhc3MnLFxuICogICBmb290ZXI6IGZvb3RlclRlbXBsYXRlXG4gKiB9LCB7XG4gKiAgIHNlbmRCdXR0b246IERlZmF1bHRTZW5kQnV0dG9uLFxuICogICB0b29sYmFyOiBEZWZhdWx0VG9vbGJhcixcbiAqICAgZm9vdGVyOiBEZWZhdWx0Rm9vdGVyXG4gKiB9KTtcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlU2xvdENvbmZpZzxUIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgVHlwZTxhbnk+Pj4oXG4gIG92ZXJyaWRlczogUGFydGlhbDxSZWNvcmQ8a2V5b2YgVCwgU2xvdFZhbHVlPj4sXG4gIGRlZmF1bHRzOiBUXG4pOiBNYXA8a2V5b2YgVCwgU2xvdFJlZ2lzdHJ5RW50cnk+IHtcbiAgY29uc3QgY29uZmlnID0gbmV3IE1hcDxrZXlvZiBULCBTbG90UmVnaXN0cnlFbnRyeT4oKTtcbiAgXG4gIGZvciAoY29uc3Qga2V5IGluIGRlZmF1bHRzKSB7XG4gICAgY29uc3Qgb3ZlcnJpZGUgPSBvdmVycmlkZXNba2V5XTtcbiAgICBjb25zdCBkZWZhdWx0Q29tcG9uZW50ID0gZGVmYXVsdHNba2V5XTtcbiAgICBjb25maWcuc2V0KGtleSwgbm9ybWFsaXplU2xvdFZhbHVlKG92ZXJyaWRlLCBkZWZhdWx0Q29tcG9uZW50KSk7XG4gIH1cbiAgXG4gIHJldHVybiBjb25maWc7XG59XG5cbi8qKlxuICogUHJvdmlkZXMgc2xvdCBjb25maWd1cmF0aW9uIHRvIGNoaWxkIGNvbXBvbmVudHMgdmlhIERJLlxuICogXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogQENvbXBvbmVudCh7XG4gKiAgIHByb3ZpZGVyczogW1xuICogICAgIHByb3ZpZGVTbG90cyh7XG4gKiAgICAgICBzZW5kQnV0dG9uOiBDdXN0b21TZW5kQnV0dG9uLFxuICogICAgICAgdG9vbGJhcjogQ3VzdG9tVG9vbGJhclxuICogICAgIH0pXG4gKiAgIF1cbiAqIH0pXG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHByb3ZpZGVTbG90cyhzbG90czogUmVjb3JkPHN0cmluZywgVHlwZTxhbnk+Pikge1xuICBjb25zdCBzbG90TWFwID0gbmV3IE1hcDxzdHJpbmcsIFNsb3RSZWdpc3RyeUVudHJ5PigpO1xuICBcbiAgLy8gT25seSBhY2NlcHQgY29tcG9uZW50IHR5cGVzIGluIERJICh0ZW1wbGF0ZXMgbGFjayB2aWV3IGNvbnRleHQpXG4gIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHNsb3RzKSkge1xuICAgIGlmIChpc0NvbXBvbmVudFR5cGUodmFsdWUpKSB7XG4gICAgICBzbG90TWFwLnNldChrZXksIHsgY29tcG9uZW50OiB2YWx1ZSBhcyBUeXBlPGFueT4gfSk7XG4gICAgfVxuICB9XG4gIFxuICByZXR1cm4ge1xuICAgIHByb3ZpZGU6IFNMT1RfQ09ORklHLFxuICAgIHVzZVZhbHVlOiBzbG90TWFwXG4gIH07XG59XG5cbi8qKlxuICogR2V0cyBzbG90IGNvbmZpZ3VyYXRpb24gZnJvbSBESS5cbiAqIE11c3QgYmUgY2FsbGVkIHdpdGhpbiBhbiBpbmplY3Rpb24gY29udGV4dC5cbiAqIFxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGV4cG9ydCBjbGFzcyBNeUNvbXBvbmVudCB7XG4gKiAgIHNsb3RzID0gZ2V0U2xvdENvbmZpZygpO1xuICogICBcbiAqICAgbmdPbkluaXQoKSB7XG4gKiAgICAgY29uc3Qgc2VuZEJ1dHRvbiA9IHRoaXMuc2xvdHM/LmdldCgnc2VuZEJ1dHRvbicpO1xuICogICB9XG4gKiB9XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFNsb3RDb25maWcoKTogUmVhZG9ubHlNYXA8c3RyaW5nLCBTbG90UmVnaXN0cnlFbnRyeT4gfCBudWxsIHtcbiAgcmV0dXJuIGluamVjdChTTE9UX0NPTkZJRywgeyBvcHRpb25hbDogdHJ1ZSB9KTtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgcmVuZGVyIGZ1bmN0aW9uIGZvciBhIHNwZWNpZmljIHNsb3QuXG4gKiBVc2VmdWwgZm9yIGNyZWF0aW5nIHJldXNhYmxlIHNsb3QgcmVuZGVyZXJzLlxuICogXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgcmVuZGVyU2VuZEJ1dHRvbiA9IGNyZWF0ZVNsb3RSZW5kZXJlcihcbiAqICAgRGVmYXVsdFNlbmRCdXR0b24sXG4gKiAgICdzZW5kQnV0dG9uJ1xuICogKTtcbiAqIFxuICogLy8gTGF0ZXIgaW4gdGVtcGxhdGVcbiAqIHJlbmRlclNlbmRCdXR0b24odGhpcy52aWV3Q29udGFpbmVyLCB0aGlzLnNlbmRCdXR0b25PdmVycmlkZSk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVNsb3RSZW5kZXJlcjxUPihcbiAgZGVmYXVsdENvbXBvbmVudDogVHlwZTxUPixcbiAgc2xvdE5hbWU/OiBzdHJpbmdcbikge1xuICAvLyBHZXQgY29uZmlnIGluIHRoZSBpbmplY3Rpb24gY29udGV4dCB3aGVuIHRoZSByZW5kZXJlciBpcyBjcmVhdGVkXG4gIGNvbnN0IGNvbmZpZyA9IHNsb3ROYW1lID8gZ2V0U2xvdENvbmZpZygpIDogbnVsbDtcbiAgXG4gIHJldHVybiAoXG4gICAgdmlld0NvbnRhaW5lcjogVmlld0NvbnRhaW5lclJlZixcbiAgICBzbG90PzogU2xvdFZhbHVlPFQ+LFxuICAgIHByb3BzPzogUGFydGlhbDxUPixcbiAgICBvdXRwdXRzPzogUmVjb3JkPHN0cmluZywgKGV2ZW50OiBhbnkpID0+IHZvaWQ+XG4gICkgPT4ge1xuICAgIC8vIENoZWNrIERJIGZvciBvdmVycmlkZXMgaWYgc2xvdCBuYW1lIHByb3ZpZGVkXG4gICAgaWYgKHNsb3ROYW1lICYmICFzbG90ICYmIGNvbmZpZykge1xuICAgICAgY29uc3QgZW50cnkgPSBjb25maWcuZ2V0KHNsb3ROYW1lKTtcbiAgICAgIGlmIChlbnRyeSkge1xuICAgICAgICBpZiAoZW50cnkuY29tcG9uZW50KSBzbG90ID0gZW50cnkuY29tcG9uZW50O1xuICAgICAgICBlbHNlIGlmIChlbnRyeS50ZW1wbGF0ZSkgc2xvdCA9IGVudHJ5LnRlbXBsYXRlO1xuICAgICAgfVxuICAgIH1cbiAgICBcbiAgICByZXR1cm4gcmVuZGVyU2xvdCh2aWV3Q29udGFpbmVyLCB7XG4gICAgICBzbG90LFxuICAgICAgZGVmYXVsdENvbXBvbmVudCxcbiAgICAgIHByb3BzLFxuICAgICAgb3V0cHV0c1xuICAgIH0pO1xuICB9O1xufVxuIl19
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { DestroyRef, inject, signal, computed } from "@angular/core";
|
|
1
|
+
import { DestroyRef, inject, signal, computed, runInInjectionContext, } from "@angular/core";
|
|
2
2
|
import { toObservable } from "@angular/core/rxjs-interop";
|
|
3
3
|
import { CopilotKitService } from "../core/copilotkit.service";
|
|
4
4
|
import { DEFAULT_AGENT_ID } from "@copilotkitnext/shared";
|
|
@@ -137,6 +137,32 @@ export function getAgent(service, agentId) {
|
|
|
137
137
|
const effectiveAgentId = agentId ?? DEFAULT_AGENT_ID;
|
|
138
138
|
return service.copilotkit.getAgent(effectiveAgentId);
|
|
139
139
|
}
|
|
140
|
+
/**
|
|
141
|
+
* Convenience wrapper for watchAgent that handles injection context.
|
|
142
|
+
* Useful when you need to call watchAgent outside of a constructor or field initializer.
|
|
143
|
+
*
|
|
144
|
+
* @param injector - The Angular Injector to use for injection context
|
|
145
|
+
* @param config - Optional configuration with agentId
|
|
146
|
+
* @returns Object with agent, messages, and isRunning signals plus observables
|
|
147
|
+
*
|
|
148
|
+
* @example
|
|
149
|
+
* ```typescript
|
|
150
|
+
* export class MyComponent {
|
|
151
|
+
* constructor(private injector: Injector) {}
|
|
152
|
+
*
|
|
153
|
+
* switchAgent(newAgentId: string) {
|
|
154
|
+
* // Can call outside of constructor using watchAgentWith
|
|
155
|
+
* const watcher = watchAgentWith(this.injector, { agentId: newAgentId });
|
|
156
|
+
* this.agent = watcher.agent;
|
|
157
|
+
* this.messages = watcher.messages;
|
|
158
|
+
* this.isRunning = watcher.isRunning;
|
|
159
|
+
* }
|
|
160
|
+
* }
|
|
161
|
+
* ```
|
|
162
|
+
*/
|
|
163
|
+
export function watchAgentWith(injector, config) {
|
|
164
|
+
return runInInjectionContext(injector, () => watchAgent(config));
|
|
165
|
+
}
|
|
140
166
|
/**
|
|
141
167
|
* Subscribes to an agent's events with custom callbacks.
|
|
142
168
|
* Returns a cleanup function that should be called to unsubscribe.
|
|
@@ -183,22 +209,4 @@ export function subscribeToAgent(service, agentId, callbacks) {
|
|
|
183
209
|
});
|
|
184
210
|
return () => subscription.unsubscribe();
|
|
185
211
|
}
|
|
186
|
-
/**
|
|
187
|
-
* Registers an agent watcher that automatically cleans up on component destroy.
|
|
188
|
-
* This is an alias for watchAgent with a more explicit name.
|
|
189
|
-
* Must be called within an injection context.
|
|
190
|
-
*
|
|
191
|
-
* @param config - Optional configuration with agentId
|
|
192
|
-
* @returns Object with agent, messages, and isRunning signals plus observables
|
|
193
|
-
*
|
|
194
|
-
* @example
|
|
195
|
-
* ```typescript
|
|
196
|
-
* export class MyComponent {
|
|
197
|
-
* agentState = registerAgentWatcher({ agentId: 'my-agent' });
|
|
198
|
-
* }
|
|
199
|
-
* ```
|
|
200
|
-
*/
|
|
201
|
-
export function registerAgentWatcher(config) {
|
|
202
|
-
return watchAgent(config);
|
|
203
|
-
}
|
|
204
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdlbnQudXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdXRpbHMvYWdlbnQudXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFNL0QsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFMUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBdUJHO0FBQ0gsTUFBTSxVQUFVLFVBQVUsQ0FBQyxNQUE2QjtJQUN0RCxtREFBbUQ7SUFDbkQsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDMUMsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3RDLE1BQU0sZ0JBQWdCLEdBQUcsTUFBTSxFQUFFLE9BQU8sSUFBSSxnQkFBZ0IsQ0FBQztJQUU3RCxtRUFBbUU7SUFDbkUsTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUE0QixTQUFTLENBQUMsQ0FBQztJQUNqRSxNQUFNLElBQUksR0FBRyxNQUFNLENBQVMsQ0FBQyxDQUFDLENBQUM7SUFDL0IsTUFBTSxlQUFlLEdBQUcsTUFBTSxDQUFVLEtBQUssQ0FBQyxDQUFDO0lBRS9DLDhEQUE4RDtJQUM5RCxNQUFNLFFBQVEsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1FBQzdCLHNDQUFzQztRQUN0QyxJQUFJLEVBQUUsQ0FBQztRQUNQLE1BQU0sQ0FBQyxHQUFHLFdBQVcsRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxDQUFDO1lBQUUsT0FBTyxFQUFFLENBQUM7UUFDbEIsb0RBQW9EO1FBQ3BELE9BQU8sQ0FBQyxD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VSxRQUFRLENBQ3RCLE9BQTBCLEVBQzFCLE9BQWdCO0lBRWhCLE1BQU0sZ0JBQWdCLEdBQUcsT0FBTyxJQUFJLGdCQUFnQixDQUFDO0lBQ3JELE9BQU8sT0FBTyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztBQUN2RCxDQUFDO0FBS0Q7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBNkJHO0FBQ0gsTUFBTSxVQUFVLGdCQUFnQixDQUM5QixPQUEwQixFQUMxQixPQUFnQixFQUNoQixTQUFzQztJQUV0QyxNQUFNLGdCQUFnQixHQUFHLE9BQU8sSUFBSSxnQkFBZ0IsQ0FBQztJQUNyRCxNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBRTVELElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNYLDhDQUE4QztRQUM5QyxPQUFPLEdBQUcsRUFBRSxHQUFFLENBQUMsQ0FBQztJQUNsQixDQUFDO0lBRUQsTUFBTSxZQUFZLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQztRQUNuQyxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsaUJBQWlCO1FBQy9DLGNBQWMsRUFBRSxTQUFTLEVBQUUsY0FBYztRQUN6QyxnQkFBZ0IsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCO1FBQzdDLGNBQWMsRUFBRSxTQUFTLEVBQUUsY0FBYztRQUN6QyxXQUFXLEVBQUUsU0FBUyxFQUFFLFdBQVc7S0FDcEMsQ0FBQyxDQUFDO0lBRUgsT0FBTyxHQUFHLEVBQUUsQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLENBQUM7QUFDMUMsQ0FBQztBQUVEOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBQ0gsTUFBTSxVQUFVLG9CQUFvQixDQUFDLE1BRXBDO0lBQ0MsT0FBTyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDNUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERlc3Ryb3lSZWYsIGluamVjdCwgc2lnbmFsLCBjb21wdXRlZCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyB0b09ic2VydmFibGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3BcIjtcbmltcG9ydCB7IENvcGlsb3RLaXRTZXJ2aWNlIH0gZnJvbSBcIi4uL2NvcmUvY29waWxvdGtpdC5zZXJ2aWNlXCI7XG5pbXBvcnQge1xuICBBZ2VudFN1YnNjcmlwdGlvbkNhbGxiYWNrcyxcbiAgQWdlbnRXYXRjaFJlc3VsdCxcbn0gZnJvbSBcIi4uL2NvcmUvY29waWxvdGtpdC50eXBlc1wiO1xuaW1wb3J0IHsgQWJzdHJhY3RBZ2VudCB9IGZyb20gXCJAYWctdWkvY2xpZW50XCI7XG5pbXBvcnQgeyBERUZBVUxUX0FHRU5UX0lEIH0gZnJvbSBcIkBjb3BpbG90a2l0bmV4dC9zaGFyZWRcIjtcblxuLyoqXG4gKiBXYXRjaGVzIGFuIGFnZW50IGFuZCBwcm92aWRlcyByZWFjdGl2ZSBzaWduYWxzIGZvciBpdHMgc3RhdGUuXG4gKiBNdXN0IGJlIGNhbGxlZCB3aXRoaW4gYW4gaW5qZWN0aW9uIGNvbnRleHQuXG4gKiBBdXRvbWF0aWNhbGx5IGNsZWFucyB1cCB3aGVuIHRoZSBjb21wb25lbnQvc2VydmljZSBpcyBkZXN0cm95ZWQuXG4gKlxuICogQHBhcmFtIGNvbmZpZyAtIE9wdGlvbmFsIGNvbmZpZ3VyYXRpb24gd2l0aCBhZ2VudElkXG4gKiBAcmV0dXJucyBPYmplY3Qgd2l0aCBhZ2VudCwgbWVzc2FnZXMsIGFuZCBpc1J1bm5pbmcgc2lnbmFscyBwbHVzIG9ic2VydmFibGVzXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGV4cG9ydCBjbGFzcyBNeUNvbXBvbmVudCB7XG4gKiAgIC8vIEF1dG9tYXRpY2FsbHkgdHJhY2tzIGFnZW50IHN0YXRlXG4gKiAgIGFnZW50U3RhdGUgPSB3YXRjaEFnZW50KHsgYWdlbnRJZDogJ215LWFnZW50JyB9KTtcbiAqXG4gKiAgIGNvbnN0cnVjdG9yKCkge1xuICogICAgIGVmZmVjdCgoKSA9PiB7XG4gKiAgICAgICBjb25zdCBtZXNzYWdlcyA9IHRoaXMuYWdlbnRTdGF0ZS5tZXNzYWdlcygpO1xuICogICAgICAgY29uc3QgaXNSdW5uaW5nID0gdGhpcy5hZ2VudFN0YXRlLmlzUnVubmluZygpO1xuICogICAgICAgY29uc29sZS5sb2coJ01lc3NhZ2VzOicsIG1lc3NhZ2VzLmxlbmd0aCwgJ1J1bm5pbmc6JywgaXNSdW5uaW5nKTtcbiAqICAgICB9KTtcbiAqICAgfVxuICogfVxuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB3YXRjaEFnZW50KGNvbmZpZz86IHsgYWdlbnRJZD86IHN0cmluZyB9KTogQWdlbnRXYXRjaFJlc3VsdCB7XG4gIC8vIFVzZSBpbmplY3QoKSBpbnRlcm5hbGx5IHRvIGdldCByZXF1aXJlZCBzZXJ2aWNlc1xuICBjb25zdCBzZXJ2aWNlID0gaW5qZWN0KENvcGlsb3RLaXRTZXJ2aWNlKTtcbiAgY29uc3QgZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcbiAgY29uc3QgZWZmZWN0aXZlQWdlbnRJZCA9IGNvbmZpZz8uYWdlbnRJZCA/PyBERUZBVUxUX0FHRU5UX0lEO1xuXG4gIC8vIENyZWF0ZSByZWFjdGl2ZSBzaWduYWxzIHdpdGggdGljayBtZWNoYW5pc20gZm9yIHJlbGlhYmxlIHVwZGF0ZXNcbiAgY29uc3QgYWdlbnRTaWduYWwgPSBzaWduYWw8QWJzdHJhY3RBZ2VudCB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgY29uc3QgdGljayA9IHNpZ25hbDxudW1iZXI+KDApO1xuICBjb25zdCBpc1J1bm5pbmdTaWduYWwgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gIC8vIENyZWF0ZSBjb21wdXRlZCBtZXNzYWdlcyBzaWduYWwgdGhhdCByZWFjdHMgdG8gdGljayBjaGFuZ2VzXG4gIGNvbnN0IG1lc3NhZ2VzID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIC8vIEFjY2VzcyB0aWNrIHRvIGVuc3VyZSByZWNvbXB1dGF0aW9uXG4gICAgdGljaygpO1xuICAgIGNvbnN0IGEgPSBhZ2VudFNpZ25hbCgpO1xuICAgIGlmICghYSkgcmV0dXJuIFtdO1xuICAgIC8vIFJldHVybiBhIHNoYWxsb3cgY2xvbmUgdG8gZW5zdXJlIGNoYW5nZSBkZXRlY3Rpb25cbiAgICByZXR1cm4gYS5tZXNzYWdlcy5tYXAoKG0pID0+ICh7IC4uLm0gfSkpO1xuICB9KTtcblxuICAvLyBHZXQgaW5pdGlhbCBhZ2VudFxuICBjb25zdCB1cGRhdGVBZ2VudCA9ICgpID0+IHtcbiAgICBjb25zdCBhZ2VudCA9IHNlcnZpY2UuY29waWxvdGtpdC5nZXRBZ2VudChlZmZlY3RpdmVBZ2VudElkKTtcbiAgICBhZ2VudFNpZ25hbC5zZXQoYWdlbnQpO1xuICAgIHJldHVybiBhZ2VudDtcbiAgfTtcblxuICAvLyBJbml0aWFsIHVwZGF0ZVxuICBsZXQgY3VycmVudEFnZW50ID0gdXBkYXRlQWdlbnQoKTtcblxuICAvLyBTdWJzY3JpYmUgdG8gYWdlbnQgY2hhbmdlc1xuICBsZXQgYWdlbnRTdWJzY3JpcHRpb246IHsgdW5zdWJzY3JpYmU6ICgpID0+IHZvaWQgfSB8IHVuZGVmaW5lZDtcblxuICBjb25zdCBzdWJzY3JpYmVUb0FnZW50ID0gKCkgPT4ge1xuICAgIC8vIFVuc3Vic2NyaWJlIGZyb20gcHJldmlvdXMgYWdlbnQgaWYgYW55XG4gICAgYWdlbnRTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG5cbiAgICBpZiAoY3VycmVudEFnZW50KSB7XG4gICAgICBhZ2VudFN1YnNjcmlwdGlvbiA9IGN1cnJlbnRBZ2VudC5zdWJzY3JpYmUoe1xuICAgICAgICBvbk1lc3NhZ2VzQ2hhbmdlZCgpIHtcbiAgICAgICAgICAvLyBJbmNyZW1lbnQgdGljayB0byBmb3JjZSByZWNvbXB1dGF0aW9uIG9mIG1lc3NhZ2VzIGNvbXB1dGVkXG4gICAgICAgICAgdGljay51cGRhdGUoKHYpID0+IHYgKyAxKTtcbiAgICAgICAgfSxcbiAgICAgICAgb25TdGF0ZUNoYW5nZWQoKSB7XG4gICAgICAgICAgLy8gSW5jcmVtZW50IHRpY2sgdG8gZm9yY2UgcmVjb21wdXRhdGlvblxuICAgICAgICAgIHRpY2sudXBkYXRlKCh2KSA9PiB2ICsgMSk7XG4gICAgICAgIH0sXG4gICAgICAgIG9uUnVuSW5pdGlhbGl6ZWQoKSB7XG4gICAgICAgICAgaXNSdW5uaW5nU2lnbmFsLnNldCh0cnVlKTtcbiAgICAgICAgfSxcbiAgICAgICAgb25SdW5GaW5hbGl6ZWQoKSB7XG4gICAgICAgICAgaXNSdW5uaW5nU2lnbmFsLnNldChmYWxzZSk7XG4gICAgICAgIH0sXG4gICAgICAgIG9uUnVuRmFpbGVkKCkge1xuICAgICAgICAgIGlzUnVubmluZ1NpZ25hbC5zZXQoZmFsc2UpO1xuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfVxuICB9O1xuXG4gIC8vIEluaXRpYWwgc3Vic2NyaXB0aW9uXG4gIHN1YnNjcmliZVRvQWdlbnQoKTtcblxuICAvLyBTdWJzY3JpYmUgdG8gQ29waWxvdEtpdCBjaGFuZ2VzIHRvIGRldGVjdCBhZ2VudCB1cGRhdGVzXG4gIGNvbnN0IGNvcmVVbnN1YnNjcmliZSA9IHNlcnZpY2UuY29waWxvdGtpdC5zdWJzY3JpYmUoe1xuICAgIG9uUnVudGltZUxvYWRlZCgpIHtcbiAgICAgIC8vIFJlLWNoZWNrIGFnZW50IHdoZW4gcnVudGltZSBsb2Fkc1xuICAgICAgY3VycmVudEFnZW50ID0gdXBkYXRlQWdlbnQoKTtcbiAgICAgIHN1YnNjcmliZVRvQWdlbnQoKTtcbiAgICB9LFxuICAgIG9uUnVudGltZUxvYWRFcnJvcigpIHtcbiAgICAgIC8vIEFsc28gcmUtY2hlY2sgYWdlbnQgb24gcnVudGltZSBsb2FkIGVycm9yIHRvIGVuc3VyZSBjb25zaXN0ZW5jeVxuICAgICAgY3VycmVudEFnZW50ID0gdXBkYXRlQWdlbnQoKTtcbiAgICAgIHN1YnNjcmliZVRvQWdlbnQoKTtcbiAgICB9LFxuICB9KTtcblxuICAvLyBSZWdpc3RlciBjbGVhbnVwXG4gIGNvbnN0IHVuc3Vic2NyaWJlID0gKCkgPT4ge1xuICAgIGFnZW50U3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgIGNvcmVVbnN1YnNjcmliZSgpOyAvLyBzdWJzY3JpYmUgcmV0dXJucyBhIGZ1bmN0aW9uIGRpcmVjdGx5XG4gIH07XG5cbiAgZGVzdHJveVJlZi5vbkRlc3Ryb3kodW5zdWJzY3JpYmUpO1xuXG4gIC8vIENyZWF0ZSBvYnNlcnZhYmxlcyBmcm9tIHNpZ25hbHMgdXNpbmcgdG9PYnNlcnZhYmxlXG4gIGNvbnN0IGFnZW50JCA9IHRvT2JzZXJ2YWJsZShhZ2VudFNpZ25hbCk7XG4gIGNvbnN0IGlzUnVubmluZyQgPSB0b09ic2VydmFibGUoaXNSdW5uaW5nU2lnbmFsKTtcbiAgY29uc3QgbWVzc2FnZXMkID0gdG9PYnNlcnZhYmxlKG1lc3NhZ2VzKTtcblxuICByZXR1cm4ge1xuICAgIGFnZW50OiBhZ2VudFNpZ25hbC5hc1JlYWRvbmx5KCksXG4gICAgbWVzc2FnZXM6IG1lc3NhZ2VzLFxuICAgIGlzUnVubmluZzogaXNSdW5uaW5nU2lnbmFsLmFzUmVhZG9ubHkoKSxcbiAgICBhZ2VudCQsXG4gICAgbWVzc2FnZXMkLFxuICAgIGlzUnVubmluZyQsXG4gICAgdW5zdWJzY3JpYmUsXG4gIH07XG59XG5cbi8qKlxuICogR2V0cyBhbiBhZ2VudCBieSBJRCB3aXRob3V0IHN1YnNjcmliaW5nIHRvIGNoYW5nZXMuXG4gKlxuICogQHBhcmFtIHNlcnZpY2UgLSBUaGUgQ29waWxvdEtpdFNlcnZpY2UgaW5zdGFuY2VcbiAqIEBwYXJhbSBhZ2VudElkIC0gT3B0aW9uYWwgYWdlbnQgSUQgKGRlZmF1bHRzIHRvIERFRkFVTFRfQUdFTlRfSUQpXG4gKiBAcmV0dXJucyBUaGUgYWdlbnQgb3IgdW5kZWZpbmVkIGlmIG5vdCBmb3VuZFxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBleHBvcnQgY2xhc3MgTXlDb21wb25lbnQge1xuICogICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNvcGlsb3RraXQ6IENvcGlsb3RLaXRTZXJ2aWNlKSB7fVxuICpcbiAqICAgZ2V0Q3VycmVudEFnZW50KCkge1xuICogICAgIHJldHVybiBnZXRBZ2VudCh0aGlzLmNvcGlsb3RraXQsICdteS1hZ2VudCcpO1xuICogICB9XG4gKiB9XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEFnZW50KFxuICBzZXJ2aWNlOiBDb3BpbG90S2l0U2VydmljZSxcbiAgYWdlbnRJZD86IHN0cmluZ1xuKTogQWJzdHJhY3RBZ2VudCB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IGVmZmVjdGl2ZUFnZW50SWQgPSBhZ2VudElkID8/IERFRkFVTFRfQUdFTlRfSUQ7XG4gIHJldHVybiBzZXJ2aWNlLmNvcGlsb3RraXQuZ2V0QWdlbnQoZWZmZWN0aXZlQWdlbnRJZCk7XG59XG5cbi8vIFJlLWV4cG9ydCB0aGUgdHlwZSBmb3IgY29udmVuaWVuY2UgKHRoZSBhY3R1YWwgdHlwZSBpcyBpbiBjb3BpbG90a2l0LnR5cGVzKVxuZXhwb3J0IHR5cGUgeyBBZ2VudFdhdGNoUmVzdWx0IH0gZnJvbSBcIi4uL2NvcmUvY29waWxvdGtpdC50eXBlc1wiO1xuXG4vKipcbiAqIFN1YnNjcmliZXMgdG8gYW4gYWdlbnQncyBldmVudHMgd2l0aCBjdXN0b20gY2FsbGJhY2tzLlxuICogUmV0dXJucyBhIGNsZWFudXAgZnVuY3Rpb24gdGhhdCBzaG91bGQgYmUgY2FsbGVkIHRvIHVuc3Vic2NyaWJlLlxuICpcbiAqIEBwYXJhbSBzZXJ2aWNlIC0gVGhlIENvcGlsb3RLaXRTZXJ2aWNlIGluc3RhbmNlXG4gKiBAcGFyYW0gYWdlbnRJZCAtIE9wdGlvbmFsIGFnZW50IElEIChkZWZhdWx0cyB0byBERUZBVUxUX0FHRU5UX0lEKVxuICogQHBhcmFtIGNhbGxiYWNrcyAtIEV2ZW50IGNhbGxiYWNrc1xuICogQHJldHVybnMgQ2xlYW51cCBmdW5jdGlvbiB0byB1bnN1YnNjcmliZVxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBleHBvcnQgY2xhc3MgTXlDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gKiAgIHByaXZhdGUgdW5zdWJzY3JpYmU/OiAoKSA9PiB2b2lkO1xuICpcbiAqICAgY29uc3RydWN0b3IocHJpdmF0ZSBjb3BpbG90a2l0OiBDb3BpbG90S2l0U2VydmljZSkge31cbiAqXG4gKiAgIG5nT25Jbml0KCkge1xuICogICAgIHRoaXMudW5zdWJzY3JpYmUgPSBzdWJzY3JpYmVUb0FnZW50KHRoaXMuY29waWxvdGtpdCwgJ215LWFnZW50Jywge1xuICogICAgICAgb25SdW5Jbml0aWFsaXplZDogKCkgPT4gY29uc29sZS5sb2coJ1J1biBzdGFydGVkJyksXG4gKiAgICAgICBvblJ1bkZpbmFsaXplZDogKCkgPT4gY29uc29sZS5sb2coJ1J1biBjb21wbGV0ZWQnKSxcbiAqICAgICAgIG9uUnVuRmFpbGVkOiAoZXJyb3IpID0+IGNvbnNvbGUuZXJyb3IoJ1J1biBmYWlsZWQnLCBlcnJvciksXG4gKiAgICAgfSk7XG4gKiAgIH1cbiAqXG4gKiAgIG5nT25EZXN0cm95KCkge1xuICogICAgIHRoaXMudW5zdWJzY3JpYmU/LigpO1xuICogICB9XG4gKiB9XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHN1YnNjcmliZVRvQWdlbnQoXG4gIHNlcnZpY2U6IENvcGlsb3RLaXRTZXJ2aWNlLFxuICBhZ2VudElkPzogc3RyaW5nLFxuICBjYWxsYmFja3M/OiBBZ2VudFN1YnNjcmlwdGlvbkNhbGxiYWNrc1xuKTogKCkgPT4gdm9pZCB7XG4gIGNvbnN0IGVmZmVjdGl2ZUFnZW50SWQgPSBhZ2VudElkID8/IERFRkFVTFRfQUdFTlRfSUQ7XG4gIGNvbnN0IGFnZW50ID0gc2VydmljZS5jb3BpbG90a2l0LmdldEFnZW50KGVmZmVjdGl2ZUFnZW50SWQpO1xuXG4gIGlmICghYWdlbnQpIHtcbiAgICAvLyBSZXR1cm4gbm8tb3AgY2xlYW51cCBpZiBhZ2VudCBkb2Vzbid0IGV4aXN0XG4gICAgcmV0dXJuICgpID0+IHt9O1xuICB9XG5cbiAgY29uc3Qgc3Vic2NyaXB0aW9uID0gYWdlbnQuc3Vic2NyaWJlKHtcbiAgICBvbk1lc3NhZ2VzQ2hhbmdlZDogY2FsbGJhY2tzPy5vbk1lc3NhZ2VzQ2hhbmdlZCxcbiAgICBvblN0YXRlQ2hhbmdlZDogY2FsbGJhY2tzPy5vblN0YXRlQ2hhbmdlZCxcbiAgICBvblJ1bkluaXRpYWxpemVkOiBjYWxsYmFja3M/Lm9uUnVuSW5pdGlhbGl6ZWQsXG4gICAgb25SdW5GaW5hbGl6ZWQ6IGNhbGxiYWNrcz8ub25SdW5GaW5hbGl6ZWQsXG4gICAgb25SdW5GYWlsZWQ6IGNhbGxiYWNrcz8ub25SdW5GYWlsZWQsXG4gIH0pO1xuXG4gIHJldHVybiAoKSA9PiBzdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbn1cblxuLyoqXG4gKiBSZWdpc3RlcnMgYW4gYWdlbnQgd2F0Y2hlciB0aGF0IGF1dG9tYXRpY2FsbHkgY2xlYW5zIHVwIG9uIGNvbXBvbmVudCBkZXN0cm95LlxuICogVGhpcyBpcyBhbiBhbGlhcyBmb3Igd2F0Y2hBZ2VudCB3aXRoIGEgbW9yZSBleHBsaWNpdCBuYW1lLlxuICogTXVzdCBiZSBjYWxsZWQgd2l0aGluIGFuIGluamVjdGlvbiBjb250ZXh0LlxuICpcbiAqIEBwYXJhbSBjb25maWcgLSBPcHRpb25hbCBjb25maWd1cmF0aW9uIHdpdGggYWdlbnRJZFxuICogQHJldHVybnMgT2JqZWN0IHdpdGggYWdlbnQsIG1lc3NhZ2VzLCBhbmQgaXNSdW5uaW5nIHNpZ25hbHMgcGx1cyBvYnNlcnZhYmxlc1xuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBleHBvcnQgY2xhc3MgTXlDb21wb25lbnQge1xuICogICBhZ2VudFN0YXRlID0gcmVnaXN0ZXJBZ2VudFdhdGNoZXIoeyBhZ2VudElkOiAnbXktYWdlbnQnIH0pO1xuICogfVxuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZWdpc3RlckFnZW50V2F0Y2hlcihjb25maWc/OiB7XG4gIGFnZW50SWQ/OiBzdHJpbmc7XG59KTogQWdlbnRXYXRjaFJlc3VsdCB7XG4gIHJldHVybiB3YXRjaEFnZW50KGNvbmZpZyk7XG59XG4iXX0=
|
|
212
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdlbnQudXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdXRpbHMvYWdlbnQudXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFVBQVUsRUFDVixNQUFNLEVBQ04sTUFBTSxFQUNOLFFBQVEsRUFFUixxQkFBcUIsR0FDdEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzFELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBTS9ELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRTFEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXVCRztBQUNILE1BQU0sVUFBVSxVQUFVLENBQUMsTUFBNkI7SUFDdEQsbURBQW1EO0lBQ25ELE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQzFDLE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUN0QyxNQUFNLGdCQUFnQixHQUFHLE1BQU0sRUFBRSxPQUFPLElBQUksZ0JBQWdCLENBQUM7SUFFN0QsbUVBQW1FO0lBQ25FLE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBNEIsU0FBUyxDQUFDLENBQUM7SUFDakUsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFTLENBQUMsQ0FBQyxDQUFDO0lBQy9CLE1BQU0sZUFBZSxHQUFHLE1BQU0sQ0FBVSxLQUFLLENBQUMsQ0FBQztJQUUvQyw4REFBOEQ7SUFDOUQsTUFBTSxRQUFRLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtRQUM3QixzQ0FBc0M7UUFDdEMsSUFBSSxFQUFFLENBQUM7UUFDUCxNQUFNLENBQUMsR0FBRyxXQUFXLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsQ0FBQztZQUFFLE9BQU8sRUFBRSxDQUFDO1FBQ2xCLG9EQUFvRDtRQUNw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QUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBEZXN0cm95UmVmLFxuICBpbmplY3QsXG4gIHNpZ25hbCxcbiAgY29tcHV0ZWQsXG4gIEluamVjdG9yLFxuICBydW5JbkluamVjdGlvbkNvbnRleHQsXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyB0b09ic2VydmFibGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3BcIjtcbmltcG9ydCB7IENvcGlsb3RLaXRTZXJ2aWNlIH0gZnJvbSBcIi4uL2NvcmUvY29waWxvdGtpdC5zZXJ2aWNlXCI7XG5pbXBvcnQge1xuICBBZ2VudFN1YnNjcmlwdGlvbkNhbGxiYWNrcyxcbiAgQWdlbnRXYXRjaFJlc3VsdCxcbn0gZnJvbSBcIi4uL2NvcmUvY29waWxvdGtpdC50eXBlc1wiO1xuaW1wb3J0IHsgQWJzdHJhY3RBZ2VudCB9IGZyb20gXCJAYWctdWkvY2xpZW50XCI7XG5pbXBvcnQgeyBERUZBVUxUX0FHRU5UX0lEIH0gZnJvbSBcIkBjb3BpbG90a2l0bmV4dC9zaGFyZWRcIjtcblxuLyoqXG4gKiBXYXRjaGVzIGFuIGFnZW50IGFuZCBwcm92aWRlcyByZWFjdGl2ZSBzaWduYWxzIGZvciBpdHMgc3RhdGUuXG4gKiBNdXN0IGJlIGNhbGxlZCB3aXRoaW4gYW4gaW5qZWN0aW9uIGNvbnRleHQuXG4gKiBBdXRvbWF0aWNhbGx5IGNsZWFucyB1cCB3aGVuIHRoZSBjb21wb25lbnQvc2VydmljZSBpcyBkZXN0cm95ZWQuXG4gKlxuICogQHBhcmFtIGNvbmZpZyAtIE9wdGlvbmFsIGNvbmZpZ3VyYXRpb24gd2l0aCBhZ2VudElkXG4gKiBAcmV0dXJucyBPYmplY3Qgd2l0aCBhZ2VudCwgbWVzc2FnZXMsIGFuZCBpc1J1bm5pbmcgc2lnbmFscyBwbHVzIG9ic2VydmFibGVzXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGV4cG9ydCBjbGFzcyBNeUNvbXBvbmVudCB7XG4gKiAgIC8vIEF1dG9tYXRpY2FsbHkgdHJhY2tzIGFnZW50IHN0YXRlXG4gKiAgIGFnZW50U3RhdGUgPSB3YXRjaEFnZW50KHsgYWdlbnRJZDogJ215LWFnZW50JyB9KTtcbiAqXG4gKiAgIGNvbnN0cnVjdG9yKCkge1xuICogICAgIGVmZmVjdCgoKSA9PiB7XG4gKiAgICAgICBjb25zdCBtZXNzYWdlcyA9IHRoaXMuYWdlbnRTdGF0ZS5tZXNzYWdlcygpO1xuICogICAgICAgY29uc3QgaXNSdW5uaW5nID0gdGhpcy5hZ2VudFN0YXRlLmlzUnVubmluZygpO1xuICogICAgICAgY29uc29sZS5sb2coJ01lc3NhZ2VzOicsIG1lc3NhZ2VzLmxlbmd0aCwgJ1J1bm5pbmc6JywgaXNSdW5uaW5nKTtcbiAqICAgICB9KTtcbiAqICAgfVxuICogfVxuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB3YXRjaEFnZW50KGNvbmZpZz86IHsgYWdlbnRJZD86IHN0cmluZyB9KTogQWdlbnRXYXRjaFJlc3VsdCB7XG4gIC8vIFVzZSBpbmplY3QoKSBpbnRlcm5hbGx5IHRvIGdldCByZXF1aXJlZCBzZXJ2aWNlc1xuICBjb25zdCBzZXJ2aWNlID0gaW5qZWN0KENvcGlsb3RLaXRTZXJ2aWNlKTtcbiAgY29uc3QgZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcbiAgY29uc3QgZWZmZWN0aXZlQWdlbnRJZCA9IGNvbmZpZz8uYWdlbnRJZCA/PyBERUZBVUxUX0FHRU5UX0lEO1xuXG4gIC8vIENyZWF0ZSByZWFjdGl2ZSBzaWduYWxzIHdpdGggdGljayBtZWNoYW5pc20gZm9yIHJlbGlhYmxlIHVwZGF0ZXNcbiAgY29uc3QgYWdlbnRTaWduYWwgPSBzaWduYWw8QWJzdHJhY3RBZ2VudCB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgY29uc3QgdGljayA9IHNpZ25hbDxudW1iZXI+KDApO1xuICBjb25zdCBpc1J1bm5pbmdTaWduYWwgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gIC8vIENyZWF0ZSBjb21wdXRlZCBtZXNzYWdlcyBzaWduYWwgdGhhdCByZWFjdHMgdG8gdGljayBjaGFuZ2VzXG4gIGNvbnN0IG1lc3NhZ2VzID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIC8vIEFjY2VzcyB0aWNrIHRvIGVuc3VyZSByZWNvbXB1dGF0aW9uXG4gICAgdGljaygpO1xuICAgIGNvbnN0IGEgPSBhZ2VudFNpZ25hbCgpO1xuICAgIGlmICghYSkgcmV0dXJuIFtdO1xuICAgIC8vIFJldHVybiBhIHNoYWxsb3cgY2xvbmUgdG8gZW5zdXJlIGNoYW5nZSBkZXRlY3Rpb25cbiAgICByZXR1cm4gYS5tZXNzYWdlcy5tYXAoKG0pID0+ICh7IC4uLm0gfSkpO1xuICB9KTtcblxuICAvLyBHZXQgaW5pdGlhbCBhZ2VudFxuICBjb25zdCB1cGRhdGVBZ2VudCA9ICgpID0+IHtcbiAgICBjb25zdCBhZ2VudCA9IHNlcnZpY2UuY29waWxvdGtpdC5nZXRBZ2VudChlZmZlY3RpdmVBZ2VudElkKTtcbiAgICBhZ2VudFNpZ25hbC5zZXQoYWdlbnQpO1xuICAgIHJldHVybiBhZ2VudDtcbiAgfTtcblxuICAvLyBJbml0aWFsIHVwZGF0ZVxuICBsZXQgY3VycmVudEFnZW50ID0gdXBkYXRlQWdlbnQoKTtcblxuICAvLyBTdWJzY3JpYmUgdG8gYWdlbnQgY2hhbmdlc1xuICBsZXQgYWdlbnRTdWJzY3JpcHRpb246IHsgdW5zdWJzY3JpYmU6ICgpID0+IHZvaWQgfSB8IHVuZGVmaW5lZDtcblxuICBjb25zdCBzdWJzY3JpYmVUb0FnZW50ID0gKCkgPT4ge1xuICAgIC8vIFVuc3Vic2NyaWJlIGZyb20gcHJldmlvdXMgYWdlbnQgaWYgYW55XG4gICAgYWdlbnRTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG5cbiAgICBpZiAoY3VycmVudEFnZW50KSB7XG4gICAgICBhZ2VudFN1YnNjcmlwdGlvbiA9IGN1cnJlbnRBZ2VudC5zdWJzY3JpYmUoe1xuICAgICAgICBvbk1lc3NhZ2VzQ2hhbmdlZCgpIHtcbiAgICAgICAgICAvLyBJbmNyZW1lbnQgdGljayB0byBmb3JjZSByZWNvbXB1dGF0aW9uIG9mIG1lc3NhZ2VzIGNvbXB1dGVkXG4gICAgICAgICAgdGljay51cGRhdGUoKHYpID0+IHYgKyAxKTtcbiAgICAgICAgfSxcbiAgICAgICAgb25TdGF0ZUNoYW5nZWQoKSB7XG4gICAgICAgICAgLy8gSW5jcmVtZW50IHRpY2sgdG8gZm9yY2UgcmVjb21wdXRhdGlvblxuICAgICAgICAgIHRpY2sudXBkYXRlKCh2KSA9PiB2ICsgMSk7XG4gICAgICAgIH0sXG4gICAgICAgIG9uUnVuSW5pdGlhbGl6ZWQoKSB7XG4gICAgICAgICAgaXNSdW5uaW5nU2lnbmFsLnNldCh0cnVlKTtcbiAgICAgICAgfSxcbiAgICAgICAgb25SdW5GaW5hbGl6ZWQoKSB7XG4gICAgICAgICAgaXNSdW5uaW5nU2lnbmFsLnNldChmYWxzZSk7XG4gICAgICAgIH0sXG4gICAgICAgIG9uUnVuRmFpbGVkKCkge1xuICAgICAgICAgIGlzUnVubmluZ1NpZ25hbC5zZXQoZmFsc2UpO1xuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfVxuICB9O1xuXG4gIC8vIEluaXRpYWwgc3Vic2NyaXB0aW9uXG4gIHN1YnNjcmliZVRvQWdlbnQoKTtcblxuICAvLyBTdWJzY3JpYmUgdG8gQ29waWxvdEtpdCBjaGFuZ2VzIHRvIGRldGVjdCBhZ2VudCB1cGRhdGVzXG4gIGNvbnN0IGNvcmVVbnN1YnNjcmliZSA9IHNlcnZpY2UuY29waWxvdGtpdC5zdWJzY3JpYmUoe1xuICAgIG9uUnVudGltZUxvYWRlZCgpIHtcbiAgICAgIC8vIFJlLWNoZWNrIGFnZW50IHdoZW4gcnVudGltZSBsb2Fkc1xuICAgICAgY3VycmVudEFnZW50ID0gdXBkYXRlQWdlbnQoKTtcbiAgICAgIHN1YnNjcmliZVRvQWdlbnQoKTtcbiAgICB9LFxuICAgIG9uUnVudGltZUxvYWRFcnJvcigpIHtcbiAgICAgIC8vIEFsc28gcmUtY2hlY2sgYWdlbnQgb24gcnVudGltZSBsb2FkIGVycm9yIHRvIGVuc3VyZSBjb25zaXN0ZW5jeVxuICAgICAgY3VycmVudEFnZW50ID0gdXBkYXRlQWdlbnQoKTtcbiAgICAgIHN1YnNjcmliZVRvQWdlbnQoKTtcbiAgICB9LFxuICB9KTtcblxuICAvLyBSZWdpc3RlciBjbGVhbnVwXG4gIGNvbnN0IHVuc3Vic2NyaWJlID0gKCkgPT4ge1xuICAgIGFnZW50U3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgIGNvcmVVbnN1YnNjcmliZSgpOyAvLyBzdWJzY3JpYmUgcmV0dXJucyBhIGZ1bmN0aW9uIGRpcmVjdGx5XG4gIH07XG5cbiAgZGVzdHJveVJlZi5vbkRlc3Ryb3kodW5zdWJzY3JpYmUpO1xuXG4gIC8vIENyZWF0ZSBvYnNlcnZhYmxlcyBmcm9tIHNpZ25hbHMgdXNpbmcgdG9PYnNlcnZhYmxlXG4gIGNvbnN0IGFnZW50JCA9IHRvT2JzZXJ2YWJsZShhZ2VudFNpZ25hbCk7XG4gIGNvbnN0IGlzUnVubmluZyQgPSB0b09ic2VydmFibGUoaXNSdW5uaW5nU2lnbmFsKTtcbiAgY29uc3QgbWVzc2FnZXMkID0gdG9PYnNlcnZhYmxlKG1lc3NhZ2VzKTtcblxuICByZXR1cm4ge1xuICAgIGFnZW50OiBhZ2VudFNpZ25hbC5hc1JlYWRvbmx5KCksXG4gICAgbWVzc2FnZXM6IG1lc3NhZ2VzLFxuICAgIGlzUnVubmluZzogaXNSdW5uaW5nU2lnbmFsLmFzUmVhZG9ubHkoKSxcbiAgICBhZ2VudCQsXG4gICAgbWVzc2FnZXMkLFxuICAgIGlzUnVubmluZyQsXG4gICAgdW5zdWJzY3JpYmUsXG4gIH07XG59XG5cbi8qKlxuICogR2V0cyBhbiBhZ2VudCBieSBJRCB3aXRob3V0IHN1YnNjcmliaW5nIHRvIGNoYW5nZXMuXG4gKlxuICogQHBhcmFtIHNlcnZpY2UgLSBUaGUgQ29waWxvdEtpdFNlcnZpY2UgaW5zdGFuY2VcbiAqIEBwYXJhbSBhZ2VudElkIC0gT3B0aW9uYWwgYWdlbnQgSUQgKGRlZmF1bHRzIHRvIERFRkFVTFRfQUdFTlRfSUQpXG4gKiBAcmV0dXJucyBUaGUgYWdlbnQgb3IgdW5kZWZpbmVkIGlmIG5vdCBmb3VuZFxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBleHBvcnQgY2xhc3MgTXlDb21wb25lbnQge1xuICogICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNvcGlsb3RraXQ6IENvcGlsb3RLaXRTZXJ2aWNlKSB7fVxuICpcbiAqICAgZ2V0Q3VycmVudEFnZW50KCkge1xuICogICAgIHJldHVybiBnZXRBZ2VudCh0aGlzLmNvcGlsb3RraXQsICdteS1hZ2VudCcpO1xuICogICB9XG4gKiB9XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEFnZW50KFxuICBzZXJ2aWNlOiBDb3BpbG90S2l0U2VydmljZSxcbiAgYWdlbnRJZD86IHN0cmluZ1xuKTogQWJzdHJhY3RBZ2VudCB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IGVmZmVjdGl2ZUFnZW50SWQgPSBhZ2VudElkID8/IERFRkFVTFRfQUdFTlRfSUQ7XG4gIHJldHVybiBzZXJ2aWNlLmNvcGlsb3RraXQuZ2V0QWdlbnQoZWZmZWN0aXZlQWdlbnRJZCk7XG59XG5cbi8vIFJlLWV4cG9ydCB0aGUgdHlwZSBmb3IgY29udmVuaWVuY2UgKHRoZSBhY3R1YWwgdHlwZSBpcyBpbiBjb3BpbG90a2l0LnR5cGVzKVxuZXhwb3J0IHR5cGUgeyBBZ2VudFdhdGNoUmVzdWx0IH0gZnJvbSBcIi4uL2NvcmUvY29waWxvdGtpdC50eXBlc1wiO1xuXG4vKipcbiAqIENvbnZlbmllbmNlIHdyYXBwZXIgZm9yIHdhdGNoQWdlbnQgdGhhdCBoYW5kbGVzIGluamVjdGlvbiBjb250ZXh0LlxuICogVXNlZnVsIHdoZW4geW91IG5lZWQgdG8gY2FsbCB3YXRjaEFnZW50IG91dHNpZGUgb2YgYSBjb25zdHJ1Y3RvciBvciBmaWVsZCBpbml0aWFsaXplci5cbiAqXG4gKiBAcGFyYW0gaW5qZWN0b3IgLSBUaGUgQW5ndWxhciBJbmplY3RvciB0byB1c2UgZm9yIGluamVjdGlvbiBjb250ZXh0XG4gKiBAcGFyYW0gY29uZmlnIC0gT3B0aW9uYWwgY29uZmlndXJhdGlvbiB3aXRoIGFnZW50SWRcbiAqIEByZXR1cm5zIE9iamVjdCB3aXRoIGFnZW50LCBtZXNzYWdlcywgYW5kIGlzUnVubmluZyBzaWduYWxzIHBsdXMgb2JzZXJ2YWJsZXNcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogZXhwb3J0IGNsYXNzIE15Q29tcG9uZW50IHtcbiAqICAgY29uc3RydWN0b3IocHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IpIHt9XG4gKlxuICogICBzd2l0Y2hBZ2VudChuZXdBZ2VudElkOiBzdHJpbmcpIHtcbiAqICAgICAvLyBDYW4gY2FsbCBvdXRzaWRlIG9mIGNvbnN0cnVjdG9yIHVzaW5nIHdhdGNoQWdlbnRXaXRoXG4gKiAgICAgY29uc3Qgd2F0Y2hlciA9IHdhdGNoQWdlbnRXaXRoKHRoaXMuaW5qZWN0b3IsIHsgYWdlbnRJZDogbmV3QWdlbnRJZCB9KTtcbiAqICAgICB0aGlzLmFnZW50ID0gd2F0Y2hlci5hZ2VudDtcbiAqICAgICB0aGlzLm1lc3NhZ2VzID0gd2F0Y2hlci5tZXNzYWdlcztcbiAqICAgICB0aGlzLmlzUnVubmluZyA9IHdhdGNoZXIuaXNSdW5uaW5nO1xuICogICB9XG4gKiB9XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHdhdGNoQWdlbnRXaXRoKFxuICBpbmplY3RvcjogSW5qZWN0b3IsXG4gIGNvbmZpZz86IHsgYWdlbnRJZD86IHN0cmluZyB9XG4pOiBBZ2VudFdhdGNoUmVzdWx0IHtcbiAgcmV0dXJuIHJ1bkluSW5qZWN0aW9uQ29udGV4dChpbmplY3RvciwgKCkgPT4gd2F0Y2hBZ2VudChjb25maWcpKTtcbn1cblxuLyoqXG4gKiBTdWJzY3JpYmVzIHRvIGFuIGFnZW50J3MgZXZlbnRzIHdpdGggY3VzdG9tIGNhbGxiYWNrcy5cbiAqIFJldHVybnMgYSBjbGVhbnVwIGZ1bmN0aW9uIHRoYXQgc2hvdWxkIGJlIGNhbGxlZCB0byB1bnN1YnNjcmliZS5cbiAqXG4gKiBAcGFyYW0gc2VydmljZSAtIFRoZSBDb3BpbG90S2l0U2VydmljZSBpbnN0YW5jZVxuICogQHBhcmFtIGFnZW50SWQgLSBPcHRpb25hbCBhZ2VudCBJRCAoZGVmYXVsdHMgdG8gREVGQVVMVF9BR0VOVF9JRClcbiAqIEBwYXJhbSBjYWxsYmFja3MgLSBFdmVudCBjYWxsYmFja3NcbiAqIEByZXR1cm5zIENsZWFudXAgZnVuY3Rpb24gdG8gdW5zdWJzY3JpYmVcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogZXhwb3J0IGNsYXNzIE15Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICogICBwcml2YXRlIHVuc3Vic2NyaWJlPzogKCkgPT4gdm9pZDtcbiAqXG4gKiAgIGNvbnN0cnVjdG9yKHByaXZhdGUgY29waWxvdGtpdDogQ29waWxvdEtpdFNlcnZpY2UpIHt9XG4gKlxuICogICBuZ09uSW5pdCgpIHtcbiAqICAgICB0aGlzLnVuc3Vic2NyaWJlID0gc3Vic2NyaWJlVG9BZ2VudCh0aGlzLmNvcGlsb3RraXQsICdteS1hZ2VudCcsIHtcbiAqICAgICAgIG9uUnVuSW5pdGlhbGl6ZWQ6ICgpID0+IGNvbnNvbGUubG9nKCdSdW4gc3RhcnRlZCcpLFxuICogICAgICAgb25SdW5GaW5hbGl6ZWQ6ICgpID0+IGNvbnNvbGUubG9nKCdSdW4gY29tcGxldGVkJyksXG4gKiAgICAgICBvblJ1bkZhaWxlZDogKGVycm9yKSA9PiBjb25zb2xlLmVycm9yKCdSdW4gZmFpbGVkJywgZXJyb3IpLFxuICogICAgIH0pO1xuICogICB9XG4gKlxuICogICBuZ09uRGVzdHJveSgpIHtcbiAqICAgICB0aGlzLnVuc3Vic2NyaWJlPy4oKTtcbiAqICAgfVxuICogfVxuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzdWJzY3JpYmVUb0FnZW50KFxuICBzZXJ2aWNlOiBDb3BpbG90S2l0U2VydmljZSxcbiAgYWdlbnRJZD86IHN0cmluZyxcbiAgY2FsbGJhY2tzPzogQWdlbnRTdWJzY3JpcHRpb25DYWxsYmFja3Ncbik6ICgpID0+IHZvaWQge1xuICBjb25zdCBlZmZlY3RpdmVBZ2VudElkID0gYWdlbnRJZCA/PyBERUZBVUxUX0FHRU5UX0lEO1xuICBjb25zdCBhZ2VudCA9IHNlcnZpY2UuY29waWxvdGtpdC5nZXRBZ2VudChlZmZlY3RpdmVBZ2VudElkKTtcblxuICBpZiAoIWFnZW50KSB7XG4gICAgLy8gUmV0dXJuIG5vLW9wIGNsZWFudXAgaWYgYWdlbnQgZG9lc24ndCBleGlzdFxuICAgIHJldHVybiAoKSA9PiB7fTtcbiAgfVxuXG4gIGNvbnN0IHN1YnNjcmlwdGlvbiA9IGFnZW50LnN1YnNjcmliZSh7XG4gICAgb25NZXNzYWdlc0NoYW5nZWQ6IGNhbGxiYWNrcz8ub25NZXNzYWdlc0NoYW5nZWQsXG4gICAgb25TdGF0ZUNoYW5nZWQ6IGNhbGxiYWNrcz8ub25TdGF0ZUNoYW5nZWQsXG4gICAgb25SdW5Jbml0aWFsaXplZDogY2FsbGJhY2tzPy5vblJ1bkluaXRpYWxpemVkLFxuICAgIG9uUnVuRmluYWxpemVkOiBjYWxsYmFja3M/Lm9uUnVuRmluYWxpemVkLFxuICAgIG9uUnVuRmFpbGVkOiBjYWxsYmFja3M/Lm9uUnVuRmFpbGVkLFxuICB9KTtcblxuICByZXR1cm4gKCkgPT4gc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG59XG4iXX0=
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { InjectionToken, signal, computed, effect, untracked, Inject, Injectable, Optional, inject, DestroyRef, ChangeDetectionStrategy, Component, ElementRef, ViewContainerRef, HostListener, Input, Directive, isDevMode, EventEmitter, Output, TemplateRef, ViewChild, ViewEncapsulation, ContentChild, ChangeDetectorRef, PLATFORM_ID, forwardRef,
|
|
2
|
+
import { InjectionToken, signal, computed, effect, untracked, Inject, Injectable, Optional, inject, DestroyRef, runInInjectionContext, ChangeDetectionStrategy, Component, ElementRef, ViewContainerRef, HostListener, Input, Directive, isDevMode, EventEmitter, Output, TemplateRef, ViewChild, ViewEncapsulation, ContentChild, ChangeDetectorRef, PLATFORM_ID, forwardRef, SkipSelf } from '@angular/core';
|
|
3
3
|
import { toObservable } from '@angular/core/rxjs-interop';
|
|
4
4
|
import { CopilotKitCore, ToolCallStatus, completePartialMarkdown } from '@copilotkitnext/core';
|
|
5
5
|
export { ToolCallStatus } from '@copilotkitnext/core';
|
|
@@ -259,16 +259,7 @@ class CopilotKitService {
|
|
|
259
259
|
});
|
|
260
260
|
}
|
|
261
261
|
});
|
|
262
|
-
//
|
|
263
|
-
effect(() => {
|
|
264
|
-
const current = this._renderToolCalls();
|
|
265
|
-
if (current !== this.initialRenderToolCalls &&
|
|
266
|
-
this.initialRenderToolCalls.length > 0) {
|
|
267
|
-
untracked(() => {
|
|
268
|
-
console.error("renderToolCalls must be a stable object. To add/remove tools dynamically, use dynamic tool registration.");
|
|
269
|
-
});
|
|
270
|
-
}
|
|
271
|
-
});
|
|
262
|
+
// Previously warned if renderToolCalls reference changed; removed per UX feedback
|
|
272
263
|
}
|
|
273
264
|
/**
|
|
274
265
|
* Setup effects to sync runtime configuration with CopilotKitCore
|
|
@@ -366,9 +357,6 @@ class CopilotKitService {
|
|
|
366
357
|
* Update render tool calls (warns if object reference changes)
|
|
367
358
|
*/
|
|
368
359
|
setRenderToolCalls(renderToolCalls) {
|
|
369
|
-
if (renderToolCalls !== this.initialRenderToolCalls) {
|
|
370
|
-
console.error("renderToolCalls must be a stable object. To add/remove tools dynamically, use dynamic tool registration.");
|
|
371
|
-
}
|
|
372
360
|
this._renderToolCalls.set(renderToolCalls);
|
|
373
361
|
}
|
|
374
362
|
/**
|
|
@@ -1203,6 +1191,32 @@ function getAgent(service, agentId) {
|
|
|
1203
1191
|
const effectiveAgentId = agentId ?? DEFAULT_AGENT_ID;
|
|
1204
1192
|
return service.copilotkit.getAgent(effectiveAgentId);
|
|
1205
1193
|
}
|
|
1194
|
+
/**
|
|
1195
|
+
* Convenience wrapper for watchAgent that handles injection context.
|
|
1196
|
+
* Useful when you need to call watchAgent outside of a constructor or field initializer.
|
|
1197
|
+
*
|
|
1198
|
+
* @param injector - The Angular Injector to use for injection context
|
|
1199
|
+
* @param config - Optional configuration with agentId
|
|
1200
|
+
* @returns Object with agent, messages, and isRunning signals plus observables
|
|
1201
|
+
*
|
|
1202
|
+
* @example
|
|
1203
|
+
* ```typescript
|
|
1204
|
+
* export class MyComponent {
|
|
1205
|
+
* constructor(private injector: Injector) {}
|
|
1206
|
+
*
|
|
1207
|
+
* switchAgent(newAgentId: string) {
|
|
1208
|
+
* // Can call outside of constructor using watchAgentWith
|
|
1209
|
+
* const watcher = watchAgentWith(this.injector, { agentId: newAgentId });
|
|
1210
|
+
* this.agent = watcher.agent;
|
|
1211
|
+
* this.messages = watcher.messages;
|
|
1212
|
+
* this.isRunning = watcher.isRunning;
|
|
1213
|
+
* }
|
|
1214
|
+
* }
|
|
1215
|
+
* ```
|
|
1216
|
+
*/
|
|
1217
|
+
function watchAgentWith(injector, config) {
|
|
1218
|
+
return runInInjectionContext(injector, () => watchAgent(config));
|
|
1219
|
+
}
|
|
1206
1220
|
/**
|
|
1207
1221
|
* Subscribes to an agent's events with custom callbacks.
|
|
1208
1222
|
* Returns a cleanup function that should be called to unsubscribe.
|
|
@@ -1249,24 +1263,6 @@ function subscribeToAgent(service, agentId, callbacks) {
|
|
|
1249
1263
|
});
|
|
1250
1264
|
return () => subscription.unsubscribe();
|
|
1251
1265
|
}
|
|
1252
|
-
/**
|
|
1253
|
-
* Registers an agent watcher that automatically cleans up on component destroy.
|
|
1254
|
-
* This is an alias for watchAgent with a more explicit name.
|
|
1255
|
-
* Must be called within an injection context.
|
|
1256
|
-
*
|
|
1257
|
-
* @param config - Optional configuration with agentId
|
|
1258
|
-
* @returns Object with agent, messages, and isRunning signals plus observables
|
|
1259
|
-
*
|
|
1260
|
-
* @example
|
|
1261
|
-
* ```typescript
|
|
1262
|
-
* export class MyComponent {
|
|
1263
|
-
* agentState = registerAgentWatcher({ agentId: 'my-agent' });
|
|
1264
|
-
* }
|
|
1265
|
-
* ```
|
|
1266
|
-
*/
|
|
1267
|
-
function registerAgentWatcher(config) {
|
|
1268
|
-
return watchAgent(config);
|
|
1269
|
-
}
|
|
1270
1266
|
|
|
1271
1267
|
/**
|
|
1272
1268
|
* Registers a human-in-the-loop tool that requires user interaction.
|
|
@@ -3039,20 +3035,17 @@ class CopilotKitToolRenderComponent {
|
|
|
3039
3035
|
this.container.clear();
|
|
3040
3036
|
// Create the component
|
|
3041
3037
|
this.componentRef = this.container.createComponent(componentClass);
|
|
3042
|
-
//
|
|
3043
|
-
|
|
3044
|
-
|
|
3038
|
+
// Determine declared inputs to avoid NG0303 logs
|
|
3039
|
+
const cmpDef = componentClass.ɵcmp;
|
|
3040
|
+
const declaredInputs = new Set(Object.keys(cmpDef?.inputs ?? {}));
|
|
3041
|
+
if (declaredInputs.has('props')) {
|
|
3045
3042
|
this.componentRef.setInput('props', props);
|
|
3046
3043
|
}
|
|
3047
|
-
|
|
3048
|
-
// If props input doesn't exist, try setting individual inputs
|
|
3044
|
+
else {
|
|
3049
3045
|
for (const [key, value] of Object.entries(props)) {
|
|
3050
|
-
|
|
3046
|
+
if (declaredInputs.has(key)) {
|
|
3051
3047
|
this.componentRef.setInput(key, value);
|
|
3052
3048
|
}
|
|
3053
|
-
catch (inputError) {
|
|
3054
|
-
// Input might not exist on the component, skip it
|
|
3055
|
-
}
|
|
3056
3049
|
}
|
|
3057
3050
|
}
|
|
3058
3051
|
// Trigger change detection
|
|
@@ -3192,10 +3185,19 @@ function createComponent(viewContainer, component, props, injector, outputs) {
|
|
|
3192
3185
|
injector
|
|
3193
3186
|
});
|
|
3194
3187
|
if (props) {
|
|
3195
|
-
// Apply props using setInput
|
|
3196
|
-
|
|
3197
|
-
|
|
3198
|
-
|
|
3188
|
+
// Apply props using setInput, but only for declared inputs
|
|
3189
|
+
const cmpDef = component.ɵcmp;
|
|
3190
|
+
const declaredInputs = new Set(Object.keys(cmpDef?.inputs ?? {}));
|
|
3191
|
+
if (declaredInputs.has('props')) {
|
|
3192
|
+
componentRef.setInput('props', props);
|
|
3193
|
+
}
|
|
3194
|
+
else {
|
|
3195
|
+
for (const key in props) {
|
|
3196
|
+
if (declaredInputs.has(key)) {
|
|
3197
|
+
const value = props[key];
|
|
3198
|
+
componentRef.setInput(key, value);
|
|
3199
|
+
}
|
|
3200
|
+
}
|
|
3199
3201
|
}
|
|
3200
3202
|
}
|
|
3201
3203
|
if (outputs) {
|
|
@@ -3430,11 +3432,21 @@ class CopilotSlotComponent {
|
|
|
3430
3432
|
return;
|
|
3431
3433
|
}
|
|
3432
3434
|
const props = this.context;
|
|
3433
|
-
// Update props using setInput
|
|
3435
|
+
// Update props using setInput, only for declared inputs
|
|
3434
3436
|
if (props) {
|
|
3435
|
-
|
|
3436
|
-
|
|
3437
|
-
|
|
3437
|
+
const ctor = this.componentRef.instance.constructor;
|
|
3438
|
+
const cmpDef = ctor?.ɵcmp;
|
|
3439
|
+
const declaredInputs = new Set(Object.keys(cmpDef?.inputs ?? {}));
|
|
3440
|
+
if (declaredInputs.has('props')) {
|
|
3441
|
+
this.componentRef.setInput('props', props);
|
|
3442
|
+
}
|
|
3443
|
+
else {
|
|
3444
|
+
for (const key in props) {
|
|
3445
|
+
if (declaredInputs.has(key)) {
|
|
3446
|
+
const value = props[key];
|
|
3447
|
+
this.componentRef.setInput(key, value);
|
|
3448
|
+
}
|
|
3449
|
+
}
|
|
3438
3450
|
}
|
|
3439
3451
|
}
|
|
3440
3452
|
// Trigger change detection
|
|
@@ -5940,13 +5952,19 @@ class CopilotChatToolCallsViewComponent {
|
|
|
5940
5952
|
// Create the component
|
|
5941
5953
|
const componentRef = this.container.createComponent(componentClass);
|
|
5942
5954
|
this.componentRefs.set(toolCallId, componentRef);
|
|
5943
|
-
//
|
|
5944
|
-
|
|
5945
|
-
|
|
5946
|
-
|
|
5947
|
-
|
|
5948
|
-
|
|
5949
|
-
|
|
5955
|
+
// Determine declared inputs to avoid Angular NG0303 console errors
|
|
5956
|
+
const cmpDef = componentClass.ɵcmp;
|
|
5957
|
+
const declaredInputs = new Set(Object.keys(cmpDef?.inputs ?? {}));
|
|
5958
|
+
// Prefer a single 'props' input if declared
|
|
5959
|
+
if (declaredInputs.has('props')) {
|
|
5960
|
+
componentRef.setInput('props', props);
|
|
5961
|
+
}
|
|
5962
|
+
else {
|
|
5963
|
+
// Otherwise, set only inputs that the component actually declares
|
|
5964
|
+
for (const [key, value] of Object.entries(props)) {
|
|
5965
|
+
if (declaredInputs.has(key)) {
|
|
5966
|
+
componentRef.setInput(key, value);
|
|
5967
|
+
}
|
|
5950
5968
|
}
|
|
5951
5969
|
}
|
|
5952
5970
|
// Trigger change detection
|
|
@@ -6790,6 +6808,12 @@ class CopilotChatAssistantMessageComponent {
|
|
|
6790
6808
|
toolbarContext = computed(() => ({
|
|
6791
6809
|
children: null // Will be populated by the toolbar content
|
|
6792
6810
|
}));
|
|
6811
|
+
// Return true if assistant message has non-empty text content
|
|
6812
|
+
hasMessageContent() {
|
|
6813
|
+
const raw = (this.message?.content ?? '');
|
|
6814
|
+
const content = typeof raw === 'string' ? raw : String(raw ?? '');
|
|
6815
|
+
return content.trim().length > 0;
|
|
6816
|
+
}
|
|
6793
6817
|
toolCallsViewContext = computed(() => ({
|
|
6794
6818
|
message: this.message,
|
|
6795
6819
|
messages: this.messages,
|
|
@@ -6847,8 +6871,8 @@ class CopilotChatAssistantMessageComponent {
|
|
|
6847
6871
|
</copilot-chat-tool-calls-view>
|
|
6848
6872
|
}
|
|
6849
6873
|
|
|
6850
|
-
<!-- Toolbar -->
|
|
6851
|
-
<ng-container *ngIf="toolbarVisible">
|
|
6874
|
+
<!-- Toolbar: show only when there is assistant text content -->
|
|
6875
|
+
<ng-container *ngIf="toolbarVisible && hasMessageContent()">
|
|
6852
6876
|
@if (toolbarTemplate || toolbarComponent) {
|
|
6853
6877
|
<copilot-slot
|
|
6854
6878
|
[slot]="toolbarTemplate || toolbarComponent"
|
|
@@ -6975,8 +6999,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
6975
6999
|
</copilot-chat-tool-calls-view>
|
|
6976
7000
|
}
|
|
6977
7001
|
|
|
6978
|
-
<!-- Toolbar -->
|
|
6979
|
-
<ng-container *ngIf="toolbarVisible">
|
|
7002
|
+
<!-- Toolbar: show only when there is assistant text content -->
|
|
7003
|
+
<ng-container *ngIf="toolbarVisible && hasMessageContent()">
|
|
6980
7004
|
@if (toolbarTemplate || toolbarComponent) {
|
|
6981
7005
|
<copilot-slot
|
|
6982
7006
|
[slot]="toolbarTemplate || toolbarComponent"
|
|
@@ -9116,19 +9140,25 @@ class CopilotChatComponent {
|
|
|
9116
9140
|
a.threadId = this.threadId || this.generatedThreadId;
|
|
9117
9141
|
if (!this.hasConnectedOnce) {
|
|
9118
9142
|
this.hasConnectedOnce = true;
|
|
9119
|
-
|
|
9143
|
+
if ('isCopilotKitAgent' in a) {
|
|
9144
|
+
this.connectToAgent(a);
|
|
9145
|
+
}
|
|
9146
|
+
else {
|
|
9147
|
+
// Not a CopilotKit agent: ensure UI not showing loading cursor
|
|
9148
|
+
this.showCursor.set(false);
|
|
9149
|
+
this.cdr.markForCheck();
|
|
9150
|
+
}
|
|
9120
9151
|
}
|
|
9121
9152
|
}, { allowSignalWrites: true });
|
|
9122
9153
|
}
|
|
9123
|
-
// Signals from watchAgent -
|
|
9124
|
-
agent
|
|
9125
|
-
messages
|
|
9126
|
-
isRunning
|
|
9154
|
+
// Signals from watchAgent - destructured from watcher
|
|
9155
|
+
agent;
|
|
9156
|
+
messages;
|
|
9157
|
+
isRunning;
|
|
9127
9158
|
showCursor = signal(false);
|
|
9128
9159
|
generatedThreadId = randomUUID();
|
|
9129
|
-
|
|
9160
|
+
watcher;
|
|
9130
9161
|
hasConnectedOnce = false;
|
|
9131
|
-
lastAgentId;
|
|
9132
9162
|
ngOnInit() {
|
|
9133
9163
|
this.setupChatHandlers();
|
|
9134
9164
|
}
|
|
@@ -9215,24 +9245,18 @@ class CopilotChatComponent {
|
|
|
9215
9245
|
// Keep input state if needed
|
|
9216
9246
|
});
|
|
9217
9247
|
}
|
|
9218
|
-
ngOnDestroy() {
|
|
9219
|
-
if (this.agentWatcher?.unsubscribe) {
|
|
9220
|
-
this.agentWatcher.unsubscribe();
|
|
9221
|
-
}
|
|
9222
|
-
}
|
|
9223
9248
|
createWatcher(desiredAgentId) {
|
|
9224
|
-
// Tear down previous watcher if it exists
|
|
9225
|
-
|
|
9226
|
-
|
|
9227
|
-
|
|
9228
|
-
|
|
9229
|
-
|
|
9230
|
-
this.
|
|
9231
|
-
this.
|
|
9232
|
-
this.
|
|
9233
|
-
|
|
9249
|
+
// Tear down previous watcher if it exists to prevent parallel subscriptions
|
|
9250
|
+
this.watcher?.unsubscribe();
|
|
9251
|
+
// Create new watcher using the ergonomic helper
|
|
9252
|
+
const w = watchAgentWith(this.injector, { agentId: desiredAgentId });
|
|
9253
|
+
// Destructure signals directly to class fields
|
|
9254
|
+
this.agent = w.agent;
|
|
9255
|
+
this.messages = w.messages;
|
|
9256
|
+
this.isRunning = w.isRunning;
|
|
9257
|
+
this.watcher = w;
|
|
9258
|
+
// Reset connection state for new agent
|
|
9234
9259
|
this.hasConnectedOnce = false;
|
|
9235
|
-
this.lastAgentId = desiredAgentId;
|
|
9236
9260
|
}
|
|
9237
9261
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CopilotChatComponent, deps: [{ token: CopilotChatConfigurationService, optional: true }, { token: i0.ChangeDetectorRef }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
|
|
9238
9262
|
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: CopilotChatComponent, isStandalone: true, selector: "copilot-chat", inputs: { agentId: "agentId", threadId: "threadId" }, providers: [
|
|
@@ -9297,5 +9321,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
9297
9321
|
* Generated bundle index. Do not edit.
|
|
9298
9322
|
*/
|
|
9299
9323
|
|
|
9300
|
-
export { AudioRecorderError, COPILOTKIT_AGENTS, COPILOTKIT_FRONTEND_TOOLS, COPILOTKIT_HEADERS, COPILOTKIT_HUMAN_IN_THE_LOOP, COPILOTKIT_PROPERTIES, COPILOTKIT_RENDER_TOOL_CALLS, COPILOTKIT_RUNTIME_URL, COPILOT_CHAT_DEFAULT_LABELS, COPILOT_CHAT_INITIAL_CONFIG, CopilotChatAddFileButtonComponent, CopilotChatAssistantMessageComponent, CopilotChatAssistantMessageCopyButtonComponent, CopilotChatAssistantMessageReadAloudButtonComponent, CopilotChatAssistantMessageRegenerateButtonComponent, CopilotChatAssistantMessageRendererComponent, CopilotChatAssistantMessageThumbsDownButtonComponent, CopilotChatAssistantMessageThumbsUpButtonComponent, CopilotChatAssistantMessageToolbarButtonComponent, CopilotChatAssistantMessageToolbarComponent, CopilotChatAudioRecorderComponent, CopilotChatCancelTranscribeButtonComponent, CopilotChatComponent, CopilotChatConfigurationService, CopilotChatFinishTranscribeButtonComponent, CopilotChatInputComponent, CopilotChatInputDefaults, CopilotChatMessageViewComponent, CopilotChatMessageViewCursorComponent, CopilotChatSendButtonComponent, CopilotChatStartTranscribeButtonComponent, CopilotChatTextareaComponent, CopilotChatToolCallsViewComponent, CopilotChatToolbarButtonComponent, CopilotChatToolbarComponent, CopilotChatToolsMenuComponent, CopilotChatUserMessageBranchNavigationComponent, CopilotChatUserMessageComponent, CopilotChatUserMessageCopyButtonComponent, CopilotChatUserMessageEditButtonComponent, CopilotChatUserMessageRendererComponent, CopilotChatUserMessageToolbarButtonComponent, CopilotChatUserMessageToolbarComponent, CopilotChatViewComponent, CopilotChatViewDisclaimerComponent, CopilotChatViewFeatherComponent, CopilotChatViewInputContainerComponent, CopilotChatViewScrollToBottomButtonComponent, CopilotChatViewScrollViewComponent, CopilotKitAgentContextDirective, CopilotKitAgentDirective, CopilotKitChatConfigDirective, CopilotKitConfigDirective, CopilotKitFrontendToolDirective, CopilotKitHumanInTheLoopDirective, CopilotKitHumanInTheLoopRespondDirective, CopilotKitService, CopilotKitToolRenderComponent, CopilotTooltipDirective, ResizeObserverService, ScrollPositionService, StickToBottomDirective, addAgentContext, addFrontendTool, addHumanInTheLoop, createChatConfigController, createDynamicFrontendTool, createHumanInTheLoop, createReactiveContext, enhancePropsForHumanInTheLoop, getAgent, getChatInputValue, getChatLabels, injectCopilotKit, provideCopilotChatConfiguration, provideCopilotKit, registerAgentContext,
|
|
9324
|
+
export { AudioRecorderError, COPILOTKIT_AGENTS, COPILOTKIT_FRONTEND_TOOLS, COPILOTKIT_HEADERS, COPILOTKIT_HUMAN_IN_THE_LOOP, COPILOTKIT_PROPERTIES, COPILOTKIT_RENDER_TOOL_CALLS, COPILOTKIT_RUNTIME_URL, COPILOT_CHAT_DEFAULT_LABELS, COPILOT_CHAT_INITIAL_CONFIG, CopilotChatAddFileButtonComponent, CopilotChatAssistantMessageComponent, CopilotChatAssistantMessageCopyButtonComponent, CopilotChatAssistantMessageReadAloudButtonComponent, CopilotChatAssistantMessageRegenerateButtonComponent, CopilotChatAssistantMessageRendererComponent, CopilotChatAssistantMessageThumbsDownButtonComponent, CopilotChatAssistantMessageThumbsUpButtonComponent, CopilotChatAssistantMessageToolbarButtonComponent, CopilotChatAssistantMessageToolbarComponent, CopilotChatAudioRecorderComponent, CopilotChatCancelTranscribeButtonComponent, CopilotChatComponent, CopilotChatConfigurationService, CopilotChatFinishTranscribeButtonComponent, CopilotChatInputComponent, CopilotChatInputDefaults, CopilotChatMessageViewComponent, CopilotChatMessageViewCursorComponent, CopilotChatSendButtonComponent, CopilotChatStartTranscribeButtonComponent, CopilotChatTextareaComponent, CopilotChatToolCallsViewComponent, CopilotChatToolbarButtonComponent, CopilotChatToolbarComponent, CopilotChatToolsMenuComponent, CopilotChatUserMessageBranchNavigationComponent, CopilotChatUserMessageComponent, CopilotChatUserMessageCopyButtonComponent, CopilotChatUserMessageEditButtonComponent, CopilotChatUserMessageRendererComponent, CopilotChatUserMessageToolbarButtonComponent, CopilotChatUserMessageToolbarComponent, CopilotChatViewComponent, CopilotChatViewDisclaimerComponent, CopilotChatViewFeatherComponent, CopilotChatViewInputContainerComponent, CopilotChatViewScrollToBottomButtonComponent, CopilotChatViewScrollViewComponent, CopilotKitAgentContextDirective, CopilotKitAgentDirective, CopilotKitChatConfigDirective, CopilotKitConfigDirective, CopilotKitFrontendToolDirective, CopilotKitHumanInTheLoopDirective, CopilotKitHumanInTheLoopRespondDirective, CopilotKitService, CopilotKitToolRenderComponent, CopilotTooltipDirective, ResizeObserverService, ScrollPositionService, StickToBottomDirective, addAgentContext, addFrontendTool, addHumanInTheLoop, createChatConfigController, createDynamicFrontendTool, createHumanInTheLoop, createReactiveContext, enhancePropsForHumanInTheLoop, getAgent, getChatInputValue, getChatLabels, injectCopilotKit, provideCopilotChatConfiguration, provideCopilotKit, registerAgentContext, registerChatConfig, registerFrontendTool, registerHumanInTheLoop, removeFrontendTool, setChatInputValue, setChatLabels, subscribeToAgent, watchAgent, watchAgentWith, watchChatConfig };
|
|
9301
9325
|
//# sourceMappingURL=copilotkitnext-angular.mjs.map
|