@copilotkitnext/angular 0.0.19 → 0.0.21-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.
@@ -28,4 +28,4 @@ export function registerHumanInTheLoop(humanInTheLoop) {
28
28
  copilotKit.removeTool(humanInTheLoop.name);
29
29
  });
30
30
  }
31
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3Rvb2xzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFnQixNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHM0UsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQTRFMUMsTUFBTSxVQUFVLHNCQUFzQixDQUNwQyxjQUEwQztJQUUxQyxNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDdEMsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBRXRDLFVBQVUsQ0FBQyxpQkFBaUIsQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUU3QyxVQUFVLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtRQUN4QixVQUFVLENBQUMsVUFBVSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3JFLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUVELE1BQU0sVUFBVSxvQkFBb0IsQ0FDbEMsWUFBc0M7SUFFdEMsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2xDLE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUN0QyxNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7SUFFdEMsVUFBVSxDQUFDLGVBQWUsQ0FBQztRQUN6QixHQUFJLFlBQW1DO1FBQ3ZDLFFBQVE7S0FDVCxDQUFDLENBQUM7SUFFSCxVQUFVLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtRQUN4QixVQUFVLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMzQyxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRCxNQUFNLFVBQVUsc0JBQXNCLENBQ3BDLGNBQTBDO0lBRTFDLE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUN0QyxNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7SUFFdEMsVUFBVSxDQUFDLGlCQUFpQixDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBRTdDLFVBQVUsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1FBQ3hCLFVBQVUsQ0FBQyxVQUFVLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzdDLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERlc3Ryb3lSZWYsIEluamVjdG9yLCBTaWduYWwsIFR5cGUsIGluamVjdCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBGcm9udGVuZFRvb2wgfSBmcm9tIFwiQGNvcGlsb3RraXRuZXh0L2NvcmVcIjtcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCI7XG5pbXBvcnQgeyBDb3BpbG90S2l0IH0gZnJvbSBcIi4vY29waWxvdGtpdFwiO1xuXG5leHBvcnQgdHlwZSBBbmd1bGFyVG9vbENhbGw8QXJncyBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0gUmVjb3JkPHN0cmluZywgdW5rbm93bj4+ID1cbiAgfCB7XG4gICAgICBhcmdzOiBQYXJ0aWFsPEFyZ3M+O1xuICAgICAgc3RhdHVzOiBcImluLXByb2dyZXNzXCI7XG4gICAgICByZXN1bHQ6IHVuZGVmaW5lZDtcbiAgICB9XG4gIHwge1xuICAgICAgYXJnczogQXJncztcbiAgICAgIHN0YXR1czogXCJleGVjdXRpbmdcIjtcbiAgICAgIHJlc3VsdDogdW5kZWZpbmVkO1xuICAgIH1cbiAgfCB7XG4gICAgICBhcmdzOiBBcmdzO1xuICAgICAgc3RhdHVzOiBcImNvbXBsZXRlXCI7XG4gICAgICByZXN1bHQ6IHN0cmluZztcbiAgICB9O1xuXG5leHBvcnQgdHlwZSBIdW1hbkluVGhlTG9vcFRvb2xDYWxsPEFyZ3MgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IFJlY29yZDxzdHJpbmcsIHVua25vd24+PiA9XG4gIHwge1xuICAgICAgYXJnczogUGFydGlhbDxBcmdzPjtcbiAgICAgIHN0YXR1czogXCJpbi1wcm9ncmVzc1wiO1xuICAgICAgcmVzdWx0OiB1bmRlZmluZWQ7XG4gICAgfVxuICB8IHtcbiAgICAgIGFyZ3M6IEFyZ3M7XG4gICAgICBzdGF0dXM6IFwiZXhlY3V0aW5nXCI7XG4gICAgICByZXN1bHQ6IHVuZGVmaW5lZDtcbiAgICAgIHJlc3BvbmQ6IChyZXN1bHQ6IHVua25vd24pID0+IHZvaWQ7XG4gICAgfVxuICB8IHtcbiAgICAgIGFyZ3M6IEFyZ3M7XG4gICAgICBzdGF0dXM6IFwiY29tcGxldGVcIjtcbiAgICAgIHJlc3VsdDogc3RyaW5nO1xuICAgIH07XG5cbmV4cG9ydCBpbnRlcmZhY2UgVG9vbFJlbmRlcmVyPEFyZ3MgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IFJlY29yZDxzdHJpbmcsIHVua25vd24+PiB7XG4gIHRvb2xDYWxsOiBTaWduYWw8QW5ndWxhclRvb2xDYWxsPEFyZ3M+Pjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBIdW1hbkluVGhlTG9vcFRvb2xSZW5kZXJlcjxBcmdzIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4ge1xuICB0b29sQ2FsbDogU2lnbmFsPEh1bWFuSW5UaGVMb29wVG9vbENhbGw8QXJncz4+O1xufVxuXG5leHBvcnQgdHlwZSBDbGllbnRUb29sPEFyZ3MgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IFJlY29yZDxzdHJpbmcsIHVua25vd24+PiA9IE9taXQ8XG4gIEZyb250ZW5kVG9vbDxBcmdzPixcbiAgXCJoYW5kbGVyXCJcbj4gJiB7XG4gIHJlbmRlcmVyPzogVHlwZTxUb29sUmVuZGVyZXI8QXJncz4+O1xufTtcblxuZXhwb3J0IGludGVyZmFjZSBSZW5kZXJUb29sQ2FsbENvbmZpZzxBcmdzIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4ge1xuICBuYW1lOiBzdHJpbmc7XG4gIGFyZ3M6IHouWm9kVHlwZTxBcmdzPjtcbiAgY29tcG9uZW50OiBUeXBlPFRvb2xSZW5kZXJlcjxBcmdzPj47XG4gIGFnZW50SWQ/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRnJvbnRlbmRUb29sQ29uZmlnPEFyZ3MgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IFJlY29yZDxzdHJpbmcsIHVua25vd24+PiB7XG4gIG5hbWU6IHN0cmluZztcbiAgZGVzY3JpcHRpb246IHN0cmluZztcbiAgYXJnczogei5ab2RUeXBlPEFyZ3M+O1xuICBjb21wb25lbnQ/OiBUeXBlPFRvb2xSZW5kZXJlcjxBcmdzPj47XG4gIGhhbmRsZXI6IChhcmdzOiBBcmdzKSA9PiBQcm9taXNlPHVua25vd24+O1xuICBhZ2VudElkPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEh1bWFuSW5UaGVMb29wQ29uZmlnPEFyZ3MgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IFJlY29yZDxzdHJpbmcsIHVua25vd24+PiB7XG4gIG5hbWU6IHN0cmluZztcbiAgYXJnczogei5ab2RUeXBlPEFyZ3M+O1xuICBjb21wb25lbnQ6IFR5cGU8SHVtYW5JblRoZUxvb3BUb29sUmVuZGVyZXI8QXJncz4+O1xuICB0b29sQ2FsbDogU2lnbmFsPEh1bWFuSW5UaGVMb29wVG9vbENhbGw8QXJncz4+O1xuICBhZ2VudElkPzogc3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVnaXN0ZXJSZW5kZXJUb29sQ2FsbDxBcmdzIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4oXG4gIHJlbmRlclRvb2xDYWxsOiBSZW5kZXJUb29sQ2FsbENvbmZpZzxBcmdzPixcbik6IHZvaWQge1xuICBjb25zdCBjb3BpbG90S2l0ID0gaW5qZWN0KENvcGlsb3RLaXQpO1xuICBjb25zdCBkZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuXG4gIGNvcGlsb3RLaXQuYWRkUmVuZGVyVG9vbENhbGwocmVuZGVyVG9vbENhbGwpO1xuXG4gIGRlc3Ryb3lSZWYub25EZXN0cm95KCgpID0+IHtcbiAgICBjb3BpbG90S2l0LnJlbW92ZVRvb2wocmVuZGVyVG9vbENhbGwubmFtZSwgcmVuZGVyVG9vbENhbGwuYWdlbnRJZCk7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVnaXN0ZXJGcm9udGVuZFRvb2w8QXJncyBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0gUmVjb3JkPHN0cmluZywgdW5rbm93bj4+KFxuICBmcm9udGVuZFRvb2w6IEZyb250ZW5kVG9vbENvbmZpZzxBcmdzPixcbik6IHZvaWQge1xuICBjb25zdCBpbmplY3RvciA9IGluamVjdChJbmplY3Rvcik7XG4gIGNvbnN0IGRlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XG4gIGNvbnN0IGNvcGlsb3RLaXQgPSBpbmplY3QoQ29waWxvdEtpdCk7XG5cbiAgY29waWxvdEtpdC5hZGRGcm9udGVuZFRvb2woe1xuICAgIC4uLihmcm9udGVuZFRvb2wgYXMgRnJvbnRlbmRUb29sQ29uZmlnKSxcbiAgICBpbmplY3RvcixcbiAgfSk7XG5cbiAgZGVzdHJveVJlZi5vbkRlc3Ryb3koKCkgPT4ge1xuICAgIGNvcGlsb3RLaXQucmVtb3ZlVG9vbChmcm9udGVuZFRvb2wubmFtZSk7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVnaXN0ZXJIdW1hbkluVGhlTG9vcDxBcmdzIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4oXG4gIGh1bWFuSW5UaGVMb29wOiBIdW1hbkluVGhlTG9vcENvbmZpZzxBcmdzPixcbik6IHZvaWQge1xuICBjb25zdCBkZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuICBjb25zdCBjb3BpbG90S2l0ID0gaW5qZWN0KENvcGlsb3RLaXQpO1xuXG4gIGNvcGlsb3RLaXQuYWRkSHVtYW5JblRoZUxvb3AoaHVtYW5JblRoZUxvb3ApO1xuXG4gIGRlc3Ryb3lSZWYub25EZXN0cm95KCgpID0+IHtcbiAgICBjb3BpbG90S2l0LnJlbW92ZVRvb2woaHVtYW5JblRoZUxvb3AubmFtZSk7XG4gIH0pO1xufVxuIl19
31
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3Rvb2xzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFnQixNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHM0UsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQThFMUMsTUFBTSxVQUFVLHNCQUFzQixDQUNwQyxjQUEwQztJQUUxQyxNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDdEMsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBRXRDLFVBQVUsQ0FBQyxpQkFBaUIsQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUU3QyxVQUFVLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtRQUN4QixVQUFVLENBQUMsVUFBVSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3JFLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUVELE1BQU0sVUFBVSxvQkFBb0IsQ0FDbEMsWUFBc0M7SUFFdEMsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2xDLE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUN0QyxNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7SUFFdEMsVUFBVSxDQUFDLGVBQWUsQ0FBQztRQUN6QixHQUFJLFlBQW1DO1FBQ3ZDLFFBQVE7S0FDVCxDQUFDLENBQUM7SUFFSCxVQUFVLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtRQUN4QixVQUFVLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMzQyxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRCxNQUFNLFVBQVUsc0JBQXNCLENBQ3BDLGNBQTBDO0lBRTFDLE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUN0QyxNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7SUFFdEMsVUFBVSxDQUFDLGlCQUFpQixDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBRTdDLFVBQVUsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1FBQ3hCLFVBQVUsQ0FBQyxVQUFVLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzdDLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERlc3Ryb3lSZWYsIEluamVjdG9yLCBTaWduYWwsIFR5cGUsIGluamVjdCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBGcm9udGVuZFRvb2wgfSBmcm9tIFwiQGNvcGlsb3RraXRuZXh0L2NvcmVcIjtcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCI7XG5pbXBvcnQgeyBDb3BpbG90S2l0IH0gZnJvbSBcIi4vY29waWxvdGtpdFwiO1xuXG5leHBvcnQgdHlwZSBBbmd1bGFyVG9vbENhbGw8QXJncyBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0gUmVjb3JkPHN0cmluZywgdW5rbm93bj4+ID1cbiAgfCB7XG4gICAgICBhcmdzOiBQYXJ0aWFsPEFyZ3M+O1xuICAgICAgc3RhdHVzOiBcImluLXByb2dyZXNzXCI7XG4gICAgICByZXN1bHQ6IHVuZGVmaW5lZDtcbiAgICB9XG4gIHwge1xuICAgICAgYXJnczogQXJncztcbiAgICAgIHN0YXR1czogXCJleGVjdXRpbmdcIjtcbiAgICAgIHJlc3VsdDogdW5kZWZpbmVkO1xuICAgIH1cbiAgfCB7XG4gICAgICBhcmdzOiBBcmdzO1xuICAgICAgc3RhdHVzOiBcImNvbXBsZXRlXCI7XG4gICAgICByZXN1bHQ6IHN0cmluZztcbiAgICB9O1xuXG5leHBvcnQgdHlwZSBIdW1hbkluVGhlTG9vcFRvb2xDYWxsPEFyZ3MgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IFJlY29yZDxzdHJpbmcsIHVua25vd24+PiA9XG4gIHwge1xuICAgICAgYXJnczogUGFydGlhbDxBcmdzPjtcbiAgICAgIHN0YXR1czogXCJpbi1wcm9ncmVzc1wiO1xuICAgICAgcmVzdWx0OiB1bmRlZmluZWQ7XG4gICAgICByZXNwb25kOiAocmVzdWx0OiB1bmtub3duKSA9PiB2b2lkO1xuICAgIH1cbiAgfCB7XG4gICAgICBhcmdzOiBBcmdzO1xuICAgICAgc3RhdHVzOiBcImV4ZWN1dGluZ1wiO1xuICAgICAgcmVzdWx0OiB1bmRlZmluZWQ7XG4gICAgICByZXNwb25kOiAocmVzdWx0OiB1bmtub3duKSA9PiB2b2lkO1xuICAgIH1cbiAgfCB7XG4gICAgICBhcmdzOiBBcmdzO1xuICAgICAgc3RhdHVzOiBcImNvbXBsZXRlXCI7XG4gICAgICByZXN1bHQ6IHN0cmluZztcbiAgICAgIHJlc3BvbmQ6IChyZXN1bHQ6IHVua25vd24pID0+IHZvaWQ7XG4gICAgfTtcblxuZXhwb3J0IGludGVyZmFjZSBUb29sUmVuZGVyZXI8QXJncyBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0gUmVjb3JkPHN0cmluZywgdW5rbm93bj4+IHtcbiAgdG9vbENhbGw6IFNpZ25hbDxBbmd1bGFyVG9vbENhbGw8QXJncz4+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEh1bWFuSW5UaGVMb29wVG9vbFJlbmRlcmVyPEFyZ3MgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IFJlY29yZDxzdHJpbmcsIHVua25vd24+PiB7XG4gIHRvb2xDYWxsOiBTaWduYWw8SHVtYW5JblRoZUxvb3BUb29sQ2FsbDxBcmdzPj47XG59XG5cbmV4cG9ydCB0eXBlIENsaWVudFRvb2w8QXJncyBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0gUmVjb3JkPHN0cmluZywgdW5rbm93bj4+ID0gT21pdDxcbiAgRnJvbnRlbmRUb29sPEFyZ3M+LFxuICBcImhhbmRsZXJcIlxuPiAmIHtcbiAgcmVuZGVyZXI/OiBUeXBlPFRvb2xSZW5kZXJlcjxBcmdzPj47XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIFJlbmRlclRvb2xDYWxsQ29uZmlnPEFyZ3MgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IFJlY29yZDxzdHJpbmcsIHVua25vd24+PiB7XG4gIG5hbWU6IHN0cmluZztcbiAgYXJnczogei5ab2RUeXBlPEFyZ3M+O1xuICBjb21wb25lbnQ6IFR5cGU8VG9vbFJlbmRlcmVyPEFyZ3M+PjtcbiAgYWdlbnRJZD86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGcm9udGVuZFRvb2xDb25maWc8QXJncyBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0gUmVjb3JkPHN0cmluZywgdW5rbm93bj4+IHtcbiAgbmFtZTogc3RyaW5nO1xuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICBwYXJhbWV0ZXJzOiB6LlpvZFR5cGU8QXJncz47XG4gIGNvbXBvbmVudD86IFR5cGU8VG9vbFJlbmRlcmVyPEFyZ3M+PjtcbiAgaGFuZGxlcjogKGFyZ3M6IEFyZ3MpID0+IFByb21pc2U8dW5rbm93bj47XG4gIGFnZW50SWQ/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSHVtYW5JblRoZUxvb3BDb25maWc8QXJncyBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0gUmVjb3JkPHN0cmluZywgdW5rbm93bj4+IHtcbiAgbmFtZTogc3RyaW5nO1xuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICBwYXJhbWV0ZXJzOiB6LlpvZFR5cGU8QXJncz47XG4gIGNvbXBvbmVudDogVHlwZTxIdW1hbkluVGhlTG9vcFRvb2xSZW5kZXJlcjxBcmdzPj47XG4gIGFnZW50SWQ/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWdpc3RlclJlbmRlclRvb2xDYWxsPEFyZ3MgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IFJlY29yZDxzdHJpbmcsIHVua25vd24+PihcbiAgcmVuZGVyVG9vbENhbGw6IFJlbmRlclRvb2xDYWxsQ29uZmlnPEFyZ3M+LFxuKTogdm9pZCB7XG4gIGNvbnN0IGNvcGlsb3RLaXQgPSBpbmplY3QoQ29waWxvdEtpdCk7XG4gIGNvbnN0IGRlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XG5cbiAgY29waWxvdEtpdC5hZGRSZW5kZXJUb29sQ2FsbChyZW5kZXJUb29sQ2FsbCk7XG5cbiAgZGVzdHJveVJlZi5vbkRlc3Ryb3koKCkgPT4ge1xuICAgIGNvcGlsb3RLaXQucmVtb3ZlVG9vbChyZW5kZXJUb29sQ2FsbC5uYW1lLCByZW5kZXJUb29sQ2FsbC5hZ2VudElkKTtcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWdpc3RlckZyb250ZW5kVG9vbDxBcmdzIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4oXG4gIGZyb250ZW5kVG9vbDogRnJvbnRlbmRUb29sQ29uZmlnPEFyZ3M+LFxuKTogdm9pZCB7XG4gIGNvbnN0IGluamVjdG9yID0gaW5qZWN0KEluamVjdG9yKTtcbiAgY29uc3QgZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcbiAgY29uc3QgY29waWxvdEtpdCA9IGluamVjdChDb3BpbG90S2l0KTtcblxuICBjb3BpbG90S2l0LmFkZEZyb250ZW5kVG9vbCh7XG4gICAgLi4uKGZyb250ZW5kVG9vbCBhcyBGcm9udGVuZFRvb2xDb25maWcpLFxuICAgIGluamVjdG9yLFxuICB9KTtcblxuICBkZXN0cm95UmVmLm9uRGVzdHJveSgoKSA9PiB7XG4gICAgY29waWxvdEtpdC5yZW1vdmVUb29sKGZyb250ZW5kVG9vbC5uYW1lKTtcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWdpc3Rlckh1bWFuSW5UaGVMb29wPEFyZ3MgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IFJlY29yZDxzdHJpbmcsIHVua25vd24+PihcbiAgaHVtYW5JblRoZUxvb3A6IEh1bWFuSW5UaGVMb29wQ29uZmlnPEFyZ3M+LFxuKTogdm9pZCB7XG4gIGNvbnN0IGRlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XG4gIGNvbnN0IGNvcGlsb3RLaXQgPSBpbmplY3QoQ29waWxvdEtpdCk7XG5cbiAgY29waWxvdEtpdC5hZGRIdW1hbkluVGhlTG9vcChodW1hbkluVGhlTG9vcCk7XG5cbiAgZGVzdHJveVJlZi5vbkRlc3Ryb3koKCkgPT4ge1xuICAgIGNvcGlsb3RLaXQucmVtb3ZlVG9vbChodW1hbkluVGhlTG9vcC5uYW1lKTtcbiAgfSk7XG59XG4iXX0=
@@ -99,10 +99,7 @@ class CopilotKit {
99
99
  addFrontendTool(clientToolWithInjector) {
100
100
  const tool = this.#bindClientTool(clientToolWithInjector);
101
101
  this.core.addTool(tool);
102
- this.#clientToolCallRenderConfigs.update((current) => [
103
- ...current,
104
- clientToolWithInjector,
105
- ]);
102
+ this.#clientToolCallRenderConfigs.update((current) => [...current, clientToolWithInjector]);
106
103
  }
