@copilotkitnext/angular 0.0.7 → 0.0.9-alpha.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.
@@ -2,6 +2,7 @@ import { DestroyRef, inject, signal, computed, runInInjectionContext, } from "@a
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";
5
+ import { CopilotKitCoreRuntimeConnectionStatus } from "@copilotkitnext/core";
5
6
  /**
6
7
  * Watches an agent and provides reactive signals for its state.
7
8
  * Must be called within an injection context.
@@ -84,15 +85,14 @@ export function watchAgent(config) {
84
85
  subscribeToAgent();
85
86
  // Subscribe to CopilotKit changes to detect agent updates
86
87
  const coreUnsubscribe = service.copilotkit.subscribe({
87
- onRuntimeLoaded() {
88
- // Re-check agent when runtime loads
89
- currentAgent = updateAgent();
90
- subscribeToAgent();
91
- },
92
- onRuntimeLoadError() {
93
- // Also re-check agent on runtime load error to ensure consistency
94
- currentAgent = updateAgent();
95
- subscribeToAgent();
88
+ onRuntimeConnectionStatusChanged({ status }) {
89
+ if (status === CopilotKitCoreRuntimeConnectionStatus.Connected ||
90
+ status === CopilotKitCoreRuntimeConnectionStatus.Disconnected ||
91
+ status === CopilotKitCoreRuntimeConnectionStatus.Error) {
92
+ // Re-check agent when runtime connection state changes
93
+ currentAgent = updateAgent();
94
+ subscribeToAgent();
95
+ }
96
96
  },
97
97
  });
98
98
  // Register cleanup
@@ -209,4 +209,4 @@ export function subscribeToAgent(service, agentId, callbacks) {
209
209
  });
210
210
  return () => subscription.unsubscribe();
211
211
  }
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=
212
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdlbnQudXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdXRpbHMvYWdlbnQudXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFVBQVUsRUFDVixNQUFNLEVBQ04sTUFBTSxFQUNOLFFBQVEsRUFFUixxQkFBcUIsR0FDdEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzFELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBTS9ELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzFELE9BQU8sRUFBRSxxQ0FBcUMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRTdFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXVCRztBQUNILE1BQU0sVUFBVSxVQUFVLENBQUMsTUFBNkI7SUFDdEQsbURBQW1EO0lBQ25ELE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQzFDLE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUN0QyxNQUFNLGdCQUFnQixHQUFHLE1BQU0sRUFBRSxPQUFPLElBQUksZ0JBQWdCLENBQUM7SUFFN0QsbUVBQW1FO0lBQ25FLE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBNEIsU0FBUyxDQUFDLENBQUM7SUFDakUsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFTLENBQUMsQ0FBQyxDQUFDO0lBQy9CLE1BQU0sZUFBZSxHQUFHLE1BQU0sQ0FBVSxLQUFLLENBQUMsQ0FBQztJQUUvQyw4REFBOEQ7SUFDOUQsTUFBTSxRQUFRLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtRQUM3QixzQ0FBc0M7UUFDdEMsSUFBSSxFQUFFLENBQUM7UUFDUCxNQUFNLENBQUMsR0FBRyxXQUFXLEVBQUUsQ0FBQztRQUN4QixJQUFJLENB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YztRQUN6QyxXQUFXLEVBQUUsU0FBUyxFQUFFLFdBQVc7S0FDcEMsQ0FBQyxDQUFDO0lBRUgsT0FBTyxHQUFHLEVBQUUsQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLENBQUM7QUFDMUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIERlc3Ryb3lSZWYsXG4gIGluamVjdCxcbiAgc2lnbmFsLFxuICBjb21wdXRlZCxcbiAgSW5qZWN0b3IsXG4gIHJ1bkluSW5qZWN0aW9uQ29udGV4dCxcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IHRvT2JzZXJ2YWJsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcFwiO1xuaW1wb3J0IHsgQ29waWxvdEtpdFNlcnZpY2UgfSBmcm9tIFwiLi4vY29yZS9jb3BpbG90a2l0LnNlcnZpY2VcIjtcbmltcG9ydCB7XG4gIEFnZW50U3Vic2NyaXB0aW9uQ2FsbGJhY2tzLFxuICBBZ2VudFdhdGNoUmVzdWx0LFxufSBmcm9tIFwiLi4vY29yZS9jb3BpbG90a2l0LnR5cGVzXCI7XG5pbXBvcnQgeyBBYnN0cmFjdEFnZW50IH0gZnJvbSBcIkBhZy11aS9jbGllbnRcIjtcbmltcG9ydCB7IERFRkFVTFRfQUdFTlRfSUQgfSBmcm9tIFwiQGNvcGlsb3RraXRuZXh0L3NoYXJlZFwiO1xuaW1wb3J0IHsgQ29waWxvdEtpdENvcmVSdW50aW1lQ29ubmVjdGlvblN0YXR1cyB9IGZyb20gXCJAY29waWxvdGtpdG5leHQvY29yZVwiO1xuXG4vKipcbiAqIFdhdGNoZXMgYW4gYWdlbnQgYW5kIHByb3ZpZGVzIHJlYWN0aXZlIHNpZ25hbHMgZm9yIGl0cyBzdGF0ZS5cbiAqIE11c3QgYmUgY2FsbGVkIHdpdGhpbiBhbiBpbmplY3Rpb24gY29udGV4dC5cbiAqIEF1dG9tYXRpY2FsbHkgY2xlYW5zIHVwIHdoZW4gdGhlIGNvbXBvbmVudC9zZXJ2aWNlIGlzIGRlc3Ryb3llZC5cbiAqXG4gKiBAcGFyYW0gY29uZmlnIC0gT3B0aW9uYWwgY29uZmlndXJhdGlvbiB3aXRoIGFnZW50SWRcbiAqIEByZXR1cm5zIE9iamVjdCB3aXRoIGFnZW50LCBtZXNzYWdlcywgYW5kIGlzUnVubmluZyBzaWduYWxzIHBsdXMgb2JzZXJ2YWJsZXNcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogZXhwb3J0IGNsYXNzIE15Q29tcG9uZW50IHtcbiAqICAgLy8gQXV0b21hdGljYWxseSB0cmFja3MgYWdlbnQgc3RhdGVcbiAqICAgYWdlbnRTdGF0ZSA9IHdhdGNoQWdlbnQoeyBhZ2VudElkOiAnbXktYWdlbnQnIH0pO1xuICpcbiAqICAgY29uc3RydWN0b3IoKSB7XG4gKiAgICAgZWZmZWN0KCgpID0+IHtcbiAqICAgICAgIGNvbnN0IG1lc3NhZ2VzID0gdGhpcy5hZ2VudFN0YXRlLm1lc3NhZ2VzKCk7XG4gKiAgICAgICBjb25zdCBpc1J1bm5pbmcgPSB0aGlzLmFnZW50U3RhdGUuaXNSdW5uaW5nKCk7XG4gKiAgICAgICBjb25zb2xlLmxvZygnTWVzc2FnZXM6JywgbWVzc2FnZXMubGVuZ3RoLCAnUnVubmluZzonLCBpc1J1bm5pbmcpO1xuICogICAgIH0pO1xuICogICB9XG4gKiB9XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHdhdGNoQWdlbnQoY29uZmlnPzogeyBhZ2VudElkPzogc3RyaW5nIH0pOiBBZ2VudFdhdGNoUmVzdWx0IHtcbiAgLy8gVXNlIGluamVjdCgpIGludGVybmFsbHkgdG8gZ2V0IHJlcXVpcmVkIHNlcnZpY2VzXG4gIGNvbnN0IHNlcnZpY2UgPSBpbmplY3QoQ29waWxvdEtpdFNlcnZpY2UpO1xuICBjb25zdCBkZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuICBjb25zdCBlZmZlY3RpdmVBZ2VudElkID0gY29uZmlnPy5hZ2VudElkID8/IERFRkFVTFRfQUdFTlRfSUQ7XG5cbiAgLy8gQ3JlYXRlIHJlYWN0aXZlIHNpZ25hbHMgd2l0aCB0aWNrIG1lY2hhbmlzbSBmb3IgcmVsaWFibGUgdXBkYXRlc1xuICBjb25zdCBhZ2VudFNpZ25hbCA9IHNpZ25hbDxBYnN0cmFjdEFnZW50IHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICBjb25zdCB0aWNrID0gc2lnbmFsPG51bWJlcj4oMCk7XG4gIGNvbnN0IGlzUnVubmluZ1NpZ25hbCA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XG5cbiAgLy8gQ3JlYXRlIGNvbXB1dGVkIG1lc3NhZ2VzIHNpZ25hbCB0aGF0IHJlYWN0cyB0byB0aWNrIGNoYW5nZXNcbiAgY29uc3QgbWVzc2FnZXMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgLy8gQWNjZXNzIHRpY2sgdG8gZW5zdXJlIHJlY29tcHV0YXRpb25cbiAgICB0aWNrKCk7XG4gICAgY29uc3QgYSA9IGFnZW50U2lnbmFsKCk7XG4gICAgaWYgKCFhKSByZXR1cm4gW107XG4gICAgLy8gUmV0dXJuIGEgc2hhbGxvdyBjbG9uZSB0byBlbnN1cmUgY2hhbmdlIGRldGVjdGlvblxuICAgIHJldHVybiBhLm1lc3NhZ2VzLm1hcCgobSkgPT4gKHsgLi4ubSB9KSk7XG4gIH0pO1xuXG4gIC8vIEdldCBpbml0aWFsIGFnZW50XG4gIGNvbnN0IHVwZGF0ZUFnZW50ID0gKCkgPT4ge1xuICAgIGNvbnN0IGFnZW50ID0gc2VydmljZS5jb3BpbG90a2l0LmdldEFnZW50KGVmZmVjdGl2ZUFnZW50SWQpO1xuICAgIGFnZW50U2lnbmFsLnNldChhZ2VudCk7XG4gICAgcmV0dXJuIGFnZW50O1xuICB9O1xuXG4gIC8vIEluaXRpYWwgdXBkYXRlXG4gIGxldCBjdXJyZW50QWdlbnQgPSB1cGRhdGVBZ2VudCgpO1xuXG4gIC8vIFN1YnNjcmliZSB0byBhZ2VudCBjaGFuZ2VzXG4gIGxldCBhZ2VudFN1YnNjcmlwdGlvbjogeyB1bnN1YnNjcmliZTogKCkgPT4gdm9pZCB9IHwgdW5kZWZpbmVkO1xuXG4gIGNvbnN0IHN1YnNjcmliZVRvQWdlbnQgPSAoKSA9PiB7XG4gICAgLy8gVW5zdWJzY3JpYmUgZnJvbSBwcmV2aW91cyBhZ2VudCBpZiBhbnlcbiAgICBhZ2VudFN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcblxuICAgIGlmIChjdXJyZW50QWdlbnQpIHtcbiAgICAgIGFnZW50U3Vic2NyaXB0aW9uID0gY3VycmVudEFnZW50LnN1YnNjcmliZSh7XG4gICAgICAgIG9uTWVzc2FnZXNDaGFuZ2VkKCkge1xuICAgICAgICAgIC8vIEluY3JlbWVudCB0aWNrIHRvIGZvcmNlIHJlY29tcHV0YXRpb24gb2YgbWVzc2FnZXMgY29tcHV0ZWRcbiAgICAgICAgICB0aWNrLnVwZGF0ZSgodikgPT4gdiArIDEpO1xuICAgICAgICB9LFxuICAgICAgICBvblN0YXRlQ2hhbmdlZCgpIHtcbiAgICAgICAgICAvLyBJbmNyZW1lbnQgdGljayB0byBmb3JjZSByZWNvbXB1dGF0aW9uXG4gICAgICAgICAgdGljay51cGRhdGUoKHYpID0+IHYgKyAxKTtcbiAgICAgICAgfSxcbiAgICAgICAgb25SdW5Jbml0aWFsaXplZCgpIHtcbiAgICAgICAgICBpc1J1bm5pbmdTaWduYWwuc2V0KHRydWUpO1xuICAgICAgICB9LFxuICAgICAgICBvblJ1bkZpbmFsaXplZCgpIHtcbiAgICAgICAgICBpc1J1bm5pbmdTaWduYWwuc2V0KGZhbHNlKTtcbiAgICAgICAgfSxcbiAgICAgICAgb25SdW5GYWlsZWQoKSB7XG4gICAgICAgICAgaXNSdW5uaW5nU2lnbmFsLnNldChmYWxzZSk7XG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9XG4gIH07XG5cbiAgLy8gSW5pdGlhbCBzdWJzY3JpcHRpb25cbiAgc3Vic2NyaWJlVG9BZ2VudCgpO1xuXG4gIC8vIFN1YnNjcmliZSB0byBDb3BpbG90S2l0IGNoYW5nZXMgdG8gZGV0ZWN0IGFnZW50IHVwZGF0ZXNcbiAgY29uc3QgY29yZVVuc3Vic2NyaWJlID0gc2VydmljZS5jb3BpbG90a2l0LnN1YnNjcmliZSh7XG4gICAgb25SdW50aW1lQ29ubmVjdGlvblN0YXR1c0NoYW5nZWQoeyBzdGF0dXMgfSkge1xuICAgICAgaWYgKFxuICAgICAgICBzdGF0dXMgPT09IENvcGlsb3RLaXRDb3JlUnVudGltZUNvbm5lY3Rpb25TdGF0dXMuQ29ubmVjdGVkIHx8XG4gICAgICAgIHN0YXR1cyA9PT0gQ29waWxvdEtpdENvcmVSdW50aW1lQ29ubmVjdGlvblN0YXR1cy5EaXNjb25uZWN0ZWQgfHxcbiAgICAgICAgc3RhdHVzID09PSBDb3BpbG90S2l0Q29yZVJ1bnRpbWVDb25uZWN0aW9uU3RhdHVzLkVycm9yXG4gICAgICApIHtcbiAgICAgICAgLy8gUmUtY2hlY2sgYWdlbnQgd2hlbiBydW50aW1lIGNvbm5lY3Rpb24gc3RhdGUgY2hhbmdlc1xuICAgICAgICBjdXJyZW50QWdlbnQgPSB1cGRhdGVBZ2VudCgpO1xuICAgICAgICBzdWJzY3JpYmVUb0FnZW50KCk7XG4gICAgICB9XG4gICAgfSxcbiAgfSk7XG5cbiAgLy8gUmVnaXN0ZXIgY2xlYW51cFxuICBjb25zdCB1bnN1YnNjcmliZSA9ICgpID0+IHtcbiAgICBhZ2VudFN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICBjb3JlVW5zdWJzY3JpYmUoKTsgLy8gc3Vic2NyaWJlIHJldHVybnMgYSBmdW5jdGlvbiBkaXJlY3RseVxuICB9O1xuXG4gIGRlc3Ryb3lSZWYub25EZXN0cm95KHVuc3Vic2NyaWJlKTtcblxuICAvLyBDcmVhdGUgb2JzZXJ2YWJsZXMgZnJvbSBzaWduYWxzIHVzaW5nIHRvT2JzZXJ2YWJsZVxuICBjb25zdCBhZ2VudCQgPSB0b09ic2VydmFibGUoYWdlbnRTaWduYWwpO1xuICBjb25zdCBpc1J1bm5pbmckID0gdG9PYnNlcnZhYmxlKGlzUnVubmluZ1NpZ25hbCk7XG4gIGNvbnN0IG1lc3NhZ2VzJCA9IHRvT2JzZXJ2YWJsZShtZXNzYWdlcyk7XG5cbiAgcmV0dXJuIHtcbiAgICBhZ2VudDogYWdlbnRTaWduYWwuYXNSZWFkb25seSgpLFxuICAgIG1lc3NhZ2VzOiBtZXNzYWdlcyxcbiAgICBpc1J1bm5pbmc6IGlzUnVubmluZ1NpZ25hbC5hc1JlYWRvbmx5KCksXG4gICAgYWdlbnQkLFxuICAgIG1lc3NhZ2VzJCxcbiAgICBpc1J1bm5pbmckLFxuICAgIHVuc3Vic2NyaWJlLFxuICB9O1xufVxuXG4vKipcbiAqIEdldHMgYW4gYWdlbnQgYnkgSUQgd2l0aG91dCBzdWJzY3JpYmluZyB0byBjaGFuZ2VzLlxuICpcbiAqIEBwYXJhbSBzZXJ2aWNlIC0gVGhlIENvcGlsb3RLaXRTZXJ2aWNlIGluc3RhbmNlXG4gKiBAcGFyYW0gYWdlbnRJZCAtIE9wdGlvbmFsIGFnZW50IElEIChkZWZhdWx0cyB0byBERUZBVUxUX0FHRU5UX0lEKVxuICogQHJldHVybnMgVGhlIGFnZW50IG9yIHVuZGVmaW5lZCBpZiBub3QgZm91bmRcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogZXhwb3J0IGNsYXNzIE15Q29tcG9uZW50IHtcbiAqICAgY29uc3RydWN0b3IocHJpdmF0ZSBjb3BpbG90a2l0OiBDb3BpbG90S2l0U2VydmljZSkge31cbiAqXG4gKiAgIGdldEN1cnJlbnRBZ2VudCgpIHtcbiAqICAgICByZXR1cm4gZ2V0QWdlbnQodGhpcy5jb3BpbG90a2l0LCAnbXktYWdlbnQnKTtcbiAqICAgfVxuICogfVxuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRBZ2VudChcbiAgc2VydmljZTogQ29waWxvdEtpdFNlcnZpY2UsXG4gIGFnZW50SWQ/OiBzdHJpbmdcbik6IEFic3RyYWN0QWdlbnQgfCB1bmRlZmluZWQge1xuICBjb25zdCBlZmZlY3RpdmVBZ2VudElkID0gYWdlbnRJZCA/PyBERUZBVUxUX0FHRU5UX0lEO1xuICByZXR1cm4gc2VydmljZS5jb3BpbG90a2l0LmdldEFnZW50KGVmZmVjdGl2ZUFnZW50SWQpO1xufVxuXG4vLyBSZS1leHBvcnQgdGhlIHR5cGUgZm9yIGNvbnZlbmllbmNlICh0aGUgYWN0dWFsIHR5cGUgaXMgaW4gY29waWxvdGtpdC50eXBlcylcbmV4cG9ydCB0eXBlIHsgQWdlbnRXYXRjaFJlc3VsdCB9IGZyb20gXCIuLi9jb3JlL2NvcGlsb3RraXQudHlwZXNcIjtcblxuLyoqXG4gKiBDb252ZW5pZW5jZSB3cmFwcGVyIGZvciB3YXRjaEFnZW50IHRoYXQgaGFuZGxlcyBpbmplY3Rpb24gY29udGV4dC5cbiAqIFVzZWZ1bCB3aGVuIHlvdSBuZWVkIHRvIGNhbGwgd2F0Y2hBZ2VudCBvdXRzaWRlIG9mIGEgY29uc3RydWN0b3Igb3IgZmllbGQgaW5pdGlhbGl6ZXIuXG4gKlxuICogQHBhcmFtIGluamVjdG9yIC0gVGhlIEFuZ3VsYXIgSW5qZWN0b3IgdG8gdXNlIGZvciBpbmplY3Rpb24gY29udGV4dFxuICogQHBhcmFtIGNvbmZpZyAtIE9wdGlvbmFsIGNvbmZpZ3VyYXRpb24gd2l0aCBhZ2VudElkXG4gKiBAcmV0dXJucyBPYmplY3Qgd2l0aCBhZ2VudCwgbWVzc2FnZXMsIGFuZCBpc1J1bm5pbmcgc2lnbmFscyBwbHVzIG9ic2VydmFibGVzXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGV4cG9ydCBjbGFzcyBNeUNvbXBvbmVudCB7XG4gKiAgIGNvbnN0cnVjdG9yKHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yKSB7fVxuICpcbiAqICAgc3dpdGNoQWdlbnQobmV3QWdlbnRJZDogc3RyaW5nKSB7XG4gKiAgICAgLy8gQ2FuIGNhbGwgb3V0c2lkZSBvZiBjb25zdHJ1Y3RvciB1c2luZyB3YXRjaEFnZW50V2l0aFxuICogICAgIGNvbnN0IHdhdGNoZXIgPSB3YXRjaEFnZW50V2l0aCh0aGlzLmluamVjdG9yLCB7IGFnZW50SWQ6IG5ld0FnZW50SWQgfSk7XG4gKiAgICAgdGhpcy5hZ2VudCA9IHdhdGNoZXIuYWdlbnQ7XG4gKiAgICAgdGhpcy5tZXNzYWdlcyA9IHdhdGNoZXIubWVzc2FnZXM7XG4gKiAgICAgdGhpcy5pc1J1bm5pbmcgPSB3YXRjaGVyLmlzUnVubmluZztcbiAqICAgfVxuICogfVxuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB3YXRjaEFnZW50V2l0aChcbiAgaW5qZWN0b3I6IEluamVjdG9yLFxuICBjb25maWc/OiB7IGFnZW50SWQ/OiBzdHJpbmcgfVxuKTogQWdlbnRXYXRjaFJlc3VsdCB7XG4gIHJldHVybiBydW5JbkluamVjdGlvbkNvbnRleHQoaW5qZWN0b3IsICgpID0+IHdhdGNoQWdlbnQoY29uZmlnKSk7XG59XG5cbi8qKlxuICogU3Vic2NyaWJlcyB0byBhbiBhZ2VudCdzIGV2ZW50cyB3aXRoIGN1c3RvbSBjYWxsYmFja3MuXG4gKiBSZXR1cm5zIGEgY2xlYW51cCBmdW5jdGlvbiB0aGF0IHNob3VsZCBiZSBjYWxsZWQgdG8gdW5zdWJzY3JpYmUuXG4gKlxuICogQHBhcmFtIHNlcnZpY2UgLSBUaGUgQ29waWxvdEtpdFNlcnZpY2UgaW5zdGFuY2VcbiAqIEBwYXJhbSBhZ2VudElkIC0gT3B0aW9uYWwgYWdlbnQgSUQgKGRlZmF1bHRzIHRvIERFRkFVTFRfQUdFTlRfSUQpXG4gKiBAcGFyYW0gY2FsbGJhY2tzIC0gRXZlbnQgY2FsbGJhY2tzXG4gKiBAcmV0dXJucyBDbGVhbnVwIGZ1bmN0aW9uIHRvIHVuc3Vic2NyaWJlXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGV4cG9ydCBjbGFzcyBNeUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAqICAgcHJpdmF0ZSB1bnN1YnNjcmliZT86ICgpID0+IHZvaWQ7XG4gKlxuICogICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNvcGlsb3RraXQ6IENvcGlsb3RLaXRTZXJ2aWNlKSB7fVxuICpcbiAqICAgbmdPbkluaXQoKSB7XG4gKiAgICAgdGhpcy51bnN1YnNjcmliZSA9IHN1YnNjcmliZVRvQWdlbnQodGhpcy5jb3BpbG90a2l0LCAnbXktYWdlbnQnLCB7XG4gKiAgICAgICBvblJ1bkluaXRpYWxpemVkOiAoKSA9PiBjb25zb2xlLmxvZygnUnVuIHN0YXJ0ZWQnKSxcbiAqICAgICAgIG9uUnVuRmluYWxpemVkOiAoKSA9PiBjb25zb2xlLmxvZygnUnVuIGNvbXBsZXRlZCcpLFxuICogICAgICAgb25SdW5GYWlsZWQ6IChlcnJvcikgPT4gY29uc29sZS5lcnJvcignUnVuIGZhaWxlZCcsIGVycm9yKSxcbiAqICAgICB9KTtcbiAqICAgfVxuICpcbiAqICAgbmdPbkRlc3Ryb3koKSB7XG4gKiAgICAgdGhpcy51bnN1YnNjcmliZT8uKCk7XG4gKiAgIH1cbiAqIH1cbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gc3Vic2NyaWJlVG9BZ2VudChcbiAgc2VydmljZTogQ29waWxvdEtpdFNlcnZpY2UsXG4gIGFnZW50SWQ/OiBzdHJpbmcsXG4gIGNhbGxiYWNrcz86IEFnZW50U3Vic2NyaXB0aW9uQ2FsbGJhY2tzXG4pOiAoKSA9PiB2b2lkIHtcbiAgY29uc3QgZWZmZWN0aXZlQWdlbnRJZCA9IGFnZW50SWQgPz8gREVGQVVMVF9BR0VOVF9JRDtcbiAgY29uc3QgYWdlbnQgPSBzZXJ2aWNlLmNvcGlsb3RraXQuZ2V0QWdlbnQoZWZmZWN0aXZlQWdlbnRJZCk7XG5cbiAgaWYgKCFhZ2VudCkge1xuICAgIC8vIFJldHVybiBuby1vcCBjbGVhbnVwIGlmIGFnZW50IGRvZXNuJ3QgZXhpc3RcbiAgICByZXR1cm4gKCkgPT4ge307XG4gIH1cblxuICBjb25zdCBzdWJzY3JpcHRpb24gPSBhZ2VudC5zdWJzY3JpYmUoe1xuICAgIG9uTWVzc2FnZXNDaGFuZ2VkOiBjYWxsYmFja3M/Lm9uTWVzc2FnZXNDaGFuZ2VkLFxuICAgIG9uU3RhdGVDaGFuZ2VkOiBjYWxsYmFja3M/Lm9uU3RhdGVDaGFuZ2VkLFxuICAgIG9uUnVuSW5pdGlhbGl6ZWQ6IGNhbGxiYWNrcz8ub25SdW5Jbml0aWFsaXplZCxcbiAgICBvblJ1bkZpbmFsaXplZDogY2FsbGJhY2tzPy5vblJ1bkZpbmFsaXplZCxcbiAgICBvblJ1bkZhaWxlZDogY2FsbGJhY2tzPy5vblJ1bkZhaWxlZCxcbiAgfSk7XG5cbiAgcmV0dXJuICgpID0+IHN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xufVxuIl19
@@ -1,7 +1,7 @@
1
1
  import * as i0 from '@angular/core';
2
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
- import { CopilotKitCore, ToolCallStatus, completePartialMarkdown } from '@copilotkitnext/core';
4
+ import { CopilotKitCore, CopilotKitCoreRuntimeConnectionStatus, ToolCallStatus, completePartialMarkdown, ProxiedCopilotRuntimeAgent } from '@copilotkitnext/core';
5
5
  export { ToolCallStatus } from '@copilotkitnext/core';
6
6
  import { DEFAULT_AGENT_ID, partialJSONParse, randomUUID } from '@copilotkitnext/shared';
7
7
  import { Overlay, OverlayPositionBuilder, OverlayModule } from '@angular/cdk/overlay';
@@ -108,26 +108,24 @@ class CopilotKitService {
108
108
  this._runtimeStateVersion = signal(0);
109
109
  // Initialize computed signals for processed values
110
110
  this._allTools = computed(() => {
111
- const tools = {};
112
- // Add frontend tools
111
+ const toolMap = new Map();
113
112
  this._frontendTools().forEach((tool) => {
114
- tools[tool.name] = tool;
113
+ toolMap.set(tool.name, tool);
115
114
  });
116
- // Process human-in-the-loop tools
117
115
  this._humanInTheLoop().forEach((tool) => {
118
116
  const frontendTool = {
119
117
  name: tool.name,
120
118
  description: tool.description,
121
119
  parameters: tool.parameters,
122
120
  followUp: tool.followUp,
123
- handler: async (args) => {
121
+ handler: async () => {
124
122
  console.warn(`Human-in-the-loop tool '${tool.name}' called but no interactive handler is set up.`);
125
123
  return undefined;
126
124
  },
127
125
  };
128
- tools[tool.name] = frontendTool;
126
+ toolMap.set(tool.name, frontendTool);
129
127
  });
130
- return tools;
128
+ return Array.from(toolMap.values());
131
129
  });
132
130
  this._allRenderToolCalls = computed(() => {
133
131
  const combined = [...this._renderToolCalls()];
@@ -194,11 +192,11 @@ class CopilotKitService {
194
192
  * Process frontend tools and human-in-the-loop tools
195
193
  */
