@acorex/modules 21.0.0-beta.3 → 21.0.0-beta.5

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.
Files changed (240) hide show
  1. package/fesm2022/acorex-modules-ai-management-agent-registry-tool-configurator-widget-column.component-DDVQwyU4.mjs.map +1 -1
  2. package/fesm2022/{acorex-modules-ai-management-agent-registry-tool-configurator-widget-edit.component-CwLff8ut.mjs → acorex-modules-ai-management-agent-registry-tool-configurator-widget-edit.component-C-XsPEIg.mjs} +2 -2
  3. package/fesm2022/acorex-modules-ai-management-agent-registry-tool-configurator-widget-edit.component-C-XsPEIg.mjs.map +1 -0
  4. package/fesm2022/{acorex-modules-ai-management-agent.entity-CsiCzwYK.mjs → acorex-modules-ai-management-agent.entity-D6-0_Ms3.mjs} +2 -2
  5. package/fesm2022/acorex-modules-ai-management-agent.entity-D6-0_Ms3.mjs.map +1 -0
  6. package/fesm2022/acorex-modules-ai-management-assist-delegated-agent-configurator-widget-column.component-tSpJYIZh.mjs.map +1 -1
  7. package/fesm2022/{acorex-modules-ai-management-assist-delegated-agent-configurator-widget-edit.component-DQWeuAd6.mjs → acorex-modules-ai-management-assist-delegated-agent-configurator-widget-edit.component-u1hZ4P5s.mjs} +2 -2
  8. package/fesm2022/acorex-modules-ai-management-assist-delegated-agent-configurator-widget-edit.component-u1hZ4P5s.mjs.map +1 -0
  9. package/fesm2022/{acorex-modules-ai-management-assist.entity-Be5vnFVn.mjs → acorex-modules-ai-management-assist.entity-DfW-FFCt.mjs} +2 -2
  10. package/fesm2022/{acorex-modules-ai-management-assist.entity-Be5vnFVn.mjs.map → acorex-modules-ai-management-assist.entity-DfW-FFCt.mjs.map} +1 -1
  11. package/fesm2022/{acorex-modules-ai-management-model.entity-BjTtbWDk.mjs → acorex-modules-ai-management-model.entity-DiDaXVa3.mjs} +2 -2
  12. package/fesm2022/{acorex-modules-ai-management-model.entity-BjTtbWDk.mjs.map → acorex-modules-ai-management-model.entity-DiDaXVa3.mjs.map} +1 -1
  13. package/fesm2022/{acorex-modules-ai-management-open-ai-endpoint.entity-CfKav_1a.mjs → acorex-modules-ai-management-open-ai-endpoint.entity-CZLNKtl0.mjs} +2 -2
  14. package/fesm2022/{acorex-modules-ai-management-open-ai-endpoint.entity-CfKav_1a.mjs.map → acorex-modules-ai-management-open-ai-endpoint.entity-CZLNKtl0.mjs.map} +1 -1
  15. package/fesm2022/acorex-modules-ai-management.mjs +4630 -1
  16. package/fesm2022/acorex-modules-ai-management.mjs.map +1 -1
  17. package/fesm2022/acorex-modules-application-management.mjs +11 -15
  18. package/fesm2022/acorex-modules-application-management.mjs.map +1 -1
  19. package/fesm2022/{acorex-modules-asset-management-acorex-modules-asset-management-p_zMwIBs.mjs → acorex-modules-asset-management-acorex-modules-asset-management-Blejt-Mo.mjs} +57 -51
  20. package/fesm2022/acorex-modules-asset-management-acorex-modules-asset-management-Blejt-Mo.mjs.map +1 -0
  21. package/fesm2022/{acorex-modules-asset-management-asset-rental-history.entity-CXgiPWiW.mjs → acorex-modules-asset-management-asset-rental-history.entity-C6V8Nuvb.mjs} +2 -2
  22. package/fesm2022/{acorex-modules-asset-management-asset-rental-history.entity-CXgiPWiW.mjs.map → acorex-modules-asset-management-asset-rental-history.entity-C6V8Nuvb.mjs.map} +1 -1
  23. package/fesm2022/{acorex-modules-asset-management-asset-system-assignment.entity-C-UodoTZ.mjs → acorex-modules-asset-management-asset-system-assignment.entity-CtCyaI46.mjs} +2 -2
  24. package/fesm2022/{acorex-modules-asset-management-asset-system-assignment.entity-C-UodoTZ.mjs.map → acorex-modules-asset-management-asset-system-assignment.entity-CtCyaI46.mjs.map} +1 -1
  25. package/fesm2022/{acorex-modules-asset-management-asset-system-type.entity-DkV2P0sF.mjs → acorex-modules-asset-management-asset-system-type.entity-CfoB6Faf.mjs} +2 -2
  26. package/fesm2022/{acorex-modules-asset-management-asset-system-type.entity-DkV2P0sF.mjs.map → acorex-modules-asset-management-asset-system-type.entity-CfoB6Faf.mjs.map} +1 -1
  27. package/fesm2022/{acorex-modules-asset-management-asset-system.entity-bLGHHcCr.mjs → acorex-modules-asset-management-asset-system.entity-CvKC7MKH.mjs} +2 -2
  28. package/fesm2022/{acorex-modules-asset-management-asset-system.entity-bLGHHcCr.mjs.map → acorex-modules-asset-management-asset-system.entity-CvKC7MKH.mjs.map} +1 -1
  29. package/fesm2022/{acorex-modules-asset-management-asset-type-section-component.entity-B_ct599s.mjs → acorex-modules-asset-management-asset-type-section-component.entity-xfRZM5vK.mjs} +32 -31
  30. package/fesm2022/acorex-modules-asset-management-asset-type-section-component.entity-xfRZM5vK.mjs.map +1 -0
  31. package/fesm2022/{acorex-modules-asset-management-asset-type-section.entity-BoONUtWp.mjs → acorex-modules-asset-management-asset-type-section.entity-DdEcyihk.mjs} +2 -2
  32. package/fesm2022/{acorex-modules-asset-management-asset-type-section.entity-BoONUtWp.mjs.map → acorex-modules-asset-management-asset-type-section.entity-DdEcyihk.mjs.map} +1 -1
  33. package/fesm2022/{acorex-modules-asset-management-asset-type.entity-BjaLvZuH.mjs → acorex-modules-asset-management-asset-type.entity-D78ztUZ5.mjs} +108 -28
  34. package/fesm2022/acorex-modules-asset-management-asset-type.entity-D78ztUZ5.mjs.map +1 -0
  35. package/fesm2022/{acorex-modules-asset-management-asset.entity-Bn-WKIkL.mjs → acorex-modules-asset-management-asset.entity-3dFsNRkr.mjs} +2 -205
  36. package/fesm2022/acorex-modules-asset-management-asset.entity-3dFsNRkr.mjs.map +1 -0
  37. package/fesm2022/acorex-modules-asset-management.mjs +1 -1
  38. package/fesm2022/{acorex-modules-auth-acorex-modules-auth-DzCtP4qB.mjs → acorex-modules-auth-acorex-modules-auth-OxprG_fC.mjs} +13 -13
  39. package/fesm2022/{acorex-modules-auth-acorex-modules-auth-DzCtP4qB.mjs.map → acorex-modules-auth-acorex-modules-auth-OxprG_fC.mjs.map} +1 -1
  40. package/fesm2022/{acorex-modules-auth-app-chooser.component-BQF1I-wB.mjs → acorex-modules-auth-app-chooser.component-CVIfaOZn.mjs} +2 -2
  41. package/fesm2022/{acorex-modules-auth-app-chooser.component-BQF1I-wB.mjs.map → acorex-modules-auth-app-chooser.component-CVIfaOZn.mjs.map} +1 -1
  42. package/fesm2022/{acorex-modules-auth-login.module-5ZArig0w.mjs → acorex-modules-auth-login.module-DcHZK-R8.mjs} +4 -4
  43. package/fesm2022/{acorex-modules-auth-login.module-5ZArig0w.mjs.map → acorex-modules-auth-login.module-DcHZK-R8.mjs.map} +1 -1
  44. package/fesm2022/{acorex-modules-auth-master.layout-a4QkegZJ.mjs → acorex-modules-auth-master.layout-BxFGH1Ns.mjs} +2 -2
  45. package/fesm2022/{acorex-modules-auth-master.layout-a4QkegZJ.mjs.map → acorex-modules-auth-master.layout-BxFGH1Ns.mjs.map} +1 -1
  46. package/fesm2022/{acorex-modules-auth-oauth-callback.component-DTxqNJ2C.mjs → acorex-modules-auth-oauth-callback.component-D7wdpp8i.mjs} +2 -2
  47. package/fesm2022/{acorex-modules-auth-oauth-callback.component-DTxqNJ2C.mjs.map → acorex-modules-auth-oauth-callback.component-D7wdpp8i.mjs.map} +1 -1
  48. package/fesm2022/{acorex-modules-auth-password.component-BecuTKvO.mjs → acorex-modules-auth-password.component-BStzALYp.mjs} +2 -2
  49. package/fesm2022/{acorex-modules-auth-password.component-BecuTKvO.mjs.map → acorex-modules-auth-password.component-BStzALYp.mjs.map} +1 -1
  50. package/fesm2022/{acorex-modules-auth-password.component-DmJZoAp1.mjs → acorex-modules-auth-password.component-CD6RCeFv.mjs} +2 -2
  51. package/fesm2022/{acorex-modules-auth-password.component-DmJZoAp1.mjs.map → acorex-modules-auth-password.component-CD6RCeFv.mjs.map} +1 -1
  52. package/fesm2022/{acorex-modules-auth-routes-DMqZIUs0.mjs → acorex-modules-auth-routes-DaEUQGPG.mjs} +2 -2
  53. package/fesm2022/{acorex-modules-auth-routes-DMqZIUs0.mjs.map → acorex-modules-auth-routes-DaEUQGPG.mjs.map} +1 -1
  54. package/fesm2022/{acorex-modules-auth-settings.provider-DkhbuDBO.mjs → acorex-modules-auth-settings.provider-CN7Lb38l.mjs} +26 -31
  55. package/fesm2022/acorex-modules-auth-settings.provider-CN7Lb38l.mjs.map +1 -0
  56. package/fesm2022/{acorex-modules-auth-tenant-chooser.component-C-apfDuQ.mjs → acorex-modules-auth-tenant-chooser.component-B-iqLVe6.mjs} +2 -2
  57. package/fesm2022/{acorex-modules-auth-tenant-chooser.component-C-apfDuQ.mjs.map → acorex-modules-auth-tenant-chooser.component-B-iqLVe6.mjs.map} +1 -1
  58. package/fesm2022/{acorex-modules-auth-two-factor.module-BqbFsq9G.mjs → acorex-modules-auth-two-factor.module-BMKzyFEP.mjs} +2 -2
  59. package/fesm2022/{acorex-modules-auth-two-factor.module-BqbFsq9G.mjs.map → acorex-modules-auth-two-factor.module-BMKzyFEP.mjs.map} +1 -1
  60. package/fesm2022/{acorex-modules-auth-user-sessions.component-D7vXGWMN.mjs → acorex-modules-auth-user-sessions.component-Xnz3S1SD.mjs} +2 -2
  61. package/fesm2022/{acorex-modules-auth-user-sessions.component-D7vXGWMN.mjs.map → acorex-modules-auth-user-sessions.component-Xnz3S1SD.mjs.map} +1 -1
  62. package/fesm2022/acorex-modules-auth.mjs +1 -1
  63. package/fesm2022/acorex-modules-common.mjs +8 -33
  64. package/fesm2022/acorex-modules-common.mjs.map +1 -1
  65. package/fesm2022/acorex-modules-conversation.mjs +1109 -2289
  66. package/fesm2022/acorex-modules-conversation.mjs.map +1 -1
  67. package/fesm2022/{acorex-modules-dashboard-management-acorex-modules-dashboard-management-qboFnd_p.mjs → acorex-modules-dashboard-management-acorex-modules-dashboard-management-WBZHuJyY.mjs} +3 -4
  68. package/fesm2022/acorex-modules-dashboard-management-acorex-modules-dashboard-management-WBZHuJyY.mjs.map +1 -0
  69. package/fesm2022/{acorex-modules-dashboard-management-index-DQHOwMS6.mjs → acorex-modules-dashboard-management-index-oHkAfJTJ.mjs} +2 -2
  70. package/fesm2022/{acorex-modules-dashboard-management-index-DQHOwMS6.mjs.map → acorex-modules-dashboard-management-index-oHkAfJTJ.mjs.map} +1 -1
  71. package/fesm2022/acorex-modules-dashboard-management.mjs +1 -1
  72. package/fesm2022/acorex-modules-document-management.mjs +116 -15
  73. package/fesm2022/acorex-modules-document-management.mjs.map +1 -1
  74. package/fesm2022/acorex-modules-form-template-management.mjs +13 -17
  75. package/fesm2022/acorex-modules-form-template-management.mjs.map +1 -1
  76. package/fesm2022/acorex-modules-locale-management.mjs +68 -70
  77. package/fesm2022/acorex-modules-locale-management.mjs.map +1 -1
  78. package/fesm2022/{acorex-modules-maintenance-management-acorex-modules-maintenance-management-B5wf4zMI.mjs → acorex-modules-maintenance-management-acorex-modules-maintenance-management-C0LLBxMR.mjs} +40 -38
  79. package/fesm2022/acorex-modules-maintenance-management-acorex-modules-maintenance-management-C0LLBxMR.mjs.map +1 -0
  80. package/fesm2022/{acorex-modules-maintenance-management-failure-effect.entity-Cv5KnboB.mjs → acorex-modules-maintenance-management-failure-effect.entity-D8yOqKWQ.mjs} +2 -2
  81. package/fesm2022/{acorex-modules-maintenance-management-failure-effect.entity-Cv5KnboB.mjs.map → acorex-modules-maintenance-management-failure-effect.entity-D8yOqKWQ.mjs.map} +1 -1
  82. package/fesm2022/{acorex-modules-maintenance-management-failure-mode-asset-type.entity-BBL3-hfv.mjs → acorex-modules-maintenance-management-failure-mode-asset-type.entity-CHXkbEHG.mjs} +2 -2
  83. package/fesm2022/{acorex-modules-maintenance-management-failure-mode-asset-type.entity-BBL3-hfv.mjs.map → acorex-modules-maintenance-management-failure-mode-asset-type.entity-CHXkbEHG.mjs.map} +1 -1
  84. package/fesm2022/{acorex-modules-maintenance-management-failure-mode-mechanism.entity-nxOdHZxu.mjs → acorex-modules-maintenance-management-failure-mode-mechanism.entity-yR11e9TU.mjs} +2 -2
  85. package/fesm2022/{acorex-modules-maintenance-management-failure-mode-mechanism.entity-nxOdHZxu.mjs.map → acorex-modules-maintenance-management-failure-mode-mechanism.entity-yR11e9TU.mjs.map} +1 -1
  86. package/fesm2022/{acorex-modules-maintenance-management-failure-mode-solution.entity-ApD80Scc.mjs → acorex-modules-maintenance-management-failure-mode-solution.entity-BD4Uz6G-.mjs} +2 -2
  87. package/fesm2022/{acorex-modules-maintenance-management-failure-mode-solution.entity-ApD80Scc.mjs.map → acorex-modules-maintenance-management-failure-mode-solution.entity-BD4Uz6G-.mjs.map} +1 -1
  88. package/fesm2022/{acorex-modules-maintenance-management-failure-register-cause.entity-CibfwJLG.mjs → acorex-modules-maintenance-management-failure-register-cause.entity-CZFgl-t4.mjs} +2 -2
  89. package/fesm2022/{acorex-modules-maintenance-management-failure-register-cause.entity-CibfwJLG.mjs.map → acorex-modules-maintenance-management-failure-register-cause.entity-CZFgl-t4.mjs.map} +1 -1
  90. package/fesm2022/{acorex-modules-maintenance-management-failure-register-effect.entity-DpoqULBf.mjs → acorex-modules-maintenance-management-failure-register-effect.entity-DQE5nqiN.mjs} +2 -2
  91. package/fesm2022/{acorex-modules-maintenance-management-failure-register-effect.entity-DpoqULBf.mjs.map → acorex-modules-maintenance-management-failure-register-effect.entity-DQE5nqiN.mjs.map} +1 -1
  92. package/fesm2022/{acorex-modules-maintenance-management-failure-register-mechanism.entity-0-J2Hkmn.mjs → acorex-modules-maintenance-management-failure-register-mechanism.entity-C6mhbWzU.mjs} +2 -2
  93. package/fesm2022/{acorex-modules-maintenance-management-failure-register-mechanism.entity-0-J2Hkmn.mjs.map → acorex-modules-maintenance-management-failure-register-mechanism.entity-C6mhbWzU.mjs.map} +1 -1
  94. package/fesm2022/{acorex-modules-maintenance-management-failure-register.entity-C4Az4Rr9.mjs → acorex-modules-maintenance-management-failure-register.entity-DSnrVaWI.mjs} +2 -2
  95. package/fesm2022/{acorex-modules-maintenance-management-failure-register.entity-C4Az4Rr9.mjs.map → acorex-modules-maintenance-management-failure-register.entity-DSnrVaWI.mjs.map} +1 -1
  96. package/fesm2022/{acorex-modules-maintenance-management-failure-severity.entity-BZo6UUun.mjs → acorex-modules-maintenance-management-failure-severity.entity-DZoMhgW7.mjs} +2 -2
  97. package/fesm2022/{acorex-modules-maintenance-management-failure-severity.entity-BZo6UUun.mjs.map → acorex-modules-maintenance-management-failure-severity.entity-DZoMhgW7.mjs.map} +1 -1
  98. package/fesm2022/{acorex-modules-maintenance-management-maintenance-template.entity-DxYY0hpG.mjs → acorex-modules-maintenance-management-maintenance-template.entity-qf2WNKB_.mjs} +2 -2
  99. package/fesm2022/{acorex-modules-maintenance-management-maintenance-template.entity-DxYY0hpG.mjs.map → acorex-modules-maintenance-management-maintenance-template.entity-qf2WNKB_.mjs.map} +1 -1
  100. package/fesm2022/acorex-modules-maintenance-management.mjs +1 -1
  101. package/fesm2022/acorex-modules-notification-management.mjs +34 -38
  102. package/fesm2022/acorex-modules-notification-management.mjs.map +1 -1
  103. package/fesm2022/{acorex-modules-order-management-settings.provider-BzNJIZCu.mjs → acorex-modules-order-management-settings.provider-DF8JQ1PZ.mjs} +6 -11
  104. package/fesm2022/acorex-modules-order-management-settings.provider-DF8JQ1PZ.mjs.map +1 -0
  105. package/fesm2022/acorex-modules-order-management.mjs +2 -2
  106. package/fesm2022/{acorex-modules-organization-management-acorex-modules-organization-management-CUWv9tbF.mjs → acorex-modules-organization-management-acorex-modules-organization-management-BDnIsf2j.mjs} +27 -27
  107. package/fesm2022/{acorex-modules-organization-management-acorex-modules-organization-management-CUWv9tbF.mjs.map → acorex-modules-organization-management-acorex-modules-organization-management-BDnIsf2j.mjs.map} +1 -1
  108. package/fesm2022/{acorex-modules-organization-management-add-business-unit-to-business-unit.command-BKWt1YeU.mjs → acorex-modules-organization-management-add-business-unit-to-business-unit.command-BB8-LTp8.mjs} +2 -2
  109. package/fesm2022/{acorex-modules-organization-management-add-business-unit-to-business-unit.command-BKWt1YeU.mjs.map → acorex-modules-organization-management-add-business-unit-to-business-unit.command-BB8-LTp8.mjs.map} +1 -1
  110. package/fesm2022/{acorex-modules-organization-management-add-position-to-business-unit.command-yRvXPaBm.mjs → acorex-modules-organization-management-add-position-to-business-unit.command-BaEW7Jx8.mjs} +2 -2
  111. package/fesm2022/{acorex-modules-organization-management-add-position-to-business-unit.command-yRvXPaBm.mjs.map → acorex-modules-organization-management-add-position-to-business-unit.command-BaEW7Jx8.mjs.map} +1 -1
  112. package/fesm2022/{acorex-modules-organization-management-business-unit.entity-DwRpPYNe.mjs → acorex-modules-organization-management-business-unit.entity-CuFBCQ7T.mjs} +2 -2
  113. package/fesm2022/{acorex-modules-organization-management-business-unit.entity-DwRpPYNe.mjs.map → acorex-modules-organization-management-business-unit.entity-CuFBCQ7T.mjs.map} +1 -1
  114. package/fesm2022/{acorex-modules-organization-management-chart.entity-lm0udbe7.mjs → acorex-modules-organization-management-chart.entity-B7oSgI4o.mjs} +2 -2
  115. package/fesm2022/{acorex-modules-organization-management-chart.entity-lm0udbe7.mjs.map → acorex-modules-organization-management-chart.entity-B7oSgI4o.mjs.map} +1 -1
  116. package/fesm2022/{acorex-modules-organization-management-company.entity-DW43rdVi.mjs → acorex-modules-organization-management-company.entity-BSDic10Z.mjs} +2 -2
  117. package/fesm2022/{acorex-modules-organization-management-company.entity-DW43rdVi.mjs.map → acorex-modules-organization-management-company.entity-BSDic10Z.mjs.map} +1 -1
  118. package/fesm2022/{acorex-modules-organization-management-entity.provider-DGmP_q74.mjs → acorex-modules-organization-management-entity.provider-BkWwyLUZ.mjs} +15 -15
  119. package/fesm2022/{acorex-modules-organization-management-entity.provider-DGmP_q74.mjs.map → acorex-modules-organization-management-entity.provider-BkWwyLUZ.mjs.map} +1 -1
  120. package/fesm2022/{acorex-modules-organization-management-feature-definition.provider-Bm0hlncD.mjs → acorex-modules-organization-management-feature-definition.provider-D8Tsj3hk.mjs} +2 -2
  121. package/fesm2022/{acorex-modules-organization-management-feature-definition.provider-Bm0hlncD.mjs.map → acorex-modules-organization-management-feature-definition.provider-D8Tsj3hk.mjs.map} +1 -1
  122. package/fesm2022/{acorex-modules-organization-management-job-definition-pages-component.provider-BdMIRbOs.mjs → acorex-modules-organization-management-job-definition-pages-component.provider-cHJU9tB2.mjs} +3 -3
  123. package/fesm2022/{acorex-modules-organization-management-job-definition-pages-component.provider-BdMIRbOs.mjs.map → acorex-modules-organization-management-job-definition-pages-component.provider-cHJU9tB2.mjs.map} +1 -1
  124. package/fesm2022/{acorex-modules-organization-management-job-definition-responsibilities-page.component-DtZTvokB.mjs → acorex-modules-organization-management-job-definition-responsibilities-page.component-Yu4gOQ6K.mjs} +3 -3
  125. package/fesm2022/{acorex-modules-organization-management-job-definition-responsibilities-page.component-DtZTvokB.mjs.map → acorex-modules-organization-management-job-definition-responsibilities-page.component-Yu4gOQ6K.mjs.map} +1 -1
  126. package/fesm2022/{acorex-modules-organization-management-job-definition-skills-page.component-B2uaOaWD.mjs → acorex-modules-organization-management-job-definition-skills-page.component-DV8x-8VB.mjs} +2 -2
  127. package/fesm2022/{acorex-modules-organization-management-job-definition-skills-page.component-B2uaOaWD.mjs.map → acorex-modules-organization-management-job-definition-skills-page.component-DV8x-8VB.mjs.map} +1 -1
  128. package/fesm2022/{acorex-modules-organization-management-job-definition.entity-enxYD1x1.mjs → acorex-modules-organization-management-job-definition.entity-DAo8xR1H.mjs} +2 -2
  129. package/fesm2022/{acorex-modules-organization-management-job-definition.entity-enxYD1x1.mjs.map → acorex-modules-organization-management-job-definition.entity-DAo8xR1H.mjs.map} +1 -1
  130. package/fesm2022/{acorex-modules-organization-management-job-level.datasource-CRm1uNQa.mjs → acorex-modules-organization-management-job-level.datasource-C7ElEuZx.mjs} +2 -2
  131. package/fesm2022/{acorex-modules-organization-management-job-level.datasource-CRm1uNQa.mjs.map → acorex-modules-organization-management-job-level.datasource-C7ElEuZx.mjs.map} +1 -1
  132. package/fesm2022/{acorex-modules-organization-management-job-level.entity-D_m_u12t.mjs → acorex-modules-organization-management-job-level.entity-Dw3YK9-O.mjs} +2 -2
  133. package/fesm2022/{acorex-modules-organization-management-job-level.entity-D_m_u12t.mjs.map → acorex-modules-organization-management-job-level.entity-Dw3YK9-O.mjs.map} +1 -1
  134. package/fesm2022/{acorex-modules-organization-management-menu.provider-DZSDOHOa.mjs → acorex-modules-organization-management-menu.provider-DWt62uxv.mjs} +2 -2
  135. package/fesm2022/{acorex-modules-organization-management-menu.provider-DZSDOHOa.mjs.map → acorex-modules-organization-management-menu.provider-DWt62uxv.mjs.map} +1 -1
  136. package/fesm2022/{acorex-modules-organization-management-org-chart.page-BUSEFJJZ.mjs → acorex-modules-organization-management-org-chart.page-Rh8xmXaj.mjs} +2 -2
  137. package/fesm2022/{acorex-modules-organization-management-org-chart.page-BUSEFJJZ.mjs.map → acorex-modules-organization-management-org-chart.page-Rh8xmXaj.mjs.map} +1 -1
  138. package/fesm2022/{acorex-modules-organization-management-permission-definition.provider-DEfUgyRh.mjs → acorex-modules-organization-management-permission-definition.provider-3TD89ErD.mjs} +2 -2
  139. package/fesm2022/{acorex-modules-organization-management-permission-definition.provider-DEfUgyRh.mjs.map → acorex-modules-organization-management-permission-definition.provider-3TD89ErD.mjs.map} +1 -1
  140. package/fesm2022/{acorex-modules-organization-management-position.entity-D1JU0rla.mjs → acorex-modules-organization-management-position.entity-Cysj_53n.mjs} +2 -2
  141. package/fesm2022/{acorex-modules-organization-management-position.entity-D1JU0rla.mjs.map → acorex-modules-organization-management-position.entity-Cysj_53n.mjs.map} +1 -1
  142. package/fesm2022/{acorex-modules-organization-management-remove-position-from-business-unit.command-D2WMXNJg.mjs → acorex-modules-organization-management-remove-position-from-business-unit.command-BkQyq1ho.mjs} +2 -2
  143. package/fesm2022/{acorex-modules-organization-management-remove-position-from-business-unit.command-D2WMXNJg.mjs.map → acorex-modules-organization-management-remove-position-from-business-unit.command-BkQyq1ho.mjs.map} +1 -1
  144. package/fesm2022/{acorex-modules-organization-management-replace-position-assignee.command-DyJIOBOp.mjs → acorex-modules-organization-management-replace-position-assignee.command-Cf8VR0tX.mjs} +2 -2
  145. package/fesm2022/{acorex-modules-organization-management-replace-position-assignee.command-DyJIOBOp.mjs.map → acorex-modules-organization-management-replace-position-assignee.command-Cf8VR0tX.mjs.map} +1 -1
  146. package/fesm2022/{acorex-modules-organization-management-responsibilities-matrix-widget-edit.component-BTXGfRVf.mjs → acorex-modules-organization-management-responsibilities-matrix-widget-edit.component-BeQ-nXpS.mjs} +2 -2
  147. package/fesm2022/{acorex-modules-organization-management-responsibilities-matrix-widget-edit.component-BTXGfRVf.mjs.map → acorex-modules-organization-management-responsibilities-matrix-widget-edit.component-BeQ-nXpS.mjs.map} +1 -1
  148. package/fesm2022/{acorex-modules-organization-management-responsibilities-matrix-widget-view.component-Cv_Aicyi.mjs → acorex-modules-organization-management-responsibilities-matrix-widget-view.component-Ie_39X99.mjs} +2 -2
  149. package/fesm2022/{acorex-modules-organization-management-responsibilities-matrix-widget-view.component-Cv_Aicyi.mjs.map → acorex-modules-organization-management-responsibilities-matrix-widget-view.component-Ie_39X99.mjs.map} +1 -1
  150. package/fesm2022/{acorex-modules-organization-management-responsibilities-matrix.component-42Aqvq6J.mjs → acorex-modules-organization-management-responsibilities-matrix.component-58s3Qfyg.mjs} +2 -2
  151. package/fesm2022/{acorex-modules-organization-management-responsibilities-matrix.component-42Aqvq6J.mjs.map → acorex-modules-organization-management-responsibilities-matrix.component-58s3Qfyg.mjs.map} +1 -1
  152. package/fesm2022/{acorex-modules-organization-management-responsibility-level.entity-DIy5Kv_4.mjs → acorex-modules-organization-management-responsibility-level.entity-DWWQB7ke.mjs} +2 -2
  153. package/fesm2022/{acorex-modules-organization-management-responsibility-level.entity-DIy5Kv_4.mjs.map → acorex-modules-organization-management-responsibility-level.entity-DWWQB7ke.mjs.map} +1 -1
  154. package/fesm2022/{acorex-modules-organization-management-responsibility.entity-BBlERaap.mjs → acorex-modules-organization-management-responsibility.entity-C4V55fKt.mjs} +2 -2
  155. package/fesm2022/{acorex-modules-organization-management-responsibility.entity-BBlERaap.mjs.map → acorex-modules-organization-management-responsibility.entity-C4V55fKt.mjs.map} +1 -1
  156. package/fesm2022/{acorex-modules-organization-management-settings.provider-BohjJ4JD.mjs → acorex-modules-organization-management-settings.provider-BD70P1XV.mjs} +21 -24
  157. package/fesm2022/acorex-modules-organization-management-settings.provider-BD70P1XV.mjs.map +1 -0
  158. package/fesm2022/{acorex-modules-organization-management-team-business-unit.entity-UDotxAM4.mjs → acorex-modules-organization-management-team-business-unit.entity-B5T1fYAF.mjs} +2 -2
  159. package/fesm2022/{acorex-modules-organization-management-team-business-unit.entity-UDotxAM4.mjs.map → acorex-modules-organization-management-team-business-unit.entity-B5T1fYAF.mjs.map} +1 -1
  160. package/fesm2022/{acorex-modules-organization-management-team-member-role.entity-DfJ-QUdc.mjs → acorex-modules-organization-management-team-member-role.entity-dPp_dK-g.mjs} +2 -2
  161. package/fesm2022/{acorex-modules-organization-management-team-member-role.entity-DfJ-QUdc.mjs.map → acorex-modules-organization-management-team-member-role.entity-dPp_dK-g.mjs.map} +1 -1
  162. package/fesm2022/{acorex-modules-organization-management-team-member.entity-C13rpUNN.mjs → acorex-modules-organization-management-team-member.entity-CZPmF9f6.mjs} +2 -2
  163. package/fesm2022/{acorex-modules-organization-management-team-member.entity-C13rpUNN.mjs.map → acorex-modules-organization-management-team-member.entity-CZPmF9f6.mjs.map} +1 -1
  164. package/fesm2022/{acorex-modules-organization-management-team.entity-CTajHYMs.mjs → acorex-modules-organization-management-team.entity-CCfWLgDx.mjs} +2 -2
  165. package/fesm2022/{acorex-modules-organization-management-team.entity-CTajHYMs.mjs.map → acorex-modules-organization-management-team.entity-CCfWLgDx.mjs.map} +1 -1
  166. package/fesm2022/acorex-modules-organization-management.mjs +1 -1
  167. package/fesm2022/{acorex-modules-platform-dev-tools-settings.provider-CGyf-4eq.mjs → acorex-modules-platform-dev-tools-settings.provider-DKmgBUYt.mjs} +2 -2
  168. package/fesm2022/acorex-modules-platform-dev-tools-settings.provider-DKmgBUYt.mjs.map +1 -0
  169. package/fesm2022/acorex-modules-platform-dev-tools.mjs +2 -2
  170. package/fesm2022/{acorex-modules-platform-management-acorex-modules-platform-management-DCR1ziGj.mjs → acorex-modules-platform-management-acorex-modules-platform-management-D0D56pWx.mjs} +12 -4
  171. package/fesm2022/acorex-modules-platform-management-acorex-modules-platform-management-D0D56pWx.mjs.map +1 -0
  172. package/fesm2022/acorex-modules-platform-management-entity-master-actions-for-ai.util-OCk5eqQz.mjs +56 -0
  173. package/fesm2022/acorex-modules-platform-management-entity-master-actions-for-ai.util-OCk5eqQz.mjs.map +1 -0
  174. package/fesm2022/acorex-modules-platform-management-list-platform-navigation-for-ai.query-C3-eBMwF.mjs +198 -0
  175. package/fesm2022/acorex-modules-platform-management-list-platform-navigation-for-ai.query-C3-eBMwF.mjs.map +1 -0
  176. package/fesm2022/{acorex-modules-platform-management-list-registered-entities.query-B6-zV_Ml.mjs → acorex-modules-platform-management-list-registered-entities.query-BZVD9YPU.mjs} +26 -4
  177. package/fesm2022/acorex-modules-platform-management-list-registered-entities.query-BZVD9YPU.mjs.map +1 -0
  178. package/fesm2022/{acorex-modules-platform-management-menu-list.component-ClShYP8I.mjs → acorex-modules-platform-management-menu-list.component-BE9_j1Xy.mjs} +2 -2
  179. package/fesm2022/{acorex-modules-platform-management-menu-list.component-ClShYP8I.mjs.map → acorex-modules-platform-management-menu-list.component-BE9_j1Xy.mjs.map} +1 -1
  180. package/fesm2022/acorex-modules-platform-management.mjs +1 -1
  181. package/fesm2022/{acorex-modules-settings-management-acorex-modules-settings-management-7TUWK_qS.mjs → acorex-modules-settings-management-acorex-modules-settings-management-DHihkQXi.mjs} +88 -13
  182. package/fesm2022/acorex-modules-settings-management-acorex-modules-settings-management-DHihkQXi.mjs.map +1 -0
  183. package/fesm2022/{acorex-modules-settings-management-permission-definition.provider-DWSlCjno.mjs → acorex-modules-settings-management-permission-definition.provider-DZoXbvt_.mjs} +2 -2
  184. package/fesm2022/{acorex-modules-settings-management-permission-definition.provider-DWSlCjno.mjs.map → acorex-modules-settings-management-permission-definition.provider-DZoXbvt_.mjs.map} +1 -1
  185. package/fesm2022/{acorex-modules-settings-management-setting-page.component-DukQDWHe.mjs → acorex-modules-settings-management-setting-page.component-B6UoszKZ.mjs} +5 -4
  186. package/fesm2022/acorex-modules-settings-management-setting-page.component-B6UoszKZ.mjs.map +1 -0
  187. package/fesm2022/{acorex-modules-settings-management-setting-view.component-C-PiEhLL.mjs → acorex-modules-settings-management-setting-view.component-BGCXJQ_L.mjs} +2 -2
  188. package/fesm2022/{acorex-modules-settings-management-setting-view.component-C-PiEhLL.mjs.map → acorex-modules-settings-management-setting-view.component-BGCXJQ_L.mjs.map} +1 -1
  189. package/fesm2022/acorex-modules-settings-management.mjs +1 -1
  190. package/fesm2022/{acorex-modules-task-management-acorex-modules-task-management-C-inbbcy.mjs → acorex-modules-task-management-acorex-modules-task-management-ZcP94xuL.mjs} +25 -28
  191. package/fesm2022/acorex-modules-task-management-acorex-modules-task-management-ZcP94xuL.mjs.map +1 -0
  192. package/fesm2022/{acorex-modules-task-management-task-board.page-BOrgjwax.mjs → acorex-modules-task-management-task-board.page-CEW3SrBz.mjs} +2 -2
  193. package/fesm2022/{acorex-modules-task-management-task-board.page-BOrgjwax.mjs.map → acorex-modules-task-management-task-board.page-CEW3SrBz.mjs.map} +1 -1
  194. package/fesm2022/acorex-modules-task-management.mjs +1 -1
  195. package/fesm2022/acorex-modules-tenant-management.mjs +3 -7
  196. package/fesm2022/acorex-modules-tenant-management.mjs.map +1 -1
  197. package/package.json +2 -2
  198. package/platform-management/README.md +4 -0
  199. package/types/acorex-modules-ai-management.d.ts +150 -527
  200. package/types/acorex-modules-asset-management.d.ts +7 -79
  201. package/types/acorex-modules-common.d.ts +3 -6
  202. package/types/acorex-modules-conversation.d.ts +60 -4
  203. package/types/acorex-modules-document-management.d.ts +20 -8
  204. package/types/acorex-modules-maintenance-management.d.ts +0 -2
  205. package/types/acorex-modules-notification-management.d.ts +0 -3
  206. package/types/acorex-modules-settings-management.d.ts +3 -0
  207. package/types/acorex-modules-task-management.d.ts +0 -1
  208. package/types/acorex-modules-tenant-management.d.ts +0 -1
  209. package/fesm2022/acorex-modules-ai-management-acorex-modules-ai-management-DZ_SXRAW.mjs +0 -8782
  210. package/fesm2022/acorex-modules-ai-management-acorex-modules-ai-management-DZ_SXRAW.mjs.map +0 -1
  211. package/fesm2022/acorex-modules-ai-management-agent-registry-tool-configurator-widget-edit.component-CwLff8ut.mjs.map +0 -1
  212. package/fesm2022/acorex-modules-ai-management-agent.entity-CsiCzwYK.mjs.map +0 -1
  213. package/fesm2022/acorex-modules-ai-management-ai-delegated-agent-transcript-popup.component-BWxdBe9t.mjs +0 -1255
  214. package/fesm2022/acorex-modules-ai-management-ai-delegated-agent-transcript-popup.component-BWxdBe9t.mjs.map +0 -1
  215. package/fesm2022/acorex-modules-ai-management-assist-delegated-agent-configurator-widget-edit.component-DQWeuAd6.mjs.map +0 -1
  216. package/fesm2022/acorex-modules-ai-management-index-BFMvZNvI.mjs +0 -2
  217. package/fesm2022/acorex-modules-ai-management-index-BFMvZNvI.mjs.map +0 -1
  218. package/fesm2022/acorex-modules-asset-management-acorex-modules-asset-management-p_zMwIBs.mjs.map +0 -1
  219. package/fesm2022/acorex-modules-asset-management-asset-state-history.entity-Cwics4Zo.mjs +0 -258
  220. package/fesm2022/acorex-modules-asset-management-asset-state-history.entity-Cwics4Zo.mjs.map +0 -1
  221. package/fesm2022/acorex-modules-asset-management-asset-status.rules-B7KwWQEe.mjs +0 -98
  222. package/fesm2022/acorex-modules-asset-management-asset-status.rules-B7KwWQEe.mjs.map +0 -1
  223. package/fesm2022/acorex-modules-asset-management-asset-type-section-component.entity-B_ct599s.mjs.map +0 -1
  224. package/fesm2022/acorex-modules-asset-management-asset-type.entity-BjaLvZuH.mjs.map +0 -1
  225. package/fesm2022/acorex-modules-asset-management-asset.entity-Bn-WKIkL.mjs.map +0 -1
  226. package/fesm2022/acorex-modules-asset-management-assetLifecycle-state.provider-DZ5r2zx7.mjs +0 -192
  227. package/fesm2022/acorex-modules-asset-management-assetLifecycle-state.provider-DZ5r2zx7.mjs.map +0 -1
  228. package/fesm2022/acorex-modules-asset-management-status.provider-C41t4e2U.mjs +0 -363
  229. package/fesm2022/acorex-modules-asset-management-status.provider-C41t4e2U.mjs.map +0 -1
  230. package/fesm2022/acorex-modules-auth-settings.provider-DkhbuDBO.mjs.map +0 -1
  231. package/fesm2022/acorex-modules-dashboard-management-acorex-modules-dashboard-management-qboFnd_p.mjs.map +0 -1
  232. package/fesm2022/acorex-modules-maintenance-management-acorex-modules-maintenance-management-B5wf4zMI.mjs.map +0 -1
  233. package/fesm2022/acorex-modules-order-management-settings.provider-BzNJIZCu.mjs.map +0 -1
  234. package/fesm2022/acorex-modules-organization-management-settings.provider-BohjJ4JD.mjs.map +0 -1
  235. package/fesm2022/acorex-modules-platform-dev-tools-settings.provider-CGyf-4eq.mjs.map +0 -1
  236. package/fesm2022/acorex-modules-platform-management-acorex-modules-platform-management-DCR1ziGj.mjs.map +0 -1
  237. package/fesm2022/acorex-modules-platform-management-list-registered-entities.query-B6-zV_Ml.mjs.map +0 -1
  238. package/fesm2022/acorex-modules-settings-management-acorex-modules-settings-management-7TUWK_qS.mjs.map +0 -1
  239. package/fesm2022/acorex-modules-settings-management-setting-page.component-DukQDWHe.mjs.map +0 -1
  240. package/fesm2022/acorex-modules-task-management-acorex-modules-task-management-C-inbbcy.mjs.map +0 -1