107
104
  addRenderToolCall(renderConfig) {
108
105
  this.#toolCallRenderConfigs.update((current) => [...current, renderConfig]);
@@ -116,10 +113,7 @@ class CopilotKit {
116
113
  };
117
114
  }
118
115
  addHumanInTheLoop(humanInTheLoopTool) {
119
- this.#humanInTheLoopToolRenderConfigs.update((current) => [
120
- ...current,
121
- humanInTheLoopTool,
122
- ]);
116
+ this.#humanInTheLoopToolRenderConfigs.update((current) => [...current, humanInTheLoopTool]);
123
117
  const tool = this.#bindHumanInTheLoopTool(humanInTheLoopTool);
124
118
  this.core.addTool(tool);
125
119
  }
@@ -131,12 +125,9 @@ class CopilotKit {
131
125
  }
132
126
  removeTool(toolName, agentId) {
133
127
  this.core.removeTool(toolName);
134
- this.#clientToolCallRenderConfigs.update((current) => current.filter((renderConfig) => renderConfig.name !== toolName &&
135
- this.#isSameAgentId(renderConfig, agentId)));
136
- this.#humanInTheLoopToolRenderConfigs.update((current) => current.filter((renderConfig) => renderConfig.name !== toolName &&
137
- this.#isSameAgentId(renderConfig, agentId)));
138
- this.#toolCallRenderConfigs.update((current) => current.filter((renderConfig) => renderConfig.name !== toolName &&
139
- this.#isSameAgentId(renderConfig, agentId)));
128
+ this.#clientToolCallRenderConfigs.update((current) => current.filter((renderConfig) => renderConfig.name !== toolName && this.#isSameAgentId(renderConfig, agentId)));
129
+ this.#humanInTheLoopToolRenderConfigs.update((current) => current.filter((renderConfig) => renderConfig.name !== toolName && this.#isSameAgentId(renderConfig, agentId)));
130
+ this.#toolCallRenderConfigs.update((current) => current.filter((renderConfig) => renderConfig.name !== toolName && this.#isSameAgentId(renderConfig, agentId)));
140
131
  }
