@acorex/modules 21.0.0-next.76 → 21.0.0-next.79
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/{acorex-modules-ai-management-index-r6kkpdsP.mjs → acorex-modules-ai-management-agent.entity-3ZBa5t2D.mjs} +5 -2
- package/fesm2022/acorex-modules-ai-management-agent.entity-3ZBa5t2D.mjs.map +1 -0
- package/fesm2022/{acorex-modules-ai-management-index-IOX4YfSO.mjs → acorex-modules-ai-management-assist.entity-CeALRRoV.mjs} +5 -2
- package/fesm2022/acorex-modules-ai-management-assist.entity-CeALRRoV.mjs.map +1 -0
- package/fesm2022/{acorex-modules-ai-management-index-1AKm3Wpv.mjs → acorex-modules-ai-management-model.entity-DiDaXVa3.mjs} +7 -4
- package/fesm2022/acorex-modules-ai-management-model.entity-DiDaXVa3.mjs.map +1 -0
- package/fesm2022/{acorex-modules-ai-management-index-KMGY_nWq.mjs → acorex-modules-ai-management-open-ai-endpoint.entity-CZLNKtl0.mjs} +5 -2
- package/fesm2022/acorex-modules-ai-management-open-ai-endpoint.entity-CZLNKtl0.mjs.map +1 -0
- package/fesm2022/{acorex-modules-ai-management-index-D-oYCWiP.mjs → acorex-modules-ai-management-rule.entity-CQNx4QEB.mjs} +5 -2
- package/fesm2022/acorex-modules-ai-management-rule.entity-CQNx4QEB.mjs.map +1 -0
- package/fesm2022/acorex-modules-ai-management.mjs +92 -92
- package/fesm2022/acorex-modules-ai-management.mjs.map +1 -1
- package/fesm2022/{acorex-modules-application-management-application-status.provider-BmTGAssq.mjs → acorex-modules-application-management-application-status.provider-CGRoY79H.mjs} +2 -2
- package/fesm2022/acorex-modules-application-management-application-status.provider-CGRoY79H.mjs.map +1 -0
- package/fesm2022/acorex-modules-application-management-permission-definition.provider-DEO50hd3.mjs.map +1 -1
- package/fesm2022/acorex-modules-application-management.mjs +1150 -1147
- package/fesm2022/acorex-modules-application-management.mjs.map +1 -1
- package/fesm2022/{acorex-modules-assessment-management-acorex-modules-assessment-management-CLXKpUoU.mjs → acorex-modules-assessment-management-acorex-modules-assessment-management-yboYQ8I-.mjs} +86 -85
- package/fesm2022/acorex-modules-assessment-management-acorex-modules-assessment-management-yboYQ8I-.mjs.map +1 -0
- package/fesm2022/{acorex-modules-assessment-management-assessment-case-status.provider-rAq2m3xt.mjs → acorex-modules-assessment-management-assessment-case-status.provider-B9sQAPwy.mjs} +2 -2
- package/fesm2022/acorex-modules-assessment-management-assessment-case-status.provider-B9sQAPwy.mjs.map +1 -0
- package/fesm2022/{acorex-modules-assessment-management-index-VYBOM8GR.mjs → acorex-modules-assessment-management-assessment-case.entity-BBWeshSs.mjs} +9 -6
- package/fesm2022/acorex-modules-assessment-management-assessment-case.entity-BBWeshSs.mjs.map +1 -0
- package/fesm2022/{acorex-modules-assessment-management-assessment-session-answers-view.util-DECCIZSO.mjs → acorex-modules-assessment-management-assessment-session-answers-view.util-UCYBAHLk.mjs} +2 -2
- package/fesm2022/acorex-modules-assessment-management-assessment-session-answers-view.util-UCYBAHLk.mjs.map +1 -0
- package/fesm2022/{acorex-modules-assessment-management-assessment-session-status.provider-B-0MdMq1.mjs → acorex-modules-assessment-management-assessment-session-status.provider-Lee6Cwg8.mjs} +2 -2
- package/fesm2022/acorex-modules-assessment-management-assessment-session-status.provider-Lee6Cwg8.mjs.map +1 -0
- package/fesm2022/{acorex-modules-assessment-management-index-Cj5KtvVT.mjs → acorex-modules-assessment-management-assessment-session.entity-Bp_dS1Js.mjs} +8 -6
- package/fesm2022/acorex-modules-assessment-management-assessment-session.entity-Bp_dS1Js.mjs.map +1 -0
- package/fesm2022/{acorex-modules-assessment-management-fill-assessment-session.command-pLGZAFqT.mjs → acorex-modules-assessment-management-fill-assessment-session.command-VivCLw2H.mjs} +2 -2
- package/fesm2022/acorex-modules-assessment-management-fill-assessment-session.command-VivCLw2H.mjs.map +1 -0
- package/fesm2022/{acorex-modules-assessment-management-preview-question.command-Bgqajt80.mjs → acorex-modules-assessment-management-preview-question.command-CKF4BjCx.mjs} +2 -2
- package/fesm2022/acorex-modules-assessment-management-preview-question.command-CKF4BjCx.mjs.map +1 -0
- package/fesm2022/{acorex-modules-assessment-management-preview-questionnaire.command-B84qnNRw.mjs → acorex-modules-assessment-management-preview-questionnaire.command-B_2o4jC2.mjs} +2 -2
- package/fesm2022/acorex-modules-assessment-management-preview-questionnaire.command-B_2o4jC2.mjs.map +1 -0
- package/fesm2022/{acorex-modules-assessment-management-question-bank-interface-editor-widget-edit.component-CyZGi_Zx.mjs → acorex-modules-assessment-management-question-bank-interface-editor-widget-edit.component-s8KcR3D0.mjs} +2 -2
- package/fesm2022/acorex-modules-assessment-management-question-bank-interface-editor-widget-edit.component-s8KcR3D0.mjs.map +1 -0
- package/fesm2022/{acorex-modules-assessment-management-index-DDhc6vR7.mjs → acorex-modules-assessment-management-question-bank-item.entity-Sj-5woTX.mjs} +9 -7
- package/fesm2022/acorex-modules-assessment-management-question-bank-item.entity-Sj-5woTX.mjs.map +1 -0
- package/fesm2022/{acorex-modules-assessment-management-questionnaire-viewer-popup.component-CRQjv1Vz.mjs → acorex-modules-assessment-management-questionnaire-viewer-popup.component-ClvQ18w6.mjs} +2 -2
- package/fesm2022/acorex-modules-assessment-management-questionnaire-viewer-popup.component-ClvQ18w6.mjs.map +1 -0
- package/fesm2022/{acorex-modules-assessment-management-index-ClRMor3R.mjs → acorex-modules-assessment-management-questionnaire.entity-BbyNZvoc.mjs} +10 -8
- package/fesm2022/acorex-modules-assessment-management-questionnaire.entity-BbyNZvoc.mjs.map +1 -0
- package/fesm2022/{acorex-modules-assessment-management-review-assessment-session.command-Dgaf88SW.mjs → acorex-modules-assessment-management-review-assessment-session.command-B2QViI9d.mjs} +3 -3
- package/fesm2022/acorex-modules-assessment-management-review-assessment-session.command-B2QViI9d.mjs.map +1 -0
- package/fesm2022/{acorex-modules-assessment-management-view-session-answers.command-CocxFTxZ.mjs → acorex-modules-assessment-management-view-session-answers.command-CWdBtkn1.mjs} +3 -3
- package/fesm2022/acorex-modules-assessment-management-view-session-answers.command-CWdBtkn1.mjs.map +1 -0
- package/fesm2022/acorex-modules-assessment-management.mjs +1 -1
- package/fesm2022/{acorex-modules-asset-management-asset-rental-history-status.provider-_iNFw6nf.mjs → acorex-modules-asset-management-asset-rental-history-status.provider-BiWf2TwD.mjs} +13 -4
- package/fesm2022/acorex-modules-asset-management-asset-rental-history-status.provider-BiWf2TwD.mjs.map +1 -0
- package/fesm2022/{acorex-modules-asset-management-index-Bza8Y2Qq.mjs → acorex-modules-asset-management-asset-rental-history.entity-D7g3TSrr.mjs} +10 -6
- package/fesm2022/acorex-modules-asset-management-asset-rental-history.entity-D7g3TSrr.mjs.map +1 -0
- package/fesm2022/{acorex-modules-asset-management-index-BE9Pt9Yl.mjs → acorex-modules-asset-management-asset-system-assignment.entity-ufjDJ-0D.mjs} +7 -4
- package/fesm2022/acorex-modules-asset-management-asset-system-assignment.entity-ufjDJ-0D.mjs.map +1 -0
- package/fesm2022/{acorex-modules-asset-management-index-DDyvfemO.mjs → acorex-modules-asset-management-asset-system-type.entity-DbeerQdD.mjs} +7 -4
- package/fesm2022/acorex-modules-asset-management-asset-system-type.entity-DbeerQdD.mjs.map +1 -0
- package/fesm2022/{acorex-modules-asset-management-index-BQRNWXnd.mjs → acorex-modules-asset-management-asset-system.entity-0Fy7wSBh.mjs} +7 -4
- package/fesm2022/acorex-modules-asset-management-asset-system.entity-0Fy7wSBh.mjs.map +1 -0
- package/fesm2022/{acorex-modules-asset-management-index-BmydXxB7.mjs → acorex-modules-asset-management-asset-type-section-component.entity-OsuWeo2l.mjs} +7 -4
- package/fesm2022/acorex-modules-asset-management-asset-type-section-component.entity-OsuWeo2l.mjs.map +1 -0
- package/fesm2022/{acorex-modules-asset-management-index-BGnVFHyV.mjs → acorex-modules-asset-management-asset-type-section.entity-C6tA_OBh.mjs} +7 -4
- package/fesm2022/acorex-modules-asset-management-asset-type-section.entity-C6tA_OBh.mjs.map +1 -0
- package/fesm2022/{acorex-modules-asset-management-index-CBoHnVCB.mjs → acorex-modules-asset-management-asset-type.entity-Cjy7Xetu.mjs} +9 -5
- package/fesm2022/acorex-modules-asset-management-asset-type.entity-Cjy7Xetu.mjs.map +1 -0
- package/fesm2022/{acorex-modules-asset-management-index-BNW-nI4M.mjs → acorex-modules-asset-management-asset.entity-D1HwzXL_.mjs} +12 -7
- package/fesm2022/acorex-modules-asset-management-asset.entity-D1HwzXL_.mjs.map +1 -0
- package/fesm2022/acorex-modules-asset-management.mjs +119 -134
- package/fesm2022/acorex-modules-asset-management.mjs.map +1 -1
- package/fesm2022/{acorex-modules-auth-acorex-modules-auth-DBZfh3pH.mjs → acorex-modules-auth-acorex-modules-auth-CUpNfm_0.mjs} +129 -130
- package/fesm2022/acorex-modules-auth-acorex-modules-auth-CUpNfm_0.mjs.map +1 -0
- package/fesm2022/{acorex-modules-auth-app-chooser.component-DN75LxY3.mjs → acorex-modules-auth-app-chooser.component-DLtnhyB9.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-app-chooser.component-DN75LxY3.mjs.map → acorex-modules-auth-app-chooser.component-DLtnhyB9.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-change-password.command-DDH7PMLT.mjs → acorex-modules-auth-change-password.command-DcGeenns.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-change-password.command-DDH7PMLT.mjs.map → acorex-modules-auth-change-password.command-DcGeenns.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-edit-account-info.command-BtzrBEGu.mjs → acorex-modules-auth-edit-account-info.command-BnPtwAxA.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-edit-account-info.command-BtzrBEGu.mjs.map → acorex-modules-auth-edit-account-info.command-BnPtwAxA.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-lock-screen.command-BIiErYnc.mjs → acorex-modules-auth-lock-screen.command-Dh0Sgo3_.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-lock-screen.command-BIiErYnc.mjs.map → acorex-modules-auth-lock-screen.command-Dh0Sgo3_.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-login.module-CM6a_pvB.mjs → acorex-modules-auth-login.module-C8psUPfq.mjs} +4 -4
- package/fesm2022/{acorex-modules-auth-login.module-CM6a_pvB.mjs.map → acorex-modules-auth-login.module-C8psUPfq.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-master.layout-D9al7lUX.mjs → acorex-modules-auth-master.layout-KMxMqtt8.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-master.layout-D9al7lUX.mjs.map → acorex-modules-auth-master.layout-KMxMqtt8.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-oauth-callback.component-CndekwOM.mjs → acorex-modules-auth-oauth-callback.component-BF_3fuuz.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-oauth-callback.component-CndekwOM.mjs.map → acorex-modules-auth-oauth-callback.component-BF_3fuuz.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-open-sessions.command-Bgk9TcH-.mjs → acorex-modules-auth-open-sessions.command-vxmxqvOa.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-open-sessions.command-Bgk9TcH-.mjs.map → acorex-modules-auth-open-sessions.command-vxmxqvOa.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-password.component-BWEq8tpz.mjs → acorex-modules-auth-password.component-BOoUt4Gn.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-password.component-BWEq8tpz.mjs.map → acorex-modules-auth-password.component-BOoUt4Gn.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-password.component-Z980dxkh.mjs → acorex-modules-auth-password.component-Cpjc_S82.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-password.component-Z980dxkh.mjs.map → acorex-modules-auth-password.component-Cpjc_S82.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-profile-activity-chart.component-8uSUOk9s.mjs → acorex-modules-auth-profile-activity-chart.component-DfWYy7TN.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-profile-activity-chart.component-8uSUOk9s.mjs.map → acorex-modules-auth-profile-activity-chart.component-DfWYy7TN.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-profile-delete-account-danger-zone.component-C-zoKWsQ.mjs → acorex-modules-auth-profile-delete-account-danger-zone.component-DJcIyOxg.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-profile-delete-account-danger-zone.component-C-zoKWsQ.mjs.map → acorex-modules-auth-profile-delete-account-danger-zone.component-DJcIyOxg.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-profile-page-component.provider-BoGC3tKI.mjs → acorex-modules-auth-profile-page-component.provider-DR2-c0_6.mjs} +4 -4
- package/fesm2022/{acorex-modules-auth-profile-page-component.provider-BoGC3tKI.mjs.map → acorex-modules-auth-profile-page-component.provider-DR2-c0_6.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-profile-page.component-B-qdKgOT.mjs → acorex-modules-auth-profile-page.component-ChsI9B3Y.mjs} +6 -11
- package/fesm2022/acorex-modules-auth-profile-page.component-ChsI9B3Y.mjs.map +1 -0
- package/fesm2022/{acorex-modules-auth-remove-pin-code.command-DnYc0CYG.mjs → acorex-modules-auth-remove-pin-code.command-LFwvvyZ9.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-remove-pin-code.command-DnYc0CYG.mjs.map → acorex-modules-auth-remove-pin-code.command-LFwvvyZ9.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-routes-Cg0xipUZ.mjs → acorex-modules-auth-routes-CuY_v2GN.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-routes-Cg0xipUZ.mjs.map → acorex-modules-auth-routes-CuY_v2GN.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-session-lock-overlay.component-BkpYhoVc.mjs → acorex-modules-auth-session-lock-overlay.component-CwNAumIp.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-session-lock-overlay.component-BkpYhoVc.mjs.map → acorex-modules-auth-session-lock-overlay.component-CwNAumIp.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-set-pin-code.command-9DY-hUvp.mjs → acorex-modules-auth-set-pin-code.command-CfIHBTiI.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-set-pin-code.command-9DY-hUvp.mjs.map → acorex-modules-auth-set-pin-code.command-CfIHBTiI.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-set-pin-code.component-QhO37PUy.mjs → acorex-modules-auth-set-pin-code.component-CNZE8NXL.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-set-pin-code.component-QhO37PUy.mjs.map → acorex-modules-auth-set-pin-code.component-CNZE8NXL.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-settings.provider-DhaMQd28.mjs → acorex-modules-auth-settings.provider-BMc1yFRY.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-settings.provider-DhaMQd28.mjs.map → acorex-modules-auth-settings.provider-BMc1yFRY.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-tenant-chooser.component-Hy_FsSVy.mjs → acorex-modules-auth-tenant-chooser.component-OsTNt9lp.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-tenant-chooser.component-Hy_FsSVy.mjs.map → acorex-modules-auth-tenant-chooser.component-OsTNt9lp.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-two-factor.module-l0zICZtk.mjs → acorex-modules-auth-two-factor.module-CcKZ6dpb.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-two-factor.module-l0zICZtk.mjs.map → acorex-modules-auth-two-factor.module-CcKZ6dpb.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-view-login-history.command-o2IzCKbr.mjs → acorex-modules-auth-view-login-history.command-Crx7Dw2t.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-view-login-history.command-o2IzCKbr.mjs.map → acorex-modules-auth-view-login-history.command-Crx7Dw2t.mjs.map} +1 -1
- package/fesm2022/acorex-modules-auth.mjs +1 -1
- package/fesm2022/acorex-modules-business-core-business-status.entity-BcfEL0kf.mjs +139 -0
- package/fesm2022/acorex-modules-business-core-business-status.entity-BcfEL0kf.mjs.map +1 -0
- package/fesm2022/acorex-modules-business-core-business-type.entity-BP5XZthY.mjs +139 -0
- package/fesm2022/acorex-modules-business-core-business-type.entity-BP5XZthY.mjs.map +1 -0
- package/fesm2022/acorex-modules-business-core-industry.entity-Byz8pFA7.mjs +139 -0
- package/fesm2022/acorex-modules-business-core-industry.entity-Byz8pFA7.mjs.map +1 -0
- package/fesm2022/acorex-modules-business-core-manufacturer.entity-CKzGz3Ix.mjs +286 -0
- package/fesm2022/acorex-modules-business-core-manufacturer.entity-CKzGz3Ix.mjs.map +1 -0
- package/fesm2022/acorex-modules-business-core.mjs +313 -993
- package/fesm2022/acorex-modules-business-core.mjs.map +1 -1
- package/fesm2022/acorex-modules-calendar-management.mjs +73 -57
- package/fesm2022/acorex-modules-calendar-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-common.mjs +240 -136
- package/fesm2022/acorex-modules-common.mjs.map +1 -1
- package/fesm2022/{acorex-modules-content-management-acorex-modules-content-management-DSdJ2hZ-.mjs → acorex-modules-content-management-acorex-modules-content-management-B5zqb3b_.mjs} +138 -58
- package/fesm2022/acorex-modules-content-management-acorex-modules-content-management-B5zqb3b_.mjs.map +1 -0
- package/fesm2022/{acorex-modules-content-management-permission-definition.provider-DRVW7Xxa.mjs → acorex-modules-content-management-permission-definition.provider-DxI6NmP4.mjs} +2 -2
- package/fesm2022/acorex-modules-content-management-permission-definition.provider-DxI6NmP4.mjs.map +1 -0
- package/fesm2022/{acorex-modules-content-management-template-content-editor-widget-edit.component-DwUqz7ZX.mjs → acorex-modules-content-management-template-content-editor-widget-edit.component-ChmkpMy9.mjs} +2 -2
- package/fesm2022/{acorex-modules-content-management-template-content-editor-widget-edit.component-DwUqz7ZX.mjs.map → acorex-modules-content-management-template-content-editor-widget-edit.component-ChmkpMy9.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-content-management-template-content-editor-widget-view.component-CnUc_fhC.mjs → acorex-modules-content-management-template-content-editor-widget-view.component-LyoQmopL.mjs} +2 -2
- package/fesm2022/{acorex-modules-content-management-template-content-editor-widget-view.component-CnUc_fhC.mjs.map → acorex-modules-content-management-template-content-editor-widget-view.component-LyoQmopL.mjs.map} +1 -1
- package/fesm2022/acorex-modules-content-management.mjs +1 -1
- package/fesm2022/{acorex-modules-conversation-acorex-modules-conversation-DtFH9LbP.mjs → acorex-modules-conversation-acorex-modules-conversation-lPw23AJc.mjs} +191 -192
- package/fesm2022/acorex-modules-conversation-acorex-modules-conversation-lPw23AJc.mjs.map +1 -0
- package/fesm2022/{acorex-modules-conversation-assist-delegated-agent-detail-popup.component-Cpc1seYt.mjs → acorex-modules-conversation-assist-delegated-agent-detail-popup.component-D0SGSQC8.mjs} +2 -2
- package/fesm2022/{acorex-modules-conversation-assist-delegated-agent-detail-popup.component-Cpc1seYt.mjs.map → acorex-modules-conversation-assist-delegated-agent-detail-popup.component-D0SGSQC8.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-conversation-comments-page.component-B1CmPB0U.mjs → acorex-modules-conversation-comments-page.component-Bqeplzuy.mjs} +2 -2
- package/fesm2022/{acorex-modules-conversation-comments-page.component-B1CmPB0U.mjs.map → acorex-modules-conversation-comments-page.component-Bqeplzuy.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-conversation-send-assist-chat-message.command-BFFF5GTX.mjs → acorex-modules-conversation-send-assist-chat-message.command-CFwkUHCc.mjs} +2 -2
- package/fesm2022/{acorex-modules-conversation-send-assist-chat-message.command-BFFF5GTX.mjs.map → acorex-modules-conversation-send-assist-chat-message.command-CFwkUHCc.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-conversation-start-assist-chat.command-C-KVIK-L.mjs → acorex-modules-conversation-start-assist-chat.command-aEOnD6ax.mjs} +2 -2
- package/fesm2022/{acorex-modules-conversation-start-assist-chat.command-C-KVIK-L.mjs.map → acorex-modules-conversation-start-assist-chat.command-aEOnD6ax.mjs.map} +1 -1
- package/fesm2022/acorex-modules-conversation.mjs +1 -1
- package/fesm2022/{acorex-modules-customer-management-index-Df-6hCzG.mjs → acorex-modules-customer-management-activity.entity-BENCtWk0.mjs} +4 -2
- package/fesm2022/acorex-modules-customer-management-activity.entity-BENCtWk0.mjs.map +1 -0
- package/fesm2022/{acorex-modules-customer-management-index-CQLsaDJ-.mjs → acorex-modules-customer-management-customer.entity-Doc1f5gH.mjs} +7 -3
- package/fesm2022/acorex-modules-customer-management-customer.entity-Doc1f5gH.mjs.map +1 -0
- package/fesm2022/{acorex-modules-customer-management-index-CQWjFZ-D.mjs → acorex-modules-customer-management-deal-contact-role.entity-BmDALoWz.mjs} +7 -4
- package/fesm2022/acorex-modules-customer-management-deal-contact-role.entity-BmDALoWz.mjs.map +1 -0
- package/fesm2022/{acorex-modules-customer-management-index-7teVSkdT.mjs → acorex-modules-customer-management-lead.entity-CH7iga2T.mjs} +5 -2
- package/fesm2022/acorex-modules-customer-management-lead.entity-CH7iga2T.mjs.map +1 -0
- package/fesm2022/{acorex-modules-customer-management-index-B0wUbd2e.mjs → acorex-modules-customer-management-opportunity-stage.entity-gXGyRjOR.mjs} +4 -2
- package/fesm2022/acorex-modules-customer-management-opportunity-stage.entity-gXGyRjOR.mjs.map +1 -0
- package/fesm2022/{acorex-modules-customer-management-index-DwPwxZI6.mjs → acorex-modules-customer-management-opportunity.entity-BX1vocD3.mjs} +7 -3
- package/fesm2022/acorex-modules-customer-management-opportunity.entity-BX1vocD3.mjs.map +1 -0
- package/fesm2022/{acorex-modules-customer-management-index-DHaf2JAF.mjs → acorex-modules-customer-management-sales-pipeline.entity-TN7eqaA1.mjs} +4 -2
- package/fesm2022/acorex-modules-customer-management-sales-pipeline.entity-TN7eqaA1.mjs.map +1 -0
- package/fesm2022/acorex-modules-customer-management.mjs +28 -42
- package/fesm2022/acorex-modules-customer-management.mjs.map +1 -1
- package/fesm2022/{acorex-modules-dashboard-management-acorex-modules-dashboard-management-d_3MEOVx.mjs → acorex-modules-dashboard-management-acorex-modules-dashboard-management-D2TrYnCW.mjs} +45 -49
- package/fesm2022/acorex-modules-dashboard-management-acorex-modules-dashboard-management-D2TrYnCW.mjs.map +1 -0
- package/fesm2022/{acorex-modules-dashboard-management-index-0npgb7TY.mjs → acorex-modules-dashboard-management-index-DAQNEq43.mjs} +2 -2
- package/fesm2022/acorex-modules-dashboard-management-index-DAQNEq43.mjs.map +1 -0
- package/fesm2022/acorex-modules-dashboard-management.mjs +1 -1
- package/fesm2022/acorex-modules-data-management.mjs +899 -900
- package/fesm2022/acorex-modules-data-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-document-management-document-shortcut.entity-D3BI4azq.mjs +30 -0
- package/fesm2022/acorex-modules-document-management-document-shortcut.entity-D3BI4azq.mjs.map +1 -0
- package/fesm2022/acorex-modules-document-management-drive-choose.component-DyJoXajP.mjs.map +1 -1
- package/fesm2022/acorex-modules-document-management.mjs +75 -109
- package/fesm2022/acorex-modules-document-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-financial-core-data-source.provider-Do4rvgy4.mjs.map +1 -1
- package/fesm2022/acorex-modules-financial-core.mjs +625 -608
- package/fesm2022/acorex-modules-financial-core.mjs.map +1 -1
- package/fesm2022/acorex-modules-form-template-management-template-picker.component-CtTkFhXf.mjs.map +1 -1
- package/fesm2022/acorex-modules-form-template-management-template.entity-CNWAvD6Z.mjs +412 -0
- package/fesm2022/acorex-modules-form-template-management-template.entity-CNWAvD6Z.mjs.map +1 -0
- package/fesm2022/acorex-modules-form-template-management.mjs +30 -442
- package/fesm2022/acorex-modules-form-template-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-health-core-allergy-type.entity-Ba06KigW.mjs +68 -0
- package/fesm2022/acorex-modules-health-core-allergy-type.entity-Ba06KigW.mjs.map +1 -0
- package/fesm2022/acorex-modules-health-core-blood-type.entity-165JDo8r.mjs +121 -0
- package/fesm2022/acorex-modules-health-core-blood-type.entity-165JDo8r.mjs.map +1 -0
- package/fesm2022/acorex-modules-health-core-body-part.entity-CGk798g1.mjs +68 -0
- package/fesm2022/acorex-modules-health-core-body-part.entity-CGk798g1.mjs.map +1 -0
- package/fesm2022/acorex-modules-health-core-chronic-condition-type.entity-CHeAJ1Mm.mjs +68 -0
- package/fesm2022/acorex-modules-health-core-chronic-condition-type.entity-CHeAJ1Mm.mjs.map +1 -0
- package/fesm2022/acorex-modules-health-core-disability-status.entity-DN5reubi.mjs +121 -0
- package/fesm2022/acorex-modules-health-core-disability-status.entity-DN5reubi.mjs.map +1 -0
- package/fesm2022/acorex-modules-health-core-injury-type.entity-x9bs6Zly.mjs +68 -0
- package/fesm2022/acorex-modules-health-core-injury-type.entity-x9bs6Zly.mjs.map +1 -0
- package/fesm2022/acorex-modules-health-core-vaccination-type.entity-DlQ4MQVm.mjs +68 -0
- package/fesm2022/acorex-modules-health-core-vaccination-type.entity-DlQ4MQVm.mjs.map +1 -0
- package/fesm2022/acorex-modules-health-core.mjs +92 -2407
- package/fesm2022/acorex-modules-health-core.mjs.map +1 -1
- package/fesm2022/{acorex-modules-help-desk-acorex-modules-help-desk-AWSV_TiH.mjs → acorex-modules-help-desk-acorex-modules-help-desk-B8de7ifz.mjs} +204 -208
- package/fesm2022/acorex-modules-help-desk-acorex-modules-help-desk-B8de7ifz.mjs.map +1 -0
- package/fesm2022/{acorex-modules-help-desk-capture-screen.component-DjUG9lk7.mjs → acorex-modules-help-desk-capture-screen.component-O3qJdpnt.mjs} +2 -2
- package/fesm2022/{acorex-modules-help-desk-capture-screen.component-DjUG9lk7.mjs.map → acorex-modules-help-desk-capture-screen.component-O3qJdpnt.mjs.map} +1 -1
- package/fesm2022/acorex-modules-help-desk.mjs +1 -1
- package/fesm2022/{acorex-modules-human-capital-management-acorex-modules-human-capital-management-BQ7fkZVA.mjs → acorex-modules-human-capital-management-acorex-modules-human-capital-management-CqROha3-.mjs} +201 -1699
- package/fesm2022/acorex-modules-human-capital-management-acorex-modules-human-capital-management-CqROha3-.mjs.map +1 -0
- package/fesm2022/{acorex-modules-human-capital-management-approve-leave-request.command-8MwfTrgO.mjs → acorex-modules-human-capital-management-approve-leave-request.command-B0pyS4rY.mjs} +3 -3
- package/fesm2022/acorex-modules-human-capital-management-approve-leave-request.command-B0pyS4rY.mjs.map +1 -0
- package/fesm2022/{acorex-modules-human-capital-management-assign-position-assignment.command-DJft6ua8.mjs → acorex-modules-human-capital-management-assign-position-assignment.command-Dc0eoIAI.mjs} +2 -2
- package/fesm2022/acorex-modules-human-capital-management-assign-position-assignment.command-Dc0eoIAI.mjs.map +1 -0
- package/fesm2022/{acorex-modules-human-capital-management-cancel-leave-request.command-r5zEA5Oa.mjs → acorex-modules-human-capital-management-cancel-leave-request.command-TjMXVKCB.mjs} +3 -3
- package/fesm2022/acorex-modules-human-capital-management-cancel-leave-request.command-TjMXVKCB.mjs.map +1 -0
- package/fesm2022/{acorex-modules-human-capital-management-edit-personal-info.command-CTQywAzz.mjs → acorex-modules-human-capital-management-edit-personal-info.command-uCNZW1KF.mjs} +2 -2
- package/fesm2022/{acorex-modules-human-capital-management-edit-personal-info.command-CTQywAzz.mjs.map → acorex-modules-human-capital-management-edit-personal-info.command-uCNZW1KF.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-human-capital-management-edit-signature.command-9XI2V0Yt.mjs → acorex-modules-human-capital-management-edit-signature.command-9psDoX-o.mjs} +2 -2
- package/fesm2022/acorex-modules-human-capital-management-edit-signature.command-9psDoX-o.mjs.map +1 -0
- package/fesm2022/acorex-modules-human-capital-management-employee.entity-BRkS6cY0.mjs +416 -0
- package/fesm2022/acorex-modules-human-capital-management-employee.entity-BRkS6cY0.mjs.map +1 -0
- package/fesm2022/acorex-modules-human-capital-management-employment-type.entity-BZ1vVzeJ.mjs +99 -0
- package/fesm2022/acorex-modules-human-capital-management-employment-type.entity-BZ1vVzeJ.mjs.map +1 -0
- package/fesm2022/acorex-modules-human-capital-management-leave-request.entity-C_hKrBJ1.mjs +292 -0
- package/fesm2022/acorex-modules-human-capital-management-leave-request.entity-C_hKrBJ1.mjs.map +1 -0
- package/fesm2022/acorex-modules-human-capital-management-leave-type.entity-1FFKAk-t.mjs +95 -0
- package/fesm2022/acorex-modules-human-capital-management-leave-type.entity-1FFKAk-t.mjs.map +1 -0
- package/fesm2022/acorex-modules-human-capital-management-lifecycle-event-type.entity-3zBc21d1.mjs +121 -0
- package/fesm2022/acorex-modules-human-capital-management-lifecycle-event-type.entity-3zBc21d1.mjs.map +1 -0
- package/fesm2022/acorex-modules-human-capital-management-lifecycle-event.entity-CeE-5Dko.mjs +226 -0
- package/fesm2022/acorex-modules-human-capital-management-lifecycle-event.entity-CeE-5Dko.mjs.map +1 -0
- package/fesm2022/acorex-modules-human-capital-management-position-assignment.entity-BABjM2Mr.mjs +267 -0
- package/fesm2022/acorex-modules-human-capital-management-position-assignment.entity-BABjM2Mr.mjs.map +1 -0
- package/fesm2022/{acorex-modules-human-capital-management-reject-leave-request.command-Ba2f-i0A.mjs → acorex-modules-human-capital-management-reject-leave-request.command-DHqsjUdQ.mjs} +3 -3
- package/fesm2022/acorex-modules-human-capital-management-reject-leave-request.command-DHqsjUdQ.mjs.map +1 -0
- package/fesm2022/{acorex-modules-human-capital-management-revoke-position-assignment.command-g9p7YKJ1.mjs → acorex-modules-human-capital-management-revoke-position-assignment.command-DQqsqBRM.mjs} +2 -2
- package/fesm2022/acorex-modules-human-capital-management-revoke-position-assignment.command-DQqsqBRM.mjs.map +1 -0
- package/fesm2022/{acorex-modules-human-capital-management-start-leave-request-flow.command-BPFrBjWG.mjs → acorex-modules-human-capital-management-start-leave-request-flow.command-nF6sDrFL.mjs} +3 -3
- package/fesm2022/acorex-modules-human-capital-management-start-leave-request-flow.command-nF6sDrFL.mjs.map +1 -0
- package/fesm2022/{acorex-modules-human-capital-management-start-lifecycle-event-flow.command-C62jEjUD.mjs → acorex-modules-human-capital-management-start-lifecycle-event-flow.command-Bya_9T7H.mjs} +7 -19
- package/fesm2022/acorex-modules-human-capital-management-start-lifecycle-event-flow.command-Bya_9T7H.mjs.map +1 -0
- package/fesm2022/acorex-modules-human-capital-management.mjs +1 -1
- package/fesm2022/acorex-modules-identifier-management.mjs +1 -11
- package/fesm2022/acorex-modules-identifier-management.mjs.map +1 -1
- package/fesm2022/{acorex-modules-learning-management-index-CnBTaY0y.mjs → acorex-modules-learning-management-attendance.entity-40THDVHu.mjs} +7 -4
- package/fesm2022/acorex-modules-learning-management-attendance.entity-40THDVHu.mjs.map +1 -0
- package/fesm2022/{acorex-modules-learning-management-index-Cb6YmwUo.mjs → acorex-modules-learning-management-certificate-definition.entity-DzRELZ1L.mjs} +7 -4
- package/fesm2022/acorex-modules-learning-management-certificate-definition.entity-DzRELZ1L.mjs.map +1 -0
- package/fesm2022/{acorex-modules-learning-management-index-pWAVoZBF.mjs → acorex-modules-learning-management-certificate-type.entity-Br35cJ-M.mjs} +7 -4
- package/fesm2022/acorex-modules-learning-management-certificate-type.entity-Br35cJ-M.mjs.map +1 -0
- package/fesm2022/{acorex-modules-learning-management-index-DdgLO2B8.mjs → acorex-modules-learning-management-certificate.entity-DA882F-J.mjs} +7 -4
- package/fesm2022/acorex-modules-learning-management-certificate.entity-DA882F-J.mjs.map +1 -0
- package/fesm2022/{acorex-modules-learning-management-index-DnUv_C6e.mjs → acorex-modules-learning-management-course-type.entity-DAc4cRbW.mjs} +7 -4
- package/fesm2022/acorex-modules-learning-management-course-type.entity-DAc4cRbW.mjs.map +1 -0
- package/fesm2022/{acorex-modules-learning-management-index-Da29yyOM.mjs → acorex-modules-learning-management-course.entity-HoC-FUPB.mjs} +7 -4
- package/fesm2022/acorex-modules-learning-management-course.entity-HoC-FUPB.mjs.map +1 -0
- package/fesm2022/{acorex-modules-learning-management-index-DPb7aOIM.mjs → acorex-modules-learning-management-enrollment.entity-D4j7oSWb.mjs} +8 -5
- package/fesm2022/acorex-modules-learning-management-enrollment.entity-D4j7oSWb.mjs.map +1 -0
- package/fesm2022/{acorex-modules-learning-management-index-Dxutf3MN.mjs → acorex-modules-learning-management-learning-path-course.entity-B0DurZqy.mjs} +7 -4
- package/fesm2022/acorex-modules-learning-management-learning-path-course.entity-B0DurZqy.mjs.map +1 -0
- package/fesm2022/{acorex-modules-learning-management-index-CnXPymvw.mjs → acorex-modules-learning-management-learning-path.entity-C-FcZefB.mjs} +7 -4
- package/fesm2022/acorex-modules-learning-management-learning-path.entity-C-FcZefB.mjs.map +1 -0
- package/fesm2022/{acorex-modules-learning-management-index-CtfhNokr.mjs → acorex-modules-learning-management-mandatory-training-rule.entity-CxsoSJh-.mjs} +7 -4
- package/fesm2022/acorex-modules-learning-management-mandatory-training-rule.entity-CxsoSJh-.mjs.map +1 -0
- package/fesm2022/{acorex-modules-learning-management-index-D4Yh8EmO.mjs → acorex-modules-learning-management-skill-level.entity-CnAgJyuR.mjs} +7 -4
- package/fesm2022/acorex-modules-learning-management-skill-level.entity-CnAgJyuR.mjs.map +1 -0
- package/fesm2022/{acorex-modules-learning-management-index-DJ4H2IOW.mjs → acorex-modules-learning-management-skill.entity-DmIjc2gw.mjs} +7 -4
- package/fesm2022/acorex-modules-learning-management-skill.entity-DmIjc2gw.mjs.map +1 -0
- package/fesm2022/{acorex-modules-learning-management-index-9Sessbgl.mjs → acorex-modules-learning-management-training-definition.entity-DPY0OQdW.mjs} +7 -4
- package/fesm2022/acorex-modules-learning-management-training-definition.entity-DPY0OQdW.mjs.map +1 -0
- package/fesm2022/{acorex-modules-learning-management-index-B2ZI7U9N.mjs → acorex-modules-learning-management-training-type.entity-Bt37GacX.mjs} +7 -4
- package/fesm2022/acorex-modules-learning-management-training-type.entity-Bt37GacX.mjs.map +1 -0
- package/fesm2022/{acorex-modules-learning-management-index-D3O6qDpQ.mjs → acorex-modules-learning-management-training.entity-BkxK-rqz.mjs} +8 -5
- package/fesm2022/acorex-modules-learning-management-training.entity-BkxK-rqz.mjs.map +1 -0
- package/fesm2022/acorex-modules-learning-management.mjs +168 -153
- package/fesm2022/acorex-modules-learning-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-locale-management.mjs +71 -62
- package/fesm2022/acorex-modules-locale-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-location-management.mjs +1211 -1210
- package/fesm2022/acorex-modules-location-management.mjs.map +1 -1
- package/fesm2022/{acorex-modules-maintenance-management-failure-register-status.provider-DM5m-VsU.mjs → acorex-modules-maintenance-management-failure-register-status.provider-B8-Snxbx.mjs} +2 -2
- package/fesm2022/acorex-modules-maintenance-management-failure-register-status.provider-B8-Snxbx.mjs.map +1 -0
- package/fesm2022/acorex-modules-maintenance-management-maintenance-template.entity-B9Jp4r3m.mjs +487 -0
- package/fesm2022/acorex-modules-maintenance-management-maintenance-template.entity-B9Jp4r3m.mjs.map +1 -0
- package/fesm2022/acorex-modules-maintenance-management-work-order-list-command-BMsD_d6k.mjs.map +1 -1
- package/fesm2022/acorex-modules-maintenance-management.mjs +631 -901
- package/fesm2022/acorex-modules-maintenance-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-measurement-core.mjs +923 -907
- package/fesm2022/acorex-modules-measurement-core.mjs.map +1 -1
- package/fesm2022/acorex-modules-meeting-management-meeting-schedule.entity-BJGUKFuu.mjs +107 -0
- package/fesm2022/acorex-modules-meeting-management-meeting-schedule.entity-BJGUKFuu.mjs.map +1 -0
- package/fesm2022/acorex-modules-meeting-management.mjs +170 -278
- package/fesm2022/acorex-modules-meeting-management.mjs.map +1 -1
- package/fesm2022/{acorex-modules-notification-management-acorex-modules-notification-management-W0YINm5V.mjs → acorex-modules-notification-management-acorex-modules-notification-management-ZgxwReDF.mjs} +574 -584
- package/fesm2022/acorex-modules-notification-management-acorex-modules-notification-management-ZgxwReDF.mjs.map +1 -0
- package/fesm2022/{acorex-modules-notification-management-notification-page.component-BAQGDRTj.mjs → acorex-modules-notification-management-notification-page.component-DlFbwB9o.mjs} +2 -2
- package/fesm2022/{acorex-modules-notification-management-notification-page.component-BAQGDRTj.mjs.map → acorex-modules-notification-management-notification-page.component-DlFbwB9o.mjs.map} +1 -1
- package/fesm2022/acorex-modules-notification-management.mjs +1 -1
- package/fesm2022/{acorex-modules-order-management-index-Du2PsO2f.mjs → acorex-modules-order-management-bulk-buy-order-item.entity-DsXE-kqT.mjs} +11 -5
- package/fesm2022/acorex-modules-order-management-bulk-buy-order-item.entity-DsXE-kqT.mjs.map +1 -0
- package/fesm2022/{acorex-modules-order-management-bulk-buy-order-status.provider-C6HBZfQ_.mjs → acorex-modules-order-management-bulk-buy-order-status.provider-CECieSZF.mjs} +2 -2
- package/fesm2022/acorex-modules-order-management-bulk-buy-order-status.provider-CECieSZF.mjs.map +1 -0
- package/fesm2022/{acorex-modules-order-management-index-DUMuaQGE.mjs → acorex-modules-order-management-bulk-buy-order.entity-B9f4Tppc.mjs} +8 -3
- package/fesm2022/acorex-modules-order-management-bulk-buy-order.entity-B9f4Tppc.mjs.map +1 -0
- package/fesm2022/{acorex-modules-order-management-entity.provider-BVlBsDWW.mjs → acorex-modules-order-management-entity.provider-ZaDnKtBk.mjs} +5 -5
- package/fesm2022/acorex-modules-order-management-entity.provider-ZaDnKtBk.mjs.map +1 -0
- package/fesm2022/{acorex-modules-order-management-index-QHrmfhTE.mjs → acorex-modules-order-management-member-order-line.entity-BX3rQTJ1.mjs} +6 -2
- package/fesm2022/acorex-modules-order-management-member-order-line.entity-BX3rQTJ1.mjs.map +1 -0
- package/fesm2022/{acorex-modules-order-management-member-order-status.provider-CKIrQc_7.mjs → acorex-modules-order-management-member-order-status.provider-Bkrzylqm.mjs} +2 -2
- package/fesm2022/acorex-modules-order-management-member-order-status.provider-Bkrzylqm.mjs.map +1 -0
- package/fesm2022/{acorex-modules-order-management-index-BeIiBPSs.mjs → acorex-modules-order-management-member-order.entity-BItj1CLq.mjs} +8 -3
- package/fesm2022/acorex-modules-order-management-member-order.entity-BItj1CLq.mjs.map +1 -0
- package/fesm2022/acorex-modules-order-management-menu.provider-DeMKkRZa.mjs.map +1 -1
- package/fesm2022/acorex-modules-order-management-permission-definition.provider-B8ext6Sn.mjs.map +1 -1
- package/fesm2022/acorex-modules-order-management-settings.provider-BFOghuIS.mjs.map +1 -1
- package/fesm2022/acorex-modules-order-management.mjs +54 -54
- package/fesm2022/acorex-modules-order-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-organization-management-JOB_DEFINITION_SKILLS_PAGE_COMPONENT_KEY-BYfbGGOE.mjs +8 -0
- package/fesm2022/acorex-modules-organization-management-JOB_DEFINITION_SKILLS_PAGE_COMPONENT_KEY-BYfbGGOE.mjs.map +1 -0
- package/fesm2022/acorex-modules-organization-management-acorex-modules-organization-management-Cl-ecmKK.mjs +917 -0
- package/fesm2022/acorex-modules-organization-management-acorex-modules-organization-management-Cl-ecmKK.mjs.map +1 -0
- package/fesm2022/{acorex-modules-organization-management-add-business-unit-to-business-unit.command-23eGqIxP.mjs → acorex-modules-organization-management-add-business-unit-to-business-unit.command-BUOpdwIy.mjs} +2 -2
- package/fesm2022/acorex-modules-organization-management-add-business-unit-to-business-unit.command-BUOpdwIy.mjs.map +1 -0
- package/fesm2022/{acorex-modules-organization-management-add-position-to-business-unit.command-B4C1jxs3.mjs → acorex-modules-organization-management-add-position-to-business-unit.command-CcoGv5J7.mjs} +2 -2
- package/fesm2022/acorex-modules-organization-management-add-position-to-business-unit.command-CcoGv5J7.mjs.map +1 -0
- package/fesm2022/{acorex-modules-organization-management-add-team-to-business-unit.command-B5vh3rwS.mjs → acorex-modules-organization-management-add-team-to-business-unit.command-n9FYDyKE.mjs} +2 -2
- package/fesm2022/acorex-modules-organization-management-add-team-to-business-unit.command-n9FYDyKE.mjs.map +1 -0
- package/fesm2022/acorex-modules-organization-management-business-unit.entity-LYKMuTLO.mjs +404 -0
- package/fesm2022/acorex-modules-organization-management-business-unit.entity-LYKMuTLO.mjs.map +1 -0
- package/fesm2022/acorex-modules-organization-management-chart.entity-BxAJonRP.mjs +200 -0
- package/fesm2022/acorex-modules-organization-management-chart.entity-BxAJonRP.mjs.map +1 -0
- package/fesm2022/acorex-modules-organization-management-company.entity-Cexgxajh.mjs +136 -0
- package/fesm2022/acorex-modules-organization-management-company.entity-Cexgxajh.mjs.map +1 -0
- package/fesm2022/{acorex-modules-organization-management-entity.provider-3IL0cFTC.mjs → acorex-modules-organization-management-entity.provider-Dqn382Z2.mjs} +15 -15
- package/fesm2022/acorex-modules-organization-management-entity.provider-Dqn382Z2.mjs.map +1 -0
- package/fesm2022/{acorex-modules-organization-management-feature-definition.provider-DsSdRjcX.mjs → acorex-modules-organization-management-feature-definition.provider-C7VhASKJ.mjs} +2 -2
- package/fesm2022/acorex-modules-organization-management-feature-definition.provider-C7VhASKJ.mjs.map +1 -0
- package/fesm2022/{acorex-modules-organization-management-job-definition-pages-component.provider-BRovo6NC.mjs → acorex-modules-organization-management-job-definition-pages-component.provider-Bacrw4_J.mjs} +4 -4
- package/fesm2022/acorex-modules-organization-management-job-definition-pages-component.provider-Bacrw4_J.mjs.map +1 -0
- package/fesm2022/{acorex-modules-organization-management-job-definition-responsibilities-page.component-CNtaaDfp.mjs → acorex-modules-organization-management-job-definition-responsibilities-page.component-BJkc7c-G.mjs} +3 -3
- package/fesm2022/acorex-modules-organization-management-job-definition-responsibilities-page.component-BJkc7c-G.mjs.map +1 -0
- package/fesm2022/{acorex-modules-organization-management-job-definition-skills-page.component-D1ymUBeQ.mjs → acorex-modules-organization-management-job-definition-skills-page.component-GuFiBC0r.mjs} +2 -2
- package/fesm2022/acorex-modules-organization-management-job-definition-skills-page.component-GuFiBC0r.mjs.map +1 -0
- package/fesm2022/acorex-modules-organization-management-job-definition.entity-DsdjfMCs.mjs +321 -0
- package/fesm2022/acorex-modules-organization-management-job-definition.entity-DsdjfMCs.mjs.map +1 -0
- package/fesm2022/{acorex-modules-organization-management-job-level.datasource-_6F_fvTn.mjs → acorex-modules-organization-management-job-level.datasource-CCvVPEVM.mjs} +2 -2
- package/fesm2022/acorex-modules-organization-management-job-level.datasource-CCvVPEVM.mjs.map +1 -0
- package/fesm2022/acorex-modules-organization-management-job-level.entity-BrBHqHqn.mjs +271 -0
- package/fesm2022/acorex-modules-organization-management-job-level.entity-BrBHqHqn.mjs.map +1 -0
- package/fesm2022/{acorex-modules-organization-management-menu.provider-Dt7bfM-4.mjs → acorex-modules-organization-management-menu.provider-BeCkTwia.mjs} +2 -2
- package/fesm2022/acorex-modules-organization-management-menu.provider-BeCkTwia.mjs.map +1 -0
- package/fesm2022/{acorex-modules-organization-management-org-chart-default-node-contribution.provider-Cf789vAr.mjs → acorex-modules-organization-management-org-chart-default-node-contribution.provider-DDY2Cgu6.mjs} +2 -2
- package/fesm2022/acorex-modules-organization-management-org-chart-default-node-contribution.provider-DDY2Cgu6.mjs.map +1 -0
- package/fesm2022/{acorex-modules-organization-management-org-chart-employee-flyout-contribution.provider-CL32hDBZ.mjs → acorex-modules-organization-management-org-chart-employee-flyout-contribution.provider-DbSxtEz6.mjs} +2 -2
- package/fesm2022/acorex-modules-organization-management-org-chart-employee-flyout-contribution.provider-DbSxtEz6.mjs.map +1 -0
- package/fesm2022/{acorex-modules-organization-management-org-chart-position-employee-node-contribution.provider-CpNTM-Ts.mjs → acorex-modules-organization-management-org-chart-position-employee-node-contribution.provider-ByqjxY2S.mjs} +2 -2
- package/fesm2022/acorex-modules-organization-management-org-chart-position-employee-node-contribution.provider-ByqjxY2S.mjs.map +1 -0
- package/fesm2022/{acorex-modules-organization-management-org-chart-ux-node-contribution.provider-D-qPXdfm.mjs → acorex-modules-organization-management-org-chart-ux-node-contribution.provider-DdyF5QS0.mjs} +2 -2
- package/fesm2022/acorex-modules-organization-management-org-chart-ux-node-contribution.provider-DdyF5QS0.mjs.map +1 -0
- package/fesm2022/{acorex-modules-organization-management-org-chart.page-BglvBI8J.mjs → acorex-modules-organization-management-org-chart.page-DD1lvTXR.mjs} +2 -2
- package/fesm2022/acorex-modules-organization-management-org-chart.page-DD1lvTXR.mjs.map +1 -0
- package/fesm2022/{acorex-modules-organization-management-permission-definition.provider-BOz0kQKZ.mjs → acorex-modules-organization-management-permission-definition.provider-CbXQwY_b.mjs} +2 -2
- package/fesm2022/acorex-modules-organization-management-permission-definition.provider-CbXQwY_b.mjs.map +1 -0
- package/fesm2022/acorex-modules-organization-management-position.entity-qwL31RSs.mjs +543 -0
- package/fesm2022/acorex-modules-organization-management-position.entity-qwL31RSs.mjs.map +1 -0
- package/fesm2022/{acorex-modules-organization-management-remove-position-from-business-unit.command-CcfOkd7Z.mjs → acorex-modules-organization-management-remove-position-from-business-unit.command-B1mrTFbI.mjs} +2 -2
- package/fesm2022/acorex-modules-organization-management-remove-position-from-business-unit.command-B1mrTFbI.mjs.map +1 -0
- package/fesm2022/{acorex-modules-organization-management-replace-position-assignee.command-nNGkuyKE.mjs → acorex-modules-organization-management-replace-position-assignee.command-B3OVj92j.mjs} +2 -2
- package/fesm2022/{acorex-modules-organization-management-replace-position-assignee.command-nNGkuyKE.mjs.map → acorex-modules-organization-management-replace-position-assignee.command-B3OVj92j.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-organization-management-responsibilities-matrix-widget-edit.component-CymCi80F.mjs → acorex-modules-organization-management-responsibilities-matrix-widget-edit.component-COCty9r1.mjs} +2 -2
- package/fesm2022/{acorex-modules-organization-management-responsibilities-matrix-widget-edit.component-CymCi80F.mjs.map → acorex-modules-organization-management-responsibilities-matrix-widget-edit.component-COCty9r1.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-organization-management-responsibilities-matrix-widget-view.component-E46T_VO-.mjs → acorex-modules-organization-management-responsibilities-matrix-widget-view.component-BAC2jImJ.mjs} +2 -2
- package/fesm2022/{acorex-modules-organization-management-responsibilities-matrix-widget-view.component-E46T_VO-.mjs.map → acorex-modules-organization-management-responsibilities-matrix-widget-view.component-BAC2jImJ.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-organization-management-responsibilities-matrix.component-Bw22pUUE.mjs → acorex-modules-organization-management-responsibilities-matrix.component-CQ1RKj2l.mjs} +2 -2
- package/fesm2022/acorex-modules-organization-management-responsibilities-matrix.component-CQ1RKj2l.mjs.map +1 -0
- package/fesm2022/acorex-modules-organization-management-responsibility-level.entity-DwpUOhLh.mjs +135 -0
- package/fesm2022/acorex-modules-organization-management-responsibility-level.entity-DwpUOhLh.mjs.map +1 -0
- package/fesm2022/acorex-modules-organization-management-responsibility.entity-3d2Im-NE.mjs +203 -0
- package/fesm2022/acorex-modules-organization-management-responsibility.entity-3d2Im-NE.mjs.map +1 -0
- package/fesm2022/{acorex-modules-organization-management-settings.provider-BOMwSEpo.mjs → acorex-modules-organization-management-settings.provider-B4ijPkN_.mjs} +2 -2
- package/fesm2022/{acorex-modules-organization-management-settings.provider-BOMwSEpo.mjs.map → acorex-modules-organization-management-settings.provider-B4ijPkN_.mjs.map} +1 -1
- package/fesm2022/acorex-modules-organization-management-team-business-unit.entity-DdIc2pIC.mjs +300 -0
- package/fesm2022/acorex-modules-organization-management-team-business-unit.entity-DdIc2pIC.mjs.map +1 -0
- package/fesm2022/acorex-modules-organization-management-team-member-role.entity-UqmN5-zL.mjs +150 -0
- package/fesm2022/acorex-modules-organization-management-team-member-role.entity-UqmN5-zL.mjs.map +1 -0
- package/fesm2022/acorex-modules-organization-management-team-member.entity-BlsBC7oU.mjs +251 -0
- package/fesm2022/acorex-modules-organization-management-team-member.entity-BlsBC7oU.mjs.map +1 -0
- package/fesm2022/acorex-modules-organization-management-team.entity-rRp5rEKa.mjs +307 -0
- package/fesm2022/acorex-modules-organization-management-team.entity-rRp5rEKa.mjs.map +1 -0
- package/fesm2022/acorex-modules-organization-management.mjs +1 -1
- package/fesm2022/acorex-modules-person-core-education-level.entity-BudWedmZ.mjs +121 -0
- package/fesm2022/acorex-modules-person-core-education-level.entity-BudWedmZ.mjs.map +1 -0
- package/fesm2022/acorex-modules-person-core-gender.entity-BrnPFMd_.mjs +121 -0
- package/fesm2022/acorex-modules-person-core-gender.entity-BrnPFMd_.mjs.map +1 -0
- package/fesm2022/acorex-modules-person-core-marital-status.entity-JSXaOaKH.mjs +121 -0
- package/fesm2022/acorex-modules-person-core-marital-status.entity-JSXaOaKH.mjs.map +1 -0
- package/fesm2022/acorex-modules-person-core-person-identifier-type.entity-BwQ0fj61.mjs +191 -0
- package/fesm2022/acorex-modules-person-core-person-identifier-type.entity-BwQ0fj61.mjs.map +1 -0
- package/fesm2022/acorex-modules-person-core-person-title.entity-DPEl0HTw.mjs +121 -0
- package/fesm2022/acorex-modules-person-core-person-title.entity-DPEl0HTw.mjs.map +1 -0
- package/fesm2022/acorex-modules-person-core-religion.entity-DD1UG9on.mjs +121 -0
- package/fesm2022/acorex-modules-person-core-religion.entity-DD1UG9on.mjs.map +1 -0
- package/fesm2022/acorex-modules-person-core.mjs +286 -1139
- package/fesm2022/acorex-modules-person-core.mjs.map +1 -1
- package/fesm2022/acorex-modules-platform-dev-tools-menu.provider-BYy7NCvH.mjs.map +1 -1
- package/fesm2022/acorex-modules-platform-dev-tools.mjs +27 -27
- package/fesm2022/acorex-modules-platform-dev-tools.mjs.map +1 -1
- package/fesm2022/{acorex-modules-platform-management-acorex-modules-platform-management-CdMzH5Qu.mjs → acorex-modules-platform-management-acorex-modules-platform-management-ilmoyxAw.mjs} +46 -47
- package/fesm2022/acorex-modules-platform-management-acorex-modules-platform-management-ilmoyxAw.mjs.map +1 -0
- package/fesm2022/{acorex-modules-platform-management-menu-list.component-B8ZKMl1A.mjs → acorex-modules-platform-management-menu-list.component-MJCUVTho.mjs} +2 -2
- package/fesm2022/{acorex-modules-platform-management-menu-list.component-B8ZKMl1A.mjs.map → acorex-modules-platform-management-menu-list.component-MJCUVTho.mjs.map} +1 -1
- package/fesm2022/acorex-modules-platform-management.mjs +1 -1
- package/fesm2022/acorex-modules-procurement-management.mjs +16 -15
- package/fesm2022/acorex-modules-procurement-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-product-catalog-brand.entity-DLK1M-a5.mjs +261 -0
- package/fesm2022/acorex-modules-product-catalog-brand.entity-DLK1M-a5.mjs.map +1 -0
- package/fesm2022/acorex-modules-product-catalog-product-sku.entity-Dd43Ph0b.mjs +596 -0
- package/fesm2022/acorex-modules-product-catalog-product-sku.entity-Dd43Ph0b.mjs.map +1 -0
- package/fesm2022/acorex-modules-product-catalog-product.entity-CcLvq1uX.mjs +668 -0
- package/fesm2022/acorex-modules-product-catalog-product.entity-CcLvq1uX.mjs.map +1 -0
- package/fesm2022/acorex-modules-product-catalog.mjs +33 -1545
- package/fesm2022/acorex-modules-product-catalog.mjs.map +1 -1
- package/fesm2022/acorex-modules-project-management.mjs +230 -234
- package/fesm2022/acorex-modules-project-management.mjs.map +1 -1
- package/fesm2022/{acorex-modules-report-management-report-runner-root-page.component-DaPEmTm9.mjs → acorex-modules-report-management-report-runner-root-page.component-Dum62tB8.mjs} +3 -2
- package/fesm2022/acorex-modules-report-management-report-runner-root-page.component-Dum62tB8.mjs.map +1 -0
- package/fesm2022/acorex-modules-report-management-settings.provider-CA7o3xKu.mjs.map +1 -1
- package/fesm2022/acorex-modules-report-management.mjs +3 -4
- package/fesm2022/acorex-modules-report-management.mjs.map +1 -1
- package/fesm2022/{acorex-modules-reservation-management-index-DySHYsCz.mjs → acorex-modules-reservation-management-reservation-class-status.entity-CsOec92Y.mjs} +6 -2
- package/fesm2022/acorex-modules-reservation-management-reservation-class-status.entity-CsOec92Y.mjs.map +1 -0
- package/fesm2022/{acorex-modules-reservation-management-index-DNLOtNNW.mjs → acorex-modules-reservation-management-reservation-resource-type.entity-DiEkzSO2.mjs} +6 -2
- package/fesm2022/acorex-modules-reservation-management-reservation-resource-type.entity-DiEkzSO2.mjs.map +1 -0
- package/fesm2022/{acorex-modules-reservation-management-index-DSDnPzHh.mjs → acorex-modules-reservation-management-reservation-status-transition.entity-CSj9-uAb.mjs} +5 -2
- package/fesm2022/acorex-modules-reservation-management-reservation-status-transition.entity-CSj9-uAb.mjs.map +1 -0
- package/fesm2022/acorex-modules-reservation-management.mjs +52 -47
- package/fesm2022/acorex-modules-reservation-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-risk-management.mjs +115 -122
- package/fesm2022/acorex-modules-risk-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-security-management-profile.entity-BSDeLsJ1.mjs +168 -0
- package/fesm2022/acorex-modules-security-management-profile.entity-BSDeLsJ1.mjs.map +1 -0
- package/fesm2022/acorex-modules-security-management-terminate-session.command-CRWFd-YW.mjs.map +1 -1
- package/fesm2022/acorex-modules-security-management.mjs +322 -455
- package/fesm2022/acorex-modules-security-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-settings-management-acorex-modules-settings-management-e5asXiK4.mjs +798 -0
- package/fesm2022/acorex-modules-settings-management-acorex-modules-settings-management-e5asXiK4.mjs.map +1 -0
- package/fesm2022/{acorex-modules-settings-management-permission-definition.provider-CfCLhvZi.mjs → acorex-modules-settings-management-permission-definition.provider-D5DqCfiz.mjs} +2 -2
- package/fesm2022/acorex-modules-settings-management-permission-definition.provider-D5DqCfiz.mjs.map +1 -0
- package/fesm2022/{acorex-modules-settings-management-setting-page.component-B7wP0i5k.mjs → acorex-modules-settings-management-setting-page.component-TxoOyBRc.mjs} +6 -9
- package/fesm2022/acorex-modules-settings-management-setting-page.component-TxoOyBRc.mjs.map +1 -0
- package/fesm2022/{acorex-modules-settings-management-setting-view.component-CG-GW2yS.mjs → acorex-modules-settings-management-setting-view.component-CuDjGo2x.mjs} +2 -2
- package/fesm2022/{acorex-modules-settings-management-setting-view.component-CG-GW2yS.mjs.map → acorex-modules-settings-management-setting-view.component-CuDjGo2x.mjs.map} +1 -1
- package/fesm2022/acorex-modules-settings-management.mjs +1 -813
- package/fesm2022/acorex-modules-settings-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-subscription-management.mjs +52 -47
- package/fesm2022/acorex-modules-subscription-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-supplier-management.mjs +36 -34
- package/fesm2022/acorex-modules-supplier-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-system-insight.mjs +61 -74
- package/fesm2022/acorex-modules-system-insight.mjs.map +1 -1
- package/fesm2022/{acorex-modules-task-management-task-board.page-DhPzh72z.mjs → acorex-modules-task-management-task-board.page-t7bncwGo.mjs} +4 -4
- package/fesm2022/acorex-modules-task-management-task-board.page-t7bncwGo.mjs.map +1 -0
- package/fesm2022/acorex-modules-task-management.mjs +4481 -4489
- package/fesm2022/acorex-modules-task-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-tenant-management.mjs +48 -42
- package/fesm2022/acorex-modules-tenant-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-workflow-management-WORKFLOW_DEFINITION_ACTIVITIES_PAGE_COMPONENT_KEY-D6q__Ewd.mjs +5 -0
- package/fesm2022/acorex-modules-workflow-management-WORKFLOW_DEFINITION_ACTIVITIES_PAGE_COMPONENT_KEY-D6q__Ewd.mjs.map +1 -0
- package/fesm2022/{acorex-modules-workflow-management-acorex-modules-workflow-management-AgY9tA7s.mjs → acorex-modules-workflow-management-acorex-modules-workflow-management-LJ8Bb-CT.mjs} +142 -1452
- package/fesm2022/acorex-modules-workflow-management-acorex-modules-workflow-management-LJ8Bb-CT.mjs.map +1 -0
- package/fesm2022/acorex-modules-workflow-management-activity-definition.entity-Bhx1tC1u.mjs +255 -0
- package/fesm2022/acorex-modules-workflow-management-activity-definition.entity-Bhx1tC1u.mjs.map +1 -0
- package/fesm2022/acorex-modules-workflow-management-automation.entity-C_WRtcFX.mjs +279 -0
- package/fesm2022/acorex-modules-workflow-management-automation.entity-C_WRtcFX.mjs.map +1 -0
- package/fesm2022/{acorex-modules-workflow-management-index-DmnrXTPk.mjs → acorex-modules-workflow-management-index--D61tV-f.mjs} +4 -3
- package/fesm2022/acorex-modules-workflow-management-index--D61tV-f.mjs.map +1 -0
- package/fesm2022/{acorex-modules-workflow-management-index-CvPrfCTv.mjs → acorex-modules-workflow-management-index-8gv17yqF.mjs} +3 -3
- package/fesm2022/{acorex-modules-workflow-management-index-CvPrfCTv.mjs.map → acorex-modules-workflow-management-index-8gv17yqF.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-workflow-management-index-78oCkrbR.mjs → acorex-modules-workflow-management-index-DXIQw3Ao.mjs} +5 -3
- package/fesm2022/acorex-modules-workflow-management-index-DXIQw3Ao.mjs.map +1 -0
- package/fesm2022/acorex-modules-workflow-management-index-OK7e-UOe.mjs +264 -0
- package/fesm2022/acorex-modules-workflow-management-index-OK7e-UOe.mjs.map +1 -0
- package/fesm2022/{acorex-modules-workflow-management-save-workflow-definition-activities.command-aLlfQxaT.mjs → acorex-modules-workflow-management-save-workflow-definition-activities.command-huamhFhc.mjs} +3 -3
- package/fesm2022/acorex-modules-workflow-management-save-workflow-definition-activities.command-huamhFhc.mjs.map +1 -0
- package/fesm2022/{acorex-modules-workflow-management-workflow-configurator-widget-column.component-Ph_BjL_5.mjs → acorex-modules-workflow-management-workflow-configurator-widget-column.component-B0f5IsoE.mjs} +2 -2
- package/fesm2022/acorex-modules-workflow-management-workflow-configurator-widget-column.component-B0f5IsoE.mjs.map +1 -0
- package/fesm2022/{acorex-modules-workflow-management-workflow-configurator-widget-edit.component-CfKTRKNQ.mjs → acorex-modules-workflow-management-workflow-configurator-widget-edit.component-DQ703kRI.mjs} +3 -5
- package/fesm2022/acorex-modules-workflow-management-workflow-configurator-widget-edit.component-DQ703kRI.mjs.map +1 -0
- package/fesm2022/acorex-modules-workflow-management-workflow-definition.entity-DFN7awRu.mjs +313 -0
- package/fesm2022/acorex-modules-workflow-management-workflow-definition.entity-DFN7awRu.mjs.map +1 -0
- package/fesm2022/acorex-modules-workflow-management-workflow-instance.entity-DcqLomn4.mjs +256 -0
- package/fesm2022/acorex-modules-workflow-management-workflow-instance.entity-DcqLomn4.mjs.map +1 -0
- package/fesm2022/{acorex-modules-workflow-management-workflow-run-history-popup.component-D1A_EHNk.mjs → acorex-modules-workflow-management-workflow-run-history-popup.component-FLqOdI2t.mjs} +7 -6
- package/fesm2022/acorex-modules-workflow-management-workflow-run-history-popup.component-FLqOdI2t.mjs.map +1 -0
- package/fesm2022/{acorex-modules-workflow-management-workflow-task-popover.component-CHvHPHt9.mjs → acorex-modules-workflow-management-workflow-task-popover.component-Cvbzknxk.mjs} +4 -4
- package/fesm2022/acorex-modules-workflow-management-workflow-task-popover.component-Cvbzknxk.mjs.map +1 -0
- package/fesm2022/acorex-modules-workflow-management.mjs +1 -1
- package/fesm2022/{acorex-modules-workplacesafety-management-hazard-ppe-rule-status.provider-CsJpSfdA.mjs → acorex-modules-workplacesafety-management-hazard-ppe-rule-status.provider-D1a0CBhs.mjs} +2 -2
- package/fesm2022/acorex-modules-workplacesafety-management-hazard-ppe-rule-status.provider-D1a0CBhs.mjs.map +1 -0
- package/fesm2022/{acorex-modules-workplacesafety-management-hazard-status.provider-CmtTvpk0.mjs → acorex-modules-workplacesafety-management-hazard-status.provider-v1cFaa3q.mjs} +2 -2
- package/fesm2022/acorex-modules-workplacesafety-management-hazard-status.provider-v1cFaa3q.mjs.map +1 -0
- package/fesm2022/{acorex-modules-workplacesafety-management-ppe-item-status.provider-Bx2yqUVH.mjs → acorex-modules-workplacesafety-management-ppe-item-status.provider-VH_Bp0l5.mjs} +2 -2
- package/fesm2022/acorex-modules-workplacesafety-management-ppe-item-status.provider-VH_Bp0l5.mjs.map +1 -0
- package/fesm2022/acorex-modules-workplacesafety-management.mjs +548 -1214
- package/fesm2022/acorex-modules-workplacesafety-management.mjs.map +1 -1
- package/package.json +2 -18
- package/types/acorex-modules-ai-management.d.ts +34 -35
- package/types/acorex-modules-application-management.d.ts +47 -23
- package/types/acorex-modules-assessment-management.d.ts +677 -683
- package/types/acorex-modules-asset-management.d.ts +79 -96
- package/types/acorex-modules-auth.d.ts +9 -2
- package/types/acorex-modules-business-core.d.ts +64 -72
- package/types/acorex-modules-calendar-management.d.ts +4 -4
- package/types/acorex-modules-common.d.ts +117 -11
- package/types/acorex-modules-content-management.d.ts +31 -24
- package/types/acorex-modules-conversation.d.ts +73 -74
- package/types/acorex-modules-customer-management.d.ts +55 -69
- package/types/acorex-modules-dashboard-management.d.ts +66 -64
- package/types/acorex-modules-data-management.d.ts +22 -100
- package/types/acorex-modules-document-management.d.ts +40 -47
- package/types/acorex-modules-financial-core.d.ts +69 -69
- package/types/acorex-modules-form-template-management.d.ts +2 -4
- package/types/acorex-modules-health-core.d.ts +29 -241
- package/types/acorex-modules-help-desk.d.ts +38 -44
- package/types/acorex-modules-human-capital-management.d.ts +54 -67
- package/types/acorex-modules-learning-management.d.ts +2 -2
- package/types/acorex-modules-locale-management.d.ts +4 -4
- package/types/acorex-modules-location-management.d.ts +67 -67
- package/types/acorex-modules-maintenance-management.d.ts +43 -45
- package/types/acorex-modules-measurement-core.d.ts +106 -106
- package/types/acorex-modules-meeting-management.d.ts +23 -31
- package/types/acorex-modules-notification-management.d.ts +20 -19
- package/types/acorex-modules-order-management.d.ts +39 -39
- package/types/acorex-modules-organization-management.d.ts +109 -137
- package/types/acorex-modules-person-core.d.ts +52 -73
- package/types/acorex-modules-platform-management.d.ts +3 -1
- package/types/acorex-modules-procurement-management.d.ts +3 -1
- package/types/acorex-modules-product-catalog.d.ts +6 -13
- package/types/acorex-modules-project-management.d.ts +15 -16
- package/types/acorex-modules-report-management.d.ts +4 -3
- package/types/acorex-modules-reservation-management.d.ts +3 -3
- package/types/acorex-modules-risk-management.d.ts +54 -57
- package/types/acorex-modules-security-management.d.ts +63 -65
- package/types/acorex-modules-settings-management.d.ts +1 -15
- package/types/acorex-modules-subscription-management.d.ts +3 -4
- package/types/acorex-modules-supplier-management.d.ts +4 -4
- package/types/acorex-modules-system-insight.d.ts +3 -4
- package/types/acorex-modules-task-management.d.ts +205 -206
- package/types/acorex-modules-tenant-management.d.ts +4 -5
- package/types/acorex-modules-workflow-management.d.ts +4 -23
- package/types/acorex-modules-workplacesafety-management.d.ts +16 -153
- package/fesm2022/acorex-modules-ai-management-index-1AKm3Wpv.mjs.map +0 -1
- package/fesm2022/acorex-modules-ai-management-index-D-oYCWiP.mjs.map +0 -1
- package/fesm2022/acorex-modules-ai-management-index-IOX4YfSO.mjs.map +0 -1
- package/fesm2022/acorex-modules-ai-management-index-KMGY_nWq.mjs.map +0 -1
- package/fesm2022/acorex-modules-ai-management-index-r6kkpdsP.mjs.map +0 -1
- package/fesm2022/acorex-modules-application-management-application-status.provider-BmTGAssq.mjs.map +0 -1
- package/fesm2022/acorex-modules-assessment-management-acorex-modules-assessment-management-CLXKpUoU.mjs.map +0 -1
- package/fesm2022/acorex-modules-assessment-management-assessment-case-status.provider-rAq2m3xt.mjs.map +0 -1
- package/fesm2022/acorex-modules-assessment-management-assessment-session-answers-view.util-DECCIZSO.mjs.map +0 -1
- package/fesm2022/acorex-modules-assessment-management-assessment-session-status.provider-B-0MdMq1.mjs.map +0 -1
- package/fesm2022/acorex-modules-assessment-management-fill-assessment-session.command-pLGZAFqT.mjs.map +0 -1
- package/fesm2022/acorex-modules-assessment-management-index-Cj5KtvVT.mjs.map +0 -1
- package/fesm2022/acorex-modules-assessment-management-index-ClRMor3R.mjs.map +0 -1
- package/fesm2022/acorex-modules-assessment-management-index-DDhc6vR7.mjs.map +0 -1
- package/fesm2022/acorex-modules-assessment-management-index-VYBOM8GR.mjs.map +0 -1
- package/fesm2022/acorex-modules-assessment-management-preview-question.command-Bgqajt80.mjs.map +0 -1
- package/fesm2022/acorex-modules-assessment-management-preview-questionnaire.command-B84qnNRw.mjs.map +0 -1
- package/fesm2022/acorex-modules-assessment-management-question-bank-interface-editor-widget-edit.component-CyZGi_Zx.mjs.map +0 -1
- package/fesm2022/acorex-modules-assessment-management-questionnaire-viewer-popup.component-CRQjv1Vz.mjs.map +0 -1
- package/fesm2022/acorex-modules-assessment-management-review-assessment-session.command-Dgaf88SW.mjs.map +0 -1
- package/fesm2022/acorex-modules-assessment-management-view-session-answers.command-CocxFTxZ.mjs.map +0 -1
- package/fesm2022/acorex-modules-asset-management-asset-rental-history-status.provider-_iNFw6nf.mjs.map +0 -1
- package/fesm2022/acorex-modules-asset-management-index-BE9Pt9Yl.mjs.map +0 -1
- package/fesm2022/acorex-modules-asset-management-index-BGnVFHyV.mjs.map +0 -1
- package/fesm2022/acorex-modules-asset-management-index-BNW-nI4M.mjs.map +0 -1
- package/fesm2022/acorex-modules-asset-management-index-BQRNWXnd.mjs.map +0 -1
- package/fesm2022/acorex-modules-asset-management-index-BmydXxB7.mjs.map +0 -1
- package/fesm2022/acorex-modules-asset-management-index-Bza8Y2Qq.mjs.map +0 -1
- package/fesm2022/acorex-modules-asset-management-index-CBoHnVCB.mjs.map +0 -1
- package/fesm2022/acorex-modules-asset-management-index-DDyvfemO.mjs.map +0 -1
- package/fesm2022/acorex-modules-auth-acorex-modules-auth-DBZfh3pH.mjs.map +0 -1
- package/fesm2022/acorex-modules-auth-profile-page.component-B-qdKgOT.mjs.map +0 -1
- package/fesm2022/acorex-modules-calendar-management-index-DIxSknUT.mjs +0 -6
- package/fesm2022/acorex-modules-calendar-management-index-DIxSknUT.mjs.map +0 -1
- package/fesm2022/acorex-modules-calendar-management-index-pvTUhYWL.mjs +0 -6
- package/fesm2022/acorex-modules-calendar-management-index-pvTUhYWL.mjs.map +0 -1
- package/fesm2022/acorex-modules-calendar-management-index-xkdBRrFw.mjs +0 -6
- package/fesm2022/acorex-modules-calendar-management-index-xkdBRrFw.mjs.map +0 -1
- package/fesm2022/acorex-modules-contact-core-acorex-modules-contact-core-D9-WvwGJ.mjs +0 -425
- package/fesm2022/acorex-modules-contact-core-acorex-modules-contact-core-D9-WvwGJ.mjs.map +0 -1
- package/fesm2022/acorex-modules-contact-core-entity.provider-Cl4zx8WX.mjs +0 -35
- package/fesm2022/acorex-modules-contact-core-entity.provider-Cl4zx8WX.mjs.map +0 -1
- package/fesm2022/acorex-modules-contact-core-menu.provider-DfUbrqFh.mjs +0 -57
- package/fesm2022/acorex-modules-contact-core-menu.provider-DfUbrqFh.mjs.map +0 -1
- package/fesm2022/acorex-modules-contact-core-permission-definition.provider-Dni6YOWm.mjs +0 -24
- package/fesm2022/acorex-modules-contact-core-permission-definition.provider-Dni6YOWm.mjs.map +0 -1
- package/fesm2022/acorex-modules-contact-core.mjs +0 -2
- package/fesm2022/acorex-modules-contact-core.mjs.map +0 -1
- package/fesm2022/acorex-modules-content-management-acorex-modules-content-management-DSdJ2hZ-.mjs.map +0 -1
- package/fesm2022/acorex-modules-content-management-permission-definition.provider-DRVW7Xxa.mjs.map +0 -1
- package/fesm2022/acorex-modules-conversation-acorex-modules-conversation-DtFH9LbP.mjs.map +0 -1
- package/fesm2022/acorex-modules-customer-management-index-7teVSkdT.mjs.map +0 -1
- package/fesm2022/acorex-modules-customer-management-index-B0wUbd2e.mjs.map +0 -1
- package/fesm2022/acorex-modules-customer-management-index-CQLsaDJ-.mjs.map +0 -1
- package/fesm2022/acorex-modules-customer-management-index-CQWjFZ-D.mjs.map +0 -1
- package/fesm2022/acorex-modules-customer-management-index-DHaf2JAF.mjs.map +0 -1
- package/fesm2022/acorex-modules-customer-management-index-Df-6hCzG.mjs.map +0 -1
- package/fesm2022/acorex-modules-customer-management-index-DwPwxZI6.mjs.map +0 -1
- package/fesm2022/acorex-modules-dashboard-management-acorex-modules-dashboard-management-d_3MEOVx.mjs.map +0 -1
- package/fesm2022/acorex-modules-dashboard-management-index-0npgb7TY.mjs.map +0 -1
- package/fesm2022/acorex-modules-data-management-contracts.mjs +0 -351
- package/fesm2022/acorex-modules-data-management-contracts.mjs.map +0 -1
- package/fesm2022/acorex-modules-health-core-start-health-record-flow.command-BzGYbiw_.mjs +0 -257
- package/fesm2022/acorex-modules-health-core-start-health-record-flow.command-BzGYbiw_.mjs.map +0 -1
- package/fesm2022/acorex-modules-help-desk-acorex-modules-help-desk-AWSV_TiH.mjs.map +0 -1
- package/fesm2022/acorex-modules-human-capital-management-acorex-modules-human-capital-management-BQ7fkZVA.mjs.map +0 -1
- package/fesm2022/acorex-modules-human-capital-management-approve-leave-request.command-8MwfTrgO.mjs.map +0 -1
- package/fesm2022/acorex-modules-human-capital-management-assign-position-assignment.command-DJft6ua8.mjs.map +0 -1
- package/fesm2022/acorex-modules-human-capital-management-cancel-leave-request.command-r5zEA5Oa.mjs.map +0 -1
- package/fesm2022/acorex-modules-human-capital-management-edit-signature.command-9XI2V0Yt.mjs.map +0 -1
- package/fesm2022/acorex-modules-human-capital-management-reject-leave-request.command-Ba2f-i0A.mjs.map +0 -1
- package/fesm2022/acorex-modules-human-capital-management-revoke-position-assignment.command-g9p7YKJ1.mjs.map +0 -1
- package/fesm2022/acorex-modules-human-capital-management-start-leave-request-flow.command-BPFrBjWG.mjs.map +0 -1
- package/fesm2022/acorex-modules-human-capital-management-start-lifecycle-event-flow.command-C62jEjUD.mjs.map +0 -1
- package/fesm2022/acorex-modules-jira-management-index-BGnRJkkx.mjs +0 -179
- package/fesm2022/acorex-modules-jira-management-index-BGnRJkkx.mjs.map +0 -1
- package/fesm2022/acorex-modules-jira-management-index-BXgxorT1.mjs +0 -155
- package/fesm2022/acorex-modules-jira-management-index-BXgxorT1.mjs.map +0 -1
- package/fesm2022/acorex-modules-jira-management-index-Bw8ivjR_.mjs +0 -177
- package/fesm2022/acorex-modules-jira-management-index-Bw8ivjR_.mjs.map +0 -1
- package/fesm2022/acorex-modules-jira-management-index-CJNrjlaV.mjs +0 -143
- package/fesm2022/acorex-modules-jira-management-index-CJNrjlaV.mjs.map +0 -1
- package/fesm2022/acorex-modules-jira-management-index-CjgROlD2.mjs +0 -399
- package/fesm2022/acorex-modules-jira-management-index-CjgROlD2.mjs.map +0 -1
- package/fesm2022/acorex-modules-jira-management-index-D0vXHcrg.mjs +0 -372
- package/fesm2022/acorex-modules-jira-management-index-D0vXHcrg.mjs.map +0 -1
- package/fesm2022/acorex-modules-jira-management-index-D2wdvXoF.mjs +0 -123
- package/fesm2022/acorex-modules-jira-management-index-D2wdvXoF.mjs.map +0 -1
- package/fesm2022/acorex-modules-jira-management-index-DPRA7BCN.mjs +0 -281
- package/fesm2022/acorex-modules-jira-management-index-DPRA7BCN.mjs.map +0 -1
- package/fesm2022/acorex-modules-jira-management-index-DpCX35Ob.mjs +0 -222
- package/fesm2022/acorex-modules-jira-management-index-DpCX35Ob.mjs.map +0 -1
- package/fesm2022/acorex-modules-jira-management.mjs +0 -479
- package/fesm2022/acorex-modules-jira-management.mjs.map +0 -1
- package/fesm2022/acorex-modules-learning-management-index-9Sessbgl.mjs.map +0 -1
- package/fesm2022/acorex-modules-learning-management-index-B2ZI7U9N.mjs.map +0 -1
- package/fesm2022/acorex-modules-learning-management-index-Cb6YmwUo.mjs.map +0 -1
- package/fesm2022/acorex-modules-learning-management-index-CnBTaY0y.mjs.map +0 -1
- package/fesm2022/acorex-modules-learning-management-index-CnXPymvw.mjs.map +0 -1
- package/fesm2022/acorex-modules-learning-management-index-CtfhNokr.mjs.map +0 -1
- package/fesm2022/acorex-modules-learning-management-index-D3O6qDpQ.mjs.map +0 -1
- package/fesm2022/acorex-modules-learning-management-index-D4Yh8EmO.mjs.map +0 -1
- package/fesm2022/acorex-modules-learning-management-index-DJ4H2IOW.mjs.map +0 -1
- package/fesm2022/acorex-modules-learning-management-index-DPb7aOIM.mjs.map +0 -1
- package/fesm2022/acorex-modules-learning-management-index-Da29yyOM.mjs.map +0 -1
- package/fesm2022/acorex-modules-learning-management-index-DdgLO2B8.mjs.map +0 -1
- package/fesm2022/acorex-modules-learning-management-index-DnUv_C6e.mjs.map +0 -1
- package/fesm2022/acorex-modules-learning-management-index-Dxutf3MN.mjs.map +0 -1
- package/fesm2022/acorex-modules-learning-management-index-pWAVoZBF.mjs.map +0 -1
- package/fesm2022/acorex-modules-locale-management-contracts.mjs +0 -77
- package/fesm2022/acorex-modules-locale-management-contracts.mjs.map +0 -1
- package/fesm2022/acorex-modules-maintenance-management-failure-register-status.provider-DM5m-VsU.mjs.map +0 -1
- package/fesm2022/acorex-modules-maintenance-management-work-order-status.provider-BvnpsgY3.mjs +0 -181
- package/fesm2022/acorex-modules-maintenance-management-work-order-status.provider-BvnpsgY3.mjs.map +0 -1
- package/fesm2022/acorex-modules-notification-management-acorex-modules-notification-management-W0YINm5V.mjs.map +0 -1
- package/fesm2022/acorex-modules-order-management-bulk-buy-order-status.provider-C6HBZfQ_.mjs.map +0 -1
- package/fesm2022/acorex-modules-order-management-entity.provider-BVlBsDWW.mjs.map +0 -1
- package/fesm2022/acorex-modules-order-management-index-BeIiBPSs.mjs.map +0 -1
- package/fesm2022/acorex-modules-order-management-index-DUMuaQGE.mjs.map +0 -1
- package/fesm2022/acorex-modules-order-management-index-Du2PsO2f.mjs.map +0 -1
- package/fesm2022/acorex-modules-order-management-index-QHrmfhTE.mjs.map +0 -1
- package/fesm2022/acorex-modules-order-management-member-order-status.provider-CKIrQc_7.mjs.map +0 -1
- package/fesm2022/acorex-modules-organization-management-acorex-modules-organization-management-BALTqTo-.mjs +0 -4119
- package/fesm2022/acorex-modules-organization-management-acorex-modules-organization-management-BALTqTo-.mjs.map +0 -1
- package/fesm2022/acorex-modules-organization-management-add-business-unit-to-business-unit.command-23eGqIxP.mjs.map +0 -1
- package/fesm2022/acorex-modules-organization-management-add-position-to-business-unit.command-B4C1jxs3.mjs.map +0 -1
- package/fesm2022/acorex-modules-organization-management-add-team-to-business-unit.command-B5vh3rwS.mjs.map +0 -1
- package/fesm2022/acorex-modules-organization-management-entity.provider-3IL0cFTC.mjs.map +0 -1
- package/fesm2022/acorex-modules-organization-management-feature-definition.provider-DsSdRjcX.mjs.map +0 -1
- package/fesm2022/acorex-modules-organization-management-job-definition-pages-component.provider-BRovo6NC.mjs.map +0 -1
- package/fesm2022/acorex-modules-organization-management-job-definition-responsibilities-page.component-CNtaaDfp.mjs.map +0 -1
- package/fesm2022/acorex-modules-organization-management-job-definition-skills-page.component-D1ymUBeQ.mjs.map +0 -1
- package/fesm2022/acorex-modules-organization-management-job-level.datasource-_6F_fvTn.mjs.map +0 -1
- package/fesm2022/acorex-modules-organization-management-menu.provider-Dt7bfM-4.mjs.map +0 -1
- package/fesm2022/acorex-modules-organization-management-org-chart-default-node-contribution.provider-Cf789vAr.mjs.map +0 -1
- package/fesm2022/acorex-modules-organization-management-org-chart-employee-flyout-contribution.provider-CL32hDBZ.mjs.map +0 -1
- package/fesm2022/acorex-modules-organization-management-org-chart-position-employee-node-contribution.provider-CpNTM-Ts.mjs.map +0 -1
- package/fesm2022/acorex-modules-organization-management-org-chart-ux-node-contribution.provider-D-qPXdfm.mjs.map +0 -1
- package/fesm2022/acorex-modules-organization-management-org-chart.page-BglvBI8J.mjs.map +0 -1
- package/fesm2022/acorex-modules-organization-management-permission-definition.provider-BOz0kQKZ.mjs.map +0 -1
- package/fesm2022/acorex-modules-organization-management-remove-position-from-business-unit.command-CcfOkd7Z.mjs.map +0 -1
- package/fesm2022/acorex-modules-organization-management-responsibilities-matrix.component-Bw22pUUE.mjs.map +0 -1
- package/fesm2022/acorex-modules-platform-management-acorex-modules-platform-management-CdMzH5Qu.mjs.map +0 -1
- package/fesm2022/acorex-modules-report-management-report-runner-root-page.component-DaPEmTm9.mjs.map +0 -1
- package/fesm2022/acorex-modules-reservation-management-index-DNLOtNNW.mjs.map +0 -1
- package/fesm2022/acorex-modules-reservation-management-index-DSDnPzHh.mjs.map +0 -1
- package/fesm2022/acorex-modules-reservation-management-index-DySHYsCz.mjs.map +0 -1
- package/fesm2022/acorex-modules-settings-management-permission-definition.provider-CfCLhvZi.mjs.map +0 -1
- package/fesm2022/acorex-modules-settings-management-setting-page.component-B7wP0i5k.mjs.map +0 -1
- package/fesm2022/acorex-modules-task-management-task-board.page-DhPzh72z.mjs.map +0 -1
- package/fesm2022/acorex-modules-workflow-management-acorex-modules-workflow-management-AgY9tA7s.mjs.map +0 -1
- package/fesm2022/acorex-modules-workflow-management-execute-workflow-with-input.command-DUYGWSu8.mjs +0 -127
- package/fesm2022/acorex-modules-workflow-management-execute-workflow-with-input.command-DUYGWSu8.mjs.map +0 -1
- package/fesm2022/acorex-modules-workflow-management-execute-workflow.command-DSgQNTtL.mjs +0 -142
- package/fesm2022/acorex-modules-workflow-management-execute-workflow.command-DSgQNTtL.mjs.map +0 -1
- package/fesm2022/acorex-modules-workflow-management-index-78oCkrbR.mjs.map +0 -1
- package/fesm2022/acorex-modules-workflow-management-index-DmnrXTPk.mjs.map +0 -1
- package/fesm2022/acorex-modules-workflow-management-save-workflow-definition-activities.command-aLlfQxaT.mjs.map +0 -1
- package/fesm2022/acorex-modules-workflow-management-workflow-configurator-widget-column.component-Ph_BjL_5.mjs.map +0 -1
- package/fesm2022/acorex-modules-workflow-management-workflow-configurator-widget-edit.component-CfKTRKNQ.mjs.map +0 -1
- package/fesm2022/acorex-modules-workflow-management-workflow-run-history-popup.component-D1A_EHNk.mjs.map +0 -1
- package/fesm2022/acorex-modules-workflow-management-workflow-task-popover.component-CHvHPHt9.mjs.map +0 -1
- package/fesm2022/acorex-modules-workplacesafety-management-hazard-ppe-rule-status.provider-CsJpSfdA.mjs.map +0 -1
- package/fesm2022/acorex-modules-workplacesafety-management-hazard-risk-status.provider-CdzRLBqN.mjs +0 -42
- package/fesm2022/acorex-modules-workplacesafety-management-hazard-risk-status.provider-CdzRLBqN.mjs.map +0 -1
- package/fesm2022/acorex-modules-workplacesafety-management-hazard-status.provider-CmtTvpk0.mjs.map +0 -1
- package/fesm2022/acorex-modules-workplacesafety-management-ppe-item-status.provider-Bx2yqUVH.mjs.map +0 -1
- package/types/acorex-modules-contact-core.d.ts +0 -70
- package/types/acorex-modules-data-management-contracts.d.ts +0 -256
- package/types/acorex-modules-jira-management.d.ts +0 -354
- package/types/acorex-modules-locale-management-contracts.d.ts +0 -66
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"acorex-modules-conversation-acorex-modules-conversation-DtFH9LbP.mjs","sources":["../../../../libs/modules/conversation/src/lib/contracts/root.config.ts","../../../../libs/modules/conversation/src/lib/contracts/comment-entity-data.ts","../../../../libs/modules/conversation/src/lib/contracts/menu.keys.ts","../../../../libs/modules/conversation/src/lib/contracts/permission.keys.ts","../../../../libs/modules/conversation/src/lib/contracts/index.ts","../../../../libs/modules/conversation/src/lib/entities/message/message.entity.ts","../../../../libs/modules/conversation/src/lib/entities/room/room.entity.ts","../../../../libs/modules/conversation/src/lib/entities/tab/tab.entity.ts","../../../../libs/modules/conversation/src/lib/entities/index.ts","../../../../libs/modules/conversation/src/lib/entity.provider.ts","../../../../libs/modules/conversation/src/lib/features/commands/conversation-command.keys.ts","../../../../libs/modules/conversation/src/lib/features/chat/plugins/utils/chat-ai-target.util.ts","../../../../libs/modules/conversation/src/lib/features/chat/services/assist-chat-launcher.service.ts","../../../../libs/modules/conversation/src/lib/features/search/assist-search.provider.ts","../../../../libs/modules/conversation/src/lib/features/search/assist-search-definition.provider.ts","../../../../libs/modules/conversation/src/lib/manifest.ts","../../../../libs/modules/conversation/src/lib/menu.provider.ts","../../../../libs/modules/conversation/src/lib/permission-definition.provider.ts","../../../../libs/modules/conversation/src/lib/badge.provider.ts","../../../../libs/modules/conversation/src/lib/features/background-operation/conversation-assist-background-operation.keys.ts","../../../../libs/modules/conversation/src/lib/features/background-operation/conversation-assist-background-operation.handler.ts","../../../../libs/modules/conversation/src/lib/features/chat/plugins/actions/assist-chat-debug-mode.service.ts","../../../../libs/modules/conversation/src/lib/features/chat/plugins/utils/assist-suggestion-chips.util.ts","../../../../libs/modules/conversation/src/lib/features/chat/plugins/shared/assist-suggestion-chips.component.ts","../../../../libs/modules/conversation/src/lib/features/chat/plugins/empty-state/chat-message-list-empty-fallback.component.ts","../../../../libs/modules/conversation/src/lib/features/chat/plugins/services/chat-conversation-apis.abstract.ts","../../../../libs/modules/conversation/src/lib/features/chat/plugins/composer/chat-assist-composer-starter-prompts.component.ts","../../../../libs/modules/conversation/src/lib/features/chat/plugins/empty-state/chat-empty-assist-composer.component.ts","../../../../libs/modules/conversation/src/lib/features/chat/plugins/side-bar/chat-with-assist-dialog.component.ts","../../../../libs/modules/conversation/src/lib/features/chat/plugins/side-bar/chat-sidebar-new-actions.component.ts","../../../../libs/modules/conversation/src/lib/features/chat/chat.component.ts","../../../../libs/modules/conversation/src/lib/features/chat/chat.component.html","../../../../libs/modules/conversation/src/lib/features/chat/plugins/services/chat-attachment-persist.ts","../../../../libs/modules/conversation/src/lib/features/chat/plugins/utils/assist-bot-transcript.util.ts","../../../../libs/modules/conversation/src/lib/features/chat/plugins/utils/assist-response-status.util.ts","../../../../libs/modules/conversation/src/lib/features/chat/plugins/utils/assist-peer-participant.util.ts","../../../../libs/modules/conversation/src/lib/features/comment/comment.service.ts","../../../../libs/modules/conversation/src/lib/features/comment/comment-realtime.service.ts","../../../../libs/modules/conversation/src/lib/features/comment/comment-management.service.ts","../../../../libs/modules/conversation/src/lib/features/comment/comment-notification.helper.ts","../../../../libs/modules/conversation/src/lib/features/comment/comment.component.ts","../../../../libs/modules/conversation/src/lib/features/comment/comment.component.html","../../../../libs/modules/conversation/src/lib/features/comment/comments.plugin.ts","../../../../libs/modules/conversation/src/lib/features/comment/popup/comment-popup.component.ts","../../../../libs/modules/conversation/src/lib/features/comment/popup/comment-popup.component.html","../../../../libs/modules/conversation/src/lib/features/comment/widget/comment-widget-view.component.ts","../../../../libs/modules/conversation/src/lib/features/comment/widget/comment-widget.config.ts","../../../../libs/modules/conversation/src/lib/features/comment/workflow/comment.workflow.ts","../../../../libs/modules/conversation/src/lib/features/chat/plugins/utils/assist-debug-information.util.ts","../../../../libs/modules/conversation/src/lib/features/chat/plugins/actions/copy-debug-information.actions.ts","../../../../libs/modules/conversation/src/lib/features/chat/plugins/tabs/chat-conversation-tabs.ts","../../../../libs/modules/conversation/src/lib/features/chat/plugins/actions/rename-assist-conversation.action.ts","../../../../libs/modules/conversation/src/lib/features/chat/plugins/composer/chat-voice-recorder.component.ts","../../../../libs/modules/conversation/src/lib/features/chat/plugins/composer/chat-voice-recording-composer.action.ts","../../../../libs/modules/conversation/src/lib/features/chat/plugins/info-bar-actions/chat-info-bar-assist-model-action.component.ts","../../../../libs/modules/conversation/src/lib/features/chat/plugins/info-bar-actions/chat-info-bar-actions.ts","../../../../libs/modules/conversation/src/lib/features/chat/plugins/utils/assist-delegated-agent-detail.dialog.ts","../../../../libs/modules/conversation/src/lib/features/chat/plugins/utils/assist-segment-direction.util.ts","../../../../libs/modules/conversation/src/lib/features/chat/plugins/message-renderers/assist-bot-audio-line.component.ts","../../../../libs/modules/conversation/src/lib/features/chat/plugins/message-renderers/assist-bot-image-line.component.ts","../../../../libs/modules/conversation/src/lib/features/chat/plugins/message-renderers/assist-bot-file-line.component.ts","../../../../libs/modules/conversation/src/lib/features/chat/plugins/message-renderers/node-message-renderer.component.ts","../../../../libs/modules/conversation/src/lib/features/chat/plugins/message-renderers/assist-message-renderer.component.ts","../../../../libs/modules/conversation/src/lib/features/chat/plugins/message-renderers/assist-message-renderer.component.html","../../../../libs/modules/conversation/src/lib/features/chat/plugins/message-renderers/assist-message-renderer.plugin.ts","../../../../libs/modules/conversation/src/lib/features/chat/plugins/message-renderers/node-message-renderer.plugin.ts","../../../../libs/modules/conversation/src/lib/features/chat/chat-conversation.providers.ts","../../../../libs/modules/conversation/src/lib/features/chat/chat-notification.provider.ts","../../../../libs/modules/conversation/src/lib/features/comment/comment-notification.provider.ts","../../../../libs/modules/conversation/src/lib/features/comment/comments-page/comments-page-component.provider.ts","../../../../libs/modules/conversation/src/lib/widget-definition.provider.ts","../../../../libs/modules/conversation/src/lib/conversation.module.ts","../../../../libs/modules/conversation/src/acorex-modules-conversation.ts"],"sourcesContent":["const config = {\n i18n: 'conversation',\n module: 'Conversation',\n route: 'chat',\n};\n\nexport const RootConfig = {\n config,\n module: {\n route: 'conversation',\n name: config.module,\n title: `@${config.i18n}:module.title`,\n icon: 'fa-light fa-comments',\n },\n entities: {\n room: {\n name: 'room',\n title: `t(\"room.plural-title\", { scope: \"${config.i18n}\" })`,\n source: `${config.module}.Room`,\n icon: 'fa-light fa-comments',\n },\n message: {\n name: 'message',\n title: `t(\"message.plural-title\", { scope: \"${config.i18n}\" })`,\n source: `${config.module}.Message`,\n icon: 'fa-light fa-message',\n },\n tab: {\n name: 'tab',\n title: `t(\"tab.plural-title\", { scope: \"${config.i18n}\" })`,\n source: `${config.module}.Tab`,\n icon: 'fa-light fa-folder',\n },\n },\n};\n","//#region ---- Comment entity reference ----\n\nexport interface AXMCommentEntityData {\n entityId: string;\n entityTypeId: string;\n moduleName?: string;\n entityName?: string;\n}\n\n//#endregion\n","export const AXPConversationMenuKeys = {\n Conversations: 'Conversation:Menu:Conversations',\n} as const;\n\n","export const AXMPermissionsKeys = {\n Conversation: {\n Management: 'Conversation:Permission:Management',\n },\n};\n","//#region ---- Contracts barrel ----\n\nexport * from './comment-entity-data';\n\nexport * from './menu.keys';\nexport * from './permission.keys';\n\nexport * from './root.config';\n\n//#endregion","import { AXPEntity, AXPEntityCommandScope, AXPWidgetsCatalog, createAllQueryView, entityMasterCrudActions, entityMasterRecordActions } from '@acorex/platform/contracts';\nimport { RootConfig } from '../../contracts';\n\nexport async function messageFactory(): Promise<AXPEntity | null> {\n const i18n = RootConfig.config.i18n;\n\n const entityDef: AXPEntity = {\n module: RootConfig.module.name,\n name: RootConfig.entities.message.name,\n title: RootConfig.entities.message.title,\n icon: RootConfig.entities.message.icon,\n formats: {\n individual: RootConfig.entities.message.title,\n plural: RootConfig.entities.message.title,\n searchResult: {\n title: '{{ title }}',\n description: RootConfig.module.title,\n },\n },\n relatedEntities: [],\n groups: [\n {\n id: 'section',\n title: RootConfig.entities.message.title,\n },\n ],\n properties: [\n {\n name: 'name',\n title: '@general:terms.common.name',\n groupId: 'section',\n options: {\n sort: {\n enabled: true,\n },\n filter: {\n advance: {\n enabled: true,\n },\n inline: {\n enabled: false,\n },\n },\n },\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsCatalog.text,\n },\n },\n validations: [\n {\n rule: 'required',\n },\n {\n rule: 'maxLength',\n options: { value: 1000 },\n },\n ],\n },\n\n {\n name: 'title',\n title: '@general:terms.common.title',\n groupId: 'section',\n options: {\n sort: {\n enabled: true,\n },\n filter: {\n advance: {\n enabled: true,\n },\n inline: {\n enabled: false,\n },\n },\n },\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsCatalog.text,\n },\n },\n validations: [\n {\n rule: 'required',\n },\n {\n rule: 'maxLength',\n options: { value: 1000 },\n },\n ],\n },\n ],\n columns: [{ name: 'name' }, { name: 'title' }],\n\n\n interfaces: {\n master: {\n create: {\n sections: [\n {\n id: 'section',\n },\n ],\n properties: [\n {\n name: 'name',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n order: 1,\n },\n },\n },\n },\n\n {\n name: 'title',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n order: 2,\n },\n },\n },\n },\n ],\n },\n update: {\n sections: [\n {\n id: 'section',\n },\n ],\n properties: [\n {\n name: 'name',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n order: 1,\n },\n },\n },\n },\n\n {\n name: 'title',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n order: 2,\n },\n },\n },\n },\n ],\n },\n single: {\n title: '{{title}}',\n sections: [\n {\n id: 'section',\n layout: {\n positions: {\n lg: {\n colSpan: 12,\n },\n },\n },\n },\n ],\n properties: [\n {\n name: 'name',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n order: 1,\n },\n },\n },\n },\n\n {\n name: 'title',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n order: 2,\n },\n },\n },\n },\n ],\n actions: [...entityMasterRecordActions()],\n },\n list: {\n actions: [...entityMasterCrudActions()],\n views: [\n createAllQueryView({\n sorts: [{ name: 'name', dir: 'asc' }],\n }),\n ],\n },\n },\n },\n };\n\n return entityDef;\n}\n","import { AXPEntity, AXPEntityCommandScope, AXPWidgetsCatalog, createAllQueryView, entityMasterCrudActions, entityMasterRecordActions } from '@acorex/platform/contracts';\nimport { RootConfig } from '../../contracts';\n\nexport async function roomFactory(): Promise<AXPEntity | null> {\n const i18n = RootConfig.config.i18n;\n\n const entityDef: AXPEntity = {\n module: RootConfig.module.name,\n name: RootConfig.entities.room.name,\n title: RootConfig.entities.room.title,\n icon: RootConfig.entities.room.icon,\n formats: {\n individual: RootConfig.entities.room.title,\n plural: RootConfig.entities.room.title,\n searchResult: {\n title: '{{ title }}',\n description: RootConfig.module.title,\n },\n },\n relatedEntities: [],\n groups: [\n {\n id: 'section',\n title: RootConfig.entities.room.title,\n },\n ],\n properties: [\n {\n name: 'name',\n title: '@general:terms.common.name',\n groupId: 'section',\n options: {\n sort: {\n enabled: true,\n },\n filter: {\n advance: {\n enabled: true,\n },\n inline: {\n enabled: false,\n },\n },\n },\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsCatalog.text,\n },\n },\n validations: [\n {\n rule: 'required',\n },\n ],\n },\n\n {\n name: 'title',\n title: '@general:terms.common.title',\n groupId: 'section',\n options: {\n sort: {\n enabled: true,\n },\n filter: {\n advance: {\n enabled: true,\n },\n inline: {\n enabled: false,\n },\n },\n },\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsCatalog.text,\n },\n },\n validations: [\n {\n rule: 'required',\n },\n ],\n },\n ],\n columns: [{ name: 'name' }, { name: 'title' }],\n\n\n interfaces: {\n master: {\n create: {\n sections: [\n {\n id: 'section',\n },\n ],\n properties: [\n {\n name: 'name',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n order: 1,\n },\n },\n },\n },\n\n {\n name: 'title',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n order: 2,\n },\n },\n },\n },\n ],\n },\n update: {\n sections: [\n {\n id: 'section',\n },\n ],\n properties: [\n {\n name: 'name',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n order: 1,\n },\n },\n },\n },\n\n {\n name: 'title',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n order: 2,\n },\n },\n },\n },\n ],\n },\n single: {\n title: '{{title}}',\n sections: [\n {\n id: 'section',\n layout: {\n positions: {\n lg: {\n colSpan: 12,\n },\n },\n },\n },\n ],\n properties: [\n {\n name: 'name',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n order: 1,\n },\n },\n },\n },\n\n {\n name: 'title',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n order: 2,\n },\n },\n },\n },\n ],\n actions: [...entityMasterRecordActions()],\n },\n list: {\n actions: [...entityMasterCrudActions()],\n views: [\n createAllQueryView({\n sorts: [{ name: 'name', dir: 'asc' }],\n }),\n ],\n },\n },\n },\n };\n\n return entityDef;\n}\n","import { AXPEntity, AXPEntityCommandScope, AXPWidgetsCatalog, createAllQueryView, entityMasterCrudActions, entityMasterRecordActions } from '@acorex/platform/contracts';\nimport { RootConfig } from '../../contracts';\n\nexport async function tabFactory(): Promise<AXPEntity | null> {\n const i18n = RootConfig.config.i18n;\n\n const entityDef: AXPEntity = {\n module: RootConfig.module.name,\n name: RootConfig.entities.tab.name,\n title: RootConfig.entities.tab.title,\n icon: RootConfig.entities.tab.icon,\n formats: {\n individual: `t(\"tab.individual-title\", { scope: \"${i18n}\" })`,\n plural: RootConfig.entities.tab.title,\n searchResult: {\n title: '{{ title }}',\n description: RootConfig.module.title,\n },\n },\n plugins: [{ name: 'color' }],\n relatedEntities: [],\n groups: [\n {\n id: 'section',\n title: `t(\"tab.basic-info\", { scope: \"${i18n}\" })`,\n },\n ],\n properties: [\n {\n name: 'name',\n title: `t(\"tab.props.name\", { scope: \"${i18n}\" })`,\n groupId: 'section',\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsCatalog.text,\n },\n },\n validations: [{ rule: 'required' }],\n },\n {\n name: 'title',\n title: `t(\"tab.props.title\", { scope: \"${i18n}\" })`,\n groupId: 'section',\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsCatalog.text,\n },\n },\n validations: [{ rule: 'required' }],\n },\n {\n name: 'rooms',\n title: `t(\"tab.props.rooms\", { scope: \"${i18n}\" })`,\n groupId: 'section',\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsCatalog.lookup,\n options: {\n entity: `${RootConfig.module.name}.${RootConfig.entities.room.name}`,\n multiple: true,\n },\n },\n },\n },\n {\n name: 'excludeRooms',\n title: `t(\"tab.props.excludeRooms\", { scope: \"${i18n}\" })`,\n groupId: 'section',\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsCatalog.lookup,\n options: {\n entity: `${RootConfig.module.name}.${RootConfig.entities.room.name}`,\n multiple: true,\n },\n },\n },\n },\n {\n name: 'includeRooms',\n title: `t(\"tab.props.includeRooms\", { scope: \"${i18n}\" })`,\n groupId: 'section',\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsCatalog.lookup,\n options: {\n entity: `${RootConfig.module.name}.${RootConfig.entities.room.name}`,\n multiple: true,\n },\n },\n },\n },\n ],\n columns: [{ name: 'name' }, { name: 'title' }],\n\n\n interfaces: {\n master: {\n create: {\n sections: [{ id: 'section' }],\n properties: [\n { name: 'name', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'title', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'rooms', layout: { positions: { lg: { colSpan: 12 } } } },\n { name: 'excludeRooms', layout: { positions: { lg: { colSpan: 12 } } } },\n { name: 'includeRooms', layout: { positions: { lg: { colSpan: 12 } } } },\n ],\n },\n update: {\n sections: [{ id: 'section' }],\n properties: [\n { name: 'name', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'title', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'rooms', layout: { positions: { lg: { colSpan: 12 } } } },\n { name: 'excludeRooms', layout: { positions: { lg: { colSpan: 12 } } } },\n { name: 'includeRooms', layout: { positions: { lg: { colSpan: 12 } } } },\n ],\n },\n single: {\n title: '{{title}}',\n sections: [{ id: 'section' }],\n properties: [\n { name: 'name', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'title', layout: { positions: { lg: { colSpan: 6 } } } },\n ],\n actions: [...entityMasterRecordActions()],\n },\n list: {\n actions: [...entityMasterCrudActions()],\n views: [\n createAllQueryView({\n columns: ['name', 'title'],\n sorts: [{ name: 'name', dir: 'asc' }],\n }),\n ],\n },\n },\n },\n };\n\n return entityDef;\n}\n","// Entity Services\n// Entity Modules\n\nexport * from './message';\nexport * from './room';\nexport * from './tab';\n","import { AXPEntity } from '@acorex/platform/common';\nimport { AXPEntityDefinitionLoader, AXPEntityPreloadEntity } from '@acorex/platform/layout/entity';\nimport { Injectable } from '@angular/core';\nimport { RootConfig } from './contracts';\nimport { messageFactory, roomFactory, tabFactory } from './entities';\n\n@Injectable()\nexport class AXMConversationModuleEntityProvider implements AXPEntityDefinitionLoader {\n public preload(): AXPEntityPreloadEntity[] {\n const module = RootConfig.module.name;\n return Array.from(Object.values(RootConfig.entities)).map((entity: any) => ({\n module: module,\n entity: entity.name,\n }));\n }\n\n public async get(moduleName: string, entityName: string): Promise<AXPEntity | null> {\n switch (entityName) {\n case 'room':\n return roomFactory();\n case 'message':\n return messageFactory();\n case 'tab':\n return tabFactory();\n default:\n return null;\n }\n }\n\n async list(): Promise<{ name: string; module: string }[]> {\n const m = RootConfig.module.name;\n return Promise.resolve(\n Object.values(RootConfig.entities).map((e) => ({ name: e.name, module: m }))\n );\n }\n}\n","/** Starts a new bot conversation with the given AI assist model. */\nexport const CONVERSATION_START_ASSIST_CHAT_COMMAND = 'Conversation:StartAssistChat';\n\n/** Sends a user text message in the active assist chat, or starts a chat when {@code assistId} is provided. */\nexport const CONVERSATION_SEND_ASSIST_CHAT_MESSAGE_COMMAND = 'Conversation:SendAssistChatMessage';\n","//#region ---- Imports ----\n\nimport { RootConfig } from '@acorex/modules/ai-management';\nimport type { AXPMultiLanguageString } from '@acorex/platform/core';\nimport type { AXPEntityDefinitionRegistryService } from '@acorex/platform/layout/entity';\n\n//#endregion\n\n//#region ---- Types ----\n\n/** Row shown in Conversation “Chat with AI” pickers (catalog assist). */\nexport interface AXMChatAiTargetRow {\n id: string;\n name: string;\n title: AXPMultiLanguageString | string;\n description?: AXPMultiLanguageString | string;\n professionImageUrl?: string;\n}\n\n//#endregion\n\n//#region ---- Participant & metadata ----\n\n/** Synthetic bot participant id for assist chats. */\nexport function axmChatAiPeerParticipantId(catalogId: string): string {\n return `assist-${catalogId.trim()}`;\n}\n\n/** Conversation metadata for starting an AI chat from a picker row. */\nexport function axmBuildAiChatConversationMetadata(row: AXMChatAiTargetRow): Record<string, unknown> {\n return { assistId: row.id };\n}\n\n/** True when conversation metadata targets an assist row. */\nexport function axmConversationHasAiChat(\n conversation: { metadata?: Record<string, unknown> } | null | undefined,\n): boolean {\n const assistId = conversation?.metadata?.['assistId'];\n return typeof assistId === 'string' && assistId.trim().length > 0;\n}\n\n//#endregion\n\n//#region ---- Catalog load ----\n\ntype EntityListExecute = (req: {\n skip?: number;\n take?: number;\n sort?: { name: string; dir: string }[];\n}) => Promise<{ items: Record<string, unknown>[]; total: number }>;\n\n/** Loads assist rows for Conversation AI chat pickers. */\nexport async function axmLoadChatAiTargets(\n entityRegistry: AXPEntityDefinitionRegistryService,\n): Promise<AXMChatAiTargetRow[]> {\n const assists = await axmQueryEntityList(entityRegistry, RootConfig.entities.assist.name);\n\n return assists\n .map((raw) => ({\n id: String(raw['id'] ?? ''),\n name: String(raw['name'] ?? ''),\n title: raw['title'] as AXPMultiLanguageString | string,\n description: raw['description'] as AXPMultiLanguageString | string | undefined,\n professionImageUrl: typeof raw['professionImageUrl'] === 'string' ? raw['professionImageUrl'] : undefined,\n }))\n .filter((row) => row.id.trim().length > 0)\n .sort((a, b) => a.name.localeCompare(b.name, undefined, { sensitivity: 'base' }));\n}\n\n//#endregion\n\n//#region ---- Display & filter (dialog + global search) ----\n\n/** Resolves ML or plain string for search/display. */\nexport function axmResolveChatAiTargetText(\n resolveMl: (value: AXPMultiLanguageString) => string | undefined,\n value: AXPMultiLanguageString | string | undefined,\n): string {\n if (!value) {\n return '';\n }\n if (typeof value === 'string') {\n return value;\n }\n return resolveMl(value) ?? '';\n}\n\nexport function axmChatAiTargetDisplayName(\n resolveMl: (value: AXPMultiLanguageString) => string | undefined,\n row: AXMChatAiTargetRow,\n): string {\n return axmResolveChatAiTargetText(resolveMl, row.title).trim() || row.name.trim() || row.id;\n}\n\nexport function axmChatAiTargetDisplayDescription(\n resolveMl: (value: AXPMultiLanguageString) => string | undefined,\n row: AXMChatAiTargetRow,\n): string | undefined {\n if (!row.description) {\n return undefined;\n }\n const text = axmResolveChatAiTargetText(resolveMl, row.description).trim();\n return text || undefined;\n}\n\nexport function axmChatAiTargetAvatarUrl(row: AXMChatAiTargetRow): string | null {\n const url = row.professionImageUrl?.trim();\n return url ? url : null;\n}\n\n/** Fallback i18n key for rows with no catalog description. */\nexport function axmChatAiTargetShortcutDescriptionKey(): string {\n return '@conversation:search.assist.shortcut-description';\n}\n\n/** Same filter as {@link AXMChatWithAssistDialogComponent} target list search. */\nexport function axmFilterChatAiTargets(\n resolveMl: (value: AXPMultiLanguageString) => string | undefined,\n rows: AXMChatAiTargetRow[],\n query: string,\n): AXMChatAiTargetRow[] {\n const q = query.trim().toLowerCase();\n if (!q) {\n return rows;\n }\n return rows.filter((r) => {\n const titleText = axmResolveChatAiTargetText(resolveMl, r.title).toLowerCase();\n return (\n r.name.toLowerCase().includes(q) ||\n titleText.includes(q) ||\n axmResolveChatAiTargetText(resolveMl, r.description).toLowerCase().includes(q)\n );\n });\n}\n\n//#endregion\n\n//#region ---- Entity list query ----\n\nasync function axmQueryEntityList(\n entityRegistry: AXPEntityDefinitionRegistryService,\n entityName: string,\n): Promise<Record<string, unknown>[]> {\n const entity = await entityRegistry.resolve(RootConfig.module.name, entityName);\n const execute = entity.queries?.list?.execute as EntityListExecute | undefined;\n if (!execute) {\n throw new Error(`${entityName} entity has no list query.`);\n }\n const res = await execute({\n skip: 0,\n take: 500,\n sort: [{ name: 'name', dir: 'asc' }],\n });\n return res.items ?? [];\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { AXConversation, AXConversationService } from '@acorex/components/conversation2';\nimport { AXToastService } from '@acorex/components/toast';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { AXPSessionService } from '@acorex/platform/auth';\nimport { AXPMultiLanguageString } from '@acorex/platform/core';\nimport { AXPEntityDefinitionRegistryService } from '@acorex/platform/layout/entity';\nimport { Injectable, inject } from '@angular/core';\nimport { Router } from '@angular/router';\nimport {\n axmBuildAiChatConversationMetadata,\n axmChatAiPeerParticipantId,\n axmChatAiTargetAvatarUrl,\n axmChatAiTargetDisplayDescription,\n axmChatAiTargetDisplayName,\n axmFilterChatAiTargets,\n axmLoadChatAiTargets,\n type AXMChatAiTargetRow,\n} from '../plugins/utils/chat-ai-target.util';\nimport type { AXMStartAssistChatOptions, AXMStartAssistChatResult } from './assist-chat-launcher.types';\n\n//#endregion\n\n//#region ---- Service ----\n\n/**\n * Starts bot conversations from catalog assist rows,\n * shared by global search shortcuts and {@link AXMConversationStartAssistChatCommand}.\n */\n@Injectable({ providedIn: 'root' })\nexport class AXMChatAssistLauncherService {\n private readonly conversationService = inject(AXConversationService);\n private readonly entityRegistry = inject(AXPEntityDefinitionRegistryService);\n private readonly translationService = inject(AXTranslationService);\n private readonly sessionService = inject(AXPSessionService);\n private readonly router = inject(Router);\n private readonly toastService = inject(AXToastService);\n\n private targetsCache: AXMChatAiTargetRow[] | null = null;\n private loadPromise: Promise<AXMChatAiTargetRow[]> | null = null;\n\n async loadTargets(force = false): Promise<AXMChatAiTargetRow[]> {\n if (!force && this.targetsCache) {\n return this.targetsCache;\n }\n if (!force && this.loadPromise) {\n return this.loadPromise;\n }\n\n this.loadPromise = axmLoadChatAiTargets(this.entityRegistry);\n try {\n this.targetsCache = await this.loadPromise;\n return this.targetsCache;\n } finally {\n this.loadPromise = null;\n }\n }\n\n displayName(row: AXMChatAiTargetRow): string {\n return axmChatAiTargetDisplayName(this.#resolveMl.bind(this), row);\n }\n\n displayDescription(row: AXMChatAiTargetRow): string | undefined {\n return axmChatAiTargetDisplayDescription(this.#resolveMl.bind(this), row);\n }\n\n targetAvatarUrl(row: AXMChatAiTargetRow): string | null {\n return axmChatAiTargetAvatarUrl(row);\n }\n\n filterTargets(rows: AXMChatAiTargetRow[], query: string): AXMChatAiTargetRow[] {\n return axmFilterChatAiTargets(this.#resolveMl.bind(this), rows, query);\n }\n\n async startAssistChat(options: AXMStartAssistChatOptions): Promise<AXMStartAssistChatResult | null> {\n const targetId = (options.targetId ?? options.assistId)?.trim();\n if (!targetId) {\n return null;\n }\n\n const rows = await this.loadTargets();\n const row = rows.find((r) => r.id === targetId);\n if (!row) {\n const message = await this.translationService.translateAsync(\n '@conversation:chat.assist-dialog.errors.start-chat',\n );\n this.toastService.danger(message);\n return null;\n }\n\n try {\n const conversation = await this.#createTargetConversation(row);\n await this.conversationService.selectConversation(conversation.id);\n\n if (options.navigate !== false) {\n await this.router.navigate([this.#applicationRouteSegment(), 'chat', conversation.id]);\n }\n\n return { conversation };\n } catch (error: unknown) {\n console.error('Failed to start AI chat:', error);\n const message = await this.translationService.translateAsync(\n '@conversation:chat.assist-dialog.errors.start-chat',\n );\n this.toastService.danger(message);\n return null;\n }\n }\n\n async #createTargetConversation(row: AXMChatAiTargetRow): Promise<AXConversation> {\n const participantId = axmChatAiPeerParticipantId(row.id);\n const title = this.displayName(row);\n const avatar = this.targetAvatarUrl(row);\n\n return this.conversationService.createConversation([participantId], 'bot', {\n title,\n ...(avatar ? { avatar } : {}),\n icon: 'fa-solid fa-robot',\n metadata: axmBuildAiChatConversationMetadata(row),\n });\n }\n\n #resolveMl(value: AXPMultiLanguageString): string | undefined {\n return this.translationService.resolve(value);\n }\n\n #applicationRouteSegment(): string {\n return this.sessionService.application?.name ?? 'platform';\n }\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { AXPSearchProvider, AXPSearchResult } from '@acorex/platform/common';\nimport { inject, Injectable } from '@angular/core';\nimport { sortBy } from 'lodash-es';\nimport {\n axmChatAiTargetShortcutDescriptionKey,\n type AXMChatAiTargetRow,\n} from '../chat/plugins/utils/chat-ai-target.util';\nimport { AXMChatAssistLauncherService } from '../chat/services/assist-chat-launcher.service';\nimport { CONVERSATION_START_ASSIST_CHAT_COMMAND } from '../commands/conversation-command.keys';\n\n/** Search group key — AI chat targets (assists), not conversation history. */\nexport const AXM_CONVERSATION_ASSIST_SEARCH_GROUP = 'conversation-assist';\n\n//#endregion\n\n//#region ---- Provider ----\n\n/**\n * Global search entries to start a new AI chat — same catalog as\n * {@link AXMChatWithAssistDialogComponent} / {@link AXMChatSidebarNewActionsComponent}.\n *\n * Note: the shared global search popup only queries when the text length is > 2.\n */\n@Injectable()\nexport class AXMConversationAssistSearchProvider implements AXPSearchProvider {\n private readonly launcher = inject(AXMChatAssistLauncherService);\n\n async search(text: string): Promise<AXPSearchResult[]> {\n let rows: AXMChatAiTargetRow[];\n try {\n rows = await this.launcher.loadTargets();\n } catch (error: unknown) {\n console.error('Failed to load AI chat targets for shortcut search:', error);\n return [];\n }\n\n const filtered = this.launcher.filterTargets(rows, text);\n\n const sorted = sortBy(filtered, (row) => this.launcher.displayName(row).toLowerCase());\n\n return sorted.map<AXPSearchResult>((row) => ({\n id: row.id,\n group: AXM_CONVERSATION_ASSIST_SEARCH_GROUP,\n title: row.title,\n description: row.description ?? axmChatAiTargetShortcutDescriptionKey(),\n icon: 'fa-solid fa-robot',\n data: { id: row.id, name: row.name },\n command: {\n name: CONVERSATION_START_ASSIST_CHAT_COMMAND,\n options: {\n targetId: row.id,\n },\n },\n }));\n }\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { AXPSearchDefinitionProvider, AXPSearchDefinitionProviderContext } from '@acorex/platform/common';\nimport { AXPSystemActionType } from '@acorex/platform/core';\nimport { Injectable } from '@angular/core';\nimport { AXM_CONVERSATION_ASSIST_SEARCH_GROUP } from './assist-search.provider';\n\n//#endregion\n\n//#region ---- Provider ----\n\n/** Search group for AI assist shortcut picker (not chat/conversation history). */\n@Injectable()\nexport class AXMConversationAssistSearchDefinitionProvider implements AXPSearchDefinitionProvider {\n async provide(context: AXPSearchDefinitionProviderContext): Promise<void> {\n context.addDefinition(\n AXM_CONVERSATION_ASSIST_SEARCH_GROUP,\n '@conversation:search.assist.group-title',\n AXM_CONVERSATION_ASSIST_SEARCH_GROUP,\n 'fa-solid fa-robot',\n 4,\n {\n format: {\n id: '{{id}}',\n },\n actions: [\n {\n name: 'start-assist-chat',\n type: AXPSystemActionType.View,\n priority: 'primary',\n },\n ],\n },\n );\n }\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { AXPModuleManifest } from '@acorex/platform/core';\nimport { RootConfig } from './contracts';\n\n//#endregion\n\n//#region ---- Manifest Definition ----\n\n/**\n * Conversation Module Manifest.\n * Defines module metadata, features, and provider references.\n */\nexport const ConversationManifest: AXPModuleManifest = {\n name: RootConfig.module.name,\n version: '1.0.0',\n title: RootConfig.module.title,\n icon: RootConfig.module.icon,\n i18n: RootConfig.config.i18n,\n\n // Module dependencies\n dependencies: ['NotificationManagement'],\n};\n\n//#endregion\n\n","import { AXPSessionService } from '@acorex/platform/auth';\nimport { AXPMenuProvider, AXPMenuProviderContext } from '@acorex/platform/common';\nimport { Injectable, inject } from '@angular/core';\nimport { RootConfig } from './contracts';\nimport { AXPConversationMenuKeys } from './contracts/menu.keys';\nimport { AXMPermissionsKeys } from './contracts/permission.keys';\n\n@Injectable()\nexport class AXMMenuProvider implements AXPMenuProvider {\n private sessionService = inject(AXPSessionService);\n\n async provide(context: AXPMenuProviderContext): Promise<void> {\n const module = RootConfig;\n const scope = RootConfig.config.i18n;\n\n context.addItems([\n {\n name: AXPConversationMenuKeys.Conversations,\n text: `@conversation:module.menus.conversations.title`,\n path: `${this.sessionService.application?.name}/${module.config.route}`,\n priority: 30,\n icon: RootConfig.entities.room.icon,\n badgeKey: 'badge-chat',\n policy: {\n features: [module.module.name],\n permissions: [AXMPermissionsKeys.Conversation.Management],\n },\n },\n ]);\n }\n}\n","//#region ---- Imports ----\n\nimport { AXPPermissionDefinitionProvider, AXPPermissionDefinitionProviderContext } from '@acorex/platform/auth';\nimport { Injectable } from '@angular/core';\nimport { AXMPermissionsKeys } from './contracts/permission.keys';\nimport { RootConfig } from './contracts';\n\n//#endregion\n\n//#region ---- Permission Definition Provider ----\n\n@Injectable()\nexport class AXMPermissionDefinitionProvider implements AXPPermissionDefinitionProvider {\n\n async define(context: AXPPermissionDefinitionProviderContext): Promise<void> {\n const keys = AXMPermissionsKeys.Conversation;\n const modulePermissions = '@conversation:module.permissions';\n\n context\n .addGroup(\n RootConfig.module.name,\n `${modulePermissions}.title`,\n `${modulePermissions}.description`,\n )\n .addPermission(\n keys.Management,\n `${modulePermissions}.manage.title`,\n `${modulePermissions}.manage.description`,\n )\n .endPermission()\n .endGroup();\n }\n}\n\n//#endregion\n\n","//#region ---- Imports ----\n\nimport { AXConversationService } from '@acorex/components/conversation2';\nimport { AXPTaskBadgeProvider } from '@acorex/platform/layout/components';\nimport { computed, inject, Injectable } from '@angular/core';\n\n//#endregion\n\n//#region ---- Task Badge Provider ----\n\n/** Provides a live unread conversation count for header/task badges. */\n@Injectable()\nexport class AXMChatBadgeProviderSimple implements AXPTaskBadgeProvider {\n //#region ---- Services & Dependencies ----\n\n private readonly conversationService = inject(AXConversationService);\n\n //#endregion\n\n //#region ---- Signals & Properties ----\n\n readonly key = 'badge-chat';\n\n readonly count = computed(\n () => this.conversationService.conversations().filter((conversation) => conversation.unreadCount > 0).length,\n );\n\n //#endregion\n\n constructor() {\n void this.conversationService.loadConversations();\n }\n}\n\n//#endregion\n","//#region ---- Keys ----\n\nexport const AXM_CONVERSATION_ASSIST_BACKGROUND_OPERATION_KEY = 'conversation-ai-assist';\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { AXConversationService } from '@acorex/components/conversation2';\nimport {\n AXP_BACKGROUND_OPERATION_HANDLERS,\n AXPBackgroundOperationHandler,\n type AXPBackgroundOperation,\n} from '@acorex/platform/common';\nimport { AXPExecuteCommand } from '@acorex/platform/core';\nimport { AXPSessionService } from '@acorex/platform/auth';\nimport { Injectable, Provider, inject } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { get } from 'lodash-es';\nimport { AXM_CONVERSATION_ASSIST_BACKGROUND_OPERATION_KEY } from './conversation-assist-background-operation.keys';\n\n//#endregion\n\n//#region ---- Handler ----\n\n@Injectable()\nexport class AXMConversationAssistBackgroundOperationHandler extends AXPBackgroundOperationHandler {\n readonly providerKey = AXM_CONVERSATION_ASSIST_BACKGROUND_OPERATION_KEY;\n\n private readonly router = inject(Router);\n private readonly chatService = inject(AXConversationService);\n private readonly sessionService = inject(AXPSessionService);\n private readonly activatedRoute = inject(ActivatedRoute);\n\n async execute(command: AXPExecuteCommand, operation: AXPBackgroundOperation): Promise<void> {\n const conversationId = get(operation.data, 'conversationId');\n if (typeof conversationId !== 'string' || !conversationId.trim()) {\n console.error('conversationId is missing from assist background operation data.');\n return;\n }\n\n const app =\n this.activatedRoute.snapshot.firstChild?.paramMap.get('app') ||\n this.sessionService.application?.name ||\n 'platform';\n\n switch (command.name) {\n case 'click':\n await this.chatService.markAsRead(conversationId);\n await this.router.navigate([app, 'chat', conversationId]);\n break;\n default:\n break;\n }\n }\n}\n\n//#endregion\n\n//#region ---- Providers ----\n\nexport const AXM_CONVERSATION_ASSIST_BACKGROUND_OPERATION_HANDLERS: Provider[] = [\n {\n provide: AXP_BACKGROUND_OPERATION_HANDLERS,\n useExisting: AXMConversationAssistBackgroundOperationHandler,\n multi: true,\n },\n AXMConversationAssistBackgroundOperationHandler,\n];\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { AXPCommonSettings, AXPSettingsService } from '@acorex/platform/common';\nimport { AXPPlatformScope } from '@acorex/platform/core';\nimport { inject, Injectable } from '@angular/core';\n\n//#endregion\n\n//#region ---- Module cache (sync reads for action visibility) ----\n\n/** Updated by {@link AXMAssistChatDebugModeService}; read from action `visible` without injection context. */\nexport const axmAssistChatDebugModeState = {\n enabled: false,\n resolved: false,\n};\n\n//#endregion\n\n//#region ---- Service ----\n\n/**\n * Resolves tenant debug mode once and mirrors it to {@link axmAssistChatDebugModeState}\n * so conversation2 action `visible` callbacks can stay synchronous.\n */\n@Injectable({ providedIn: 'root' })\nexport class AXMAssistChatDebugModeService {\n //#region ---- Services & Dependencies ----\n\n private readonly settingsService = inject(AXPSettingsService);\n\n //#endregion\n\n //#region ---- Lifecycle ----\n\n constructor() {\n void this.refresh();\n }\n\n //#endregion\n\n //#region ---- API ----\n\n /** Re-reads tenant debug mode and updates the module cache. */\n async refresh(): Promise<void> {\n try {\n const debugMode = await this.settingsService\n .scope(AXPPlatformScope.Tenant)\n .get<boolean>(AXPCommonSettings.DebugMode);\n axmAssistChatDebugModeState.enabled = !!debugMode;\n } catch {\n axmAssistChatDebugModeState.enabled = false;\n } finally {\n axmAssistChatDebugModeState.resolved = true;\n }\n }\n\n isDebugModeActive(): boolean {\n return axmAssistChatDebugModeState.resolved && axmAssistChatDebugModeState.enabled;\n }\n\n //#endregion\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport {\n axpAiAssistStarterPromptLabels,\n type AXMAiManagementAssistEntityModel,\n type AXPAiChatFollowUpItem,\n type AXPAiEffectiveAssistRow,\n} from '@acorex/modules/ai-management';\nimport { CONVERSATION_SEND_ASSIST_CHAT_MESSAGE_COMMAND } from '../../../commands/conversation-command.keys';\n\n//#endregion\n\n//#region ---- Types ----\n\ntype AssistStarterPromptsSource =\n | Pick<AXMAiManagementAssistEntityModel, 'starterPrompts'>\n | Pick<AXPAiEffectiveAssistRow, 'starterPrompts'>\n | null\n | undefined;\n\nexport interface AXMAssistStarterPromptChipOptions {\n assistId?: string;\n conversationId?: string;\n}\n\n//#endregion\n\n//#region ---- Command resolution ----\n\n/**\n * Resolves a follow-up chip command for Conversation assist.\n * AI follow-up output may use invalid `Registry:*` placeholders; those map to\n * {@link CONVERSATION_SEND_ASSIST_CHAT_MESSAGE_COMMAND} so the chip text is sent as the next user message.\n */\nexport function axmAssistResolveFollowUpCommandName(\n rawName: string,\n commandExists: (name: string) => boolean,\n): string {\n const name = rawName.trim();\n if (name && commandExists(name)) {\n return name;\n }\n\n const withoutRegistryPrefix = name.startsWith('Registry:') ? name.slice('Registry:'.length).trim() : '';\n if (withoutRegistryPrefix && commandExists(withoutRegistryPrefix)) {\n return withoutRegistryPrefix;\n }\n\n return CONVERSATION_SEND_ASSIST_CHAT_MESSAGE_COMMAND;\n}\n\n/** Rewrites invalid follow-up commands (e.g. hallucinated `Registry:*` keys) before rendering chips. */\nexport function axmAssistNormalizeFollowUpItemForConversation(item: AXPAiChatFollowUpItem): AXPAiChatFollowUpItem {\n const name = item.command.name.trim();\n if (!name || name.startsWith('Registry:')) {\n return {\n ...item,\n command: {\n name: CONVERSATION_SEND_ASSIST_CHAT_MESSAGE_COMMAND,\n options: item.command.options,\n },\n };\n }\n return item;\n}\n\nexport function axmAssistNormalizeFollowUpItemsForConversation(\n items: AXPAiChatFollowUpItem[],\n): AXPAiChatFollowUpItem[] {\n return items.map(axmAssistNormalizeFollowUpItemForConversation);\n}\n\n//#endregion\n\n//#region ---- Mapping ----\n\n/**\n * Maps assist starter prompts to follow-up chip items that run {@link CONVERSATION_SEND_ASSIST_CHAT_MESSAGE_COMMAND}.\n */\nexport function axmAssistStarterPromptChipItems(\n source: AssistStarterPromptsSource,\n options?: AXMAssistStarterPromptChipOptions,\n): AXPAiChatFollowUpItem[] {\n return axpAiAssistStarterPromptLabels(source).map((text) => ({\n text,\n command: {\n name: CONVERSATION_SEND_ASSIST_CHAT_MESSAGE_COMMAND,\n options: {\n ...(options?.assistId ? { assistId: options.assistId } : {}),\n ...(options?.conversationId ? { conversationId: options.conversationId } : {}),\n },\n },\n }));\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { AXButtonModule } from '@acorex/components/button';\nimport type { AXPAiChatFollowUpItem } from '@acorex/modules/ai-management';\nimport { AXTranslationModule, AXTranslationService } from '@acorex/core/translation';\nimport { AXPCommandService } from '@acorex/platform/runtime';\nimport { AsyncPipe } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, inject, input } from '@angular/core';\nimport {\n axmAssistNormalizeFollowUpItemsForConversation,\n axmAssistResolveFollowUpCommandName,\n} from '../utils/assist-suggestion-chips.util';\n\n//#endregion\n\n//#region ---- Component ----\n\n/**\n * Assist suggestion chips (starter prompts and engine {@code followUp} segments).\n * Each item runs its platform command via {@link AXPCommandService}.\n */\n@Component({\n selector: 'axm-assist-suggestion-chips',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [AsyncPipe, AXButtonModule, AXTranslationModule],\n template: `\n @if (normalizedItems().length > 0) {\n <div\n class=\"ax-flex ax-gap-3 ax-justify-center ax-p-8 ax-flex-wrap\"\n role=\"list\"\n [attr.aria-label]=\"('@conversation:chat.starter-prompts.list-aria' | translate | async) ?? ''\"\n >\n @for (item of normalizedItems(); track $index) {\n <ax-button\n class=\"ax-rounded-full\"\n [look]=\"'twotone'\"\n [text]=\"(item.text | translate | async)!\"\n (onClick)=\"onChipClick(item)\"\n ></ax-button>\n }\n </div>\n }\n `,\n})\nexport class AXMAssistSuggestionChipsComponent {\n readonly items = input<AXPAiChatFollowUpItem[]>([]);\n\n protected readonly normalizedItems = computed(() =>\n axmAssistNormalizeFollowUpItemsForConversation(this.items()),\n );\n\n private readonly commandService = inject(AXPCommandService);\n private readonly translationService = inject(AXTranslationService);\n\n protected async onChipClick(item: AXPAiChatFollowUpItem): Promise<void> {\n const rawName = item.command.name.trim();\n if (!rawName) {\n return;\n }\n\n const name = axmAssistResolveFollowUpCommandName(rawName, (key) => this.commandService.exists(key));\n if (!this.commandService.exists(name)) {\n console.warn('[AXMAssistSuggestionChips] Command is not registered:', rawName);\n return;\n }\n\n const text = this.resolveItemText(item);\n await this.commandService.execute(name, {\n ...(item.command.options ?? {}),\n ...(text ? { text } : {}),\n });\n }\n\n private resolveItemText(item: AXPAiChatFollowUpItem): string {\n const label = item.text;\n if (typeof label === 'string') {\n return label.trim();\n }\n return (this.translationService.resolve(label) ?? '').trim();\n }\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { AXTranslationModule, AXTranslationService } from '@acorex/core/translation';\nimport type { AXConversation, AXConversationType } from '@acorex/components/conversation2';\nimport { AsyncPipe } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, inject, input } from '@angular/core';\n\n//#endregion\n\n//#region ---- Component ----\n\n/**\n * Mirrors conversation2 default empty state when assist welcome content is not configured.\n */\n@Component({\n selector: 'axm-chat-message-list-empty-fallback',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [AsyncPipe, AXTranslationModule],\n host: {\n class: 'ax-message-empty-host',\n },\n template: `\n <div class=\"ax-message-empty\" role=\"status\" [attr.aria-label]=\"('@acorex:chat.status.no-messages' | translate | async) ?? ''\">\n <div class=\"ax-message-empty__ambient\" aria-hidden=\"true\">\n <span class=\"ax-message-empty__grid\"></span>\n </div>\n\n <div class=\"ax-message-empty__card\">\n <div class=\"ax-message-empty__icon-stack\">\n <span class=\"ax-message-empty__pulse\" aria-hidden=\"true\"></span>\n <div class=\"ax-message-empty__icon-bg\">\n <i [class]=\"iconClass()\" aria-hidden=\"true\"></i>\n </div>\n </div>\n\n <p class=\"ax-message-empty__eyebrow\">{{ eyebrowLabel() }}</p>\n <h3 class=\"ax-message-empty__title\">{{ ('@acorex:chat.empty.no-messages-yet' | translate | async) ?? '' }}</h3>\n <p class=\"ax-message-empty__desc\">\n {{ descriptionPrefix() }}\n <span class=\"ax-message-empty__name\">{{ conversation().title }}</span>.\n </p>\n </div>\n </div>\n `,\n styles: `\n :host.ax-message-empty-host {\n display: block;\n width: 100%;\n max-width: min(24rem, 100%);\n margin-inline: auto;\n }\n\n .ax-message-empty {\n position: relative;\n isolation: isolate;\n padding: 0.25rem;\n }\n\n .ax-message-empty__ambient {\n position: absolute;\n top: -2rem;\n right: -1rem;\n bottom: -1rem;\n left: -1rem;\n z-index: 0;\n pointer-events: none;\n overflow: hidden;\n border-radius: 2rem;\n }\n\n .ax-message-empty__grid {\n position: absolute;\n inset: 0;\n background-image:\n linear-gradient(rgba(var(--ax-sys-color-on-surface), 0.04) 1px, transparent 1px),\n linear-gradient(90deg, rgba(var(--ax-sys-color-on-surface), 0.04) 1px, transparent 1px);\n background-size: 24px 24px;\n mask-image: radial-gradient(ellipse 80% 70% at 50% 45%, black 20%, transparent 75%);\n opacity: 0.5;\n }\n\n .ax-message-empty__card {\n position: relative;\n z-index: 1;\n display: flex;\n flex-direction: column;\n align-items: center;\n text-align: center;\n padding: 2rem 1.75rem 2.125rem;\n border-radius: 1.25rem;\n border: 1px solid rgba(var(--ax-sys-color-border-light-surface), 0.85);\n background: linear-gradient(\n 165deg,\n rgba(var(--ax-sys-color-lightest-surface), 0.72),\n rgba(var(--ax-sys-color-surface), 0.55)\n );\n }\n\n .ax-message-empty__icon-stack {\n position: relative;\n display: grid;\n place-items: center;\n margin-bottom: 1.25rem;\n }\n\n .ax-message-empty__pulse {\n position: absolute;\n width: 5.5rem;\n height: 5.5rem;\n border-radius: 50%;\n background: radial-gradient(circle, rgba(var(--ax-sys-color-primary-500), 0.22), transparent 70%);\n animation: axm-empty-pulse 3.2s ease-in-out infinite;\n }\n\n .ax-message-empty__icon-bg {\n position: relative;\n display: grid;\n place-items: center;\n width: 4.25rem;\n height: 4.25rem;\n border-radius: 1.125rem;\n background: linear-gradient(\n 145deg,\n rgba(var(--ax-sys-color-primary-500), 0.16),\n rgba(var(--ax-sys-color-primary-600), 0.06)\n );\n border: 1px solid rgba(var(--ax-sys-color-primary-500), 0.22);\n box-shadow:\n 0 1px rgba(var(--ax-sys-color-on-primary-surface), 0.06) inset,\n 0 12px 28px -16px rgba(var(--ax-sys-color-primary-600), 0.45);\n }\n\n .ax-message-empty__icon-bg i {\n font-size: 1.875rem;\n line-height: 1;\n color: rgb(var(--ax-sys-color-primary-600));\n opacity: 0.92;\n }\n\n .ax-message-empty__eyebrow {\n margin: 0 0 0.35rem;\n font-size: 0.6875rem;\n font-weight: 600;\n letter-spacing: 0.14em;\n text-transform: uppercase;\n color: rgb(var(--ax-sys-color-primary-600));\n opacity: 0.85;\n }\n\n .ax-message-empty__title {\n margin: 0 0 0.65rem;\n font-size: 1.375rem;\n font-weight: 600;\n letter-spacing: -0.03em;\n line-height: 1.25;\n color: rgb(var(--ax-sys-color-on-surface));\n }\n\n .ax-message-empty__desc {\n margin: 0;\n font-size: 0.9375rem;\n line-height: 1.65;\n color: rgb(var(--ax-sys-color-on-surface));\n opacity: 0.62;\n max-width: 20rem;\n }\n\n .ax-message-empty__name {\n font-weight: 600;\n color: rgb(var(--ax-sys-color-on-surface));\n opacity: 0.88;\n }\n\n @keyframes axm-empty-pulse {\n 0%,\n 100% {\n transform: scale(0.92);\n opacity: 0.55;\n }\n 50% {\n transform: scale(1.06);\n opacity: 0.85;\n }\n }\n\n @media (prefers-reduced-motion: reduce) {\n .ax-message-empty__pulse {\n animation: none;\n }\n }\n `,\n})\nexport class AXMChatMessageListEmptyFallbackComponent {\n //#region ---- Inputs ----\n\n readonly conversation = input.required<AXConversation>();\n\n //#endregion\n\n //#region ---- Services & Dependencies ----\n\n private readonly translationService = inject(AXTranslationService);\n\n //#endregion\n\n //#region ---- Computed Properties ----\n\n readonly iconClass = computed(() => iconClassForType(this.conversation().type));\n\n readonly eyebrowLabel = computed(() => eyebrowForType(this.conversation().type, this.translationService));\n\n readonly descriptionPrefix = computed(() => descriptionPrefixForType(this.conversation().type, this.translationService));\n\n //#endregion\n}\n\n//#endregion\n\n//#region ---- Helpers ----\n\nfunction iconClassForType(type: AXConversationType): string {\n switch (type) {\n case 'private':\n return 'fa-light fa-comment-dots';\n case 'group':\n return 'fa-light fa-users';\n case 'channel':\n return 'fa-light fa-hashtag';\n case 'bot':\n return 'fa-light fa-robot';\n default:\n return 'fa-light fa-comments';\n }\n}\n\nfunction eyebrowForType(type: AXConversationType, translation: AXTranslationService): string {\n switch (type) {\n case 'private':\n return translation.translateSync('@acorex:chat.empty.eyebrow.direct-message');\n case 'group':\n return translation.translateSync('@acorex:chat.empty.eyebrow.group-chat');\n case 'channel':\n return translation.translateSync('@acorex:chat.empty.eyebrow.channel');\n case 'bot':\n return translation.translateSync('@acorex:chat.empty.eyebrow.assistant');\n default:\n return translation.translateSync('@acorex:chat.empty.eyebrow.conversation');\n }\n}\n\nfunction descriptionPrefixForType(type: AXConversationType, translation: AXTranslationService): string {\n switch (type) {\n case 'private':\n return translation.translateSync('@acorex:chat.empty.description.private-prefix');\n case 'group':\n return translation.translateSync('@acorex:chat.empty.description.group-prefix');\n case 'channel':\n return translation.translateSync('@acorex:chat.empty.description.channel-prefix');\n case 'bot':\n return translation.translateSync('@acorex:chat.empty.description.bot-prefix');\n default:\n return translation.translateSync('@acorex:chat.empty.description.conversation-prefix');\n }\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport {\n AXConversationApi,\n AXMessage,\n AXMessageApi,\n AXRealtimeApi,\n AXUserApi,\n} from '@acorex/components/conversation2';\nimport { Injectable } from '@angular/core';\n\n//#endregion\n\n//#region ---- Chat API tokens (mock or production implementations) ----\n\n/** User profile, discovery, and presence for conversation chat. */\n@Injectable()\nexport abstract class AXMChatUserApi extends AXUserApi {}\n\n/** Conversation CRUD, participants, and inbox for conversation chat. */\n@Injectable()\nexport abstract class AXMChatConversationApi extends AXConversationApi {\n /** Reports which conversation thread is open in chat UI (mock uses this for notifications). */\n reportFocusedConversation(_conversationId: string | null): void {\n // Production connectivity: no-op unless overridden.\n }\n}\n\n/** Message CRUD, reactions, and assist replies for conversation chat. */\n@Injectable()\nexport abstract class AXMChatMessageApi extends AXMessageApi {\n /**\n * Re-runs AI generation for an incomplete or failed assist placeholder.\n * Reuses the same message id so the conversation timeline stays ordered.\n */\n abstract retryAssistResponse(conversationId: string, messageId: string): Promise<AXMessage>;\n}\n\n/** Realtime streams (messages, typing, presence) for conversation chat. */\n@Injectable()\nexport abstract class AXMChatRealtimeApi extends AXRealtimeApi {}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport {\n AXConversationService,\n AXMessageApi,\n conversationSharedStorage,\n type AXConversation,\n type AXMessage,\n type AXPagination,\n} from '@acorex/components/conversation2';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport {\n axpAiAssistInitialMessagesToTranscript,\n axpAiChatMessageGetText,\n RootConfig,\n type AXPAiChatFollowUpItem,\n type AXPAiEffectiveAssistRow,\n} from '@acorex/modules/ai-management';\nimport { AXPMarkdownViewerComponent } from '@acorex/platform/layout/components';\nimport { AXPEntityService } from '@acorex/platform/layout/entity';\nimport { ChangeDetectionStrategy, Component, computed, effect, inject, signal, untracked } from '@angular/core';\nimport { AXMAssistSuggestionChipsComponent } from '../shared/assist-suggestion-chips.component';\nimport { axmAssistStarterPromptChipItems } from '../utils/assist-suggestion-chips.util';\nimport { AXMChatMessageListEmptyFallbackComponent } from '../empty-state/chat-message-list-empty-fallback.component';\nimport { axmConversationHasAiChat } from '../utils/chat-ai-target.util';\nimport { AXMChatUserApi } from '../services/chat-conversation-apis.abstract';\n\n//#endregion\n\n//#region ---- Helpers ----\n\nfunction extractAssistId(conversation: AXConversation): string | null {\n const raw = conversation.metadata?.['assistId'];\n if (typeof raw === 'string' && raw.trim()) {\n return raw.trim();\n }\n\n for (const participant of conversation.participants ?? []) {\n const participantAssistId = participant.metadata?.['assistId'];\n if (typeof participantAssistId === 'string' && participantAssistId.trim()) {\n return participantAssistId.trim();\n }\n }\n\n return null;\n}\n\nfunction isStreamingPlaceholder(message: AXMessage): boolean {\n const meta = message.metadata as Record<string, unknown> | undefined;\n return meta?.['isAssistResponse'] === true && meta?.['isStreaming'] === true;\n}\n\nasync function conversationHasUserMessage(\n messageApi: AXMessageApi,\n currentUserId: string,\n conversationId: string,\n): Promise<boolean> {\n const pagination: AXPagination = { page: 0, pageSize: 50 };\n const result = await messageApi.getMessages(conversationId, pagination);\n return result.items.some(\n (message) => !isStreamingPlaceholder(message) && message.senderId === currentUserId,\n );\n}\n\nfunction initialMessageMarkdown(raw: string | null | undefined): string {\n return axpAiAssistInitialMessagesToTranscript(raw)\n .map((line) => axpAiChatMessageGetText(line).trim())\n .filter((text) => text.length > 0)\n .join('\\n\\n');\n}\n\n//#endregion\n\n//#region ---- Component ----\n\n@Component({\n selector: 'axm-chat-assist-composer-starter-prompts',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n AXMAssistSuggestionChipsComponent,\n AXMChatMessageListEmptyFallbackComponent,\n AXPMarkdownViewerComponent,\n ],\n template: `\n @if (showWelcome()) {\n <div class=\"axm-chat-assist-welcome-empty\">\n @if (initialMessageMarkdown().length > 0) {\n <div class=\"axm-chat-assist-welcome-empty__message\">\n <axp-markdown-viewer [markdown]=\"initialMessageMarkdown()\" />\n </div>\n }\n @if (starterPromptItems().length > 0) {\n <axm-assist-suggestion-chips [items]=\"starterPromptItems()\" />\n }\n </div>\n } @else if (activeConversation(); as conversation) {\n <axm-chat-message-list-empty-fallback [conversation]=\"conversation\" />\n }\n `,\n styles: `\n .axm-chat-assist-welcome-empty {\n width: min(100%, 48rem);\n margin-inline: auto;\n display: flex;\n flex-direction: column;\n align-items: stretch;\n gap: 0.5rem;\n padding: 0.5rem 0 1rem;\n }\n\n .axm-chat-assist-welcome-empty__message {\n padding: 1rem 1.25rem;\n border-radius: 1rem;\n border: 1px solid rgba(var(--ax-sys-color-border-light-surface), 0.85);\n background: rgba(var(--ax-sys-color-lightest-surface), 0.72);\n text-align: start;\n line-height: 1.6;\n }\n `,\n})\nexport class AXMChatAssistComposerStarterPromptsComponent {\n //#region ---- Services & Dependencies ----\n\n private readonly conversationService = inject(AXConversationService);\n private readonly messageApi = inject(AXMessageApi);\n private readonly userApi = inject(AXMChatUserApi);\n private readonly entityService = inject(AXPEntityService);\n private readonly translationService = inject(AXTranslationService);\n private readonly assistData = this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.assist.name)\n .data<string, AXPAiEffectiveAssistRow, AXPAiEffectiveAssistRow, AXPAiEffectiveAssistRow, AXPAiEffectiveAssistRow>();\n\n //#endregion\n\n //#region ---- State ----\n\n readonly starterPromptItems = signal<AXPAiChatFollowUpItem[]>([]);\n readonly initialMessageMarkdown = signal('');\n readonly showWelcome = signal(false);\n\n readonly activeConversation = computed(() => {\n const id = this.conversationService.activeConversationId();\n if (!id) {\n return null;\n }\n return conversationSharedStorage.conversations.get(id) ?? null;\n });\n\n private loadGeneration = 0;\n\n //#endregion\n\n //#region ---- Effects ----\n\n constructor() {\n effect(() => {\n const conversationId = this.conversationService.activeConversationId();\n void this.syncForConversation(conversationId);\n });\n\n effect((onCleanup) => {\n const conversationId = untracked(() => this.conversationService.activeConversationId());\n if (!conversationId) {\n return;\n }\n\n const sub = conversationSharedStorage.messageStream$.subscribe((message) => {\n if (message.conversationId !== conversationId) {\n return;\n }\n void this.syncForConversation(conversationId);\n });\n\n onCleanup(() => sub.unsubscribe());\n });\n }\n\n //#endregion\n\n //#region ---- Sync ----\n\n private async syncForConversation(conversationId: string | null | undefined): Promise<void> {\n const generation = ++this.loadGeneration;\n\n if (!conversationId) {\n this.starterPromptItems.set([]);\n this.initialMessageMarkdown.set('');\n this.showWelcome.set(false);\n return;\n }\n\n const conversation = conversationSharedStorage.conversations.get(conversationId);\n if (!conversation) {\n this.starterPromptItems.set([]);\n this.initialMessageMarkdown.set('');\n this.showWelcome.set(false);\n return;\n }\n\n if (!axmConversationHasAiChat(conversation)) {\n this.starterPromptItems.set([]);\n this.initialMessageMarkdown.set('');\n this.showWelcome.set(false);\n return;\n }\n\n const assistId = extractAssistId(conversation);\n if (!assistId) {\n this.starterPromptItems.set([]);\n this.initialMessageMarkdown.set('');\n this.showWelcome.set(false);\n return;\n }\n\n try {\n const currentUser = await this.userApi.getCurrentUser();\n const hasUserMessage = await conversationHasUserMessage(\n this.messageApi,\n currentUser.id,\n conversationId,\n );\n if (generation !== this.loadGeneration) {\n return;\n }\n\n if (hasUserMessage) {\n this.starterPromptItems.set([]);\n this.initialMessageMarkdown.set('');\n this.showWelcome.set(false);\n return;\n }\n\n const assist = await this.assistData.byKey(assistId);\n if (generation !== this.loadGeneration) {\n return;\n }\n\n const items = axmAssistStarterPromptChipItems(assist, {\n conversationId: conversationId ?? undefined,\n });\n const welcomeMarkdown = initialMessageMarkdown(assist?.initialMessages);\n this.starterPromptItems.set(items);\n this.initialMessageMarkdown.set(welcomeMarkdown);\n this.showWelcome.set(welcomeMarkdown.length > 0 || items.length > 0);\n } catch (error: unknown) {\n console.error('Failed to load assist welcome interaction:', error);\n if (generation === this.loadGeneration) {\n this.starterPromptItems.set([]);\n this.initialMessageMarkdown.set('');\n this.showWelcome.set(false);\n }\n }\n }\n\n //#endregion\n}\n\n//#endregion\n","import { AXButtonModule } from '@acorex/components/button';\nimport { AXConversationService, type AXMessagePayload } from '@acorex/components/conversation2';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXDropdownModule } from '@acorex/components/dropdown';\nimport { AXTextBoxModule } from '@acorex/components/text-box';\nimport { AXToastService } from '@acorex/components/toast';\nimport { AXTranslationModule, AXTranslationService } from '@acorex/core/translation';\nimport { RootConfig, AXPAiManagerService, type AXPAiChatFollowUpItem, type AXPAiEffectiveAssistRow } from '@acorex/modules/ai-management';\nimport { AXPMultiLanguageString } from '@acorex/platform/core';\nimport { AXPEntityDefinitionRegistryService, AXPEntityService } from '@acorex/platform/layout/entity';\nimport {\n axmBuildAiChatConversationMetadata,\n axmChatAiPeerParticipantId,\n axmLoadChatAiTargets,\n type AXMChatAiTargetRow,\n} from '../utils/chat-ai-target.util';\nimport { AXMAssistSuggestionChipsComponent } from '../shared/assist-suggestion-chips.component';\nimport { axmAssistStarterPromptChipItems } from '../utils/assist-suggestion-chips.util';\nimport { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n computed,\n effect,\n inject,\n output,\n signal,\n viewChild,\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\n@Component({\n selector: 'axm-chat-empty-assist-composer',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n CommonModule,\n FormsModule,\n AXButtonModule,\n AXDropdownModule,\n AXTextBoxModule,\n AXDecoratorModule,\n AXTranslationModule,\n AXMAssistSuggestionChipsComponent,\n ],\n template: `\n <div class=\"axm-chat-empty-assist-composer\">\n <div class=\"axm-chat-empty-assist-composer__caption\">\n {{ '@conversation:chat.empty-assist.caption' | translate | async }}\n </div>\n \n <div class=\"axm-chat-empty-assist-composer__composer-row\">\n <ax-button color=\"default\" look=\"blank\" class=\"ax-rounded-full\">\n <ax-icon icon=\"fa-regular fa-sparkles\"></ax-icon>\n <span class=\"axm-chat-empty-assist-composer__assist-text\">\n @if (selectedAssistLabel(); as assistLabel) {\n {{ assistLabel | translate | async }}\n } @else {\n {{ '@conversation:chat.empty-assist.assist-default' | translate | async }}\n }\n </span>\n <ax-dropdown-panel>\n <ax-button-item-list>\n @for (row of rows(); track row.id) {\n <ax-button-item\n [text]=\"(row.title | translate | async)!\"\n [selected]=\"row.id === selectedAssistId()\"\n (onClick)=\"onAssistIdChange(row.id)\"\n ></ax-button-item>\n }\n </ax-button-item-list>\n </ax-dropdown-panel>\n </ax-button>\n\n @let assistTitle = (selectedAssistLabel() | translate | async) ?? '';\n\n <textarea\n #draftInput\n rows=\"1\"\n class=\"axm-chat-empty-assist-composer__textarea ax-border-none ax-outline-none ax-w-full ax-flex-1\"\n [ngModel]=\"draftText()\"\n (ngModelChange)=\"draftText.set($event ?? '')\"\n (input)=\"resizeDraftInput()\"\n (keydown)=\"onDraftKeydown($event)\"\n [placeholder]=\"\n ('@conversation:chat.empty-assist.placeholder'\n | translate: { params: { assist: assistTitle } }\n | async) ?? ''\n \"\n ></textarea>\n <ax-button\n color=\"default\"\n class=\"ax-rounded-full\"\n [disabled]=\"!canSend()\"\n [text]=\"sending() ? '…' : ''\"\n [attr.aria-label]=\"('@conversation:comments.actions.send.title' | translate | async) ?? ''\"\n (onClick)=\"send()\"\n >\n @if (!sending()) {\n <ax-icon icon=\"fa-light fa-arrow-up\"></ax-icon>\n }\n </ax-button>\n </div>\n <axm-assist-suggestion-chips [items]=\"starterPromptItems()\" />\n </div>\n `,\n styles: `\n .axm-chat-empty-assist-composer {\n width: min(100%, 64rem);\n margin-inline: auto;\n }\n\n .axm-chat-empty-assist-composer__caption {\n margin-bottom: 3rem;\n text-align: center;\n font-size: clamp(1.9rem, 3.4vw, 2.7rem);\n line-height: 1.15;\n font-weight: 700;\n letter-spacing: -0.02em;\n }\n\n .axm-chat-empty-assist-composer__composer-row {\n display: flex;\n gap: 0.375rem;\n align-items: end;\n padding: 0.5rem;\n border-radius: 2em;\n border: 1px solid;\n border-color: rgba(var(--ax-sys-color-border-lighter-surface));\n }\n\n .axm-chat-empty-assist-composer__assist-text {\n display: inline-block;\n max-width: 12rem;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n .axm-chat-empty-assist-composer__textarea {\n resize: none;\n overflow: hidden;\n background: transparent;\n min-height: 2.25rem;\n max-height: 14rem;\n line-height: 1.5;\n padding-block: 0.25rem;\n }\n `,\n})\nexport class AXMChatEmptyAssistComposerComponent {\n private readonly conversationService = inject(AXConversationService);\n private readonly toastService = inject(AXToastService);\n private readonly translationService = inject(AXTranslationService);\n private readonly entityRegistry = inject(AXPEntityDefinitionRegistryService);\n private readonly entityService = inject(AXPEntityService);\n private readonly aiManager = inject(AXPAiManagerService, { optional: true });\n\n private readonly assistData = this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.assist.name)\n .data<string, AXPAiEffectiveAssistRow, AXPAiEffectiveAssistRow, AXPAiEffectiveAssistRow, AXPAiEffectiveAssistRow>();\n\n readonly conversationCreated = output<string>();\n\n readonly rows = signal<AXMChatAiTargetRow[]>([]);\n readonly loading = signal(true);\n readonly selectedAssistId = signal<string | undefined>(undefined);\n readonly starterPromptItems = signal<AXPAiChatFollowUpItem[]>([]);\n readonly draftText = signal('');\n readonly sending = signal(false);\n private readonly draftInput = viewChild<ElementRef<HTMLTextAreaElement>>('draftInput');\n readonly selectedAssistLabel = computed((): AXPMultiLanguageString | string | undefined => {\n const selected = this.rows().find((row) => row.id === this.selectedAssistId());\n return selected?.title;\n });\n\n private assistsLoadPromise: Promise<void> | null = null;\n private starterPromptsLoadGeneration = 0;\n\n constructor() {\n void this.ensureAssistsLoaded();\n\n effect(() => {\n const assistId = this.selectedAssistId();\n void this.loadStarterPromptsForAssist(assistId);\n });\n\n effect(() => {\n this.draftText();\n queueMicrotask(() => this.resizeDraftInput());\n });\n }\n\n onAssistIdChange(value: string | undefined | null): void {\n this.selectedAssistId.set(value?.trim() || undefined);\n }\n\n canSend(): boolean {\n const id = this.selectedAssistId();\n const text = this.draftText().trim();\n return Boolean(id && text.length > 0 && !this.sending() && !this.loading());\n }\n\n resizeDraftInput(): void {\n const textarea = this.draftInput()?.nativeElement;\n if (!textarea) {\n return;\n }\n textarea.style.height = '0px';\n textarea.style.height = `${Math.min(textarea.scrollHeight, 224)}px`;\n }\n\n onDraftKeydown(event: KeyboardEvent): void {\n if (event.key !== 'Enter' || event.shiftKey || event.isComposing) {\n return;\n }\n event.preventDefault();\n if (this.canSend()) {\n void this.send();\n }\n }\n\n async send(): Promise<void> {\n const assistId = this.selectedAssistId();\n const text = this.draftText().trim();\n if (!assistId || !text || this.sending()) {\n return;\n }\n const row = this.rows().find((r) => r.id === assistId);\n if (!row) {\n return;\n }\n\n this.sending.set(true);\n try {\n const participantId = axmChatAiPeerParticipantId(row.id);\n const avatar = this.targetAvatarUrl(row);\n\n const conversation = await this.conversationService.createConversation([participantId], 'bot', {\n title: this.translationService.resolve(row.title as AXPMultiLanguageString) ?? row.name,\n ...(avatar ? { avatar } : {}),\n icon: 'fa-solid fa-robot',\n metadata: axmBuildAiChatConversationMetadata(row),\n });\n\n await this.conversationService.selectConversation(conversation.id);\n\n const payload: AXMessagePayload = { type: 'text', text };\n await this.conversationService.sendMessage({\n conversationId: conversation.id,\n type: 'text',\n payload,\n });\n\n this.draftText.set('');\n this.conversationCreated.emit(conversation.id);\n } catch (error: unknown) {\n console.error('Failed to start assist chat from empty state:', error);\n const message = await this.translationService.translateAsync('@conversation:chat.empty-assist.errors.send');\n this.toastService.danger(message);\n } finally {\n this.sending.set(false);\n }\n }\n\n private async ensureAssistsLoaded(): Promise<void> {\n if (!this.assistsLoadPromise) {\n this.assistsLoadPromise = this.loadAssistsFromApi();\n }\n await this.assistsLoadPromise;\n }\n\n private async loadAssistsFromApi(): Promise<void> {\n this.loading.set(true);\n try {\n const rows = await axmLoadChatAiTargets(this.entityRegistry);\n this.rows.set(rows);\n this.selectedAssistId.set(await this.resolveInitialAssistId(rows));\n } catch (error: unknown) {\n console.error('Failed to load AI chat targets (empty composer):', error);\n const message = await this.translationService.translateAsync(\n '@conversation:chat.empty-assist.errors.load-assists',\n );\n this.toastService.danger(message);\n this.rows.set([]);\n this.selectedAssistId.set(undefined);\n } finally {\n this.loading.set(false);\n }\n }\n\n /** Prefers the tenant default assist from AI Settings, then the first catalog row. */\n private async resolveInitialAssistId(rows: AXMChatAiTargetRow[]): Promise<string | undefined> {\n if (!rows.length) {\n return undefined;\n }\n\n const defaultAssistId = await this.resolveDefaultAssistId();\n if (defaultAssistId && rows.some((row) => row.id === defaultAssistId)) {\n return defaultAssistId;\n }\n\n return rows[0]?.id;\n }\n\n private async resolveDefaultAssistId(): Promise<string | undefined> {\n if (!this.aiManager) {\n return undefined;\n }\n\n try {\n const assist = await this.aiManager.getEffectiveAssist();\n return assist.id?.trim() || undefined;\n } catch (error: unknown) {\n console.warn('Failed to resolve default assist for empty chat composer:', error);\n return undefined;\n }\n }\n\n targetAvatarUrl(row: AXMChatAiTargetRow): string | null {\n const avatarUrl = row.professionImageUrl?.trim();\n return avatarUrl ? avatarUrl : null;\n }\n\n private async loadStarterPromptsForAssist(assistId: string | undefined): Promise<void> {\n const generation = ++this.starterPromptsLoadGeneration;\n const id = assistId?.trim();\n if (!id) {\n this.starterPromptItems.set([]);\n return;\n }\n\n try {\n const assist = await this.assistData.byKey(id);\n if (generation !== this.starterPromptsLoadGeneration) {\n return;\n }\n this.starterPromptItems.set(\n axmAssistStarterPromptChipItems(assist, { assistId: id }),\n );\n } catch (error: unknown) {\n console.error('Failed to load assist starter prompts (empty composer):', error);\n if (generation === this.starterPromptsLoadGeneration) {\n this.starterPromptItems.set([]);\n }\n }\n }\n}\n","import { AXClosableComponent, AXComponentCloseEvent, AXDataSource } from '@acorex/cdk/common';\nimport { AXAvatarComponent } from '@acorex/components/avatar';\nimport { AXButtonComponent } from '@acorex/components/button';\nimport { AXConversation, AXConversationService } from '@acorex/components/conversation2';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXImageComponent } from '@acorex/components/image';\nimport { AXListComponent } from '@acorex/components/list';\nimport { AXBasePageComponent } from '@acorex/components/page';\nimport type { AXPopupRef } from '@acorex/components/popup';\nimport { AXSearchBoxComponent } from '@acorex/components/search-box';\nimport { AXToastService } from '@acorex/components/toast';\nimport { AXTranslationModule, AXTranslationService } from '@acorex/core/translation';\nimport { AsyncPipe } from '@angular/common';\n\nimport {\n ChangeDetectionStrategy,\n Component,\n TemplateRef,\n effect,\n inject,\n input,\n signal,\n viewChild,\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { AXPEntityDefinitionRegistryService } from '@acorex/platform/layout/entity';\nimport {\n axmBuildAiChatConversationMetadata,\n axmChatAiPeerParticipantId,\n axmChatAiTargetAvatarUrl,\n axmChatAiTargetDisplayName,\n axmFilterChatAiTargets,\n axmLoadChatAiTargets,\n type AXMChatAiTargetRow,\n} from '../utils/chat-ai-target.util';\n\n@Component({\n selector: 'axm-chat-with-assist-dialog',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n FormsModule,\n AXButtonComponent,\n AXListComponent,\n AXSearchBoxComponent,\n AXAvatarComponent,\n AXImageComponent,\n AXDecoratorModule,\n AXTranslationModule,\n AsyncPipe,\n ],\n providers: [{ provide: AXClosableComponent, useExisting: AXMChatWithAssistDialogComponent }],\n template: `\n <div class=\"new-conversation-panel\">\n <div class=\"new-conversation-dialog-content\">\n <div class=\"form-field form-field--grow\">\n <div class=\"users-list-wrap\">\n <ax-list\n #assistsList\n class=\"users-list\"\n [dataSource]=\"assistListDataSource\"\n [multiple]=\"true\"\n [checkbox]=\"false\"\n [valueField]=\"'id'\"\n [textField]=\"'name'\"\n [itemHeight]=\"'auto'\"\n [ngModel]=\"selectedTargetIds()\"\n (ngModelChange)=\"onSelectedTargetsChange($event ?? [])\"\n [emptyTemplate]=\"assistsListEmptyTpl()\"\n [itemTemplate]=\"assistItemTpl\"\n >\n <ax-header class=\"users-list-header\">\n <div class=\"users-list-header-inner\">\n <ax-search-box\n [value]=\"searchQuery()\"\n (valueChange)=\"onSearchChange($event)\"\n [placeholder]=\"('@conversation:chat.assist-dialog.search.placeholder' | translate | async) ?? ''\"\n ></ax-search-box>\n </div>\n </ax-header>\n </ax-list>\n </div>\n </div>\n </div>\n <ax-footer class=\"dialog-footer\">\n <ax-suffix>\n <ax-button\n [text]=\"('@conversation:comments.actions.cancel.title' | translate | async) ?? ''\"\n [look]=\"'solid'\"\n (onClick)=\"onCancel()\"\n ></ax-button>\n <ax-button\n [text]=\"('@conversation:chat.assist-dialog.actions.start-chat' | translate | async) ?? ''\"\n [look]=\"'solid'\"\n [color]=\"'primary'\"\n [disabled]=\"!selectedTargetIds().length || loading()\"\n (onClick)=\"onStartChat()\"\n ></ax-button>\n </ax-suffix>\n </ax-footer>\n </div>\n\n <ng-template #assistsListEmpty>\n <div class=\"users-list-empty\">\n @if (loading()) {\n {{ '@conversation:chat.assist-dialog.states.loading' | translate | async }}\n } @else if (searchQuery()) {\n {{ '@conversation:chat.assist-dialog.states.no-search-result' | translate | async }}\n } @else {\n {{ '@conversation:chat.assist-dialog.states.no-assists' | translate | async }}\n }\n </div>\n </ng-template>\n\n <ng-template #assistItemTpl let-item>\n @if (targetFromItem(item); as row) {\n <div class=\"user-item-content\">\n <ax-avatar [size]=\"54\">\n @if (targetAvatarUrl(row); as avatarUrl) {\n <ax-image [src]=\"avatarUrl\" [alt]=\"row.title | translate | async\"></ax-image>\n } @else {\n <ax-icon\n ><i\n class=\"fa-solid fa-robot\"\n style=\"font-size: 1.35rem;\n line-height: 1;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 100%;\n height: 100%;\"\n ></i\n ></ax-icon>\n }\n </ax-avatar>\n <div class=\"user-item-text\">\n <span class=\"ax-truncated user-name-text\">{{ row.title | translate | async }}</span>\n @if (row.description) {\n <span class=\"user-description-text ax-truncated\">{{ row.description | translate | async }}</span>\n }\n </div>\n </div>\n }\n </ng-template>\n `,\n styles: [\n `\n :host {\n display: block;\n }\n\n .new-conversation-panel {\n display: flex;\n flex-direction: column;\n width: 100%;\n overflow: hidden;\n }\n\n .new-conversation-dialog-content {\n flex: 1;\n min-height: 0;\n overflow: hidden;\n display: flex;\n flex-direction: column;\n gap: 0.75rem;\n }\n\n .form-field--grow {\n flex: 1;\n min-height: 0;\n display: flex;\n flex-direction: column;\n }\n\n .form-field {\n display: flex;\n flex-direction: column;\n gap: 0.35rem;\n }\n\n .users-list-wrap {\n height: min(50vh, 36rem);\n overflow: hidden;\n }\n\n .users-list {\n display: block;\n height: 100%;\n }\n\n .users-list-header {\n display: block;\n position: sticky;\n top: 0;\n z-index: 1;\n border-bottom: 1px solid rgb(var(--ax-sys-color-border-light-surface));\n }\n\n .users-list-header-inner {\n padding: 0.5rem 0.75rem;\n }\n\n .user-item-content {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n height: 100%;\n padding: 0.5rem 0.75rem;\n min-width: 0;\n }\n\n .user-item-text {\n display: flex;\n flex-direction: column;\n justify-content: center;\n min-width: 0;\n flex: 1;\n gap: 0.1rem;\n }\n\n .user-name-text {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n font-size: 1rem;\n line-height: 1.5rem;\n font-weight: 500;\n }\n\n .user-description-text {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n font-size: 0.875rem;\n line-height: 1.25rem;\n font-weight: 400;\n opacity: 0.72;\n color: rgb(var(--ax-sys-color-on-surface));\n }\n\n .users-list-empty {\n padding: 1rem;\n text-align: center;\n font-size: 0.85rem;\n opacity: 0.7;\n }\n\n .dialog-footer {\n flex-shrink: 0;\n padding: 1rem;\n border-top: 1px solid var(--ax-border-color, #e5e7eb);\n display: flex;\n justify-content: flex-end;\n }\n\n .dialog-footer > ax-suffix {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n justify-content: flex-end;\n gap: 0.75rem;\n }\n `,\n ],\n})\nexport class AXMChatWithAssistDialogComponent extends AXBasePageComponent {\n /** Set by {@link AXPopupService} from `data`. */\n conversationService!: AXConversationService;\n\n private readonly toastService = inject(AXToastService);\n private readonly translationService = inject(AXTranslationService);\n private readonly entityRegistry = inject(AXPEntityDefinitionRegistryService);\n\n readonly __popup__ = input<AXPopupRef | undefined>(undefined);\n\n /** When hosted in a tabbed shell, the parent owns the popup title. */\n readonly embeddedInTabs = input(false);\n\n readonly rows = signal<AXMChatAiTargetRow[]>([]);\n readonly loading = signal(true);\n readonly searchQuery = signal('');\n readonly selectedTargetIds = signal<string[]>([]);\n\n private targetsLoadPromise: Promise<void> | null = null;\n\n readonly assistListDataSource = new AXDataSource<unknown>({\n pageSize: 100,\n key: 'id',\n load: async (e) => {\n await this.ensureTargetsLoaded();\n const filtered = this.filteredTargetRows() as unknown[];\n return {\n items: filtered.slice(e.skip, e.skip + e.take),\n total: filtered.length,\n };\n },\n byKey: (key) => Promise.resolve(this.rows().find((r) => r.id === key) ?? null),\n });\n\n readonly assistsListEmptyTpl = viewChild.required<TemplateRef<unknown>>('assistsListEmpty');\n readonly assistsList = viewChild<AXListComponent>('assistsList');\n\n private readonly syncPopupTitle = effect(() => {\n if (this.embeddedInTabs()) {\n return;\n }\n const popupRef = this.__popup__();\n if (popupRef) {\n this.setTitle = (t: string) => popupRef.setTitle(t);\n void this.#updatePopupTitle(popupRef);\n }\n });\n\n targetFromItem(item: unknown): AXMChatAiTargetRow | null {\n if (!item || typeof item !== 'object') {\n return null;\n }\n const o = item as Record<string, unknown>;\n if ('data' in o && o['data'] && typeof o['data'] === 'object') {\n return o['data'] as AXMChatAiTargetRow;\n }\n if (typeof o['id'] === 'string' && typeof o['name'] === 'string') {\n return o as unknown as AXMChatAiTargetRow;\n }\n return null;\n }\n\n onSelectedTargetsChange(ids: string[]): void {\n const deduped = [...new Set(ids)];\n const next = deduped.length ? [deduped[deduped.length - 1]] : [];\n this.selectedTargetIds.set(next);\n if (deduped.length > 1) {\n queueMicrotask(() => this.assistsList()?.refresh(false));\n }\n }\n\n onSearchChange(value: string): void {\n this.searchQuery.set(value ?? '');\n this.assistsList()?.refresh(false);\n }\n\n private async ensureTargetsLoaded(): Promise<void> {\n if (!this.targetsLoadPromise) {\n this.targetsLoadPromise = this.loadTargetsFromApi();\n }\n await this.targetsLoadPromise;\n }\n\n private async loadTargetsFromApi(): Promise<void> {\n this.loading.set(true);\n try {\n this.rows.set(await axmLoadChatAiTargets(this.entityRegistry));\n } catch (error: unknown) {\n console.error('Failed to load AI chat targets:', error);\n const message = await this.translationService.translateAsync(\n '@conversation:chat.assist-dialog.errors.load-assists',\n );\n this.toastService.danger(message);\n this.rows.set([]);\n } finally {\n this.loading.set(false);\n }\n }\n\n private filteredTargetRows(): AXMChatAiTargetRow[] {\n return axmFilterChatAiTargets(\n (value) => this.translationService.resolve(value),\n this.rows(),\n this.searchQuery(),\n );\n }\n\n displayName(row: AXMChatAiTargetRow): string {\n return axmChatAiTargetDisplayName((value) => this.translationService.resolve(value), row);\n }\n\n targetAvatarUrl(row: AXMChatAiTargetRow): string | null {\n return axmChatAiTargetAvatarUrl(row);\n }\n\n onCancel(): void {\n const event = new AXComponentCloseEvent();\n event.component = this;\n event.data = null;\n this.onClosed.emit(event);\n }\n\n async onStartChat(): Promise<void> {\n const targetId = this.selectedTargetIds()[0];\n if (!targetId || !this.conversationService) {\n return;\n }\n\n const row = this.rows().find((r) => r.id === targetId);\n if (!row) {\n return;\n }\n\n const participantId = axmChatAiPeerParticipantId(row.id);\n const title = this.displayName(row);\n const avatar = this.targetAvatarUrl(row);\n\n try {\n const conversation = await this.conversationService.createConversation([participantId], 'bot', {\n title,\n ...(avatar ? { avatar } : {}),\n icon: 'fa-solid fa-robot',\n metadata: axmBuildAiChatConversationMetadata(row),\n });\n\n const event = new AXComponentCloseEvent();\n event.component = this;\n event.data = conversation as AXConversation;\n this.onClosed.emit(event);\n } catch (error: unknown) {\n console.error('Failed to start assist chat:', error);\n const message = await this.translationService.translateAsync(\n '@conversation:chat.assist-dialog.errors.start-chat',\n );\n this.toastService.danger(message);\n }\n }\n\n async #updatePopupTitle(popupRef: AXPopupRef): Promise<void> {\n const title = await this.translationService.translateAsync('@conversation:new-conversation.actions.chat-with-ai');\n popupRef.setTitle(title);\n }\n}\n","import { AXClickEvent } from '@acorex/cdk/common';\nimport { AXButtonModule } from '@acorex/components/button';\nimport {\n AXConversation,\n AXConversationService,\n AXNewConversationDialogComponent,\n} from '@acorex/components/conversation2';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXFabComponent, AXFabItemComponent } from '@acorex/components/fab';\nimport { AXPopupService } from '@acorex/components/popup';\nimport { AXTranslationModule, AXTranslationService } from '@acorex/core/translation';\nimport { AsyncPipe } from '@angular/common';\n\nimport { ChangeDetectionStrategy, Component, inject, output } from '@angular/core';\nimport { AXMChatWithAssistDialogComponent } from './chat-with-assist-dialog.component';\n\n/**\n * Replaces the default sidebar \"New conversation\" control with a split-style dropdown:\n * - New chat: {@link AXNewConversationDialogComponent} (human peers only; assist peers are excluded from user discovery).\n * - Chat with AI: {@link AXMChatWithAssistDialogComponent} (pick an Assist as the peer).\n */\n@Component({\n selector: 'axm-chat-sidebar-new-actions',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [AXButtonModule, AXFabComponent, AXFabItemComponent, AXDecoratorModule, AXTranslationModule, AsyncPipe],\n template: `\n <div class=\"new-conversation-button-container-inner\">\n <ax-fab class=\"new-conversation-fab\" [popupStyle]=\"'box'\" #fab>\n <ax-icon icon=\"fa-light fa-plus\"></ax-icon>\n <ax-fab-item\n [label]=\"('@conversation:new-conversation.actions.new-chat' | translate | async) ?? ''\"\n (onClick)=\"openNewConversation($event); fab.close()\"\n >\n <ax-icon icon=\"fa-light fa-comment\"></ax-icon>\n </ax-fab-item>\n <ax-fab-item\n [label]=\"('@conversation:new-conversation.actions.chat-with-ai' | translate | async) ?? ''\"\n (onClick)=\"openAssistChat($event); fab.close()\"\n >\n <ax-icon icon=\"fa-light fa-robot\"></ax-icon>\n </ax-fab-item>\n </ax-fab>\n </div>\n `,\n styles: [\n `\n :host {\n display: block;\n }\n\n .new-conversation-button-container-inner {\n display: flex;\n justify-content: end;\n align-items: center;\n padding-inline-end: 0.25rem;\n }\n\n .new-conversation-fab {\n z-index: 1;\n }\n `,\n ],\n})\nexport class AXMChatSidebarNewActionsComponent {\n private readonly popupService = inject(AXPopupService);\n private readonly conversationService = inject(AXConversationService);\n private readonly translationService = inject(AXTranslationService);\n\n /** Fires with the new conversation id after create + select (parent typically navigates). */\n readonly conversationCreated = output<string>();\n\n async openNewConversation(event?: AXClickEvent): Promise<void> {\n event?.nativeEvent?.stopPropagation();\n const title = await this.translationService.translateAsync('@conversation:new-conversation.header');\n const result = await this.popupService.open(AXNewConversationDialogComponent, {\n title,\n size: 'sm',\n closeButton: true,\n data: {\n conversationService: this.conversationService,\n },\n });\n if (result?.data) {\n await this.finishWithConversation(result.data as AXConversation);\n }\n }\n\n async openAssistChat(event?: AXClickEvent): Promise<void> {\n event?.nativeEvent?.stopPropagation();\n const title = await this.translationService.translateAsync('@conversation:new-conversation.actions.chat-with-ai');\n const result = await this.popupService.open(AXMChatWithAssistDialogComponent, {\n title,\n size: 'sm',\n closeButton: true,\n data: {\n conversationService: this.conversationService,\n },\n });\n if (result?.data) {\n await this.finishWithConversation(result.data as AXConversation);\n }\n }\n\n private async finishWithConversation(conversation: AXConversation): Promise<void> {\n await this.conversationService.selectConversation(conversation.id);\n this.conversationCreated.emit(conversation.id);\n }\n}\n","import { AXButtonComponent } from '@acorex/components/button';\n\nimport {\n AXComposerComponent,\n AXComposerService,\n AXConversationContainerDirective,\n AXConversationService,\n AXInfoBarComponent,\n AXInfoBarService,\n AXMessageListComponent,\n AXSidebarComponent,\n} from '@acorex/components/conversation2';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXDialogService } from '@acorex/components/dialog';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPDeviceService } from '@acorex/platform/core';\nimport { AXPThemeLayoutBlockComponent, AXPThemeLayoutStartSideComponent } from '@acorex/platform/layout/components';\nimport { AXPPageLayoutBaseComponent, AXPPageLayoutComponent } from '@acorex/platform/layout/views';\n\nimport { afterNextRender, ChangeDetectionStrategy, Component, computed, effect, inject, ViewEncapsulation } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { ActivatedRoute } from '@angular/router';\nimport { map } from 'rxjs';\nimport { AXMAssistChatDebugModeService } from './plugins/actions/assist-chat-debug-mode.service';\nimport { AXMChatAssistComposerStarterPromptsComponent } from './plugins/composer/chat-assist-composer-starter-prompts.component';\nimport { AXMChatEmptyAssistComposerComponent } from './plugins/empty-state/chat-empty-assist-composer.component';\nimport { AXMChatSidebarNewActionsComponent } from './plugins/side-bar/chat-sidebar-new-actions.component';\nimport { AXMChatConversationApi } from './plugins/services/chat-conversation-apis.abstract';\n\n@Component({\n selector: 'axm-chat',\n templateUrl: './chat.component.html',\n styleUrls: ['./chat.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [\n AXConversationContainerDirective,\n AXSidebarComponent,\n AXInfoBarComponent,\n AXMessageListComponent,\n AXComposerComponent,\n AXButtonComponent,\n AXDecoratorModule,\n AXTranslationModule,\n AXPPageLayoutComponent,\n AXPThemeLayoutBlockComponent,\n AXPThemeLayoutStartSideComponent,\n AXMChatSidebarNewActionsComponent,\n AXMChatEmptyAssistComposerComponent,\n AXMChatAssistComposerStarterPromptsComponent,\n ],\n host: {\n '(keydown.escape)': 'onContainerEscape()',\n '[tabindex]': '\"-1\"',\n },\n})\nexport class AXMChatComponent extends AXPPageLayoutBaseComponent {\n //#region ---- Services & Dependencies ----\n\n private readonly conversationService = inject(AXConversationService);\n private readonly chatConversationApi = inject(AXMChatConversationApi);\n private readonly composerService = inject(AXComposerService);\n private readonly infoBarService = inject(AXInfoBarService);\n /** Eagerly resolves tenant debug mode for assist debug download action visibility. */\n private readonly _assistChatDebugModeInit = inject(AXMAssistChatDebugModeService);\n private readonly activatedRoute = inject(ActivatedRoute);\n private readonly dialogService = inject(AXDialogService);\n protected readonly deviceService = inject(AXPDeviceService);\n private readonly routeConversationId = toSignal(\n this.activatedRoute.paramMap.pipe(map((params) => params.get('id'))),\n { initialValue: this.activatedRoute.snapshot.paramMap.get('id') },\n );\n\n /**\n * Keeps conversation state aligned with the current route id.\n * This handles deep links, browser back/forward, and route reuse.\n */\n #syncConversationWithRoute = effect(() => {\n const conversationId = this.routeConversationId();\n const activeConversationId = this.conversationService.activeConversationId();\n\n this.chatConversationApi.reportFocusedConversation(conversationId);\n\n if (conversationId === activeConversationId) {\n return;\n }\n\n if (conversationId) {\n void this.#trySelectConversationFromRoute(conversationId);\n return;\n }\n\n void this.conversationService.selectConversation(null as never);\n this.infoBarService.hideComponent();\n this.composerService.hideComponent();\n this.composerService.draftText.set('');\n });\n\n override async ngOnInit(): Promise<void> {\n await super.ngOnInit();\n }\n\n /**\n * Selects the conversation for a deep-linked route; on failure shows an alert and returns to chat root.\n */\n async #trySelectConversationFromRoute(conversationId: string): Promise<void> {\n try {\n await this.conversationService.selectConversation(conversationId);\n } catch {\n const title = await this.translateService.translateAsync('@conversation:chat.route.error-title');\n const message = await this.translateService.translateAsync('@conversation:chat.route.conversation-not-found');\n await this.dialogService.alert(title, message, 'danger');\n this.conversationService.closeActiveConversation();\n this.#navigateToChatRoot();\n }\n }\n\n //#endregion\n\n //#region ---- Properties ----\n\n /**\n * Computed signal to check if there is an active conversation selected.\n */\n readonly hasActiveConversation = computed(() => {\n return this.conversationService.activeConversationId() !== null;\n });\n\n readonly showChatList = computed(() => {\n return this.deviceService.isMobileDevice() && !this.hasActiveConversation();\n });\n\n //#endregion\n\n //#region ---- Lifecycle Methods ----\n\n /** Mobile list route: open sidebar after layout exists (no `:id`). */\n #afterRenderInit = afterNextRender(() => {\n if (!this.activatedRoute.snapshot.paramMap.get('id') && this.deviceService.isMobileDevice()) {\n this.toggleStartSide();\n }\n });\n\n //#endregion\n\n //#region ---- UI Handlers ----\n\n /**\n * Handles conversation selection from the sidebar.\n * Navigates to the selected conversation route.\n * On mobile, closes the sidebar after selection.\n * @param conversationId - The ID of the selected conversation.\n */\n onConversationSelected(conversationId: string): void {\n const routeConversationId = this.routeConversationId();\n\n if (routeConversationId !== conversationId) {\n // URL is the source of truth; #syncConversationWithRoute selects the conversation.\n void this.router.navigate([this.#getAppRouteSegment(), 'chat', conversationId]);\n } else if (this.conversationService.activeConversationId() !== conversationId) {\n void this.conversationService.selectConversation(conversationId);\n }\n\n // On mobile, close the sidebar when a conversation is selected\n if (this.deviceService.isMobileDevice()) {\n this.toggleStartSide();\n }\n }\n\n /**\n * Navigates back to the conversation list (mobile view).\n * Removes the route param and clears the active conversation.\n * Opens the sidebar to show the conversation list.\n */\n openChatList(): void {\n this.#navigateToChatRoot();\n\n // On mobile, open the sidebar to show conversation list\n if (this.deviceService.isMobileDevice()) {\n this.toggleStartSide();\n }\n }\n\n /**\n * Handles Escape key from chat container.\n * Replicates conversation2 source behavior by closing active conversation here.\n * Also keeps URL and chat state in sync.\n */\n onContainerEscape(): void {\n if (this.hasActiveConversation()) {\n this.conversationService.closeActiveConversation();\n }\n\n if (this.routeConversationId()) {\n this.#navigateToChatRoot();\n }\n }\n\n /**\n * Toggles the start side (sidebar) visibility.\n */\n protected override toggleStartSide(): void {\n this.layout()?.toggleStartSide();\n }\n\n /**\n * Navigates to chat root route and removes `:id` when it exists.\n */\n #navigateToChatRoot(): void {\n if (!this.routeConversationId()) {\n return;\n }\n\n void this.router.navigate([this.#getAppRouteSegment(), 'chat']);\n }\n\n /**\n * Returns current app segment used in chat routes.\n */\n #getAppRouteSegment(): string {\n return this.activatedRoute.snapshot.parent?.paramMap.get('app') || 'platform';\n }\n\n //#endregion\n}\n","<axp-page-layout #container axConversationContainer>\n <!-- Sidebar: Always visible on desktop, visible on mobile only when no conversation is selected -->\n\n <axp-layout-start-side class=\"ax-border-e ax-h-full\">\n <axp-layout-content class=\"ax-flex ax-flex-col ax-min-h-0 ax-max-w-80\">\n <div class=\"ax-h-full ax-flex ax-flex-col ax-shrink-0\">\n <ax-conversation-sidebar (conversationSelected)=\"onConversationSelected($event.id)\" class=\"ax-group\">\n <ax-suffix>\n <div class=\"ax-flex ax-h-14 ax-shrink-0 ax-items-center ax-justify-end ax-overflow-hidden\">\n <axm-chat-sidebar-new-actions\n class=\"group-hover:!ax-translate-y-0 !ax-translate-y-36 ax-transition-transform ax-duration-200\"\n (conversationCreated)=\"onConversationSelected($event)\" />\n </div>\n </ax-suffix>\n </ax-conversation-sidebar>\n </div>\n </axp-layout-content>\n </axp-layout-start-side>\n\n <!-- Chat content: Always visible on desktop, visible on mobile only when a conversation is selected -->\n\n <axp-page-content class=\"ax-h-full ax-overflow-hidden !ax-p-0 ax-flex ax-min-h-0 ax-flex-col\">\n @if (showChatList()) {\n <ax-conversation-sidebar (conversationSelected)=\"onConversationSelected($event.id)\" class=\"ax-group\">\n <ax-suffix>\n <div class=\"ax-flex ax-h-14 ax-shrink-0 ax-items-center ax-justify-end ax-overflow-hidden\">\n <axm-chat-sidebar-new-actions\n class=\"group-hover:!ax-translate-y-0 !ax-translate-y-36 ax-transition-transform ax-duration-200\"\n (conversationCreated)=\"onConversationSelected($event)\" />\n </div>\n </ax-suffix>\n </ax-conversation-sidebar>\n } @else {\n <div class=\"ax-flex ax-h-full ax-min-h-0 ax-flex-1 ax-flex-col\">\n <ax-conversation-info-bar class=\"ax-shadow-md\">\n <ax-prefix>\n <!-- Back button visible only on mobile -->\n @if (deviceService.isMobileDevice()) {\n <ax-button look=\"blank\" (onClick)=\"openChatList()\">\n <ax-icon icon=\"fa-light fa-bars\"></ax-icon>\n </ax-button>\n } @else {\n <ax-button class=\"ax-rounded-full\" look=\"blank\" (onClick)=\"onContainerEscape()\" aria-label=\"Close Chat\">\n <ax-icon icon=\"fa-light fa-xmark ax-text-xl\"></ax-icon>\n </ax-button>\n }\n </ax-prefix>\n </ax-conversation-info-bar>\n <ax-conversation-message-list class=\"ax-min-h-0 ax-flex-1 ax-overflow-hidden\" style=\"direction: ltr\">\n <div ax-conversation-message-list-no-active class=\"ax-block\" style=\"width: min(95%, 50rem)\">\n <axm-chat-empty-assist-composer (conversationCreated)=\"onConversationSelected($event)\" />\n </div>\n <axm-chat-assist-composer-starter-prompts ax-conversation-message-list-empty />\n </ax-conversation-message-list>\n </div>\n }\n </axp-page-content>\n\n <axp-page-footer class=\"ax-block\">\n <ax-conversation-composer></ax-conversation-composer>\n </axp-page-footer>\n</axp-page-layout>","//#region ---- Imports ----\n\nimport { RootConfig } from '../../../../contracts';\nimport { AXPFileStorageStatus } from '@acorex/platform/contracts';\nimport { type AXPFileStorageService } from '@acorex/platform/common';\n\n//#endregion\n\n//#region ---- Constants ----\n\n/** refType for multimedia attachments sent from conversation chat. */\nexport const AXM_CONVERSATION_CHAT_ATTACHMENT_REF_TYPE = `${RootConfig.module.name}.ChatAttachment`;\n\n/** File storage category for conversation chat attachments. */\nexport const AXM_CONVERSATION_CHAT_ATTACHMENT_CATEGORY = 'chat-attachment';\n\n//#endregion\n\n//#region ---- Persistence ----\n\n/**\n * Persists a chat attachment; {@link refId} is typically the conversation id (batch grouping for multi-send).\n */\nexport async function persistChatAttachment(\n fileStorage: AXPFileStorageService,\n file: File,\n refId: string,\n): Promise<{ fileId: string }> {\n const trimmed = refId.trim();\n if (!trimmed) {\n throw new Error('refId is required for chat attachment persistence.');\n }\n\n const info = await fileStorage.save({\n file,\n name: file.name,\n refId: trimmed,\n refType: AXM_CONVERSATION_CHAT_ATTACHMENT_REF_TYPE,\n category: AXM_CONVERSATION_CHAT_ATTACHMENT_CATEGORY,\n status: AXPFileStorageStatus.Temporary,\n });\n\n const fileId = info.fileId?.trim();\n if (!fileId) {\n throw new Error('File storage did not return a fileId.');\n }\n\n await fileStorage.commit(fileId);\n return { fileId };\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport type { AXMessage } from '@acorex/components/conversation2';\nimport {\n axpAiChatMessageIsDelegatedReflectionExcluded,\n axpAiDelegatedAgentResultSegments,\n type AXPAiChatFollowUpItem,\n type AXPAiChatMessage,\n type AXPAiChatResponse,\n type AXPAiDelegatedAgentResultSegment,\n} from '@acorex/modules/ai-management';\nimport type { AXPWidgetNode } from '@acorex/platform/layout/widget-core';\nimport { axmAssistNormalizeFollowUpItemsForConversation } from './assist-suggestion-chips.util';\n\n//#endregion\n\n//#region ---- Transcript read ----\n\n/**\n * Reorders assist transcript for debug UI: think first, tool/agent + tool results, then text blocks.\n */\nexport function axmNormalizeAssistTranscriptForChatUi(input: AXPAiChatMessage[]): AXPAiChatMessage[] {\n if (input.length === 0) {\n return input;\n }\n\n const thinkParts: string[] = [];\n const textParts: string[] = [];\n const middle: AXPAiChatMessage[] = [];\n\n for (const m of input) {\n if (m.role === 'tool' || m.role === 'user' || m.role === 'system') {\n middle.push(m);\n continue;\n }\n if (m.role !== 'assistant') {\n middle.push(m);\n continue;\n }\n for (const r of m.responses) {\n if (r.type === 'think') {\n thinkParts.push(r.content);\n } else if (r.type === 'text') {\n textParts.push(r.content);\n } else {\n middle.push({ role: 'assistant', responses: [r] } as AXPAiChatMessage);\n }\n }\n }\n\n const out: AXPAiChatMessage[] = [];\n if (thinkParts.length > 0) {\n out.push({\n role: 'assistant',\n responses: [{ type: 'think', content: thinkParts.join('\\n\\n') }],\n });\n }\n out.push(...middle);\n if (textParts.length > 0) {\n out.push({\n role: 'assistant',\n responses: [{ type: 'text', content: textParts.join('\\n\\n') }],\n });\n }\n return out;\n}\n\n/** Debug transcript from {@code metadata.transcripts} or streaming {@code metadata.transcriptDraft}. */\nexport function axmReadAssistAiTranscript(metadata: unknown): AXPAiChatMessage[] | null {\n if (typeof metadata !== 'object' || metadata == null) {\n return null;\n }\n const m = metadata as Record<string, unknown>;\n const final = m['transcripts'];\n const draft = m['transcriptDraft'];\n if (Array.isArray(final) && final.length > 0) {\n return axmNormalizeAssistTranscriptForChatUi(final as AXPAiChatMessage[]);\n }\n if (Array.isArray(draft) && draft.length > 0) {\n return axmNormalizeAssistTranscriptForChatUi(draft as AXPAiChatMessage[]);\n }\n return null;\n}\n\n/** Raw engine transcript (chronological), without debug UI reordering. */\nexport function axmReadAssistAiTranscriptRaw(metadata: unknown): AXPAiChatMessage[] {\n if (typeof metadata !== 'object' || metadata == null) {\n return [];\n }\n const m = metadata as Record<string, unknown>;\n const final = m['transcripts'];\n const draft = m['transcriptDraft'];\n if (Array.isArray(final) && final.length > 0) {\n return final as AXPAiChatMessage[];\n }\n if (Array.isArray(draft) && draft.length > 0) {\n return draft as AXPAiChatMessage[];\n }\n return [];\n}\n\n//#endregion\n\n//#region ---- Layout / synthetic helpers ----\n\nconst AXM_ASSIST_TRANSCRIPT_NON_WIDGET_TYPES = new Set<string>([\n 'text',\n 'think',\n 'image',\n 'audio',\n 'file',\n 'followUp',\n 'tool',\n 'agent',\n 'tool_result',\n 'agent_result',\n]);\n\nconst AXM_ASSIST_NODE_ENVELOPE_UNWRAP_MAX_DEPTH = 6;\n\nexport function axmAssistWidgetNodeFromUnknown(content: unknown, depth = 0): AXPWidgetNode | null {\n if (depth > AXM_ASSIST_NODE_ENVELOPE_UNWRAP_MAX_DEPTH) {\n return null;\n }\n if (content == null || typeof content !== 'object' || Array.isArray(content)) {\n return null;\n }\n const rec = content as Record<string, unknown>;\n const t = rec['type'];\n if (typeof t !== 'string') {\n return null;\n }\n if (t === 'node' && 'content' in rec) {\n return axmAssistWidgetNodeFromUnknown(rec['content'], depth + 1);\n }\n if (AXM_ASSIST_TRANSCRIPT_NON_WIDGET_TYPES.has(t)) {\n return null;\n }\n return content as AXPWidgetNode;\n}\n\nexport function axmSyntheticEmbedMessage(\n parent: AXMessage,\n suffix: string,\n partial: Pick<AXMessage, 'type' | 'payload'>,\n): AXMessage {\n return {\n ...parent,\n id: `${parent.id}::${suffix}`,\n type: partial.type,\n payload: partial.payload,\n metadata: {\n ...(typeof parent.metadata === 'object' && parent.metadata != null ? parent.metadata : {}),\n assistEmbed: true,\n },\n replyTo: undefined,\n };\n}\n\n//#endregion\n\n//#region ---- Payload (last transcript line) ----\n\nexport const AXM_ASSIST_TRANSCRIPT_LINE_PAYLOAD_TYPE = 'assist-transcript-line' as const;\n\nexport interface AxmAssistTranscriptLinePayload {\n type: typeof AXM_ASSIST_TRANSCRIPT_LINE_PAYLOAD_TYPE;\n line: AXPAiChatMessage;\n}\n\nexport function axmNormalizeAssistTranscriptLineResponses(line: AXPAiChatMessage): AXPAiChatMessage {\n return line;\n}\n\n/** Last {@link AXPAiChatMessage} in the engine turn (index {@code length - 1}). */\nexport function axmAssistLastTranscriptLine(transcript: AXPAiChatMessage[]): AXPAiChatMessage | null {\n if (transcript.length === 0) {\n return null;\n }\n return axmNormalizeAssistTranscriptLineResponses(transcript[transcript.length - 1]!);\n}\n\nconst AXM_ASSIST_NON_MARKDOWN_JSON_TYPES = new Set(['node', 'followUp', 'tool', 'agent', 'file', 'error']);\n\n/**\n * Specialist / structured JSON relayed as {@code text} — not end-user markdown\n * ({@code node}, {@code followUp}, aggregates, widget layout, etc.).\n */\nfunction axmIsAssistInternalAgentJsonText(raw: string): boolean {\n const body = axmParseAssistTranscriptTextEnvelope(raw).body.trim();\n if (!body.startsWith('{') && !body.startsWith('[')) {\n return false;\n }\n try {\n const parsed = JSON.parse(body) as unknown;\n if (parsed == null) {\n return false;\n }\n if (Array.isArray(parsed)) {\n return true;\n }\n if (typeof parsed !== 'object') {\n return false;\n }\n const rec = parsed as Record<string, unknown>;\n if (typeof rec['resultType'] === 'string') {\n return true;\n }\n if (typeof rec['entityFullName'] === 'string' && ('data' in rec || 'aggregateRows' in rec)) {\n return true;\n }\n const type = rec['type'];\n if (typeof type === 'string') {\n if (AXM_ASSIST_NON_MARKDOWN_JSON_TYPES.has(type) || type.includes('Widget:')) {\n return true;\n }\n }\n return false;\n } catch {\n return axmLooksLikeInternalAssistJsonPrefix(body);\n }\n}\n\nfunction axmLooksLikeInternalAssistJsonPrefix(raw: string): boolean {\n const trimmed = raw.trimStart();\n if (!trimmed.startsWith('{')) {\n return false;\n }\n return (\n /^\\{\\s*\"type\"\\s*:\\s*\"(?:node|followUp|tool|agent|file|error)\"/.test(trimmed) ||\n /^\\{\\s*\"resultType\"\\s*:/.test(trimmed) ||\n /^\\{\\s*\"type\"\\s*:\\s*\"[^\"]*Widget:/.test(trimmed)\n );\n}\n\nfunction axmTryExtractJsonObjectAt(source: string, start: number): { json: string; end: number } | null {\n if (source[start] !== '{') {\n return null;\n }\n let depth = 0;\n let inString = false;\n let escape = false;\n for (let i = start; i < source.length; i++) {\n const ch = source[i];\n if (inString) {\n if (escape) {\n escape = false;\n } else if (ch === '\\\\') {\n escape = true;\n } else if (ch === '\"') {\n inString = false;\n }\n continue;\n }\n if (ch === '\"') {\n inString = true;\n continue;\n }\n if (ch === '{') {\n depth++;\n } else if (ch === '}') {\n depth--;\n if (depth === 0) {\n return { json: source.slice(start, i + 1), end: i + 1 };\n }\n }\n }\n return null;\n}\n\nfunction axmParseAssistRenderableResponseFromInternalJson(json: string): AXPAiChatResponse | null {\n if (!axmIsAssistInternalAgentJsonText(json)) {\n return null;\n }\n try {\n const parsed = JSON.parse(axmParseAssistTranscriptTextEnvelope(json).body.trim()) as unknown;\n if (parsed == null || typeof parsed !== 'object' || Array.isArray(parsed)) {\n return null;\n }\n const rec = parsed as Record<string, unknown>;\n const type = rec['type'];\n if (type === 'node' && 'content' in rec && axmAssistWidgetNodeFromUnknown(rec) != null) {\n return { type: 'node', content: rec['content'] };\n }\n if (type === 'followUp' && Array.isArray(rec['content'])) {\n const items = axmAssistNormalizeFollowUpItemsForConversation(rec['content'] as AXPAiChatFollowUpItem[]);\n return items.length > 0 ? { type: 'followUp', content: items } : null;\n }\n if (type === 'file' && rec['content'] != null && typeof rec['content'] === 'object' && !Array.isArray(rec['content'])) {\n const fileContent = rec['content'] as { fileId?: unknown; isDownloadable?: unknown };\n const fileId = typeof fileContent.fileId === 'string' ? fileContent.fileId.trim() : '';\n if (fileId) {\n return {\n type: 'file',\n content: {\n fileId,\n ...(fileContent.isDownloadable ? { isDownloadable: true } : {}),\n },\n };\n }\n }\n } catch {\n return null;\n }\n return null;\n}\n\nexport interface AxmAssistPartitionedAnswerText {\n markdown: string;\n renderable: AXPAiChatResponse[];\n}\n\n/**\n * Splits user-facing markdown from embedded {@code node}/{@code followUp} JSON so widgets render after text.\n */\nexport function axmPartitionAssistAnswerText(raw: string): AxmAssistPartitionedAnswerText {\n if (!raw) {\n return { markdown: '', renderable: [] };\n }\n const textParts: string[] = [];\n const renderable: AXPAiChatResponse[] = [];\n let i = 0;\n while (i < raw.length) {\n const braceAt = raw.indexOf('{', i);\n if (braceAt < 0) {\n textParts.push(raw.slice(i));\n break;\n }\n if (braceAt > i) {\n textParts.push(raw.slice(i, braceAt));\n }\n const extracted = axmTryExtractJsonObjectAt(raw, braceAt);\n if (extracted) {\n const structured = axmParseAssistRenderableResponseFromInternalJson(extracted.json);\n if (structured) {\n renderable.push(structured);\n } else if (!axmIsAssistInternalAgentJsonText(extracted.json)) {\n textParts.push(extracted.json);\n }\n i = extracted.end;\n continue;\n }\n if (axmLooksLikeInternalAssistJsonPrefix(raw.slice(braceAt))) {\n break;\n }\n textParts.push(raw[braceAt] ?? '');\n i = braceAt + 1;\n }\n return {\n markdown: textParts\n .join('')\n .replace(/\\n{3,}/g, '\\n\\n')\n .trim(),\n renderable,\n };\n}\n\n/** Removes embedded {@code node}/{@code followUp}/aggregate JSON from answer markdown (stream + finalize). */\nexport function axmSanitizeAssistUserAnswerText(raw: string): string {\n return axmPartitionAssistAnswerText(raw).markdown;\n}\n\n/** End-user markdown from the supervisor — excludes empty fences and internal JSON blobs. */\nfunction axmIsUserVisibleAssistTextContent(raw: string): boolean {\n const body = axmParseAssistTranscriptTextEnvelope(raw).body.trim();\n if (!body || body === '```' || body === '```json') {\n return false;\n }\n return !axmIsAssistInternalAgentJsonText(raw);\n}\n\n/**\n * Merges streamed answer markdown with transcript-derived text so finalize does not drop interim narration.\n */\nexport function axmResolveAssistFinalAnswerText(streamDraft: string, transcriptAnswer: string): string {\n const stream = axmSanitizeAssistUserAnswerText(streamDraft);\n const transcript = axmSanitizeAssistUserAnswerText(transcriptAnswer);\n if (!stream) {\n return transcript;\n }\n if (!transcript) {\n return stream;\n }\n if (stream.includes(transcript)) {\n return stream;\n }\n if (transcript.includes(stream)) {\n return transcript;\n }\n return axmSanitizeAssistUserAnswerText(`${stream}\\n\\n${transcript}`);\n}\n\nfunction axmMergeAssistPayloadResponses(\n line: AXPAiChatMessage,\n partitioned: AxmAssistPartitionedAnswerText,\n): AXPAiChatMessage {\n const nodeKeys = new Set<string>();\n const fileIds = new Set<string>();\n const attachments: AXPAiChatResponse[] = [];\n let followUp: Extract<AXPAiChatResponse, { type: 'followUp' }> | null = null;\n\n const tryPush = (seg: AXPAiChatResponse): void => {\n if (seg.type === 'node') {\n const key = JSON.stringify(seg.content);\n if (nodeKeys.has(key)) {\n return;\n }\n nodeKeys.add(key);\n attachments.push(seg);\n return;\n }\n if (seg.type === 'file') {\n const fileId = seg.content.fileId?.trim() ?? '';\n if (fileId && fileIds.has(fileId)) {\n return;\n }\n if (fileId) {\n fileIds.add(fileId);\n }\n attachments.push(seg);\n return;\n }\n if (seg.type === 'followUp' && followUp == null && seg.content.length > 0) {\n followUp = seg;\n }\n };\n\n for (const seg of line.responses) {\n if (seg.type === 'node' || seg.type === 'file') {\n tryPush(seg);\n } else if (seg.type === 'followUp') {\n tryPush(seg);\n }\n }\n for (const seg of partitioned.renderable) {\n tryPush(seg);\n }\n\n const responses: AXPAiChatResponse[] = [];\n if (partitioned.markdown) {\n responses.push({ type: 'text', content: partitioned.markdown });\n }\n responses.push(...attachments);\n if (followUp) {\n responses.push(followUp);\n }\n if (responses.length === 0) {\n return line;\n }\n return axmNormalizeAssistTranscriptLineResponses({ role: 'assistant', responses });\n}\n\n/** Replaces the payload line's text segment with the finalized answer markdown. */\nexport function axmApplyAnswerTextToAssistPayloadLine(line: AXPAiChatMessage, answerText: string): AXPAiChatMessage {\n const partitioned = axmPartitionAssistAnswerText(answerText);\n if (!partitioned.markdown && partitioned.renderable.length === 0) {\n return line;\n }\n return axmMergeAssistPayloadResponses(line, partitioned);\n}\n\n/**\n * User-facing payload line for the assist bubble: supervisor markdown narration for the turn, plus\n * {@code node}/{@code file}/{@code followUp} from the turn (including specialist {@code agent_result}).\n */\nexport function axmAssistUserFacingPayloadLine(transcript: AXPAiChatMessage[]): AXPAiChatMessage | null {\n if (transcript.length === 0) {\n return null;\n }\n\n let lastUserIdx = -1;\n for (let i = transcript.length - 1; i >= 0; i--) {\n if (transcript[i].role === 'user') {\n lastUserIdx = i;\n break;\n }\n }\n const tail = lastUserIdx >= 0 ? transcript.slice(lastUserIdx) : transcript;\n\n const attachmentResponses: AXPAiChatResponse[] = [];\n const rawTextBodies: string[] = [];\n let followUpItems: AXPAiChatFollowUpItem[] | null = null;\n const nodeKeys = new Set<string>();\n const fileIds = new Set<string>();\n\n const tryPushAttachment = (seg: AXPAiChatResponse): void => {\n if (seg.type === 'node') {\n const key = JSON.stringify(seg.content);\n if (nodeKeys.has(key)) {\n return;\n }\n nodeKeys.add(key);\n } else if (seg.type === 'file') {\n const fileId = seg.content.fileId?.trim() ?? '';\n if (fileId && fileIds.has(fileId)) {\n return;\n }\n if (fileId) {\n fileIds.add(fileId);\n }\n } else {\n return;\n }\n attachmentResponses.push(seg);\n };\n\n for (const m of tail) {\n if (m.role === 'assistant' && !axpAiChatMessageIsDelegatedReflectionExcluded(m)) {\n for (const r of m.responses) {\n if (r.type === 'text') {\n const body = axmParseAssistTranscriptTextEnvelope(r.content).body.trim();\n if (body) {\n rawTextBodies.push(body);\n }\n } else if (r.type === 'node' || r.type === 'file') {\n tryPushAttachment(r);\n } else if (r.type === 'followUp') {\n followUpItems = r.content;\n }\n }\n continue;\n }\n if (m.role !== 'tool') {\n continue;\n }\n for (const r of m.responses) {\n if (r.type !== 'agent_result') {\n continue;\n }\n const payload = r.content;\n if (payload.success !== true || payload.data?.responses == null) {\n continue;\n }\n for (const seg of payload.data.responses) {\n if (seg.type === 'followUp' && followUpItems == null) {\n followUpItems = seg.content;\n } else if (seg.type === 'node' || seg.type === 'file') {\n tryPushAttachment(seg);\n }\n }\n }\n }\n\n const partitioned = axmPartitionAssistAnswerText(\n rawTextBodies\n .map((body) => body.trim())\n .filter((body) => body.length > 0)\n .join('\\n\\n'),\n );\n for (const seg of partitioned.renderable) {\n if (seg.type === 'node' || seg.type === 'file') {\n tryPushAttachment(seg);\n } else if (seg.type === 'followUp' && followUpItems == null) {\n followUpItems = seg.content;\n }\n }\n\n const responses: AXPAiChatResponse[] = [];\n if (partitioned.markdown) {\n responses.push({ type: 'text', content: partitioned.markdown });\n }\n responses.push(...attachmentResponses);\n if (followUpItems != null && followUpItems.length > 0) {\n responses.push({ type: 'followUp', content: followUpItems });\n }\n if (responses.length === 0) {\n return null;\n }\n return axmNormalizeAssistTranscriptLineResponses({ role: 'assistant', responses });\n}\n\nexport function axmBuildAssistTranscriptLinePayload(line: AXPAiChatMessage): AxmAssistTranscriptLinePayload {\n return {\n type: AXM_ASSIST_TRANSCRIPT_LINE_PAYLOAD_TYPE,\n line: axmNormalizeAssistTranscriptLineResponses(line),\n };\n}\n\nexport function axmParseAssistTranscriptLinePayload(payload: unknown): AXPAiChatMessage | null {\n if (payload == null || typeof payload !== 'object' || Array.isArray(payload)) {\n return null;\n }\n const rec = payload as Record<string, unknown>;\n if (rec['type'] !== AXM_ASSIST_TRANSCRIPT_LINE_PAYLOAD_TYPE) {\n return null;\n }\n const line = rec['line'];\n if (line == null || typeof line !== 'object' || Array.isArray(line)) {\n return null;\n }\n const lm = line as AXPAiChatMessage;\n if (!Array.isArray(lm.responses)) {\n return null;\n }\n return axmNormalizeAssistTranscriptLineResponses(lm);\n}\n\n//#endregion\n\n//#region ---- Text envelope ----\n\nexport function axmParseAssistTranscriptTextEnvelope(raw: string): { thinking: string | null; body: string } {\n if (!raw) {\n return { thinking: null, body: '' };\n }\n\n const normalized = raw.replace(/<(\\/?redacted_thinking)>/gi, '<$1>');\n const parts: string[] = [];\n const body = normalized\n .replace(/<think>([\\s\\S]*?)<\\/redacted_thinking>/gi, (_m, inner: string) => {\n const t = inner.trim();\n if (t) {\n parts.push(t);\n }\n return '';\n })\n .trim();\n\n return { thinking: parts.length ? parts.join('\\n\\n') : null, body };\n}\n\n//#endregion\n\n//#region ---- User-mode visible segments (non-debug bubble) ----\n\nfunction axmUserVisibleDelegatedSegment(seg: AXPAiDelegatedAgentResultSegment): boolean {\n if (seg.type === 'think') {\n return false;\n }\n if (seg.type === 'node') {\n return axmAssistWidgetNodeFromUnknown(seg.content) != null;\n }\n if (seg.type === 'file') {\n return true;\n }\n if (seg.type === 'text') {\n return axmIsUserVisibleAssistTextContent(seg.content);\n }\n if (seg.type === 'followUp') {\n return seg.content.length > 0;\n }\n return false;\n}\n\nfunction axmUserVisibleChatResponse(line: AXPAiChatMessage, seg: AXPAiChatResponse): boolean {\n if (line.role === 'assistant') {\n if (seg.type === 'think') {\n return false;\n }\n if (seg.type === 'node') {\n return axmAssistWidgetNodeFromUnknown(seg.content) != null;\n }\n if (seg.type === 'file') {\n return true;\n }\n if (seg.type === 'text') {\n return axmIsUserVisibleAssistTextContent(seg.content);\n }\n if (seg.type === 'followUp') {\n return seg.content.length > 0;\n }\n return false;\n }\n if (line.role === 'tool' && seg.type === 'agent_result') {\n const c = seg.content as { success?: unknown; data?: unknown };\n if (c.success !== true || c.data == null || typeof c.data !== 'object' || Array.isArray(c.data)) {\n return false;\n }\n const responses = (c.data as Record<string, unknown>)['responses'];\n return axpAiDelegatedAgentResultSegments({ success: true, data: { responses: responses as AXPAiDelegatedAgentResultSegment[] } }).some(\n axmUserVisibleDelegatedSegment,\n );\n }\n return false;\n}\n\n/** Flattened user-visible items for one transcript line (payload bubble). */\nexport type AxmAssistUserVisibleItem =\n | { kind: 'text'; content: string }\n | { kind: 'node'; content: unknown }\n | { kind: 'file'; fileId: string; isDownloadable?: boolean }\n | { kind: 'followUp'; items: AXPAiChatFollowUpItem[] };\n\nexport function axmAssistUserVisibleItemsForLine(line: AXPAiChatMessage): AxmAssistUserVisibleItem[] {\n const out: AxmAssistUserVisibleItem[] = [];\n let followUpPushed = false;\n\n for (const seg of line.responses) {\n if (line.role === 'assistant') {\n if (seg.type === 'text' && axmUserVisibleChatResponse(line, seg)) {\n out.push({ kind: 'text', content: seg.content });\n } else if (seg.type === 'node' && axmUserVisibleChatResponse(line, seg)) {\n out.push({ kind: 'node', content: seg.content });\n } else if (seg.type === 'file') {\n out.push({\n kind: 'file',\n fileId: seg.content.fileId,\n ...(seg.content.isDownloadable ? { isDownloadable: true } : {}),\n });\n } else if (seg.type === 'followUp' && !followUpPushed && axmUserVisibleChatResponse(line, seg)) {\n out.push({ kind: 'followUp', items: seg.content });\n followUpPushed = true;\n }\n continue;\n }\n if (line.role === 'tool' && seg.type === 'agent_result') {\n const c = seg.content as { success?: unknown; data?: unknown };\n if (c.success !== true || c.data == null || typeof c.data !== 'object' || Array.isArray(c.data)) {\n continue;\n }\n const responses = (c.data as Record<string, unknown>)['responses'];\n for (const ds of axpAiDelegatedAgentResultSegments({\n success: true,\n data: { responses: responses as AXPAiDelegatedAgentResultSegment[] },\n })) {\n if (!axmUserVisibleDelegatedSegment(ds)) {\n continue;\n }\n if (ds.type === 'text') {\n out.push({ kind: 'text', content: ds.content });\n } else if (ds.type === 'node') {\n out.push({ kind: 'node', content: ds.content });\n } else if (ds.type === 'file') {\n out.push({\n kind: 'file',\n fileId: ds.content.fileId,\n ...(ds.content.isDownloadable ? { isDownloadable: true } : {}),\n });\n } else if (ds.type === 'followUp' && !followUpPushed) {\n out.push({ kind: 'followUp', items: ds.content });\n followUpPushed = true;\n }\n }\n }\n }\n\n return out;\n}\n\n/** Parses a raw {@code followUp} segment for UI (normalizes chip commands). */\nexport function axmAssistFollowUpItemsFromUnknown(raw: unknown): AXPAiChatFollowUpItem[] {\n if (!raw || typeof raw !== 'object' || Array.isArray(raw)) {\n return [];\n }\n const rec = raw as Record<string, unknown>;\n if (rec['type'] !== 'followUp') {\n return [];\n }\n const content = rec['content'];\n if (!Array.isArray(content)) {\n return [];\n }\n return axmAssistNormalizeFollowUpItemsForConversation(content as AXPAiChatFollowUpItem[]);\n}\n\n//#endregion\n\n","//#region ---- Types ----\n\n/** Persisted on assist message metadata (`assistResponseStatus`). */\nexport type AxmAssistResponseStatus = 'streaming' | 'complete' | 'incomplete' | 'failed';\n\n//#endregion\n\n//#region ---- Readers ----\n\n/**\n * Resolves assist response lifecycle from message metadata.\n * Falls back to legacy `isStreaming` when `assistResponseStatus` is absent.\n */\nexport function axmReadAssistResponseStatus(metadata: unknown): AxmAssistResponseStatus {\n const meta = metadata as Record<string, unknown> | undefined;\n if (!meta) {\n return 'complete';\n }\n\n const status = meta['assistResponseStatus'];\n if (\n status === 'streaming' ||\n status === 'complete' ||\n status === 'incomplete' ||\n status === 'failed'\n ) {\n return status;\n }\n\n if (meta['isStreaming'] === true) {\n return 'streaming';\n }\n\n return 'complete';\n}\n\n/** User-facing error stored when generation fails (`assistResponseError`). */\nexport function axmReadAssistResponseError(metadata: unknown): string | undefined {\n const meta = metadata as Record<string, unknown> | undefined;\n if (!meta) {\n return undefined;\n }\n const err = meta['assistResponseError'];\n return typeof err === 'string' && err.trim() ? err.trim() : undefined;\n}\n\nexport function axmIsAssistRetryableStatus(status: AxmAssistResponseStatus): boolean {\n return status === 'incomplete' || status === 'failed';\n}\n\nexport function axmIsAssistStreamingStatus(status: AxmAssistResponseStatus): boolean {\n return status === 'streaming';\n}\n\n//#endregion\n","import type { AXParticipant } from '@acorex/components/conversation2';\n\n/**\n * True when the participant is an AI Assist peer (synthetic `assist-*` id or assist metadata).\n * Such entries should not appear in human-only pickers (e.g. regular \"New chat\").\n */\nexport function axmIsAssistPeerParticipant(participant: AXParticipant): boolean {\n if (typeof participant.id === 'string' && participant.id.startsWith('assist-')) {\n return true;\n }\n const meta = participant.metadata as Record<string, unknown> | undefined;\n if (!meta) {\n return false;\n }\n if (meta['kind'] === 'assist') {\n return true;\n }\n const assistId = meta['assistId'];\n return typeof assistId === 'string' && assistId.trim().length > 0;\n}\n","import { RootConfig } from '../../contracts';\nimport { AXPEntityService } from '@acorex/platform/layout/entity';\nimport { AXPFilterOperatorMiddlewareService } from '@acorex/platform/common';\nimport { AXPContent, AXPContentType, AXPUserReference } from '@acorex/platform/core';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { inject, Injectable } from '@angular/core';\nimport { AXMConversationMessage, AXMConversationReaction, AXMReactionType } from '../../entities/message/message.types';\nimport { AXMConversationRoom } from '../../entities/room/room.types';\nimport { AXMCommentEntityData } from '../../contracts';\nimport { AXMComment, AXMCommentThread } from './comment.type';\n//#region ---- Abstract Comment Service ----\n\nexport abstract class AXMCommentService {\n private readonly entityService = inject(AXPEntityService);\n //#region ---- Comment Thread Service ----\n\n abstract createThread(entityRef: AXMCommentEntityData, topic: string, title?: string): Promise<AXMCommentThread>;\n abstract getThread(entityRef: AXMCommentEntityData, topic: string): Promise<AXMCommentThread | null>;\n abstract listThreads(entityRef: AXMCommentEntityData, topic: string): Promise<AXMCommentThread[]>;\n abstract updateThread(\n entityRef: AXMCommentEntityData,\n topic: string,\n data: Partial<{ title: string }>,\n ): Promise<AXMCommentThread>;\n abstract deleteThread(entityRef: AXMCommentEntityData, topic: string): Promise<boolean>;\n\n //#endregion\n\n //#region ---- Comment Service ----\n\n abstract addComment(\n threadId: string,\n content: string,\n parentCommentId?: string,\n contentType?: AXPContentType,\n userId?: string,\n ): Promise<AXMComment>;\n abstract getComments(threadId: string, nested: boolean): Promise<AXMComment[]>;\n abstract getComment(commentId: string): Promise<AXMComment>;\n abstract editComment(commentId: string, content: string, contentType?: AXPContentType): Promise<AXMComment>;\n abstract deleteComment(commentId: string): Promise<boolean>;\n\n //#endregion\n\n //#region ---- Comment Reaction Service ----\n\n abstract addReaction(commentId: string, type: AXMReactionType): Promise<AXMComment>;\n abstract removeReaction(commentId: string, type: AXMReactionType): Promise<AXMComment>;\n abstract getReactions(commentId: string): Promise<AXMConversationReaction[]>;\n abstract likeComment(commentId: string): Promise<AXMComment>;\n abstract unlikeComment(commentId: string): Promise<AXMComment>;\n\n //#endregion\n\n //#region ---- Comment Pin Service ----\n\n abstract pinComment(commentId: string): Promise<AXMComment>;\n abstract unpinComment(commentId: string): Promise<AXMComment>;\n\n //#endregion\n}\n\n//#endregion\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AXMCommentServiceImpl {\n private readonly entityService = inject(AXPEntityService);\n private readonly roomService = this.entityService.withEntity(RootConfig.module.name, RootConfig.entities.room.name).data<any, any>();\n private readonly messageService = this.entityService.withEntity(RootConfig.module.name, RootConfig.entities.message.name).data<any, any>();\n private readonly filterService = inject(AXPFilterOperatorMiddlewareService);\n private readonly translationService = inject(AXTranslationService);\n\n async createThread(\n creatorUser: AXPUserReference,\n entityRef: AXMCommentEntityData,\n topic: string,\n title?: string,\n ): Promise<AXMConversationRoom> {\n const displayName = title || topic || `${entityRef.entityTypeId}#${entityRef.entityId}`;\n const room: Omit<AXMConversationRoom, 'id'> = {\n name: displayName,\n type: 'comment',\n topic: topic,\n title: title || `Comments for ${entityRef.entityTypeId}#${entityRef.entityId}`,\n members: [creatorUser],\n entityRef: {\n ...entityRef,\n },\n auditInfo: {\n created: { at: new Date(), by: creatorUser },\n },\n };\n const newRoomId = await this.roomService.create(room);\n return this.roomService.byKey(newRoomId);\n }\n\n async getThread(entityRef: AXMCommentEntityData, topic: string): Promise<AXMConversationRoom | null> {\n const { items } = await this.roomService.query({\n skip: 0,\n take: 1,\n filter: {\n logic: 'and',\n filters: [\n {\n field: 'entityRef.entityId',\n value: entityRef.entityId,\n operator: this.filterService.getOperator('equal') as any,\n },\n {\n field: 'entityRef.entityTypeId',\n value: entityRef.entityTypeId,\n operator: this.filterService.getOperator('equal') as any,\n },\n {\n field: 'topic',\n value: topic,\n operator: this.filterService.getOperator('equal') as any,\n },\n ],\n },\n });\n\n return items[0] || null;\n }\n\n async listThreads(entityRef: AXMCommentEntityData, topic: string): Promise<AXMConversationRoom[]> {\n const { items } = await this.roomService.query({\n skip: 0,\n take: 100,\n filter: {\n logic: 'and',\n filters: [\n {\n field: 'entityRef.id',\n value: entityRef.entityId,\n operator: this.filterService.getOperator('equal') as any,\n },\n {\n field: 'entityRef.type',\n value: entityRef.entityTypeId,\n operator: this.filterService.getOperator('equal') as any,\n },\n {\n field: 'topic',\n value: topic,\n operator: this.filterService.getOperator('equal') as any,\n },\n ],\n },\n });\n\n return items;\n }\n\n async updateThread(threadId: string, data: Partial<{ title: string }>): Promise<AXMConversationRoom> {\n await this.roomService.update(threadId, data);\n return this.roomService.byKey(threadId);\n }\n\n async deleteThread(threadId: string): Promise<boolean> {\n await this.roomService.delete(threadId);\n return true;\n }\n\n async addComment(\n threadId: string,\n content: string,\n author: AXPUserReference,\n parentCommentId?: string,\n contentType: AXPContentType = 'text',\n ): Promise<AXMConversationMessage> {\n const messageContent: AXPContent = { content, contentType };\n const plainTitle =\n content.replace(/<[^>]+>/g, '').trim() ||\n (await this.translationService.translateAsync('@conversation:terms.common.comment'));\n const message: Omit<AXMConversationMessage, 'id'> = {\n name: plainTitle,\n title: plainTitle,\n roomId: threadId,\n message: messageContent,\n author,\n replyId: parentCommentId,\n reactions: [],\n seen: [],\n auditInfo: {\n created: { at: new Date(), by: author },\n },\n };\n const messageId = await this.messageService.create(message);\n return this.messageService.byKey(messageId);\n }\n\n async getComments(threadId: string): Promise<AXMConversationMessage[]> {\n const { items } = await this.messageService.query({\n skip: 0,\n filter: { field: 'roomId', value: threadId, operator: this.filterService.getOperator('equal') as any },\n sort: [{ field: 'created.at', dir: 'asc' } as any],\n take: 500,\n });\n return items;\n }\n\n async getComment(commentId: string): Promise<AXMConversationMessage> {\n return this.messageService.byKey(commentId);\n }\n\n async editComment(\n commentId: string,\n content: string,\n editor: AXPUserReference,\n contentType: AXPContentType = 'text',\n ): Promise<AXMConversationMessage> {\n const messageContent: AXPContent = { content, contentType };\n const plainTitle =\n content.replace(/<[^>]+>/g, '').trim() ||\n (await this.translationService.translateAsync('@conversation:terms.common.comment'));\n await this.messageService.update(commentId, {\n name: plainTitle,\n title: plainTitle,\n message: messageContent,\n auditInfo: {\n updated: { at: new Date(), by: editor },\n },\n });\n return this.messageService.byKey(commentId);\n }\n\n async deleteComment(commentId: string): Promise<boolean> {\n await this.messageService.delete(commentId);\n return true;\n }\n\n async updateReactions(commentId: string, reactions: AXMConversationReaction[]): Promise<AXMConversationMessage> {\n await this.messageService.update(commentId, { reactions });\n return this.messageService.byKey(commentId);\n }\n\n async getReactions(commentId: string): Promise<AXMConversationReaction[]> {\n const comment = await this.messageService.byKey(commentId);\n return comment.reactions || [];\n }\n\n async pinComment(commentId: string, isPinned: boolean): Promise<AXMConversationMessage> {\n await this.messageService.update(commentId, { isPinned });\n return this.messageService.byKey(commentId);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\nimport { AXMCommentEvent, AXMThreadEvent } from './comment.type';\n\nexport abstract class AXMCommentRealtimeService {\n abstract readonly comment$: Observable<AXMCommentEvent>;\n abstract readonly thread$: Observable<AXMThreadEvent>;\n\n abstract notifyComment(event: AXMCommentEvent): void;\n abstract notifyThread(event: AXMThreadEvent): void;\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AXMCommentRealtimeServiceImpl extends AXMCommentRealtimeService {\n private readonly _comment$ = new Subject<AXMCommentEvent>();\n readonly comment$ = this._comment$.asObservable();\n\n private readonly _thread$ = new Subject<AXMThreadEvent>();\n readonly thread$ = this._thread$.asObservable();\n\n notifyComment(event: AXMCommentEvent): void {\n this._comment$.next(event);\n }\n\n notifyThread(event: AXMThreadEvent): void {\n this._thread$.next(event);\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { AXPEntityService } from '@acorex/platform/layout/entity';\n\nimport { AXMCommentEntityData } from '../../contracts';\nimport { AXMComment, AXMCommentThread } from './comment.type';\nimport { AXMCommentServiceImpl } from './comment.service';\nimport { AXPSessionService } from '@acorex/platform/auth';\nimport { AXMCommentRealtimeService } from './comment-realtime.service';\nimport { AXPContentType, AXPUserReference } from '@acorex/platform/core';\nimport { AXMConversationMessage, AXMConversationReaction, AXMConversationRoom, AXMReactionType } from '../../entities';\n@Injectable({\n providedIn: 'root',\n})\nexport class AXMCommentManagementService {\n private readonly entityService = inject(AXPEntityService);\n private readonly commentImplService = inject(AXMCommentServiceImpl);\n private readonly sessionService = inject(AXPSessionService);\n private readonly usersService = this.entityService.withEntity('SecurityManagement.Users').data<any, any>();\n private readonly realtimeService = inject(AXMCommentRealtimeService);\n\n private getCurrentUser(): AXPUserReference {\n const user = this.sessionService.user;\n if (!user) {\n throw new Error('No authenticated user found.');\n }\n return {\n id: user.id,\n type: 'user',\n fullName: user.title,\n username: user.name,\n };\n }\n\n private async getUserInfo(userId: string): Promise<AXPUserReference> {\n try {\n const user = await this.usersService.byKey(userId);\n return { id: userId, type: 'user', fullName: user.displayName, username: user.username };\n } catch {\n throw new Error(`User with ID ${userId} not found`);\n }\n }\n\n private formatComment(message: AXMConversationMessage, depth = 0): AXMComment {\n return {\n ...message,\n depth,\n replies: [],\n replyCount: 0,\n };\n }\n\n private buildCommentTree(comments: AXMComment[]): AXMComment[] {\n const commentMap = new Map<string, AXMComment>(comments.map((c) => [c.id, c]));\n const tree: AXMComment[] = [];\n\n comments.forEach((comment) => {\n if (comment.replyId && commentMap.has(comment.replyId)) {\n const parent = commentMap.get(comment.replyId)!;\n parent.replies.push(comment);\n comment.depth = (parent.depth ?? 0) + 1;\n } else {\n tree.push(comment);\n }\n });\n\n commentMap.forEach((comment) => {\n comment.replyCount = comment.replies.length;\n });\n\n return tree;\n }\n\n private async formatThread(room: AXMConversationRoom): Promise<AXMCommentThread> {\n const comments = await this.getComments(room.id, true);\n return {\n ...room,\n comments,\n commentCount: comments.length,\n };\n }\n\n async createThread(entityRef: AXMCommentEntityData, topic: string, title?: string): Promise<AXMCommentThread> {\n const currentUser = this.getCurrentUser();\n const newRoom = await this.commentImplService.createThread(currentUser, entityRef, topic, title);\n const newThread = await this.formatThread(newRoom);\n this.realtimeService.notifyThread({ type: 'add', payload: newThread });\n return newThread;\n }\n\n async getThread(entityRef: AXMCommentEntityData, topic: string): Promise<AXMCommentThread | null> {\n const room = await this.commentImplService.getThread(entityRef, topic);\n if (!room) {\n return null;\n }\n return this.formatThread(room);\n }\n\n async listThreads(entityRef: AXMCommentEntityData, topic: string): Promise<AXMCommentThread[]> {\n const rooms = await this.commentImplService.listThreads(entityRef, topic);\n return Promise.all(rooms.map((room) => this.formatThread(room)));\n }\n\n async updateThread(\n entityRef: AXMCommentEntityData,\n topic: string,\n data: Partial<{ title: string }>,\n ): Promise<AXMCommentThread> {\n const thread = await this.getThread(entityRef, topic);\n if (!thread) {\n throw new Error(`Thread for entity ${entityRef.entityTypeId}#${entityRef.entityId} not found.`);\n }\n const updatedRoom = await this.commentImplService.updateThread(thread.id, data);\n const updatedThread = await this.formatThread(updatedRoom);\n this.realtimeService.notifyThread({ type: 'update', payload: updatedThread });\n return updatedThread;\n }\n\n async deleteThread(entityRef: AXMCommentEntityData, topic: string): Promise<boolean> {\n const thread = await this.getThread(entityRef, topic);\n if (thread) {\n await this.commentImplService.deleteThread(thread.id);\n this.realtimeService.notifyThread({ type: 'remove', payload: thread.id });\n return true;\n }\n return false;\n }\n\n async addComment(\n threadId: string,\n content: string,\n parentCommentId?: string,\n contentType: AXPContentType = 'text',\n userId?: string,\n ): Promise<AXMComment> {\n const author = userId ? await this.getUserInfo(userId) : this.getCurrentUser();\n const rawComment = await this.commentImplService.addComment(\n threadId,\n content,\n author,\n parentCommentId,\n contentType,\n );\n const formattedComment = this.formatComment(rawComment);\n this.realtimeService.notifyComment({ type: 'add', payload: formattedComment });\n return formattedComment;\n }\n\n async getComments(threadId: string, nested: boolean): Promise<AXMComment[]> {\n const rawComments = await this.commentImplService.getComments(threadId);\n const formattedComments = rawComments.map((c) => this.formatComment(c));\n if (nested) {\n return this.buildCommentTree(formattedComments);\n }\n return formattedComments;\n }\n\n async getComment(commentId: string): Promise<AXMComment> {\n const rawComment = await this.commentImplService.getComment(commentId);\n return this.formatComment(rawComment);\n }\n\n async editComment(commentId: string, content: string, contentType: AXPContentType = 'text'): Promise<AXMComment> {\n const editor = this.getCurrentUser();\n const rawComment = await this.commentImplService.editComment(commentId, content, editor, contentType);\n const formattedComment = this.formatComment(rawComment);\n this.realtimeService.notifyComment({ type: 'update', payload: formattedComment });\n return formattedComment;\n }\n\n async deleteComment(commentId: string): Promise<boolean> {\n const result = await this.commentImplService.deleteComment(commentId);\n if (result) {\n this.realtimeService.notifyComment({ type: 'remove', payload: commentId });\n }\n return result;\n }\n\n async addReaction(commentId: string, type: AXMReactionType): Promise<AXMComment> {\n const author = this.getCurrentUser();\n const comment = await this.commentImplService.getComment(commentId);\n const reactions = comment.reactions || [];\n\n if (reactions.some((r) => r.author.id === author.id && r.type === type)) {\n return this.formatComment(comment);\n }\n\n const updatedReactions = [...reactions, { author, type }];\n const rawComment = await this.commentImplService.updateReactions(commentId, updatedReactions);\n const formattedComment = this.formatComment(rawComment);\n this.realtimeService.notifyComment({ type: 'update', payload: formattedComment });\n return formattedComment;\n }\n\n async removeReaction(commentId: string, type: AXMReactionType): Promise<AXMComment> {\n const author = this.getCurrentUser();\n const comment = await this.commentImplService.getComment(commentId);\n const updatedReactions = (comment.reactions || []).filter((r) => !(r.author.id === author.id && r.type === type));\n\n const rawComment = await this.commentImplService.updateReactions(commentId, updatedReactions);\n const formattedComment = this.formatComment(rawComment);\n this.realtimeService.notifyComment({ type: 'update', payload: formattedComment });\n return formattedComment;\n }\n\n getReactions(commentId: string): Promise<AXMConversationReaction[]> {\n return this.commentImplService.getReactions(commentId);\n }\n\n likeComment(commentId: string): Promise<AXMComment> {\n return this.addReaction(commentId, 'like');\n }\n\n unlikeComment(commentId: string): Promise<AXMComment> {\n return this.removeReaction(commentId, 'like');\n }\n\n async pinComment(commentId: string): Promise<AXMComment> {\n const rawComment = await this.commentImplService.pinComment(commentId, true);\n const formattedComment = this.formatComment(rawComment);\n this.realtimeService.notifyComment({ type: 'update', payload: formattedComment });\n return formattedComment;\n }\n\n async unpinComment(commentId: string): Promise<AXMComment> {\n const rawComment = await this.commentImplService.pinComment(commentId, false);\n const formattedComment = this.formatComment(rawComment);\n this.realtimeService.notifyComment({ type: 'update', payload: formattedComment });\n return formattedComment;\n }\n}\n","import { AXMNotificationItem } from '@acorex/modules/notification-management';\nimport { AXPUserReference } from '@acorex/platform/core';\nimport { AXMComment, AXMCommentThread } from './comment.type';\n\nexport function convertCommentToNotification(\n thread: AXMCommentThread,\n comment: AXMComment,\n currentUser: AXPUserReference,\n): Omit<AXMNotificationItem, 'id' | 'entityName' | 'createAt'> {\n return {\n channel: 'InApp',\n template: {\n category: 'Inbox',\n prority: 'Notice',\n icon: 'fa-light fa-comment',\n isPinned: false,\n },\n title: thread.title || '@conversation:comments.notification.new-comment',\n body: comment.message.content,\n sender: comment.author,\n receiver: currentUser,\n content: comment.message,\n readAt: null,\n type: 'Comment',\n data: {\n threadId: thread.id,\n entityTypeId: thread.entityRef?.entityTypeId,\n entityId: thread.entityRef?.entityId,\n moduleName: thread.entityRef?.moduleName,\n entityName: thread.entityRef?.entityName,\n },\n };\n}\n","import { AXWysiwygContainerComponent, AXWysiwygModule } from '@acorex/components/wysiwyg';\nimport {\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n ElementRef,\n inject,\n input,\n OnInit,\n signal,\n viewChild,\n ViewEncapsulation,\n} from '@angular/core';\n\nimport { AXStyleLookType } from '@acorex/cdk/common';\nimport { AXDialogService } from '@acorex/components/dialog';\nimport { AXToastService } from '@acorex/components/toast';\nimport { AXPUserReference } from '@acorex/platform/core';\nimport { animate, style, transition, trigger } from '@angular/animations';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { AXMComment, AXMCommentThread } from './comment.type';\n\nimport { AXAvatarModule } from '@acorex/components/avatar';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXCommentModule } from '@acorex/components/comment';\nimport { AXConversationModule } from '@acorex/components/conversation';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXDropdownModule } from '@acorex/components/dropdown';\nimport { AXDropdownButtonModule } from '@acorex/components/dropdown-button';\nimport { AXFormModule } from '@acorex/components/form';\nimport { AXImageModule } from '@acorex/components/image';\nimport { AXLoadingModule } from '@acorex/components/loading';\nimport { AXSkeletonModule } from '@acorex/components/skeleton';\nimport { AXToolBarModule } from '@acorex/components/toolbar';\nimport { AXFormatModule } from '@acorex/core/format';\nimport { AXTranslationModule, AXTranslationService } from '@acorex/core/translation';\nimport { AXMNotificationConnectorService } from '@acorex/modules/notification-management';\nimport { AXPSessionService } from '@acorex/platform/auth';\nimport { AXPUserAvatarComponent } from '@acorex/platform/layout/components';\nimport { AsyncPipe } from '@angular/common';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormsModule } from '@angular/forms';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { filter } from 'rxjs';\nimport { AXMCommentManagementService } from './comment-management.service';\nimport { convertCommentToNotification } from './comment-notification.helper';\nimport { AXMCommentRealtimeService } from './comment-realtime.service';\n\nconst HIGHLIGHT_DURATION_MS = 2500;\nconst SUBMIT_COOLDOWN_MS = 100;\n\n@Component({\n templateUrl: './comment.component.html',\n selector: 'axm-comment',\n encapsulation: ViewEncapsulation.None,\n animations: [\n trigger('fadeIn', [\n transition(':enter', [\n style({ opacity: 0, transform: 'translateY(10px)' }),\n animate('300ms ease-out', style({ opacity: 1, transform: 'translateY(0)' })),\n ]),\n ]),\n ],\n imports: [\n AXWysiwygModule,\n AXConversationModule,\n AXSkeletonModule,\n AXDecoratorModule,\n AXCommentModule,\n AXButtonModule,\n AXAvatarModule,\n AXImageModule,\n AXLoadingModule,\n AXDropdownModule,\n AXFormatModule,\n AXTranslationModule,\n AsyncPipe,\n AXFormModule,\n AXToolBarModule,\n FormsModule,\n AXDropdownButtonModule,\n AXPUserAvatarComponent,\n ],\n styles: `\n :host {\n display: block;\n width: 100%;\n height: 100%;\n }\n\n ax-wysiwyg-container {\n .ax-editor-container {\n border-top-left-radius: 0 !important;\n border-top-right-radius: 0 !important;\n }\n .ax-error-message {\n padding-left: 0.5rem;\n }\n }\n\n ax-comment-item.highlighted {\n animation: comment-highlight-pulse 2.5s cubic-bezier(0.4, 0, 0.2, 1) forwards;\n }\n\n @keyframes comment-highlight-pulse {\n 0% {\n background-color: transparent;\n box-shadow: inset 3px 0 0 0 transparent;\n }\n 10% {\n background-color: rgba(var(--ax-sys-color-primary-lightest-surface), 0.5);\n box-shadow: inset 3px 0 0 0 rgb(var(--ax-sys-color-primary-surface));\n }\n 35% {\n background-color: rgba(var(--ax-sys-color-primary-lightest-surface), 0.3);\n box-shadow: inset 3px 0 0 0 rgba(var(--ax-sys-color-primary-lighter-surface), 0.8);\n }\n 60% {\n background-color: rgba(var(--ax-sys-color-primary-lightest-surface), 0.4);\n box-shadow: inset 3px 0 0 0 rgba(var(--ax-sys-color-primary-lightest-surface), 0.6);\n }\n 100% {\n background-color: transparent;\n box-shadow: inset 3px 0 0 0 transparent;\n }\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AXMCommentComponent implements OnInit {\n //#region ---- Inputs ----\n\n refrenceType = input.required<string>();\n refrenceId = input.required<string>();\n subject = input.required<string>();\n\n //#endregion\n\n //#region ---- State Signals ----\n\n moduleName = signal<string | undefined>(undefined);\n entityName = signal<string | undefined>(undefined);\n\n protected hasCooldown = signal(false);\n protected commentContent = signal('');\n protected isSubmitting = signal(false);\n protected isReplyingMode = signal(false);\n protected isEditingMode = signal(false);\n protected isLoading = signal(true);\n protected activeReplyComment = signal<(AXMComment & { userName: string }) | undefined>(undefined);\n protected activeEditComment = signal<(AXMComment & { userName: string }) | undefined>(undefined);\n protected highlightedCommentId = signal<string | null>(null);\n protected expandedCommentIds = signal(new Set<string>());\n protected comments = signal<AXMComment[]>([]);\n protected thread = signal<AXMCommentThread | undefined>(undefined);\n protected wysiwygOptions = signal<{ look: AXStyleLookType }>({ look: 'solid' });\n\n //#endregion\n\n //#region ---- View Children ----\n\n protected wysiwygEditor = viewChild.required<AXWysiwygContainerComponent>('w');\n\n //#endregion\n\n //#region ---- Services & Dependencies ----\n\n private readonly commentService = inject(AXMCommentManagementService);\n private readonly realtimeService = inject(AXMCommentRealtimeService);\n private readonly sessionService = inject(AXPSessionService);\n private readonly toastService = inject(AXToastService);\n private readonly dialogService = inject(AXDialogService);\n private readonly notificationConnectorService = inject(AXMNotificationConnectorService);\n private readonly router = inject(Router);\n private readonly activatedRoute = inject(ActivatedRoute);\n private readonly sanitizer = inject(DomSanitizer);\n private readonly translationService = inject(AXTranslationService);\n private readonly destroyRef = inject(DestroyRef);\n private readonly elementRef = inject(ElementRef);\n\n //#endregion\n\n //#region ---- Lifecycle ----\n\n ngOnInit(): void {\n this.moduleName.set(this.activatedRoute.snapshot.params['module'] || null);\n this.entityName.set(this.activatedRoute.snapshot.params['entity'] || null);\n this.loadComments().finally(() => {\n setTimeout(() => this.isLoading.set(false), 250);\n });\n\n this.realtimeService.comment$\n .pipe(\n takeUntilDestroyed(this.destroyRef),\n filter((event) => !!event),\n )\n .subscribe((event) => {\n switch (event.type) {\n case 'add':\n this.handleAddComment(event.payload as AXMComment);\n break;\n case 'update':\n this.handleUpdateComment(event.payload as AXMComment);\n break;\n case 'remove':\n this.removeMessageById(event.payload as string);\n break;\n }\n });\n }\n\n //#endregion\n\n //#region ---- Data Loading ----\n\n async loadComments(): Promise<void> {\n try {\n const entityRef = {\n entityTypeId: this.refrenceType(),\n entityId: this.refrenceId(),\n moduleName: this.moduleName(),\n entityName: this.entityName(),\n };\n const thread = await this.commentService.getThread(entityRef, this.subject());\n\n if (thread) {\n this.thread.set(thread);\n this.comments.set(thread.comments || []);\n } else {\n const newThread = await this.commentService.createThread(entityRef, this.subject());\n this.thread.set(newThread);\n this.comments.set(newThread.comments || []);\n }\n } catch (error) {\n console.error('Failed to load comments:', error);\n this.showTranslatedToast('messages.error.load-comments', 'danger');\n this.comments.set([]);\n }\n }\n\n //#endregion\n\n //#region ---- Comment Actions ----\n\n /** Opens edit mode for the target comment (or its reply). */\n protected editMessage(comment: AXMComment, reply?: AXMComment, userName?: string): void {\n const target = reply || comment;\n this.isReplyingMode.set(false);\n this.activeReplyComment.set(undefined);\n this.isEditingMode.set(true);\n this.activeEditComment.set({ ...target, userName: userName || '' });\n this.commentContent.set(target.message?.content || '');\n this.wysiwygEditor().getHostElement().scrollIntoView({ behavior: 'smooth', block: 'start' });\n }\n\n /** Opens reply mode, optionally mentioning a specific reply author. */\n protected replyMessage(comment: AXMComment, reply?: AXMComment, userName?: string): void {\n this.isEditingMode.set(false);\n this.activeEditComment.set(undefined);\n this.isReplyingMode.set(true);\n this.activeReplyComment.set({ ...comment, userName: userName || '' });\n\n if (reply) {\n const author = (reply.author as any).fullName || reply.author.id;\n const mention = `<strong><a data-id=\"${reply.author.username}\">@${userName || author}</a></strong> `;\n this.commentContent.set(mention);\n this.setEditorContent(mention);\n this.wysiwygEditor()?.focus();\n }\n this.wysiwygEditor().getHostElement().scrollIntoView({ behavior: 'smooth', block: 'start' });\n }\n\n protected async deleteComment(commentId: string): Promise<void> {\n const [dialogTitle, dialogMessage, deleteText, deletingText, cancelText] = await Promise.all([\n this.t('confirmations.delete-comment.title'),\n this.t('confirmations.delete-comment.message'),\n this.t('actions.delete.title'),\n this.t('confirmations.delete-comment.deleting'),\n this.t('actions.cancel.title'),\n ]);\n\n const dialog = this.dialogService.open({\n icon: 'fa-regular fa-warning',\n content: dialogMessage,\n title: dialogTitle,\n type: 'danger',\n orientation: 'horizontal',\n buttons: [\n {\n text: deleteText,\n color: 'danger',\n onClick: async (e: any) => {\n e.handled = true;\n e.source.text = deletingText;\n e.source.disabled = true;\n e.source.loading = true;\n try {\n await this.commentService.deleteComment(commentId);\n this.removeMessageById(commentId);\n this.showTranslatedToast('messages.success.comment-deleted', 'success');\n if (this.isEditingMode() && this.activeEditComment()?.id === commentId) {\n this.resetReplyEditState();\n }\n dialog.close();\n } catch (error) {\n if (typeof error === 'string') {\n this.showToast(error, 'danger');\n } else {\n this.showTranslatedToast('messages.error.delete-comment', 'danger');\n }\n }\n },\n },\n {\n text: cancelText,\n color: 'default',\n autofocus: true,\n onClick: () => dialog.close(),\n },\n ],\n closeButton: false,\n });\n }\n\n protected resetReplyEditState(): void {\n this.isEditingMode.set(false);\n this.activeEditComment.set(undefined);\n this.isReplyingMode.set(false);\n this.activeReplyComment.set(undefined);\n this.commentContent.set('');\n this.clearEditorContent();\n }\n\n protected async submitComment(): Promise<void> {\n this.isSubmitting.set(true);\n try {\n const currentThread = this.thread();\n if (!currentThread) return;\n\n if (this.isEditingMode() && this.activeEditComment()?.id) {\n await this.commentService.editComment(this.activeEditComment()!.id, this.commentContent());\n this.hasCooldown.set(true);\n this.isEditingMode.set(false);\n this.activeEditComment.set(undefined);\n } else {\n const parentCommentId = this.activeReplyComment()?.id;\n const newComment = await this.commentService.addComment(\n currentThread.id,\n this.commentContent(),\n parentCommentId,\n );\n this.hasCooldown.set(true);\n if (parentCommentId) {\n this.expandReplies(parentCommentId);\n }\n this.isReplyingMode.set(false);\n this.activeReplyComment.set(undefined);\n\n if (newComment?.id) {\n this.scrollToAndHighlight(newComment.id);\n }\n }\n\n this.commentContent.set('');\n this.clearEditorContent();\n setTimeout(() => this.hasCooldown.set(false), SUBMIT_COOLDOWN_MS);\n } catch (error) {\n console.error('Error submitting comment:', error);\n if (typeof error === 'string') {\n this.showToast(error, 'danger');\n } else {\n this.showTranslatedToast('messages.error.submit-comment', 'danger');\n }\n } finally {\n this.isSubmitting.set(false);\n }\n }\n\n //#endregion\n\n //#region ---- Reactions ----\n\n protected async toggleLike(comment: AXMComment): Promise<void> {\n const isLiked = this.isLikedByUser(comment);\n this.updateLikeStatus(comment.id, !isLiked);\n try {\n if (isLiked) {\n await this.commentService.unlikeComment(comment.id);\n } else {\n await this.commentService.likeComment(comment.id);\n }\n } catch (error) {\n console.error('Failed to toggle like:', error);\n this.updateLikeStatus(comment.id, isLiked);\n }\n }\n\n protected isLikedByUser(comment: AXMComment): boolean {\n const user = this.getCurrentUser();\n if (!user) return false;\n return (comment.reactions || []).some((r) => r.author.id === user.id && r.type === 'like');\n }\n\n protected getReactionsCount(comment: AXMComment): number {\n return (comment.reactions || []).filter((r) => r.type === 'like').length;\n }\n\n //#endregion\n\n //#region ---- Replies Expansion ----\n\n protected isRepliesExpanded(commentId: string): boolean {\n return this.expandedCommentIds().has(commentId);\n }\n\n protected onRepliesExpandedChange(commentId: string, expanded: boolean): void {\n this.expandedCommentIds.update((ids) => {\n const next = new Set(ids);\n if (expanded) {\n next.add(commentId);\n } else {\n next.delete(commentId);\n }\n return next;\n });\n }\n\n private expandReplies(commentId: string): void {\n this.expandedCommentIds.update((ids) => {\n const next = new Set(ids);\n next.add(commentId);\n return next;\n });\n }\n\n //#endregion\n\n //#region ---- Scroll & Highlight ----\n\n /**\n * Scrolls to the referenced comment and triggers a highlight pulse animation.\n * Expands parent replies if needed to ensure the target is in the DOM.\n */\n protected scrollMain(): void {\n const comment = this.isReplyingMode() ? this.activeReplyComment() : this.activeEditComment();\n if (!comment?.id) return;\n\n if (comment.replyId) {\n this.expandReplies(comment.replyId);\n }\n\n this.scrollToAndHighlight(comment.id);\n }\n\n /**\n * Scrolls to a comment element and applies a highlight pulse animation.\n * Uses setTimeout to wait for Angular to render after signal updates.\n */\n private scrollToAndHighlight(commentId: string): void {\n this.highlightedCommentId.set(null);\n\n setTimeout(() => {\n const el = this.elementRef.nativeElement.querySelector(`ax-comment-item[id=\"${commentId}\"]`);\n if (!el) return;\n\n el.scrollIntoView({ behavior: 'smooth', block: 'center' });\n this.highlightedCommentId.set(commentId);\n setTimeout(() => this.highlightedCommentId.set(null), HIGHLIGHT_DURATION_MS);\n });\n }\n\n //#endregion\n\n //#region ---- HTML Sanitization ----\n\n protected sanitizeHtml(htmlContent: string | undefined) {\n if (!htmlContent) return this.sanitizer.bypassSecurityTrustHtml('');\n return this.sanitizer.bypassSecurityTrustHtml(htmlContent);\n }\n\n //#endregion\n\n //#region ---- Realtime Event Handlers ----\n\n private handleAddComment(comment: AXMComment): void {\n if (comment.author.id !== this.getCurrentUser()?.id) {\n const notification = convertCommentToNotification(\n this.thread()!,\n comment,\n this.sessionService.user as unknown as AXPUserReference,\n );\n this.notificationConnectorService.create(\n {\n ...notification,\n id: comment.id,\n entityName: 'notifications',\n createAt: new Date(),\n },\n {\n onClick: () => {\n this.router.navigate([this.refrenceType(), 't', this.refrenceType(), 'i', this.refrenceId()]);\n },\n activeWindow: true,\n },\n );\n }\n if (comment.replyId) {\n this.expandReplies(comment.replyId);\n this.comments.update((comments) =>\n comments.map((c) => {\n if (c.id === comment.replyId) {\n const newReplies = c.replies ? [...c.replies, comment] : [comment];\n return { ...c, replies: newReplies, replyCount: newReplies.length };\n }\n return c;\n }),\n );\n } else {\n this.comments.update((comments) => [...comments, comment]);\n }\n }\n\n private handleUpdateComment(updatedComment: AXMComment): void {\n const update = (list: AXMComment[]): AXMComment[] =>\n list.map((c) => {\n if (c.id === updatedComment.id) {\n return { ...c, ...updatedComment, replies: updatedComment.replies || c.replies };\n }\n if (c.replies?.length) {\n return { ...c, replies: update(c.replies) };\n }\n return c;\n });\n this.comments.update((comments) => update(comments));\n }\n\n //#endregion\n\n //#region ---- Private Helpers ----\n\n private getCurrentUser(): AXPUserReference | null {\n const user = this.sessionService.user;\n return user ? { id: user.id, type: 'user' } : null;\n }\n\n private updateLikeStatus(commentId: string, willBeLiked: boolean): void {\n const findAndToggle = (comments: AXMComment[]): AXMComment[] =>\n comments.map((c) => {\n if (c.id === commentId) {\n const user = this.getCurrentUser();\n if (!user) return c;\n const reactions = willBeLiked\n ? [...(c.reactions || []), { author: user, type: 'like' as const }]\n : (c.reactions || []).filter((r) => r.author.id !== user.id || r.type !== 'like');\n return { ...c, reactions };\n }\n if (c.replies?.length) {\n return { ...c, replies: findAndToggle(c.replies) };\n }\n return c;\n });\n this.comments.update((comments) => findAndToggle(comments));\n }\n\n private removeMessageById(commentId: string): void {\n const filterOut = (comments: AXMComment[]): AXMComment[] =>\n comments\n .filter((c) => c.id !== commentId)\n .map((c) => {\n if (c.replies?.length) {\n return { ...c, replies: filterOut(c.replies) };\n }\n return c;\n });\n this.comments.update((comments) => filterOut(comments));\n }\n\n /** Workaround: Quill editor may not sync immediately with ngModel on clear */\n private clearEditorContent(): void {\n const editor = this.elementRef.nativeElement.querySelector('.ql-editor');\n if (editor) editor.innerHTML = '';\n }\n\n /** Workaround: Quill editor may not sync immediately with ngModel on set */\n private setEditorContent(html: string): void {\n const editor = this.elementRef.nativeElement.querySelector('.ql-editor');\n if (editor) editor.innerHTML = html;\n }\n\n /** Shorthand translator scoped to the comments feature */\n private t(key: string): Promise<string> {\n return this.translationService.translateAsync(`@conversation:comments.${key}`);\n }\n\n private showToast(content: string, color: 'success' | 'danger'): void {\n this.toastService.show({\n content,\n color,\n location: 'bottom-center',\n closeButton: true,\n timeOut: 3000,\n timeOutProgress: true,\n });\n }\n\n private async showTranslatedToast(key: string, color: 'success' | 'danger'): Promise<void> {\n const content = await this.t(key);\n this.showToast(content, color);\n }\n\n //#endregion\n}\n","<div class=\"ax-size-full ax-flex ax-flex-col ax-justify-between ax-overflow-hidden\">\n <ax-comment-container class=\"ax-overflow-auto\">\n @if (isLoading()) {\n <div class=\"ax-flex ax-items-center ax-py-12 ax-bg-lightest ax-px-5\">\n <ax-skeleton class=\"ax-min-w-16 ax-h-16 ax-rounded-full ax-me-4\"></ax-skeleton>\n <div class=\"ax-flex ax-flex-col ax-gap-2 ax-w-full\">\n <ax-skeleton class=\"ax-w-full ax-h-6 ax-rounded\"></ax-skeleton>\n <ax-skeleton class=\"ax-w-full ax-h-2 ax-rounded-full\"></ax-skeleton>\n <ax-skeleton class=\"ax-w-full ax-h-2 ax-rounded-full\"></ax-skeleton>\n <ax-skeleton class=\"ax-w-8/12 ax-h-2 ax-rounded-full\"></ax-skeleton>\n </div>\n </div>\n } @else if (comments().length > 0) {\n <ax-comment-view class=\"ax-bg-lightest\">\n @for (comment of comments(); track comment.id) {\n <ax-comment-item\n [id]=\"comment.id!\"\n [replyCount]=\"comment.replyCount\"\n [repliesExpanded]=\"isRepliesExpanded(comment.id!)\"\n (repliesExpandedChange)=\"onRepliesExpandedChange(comment.id!, $event)\"\n [class.highlighted]=\"highlightedCommentId() === comment.id\"\n [@fadeIn]\n >\n <axp-user-avatar #user [size]=\"40\" [userId]=\"comment.author.id\" ngProjectAs=\"'ax-avatar'\"></axp-user-avatar>\n <ax-title>{{ user.title() }}</ax-title>\n <ax-comment-date>{{ comment.auditInfo?.created?.at! | format: 'timeleft' | async }} </ax-comment-date>\n <ax-comment-menu-options>\n <ax-button class=\"ax-sm\" look=\"blank\" color=\"neutral\">\n <ax-icon icon=\"ax-icon ax-icon-solid ax-icon-more-horizontal\"></ax-icon>\n </ax-button>\n\n <ax-dropdown-panel>\n <ax-button-item-list>\n <ax-button-item\n [text]=\"('@conversation:comments.actions.edit.title' | translate | async) ?? ''\"\n color=\"neutral\"\n (click)=\"editMessage(comment, undefined, user.title())\"\n >\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-edit\"></ax-icon>\n </ax-prefix>\n </ax-button-item>\n\n <ax-button-item\n [text]=\"('@conversation:comments.actions.delete.title' | translate | async) ?? ''\"\n color=\"danger\"\n (click)=\"deleteComment(comment.id!)\"\n >\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-trash-can\"></ax-icon>\n </ax-prefix>\n </ax-button-item>\n </ax-button-item-list>\n </ax-dropdown-panel>\n </ax-comment-menu-options>\n <ax-content [innerHTML]=\"sanitizeHtml(comment.message.content)\"></ax-content>\n <ax-comment-like (click)=\"toggleLike(comment)\" [like]=\"isLikedByUser(comment)\">\n {{ getReactionsCount(comment) }}\n </ax-comment-like>\n <ax-comment-reply-text\n (click)=\"replyMessage(comment, undefined, user.title())\"\n ></ax-comment-reply-text>\n @for (reply of comment.replies; track reply.id) {\n <ax-comment-item [id]=\"reply.id\" [class.highlighted]=\"highlightedCommentId() === reply.id\" [@fadeIn]>\n <axp-user-avatar\n #user2\n [size]=\"40\"\n [userId]=\"reply.author.id\"\n ngProjectAs=\"'ax-avatar'\"\n ></axp-user-avatar>\n <ax-title>{{ user2.title() }}</ax-title>\n <ax-comment-date>{{ reply.auditInfo?.created?.at! | format: 'timeleft' | async }} </ax-comment-date>\n <ax-comment-menu-options>\n <ax-button class=\"ax-sm\" look=\"blank\" color=\"neutral\">\n <ax-icon icon=\"ax-icon ax-icon-solid ax-icon-more-horizontal\"></ax-icon>\n </ax-button>\n\n <ax-dropdown-panel>\n <ax-button-item-list>\n <ax-button-item\n [text]=\"('@conversation:comments.actions.edit.title' | translate | async) ?? ''\"\n color=\"neutral\"\n (click)=\"editMessage(comment, reply, user2.title())\"\n >\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-edit\"></ax-icon>\n </ax-prefix>\n </ax-button-item>\n <ax-button-item\n [text]=\"('@conversation:comments.actions.delete.title' | translate | async) ?? ''\"\n color=\"danger\"\n (click)=\"deleteComment(reply.id!)\"\n >\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-trash-can\"></ax-icon>\n </ax-prefix>\n </ax-button-item>\n </ax-button-item-list>\n </ax-dropdown-panel>\n </ax-comment-menu-options>\n <ax-content [innerHTML]=\"sanitizeHtml(reply.message.content)\"></ax-content>\n <ax-comment-like (click)=\"toggleLike(reply)\" [like]=\"isLikedByUser(reply)\">\n {{ getReactionsCount(reply) }}\n </ax-comment-like>\n <ax-comment-reply-text\n (click)=\"replyMessage(comment, reply, user2.title())\"\n ></ax-comment-reply-text>\n </ax-comment-item>\n }\n </ax-comment-item>\n }\n </ax-comment-view>\n } @else {\n <div>\n <div class=\"ax-flex ax-flex-col ax-gap-4 ax-justify-center ax-items-center ax-p-10\">\n <svg\n class=\"ax-mx-auto\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"154\"\n height=\"161\"\n viewBox=\"0 0 154 161\"\n fill=\"none\"\n >\n <path\n d=\"M0.0616455 84.4268C0.0616455 42.0213 34.435 7.83765 76.6507 7.83765C118.803 7.83765 153.224 42.0055 153.224 84.4268C153.224 102.42 147.026 118.974 136.622 132.034C122.282 150.138 100.367 161 76.6507 161C52.7759 161 30.9882 150.059 16.6633 132.034C6.25961 118.974 0.0616455 102.42 0.0616455 84.4268Z\"\n fill=\"#EEF2FF\"\n />\n <path\n d=\"M96.8189 0.632498L96.8189 0.632384L96.8083 0.630954C96.2034 0.549581 95.5931 0.5 94.9787 0.5H29.338C22.7112 0.5 17.3394 5.84455 17.3394 12.4473V142.715C17.3394 149.318 22.7112 154.662 29.338 154.662H123.948C130.591 154.662 135.946 149.317 135.946 142.715V38.9309C135.946 38.0244 135.847 37.1334 135.648 36.2586L135.648 36.2584C135.117 33.9309 133.874 31.7686 132.066 30.1333C132.066 30.1331 132.065 30.1329 132.065 30.1327L103.068 3.65203C103.068 3.6519 103.067 3.65177 103.067 3.65164C101.311 2.03526 99.1396 0.995552 96.8189 0.632498Z\"\n fill=\"white\"\n stroke=\"#E5E7EB\"\n />\n <ellipse cx=\"80.0618\" cy=\"81\" rx=\"28.0342\" ry=\"28.0342\" fill=\"#EEF2FF\" />\n <path\n d=\"M99.2393 61.3061L99.2391 61.3058C88.498 50.5808 71.1092 50.5804 60.3835 61.3061C49.6423 72.0316 49.6422 89.4361 60.3832 100.162C71.109 110.903 88.4982 110.903 99.2393 100.162C109.965 89.4363 109.965 72.0317 99.2393 61.3061ZM105.863 54.6832C120.249 69.0695 120.249 92.3985 105.863 106.785C91.4605 121.171 68.1468 121.171 53.7446 106.785C39.3582 92.3987 39.3582 69.0693 53.7446 54.683C68.1468 40.2965 91.4605 40.2966 105.863 54.6832Z\"\n stroke=\"#E5E7EB\"\n />\n <path\n d=\"M110.782 119.267L102.016 110.492C104.888 108.267 107.476 105.651 109.564 102.955L118.329 111.729L110.782 119.267Z\"\n stroke=\"#E5E7EB\"\n />\n <path\n d=\"M139.122 125.781L139.122 125.78L123.313 109.988C123.313 109.987 123.313 109.987 123.312 109.986C121.996 108.653 119.849 108.657 118.521 109.985L118.871 110.335L118.521 109.985L109.047 119.459C107.731 120.775 107.735 122.918 109.044 124.247L109.047 124.249L124.858 140.06C128.789 143.992 135.191 143.992 139.122 140.06C143.069 136.113 143.069 129.728 139.122 125.781Z\"\n fill=\"#A5B4FC\"\n stroke=\"#818CF8\"\n />\n <path\n d=\"M83.185 87.2285C82.5387 87.2285 82.0027 86.6926 82.0027 86.0305C82.0027 83.3821 77.9987 83.3821 77.9987 86.0305C77.9987 86.6926 77.4627 87.2285 76.8006 87.2285C76.1543 87.2285 75.6183 86.6926 75.6183 86.0305C75.6183 80.2294 84.3831 80.2451 84.3831 86.0305C84.3831 86.6926 83.8471 87.2285 83.185 87.2285Z\"\n fill=\"#4F46E5\"\n />\n <path\n d=\"M93.3528 77.0926H88.403C87.7409 77.0926 87.2049 76.5567 87.2049 75.8946C87.2049 75.2483 87.7409 74.7123 88.403 74.7123H93.3528C94.0149 74.7123 94.5509 75.2483 94.5509 75.8946C94.5509 76.5567 94.0149 77.0926 93.3528 77.0926Z\"\n fill=\"#4F46E5\"\n />\n <path\n d=\"M71.5987 77.0925H66.6488C65.9867 77.0925 65.4507 76.5565 65.4507 75.8945C65.4507 75.2481 65.9867 74.7122 66.6488 74.7122H71.5987C72.245 74.7122 72.781 75.2481 72.781 75.8945C72.781 76.5565 72.245 77.0925 71.5987 77.0925Z\"\n fill=\"#4F46E5\"\n />\n <rect x=\"38.3522\" y=\"21.5128\" width=\"41.0256\" height=\"2.73504\" rx=\"1.36752\" fill=\"#4F46E5\" />\n <rect x=\"38.3522\" y=\"133.65\" width=\"54.7009\" height=\"5.47009\" rx=\"2.73504\" fill=\"#A5B4FC\" />\n <rect x=\"38.3522\" y=\"29.7179\" width=\"13.6752\" height=\"2.73504\" rx=\"1.36752\" fill=\"#4F46E5\" />\n <circle cx=\"56.13\" cy=\"31.0854\" r=\"1.36752\" fill=\"#4F46E5\" />\n <circle cx=\"61.6001\" cy=\"31.0854\" r=\"1.36752\" fill=\"#4F46E5\" />\n <circle cx=\"67.0702\" cy=\"31.0854\" r=\"1.36752\" fill=\"#4F46E5\" />\n </svg>\n <div>\n <h2 class=\"ax-text-center ax-text-neutral-600 ax-font-semibold ax-leading-loose ax-pb-2\">\n {{ '@conversation:comments.components.comment.empty-states.no-comments.title' | translate | async }}\n </h2>\n </div>\n </div>\n </div>\n }\n </ax-comment-container>\n <div class=\"ax-flex ax-flex-col\">\n @if (isReplyingMode() || isEditingMode()) {\n <div\n class=\"ax-flex ax-justify-between ax-rounded-b-none ax-border ax-border-surface ax-border-b-0 ax-rounded-lg ax-px-6 ax-py-3 ax-w-full ax-items-center ax-overflow-hidden ax-text-sm ax-leading-none\"\n >\n <div (click)=\"scrollMain()\" class=\"ax-flex ax-justify-start ax-items-center ax-cursor-pointer\">\n <i\n [class]=\"isReplyingMode() ? 'fa-reply' : 'fa-pen'\"\n class=\"fa-light ax-text-primary-500 dark:ax-text-primary-300 ax-text-2xl ax-me-4\"\n ></i>\n <div class=\"ax-flex ax-flex-col ax-gap-2 ax-justify-between ax-align-middle ax-leading-4 ax-overflow-hidden\">\n <p class=\"ax-text-primary-500 dark:ax-text-primary-300\">\n @if (isReplyingMode()) {\n {{ '@conversation:comments.actions.reply-to' | translate | async }}\n <span class=\"ax-font-bold\">{{ activeReplyComment()?.userName }}</span>\n } @else {\n {{ '@conversation:comments.actions.edit-message' | translate | async }}\n }\n </p>\n <div\n class=\"ax-truncate\"\n [innerHTML]=\"\n isReplyingMode()\n ? sanitizeHtml(activeReplyComment()?.message?.content ?? '')\n : sanitizeHtml(activeEditComment()?.message?.content ?? '')\n \"\n ></div>\n </div>\n </div>\n <div><i (click)=\"resetReplyEditState()\" class=\"fa-light ax-text-2xl fa-xmark ax-cursor-pointer\"></i></div>\n </div>\n }\n <ax-wysiwyg-container #w [look]=\"wysiwygOptions().look\" [(ngModel)]=\"commentContent\">\n <ax-wysiwyg-view class=\"ax-min-h-28\"></ax-wysiwyg-view>\n <ax-wysiwyg-toolbar>\n <ax-prefix>\n <ax-wysiwyg-history></ax-wysiwyg-history>\n <ax-wysiwyg-font-style></ax-wysiwyg-font-style>\n <ax-wysiwyg-colors></ax-wysiwyg-colors>\n <ax-wysiwyg-list></ax-wysiwyg-list>\n <ax-wysiwyg-alignment></ax-wysiwyg-alignment>\n </ax-prefix>\n <ax-suffix>\n <ax-button\n [disabled]=\"hasCooldown() || !commentContent()\"\n (click)=\"submitComment()\"\n [text]=\"'@conversation:comments.actions.send.title' | translate | async\"\n >\n @if (isSubmitting()) {\n <ax-loading></ax-loading>\n }\n </ax-button>\n </ax-suffix>\n </ax-wysiwyg-toolbar>\n </ax-wysiwyg-container>\n </div>\n</div>\n","import { AXPEntityAction, AXPEntityCommandScope, AXPEntityMasterSingleLayoutView } from '@acorex/platform/common';\nimport {\n AXPEntityActionPlugin,\n cloneLayoutArrays,\n ensureLayoutPropertyView,\n ensureLayoutSection,\n ensureListActions,\n actionExists,\n resolveEntityPluginDetailPageOrder,\n} from '@acorex/platform/layout/entity';\n\n/** How to show comments in entity single view: as a section (default) or as a separate page. */\nexport type CommentsDisplayMode = 'section' | 'page';\n\n/** Component key used when display is 'page'. Register a page component with this key via AXP_PAGE_COMPONENT_PROVIDER. */\nexport const COMMENTS_PAGE_COMPONENT_KEY = 'entity-comments-page';\n\nexport type CommentsPluginOptions = {\n /** Where to show comments: section (inline) or page (separate tab). Default 'section' */\n display?: CommentsDisplayMode;\n /** Icon for the comments page (when display is 'page'). Default 'fa-light fa-comments' */\n icon?: string;\n /** Title override for comments section/page. Default '@conversation:terms.common.comments' */\n title?: string;\n};\n\n/**\n * Comments plugin.\n * - When display is 'section' (default), adds a section to the single layout with the comment widget.\n * - When display is 'page', adds a page to entity.pages with COMMENTS_PAGE_COMPONENT_KEY.\n * - Always adds a list action to open the comment popup.\n */\nexport const commentsPlugin: AXPEntityActionPlugin = {\n name: 'comments',\n order: 50,\n apply: (ctx, options?: CommentsPluginOptions) => {\n const opts = options ?? {};\n const displayMode: CommentsDisplayMode = opts.display ?? 'section';\n const displayTitle = opts.title?.trim() || '@conversation:terms.common.comments';\n\n //#region ---- Group & Property ----\n\n const groups = ctx.groups.list() ?? [];\n if (!groups.some((g: any) => g.id === 'comments')) {\n ctx.groups.add({ id: 'comments', title: displayTitle } as any);\n }\n\n const props = ctx.properties.list();\n if (!props.some((p: any) => p.name === 'comments')) {\n ctx.properties.add({\n name: 'comments',\n title: displayTitle,\n groupId: 'comments',\n schema: {\n dataType: 'object',\n interface: {\n type: 'comment',\n options: {\n refrenceType: `${ctx.entity.module}.${ctx.entity.name}`,\n refrenceId: '{{ context.eval(\"id\") }}',\n subject: '{{ context.eval(\"title\", { pipes: [\"translate\"] }) }}',\n },\n },\n },\n } as any);\n }\n\n //#endregion\n\n //#region ---- Display Mode ----\n\n if (displayMode === 'section') {\n ctx.interfaces.master.single.update((single) => {\n const next: any = cloneLayoutArrays(\n (single ?? { title: ctx.entity.title, sections: [], properties: [] }) as AXPEntityMasterSingleLayoutView,\n );\n ensureLayoutSection(next, { id: 'comments', title: displayTitle, order: 100 } as any);\n ensureLayoutPropertyView(next, {\n name: 'comments',\n layout: {\n label: { visible: false },\n positions: { lg: { colSpan: 12, order: 7 } },\n },\n } as any);\n return next;\n });\n } else {\n ctx.entity.pages ??= [];\n const pageExists = ctx.entity.pages.some((p: any) => p.componentKey === COMMENTS_PAGE_COMPONENT_KEY);\n const pageOrder = resolveEntityPluginDetailPageOrder(\n { relatedEntities: ctx.entity.relatedEntities, pages: ctx.entity.pages },\n 'comments',\n {\n componentKey: COMMENTS_PAGE_COMPONENT_KEY,\n skipPage: pageExists ? { componentKey: COMMENTS_PAGE_COMPONENT_KEY } : undefined,\n },\n );\n const page = {\n componentKey: COMMENTS_PAGE_COMPONENT_KEY,\n title: displayTitle,\n icon: opts.icon ?? 'fa-light fa-comments',\n layout: { order: pageOrder },\n } as any;\n if (!pageExists) {\n ctx.entity.pages.push(page);\n } else {\n const pages = ctx.entity.pages as any[];\n const index = pages.findIndex((p) => p.componentKey === COMMENTS_PAGE_COMPONENT_KEY);\n if (index >= 0) {\n pages[index] = { ...pages[index], ...page };\n }\n }\n }\n\n //#endregion\n\n //#region ---- List Actions ----\n\n ensureListActions(ctx);\n ctx.interfaces.update((i) => {\n const actions = (i as any).master.list.actions as AXPEntityAction[];\n const cmdName = 'show-comment-popup';\n if (!actionExists(actions, cmdName)) {\n actions.push({\n title: '@conversation:actions.show-comment-popup',\n command: {\n name: cmdName,\n options: {\n refId: '{{ context.eval(\"id\") }}',\n refType: `${ctx.entity.module}.${ctx.entity.name}`,\n subject: '{{ context.eval(\"title\", { pipes: [\"translate\"] }) }}',\n },\n },\n priority: 'secondary',\n type: 'comments',\n separated: true,\n scope: AXPEntityCommandScope.Individual,\n });\n }\n return i as any;\n });\n\n //#endregion\n },\n};\n","import { CommonModule } from '@angular/common';\nimport { Component, ViewEncapsulation, input } from '@angular/core';\n\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXBasePageComponent } from '@acorex/components/page';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXMCommentComponent } from '../comment.component';\n\n@Component({\n selector: 'axm-comment-popup',\n standalone: true,\n imports: [\n // Angular\n CommonModule,\n // ACoreX\n AXDecoratorModule,\n AXButtonModule,\n AXTranslationModule,\n // Comment\n AXMCommentComponent,\n ],\n templateUrl: './comment-popup.component.html',\n encapsulation: ViewEncapsulation.None,\n providers: [],\n})\nexport class AXMCommentPopupComponent extends AXBasePageComponent {\n refrenceType = input.required<string>();\n refrenceId = input.required<string>();\n subject = input.required<string>();\n}\n","<ax-content>\n <div class=\"ax-p-6 ax-min-h-[30vh] ax-overflow-y-auto\">\n <axm-comment [refrenceType]=\"refrenceType()\" [refrenceId]=\"refrenceId()\" [subject]=\"subject()\"></axm-comment>\n </div>\n</ax-content>\n<ax-footer>\n <ax-prefix></ax-prefix>\n <ax-suffix>\n <ax-button\n [text]=\"'@general:actions.close.title' | translate | async\"\n look=\"solid\"\n color=\"primary\"\n (onClick)=\"close()\"\n >\n </ax-button>\n </ax-suffix>\n</ax-footer>\n","import { AXPEntityReference } from '@acorex/platform/core';\nimport { AXPValueWidgetComponent } from '@acorex/platform/layout/widget-core';\nimport { ChangeDetectionStrategy, Component, computed } from '@angular/core';\nimport { AXMCommentComponent } from '..';\n\n@Component({\n template: `\n <axm-comment [refrenceId]=\"refrenceId()\" [refrenceType]=\"refrenceType()\" [subject]=\"subject()\"></axm-comment>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [AXMCommentComponent],\n})\nexport class AXMCommentWidgetViewComponent extends AXPValueWidgetComponent<AXPEntityReference & { subject: string }> {\n protected refrenceType = computed(() => this.options()?.['refrenceType']);\n protected refrenceId = computed(() => this.options()?.['refrenceId']);\n protected subject = computed(() => this.options()?.['subject']);\n}\n","import { AXPWidgetConfig, AXPWidgetGroupEnum } from '@acorex/platform/layout/widget-core';\n\nexport const AXPCommentWidget: AXPWidgetConfig = {\n name: 'comment',\n title: '@conversation:comments.widget.title',\n description: '@conversation:comments.widget.description',\n type: 'view',\n categories: [],\n groups: [AXPWidgetGroupEnum.EntityWidget],\n icon: 'fa-light fa-comments',\n properties: [],\n components: {\n view: {\n component: () => import('./comment-widget-view.component').then((c) => c.AXMCommentWidgetViewComponent),\n },\n edit: {\n component: () => import('./comment-widget-view.component').then((c) => c.AXMCommentWidgetViewComponent),\n },\n },\n};\n","import { AXPopupService } from '@acorex/components/popup';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { AXPWorkflow, AXPWorkflowAction, AXPWorkflowContext } from '@acorex/platform/workflow';\nimport { inject, Injectable, signal } from '@angular/core';\n\n@Injectable()\nexport class AXMCommentPopupStartAction extends AXPWorkflowAction {\n private popupService = inject(AXPopupService);\n private translate = inject(AXTranslationService);\n\n override async execute(context: AXPWorkflowContext): Promise<void> {\n const comp = (await import('../popup/comment-popup.component')).AXMCommentPopupComponent;\n\n this.popupService.open(comp, {\n title: await this.translate.translateAsync('@conversation:comments.feature.title'),\n size: 'lg',\n data: {\n refrenceType: signal(context.getVariable('options.refType')),\n refrenceId: signal(context.getVariable('options.refId')),\n subject: signal(context.getVariable('options.subject')),\n },\n });\n }\n}\n\nexport const AXMCommentPopupWorkflow: AXPWorkflow = {\n startStepId: 'start',\n steps: {\n start: {\n action: 'show-comment-popup-action',\n },\n },\n};\n","//#region ---- Imports ----\n\nimport type { AXConversation, AXMessage } from '@acorex/components/conversation2';\nimport type {\n AXPAiChatMessage,\n AXPAiDelegatedAgentTranscriptEntry,\n AXPAiEngineLastProviderPayload,\n AXPAiEngineRunResult,\n AXPAiEngineUsageTotals,\n} from '@acorex/modules/ai-management';\nimport { axpAiChatTextMessage, axpSanitizeLastProviderPayloadForPersistence } from '@acorex/modules/ai-management';\n\nimport { axmReadAssistAiTranscript, axmReadAssistAiTranscriptRaw } from './assist-bot-transcript.util';\n\n//#endregion\n\n//#region ---- Types ----\n\n/** One conversation turn exported as an engine run result (user or assist). */\nexport interface AXMAssistConversationDebugTurn {\n messageId: string;\n timestamp: string;\n result: AXPAiEngineRunResult;\n}\n\n/** Full assist conversation debug export (chronological turns). */\nexport interface AXMAssistConversationDebugExport {\n exportedAt: string;\n conversation: {\n id: string;\n title?: string;\n type?: string;\n metadata?: unknown;\n participants?: unknown;\n };\n turns: AXMAssistConversationDebugTurn[];\n}\n\n//#endregion\n\n//#region ---- Message classification ----\n\n/** True when the message carries assist / AI debug payload worth exporting. */\nexport function axmIsAssistDebugMessage(message: AXMessage | null | undefined): boolean {\n if (!message) {\n return false;\n }\n if (message.type === 'assist-response') {\n return true;\n }\n const meta = message.metadata as Record<string, unknown> | undefined;\n if (meta?.['isAssistResponse'] === true) {\n return true;\n }\n const transcript = axmReadAssistAiTranscript(meta);\n return transcript != null && transcript.length > 0;\n}\n\n//#endregion\n\n//#region ---- Serialization ----\n\nfunction toIsoTimestamp(value: AXMessage['timestamp']): string {\n if (value instanceof Date) {\n return value.toISOString();\n }\n if (typeof value === 'string' || typeof value === 'number') {\n const parsed = new Date(value);\n if (!Number.isNaN(parsed.getTime())) {\n return parsed.toISOString();\n }\n }\n return String(value ?? '');\n}\n\nfunction readRecord(meta: Record<string, unknown> | undefined, key: string): unknown {\n return meta?.[key];\n}\n\n/**\n * Reconstructs {@link AXPAiEngineRunResult} from assist message metadata\n * (same shape returned by {@link AXPAiEngine.run}).\n */\nexport function axmBuildAssistEngineRunResult(message: AXMessage): AXPAiEngineRunResult {\n const meta =\n typeof message.metadata === 'object' && message.metadata != null\n ? (message.metadata as Record<string, unknown>)\n : undefined;\n\n const result: AXPAiEngineRunResult = {\n messages: axmReadAssistAiTranscriptRaw(meta),\n };\n\n const usage = readRecord(meta, 'assistRunUsageTotals');\n if (usage != null && typeof usage === 'object') {\n result.usageTotals = usage as AXPAiEngineUsageTotals;\n }\n\n const lastProvider = readRecord(meta, 'assistRunLastProviderResult');\n if (lastProvider != null && typeof lastProvider === 'object') {\n result.lastProviderResult = axpSanitizeLastProviderPayloadForPersistence(\n lastProvider as AXPAiEngineLastProviderPayload,\n );\n }\n\n const delegated = readRecord(meta, 'assistRunDelegatedTranscriptsByCallId');\n if (delegated != null && typeof delegated === 'object' && !Array.isArray(delegated)) {\n result.delegatedTranscriptsByCallId = delegated as Record<string, AXPAiDelegatedAgentTranscriptEntry>;\n }\n\n return result;\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n\nfunction extractUserChatText(message: AXMessage): string {\n const payload = message.payload;\n if (!isRecord(payload)) {\n return '';\n }\n const text = payload['text'];\n return typeof text === 'string' ? text.trim() : '';\n}\n\n/** User chat line as a minimal engine run result (`messages` only). */\nexport function axmBuildUserTurnEngineRunResult(message: AXMessage): AXPAiEngineRunResult {\n const text = extractUserChatText(message);\n return {\n messages: text ? [axpAiChatTextMessage('user', text)] : [],\n };\n}\n\n/**\n * Pretty-printed JSON for clipboard export (single assist run — {@link AXPAiEngineRunResult}).\n */\nexport function axmFormatAssistMessageDebugText(message: AXMessage): string {\n const run = axmIsAssistDebugMessage(message)\n ? axmBuildAssistEngineRunResult(message)\n : axmBuildUserTurnEngineRunResult(message);\n return JSON.stringify(run, null, 2);\n}\n\n/**\n * Pretty-printed JSON for clipboard export (conversation turns as engine run results).\n */\nexport function axmFormatAssistConversationDebugText(\n conversation: AXConversation | { id?: string; title?: string; type?: string; metadata?: unknown; participants?: unknown },\n messages: AXMessage[],\n): string {\n const chronological = [...messages].sort(\n (a, b) => new Date(a.timestamp).getTime() - new Date(b.timestamp).getTime(),\n );\n\n const turns: AXMAssistConversationDebugTurn[] = chronological.map((message) => ({\n messageId: message.id,\n timestamp: toIsoTimestamp(message.timestamp),\n result: axmIsAssistDebugMessage(message)\n ? axmBuildAssistEngineRunResult(message)\n : axmBuildUserTurnEngineRunResult(message),\n }));\n\n const snapshot: AXMAssistConversationDebugExport = {\n exportedAt: new Date().toISOString(),\n conversation: {\n id: conversation.id ?? '',\n title: conversation.title,\n type: conversation.type,\n metadata: conversation.metadata,\n participants: conversation.participants,\n },\n turns,\n };\n\n return JSON.stringify(snapshot, null, 2);\n}\n\n/** Safe fragment for debug export filenames. */\nexport function axmSanitizeDebugFilenamePart(id: string): string {\n const sanitized = id.replace(/[^\\w.-]+/g, '_').slice(0, 80).trim();\n return sanitized.length > 0 ? sanitized : 'debug';\n}\n\n/** Triggers a browser download of pretty-printed JSON debug export. */\nexport function axmDownloadDebugJson(filename: string, text: string): void {\n if (!text.trim() || typeof document === 'undefined') {\n return;\n }\n const blob = new Blob([text], { type: 'application/json;charset=utf-8' });\n const url = URL.createObjectURL(blob);\n const anchor = document.createElement('a');\n anchor.href = url;\n anchor.download = filename.endsWith('.json') ? filename : `${filename}.json`;\n anchor.rel = 'noopener';\n anchor.click();\n URL.revokeObjectURL(url);\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport {\n AXMessageApi,\n type AXConversation,\n type AXConversationItemAction,\n type AXMessage,\n type AXMessageAction,\n type AXPagination,\n} from '@acorex/components/conversation2';\nimport { inject } from '@angular/core';\n\nimport {\n axmAssistChatDebugModeState,\n AXMAssistChatDebugModeService,\n} from './assist-chat-debug-mode.service';\nimport {\n axmDownloadDebugJson,\n axmFormatAssistConversationDebugText,\n axmFormatAssistMessageDebugText,\n axmIsAssistDebugMessage,\n axmSanitizeDebugFilenamePart,\n} from '../utils/assist-debug-information.util';\nimport { axmConversationHasAiChat } from '../utils/chat-ai-target.util';\n\n//#endregion\n\n//#region ---- Constants ----\n\nconst DOWNLOAD_DEBUG_ACTION_ID = 'download-debug-information';\n\nconst DOWNLOAD_DEBUG_LABEL = '@conversation:chat.actions.download-debug-information';\n\n//#endregion\n\n//#region ---- Helpers ----\n\nfunction isAssistConversation(conversation: { metadata?: Record<string, unknown> } | null | undefined): boolean {\n return axmConversationHasAiChat(conversation ?? undefined);\n}\n\nfunction isDebugExportVisible(): boolean {\n return axmAssistChatDebugModeState.resolved && axmAssistChatDebugModeState.enabled;\n}\n\nfunction isAssistMessageDebugExportVisible(message: AXMessage): boolean {\n return isDebugExportVisible() && axmIsAssistDebugMessage(message);\n}\n\nfunction isAssistConversationDebugExportVisible(context: {\n conversation?: { id?: string; metadata?: Record<string, unknown> };\n}): boolean {\n return (\n isDebugExportVisible() &&\n isAssistConversation(context?.conversation) &&\n !!context?.conversation?.id?.trim()\n );\n}\n\nasync function loadAllConversationMessages(messageApi: AXMessageApi, conversationId: string): Promise<AXMessage[]> {\n const pageSize = 100;\n let page = 0;\n const collected: AXMessage[] = [];\n\n while (true) {\n const pagination: AXPagination = { page, pageSize };\n const result = await messageApi.getMessages(conversationId, pagination);\n collected.push(...result.items);\n if (!result.hasMore) {\n break;\n }\n page += 1;\n }\n\n return collected;\n}\n\n//#endregion\n\n//#region ---- Message action ----\n\nexport const AXM_DOWNLOAD_ASSIST_MESSAGE_DEBUG_ACTION: AXMessageAction = {\n id: DOWNLOAD_DEBUG_ACTION_ID,\n label: DOWNLOAD_DEBUG_LABEL,\n icon: 'fa-light fa-download',\n priority: 94,\n visible: (message: AXMessage) => isAssistMessageDebugExportVisible(message),\n enabled: (message: AXMessage) => isAssistMessageDebugExportVisible(message),\n handler: async (context: { message: AXMessage }) => {\n const debugMode = inject(AXMAssistChatDebugModeService);\n if (!debugMode.isDebugModeActive()) {\n return;\n }\n const text = axmFormatAssistMessageDebugText(context.message);\n const filename = `assist-debug-message-${axmSanitizeDebugFilenamePart(context.message.id)}.json`;\n axmDownloadDebugJson(filename, text);\n },\n};\n\n//#endregion\n\n//#region ---- Conversation item action ----\n\nexport const AXM_DOWNLOAD_ASSIST_CONVERSATION_DEBUG_ACTION: AXConversationItemAction = {\n id: DOWNLOAD_DEBUG_ACTION_ID,\n label: DOWNLOAD_DEBUG_LABEL,\n icon: 'fa-light fa-download',\n priority: 105,\n visible: (context) => isAssistConversationDebugExportVisible(context),\n enabled: true,\n handler: async (context: {\n conversation?: AXConversation;\n messageApi?: AXMessageApi;\n }) => {\n const debugMode = inject(AXMAssistChatDebugModeService);\n const messageApi = context.messageApi ?? inject(AXMessageApi);\n const conversation = context.conversation;\n const conversationId = conversation?.id?.trim();\n\n if (!debugMode.isDebugModeActive() || !conversationId || !conversation) {\n return;\n }\n\n const messages = await loadAllConversationMessages(messageApi, conversationId);\n const text = axmFormatAssistConversationDebugText(conversation, messages);\n const filename = `assist-debug-conversation-${axmSanitizeDebugFilenamePart(conversationId)}.json`;\n axmDownloadDebugJson(filename, text);\n },\n};\n\n//#endregion\n","//#region ---- Imports ----\n\nimport type { AXConversation, AXConversationTab } from '@acorex/components/conversation2';\n\n//#endregion\n\n//#region ---- Helpers ----\n\n/** True when the conversation is an assist / AI bot chat. */\nexport function axmIsAssistBotConversation(conversation: AXConversation): boolean {\n if (conversation.type === 'bot') {\n return true;\n }\n const fromMeta = conversation.metadata?.['assistId'];\n if (typeof fromMeta === 'string' && fromMeta.trim().length > 0) {\n return true;\n }\n for (const participant of conversation.participants ?? []) {\n if (typeof participant.id === 'string' && participant.id.startsWith('assist-')) {\n return true;\n }\n const fromParticipant = participant.metadata?.['assistId'];\n if (typeof fromParticipant === 'string' && fromParticipant.trim().length > 0) {\n return true;\n }\n }\n return false;\n}\n\n//#endregion\n\n//#region ---- Bot tab ----\n\n/** Sidebar tab for AI assist conversations (`type: 'bot'` or assist metadata). */\nexport const AXM_CONVERSATION_TAB_BOT: AXConversationTab = {\n id: 'bot',\n label: '@conversation:chat.tabs.bot',\n icon: 'fa-light fa-robot',\n priority: 30,\n filter: (conversations: AXConversation[]) =>\n conversations.filter((conversation) => axmIsAssistBotConversation(conversation)),\n};\n\n//#endregion\n","//#region ---- Imports ----\n\nimport {\n AXConversationService,\n type AXConversation,\n type AXConversationItemAction,\n} from '@acorex/components/conversation2';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport {\n type AXPDialogRef,\n AXPLayoutBuilderService,\n type IDialogBuilder,\n type IFlexContainerBuilder,\n type IFormFieldBuilder,\n type IActionBuilder,\n} from '@acorex/platform/layout/builder';\nimport { inject } from '@angular/core';\n\nimport { axmIsAssistBotConversation } from '../tabs/chat-conversation-tabs';\n\n//#endregion\n\n//#region ---- Rename handler ----\n\nasync function renameAssistConversation(\n conversation: AXConversation,\n services: {\n layoutBuilder: AXPLayoutBuilderService;\n conversationService: AXConversationService;\n translationService: AXTranslationService;\n },\n): Promise<void> {\n const conversationId = conversation.id?.trim();\n if (!conversationId) {\n return;\n }\n\n const [dialogTitle, cancelLabel, saveLabel, placeholder] = await Promise.all([\n services.translationService.translateAsync('@conversation:chat.assist-conversation.rename.title'),\n services.translationService.translateAsync('@conversation:comments.actions.cancel.title'),\n services.translationService.translateAsync('@conversation:chat.assist-conversation.rename.actions.save'),\n services.translationService.translateAsync('@conversation:chat.assist-conversation.rename.placeholder'),\n ]);\n\n const nextTitle = await services.layoutBuilder\n .create()\n .dialog<string | false>((dialog: IDialogBuilder<string | false>) => {\n dialog\n .setTitle(dialogTitle ?? 'Rename Chat')\n .setSize('sm')\n .setCloseButton(true)\n .setContext({ title: conversation.title ?? '' })\n .content((flex: IFlexContainerBuilder) => {\n flex.setDirection('column').setGap('10px');\n flex.formField('', (field: IFormFieldBuilder) => {\n field.path('title');\n field.textBox({ placeholder: placeholder ?? '' });\n });\n })\n .setActions((actions: IActionBuilder) => {\n actions.cancel(cancelLabel ?? 'Cancel').submit(saveLabel ?? 'Save');\n })\n .onAction(async (dialogRef: AXPDialogRef) => {\n if (dialogRef.action() === 'cancel') {\n return false;\n }\n const title = String((dialogRef.context() as { title?: string }).title ?? '').trim();\n if (!title) {\n return false;\n }\n return title;\n });\n })\n .show();\n\n if (typeof nextTitle !== 'string' || !nextTitle || nextTitle === (conversation.title ?? '').trim()) {\n return;\n }\n\n await services.conversationService.updateConversation(conversationId, {\n title: nextTitle,\n metadata: {\n ...(conversation.metadata ?? {}),\n isTitleCustomized: true,\n isTitleAutoGenerated: false,\n },\n });\n}\n\n//#endregion\n\n//#region ---- Action ----\n\nexport const AXM_RENAME_ASSIST_CONVERSATION_ACTION: AXConversationItemAction = {\n id: 'rename-assist-conversation',\n label: '@conversation:chat.assist-conversation.rename.action',\n icon: 'fa-light fa-pen',\n priority: 110,\n visible: (context) => axmIsAssistBotConversation(context.conversation),\n enabled: true,\n handler: async (context: { conversation?: AXConversation }) => {\n const conversation = context.conversation;\n if (!conversation) {\n return;\n }\n\n await renameAssistConversation(conversation, {\n layoutBuilder: inject(AXPLayoutBuilderService),\n conversationService: inject(AXConversationService),\n translationService: inject(AXTranslationService),\n });\n },\n};\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { AXButtonModule } from '@acorex/components/button';\nimport {\n AXComposerService,\n AXConversationService,\n type AXComposerActionComponent,\n type AXConversation,\n} from '@acorex/components/conversation2';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXLabelModule } from '@acorex/components/label';\nimport { AXLoadingModule } from '@acorex/components/loading';\nimport { AXToastService } from '@acorex/components/toast';\nimport { AXTranslationModule, AXTranslationService } from '@acorex/core/translation';\nimport {\n AIMANAGEMENT_CHAT_TRANSCRIBE_SPEECH_COMMAND_KEY,\n AIMANAGEMENT_STRUCTURED_TEXT_COMPLETION_COMMAND_KEY,\n AXPAiChatToolRunContextService,\n AXPAiManagerService,\n AXPAiPlatformRuntimeContextBuilder,\n axpAiChatTextMessage,\n persistAiChatAttachmentImage,\n type AXPAiPlatformRuntimeContext,\n} from '@acorex/modules/ai-management';\nimport { AXPFileStorageService } from '@acorex/platform/common';\nimport { AXPCommandService } from '@acorex/platform/runtime';\nimport { CommonModule, isPlatformBrowser } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n PLATFORM_ID,\n computed,\n inject,\n input,\n output,\n signal,\n} from '@angular/core';\n\n//#endregion\n\n//#region ---- Constants ----\n\n/** Platform AiAgent catalog id for the speech-to-text specialist (see connectivity agent mock seed). */\nconst AXM_SPEECH_TO_TEXT_AGENT_ID = 'c0000001-0000-4000-8000-000000000006';\n\n//#endregion\n\n//#region ---- Component ----\n\n@Component({\n selector: 'axm-chat-voice-recorder',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CommonModule, AXButtonModule, AXDecoratorModule, AXLabelModule, AXLoadingModule, AXTranslationModule],\n template: `\n <div class=\"voice-recorder\">\n <div class=\"recorder-header\">\n <h3 class=\"recorder-title\">{{ '@acorex:chat.voice-recorder.title' | translate | async }}</h3>\n <button\n type=\"button\"\n class=\"close-button\"\n (click)=\"cancel()\"\n [attr.aria-label]=\"'@acorex:chat.actions.close' | translate | async\"\n >\n <i class=\"fa-light fa-xmark\"></i>\n </button>\n </div>\n\n <div class=\"recorder-content\">\n @if (isTranscribing()) {\n <div class=\"recorder-transcribing\">\n <ax-loading></ax-loading>\n <span class=\"recorder-transcribing-text\">{{\n '@acorex:chat.voice-recorder.transcribing' | translate | async\n }}</span>\n </div>\n } @else if (!isRecording()) {\n <div class=\"recorder-idle\">\n <button type=\"button\" class=\"record-button\" (click)=\"startRecording()\">\n <i class=\"fa-light fa-microphone\"></i>\n </button>\n <!-- <button\n type=\"button\"\n class=\"speech-to-text-button\"\n [disabled]=\"isTranscribing()\"\n (click)=\"applySpeechToText()\"\n [attr.aria-label]=\"'@conversation:chat.speech-to-text.action' | translate | async\"\n >\n <i class=\"fa-light fa-waveform-lines\"></i>\n </button> -->\n <span class=\"recorder-hint\">{{ '@acorex:chat.voice-recorder.tap-to-start' | translate | async }}</span>\n </div>\n } @else {\n <div class=\"recorder-active\">\n <div class=\"recorder-info\">\n <div class=\"recording-indicator\">\n <span class=\"pulse-dot\"></span>\n <span class=\"recording-text\">{{ '@acorex:chat.voice-recorder.recording' | translate | async }}</span>\n </div>\n <div class=\"recording-time\">{{ formattedTime() }}</div>\n </div>\n\n <div class=\"recorder-actions\">\n <ax-button\n [text]=\"translation.translateSync('@acorex:chat.actions.cancel')\"\n [look]=\"'ghost'\"\n (onClick)=\"cancelRecording()\"\n >\n <ax-prefix>\n <ax-icon><i class=\"fa-light fa-xmark\"></i></ax-icon>\n </ax-prefix>\n </ax-button>\n\n <ax-button\n [text]=\"translation.translateSync('@acorex:chat.actions.send')\"\n color=\"'primary'\"\n (onClick)=\"stopRecording()\"\n >\n <ax-prefix>\n <ax-icon><i class=\"fa-light fa-paper-plane\"></i></ax-icon>\n </ax-prefix>\n </ax-button>\n\n <ax-button\n [text]=\"translation.translateSync('@acorex:chat.actions.speach-to-text')\"\n color=\"secondary\"\n [disabled]=\"isTranscribing()\"\n (onClick)=\"applySpeechToText()\"\n >\n <ax-prefix>\n <ax-icon><i class=\"fa-light fa-paper-plane\"></i></ax-icon>\n </ax-prefix>\n </ax-button>\n </div>\n </div>\n }\n </div>\n </div>\n `,\n styles: [\n `\n :host {\n display: block;\n width: 100%;\n }\n\n .voice-recorder {\n display: flex;\n flex-direction: column;\n width: 100%;\n background: rgb(var(--ax-sys-color-lightest-surface));\n }\n\n .recorder-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 0.75rem 1rem;\n border-bottom: 1px solid rgb(var(--ax-sys-color-border-light-surface));\n }\n\n .recorder-title {\n margin: 0;\n font-size: 0.875rem;\n font-weight: 600;\n }\n\n .close-button {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 28px;\n height: 28px;\n border: none;\n background: transparent;\n border-radius: 50%;\n font-size: 1rem;\n cursor: pointer;\n transition: all 0.2s;\n opacity: 0.7;\n }\n\n .close-button:hover {\n background: rgb(var(--ax-sys-color-light-surface));\n opacity: 1;\n }\n\n .recorder-content {\n display: flex;\n align-items: center;\n width: 100%;\n padding: 1rem;\n }\n\n .recorder-idle {\n display: flex;\n align-items: center;\n gap: 1rem;\n width: 100%;\n }\n\n .record-button,\n .speech-to-text-button {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 56px;\n height: 56px;\n border: none;\n border-radius: 50%;\n font-size: 1.5rem;\n cursor: pointer;\n transition: all 0.2s;\n }\n\n .record-button {\n background: rgb(var(--ax-sys-color-primary-500));\n color: rgb(var(--ax-sys-color-on-primary-surface));\n box-shadow: 0 2px 8px rgba(var(--ax-sys-color-primary-500), 0.3);\n }\n\n .record-button:hover {\n background: rgb(var(--ax-sys-color-primary-600));\n }\n\n .speech-to-text-button {\n background: rgb(var(--ax-sys-color-secondary-surface));\n color: rgb(var(--ax-sys-color-on-secondary-surface));\n box-shadow: 0 2px 8px rgba(var(--ax-sys-color-secondary-500), 0.2);\n }\n\n .speech-to-text-button:hover:not(:disabled) {\n background: rgb(var(--ax-sys-color-secondary-600));\n }\n\n .speech-to-text-button:disabled {\n opacity: 0.6;\n cursor: not-allowed;\n }\n\n .recorder-hint {\n font-size: 0.875rem;\n opacity: 0.7;\n }\n\n .recorder-transcribing {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 0.75rem;\n width: 100%;\n padding: 0.5rem 0;\n }\n\n .recorder-transcribing-text {\n font-size: 0.875rem;\n font-weight: 500;\n color: rgb(var(--ax-sys-color-on-light-surface));\n }\n\n .recorder-active {\n display: flex;\n align-items: center;\n justify-content: space-between;\n width: 100%;\n gap: 1rem;\n }\n\n .recorder-info {\n display: flex;\n align-items: center;\n gap: 1.5rem;\n flex: 1;\n }\n\n .recording-indicator {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n }\n\n .pulse-dot {\n width: 12px;\n height: 12px;\n background: rgb(var(--ax-sys-color-danger-500));\n border-radius: 50%;\n animation: pulse 1.5s ease-in-out infinite;\n }\n\n @keyframes pulse {\n 0%,\n 100% {\n opacity: 1;\n }\n 50% {\n opacity: 0.5;\n }\n }\n\n .recording-text {\n font-size: 0.875rem;\n font-weight: 600;\n color: rgb(var(--ax-sys-color-danger-500));\n }\n\n .recording-time {\n font-size: 1.25rem;\n font-weight: 600;\n font-variant-numeric: tabular-nums;\n min-width: 80px;\n }\n\n .recorder-actions {\n display: flex;\n align-items: center;\n gap: 0.75rem;\n }\n\n @media (max-width: 768px) {\n .voice-recorder {\n padding: 0.75rem;\n }\n\n .record-button,\n .speech-to-text-button {\n width: 48px;\n height: 48px;\n font-size: 1.25rem;\n }\n\n .recorder-info {\n gap: 1rem;\n }\n\n .recording-time {\n font-size: 1.125rem;\n font-variant-numeric: tabular-nums;\n }\n\n .recorder-actions {\n gap: 0.5rem;\n }\n }\n\n @media (max-width: 480px) {\n .recorder-hint {\n font-size: 0.8125rem;\n }\n\n .recording-text {\n display: none;\n }\n\n .recording-time {\n font-size: 1rem;\n min-width: 60px;\n font-variant-numeric: tabular-nums;\n }\n }\n `,\n ],\n})\nexport class AXMChatVoiceRecorderComponent implements AXComposerActionComponent {\n //#region ---- Services & Dependencies ----\n\n private readonly platformId = inject(PLATFORM_ID);\n private readonly destroyRef = inject(DestroyRef);\n private readonly composerService = inject(AXComposerService);\n private readonly conversationService = inject(AXConversationService);\n private readonly commandService = inject(AXPCommandService);\n private readonly chatToolRunContext = inject(AXPAiChatToolRunContextService);\n private readonly aiManager = inject(AXPAiManagerService, { optional: true });\n private readonly runtimeContextBuilder = inject(AXPAiPlatformRuntimeContextBuilder);\n private readonly fileStorage = inject(AXPFileStorageService);\n private readonly toastService = inject(AXToastService);\n readonly translation = inject(AXTranslationService);\n\n //#endregion\n\n //#region ---- Inputs & Outputs ----\n\n readonly conversation = input.required<AXConversation>();\n readonly service = input<AXComposerService>();\n readonly recordingComplete = output<Blob>();\n readonly recordingCancelled = output<void>();\n\n //#endregion\n\n //#region ---- State ----\n\n readonly isRecording = signal(false);\n readonly isTranscribing = signal(false);\n readonly recordingDuration = signal(0);\n\n private recordingStartTime = 0;\n private timerInterval?: number;\n private mediaRecorder?: MediaRecorder;\n private audioChunks: Blob[] = [];\n private activeStream?: MediaStream;\n private cancelled = false;\n private suppressVoiceMessageSend = false;\n private pendingBlobResolve?: (blob: Blob | null) => void;\n\n //#endregion\n\n //#region ---- Computed ----\n\n readonly formattedTime = computed(() => {\n const duration = this.recordingDuration();\n const minutes = Math.floor(duration / 60);\n const seconds = duration % 60;\n return `${minutes}:${seconds.toString().padStart(2, '0')}`;\n });\n\n //#endregion\n\n //#region ---- Lifecycle ----\n\n constructor() {\n this.destroyRef.onDestroy(() => this.stopAndCleanup());\n }\n\n //#endregion\n\n //#region ---- UI Handlers ----\n\n async applySpeechToText(): Promise<void> {\n if (this.isTranscribing() || !this.isRecording()) {\n return;\n }\n\n try {\n const audioBlob = await this.waitForRecordingBlob();\n if (!audioBlob) {\n return;\n }\n\n this.isTranscribing.set(true);\n const text = await this.transcribeVoiceBlob(audioBlob);\n if (!text) {\n return;\n }\n\n this.composerService.draftText.set(text);\n this.composerService.hideComponent();\n setTimeout(() => {\n (document.querySelector('.composer-input-wrapper textarea') as HTMLTextAreaElement)?.focus();\n }, 100);\n } catch (error) {\n console.error('Speech-to-text failed:', error);\n this.composerService.hideComponent();\n const errTitle = await this.translation.translateAsync('@general:messages.error.title');\n const fallback = await this.translation.translateAsync(\n '@conversation:chat.speech-to-text.errors.transcription-failed',\n );\n const content = error instanceof Error ? error.message : fallback;\n await this.toastService.show({ color: 'danger', title: errTitle, content });\n } finally {\n this.isTranscribing.set(false);\n }\n }\n\n async startRecording(): Promise<void> {\n if (!isPlatformBrowser(this.platformId)) {\n return;\n }\n\n try {\n const stream = await navigator.mediaDevices.getUserMedia({ audio: true });\n this.activeStream = stream;\n this.mediaRecorder = new MediaRecorder(stream);\n this.audioChunks = [];\n this.cancelled = false;\n\n this.mediaRecorder.ondataavailable = (event) => {\n if (event.data.size > 0) {\n this.audioChunks.push(event.data);\n }\n };\n\n this.mediaRecorder.onstop = async () => {\n stream.getTracks().forEach((track) => track.stop());\n this.activeStream = undefined;\n\n const pendingResolve = this.pendingBlobResolve;\n this.pendingBlobResolve = undefined;\n\n if (this.cancelled) {\n this.cancelled = false;\n pendingResolve?.(null);\n return;\n }\n\n const audioBlob = new Blob(this.audioChunks, {\n type: this.mediaRecorder?.mimeType?.trim() || this.audioChunks[0]?.type?.trim() || 'audio/webm',\n });\n pendingResolve?.(audioBlob.size > 0 ? audioBlob : null);\n\n if (this.suppressVoiceMessageSend) {\n this.suppressVoiceMessageSend = false;\n return;\n }\n\n this.recordingComplete.emit(audioBlob);\n\n const conv = this.conversation();\n if (conv && this.audioChunks.length > 0) {\n await this.sendVoiceMessage(audioBlob, conv);\n }\n };\n\n this.mediaRecorder.start(250);\n this.isRecording.set(true);\n this.recordingStartTime = Date.now();\n this.recordingDuration.set(0);\n\n this.timerInterval = window.setInterval(() => {\n const elapsed = Math.floor((Date.now() - this.recordingStartTime) / 1000);\n this.recordingDuration.set(elapsed);\n }, 1000);\n } catch (error) {\n console.error('Failed to start recording:', error);\n }\n }\n\n stopRecording(): void {\n if (this.mediaRecorder && this.isRecording()) {\n this.mediaRecorder.stop();\n this.isRecording.set(false);\n this.clearTimer();\n this.composerService.hideComponent();\n }\n }\n\n cancelRecording(): void {\n if (this.mediaRecorder && this.isRecording()) {\n this.cancelled = true;\n this.mediaRecorder.stop();\n this.isRecording.set(false);\n this.clearTimer();\n this.audioChunks = [];\n this.recordingCancelled.emit();\n this.composerService.hideComponent();\n }\n }\n\n cancel(): void {\n if (this.isRecording()) {\n this.cancelRecording();\n } else {\n this.composerService.hideComponent();\n }\n }\n\n //#endregion\n\n //#region ---- Utility Methods ----\n\n private clearTimer(): void {\n if (this.timerInterval) {\n clearInterval(this.timerInterval);\n this.timerInterval = undefined;\n }\n }\n\n private waitForRecordingBlob(): Promise<Blob | null> {\n if (!this.mediaRecorder || !this.isRecording()) {\n return Promise.resolve(null);\n }\n\n return new Promise((resolve) => {\n this.pendingBlobResolve = resolve;\n this.suppressVoiceMessageSend = true;\n if (this.mediaRecorder!.state === 'recording') {\n this.mediaRecorder!.requestData();\n }\n this.mediaRecorder!.stop();\n this.isRecording.set(false);\n this.clearTimer();\n });\n }\n\n private extractAssistIdFromConversation(conversation: AXConversation): string | undefined {\n const raw = conversation.metadata?.['assistId'];\n if (typeof raw === 'string' && raw.trim()) {\n return raw.trim();\n }\n\n for (const participant of conversation.participants ?? []) {\n const participantAssistId = participant.metadata?.['assistId'];\n if (typeof participantAssistId === 'string' && participantAssistId.trim()) {\n return participantAssistId.trim();\n }\n }\n\n return undefined;\n }\n\n private async resolveAssistIdForTranscription(): Promise<string> {\n if (!this.aiManager) {\n throw new Error('AI manager service is not available.');\n }\n\n const conversationAssistId = this.extractAssistIdFromConversation(this.conversation());\n const assist = await this.aiManager.getAssistForChat(conversationAssistId);\n const assistId = assist.id?.trim();\n if (!assistId) {\n throw new Error('No AI assist is configured for speech transcription.');\n }\n\n return assistId;\n }\n\n private buildTranscriptCorrectionPrompt(\n rawText: string,\n platformRuntimeContext: AXPAiPlatformRuntimeContext,\n ): string {\n const localeRaw = platformRuntimeContext['locale'];\n const locale =\n typeof localeRaw === 'string' && localeRaw.trim()\n ? localeRaw.trim()\n : 'the UI locale from platform context';\n return [\n 'Correct obvious misrecognized words and minor lexical or spelling errors in the transcript below.',\n `Keep the language aligned with UI locale (${locale}) and preserve the speaker's meaning.`,\n 'Return ONLY the corrected plain text — no markdown, labels, quotes, or commentary.',\n '',\n rawText,\n ].join('\\n');\n }\n\n private localeToTranscriptionLanguage(locale: string | undefined): string | undefined {\n const trimmed = locale?.trim();\n if (!trimmed) {\n return undefined;\n }\n const primary = trimmed.split('-')[0]?.toLowerCase();\n return primary || undefined;\n }\n\n private async correctTranscriptText(\n assistId: string,\n rawText: string,\n platformRuntimeContext: AXPAiPlatformRuntimeContext,\n ): Promise<string> {\n const result = await this.commandService.execute(AIMANAGEMENT_STRUCTURED_TEXT_COMPLETION_COMMAND_KEY, {\n assistId,\n messages: [axpAiChatTextMessage('user', this.buildTranscriptCorrectionPrompt(rawText, platformRuntimeContext))],\n maxTokens: 2048,\n temperature: 0.2,\n });\n\n if (result?.success && typeof result.data?.text === 'string' && result.data.text.trim()) {\n return result.data.text.trim();\n }\n\n return rawText;\n }\n\n private async persistVoiceRecordingForAi(\n audioBlob: Blob,\n conversationId: string,\n ): Promise<{ fileId: string; mimeType: string; name: string }> {\n const mimeType = audioBlob.type?.trim() || 'audio/webm';\n const fileName = `voice-${Date.now()}.webm`;\n const file = new File([audioBlob], fileName, { type: mimeType });\n const refId = conversationId.trim() || globalThis.crypto.randomUUID();\n const { fileId } = await persistAiChatAttachmentImage(this.fileStorage, file, refId);\n return { fileId, mimeType, name: fileName };\n }\n\n private async transcribeVoiceBlob(audioBlob: Blob): Promise<string> {\n const aiManager = this.aiManager;\n if (!aiManager) {\n throw new Error('AI manager service is not available.');\n }\n\n const assistId = await this.resolveAssistIdForTranscription();\n const chatTransport = (await aiManager.getAssistPrimaryChatTransport(assistId)) ?? 'openai';\n const platformRuntimeContext = await this.runtimeContextBuilder.build();\n const conversationId = this.conversation().id;\n const attachment = await this.persistVoiceRecordingForAi(audioBlob, conversationId);\n const localeForSpeech = platformRuntimeContext['locale'];\n const language = this.localeToTranscriptionLanguage(\n typeof localeForSpeech === 'string' ? localeForSpeech : undefined,\n );\n\n this.chatToolRunContext.setContext({\n assistId,\n chatTransport,\n agentId: AXM_SPEECH_TO_TEXT_AGENT_ID,\n });\n\n try {\n const result = await this.commandService.execute(AIMANAGEMENT_CHAT_TRANSCRIBE_SPEECH_COMMAND_KEY, {\n fileId: attachment.fileId,\n ...(language ? { language } : {}),\n });\n\n if (result == null || !result.success || typeof result.data?.text !== 'string' || !result.data.text.trim()) {\n const detail =\n result != null && typeof result.message?.text === 'string' && result.message.text.trim()\n ? result.message.text\n : 'Speech transcription returned no text.';\n throw new Error(detail);\n }\n\n const rawText = result.data.text.trim();\n // Demisco speech-to-text is final; do not call agent chat (`/core/agent/chat/`, needs agent_uuid).\n if (chatTransport === 'demis') {\n return rawText;\n }\n\n return this.correctTranscriptText(assistId, rawText, platformRuntimeContext);\n } finally {\n this.chatToolRunContext.setContext(null);\n }\n }\n\n private async sendVoiceMessage(audioBlob: Blob, conversation: AXConversation): Promise<void> {\n try {\n const audioFile = new File([audioBlob], `voice-${Date.now()}.webm`, { type: 'audio/webm' });\n\n await this.conversationService.sendMessage(\n {\n conversationId: conversation.id,\n type: 'voice',\n payload: {\n type: 'voice',\n url: '',\n duration: this.recordingDuration(),\n },\n },\n {\n media: {\n source: audioFile,\n fileName: audioFile.name,\n mimeType: audioFile.type,\n },\n },\n );\n } catch (error) {\n console.error('Failed to send voice message:', error);\n }\n }\n\n private stopAndCleanup(): void {\n this.clearTimer();\n if (this.mediaRecorder?.state === 'recording') {\n this.cancelled = true;\n this.mediaRecorder.stop();\n }\n this.activeStream?.getTracks().forEach((track) => track.stop());\n this.activeStream = undefined;\n }\n\n //#endregion\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport type { AXComposerAction } from '@acorex/components/conversation2';\nimport { AXMChatVoiceRecorderComponent } from './chat-voice-recorder.component';\n\n//#endregion\n\n//#region ---- Action ----\n\nexport const AXM_CHAT_COMPOSER_VOICE_RECORDING_ACTION: AXComposerAction = {\n id: 'voice-recording',\n label: '@acorex:chat.voice',\n icon: 'fa-light fa-microphone',\n position: 'right',\n priority: 30,\n component: AXMChatVoiceRecorderComponent,\n toggleable: true,\n visible: (context) => {\n return !context.draftText?.trim() && !context.isEditing;\n },\n tooltip: '@acorex:chat.tooltips.record-voice-message',\n};\n\n//#endregion\n","import {\n AXConversation,\n AXInfoBarService,\n axConversationIndexedDbStorage,\n conversationSharedStorage,\n} from '@acorex/components/conversation2';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport type { AXPAiEffectiveAssistRow } from '@acorex/modules/ai-management';\nimport { AXPAiAssistChatModelCatalogService, RootConfig } from '@acorex/modules/ai-management';\nimport { AXPCommonSettings, AXPSettingsService } from '@acorex/platform/common';\nimport { AXPEntityService } from '@acorex/platform/layout/entity';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, effect, inject, input, signal } from '@angular/core';\n\nimport { axmConversationHasAiChat } from '../utils/chat-ai-target.util';\n\n@Component({\n selector: 'axm-chat-info-bar-assist-model-action',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CommonModule, AXTranslationModule],\n template: `\n @if (isAssistConversation() && debugModeEnabled()) {\n <div\n class=\"axm-chat-assist-model-action ax-text-sm\"\n [class.ax-text-danger]=\"error()\"\n [class.ax-text-default/80]=\"!error()\"\n [attr.aria-label]=\"ariaLabel()\"\n >\n @if (error()) {\n <span>{{ '@ai-management:chat.model-unavailable' | translate | async }}</span>\n } @else if (resolvedModelTitle()) {\n <span>{{ resolvedModelTitle() }}</span>\n }\n </div>\n }\n `,\n styles: [\n `\n :host {\n display: block;\n width: 100%;\n }\n\n .axm-chat-assist-model-action {\n width: min(100%, 24rem);\n }\n `,\n ],\n})\nexport class AXMChatInfoBarAssistModelActionComponent {\n //#region ---- Inputs ----\n\n readonly conversation = input.required<AXConversation>();\n readonly service = input<AXInfoBarService | undefined>(undefined);\n\n //#endregion\n\n //#region ---- Services & Dependencies ----\n\n private readonly modelCatalog = inject(AXPAiAssistChatModelCatalogService);\n private readonly entityService = inject(AXPEntityService);\n private readonly settingsService = inject(AXPSettingsService);\n readonly debugModeEnabled = signal<boolean>(false);\n private readonly assistData = this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.assist.name)\n .data<string, AXPAiEffectiveAssistRow, AXPAiEffectiveAssistRow, AXPAiEffectiveAssistRow, AXPAiEffectiveAssistRow>();\n\n //#endregion\n\n //#region ---- State ----\n\n readonly error = signal(false);\n readonly resolvedModelTitle = signal<string | undefined>(undefined);\n readonly isAssistConversation = signal(false);\n\n readonly ariaLabel = computed(() => this.resolvedModelTitle() ?? '');\n\n private currentConversationId: string | null = null;\n\n private readonly loadDebugMode = effect(() => {\n void this.syncDebugMode();\n });\n\n private async syncDebugMode(): Promise<void> {\n try {\n const debugMode = await this.settingsService.get<boolean>(AXPCommonSettings.DebugMode);\n this.debugModeEnabled.set(!!debugMode);\n } catch {\n this.debugModeEnabled.set(false);\n }\n }\n\n //#endregion\n\n //#region ---- Effects ----\n\n private readonly loadOnConversationChange = effect(() => {\n const conversation = this.conversation();\n void this.syncModels(conversation);\n });\n\n //#endregion\n\n //#region ---- Utilities ----\n\n private async syncModels(conversation: AXConversation | null): Promise<void> {\n if (!conversation) {\n this.reset();\n return;\n }\n\n if (!axmConversationHasAiChat(conversation)) {\n this.reset();\n return;\n }\n\n const assistId = this.getAssistId(conversation);\n if (!assistId) {\n this.reset();\n return;\n }\n\n if (conversation.id === this.currentConversationId) {\n return;\n }\n\n this.currentConversationId = conversation.id;\n this.isAssistConversation.set(true);\n this.error.set(false);\n\n try {\n const assist = await this.assistData.byKey(assistId);\n const modelEntityId = assist?.modelId?.trim();\n\n if (!modelEntityId) {\n this.error.set(true);\n this.resolvedModelTitle.set(undefined);\n return;\n }\n\n this.persistModelToMetadata(conversation.id, modelEntityId);\n\n const rows = await this.modelCatalog.listModels({ assistId });\n const title = rows.find((r) => r.id === modelEntityId)?.title?.trim();\n this.resolvedModelTitle.set(title ?? modelEntityId);\n } catch {\n this.error.set(true);\n this.resolvedModelTitle.set(undefined);\n }\n }\n\n /** Writes modelEntityId into conversation metadata (in-memory store + IndexedDB). */\n private persistModelToMetadata(conversationId: string, modelEntityId: string): void {\n const stored = conversationSharedStorage.conversations.get(conversationId);\n if (stored) {\n stored.metadata = { ...(stored.metadata ?? {}), modelEntityId };\n conversationSharedStorage.conversations.set(conversationId, stored);\n void axConversationIndexedDbStorage.putConversation(stored);\n }\n }\n\n private reset(): void {\n this.currentConversationId = null;\n this.isAssistConversation.set(false);\n this.error.set(false);\n this.resolvedModelTitle.set(undefined);\n }\n\n private getAssistId(conversation: AXConversation): string | null {\n const raw = conversation.metadata?.['assistId'];\n if (typeof raw === 'string' && raw.trim()) {\n return raw.trim();\n }\n\n for (const participant of conversation.participants ?? []) {\n const participantAssistId = participant.metadata?.['assistId'];\n if (typeof participantAssistId === 'string' && participantAssistId.trim()) {\n return participantAssistId.trim();\n }\n }\n return null;\n }\n\n //#endregion\n}\n","import type { AXConversation, AXInfoBarAction } from '@acorex/components/conversation2';\nimport { axmConversationHasAiChat } from '../utils/chat-ai-target.util';\nimport { AXMChatInfoBarAssistModelActionComponent } from './chat-info-bar-assist-model-action.component';\n\n/** True when the conversation is an assist chat. */\nfunction conversationHasAssistContext(conversation: AXConversation): boolean {\n if (axmConversationHasAiChat(conversation)) {\n return true;\n }\n for (const participant of conversation.participants ?? []) {\n if (typeof participant.id === 'string' && participant.id.startsWith('assist-')) {\n return true;\n }\n }\n return false;\n}\n\nexport const AXM_CHAT_INFO_BAR_ASSIST_MODEL_ACTION: AXInfoBarAction = {\n id: 'assist-model',\n label: '@conversation:support.model',\n icon: 'fa-light fa-sparkles',\n location: 'inline',\n fullWidthComponent: false,\n priority: 210,\n toggleable: true,\n component: AXMChatInfoBarAssistModelActionComponent,\n visible: (context) => conversationHasAssistContext(context.conversation),\n};\n","//#region ---- Imports ----\n\nimport { AXPopupService } from '@acorex/components/popup';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport {\n axpAiParseSupervisorAgentToolName,\n type AXPAiDelegatedAgentTranscriptEntry,\n} from '@acorex/modules/ai-management';\nimport type { AXMAssistDelegatedAgentDetailPopupData } from '../message-renderers/assist-delegated-agent-detail-popup.component';\n\n//#endregion\n\n//#region ---- Types ----\n\nexport interface AXMOpenAssistDelegatedAgentDetailOptions {\n callId: string;\n toolName: string;\n delegatedTranscriptsByCallId: Record<string, AXPAiDelegatedAgentTranscriptEntry>;\n resolvedAgentLabel?: string;\n resolveCatalogTitle?: (agentCatalogId: string) => string | undefined;\n agentTitleById?: Record<string, string>;\n translationService: AXTranslationService;\n popupService: AXPopupService;\n}\n\n//#endregion\n\n//#region ---- Dialog ----\n\n/**\n * Opens a read-only specialist sub-run transcript for one delegated {@code agent:*} tool call.\n * Renders {@link AXPAiChatMessage} lines (role + responses[]) in conversation-owned UI.\n */\nexport async function axmOpenAssistDelegatedAgentDetailDialog(\n options: AXMOpenAssistDelegatedAgentDetailOptions,\n): Promise<void> {\n const callId = options.callId?.trim() ?? '';\n if (!callId) {\n return;\n }\n\n const entry = options.delegatedTranscriptsByCallId[callId];\n const catalogId = axpAiParseSupervisorAgentToolName(options.toolName);\n const catalogTitle =\n catalogId != null ? options.resolveCatalogTitle?.(catalogId)?.trim() : undefined;\n const titleBase =\n options.resolvedAgentLabel?.trim() ||\n entry?.agentName?.trim() ||\n catalogTitle ||\n options.toolName.trim() ||\n callId;\n\n const [titleSuffix, missingHint] = await Promise.all([\n options.translationService.translateAsync(\n '@conversation:chat.assist-renderer.delegated-agent.dialog-title-suffix',\n ),\n options.translationService.translateAsync(\n '@conversation:chat.assist-renderer.delegated-agent.transcript-missing',\n ),\n ]);\n\n const comp = (await import('../message-renderers/assist-delegated-agent-detail-popup.component'))\n .AXMAssistDelegatedAgentDetailPopupComponent;\n\n const data: AXMAssistDelegatedAgentDetailPopupData = {\n delegationCallId: callId,\n messages: entry?.messages ?? [],\n runInput: entry?.runInput,\n agentName: entry?.agentName?.trim() || titleBase,\n emptyHint: entry?.messages?.length ? undefined : missingHint,\n agentTitleById: options.agentTitleById ?? (catalogId && catalogTitle ? { [catalogId]: catalogTitle } : {}),\n };\n\n await options.popupService.open(comp, {\n title: `${titleBase} — ${titleSuffix ?? 'Full Specialist Run'}`,\n size: 'lg',\n data,\n });\n}\n\n//#endregion\n","/**\n * Detects strong RTL scripts (Arabic / Persian / Hebrew and related blocks) in a string\n * so each assist transcript segment can set `dir` independently of the app locale.\n */\nconst ASSIST_SEGMENT_STRONG_RTL =\n /[\\u0591-\\u08FF\\uFB1D-\\uFDFF\\uFE70-\\uFEFC]/u;\n\n/**\n * Returns `rtl` when the segment contains any character from RTL scripts (e.g. Persian/Farsi),\n * otherwise `ltr`. Empty or whitespace-only strings are `ltr`.\n */\nexport function axmAssistSegmentDirection(text: string | null | undefined): 'rtl' | 'ltr' {\n if (text == null) return 'ltr';\n const s = String(text);\n if (!s.trim()) return 'ltr';\n return ASSIST_SEGMENT_STRONG_RTL.test(s) ? 'rtl' : 'ltr';\n}\n","//#region ---- Imports ----\n\nimport type { AXMessage } from '@acorex/components/conversation2';\nimport { AXVoiceRendererComponent } from '@acorex/components/conversation2';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPFileStorageService } from '@acorex/platform/common';\nimport { AsyncPipe } from '@angular/common';\n\nimport { ChangeDetectionStrategy, Component, computed, effect, inject, input, signal } from '@angular/core';\n\nimport { axmSyntheticEmbedMessage } from '../utils/assist-bot-transcript.util';\n\n//#endregion\n\n//#region ---- Component ----\n\n/**\n * Renders an assist {@code fileId} via {@link AXVoiceRendererComponent} using {@code mediaId} so\n * {@link AXUploaderService} resolves a playback URL (conversation2 rejects persisted {@code data:} URLs).\n */\n@Component({\n selector: 'axm-assist-bot-audio-line',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [AXVoiceRendererComponent, AXTranslationModule, AsyncPipe],\n template: `\n @if (syntheticMessage(); as sm) {\n <ax-conversation-voice-renderer [message]=\"sm\" />\n } @else if (errorText()) {\n <p class=\"axm-assist-bot-audio-line__err\">{{ (errorText() ?? '' | translate | async) ?? '' }}</p>\n }\n `,\n styles: [\n `\n :host {\n display: block;\n max-inline-size: min(100%, 28rem);\n }\n\n .axm-assist-bot-audio-line__err {\n margin: 0;\n font-size: 0.8125rem;\n color: rgb(var(--ax-sys-color-danger-600, 220 38 38));\n }\n `,\n ],\n})\nexport class AXMAssistBotAudioLineComponent {\n //#region ---- Inputs ----\n\n readonly parentMessage = input.required<AXMessage>();\n readonly fileId = input.required<string>();\n readonly mimeType = input<string>('audio/mpeg');\n\n //#endregion\n\n //#region ---- Services ----\n\n private readonly fileStorage = inject(AXPFileStorageService);\n\n //#endregion\n\n //#region ---- State ----\n\n private readonly fileReady = signal(false);\n private readonly resolvedMimeType = signal<string>('audio/mpeg');\n readonly errorText = signal<string | null>(null);\n private loadGeneration = 0;\n\n //#endregion\n\n //#region ---- Synthetic message ----\n\n readonly syntheticMessage = computed(() => {\n const fileId = this.fileId()?.trim() ?? '';\n const parent = this.parentMessage();\n if (!this.fileReady() || !fileId) {\n return null;\n }\n return axmSyntheticEmbedMessage(parent, `voice-${fileId}`, {\n type: 'voice',\n payload: {\n type: 'voice',\n url: '',\n mediaId: fileId,\n duration: 0,\n },\n });\n });\n\n //#endregion\n\n //#region ---- Lifecycle ----\n\n constructor() {\n effect(() => {\n const id = this.fileId()?.trim() ?? '';\n const gen = ++this.loadGeneration;\n this.fileReady.set(false);\n this.errorText.set(null);\n if (!id) {\n return;\n }\n\n void this.fileStorage\n .getInfo(id)\n .then((info) => {\n if (gen !== this.loadGeneration) {\n return;\n }\n const storedMime = info.mimeType?.trim();\n const fallbackMime = this.mimeType().trim();\n const mimeType =\n storedMime && storedMime.startsWith('audio/')\n ? storedMime\n : fallbackMime.startsWith('audio/')\n ? fallbackMime\n : 'audio/mpeg';\n this.resolvedMimeType.set(mimeType);\n this.fileReady.set(true);\n })\n .catch(() => {\n if (gen !== this.loadGeneration) {\n return;\n }\n this.errorText.set('@conversation:chat.assist-renderer.errors.audio-load');\n });\n });\n }\n\n //#endregion\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport type { AXMessage } from '@acorex/components/conversation2';\nimport { AXImageRendererComponent } from '@acorex/components/conversation2';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPFileStorageService } from '@acorex/platform/common';\nimport { AsyncPipe } from '@angular/common';\n\nimport { ChangeDetectionStrategy, Component, computed, effect, inject, input, signal } from '@angular/core';\n\nimport { axmSyntheticEmbedMessage } from '../utils/assist-bot-transcript.util';\n\n//#endregion\n\n//#region ---- Component ----\n\n/**\n * Renders an assist {@code fileId} via {@link AXImageRendererComponent} using {@code mediaId} so\n * {@link AXUploaderService} resolves a display URL (conversation2 rejects persisted {@code data:} URLs).\n */\n@Component({\n selector: 'axm-assist-bot-image-line',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [AXImageRendererComponent, AXTranslationModule, AsyncPipe],\n template: `\n @if (syntheticMessage(); as sm) {\n <ax-conversation-image-renderer [message]=\"sm\" />\n } @else if (errorText()) {\n <p class=\"axm-assist-bot-image-line__err\">{{ (errorText() ?? '' | translate | async) ?? '' }}</p>\n }\n `,\n styles: [\n `\n :host {\n display: block;\n max-inline-size: min(100%, 40rem);\n }\n\n .axm-assist-bot-image-line__err {\n margin: 0;\n font-size: 0.8125rem;\n color: rgb(var(--ax-sys-color-danger-600, 220 38 38));\n }\n `,\n ],\n})\nexport class AXMAssistBotImageLineComponent {\n //#region ---- Inputs ----\n\n readonly parentMessage = input.required<AXMessage>();\n readonly fileId = input.required<string>();\n readonly mimeType = input<string>('application/octet-stream');\n readonly name = input<string | undefined>(undefined);\n\n //#endregion\n\n //#region ---- Services ----\n\n private readonly fileStorage = inject(AXPFileStorageService);\n\n //#endregion\n\n //#region ---- State ----\n\n private readonly fileReady = signal(false);\n private readonly resolvedMimeType = signal<string>('image/png');\n readonly errorText = signal<string | null>(null);\n private loadGeneration = 0;\n\n //#endregion\n\n //#region ---- Synthetic message ----\n\n readonly syntheticMessage = computed(() => {\n const fileId = this.fileId()?.trim() ?? '';\n const parent = this.parentMessage();\n if (!this.fileReady() || !fileId) {\n return null;\n }\n return axmSyntheticEmbedMessage(parent, `img-${fileId}`, {\n type: 'image',\n payload: {\n type: 'image',\n images: [\n {\n mediaId: fileId,\n url: '',\n thumbnailUrl: '',\n width: 400,\n height: 300,\n mimeType: this.resolvedMimeType(),\n },\n ],\n caption: undefined,\n },\n });\n });\n\n //#endregion\n\n //#region ---- Lifecycle ----\n\n constructor() {\n effect(() => {\n const id = this.fileId()?.trim() ?? '';\n const gen = ++this.loadGeneration;\n this.fileReady.set(false);\n this.errorText.set(null);\n if (!id) {\n return;\n }\n\n void this.fileStorage\n .getInfo(id)\n .then((info) => {\n if (gen !== this.loadGeneration) {\n return;\n }\n const storedMime = info.mimeType?.trim();\n const fallbackMime = this.mimeType().trim();\n const mimeType =\n storedMime && storedMime.startsWith('image/')\n ? storedMime\n : fallbackMime.startsWith('image/')\n ? fallbackMime\n : 'image/png';\n this.resolvedMimeType.set(mimeType);\n this.fileReady.set(true);\n })\n .catch(() => {\n if (gen !== this.loadGeneration) {\n return;\n }\n this.errorText.set('@conversation:chat.assist-renderer.errors.image-load');\n });\n });\n }\n\n //#endregion\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { AI_CHAT_GENERATED_IMAGE_REF_TYPE, AI_CHAT_GENERATED_SPEECH_REF_TYPE } from '@acorex/modules/ai-management';\nimport { AXPFileStorageService } from '@acorex/platform/common';\nimport type { AXMessage } from '@acorex/components/conversation2';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AsyncPipe } from '@angular/common';\n\nimport { ChangeDetectionStrategy, Component, effect, inject, input, signal } from '@angular/core';\n\nimport { AXMAssistBotAudioLineComponent } from './assist-bot-audio-line.component';\nimport { AXMAssistBotImageLineComponent } from './assist-bot-image-line.component';\n\n//#endregion\n\n//#region ---- Types ----\n\ntype AssistBotFileMediaKind = 'image' | 'audio' | 'unknown';\n\n//#endregion\n\n//#region ---- Component ----\n\n/** Routes assist {@code fileId} segments to image or voice renderers based on stored file metadata. */\n@Component({\n selector: 'axm-assist-bot-file-line',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [AXMAssistBotAudioLineComponent, AXMAssistBotImageLineComponent, AXTranslationModule, AsyncPipe],\n template: `\n @switch (mediaKind()) {\n @case ('image') {\n <axm-assist-bot-image-line [parentMessage]=\"parentMessage()\" [fileId]=\"fileId()\" />\n }\n @case ('audio') {\n <axm-assist-bot-audio-line [parentMessage]=\"parentMessage()\" [fileId]=\"fileId()\" />\n }\n @default {\n @if (errorText()) {\n <p class=\"axm-assist-bot-file-line__err\">{{ (errorText() ?? '' | translate | async) ?? '' }}</p>\n }\n }\n }\n `,\n styles: [\n `\n :host {\n display: block;\n }\n\n .axm-assist-bot-file-line__err {\n margin: 0;\n font-size: 0.8125rem;\n color: rgb(var(--ax-sys-color-danger-600, 220 38 38));\n }\n `,\n ],\n})\nexport class AXMAssistBotFileLineComponent {\n //#region ---- Inputs ----\n\n readonly parentMessage = input.required<AXMessage>();\n readonly fileId = input.required<string>();\n\n //#endregion\n\n //#region ---- Services ----\n\n private readonly fileStorage = inject(AXPFileStorageService);\n\n //#endregion\n\n //#region ---- State ----\n\n readonly mediaKind = signal<AssistBotFileMediaKind>('unknown');\n readonly errorText = signal<string | null>(null);\n private loadGeneration = 0;\n\n //#endregion\n\n //#region ---- Lifecycle ----\n\n constructor() {\n effect(() => {\n const id = this.fileId()?.trim() ?? '';\n const gen = ++this.loadGeneration;\n this.mediaKind.set('unknown');\n this.errorText.set(null);\n if (!id) {\n return;\n }\n\n void this.fileStorage\n .getInfo(id)\n .then((info) => {\n if (gen !== this.loadGeneration) {\n return;\n }\n this.mediaKind.set(resolveAssistBotFileMediaKind(info.mimeType, info.category, info.refType));\n if (this.mediaKind() === 'unknown') {\n this.errorText.set('@conversation:chat.assist-renderer.errors.file-load');\n }\n })\n .catch(() => {\n if (gen !== this.loadGeneration) {\n return;\n }\n this.errorText.set('@conversation:chat.assist-renderer.errors.file-load');\n });\n });\n }\n\n //#endregion\n}\n\n//#region ---- Helpers ----\n\nfunction resolveAssistBotFileMediaKind(\n mimeType: string | undefined,\n category: string | undefined,\n refType: string | undefined,\n): AssistBotFileMediaKind {\n const mime = mimeType?.trim().toLowerCase() ?? '';\n if (mime.startsWith('audio/') || category === 'ai-generated-speech' || refType === AI_CHAT_GENERATED_SPEECH_REF_TYPE) {\n return 'audio';\n }\n if (mime.startsWith('image/') || category === 'ai-generated-image' || refType === AI_CHAT_GENERATED_IMAGE_REF_TYPE) {\n return 'image';\n }\n return 'unknown';\n}\n\n//#endregion\n","import { AXButtonModule } from '@acorex/components/button';\nimport type {\n AXMessage as AXConversationMessage,\n AXMessage,\n AXMessagePayload,\n AXMessageRendererComponent,\n AXMessageRendererContentState,\n AXMessageRendererState,\n} from '@acorex/components/conversation2';\nimport { axConversationIndexedDbStorage, conversationSharedStorage } from '@acorex/components/conversation2';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPContextChangeEvent } from '@acorex/platform/core';\nimport { AXPLayoutRendererComponent } from '@acorex/platform/layout/builder';\nimport { AXPWidgetCoreModule, AXPWidgetNode } from '@acorex/platform/layout/widget-core';\nimport { AsyncPipe } from '@angular/common';\n\nimport { ChangeDetectionStrategy, Component, computed, input, output, signal } from '@angular/core';\n\nimport { axmAssistWidgetNodeFromUnknown } from '../utils/assist-bot-transcript.util';\n\ninterface AXMUserFormPayload {\n type: 'user-form';\n node: AXPWidgetNode;\n value?: Record<string, unknown>;\n}\n\ninterface AXMUserFormMessageMetadata {\n submitted?: boolean;\n context?: Record<string, unknown>;\n}\n\n@Component({\n selector: 'axm-chat-user-form-renderer',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [AXPWidgetCoreModule, AXButtonModule, AXTranslationModule, AXPLayoutRendererComponent, AsyncPipe],\n template: `\n <div class=\"axm-user-form-renderer\" [class.axm-user-form-renderer--assist-embed]=\"isAssistEmbed()\">\n @if (isAssistEmbed()) {\n <axp-layout-renderer [layout]=\"resolvedNode()\" mode=\"view\" [context]=\"{}\" />\n } @else if (!isSubmitted()) {\n <axp-widgets-container\n class=\"ax-flex ax-flex-col ax-gap-3\"\n [context]=\"formContext()\"\n (onContextChanged)=\"onContextChanged($event)\"\n >\n <ng-container\n axp-widget-renderer\n [node]=\"resolvedNode()\"\n [mode]=\"resolvedNode().mode ?? 'edit'\"\n ></ng-container>\n </axp-widgets-container>\n\n <div class=\"ax-flex ax-justify-end ax-mt-2\">\n <ax-button [text]=\"('@conversation:chat.user-form.actions.submit' | translate | async) ?? ''\" (onClick)=\"submit()\"></ax-button>\n </div>\n } @else {\n <div\n class=\"ax-mt-1 ax-rounded-xl ax-border ax-border-success-500/25 ax-bg-success-500/10 ax-px-3 ax-py-2 ax-shadow-sm\"\n >\n <div class=\"ax-text-[0.7rem] ax-font-bold ax-uppercase ax-tracking-wide ax-text-success-700\">\n {{ '@conversation:chat.user-form.states.submitted' | translate | async }}\n </div>\n <div class=\"ax-mt-1 ax-text-sm ax-font-medium ax-text-on-surface\">\n {{ (submittedMessage() | translate | async) ?? '' }}\n </div>\n </div>\n }\n </div>\n `,\n styles: [\n `\n :host {\n display: block;\n inline-size: min(100%, 28rem);\n }\n\n :host:has(.axm-user-form-renderer--assist-embed) {\n inline-size: 100%;\n max-inline-size: none;\n }\n `,\n ],\n})\nexport class AXMNodeMessageRendererComponent implements AXMessageRendererComponent {\n //#region ---- Inputs & Outputs ----\n\n readonly message = input.required<AXMessage>();\n readonly node = input<AXPWidgetNode | undefined>(undefined);\n readonly formSubmitted = output<Record<string, unknown>>();\n\n //#endregion\n\n //#region ---- State ----\n\n private readonly contentState = signal<AXMessageRendererContentState>('none');\n readonly formContext = signal<Record<string, unknown>>({});\n readonly isSubmitted = computed(() => this.readSubmittedState(this.message()));\n readonly isAssistEmbed = computed(() => this.readAssistEmbedFlag(this.message().metadata));\n\n readonly rendererState = computed<AXMessageRendererState>(() => ({\n deliveryStatus: this.message().status,\n contentState: this.contentState(),\n }));\n\n readonly resolvedNode = computed<AXPWidgetNode>(() => {\n const message = this.message();\n const payload = message.payload as unknown;\n\n if (this.isUserFormPayload(payload)) {\n return payload.node;\n }\n\n // Only treat `{ type: 'node', content }` when the chat message itself is a `node` message.\n if (message.type === 'node' && this.isNodeContentPayload(payload)) {\n const parsed = axmAssistWidgetNodeFromUnknown(payload.content);\n if (parsed) {\n return parsed;\n }\n if (this.readAssistEmbedFlag(message.metadata)) {\n // Assist embed: do not fall back to a synthetic name field (avoids a duplicate/spurious form).\n return {\n type: 'flex-layout',\n name: 'assist-node-empty',\n visible: false,\n children: [],\n };\n }\n }\n\n return this.node() ?? this.createFallbackNode();\n });\n\n readonly submittedMessage = computed(() => {\n return '@conversation:chat.user-form.states.submitted-success';\n });\n\n //#endregion\n\n //#region ---- Handlers ----\n\n onContextChanged(event: AXPContextChangeEvent): void {\n this.formContext.set((event.data ?? {}) as Record<string, unknown>);\n }\n\n submit(): void {\n const context = this.formContext();\n this.formSubmitted.emit(context);\n void this.persistSubmittedState(context);\n }\n\n //#endregion\n\n //#region ---- Utilities ----\n\n private isUserFormPayload(payload: unknown): payload is AXMUserFormPayload {\n return (\n typeof payload === 'object' &&\n payload != null &&\n 'type' in payload &&\n payload.type === 'user-form' &&\n 'node' in payload\n );\n }\n\n private isNodeContentPayload(payload: unknown): payload is { type: 'node'; content: unknown } {\n return (\n typeof payload === 'object' &&\n payload != null &&\n 'type' in payload &&\n (payload as { type: unknown }).type === 'node' &&\n 'content' in payload\n );\n }\n\n private readAssistEmbedFlag(metadata: unknown): boolean {\n if (typeof metadata !== 'object' || metadata == null) {\n return false;\n }\n return (metadata as Record<string, unknown>)['assistEmbed'] === true;\n }\n\n private createFallbackNode(): AXPWidgetNode {\n return {\n type: 'text-editor',\n path: 'form.name',\n name: 'name',\n options: { placeholder: '@conversation:chat.user-form.fields.name.placeholder' },\n };\n }\n\n private readSubmittedState(message: AXMessage): boolean {\n const metadata = this.readUserFormMetadata(message.metadata);\n return metadata?.submitted === true;\n }\n\n private readPersistedContext(message: AXMessage): Record<string, unknown> | null {\n const metadata = this.readUserFormMetadata(message.metadata);\n if (!metadata?.context || typeof metadata.context !== 'object') {\n return null;\n }\n return metadata.context;\n }\n\n private readUserFormMetadata(metadata: unknown): AXMUserFormMessageMetadata | null {\n if (typeof metadata !== 'object' || metadata == null) {\n return null;\n }\n const candidate = (metadata as Record<string, unknown>)['userForm'];\n if (typeof candidate !== 'object' || candidate == null) {\n return null;\n }\n return candidate as AXMUserFormMessageMetadata;\n }\n\n private async persistSubmittedState(context: Record<string, unknown>): Promise<void> {\n const message = this.message();\n const payload = this.message().payload as unknown;\n const payloadWithValue = this.isUserFormPayload(payload)\n ? ({ ...payload, value: context } as unknown as AXMessagePayload)\n : (this.message().payload as AXMessagePayload);\n\n const updatedMessage: AXConversationMessage = {\n ...message,\n payload: payloadWithValue,\n metadata: {\n ...(message.metadata ?? {}),\n userForm: {\n submitted: true,\n context,\n },\n },\n };\n\n conversationSharedStorage.messages.set(updatedMessage.id, updatedMessage);\n await axConversationIndexedDbStorage.putMessage(updatedMessage);\n conversationSharedStorage.messageUpdates$.next(updatedMessage);\n }\n\n //#endregion\n}\n","//#region ---- Imports ----\n\nimport { AXAccordionCdkModule } from '@acorex/cdk/accordion';\nimport { AXAlertModule } from '@acorex/components/alert';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXCodeEditorDefaultLanguage, AXCodeEditorModule } from '@acorex/components/code-editor';\nimport type {\n AXMessage,\n AXMessagePayload,\n AXMessageRendererComponent,\n AXMessageRendererContentState,\n AXMessageRendererState,\n} from '@acorex/components/conversation2';\nimport {\n axConversationIndexedDbStorage,\n AXTextRendererComponent,\n conversationSharedStorage,\n} from '@acorex/components/conversation2';\nimport { AXPopupService } from '@acorex/components/popup';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXTranslationModule, AXTranslationService } from '@acorex/core/translation';\nimport type {\n AXPAiChatFollowUpItem,\n AXPAiChatMessage,\n AXPAiChatResponse,\n AXPAiDelegatedAgentResultSegment,\n AXPAiDelegatedAgentTranscriptEntry,\n AXPAiEngineUsageTotals,\n} from '@acorex/modules/ai-management';\nimport {\n RootConfig as AiManagementRootConfig,\n axpAiChatMessageGetText,\n axpAiChatMessageIsDelegatedReflectionExcluded,\n axpAiChatToolOrAgentResultBodyJson,\n axpAiDelegatedAgentOutcomeResponsesPlainText,\n axpAiDelegatedAgentPromptPreview,\n axpAiDelegatedAgentResultSegments,\n axpAiParseSupervisorAgentToolName,\n} from '@acorex/modules/ai-management';\nimport { AXPCommonSettings, AXPSettingsService } from '@acorex/platform/common';\nimport { AXPMarkdownTemplateDirective, AXPMarkdownViewerComponent } from '@acorex/platform/layout/components';\nimport { AXPEntityService } from '@acorex/platform/layout/entity';\n\nimport { AsyncPipe, DecimalPipe, NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n inject,\n input,\n type Signal,\n signal,\n ViewEncapsulation,\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\nimport { AXPMultiLanguageString, AXPPlatformScope } from '@acorex/platform/core';\nimport { AXMAssistSuggestionChipsComponent } from '../shared/assist-suggestion-chips.component';\nimport {\n axmAssistUserFacingPayloadLine,\n axmAssistUserVisibleItemsForLine,\n type AxmAssistUserVisibleItem,\n axmAssistWidgetNodeFromUnknown,\n axmParseAssistTranscriptLinePayload,\n axmParseAssistTranscriptTextEnvelope,\n axmSanitizeAssistUserAnswerText,\n axmReadAssistAiTranscript,\n axmReadAssistAiTranscriptRaw,\n axmSyntheticEmbedMessage,\n} from '../utils/assist-bot-transcript.util';\nimport { axmOpenAssistDelegatedAgentDetailDialog } from '../utils/assist-delegated-agent-detail.dialog';\nimport { axmAssistSegmentDirection } from '../utils/assist-segment-direction.util';\nimport {\n axmIsAssistRetryableStatus,\n axmIsAssistStreamingStatus,\n axmReadAssistResponseError,\n axmReadAssistResponseStatus,\n type AxmAssistResponseStatus,\n} from '../utils/assist-response-status.util';\nimport { AXMChatMessageApi } from '../services/chat-conversation-apis.abstract';\nimport { AXMAssistBotFileLineComponent } from './assist-bot-file-line.component';\nimport { AXMNodeMessageRendererComponent } from './node-message-renderer.component';\n\n//#endregion\n\n//#region ---- Types ----\n\n/** Shape of a single tool call stored in message metadata (legacy). */\ninterface AssistToolCallEntry {\n id: string;\n name: string;\n arguments: unknown;\n output?: string;\n state: 'running' | 'done';\n /** Streamed specialist text during a delegated agent sub-run (conversation placeholder metadata). */\n nestedStreamText?: string;\n nestedTools?: AssistToolCallEntry[];\n}\n\n/** User toggles for assist accordions (thinking, agent, tool); persisted on the message. */\ninterface AssistMessageUiMetadata {\n openByKey?: Record<string, boolean>;\n}\n\n/** Parsed thinking + body from assistant content (legacy). */\ntype ParsedAssistContent = ReturnType<typeof axmParseAssistTranscriptTextEnvelope>;\n\ninterface AXMAiAgentLookupRow {\n id: string;\n title?: string;\n name?: string;\n}\n\n/** Debug strip: persisted assist run metadata (see mock {@code assistRun*} keys). */\ninterface AssistRunDebugView {\n usage?: AXPAiEngineUsageTotals;\n durationMs?: number;\n modelEntityId?: string;\n modelTitle?: string;\n}\n\n//#endregion\n\n//#region ---- Component ----\n\n@Component({\n selector: 'axm-assist-message-renderer',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [\n AXTextRendererComponent,\n AXMNodeMessageRendererComponent,\n AXMAssistBotFileLineComponent,\n AXMAssistSuggestionChipsComponent,\n AXAccordionCdkModule,\n AXAlertModule,\n AXButtonModule,\n AXDecoratorModule,\n AXCodeEditorModule,\n AXPMarkdownViewerComponent,\n AXPMarkdownTemplateDirective,\n FormsModule,\n AXTranslationModule,\n AsyncPipe,\n DecimalPipe,\n NgTemplateOutlet,\n ],\n templateUrl: './assist-message-renderer.component.html',\n styleUrls: ['./assist-message-renderer.component.scss'],\n})\nexport class AXMAssistMessageRendererComponent implements AXMessageRendererComponent {\n //#region ---- Inputs ----\n\n readonly message = input.required<AXMessage>();\n\n //#endregion\n\n //#region ---- Template helpers (exposed for template) ----\n\n protected readonly axpAiChatMessageGetText = axpAiChatMessageGetText;\n\n protected readonly axmAssistWidgetNodeFromUnknown = axmAssistWidgetNodeFromUnknown;\n\n protected readonly parseAssistLineText = axmParseAssistTranscriptTextEnvelope;\n\n protected readonly segmentDir = axmAssistSegmentDirection;\n\n /**\n * Assistant text shown in the transcript: hides delegated sub-run reflection lines from the main markdown stream\n * unless debug mode is on.\n */\n protected assistTranscriptAssistantTextBodyForDisplay(line: AXPAiChatMessage, body: string): string {\n if (this.assistHideTranscriptAnswerSegments()) {\n return '';\n }\n if (axpAiChatMessageIsDelegatedReflectionExcluded(line) && !this.showDebugUi()) {\n return '';\n }\n return body ?? '';\n }\n\n //#endregion\n\n //#region ---- State ----\n\n private readonly entityService = inject(AXPEntityService);\n private readonly settingsService = inject(AXPSettingsService);\n private readonly translation = inject(AXTranslationService);\n private readonly popupService = inject(AXPopupService);\n private readonly messageApi = inject(AXMChatMessageApi);\n private readonly agentData = this.entityService\n .withEntity(AiManagementRootConfig.module.name, AiManagementRootConfig.entities.agent.name)\n .data<string, AXMAiAgentLookupRow, AXMAiAgentLookupRow, AXMAiAgentLookupRow, AXMAiAgentLookupRow>();\n\n private readonly loadingAgentIds = new Set<string>();\n\n private readonly agentTitleById = signal<Record<string, string>>({});\n\n private readonly contentState = signal<AXMessageRendererContentState>('ready');\n readonly isRetrying = signal(false);\n readonly debugModeEnabled = signal<boolean>(false);\n\n /** False until tenant debug setting has been read; avoids flashing debug UI before resolve. */\n readonly debugModeResolved = signal<boolean>(false);\n\n /** Debug transcript/tools UI — only after settings resolve and debug is on. */\n readonly showDebugUi = computed(() => this.debugModeResolved() && this.debugModeEnabled());\n\n /** User-facing UI (no tools/thinking accordions); used while unresolved and when debug is off. */\n readonly showNonDebugUi = computed(() => !this.showDebugUi());\n\n /** Persisted assist run metadata (mock writes {@code assistRun*} keys on finalize). */\n readonly assistRunDebug = computed((): AssistRunDebugView | null => {\n const meta = this.message().metadata as Record<string, unknown> | undefined;\n if (!meta) {\n return null;\n }\n const usage = meta['assistRunUsageTotals'] as AXPAiEngineUsageTotals | undefined;\n const durationRaw = meta['assistRunDurationMs'];\n const modelEntityId = meta['assistRunModelEntityId'];\n const modelTitle = meta['assistRunModelTitle'];\n const durationMs = typeof durationRaw === 'number' && Number.isFinite(durationRaw) ? durationRaw : undefined;\n const id = typeof modelEntityId === 'string' && modelEntityId.trim() ? modelEntityId.trim() : undefined;\n const title = typeof modelTitle === 'string' && modelTitle.trim() ? modelTitle.trim() : undefined;\n if (!usage && durationMs == null && !id && !title) {\n return null;\n }\n return { usage, durationMs, modelEntityId: id, modelTitle: title };\n });\n\n readonly assistResponseStatus = computed((): AxmAssistResponseStatus =>\n axmReadAssistResponseStatus(this.message().metadata),\n );\n\n readonly showRetryScreen = computed(\n () => axmIsAssistRetryableStatus(this.assistResponseStatus()) && !this.isRetrying(),\n );\n\n readonly assistResponseError = computed(() => axmReadAssistResponseError(this.message().metadata));\n\n readonly assistRetryTitleKey = computed(() =>\n this.assistResponseStatus() === 'failed'\n ? '@conversation:chat.assist-renderer.retry.failed.title'\n : '@conversation:chat.assist-renderer.retry.incomplete.title',\n );\n\n readonly assistRetryDescriptionKey = computed(() =>\n this.assistResponseStatus() === 'failed'\n ? '@conversation:chat.assist-renderer.retry.failed.description'\n : '@conversation:chat.assist-renderer.retry.incomplete.description',\n );\n\n readonly assistRetryAlertIcon = computed(() =>\n this.assistResponseStatus() === 'failed'\n ? 'fa-light fa-circle-exclamation'\n : 'fa-light fa-circle-pause',\n );\n\n readonly rendererState: Signal<AXMessageRendererState> = computed(() => ({\n deliveryStatus: this.message().status,\n contentState: this.showRetryScreen() ? 'error' : this.contentState(),\n }));\n\n //#endregion\n\n //#region ---- Transcript UI ----\n\n readonly transcriptLines = computed((): AXPAiChatMessage[] => {\n return axmReadAssistAiTranscript(this.message().metadata) ?? [];\n });\n\n readonly delegatedTranscriptsByCallId = computed((): Record<string, AXPAiDelegatedAgentTranscriptEntry> => {\n const meta = this.message().metadata;\n if (typeof meta !== 'object' || meta == null) {\n return {};\n }\n const delegated = (meta as Record<string, unknown>)['assistRunDelegatedTranscriptsByCallId'];\n if (typeof delegated !== 'object' || delegated == null || Array.isArray(delegated)) {\n return {};\n }\n return delegated as Record<string, AXPAiDelegatedAgentTranscriptEntry>;\n });\n\n readonly toolResultByCallId = computed(() => {\n const map = new Map<string, AXPAiChatMessage>();\n for (const line of this.transcriptLines()) {\n if (line.role !== 'tool') {\n continue;\n }\n for (const seg of line.responses) {\n if (seg.type === 'tool_result' || seg.type === 'agent_result') {\n const callId = seg.callId;\n if (typeof callId === 'string' && callId.trim()) {\n map.set(callId.trim(), line);\n }\n }\n }\n }\n return map;\n });\n\n readonly useTranscriptUi = computed(() => this.transcriptLines().length > 0);\n\n /** Last transcript line for the non-debug bubble ({@link axmParseAssistTranscriptLinePayload} or engine transcript). */\n readonly assistPayloadLine = computed((): AXPAiChatMessage | null => {\n const fromPayload = axmParseAssistTranscriptLinePayload(this.message().payload);\n if (fromPayload) {\n return fromPayload;\n }\n const raw = axmReadAssistAiTranscriptRaw(this.message().metadata);\n if (raw.length > 0) {\n return axmAssistUserFacingPayloadLine(raw);\n }\n return null;\n });\n\n /**\n * Debug transcript hides user-facing answer segments when the unified payload bubble is shown.\n */\n readonly assistHideTranscriptAnswerSegments = computed(\n () => !this.isStreaming() && this.assistPayloadLine() != null,\n );\n\n /**\n * Transcript lines that render at least one visible segment. Skips e.g. {@code tool} role lines\n * whose results are merged into assistant tool UI (would otherwise produce empty {@code axm-assist-bot__line}).\n */\n readonly visibleTranscriptLines = computed((): { line: AXPAiChatMessage; lineIndex: number }[] => {\n const lines = this.transcriptLines();\n const out: { line: AXPAiChatMessage; lineIndex: number }[] = [];\n for (let lineIndex = 0; lineIndex < lines.length; lineIndex++) {\n const line = lines[lineIndex];\n if (this.transcriptLineHasVisibleUi(line)) {\n out.push({ line, lineIndex });\n }\n }\n return out;\n });\n\n private transcriptLineHasVisibleUi(line: AXPAiChatMessage): boolean {\n const debug = this.showDebugUi();\n for (const seg of line.responses) {\n if (this.transcriptSegmentHasVisibleUi(line, seg, debug)) {\n return true;\n }\n }\n return false;\n }\n\n private transcriptSegmentHasVisibleUi(line: AXPAiChatMessage, seg: AXPAiChatResponse, debug: boolean): boolean {\n if (line.role === 'user' && seg.type === 'file') {\n return true;\n }\n if (line.role === 'user' && seg.type === 'text') {\n return true;\n }\n if (line.role === 'assistant' && seg.type === 'think' && debug) {\n return true;\n }\n if (line.role === 'assistant' && seg.type === 'text') {\n const parsed = this.parseAssistLineText(seg.content);\n if (debug && parsed.thinking) {\n return true;\n }\n if (debug && this.assistHideTranscriptAnswerSegments()) {\n return false;\n }\n return parsed.body.trim().length > 0;\n }\n if (\n line.role === 'assistant' &&\n (seg.type === 'agent' || seg.type === 'tool') &&\n this.isDelegatedAgentCommand(seg.content.command)\n ) {\n if (debug) {\n return true;\n }\n const res = this.toolResultForCallId(seg.callId);\n const outcomeSegs = this.delegatedAgentOutcomeSegmentsForCall(res);\n const hasRenderableOutcome = outcomeSegs.some((s) => {\n if (s.type === 'file' || s.type === 'node') {\n return true;\n }\n if (s.type === 'text' || s.type === 'think') {\n return s.content.trim().length > 0;\n }\n if (s.type === 'followUp') {\n return s.content.length > 0;\n }\n return false;\n });\n if (hasRenderableOutcome) {\n return true;\n }\n return this.delegatedAgentAnswerForCall(res).trim().length > 0;\n }\n if (line.role === 'assistant' && seg.type === 'tool' && debug) {\n return true;\n }\n if (line.role === 'assistant' && seg.type === 'node') {\n if (debug && this.assistHideTranscriptAnswerSegments()) {\n return false;\n }\n return axmAssistWidgetNodeFromUnknown(seg.content) != null;\n }\n if (line.role === 'assistant' && seg.type === 'file') {\n if (debug && this.assistHideTranscriptAnswerSegments()) {\n return false;\n }\n return true;\n }\n if (line.role === 'assistant' && seg.type === 'followUp') {\n if (debug) {\n return false;\n }\n return seg.content.length > 0;\n }\n if (line.role === 'tool' && (seg.type === 'tool_result' || seg.type === 'agent_result')) {\n return false;\n }\n if (line.role === 'system' && seg.type === 'text' && debug) {\n return true;\n }\n return debug || line.role !== 'assistant';\n }\n\n private readonly syncAgentTitles = effect(() => {\n const ids = new Set<string>();\n\n for (const line of this.transcriptLines()) {\n if (line.role !== 'assistant') {\n continue;\n }\n for (const seg of line.responses) {\n if (seg.type !== 'tool' && seg.type !== 'agent') {\n continue;\n }\n const agentId = this.extractAgentIdFromCommand(seg.content.command);\n if (agentId) {\n ids.add(agentId);\n }\n }\n }\n\n for (const tc of this.toolCalls()) {\n const agentId = this.extractAgentIdFromCommand(tc.name);\n if (agentId) {\n ids.add(agentId);\n }\n }\n\n for (const id of ids) {\n this.ensureAgentTitleLoaded(id);\n }\n });\n\n private readonly loadDebugMode = effect(() => {\n void this.syncDebugMode();\n });\n\n syntheticTextMessage(lineIndex: number, segIndex: number, text: string): AXMessage {\n return axmSyntheticEmbedMessage(this.message(), `ut-${lineIndex}-${segIndex}`, {\n type: 'text',\n payload: { type: 'text', text },\n });\n }\n\n syntheticNodeEmbedMessage(lineIndex: number, segIndex: number, content: unknown): AXMessage {\n return axmSyntheticEmbedMessage(this.message(), `node-${lineIndex}-${segIndex}`, {\n type: 'node',\n payload: { type: 'node', content } as unknown as AXMessagePayload,\n });\n }\n\n syntheticAppendNodeMessage(itemIndex: number, content: unknown): AXMessage {\n return axmSyntheticEmbedMessage(this.message(), `append-node-${itemIndex}`, {\n type: 'node',\n payload: { type: 'node', content } as unknown as AXMessagePayload,\n });\n }\n\n protected markdownCodeLanguage(segment: unknown): AXCodeEditorDefaultLanguage {\n if (this.isMarkdownCodeSegment(segment) && segment.language.trim()) {\n return segment.language as AXCodeEditorDefaultLanguage;\n }\n return 'javascript';\n }\n\n protected markdownCodeValue(segment: unknown): string {\n if (this.isMarkdownCodeSegment(segment)) {\n return segment.code;\n }\n return '';\n }\n\n resolveToolDisplayTitle(command: string): string {\n const agentId = this.extractAgentIdFromCommand(command);\n if (!agentId) {\n return command?.trim() || 'Tool';\n }\n const title = this.agentTitleById()[agentId];\n if (title) {\n return title;\n }\n return agentId;\n }\n\n resolveToolBadge(command: string, fallback: string): string {\n return this.extractAgentIdFromCommand(command) ? '@conversation:chat.assist-renderer.badges.agent' : fallback;\n }\n\n toolResultForCallId(callId: string | undefined): AXPAiChatMessage | null {\n if (!callId || !callId.trim()) {\n return null;\n }\n return this.toolResultByCallId().get(callId.trim()) ?? null;\n }\n\n protected toolCallEntryFor(callId: string | undefined): AssistToolCallEntry | undefined {\n if (!callId?.trim()) {\n return undefined;\n }\n return this.toolCalls().find((t) => t.id === callId.trim());\n }\n\n protected delegatedPromptPreview(argumentsValue: unknown): string {\n return axpAiDelegatedAgentPromptPreview(argumentsValue);\n }\n\n protected isDelegatedAgentCommand(command: string): boolean {\n return axpAiParseSupervisorAgentToolName(command) != null;\n }\n\n protected delegatedAgentOutcomeSegmentsForCall(res: AXPAiChatMessage | null): AXPAiDelegatedAgentResultSegment[] {\n if (!res) {\n return [];\n }\n const raw = axpAiChatToolOrAgentResultBodyJson(res);\n if (!raw.trim()) {\n return [];\n }\n try {\n const o = JSON.parse(raw) as Record<string, unknown>;\n if (o['success'] === false) {\n return [];\n }\n return axpAiDelegatedAgentResultSegments(\n o as { success?: boolean; data?: { responses?: AXPAiDelegatedAgentResultSegment[] } },\n );\n } catch {\n return [];\n }\n }\n\n protected delegatedAnswerFromToolResult(resultLine: AXPAiChatMessage | null): string {\n if (!resultLine) {\n return '';\n }\n const raw = axpAiChatToolOrAgentResultBodyJson(resultLine);\n try {\n const o = JSON.parse(raw) as Record<string, unknown>;\n if (o['success'] === false) {\n const err = o['error'];\n return typeof err === 'string' && err.trim() ? err.trim() : 'Request failed.';\n }\n const segs = axpAiDelegatedAgentResultSegments(\n o as { success?: boolean; data?: { responses?: AXPAiDelegatedAgentResultSegment[] } },\n );\n return axpAiDelegatedAgentOutcomeResponsesPlainText(segs);\n } catch {\n return raw.trim();\n }\n }\n\n private isMarkdownCodeSegment(segment: unknown): segment is { type: 'code'; language: string; code: string } {\n if (!segment || typeof segment !== 'object') {\n return false;\n }\n\n const candidate = segment as { type?: unknown; language?: unknown; code?: unknown };\n return candidate.type === 'code' && typeof candidate.language === 'string' && typeof candidate.code === 'string';\n }\n\n /**\n * Parses the same agent JSON body shape as {@link delegatedAnswerFromToolResult} from raw tool `output` stored in metadata.\n */\n protected delegatedAnswerFromToolOutputString(output: string | undefined): string {\n if (!output?.trim()) {\n return '';\n }\n const raw = output.trim();\n try {\n const o = JSON.parse(raw) as Record<string, unknown>;\n if (o['success'] === false) {\n const err = o['error'];\n return typeof err === 'string' && err.trim() ? err.trim() : 'Request failed.';\n }\n const segs = axpAiDelegatedAgentResultSegments(\n o as { success?: boolean; data?: { responses?: AXPAiDelegatedAgentResultSegment[] } },\n );\n return axpAiDelegatedAgentOutcomeResponsesPlainText(segs);\n } catch {\n return raw;\n }\n }\n\n protected delegatedAgentAnswerForCall(res: AXPAiChatMessage | null): string {\n return this.delegatedAnswerFromToolResult(res);\n }\n\n protected delegatedAgentLabelForCall(callId: string | undefined): string | undefined {\n const resultLine = this.toolResultForCallId(callId);\n if (!resultLine) {\n return undefined;\n }\n return this.parseDelegatedAgentToolResult(axpAiChatToolOrAgentResultBodyJson(resultLine)).agentName;\n }\n\n protected async openDelegatedAgentTranscriptDialog(\n callId: string | undefined,\n toolName: string,\n resolvedAgentLabel?: string,\n ): Promise<void> {\n await axmOpenAssistDelegatedAgentDetailDialog({\n callId: callId ?? '',\n toolName,\n delegatedTranscriptsByCallId: this.delegatedTranscriptsByCallId(),\n resolvedAgentLabel: resolvedAgentLabel ?? this.delegatedAgentLabelForCall(callId),\n resolveCatalogTitle: (agentId) => this.agentTitleById()[agentId],\n agentTitleById: this.agentTitleById(),\n popupService: this.popupService,\n translationService: this.translation,\n });\n }\n\n private parseDelegatedAgentToolResult(content: string): { agentName?: string } {\n const trimmed = content?.trim() ?? '';\n if (!trimmed) {\n return {};\n }\n try {\n const o = JSON.parse(trimmed) as Record<string, unknown>;\n if (o['success'] === false || o['success'] !== true) {\n return {};\n }\n const data = o['data'];\n if (data == null || typeof data !== 'object' || Array.isArray(data)) {\n return {};\n }\n const agentName = (data as Record<string, unknown>)['agentName'];\n return typeof agentName === 'string' && agentName.trim() ? { agentName: agentName.trim() } : {};\n } catch {\n return {};\n }\n }\n\n /**\n * Human-readable wall time for the assist API run (mock stores {@code assistRunDurationMs}).\n */\n formatAssistRunDuration(ms: number): string {\n if (!Number.isFinite(ms) || ms < 0) {\n return '—';\n }\n if (ms < 1000) {\n return `${Math.round(ms)} ms`;\n }\n return `${(ms / 1000).toFixed(1)} s`;\n }\n\n formatFallbackSegment(seg: AXPAiChatMessage['responses'][number]): string {\n try {\n return JSON.stringify(seg, null, 2);\n } catch {\n return String(seg);\n }\n }\n\n formatToolResultBody(line: AXPAiChatMessage): string {\n return this.formatJson(axpAiChatToolOrAgentResultBodyJson(line));\n }\n\n protected assistThinkKey(lineIndex: number, segIndex: number): string {\n return `think:${lineIndex}-${segIndex}`;\n }\n\n protected assistThinkStreamKey(): string {\n return 'think:stream';\n }\n\n protected assistThinkFinalKey(): string {\n return 'think:final';\n }\n\n protected assistRunMetaKey(): string {\n return 'run-meta';\n }\n\n protected assistAgentKey(callId: string | undefined): string {\n return `agent:${(callId ?? '').trim() || 'unknown'}`;\n }\n\n protected assistToolKey(callId: string | undefined): string {\n return `tool:${(callId ?? '').trim() || 'unknown'}`;\n }\n\n protected assistLegacyToolAccordionKey(tc: AssistToolCallEntry): string {\n return this.isDelegatedAgentCommand(tc.name) ? this.assistAgentKey(tc.id) : this.assistToolKey(tc.id);\n }\n\n protected onAssistLegacyAccordionClick(event: unknown, tc: AssistToolCallEntry): void {\n this.onAssistAccordionClick(event, this.assistLegacyToolAccordionKey(tc));\n }\n\n /**\n * Accordion is collapsed by default; open only when the user has persisted `open: true` for this key.\n */\n protected assistSectionIsCollapsed(key: string): boolean {\n return !this.isAssistSectionOpen(key);\n }\n\n private isAssistSectionOpen(key: string): boolean {\n const m = this.message().metadata;\n if (typeof m !== 'object' || m == null) {\n return false;\n }\n const assistUi = (m as Record<string, unknown>)['assistUi'] as AssistMessageUiMetadata | undefined;\n return assistUi?.openByKey?.[key] === true;\n }\n\n protected onAssistAccordionClick(event: unknown, key: string): void {\n const c = (event as { component?: { isCollapsed: () => boolean } } | null)?.component;\n if (!c) {\n return;\n }\n const open = !c.isCollapsed();\n void this.persistAssistUiOpenKey(key, open);\n }\n\n private async persistAssistUiOpenKey(key: string, open: boolean): Promise<void> {\n const message = this.message();\n const prev = (message.metadata ?? {}) as Record<string, unknown>;\n const prevUi = (prev['assistUi'] as AssistMessageUiMetadata | undefined) ?? {};\n const openByKey: Record<string, boolean> = { ...(prevUi.openByKey ?? {}) };\n if (open) {\n openByKey[key] = true;\n } else {\n delete openByKey[key];\n }\n const nextMeta: Record<string, unknown> = { ...prev, assistUi: { ...prevUi, openByKey } };\n const updated: AXMessage = { ...message, metadata: nextMeta };\n conversationSharedStorage.messages.set(updated.id, updated);\n await axConversationIndexedDbStorage.putMessage(updated);\n conversationSharedStorage.messageUpdates$.next(updated);\n }\n\n //#endregion\n\n //#region ---- Legacy computed ----\n\n readonly isStreaming = computed(() => axmIsAssistStreamingStatus(this.assistResponseStatus()));\n\n /** Phase label for the streaming activity strip (translation key suffix via {@link assistActivityMessageKey}). */\n readonly assistStreamingPhase = computed((): 'starting' | 'planning' | 'using-tools' | 'responding' => {\n if (!this.isStreaming()) {\n return 'starting';\n }\n const tools = this.toolCalls();\n if (tools.some((t) => t.state === 'running')) {\n return 'using-tools';\n }\n const think = this.streamThink().trim();\n const text = this.streamText().trim();\n if (think && !text) {\n return 'planning';\n }\n if (text) {\n return 'responding';\n }\n return 'starting';\n });\n\n readonly assistActivityMessageKey = computed(() => {\n const phase = this.assistStreamingPhase();\n return `@conversation:chat.assist-renderer.activity.${phase}`;\n });\n\n readonly streamThink = computed(() => {\n const v = this.readMeta('streamDraftThink');\n return typeof v === 'string' ? v : '';\n });\n\n readonly streamText = computed(() => {\n const d = this.readMeta('streamDraftText');\n return typeof d === 'string' ? d : '';\n });\n\n /** Answer markdown while streaming (draft) or after finalize (payload); shared by debug and non-debug. */\n readonly assistAnswerMarkdown = computed(() => {\n const live = axmSanitizeAssistUserAnswerText(this.streamText());\n if (this.isStreaming()) {\n return live;\n }\n return axmSanitizeAssistUserAnswerText(this.parsed().body.trim() || live);\n });\n\n /** Non-text payload segments shown below the answer after finalize. */\n readonly assistPayloadAppendItems = computed((): AxmAssistUserVisibleItem[] => {\n if (this.isStreaming()) {\n return [];\n }\n const line = this.assistPayloadLine();\n if (!line) {\n return [];\n }\n return axmAssistUserVisibleItemsForLine(line)\n .filter((item) => item.kind !== 'text')\n .sort((a, b) => {\n if (a.kind === 'followUp') {\n return 1;\n }\n if (b.kind === 'followUp') {\n return -1;\n }\n return 0;\n });\n });\n\n /**\n * Non-debug stream panel: skip the empty wrapper when there is no answer, append content, or live stream.\n */\n readonly showNonDebugStreamPanel = computed(\n () =>\n this.isStreaming() ||\n this.assistAnswerMarkdown().trim().length > 0 ||\n this.assistPayloadAppendItems().length > 0,\n );\n\n readonly toolCalls = computed<AssistToolCallEntry[]>(() => {\n const raw = this.readMeta('toolCalls');\n return Array.isArray(raw) ? raw : [];\n });\n\n readonly parsed = computed<ParsedAssistContent>(() => {\n if (this.isStreaming()) {\n return { thinking: null, body: '' };\n }\n const line = this.assistPayloadLine();\n if (line) {\n const textParts = axmAssistUserVisibleItemsForLine(line)\n .filter((i): i is { kind: 'text'; content: string } => i.kind === 'text')\n .map((i) => axmParseAssistTranscriptTextEnvelope(i.content).body.trim())\n .filter((t) => t.length > 0);\n return { thinking: null, body: axmSanitizeAssistUserAnswerText(textParts.join('\\n\\n')) };\n }\n return { thinking: null, body: '' };\n });\n\n //#endregion\n\n //#region ---- Retry ----\n\n protected async onRetryAssistResponse(): Promise<void> {\n if (this.isRetrying() || !this.showRetryScreen()) {\n return;\n }\n\n const message = this.message();\n this.isRetrying.set(true);\n try {\n await this.messageApi.retryAssistResponse(message.conversationId, message.id);\n } catch (error) {\n console.error('Failed to retry assist response:', error);\n } finally {\n this.isRetrying.set(false);\n }\n }\n\n //#endregion\n\n //#region ---- Formatters ----\n\n formatArgs(args: unknown): string {\n if (args == null) return '';\n if (typeof args === 'string') return this.tryPrettyJson(args);\n try {\n return JSON.stringify(args, null, 2);\n } catch {\n return String(args);\n }\n }\n\n formatJson(raw: string): string {\n return this.tryPrettyJson(raw);\n }\n\n //#endregion\n\n //#region ---- Utilities ----\n\n private readMeta(key: string): unknown {\n const meta = this.message().metadata;\n if (typeof meta !== 'object' || meta == null) return undefined;\n return (meta as Record<string, unknown>)[key];\n }\n\n private tryPrettyJson(raw: string): string {\n const trimmed = raw.trim();\n if (!trimmed) return '';\n try {\n return JSON.stringify(JSON.parse(trimmed), null, 2);\n } catch {\n return raw;\n }\n }\n\n private extractAgentIdFromCommand(command: unknown): string | null {\n if (typeof command !== 'string') {\n return null;\n }\n const [prefix, id] = command.split(':');\n if (prefix?.trim().toLowerCase() !== 'agent') {\n return null;\n }\n const resolvedId = id?.trim();\n return resolvedId ? resolvedId : null;\n }\n\n private ensureAgentTitleLoaded(agentId: string): void {\n if (!agentId || this.agentTitleById()[agentId] || this.loadingAgentIds.has(agentId)) {\n return;\n }\n this.loadingAgentIds.add(agentId);\n void this.agentData\n .byKey(agentId)\n .then((agent) => {\n const title = (\n this.translation.resolve(agent?.title as AXPMultiLanguageString)?.trim() ||\n agent?.name?.trim() ||\n agent?.id ||\n agentId\n ).trim();\n this.agentTitleById.update((current) => ({ ...current, [agentId]: title }));\n })\n .catch(() => {\n this.agentTitleById.update((current) => ({ ...current, [agentId]: agentId }));\n })\n .finally(() => {\n this.loadingAgentIds.delete(agentId);\n });\n }\n\n private async syncDebugMode(): Promise<void> {\n try {\n const debugMode = await this.settingsService\n .scope(AXPPlatformScope.Tenant)\n .get<boolean>(AXPCommonSettings.DebugMode);\n this.debugModeEnabled.set(!!debugMode);\n } catch {\n this.debugModeEnabled.set(false);\n } finally {\n this.debugModeResolved.set(true);\n }\n }\n\n //#endregion\n}\n\n//#endregion\n","<div class=\"axm-assist-renderer\">\n @if (showDebugUi() && useTranscriptUi() && !isStreaming()) {\n <div\n class=\"axm-assist-bot\"\n role=\"region\"\n [attr.aria-label]=\"('@conversation:chat.assist-renderer.aria.assistant-response' | translate | async) ?? ''\"\n >\n @for (item of visibleTranscriptLines(); track item.lineIndex) {\n @let line = item.line;\n @let lineIndex = item.lineIndex;\n <div\n class=\"axm-assist-bot__line\"\n [class.axm-assist-bot__line--user]=\"line.role === 'user'\"\n [class.axm-assist-bot__line--tool-role]=\"line.role === 'tool'\"\n >\n @for (seg of line.responses; track segIndex; let segIndex = $index) {\n @if (line.role === 'user' && seg.type === 'file') {\n <axm-assist-bot-file-line [parentMessage]=\"message()\" [fileId]=\"seg.content.fileId\" />\n } @else if (line.role === 'user' && seg.type === 'text') {\n <div class=\"axm-assist-bot__segment\" [attr.dir]=\"segmentDir(seg.content)\">\n <ax-conversation-text-renderer [message]=\"syntheticTextMessage(lineIndex, segIndex, seg.content)\" />\n </div>\n } @else if (line.role === 'assistant' && seg.type === 'think' && showDebugUi()) {\n <div class=\"axm-assist-renderer__accordion-group\" axAccordionGroup [accordion]=\"false\">\n <div\n class=\"axm-assist-renderer__thinking-accordion axm-assist-renderer__collapse-shell !ax-mb-0\"\n axAccordionItem\n #thinkAcc=\"axAccordionItem\"\n [isCollapsed]=\"assistSectionIsCollapsed(assistThinkKey(lineIndex, segIndex))\"\n (onClick)=\"onAssistAccordionClick($event, assistThinkKey(lineIndex, segIndex))\"\n >\n <div\n class=\"axm-assist-renderer__accordion-header\"\n axAccordionItemHeader\n role=\"button\"\n [attr.aria-expanded]=\"!thinkAcc.isCollapsed()\"\n >\n <div class=\"axm-assist-renderer__accordion-header-main\">\n <span class=\"axm-assist-renderer__accordion-header-title\">\n <i\n class=\"fa-light fa-chevron-down axm-assist-renderer__thinking-chevron\"\n [class.axm-assist-renderer__thinking-chevron--expanded]=\"!thinkAcc.isCollapsed()\"\n aria-hidden=\"true\"\n ></i>\n <i class=\"fa-light fa-brain axm-assist-renderer__tool-title-icon\" aria-hidden=\"true\"></i>\n {{ '@conversation:chat.assist-renderer.sections.thinking' | translate | async }}\n </span>\n </div>\n </div>\n <div axAccordionItemContent>\n <div class=\"axm-assist-renderer__collapse-body\">\n <div\n class=\"axm-assist-renderer__thinking-body axm-assist-bot__segment\"\n [attr.dir]=\"segmentDir(seg.content)\"\n >\n {{ seg.content }}\n </div>\n </div>\n </div>\n </div>\n </div>\n } @else if (line.role === 'assistant' && seg.type === 'text') {\n @let parsedLine = parseAssistLineText(seg.content);\n @let displayBody = assistTranscriptAssistantTextBodyForDisplay(line, parsedLine.body);\n @if (showDebugUi() && parsedLine.thinking) {\n <div class=\"axm-assist-renderer__accordion-group\" axAccordionGroup [accordion]=\"false\">\n <div\n class=\"axm-assist-renderer__thinking-accordion axm-assist-renderer__collapse-shell !ax-mb-0\"\n axAccordionItem\n #thinkAcc=\"axAccordionItem\"\n [isCollapsed]=\"assistSectionIsCollapsed(assistThinkKey(lineIndex, segIndex))\"\n (onClick)=\"onAssistAccordionClick($event, assistThinkKey(lineIndex, segIndex))\"\n >\n <div\n class=\"axm-assist-renderer__accordion-header\"\n axAccordionItemHeader\n role=\"button\"\n [attr.aria-expanded]=\"!thinkAcc.isCollapsed()\"\n >\n <div class=\"axm-assist-renderer__accordion-header-main\">\n <span class=\"axm-assist-renderer__accordion-header-title\">\n <i\n class=\"fa-light fa-chevron-down axm-assist-renderer__thinking-chevron\"\n [class.axm-assist-renderer__thinking-chevron--expanded]=\"!thinkAcc.isCollapsed()\"\n aria-hidden=\"true\"\n ></i>\n <i class=\"fa-light fa-brain axm-assist-renderer__tool-title-icon\" aria-hidden=\"true\"></i>\n {{ '@conversation:chat.assist-renderer.sections.thinking' | translate | async }}\n </span>\n </div>\n </div>\n <div axAccordionItemContent>\n <div class=\"axm-assist-renderer__collapse-body\">\n <div\n class=\"axm-assist-renderer__thinking-body axm-assist-bot__segment\"\n [attr.dir]=\"segmentDir(parsedLine.thinking)\"\n >\n {{ parsedLine.thinking }}\n </div>\n </div>\n </div>\n </div>\n </div>\n }\n @if (displayBody.trim()) {\n <div class=\"axm-assist-bot__segment axm-assist-renderer__markdown\" [attr.dir]=\"segmentDir(displayBody)\">\n <axp-markdown-viewer [markdown]=\"displayBody\">\n <ng-template axpMarkdownTemplate=\"code\" let-segment>\n <div class=\"axm-assist-renderer__tool-editor-wrap\" style=\"direction: ltr\">\n <ax-code-editor\n [ngModel]=\"markdownCodeValue(segment)\"\n [readonly]=\"true\"\n [language]=\"markdownCodeLanguage(segment)\"\n [lineNumbers]=\"true\"\n class=\"axm-assist-renderer__tool-editor\"\n ></ax-code-editor>\n </div>\n </ng-template>\n </axp-markdown-viewer>\n </div>\n }\n } @else if (\n line.role === 'assistant' &&\n (seg.type === 'agent' || seg.type === 'tool') &&\n isDelegatedAgentCommand(seg.content.command)\n ) {\n @if (showDebugUi()) {\n <div class=\"axm-assist-renderer__accordion-group\" axAccordionGroup [accordion]=\"false\">\n <div\n class=\"axm-assist-renderer__tool-card axm-assist-renderer__collapse-shell !ax-mb-0\"\n axAccordionItem\n #agentDebugAcc=\"axAccordionItem\"\n [isCollapsed]=\"assistSectionIsCollapsed(assistAgentKey(seg.callId))\"\n (onClick)=\"onAssistAccordionClick($event, assistAgentKey(seg.callId))\"\n >\n <div class=\"axm-assist-renderer__accordion-header\" axAccordionItemHeader>\n <div class=\"axm-assist-renderer__accordion-header-main\">\n <span class=\"axm-assist-renderer__accordion-header-title\">\n <i\n class=\"fa-light fa-chevron-down axm-assist-renderer__thinking-chevron\"\n [class.axm-assist-renderer__thinking-chevron--expanded]=\"!agentDebugAcc.isCollapsed()\"\n aria-hidden=\"true\"\n ></i>\n <i class=\"fa-light fa-screwdriver-wrench axm-assist-renderer__tool-title-icon\"></i>\n {{ resolveToolDisplayTitle(seg.content.command) }}\n </span>\n </div>\n <div class=\"axm-assist-renderer__header-trailing\">\n <span class=\"axm-assist-renderer__badge axm-assist-renderer__badge--primary\">{{\n (resolveToolBadge(seg.content.command, '@conversation:chat.assist-renderer.badges.agent')\n | translate\n | async) ?? ''\n }}</span>\n </div>\n </div>\n <div axAccordionItemContent>\n <div class=\"axm-assist-renderer__collapse-body\">\n <div class=\"axm-assist-renderer__tool-body\">\n <div class=\"axm-assist-renderer__tool-section-label\">\n {{ '@conversation:chat.assist-renderer.sections.input' | translate | async }}\n </div>\n <div class=\"axm-assist-renderer__tool-editor-wrap\" style=\"direction: ltr\">\n <ax-code-editor\n [ngModel]=\"formatArgs(seg.content.arguments)\"\n [readonly]=\"true\"\n language=\"json\"\n [lineNumbers]=\"true\"\n class=\"axm-assist-renderer__tool-editor\"\n ></ax-code-editor>\n </div>\n @if (toolResultForCallId(seg.callId); as resultLine) {\n <div class=\"axm-assist-renderer__tool-section-label\">\n {{ '@conversation:chat.assist-renderer.sections.output' | translate | async }}\n </div>\n <div class=\"axm-assist-renderer__tool-editor-wrap\" style=\"direction: ltr\">\n <ax-code-editor\n [ngModel]=\"formatToolResultBody(resultLine)\"\n [readonly]=\"true\"\n language=\"json\"\n [lineNumbers]=\"true\"\n class=\"axm-assist-renderer__tool-editor\"\n ></ax-code-editor>\n </div>\n }\n </div>\n <div class=\"axm-assist-renderer__delegated-agent-detail-link\">\n <ax-button\n look=\"link\"\n color=\"primary\"\n class=\"ax-sm\"\n [text]=\"\n ('@conversation:chat.assist-renderer.delegated-agent.detail' | translate | async) ?? ''\n \"\n [attr.aria-label]=\"\n ('@conversation:chat.assist-renderer.delegated-agent.detail-aria' | translate | async) ??\n ''\n \"\n (onClick)=\"\n openDelegatedAgentTranscriptDialog(\n seg.callId,\n seg.content.command,\n delegatedAgentLabelForCall(seg.callId)\n )\n \"\n ></ax-button>\n </div>\n </div>\n </div>\n </div>\n </div>\n } @else {\n @let res = toolResultForCallId(seg.callId);\n @let outcomeSegs = delegatedAgentOutcomeSegmentsForCall(res);\n @if (outcomeSegs.length > 0) {\n @for (outSeg of outcomeSegs; track $index) {\n @switch (outSeg.type) {\n @case ('text') {\n @let parsedOut = parseAssistLineText(outSeg.content);\n @if (parsedOut.body.trim()) {\n <div\n class=\"axm-assist-bot__segment axm-assist-renderer__markdown\"\n [attr.dir]=\"segmentDir(parsedOut.body)\"\n >\n <axp-markdown-viewer [markdown]=\"parsedOut.body\">\n <ng-template axpMarkdownTemplate=\"code\" let-segment>\n <div class=\"axm-assist-renderer__tool-editor-wrap\" style=\"direction: ltr\">\n <ax-code-editor\n [ngModel]=\"markdownCodeValue(segment)\"\n [readonly]=\"true\"\n [language]=\"markdownCodeLanguage(segment)\"\n [lineNumbers]=\"true\"\n class=\"axm-assist-renderer__tool-editor\"\n ></ax-code-editor>\n </div>\n </ng-template>\n </axp-markdown-viewer>\n </div>\n }\n }\n @case ('think') {\n @if (showDebugUi()) {\n <div class=\"axm-assist-bot__segment\" [attr.dir]=\"segmentDir(outSeg.content)\">\n {{ outSeg.content }}\n </div>\n }\n }\n @case ('file') {\n <axm-assist-bot-file-line [parentMessage]=\"message()\" [fileId]=\"outSeg.content.fileId\" />\n }\n @case ('node') {\n @let assistNodeWidget = axmAssistWidgetNodeFromUnknown(outSeg.content);\n @if (assistNodeWidget) {\n <div class=\"axm-assist-bot__segment\" dir=\"auto\">\n <axm-chat-user-form-renderer\n [message]=\"syntheticNodeEmbedMessage(lineIndex, segIndex * 1000 + $index, outSeg.content)\"\n />\n </div>\n }\n }\n }\n }\n } @else if (delegatedAgentAnswerForCall(res).trim()) {\n @let agentFallbackText = delegatedAgentAnswerForCall(res);\n <div\n class=\"axm-assist-bot__segment axm-assist-renderer__markdown\"\n [attr.dir]=\"segmentDir(agentFallbackText)\"\n >\n <axp-markdown-viewer [markdown]=\"agentFallbackText\">\n <ng-template axpMarkdownTemplate=\"code\" let-segment>\n <div class=\"axm-assist-renderer__tool-editor-wrap\" style=\"direction: ltr\">\n <ax-code-editor\n [ngModel]=\"markdownCodeValue(segment)\"\n [readonly]=\"true\"\n [language]=\"markdownCodeLanguage(segment)\"\n [lineNumbers]=\"true\"\n class=\"axm-assist-renderer__tool-editor\"\n ></ax-code-editor>\n </div>\n </ng-template>\n </axp-markdown-viewer>\n </div>\n }\n <div class=\"axm-assist-renderer__delegated-agent-detail-link\">\n <ax-button\n look=\"link\"\n color=\"primary\"\n class=\"ax-sm\"\n [text]=\"('@conversation:chat.assist-renderer.delegated-agent.detail' | translate | async) ?? ''\"\n [attr.aria-label]=\"\n ('@conversation:chat.assist-renderer.delegated-agent.detail-aria' | translate | async) ?? ''\n \"\n (onClick)=\"\n openDelegatedAgentTranscriptDialog(\n seg.callId,\n seg.content.command,\n delegatedAgentLabelForCall(seg.callId)\n )\n \"\n ></ax-button>\n </div>\n }\n } @else if (line.role === 'assistant' && seg.type === 'tool' && showDebugUi()) {\n <div class=\"axm-assist-renderer__accordion-group\" axAccordionGroup [accordion]=\"false\">\n <div\n class=\"axm-assist-renderer__tool-card axm-assist-renderer__collapse-shell !ax-mb-0\"\n axAccordionItem\n #toolDebugAcc=\"axAccordionItem\"\n [isCollapsed]=\"assistSectionIsCollapsed(assistToolKey(seg.callId))\"\n (onClick)=\"onAssistAccordionClick($event, assistToolKey(seg.callId))\"\n >\n <div class=\"axm-assist-renderer__accordion-header\" axAccordionItemHeader>\n <div class=\"axm-assist-renderer__accordion-header-main\">\n <span class=\"axm-assist-renderer__accordion-header-title\">\n <i\n class=\"fa-light fa-chevron-down axm-assist-renderer__thinking-chevron\"\n [class.axm-assist-renderer__thinking-chevron--expanded]=\"!toolDebugAcc.isCollapsed()\"\n aria-hidden=\"true\"\n ></i>\n <i class=\"fa-light fa-screwdriver-wrench axm-assist-renderer__tool-title-icon\"></i>\n {{ resolveToolDisplayTitle(seg.content.command) }}\n </span>\n </div>\n <span class=\"axm-assist-renderer__badge axm-assist-renderer__badge--primary\">{{\n (resolveToolBadge(seg.content.command, '@conversation:chat.assist-renderer.badges.tool')\n | translate\n | async) ?? ''\n }}</span>\n </div>\n <div axAccordionItemContent>\n <div class=\"axm-assist-renderer__collapse-body\">\n <div class=\"axm-assist-renderer__tool-body\">\n <div class=\"axm-assist-renderer__tool-section-label\">\n {{ '@conversation:chat.assist-renderer.sections.input' | translate | async }}\n </div>\n <div class=\"axm-assist-renderer__tool-editor-wrap\" style=\"direction: ltr\">\n <ax-code-editor\n [ngModel]=\"formatArgs(seg.content.arguments)\"\n [readonly]=\"true\"\n language=\"json\"\n [lineNumbers]=\"true\"\n class=\"axm-assist-renderer__tool-editor\"\n ></ax-code-editor>\n </div>\n @if (toolResultForCallId(seg.callId); as resultLine) {\n <div class=\"axm-assist-renderer__tool-section-label\">\n {{ '@conversation:chat.assist-renderer.sections.output' | translate | async }}\n </div>\n <div class=\"axm-assist-renderer__tool-editor-wrap\" style=\"direction: ltr\">\n <ax-code-editor\n [ngModel]=\"formatToolResultBody(resultLine)\"\n [readonly]=\"true\"\n language=\"json\"\n [lineNumbers]=\"true\"\n class=\"axm-assist-renderer__tool-editor\"\n ></ax-code-editor>\n </div>\n }\n </div>\n </div>\n </div>\n </div>\n </div>\n } @else if (line.role === 'assistant' && seg.type === 'node') {\n @let assistNodeWidget = axmAssistWidgetNodeFromUnknown(seg.content);\n @if (assistNodeWidget) {\n <div class=\"axm-assist-bot__segment\" dir=\"auto\">\n <axm-chat-user-form-renderer\n [message]=\"syntheticNodeEmbedMessage(lineIndex, segIndex, seg.content)\"\n />\n </div>\n }\n } @else if (\n line.role === 'assistant' &&\n seg.type === 'file' &&\n !assistHideTranscriptAnswerSegments()\n ) {\n <axm-assist-bot-file-line [parentMessage]=\"message()\" [fileId]=\"seg.content.fileId\" />\n } @else if (line.role === 'tool' && (seg.type === 'tool_result' || seg.type === 'agent_result')) {\n <!-- merged into the corresponding tool/agent accordion -->\n } @else if (line.role === 'system' && seg.type === 'text' && showDebugUi()) {\n <div class=\"axm-assist-bot__segment\" [attr.dir]=\"segmentDir(seg.content)\">\n <ax-conversation-text-renderer [message]=\"syntheticTextMessage(lineIndex, segIndex, seg.content)\" />\n </div>\n } @else {\n @if (showDebugUi() || line.role !== 'assistant') {\n <div\n class=\"axm-assist-bot__fallback axm-assist-bot__segment\"\n [attr.dir]=\"segmentDir(formatFallbackSegment(seg))\"\n >\n {{ formatFallbackSegment(seg) }}\n </div>\n }\n }\n }\n </div>\n }\n </div>\n <ng-container *ngTemplateOutlet=\"assistUnifiedAnswerBlock\" />\n } @else if (!showDebugUi() && showNonDebugStreamPanel()) {\n <div\n class=\"axm-assist-renderer__stream-content axm-assist-renderer__stream-content--non-debug\"\n role=\"region\"\n [attr.aria-label]=\"('@conversation:chat.assist-renderer.aria.assistant-response' | translate | async) ?? ''\"\n >\n @if (isStreaming()) {\n <div class=\"axm-assist-renderer__streaming-activity\" role=\"status\" aria-live=\"polite\">\n <span\n class=\"axm-assist-renderer__activity-spin ax-inline-block ax-w-3 ax-h-3 ax-rounded-full ax-border-2 ax-border-primary-500 ax-border-t-transparent fa-spin ax-shrink-0\"\n aria-hidden=\"true\"\n ></span>\n <span class=\"axm-assist-renderer__activity-label ax-text-xs ax-text-muted ax-italic\">{{\n assistActivityMessageKey() | translate | async\n }}</span>\n </div>\n }\n <ng-container *ngTemplateOutlet=\"assistUnifiedAnswerBlock\" />\n @if (isStreaming() && !assistAnswerMarkdown()) {\n <div class=\"axm-assist-renderer__waiting\">\n <span class=\"axm-assist-renderer__dot\"></span>\n <span class=\"axm-assist-renderer__dot\"></span>\n <span class=\"axm-assist-renderer__dot\"></span>\n </div>\n }\n </div>\n } @else if (showDebugUi()) {\n @if (isStreaming()) {\n <div class=\"axm-assist-renderer__stream-content\">\n <div class=\"axm-assist-renderer__streaming-activity\" role=\"status\" aria-live=\"polite\">\n <span\n class=\"axm-assist-renderer__activity-spin ax-inline-block ax-w-3 ax-h-3 ax-rounded-full ax-border-2 ax-border-primary-500 ax-border-t-transparent fa-spin ax-shrink-0\"\n aria-hidden=\"true\"\n ></span>\n <span class=\"axm-assist-renderer__activity-label ax-text-xs ax-text-muted ax-italic\">{{\n assistActivityMessageKey() | translate | async\n }}</span>\n </div>\n @if (streamThink().trim()) {\n <div class=\"axm-assist-renderer__accordion-group\" axAccordionGroup [accordion]=\"false\">\n <div\n class=\"axm-assist-renderer__thinking-accordion axm-assist-renderer__collapse-shell !ax-mb-0\"\n axAccordionItem\n #thinkAcc=\"axAccordionItem\"\n [isCollapsed]=\"assistSectionIsCollapsed(assistThinkStreamKey())\"\n (onClick)=\"onAssistAccordionClick($event, assistThinkStreamKey())\"\n >\n <div\n class=\"axm-assist-renderer__accordion-header\"\n axAccordionItemHeader\n role=\"button\"\n [attr.aria-expanded]=\"!thinkAcc.isCollapsed()\"\n >\n <div class=\"axm-assist-renderer__accordion-header-main\">\n <span class=\"axm-assist-renderer__accordion-header-title\">\n <i\n class=\"fa-light fa-chevron-down axm-assist-renderer__thinking-chevron\"\n [class.axm-assist-renderer__thinking-chevron--expanded]=\"!thinkAcc.isCollapsed()\"\n aria-hidden=\"true\"\n ></i>\n <i class=\"fa-light fa-brain axm-assist-renderer__tool-title-icon\" aria-hidden=\"true\"></i>\n {{ '@conversation:chat.assist-renderer.sections.thinking' | translate | async }}\n </span>\n </div>\n </div>\n <div axAccordionItemContent>\n <div class=\"axm-assist-renderer__collapse-body\">\n <div\n class=\"axm-assist-renderer__thinking-body axm-assist-bot__segment\"\n [attr.dir]=\"segmentDir(streamThink())\"\n >\n {{ streamThink() }}\n </div>\n </div>\n </div>\n </div>\n </div>\n }\n <ng-container *ngTemplateOutlet=\"assistUnifiedAnswerBlock\" />\n @if (toolCalls().length) {\n <div class=\"axm-assist-renderer__tools\">\n @for (tc of toolCalls(); track tc.id) {\n @if (isDelegatedAgentCommand(tc.name)) {\n @let legacyAgentAns = delegatedAnswerFromToolOutputString(tc.output);\n <div class=\"axm-assist-renderer__accordion-group\" axAccordionGroup [accordion]=\"false\">\n <div\n class=\"axm-assist-renderer__tool-card axm-assist-renderer__agent-accordion axm-assist-renderer__collapse-shell\"\n axAccordionItem\n #legacyAgentAcc=\"axAccordionItem\"\n [isCollapsed]=\"assistSectionIsCollapsed(assistAgentKey(tc.id))\"\n (onClick)=\"onAssistAccordionClick($event, assistAgentKey(tc.id))\"\n >\n <div\n class=\"axm-assist-renderer__accordion-header\"\n axAccordionItemHeader\n role=\"button\"\n [attr.aria-expanded]=\"!legacyAgentAcc.isCollapsed()\"\n >\n <div class=\"axm-assist-renderer__accordion-header-main\">\n <span\n class=\"axm-assist-renderer__accordion-header-title ax-inline-flex ax-items-center ax-gap-2 ax-flex-wrap\"\n >\n <i\n class=\"fa-light fa-chevron-down axm-assist-renderer__thinking-chevron\"\n [class.axm-assist-renderer__thinking-chevron--expanded]=\"!legacyAgentAcc.isCollapsed()\"\n aria-hidden=\"true\"\n ></i>\n @if (tc.state === 'running') {\n <span\n class=\"axm-assist-renderer__agent-live-spin ax-inline-block ax-w-3 ax-h-3 ax-rounded-full ax-border-2 ax-border-primary-500 ax-border-t-transparent fa-spin ax-shrink-0\"\n aria-hidden=\"true\"\n ></span>\n } @else {\n <span\n class=\"ax-inline-block ax-w-3 ax-h-3 ax-rounded-full ax-bg-success-500 ax-shrink-0\"\n aria-hidden=\"true\"\n ></span>\n }\n <i class=\"fa-light fa-people-group ax-text-primary-500\" aria-hidden=\"true\"></i>\n <span class=\"axm-assist-renderer__agent-live-title\">{{\n resolveToolDisplayTitle(tc.name)\n }}</span>\n </span>\n </div>\n <div class=\"axm-assist-renderer__header-trailing\">\n <span\n class=\"axm-assist-renderer__badge\"\n [class.axm-assist-renderer__badge--primary]=\"tc.state === 'running'\"\n [class.axm-assist-renderer__badge--success]=\"tc.state !== 'running'\"\n >\n {{\n (resolveToolBadge(\n tc.name,\n tc.state === 'running'\n ? '@conversation:chat.assist-renderer.badges.running'\n : '@conversation:chat.assist-renderer.badges.agent'\n )\n | translate\n | async) ?? ''\n }}\n </span>\n </div>\n </div>\n <div axAccordionItemContent>\n <div class=\"axm-assist-renderer__collapse-body\">\n <div\n class=\"axm-assist-renderer__agent-live-block axm-assist-renderer__agent-live-block--in-accordion\"\n role=\"region\"\n >\n <div\n class=\"axm-assist-renderer__agent-live-prompt\"\n [attr.dir]=\"segmentDir(delegatedPromptPreview(tc.arguments))\"\n >\n {{ delegatedPromptPreview(tc.arguments) }}\n </div>\n @if (tc.nestedStreamText?.trim()) {\n <div\n class=\"axm-assist-renderer__agent-live-stream\"\n [attr.dir]=\"segmentDir(tc.nestedStreamText ?? '')\"\n >\n {{ tc.nestedStreamText }}\n </div>\n }\n @if (tc.nestedTools?.length) {\n <div class=\"axm-assist-renderer__agent-live-nested-tools\">\n @for (nt of tc.nestedTools; track nt.id) {\n <div class=\"axm-assist-renderer__agent-live-nested-row\">\n @if (nt.state === 'running') {\n <span\n class=\"ax-inline-block ax-w-2.5 ax-h-2.5 ax-rounded-full ax-border-2 ax-border-primary-500 ax-border-t-transparent fa-spin ax-shrink-0\"\n aria-hidden=\"true\"\n ></span>\n } @else {\n <span\n class=\"ax-inline-block ax-w-2.5 ax-h-2.5 ax-rounded-full ax-bg-success-500 ax-shrink-0\"\n aria-hidden=\"true\"\n ></span>\n }\n <code class=\"axm-assist-renderer__agent-live-nested-name\">{{ nt.name }}</code>\n <span class=\"axm-assist-renderer__agent-live-nested-status\">{{\n nt.state === 'running' ? '…' : '✓'\n }}</span>\n </div>\n }\n </div>\n }\n @if (legacyAgentAns) {\n <div class=\"axm-assist-renderer__agent-live-nested-tools\">\n <div class=\"axm-assist-renderer__tool-section-label\">\n {{ '@conversation:chat.assist-renderer.sections.agent-answer' | translate | async }}\n </div>\n <div\n class=\"axm-assist-renderer__agent-live-stream\"\n [attr.dir]=\"segmentDir(legacyAgentAns)\"\n >\n {{ legacyAgentAns }}\n </div>\n </div>\n }\n </div>\n @if (tc.state !== 'running') {\n <div class=\"axm-assist-renderer__delegated-agent-detail-link\">\n <ax-button\n look=\"link\"\n color=\"primary\"\n class=\"ax-sm\"\n [text]=\"\n ('@conversation:chat.assist-renderer.delegated-agent.detail' | translate | async) ?? ''\n \"\n [attr.aria-label]=\"\n ('@conversation:chat.assist-renderer.delegated-agent.detail-aria'\n | translate\n | async) ?? ''\n \"\n (onClick)=\"\n openDelegatedAgentTranscriptDialog(tc.id, tc.name, delegatedAgentLabelForCall(tc.id))\n \"\n ></ax-button>\n </div>\n }\n </div>\n </div>\n </div>\n </div>\n } @else {\n <div class=\"axm-assist-renderer__accordion-group\" axAccordionGroup [accordion]=\"false\">\n <div\n class=\"axm-assist-renderer__tool-card axm-assist-renderer__collapse-shell\"\n axAccordionItem\n #legacyStreamDbgAcc=\"axAccordionItem\"\n [isCollapsed]=\"assistSectionIsCollapsed(assistLegacyToolAccordionKey(tc))\"\n (onClick)=\"onAssistLegacyAccordionClick($event, tc)\"\n >\n <div class=\"axm-assist-renderer__accordion-header\" axAccordionItemHeader>\n <div class=\"axm-assist-renderer__accordion-header-main\">\n <span class=\"axm-assist-renderer__accordion-header-title\">\n <i\n class=\"fa-light fa-chevron-down axm-assist-renderer__thinking-chevron\"\n [class.axm-assist-renderer__thinking-chevron--expanded]=\"!legacyStreamDbgAcc.isCollapsed()\"\n aria-hidden=\"true\"\n ></i>\n <i class=\"fa-light fa-screwdriver-wrench axm-assist-renderer__tool-title-icon\"></i>\n {{ resolveToolDisplayTitle(tc.name) }}\n </span>\n </div>\n <span\n class=\"axm-assist-renderer__badge\"\n [class.axm-assist-renderer__badge--primary]=\"tc.state === 'running'\"\n [class.axm-assist-renderer__badge--success]=\"tc.state === 'done'\"\n >\n {{\n (resolveToolBadge(\n tc.name,\n tc.state === 'running'\n ? '@conversation:chat.assist-renderer.badges.running'\n : '@conversation:chat.assist-renderer.badges.done'\n )\n | translate\n | async) ?? ''\n }}\n </span>\n </div>\n <div axAccordionItemContent>\n <div class=\"axm-assist-renderer__collapse-body\">\n <div class=\"axm-assist-renderer__tool-body\">\n <div class=\"axm-assist-renderer__tool-section-label\">\n {{ '@conversation:chat.assist-renderer.sections.input' | translate | async }}\n </div>\n <div class=\"axm-assist-renderer__tool-editor-wrap\" style=\"direction: ltr\">\n <ax-code-editor\n [ngModel]=\"formatArgs(tc.arguments)\"\n [readonly]=\"true\"\n language=\"json\"\n [lineNumbers]=\"true\"\n class=\"axm-assist-renderer__tool-editor\"\n ></ax-code-editor>\n </div>\n @if (tc.output) {\n <div class=\"axm-assist-renderer__tool-section-label\">\n {{ '@conversation:chat.assist-renderer.sections.output' | translate | async }}\n </div>\n <div class=\"axm-assist-renderer__tool-editor-wrap\" style=\"direction: ltr\">\n <ax-code-editor\n [ngModel]=\"formatJson(tc.output)\"\n [readonly]=\"true\"\n language=\"json\"\n [lineNumbers]=\"true\"\n class=\"axm-assist-renderer__tool-editor\"\n ></ax-code-editor>\n </div>\n }\n </div>\n </div>\n </div>\n </div>\n </div>\n }\n }\n </div>\n }\n @if (isStreaming() && !assistAnswerMarkdown() && !streamThink().trim() && !toolCalls().length) {\n <div class=\"axm-assist-renderer__waiting\">\n <span class=\"axm-assist-renderer__dot\"></span>\n <span class=\"axm-assist-renderer__dot\"></span>\n <span class=\"axm-assist-renderer__dot\"></span>\n </div>\n }\n </div>\n } @else if (!useTranscriptUi()) {\n @if (parsed().thinking) {\n <div class=\"axm-assist-renderer__accordion-group\" axAccordionGroup [accordion]=\"false\">\n <div\n class=\"axm-assist-renderer__thinking-accordion axm-assist-renderer__collapse-shell !ax-mb-0\"\n axAccordionItem\n #thinkAcc=\"axAccordionItem\"\n [isCollapsed]=\"assistSectionIsCollapsed(assistThinkFinalKey())\"\n (onClick)=\"onAssistAccordionClick($event, assistThinkFinalKey())\"\n >\n <div\n class=\"axm-assist-renderer__accordion-header\"\n axAccordionItemHeader\n role=\"button\"\n [attr.aria-expanded]=\"!thinkAcc.isCollapsed()\"\n >\n <div class=\"axm-assist-renderer__accordion-header-main\">\n <span class=\"axm-assist-renderer__accordion-header-title\">\n <i\n class=\"fa-light fa-chevron-down axm-assist-renderer__thinking-chevron\"\n [class.axm-assist-renderer__thinking-chevron--expanded]=\"!thinkAcc.isCollapsed()\"\n aria-hidden=\"true\"\n ></i>\n <i class=\"fa-light fa-brain axm-assist-renderer__tool-title-icon\" aria-hidden=\"true\"></i>\n {{ '@conversation:chat.assist-renderer.sections.thinking' | translate | async }}\n </span>\n </div>\n </div>\n <div axAccordionItemContent>\n <div class=\"axm-assist-renderer__collapse-body\">\n <div\n class=\"axm-assist-renderer__thinking-body axm-assist-bot__segment\"\n [attr.dir]=\"segmentDir(parsed().thinking)\"\n >\n {{ parsed().thinking }}\n </div>\n </div>\n </div>\n </div>\n </div>\n }\n @if (toolCalls().length) {\n <div class=\"axm-assist-renderer__tools\">\n @for (tc of toolCalls(); track tc.id) {\n <div class=\"axm-assist-renderer__accordion-group\" axAccordionGroup [accordion]=\"false\">\n <div\n class=\"axm-assist-renderer__tool-card axm-assist-renderer__collapse-shell\"\n axAccordionItem\n #legacyDoneDbgAcc=\"axAccordionItem\"\n [isCollapsed]=\"assistSectionIsCollapsed(assistLegacyToolAccordionKey(tc))\"\n (onClick)=\"onAssistLegacyAccordionClick($event, tc)\"\n >\n <div class=\"axm-assist-renderer__accordion-header\" axAccordionItemHeader>\n <div class=\"axm-assist-renderer__accordion-header-main\">\n <span class=\"axm-assist-renderer__accordion-header-title\">\n <i\n class=\"fa-light fa-chevron-down axm-assist-renderer__thinking-chevron\"\n [class.axm-assist-renderer__thinking-chevron--expanded]=\"!legacyDoneDbgAcc.isCollapsed()\"\n aria-hidden=\"true\"\n ></i>\n <i class=\"fa-light fa-screwdriver-wrench axm-assist-renderer__tool-title-icon\"></i>\n {{ resolveToolDisplayTitle(tc.name) }}\n </span>\n </div>\n <span class=\"axm-assist-renderer__badge axm-assist-renderer__badge--success\">{{\n (resolveToolBadge(tc.name, '@conversation:chat.assist-renderer.badges.done') | translate | async) ??\n ''\n }}</span>\n </div>\n <div axAccordionItemContent>\n <div class=\"axm-assist-renderer__collapse-body\">\n <div class=\"axm-assist-renderer__tool-body\">\n <div class=\"axm-assist-renderer__tool-section-label\">\n {{ '@conversation:chat.assist-renderer.sections.input' | translate | async }}\n </div>\n <div class=\"axm-assist-renderer__tool-editor-wrap\" style=\"direction: ltr\">\n <ax-code-editor\n [ngModel]=\"formatArgs(tc.arguments)\"\n [readonly]=\"true\"\n language=\"json\"\n [lineNumbers]=\"true\"\n class=\"axm-assist-renderer__tool-editor\"\n ></ax-code-editor>\n </div>\n @if (tc.nestedStreamText?.trim()) {\n <div\n class=\"axm-assist-renderer__text axm-assist-bot__segment ax-pt-1\"\n [attr.dir]=\"segmentDir(tc.nestedStreamText ?? '')\"\n >\n {{ tc.nestedStreamText }}\n </div>\n }\n @if (tc.output) {\n <div class=\"axm-assist-renderer__tool-section-label\">\n {{ '@conversation:chat.assist-renderer.sections.output' | translate | async }}\n </div>\n <div class=\"axm-assist-renderer__tool-editor-wrap\" style=\"direction: ltr\">\n <ax-code-editor\n [ngModel]=\"formatJson(tc.output)\"\n [readonly]=\"true\"\n language=\"json\"\n [lineNumbers]=\"true\"\n class=\"axm-assist-renderer__tool-editor\"\n ></ax-code-editor>\n </div>\n }\n </div>\n </div>\n </div>\n </div>\n </div>\n }\n </div>\n }\n <ng-container *ngTemplateOutlet=\"assistUnifiedAnswerBlock\" />\n }\n }\n @if (showDebugUi() && assistRunDebug(); as dbg) {\n <footer\n class=\"axm-assist-renderer__run-meta-wrap\"\n role=\"region\"\n [attr.aria-label]=\"('@conversation:chat.assist-renderer.aria.run-usage' | translate | async) ?? ''\"\n >\n <div class=\"axm-assist-renderer__accordion-group\" axAccordionGroup [accordion]=\"false\">\n <div\n class=\"axm-assist-renderer__thinking-accordion axm-assist-renderer__collapse-shell axm-assist-renderer__run-meta-accordion !ax-mb-0\"\n axAccordionItem\n #runMetaAcc=\"axAccordionItem\"\n [isCollapsed]=\"assistSectionIsCollapsed(assistRunMetaKey())\"\n (onClick)=\"onAssistAccordionClick($event, assistRunMetaKey())\"\n >\n <div\n class=\"axm-assist-renderer__accordion-header\"\n axAccordionItemHeader\n role=\"button\"\n [attr.aria-expanded]=\"!runMetaAcc.isCollapsed()\"\n >\n <div class=\"axm-assist-renderer__accordion-header-main\">\n <span class=\"axm-assist-renderer__accordion-header-title\">\n <i\n class=\"fa-light fa-chevron-down axm-assist-renderer__thinking-chevron\"\n [class.axm-assist-renderer__thinking-chevron--expanded]=\"!runMetaAcc.isCollapsed()\"\n aria-hidden=\"true\"\n ></i>\n <i class=\"fa-light fa-chart-line axm-assist-renderer__tool-title-icon\" aria-hidden=\"true\"></i>\n {{ '@conversation:chat.assist-renderer.run-meta.title' | translate | async }}\n </span>\n <!-- @if (dbg.modelTitle || dbg.modelEntityId) {\n <span class=\"axm-assist-renderer__run-meta-header-sub\">{{ dbg.modelTitle || dbg.modelEntityId }}</span>\n } -->\n </div>\n </div>\n <div axAccordionItemContent>\n <div class=\"axm-assist-renderer__collapse-body\">\n <div class=\"axm-assist-renderer__run-meta axm-assist-renderer__run-meta--panel\">\n <div class=\"axm-assist-renderer__run-meta-grid\">\n @if (dbg.modelTitle || dbg.modelEntityId) {\n <div class=\"axm-assist-renderer__meta-tile axm-assist-renderer__meta-tile--wide\">\n <div class=\"axm-assist-renderer__meta-tile-label\">\n {{ '@conversation:chat.assist-renderer.run-meta.model' | translate | async }}\n </div>\n <div class=\"axm-assist-renderer__meta-tile-value\">{{ dbg.modelTitle || dbg.modelEntityId }}</div>\n <!-- @if (dbg.modelTitle && dbg.modelEntityId) {\n <div class=\"axm-assist-renderer__meta-tile-sub\">{{ dbg.modelEntityId }}</div>\n } -->\n </div>\n }\n @if (dbg.durationMs != null) {\n <div class=\"axm-assist-renderer__meta-tile\">\n <div class=\"axm-assist-renderer__meta-tile-label\">\n {{ '@conversation:chat.assist-renderer.run-meta.duration' | translate | async }}\n </div>\n <div class=\"axm-assist-renderer__meta-tile-value axm-assist-renderer__meta-tile-value--mono\">\n {{ formatAssistRunDuration(dbg.durationMs) }}\n </div>\n </div>\n }\n @if (dbg.usage; as totals) {\n <div class=\"axm-assist-renderer__meta-tile\">\n <div class=\"axm-assist-renderer__meta-tile-label\">\n {{ '@ai-management:chat.usage-prompt' | translate | async }}\n </div>\n <div class=\"axm-assist-renderer__meta-tile-value axm-assist-renderer__meta-tile-value--mono\">\n {{ totals.promptTokens | number }}\n @if (totals.cachedPromptTokens) {\n <span class=\"axm-assist-renderer__meta-tile-note\">\n (+{{ totals.cachedPromptTokens | number }}\n {{ '@ai-management:chat.usage-cached' | translate | async }})\n </span>\n }\n </div>\n </div>\n <div class=\"axm-assist-renderer__meta-tile\">\n <div class=\"axm-assist-renderer__meta-tile-label\">\n {{ '@ai-management:chat.usage-completion' | translate | async }}\n </div>\n <div class=\"axm-assist-renderer__meta-tile-value axm-assist-renderer__meta-tile-value--mono\">\n {{ totals.completionTokens | number }}\n </div>\n </div>\n <div class=\"axm-assist-renderer__meta-tile axm-assist-renderer__meta-tile--accent\">\n <div class=\"axm-assist-renderer__meta-tile-label\">\n {{ '@conversation:chat.assist-renderer.run-meta.total-tokens' | translate | async }}\n </div>\n <div class=\"axm-assist-renderer__meta-tile-value axm-assist-renderer__meta-tile-value--mono\">\n {{ totals.totalTokens | number }}\n </div>\n </div>\n }\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </footer>\n }\n\n <ng-template #assistUnifiedAnswerBlock>\n @if (assistAnswerMarkdown()) {\n <div\n class=\"axm-assist-renderer__text axm-assist-bot__segment axm-assist-renderer__markdown\"\n [attr.dir]=\"segmentDir(assistAnswerMarkdown())\"\n >\n <axp-markdown-viewer [markdown]=\"assistAnswerMarkdown()\">\n <ng-template axpMarkdownTemplate=\"code\" let-segment>\n <div class=\"axm-assist-renderer__tool-editor-wrap\" style=\"direction: ltr\">\n <ax-code-editor\n [ngModel]=\"markdownCodeValue(segment)\"\n [readonly]=\"true\"\n [language]=\"markdownCodeLanguage(segment)\"\n [lineNumbers]=\"true\"\n class=\"axm-assist-renderer__tool-editor\"\n ></ax-code-editor>\n </div>\n </ng-template>\n </axp-markdown-viewer>\n </div>\n @if (isStreaming()) {\n <span class=\"axm-assist-renderer__cursor\"></span>\n }\n }\n @if (!isStreaming()) {\n @for (item of assistPayloadAppendItems(); track $index; let itemIndex = $index) {\n @switch (item.kind) {\n @case ('node') {\n @if (axmAssistWidgetNodeFromUnknown(item.content)) {\n <div class=\"axm-assist-bot__segment\" dir=\"auto\">\n <axm-chat-user-form-renderer [message]=\"syntheticAppendNodeMessage(itemIndex, item.content)\" />\n </div>\n }\n }\n @case ('file') {\n <axm-assist-bot-file-line [parentMessage]=\"message()\" [fileId]=\"item.fileId\" />\n }\n @case ('followUp') {\n <div class=\"axm-assist-bot__segment\" dir=\"auto\">\n <axm-assist-suggestion-chips [items]=\"item.items\" />\n </div>\n }\n }\n }\n }\n </ng-template>\n\n @if (showRetryScreen()) {\n <ax-alert\n class=\"axm-assist-renderer__retry-alert\"\n color=\"danger\"\n role=\"alert\"\n [attr.aria-label]=\"('@conversation:chat.assist-renderer.retry.aria.panel' | translate | async) ?? ''\"\n >\n <ax-icon><i [class]=\"assistRetryAlertIcon()\"></i></ax-icon>\n <ax-title>{{ assistRetryTitleKey() | translate | async }}</ax-title>\n <ax-content>\n <div class=\"axm-assist-renderer__retry-alert-body\">\n <div class=\"axm-assist-renderer__retry-alert-text\">\n <p class=\"axm-assist-renderer__retry-description\">\n {{ assistRetryDescriptionKey() | translate | async }}\n </p>\n @if (assistResponseError()) {\n <p class=\"axm-assist-renderer__retry-error-detail\">\n {{ assistResponseError() }}\n </p>\n }\n </div>\n\n <ax-button\n class=\"axm-assist-renderer__retry-action ax-sm\"\n color=\"danger\"\n look=\"solid\"\n [disabled]=\"isRetrying()\"\n [text]=\"('@conversation:chat.assist-renderer.retry.action' | translate | async) ?? ''\"\n (onClick)=\"onRetryAssistResponse()\"\n >\n <i class=\"fa-light fa-arrows-rotate\" prefix></i>\n </ax-button>\n </div>\n </ax-content>\n </ax-alert>\n }\n</div>\n","import type { AXMessageRenderer } from '@acorex/components/conversation2';\nimport { AXMAssistMessageRendererComponent } from './assist-message-renderer.component';\n\n/**\n * Renderer for AI assist (bot) responses.\n *\n * When `metadata.transcripts` / `metadata.transcriptDraft` contains\n * `AXPAiChatMessage` lines, the UI maps each line by `role` and\n * segment `type` inside `responses` to the same building blocks as the AI chat page (text,\n * image, tool cards, tool results, layout nodes). Otherwise it falls back\n * to the legacy assist layout (streaming dots, `toolCalls` metadata).\n * Text segments set `dir=\"rtl\"` per block when the content includes Arabic script (e.g. Persian).\n */\nexport const AXM_CONVERSATION_BOT_RENDERER: AXMessageRenderer = {\n type: 'assist-response',\n component: AXMAssistMessageRendererComponent,\n canHandle: (message) =>\n message.type === 'assist-response' || !!(message.metadata as Record<string, unknown>)?.['isAssistResponse'],\n capabilities: {\n supportsReactions: false,\n supportsReplies: false,\n supportsEdit: false,\n supportsForward: false,\n supportsSelection: true,\n },\n displayName: 'AI Assist (transcript)',\n icon: 'fa-light fa-sparkles',\n};\n","import type { AXMessageRenderer } from '@acorex/components/conversation2';\nimport { AXMNodeMessageRendererComponent } from './node-message-renderer.component';\n\n// const AXM_USER_FORM_NODE: AXPWidgetNode = {\n// type: 'flex-layout',\n// name: 'node-layout',\n// options: {\n// gap: '12px',\n// flexWrap: 'wrap',\n// justifyContent: 'start',\n// alignItems: 'start',\n// },\n// children: [\n// {\n// type: 'flex-item-layout',\n// name: 'name-field-layout',\n// children: [\n// {\n// type: 'text-editor',\n// name: 'name',\n// path: 'form.name',\n// options: { placeholder: 'Name', readonly: false, disabled: false },\n// },\n// ],\n// },\n// {\n// type: 'flex-item-layout',\n// name: 'family-field-layout',\n// children: [\n// {\n// type: 'text-editor',\n// name: 'family',\n// path: 'form.family',\n// options: { placeholder: 'Family', readonly: false, disabled: false },\n// },\n// ],\n// },\n// ],\n// };\n\n// export const AXM_CONVERSATION_COMPOSER_USER_FORM_ACTION: AXComposerAction = {\n// id: 'node',\n// label: 'User Form',\n// icon: 'fa-light fa-rectangle-list',\n// position: 'right',\n// location: 'menu',\n// priority: 35,\n// visible: (context) => !context.isEditing,\n// handler: async (context) => {\n// if (!context.conversationService || !context.conversationId) {\n// return;\n// }\n// const payload: AXMUserFormPayload = {\n// type: 'node',\n// node: AXM_USER_FORM_NODE,\n// value: { form: { name: '', family: '' } },\n// };\n// await context.conversationService.sendMessage({\n// conversationId: context.conversationId,\n// type: 'node',\n// payload: payload as unknown as AXMessagePayload,\n// });\n// },\n// tooltip: 'Send user form',\n// };\n\nexport const AXM_CONVERSATION_NODE_RENDERER: AXMessageRenderer = {\n type: 'node',\n component: AXMNodeMessageRendererComponent,\n canHandle: (message) => message.type === 'node',\n capabilities: {\n supportsReactions: false,\n supportsReplies: true,\n supportsEdit: false,\n supportsForward: false,\n supportsSelection: true,\n },\n displayName: 'User Form',\n icon: 'fa-light fa-rectangle-list',\n};\n","//#region ---- Imports ----\n\nimport {\n AX_CONVERSATION_AUDIO_RENDERER,\n AX_CONVERSATION_COMPOSER_EMOJI_TAB,\n AX_CONVERSATION_COMPOSER_STICKER_TAB,\n AX_CONVERSATION_FILE_RENDERER,\n AX_CONVERSATION_IMAGE_RENDERER,\n AX_CONVERSATION_INFO_BAR_BLOCK_ACTION,\n AX_CONVERSATION_INFO_BAR_DELETE_ACTION,\n AX_CONVERSATION_INFO_BAR_DIVIDER,\n AX_CONVERSATION_INFO_BAR_INFO_ACTION,\n AX_CONVERSATION_INFO_BAR_MUTE_ACTION,\n AX_CONVERSATION_INFO_BAR_SEARCH_ACTION,\n AX_CONVERSATION_ITEM_BLOCK_ACTION,\n AX_CONVERSATION_ITEM_DELETE_ACTION,\n AX_CONVERSATION_ITEM_DIVIDER,\n AX_CONVERSATION_ITEM_MARK_READ_ACTION,\n AX_CONVERSATION_ITEM_MUTE_ACTION,\n AX_CONVERSATION_ITEM_PIN_ACTION,\n AX_CONVERSATION_LOCATION_RENDERER,\n AX_CONVERSATION_MESSAGE_DELETE_ACTION,\n AX_CONVERSATION_MESSAGE_EDIT_ACTION,\n AX_CONVERSATION_MESSAGE_FORWARD_ACTION,\n AX_CONVERSATION_MESSAGE_REPLY_ACTION,\n AX_CONVERSATION_STICKER_RENDERER,\n AX_CONVERSATION_TAB_ALL,\n AX_CONVERSATION_TAB_GROUPS,\n AX_CONVERSATION_TAB_PRIVATE,\n AX_CONVERSATION_VIDEO_RENDERER,\n AX_CONVERSATION_VOICE_RENDERER,\n AXComposerService,\n AXConversationApi,\n ERROR_HANDLER_CONFIG,\n AXMessage,\n AXMessageApi,\n AXRealtimeApi,\n AXUserApi,\n provideConversation,\n} from '@acorex/components/conversation2';\nimport { inject, Type } from '@angular/core';\nimport {\n AXM_DOWNLOAD_ASSIST_CONVERSATION_DEBUG_ACTION,\n AXM_DOWNLOAD_ASSIST_MESSAGE_DEBUG_ACTION,\n} from './plugins/actions/copy-debug-information.actions';\nimport { AXM_RENAME_ASSIST_CONVERSATION_ACTION } from './plugins/actions/rename-assist-conversation.action';\nimport { AXM_CHAT_COMPOSER_VOICE_RECORDING_ACTION } from './plugins/composer/chat-voice-recording-composer.action';\nimport { AXM_CHAT_INFO_BAR_ASSIST_MODEL_ACTION } from './plugins/info-bar-actions/chat-info-bar-actions';\nimport { AXM_CONVERSATION_BOT_RENDERER } from './plugins/message-renderers/assist-message-renderer.plugin';\nimport { AXM_CONVERSATION_NODE_RENDERER } from './plugins/message-renderers/node-message-renderer.plugin';\nimport {\n AXMChatConversationApi,\n AXMChatMessageApi,\n AXMChatRealtimeApi,\n AXMChatUserApi,\n} from './plugins/services/chat-conversation-apis.abstract';\nimport { AXM_CONVERSATION_TAB_BOT } from './plugins/tabs/chat-conversation-tabs';\n\n//#endregion\n\n//#region ---- Assist conversation helpers ----\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null;\n}\n\nfunction extractMessageCopyText(message: AXMessage | null | undefined): string {\n if (!message) {\n return '';\n }\n\n if (!isRecord(message.payload)) {\n return '';\n }\n\n const payloadText = message.payload['text'];\n if (typeof payloadText === 'string') {\n return payloadText.trim();\n }\n\n const payloadContent = message.payload['content'];\n if (typeof payloadContent === 'string') {\n return payloadContent.trim();\n }\n\n const payloadResponses = message.payload['responses'];\n if (Array.isArray(payloadResponses)) {\n const collected = payloadResponses\n .map((response) => {\n if (!isRecord(response)) {\n return '';\n }\n const content = response['content'];\n return typeof content === 'string' ? content.trim() : '';\n })\n .filter((part) => part.length > 0)\n .join('\\n\\n')\n .trim();\n if (collected.length > 0) {\n return collected;\n }\n }\n\n return '';\n}\n\nasync function copyMessageText(message: AXMessage): Promise<void> {\n const copyText = extractMessageCopyText(message);\n if (!copyText) {\n return;\n }\n await globalThis.navigator?.clipboard?.writeText?.(copyText);\n}\n\n//#endregion\n\n//#region ---- Providers ----\n\n/**\n * Registers `@acorex/components/conversation2` for the whole conversation module so\n * {@link AXConversationService} is available outside {@link AXMChatComponent} (e.g. org chart contributions).\n */\nexport const AXM_CHAT_CONVERSATION2_PROVIDERS = [\n ...provideConversation({\n userApi: AXMChatUserApi as unknown as Type<AXUserApi>,\n conversationApi: AXMChatConversationApi as unknown as Type<AXConversationApi>,\n messageApi: AXMChatMessageApi as unknown as Type<AXMessageApi>,\n realtimeApi: AXMChatRealtimeApi as unknown as Type<AXRealtimeApi>,\n config: {\n messagePageSize: 30,\n conversationPageSize: 20,\n infiniteScrollThreshold: 200,\n scrollThreshold: 100,\n maxFilesPerMessage: 3,\n },\n registry: {\n messageRenderers: [\n AXM_CONVERSATION_BOT_RENDERER,\n AXM_CONVERSATION_NODE_RENDERER,\n // AX_CONVERSATION_TEXT_RENDERER,\n AX_CONVERSATION_IMAGE_RENDERER,\n AX_CONVERSATION_VIDEO_RENDERER,\n AX_CONVERSATION_AUDIO_RENDERER,\n { ...AX_CONVERSATION_VOICE_RENDERER, composerActions: [AXM_CHAT_COMPOSER_VOICE_RECORDING_ACTION] },\n AX_CONVERSATION_FILE_RENDERER,\n AX_CONVERSATION_LOCATION_RENDERER,\n AX_CONVERSATION_STICKER_RENDERER,\n ],\n messageActions: [\n AXM_DOWNLOAD_ASSIST_MESSAGE_DEBUG_ACTION,\n {\n id: 'copy-message',\n label: '@conversation:chat.actions.copy',\n icon: 'fa-light fa-copy',\n priority: 95,\n visible: (message: AXMessage) => extractMessageCopyText(message).length > 0,\n enabled: (message: AXMessage) => extractMessageCopyText(message).length > 0,\n handler: async (context: { message: AXMessage }) => {\n await copyMessageText(context.message);\n },\n },\n {\n ...AX_CONVERSATION_MESSAGE_REPLY_ACTION,\n visible: (arg: AXMessage) => arg.metadata?.['isAssistResponse'] !== true,\n handler: async (context: { message: AXMessage }) => {\n const composer = inject(AXComposerService);\n composer.startReply(context.message);\n },\n },\n AX_CONVERSATION_MESSAGE_FORWARD_ACTION,\n AX_CONVERSATION_MESSAGE_EDIT_ACTION,\n AX_CONVERSATION_MESSAGE_DELETE_ACTION,\n ],\n composerActions: [\n // AX_CONVERSATION_COMPOSER_EMOJI_ACTION,\n // AX_CONVERSATION_COMPOSER_IMAGE_ACTION,\n // AX_CONVERSATION_COMPOSER_VIDEO_ACTION,\n // AX_CONVERSATION_COMPOSER_FILE_ACTION,\n // AX_CONVERSATION_COMPOSER_AUDIO_ACTION,\n // AX_CONVERSATION_COMPOSER_LOCATION_ACTION,\n ],\n composerTabs: [AX_CONVERSATION_COMPOSER_EMOJI_TAB, AX_CONVERSATION_COMPOSER_STICKER_TAB],\n conversationTabs: [\n AX_CONVERSATION_TAB_ALL,\n AX_CONVERSATION_TAB_PRIVATE,\n AX_CONVERSATION_TAB_GROUPS,\n AXM_CONVERSATION_TAB_BOT,\n ],\n infoBarActions: [\n AXM_CHAT_INFO_BAR_ASSIST_MODEL_ACTION,\n AX_CONVERSATION_INFO_BAR_SEARCH_ACTION,\n AX_CONVERSATION_INFO_BAR_INFO_ACTION,\n AX_CONVERSATION_INFO_BAR_MUTE_ACTION,\n AX_CONVERSATION_INFO_BAR_DIVIDER,\n AX_CONVERSATION_INFO_BAR_DELETE_ACTION,\n AX_CONVERSATION_INFO_BAR_BLOCK_ACTION,\n ],\n conversationItemActions: [\n AXM_DOWNLOAD_ASSIST_CONVERSATION_DEBUG_ACTION,\n AXM_RENAME_ASSIST_CONVERSATION_ACTION,\n AX_CONVERSATION_ITEM_MUTE_ACTION,\n AX_CONVERSATION_ITEM_PIN_ACTION,\n AX_CONVERSATION_ITEM_MARK_READ_ACTION,\n AX_CONVERSATION_ITEM_DIVIDER,\n AX_CONVERSATION_ITEM_DELETE_ACTION,\n AX_CONVERSATION_ITEM_BLOCK_ACTION,\n ],\n },\n }),\n { provide: AXUserApi, useExisting: AXMChatUserApi },\n { provide: AXConversationApi, useExisting: AXMChatConversationApi },\n { provide: AXMessageApi, useExisting: AXMChatMessageApi },\n { provide: AXRealtimeApi, useExisting: AXMChatRealtimeApi },\n {\n provide: ERROR_HANDLER_CONFIG,\n useValue: { logToConsole: false },\n },\n];\n\n//#endregion\n","import { AXClickEvent } from '@acorex/cdk/common';\nimport { AXConversationService } from '@acorex/components/conversation2';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport {\n AXMNotificationItem,\n AXP_NOTIFICATION_DEFINITION_PROVIDER,\n AXPNotificationContent,\n AXPNotificationDefinitionProvider,\n} from '@acorex/modules/notification-management';\nimport { AXPExecuteCommand } from '@acorex/platform/core';\nimport { AsyncPipe } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Injector, input, output, Provider } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\n\n@Component({\n selector: 'axm-chat-notification-content',\n template: `\n <div class=\"ax-text-sm ax-mt-1 ax-line-clamp-2\">\n <p>{{ item()?.body || (('@conversation:chat.notification.new-message' | translate | async) ?? '') }}</p>\n <div class=\"ax-flex ax-gap-2 ax-pt-2\">\n <!-- <ax-button (onClick)=\"onMarkAsSeen($event)\" [text]=\"'Mark as Seen'\"></ax-button>\n <ax-button (onClick)=\"goToChat($event)\" [text]=\"'Go to Chat'\"></ax-button> -->\n </div>\n </div>\n `,\n imports: [AXTranslationModule, AsyncPipe],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AXMChatNotificationContentComponent implements AXPNotificationContent {\n item = input<AXMNotificationItem>();\n execute = output<AXPExecuteCommand>();\n\n onMarkAsSeen(e: AXClickEvent) {\n e.nativeEvent.stopPropagation();\n this.execute.emit({ name: 'mark-as-seen' });\n }\n\n goToChat(e: AXClickEvent) {\n e.nativeEvent.stopPropagation();\n this.execute.emit({ name: 'go-to-chat' });\n }\n}\n\nexport class AXMChatNotificationProvider implements AXPNotificationDefinitionProvider {\n name = 'Chat' as const;\n title = '@conversation:chat.notification.title';\n icon = 'fa-solid fa-comment-sms';\n\n constructor(private injector: Injector) {}\n\n content() {\n return Promise.resolve(AXMChatNotificationContentComponent);\n }\n\n async execute(command: AXPExecuteCommand, item: AXMNotificationItem): Promise<void> {\n const router = this.injector.get(Router);\n const chatService = this.injector.get(AXConversationService);\n const activatedRoute = this.injector.get(ActivatedRoute);\n const roomId = item.data?.['roomId'] as string;\n\n if (!roomId) {\n console.error('Room ID is missing from notification item.');\n return;\n }\n\n const app = activatedRoute.snapshot.firstChild?.paramMap.get('app') || 'platform';\n\n switch (command.name) {\n case 'mark-as-seen':\n await chatService.markAsRead(roomId);\n break;\n case 'go-to-chat':\n await chatService.markAsRead(roomId);\n router.navigate([app, 'chat', roomId]);\n break;\n case 'click':\n await chatService.markAsRead(roomId);\n router.navigate([app, 'chat', roomId]);\n break;\n default:\n break;\n }\n }\n}\n\n//#endregion\n\n//#region ---- Providers ----\n\n/**\n * Providers for chat notification definition registration.\n */\nexport const AXM_CHAT_NOTIFICATION_PROVIDERS: Provider[] = [\n {\n provide: AXP_NOTIFICATION_DEFINITION_PROVIDER,\n useFactory: (injector: Injector) => new AXMChatNotificationProvider(injector),\n deps: [Injector],\n multi: true,\n },\n];\n\n//#endregion\n","//#region ---- Imports ----\n\nimport {\n AXMNotificationItem,\n AXP_NOTIFICATION_DEFINITION_PROVIDER,\n AXPNotificationDefinitionProvider,\n} from '@acorex/modules/notification-management';\nimport { AXPExecuteCommand } from '@acorex/platform/core';\nimport { Injector, Provider } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\n\n//#endregion\n\n//#region ---- Comment Notification Provider ----\n\n/**\n * Provides notification handling for Comment feature.\n */\nexport class AXMCommentNotificationProvider implements AXPNotificationDefinitionProvider {\n name = 'Comment' as const;\n title = '@conversation:comments.notification.title';\n icon = 'fa-solid fa-comment';\n\n constructor(private injector: Injector) {}\n\n async execute(command: AXPExecuteCommand, item: AXMNotificationItem): Promise<void> {\n const router = this.injector.get(Router);\n const activatedRoute = this.injector.get(ActivatedRoute);\n\n const app = activatedRoute.snapshot.firstChild?.paramMap.get('app') || 'platform';\n\n switch (command.name) {\n case 'click':\n if (item.data?.['moduleName'] && item.data?.['entityName'] && item.data?.['entityId']) {\n router.navigate([\n app,\n 'm',\n item.data?.['moduleName'],\n 'e',\n item.data?.['entityName'],\n item.data?.['entityId'],\n ]);\n }\n break;\n default:\n break;\n }\n }\n}\n\n//#endregion\n\n//#region ---- Providers ----\n\n/**\n * Providers for comment notification definition registration.\n */\nexport const AXM_COMMENT_NOTIFICATION_PROVIDERS: Provider[] = [\n {\n provide: AXP_NOTIFICATION_DEFINITION_PROVIDER,\n useFactory: (injector: Injector) => new AXMCommentNotificationProvider(injector),\n deps: [Injector],\n multi: true,\n },\n];\n\n//#endregion\n","import {\n AXPPageComponentDefinition,\n AXPPageComponentProvider,\n} from '@acorex/platform/layout/components';\nimport { Injectable } from '@angular/core';\nimport { COMMENTS_PAGE_COMPONENT_KEY } from '../comments.plugin';\n\n//#region ---- Comments Page Component Provider ----\n\n@Injectable()\nexport class AXMCommentsPageComponentProvider implements AXPPageComponentProvider {\n async components(): Promise<AXPPageComponentDefinition[]> {\n return [\n {\n key: COMMENTS_PAGE_COMPONENT_KEY,\n loader: () =>\n import('./comments-page.component').then((m) => m.AXMCommentsPageComponent),\n },\n ];\n }\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { AXPWidgetDefinitionProvider } from '@acorex/platform/layout/widget-core';\nimport { Injectable } from '@angular/core';\nimport { AXPCommentWidget } from './features';\n\n//#endregion\n\n//#region ---- Conversation Widgets Provider ----\n\n@Injectable()\nexport class AXMConversationWidgetsProvider implements AXPWidgetDefinitionProvider {\n getWidgets() {\n return [AXPCommentWidget];\n }\n}\n\n//#endregion\n","import { AXConversationModule } from '@acorex/components/conversation';\nimport { AXP_PERMISSION_DEFINITION_PROVIDER } from '@acorex/platform/auth';\nimport { AXP_MENU_PROVIDER, AXP_PROTECTED_ROUTE_GUARDS, AXP_SEARCH_DEFINITION_PROVIDER, AXP_SEARCH_PROVIDER } from '@acorex/platform/common';\nimport { AXP_MODULE_MANIFEST_PROVIDER } from '@acorex/platform/core';\nimport { AXP_PAGE_COMPONENT_PROVIDER, AXP_TASK_BADGE_PROVIDERS } from '@acorex/platform/layout/components';\nimport { AXP_ENTITY_ACTION_PLUGIN, AXP_ENTITY_DEFINITION_LOADER } from '@acorex/platform/layout/entity';\nimport { provideCommandSetups } from '@acorex/platform/runtime';\nimport { AXPRootLayoutComponent } from '@acorex/platform/themes/default';\nimport { DatePipe } from '@angular/common';\nimport { importProvidersFrom, NgModule } from '@angular/core';\nimport { RouterModule, Routes, ROUTES } from '@angular/router';\nimport { AXMConversationModuleEntityProvider } from './entity.provider';\nimport { CONVERSATION_SEND_ASSIST_CHAT_MESSAGE_COMMAND, CONVERSATION_START_ASSIST_CHAT_COMMAND } from './features/commands/conversation-command.keys';\nimport { AXMConversationAssistSearchDefinitionProvider } from './features/search/assist-search-definition.provider';\nimport { AXMConversationAssistSearchProvider } from './features/search/assist-search.provider';\nimport { ConversationManifest } from './manifest';\nimport { AXMMenuProvider } from './menu.provider';\nimport { AXMPermissionDefinitionProvider } from './permission-definition.provider';\n// Entity Modules\nimport { AXP_WIDGET_DEFINITION_PROVIDER, AXPWidgetCoreModule } from '@acorex/platform/layout/widget-core';\nimport { AXPWorkflowModule } from '@acorex/platform/workflow';\nimport { AXMChatBadgeProviderSimple } from './badge.provider';\n\nimport { AXMCommentPopupStartAction, AXMCommentPopupWorkflow, AXMCommentRealtimeService, AXMCommentRealtimeServiceImpl, AXMCommentService, AXMCommentServiceImpl } from './features';\nimport { AXM_CHAT_CONVERSATION2_PROVIDERS } from './features/chat/chat-conversation.providers';\nimport { AXM_CONVERSATION_ASSIST_BACKGROUND_OPERATION_HANDLERS } from './features/background-operation';\nimport { AXM_CHAT_NOTIFICATION_PROVIDERS } from './features/chat/chat-notification.provider';\nimport { AXM_COMMENT_NOTIFICATION_PROVIDERS } from './features/comment/comment-notification.provider';\nimport { AXMCommentsPageComponentProvider } from './features/comment/comments-page/comments-page-component.provider';\nimport { commentsPlugin } from './features/comment/comments.plugin';\nimport { AXMConversationWidgetsProvider } from './widget-definition.provider';\nfunction routesFactory(): Routes {\n const routes: Routes = [\n {\n path: ':app/chat',\n canActivate: [...AXP_PROTECTED_ROUTE_GUARDS],\n data: { tab: true },\n loadComponent: () => {\n return AXPRootLayoutComponent;\n },\n children: [\n {\n path: '',\n loadComponent: () => import('./features/chat/chat.component').then((c) => c.AXMChatComponent),\n data: { reuse: true },\n },\n {\n path: ':id',\n loadComponent: () => import('./features/chat/chat.component').then((c) => c.AXMChatComponent),\n // Reuse the chat shell when switching `:id` so conversation2 can restore per-conversation composer\n // drafts without destroying AXMChatComponent (selectConversation reloads messages).\n data: { reuse: true },\n },\n ],\n },\n {\n path: ':app/comments/t/:refrenceType/i/:refrenceId/s/:subject',\n title: '@conversation:comments.feature.title',\n canActivate: [...AXP_PROTECTED_ROUTE_GUARDS],\n loadComponent: () => AXPRootLayoutComponent,\n // resolve: {\n // refrenceType: {\n // resolve: refrenceTypeResolver,\n // },\n // refrenceId: {\n // resolve: refrenceIdResolver,\n // },\n // subject: {\n // resolve: subjectResolver,\n // },\n // },\n children: [\n {\n path: '',\n loadComponent: () => import('./features/comment/comment.component').then((c) => c.AXMCommentComponent),\n },\n ],\n },\n {\n path: ':app/comments/',\n title: '@conversation:comments.feature.title',\n canActivate: [...AXP_PROTECTED_ROUTE_GUARDS],\n loadComponent: () => AXPRootLayoutComponent,\n children: [\n {\n path: '',\n loadComponent: () => import('./features/comment/comment.component').then((c) => c.AXMCommentComponent),\n },\n ],\n },\n ];\n return routes;\n}\n\n@NgModule({\n declarations: [],\n imports: [\n AXPWidgetCoreModule,\n AXPWorkflowModule.forChild({\n actions: {\n 'show-comment-popup-action': AXMCommentPopupStartAction,\n },\n workflows: {\n 'show-comment-popup': AXMCommentPopupWorkflow,\n },\n }),\n // Entity Modules\n ],\n exports: [\n // Modules\n RouterModule,\n ],\n providers: [\n {\n provide: AXMCommentService,\n useClass: AXMCommentServiceImpl,\n },\n {\n provide: AXMCommentRealtimeService,\n useClass: AXMCommentRealtimeServiceImpl,\n },\n ...AXM_CHAT_CONVERSATION2_PROVIDERS,\n // Module-specific providers (not part of manifest system)\n {\n provide: AXP_ENTITY_ACTION_PLUGIN,\n useValue: commentsPlugin,\n multi: true,\n },\n {\n provide: AXP_PAGE_COMPONENT_PROVIDER,\n useClass: AXMCommentsPageComponentProvider,\n multi: true,\n },\n {\n provide: AXP_TASK_BADGE_PROVIDERS,\n useClass: AXMChatBadgeProviderSimple,\n multi: true,\n },\n {\n provide: ROUTES,\n multi: true,\n useFactory: routesFactory,\n },\n // Conversation Module\n importProvidersFrom(AXConversationModule.forRoot()),\n DatePipe,\n ...AXM_CHAT_NOTIFICATION_PROVIDERS,\n ...AXM_CONVERSATION_ASSIST_BACKGROUND_OPERATION_HANDLERS,\n ...AXM_COMMENT_NOTIFICATION_PROVIDERS,\n // Module Manifest Provider\n {\n provide: AXP_MODULE_MANIFEST_PROVIDER,\n useValue: ConversationManifest,\n multi: true,\n },\n // Provider references (now using tokens)\n {\n provide: AXP_PERMISSION_DEFINITION_PROVIDER,\n useClass: AXMPermissionDefinitionProvider,\n multi: true,\n },\n {\n provide: AXP_MENU_PROVIDER,\n useClass: AXMMenuProvider,\n multi: true,\n },\n {\n provide: AXP_ENTITY_DEFINITION_LOADER,\n useClass: AXMConversationModuleEntityProvider,\n multi: true,\n },\n {\n provide: AXP_WIDGET_DEFINITION_PROVIDER,\n useClass: AXMConversationWidgetsProvider,\n multi: true,\n },\n {\n provide: AXP_SEARCH_PROVIDER,\n useClass: AXMConversationAssistSearchProvider,\n multi: true,\n },\n {\n provide: AXP_SEARCH_DEFINITION_PROVIDER,\n useClass: AXMConversationAssistSearchDefinitionProvider,\n multi: true,\n },\n provideCommandSetups([\n {\n key: CONVERSATION_START_ASSIST_CHAT_COMMAND,\n command: () =>\n import('./features/commands/start-assist-chat.command').then((m) => m.AXMConversationStartAssistChatCommand),\n },\n {\n key: CONVERSATION_SEND_ASSIST_CHAT_MESSAGE_COMMAND,\n command: () =>\n import('./features/commands/send-assist-chat-message.command').then(\n (m) => m.AXMConversationSendAssistChatMessageCommand,\n ),\n },\n ]),\n ],\n})\nexport class AXMConversationModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["RootConfig","i1","i2","i4","i6","i5","i7","i8","i10","i3","isRecord","AiManagementRootConfig"],"mappings":"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"}
|