@hashbrownai/angular
Version:
Angular bindings for Hashbrown AI
1 lines • 131 kB
Source Map (JSON)
{"version":3,"file":"hashbrownai-angular.mjs","sources":["../tmp-esm2022/utils/create-runtime-function.fn.js","../tmp-esm2022/utils/create-runtime.fn.js","../tmp-esm2022/utils/create-tool.fn.js","../tmp-esm2022/utils/create-tool-javascript.fn.js","../tmp-esm2022/utils/expose-component.fn.js","../tmp-esm2022/utils/signals.js","../tmp-esm2022/utils/ui-chat.helpers.js","../tmp-esm2022/components/render-message.component.js","../tmp-esm2022/providers/provide-hashbrown.fn.js","../tmp-esm2022/resources/chat-resource.fn.js","../tmp-esm2022/resources/completion-resource.fn.js","../tmp-esm2022/resources/structured-chat-resource.fn.js","../tmp-esm2022/resources/structured-completion-resource.fn.js","../tmp-esm2022/resources/ui-chat-resource.fn.js","../tmp-esm2022/hashbrownai-angular.js"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { inject, Injector, runInInjectionContext } from '@angular/core';\nimport { ɵcreateRuntimeFunctionImpl, } from '@hashbrownai/core';\nexport function createRuntimeFunction(cfg) {\n const injector = inject(Injector);\n return ɵcreateRuntimeFunctionImpl({\n ...cfg,\n handler: (...args) => {\n return runInInjectionContext(injector, () => cfg.handler(...args));\n },\n });\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLXJ1bnRpbWUtZnVuY3Rpb24uZm4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyL3NyYy91dGlscy9jcmVhdGUtcnVudGltZS1mdW5jdGlvbi5mbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1REFBdUQ7QUFDdkQsT0FBTyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEUsT0FBTyxFQUdMLDBCQUEwQixHQUMzQixNQUFNLG1CQUFtQixDQUFDO0FBbUYzQixNQUFNLFVBQVUscUJBQXFCLENBQ25DLEdBd0JLO0lBRUwsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2xDLE9BQU8sMEJBQTBCLENBQUM7UUFDaEMsR0FBRyxHQUFHO1FBQ04sT0FBTyxFQUFFLENBQUMsR0FBRyxJQUFXLEVBQUUsRUFBRTtZQUMxQixPQUFPLHFCQUFxQixDQUFDLFFBQVEsRUFBRSxHQUFHLEVBQUUsQ0FDekMsR0FBRyxDQUFDLE9BQWUsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUM5QixDQUFDO1FBQ0osQ0FBQztLQUNGLENBQUMsQ0FBQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG5pbXBvcnQgeyBpbmplY3QsIEluamVjdG9yLCBydW5JbkluamVjdGlvbkNvbnRleHQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIFJ1bnRpbWVGdW5jdGlvblJlZixcbiAgcyxcbiAgybVjcmVhdGVSdW50aW1lRnVuY3Rpb25JbXBsLFxufSBmcm9tICdAaGFzaGJyb3duYWkvY29yZSc7XG5cbi8qKlxuICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHdpdGggYW4gaW5wdXQgc2NoZW1hLlxuICpcbiAqIEBwYXJhbSBjZmcgLSBUaGUgY29uZmlndXJhdGlvbiBmb3IgdGhlIGZ1bmN0aW9uLlxuICogQHBhcmFtIGNmZy5uYW1lIC0gVGhlIG5hbWUgb2YgdGhlIGZ1bmN0aW9uLlxuICogQHBhcmFtIGNmZy5kZXNjcmlwdGlvbiAtIFRoZSBkZXNjcmlwdGlvbiBvZiB0aGUgZnVuY3Rpb24uXG4gKiBAcGFyYW0gY2ZnLmFyZ3MgLSBUaGUgaW5wdXQgc2NoZW1hIG9mIHRoZSBmdW5jdGlvbi5cbiAqIEBwYXJhbSBjZmcucmVzdWx0IC0gVGhlIHJlc3VsdCBzY2hlbWEgb2YgdGhlIGZ1bmN0aW9uLlxuICogQHBhcmFtIGNmZy5oYW5kbGVyIC0gVGhlIGhhbmRsZXIgb2YgdGhlIGZ1bmN0aW9uLlxuICogQHJldHVybnMgVGhlIGZ1bmN0aW9uIHJlZmVyZW5jZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVJ1bnRpbWVGdW5jdGlvbjxcbiAgQXJnc1NjaGVtYSBleHRlbmRzIHMuSGFzaGJyb3duVHlwZSxcbiAgUmVzdWx0U2NoZW1hIGV4dGVuZHMgcy5IYXNoYnJvd25UeXBlLFxuPihjZmc6IHtcbiAgbmFtZTogc3RyaW5nO1xuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICBhcmdzOiBBcmdzU2NoZW1hO1xuICByZXN1bHQ6IFJlc3VsdFNjaGVtYTtcbiAgaGFuZGxlcjogKFxuICAgIGlucHV0OiBzLkluZmVyPEFyZ3NTY2hlbWE+LFxuICAgIGFib3J0U2lnbmFsPzogQWJvcnRTaWduYWwsXG4gICkgPT4gcy5JbmZlcjxSZXN1bHRTY2hlbWE+IHwgUHJvbWlzZTxzLkluZmVyPFJlc3VsdFNjaGVtYT4+O1xufSk6IFJ1bnRpbWVGdW5jdGlvblJlZjxzLkluZmVyPEFyZ3NTY2hlbWE+LCBzLkluZmVyPFJlc3VsdFNjaGVtYT4+O1xuXG4vKipcbiAqIENyZWF0ZXMgYSBmdW5jdGlvbiB3aXRob3V0IGFuIGlucHV0IHNjaGVtYS5cbiAqXG4gKiBAcGFyYW0gY2ZnIC0gVGhlIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBmdW5jdGlvbi5cbiAqIEBwYXJhbSBjZmcubmFtZSAtIFRoZSBuYW1lIG9mIHRoZSBmdW5jdGlvbi5cbiAqIEBwYXJhbSBjZmcuZGVzY3JpcHRpb24gLSBUaGUgZGVzY3JpcHRpb24gb2YgdGhlIGZ1bmN0aW9uLlxuICogQHBhcmFtIGNmZy5yZXN1bHQgLSBUaGUgcmVzdWx0IHNjaGVtYSBvZiB0aGUgZnVuY3Rpb24uXG4gKiBAcGFyYW0gY2ZnLmhhbmRsZXIgLSBUaGUgaGFuZGxlciBvZiB0aGUgZnVuY3Rpb24uXG4gKiBAcmV0dXJucyBUaGUgZnVuY3Rpb24gcmVmZXJlbmNlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlUnVudGltZUZ1bmN0aW9uPFxuICBSZXN1bHRTY2hlbWEgZXh0ZW5kcyBzLkhhc2hicm93blR5cGUsXG4+KGNmZzoge1xuICBuYW1lOiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gIHJlc3VsdDogUmVzdWx0U2NoZW1hO1xuICBoYW5kbGVyOiAoXG4gICAgYWJvcnRTaWduYWw/OiBBYm9ydFNpZ25hbCxcbiAgKSA9PiBzLkluZmVyPFJlc3VsdFNjaGVtYT4gfCBQcm9taXNlPHMuSW5mZXI8UmVzdWx0U2NoZW1hPj47XG59KTogUnVudGltZUZ1bmN0aW9uUmVmPG51bGwsIHMuSW5mZXI8UmVzdWx0U2NoZW1hPj47XG5cbi8qKlxuICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHdpdGggYW4gaW5wdXQgc2NoZW1hLlxuICpcbiAqIEBwYXJhbSBjZmcgLSBUaGUgY29uZmlndXJhdGlvbiBmb3IgdGhlIGZ1bmN0aW9uLlxuICogQHBhcmFtIGNmZy5uYW1lIC0gVGhlIG5hbWUgb2YgdGhlIGZ1bmN0aW9uLlxuICogQHBhcmFtIGNmZy5kZXNjcmlwdGlvbiAtIFRoZSBkZXNjcmlwdGlvbiBvZiB0aGUgZnVuY3Rpb24uXG4gKiBAcGFyYW0gY2ZnLmFyZ3MgLSBUaGUgYXJncyBzY2hlbWEgb2YgdGhlIGZ1bmN0aW9uLlxuICogQHBhcmFtIGNmZy5oYW5kbGVyIC0gVGhlIGhhbmRsZXIgb2YgdGhlIGZ1bmN0aW9uLlxuICogQHJldHVybnMgVGhlIGZ1bmN0aW9uIHJlZmVyZW5jZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVJ1bnRpbWVGdW5jdGlvbjxBcmdzU2NoZW1hIGV4dGVuZHMgcy5IYXNoYnJvd25UeXBlPihjZmc6IHtcbiAgbmFtZTogc3RyaW5nO1xuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICBhcmdzOiBBcmdzU2NoZW1hO1xuICBoYW5kbGVyOiAoXG4gICAgYXJnczogcy5JbmZlcjxBcmdzU2NoZW1hPixcbiAgICBhYm9ydFNpZ25hbD86IEFib3J0U2lnbmFsLFxuICApID0+IHZvaWQgfCBQcm9taXNlPHZvaWQ+O1xufSk6IFJ1bnRpbWVGdW5jdGlvblJlZjxzLkluZmVyPEFyZ3NTY2hlbWE+LCB2b2lkPjtcblxuLyoqXG4gKiBDcmVhdGVzIGEgZnVuY3Rpb24gd2l0aG91dCBpbnB1dCBvciBvdXRwdXQgc2NoZW1hLlxuICpcbiAqIEBwYXJhbSBjZmcgLSBUaGUgY29uZmlndXJhdGlvbiBmb3IgdGhlIGZ1bmN0aW9uLlxuICogQHBhcmFtIGNmZy5uYW1lIC0gVGhlIG5hbWUgb2YgdGhlIGZ1bmN0aW9uLlxuICogQHBhcmFtIGNmZy5kZXNjcmlwdGlvbiAtIFRoZSBkZXNjcmlwdGlvbiBvZiB0aGUgZnVuY3Rpb24uXG4gKiBAcGFyYW0gY2ZnLmhhbmRsZXIgLSBUaGUgaGFuZGxlciBvZiB0aGUgZnVuY3Rpb24sIHdoaWNoIHJldHVybnMgdm9pZCBvciBhIHByb21pc2UgdGhlcmVvZi5cbiAqIEByZXR1cm5zIFRoZSBmdW5jdGlvbiByZWZlcmVuY2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVSdW50aW1lRnVuY3Rpb24oY2ZnOiB7XG4gIG5hbWU6IHN0cmluZztcbiAgZGVzY3JpcHRpb246IHN0cmluZztcbiAgaGFuZGxlcjogKGFib3J0U2lnbmFsPzogQWJvcnRTaWduYWwpID0+IHZvaWQgfCBQcm9taXNlPHZvaWQ+O1xufSk6IFJ1bnRpbWVGdW5jdGlvblJlZjxudWxsLCB2b2lkPjtcblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVJ1bnRpbWVGdW5jdGlvbihcbiAgY2ZnOlxuICAgIHwge1xuICAgICAgICBuYW1lOiBzdHJpbmc7XG4gICAgICAgIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gICAgICAgIGFyZ3M6IHMuSGFzaGJyb3duVHlwZTtcbiAgICAgICAgcmVzdWx0OiBzLkhhc2hicm93blR5cGU7XG4gICAgICAgIGhhbmRsZXI6IChhcmdzOiB1bmtub3duLCBhYm9ydD86IEFib3J0U2lnbmFsKSA9PiB1bmtub3duO1xuICAgICAgfVxuICAgIHwge1xuICAgICAgICBuYW1lOiBzdHJpbmc7XG4gICAgICAgIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gICAgICAgIHJlc3VsdDogcy5IYXNoYnJvd25UeXBlO1xuICAgICAgICBoYW5kbGVyOiAoYWJvcnQ/OiBBYm9ydFNpZ25hbCkgPT4gdW5rbm93bjtcbiAgICAgIH1cbiAgICB8IHtcbiAgICAgICAgbmFtZTogc3RyaW5nO1xuICAgICAgICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICAgICAgICBhcmdzOiBzLkhhc2hicm93blR5cGU7XG4gICAgICAgIGhhbmRsZXI6IChhcmdzOiB1bmtub3duLCBhYm9ydD86IEFib3J0U2lnbmFsKSA9PiB1bmtub3duO1xuICAgICAgfVxuICAgIHwge1xuICAgICAgICBuYW1lOiBzdHJpbmc7XG4gICAgICAgIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gICAgICAgIGhhbmRsZXI6IChhYm9ydFNpZ25hbD86IEFib3J0U2lnbmFsKSA9PiB1bmtub3duO1xuICAgICAgfSxcbik6IFJ1bnRpbWVGdW5jdGlvblJlZjxhbnksIGFueT4ge1xuICBjb25zdCBpbmplY3RvciA9IGluamVjdChJbmplY3Rvcik7XG4gIHJldHVybiDJtWNyZWF0ZVJ1bnRpbWVGdW5jdGlvbkltcGwoe1xuICAgIC4uLmNmZyxcbiAgICBoYW5kbGVyOiAoLi4uYXJnczogYW55W10pID0+IHtcbiAgICAgIHJldHVybiBydW5JbkluamVjdGlvbkNvbnRleHQoaW5qZWN0b3IsICgpID0+XG4gICAgICAgIChjZmcuaGFuZGxlciBhcyBhbnkpKC4uLmFyZ3MpLFxuICAgICAgKTtcbiAgICB9LFxuICB9KTtcbn1cbiJdfQ==","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { ɵcreateRuntimeImpl, } from '@hashbrownai/core';\n/**\n * Creates a new runtime.\n *\n * @param options - The options for creating the runtime.\n * @returns A reference to the runtime.\n */\nexport function createRuntime(options) {\n return ɵcreateRuntimeImpl(options);\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLXJ1bnRpbWUuZm4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyL3NyYy91dGlscy9jcmVhdGUtcnVudGltZS5mbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1REFBdUQ7QUFFdkQsT0FBTyxFQUdMLGtCQUFrQixHQUNuQixNQUFNLG1CQUFtQixDQUFDO0FBbUIzQjs7Ozs7R0FLRztBQUNILE1BQU0sVUFBVSxhQUFhLENBQUMsT0FBNkI7SUFDekQsT0FBTyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUNyQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuXG5pbXBvcnQge1xuICBSdW50aW1lRnVuY3Rpb25SZWYsXG4gIFJ1bnRpbWVSZWYsXG4gIMm1Y3JlYXRlUnVudGltZUltcGwsXG59IGZyb20gJ0BoYXNoYnJvd25haS9jb3JlJztcblxuLyoqXG4gKiBPcHRpb25zIGZvciBjcmVhdGluZyBhIHJ1bnRpbWUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ3JlYXRlUnVudGltZU9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIHRpbWVvdXQgZm9yIHRoZSBydW50aW1lLlxuICAgKlxuICAgKiBAZGVmYXVsdCAxMDAwMFxuICAgKi9cbiAgdGltZW91dD86IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIGZ1bmN0aW9ucyB0aGF0IGFyZSBhdmFpbGFibGUgaW4gdGhlIHJ1bnRpbWUuXG4gICAqL1xuICBmdW5jdGlvbnM6IFsuLi5SdW50aW1lRnVuY3Rpb25SZWY8YW55LCBhbnk+W11dO1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYSBuZXcgcnVudGltZS5cbiAqXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBvcHRpb25zIGZvciBjcmVhdGluZyB0aGUgcnVudGltZS5cbiAqIEByZXR1cm5zIEEgcmVmZXJlbmNlIHRvIHRoZSBydW50aW1lLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlUnVudGltZShvcHRpb25zOiBDcmVhdGVSdW50aW1lT3B0aW9ucyk6IFJ1bnRpbWVSZWYge1xuICByZXR1cm4gybVjcmVhdGVSdW50aW1lSW1wbChvcHRpb25zKTtcbn1cbiJdfQ==","import { s } from '@hashbrownai/core';\nimport { inject, Injector, runInInjectionContext, untracked, } from '@angular/core';\nexport function createTool(input) {\n const injector = inject(Injector);\n if ('schema' in input) {\n const { name, description, schema, handler } = input;\n return {\n name,\n description,\n schema,\n handler: (args, abortSignal) => untracked(() => runInInjectionContext(injector, () => handler(args, abortSignal))),\n };\n }\n else {\n const { name, description, handler } = input;\n return {\n name,\n description,\n schema: s.object('Empty Object', {}),\n handler: (_, abortSignal) => untracked(() => runInInjectionContext(injector, () => handler(abortSignal))),\n };\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLXRvb2wuZm4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyL3NyYy91dGlscy9jcmVhdGUtdG9vbC5mbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQVEsQ0FBQyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDNUMsT0FBTyxFQUNMLE1BQU0sRUFDTixRQUFRLEVBQ1IscUJBQXFCLEVBQ3JCLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQThDdkIsTUFBTSxVQUFVLFVBQVUsQ0FDeEIsS0FXSztJQUVMLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUVsQyxJQUFJLFFBQVEsSUFBSSxLQUFLLEVBQUUsQ0FBQztRQUN0QixNQUFNLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsS0FBSyxDQUFDO1FBQ3JELE9BQU87WUFDTCxJQUFJO1lBQ0osV0FBVztZQUNYLE1BQU07WUFDTixPQUFPLEVBQUUsQ0FBQyxJQUFhLEVBQUUsV0FBd0IsRUFBRSxFQUFFLENBQ25ELFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FDYixxQkFBcUIsQ0FBQyxRQUFRLEVBQUUsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUNsRTtTQUNKLENBQUM7SUFDSixDQUFDO1NBQU0sQ0FBQztRQUNOLE1BQU0sRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLE9BQU8sRUFBRSxHQUFHLEtBQUssQ0FBQztRQUM3QyxPQUFPO1lBQ0wsSUFBSTtZQUNKLFdBQVc7WUFDWCxNQUFNLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxjQUFjLEVBQUUsRUFBRSxDQUFDO1lBQ3BDLE9BQU8sRUFBRSxDQUFDLENBQU8sRUFBRSxXQUF3QixFQUFFLEVBQUUsQ0FDN0MsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUNiLHFCQUFxQixDQUFDLFFBQVEsRUFBRSxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FDNUQ7U0FDSixDQUFDO0lBQ0osQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGF0LCBzIH0gZnJvbSAnQGhhc2hicm93bmFpL2NvcmUnO1xuaW1wb3J0IHtcbiAgaW5qZWN0LFxuICBJbmplY3RvcixcbiAgcnVuSW5JbmplY3Rpb25Db250ZXh0LFxuICB1bnRyYWNrZWQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vKipcbiAqIENyZWF0ZXMgYSB0b29sIHdpdGggYSBzY2hlbWEuXG4gKlxuICogQHBhcmFtIGlucHV0IC0gVGhlIGlucHV0IGZvciB0aGUgdG9vbC5cbiAqIEBwYXJhbSBpbnB1dC5uYW1lIC0gVGhlIG5hbWUgb2YgdGhlIHRvb2wuXG4gKiBAcGFyYW0gaW5wdXQuZGVzY3JpcHRpb24gLSBUaGUgZGVzY3JpcHRpb24gb2YgdGhlIHRvb2wuXG4gKiBAcGFyYW0gaW5wdXQuc2NoZW1hIC0gVGhlIHNjaGVtYSBvZiB0aGUgdG9vbC5cbiAqIEBwYXJhbSBpbnB1dC5oYW5kbGVyIC0gVGhlIGhhbmRsZXIgb2YgdGhlIHRvb2wuXG4gKiBAcGFyYW0gTmFtZSAtIFRoZSBuYW1lIG9mIHRoZSB0b29sLlxuICogQHBhcmFtIFNjaGVtYSAtIFRoZSBzY2hlbWEgb2YgdGhlIHRvb2wuXG4gKiBAcGFyYW0gUmVzdWx0IC0gVGhlIHJlc3VsdCBvZiB0aGUgdG9vbC5cbiAqIEByZXR1cm5zIFRoZSB0b29sLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlVG9vbDxcbiAgY29uc3QgTmFtZSBleHRlbmRzIHN0cmluZyxcbiAgU2NoZW1hIGV4dGVuZHMgcy5IYXNoYnJvd25UeXBlLFxuICBSZXN1bHQsXG4+KGlucHV0OiB7XG4gIG5hbWU6IE5hbWU7XG4gIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gIHNjaGVtYTogU2NoZW1hO1xuICBoYW5kbGVyOiAoXG4gICAgaW5wdXQ6IHMuSW5mZXI8U2NoZW1hPixcbiAgICBhYm9ydFNpZ25hbDogQWJvcnRTaWduYWwsXG4gICkgPT4gUHJvbWlzZTxSZXN1bHQ+O1xufSk6IENoYXQuVG9vbDxOYW1lLCBzLkluZmVyPFNjaGVtYT4sIFJlc3VsdD47XG5cbi8qKlxuICogQ3JlYXRlcyBhIHRvb2wgd2l0aG91dCBhIHNjaGVtYS5cbiAqXG4gKiBAcGFyYW0gaW5wdXQgLSBUaGUgaW5wdXQgZm9yIHRoZSB0b29sLlxuICogQHBhcmFtIGlucHV0Lm5hbWUgLSBUaGUgbmFtZSBvZiB0aGUgdG9vbC5cbiAqIEBwYXJhbSBpbnB1dC5kZXNjcmlwdGlvbiAtIFRoZSBkZXNjcmlwdGlvbiBvZiB0aGUgdG9vbC5cbiAqIEBwYXJhbSBpbnB1dC5oYW5kbGVyIC0gVGhlIGhhbmRsZXIgb2YgdGhlIHRvb2wuXG4gKiBAcGFyYW0gTmFtZSAtIFRoZSBuYW1lIG9mIHRoZSB0b29sLlxuICogQHBhcmFtIFJlc3VsdCAtIFRoZSByZXN1bHQgb2YgdGhlIHRvb2wuXG4gKiBAcmV0dXJucyBUaGUgdG9vbC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVRvb2w8Y29uc3QgTmFtZSBleHRlbmRzIHN0cmluZywgUmVzdWx0PihpbnB1dDoge1xuICBuYW1lOiBOYW1lO1xuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICBoYW5kbGVyOiAoYWJvcnRTaWduYWw6IEFib3J0U2lnbmFsKSA9PiBQcm9taXNlPFJlc3VsdD47XG59KTogQ2hhdC5Ub29sPE5hbWUsIHZvaWQsIFJlc3VsdD47XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVUb29sKFxuICBpbnB1dDpcbiAgICB8IHtcbiAgICAgICAgbmFtZTogc3RyaW5nO1xuICAgICAgICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICAgICAgICBzY2hlbWE6IHMuSGFzaGJyb3duVHlwZTtcbiAgICAgICAgaGFuZGxlcjogKGE6IHVua25vd24sIHM6IEFib3J0U2lnbmFsKSA9PiBQcm9taXNlPHVua25vd24+O1xuICAgICAgfVxuICAgIHwge1xuICAgICAgICBuYW1lOiBzdHJpbmc7XG4gICAgICAgIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gICAgICAgIGhhbmRsZXI6IChzOiBBYm9ydFNpZ25hbCkgPT4gUHJvbWlzZTx1bmtub3duPjtcbiAgICAgIH0sXG4pOiB1bmtub3duIHtcbiAgY29uc3QgaW5qZWN0b3IgPSBpbmplY3QoSW5qZWN0b3IpO1xuXG4gIGlmICgnc2NoZW1hJyBpbiBpbnB1dCkge1xuICAgIGNvbnN0IHsgbmFtZSwgZGVzY3JpcHRpb24sIHNjaGVtYSwgaGFuZGxlciB9ID0gaW5wdXQ7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5hbWUsXG4gICAgICBkZXNjcmlwdGlvbixcbiAgICAgIHNjaGVtYSxcbiAgICAgIGhhbmRsZXI6IChhcmdzOiB1bmtub3duLCBhYm9ydFNpZ25hbDogQWJvcnRTaWduYWwpID0+XG4gICAgICAgIHVudHJhY2tlZCgoKSA9PlxuICAgICAgICAgIHJ1bkluSW5qZWN0aW9uQ29udGV4dChpbmplY3RvciwgKCkgPT4gaGFuZGxlcihhcmdzLCBhYm9ydFNpZ25hbCkpLFxuICAgICAgICApLFxuICAgIH07XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgeyBuYW1lLCBkZXNjcmlwdGlvbiwgaGFuZGxlciB9ID0gaW5wdXQ7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5hbWUsXG4gICAgICBkZXNjcmlwdGlvbixcbiAgICAgIHNjaGVtYTogcy5vYmplY3QoJ0VtcHR5IE9iamVjdCcsIHt9KSxcbiAgICAgIGhhbmRsZXI6IChfOiB2b2lkLCBhYm9ydFNpZ25hbDogQWJvcnRTaWduYWwpID0+XG4gICAgICAgIHVudHJhY2tlZCgoKSA9PlxuICAgICAgICAgIHJ1bkluSW5qZWN0aW9uQ29udGV4dChpbmplY3RvciwgKCkgPT4gaGFuZGxlcihhYm9ydFNpZ25hbCkpLFxuICAgICAgICApLFxuICAgIH07XG4gIH1cbn1cbiJdfQ==","import { s } from '@hashbrownai/core';\nimport { createTool } from './create-tool.fn';\n/**\n * Creates a tool that allows the LLM to run JavaScript code. It is run\n * in a stateful JavaScript environment, with no access to the internet, the DOM,\n * or any function that you have not explicitly defined.\n *\n * @param options - The options for creating the tool.\n * @returns The tool.\n */\nexport function createToolJavaScript({ runtime }) {\n return createTool({\n name: 'javascript',\n description: [\n 'Whenever you send a message containing JavaScript code to javascript, it will be',\n 'executed in a stateful JavaScript environment. javascript will respond with the output',\n 'of the execution or time out after ${runtime.timeout / 1000} seconds. Internet access',\n 'for this session is disabled. Do not make external web requests or API calls as they',\n 'will fail.',\n '',\n 'Important: Prefer calling javascript once with a large amount of code, rather than calling it',\n 'multiple times with smaller amounts of code.',\n '',\n 'The following functions are available to you:',\n runtime.describe(),\n ].join('\\n'),\n schema: s.streaming.object('The result', {\n code: s.streaming.string('The JavaScript code to run'),\n }),\n handler: async ({ code }, abortSignal) => {\n return runtime.run(code, abortSignal);\n },\n });\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLXRvb2wtamF2YXNjcmlwdC5mbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXIvc3JjL3V0aWxzL2NyZWF0ZS10b29sLWphdmFzY3JpcHQuZm4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFjLENBQUMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQVk5Qzs7Ozs7OztHQU9HO0FBQ0gsTUFBTSxVQUFVLG9CQUFvQixDQUFDLEVBQUUsT0FBTyxFQUErQjtJQUMzRSxPQUFPLFVBQVUsQ0FBQztRQUNoQixJQUFJLEVBQUUsWUFBWTtRQUNsQixXQUFXLEVBQUU7WUFDWCxrRkFBa0Y7WUFDbEYsd0ZBQXdGO1lBQ3hGLHVGQUF1RjtZQUN2RixzRkFBc0Y7WUFDdEYsWUFBWTtZQUNaLEVBQUU7WUFDRiwrRkFBK0Y7WUFDL0YsOENBQThDO1lBQzlDLEVBQUU7WUFDRiwrQ0FBK0M7WUFDL0MsT0FBTyxDQUFDLFFBQVEsRUFBRTtTQUNuQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDWixNQUFNLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsWUFBWSxFQUFFO1lBQ3ZDLElBQUksRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyw0QkFBNEIsQ0FBQztTQUN2RCxDQUFDO1FBQ0YsT0FBTyxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxFQUFFLFdBQVcsRUFBRSxFQUFFO1lBQ3ZDLE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDeEMsQ0FBQztLQUNGLENBQUMsQ0FBQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSdW50aW1lUmVmLCBzIH0gZnJvbSAnQGhhc2hicm93bmFpL2NvcmUnO1xuaW1wb3J0IHsgY3JlYXRlVG9vbCB9IGZyb20gJy4vY3JlYXRlLXRvb2wuZm4nO1xuXG4vKipcbiAqIE9wdGlvbnMgZm9yIGNyZWF0aW5nIGEgdG9vbCB0aGF0IGNhbiBydW4gSmF2YVNjcmlwdCBjb2RlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENyZWF0ZVRvb2xKYXZhU2NyaXB0T3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgcnVudGltZSB0byB1c2UgZm9yIHRoZSBKYXZhU2NyaXB0IGNvZGUsIGNyZWF0ZWQgd2l0aCBgZGVmaW5lQXN5bmNSdW50aW1lYC5cbiAgICovXG4gIHJ1bnRpbWU6IFJ1bnRpbWVSZWY7XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIHRvb2wgdGhhdCBhbGxvd3MgdGhlIExMTSB0byBydW4gSmF2YVNjcmlwdCBjb2RlLiBJdCBpcyBydW5cbiAqIGluIGEgc3RhdGVmdWwgSmF2YVNjcmlwdCBlbnZpcm9ubWVudCwgd2l0aCBubyBhY2Nlc3MgdG8gdGhlIGludGVybmV0LCB0aGUgRE9NLFxuICogb3IgYW55IGZ1bmN0aW9uIHRoYXQgeW91IGhhdmUgbm90IGV4cGxpY2l0bHkgZGVmaW5lZC5cbiAqXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBvcHRpb25zIGZvciBjcmVhdGluZyB0aGUgdG9vbC5cbiAqIEByZXR1cm5zIFRoZSB0b29sLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlVG9vbEphdmFTY3JpcHQoeyBydW50aW1lIH06IENyZWF0ZVRvb2xKYXZhU2NyaXB0T3B0aW9ucykge1xuICByZXR1cm4gY3JlYXRlVG9vbCh7XG4gICAgbmFtZTogJ2phdmFzY3JpcHQnLFxuICAgIGRlc2NyaXB0aW9uOiBbXG4gICAgICAnV2hlbmV2ZXIgeW91IHNlbmQgYSBtZXNzYWdlIGNvbnRhaW5pbmcgSmF2YVNjcmlwdCBjb2RlIHRvIGphdmFzY3JpcHQsIGl0IHdpbGwgYmUnLFxuICAgICAgJ2V4ZWN1dGVkIGluIGEgc3RhdGVmdWwgSmF2YVNjcmlwdCBlbnZpcm9ubWVudC4gamF2YXNjcmlwdCB3aWxsIHJlc3BvbmQgd2l0aCB0aGUgb3V0cHV0JyxcbiAgICAgICdvZiB0aGUgZXhlY3V0aW9uIG9yIHRpbWUgb3V0IGFmdGVyICR7cnVudGltZS50aW1lb3V0IC8gMTAwMH0gc2Vjb25kcy4gSW50ZXJuZXQgYWNjZXNzJyxcbiAgICAgICdmb3IgdGhpcyBzZXNzaW9uIGlzIGRpc2FibGVkLiBEbyBub3QgbWFrZSBleHRlcm5hbCB3ZWIgcmVxdWVzdHMgb3IgQVBJIGNhbGxzIGFzIHRoZXknLFxuICAgICAgJ3dpbGwgZmFpbC4nLFxuICAgICAgJycsXG4gICAgICAnSW1wb3J0YW50OiBQcmVmZXIgY2FsbGluZyBqYXZhc2NyaXB0IG9uY2Ugd2l0aCBhIGxhcmdlIGFtb3VudCBvZiBjb2RlLCByYXRoZXIgdGhhbiBjYWxsaW5nIGl0JyxcbiAgICAgICdtdWx0aXBsZSB0aW1lcyB3aXRoIHNtYWxsZXIgYW1vdW50cyBvZiBjb2RlLicsXG4gICAgICAnJyxcbiAgICAgICdUaGUgZm9sbG93aW5nIGZ1bmN0aW9ucyBhcmUgYXZhaWxhYmxlIHRvIHlvdTonLFxuICAgICAgcnVudGltZS5kZXNjcmliZSgpLFxuICAgIF0uam9pbignXFxuJyksXG4gICAgc2NoZW1hOiBzLnN0cmVhbWluZy5vYmplY3QoJ1RoZSByZXN1bHQnLCB7XG4gICAgICBjb2RlOiBzLnN0cmVhbWluZy5zdHJpbmcoJ1RoZSBKYXZhU2NyaXB0IGNvZGUgdG8gcnVuJyksXG4gICAgfSksXG4gICAgaGFuZGxlcjogYXN5bmMgKHsgY29kZSB9LCBhYm9ydFNpZ25hbCkgPT4ge1xuICAgICAgcmV0dXJuIHJ1bnRpbWUucnVuKGNvZGUsIGFib3J0U2lnbmFsKTtcbiAgICB9LFxuICB9KTtcbn1cbiJdfQ==","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { reflectComponentType } from '@angular/core';\n/**\n * Exposes a component by combining it with additional configuration details.\n *\n * @template T - The type of the Angular component.\n * @param {T} component - The Angular component to be exposed.\n * @param {Prettify<Omit<ExposedComponent<T>, 'component' | 'name'>>} config - The configuration object for the component, excluding the component itself.\n * @returns {ExposedComponent<T>} - An object representing the exposed component, including the component and its configuration.\n */\nexport function exposeComponent(component, config) {\n const reflected = reflectComponentType(component);\n if (!reflected?.selector) {\n throw new Error(`Could not reflect component: ${component}`);\n }\n const { input, ...rest } = config;\n return {\n component,\n ...rest,\n props: input,\n name: reflected?.selector,\n };\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwb3NlLWNvbXBvbmVudC5mbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXIvc3JjL3V0aWxzL2V4cG9zZS1jb21wb25lbnQuZm4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBQ3ZELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQXVCckQ7Ozs7Ozs7R0FPRztBQUNILE1BQU0sVUFBVSxlQUFlLENBQzdCLFNBQVksRUFDWixNQUlDO0lBRUQsTUFBTSxTQUFTLEdBQUcsb0JBQW9CLENBQUMsU0FBUyxDQUFDLENBQUM7SUFFbEQsSUFBSSxDQUFDLFNBQVMsRUFBRSxRQUFRLEVBQUUsQ0FBQztRQUN6QixNQUFNLElBQUksS0FBSyxDQUFDLGdDQUFnQyxTQUFTLEVBQUUsQ0FBQyxDQUFDO0lBQy9ELENBQUM7SUFFRCxNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsSUFBSSxFQUFFLEdBQUcsTUFBTSxDQUFDO0lBRWxDLE9BQU87UUFDTCxTQUFTO1FBQ1QsR0FBRyxJQUFJO1FBQ1AsS0FBSyxFQUFFLEtBQUs7UUFDWixJQUFJLEVBQUUsU0FBUyxFQUFFLFFBQVE7S0FDMUIsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG5pbXBvcnQgeyByZWZsZWN0Q29tcG9uZW50VHlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgcywgybV0eXBlcyB9IGZyb20gJ0BoYXNoYnJvd25haS9jb3JlJztcblxudHlwZSBBbmd1bGFyU2lnbmFsTGlrZTxUPiA9ICgpID0+IFQ7XG5cbmV4cG9ydCB0eXBlIENvbXBvbmVudFByb3BTY2hlbWE8VD4gPSDJtXR5cGVzLlByZXR0aWZ5PFxuICBUIGV4dGVuZHMgeyBuZXcgKC4uLmFyZ3M6IGFueVtdKTogaW5mZXIgUCB9XG4gICAgPyB7XG4gICAgICAgIFtLIGluIGtleW9mIFBdPzogUFtLXSBleHRlbmRzIEFuZ3VsYXJTaWduYWxMaWtlPGluZmVyIFU+XG4gICAgICAgICAgPyBzLlNjaGVtYTxVPlxuICAgICAgICAgIDogcy5TY2hlbWE8UFtLXT47XG4gICAgICB9XG4gICAgOiBuZXZlclxuPjtcblxuZXhwb3J0IGludGVyZmFjZSBFeHBvc2VkQ29tcG9uZW50PFQgZXh0ZW5kcyB7IG5ldyAoLi4uYXJnczogYW55W10pOiBhbnkgfT4ge1xuICBjb21wb25lbnQ6IFQ7XG4gIG5hbWU6IHN0cmluZztcbiAgZGVzY3JpcHRpb246IHN0cmluZztcbiAgY2hpbGRyZW4/OiAnYW55JyB8IEV4cG9zZWRDb21wb25lbnQ8YW55PltdIHwgZmFsc2U7XG4gIHByb3BzPzogQ29tcG9uZW50UHJvcFNjaGVtYTxUPjtcbn1cblxuLyoqXG4gKiBFeHBvc2VzIGEgY29tcG9uZW50IGJ5IGNvbWJpbmluZyBpdCB3aXRoIGFkZGl0aW9uYWwgY29uZmlndXJhdGlvbiBkZXRhaWxzLlxuICpcbiAqIEB0ZW1wbGF0ZSBUIC0gVGhlIHR5cGUgb2YgdGhlIEFuZ3VsYXIgY29tcG9uZW50LlxuICogQHBhcmFtIHtUfSBjb21wb25lbnQgLSBUaGUgQW5ndWxhciBjb21wb25lbnQgdG8gYmUgZXhwb3NlZC5cbiAqIEBwYXJhbSB7UHJldHRpZnk8T21pdDxFeHBvc2VkQ29tcG9uZW50PFQ+LCAnY29tcG9uZW50JyB8ICduYW1lJz4+fSBjb25maWcgLSBUaGUgY29uZmlndXJhdGlvbiBvYmplY3QgZm9yIHRoZSBjb21wb25lbnQsIGV4Y2x1ZGluZyB0aGUgY29tcG9uZW50IGl0c2VsZi5cbiAqIEByZXR1cm5zIHtFeHBvc2VkQ29tcG9uZW50PFQ+fSAtIEFuIG9iamVjdCByZXByZXNlbnRpbmcgdGhlIGV4cG9zZWQgY29tcG9uZW50LCBpbmNsdWRpbmcgdGhlIGNvbXBvbmVudCBhbmQgaXRzIGNvbmZpZ3VyYXRpb24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBleHBvc2VDb21wb25lbnQ8VCBleHRlbmRzIHsgbmV3ICguLi5hcmdzOiBhbnlbXSk6IGFueSB9PihcbiAgY29tcG9uZW50OiBULFxuICBjb25maWc6IMm1dHlwZXMuUHJldHRpZnk8XG4gICAgT21pdDxFeHBvc2VkQ29tcG9uZW50PFQ+LCAnY29tcG9uZW50JyB8ICduYW1lJyB8ICdwcm9wcyc+ICYge1xuICAgICAgaW5wdXQ/OiBDb21wb25lbnRQcm9wU2NoZW1hPFQ+O1xuICAgIH1cbiAgPixcbik6IEV4cG9zZWRDb21wb25lbnQ8VD4ge1xuICBjb25zdCByZWZsZWN0ZWQgPSByZWZsZWN0Q29tcG9uZW50VHlwZShjb21wb25lbnQpO1xuXG4gIGlmICghcmVmbGVjdGVkPy5zZWxlY3Rvcikge1xuICAgIHRocm93IG5ldyBFcnJvcihgQ291bGQgbm90IHJlZmxlY3QgY29tcG9uZW50OiAke2NvbXBvbmVudH1gKTtcbiAgfVxuXG4gIGNvbnN0IHsgaW5wdXQsIC4uLnJlc3QgfSA9IGNvbmZpZztcblxuICByZXR1cm4ge1xuICAgIGNvbXBvbmVudCxcbiAgICAuLi5yZXN0LFxuICAgIHByb3BzOiBpbnB1dCxcbiAgICBuYW1lOiByZWZsZWN0ZWQ/LnNlbGVjdG9yLFxuICB9O1xufVxuIl19","import { DestroyRef, inject, signal, } from '@angular/core';\nexport function readSignalLike(signalLike) {\n if (typeof signalLike === 'function') {\n return signalLike();\n }\n return signalLike;\n}\nexport function toNgSignal(source, debugName) {\n const destroyRef = inject(DestroyRef);\n const _signal = signal(source(), {\n debugName,\n });\n const teardown = source.subscribe((value) => {\n _signal.set(value);\n });\n destroyRef.onDestroy(() => {\n teardown();\n });\n return _signal.asReadonly();\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbmFscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXIvc3JjL3V0aWxzL3NpZ25hbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFVBQVUsRUFDVixNQUFNLEVBRU4sTUFBTSxHQUVQLE1BQU0sZUFBZSxDQUFDO0FBR3ZCLE1BQU0sVUFBVSxjQUFjLENBQzVCLFVBQXlCO0lBRXpCLElBQUksT0FBTyxVQUFVLEtBQUssVUFBVSxFQUFFLENBQUM7UUFDckMsT0FBTyxVQUFVLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRUQsT0FBTyxVQUFVLENBQUM7QUFDcEIsQ0FBQztBQVNELE1BQU0sVUFBVSxVQUFVLENBQ3hCLE1BQTBCLEVBQzFCLFNBQWtCO0lBRWxCLE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUN0QyxNQUFNLE9BQU8sR0FBc0IsTUFBTSxDQUFDLE1BQU0sRUFBRSxFQUFFO1FBQ2xELFNBQVM7S0FDVixDQUFDLENBQUM7SUFFSCxNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7UUFDMUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNyQixDQUFDLENBQUMsQ0FBQztJQUVILFVBQVUsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1FBQ3hCLFFBQVEsRUFBRSxDQUFDO0lBQ2IsQ0FBQyxDQUFDLENBQUM7SUFFSCxPQUFPLE9BQU8sQ0FBQyxVQUFVLEVBQUUsQ0FBQztBQUM5QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgRGVzdHJveVJlZixcbiAgaW5qZWN0LFxuICBTaWduYWwsXG4gIHNpZ25hbCxcbiAgV3JpdGFibGVTaWduYWwsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU2lnbmFsTGlrZSB9IGZyb20gJy4vdHlwZXMnO1xuXG5leHBvcnQgZnVuY3Rpb24gcmVhZFNpZ25hbExpa2U8VCBleHRlbmRzIG9iamVjdCB8IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4+KFxuICBzaWduYWxMaWtlOiBTaWduYWxMaWtlPFQ+LFxuKTogVCB7XG4gIGlmICh0eXBlb2Ygc2lnbmFsTGlrZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybiBzaWduYWxMaWtlKCk7XG4gIH1cblxuICByZXR1cm4gc2lnbmFsTGlrZTtcbn1cblxudHlwZSBUZWFyZG93bkZuID0gKCkgPT4gdm9pZDtcblxudHlwZSBIYXNoYnJvd25TaWduYWw8VD4gPSB7XG4gICgpOiBUO1xuICBzdWJzY3JpYmUob25DaGFuZ2U6IChuZXdWYWx1ZTogVCkgPT4gdm9pZCk6IFRlYXJkb3duRm47XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gdG9OZ1NpZ25hbDxUPihcbiAgc291cmNlOiBIYXNoYnJvd25TaWduYWw8VD4sXG4gIGRlYnVnTmFtZT86IHN0cmluZyxcbik6IFNpZ25hbDxUPiB7XG4gIGNvbnN0IGRlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XG4gIGNvbnN0IF9zaWduYWw6IFdyaXRhYmxlU2lnbmFsPFQ+ID0gc2lnbmFsKHNvdXJjZSgpLCB7XG4gICAgZGVidWdOYW1lLFxuICB9KTtcblxuICBjb25zdCB0ZWFyZG93biA9IHNvdXJjZS5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XG4gICAgX3NpZ25hbC5zZXQodmFsdWUpO1xuICB9KTtcblxuICBkZXN0cm95UmVmLm9uRGVzdHJveSgoKSA9PiB7XG4gICAgdGVhcmRvd24oKTtcbiAgfSk7XG5cbiAgcmV0dXJuIF9zaWduYWwuYXNSZWFkb25seSgpO1xufVxuIl19","export const TAG_NAME_REGISTRY = Symbol('ɵtagNameRegistry');\nexport const getTagNameRegistry = (message) => {\n if (TAG_NAME_REGISTRY in message) {\n return message[TAG_NAME_REGISTRY];\n }\n return undefined;\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWktY2hhdC5oZWxwZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYW5ndWxhci9zcmMvdXRpbHMvdWktY2hhdC5oZWxwZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUlBLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0FBYTVELE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLENBQ2hDLE9BQWlELEVBQ3BCLEVBQUU7SUFDL0IsSUFBSSxpQkFBaUIsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUNqQyxPQUFPLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBb0IsQ0FBQztJQUN2RCxDQUFDO0lBRUQsT0FBTyxTQUFTLENBQUM7QUFDbkIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuaW1wb3J0IHsgVHlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ2hhdCwgcyB9IGZyb20gJ0BoYXNoYnJvd25haS9jb3JlJztcblxuZXhwb3J0IGNvbnN0IFRBR19OQU1FX1JFR0lTVFJZID0gU3ltYm9sKCfJtXRhZ05hbWVSZWdpc3RyeScpO1xuXG5leHBvcnQgdHlwZSBUYWdOYW1lUmVnaXN0cnkgPSB7XG4gIFt0YWdOYW1lOiBzdHJpbmddOiB7XG4gICAgcHJvcHM6IFJlY29yZDxzdHJpbmcsIHMuSGFzaGJyb3duVHlwZT47XG4gICAgY29tcG9uZW50OiBUeXBlPG9iamVjdD47XG4gIH07XG59O1xuXG5leHBvcnQgdHlwZSBSZW5kZXJhYmxlTWVzc2FnZSA9IHtcbiAgW1RBR19OQU1FX1JFR0lTVFJZXTogVGFnTmFtZVJlZ2lzdHJ5O1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFRhZ05hbWVSZWdpc3RyeSA9IChcbiAgbWVzc2FnZTogQ2hhdC5NZXNzYWdlPFVpQ2hhdFNjaGVtYSwgQ2hhdC5BbnlUb29sPixcbik6IFRhZ05hbWVSZWdpc3RyeSB8IHVuZGVmaW5lZCA9PiB7XG4gIGlmIChUQUdfTkFNRV9SRUdJU1RSWSBpbiBtZXNzYWdlKSB7XG4gICAgcmV0dXJuIG1lc3NhZ2VbVEFHX05BTUVfUkVHSVNUUlldIGFzIFRhZ05hbWVSZWdpc3RyeTtcbiAgfVxuXG4gIHJldHVybiB1bmRlZmluZWQ7XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIFVpQ2hhdFNjaGVtYUNvbXBvbmVudCB7XG4gICR0YWdOYW1lOiBzdHJpbmc7XG4gICRwcm9wczogUmVjb3JkPHN0cmluZywgYW55PjtcbiAgJGNoaWxkcmVuOiBVaUNoYXRTY2hlbWFDb21wb25lbnRbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBVaUNoYXRTY2hlbWEge1xuICB1aTogVWlDaGF0U2NoZW1hQ29tcG9uZW50W107XG59XG5cbmV4cG9ydCB0eXBlIFVpQXNzaXN0YW50TWVzc2FnZTxUb29scyBleHRlbmRzIENoYXQuQW55VG9vbCA9IENoYXQuQW55VG9vbD4gPVxuICBDaGF0LkFzc2lzdGFudE1lc3NhZ2U8VWlDaGF0U2NoZW1hLCBUb29scz4gJiB7XG4gICAgW1RBR19OQU1FX1JFR0lTVFJZXTogVGFnTmFtZVJlZ2lzdHJ5O1xuICB9O1xuXG5leHBvcnQgdHlwZSBVaVVzZXJNZXNzYWdlID0gQ2hhdC5Vc2VyTWVzc2FnZTtcbmV4cG9ydCB0eXBlIFVpRXJyb3JNZXNzYWdlID0gQ2hhdC5FcnJvck1lc3NhZ2U7XG5cbmV4cG9ydCB0eXBlIFVpQ2hhdE1lc3NhZ2U8VG9vbHMgZXh0ZW5kcyBDaGF0LkFueVRvb2wgPSBDaGF0LkFueVRvb2w+ID1cbiAgfCBVaUFzc2lzdGFudE1lc3NhZ2U8VG9vbHM+XG4gIHwgVWlVc2VyTWVzc2FnZVxuICB8IFVpRXJyb3JNZXNzYWdlO1xuIl19","/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/no-non-null-assertion */\n/* eslint-disable @angular-eslint/component-selector */\nimport { ApplicationRef, Component, computed, inject, input, ViewContainerRef, } from '@angular/core';\nimport { NgComponentOutlet, NgTemplateOutlet } from '@angular/common';\nimport { getTagNameRegistry } from '../utils';\nimport * as i0 from \"@angular/core\";\n/**\n * Renders messages generated by the assistant from uiChatResource.\n *\n * @example\n *\n * ```html\n * <hb-render-message [message]=\"message\" />\n * ```\n */\nexport class RenderMessageComponent {\n message = input.required();\n /**\n * @internal\n */\n appRef = inject(ApplicationRef);\n /**\n * @internal\n */\n content = computed(() => this.message().content?.ui ?? []);\n /**\n * @internal\n */\n tagNameRegistry = computed(() => getTagNameRegistry(this.message()));\n /**\n * @internal\n */\n viewContainerRef = inject(ViewContainerRef);\n /**\n * @internal\n */\n rootNodesWeakMap = new WeakMap();\n /**\n * @internal\n */\n embeddedViewsWeakMap = new WeakMap();\n /**\n * @internal\n */\n getTagComponent(tagName) {\n return this.tagNameRegistry()?.[tagName]?.component ?? null;\n }\n /**\n * @internal\n */\n getEmbeddedView(tpl) {\n if (this.embeddedViewsWeakMap.has(tpl)) {\n return this.embeddedViewsWeakMap.get(tpl);\n }\n const view = this.viewContainerRef.createEmbeddedView(tpl);\n this.embeddedViewsWeakMap.set(tpl, view);\n return view;\n }\n /**\n * @internal\n */\n getRootNodes(tpl) {\n if (this.rootNodesWeakMap.has(tpl)) {\n return this.rootNodesWeakMap.get(tpl);\n }\n const view = this.getEmbeddedView(tpl);\n const nodes = [view.rootNodes];\n this.rootNodesWeakMap.set(tpl, nodes);\n return nodes;\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: RenderMessageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.0.5\", type: RenderMessageComponent, isStandalone: true, selector: \"hb-render-message\", inputs: { message: { classPropertyName: \"message\", publicName: \"message\", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: `\n <ng-template #nodeTemplateRef let-node=\"node\">\n <ng-template #childrenTemplateRef>\n @for (child of node.$children; track $index) {\n <ng-container\n *ngTemplateOutlet=\"nodeTemplateRef; context: { node: child }\"\n />\n }\n </ng-template>\n\n @if (node) {\n <ng-container\n *ngComponentOutlet=\"\n getTagComponent(node.$tagName);\n inputs: node.$props;\n content: getRootNodes(childrenTemplateRef)\n \"\n ></ng-container>\n }\n </ng-template>\n\n @if (content()) {\n @for (node of content(); track $index) {\n <ng-template\n [ngTemplateOutlet]=\"nodeTemplateRef\"\n [ngTemplateOutletContext]=\"node\"\n >\n </ng-template>\n <ng-container\n *ngTemplateOutlet=\"nodeTemplateRef; context: { node: node }\"\n />\n }\n }\n `, isInline: true, dependencies: [{ kind: \"directive\", type: NgComponentOutlet, selector: \"[ngComponentOutlet]\", inputs: [\"ngComponentOutlet\", \"ngComponentOutletInputs\", \"ngComponentOutletInjector\", \"ngComponentOutletContent\", \"ngComponentOutletNgModule\", \"ngComponentOutletNgModuleFactory\"], exportAs: [\"ngComponentOutlet\"] }, { kind: \"directive\", type: NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }] });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: RenderMessageComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'hb-render-message',\n imports: [NgComponentOutlet, NgTemplateOutlet],\n template: `\n <ng-template #nodeTemplateRef let-node=\"node\">\n <ng-template #childrenTemplateRef>\n @for (child of node.$children; track $index) {\n <ng-container\n *ngTemplateOutlet=\"nodeTemplateRef; context: { node: child }\"\n />\n }\n </ng-template>\n\n @if (node) {\n <ng-container\n *ngComponentOutlet=\"\n getTagComponent(node.$tagName);\n inputs: node.$props;\n content: getRootNodes(childrenTemplateRef)\n \"\n ></ng-container>\n }\n </ng-template>\n\n @if (content()) {\n @for (node of content(); track $index) {\n <ng-template\n [ngTemplateOutlet]=\"nodeTemplateRef\"\n [ngTemplateOutletContext]=\"node\"\n >\n </ng-template>\n <ng-container\n *ngTemplateOutlet=\"nodeTemplateRef; context: { node: node }\"\n />\n }\n }\n `,\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVuZGVyLW1lc3NhZ2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYW5ndWxhci9zcmMvY29tcG9uZW50cy9yZW5kZXItbWVzc2FnZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBQ3ZELDZEQUE2RDtBQUM3RCx1REFBdUQ7QUFDdkQsT0FBTyxFQUNMLGNBQWMsRUFDZCxTQUFTLEVBQ1QsUUFBUSxFQUVSLE1BQU0sRUFDTixLQUFLLEVBRUwsZ0JBQWdCLEdBQ2pCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxrQkFBa0IsRUFBc0IsTUFBTSxVQUFVLENBQUM7O0FBd0NsRTs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sT0FBTyxzQkFBc0I7SUFDakMsT0FBTyxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQTJCLENBQUM7SUFDcEQ7O09BRUc7SUFDSCxNQUFNLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBRWhDOztPQUVHO0lBQ0gsT0FBTyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsT0FBTyxFQUFFLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUUzRDs7T0FFRztJQUNILGVBQWUsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQztJQUVyRTs7T0FFRztJQUNILGdCQUFnQixHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBRTVDOztPQUVHO0lBQ0gsZ0JBQWdCLEdBQUcsSUFBSSxPQUFPLEVBQTJCLENBQUM7SUFFMUQ7O09BRUc7SUFDSCxvQkFBb0IsR0FBRyxJQUFJLE9BQU8sRUFBMEMsQ0FBQztJQUU3RTs7T0FFRztJQUNILGVBQWUsQ0FBQyxPQUFlO1FBQzdCLE9BQU8sSUFBSSxDQUFDLGVBQWUsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUUsU0FBUyxJQUFJLElBQUksQ0FBQztJQUM5RCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxlQUFlLENBQUMsR0FBcUI7UUFDbkMsSUFBSSxJQUFJLENBQUMsb0JBQW9CLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDdkMsT0FBTyxJQUFJLENBQUMsb0JBQW9CLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBRSxDQUFDO1FBQzdDLENBQUM7UUFFRCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDM0QsSUFBSSxDQUFDLG9CQUFvQixDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDekMsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxZQUFZLENBQUMsR0FBcUI7UUFDaEMsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDbkMsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBRSxDQUFDO1FBQ3pDLENBQUM7UUFFRCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3ZDLE1BQU0sS0FBSyxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQy9CLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3RDLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQzt1R0FoRVUsc0JBQXNCOzJGQUF0QixzQkFBc0Isc05BNUN2Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBaUNULDREQWxDUyxpQkFBaUIscVJBQUUsZ0JBQWdCOzsyRkE2Q2xDLHNCQUFzQjtrQkEvQ2xDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLG1CQUFtQjtvQkFDN0IsT0FBTyxFQUFFLENBQUMsaUJBQWlCLEVBQUUsZ0JBQWdCLENBQUM7b0JBQzlDLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBaUNUO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLW5vbi1udWxsLWFzc2VydGlvbiAqL1xuLyogZXNsaW50LWRpc2FibGUgQGFuZ3VsYXItZXNsaW50L2NvbXBvbmVudC1zZWxlY3RvciAqL1xuaW1wb3J0IHtcbiAgQXBwbGljYXRpb25SZWYsXG4gIENvbXBvbmVudCxcbiAgY29tcHV0ZWQsXG4gIEVtYmVkZGVkVmlld1JlZixcbiAgaW5qZWN0LFxuICBpbnB1dCxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDb250YWluZXJSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmdDb21wb25lbnRPdXRsZXQsIE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgZ2V0VGFnTmFtZVJlZ2lzdHJ5LCBVaUFzc2lzdGFudE1lc3NhZ2UgfSBmcm9tICcuLi91dGlscyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2hiLXJlbmRlci1tZXNzYWdlJyxcbiAgaW1wb3J0czogW05nQ29tcG9uZW50T3V0bGV0LCBOZ1RlbXBsYXRlT3V0bGV0XSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8bmctdGVtcGxhdGUgI25vZGVUZW1wbGF0ZVJlZiBsZXQtbm9kZT1cIm5vZGVcIj5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjY2hpbGRyZW5UZW1wbGF0ZVJlZj5cbiAgICAgICAgQGZvciAoY2hpbGQgb2Ygbm9kZS4kY2hpbGRyZW47IHRyYWNrICRpbmRleCkge1xuICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwibm9kZVRlbXBsYXRlUmVmOyBjb250ZXh0OiB7IG5vZGU6IGNoaWxkIH1cIlxuICAgICAgICAgIC8+XG4gICAgICAgIH1cbiAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgIEBpZiAobm9kZSkge1xuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgKm5nQ29tcG9uZW50T3V0bGV0PVwiXG4gICAgICAgICAgICBnZXRUYWdDb21wb25lbnQobm9kZS4kdGFnTmFtZSk7XG4gICAgICAgICAgICBpbnB1dHM6IG5vZGUuJHByb3BzO1xuICAgICAgICAgICAgY29udGVudDogZ2V0Um9vdE5vZGVzKGNoaWxkcmVuVGVtcGxhdGVSZWYpXG4gICAgICAgICAgXCJcbiAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgfVxuICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICBAaWYgKGNvbnRlbnQoKSkge1xuICAgICAgQGZvciAobm9kZSBvZiBjb250ZW50KCk7IHRyYWNrICRpbmRleCkge1xuICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJub2RlVGVtcGxhdGVSZWZcIlxuICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJub2RlXCJcbiAgICAgICAgPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJub2RlVGVtcGxhdGVSZWY7IGNvbnRleHQ6IHsgbm9kZTogbm9kZSB9XCJcbiAgICAgICAgLz5cbiAgICAgIH1cbiAgICB9XG4gIGAsXG59KVxuLyoqXG4gKiBSZW5kZXJzIG1lc3NhZ2VzIGdlbmVyYXRlZCBieSB0aGUgYXNzaXN0YW50IGZyb20gdWlDaGF0UmVzb3VyY2UuXG4gKlxuICogQGV4YW1wbGVcbiAqXG4gKiBgYGBodG1sXG4gKiA8aGItcmVuZGVyLW1lc3NhZ2UgW21lc3NhZ2VdPVwibWVzc2FnZVwiIC8+XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGNsYXNzIFJlbmRlck1lc3NhZ2VDb21wb25lbnQge1xuICBtZXNzYWdlID0gaW5wdXQucmVxdWlyZWQ8VWlBc3Npc3RhbnRNZXNzYWdlPGFueT4+KCk7XG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIGFwcFJlZiA9IGluamVjdChBcHBsaWNhdGlvblJlZik7XG5cbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgY29udGVudCA9IGNvbXB1dGVkKCgpID0+IHRoaXMubWVzc2FnZSgpLmNvbnRlbnQ/LnVpID8/IFtdKTtcblxuICAvKipcbiAgICogQGludGVybmFsXG4gICAqL1xuICB0YWdOYW1lUmVnaXN0cnkgPSBjb21wdXRlZCgoKSA9PiBnZXRUYWdOYW1lUmVnaXN0cnkodGhpcy5tZXNzYWdlKCkpKTtcblxuICAvKipcbiAgICogQGludGVybmFsXG4gICAqL1xuICB2aWV3Q29udGFpbmVyUmVmID0gaW5qZWN0KFZpZXdDb250YWluZXJSZWYpO1xuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHJvb3ROb2Rlc1dlYWtNYXAgPSBuZXcgV2Vha01hcDxUZW1wbGF0ZVJlZjxhbnk+LCBhbnlbXT4oKTtcblxuICAvKipcbiAgICogQGludGVybmFsXG4gICAqL1xuICBlbWJlZGRlZFZpZXdzV2Vha01hcCA9IG5ldyBXZWFrTWFwPFRlbXBsYXRlUmVmPGFueT4sIEVtYmVkZGVkVmlld1JlZjxhbnk+PigpO1xuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIGdldFRhZ0NvbXBvbmVudCh0YWdOYW1lOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy50YWdOYW1lUmVnaXN0cnkoKT8uW3RhZ05hbWVdPy5jb21wb25lbnQgPz8gbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIGdldEVtYmVkZGVkVmlldyh0cGw6IFRlbXBsYXRlUmVmPGFueT4pIHtcbiAgICBpZiAodGhpcy5lbWJlZGRlZFZpZXdzV2Vha01hcC5oYXModHBsKSkge1xuICAgICAgcmV0dXJuIHRoaXMuZW1iZWRkZWRWaWV3c1dlYWtNYXAuZ2V0KHRwbCkhO1xuICAgIH1cblxuICAgIGNvbnN0IHZpZXcgPSB0aGlzLnZpZXdDb250YWluZXJSZWYuY3JlYXRlRW1iZWRkZWRWaWV3KHRwbCk7XG4gICAgdGhpcy5lbWJlZGRlZFZpZXdzV2Vha01hcC5zZXQodHBsLCB2aWV3KTtcbiAgICByZXR1cm4gdmlldztcbiAgfVxuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIGdldFJvb3ROb2Rlcyh0cGw6IFRlbXBsYXRlUmVmPGFueT4pIHtcbiAgICBpZiAodGhpcy5yb290Tm9kZXNXZWFrTWFwLmhhcyh0cGwpKSB7XG4gICAgICByZXR1cm4gdGhpcy5yb290Tm9kZXNXZWFrTWFwLmdldCh0cGwpITtcbiAgICB9XG5cbiAgICBjb25zdCB2aWV3ID0gdGhpcy5nZXRFbWJlZGRlZFZpZXcodHBsKTtcbiAgICBjb25zdCBub2RlcyA9IFt2aWV3LnJvb3ROb2Rlc107XG4gICAgdGhpcy5yb290Tm9kZXNXZWFrTWFwLnNldCh0cGwsIG5vZGVzKTtcbiAgICByZXR1cm4gbm9kZXM7XG4gIH1cbn1cbiJdfQ==","import { inject, InjectionToken } from '@angular/core';\n/**\n * @internal\n */\nexport const ɵHASHBROWN_CONFIG_INJECTION_TOKEN = new InjectionToken('HashbrownConfig');\n/**\n * Provides the Hashbrown configuration.\n *\n * @argument options - The Hashbrown configuration.\n * @returns The Hashbrown configuration.\n */\nexport function provideHashbrown(options) {\n return {\n provide: ɵHASHBROWN_CONFIG_INJECTION_TOKEN,\n useValue: options,\n };\n}\n/**\n * @internal\n */\nexport function ɵinjectHashbrownConfig() {\n return inject(ɵHASHBROWN_CONFIG_INJECTION_TOKEN);\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlkZS1oYXNoYnJvd24uZm4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyL3NyYy9wcm92aWRlcnMvcHJvdmlkZS1oYXNoYnJvd24uZm4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxjQUFjLEVBQVksTUFBTSxlQUFlLENBQUM7QUE0QmpFOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0saUNBQWlDLEdBQzVDLElBQUksY0FBYyxDQUEwQixpQkFBaUIsQ0FBQyxDQUFDO0FBRWpFOzs7OztHQUtHO0FBQ0gsTUFBTSxVQUFVLGdCQUFnQixDQUFDLE9BQWdDO0lBQy9ELE9BQU87UUFDTCxPQUFPLEVBQUUsaUNBQWlDO1FBQzFDLFFBQVEsRUFBRSxPQUFPO0tBQ2xCLENBQUM7QUFDSixDQUFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUsc0JBQXNCO0lBQ3BDLE9BQU8sTUFBTSxDQUFDLGlDQUFpQyxDQUFDLENBQUM7QUFDbkQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCwgSW5qZWN0aW9uVG9rZW4sIFByb3ZpZGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDaGF0IH0gZnJvbSAnQGhhc2hicm93bmFpL2NvcmUnO1xuXG4vKipcbiAqIEhhc2hicm93biBtdXN0IGJlIGNvbmZpZ3VyZWQgd2l0aCBhIGJhc2UgVVJMLFxuICogYW5kIG1heSBvcHRpb25hbGx5IGluY2x1ZGUgbWlkZGxld2FyZSBhbmQgYSBmbGFnXG4gKiB0byBlbXVsYXRlIHN0cnVjdHVyZWQgb3V0cHV0LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFByb3ZpZGVIYXNoYnJvd25PcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSBiYXNlIFVSTCBvZiB0aGUgSGFzaGJyb3duIEFQSS5cbiAgICovXG4gIGJhc2VVcmw6IHN0cmluZztcbiAgLyoqXG4gICAqIE1pZGRsZXdhcmUgdG8gYXBwbHkgdG8gYWxsIHJlcXVlc3RzLlxuICAgKi9cbiAgbWlkZGxld2FyZT86IENoYXQuTWlkZGxld2FyZVtdO1xuICAvKipcbiAgICogV2hldGhlciB0byBlbXVsYXRlIHN0cnVjdHVyZWQgb3V0cHV0LiBVc2VmdWwgZm9yIG1vZGVsc1xuICAgKiB0aGF0IGRvbid0IHN1cHBvcnQgdG9vbCBjYWxsaW5nIHdpdGggc3RydWN0dXJlZCBvdXRwdXRzXG4gICAqIGVuYWJsZWQuIFdoZW4gc2V0IHRvIHRydWUsIEhhc2hicm93biBzaWxlbnRseSBhZGRzIGFuXG4gICAqIFwib3V0cHV0XCIgdG9vbCB0byB0aGUgdGhlIGxpc3Qgb2YgdG9vbHMgdGhlIG1vZGVsIGNhblxuICAgKiBjYWxsLCBhbmQgdGhlbiBoYW5kbGVzIHRoZSBhcmd1bWVudHMgdG8gdGhlIHRvb2wgY2FsbFxuICAgKiBhcyBpZiB0aGUgbW9kZWwgaGFzIHByb2R1Y2VkIGl0IHZpYSBzdHJ1Y3R1cmVkIG91dHB1dHMuXG4gICAqL1xuICBlbXVsYXRlU3RydWN0dXJlZE91dHB1dD86IGJvb2xlYW47XG59XG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBjb25zdCDJtUhBU0hCUk9XTl9DT05GSUdfSU5KRUNUSU9OX1RPS0VOID1cbiAgbmV3IEluamVjdGlvblRva2VuPFByb3ZpZGVIYXNoYnJvd25PcHRpb25zPignSGFzaGJyb3duQ29uZmlnJyk7XG5cbi8qKlxuICogUHJvdmlkZXMgdGhlIEhhc2hicm93biBjb25maWd1cmF0aW9uLlxuICpcbiAqIEBhcmd1bWVudCBvcHRpb25zIC0gVGhlIEhhc2hicm93biBjb25maWd1cmF0aW9uLlxuICogQHJldHVybnMgVGhlIEhhc2hicm93biBjb25maWd1cmF0aW9uLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcHJvdmlkZUhhc2hicm93bihvcHRpb25zOiBQcm92aWRlSGFzaGJyb3duT3B0aW9ucyk6IFByb3ZpZGVyIHtcbiAgcmV0dXJuIHtcbiAgICBwcm92aWRlOiDJtUhBU0hCUk9XTl9DT05GSUdfSU5KRUNUSU9OX1RPS0VOLFxuICAgIHVzZVZhbHVlOiBvcHRpb25zLFxuICB9O1xufVxuXG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5leHBvcnQgZnVuY3Rpb24gybVpbmplY3RIYXNoYnJvd25Db25maWcoKSB7XG4gIHJldHVybiBpbmplY3QoybVIQVNIQlJPV05fQ09ORklHX0lOSkVDVElPTl9UT0tFTik7XG59XG4iXX0=","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { computed, DestroyRef, inject, Injector, runInInjectionContext, } from '@angular/core';\nimport { fryHashbrown } from '@hashbrownai/core';\nimport { ɵinjectHashbrownConfig } from '../providers/provide-hashbrown.fn';\nimport { readSignalLike, toNgSignal } from '../utils/signals';\n/**\n * Creates a chat resource for managing LLM-driven conversations.\n *\n * @template Tools\n * @param {ChatResourceOptions<Tools>} options - Configuration for the chat resource.\n * @returns {ChatResourceRef<Tools>} An object with reactive signals and methods for interacting with the chat.\n */\nexport function chatResource(options) {\n const config = ɵinjectHashbrownConfig();\n const injector = inject(Injector);\n const destroyRef = inject(DestroyRef);\n const hashbrown = fryHashbrown({\n apiUrl: options.apiUrl ?? config.baseUrl,\n middleware: config.middleware?.map((m) => {\n return (requestInit) => runInInjectionContext(injector, () => m(requestInit));\n }),\n system: readSignalLike(options.system),\n model: readSignalLike(options.model),\n tools: options.tools,\n emulateStructuredOutput: config.emulateStructuredOutput,\n debugName: options.debugName,\n });\n const teardown = hashbrown.sizzle();\n destroyRef.onDestroy(() => teardown());\n const value = toNgSignal(hashbrown.messages, options.debugName && `${options.debugName}.value`);\n const isReceiving = toNgSignal(hashbrown.isReceiving, options.debugName && `${options.debugName}.isReceiving`);\n const isSending = toNgSignal(hashbrown.isSending, options.debugName && `${options.debugName}.isSending`);\n const isRunningToolCalls = toNgSignal(hashbrown.isRunningToolCalls, options.debugName && `${options.debugName}.isRunningToolCalls`);\n const error = toNgSignal(hashbrown.error, options.debugName && `${options.debugName}.error`);\n const lastAssistantMessage = toNgSignal(hashbrown.lastAssistantMessage, options.debugName && `${options.debugName}.lastAssistantMessage`);\n const status = computed(() => {\n if (isReceiving() || isSending() || isRunningToolCalls()) {\n return 'loading';\n }\n if (error()) {\n return 'error';\n }\n const hasAssistantMessage = value().some((message) => message.role === 'assistant');\n if (hasAssistantMessage) {\n return 'resolved';\n }\n return 'idle';\n }, { debugName: options.debugName && `${options.debugName}.status` });\n const isLoading = computed(() => {\n return isReceiving() || isSending() || isRunningToolCalls();\n }, { debugName: options.debugName && `${options.debugName}.isLoading` });\n function reload() {\n const lastMessage = value()[value().length - 1];\n if (lastMessage.role === 'assistant') {\n hashbrown.setMessages(value().slice(0, -1));\n return true;\n }\n return false;\n }\n function hasValue() {\n return value().some((message) => message.role === 'assistant');\n }\n function sendMessage(message) {\n hashbrown.sendMessage(message);\n }\n function stop(clearStreamingMessage = false) {\n hashbrown.stop(clearStreamingMessage);\n }\n return {\n hasValue: hasValue,\n status,\n isLoading,\n reload,\n sendMessage,\n stop,\n value,\n error,\n lastAssistantMessage,\n };\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdC1yZXNvdXJjZS5mbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXIvc3JjL3Jlc291cmNlcy9jaGF0LXJlc291cmNlLmZuLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVEQUF1RDtBQUN2RCxPQUFPLEVBQ0wsUUFBUSxFQUNSLFVBQVUsRUFDVixNQUFNLEVBQ04sUUFBUSxFQUdSLHFCQUFxQixHQUV0QixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQVEsWUFBWSxFQUFpQixNQUFNLG1CQUFtQixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxjQUFjLEVBQUUsVUFBVSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUF1RTlEOzs7Ozs7R0FNRztBQUNILE1BQU0sVUFBVSxZQUFZLENBQzFCLE9BQW1DO0lBRW5DLE1BQU0sTUFBTSxHQUFHLHNCQUFzQixFQUFFLENBQUM7SUFDeEMsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2xDLE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUN0QyxNQUFNLFNBQVMsR0FBRyxZQUFZLENBQUM7UUFDN0IsTUFBTSxFQUFFLE9BQU8sQ0FBQyxNQUFNLElBQUksTUFBTSxDQUFDLE9BQU87UUFDeEMsVUFBVSxFQUFFLE1BQU0sQ0FBQyxVQUFVLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFtQixFQUFFO1lBQ3hELE9BQU8sQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUNyQixxQkFBcUIsQ0FBQyxRQUFRLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7UUFDMUQs