141
132
  getAgent(agentId) {
142
133
  return this.core.getAgent(agentId);
@@ -245,11 +236,15 @@ class RenderToolCalls {
245
236
  buildHumanInTheLoopToolCall(toolCall) {
246
237
  const args = partialJSONParse(toolCall.function.arguments);
247
238
  const message = this.#getToolMessage(toolCall.id);
239
+ const respond = (result) => {
240
+ this.#hitl.addResult(toolCall.id, toolCall.function.name, result);
241
+ };
248
242
  if (message) {
249
243
  return {
250
244
  args,
251
245
  status: "complete",
252
246
  result: message.content,
247
+ respond,
253
248
  };
254
249
  }
255
250
  else if (this.isLoading()) {
@@ -257,6 +252,7 @@ class RenderToolCalls {
257
252
  args,
258
253
  status: "in-progress",
259
254
  result: undefined,
255
+ respond,
260
256
  };
261
257
  }
262
258
  else {
@@ -264,14 +260,13 @@ class RenderToolCalls {
264
260
  args,
265
261
  status: "executing",
266
262
  result: undefined,
267
- respond: (result) => {
268
- this.#hitl.addResult(toolCall.id, toolCall.function.name, result);
269
- },
263
+ respond,
270
264
  };
271
265
  }
272
266
  }
273
267
  #getToolMessage(toolCallId) {
274
- return this.messages().find((m) => m.role === "tool" && m.toolCallId === toolCallId);
268
+ const message = this.messages().find((m) => m.role === "tool" && m.toolCallId === toolCallId);
269
+ return message;
275
270
  }
276
271
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RenderToolCalls, deps: [], target: i0.ɵɵFactoryTarget.Component });
277
272
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: RenderToolCalls, isStandalone: true, selector: "copilot-render-tool-calls", inputs: { message: { classPropertyName: "message", publicName: "message", isSignal: true, isRequired: true, transformFunction: null }, messages: { classPropertyName: "messages", publicName: "messages", isSignal: true, isRequired: true, transformFunction: null }, isLoading: { classPropertyName: "isLoading", publicName: "isLoading", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
@@ -282,6 +277,14 @@ class RenderToolCalls {
282
277
  *ngComponentOutlet="renderConfig.config.component; inputs: { toolCall: buildToolCall(toolCall) }"
283
278
  />
284
279
  }
280
+ @if (renderConfig && renderConfig.type === "humanInTheLoopTool" && renderConfig.config.component) {
281
+ <ng-container
282
+ *ngComponentOutlet="
283
+ renderConfig.config.component;
284
+ inputs: { toolCall: buildHumanInTheLoopToolCall(toolCall) }
285
+ "
286
+ />
287
+ }
285
288
  }
286
289
  `, isInline: true, dependencies: [{ kind: "directive", type: NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"] }] });
287
290
  }
@@ -299,6 +302,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
299
302
  *ngComponentOutlet="renderConfig.config.component; inputs: { toolCall: buildToolCall(toolCall) }"
300
303
  />
301
304
  }
305
+ @if (renderConfig && renderConfig.type === "humanInTheLoopTool" && renderConfig.config.component) {
306
+ <ng-container
307
+ *ngComponentOutlet="
308
+ renderConfig.config.component;
309
+ inputs: { toolCall: buildHumanInTheLoopToolCall(toolCall) }
310
+ "
311
+ />
312
+ }
302
313
  }
303
314
  `,
304
315
  }]