@@ -1,1255 +0,0 @@
1
- import * as i2 from '@acorex/components/button';
2
- import { AXButtonModule } from '@acorex/components/button';
3
- import { AXBasePageComponent } from '@acorex/components/page';
4
- import * as i8 from '@acorex/core/translation';
5
- import { AXTranslationModule } from '@acorex/core/translation';
6
- import { AXPLayoutRendererComponent } from '@acorex/platform/layout/builder';
7
- import * as i6 from '@angular/common';
8
- import { isPlatformBrowser, CommonModule } from '@angular/common';
9
- import * as i0 from '@angular/core';
10
- import { inject, PLATFORM_ID, signal, computed, ChangeDetectionStrategy, Component } from '@angular/core';
11
- import { A as AXMAiChatToolExecuteService, a as axmBuildChatDisplayItems, p as parseAssistantContentForDisplay, b as parseAssistantMessageForDisplayFromMessage, c as axpAiChatMessageGetText, d as AIMANAGEMENT_CHAT_SYNTHESIZE_SPEECH_COMMAND_KEY, e as AIMANAGEMENT_CHAT_GENERATE_IMAGE_COMMAND_KEY, f as axpAiChatToolOrAgentResultBodyJson, g as AXMAiChatToolImagePreviewComponent, h as AXMAiChatToolAudioPreviewComponent } from './acorex-modules-ai-management-acorex-modules-ai-management-DZ_SXRAW.mjs';
12
-
13
- //#region ---- Imports ----
14
- /** Keep in sync with {@link buildAgentSubRunUserMessage} in `ai-engine.support.ts`. */
15
- const AXM_AI_SPECIALIST_DELEGATION_PREFIX = 'Specialist task (structured input):';
16
- const AXM_AI_SPECIALIST_DELEGATION_CONTEXT_MARKER = '\n\nRecent conversation (for context):\n';
17
- //#endregion
18
- //#region ---- Component ----
19
- class AXMAiDelegatedAgentTranscriptPopupComponent extends AXBasePageComponent {
20
- constructor() {
21
- super(...arguments);
22
- //#region ---- Services & Dependencies ----
23
- this.chatToolExecute = inject(AXMAiChatToolExecuteService);
24
- this.platformId = inject(PLATFORM_ID);
25
- //#endregion
26
- //#region ---- State (merged from popup data) ----
27
- /** Specialist transcript lines (same shape as direct agent chat). */
28
- this.messages = [];
29
- this.transcript = signal([], ...(ngDevMode ? [{ debugName: "transcript" }] : /* istanbul ignore next */ []));
30
- this.emptyNotice = computed(() => this.emptyHint?.trim() || null, ...(ngDevMode ? [{ debugName: "emptyNotice" }] : /* istanbul ignore next */ []));
31
- this.displayItems = computed(() => axmBuildChatDisplayItems(this.transcript()), ...(ngDevMode ? [{ debugName: "displayItems" }] : /* istanbul ignore next */ []));
32
- }
33
- //#endregion
34
- //#region ---- Lifecycle ----
35
- ngOnInit() {
36
- super.ngOnInit();
37
- this.transcript.set(this.messages ?? []);
38
- }
39
- //#endregion
40
- //#region ---- UI Handlers ----
41
- /**
42
- * Re-runs the same registry command/query as the main chat tool block (toast with result).
43
- */
44
- async openToolExecuteDialog(call) {
45
- await this.chatToolExecute.openToolExecuteDialog(call);
46
- }
47
- /** Closes the popup (same pattern as other {@link AXBasePageComponent} dialogs). */
48
- closePopup() {
49
- this.close();
50
- }
51
- /**
52
- * Downloads this specialist transcript as pretty-printed JSON (same approach as
53
- * {@link AXMAiChatPageComponent.downloadMessagesJson}).
54
- */
55
- downloadMessagesJson() {
56
- if (!isPlatformBrowser(this.platformId)) {
57
- return;
58
- }
59
- const data = this.cloneMessagesForJsonViewer(this.transcript());
60
- const json = JSON.stringify(data, null, 2);
61
- const blob = new Blob([json], { type: 'application/json;charset=utf-8' });
62
- const url = URL.createObjectURL(blob);
63
- const anchor = document.createElement('a');
64
- anchor.href = url;
65
- anchor.download = this.buildDelegatedTranscriptFilename();
66
- anchor.click();
67
- URL.revokeObjectURL(url);
68
- }
69
- cloneMessagesForJsonViewer(messages) {
70
- try {
71
- return structuredClone(messages);
72
- }
73
- catch {
74
- return JSON.parse(JSON.stringify(messages));
75
- }
76
- }
77
- buildDelegatedTranscriptFilename() {
78
- const stamp = new Date().toISOString().replace(/[:.]/g, '-');
79
- return `ai-delegated-agent-transcript-${stamp}.json`;
80
- }
81
- //#endregion
82
- //#region ---- Presentation (mirrors {@link AXMAiChatPageComponent}) ----
83
- /**
84
- * Specialist sub-views use the same tool I/O layout as direct agent chat (not supervisor mini-chat).
85
- */
86
- showDelegatedAgentMiniChat(_toolName) {
87
- return false;
88
- }
89
- parseAssistantMessageForDisplay(raw) {
90
- return parseAssistantContentForDisplay(raw);
91
- }
92
- parseAssistantMessageForDisplayFromMessage(message) {
93
- return parseAssistantMessageForDisplayFromMessage(message);
94
- }
95
- toolTurnPreamblePlain(item) {
96
- return item.preambleMessages
97
- .map((m) => axpAiChatMessageGetText(m))
98
- .join('\n')
99
- .trim();
100
- }
101
- toolTurnPreambleParsed(item) {
102
- const thinkParts = [];
103
- const bodyParts = [];
104
- for (const m of item.preambleMessages) {
105
- const parsed = this.parseAssistantMessageForDisplayFromMessage(m);
106
- if (parsed.thinking?.trim()) {
107
- thinkParts.push(parsed.thinking.trim());
108
- }
109
- if (parsed.body.trim()) {
110
- bodyParts.push(parsed.body.trim());
111
- }
112
- }
113
- return {
114
- thinking: thinkParts.length > 0 ? thinkParts.join('\n\n') : null,
115
- body: bodyParts.join('\n\n'),
116
- };
117
- }
118
- chatMessageText(message) {
119
- return axpAiChatMessageGetText(message);
120
- }
121
- /**
122
- * When the specialist user message was built with {@link buildAgentSubRunUserMessage}, show only
123
- * the structured `query` in the user bubble and pretty-print the transcript tail as JSON.
124
- */
125
- specialistDelegationUserDisplay(message) {
126
- if (message.role !== 'user') {
127
- return null;
128
- }
129
- const textParts = message.responses.filter((r) => r.type === 'text');
130
- if (textParts.length === 0) {
131
- return null;
132
- }
133
- const raw = textParts.map((r) => r.content).join('\n\n');
134
- return this.parseSpecialistDelegationUserContent(raw);
135
- }
136
- parseSpecialistDelegationUserContent(raw) {
137
- const t = raw.trim();
138
- if (!t.startsWith(AXM_AI_SPECIALIST_DELEGATION_PREFIX)) {
139
- return null;
140
- }
141
- const idx = t.indexOf(AXM_AI_SPECIALIST_DELEGATION_CONTEXT_MARKER);
142
- if (idx < 0) {
143
- return null;
144
- }
145
- const head = t.slice(AXM_AI_SPECIALIST_DELEGATION_PREFIX.length, idx).trim();
146
- const tail = t.slice(idx + AXM_AI_SPECIALIST_DELEGATION_CONTEXT_MARKER.length).trimEnd();
147
- return {
148
- queryText: this.extractQueryFromDelegationArgsJson(head),
149
- contextJsonDisplay: this.formatDelegationContextTailAsJson(tail),
150
- };
151
- }
152
- extractQueryFromDelegationArgsJson(head) {
153
- try {
154
- const args = JSON.parse(head);
155
- const preferKeys = ['query', 'task', 'prompt', 'message', 'userMessage', 'instruction', 'goal'];
156
- for (const k of preferKeys) {
157
- const v = args[k];
158
- if (typeof v === 'string' && v.trim()) {
159
- return v.trim();
160
- }
161
- }
162
- const keys = Object.keys(args);
163
- if (keys.length === 1) {
164
- const only = args[keys[0]];
165
- if (typeof only === 'string' && only.trim()) {
166
- return only.trim();
167
- }
168
- }
169
- return JSON.stringify(args, null, 2);
170
- }
171
- catch {
172
- return head.trim();
173
- }
174
- }
175
- formatDelegationContextTailAsJson(tail) {
176
- const t = tail.trim();
177
- if (!t) {
178
- return JSON.stringify({ conversation: [] }, null, 2);
179
- }
180
- try {
181
- return JSON.stringify(JSON.parse(t), null, 2);
182
- }
183
- catch {
184
- const lines = t.split('\n');
185
- const conversation = [];
186
- for (const line of lines) {
187
- const m = /^\[(\w+)\]\s*(.*)$/s.exec(line);
188
- if (m) {
189
- conversation.push({ role: m[1], text: m[2] ?? '' });
190
- }
191
- else if (line.trim()) {
192
- conversation.push({ role: 'line', text: line });
193
- }
194
- }
195
- return JSON.stringify({ conversation }, null, 2);
196
- }
197
- }
198
- userMessageAttachmentOnlyBubble(message) {
199
- return (message.role === 'user' &&
200
- message.responses.length > 0 &&
201
- message.responses.every((r) => r.type === 'image' || r.type === 'audio' || r.type === 'file'));
202
- }
203
- asAssistantLayoutNode(message) {
204
- if (message.role !== 'assistant') {
205
- return null;
206
- }
207
- const nodeSeg = message.responses.find((r) => r.type === 'node');
208
- if (!nodeSeg || nodeSeg.type !== 'node') {
209
- return null;
210
- }
211
- const c = nodeSeg.content;
212
- if (c != null &&
213
- typeof c === 'object' &&
214
- !Array.isArray(c) &&
215
- typeof c['type'] === 'string') {
216
- return c;
217
- }
218
- return null;
219
- }
220
- getSynthesizeSpeechPreview(pair) {
221
- if (pair.call.name !== AIMANAGEMENT_CHAT_SYNTHESIZE_SPEECH_COMMAND_KEY) {
222
- return null;
223
- }
224
- const raw = pair.outputContent?.trim();
225
- if (!raw) {
226
- return null;
227
- }
228
- try {
229
- const parsed = JSON.parse(raw);
230
- if (parsed['success'] !== true || !parsed['data'] || typeof parsed['data'] !== 'object') {
231
- return null;
232
- }
233
- const data = parsed['data'];
234
- const fileId = typeof data['fileId'] === 'string' ? data['fileId'].trim() : '';
235
- const text = typeof data['text'] === 'string' ? data['text'].trim() : '';
236
- const mimeType = typeof data['mimeType'] === 'string' && data['mimeType'].trim() ? data['mimeType'].trim() : 'audio/mpeg';
237
- const title = text ? (text.length > 80 ? `${text.slice(0, 80)}…` : text) : 'Generated speech';
238
- if (fileId) {
239
- return { fileId, mimeType, title };
240
- }
241
- return null;
242
- }
243
- catch {
244
- return null;
245
- }
246
- }
247
- getGenerateImagePreview(pair) {
248
- if (pair.call.name !== AIMANAGEMENT_CHAT_GENERATE_IMAGE_COMMAND_KEY) {
249
- return null;
250
- }
251
- const raw = pair.outputContent?.trim();
252
- if (!raw) {
253
- return null;
254
- }
255
- try {
256
- const parsed = JSON.parse(raw);
257
- if (parsed['success'] !== true || !parsed['data'] || typeof parsed['data'] !== 'object') {
258
- return null;
259
- }
260
- const data = parsed['data'];
261
- const fileId = typeof data['fileId'] === 'string' ? data['fileId'].trim() : '';
262
- const imageUrl = typeof data['imageUrl'] === 'string' ? data['imageUrl'].trim() : '';
263
- const prompt = typeof data['prompt'] === 'string' ? data['prompt'].trim() : '';
264
- const alt = prompt || 'Generated image';
265
- if (fileId) {
266
- return { fileId, alt };
267
- }
268
- if (imageUrl) {
269
- return { imageUrl, alt };
270
- }
271
- return null;
272
- }
273
- catch {
274
- return null;
275
- }
276
- }
277
- parseDelegatedAgentToolResult(content) {
278
- const trimmed = content?.trim() ?? '';
279
- if (!trimmed) {
280
- return {};
281
- }
282
- try {
283
- const o = JSON.parse(trimmed);
284
- if (typeof o['success'] === 'boolean' && o['success'] === false) {
285
- const errRaw = o['error'];
286
- const err = typeof errRaw === 'string' && errRaw.trim() ? errRaw.trim() : 'Request failed.';
287
- return { error: err };
288
- }
289
- if (o['success'] !== true || !o['data'] || typeof o['data'] !== 'object' || Array.isArray(o['data'])) {
290
- return {};
291
- }
292
- const d = o['data'];
293
- const agentName = typeof d['agentName'] === 'string' && d['agentName'].trim() ? d['agentName'].trim() : undefined;
294
- const answerRaw = typeof d['answer'] === 'string' ? d['answer'] : undefined;
295
- const answer = answerRaw?.trim() ? answerRaw : undefined;
296
- return {
297
- ...(agentName ? { agentName } : {}),
298
- ...(answer ? { answer } : {}),
299
- };
300
- }
301
- catch {
302
- return {};
303
- }
304
- }
305
- getAgentDelegatedPromptPreview(argumentsValue) {
306
- const obj = this.normalizeDelegatedAgentToolArgs(argumentsValue);
307
- if (!obj) {
308
- return this.formatToolArguments(argumentsValue);
309
- }
310
- const preferKeys = ['query', 'task', 'prompt', 'message', 'userMessage', 'instruction', 'goal'];
311
- for (const k of preferKeys) {
312
- const v = obj[k];
313
- if (typeof v === 'string' && v.trim()) {
314
- return v.trim();
315
- }
316
- }
317
- const keys = Object.keys(obj);
318
- if (keys.length === 1) {
319
- const only = obj[keys[0]];
320
- if (typeof only === 'string' && only.trim()) {
321
- return only.trim();
322
- }
323
- }
324
- try {
325
- return JSON.stringify(obj, null, 2);
326
- }
327
- catch {
328
- return this.formatToolArguments(argumentsValue);
329
- }
330
- }
331
- normalizeDelegatedAgentToolArgs(argumentsValue) {
332
- if (argumentsValue == null) {
333
- return null;
334
- }
335
- if (typeof argumentsValue === 'object' && !Array.isArray(argumentsValue)) {
336
- return { ...argumentsValue };
337
- }
338
- if (typeof argumentsValue === 'string') {
339
- const t = argumentsValue.trim();
340
- if (!t) {
341
- return null;
342
- }
343
- try {
344
- const p = JSON.parse(t);
345
- if (p != null && typeof p === 'object' && !Array.isArray(p)) {
346
- return p;
347
- }
348
- }
349
- catch {
350
- return null;
351
- }
352
- }
353
- return null;
354
- }
355
- formatToolArguments(argumentsValue) {
356
- if (argumentsValue === undefined || argumentsValue === null) {
357
- return '';
358
- }
359
- if (typeof argumentsValue === 'string') {
360
- return this.formatJsonStringIfPossible(argumentsValue);
361
- }
362
- try {
363
- return JSON.stringify(argumentsValue, null, 2);
364
- }
365
- catch {
366
- return String(argumentsValue);
367
- }
368
- }
369
- formatToolResultBody(content) {
370
- return this.formatJsonStringIfPossible(content);
371
- }
372
- formatToolMessageSummary(message) {
373
- const tr = message.responses.find((r) => r.type === 'tool_result' || r.type === 'agent_result');
374
- if (message.role !== 'tool' || !tr) {
375
- return message.name?.trim() || message.role;
376
- }
377
- const label = message.name?.trim() || 'tool';
378
- const raw = axpAiChatToolOrAgentResultBodyJson(message);
379
- if (!raw) {
380
- return label;
381
- }
382
- try {
383
- const parsed = JSON.parse(raw);
384
- if (typeof parsed.success === 'boolean') {
385
- return parsed.success ? `${label} · ok` : `${label} · failed`;
386
- }
387
- }
388
- catch {
389
- // Not JSON — show compact raw fragment
390
- }
391
- return raw.length > 100 ? `${label} · ${raw.slice(0, 100)}…` : `${label} · ${raw}`;
392
- }
393
- formatJsonStringIfPossible(raw) {
394
- const trimmed = raw.trim();
395
- if (!trimmed) {
396
- return '';
397
- }
398
- try {
399
- const parsed = JSON.parse(trimmed);
400
- return JSON.stringify(parsed, null, 2);
401
- }
402
- catch {
403
- return raw;
404
- }
405
- }
406
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXMAiDelegatedAgentTranscriptPopupComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
407
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: AXMAiDelegatedAgentTranscriptPopupComponent, isStandalone: true, selector: "axm-ai-delegated-agent-transcript-popup", usesInheritance: true, ngImport: i0, template: `
408
- <div class="flex flex-col min-h-0">
409
- <div
410
- class="flex flex-wrap items-center justify-end gap-2 mb-3 pb-2 border-b border-default/70 dark:border-darker"
411
- role="toolbar"
412
- [attr.aria-label]="'@ai-management:chat.delegated-agent-transcript-toolbar-aria' | translate | async"
413
- >
414
- <ax-button
415
- look="outline"
416
- color="secondary"
417
- [text]="('@general:actions.close.title' | translate | async) ?? ''"
418
- [attr.aria-label]="('@general:actions.close.title' | translate | async) ?? ''"
419
- (onClick)="closePopup()"
420
- ></ax-button>
421
- <ax-button
422
- look="outline"
423
- color="secondary"
424
- [text]="('@ai-management:chat.download-json' | translate | async) ?? ''"
425
- [attr.aria-label]="('@ai-management:chat.download-json' | translate | async) ?? ''"
426
- (onClick)="downloadMessagesJson()"
427
- ></ax-button>
428
- </div>
429
- <div
430
- class="max-h-[min(75vh,40rem)] overflow-y-auto px-1 py-2 min-h-0"
431
- role="log"
432
- [attr.aria-label]="'@ai-management:chat.delegated-agent-transcript-aria' | translate | async"
433
- >
434
- @if (transcript().length === 0 && emptyNotice(); as note) {
435
- <p class="mb-3 text-sm text-muted">{{ note }}</p>
436
- }
437
- <div class="mx-auto w-full space-y-8 max-w-3xl">
438
- @for (item of displayItems(); track $index) {
439
- @if (item.kind === 'tool-turn') {
440
- <div class="w-full min-w-0 text-sm leading-relaxed text-on-lightest">
441
- <div class="flex flex-col gap-2 min-w-0">
442
- @if (!(toolTurnPreamblePlain(item) === '' && item.pairs.length)) {
443
- @let parsedTurn = toolTurnPreambleParsed(item);
444
- @if (parsedTurn.thinking) {
445
- <details
446
- class="rounded border border-default/70 dark:border-darker bg-default-50/80 dark:bg-default-100/50 px-2 py-1 mb-1"
447
- [attr.dir]="'auto'"
448
- [attr.aria-label]="('@ai-management:chat.assistant-thinking-label' | translate | async) ?? ''"
449
- >
450
- <summary
451
- class="cursor-pointer select-none min-w-0 text-xs text-muted outline-none focus-visible:ring-2 focus-visible:ring-primary-300 line-clamp-1 break-words"
452
- >
453
- {{ parsedTurn.thinking }}
454
- </summary>
455
- <div
456
- class="mt-2 pt-2 border-t border-default/50 dark:border-darker text-xs text-muted whitespace-pre-wrap break-words"
457
- >
458
- {{ parsedTurn.thinking }}
459
- </div>
460
- </details>
461
- }
462
- @if (parsedTurn.body.trim()) {
463
- <div class="whitespace-pre-line break-words" [attr.dir]="'auto'">{{ parsedTurn.body }}</div>
464
- }
465
- @for (pm of item.preambleMessages; track $index) {
466
- @if (asAssistantLayoutNode(pm); as preambleLayout) {
467
- <div class="min-w-0" [attr.dir]="'auto'">
468
- <axp-layout-renderer [layout]="preambleLayout" mode="view" [context]="{}" />
469
- </div>
470
- }
471
- }
472
- }
473
- @if (item.pairs.length) {
474
- <div class="mt-1 flex flex-col gap-2">
475
- @for (p of item.pairs; track p.call.id) {
476
- @if (getGenerateImagePreview(p); as gimg) {
477
- <div
478
- class="rounded-lg border border-default/70 dark:border-darker bg-lightest dark:bg-default-50 overflow-hidden max-w-full"
479
- >
480
- @if (gimg.fileId) {
481
- <axm-ai-chat-tool-image-preview
482
- [fileId]="gimg.fileId"
483
- [altText]="gimg.alt"
484
- [ariaLabel]="
485
- ('@ai-management:chat.generated-image-aria-label' | translate | async) ?? gimg.alt
486
- "
487
- />
488
- } @else if (gimg.imageUrl) {
489
- <img
490
- [src]="gimg.imageUrl"
491
- [alt]="gimg.alt"
492
- class="block max-w-full h-auto max-h-[min(70vh,32rem)]"
493
- [attr.aria-label]="
494
- ('@ai-management:chat.generated-image-aria-label' | translate | async) ?? gimg.alt
495
- "
496
- />
497
- }
498
- </div>
499
- }
500
- @if (getSynthesizeSpeechPreview(p); as gaudio) {
501
- <div
502
- class="rounded-lg border border-default/70 dark:border-darker bg-lightest dark:bg-default-50 p-3 max-w-full"
503
- >
504
- @if (gaudio.fileId) {
505
- <axm-ai-chat-tool-audio-preview
506
- [fileId]="gaudio.fileId"
507
- [mimeType]="gaudio.mimeType"
508
- [titleText]="gaudio.title"
509
- [ariaLabel]="
510
- ('@ai-management:chat.generated-speech-aria-label' | translate | async) ??
511
- gaudio.title
512
- "
513
- />
514
- }
515
- </div>
516
- }
517
- @if (showDelegatedAgentMiniChat(p.call.name)) {
518
- @let ar = parseDelegatedAgentToolResult(p.outputContent);
519
- <details
520
- class="rounded-lg border border-default dark:border-darker bg-lightest/50 dark:bg-default-50 px-2 py-1"
521
- >
522
- <summary
523
- class="cursor-pointer select-none text-xs font-medium outline-none focus-visible:ring-2 focus-visible:ring-primary-300 flex items-center gap-2 flex-wrap min-w-0"
524
- >
525
- @if (p.outputContent.trim()) {
526
- <span
527
- class="inline-block w-3 h-3 rounded-full bg-success-500 shrink-0"
528
- aria-hidden="true"
529
- ></span>
530
- } @else {
531
- <span
532
- class="inline-block w-3 h-3 rounded-full bg-default-400 dark:bg-default-500 shrink-0"
533
- aria-hidden="true"
534
- ></span>
535
- }
536
- <span class="inline-flex items-baseline gap-1 min-w-0 break-words">
537
- <span>{{ '@ai-management:chat.agent-prefix' | translate | async }}:</span>
538
- @if (ar.agentName) {
539
- <span class="font-semibold">{{ ar.agentName }}</span>
540
- } @else if (p.outputContent.trim()) {
541
- <span class="text-muted font-normal">{{
542
- '@ai-management:chat.agent-name-unknown' | translate | async
543
- }}</span>
544
- } @else {
545
- <span class="text-muted italic font-normal">{{
546
- '@ai-management:chat.tool-executing' | translate | async
547
- }}</span>
548
- }
549
- </span>
550
- @if (p.outputContent.trim()) {
551
- <span class="text-success-600 dark:text-success-400 shrink-0">
552
- {{ '@ai-management:chat.tool-done' | translate | async }}
553
- </span>
554
- }
555
- </summary>
556
- <div class="mt-2 space-y-3 pt-2 border-t border-default/60 dark:border-darker">
557
- <div class="flex justify-end w-full min-w-0">
558
- <div
559
- class="max-w-[min(92%,42rem)] min-w-0 rounded-[1.25rem] px-4 py-2.5 text-sm leading-relaxed text-on-lightest bg-default-300/95 dark:bg-default-500/95 shadow-sm ring-1 ring-inset ring-default/20 dark:ring-white/10"
560
- >
561
- <div class="whitespace-pre-wrap break-words" [attr.dir]="'auto'">
562
- {{ getAgentDelegatedPromptPreview(p.call.arguments) }}
563
- </div>
564
- </div>
565
- </div>
566
- <div class="flex flex-col gap-2 min-w-0 text-sm leading-relaxed text-on-lightest">
567
- @if (ar.error) {
568
- <p class="m-0 text-danger-600 dark:text-danger-400 whitespace-pre-wrap break-words">
569
- {{ ar.error }}
570
- </p>
571
- } @else if (ar.answer) {
572
- <div class="whitespace-pre-wrap break-words" [attr.dir]="'auto'">
573
- {{ ar.answer }}
574
- </div>
575
- } @else if (p.outputContent.trim()) {
576
- <pre
577
- class="m-0 max-h-48 overflow-auto rounded bg-default-50 dark:bg-default-200 p-2 font-mono text-[0.75rem] leading-snug whitespace-pre-wrap break-words"
578
- >{{ formatToolResultBody(p.outputContent) }}</pre
579
- >
580
- } @else {
581
- <p class="m-0 text-xs text-muted italic">
582
- {{ '@ai-management:chat.tool-output-pending' | translate | async }}
583
- </p>
584
- }
585
- </div>
586
- </div>
587
- </details>
588
- } @else {
589
- <details
590
- class="rounded border border-default dark:border-darker bg-lightest/50 dark:bg-default-50 px-2 py-1"
591
- >
592
- <summary
593
- class="cursor-pointer select-none text-xs font-medium outline-none focus-visible:ring-2 focus-visible:ring-primary-300 flex items-center gap-2 flex-wrap"
594
- >
595
- @if (p.outputContent.trim()) {
596
- <span
597
- class="inline-block w-3 h-3 rounded-full bg-success-500 shrink-0"
598
- aria-hidden="true"
599
- ></span>
600
- <code
601
- class="px-1 py-0.5 rounded bg-default-200 dark:bg-default-300 text-[0.8em] text-on-lightest"
602
- >{{ p.call.name }}</code
603
- >
604
- <span class="text-success-600 dark:text-success-400">
605
- {{ '@ai-management:chat.tool-done' | translate | async }}
606
- </span>
607
- <span
608
- class="ml-auto inline-flex shrink-0"
609
- (click)="$event.stopPropagation()"
610
- (mousedown)="$event.stopPropagation()"
611
- >
612
- <ax-button
613
- look="outline"
614
- [text]="('@ai-management:chat.tool-run-again' | translate | async) ?? ''"
615
- (onClick)="openToolExecuteDialog(p.call)"
616
- ></ax-button>
617
- </span>
618
- } @else {
619
- <span
620
- class="inline-block w-3 h-3 rounded-full bg-default-400 dark:bg-default-500 shrink-0"
621
- aria-hidden="true"
622
- ></span>
623
- <code
624
- class="px-1 py-0.5 rounded bg-default-200 dark:bg-default-300 text-[0.8em] text-on-lightest"
625
- >{{ p.call.name }}</code
626
- >
627
- <span class="text-muted italic text-[0.85em]">
628
- {{ '@ai-management:chat.tool-output-pending' | translate | async }}
629
- </span>
630
- }
631
- </summary>
632
- <div class="mt-2 space-y-1 pt-1 border-t border-default/60 dark:border-darker">
633
- <div class="text-[0.7rem] uppercase tracking-wide text-muted">
634
- {{ '@ai-management:chat.tool-input' | translate | async }}
635
- </div>
636
- <pre
637
- class="m-0 max-h-48 overflow-auto rounded bg-default-50 dark:bg-default-200 p-2 font-mono text-[0.7rem] leading-snug whitespace-pre-wrap break-words"
638
- >{{ formatToolArguments(p.call.arguments) }}</pre
639
- >
640
- <div class="text-[0.7rem] uppercase tracking-wide text-muted">
641
- {{ '@ai-management:chat.tool-output' | translate | async }}
642
- </div>
643
- @if (p.outputContent.trim()) {
644
- <pre
645
- class="m-0 max-h-48 overflow-auto rounded bg-default-50 dark:bg-default-200 p-2 font-mono text-[0.7rem] leading-snug whitespace-pre-wrap break-words"
646
- >{{ formatToolResultBody(p.outputContent) }}</pre
647
- >
648
- } @else {
649
- <p class="m-0 text-xs text-muted italic">
650
- {{ '@ai-management:chat.tool-output-pending' | translate | async }}
651
- </p>
652
- }
653
- </div>
654
- </details>
655
- }
656
- }
657
- </div>
658
- }
659
- @if (item.followUpMessage; as followUp) {
660
- @let parsedFollowUp = parseAssistantMessageForDisplayFromMessage(followUp);
661
- @if (parsedFollowUp.thinking) {
662
- <details
663
- class="rounded border border-default/70 dark:border-darker bg-default-50/80 dark:bg-default-100/50 px-2 py-1"
664
- [attr.dir]="'auto'"
665
- [attr.aria-label]="('@ai-management:chat.assistant-thinking-label' | translate | async) ?? ''"
666
- >
667
- <summary
668
- class="cursor-pointer select-none min-w-0 text-xs text-muted outline-none focus-visible:ring-2 focus-visible:ring-primary-300 line-clamp-1 break-words"
669
- >
670
- {{ parsedFollowUp.thinking }}
671
- </summary>
672
- <div
673
- class="mt-2 pt-2 border-t border-default/50 dark:border-darker text-xs text-muted whitespace-pre-wrap break-words"
674
- >
675
- {{ parsedFollowUp.thinking }}
676
- </div>
677
- </details>
678
- }
679
- @if (parsedFollowUp.body.trim()) {
680
- <div class="whitespace-pre-line break-words" [attr.dir]="'auto'">
681
- {{ parsedFollowUp.body }}
682
- </div>
683
- }
684
- @if (asAssistantLayoutNode(followUp); as followLayout) {
685
- <div class="min-w-0" [attr.dir]="'auto'">
686
- <axp-layout-renderer [layout]="followLayout" mode="view" [context]="{}" />
687
- </div>
688
- }
689
- }
690
- </div>
691
- </div>
692
- } @else {
693
- @if (item.message.role === 'user') {
694
- <div class="w-full flex min-w-0">
695
- @if (specialistDelegationUserDisplay(item.message); as spec) {
696
- <div class="ms-auto w-full min-w-0 max-w-[min(85%,36rem)] flex flex-col gap-3">
697
- @for (seg of item.message.responses; track $index) {
698
- @if (seg.type === 'image') {
699
- <span class="flex flex-col gap-1 min-w-0 max-w-full self-end">
700
- <axm-ai-chat-tool-image-preview
701
- [fileId]="seg.content.fileId"
702
- [altText]="seg.content.name?.trim() || 'Attached image'"
703
- [ariaLabel]="('@ai-management:chat.attached-image-aria-label' | translate | async) ?? ''"
704
- />
705
- </span>
706
- }
707
- }
708
- <div class="flex justify-end w-full min-w-0">
709
- <div
710
- class="max-w-[min(92%,42rem)] min-w-0 rounded-[1.25rem] px-4 py-2.5 text-sm leading-relaxed text-on-lightest bg-default-300/95 dark:bg-default-500/95 shadow-sm ring-1 ring-inset ring-default/20 dark:ring-white/10"
711
- >
712
- <span class="whitespace-pre-line break-words min-w-0" [attr.dir]="'auto'">{{
713
- spec.queryText
714
- }}</span>
715
- </div>
716
- </div>
717
- <div class="w-full min-w-0 text-start">
718
- <div class="mb-1 text-[0.7rem] font-medium uppercase tracking-wide text-muted">
719
- {{ '@ai-management:chat.specialist-delegation-context-json-label' | translate | async }}
720
- </div>
721
- <pre
722
- class="m-0 max-h-[min(50vh,24rem)] overflow-auto rounded border border-default/60 dark:border-darker bg-default-50 dark:bg-default-200 p-2 font-mono text-[0.75rem] leading-snug whitespace-pre-wrap break-words text-on-lightest"
723
- >{{ spec.contextJsonDisplay }}</pre
724
- >
725
- </div>
726
- </div>
727
- } @else {
728
- <div
729
- class="ms-auto min-w-0 rounded-[1.25rem] text-sm leading-relaxed text-on-lightest flex flex-col gap-2 bg-default-300/95 dark:bg-default-500/95 shadow-sm ring-1 ring-inset ring-default/20 dark:ring-white/10 max-w-[min(85%,36rem)]"
730
- [class.px-4]="!userMessageAttachmentOnlyBubble(item.message)"
731
- [class.py-2.5]="!userMessageAttachmentOnlyBubble(item.message)"
732
- [class.p-2]="userMessageAttachmentOnlyBubble(item.message)"
733
- >
734
- <span class="flex flex-col gap-2 whitespace-pre-line break-words min-w-0">
735
- @for (seg of item.message.responses; track $index) {
736
- @if (seg.type === 'image') {
737
- <span class="flex flex-col gap-1 min-w-0 max-w-full">
738
- <axm-ai-chat-tool-image-preview
739
- [fileId]="seg.content.fileId"
740
- [altText]="seg.content.name?.trim() || 'Attached image'"
741
- [ariaLabel]="
742
- ('@ai-management:chat.attached-image-aria-label' | translate | async) ?? ''
743
- "
744
- />
745
- </span>
746
- } @else if (seg.type === 'audio') {
747
- <span
748
- class="inline-flex items-center gap-2 min-w-0 max-w-full rounded border border-default/60 dark:border-darker bg-default-50/80 dark:bg-default-100/40 px-3 py-1.5 text-sm"
749
- >
750
- <span class="text-muted shrink-0">{{
751
- '@ai-management:chat.attached-audio-label' | translate | async
752
- }}</span>
753
- <span class="truncate min-w-0" [attr.title]="seg.content.name ?? ''">{{
754
- seg.content.name?.trim() || ('@ai-management:chat.audio-untitled' | translate | async)
755
- }}</span>
756
- </span>
757
- } @else if (seg.type === 'file') {
758
- <span
759
- class="inline-flex items-center gap-2 min-w-0 max-w-full rounded border border-default/60 dark:border-darker bg-default-50/80 dark:bg-default-100/40 px-3 py-1.5 text-sm"
760
- >
761
- <span class="text-muted shrink-0">{{
762
- '@ai-management:chat.attached-document-label' | translate | async
763
- }}</span>
764
- <span class="truncate min-w-0" [attr.title]="seg.content.name ?? ''">{{
765
- seg.content.name?.trim() ||
766
- ('@ai-management:chat.document-untitled' | translate | async)
767
- }}</span>
768
- </span>
769
- } @else if (seg.type === 'text') {
770
- <span class="whitespace-pre-line" [attr.dir]="'auto'">{{ seg.content }}</span>
771
- }
772
- }
773
- </span>
774
- </div>
775
- }
776
- </div>
777
- } @else {
778
- <div class="w-full min-w-0 text-sm leading-relaxed text-on-lightest">
779
- <div class="flex flex-col gap-2 whitespace-pre-line break-words min-w-0">
780
- @if (item.message.role === 'tool') {
781
- <span [attr.dir]="'auto'">{{ formatToolMessageSummary(item.message) }}</span>
782
- } @else if (item.message.role === 'assistant') {
783
- @let parsed = parseAssistantMessageForDisplayFromMessage(item.message);
784
- @if (parsed.thinking) {
785
- <details
786
- class="rounded border border-default/70 dark:border-darker bg-default-50/80 dark:bg-default-100/50 px-2 py-1"
787
- [attr.dir]="'auto'"
788
- [attr.aria-label]="('@ai-management:chat.assistant-thinking-label' | translate | async) ?? ''"
789
- >
790
- <summary
791
- class="cursor-pointer select-none min-w-0 text-xs text-muted outline-none focus-visible:ring-2 focus-visible:ring-primary-300 line-clamp-1 break-words"
792
- >
793
- {{ parsed.thinking }}
794
- </summary>
795
- <div
796
- class="mt-2 pt-2 border-t border-default/50 dark:border-darker text-xs text-muted whitespace-pre-wrap break-words"
797
- >
798
- {{ parsed.thinking }}
799
- </div>
800
- </details>
801
- }
802
- @if (parsed.body.trim()) {
803
- <span class="whitespace-pre-line" [attr.dir]="'auto'">{{ parsed.body }}</span>
804
- }
805
- @if (asAssistantLayoutNode(item.message); as layoutNode) {
806
- <div class="min-w-0" [attr.dir]="'auto'">
807
- <axp-layout-renderer [layout]="layoutNode" mode="view" [context]="{}" />
808
- </div>
809
- }
810
- } @else {
811
- <span [attr.dir]="'auto'">{{ chatMessageText(item.message) }}</span>
812
- }
813
- </div>
814
- </div>
815
- }
816
- }
817
- }
818
- </div>
819
- </div>
820
- </div>
821
- `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i2.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "component", type: AXMAiChatToolImagePreviewComponent, selector: "axm-ai-chat-tool-image-preview", inputs: ["fileId", "altText", "ariaLabel"] }, { kind: "component", type: AXMAiChatToolAudioPreviewComponent, selector: "axm-ai-chat-tool-audio-preview", inputs: ["fileId", "mimeType", "titleText", "ariaLabel"] }, { kind: "component", type: AXPLayoutRendererComponent, selector: "axp-layout-renderer", inputs: ["layout", "context", "look", "mode"], outputs: ["contextChange", "contextInitiated", "validityChange"] }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "pipe", type: i8.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
822
- }
823
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXMAiDelegatedAgentTranscriptPopupComponent, decorators: [{
824
- type: Component,
825
- args: [{
826
- selector: 'axm-ai-delegated-agent-transcript-popup',
827
- changeDetection: ChangeDetectionStrategy.OnPush,
828
- template: `
829
- <div class="flex flex-col min-h-0">
830
- <div
831
- class="flex flex-wrap items-center justify-end gap-2 mb-3 pb-2 border-b border-default/70 dark:border-darker"
832
- role="toolbar"
833
- [attr.aria-label]="'@ai-management:chat.delegated-agent-transcript-toolbar-aria' | translate | async"
834
- >
835
- <ax-button
836
- look="outline"
837
- color="secondary"
838
- [text]="('@general:actions.close.title' | translate | async) ?? ''"
839
- [attr.aria-label]="('@general:actions.close.title' | translate | async) ?? ''"
840
- (onClick)="closePopup()"
841
- ></ax-button>
842
- <ax-button
843
- look="outline"
844
- color="secondary"
845
- [text]="('@ai-management:chat.download-json' | translate | async) ?? ''"
846
- [attr.aria-label]="('@ai-management:chat.download-json' | translate | async) ?? ''"
847
- (onClick)="downloadMessagesJson()"
848
- ></ax-button>
849
- </div>
850
- <div
851
- class="max-h-[min(75vh,40rem)] overflow-y-auto px-1 py-2 min-h-0"
852
- role="log"
853
- [attr.aria-label]="'@ai-management:chat.delegated-agent-transcript-aria' | translate | async"
854
- >
855
- @if (transcript().length === 0 && emptyNotice(); as note) {
856
- <p class="mb-3 text-sm text-muted">{{ note }}</p>
857
- }
858
- <div class="mx-auto w-full space-y-8 max-w-3xl">
859
- @for (item of displayItems(); track $index) {
860
- @if (item.kind === 'tool-turn') {
861
- <div class="w-full min-w-0 text-sm leading-relaxed text-on-lightest">
862
- <div class="flex flex-col gap-2 min-w-0">
863
- @if (!(toolTurnPreamblePlain(item) === '' && item.pairs.length)) {
864
- @let parsedTurn = toolTurnPreambleParsed(item);
865
- @if (parsedTurn.thinking) {
866
- <details
867
- class="rounded border border-default/70 dark:border-darker bg-default-50/80 dark:bg-default-100/50 px-2 py-1 mb-1"
868
- [attr.dir]="'auto'"
869
- [attr.aria-label]="('@ai-management:chat.assistant-thinking-label' | translate | async) ?? ''"
870
- >
871
- <summary
872
- class="cursor-pointer select-none min-w-0 text-xs text-muted outline-none focus-visible:ring-2 focus-visible:ring-primary-300 line-clamp-1 break-words"
873
- >
874
- {{ parsedTurn.thinking }}
875
- </summary>
876
- <div
877
- class="mt-2 pt-2 border-t border-default/50 dark:border-darker text-xs text-muted whitespace-pre-wrap break-words"
878
- >
879
- {{ parsedTurn.thinking }}
880
- </div>
881
- </details>
882
- }
883
- @if (parsedTurn.body.trim()) {
884
- <div class="whitespace-pre-line break-words" [attr.dir]="'auto'">{{ parsedTurn.body }}</div>
885
- }
886
- @for (pm of item.preambleMessages; track $index) {
887
- @if (asAssistantLayoutNode(pm); as preambleLayout) {
888
- <div class="min-w-0" [attr.dir]="'auto'">
889
- <axp-layout-renderer [layout]="preambleLayout" mode="view" [context]="{}" />
890
- </div>
891
- }
892
- }
893
- }
894
- @if (item.pairs.length) {
895
- <div class="mt-1 flex flex-col gap-2">
896
- @for (p of item.pairs; track p.call.id) {
897
- @if (getGenerateImagePreview(p); as gimg) {
898
- <div
899
- class="rounded-lg border border-default/70 dark:border-darker bg-lightest dark:bg-default-50 overflow-hidden max-w-full"
900
- >
901
- @if (gimg.fileId) {
902
- <axm-ai-chat-tool-image-preview
903
- [fileId]="gimg.fileId"
904
- [altText]="gimg.alt"
905
- [ariaLabel]="
906
- ('@ai-management:chat.generated-image-aria-label' | translate | async) ?? gimg.alt
907
- "
908
- />
909
- } @else if (gimg.imageUrl) {
910
- <img
911
- [src]="gimg.imageUrl"
912
- [alt]="gimg.alt"
913
- class="block max-w-full h-auto max-h-[min(70vh,32rem)]"
914
- [attr.aria-label]="
915
- ('@ai-management:chat.generated-image-aria-label' | translate | async) ?? gimg.alt
916
- "
917
- />
918
- }
919
- </div>
920
- }
921
- @if (getSynthesizeSpeechPreview(p); as gaudio) {
922
- <div
923
- class="rounded-lg border border-default/70 dark:border-darker bg-lightest dark:bg-default-50 p-3 max-w-full"
924
- >
925
- @if (gaudio.fileId) {
926
- <axm-ai-chat-tool-audio-preview
927
- [fileId]="gaudio.fileId"
928
- [mimeType]="gaudio.mimeType"
929
- [titleText]="gaudio.title"
930
- [ariaLabel]="
931
- ('@ai-management:chat.generated-speech-aria-label' | translate | async) ??
932
- gaudio.title
933
- "
934
- />
935
- }
936
- </div>
937
- }
938
- @if (showDelegatedAgentMiniChat(p.call.name)) {
939
- @let ar = parseDelegatedAgentToolResult(p.outputContent);
940
- <details
941
- class="rounded-lg border border-default dark:border-darker bg-lightest/50 dark:bg-default-50 px-2 py-1"
942
- >
943
- <summary
944
- class="cursor-pointer select-none text-xs font-medium outline-none focus-visible:ring-2 focus-visible:ring-primary-300 flex items-center gap-2 flex-wrap min-w-0"
945
- >
946
- @if (p.outputContent.trim()) {
947
- <span
948
- class="inline-block w-3 h-3 rounded-full bg-success-500 shrink-0"
949
- aria-hidden="true"
950
- ></span>
951
- } @else {
952
- <span
953
- class="inline-block w-3 h-3 rounded-full bg-default-400 dark:bg-default-500 shrink-0"
954
- aria-hidden="true"
955
- ></span>
956
- }
957
- <span class="inline-flex items-baseline gap-1 min-w-0 break-words">
958
- <span>{{ '@ai-management:chat.agent-prefix' | translate | async }}:</span>
959
- @if (ar.agentName) {
960
- <span class="font-semibold">{{ ar.agentName }}</span>
961
- } @else if (p.outputContent.trim()) {
962
- <span class="text-muted font-normal">{{
963
- '@ai-management:chat.agent-name-unknown' | translate | async
964
- }}</span>
965
- } @else {
966
- <span class="text-muted italic font-normal">{{
967
- '@ai-management:chat.tool-executing' | translate | async
968
- }}</span>
969
- }
970
- </span>
971
- @if (p.outputContent.trim()) {
972
- <span class="text-success-600 dark:text-success-400 shrink-0">
973
- {{ '@ai-management:chat.tool-done' | translate | async }}
974
- </span>
975
- }
976
- </summary>
977
- <div class="mt-2 space-y-3 pt-2 border-t border-default/60 dark:border-darker">
978
- <div class="flex justify-end w-full min-w-0">
979
- <div
980
- class="max-w-[min(92%,42rem)] min-w-0 rounded-[1.25rem] px-4 py-2.5 text-sm leading-relaxed text-on-lightest bg-default-300/95 dark:bg-default-500/95 shadow-sm ring-1 ring-inset ring-default/20 dark:ring-white/10"
981
- >
982
- <div class="whitespace-pre-wrap break-words" [attr.dir]="'auto'">
983
- {{ getAgentDelegatedPromptPreview(p.call.arguments) }}
984
- </div>
985
- </div>
986
- </div>
987
- <div class="flex flex-col gap-2 min-w-0 text-sm leading-relaxed text-on-lightest">
988
- @if (ar.error) {
989
- <p class="m-0 text-danger-600 dark:text-danger-400 whitespace-pre-wrap break-words">
990
- {{ ar.error }}
991
- </p>
992
- } @else if (ar.answer) {
993
- <div class="whitespace-pre-wrap break-words" [attr.dir]="'auto'">
994
- {{ ar.answer }}
995
- </div>
996
- } @else if (p.outputContent.trim()) {
997
- <pre
998
- class="m-0 max-h-48 overflow-auto rounded bg-default-50 dark:bg-default-200 p-2 font-mono text-[0.75rem] leading-snug whitespace-pre-wrap break-words"
999
- >{{ formatToolResultBody(p.outputContent) }}</pre
1000
- >
1001
- } @else {
1002
- <p class="m-0 text-xs text-muted italic">
1003
- {{ '@ai-management:chat.tool-output-pending' | translate | async }}
1004
- </p>
1005
- }
1006
- </div>
1007
- </div>
1008
- </details>
1009
- } @else {
1010
- <details
1011
- class="rounded border border-default dark:border-darker bg-lightest/50 dark:bg-default-50 px-2 py-1"
1012
- >
1013
- <summary
1014
- class="cursor-pointer select-none text-xs font-medium outline-none focus-visible:ring-2 focus-visible:ring-primary-300 flex items-center gap-2 flex-wrap"
1015
- >
1016
- @if (p.outputContent.trim()) {
1017
- <span
1018
- class="inline-block w-3 h-3 rounded-full bg-success-500 shrink-0"
1019
- aria-hidden="true"
1020
- ></span>
1021
- <code
1022
- class="px-1 py-0.5 rounded bg-default-200 dark:bg-default-300 text-[0.8em] text-on-lightest"
1023
- >{{ p.call.name }}</code
1024
- >
1025
- <span class="text-success-600 dark:text-success-400">
1026
- {{ '@ai-management:chat.tool-done' | translate | async }}
1027
- </span>
1028
- <span
1029
- class="ml-auto inline-flex shrink-0"
1030
- (click)="$event.stopPropagation()"
1031
- (mousedown)="$event.stopPropagation()"
1032
- >
1033
- <ax-button
1034
- look="outline"
1035
- [text]="('@ai-management:chat.tool-run-again' | translate | async) ?? ''"
1036
- (onClick)="openToolExecuteDialog(p.call)"
1037
- ></ax-button>
1038
- </span>
1039
- } @else {
1040
- <span
1041
- class="inline-block w-3 h-3 rounded-full bg-default-400 dark:bg-default-500 shrink-0"
1042
- aria-hidden="true"
1043
- ></span>
1044
- <code
1045
- class="px-1 py-0.5 rounded bg-default-200 dark:bg-default-300 text-[0.8em] text-on-lightest"
1046
- >{{ p.call.name }}</code
1047
- >
1048
- <span class="text-muted italic text-[0.85em]">
1049
- {{ '@ai-management:chat.tool-output-pending' | translate | async }}
1050
- </span>
1051
- }
1052
- </summary>
1053
- <div class="mt-2 space-y-1 pt-1 border-t border-default/60 dark:border-darker">
1054
- <div class="text-[0.7rem] uppercase tracking-wide text-muted">
1055
- {{ '@ai-management:chat.tool-input' | translate | async }}
1056
- </div>
1057
- <pre
1058
- class="m-0 max-h-48 overflow-auto rounded bg-default-50 dark:bg-default-200 p-2 font-mono text-[0.7rem] leading-snug whitespace-pre-wrap break-words"
1059
- >{{ formatToolArguments(p.call.arguments) }}</pre
1060
- >
1061
- <div class="text-[0.7rem] uppercase tracking-wide text-muted">
1062
- {{ '@ai-management:chat.tool-output' | translate | async }}
1063
- </div>
1064
- @if (p.outputContent.trim()) {
1065
- <pre
1066
- class="m-0 max-h-48 overflow-auto rounded bg-default-50 dark:bg-default-200 p-2 font-mono text-[0.7rem] leading-snug whitespace-pre-wrap break-words"
1067
- >{{ formatToolResultBody(p.outputContent) }}</pre
1068
- >
1069
- } @else {
1070
- <p class="m-0 text-xs text-muted italic">
1071
- {{ '@ai-management:chat.tool-output-pending' | translate | async }}
1072
- </p>
1073
- }
1074
- </div>
1075
- </details>
1076
- }
1077
- }
1078
- </div>
1079
- }
1080
- @if (item.followUpMessage; as followUp) {
1081
- @let parsedFollowUp = parseAssistantMessageForDisplayFromMessage(followUp);
1082
- @if (parsedFollowUp.thinking) {
1083
- <details
1084
- class="rounded border border-default/70 dark:border-darker bg-default-50/80 dark:bg-default-100/50 px-2 py-1"
1085
- [attr.dir]="'auto'"
1086
- [attr.aria-label]="('@ai-management:chat.assistant-thinking-label' | translate | async) ?? ''"
1087
- >
1088
- <summary
1089
- class="cursor-pointer select-none min-w-0 text-xs text-muted outline-none focus-visible:ring-2 focus-visible:ring-primary-300 line-clamp-1 break-words"
1090
- >
1091
- {{ parsedFollowUp.thinking }}
1092
- </summary>
1093
- <div
1094
- class="mt-2 pt-2 border-t border-default/50 dark:border-darker text-xs text-muted whitespace-pre-wrap break-words"
1095
- >
1096
- {{ parsedFollowUp.thinking }}
1097
- </div>
1098
- </details>
1099
- }
1100
- @if (parsedFollowUp.body.trim()) {
1101
- <div class="whitespace-pre-line break-words" [attr.dir]="'auto'">
1102
- {{ parsedFollowUp.body }}
1103
- </div>
1104
- }
1105
- @if (asAssistantLayoutNode(followUp); as followLayout) {
1106
- <div class="min-w-0" [attr.dir]="'auto'">
1107
- <axp-layout-renderer [layout]="followLayout" mode="view" [context]="{}" />
1108
- </div>
1109
- }
1110
- }
1111
- </div>
1112
- </div>
1113
- } @else {
1114
- @if (item.message.role === 'user') {
1115
- <div class="w-full flex min-w-0">
1116
- @if (specialistDelegationUserDisplay(item.message); as spec) {
1117
- <div class="ms-auto w-full min-w-0 max-w-[min(85%,36rem)] flex flex-col gap-3">
1118
- @for (seg of item.message.responses; track $index) {
1119
- @if (seg.type === 'image') {
1120
- <span class="flex flex-col gap-1 min-w-0 max-w-full self-end">
1121
- <axm-ai-chat-tool-image-preview
1122
- [fileId]="seg.content.fileId"
1123
- [altText]="seg.content.name?.trim() || 'Attached image'"
1124
- [ariaLabel]="('@ai-management:chat.attached-image-aria-label' | translate | async) ?? ''"
1125
- />
1126
- </span>
1127
- }
1128
- }
1129
- <div class="flex justify-end w-full min-w-0">
1130
- <div
1131
- class="max-w-[min(92%,42rem)] min-w-0 rounded-[1.25rem] px-4 py-2.5 text-sm leading-relaxed text-on-lightest bg-default-300/95 dark:bg-default-500/95 shadow-sm ring-1 ring-inset ring-default/20 dark:ring-white/10"
1132
- >
1133
- <span class="whitespace-pre-line break-words min-w-0" [attr.dir]="'auto'">{{
1134
- spec.queryText
1135
- }}</span>
1136
- </div>
1137
- </div>
1138
- <div class="w-full min-w-0 text-start">
1139
- <div class="mb-1 text-[0.7rem] font-medium uppercase tracking-wide text-muted">
1140
- {{ '@ai-management:chat.specialist-delegation-context-json-label' | translate | async }}
1141
- </div>
1142
- <pre
1143
- class="m-0 max-h-[min(50vh,24rem)] overflow-auto rounded border border-default/60 dark:border-darker bg-default-50 dark:bg-default-200 p-2 font-mono text-[0.75rem] leading-snug whitespace-pre-wrap break-words text-on-lightest"
1144
- >{{ spec.contextJsonDisplay }}</pre
1145
- >
1146
- </div>
1147
- </div>
1148
- } @else {
1149
- <div
1150
- class="ms-auto min-w-0 rounded-[1.25rem] text-sm leading-relaxed text-on-lightest flex flex-col gap-2 bg-default-300/95 dark:bg-default-500/95 shadow-sm ring-1 ring-inset ring-default/20 dark:ring-white/10 max-w-[min(85%,36rem)]"
1151
- [class.px-4]="!userMessageAttachmentOnlyBubble(item.message)"
1152
- [class.py-2.5]="!userMessageAttachmentOnlyBubble(item.message)"
1153
- [class.p-2]="userMessageAttachmentOnlyBubble(item.message)"
1154
- >
1155
- <span class="flex flex-col gap-2 whitespace-pre-line break-words min-w-0">
1156
- @for (seg of item.message.responses; track $index) {
1157
- @if (seg.type === 'image') {
1158
- <span class="flex flex-col gap-1 min-w-0 max-w-full">
1159
- <axm-ai-chat-tool-image-preview
1160
- [fileId]="seg.content.fileId"
1161
- [altText]="seg.content.name?.trim() || 'Attached image'"
1162
- [ariaLabel]="
1163
- ('@ai-management:chat.attached-image-aria-label' | translate | async) ?? ''
1164
- "
1165
- />
1166
- </span>
1167
- } @else if (seg.type === 'audio') {
1168
- <span
1169
- class="inline-flex items-center gap-2 min-w-0 max-w-full rounded border border-default/60 dark:border-darker bg-default-50/80 dark:bg-default-100/40 px-3 py-1.5 text-sm"
1170
- >
1171
- <span class="text-muted shrink-0">{{
1172
- '@ai-management:chat.attached-audio-label' | translate | async
1173
- }}</span>
1174
- <span class="truncate min-w-0" [attr.title]="seg.content.name ?? ''">{{
1175
- seg.content.name?.trim() || ('@ai-management:chat.audio-untitled' | translate | async)
1176
- }}</span>
1177
- </span>
1178
- } @else if (seg.type === 'file') {
1179
- <span
1180
- class="inline-flex items-center gap-2 min-w-0 max-w-full rounded border border-default/60 dark:border-darker bg-default-50/80 dark:bg-default-100/40 px-3 py-1.5 text-sm"
1181
- >
1182
- <span class="text-muted shrink-0">{{
1183
- '@ai-management:chat.attached-document-label' | translate | async
1184
- }}</span>
1185
- <span class="truncate min-w-0" [attr.title]="seg.content.name ?? ''">{{
1186
- seg.content.name?.trim() ||
1187
- ('@ai-management:chat.document-untitled' | translate | async)
1188
- }}</span>
1189
- </span>
1190
- } @else if (seg.type === 'text') {
1191
- <span class="whitespace-pre-line" [attr.dir]="'auto'">{{ seg.content }}</span>
1192
- }
1193
- }
1194
- </span>
1195
- </div>
1196
- }
1197
- </div>
1198
- } @else {
1199
- <div class="w-full min-w-0 text-sm leading-relaxed text-on-lightest">
1200
- <div class="flex flex-col gap-2 whitespace-pre-line break-words min-w-0">
1201
- @if (item.message.role === 'tool') {
1202
- <span [attr.dir]="'auto'">{{ formatToolMessageSummary(item.message) }}</span>
1203
- } @else if (item.message.role === 'assistant') {
1204
- @let parsed = parseAssistantMessageForDisplayFromMessage(item.message);
1205
- @if (parsed.thinking) {
1206
- <details
1207
- class="rounded border border-default/70 dark:border-darker bg-default-50/80 dark:bg-default-100/50 px-2 py-1"
1208
- [attr.dir]="'auto'"
1209
- [attr.aria-label]="('@ai-management:chat.assistant-thinking-label' | translate | async) ?? ''"
1210
- >
1211
- <summary
1212
- class="cursor-pointer select-none min-w-0 text-xs text-muted outline-none focus-visible:ring-2 focus-visible:ring-primary-300 line-clamp-1 break-words"
1213
- >
1214
- {{ parsed.thinking }}
1215
- </summary>
1216
- <div
1217
- class="mt-2 pt-2 border-t border-default/50 dark:border-darker text-xs text-muted whitespace-pre-wrap break-words"
1218
- >
1219
- {{ parsed.thinking }}
1220
- </div>
1221
- </details>
1222
- }
1223
- @if (parsed.body.trim()) {
1224
- <span class="whitespace-pre-line" [attr.dir]="'auto'">{{ parsed.body }}</span>
1225
- }
1226
- @if (asAssistantLayoutNode(item.message); as layoutNode) {
1227
- <div class="min-w-0" [attr.dir]="'auto'">
1228
- <axp-layout-renderer [layout]="layoutNode" mode="view" [context]="{}" />
1229
- </div>
1230
- }
1231
- } @else {
1232
- <span [attr.dir]="'auto'">{{ chatMessageText(item.message) }}</span>
1233
- }
1234
- </div>
1235
- </div>
1236
- }
1237
- }
1238
- }
1239
- </div>
1240
- </div>
1241
- </div>
1242
- `,
1243
- imports: [
1244
- CommonModule,
1245
- AXTranslationModule,
1246
- AXButtonModule,
1247
- AXMAiChatToolImagePreviewComponent,
1248
- AXMAiChatToolAudioPreviewComponent,
1249
- AXPLayoutRendererComponent,
1250
- ],
1251
- }]
1252
- }] });
1253
-
1254
- export { AXMAiDelegatedAgentTranscriptPopupComponent };
1255
- //# sourceMappingURL=acorex-modules-ai-management-ai-delegated-agent-transcript-popup.component-BWxdBe9t.mjs.map