196
194
  processTools(frontendTools, humanInTheLoop, renderToolCalls) {
197
- const allTools = {};
195
+ const toolMap = new Map();
198
196
  const allRenderToolCalls = [...renderToolCalls];
199
197
  // Add frontend tools
200
198
  frontendTools.forEach((tool) => {
201
- allTools[tool.name] = tool;
199
+ toolMap.set(tool.name, tool);
202
200
  // Add render component if provided
203
201
  if (tool.render) {
204
202
  allRenderToolCalls.push({
@@ -223,7 +221,7 @@ class CopilotKitService {
223
221
  return undefined;
224
222
  },
225
223
  };
226
- allTools[tool.name] = frontendTool;
224
+ toolMap.set(tool.name, frontendTool);
227
225
  // Add the render component
228
226
  if (tool.render) {
229
227
  allRenderToolCalls.push({
@@ -233,7 +231,7 @@ class CopilotKitService {
233
231
  });
234
232
  }
235
233
  });
236
- return { allTools, allRenderToolCalls };
234
+ return { allTools: Array.from(toolMap.values()), allRenderToolCalls };
237
235
  }
238
236
  /**
239
237
  * Setup stability warning effects
@@ -268,7 +266,9 @@ class CopilotKitService {
268
266
  // Sync runtime URL
269
267
  effect(() => {
270
268
  const url = this.runtimeUrl();
271
- untracked(() => this.copilotkit.setRuntimeUrl(url));
269
+ untracked(() => {
270
+ this.copilotkit.setRuntimeUrl(url);
271
+ });
272
272
  });
273
273
  // Sync headers
274
274
  effect(() => {
@@ -288,9 +288,11 @@ class CopilotKitService {
288
288
  // Sync tools - computed from frontend tools and human-in-the-loop
289
289
  effect(() => {
290
290
  const tools = this._allTools();
291
- // Update copilotkit.tools directly since there's no setTools method
292
291
  untracked(() => {
293
- this.copilotkit.tools = tools;
292
+ const setTools = this.copilotkit?.setTools;
293
+ if (typeof setTools === "function") {
294
+ setTools.call(this.copilotkit, tools);
295
+ }
294
296
  });
295
297
  });
296
298
  }
@@ -299,12 +301,7 @@ class CopilotKitService {
299
301
  */
300
302
  setupEventSubscription() {
301
303
  const unsubscribe = this.copilotkit.subscribe({
302
- onRuntimeLoaded: () => {
303
- // Increment version to notify all consumers that runtime state has changed
304
- // This triggers re-evaluation of computed signals that depend on runtime state
305
- this.notifyRuntimeStateChange();
306
- },
307
- onRuntimeLoadError: () => {
304
+ onRuntimeConnectionStatusChanged: () => {
308
305
  // Increment version to notify all consumers that runtime state has changed
309
306
  // This triggers re-evaluation of computed signals that depend on runtime state
310
307
  this.notifyRuntimeStateChange();
@@ -1138,15 +1135,14 @@ function watchAgent(config) {
1138
1135
  subscribeToAgent();
1139
1136
  // Subscribe to CopilotKit changes to detect agent updates
1140
1137
  const coreUnsubscribe = service.copilotkit.subscribe({
1141
- onRuntimeLoaded() {
1142
- // Re-check agent when runtime loads
1143
- currentAgent = updateAgent();
1144
- subscribeToAgent();
1145
- },
1146
- onRuntimeLoadError() {
1147
- // Also re-check agent on runtime load error to ensure consistency
1148
- currentAgent = updateAgent();
1149
- subscribeToAgent();
1138
+ onRuntimeConnectionStatusChanged({ status }) {
1139
+ if (status === CopilotKitCoreRuntimeConnectionStatus.Connected ||
1140
+ status === CopilotKitCoreRuntimeConnectionStatus.Disconnected ||
1141
+ status === CopilotKitCoreRuntimeConnectionStatus.Error) {
1142
+ // Re-check agent when runtime connection state changes
1143
+ currentAgent = updateAgent();
1144
+ subscribeToAgent();
1145
+ }
1150
1146
  },
1151
1147
  });
1152
1148
  // Register cleanup
@@ -2446,9 +2442,12 @@ class CopilotKitAgentDirective {
2446
2442
  subscribeToCore() {
2447
2443
  // Subscribe to CopilotKit changes to detect agent updates
2448
2444
  this.coreUnsubscribe = this.copilotkit.copilotkit.subscribe({
2449
- onRuntimeLoaded: () => {
2450
- // Re-check agent when runtime loads
2451
- this.setupAgent();
2445
+ onRuntimeConnectionStatusChanged: ({ status }) => {
2446
+ if (status === CopilotKitCoreRuntimeConnectionStatus.Connected ||
2447
+ status === CopilotKitCoreRuntimeConnectionStatus.Disconnected) {
2448
+ // Re-check agent when runtime connection changes state
2449
+ this.setupAgent();
2450
+ }
2452
2451
  },
2453
2452
  });
2454
2453
  }
@@ -4567,7 +4566,7 @@ class CopilotChatInputComponent {
4567
4566
  else if (this.audioRecorderRef?.getState() === 'recording') {
4568
4567
  this.audioRecorderRef.stop().catch(console.error);
4569
4568
  }
4570
- });
4569
+ }, { allowSignalWrites: true });
4571
4570
  // Sync with chat configuration
4572
4571
  effect(() => {
4573
4572
  const configValue = this.chatConfig?.inputValue();
@@ -9124,6 +9123,7 @@ class CopilotChatComponent {
9124
9123
  injector;
9125
9124
  agentId;
9126
9125
  threadId;
9126
+ inputComponent;
9127
9127
  constructor(chatConfig, cdr, injector) {
9128
9128
  this.chatConfig = chatConfig;
9129
9129
  this.cdr = cdr;
@@ -9140,7 +9140,7 @@ class CopilotChatComponent {
9140
9140
  a.threadId = this.threadId || this.generatedThreadId;
9141
9141
  if (!this.hasConnectedOnce) {
9142
9142
  this.hasConnectedOnce = true;
9143
- if ('isCopilotKitAgent' in a) {
9143
+ if (a instanceof ProxiedCopilotRuntimeAgent) {
9144
9144
  this.connectToAgent(a);
9145
9145
  }
9146
9146
  else {
@@ -9259,7 +9259,7 @@ class CopilotChatComponent {
9259
9259
  this.hasConnectedOnce = false;
9260
9260
  }
9261
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 });
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: [
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", inputComponent: "inputComponent" }, providers: [
9263
9263
  {
9264
9264
  provide: CopilotChatConfigurationService,
9265
9265
  deps: [
@@ -9274,6 +9274,7 @@ class CopilotChatComponent {
9274
9274
  [autoScroll]="true"
9275
9275
  [messageViewClass]="'w-full'"
9276
9276
  [showCursor]="showCursor()"
9277
+ [inputComponent]="inputComponent"
9277
9278
  >
9278
9279
  </copilot-chat-view>
9279
9280
  `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: CopilotChatViewComponent, selector: "copilot-chat-view", inputs: ["messages", "autoScroll", "showCursor", "messageViewComponent", "messageViewTemplate", "messageViewClass", "scrollViewComponent", "scrollViewTemplate", "scrollViewClass", "scrollToBottomButtonComponent", "scrollToBottomButtonTemplate", "scrollToBottomButtonClass", "inputComponent", "inputTemplate", "inputContainerComponent", "inputContainerTemplate", "inputContainerClass", "featherComponent", "featherTemplate", "featherClass", "disclaimerComponent", "disclaimerTemplate", "disclaimerClass", "disclaimerText"], outputs: ["assistantMessageThumbsUp", "assistantMessageThumbsDown", "assistantMessageReadAloud", "assistantMessageRegenerate", "userMessageCopy", "userMessageEdit"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
@@ -9302,6 +9303,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
9302
9303
  [autoScroll]="true"
9303
9304
  [messageViewClass]="'w-full'"
9304
9305
  [showCursor]="showCursor()"
9306
+ [inputComponent]="inputComponent"
9305
9307
  >
9306
9308
  </copilot-chat-view>
9307
9309
  `,
@@ -9312,6 +9314,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
9312
9314
  type: Input
9313
9315
  }], threadId: [{
9314
9316
  type: Input
9317
+ }], inputComponent: [{
9318
+ type: Input
9315
9319
  }] } });
9316
9320
 
9317
9321
  // Testing utilities are not exported from the main entry point