@@ -2940,23 +2951,13 @@ class CopilotChatUserMessageBranchNavigation {
2940
2951
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: CopilotChatUserMessageBranchNavigation, isStandalone: true, selector: "copilot-chat-user-message-branch-navigation", inputs: { currentBranch: { classPropertyName: "currentBranch", publicName: "currentBranch", isSignal: true, isRequired: false, transformFunction: null }, numberOfBranches: { classPropertyName: "numberOfBranches", publicName: "numberOfBranches", isSignal: true, isRequired: false, transformFunction: null }, message: { classPropertyName: "message", publicName: "message", isSignal: true, isRequired: false, transformFunction: null }, inputClass: { classPropertyName: "inputClass", publicName: "inputClass", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { switchToBranch: "switchToBranch" }, ngImport: i0, template: `
2941
2952
  @if (showNavigation()) {
2942
2953
  <div [class]="computedClass()">
2943
- <button
2944
- type="button"
2945
- [class]="buttonClass"
2946
- [disabled]="!canGoPrev()"
2947
- (click)="handlePrevious()"
2948
- >
2954
+ <button type="button" [class]="buttonClass" [disabled]="!canGoPrev()" (click)="handlePrevious()">
2949
2955
  <lucide-angular [img]="ChevronLeftIcon" [size]="20"></lucide-angular>
2950
2956
  </button>
2951
2957
  <span class="text-sm text-muted-foreground px-0 font-medium">
2952
2958
  {{ currentBranch() + 1 }}/{{ numberOfBranches() }}
2953
2959
  </span>
2954
- <button
2955
- type="button"
2956
- [class]="buttonClass"
2957
- [disabled]="!canGoNext()"
2958
- (click)="handleNext()"
2959
- >
2960
+ <button type="button" [class]="buttonClass" [disabled]="!canGoNext()" (click)="handleNext()">
2960
2961
  <lucide-angular [img]="ChevronRightIcon" [size]="20"></lucide-angular>
2961
2962
  </button>
2962
2963
  </div>
@@ -2974,23 +2975,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
2974
2975
  template: `
2975
2976
  @if (showNavigation()) {
2976
2977
  <div [class]="computedClass()">
2977
- <button
2978
- type="button"
2979
- [class]="buttonClass"
2980
- [disabled]="!canGoPrev()"
2981
- (click)="handlePrevious()"
2982
- >
2978
+ <button type="button" [class]="buttonClass" [disabled]="!canGoPrev()" (click)="handlePrevious()">
2983
2979
  <lucide-angular [img]="ChevronLeftIcon" [size]="20"></lucide-angular>
2984
2980
  </button>
2985
2981
  <span class="text-sm text-muted-foreground px-0 font-medium">
2986
2982
  {{ currentBranch() + 1 }}/{{ numberOfBranches() }}
2987
2983
  </span>
2988
- <button
2989
- type="button"
2990
- [class]="buttonClass"
2991
- [disabled]="!canGoNext()"
2992
- (click)="handleNext()"
2993
- >
2984
+ <button type="button" [class]="buttonClass" [disabled]="!canGoNext()" (click)="handleNext()">
2994
2985
  <lucide-angular [img]="ChevronRightIcon" [size]="20"></lucide-angular>
2995
2986
  </button>
2996
2987
  </div>
@@ -2999,6 +2990,27 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
2999
2990
  }]
3000
2991
  }] });
3001
2992
 
2993
+ function flattenUserMessageContent(content) {
2994
+ if (!content) {
2995
+ return "";
2996
+ }
2997
+ if (typeof content === "string") {
2998
+ return content;
2999
+ }
3000
+ return content
3001
+ .map((part) => {
3002
+ if (part &&
3003
+ typeof part === "object" &&
3004
+ "type" in part &&
3005
+ part.type === "text" &&
3006
+ typeof part.text === "string") {
3007
+ return part.text;
3008
+ }
3009
+ return "";
3010
+ })
3011
+ .filter((text) => text.length > 0)
3012
+ .join("\n");
3013
+ }
3002
3014
  class CopilotChatUserMessage {
3003
3015
  // Capture templates from content projection
3004
3016
  messageRendererTemplate;
@@ -3040,8 +3052,9 @@ class CopilotChatUserMessage {
3040
3052
  showBranchNavigation = computed(() => (this.numberOfBranches() ?? 1) > 1);
3041
3053
  computedClass = computed(() => cn("flex flex-col items-end group pt-10", this.inputClass()));
3042
3054
  // Context for slots (reactive via signals)
3055
+ flattenedContent = computed(() => flattenUserMessageContent(this.message()?.content));
3043
3056
  messageRendererContext = computed(() => ({
3044
- content: this.message()?.content || "",
3057
+ content: this.flattenedContent(),
3045
3058
  }));
3046
3059
  // Output maps for slots
3047
3060
  copyButtonOutputs = { clicked: () => this.handleCopy() };
@@ -3078,10 +3091,7 @@ class CopilotChatUserMessage {
3078
3091
  >
3079
3092
  </copilot-slot>
3080
3093
  } @else {
3081
- <copilot-chat-user-message-renderer
3082
- [content]="message()?.content || ''"
3083
- [inputClass]="messageRendererClass()"
3084
- >
3094
+ <copilot-chat-user-message-renderer [content]="flattenedContent()" [inputClass]="messageRendererClass()">
3085
3095
  </copilot-chat-user-message-renderer>
3086
3096
  }
3087
3097
 
@@ -3098,23 +3108,21 @@ class CopilotChatUserMessage {
3098
3108
  <div class="flex items-center gap-1 justify-end">
3099
3109
  <!-- Additional toolbar items -->
3100
3110
  @if (additionalToolbarItems()) {
3101
- <ng-container
3102
- [ngTemplateOutlet]="additionalToolbarItems() || null"
3103
- ></ng-container>
3111
+ <ng-container [ngTemplateOutlet]="additionalToolbarItems() || null"></ng-container>
3104
3112
  }
3105
3113
 
3106
3114
  <!-- Copy button -->
3107
3115
  @if (copyButtonTemplate || copyButtonComponent()) {
3108
3116
  <copilot-slot
3109
3117
  [slot]="copyButtonTemplate || copyButtonComponent()"
3110
- [context]="{ content: message()?.content || '' }"
3118
+ [context]="{ content: flattenedContent() }"
3111
3119
  [outputs]="copyButtonOutputs"
3112
3120
  [defaultComponent]="CopilotChatUserMessageCopyButton"
3113
3121
  >
3114
3122
  </copilot-slot>
3115
3123
  } @else {
3116
3124
  <copilot-chat-user-message-copy-button
3117
- [content]="message()?.content"
3125
+ [content]="flattenedContent()"
3118
3126
  [inputClass]="copyButtonClass()"
3119
3127
  (clicked)="handleCopy()"
3120
3128
  >
@@ -3132,10 +3140,7 @@ class CopilotChatUserMessage {
3132
3140
  >
3133
3141
  </copilot-slot>
3134
3142
  } @else {
3135
- <copilot-chat-user-message-edit-button
3136
- [inputClass]="editButtonClass()"
3137
- (clicked)="handleEdit()"
3138
- >
3143
+ <copilot-chat-user-message-edit-button [inputClass]="editButtonClass()" (clicked)="handleEdit()">
3139
3144
  </copilot-chat-user-message-edit-button>
3140
3145
  }
3141
3146
  }
@@ -3144,9 +3149,7 @@ class CopilotChatUserMessage {
3144
3149
  @if (showBranchNavigation()) {
3145
3150
  @if (branchNavigationTemplate || branchNavigationComponent()) {
3146
3151
  <copilot-slot
3147
- [slot]="
3148
- branchNavigationTemplate || branchNavigationComponent()
3149
- "
3152
+ [slot]="branchNavigationTemplate || branchNavigationComponent()"
3150
3153
  [context]="branchNavigationContext()"
3151
3154
  [defaultComponent]="CopilotChatUserMessageBranchNavigation"
3152
3155
  >
@@ -3189,10 +3192,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
3189
3192
  >
3190
3193
  </copilot-slot>
3191
3194
  } @else {
3192
- <copilot-chat-user-message-renderer
3193
- [content]="message()?.content || ''"
3194
- [inputClass]="messageRendererClass()"
3195
- >
3195
+ <copilot-chat-user-message-renderer [content]="flattenedContent()" [inputClass]="messageRendererClass()">
3196
3196
  </copilot-chat-user-message-renderer>
3197
3197
  }
3198
3198
 
@@ -3209,23 +3209,21 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
3209
3209
  <div class="flex items-center gap-1 justify-end">
3210
3210
  <!-- Additional toolbar items -->
3211
3211
  @if (additionalToolbarItems()) {
3212
- <ng-container
3213
- [ngTemplateOutlet]="additionalToolbarItems() || null"
3214
- ></ng-container>
3212
+ <ng-container [ngTemplateOutlet]="additionalToolbarItems() || null"></ng-container>
3215
3213
  }
3216
3214
 
3217
3215
  <!-- Copy button -->
3218
3216
  @if (copyButtonTemplate || copyButtonComponent()) {
3219
3217
  <copilot-slot
3220
3218
  [slot]="copyButtonTemplate || copyButtonComponent()"
3221
- [context]="{ content: message()?.content || '' }"
3219
+ [context]="{ content: flattenedContent() }"
3222
3220
  [outputs]="copyButtonOutputs"
3223
3221
  [defaultComponent]="CopilotChatUserMessageCopyButton"
3224
3222
  >
3225
3223
  </copilot-slot>
3226
3224
  } @else {
3227
3225
  <copilot-chat-user-message-copy-button
3228
- [content]="message()?.content"
3226
+ [content]="flattenedContent()"
3229
3227
  [inputClass]="copyButtonClass()"
3230
3228
  (clicked)="handleCopy()"
3231
3229
  >
@@ -3243,10 +3241,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
3243
3241
  >
3244
3242
  </copilot-slot>
3245
3243
  } @else {
3246
- <copilot-chat-user-message-edit-button
3247
- [inputClass]="editButtonClass()"
3248
- (clicked)="handleEdit()"
3249
- >
3244
+ <copilot-chat-user-message-edit-button [inputClass]="editButtonClass()" (clicked)="handleEdit()">
3250
3245
  </copilot-chat-user-message-edit-button>
3251
3246
  }
3252
3247
  }
@@ -3255,9 +3250,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
3255
3250
  @if (showBranchNavigation()) {
3256
3251
  @if (branchNavigationTemplate || branchNavigationComponent()) {
3257
3252
  <copilot-slot
3258
- [slot]="
3259
- branchNavigationTemplate || branchNavigationComponent()
3260
- "
3253
+ [slot]="branchNavigationTemplate || branchNavigationComponent()"
3261
3254
  [context]="branchNavigationContext()"
3262
3255
  [defaultComponent]="CopilotChatUserMessageBranchNavigation"
3263
3256
  >