@acorex/modules 21.0.0-beta.6 → 21.0.0-beta.8

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 (160) hide show
  1. package/fesm2022/acorex-modules-ai-management.mjs +31 -225
  2. package/fesm2022/acorex-modules-ai-management.mjs.map +1 -1
  3. package/fesm2022/{acorex-modules-asset-management-acorex-modules-asset-management-Blejt-Mo.mjs → acorex-modules-asset-management-acorex-modules-asset-management-BQcQ6ZR-.mjs} +718 -90
  4. package/fesm2022/acorex-modules-asset-management-acorex-modules-asset-management-BQcQ6ZR-.mjs.map +1 -0
  5. package/fesm2022/acorex-modules-asset-management-asset-rental-history-status.provider-BiWf2TwD.mjs +118 -0
  6. package/fesm2022/acorex-modules-asset-management-asset-rental-history-status.provider-BiWf2TwD.mjs.map +1 -0
  7. package/fesm2022/{acorex-modules-asset-management-asset-system-assignment.entity-CtCyaI46.mjs → acorex-modules-asset-management-asset-system-assignment.entity-BGdQY4Fh.mjs} +2 -2
  8. package/fesm2022/{acorex-modules-asset-management-asset-system-assignment.entity-CtCyaI46.mjs.map → acorex-modules-asset-management-asset-system-assignment.entity-BGdQY4Fh.mjs.map} +1 -1
  9. package/fesm2022/{acorex-modules-asset-management-asset-system-type.entity-CfoB6Faf.mjs → acorex-modules-asset-management-asset-system-type.entity-VxShztML.mjs} +2 -2
  10. package/fesm2022/{acorex-modules-asset-management-asset-system-type.entity-CfoB6Faf.mjs.map → acorex-modules-asset-management-asset-system-type.entity-VxShztML.mjs.map} +1 -1
  11. package/fesm2022/{acorex-modules-asset-management-asset-system.entity-CvKC7MKH.mjs → acorex-modules-asset-management-asset-system.entity-BdyFBhzS.mjs} +2 -2
  12. package/fesm2022/{acorex-modules-asset-management-asset-system.entity-CvKC7MKH.mjs.map → acorex-modules-asset-management-asset-system.entity-BdyFBhzS.mjs.map} +1 -1
  13. package/fesm2022/{acorex-modules-asset-management-asset-type-section-component.entity-xfRZM5vK.mjs → acorex-modules-asset-management-asset-type-section-component.entity-unp7Q8MH.mjs} +2 -2
  14. package/fesm2022/{acorex-modules-asset-management-asset-type-section-component.entity-xfRZM5vK.mjs.map → acorex-modules-asset-management-asset-type-section-component.entity-unp7Q8MH.mjs.map} +1 -1
  15. package/fesm2022/{acorex-modules-asset-management-asset-type-section.entity-DdEcyihk.mjs → acorex-modules-asset-management-asset-type-section.entity-bJKJdrpm.mjs} +2 -2
  16. package/fesm2022/{acorex-modules-asset-management-asset-type-section.entity-DdEcyihk.mjs.map → acorex-modules-asset-management-asset-type-section.entity-bJKJdrpm.mjs.map} +1 -1
  17. package/fesm2022/{acorex-modules-asset-management-asset-type.entity-D78ztUZ5.mjs → acorex-modules-asset-management-asset-type.entity-B2eXZqQG.mjs} +2 -2
  18. package/fesm2022/{acorex-modules-asset-management-asset-type.entity-D78ztUZ5.mjs.map → acorex-modules-asset-management-asset-type.entity-B2eXZqQG.mjs.map} +1 -1
  19. package/fesm2022/{acorex-modules-asset-management-asset.entity-3dFsNRkr.mjs → acorex-modules-asset-management-asset.entity-Bk_NIpzQ.mjs} +21 -27
  20. package/fesm2022/acorex-modules-asset-management-asset.entity-Bk_NIpzQ.mjs.map +1 -0
  21. package/fesm2022/acorex-modules-asset-management.mjs +1 -1
  22. package/fesm2022/{acorex-modules-common-search-popup.component-Bh3otWbL.mjs → acorex-modules-common-search-popup.component-ChaAcWfD.mjs} +3 -3
  23. package/fesm2022/{acorex-modules-common-search-popup.component-Bh3otWbL.mjs.map → acorex-modules-common-search-popup.component-ChaAcWfD.mjs.map} +1 -1
  24. package/fesm2022/acorex-modules-common.mjs +2 -2
  25. package/fesm2022/acorex-modules-conversation-acorex-modules-conversation-DgEFx2Ae.mjs +6157 -0
  26. package/fesm2022/acorex-modules-conversation-acorex-modules-conversation-DgEFx2Ae.mjs.map +1 -0
  27. package/fesm2022/acorex-modules-conversation-assist-delegated-agent-detail-popup.component-Cvd2BFaC.mjs +324 -0
  28. package/fesm2022/acorex-modules-conversation-assist-delegated-agent-detail-popup.component-Cvd2BFaC.mjs.map +1 -0
  29. package/fesm2022/{acorex-modules-conversation-comments-page.component-C8HWwI_w.mjs → acorex-modules-conversation-comments-page.component-B5y5qeV6.mjs} +2 -2
  30. package/fesm2022/{acorex-modules-conversation-comments-page.component-C8HWwI_w.mjs.map → acorex-modules-conversation-comments-page.component-B5y5qeV6.mjs.map} +1 -1
  31. package/fesm2022/acorex-modules-conversation.mjs +1 -6190
  32. package/fesm2022/acorex-modules-conversation.mjs.map +1 -1
  33. package/fesm2022/acorex-modules-document-management-large-tiles-view.component-DaIVK3ew.mjs +24 -0
  34. package/fesm2022/acorex-modules-document-management-large-tiles-view.component-DaIVK3ew.mjs.map +1 -0
  35. package/fesm2022/acorex-modules-document-management-small-tiles-view.component-G5AGqp_q.mjs +24 -0
  36. package/fesm2022/acorex-modules-document-management-small-tiles-view.component-G5AGqp_q.mjs.map +1 -0
  37. package/fesm2022/acorex-modules-document-management.mjs +67 -29
  38. package/fesm2022/acorex-modules-document-management.mjs.map +1 -1
  39. package/fesm2022/{acorex-modules-human-capital-management-acorex-modules-human-capital-management-Bwk3-2wy.mjs → acorex-modules-human-capital-management-acorex-modules-human-capital-management-hImDhzkB.mjs} +16 -19
  40. package/fesm2022/acorex-modules-human-capital-management-acorex-modules-human-capital-management-hImDhzkB.mjs.map +1 -0
  41. package/fesm2022/{acorex-modules-human-capital-management-approve-leave-request.command-B5aSubCY.mjs → acorex-modules-human-capital-management-approve-leave-request.command-DujyJOvo.mjs} +2 -2
  42. package/fesm2022/{acorex-modules-human-capital-management-approve-leave-request.command-B5aSubCY.mjs.map → acorex-modules-human-capital-management-approve-leave-request.command-DujyJOvo.mjs.map} +1 -1
  43. package/fesm2022/{acorex-modules-human-capital-management-assign-position-assignment.command-l8dGe3kg.mjs → acorex-modules-human-capital-management-assign-position-assignment.command-BPB9vaCn.mjs} +2 -2
  44. package/fesm2022/{acorex-modules-human-capital-management-assign-position-assignment.command-l8dGe3kg.mjs.map → acorex-modules-human-capital-management-assign-position-assignment.command-BPB9vaCn.mjs.map} +1 -1
  45. package/fesm2022/{acorex-modules-human-capital-management-cancel-leave-request.command-CeV-5Y5n.mjs → acorex-modules-human-capital-management-cancel-leave-request.command-BdPUdhbU.mjs} +2 -2
  46. package/fesm2022/{acorex-modules-human-capital-management-cancel-leave-request.command-CeV-5Y5n.mjs.map → acorex-modules-human-capital-management-cancel-leave-request.command-BdPUdhbU.mjs.map} +1 -1
  47. package/fesm2022/{acorex-modules-human-capital-management-employee.entity-DNgt9yQm.mjs → acorex-modules-human-capital-management-employee.entity-CgmF-WPf.mjs} +2 -2
  48. package/fesm2022/{acorex-modules-human-capital-management-employee.entity-DNgt9yQm.mjs.map → acorex-modules-human-capital-management-employee.entity-CgmF-WPf.mjs.map} +1 -1
  49. package/fesm2022/{acorex-modules-human-capital-management-employment-type.entity-rq8-Bauc.mjs → acorex-modules-human-capital-management-employment-type.entity-Chio_E9S.mjs} +2 -2
  50. package/fesm2022/{acorex-modules-human-capital-management-employment-type.entity-rq8-Bauc.mjs.map → acorex-modules-human-capital-management-employment-type.entity-Chio_E9S.mjs.map} +1 -1
  51. package/fesm2022/{acorex-modules-human-capital-management-leave-request.entity-DlQJw4F6.mjs → acorex-modules-human-capital-management-leave-request.entity--9iGu0H7.mjs} +2 -2
  52. package/fesm2022/{acorex-modules-human-capital-management-leave-request.entity-DlQJw4F6.mjs.map → acorex-modules-human-capital-management-leave-request.entity--9iGu0H7.mjs.map} +1 -1
  53. package/fesm2022/{acorex-modules-human-capital-management-leave-type.entity-D5J2oOuY.mjs → acorex-modules-human-capital-management-leave-type.entity-O0j4P2oU.mjs} +2 -2
  54. package/fesm2022/{acorex-modules-human-capital-management-leave-type.entity-D5J2oOuY.mjs.map → acorex-modules-human-capital-management-leave-type.entity-O0j4P2oU.mjs.map} +1 -1
  55. package/fesm2022/{acorex-modules-human-capital-management-position-assignment.entity-D7mKhxYp.mjs → acorex-modules-human-capital-management-position-assignment.entity-Bg6omEy_.mjs} +2 -2
  56. package/fesm2022/{acorex-modules-human-capital-management-position-assignment.entity-D7mKhxYp.mjs.map → acorex-modules-human-capital-management-position-assignment.entity-Bg6omEy_.mjs.map} +1 -1
  57. package/fesm2022/{acorex-modules-human-capital-management-reject-leave-request.command-C4AWFOmG.mjs → acorex-modules-human-capital-management-reject-leave-request.command-ZNGufyB1.mjs} +2 -2
  58. package/fesm2022/{acorex-modules-human-capital-management-reject-leave-request.command-C4AWFOmG.mjs.map → acorex-modules-human-capital-management-reject-leave-request.command-ZNGufyB1.mjs.map} +1 -1
  59. package/fesm2022/{acorex-modules-human-capital-management-revoke-position-assignment.command-BSJhBW3p.mjs → acorex-modules-human-capital-management-revoke-position-assignment.command-C8pwJExa.mjs} +2 -2
  60. package/fesm2022/{acorex-modules-human-capital-management-revoke-position-assignment.command-BSJhBW3p.mjs.map → acorex-modules-human-capital-management-revoke-position-assignment.command-C8pwJExa.mjs.map} +1 -1
  61. package/fesm2022/acorex-modules-human-capital-management.mjs +1 -1
  62. package/fesm2022/{acorex-modules-organization-management-acorex-modules-organization-management-BDnIsf2j.mjs → acorex-modules-organization-management-acorex-modules-organization-management-aord1Uv0.mjs} +169 -606
  63. package/fesm2022/acorex-modules-organization-management-acorex-modules-organization-management-aord1Uv0.mjs.map +1 -0
  64. package/fesm2022/{acorex-modules-organization-management-add-business-unit-to-business-unit.command-BB8-LTp8.mjs → acorex-modules-organization-management-add-business-unit-to-business-unit.command-AfY76V1Q.mjs} +2 -2
  65. package/fesm2022/{acorex-modules-organization-management-add-business-unit-to-business-unit.command-BB8-LTp8.mjs.map → acorex-modules-organization-management-add-business-unit-to-business-unit.command-AfY76V1Q.mjs.map} +1 -1
  66. package/fesm2022/{acorex-modules-organization-management-add-position-to-business-unit.command-BaEW7Jx8.mjs → acorex-modules-organization-management-add-position-to-business-unit.command-DT9WSyiI.mjs} +2 -2
  67. package/fesm2022/{acorex-modules-organization-management-add-position-to-business-unit.command-BaEW7Jx8.mjs.map → acorex-modules-organization-management-add-position-to-business-unit.command-DT9WSyiI.mjs.map} +1 -1
  68. package/fesm2022/acorex-modules-organization-management-add-team-to-business-unit.command-Cm7ze35c.mjs +130 -0
  69. package/fesm2022/acorex-modules-organization-management-add-team-to-business-unit.command-Cm7ze35c.mjs.map +1 -0
  70. package/fesm2022/{acorex-modules-organization-management-business-unit.entity-CuFBCQ7T.mjs → acorex-modules-organization-management-business-unit.entity-BgxuZhyH.mjs} +2 -2
  71. package/fesm2022/{acorex-modules-organization-management-business-unit.entity-CuFBCQ7T.mjs.map → acorex-modules-organization-management-business-unit.entity-BgxuZhyH.mjs.map} +1 -1
  72. package/fesm2022/{acorex-modules-organization-management-chart.entity-B7oSgI4o.mjs → acorex-modules-organization-management-chart.entity-DSvAq3s6.mjs} +2 -2
  73. package/fesm2022/{acorex-modules-organization-management-chart.entity-B7oSgI4o.mjs.map → acorex-modules-organization-management-chart.entity-DSvAq3s6.mjs.map} +1 -1
  74. package/fesm2022/{acorex-modules-organization-management-company.entity-BSDic10Z.mjs → acorex-modules-organization-management-company.entity-BU1_8FIf.mjs} +2 -2
  75. package/fesm2022/{acorex-modules-organization-management-company.entity-BSDic10Z.mjs.map → acorex-modules-organization-management-company.entity-BU1_8FIf.mjs.map} +1 -1
  76. package/fesm2022/{acorex-modules-organization-management-entity.provider-BkWwyLUZ.mjs → acorex-modules-organization-management-entity.provider-i18ksNjv.mjs} +15 -15
  77. package/fesm2022/{acorex-modules-organization-management-entity.provider-BkWwyLUZ.mjs.map → acorex-modules-organization-management-entity.provider-i18ksNjv.mjs.map} +1 -1
  78. package/fesm2022/{acorex-modules-organization-management-feature-definition.provider-D8Tsj3hk.mjs → acorex-modules-organization-management-feature-definition.provider-CDPVhpcX.mjs} +2 -2
  79. package/fesm2022/{acorex-modules-organization-management-feature-definition.provider-D8Tsj3hk.mjs.map → acorex-modules-organization-management-feature-definition.provider-CDPVhpcX.mjs.map} +1 -1
  80. package/fesm2022/{acorex-modules-organization-management-job-definition-pages-component.provider-cHJU9tB2.mjs → acorex-modules-organization-management-job-definition-pages-component.provider-BlOJIHXX.mjs} +3 -3
  81. package/fesm2022/{acorex-modules-organization-management-job-definition-pages-component.provider-cHJU9tB2.mjs.map → acorex-modules-organization-management-job-definition-pages-component.provider-BlOJIHXX.mjs.map} +1 -1
  82. package/fesm2022/{acorex-modules-organization-management-job-definition-responsibilities-page.component-Yu4gOQ6K.mjs → acorex-modules-organization-management-job-definition-responsibilities-page.component-BtotMHNw.mjs} +3 -3
  83. package/fesm2022/{acorex-modules-organization-management-job-definition-responsibilities-page.component-Yu4gOQ6K.mjs.map → acorex-modules-organization-management-job-definition-responsibilities-page.component-BtotMHNw.mjs.map} +1 -1
  84. package/fesm2022/{acorex-modules-organization-management-job-definition-skills-page.component-DV8x-8VB.mjs → acorex-modules-organization-management-job-definition-skills-page.component-Cr8vI2T9.mjs} +2 -2
  85. package/fesm2022/{acorex-modules-organization-management-job-definition-skills-page.component-DV8x-8VB.mjs.map → acorex-modules-organization-management-job-definition-skills-page.component-Cr8vI2T9.mjs.map} +1 -1
  86. package/fesm2022/{acorex-modules-organization-management-job-definition.entity-DAo8xR1H.mjs → acorex-modules-organization-management-job-definition.entity-aL7vWbHE.mjs} +2 -2
  87. package/fesm2022/{acorex-modules-organization-management-job-definition.entity-DAo8xR1H.mjs.map → acorex-modules-organization-management-job-definition.entity-aL7vWbHE.mjs.map} +1 -1
  88. package/fesm2022/{acorex-modules-organization-management-job-level.datasource-C7ElEuZx.mjs → acorex-modules-organization-management-job-level.datasource-Ds3ZDmRO.mjs} +2 -2
  89. package/fesm2022/{acorex-modules-organization-management-job-level.datasource-C7ElEuZx.mjs.map → acorex-modules-organization-management-job-level.datasource-Ds3ZDmRO.mjs.map} +1 -1
  90. package/fesm2022/{acorex-modules-organization-management-job-level.entity-Dw3YK9-O.mjs → acorex-modules-organization-management-job-level.entity-BzWMFrZX.mjs} +2 -2
  91. package/fesm2022/{acorex-modules-organization-management-job-level.entity-Dw3YK9-O.mjs.map → acorex-modules-organization-management-job-level.entity-BzWMFrZX.mjs.map} +1 -1
  92. package/fesm2022/{acorex-modules-organization-management-menu.provider-DWt62uxv.mjs → acorex-modules-organization-management-menu.provider-CICmpvEv.mjs} +3 -2
  93. package/fesm2022/{acorex-modules-organization-management-menu.provider-DWt62uxv.mjs.map → acorex-modules-organization-management-menu.provider-CICmpvEv.mjs.map} +1 -1
  94. package/fesm2022/acorex-modules-organization-management-org-chart-default-node-contribution.provider-9s5ZUus4.mjs +228 -0
  95. package/fesm2022/acorex-modules-organization-management-org-chart-default-node-contribution.provider-9s5ZUus4.mjs.map +1 -0
  96. package/fesm2022/acorex-modules-organization-management-org-chart-employee-flyout-contribution.provider-CepGeA3_.mjs +182 -0
  97. package/fesm2022/acorex-modules-organization-management-org-chart-employee-flyout-contribution.provider-CepGeA3_.mjs.map +1 -0
  98. package/fesm2022/acorex-modules-organization-management-org-chart-position-employee-node-contribution.provider-Bi2pMYPe.mjs +170 -0
  99. package/fesm2022/acorex-modules-organization-management-org-chart-position-employee-node-contribution.provider-Bi2pMYPe.mjs.map +1 -0
  100. package/fesm2022/acorex-modules-organization-management-org-chart-ux-node-contribution.provider-BgopvirR.mjs +334 -0
  101. package/fesm2022/acorex-modules-organization-management-org-chart-ux-node-contribution.provider-BgopvirR.mjs.map +1 -0
  102. package/fesm2022/{acorex-modules-organization-management-org-chart.page-Rh8xmXaj.mjs → acorex-modules-organization-management-org-chart.page-Cs-wTPS-.mjs} +116 -38
  103. package/fesm2022/acorex-modules-organization-management-org-chart.page-Cs-wTPS-.mjs.map +1 -0
  104. package/fesm2022/{acorex-modules-organization-management-permission-definition.provider-3TD89ErD.mjs → acorex-modules-organization-management-permission-definition.provider-DEc2_pkz.mjs} +3 -2
  105. package/fesm2022/{acorex-modules-organization-management-permission-definition.provider-3TD89ErD.mjs.map → acorex-modules-organization-management-permission-definition.provider-DEc2_pkz.mjs.map} +1 -1
  106. package/fesm2022/acorex-modules-organization-management-permission.keys-DwZNBc12.mjs +56 -0
  107. package/fesm2022/acorex-modules-organization-management-permission.keys-DwZNBc12.mjs.map +1 -0
  108. package/fesm2022/{acorex-modules-organization-management-position.entity-Cysj_53n.mjs → acorex-modules-organization-management-position.entity-C7u3c4LB.mjs} +2 -2
  109. package/fesm2022/{acorex-modules-organization-management-position.entity-Cysj_53n.mjs.map → acorex-modules-organization-management-position.entity-C7u3c4LB.mjs.map} +1 -1
  110. package/fesm2022/{acorex-modules-organization-management-remove-position-from-business-unit.command-BkQyq1ho.mjs → acorex-modules-organization-management-remove-position-from-business-unit.command-B7D1vMcs.mjs} +2 -2
  111. package/fesm2022/{acorex-modules-organization-management-remove-position-from-business-unit.command-BkQyq1ho.mjs.map → acorex-modules-organization-management-remove-position-from-business-unit.command-B7D1vMcs.mjs.map} +1 -1
  112. package/fesm2022/{acorex-modules-organization-management-replace-position-assignee.command-Cf8VR0tX.mjs → acorex-modules-organization-management-replace-position-assignee.command-xodO4wdB.mjs} +2 -2
  113. package/fesm2022/{acorex-modules-organization-management-replace-position-assignee.command-Cf8VR0tX.mjs.map → acorex-modules-organization-management-replace-position-assignee.command-xodO4wdB.mjs.map} +1 -1
  114. package/fesm2022/{acorex-modules-organization-management-responsibilities-matrix-widget-edit.component-BeQ-nXpS.mjs → acorex-modules-organization-management-responsibilities-matrix-widget-edit.component-BeAm1FY0.mjs} +2 -2
  115. package/fesm2022/{acorex-modules-organization-management-responsibilities-matrix-widget-edit.component-BeQ-nXpS.mjs.map → acorex-modules-organization-management-responsibilities-matrix-widget-edit.component-BeAm1FY0.mjs.map} +1 -1
  116. package/fesm2022/{acorex-modules-organization-management-responsibilities-matrix-widget-view.component-Ie_39X99.mjs → acorex-modules-organization-management-responsibilities-matrix-widget-view.component-cdReuV2q.mjs} +2 -2
  117. package/fesm2022/{acorex-modules-organization-management-responsibilities-matrix-widget-view.component-Ie_39X99.mjs.map → acorex-modules-organization-management-responsibilities-matrix-widget-view.component-cdReuV2q.mjs.map} +1 -1
  118. package/fesm2022/{acorex-modules-organization-management-responsibilities-matrix.component-58s3Qfyg.mjs → acorex-modules-organization-management-responsibilities-matrix.component-bFxHz2vq.mjs} +2 -2
  119. package/fesm2022/{acorex-modules-organization-management-responsibilities-matrix.component-58s3Qfyg.mjs.map → acorex-modules-organization-management-responsibilities-matrix.component-bFxHz2vq.mjs.map} +1 -1
  120. package/fesm2022/{acorex-modules-organization-management-responsibility-level.entity-DWWQB7ke.mjs → acorex-modules-organization-management-responsibility-level.entity-BDOhL12B.mjs} +2 -2
  121. package/fesm2022/{acorex-modules-organization-management-responsibility-level.entity-DWWQB7ke.mjs.map → acorex-modules-organization-management-responsibility-level.entity-BDOhL12B.mjs.map} +1 -1
  122. package/fesm2022/{acorex-modules-organization-management-responsibility.entity-C4V55fKt.mjs → acorex-modules-organization-management-responsibility.entity-DQK2qB5N.mjs} +2 -2
  123. package/fesm2022/{acorex-modules-organization-management-responsibility.entity-C4V55fKt.mjs.map → acorex-modules-organization-management-responsibility.entity-DQK2qB5N.mjs.map} +1 -1
  124. package/fesm2022/{acorex-modules-organization-management-settings.provider-BD70P1XV.mjs → acorex-modules-organization-management-settings.provider-Di4FtA78.mjs} +2 -2
  125. package/fesm2022/{acorex-modules-organization-management-settings.provider-BD70P1XV.mjs.map → acorex-modules-organization-management-settings.provider-Di4FtA78.mjs.map} +1 -1
  126. package/fesm2022/{acorex-modules-organization-management-team-business-unit.entity-B5T1fYAF.mjs → acorex-modules-organization-management-team-business-unit.entity-DTWxuUQV.mjs} +2 -2
  127. package/fesm2022/{acorex-modules-organization-management-team-business-unit.entity-B5T1fYAF.mjs.map → acorex-modules-organization-management-team-business-unit.entity-DTWxuUQV.mjs.map} +1 -1
  128. package/fesm2022/{acorex-modules-organization-management-team-member-role.entity-dPp_dK-g.mjs → acorex-modules-organization-management-team-member-role.entity-D9SlbSQ4.mjs} +2 -2
  129. package/fesm2022/{acorex-modules-organization-management-team-member-role.entity-dPp_dK-g.mjs.map → acorex-modules-organization-management-team-member-role.entity-D9SlbSQ4.mjs.map} +1 -1
  130. package/fesm2022/{acorex-modules-organization-management-team-member.entity-CZPmF9f6.mjs → acorex-modules-organization-management-team-member.entity-D5NapdKq.mjs} +14 -2
  131. package/fesm2022/acorex-modules-organization-management-team-member.entity-D5NapdKq.mjs.map +1 -0
  132. package/fesm2022/{acorex-modules-organization-management-team.entity-CCfWLgDx.mjs → acorex-modules-organization-management-team.entity-CNg4ffZv.mjs} +2 -2
  133. package/fesm2022/{acorex-modules-organization-management-team.entity-CCfWLgDx.mjs.map → acorex-modules-organization-management-team.entity-CNg4ffZv.mjs.map} +1 -1
  134. package/fesm2022/acorex-modules-organization-management.mjs +1 -1
  135. package/fesm2022/{acorex-modules-task-management-acorex-modules-task-management-ZcP94xuL.mjs → acorex-modules-task-management-acorex-modules-task-management-_6DcZE_U.mjs} +178 -14
  136. package/fesm2022/acorex-modules-task-management-acorex-modules-task-management-_6DcZE_U.mjs.map +1 -0
  137. package/fesm2022/{acorex-modules-task-management-task-board.page-CEW3SrBz.mjs → acorex-modules-task-management-task-board.page-jMOsL_QA.mjs} +106 -68
  138. package/fesm2022/acorex-modules-task-management-task-board.page-jMOsL_QA.mjs.map +1 -0
  139. package/fesm2022/acorex-modules-task-management.mjs +1 -1
  140. package/organization-management/README.md +1 -1
  141. package/package.json +2 -2
  142. package/types/acorex-modules-ai-management.d.ts +25 -67
  143. package/types/acorex-modules-asset-management.d.ts +12 -8
  144. package/types/acorex-modules-document-management.d.ts +15 -7
  145. package/types/acorex-modules-organization-management.d.ts +135 -76
  146. package/types/acorex-modules-task-management.d.ts +12 -1
  147. package/fesm2022/acorex-modules-asset-management-acorex-modules-asset-management-Blejt-Mo.mjs.map +0 -1
  148. package/fesm2022/acorex-modules-asset-management-asset-rental-history.entity-C6V8Nuvb.mjs +0 -302
  149. package/fesm2022/acorex-modules-asset-management-asset-rental-history.entity-C6V8Nuvb.mjs.map +0 -1
  150. package/fesm2022/acorex-modules-asset-management-asset.entity-3dFsNRkr.mjs.map +0 -1
  151. package/fesm2022/acorex-modules-document-management-large-tiles-view.component-D5X1pcSP.mjs +0 -24
  152. package/fesm2022/acorex-modules-document-management-large-tiles-view.component-D5X1pcSP.mjs.map +0 -1
  153. package/fesm2022/acorex-modules-document-management-small-tiles-view.component-a7wOH_7D.mjs +0 -24
  154. package/fesm2022/acorex-modules-document-management-small-tiles-view.component-a7wOH_7D.mjs.map +0 -1
  155. package/fesm2022/acorex-modules-human-capital-management-acorex-modules-human-capital-management-Bwk3-2wy.mjs.map +0 -1
  156. package/fesm2022/acorex-modules-organization-management-acorex-modules-organization-management-BDnIsf2j.mjs.map +0 -1
  157. package/fesm2022/acorex-modules-organization-management-org-chart.page-Rh8xmXaj.mjs.map +0 -1
  158. package/fesm2022/acorex-modules-organization-management-team-member.entity-CZPmF9f6.mjs.map +0 -1
  159. package/fesm2022/acorex-modules-task-management-acorex-modules-task-management-ZcP94xuL.mjs.map +0 -1
  160. package/fesm2022/acorex-modules-task-management-task-board.page-CEW3SrBz.mjs.map +0 -1
@@ -31,9 +31,6 @@ import * as i1 from '@angular/forms';
31
31
  import { FormsModule } from '@angular/forms';
32
32
  import { AXOverlayService } from '@acorex/cdk/overlay';
33
33
  import { defineCommand, AXP_COMMAND_DEFINITION_CATEGORY_AI_TOOLS } from '@acorex/platform/runtime';
34
- import * as i3$1 from '@acorex/components/form';
35
- import { AXFormModule } from '@acorex/components/form';
36
- import { AXBasePageComponent } from '@acorex/components/page';
37
34
 
38
35
  //#region ---- Module Config ----
39
36
  const config = {
@@ -1854,9 +1851,9 @@ function axmMimeTypeForChatAttachment(file) {
1854
1851
  //#endregion
1855
1852
  //#region ---- Component ----
1856
1853
  /**
1857
- * Floating prompt UI for AI assist: gradient chrome, inner composer, and image/audio/document attachments. Uses initial assist/agent ids when the target picker is not shown.
1854
+ * Floating prompt UI for AI assist: gradient chrome, inner composer, and image/audio/document attachments. Target assist/agent comes from optional initial ids on open.
1858
1855
  */
1859
- class AXMAiAssistPromptBottomPanelComponent {
1856
+ class AXMAiAssistPromptBoxComponent {
1860
1857
  constructor() {
1861
1858
  //#region ---- Services & Dependencies ----
1862
1859
  this.toastService = inject(AXToastService);
@@ -1870,8 +1867,6 @@ class AXMAiAssistPromptBottomPanelComponent {
1870
1867
  this.placeholder = input('', ...(ngDevMode ? [{ debugName: "placeholder" }] : /* istanbul ignore next */ []));
1871
1868
  this.initialPrompt = input('', ...(ngDevMode ? [{ debugName: "initialPrompt" }] : /* istanbul ignore next */ []));
1872
1869
  this.contentMaxWidthPx = input(680, ...(ngDevMode ? [{ debugName: "contentMaxWidthPx" }] : /* istanbul ignore next */ []));
1873
- this.assistPickerRows = input([], ...(ngDevMode ? [{ debugName: "assistPickerRows" }] : /* istanbul ignore next */ []));
1874
- this.agentPickerRows = input([], ...(ngDevMode ? [{ debugName: "agentPickerRows" }] : /* istanbul ignore next */ []));
1875
1870
  this.initialAssistId = input(undefined, ...(ngDevMode ? [{ debugName: "initialAssistId" }] : /* istanbul ignore next */ []));
1876
1871
  this.initialDirectAgentId = input(undefined, ...(ngDevMode ? [{ debugName: "initialDirectAgentId" }] : /* istanbul ignore next */ []));
1877
1872
  this.runPrompt = input.required(...(ngDevMode ? [{ debugName: "runPrompt" }] : /* istanbul ignore next */ []));
@@ -1934,6 +1929,16 @@ class AXMAiAssistPromptBottomPanelComponent {
1934
1929
  onPromptDraftChange(value) {
1935
1930
  this.promptDraft.set((value ?? '').toString());
1936
1931
  }
1932
+ /**
1933
+ * Enter sends; Shift+Enter inserts a newline. IME composition Enter is left unchanged.
1934
+ */
1935
+ onPromptKeydown(event) {
1936
+ if (event.key !== 'Enter' || event.shiftKey || event.isComposing) {
1937
+ return;
1938
+ }
1939
+ event.preventDefault();
1940
+ void this.onSend();
1941
+ }
1937
1942
  onCancel() {
1938
1943
  this.requestClose()(null);
1939
1944
  }
@@ -1945,7 +1950,7 @@ class AXMAiAssistPromptBottomPanelComponent {
1945
1950
  this.onCancel();
1946
1951
  }
1947
1952
  /**
1948
- * Dismisses the panel like Cancel (disabled while a run is in flight, same as footer Cancel).
1953
+ * Dismisses the prompt box like Cancel (disabled while a run is in flight, same as footer Cancel).
1949
1954
  */
1950
1955
  onDocumentEscape() {
1951
1956
  if (!isPlatformBrowser(this.platformId) || this.busy()) {
@@ -2374,12 +2379,12 @@ class AXMAiAssistPromptBottomPanelComponent {
2374
2379
  const content = await this.translation.translateAsync(translationKey);
2375
2380
  await this.toastService.show({ color: 'warning', title: errTitle, content });
2376
2381
  }
2377
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXMAiAssistPromptBottomPanelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2378
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: AXMAiAssistPromptBottomPanelComponent, isStandalone: true, selector: "axm-ai-assist-prompt-bottom-panel", inputs: { title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: true, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, initialPrompt: { classPropertyName: "initialPrompt", publicName: "initialPrompt", isSignal: true, isRequired: false, transformFunction: null }, contentMaxWidthPx: { classPropertyName: "contentMaxWidthPx", publicName: "contentMaxWidthPx", isSignal: true, isRequired: false, transformFunction: null }, assistPickerRows: { classPropertyName: "assistPickerRows", publicName: "assistPickerRows", isSignal: true, isRequired: false, transformFunction: null }, agentPickerRows: { classPropertyName: "agentPickerRows", publicName: "agentPickerRows", isSignal: true, isRequired: false, transformFunction: null }, initialAssistId: { classPropertyName: "initialAssistId", publicName: "initialAssistId", isSignal: true, isRequired: false, transformFunction: null }, initialDirectAgentId: { classPropertyName: "initialDirectAgentId", publicName: "initialDirectAgentId", isSignal: true, isRequired: false, transformFunction: null }, runPrompt: { classPropertyName: "runPrompt", publicName: "runPrompt", isSignal: true, isRequired: true, transformFunction: null }, requestClose: { classPropertyName: "requestClose", publicName: "requestClose", isSignal: true, isRequired: true, transformFunction: null } }, host: { listeners: { "document:keydown.escape": "onDocumentEscape()" } }, ngImport: i0, template: "<div\n class=\"axm-ai-assist-prompt-bottom-panel flex flex-col gap-2.5 min-h-0 w-full\"\n [style.max-width.px]=\"contentMaxWidthPx()\"\n>\n <div class=\"axm-ai-assist-prompt-bottom-panel__eyebrow flex items-center justify-between gap-3 shrink-0 px-0.5\">\n <div class=\"axm-ai-assist-prompt-bottom-panel__brand inline-flex min-w-0 items-center gap-2\">\n <span class=\"axm-ai-assist-prompt-bottom-panel__brand-mark\" aria-hidden=\"true\">\n <i class=\"fa-light fa-sparkles\" aria-hidden=\"true\"></i>\n </span>\n <span class=\"axm-ai-assist-prompt-bottom-panel__brand-title truncate\">{{ title() }}</span>\n </div>\n <ax-button\n class=\"shrink-0 xs\"\n look=\"blank\"\n color=\"default\"\n type=\"button\"\n [iconOnly]=\"true\"\n [disabled]=\"busy()\"\n [attr.aria-label]=\"('@general:actions.close.title' | translate | async) ?? ''\"\n (onClick)=\"onCancel()\"\n >\n <ax-prefix>\n <i class=\"fa-light fa-xmark\" aria-hidden=\"true\"></i>\n </ax-prefix>\n </ax-button>\n </div>\n\n <div class=\"axm-ai-assist-prompt-bottom-panel__sheet flex min-h-0 flex-col gap-2\">\n @if (\n draftComposerImages().length > 0 ||\n draftComposerAudios().length > 0 ||\n draftComposerFiles().length > 0 ||\n isComposerSaving()\n ) {\n <div\n class=\"shrink-0 rounded-xl border border-default/45 dark:border-darker bg-lightest/90 p-1.5 flex flex-col gap-1.5\"\n [attr.aria-label]=\"('@ai-management:chat.composer-attachments-region' | translate | async) ?? ''\"\n >\n <div class=\"flex flex-wrap items-center justify-between gap-1.5 text-[0.65rem] text-muted\">\n <span>\n @if (isComposerSaving()) {\n {{ '@ai-management:chat.composer-uploading' | translate | async }}\n } @else {\n @if (draftComposerImages().length > 0) {\n <span\n >{{ draftComposerImages().length }}\n {{ '@ai-management:chat.composer-images-count' | translate | async }}</span\n >\n }\n @if (draftComposerImages().length > 0 && draftComposerAudios().length > 0) {\n <span class=\"mx-1\">\u00B7</span>\n }\n @if (draftComposerAudios().length > 0) {\n <span\n >{{ draftComposerAudios().length }}\n {{ '@ai-management:chat.composer-audio-count' | translate | async }}</span\n >\n }\n @if (draftComposerFiles().length > 0) {\n @if (draftComposerImages().length > 0 || draftComposerAudios().length > 0) {\n <span class=\"mx-1\">\u00B7</span>\n }\n <span\n >{{ draftComposerFiles().length }}\n {{ '@ai-management:chat.composer-documents-count' | translate | async }}</span\n >\n }\n }\n </span>\n </div>\n @if (draftComposerImages().length > 0) {\n <div class=\"flex flex-wrap gap-1.5\">\n @for (slot of draftComposerImages(); track slot.clientId) {\n <div\n class=\"relative h-12 w-12 shrink-0 overflow-hidden rounded-md border border-default/60 dark:border-darker bg-lightest\"\n >\n <img [src]=\"slot.previewUrl\" [alt]=\"slot.name ?? ''\" class=\"h-full w-full object-cover\" />\n @if (!slot.fileId) {\n <span\n class=\"absolute inset-0 flex items-center justify-center bg-default/40 text-[0.6rem] font-medium text-on-lightest\"\n >\u2026</span\n >\n }\n <button\n type=\"button\"\n class=\"absolute end-0.5 top-0.5 flex h-4 w-4 items-center justify-center rounded bg-default/80 text-[0.65rem] leading-none text-on-lightest hover:bg-default focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary-400\"\n [disabled]=\"busy() || isComposerSaving()\"\n [attr.aria-label]=\"('@ai-management:chat.remove-draft-image' | translate | async) ?? ''\"\n (click)=\"removeDraftImage(slot.clientId)\"\n >\n \u00D7\n </button>\n </div>\n }\n </div>\n }\n @if (draftComposerAudios().length > 0) {\n <div class=\"flex flex-col gap-1\">\n @for (slot of draftComposerAudios(); track slot.clientId) {\n <div\n class=\"flex items-center justify-between gap-1.5 rounded border border-default/60 dark:border-darker bg-lightest px-1.5 py-1 text-[0.65rem] min-w-0\"\n >\n <span class=\"truncate text-on-lightest\" [attr.title]=\"slot.name ?? ''\">\n {{ '@ai-management:chat.attached-audio-label' | translate | async }}:\n {{ slot.name?.trim() || ('@ai-management:chat.audio-untitled' | translate | async) }}\n </span>\n @if (!slot.fileId) {\n <span class=\"text-muted shrink-0\">\u2026</span>\n }\n <button\n type=\"button\"\n class=\"shrink-0 flex h-5 w-5 items-center justify-center rounded bg-default/80 text-[0.75rem] leading-none text-on-lightest hover:bg-default focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary-400\"\n [disabled]=\"busy() || isComposerSaving()\"\n [attr.aria-label]=\"('@ai-management:chat.remove-draft-audio' | translate | async) ?? ''\"\n (click)=\"removeDraftAudio(slot.clientId)\"\n >\n \u00D7\n </button>\n </div>\n }\n </div>\n }\n @if (draftComposerFiles().length > 0) {\n <div class=\"flex flex-col gap-1\">\n @for (slot of draftComposerFiles(); track slot.clientId) {\n <div\n class=\"flex items-center justify-between gap-1.5 rounded border border-default/60 dark:border-darker bg-lightest px-1.5 py-1 text-[0.65rem] min-w-0\"\n >\n <span class=\"truncate text-on-lightest\" [attr.title]=\"slot.name ?? ''\">\n {{ '@ai-management:chat.attached-document-label' | translate | async }}:\n {{ slot.name?.trim() || ('@ai-management:chat.document-untitled' | translate | async) }}\n </span>\n @if (!slot.fileId) {\n <span class=\"text-muted shrink-0\">\u2026</span>\n }\n <button\n type=\"button\"\n class=\"shrink-0 flex h-5 w-5 items-center justify-center rounded bg-default/80 text-[0.75rem] leading-none text-on-lightest hover:bg-default focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary-400\"\n [disabled]=\"busy() || isComposerSaving()\"\n [attr.aria-label]=\"('@ai-management:chat.remove-draft-document' | translate | async) ?? ''\"\n (click)=\"removeDraftFile(slot.clientId)\"\n >\n \u00D7\n </button>\n </div>\n }\n </div>\n }\n </div>\n }\n\n <div class=\"axm-ai-assist-prompt-bottom-panel__body flex min-h-0 flex-col\">\n <ax-text-area\n class=\"axm-ai-assist-prompt-bottom-panel__prompt-input w-full min-h-0\"\n [rows]=\"3\"\n [disabled]=\"busy()\"\n [ngModel]=\"promptDraft()\"\n (ngModelChange)=\"onPromptDraftChange($event)\"\n [placeholder]=\"\n placeholder().trim().length > 0\n ? placeholder()\n : (('@ai-management:assist-popup.placeholder' | translate | async) ?? '')\n \"\n ></ax-text-area>\n </div>\n\n <div class=\"axm-ai-assist-prompt-bottom-panel__footer flex shrink-0 items-center justify-between gap-2\">\n <ax-button\n class=\"axm-ai-assist-prompt-bottom-panel__menu-trigger\"\n look=\"solid\"\n color=\"primary\"\n type=\"button\"\n [iconOnly]=\"true\"\n [disabled]=\"busy()\"\n [attr.aria-label]=\"('@ai-management:assist-popup.composer-menu-aria' | translate | async) ?? ''\"\n >\n <ax-prefix>\n <i class=\"fa-light fa-plus text-sm\" aria-hidden=\"true\"></i>\n </ax-prefix>\n <ax-dropdown-panel #composerMenu>\n <ax-button-item-list class=\"min-w-56\">\n <ax-button-item\n [text]=\"('@ai-management:chat.upload-images' | translate | async) ?? ''\"\n [attr.aria-label]=\"('@ai-management:chat.upload-images-aria' | translate | async) ?? ''\"\n (onClick)=\"openImagePicker(); composerMenu.close()\"\n >\n <ax-prefix>\n <i class=\"fa-light fa-image size-4 text-center\" aria-hidden=\"true\"></i>\n </ax-prefix>\n </ax-button-item>\n <ax-button-item\n [text]=\"('@ai-management:chat.upload-audio' | translate | async) ?? ''\"\n [attr.aria-label]=\"('@ai-management:chat.upload-audio-aria' | translate | async) ?? ''\"\n (onClick)=\"openAudioPicker(); composerMenu.close()\"\n >\n <ax-prefix>\n <i class=\"fa-light fa-microphone size-4 text-center\" aria-hidden=\"true\"></i>\n </ax-prefix>\n </ax-button-item>\n <ax-button-item\n [text]=\"('@ai-management:chat.upload-documents' | translate | async) ?? ''\"\n [attr.aria-label]=\"('@ai-management:chat.upload-documents-aria' | translate | async) ?? ''\"\n (onClick)=\"openDocumentPicker(); composerMenu.close()\"\n >\n <ax-prefix>\n <i class=\"fa-light fa-paperclip size-4 text-center\" aria-hidden=\"true\"></i>\n </ax-prefix>\n </ax-button-item>\n </ax-button-item-list>\n </ax-dropdown-panel>\n </ax-button>\n\n <ax-button\n class=\"axm-ai-assist-prompt-bottom-panel__send axm-ai-assist-prompt-bottom-panel__send-gradient\"\n color=\"primary\"\n type=\"button\"\n [disabled]=\"busy() || !canSend()\"\n [text]=\"\n busy()\n ? (('@ai-management:assist-popup.generating' | translate | async) ?? '')\n : (('@ai-management:assist-popup.generate' | translate | async) ?? '')\n \"\n (onClick)=\"onSend()\"\n ></ax-button>\n </div>\n </div>\n</div>\n", styles: [".axm-ai-assist-prompt-bottom-panel-shell{pointer-events:none;box-sizing:border-box;inset:0;width:100%;max-height:100%;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;padding-left:max(.75rem,env(safe-area-inset-left,0px));padding-right:max(.75rem,env(safe-area-inset-right,0px));padding-bottom:max(.75rem,env(safe-area-inset-bottom,0px));padding-top:max(.5rem,env(safe-area-inset-top,0px))}.axm-ai-assist-prompt-bottom-panel-shell .ax-overlay-pane{pointer-events:auto;--tw-border-style: none;border-style:none;background-color:transparent;flex:0 0 auto;width:auto!important;max-width:calc(100vw - 1.5rem);min-width:min(480px,calc(100vw - 1.5rem))}.axm-ai-assist-prompt-bottom-panel{--axm-ai-assist-prompt-chrome-gradient: linear-gradient( 125deg, rgb(var(--ax-sys-color-primary-200)) 0%, rgb(var(--ax-sys-color-primary-400)) 48%, rgb(var(--ax-sys-color-primary-300)) 100% );--axm-ai-assist-prompt-send-gradient: linear-gradient( 90deg, rgb(var(--ax-sys-color-primary-500)), rgb(var(--ax-sys-color-primary-700)) );box-sizing:border-box;margin:0;max-height:min(78vh,620px);overflow:hidden;padding:.65rem .7rem .7rem;border-radius:1.35rem;background:var(--axm-ai-assist-prompt-chrome-gradient);box-shadow:0 18px 50px -12px rgba(var(--ax-sys-color-on-surface),.12),0 8px 20px -8px rgba(var(--ax-sys-color-primary-400),.2)}.ax-dark .axm-ai-assist-prompt-bottom-panel,.dark .axm-ai-assist-prompt-bottom-panel{--axm-ai-assist-prompt-chrome-gradient: linear-gradient( 125deg, rgb(var(--ax-sys-color-primary-600)) 0%, rgb(var(--ax-sys-color-primary-500)) 48%, rgb(var(--ax-sys-color-primary-400)) 100% );box-shadow:0 20px 55px -14px rgba(var(--ax-sys-color-dark),.48),0 8px 24px -8px rgba(var(--ax-sys-color-primary-400),.26)}.axm-ai-assist-prompt-bottom-panel__brand-title{font-size:.72rem;line-height:1.25;font-weight:600;letter-spacing:.01em;color:rgb(var(--ax-sys-color-on-surface))}.ax-dark .axm-ai-assist-prompt-bottom-panel__brand-title{color:rgb(var(--ax-sys-color-on-lightest-surface))}.axm-ai-assist-prompt-bottom-panel__brand-mark{display:inline-flex;width:1.65rem;height:1.65rem;flex-shrink:0;align-items:center;justify-content:center;border-radius:9999px;font-size:.75rem;line-height:1;color:rgb(var(--ax-sys-color-on-primary-surface));background:linear-gradient(145deg,rgb(var(--ax-sys-color-primary-500)),rgb(var(--ax-sys-color-primary-700)));box-shadow:0 2px 8px rgba(var(--ax-sys-color-primary-500),.35)}.axm-ai-assist-prompt-bottom-panel__sheet{flex:1 1 auto;min-height:0;padding:.65rem .65rem .55rem;border-radius:1rem;background:rgb(var(--ax-sys-color-lightest-surface));border:1px solid rgba(var(--ax-sys-color-neutral-300),.35);box-shadow:inset 0 1px rgba(var(--ax-sys-color-lightest-surface),.95)}.ax-dark .axm-ai-assist-prompt-bottom-panel__sheet{background:rgb(var(--ax-sys-color-neutral-800));border-color:rgba(var(--ax-sys-color-neutral-500),.4);box-shadow:inset 0 1px rgba(var(--ax-sys-color-lightest-surface),.06)}.axm-ai-assist-prompt-bottom-panel__body{overflow-y:auto;min-height:0;flex:1 1 auto}.axm-ai-assist-prompt-bottom-panel__prompt-input{display:block;width:100%;min-height:0;border:none!important;box-shadow:none!important;background:transparent!important}.axm-ai-assist-prompt-bottom-panel__prompt-input:focus-within{outline:none!important;border:none!important;box-shadow:none!important}.axm-ai-assist-prompt-bottom-panel__prompt-input:focus-within>*{border:none!important;box-shadow:none!important;outline:none!important}.axm-ai-assist-prompt-bottom-panel__prompt-input textarea{min-height:4.5rem;max-height:min(30vh,240px);font-size:.8125rem;line-height:1.45;padding-block:.55rem;padding-inline:.65rem;border-radius:.65rem;border:none!important;box-shadow:none!important;background:transparent!important}.axm-ai-assist-prompt-bottom-panel__prompt-input textarea:focus,.axm-ai-assist-prompt-bottom-panel__prompt-input textarea:focus-visible,.axm-ai-assist-prompt-bottom-panel__prompt-input textarea:active{outline:none!important;outline-offset:0!important;border:none!important;box-shadow:none!important}.ax-dark .axm-ai-assist-prompt-bottom-panel__prompt-input textarea{color:rgb(var(--ax-sys-color-on-lightest-surface));background:rgb(var(--ax-sys-color-neutral-900))!important}.axm-ai-assist-prompt-bottom-panel__footer{min-height:0}ax-button.axm-ai-assist-prompt-bottom-panel__menu-trigger{--ax-comp-button-normal-bg-color: 0, 0, 0, 0 !important;--ax-comp-button-hover-bg-color: 0, 0, 0, 0 !important;--ax-comp-button-pressed-bg-color: 0, 0, 0, 0 !important;--ax-comp-button-border-width: 0 !important;border-radius:9999px!important;overflow:hidden;background:transparent!important;border-color:transparent!important}ax-button.axm-ai-assist-prompt-bottom-panel__menu-trigger:hover:not(.ax-state-disabled,.ax-state-loading,.ax-state-selected),ax-button.axm-ai-assist-prompt-bottom-panel__menu-trigger:active:not(.ax-state-disabled,.ax-state-loading,.ax-state-selected){background:transparent!important;background-color:transparent!important;border-color:transparent!important}ax-button.axm-ai-assist-prompt-bottom-panel__menu-trigger>button{width:2.25rem;height:2.25rem;min-width:2.25rem;min-height:2.25rem;padding:0!important;border-radius:9999px!important;border:none!important;color:rgb(var(--ax-sys-color-on-primary-surface))!important;background:linear-gradient(145deg,rgb(var(--ax-sys-color-primary-500)),rgb(var(--ax-sys-color-primary-700)))!important;box-shadow:0 2px 8px rgba(var(--ax-sys-color-primary-500),.35)}ax-button.axm-ai-assist-prompt-bottom-panel__menu-trigger.ax-state-disabled>button,ax-button.axm-ai-assist-prompt-bottom-panel__menu-trigger.ax-state-loading>button,ax-button.axm-ai-assist-prompt-bottom-panel__menu-trigger>button:disabled{opacity:.55;box-shadow:none}ax-button.axm-ai-assist-prompt-bottom-panel__send-gradient{--ax-comp-button-normal-bg-color: 0, 0, 0, 0 !important;--ax-comp-button-hover-bg-color: 0, 0, 0, 0 !important;--ax-comp-button-pressed-bg-color: 0, 0, 0, 0 !important;--ax-comp-button-border-width: 0 !important;border-radius:9999px!important;overflow:hidden;background:transparent!important;border-color:transparent!important}ax-button.axm-ai-assist-prompt-bottom-panel__send-gradient:hover:not(.ax-state-disabled,.ax-state-loading,.ax-state-selected),ax-button.axm-ai-assist-prompt-bottom-panel__send-gradient:active:not(.ax-state-disabled,.ax-state-loading,.ax-state-selected){background:transparent!important;background-color:transparent!important;border-color:transparent!important}ax-button.axm-ai-assist-prompt-bottom-panel__send-gradient>button{min-height:2.25rem;padding-inline:1rem!important;font-size:.8rem;font-weight:600;letter-spacing:.01em;border-radius:9999px!important;border:none!important;color:rgb(var(--ax-sys-color-on-primary-surface))!important;background:var(--axm-ai-assist-prompt-send-gradient)!important;box-shadow:0 3px 12px rgba(var(--ax-sys-color-secondary-400),.35)}ax-button.axm-ai-assist-prompt-bottom-panel__send-gradient.ax-state-disabled>button,ax-button.axm-ai-assist-prompt-bottom-panel__send-gradient.ax-state-loading>button,ax-button.axm-ai-assist-prompt-bottom-panel__send-gradient>button:disabled{opacity:.55;box-shadow:none}ax-button.axm-ai-assist-prompt-bottom-panel__menu-trigger:hover:not(.ax-state-disabled,.ax-state-loading,.ax-state-selected)>button{filter:brightness(.94)}ax-button.axm-ai-assist-prompt-bottom-panel__menu-trigger:active:not(.ax-state-disabled,.ax-state-loading,.ax-state-selected)>button{filter:brightness(.88)}ax-button.axm-ai-assist-prompt-bottom-panel__send-gradient:hover:not(.ax-state-disabled,.ax-state-loading,.ax-state-selected)>button{filter:brightness(.96)}ax-button.axm-ai-assist-prompt-bottom-panel__send-gradient:active:not(.ax-state-disabled,.ax-state-loading,.ax-state-selected)>button{filter:brightness(.9)}\n/*! tailwindcss v4.3.0 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { 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: i2.AXButtonItemComponent, selector: "ax-button-item", inputs: ["color", "disabled", "text", "selected", "divided", "data", "name"], outputs: ["onClick", "onFocus", "onBlur", "disabledChange"] }, { kind: "component", type: i2.AXButtonItemListComponent, selector: "ax-button-item-list", inputs: ["items", "closeParentOnClick", "lockOnLoading"], outputs: ["onItemClick"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i3.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay" }, { kind: "ngmodule", type: AXDropdownModule }, { kind: "component", type: i4.AXDropdownPanelComponent, selector: "ax-dropdown-panel", inputs: ["isOpen", "fitParent", "dropdownWidth", "position", "placement", "_target", "adaptivityEnabled"], outputs: ["onOpened", "onClosed"] }, { kind: "ngmodule", type: AXDropdownButtonModule }, { kind: "ngmodule", type: AXTextAreaModule }, { kind: "component", type: i5.AXTextAreaComponent, selector: "ax-text-area", inputs: ["disabled", "tabIndex", "readonly", "value", "state", "name", "placeholder", "maxLength", "look", "rows", "allowResize", "showCounter", "class"], outputs: ["onBlur", "onFocus", "valueChange", "stateChange", "onValueChanged", "readonlyChange", "disabledChange", "onKeyDown", "onKeyUp", "onKeyPress"] }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "pipe", type: i7.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
2382
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXMAiAssistPromptBoxComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2383
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: AXMAiAssistPromptBoxComponent, isStandalone: true, selector: "axm-ai-assist-prompt-box", inputs: { title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: true, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, initialPrompt: { classPropertyName: "initialPrompt", publicName: "initialPrompt", isSignal: true, isRequired: false, transformFunction: null }, contentMaxWidthPx: { classPropertyName: "contentMaxWidthPx", publicName: "contentMaxWidthPx", isSignal: true, isRequired: false, transformFunction: null }, initialAssistId: { classPropertyName: "initialAssistId", publicName: "initialAssistId", isSignal: true, isRequired: false, transformFunction: null }, initialDirectAgentId: { classPropertyName: "initialDirectAgentId", publicName: "initialDirectAgentId", isSignal: true, isRequired: false, transformFunction: null }, runPrompt: { classPropertyName: "runPrompt", publicName: "runPrompt", isSignal: true, isRequired: true, transformFunction: null }, requestClose: { classPropertyName: "requestClose", publicName: "requestClose", isSignal: true, isRequired: true, transformFunction: null } }, host: { listeners: { "document:keydown.escape": "onDocumentEscape()" } }, ngImport: i0, template: "<div class=\"axm-ai-assist-prompt-box flex flex-col gap-2.5 min-h-0 w-full\" [style.max-width.px]=\"contentMaxWidthPx()\">\n <div class=\"axm-ai-assist-prompt-box__eyebrow flex items-center justify-between gap-3 shrink-0 px-0.5\">\n <div class=\"axm-ai-assist-prompt-box__brand inline-flex min-w-0 items-center gap-2\">\n <span class=\"axm-ai-assist-prompt-box__brand-mark\" aria-hidden=\"true\">\n <i class=\"fa-light fa-sparkles\" aria-hidden=\"true\"></i>\n </span>\n <span class=\"axm-ai-assist-prompt-box__brand-title truncate\">{{ title() }}</span>\n </div>\n <ax-button\n class=\"shrink-0 ax-xs\"\n look=\"blank\"\n color=\"default\"\n type=\"button\"\n [iconOnly]=\"true\"\n [disabled]=\"busy()\"\n [attr.aria-label]=\"('@general:actions.close.title' | translate | async) ?? ''\"\n (onClick)=\"onCancel()\"\n >\n <ax-prefix>\n <i class=\"fa-light fa-xmark\" aria-hidden=\"true\"></i>\n </ax-prefix>\n </ax-button>\n </div>\n\n <div class=\"axm-ai-assist-prompt-box__sheet flex min-h-0 flex-col gap-2\">\n @if (\n draftComposerImages().length > 0 ||\n draftComposerAudios().length > 0 ||\n draftComposerFiles().length > 0 ||\n isComposerSaving()\n ) {\n <div\n class=\"shrink-0 rounded-xl border border-default/45 dark:border-darker bg-lightest/90 p-1.5 flex flex-col gap-1.5\"\n [attr.aria-label]=\"('@ai-management:chat.composer-attachments-region' | translate | async) ?? ''\"\n >\n <div class=\"flex flex-wrap items-center justify-between gap-1.5 text-[0.65rem] text-muted\">\n <span>\n @if (isComposerSaving()) {\n {{ '@ai-management:chat.composer-uploading' | translate | async }}\n } @else {\n @if (draftComposerImages().length > 0) {\n <span\n >{{ draftComposerImages().length }}\n {{ '@ai-management:chat.composer-images-count' | translate | async }}</span\n >\n }\n @if (draftComposerImages().length > 0 && draftComposerAudios().length > 0) {\n <span class=\"mx-1\">\u00B7</span>\n }\n @if (draftComposerAudios().length > 0) {\n <span\n >{{ draftComposerAudios().length }}\n {{ '@ai-management:chat.composer-audio-count' | translate | async }}</span\n >\n }\n @if (draftComposerFiles().length > 0) {\n @if (draftComposerImages().length > 0 || draftComposerAudios().length > 0) {\n <span class=\"mx-1\">\u00B7</span>\n }\n <span\n >{{ draftComposerFiles().length }}\n {{ '@ai-management:chat.composer-documents-count' | translate | async }}</span\n >\n }\n }\n </span>\n </div>\n @if (draftComposerImages().length > 0) {\n <div class=\"flex flex-wrap gap-1.5\">\n @for (slot of draftComposerImages(); track slot.clientId) {\n <div\n class=\"relative h-12 w-12 shrink-0 overflow-hidden rounded-md border border-default/60 dark:border-darker bg-lightest\"\n >\n <img [src]=\"slot.previewUrl\" [alt]=\"slot.name ?? ''\" class=\"h-full w-full object-cover\" />\n @if (!slot.fileId) {\n <span\n class=\"absolute inset-0 flex items-center justify-center bg-default/40 text-[0.6rem] font-medium text-on-lightest\"\n >\u2026</span\n >\n }\n <button\n type=\"button\"\n class=\"absolute end-0.5 top-0.5 flex h-4 w-4 items-center justify-center rounded bg-default/80 text-[0.65rem] leading-none text-on-lightest hover:bg-default focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary-400\"\n [disabled]=\"busy() || isComposerSaving()\"\n [attr.aria-label]=\"('@ai-management:chat.remove-draft-image' | translate | async) ?? ''\"\n (click)=\"removeDraftImage(slot.clientId)\"\n >\n \u00D7\n </button>\n </div>\n }\n </div>\n }\n @if (draftComposerAudios().length > 0) {\n <div class=\"flex flex-col gap-1\">\n @for (slot of draftComposerAudios(); track slot.clientId) {\n <div\n class=\"flex items-center justify-between gap-1.5 rounded border border-default/60 dark:border-darker bg-lightest px-1.5 py-1 text-[0.65rem] min-w-0\"\n >\n <span class=\"truncate text-on-lightest\" [attr.title]=\"slot.name ?? ''\">\n {{ '@ai-management:chat.attached-audio-label' | translate | async }}:\n {{ slot.name?.trim() || ('@ai-management:chat.audio-untitled' | translate | async) }}\n </span>\n @if (!slot.fileId) {\n <span class=\"text-muted shrink-0\">\u2026</span>\n }\n <button\n type=\"button\"\n class=\"shrink-0 flex h-5 w-5 items-center justify-center rounded bg-default/80 text-[0.75rem] leading-none text-on-lightest hover:bg-default focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary-400\"\n [disabled]=\"busy() || isComposerSaving()\"\n [attr.aria-label]=\"('@ai-management:chat.remove-draft-audio' | translate | async) ?? ''\"\n (click)=\"removeDraftAudio(slot.clientId)\"\n >\n \u00D7\n </button>\n </div>\n }\n </div>\n }\n @if (draftComposerFiles().length > 0) {\n <div class=\"flex flex-col gap-1\">\n @for (slot of draftComposerFiles(); track slot.clientId) {\n <div\n class=\"flex items-center justify-between gap-1.5 rounded border border-default/60 dark:border-darker bg-lightest px-1.5 py-1 text-[0.65rem] min-w-0\"\n >\n <span class=\"truncate text-on-lightest\" [attr.title]=\"slot.name ?? ''\">\n {{ '@ai-management:chat.attached-document-label' | translate | async }}:\n {{ slot.name?.trim() || ('@ai-management:chat.document-untitled' | translate | async) }}\n </span>\n @if (!slot.fileId) {\n <span class=\"text-muted shrink-0\">\u2026</span>\n }\n <button\n type=\"button\"\n class=\"shrink-0 flex h-5 w-5 items-center justify-center rounded bg-default/80 text-[0.75rem] leading-none text-on-lightest hover:bg-default focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary-400\"\n [disabled]=\"busy() || isComposerSaving()\"\n [attr.aria-label]=\"('@ai-management:chat.remove-draft-document' | translate | async) ?? ''\"\n (click)=\"removeDraftFile(slot.clientId)\"\n >\n \u00D7\n </button>\n </div>\n }\n </div>\n }\n </div>\n }\n\n <div class=\"axm-ai-assist-prompt-box__body flex min-h-0 flex-col\">\n <ax-text-area\n class=\"axm-ai-assist-prompt-box__prompt-input w-full min-h-0\"\n [rows]=\"3\"\n [disabled]=\"busy()\"\n [ngModel]=\"promptDraft()\"\n (ngModelChange)=\"onPromptDraftChange($event)\"\n (keydown)=\"onPromptKeydown($event)\"\n [placeholder]=\"\n placeholder().trim().length > 0\n ? placeholder()\n : (('@ai-management:assist-popup.placeholder' | translate | async) ?? '')\n \"\n ></ax-text-area>\n </div>\n\n <div class=\"axm-ai-assist-prompt-box__footer flex shrink-0 items-center justify-between gap-2\">\n <ax-button\n class=\"axm-ai-assist-prompt-box__menu-trigger\"\n look=\"solid\"\n color=\"primary\"\n type=\"button\"\n [iconOnly]=\"true\"\n [disabled]=\"busy()\"\n [attr.aria-label]=\"('@ai-management:assist-popup.composer-menu-aria' | translate | async) ?? ''\"\n >\n <ax-prefix>\n <i class=\"fa-light fa-plus text-sm\" aria-hidden=\"true\"></i>\n </ax-prefix>\n <ax-dropdown-panel #composerMenu>\n <ax-button-item-list class=\"min-w-56\">\n <ax-button-item\n [text]=\"('@ai-management:chat.upload-images' | translate | async) ?? ''\"\n [attr.aria-label]=\"('@ai-management:chat.upload-images-aria' | translate | async) ?? ''\"\n (onClick)=\"openImagePicker(); composerMenu.close()\"\n >\n <ax-prefix>\n <i class=\"fa-light fa-image size-4 text-center\" aria-hidden=\"true\"></i>\n </ax-prefix>\n </ax-button-item>\n <ax-button-item\n [text]=\"('@ai-management:chat.upload-audio' | translate | async) ?? ''\"\n [attr.aria-label]=\"('@ai-management:chat.upload-audio-aria' | translate | async) ?? ''\"\n (onClick)=\"openAudioPicker(); composerMenu.close()\"\n >\n <ax-prefix>\n <i class=\"fa-light fa-microphone size-4 text-center\" aria-hidden=\"true\"></i>\n </ax-prefix>\n </ax-button-item>\n <ax-button-item\n [text]=\"('@ai-management:chat.upload-documents' | translate | async) ?? ''\"\n [attr.aria-label]=\"('@ai-management:chat.upload-documents-aria' | translate | async) ?? ''\"\n (onClick)=\"openDocumentPicker(); composerMenu.close()\"\n >\n <ax-prefix>\n <i class=\"fa-light fa-paperclip size-4 text-center\" aria-hidden=\"true\"></i>\n </ax-prefix>\n </ax-button-item>\n </ax-button-item-list>\n </ax-dropdown-panel>\n </ax-button>\n\n <ax-button\n class=\"axm-ai-assist-prompt-box__send axm-ai-assist-prompt-box__send-gradient\"\n color=\"primary\"\n type=\"button\"\n [disabled]=\"busy() || !canSend()\"\n [text]=\"\n busy()\n ? (('@ai-management:assist-popup.generating' | translate | async) ?? '')\n : (('@ai-management:assist-popup.generate' | translate | async) ?? '')\n \"\n (onClick)=\"onSend()\"\n ></ax-button>\n </div>\n </div>\n</div>\n", styles: [".axm-ai-assist-prompt-box-shell{pointer-events:none;box-sizing:border-box;inset:0;width:100%;max-height:100%;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;padding-left:max(.75rem,env(safe-area-inset-left,0px));padding-right:max(.75rem,env(safe-area-inset-right,0px));padding-bottom:max(.75rem,env(safe-area-inset-bottom,0px));padding-top:max(.5rem,env(safe-area-inset-top,0px))}.axm-ai-assist-prompt-box-shell .ax-overlay-pane{pointer-events:auto;--tw-border-style: none;border-style:none;background-color:transparent;flex:0 0 auto;width:auto!important;max-width:calc(100vw - 1.5rem);min-width:min(480px,calc(100vw - 1.5rem))}.axm-ai-assist-prompt-box{--axm-ai-assist-prompt-chrome-gradient: linear-gradient( 125deg, rgb(var(--ax-sys-color-primary-200)) 0%, rgb(var(--ax-sys-color-primary-400)) 48%, rgb(var(--ax-sys-color-primary-300)) 100% );--axm-ai-assist-prompt-send-gradient: linear-gradient( 90deg, rgb(var(--ax-sys-color-primary-500)), rgb(var(--ax-sys-color-primary-700)) );box-sizing:border-box;margin:0;max-height:min(78vh,620px);overflow:hidden;padding:.65rem .7rem .7rem;border-radius:1.35rem;background:var(--axm-ai-assist-prompt-chrome-gradient);box-shadow:0 18px 50px -12px rgba(var(--ax-sys-color-on-surface),.12),0 8px 20px -8px rgba(var(--ax-sys-color-primary-400),.2)}.ax-dark .axm-ai-assist-prompt-box,.dark .axm-ai-assist-prompt-box{--axm-ai-assist-prompt-chrome-gradient: linear-gradient( 125deg, rgb(var(--ax-sys-color-primary-600)) 0%, rgb(var(--ax-sys-color-primary-500)) 48%, rgb(var(--ax-sys-color-primary-400)) 100% );box-shadow:0 20px 55px -14px rgba(var(--ax-sys-color-dark),.48),0 8px 24px -8px rgba(var(--ax-sys-color-primary-400),.26)}.axm-ai-assist-prompt-box__brand-title{font-size:.72rem;line-height:1.25;font-weight:600;letter-spacing:.01em;color:rgb(var(--ax-sys-color-on-surface))}.ax-dark .axm-ai-assist-prompt-box__brand-title{color:rgb(var(--ax-sys-color-on-lightest-surface))}.axm-ai-assist-prompt-box__brand-mark{display:inline-flex;width:1.65rem;height:1.65rem;flex-shrink:0;align-items:center;justify-content:center;border-radius:9999px;font-size:.75rem;line-height:1;color:rgb(var(--ax-sys-color-on-primary-surface));background:linear-gradient(145deg,rgb(var(--ax-sys-color-primary-500)),rgb(var(--ax-sys-color-primary-700)));box-shadow:0 2px 8px rgba(var(--ax-sys-color-primary-500),.35)}.axm-ai-assist-prompt-box__sheet{flex:1 1 auto;min-height:0;padding:.65rem .65rem .55rem;border-radius:1rem;background:rgb(var(--ax-sys-color-lightest-surface));border:1px solid rgba(var(--ax-sys-color-neutral-300),.35);box-shadow:inset 0 1px rgba(var(--ax-sys-color-lightest-surface),.95)}.ax-dark .axm-ai-assist-prompt-box__sheet{background:rgb(var(--ax-sys-color-neutral-800));border-color:rgba(var(--ax-sys-color-neutral-500),.4);box-shadow:inset 0 1px rgba(var(--ax-sys-color-lightest-surface),.06)}.axm-ai-assist-prompt-box__body{overflow-y:auto;min-height:0;flex:1 1 auto}.axm-ai-assist-prompt-box__prompt-input{display:block;width:100%;min-height:0;border:none!important;box-shadow:none!important;background:transparent!important}.axm-ai-assist-prompt-box__prompt-input:focus-within{outline:none!important;border:none!important;box-shadow:none!important}.axm-ai-assist-prompt-box__prompt-input:focus-within>*{border:none!important;box-shadow:none!important;outline:none!important}.axm-ai-assist-prompt-box__prompt-input textarea{min-height:4.5rem;max-height:min(30vh,240px);font-size:.8125rem;line-height:1.45;padding-block:.55rem;padding-inline:.65rem;border-radius:.65rem;border:none!important;box-shadow:none!important;background:transparent!important}.axm-ai-assist-prompt-box__prompt-input textarea:focus,.axm-ai-assist-prompt-box__prompt-input textarea:focus-visible,.axm-ai-assist-prompt-box__prompt-input textarea:active{outline:none!important;outline-offset:0!important;border:none!important;box-shadow:none!important}.ax-dark .axm-ai-assist-prompt-box__prompt-input textarea{color:rgb(var(--ax-sys-color-on-lightest-surface));background:rgb(var(--ax-sys-color-neutral-900))!important}.axm-ai-assist-prompt-box__footer{min-height:0}ax-button.axm-ai-assist-prompt-box__menu-trigger{--ax-comp-button-normal-bg-color: 0, 0, 0, 0 !important;--ax-comp-button-hover-bg-color: 0, 0, 0, 0 !important;--ax-comp-button-pressed-bg-color: 0, 0, 0, 0 !important;--ax-comp-button-border-width: 0 !important;border-radius:9999px!important;overflow:hidden;background:transparent!important;border-color:transparent!important}ax-button.axm-ai-assist-prompt-box__menu-trigger:hover:not(.ax-state-disabled,.ax-state-loading,.ax-state-selected),ax-button.axm-ai-assist-prompt-box__menu-trigger:active:not(.ax-state-disabled,.ax-state-loading,.ax-state-selected){background:transparent!important;background-color:transparent!important;border-color:transparent!important}ax-button.axm-ai-assist-prompt-box__menu-trigger>button{width:2.25rem;height:2.25rem;min-width:2.25rem;min-height:2.25rem;padding:0!important;border-radius:9999px!important;border:none!important;color:rgb(var(--ax-sys-color-on-primary-surface))!important;background:linear-gradient(145deg,rgb(var(--ax-sys-color-primary-500)),rgb(var(--ax-sys-color-primary-700)))!important;box-shadow:0 2px 8px rgba(var(--ax-sys-color-primary-500),.35)}ax-button.axm-ai-assist-prompt-box__menu-trigger.ax-state-disabled>button,ax-button.axm-ai-assist-prompt-box__menu-trigger.ax-state-loading>button,ax-button.axm-ai-assist-prompt-box__menu-trigger>button:disabled{opacity:.55;box-shadow:none}ax-button.axm-ai-assist-prompt-box__send-gradient{--ax-comp-button-normal-bg-color: 0, 0, 0, 0 !important;--ax-comp-button-hover-bg-color: 0, 0, 0, 0 !important;--ax-comp-button-pressed-bg-color: 0, 0, 0, 0 !important;--ax-comp-button-border-width: 0 !important;border-radius:9999px!important;overflow:hidden;background:transparent!important;border-color:transparent!important}ax-button.axm-ai-assist-prompt-box__send-gradient:hover:not(.ax-state-disabled,.ax-state-loading,.ax-state-selected),ax-button.axm-ai-assist-prompt-box__send-gradient:active:not(.ax-state-disabled,.ax-state-loading,.ax-state-selected){background:transparent!important;background-color:transparent!important;border-color:transparent!important}ax-button.axm-ai-assist-prompt-box__send-gradient>button{min-height:2.25rem;padding-inline:1rem!important;font-size:.8rem;font-weight:600;letter-spacing:.01em;border-radius:9999px!important;border:none!important;color:rgb(var(--ax-sys-color-on-primary-surface))!important;background:var(--axm-ai-assist-prompt-send-gradient)!important;box-shadow:0 3px 12px rgba(var(--ax-sys-color-secondary-400),.35)}ax-button.axm-ai-assist-prompt-box__send-gradient.ax-state-disabled>button,ax-button.axm-ai-assist-prompt-box__send-gradient.ax-state-loading>button,ax-button.axm-ai-assist-prompt-box__send-gradient>button:disabled{opacity:.55;box-shadow:none}ax-button.axm-ai-assist-prompt-box__menu-trigger:hover:not(.ax-state-disabled,.ax-state-loading,.ax-state-selected)>button{filter:brightness(.94)}ax-button.axm-ai-assist-prompt-box__menu-trigger:active:not(.ax-state-disabled,.ax-state-loading,.ax-state-selected)>button{filter:brightness(.88)}ax-button.axm-ai-assist-prompt-box__send-gradient:hover:not(.ax-state-disabled,.ax-state-loading,.ax-state-selected)>button{filter:brightness(.96)}ax-button.axm-ai-assist-prompt-box__send-gradient:active:not(.ax-state-disabled,.ax-state-loading,.ax-state-selected)>button{filter:brightness(.9)}\n/*! tailwindcss v4.3.0 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { 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: i2.AXButtonItemComponent, selector: "ax-button-item", inputs: ["color", "disabled", "text", "selected", "divided", "data", "name"], outputs: ["onClick", "onFocus", "onBlur", "disabledChange"] }, { kind: "component", type: i2.AXButtonItemListComponent, selector: "ax-button-item-list", inputs: ["items", "closeParentOnClick", "lockOnLoading"], outputs: ["onItemClick"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i3.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay" }, { kind: "ngmodule", type: AXDropdownModule }, { kind: "component", type: i4.AXDropdownPanelComponent, selector: "ax-dropdown-panel", inputs: ["isOpen", "fitParent", "dropdownWidth", "position", "placement", "_target", "adaptivityEnabled"], outputs: ["onOpened", "onClosed"] }, { kind: "ngmodule", type: AXDropdownButtonModule }, { kind: "ngmodule", type: AXTextAreaModule }, { kind: "component", type: i5.AXTextAreaComponent, selector: "ax-text-area", inputs: ["disabled", "tabIndex", "readonly", "value", "state", "name", "placeholder", "maxLength", "look", "rows", "allowResize", "showCounter", "class"], outputs: ["onBlur", "onFocus", "valueChange", "stateChange", "onValueChanged", "readonlyChange", "disabledChange", "onKeyDown", "onKeyUp", "onKeyPress"] }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "pipe", type: i7.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
2379
2384
  }
2380
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXMAiAssistPromptBottomPanelComponent, decorators: [{
2385
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXMAiAssistPromptBoxComponent, decorators: [{
2381
2386
  type: Component,
2382
- args: [{ selector: 'axm-ai-assist-prompt-bottom-panel', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
2387
+ args: [{ selector: 'axm-ai-assist-prompt-box', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
2383
2388
  '(document:keydown.escape)': 'onDocumentEscape()',
2384
2389
  }, imports: [
2385
2390
  CommonModule,
@@ -2390,15 +2395,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
2390
2395
  AXDropdownButtonModule,
2391
2396
  AXTextAreaModule,
2392
2397
  AXTranslationModule,
2393
- ], template: "<div\n class=\"axm-ai-assist-prompt-bottom-panel flex flex-col gap-2.5 min-h-0 w-full\"\n [style.max-width.px]=\"contentMaxWidthPx()\"\n>\n <div class=\"axm-ai-assist-prompt-bottom-panel__eyebrow flex items-center justify-between gap-3 shrink-0 px-0.5\">\n <div class=\"axm-ai-assist-prompt-bottom-panel__brand inline-flex min-w-0 items-center gap-2\">\n <span class=\"axm-ai-assist-prompt-bottom-panel__brand-mark\" aria-hidden=\"true\">\n <i class=\"fa-light fa-sparkles\" aria-hidden=\"true\"></i>\n </span>\n <span class=\"axm-ai-assist-prompt-bottom-panel__brand-title truncate\">{{ title() }}</span>\n </div>\n <ax-button\n class=\"shrink-0 xs\"\n look=\"blank\"\n color=\"default\"\n type=\"button\"\n [iconOnly]=\"true\"\n [disabled]=\"busy()\"\n [attr.aria-label]=\"('@general:actions.close.title' | translate | async) ?? ''\"\n (onClick)=\"onCancel()\"\n >\n <ax-prefix>\n <i class=\"fa-light fa-xmark\" aria-hidden=\"true\"></i>\n </ax-prefix>\n </ax-button>\n </div>\n\n <div class=\"axm-ai-assist-prompt-bottom-panel__sheet flex min-h-0 flex-col gap-2\">\n @if (\n draftComposerImages().length > 0 ||\n draftComposerAudios().length > 0 ||\n draftComposerFiles().length > 0 ||\n isComposerSaving()\n ) {\n <div\n class=\"shrink-0 rounded-xl border border-default/45 dark:border-darker bg-lightest/90 p-1.5 flex flex-col gap-1.5\"\n [attr.aria-label]=\"('@ai-management:chat.composer-attachments-region' | translate | async) ?? ''\"\n >\n <div class=\"flex flex-wrap items-center justify-between gap-1.5 text-[0.65rem] text-muted\">\n <span>\n @if (isComposerSaving()) {\n {{ '@ai-management:chat.composer-uploading' | translate | async }}\n } @else {\n @if (draftComposerImages().length > 0) {\n <span\n >{{ draftComposerImages().length }}\n {{ '@ai-management:chat.composer-images-count' | translate | async }}</span\n >\n }\n @if (draftComposerImages().length > 0 && draftComposerAudios().length > 0) {\n <span class=\"mx-1\">\u00B7</span>\n }\n @if (draftComposerAudios().length > 0) {\n <span\n >{{ draftComposerAudios().length }}\n {{ '@ai-management:chat.composer-audio-count' | translate | async }}</span\n >\n }\n @if (draftComposerFiles().length > 0) {\n @if (draftComposerImages().length > 0 || draftComposerAudios().length > 0) {\n <span class=\"mx-1\">\u00B7</span>\n }\n <span\n >{{ draftComposerFiles().length }}\n {{ '@ai-management:chat.composer-documents-count' | translate | async }}</span\n >\n }\n }\n </span>\n </div>\n @if (draftComposerImages().length > 0) {\n <div class=\"flex flex-wrap gap-1.5\">\n @for (slot of draftComposerImages(); track slot.clientId) {\n <div\n class=\"relative h-12 w-12 shrink-0 overflow-hidden rounded-md border border-default/60 dark:border-darker bg-lightest\"\n >\n <img [src]=\"slot.previewUrl\" [alt]=\"slot.name ?? ''\" class=\"h-full w-full object-cover\" />\n @if (!slot.fileId) {\n <span\n class=\"absolute inset-0 flex items-center justify-center bg-default/40 text-[0.6rem] font-medium text-on-lightest\"\n >\u2026</span\n >\n }\n <button\n type=\"button\"\n class=\"absolute end-0.5 top-0.5 flex h-4 w-4 items-center justify-center rounded bg-default/80 text-[0.65rem] leading-none text-on-lightest hover:bg-default focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary-400\"\n [disabled]=\"busy() || isComposerSaving()\"\n [attr.aria-label]=\"('@ai-management:chat.remove-draft-image' | translate | async) ?? ''\"\n (click)=\"removeDraftImage(slot.clientId)\"\n >\n \u00D7\n </button>\n </div>\n }\n </div>\n }\n @if (draftComposerAudios().length > 0) {\n <div class=\"flex flex-col gap-1\">\n @for (slot of draftComposerAudios(); track slot.clientId) {\n <div\n class=\"flex items-center justify-between gap-1.5 rounded border border-default/60 dark:border-darker bg-lightest px-1.5 py-1 text-[0.65rem] min-w-0\"\n >\n <span class=\"truncate text-on-lightest\" [attr.title]=\"slot.name ?? ''\">\n {{ '@ai-management:chat.attached-audio-label' | translate | async }}:\n {{ slot.name?.trim() || ('@ai-management:chat.audio-untitled' | translate | async) }}\n </span>\n @if (!slot.fileId) {\n <span class=\"text-muted shrink-0\">\u2026</span>\n }\n <button\n type=\"button\"\n class=\"shrink-0 flex h-5 w-5 items-center justify-center rounded bg-default/80 text-[0.75rem] leading-none text-on-lightest hover:bg-default focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary-400\"\n [disabled]=\"busy() || isComposerSaving()\"\n [attr.aria-label]=\"('@ai-management:chat.remove-draft-audio' | translate | async) ?? ''\"\n (click)=\"removeDraftAudio(slot.clientId)\"\n >\n \u00D7\n </button>\n </div>\n }\n </div>\n }\n @if (draftComposerFiles().length > 0) {\n <div class=\"flex flex-col gap-1\">\n @for (slot of draftComposerFiles(); track slot.clientId) {\n <div\n class=\"flex items-center justify-between gap-1.5 rounded border border-default/60 dark:border-darker bg-lightest px-1.5 py-1 text-[0.65rem] min-w-0\"\n >\n <span class=\"truncate text-on-lightest\" [attr.title]=\"slot.name ?? ''\">\n {{ '@ai-management:chat.attached-document-label' | translate | async }}:\n {{ slot.name?.trim() || ('@ai-management:chat.document-untitled' | translate | async) }}\n </span>\n @if (!slot.fileId) {\n <span class=\"text-muted shrink-0\">\u2026</span>\n }\n <button\n type=\"button\"\n class=\"shrink-0 flex h-5 w-5 items-center justify-center rounded bg-default/80 text-[0.75rem] leading-none text-on-lightest hover:bg-default focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary-400\"\n [disabled]=\"busy() || isComposerSaving()\"\n [attr.aria-label]=\"('@ai-management:chat.remove-draft-document' | translate | async) ?? ''\"\n (click)=\"removeDraftFile(slot.clientId)\"\n >\n \u00D7\n </button>\n </div>\n }\n </div>\n }\n </div>\n }\n\n <div class=\"axm-ai-assist-prompt-bottom-panel__body flex min-h-0 flex-col\">\n <ax-text-area\n class=\"axm-ai-assist-prompt-bottom-panel__prompt-input w-full min-h-0\"\n [rows]=\"3\"\n [disabled]=\"busy()\"\n [ngModel]=\"promptDraft()\"\n (ngModelChange)=\"onPromptDraftChange($event)\"\n [placeholder]=\"\n placeholder().trim().length > 0\n ? placeholder()\n : (('@ai-management:assist-popup.placeholder' | translate | async) ?? '')\n \"\n ></ax-text-area>\n </div>\n\n <div class=\"axm-ai-assist-prompt-bottom-panel__footer flex shrink-0 items-center justify-between gap-2\">\n <ax-button\n class=\"axm-ai-assist-prompt-bottom-panel__menu-trigger\"\n look=\"solid\"\n color=\"primary\"\n type=\"button\"\n [iconOnly]=\"true\"\n [disabled]=\"busy()\"\n [attr.aria-label]=\"('@ai-management:assist-popup.composer-menu-aria' | translate | async) ?? ''\"\n >\n <ax-prefix>\n <i class=\"fa-light fa-plus text-sm\" aria-hidden=\"true\"></i>\n </ax-prefix>\n <ax-dropdown-panel #composerMenu>\n <ax-button-item-list class=\"min-w-56\">\n <ax-button-item\n [text]=\"('@ai-management:chat.upload-images' | translate | async) ?? ''\"\n [attr.aria-label]=\"('@ai-management:chat.upload-images-aria' | translate | async) ?? ''\"\n (onClick)=\"openImagePicker(); composerMenu.close()\"\n >\n <ax-prefix>\n <i class=\"fa-light fa-image size-4 text-center\" aria-hidden=\"true\"></i>\n </ax-prefix>\n </ax-button-item>\n <ax-button-item\n [text]=\"('@ai-management:chat.upload-audio' | translate | async) ?? ''\"\n [attr.aria-label]=\"('@ai-management:chat.upload-audio-aria' | translate | async) ?? ''\"\n (onClick)=\"openAudioPicker(); composerMenu.close()\"\n >\n <ax-prefix>\n <i class=\"fa-light fa-microphone size-4 text-center\" aria-hidden=\"true\"></i>\n </ax-prefix>\n </ax-button-item>\n <ax-button-item\n [text]=\"('@ai-management:chat.upload-documents' | translate | async) ?? ''\"\n [attr.aria-label]=\"('@ai-management:chat.upload-documents-aria' | translate | async) ?? ''\"\n (onClick)=\"openDocumentPicker(); composerMenu.close()\"\n >\n <ax-prefix>\n <i class=\"fa-light fa-paperclip size-4 text-center\" aria-hidden=\"true\"></i>\n </ax-prefix>\n </ax-button-item>\n </ax-button-item-list>\n </ax-dropdown-panel>\n </ax-button>\n\n <ax-button\n class=\"axm-ai-assist-prompt-bottom-panel__send axm-ai-assist-prompt-bottom-panel__send-gradient\"\n color=\"primary\"\n type=\"button\"\n [disabled]=\"busy() || !canSend()\"\n [text]=\"\n busy()\n ? (('@ai-management:assist-popup.generating' | translate | async) ?? '')\n : (('@ai-management:assist-popup.generate' | translate | async) ?? '')\n \"\n (onClick)=\"onSend()\"\n ></ax-button>\n </div>\n </div>\n</div>\n", styles: [".axm-ai-assist-prompt-bottom-panel-shell{pointer-events:none;box-sizing:border-box;inset:0;width:100%;max-height:100%;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;padding-left:max(.75rem,env(safe-area-inset-left,0px));padding-right:max(.75rem,env(safe-area-inset-right,0px));padding-bottom:max(.75rem,env(safe-area-inset-bottom,0px));padding-top:max(.5rem,env(safe-area-inset-top,0px))}.axm-ai-assist-prompt-bottom-panel-shell .ax-overlay-pane{pointer-events:auto;--tw-border-style: none;border-style:none;background-color:transparent;flex:0 0 auto;width:auto!important;max-width:calc(100vw - 1.5rem);min-width:min(480px,calc(100vw - 1.5rem))}.axm-ai-assist-prompt-bottom-panel{--axm-ai-assist-prompt-chrome-gradient: linear-gradient( 125deg, rgb(var(--ax-sys-color-primary-200)) 0%, rgb(var(--ax-sys-color-primary-400)) 48%, rgb(var(--ax-sys-color-primary-300)) 100% );--axm-ai-assist-prompt-send-gradient: linear-gradient( 90deg, rgb(var(--ax-sys-color-primary-500)), rgb(var(--ax-sys-color-primary-700)) );box-sizing:border-box;margin:0;max-height:min(78vh,620px);overflow:hidden;padding:.65rem .7rem .7rem;border-radius:1.35rem;background:var(--axm-ai-assist-prompt-chrome-gradient);box-shadow:0 18px 50px -12px rgba(var(--ax-sys-color-on-surface),.12),0 8px 20px -8px rgba(var(--ax-sys-color-primary-400),.2)}.ax-dark .axm-ai-assist-prompt-bottom-panel,.dark .axm-ai-assist-prompt-bottom-panel{--axm-ai-assist-prompt-chrome-gradient: linear-gradient( 125deg, rgb(var(--ax-sys-color-primary-600)) 0%, rgb(var(--ax-sys-color-primary-500)) 48%, rgb(var(--ax-sys-color-primary-400)) 100% );box-shadow:0 20px 55px -14px rgba(var(--ax-sys-color-dark),.48),0 8px 24px -8px rgba(var(--ax-sys-color-primary-400),.26)}.axm-ai-assist-prompt-bottom-panel__brand-title{font-size:.72rem;line-height:1.25;font-weight:600;letter-spacing:.01em;color:rgb(var(--ax-sys-color-on-surface))}.ax-dark .axm-ai-assist-prompt-bottom-panel__brand-title{color:rgb(var(--ax-sys-color-on-lightest-surface))}.axm-ai-assist-prompt-bottom-panel__brand-mark{display:inline-flex;width:1.65rem;height:1.65rem;flex-shrink:0;align-items:center;justify-content:center;border-radius:9999px;font-size:.75rem;line-height:1;color:rgb(var(--ax-sys-color-on-primary-surface));background:linear-gradient(145deg,rgb(var(--ax-sys-color-primary-500)),rgb(var(--ax-sys-color-primary-700)));box-shadow:0 2px 8px rgba(var(--ax-sys-color-primary-500),.35)}.axm-ai-assist-prompt-bottom-panel__sheet{flex:1 1 auto;min-height:0;padding:.65rem .65rem .55rem;border-radius:1rem;background:rgb(var(--ax-sys-color-lightest-surface));border:1px solid rgba(var(--ax-sys-color-neutral-300),.35);box-shadow:inset 0 1px rgba(var(--ax-sys-color-lightest-surface),.95)}.ax-dark .axm-ai-assist-prompt-bottom-panel__sheet{background:rgb(var(--ax-sys-color-neutral-800));border-color:rgba(var(--ax-sys-color-neutral-500),.4);box-shadow:inset 0 1px rgba(var(--ax-sys-color-lightest-surface),.06)}.axm-ai-assist-prompt-bottom-panel__body{overflow-y:auto;min-height:0;flex:1 1 auto}.axm-ai-assist-prompt-bottom-panel__prompt-input{display:block;width:100%;min-height:0;border:none!important;box-shadow:none!important;background:transparent!important}.axm-ai-assist-prompt-bottom-panel__prompt-input:focus-within{outline:none!important;border:none!important;box-shadow:none!important}.axm-ai-assist-prompt-bottom-panel__prompt-input:focus-within>*{border:none!important;box-shadow:none!important;outline:none!important}.axm-ai-assist-prompt-bottom-panel__prompt-input textarea{min-height:4.5rem;max-height:min(30vh,240px);font-size:.8125rem;line-height:1.45;padding-block:.55rem;padding-inline:.65rem;border-radius:.65rem;border:none!important;box-shadow:none!important;background:transparent!important}.axm-ai-assist-prompt-bottom-panel__prompt-input textarea:focus,.axm-ai-assist-prompt-bottom-panel__prompt-input textarea:focus-visible,.axm-ai-assist-prompt-bottom-panel__prompt-input textarea:active{outline:none!important;outline-offset:0!important;border:none!important;box-shadow:none!important}.ax-dark .axm-ai-assist-prompt-bottom-panel__prompt-input textarea{color:rgb(var(--ax-sys-color-on-lightest-surface));background:rgb(var(--ax-sys-color-neutral-900))!important}.axm-ai-assist-prompt-bottom-panel__footer{min-height:0}ax-button.axm-ai-assist-prompt-bottom-panel__menu-trigger{--ax-comp-button-normal-bg-color: 0, 0, 0, 0 !important;--ax-comp-button-hover-bg-color: 0, 0, 0, 0 !important;--ax-comp-button-pressed-bg-color: 0, 0, 0, 0 !important;--ax-comp-button-border-width: 0 !important;border-radius:9999px!important;overflow:hidden;background:transparent!important;border-color:transparent!important}ax-button.axm-ai-assist-prompt-bottom-panel__menu-trigger:hover:not(.ax-state-disabled,.ax-state-loading,.ax-state-selected),ax-button.axm-ai-assist-prompt-bottom-panel__menu-trigger:active:not(.ax-state-disabled,.ax-state-loading,.ax-state-selected){background:transparent!important;background-color:transparent!important;border-color:transparent!important}ax-button.axm-ai-assist-prompt-bottom-panel__menu-trigger>button{width:2.25rem;height:2.25rem;min-width:2.25rem;min-height:2.25rem;padding:0!important;border-radius:9999px!important;border:none!important;color:rgb(var(--ax-sys-color-on-primary-surface))!important;background:linear-gradient(145deg,rgb(var(--ax-sys-color-primary-500)),rgb(var(--ax-sys-color-primary-700)))!important;box-shadow:0 2px 8px rgba(var(--ax-sys-color-primary-500),.35)}ax-button.axm-ai-assist-prompt-bottom-panel__menu-trigger.ax-state-disabled>button,ax-button.axm-ai-assist-prompt-bottom-panel__menu-trigger.ax-state-loading>button,ax-button.axm-ai-assist-prompt-bottom-panel__menu-trigger>button:disabled{opacity:.55;box-shadow:none}ax-button.axm-ai-assist-prompt-bottom-panel__send-gradient{--ax-comp-button-normal-bg-color: 0, 0, 0, 0 !important;--ax-comp-button-hover-bg-color: 0, 0, 0, 0 !important;--ax-comp-button-pressed-bg-color: 0, 0, 0, 0 !important;--ax-comp-button-border-width: 0 !important;border-radius:9999px!important;overflow:hidden;background:transparent!important;border-color:transparent!important}ax-button.axm-ai-assist-prompt-bottom-panel__send-gradient:hover:not(.ax-state-disabled,.ax-state-loading,.ax-state-selected),ax-button.axm-ai-assist-prompt-bottom-panel__send-gradient:active:not(.ax-state-disabled,.ax-state-loading,.ax-state-selected){background:transparent!important;background-color:transparent!important;border-color:transparent!important}ax-button.axm-ai-assist-prompt-bottom-panel__send-gradient>button{min-height:2.25rem;padding-inline:1rem!important;font-size:.8rem;font-weight:600;letter-spacing:.01em;border-radius:9999px!important;border:none!important;color:rgb(var(--ax-sys-color-on-primary-surface))!important;background:var(--axm-ai-assist-prompt-send-gradient)!important;box-shadow:0 3px 12px rgba(var(--ax-sys-color-secondary-400),.35)}ax-button.axm-ai-assist-prompt-bottom-panel__send-gradient.ax-state-disabled>button,ax-button.axm-ai-assist-prompt-bottom-panel__send-gradient.ax-state-loading>button,ax-button.axm-ai-assist-prompt-bottom-panel__send-gradient>button:disabled{opacity:.55;box-shadow:none}ax-button.axm-ai-assist-prompt-bottom-panel__menu-trigger:hover:not(.ax-state-disabled,.ax-state-loading,.ax-state-selected)>button{filter:brightness(.94)}ax-button.axm-ai-assist-prompt-bottom-panel__menu-trigger:active:not(.ax-state-disabled,.ax-state-loading,.ax-state-selected)>button{filter:brightness(.88)}ax-button.axm-ai-assist-prompt-bottom-panel__send-gradient:hover:not(.ax-state-disabled,.ax-state-loading,.ax-state-selected)>button{filter:brightness(.96)}ax-button.axm-ai-assist-prompt-bottom-panel__send-gradient:active:not(.ax-state-disabled,.ax-state-loading,.ax-state-selected)>button{filter:brightness(.9)}\n/*! tailwindcss v4.3.0 | MIT License | https://tailwindcss.com */\n"] }]
2394
- }], propDecorators: { title: [{ type: i0.Input, args: [{ isSignal: true, alias: "title", required: true }] }], placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }], initialPrompt: [{ type: i0.Input, args: [{ isSignal: true, alias: "initialPrompt", required: false }] }], contentMaxWidthPx: [{ type: i0.Input, args: [{ isSignal: true, alias: "contentMaxWidthPx", required: false }] }], assistPickerRows: [{ type: i0.Input, args: [{ isSignal: true, alias: "assistPickerRows", required: false }] }], agentPickerRows: [{ type: i0.Input, args: [{ isSignal: true, alias: "agentPickerRows", required: false }] }], initialAssistId: [{ type: i0.Input, args: [{ isSignal: true, alias: "initialAssistId", required: false }] }], initialDirectAgentId: [{ type: i0.Input, args: [{ isSignal: true, alias: "initialDirectAgentId", required: false }] }], runPrompt: [{ type: i0.Input, args: [{ isSignal: true, alias: "runPrompt", required: true }] }], requestClose: [{ type: i0.Input, args: [{ isSignal: true, alias: "requestClose", required: true }] }] } });
2398
+ ], template: "<div class=\"axm-ai-assist-prompt-box flex flex-col gap-2.5 min-h-0 w-full\" [style.max-width.px]=\"contentMaxWidthPx()\">\n <div class=\"axm-ai-assist-prompt-box__eyebrow flex items-center justify-between gap-3 shrink-0 px-0.5\">\n <div class=\"axm-ai-assist-prompt-box__brand inline-flex min-w-0 items-center gap-2\">\n <span class=\"axm-ai-assist-prompt-box__brand-mark\" aria-hidden=\"true\">\n <i class=\"fa-light fa-sparkles\" aria-hidden=\"true\"></i>\n </span>\n <span class=\"axm-ai-assist-prompt-box__brand-title truncate\">{{ title() }}</span>\n </div>\n <ax-button\n class=\"shrink-0 ax-xs\"\n look=\"blank\"\n color=\"default\"\n type=\"button\"\n [iconOnly]=\"true\"\n [disabled]=\"busy()\"\n [attr.aria-label]=\"('@general:actions.close.title' | translate | async) ?? ''\"\n (onClick)=\"onCancel()\"\n >\n <ax-prefix>\n <i class=\"fa-light fa-xmark\" aria-hidden=\"true\"></i>\n </ax-prefix>\n </ax-button>\n </div>\n\n <div class=\"axm-ai-assist-prompt-box__sheet flex min-h-0 flex-col gap-2\">\n @if (\n draftComposerImages().length > 0 ||\n draftComposerAudios().length > 0 ||\n draftComposerFiles().length > 0 ||\n isComposerSaving()\n ) {\n <div\n class=\"shrink-0 rounded-xl border border-default/45 dark:border-darker bg-lightest/90 p-1.5 flex flex-col gap-1.5\"\n [attr.aria-label]=\"('@ai-management:chat.composer-attachments-region' | translate | async) ?? ''\"\n >\n <div class=\"flex flex-wrap items-center justify-between gap-1.5 text-[0.65rem] text-muted\">\n <span>\n @if (isComposerSaving()) {\n {{ '@ai-management:chat.composer-uploading' | translate | async }}\n } @else {\n @if (draftComposerImages().length > 0) {\n <span\n >{{ draftComposerImages().length }}\n {{ '@ai-management:chat.composer-images-count' | translate | async }}</span\n >\n }\n @if (draftComposerImages().length > 0 && draftComposerAudios().length > 0) {\n <span class=\"mx-1\">\u00B7</span>\n }\n @if (draftComposerAudios().length > 0) {\n <span\n >{{ draftComposerAudios().length }}\n {{ '@ai-management:chat.composer-audio-count' | translate | async }}</span\n >\n }\n @if (draftComposerFiles().length > 0) {\n @if (draftComposerImages().length > 0 || draftComposerAudios().length > 0) {\n <span class=\"mx-1\">\u00B7</span>\n }\n <span\n >{{ draftComposerFiles().length }}\n {{ '@ai-management:chat.composer-documents-count' | translate | async }}</span\n >\n }\n }\n </span>\n </div>\n @if (draftComposerImages().length > 0) {\n <div class=\"flex flex-wrap gap-1.5\">\n @for (slot of draftComposerImages(); track slot.clientId) {\n <div\n class=\"relative h-12 w-12 shrink-0 overflow-hidden rounded-md border border-default/60 dark:border-darker bg-lightest\"\n >\n <img [src]=\"slot.previewUrl\" [alt]=\"slot.name ?? ''\" class=\"h-full w-full object-cover\" />\n @if (!slot.fileId) {\n <span\n class=\"absolute inset-0 flex items-center justify-center bg-default/40 text-[0.6rem] font-medium text-on-lightest\"\n >\u2026</span\n >\n }\n <button\n type=\"button\"\n class=\"absolute end-0.5 top-0.5 flex h-4 w-4 items-center justify-center rounded bg-default/80 text-[0.65rem] leading-none text-on-lightest hover:bg-default focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary-400\"\n [disabled]=\"busy() || isComposerSaving()\"\n [attr.aria-label]=\"('@ai-management:chat.remove-draft-image' | translate | async) ?? ''\"\n (click)=\"removeDraftImage(slot.clientId)\"\n >\n \u00D7\n </button>\n </div>\n }\n </div>\n }\n @if (draftComposerAudios().length > 0) {\n <div class=\"flex flex-col gap-1\">\n @for (slot of draftComposerAudios(); track slot.clientId) {\n <div\n class=\"flex items-center justify-between gap-1.5 rounded border border-default/60 dark:border-darker bg-lightest px-1.5 py-1 text-[0.65rem] min-w-0\"\n >\n <span class=\"truncate text-on-lightest\" [attr.title]=\"slot.name ?? ''\">\n {{ '@ai-management:chat.attached-audio-label' | translate | async }}:\n {{ slot.name?.trim() || ('@ai-management:chat.audio-untitled' | translate | async) }}\n </span>\n @if (!slot.fileId) {\n <span class=\"text-muted shrink-0\">\u2026</span>\n }\n <button\n type=\"button\"\n class=\"shrink-0 flex h-5 w-5 items-center justify-center rounded bg-default/80 text-[0.75rem] leading-none text-on-lightest hover:bg-default focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary-400\"\n [disabled]=\"busy() || isComposerSaving()\"\n [attr.aria-label]=\"('@ai-management:chat.remove-draft-audio' | translate | async) ?? ''\"\n (click)=\"removeDraftAudio(slot.clientId)\"\n >\n \u00D7\n </button>\n </div>\n }\n </div>\n }\n @if (draftComposerFiles().length > 0) {\n <div class=\"flex flex-col gap-1\">\n @for (slot of draftComposerFiles(); track slot.clientId) {\n <div\n class=\"flex items-center justify-between gap-1.5 rounded border border-default/60 dark:border-darker bg-lightest px-1.5 py-1 text-[0.65rem] min-w-0\"\n >\n <span class=\"truncate text-on-lightest\" [attr.title]=\"slot.name ?? ''\">\n {{ '@ai-management:chat.attached-document-label' | translate | async }}:\n {{ slot.name?.trim() || ('@ai-management:chat.document-untitled' | translate | async) }}\n </span>\n @if (!slot.fileId) {\n <span class=\"text-muted shrink-0\">\u2026</span>\n }\n <button\n type=\"button\"\n class=\"shrink-0 flex h-5 w-5 items-center justify-center rounded bg-default/80 text-[0.75rem] leading-none text-on-lightest hover:bg-default focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary-400\"\n [disabled]=\"busy() || isComposerSaving()\"\n [attr.aria-label]=\"('@ai-management:chat.remove-draft-document' | translate | async) ?? ''\"\n (click)=\"removeDraftFile(slot.clientId)\"\n >\n \u00D7\n </button>\n </div>\n }\n </div>\n }\n </div>\n }\n\n <div class=\"axm-ai-assist-prompt-box__body flex min-h-0 flex-col\">\n <ax-text-area\n class=\"axm-ai-assist-prompt-box__prompt-input w-full min-h-0\"\n [rows]=\"3\"\n [disabled]=\"busy()\"\n [ngModel]=\"promptDraft()\"\n (ngModelChange)=\"onPromptDraftChange($event)\"\n (keydown)=\"onPromptKeydown($event)\"\n [placeholder]=\"\n placeholder().trim().length > 0\n ? placeholder()\n : (('@ai-management:assist-popup.placeholder' | translate | async) ?? '')\n \"\n ></ax-text-area>\n </div>\n\n <div class=\"axm-ai-assist-prompt-box__footer flex shrink-0 items-center justify-between gap-2\">\n <ax-button\n class=\"axm-ai-assist-prompt-box__menu-trigger\"\n look=\"solid\"\n color=\"primary\"\n type=\"button\"\n [iconOnly]=\"true\"\n [disabled]=\"busy()\"\n [attr.aria-label]=\"('@ai-management:assist-popup.composer-menu-aria' | translate | async) ?? ''\"\n >\n <ax-prefix>\n <i class=\"fa-light fa-plus text-sm\" aria-hidden=\"true\"></i>\n </ax-prefix>\n <ax-dropdown-panel #composerMenu>\n <ax-button-item-list class=\"min-w-56\">\n <ax-button-item\n [text]=\"('@ai-management:chat.upload-images' | translate | async) ?? ''\"\n [attr.aria-label]=\"('@ai-management:chat.upload-images-aria' | translate | async) ?? ''\"\n (onClick)=\"openImagePicker(); composerMenu.close()\"\n >\n <ax-prefix>\n <i class=\"fa-light fa-image size-4 text-center\" aria-hidden=\"true\"></i>\n </ax-prefix>\n </ax-button-item>\n <ax-button-item\n [text]=\"('@ai-management:chat.upload-audio' | translate | async) ?? ''\"\n [attr.aria-label]=\"('@ai-management:chat.upload-audio-aria' | translate | async) ?? ''\"\n (onClick)=\"openAudioPicker(); composerMenu.close()\"\n >\n <ax-prefix>\n <i class=\"fa-light fa-microphone size-4 text-center\" aria-hidden=\"true\"></i>\n </ax-prefix>\n </ax-button-item>\n <ax-button-item\n [text]=\"('@ai-management:chat.upload-documents' | translate | async) ?? ''\"\n [attr.aria-label]=\"('@ai-management:chat.upload-documents-aria' | translate | async) ?? ''\"\n (onClick)=\"openDocumentPicker(); composerMenu.close()\"\n >\n <ax-prefix>\n <i class=\"fa-light fa-paperclip size-4 text-center\" aria-hidden=\"true\"></i>\n </ax-prefix>\n </ax-button-item>\n </ax-button-item-list>\n </ax-dropdown-panel>\n </ax-button>\n\n <ax-button\n class=\"axm-ai-assist-prompt-box__send axm-ai-assist-prompt-box__send-gradient\"\n color=\"primary\"\n type=\"button\"\n [disabled]=\"busy() || !canSend()\"\n [text]=\"\n busy()\n ? (('@ai-management:assist-popup.generating' | translate | async) ?? '')\n : (('@ai-management:assist-popup.generate' | translate | async) ?? '')\n \"\n (onClick)=\"onSend()\"\n ></ax-button>\n </div>\n </div>\n</div>\n", styles: [".axm-ai-assist-prompt-box-shell{pointer-events:none;box-sizing:border-box;inset:0;width:100%;max-height:100%;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;padding-left:max(.75rem,env(safe-area-inset-left,0px));padding-right:max(.75rem,env(safe-area-inset-right,0px));padding-bottom:max(.75rem,env(safe-area-inset-bottom,0px));padding-top:max(.5rem,env(safe-area-inset-top,0px))}.axm-ai-assist-prompt-box-shell .ax-overlay-pane{pointer-events:auto;--tw-border-style: none;border-style:none;background-color:transparent;flex:0 0 auto;width:auto!important;max-width:calc(100vw - 1.5rem);min-width:min(480px,calc(100vw - 1.5rem))}.axm-ai-assist-prompt-box{--axm-ai-assist-prompt-chrome-gradient: linear-gradient( 125deg, rgb(var(--ax-sys-color-primary-200)) 0%, rgb(var(--ax-sys-color-primary-400)) 48%, rgb(var(--ax-sys-color-primary-300)) 100% );--axm-ai-assist-prompt-send-gradient: linear-gradient( 90deg, rgb(var(--ax-sys-color-primary-500)), rgb(var(--ax-sys-color-primary-700)) );box-sizing:border-box;margin:0;max-height:min(78vh,620px);overflow:hidden;padding:.65rem .7rem .7rem;border-radius:1.35rem;background:var(--axm-ai-assist-prompt-chrome-gradient);box-shadow:0 18px 50px -12px rgba(var(--ax-sys-color-on-surface),.12),0 8px 20px -8px rgba(var(--ax-sys-color-primary-400),.2)}.ax-dark .axm-ai-assist-prompt-box,.dark .axm-ai-assist-prompt-box{--axm-ai-assist-prompt-chrome-gradient: linear-gradient( 125deg, rgb(var(--ax-sys-color-primary-600)) 0%, rgb(var(--ax-sys-color-primary-500)) 48%, rgb(var(--ax-sys-color-primary-400)) 100% );box-shadow:0 20px 55px -14px rgba(var(--ax-sys-color-dark),.48),0 8px 24px -8px rgba(var(--ax-sys-color-primary-400),.26)}.axm-ai-assist-prompt-box__brand-title{font-size:.72rem;line-height:1.25;font-weight:600;letter-spacing:.01em;color:rgb(var(--ax-sys-color-on-surface))}.ax-dark .axm-ai-assist-prompt-box__brand-title{color:rgb(var(--ax-sys-color-on-lightest-surface))}.axm-ai-assist-prompt-box__brand-mark{display:inline-flex;width:1.65rem;height:1.65rem;flex-shrink:0;align-items:center;justify-content:center;border-radius:9999px;font-size:.75rem;line-height:1;color:rgb(var(--ax-sys-color-on-primary-surface));background:linear-gradient(145deg,rgb(var(--ax-sys-color-primary-500)),rgb(var(--ax-sys-color-primary-700)));box-shadow:0 2px 8px rgba(var(--ax-sys-color-primary-500),.35)}.axm-ai-assist-prompt-box__sheet{flex:1 1 auto;min-height:0;padding:.65rem .65rem .55rem;border-radius:1rem;background:rgb(var(--ax-sys-color-lightest-surface));border:1px solid rgba(var(--ax-sys-color-neutral-300),.35);box-shadow:inset 0 1px rgba(var(--ax-sys-color-lightest-surface),.95)}.ax-dark .axm-ai-assist-prompt-box__sheet{background:rgb(var(--ax-sys-color-neutral-800));border-color:rgba(var(--ax-sys-color-neutral-500),.4);box-shadow:inset 0 1px rgba(var(--ax-sys-color-lightest-surface),.06)}.axm-ai-assist-prompt-box__body{overflow-y:auto;min-height:0;flex:1 1 auto}.axm-ai-assist-prompt-box__prompt-input{display:block;width:100%;min-height:0;border:none!important;box-shadow:none!important;background:transparent!important}.axm-ai-assist-prompt-box__prompt-input:focus-within{outline:none!important;border:none!important;box-shadow:none!important}.axm-ai-assist-prompt-box__prompt-input:focus-within>*{border:none!important;box-shadow:none!important;outline:none!important}.axm-ai-assist-prompt-box__prompt-input textarea{min-height:4.5rem;max-height:min(30vh,240px);font-size:.8125rem;line-height:1.45;padding-block:.55rem;padding-inline:.65rem;border-radius:.65rem;border:none!important;box-shadow:none!important;background:transparent!important}.axm-ai-assist-prompt-box__prompt-input textarea:focus,.axm-ai-assist-prompt-box__prompt-input textarea:focus-visible,.axm-ai-assist-prompt-box__prompt-input textarea:active{outline:none!important;outline-offset:0!important;border:none!important;box-shadow:none!important}.ax-dark .axm-ai-assist-prompt-box__prompt-input textarea{color:rgb(var(--ax-sys-color-on-lightest-surface));background:rgb(var(--ax-sys-color-neutral-900))!important}.axm-ai-assist-prompt-box__footer{min-height:0}ax-button.axm-ai-assist-prompt-box__menu-trigger{--ax-comp-button-normal-bg-color: 0, 0, 0, 0 !important;--ax-comp-button-hover-bg-color: 0, 0, 0, 0 !important;--ax-comp-button-pressed-bg-color: 0, 0, 0, 0 !important;--ax-comp-button-border-width: 0 !important;border-radius:9999px!important;overflow:hidden;background:transparent!important;border-color:transparent!important}ax-button.axm-ai-assist-prompt-box__menu-trigger:hover:not(.ax-state-disabled,.ax-state-loading,.ax-state-selected),ax-button.axm-ai-assist-prompt-box__menu-trigger:active:not(.ax-state-disabled,.ax-state-loading,.ax-state-selected){background:transparent!important;background-color:transparent!important;border-color:transparent!important}ax-button.axm-ai-assist-prompt-box__menu-trigger>button{width:2.25rem;height:2.25rem;min-width:2.25rem;min-height:2.25rem;padding:0!important;border-radius:9999px!important;border:none!important;color:rgb(var(--ax-sys-color-on-primary-surface))!important;background:linear-gradient(145deg,rgb(var(--ax-sys-color-primary-500)),rgb(var(--ax-sys-color-primary-700)))!important;box-shadow:0 2px 8px rgba(var(--ax-sys-color-primary-500),.35)}ax-button.axm-ai-assist-prompt-box__menu-trigger.ax-state-disabled>button,ax-button.axm-ai-assist-prompt-box__menu-trigger.ax-state-loading>button,ax-button.axm-ai-assist-prompt-box__menu-trigger>button:disabled{opacity:.55;box-shadow:none}ax-button.axm-ai-assist-prompt-box__send-gradient{--ax-comp-button-normal-bg-color: 0, 0, 0, 0 !important;--ax-comp-button-hover-bg-color: 0, 0, 0, 0 !important;--ax-comp-button-pressed-bg-color: 0, 0, 0, 0 !important;--ax-comp-button-border-width: 0 !important;border-radius:9999px!important;overflow:hidden;background:transparent!important;border-color:transparent!important}ax-button.axm-ai-assist-prompt-box__send-gradient:hover:not(.ax-state-disabled,.ax-state-loading,.ax-state-selected),ax-button.axm-ai-assist-prompt-box__send-gradient:active:not(.ax-state-disabled,.ax-state-loading,.ax-state-selected){background:transparent!important;background-color:transparent!important;border-color:transparent!important}ax-button.axm-ai-assist-prompt-box__send-gradient>button{min-height:2.25rem;padding-inline:1rem!important;font-size:.8rem;font-weight:600;letter-spacing:.01em;border-radius:9999px!important;border:none!important;color:rgb(var(--ax-sys-color-on-primary-surface))!important;background:var(--axm-ai-assist-prompt-send-gradient)!important;box-shadow:0 3px 12px rgba(var(--ax-sys-color-secondary-400),.35)}ax-button.axm-ai-assist-prompt-box__send-gradient.ax-state-disabled>button,ax-button.axm-ai-assist-prompt-box__send-gradient.ax-state-loading>button,ax-button.axm-ai-assist-prompt-box__send-gradient>button:disabled{opacity:.55;box-shadow:none}ax-button.axm-ai-assist-prompt-box__menu-trigger:hover:not(.ax-state-disabled,.ax-state-loading,.ax-state-selected)>button{filter:brightness(.94)}ax-button.axm-ai-assist-prompt-box__menu-trigger:active:not(.ax-state-disabled,.ax-state-loading,.ax-state-selected)>button{filter:brightness(.88)}ax-button.axm-ai-assist-prompt-box__send-gradient:hover:not(.ax-state-disabled,.ax-state-loading,.ax-state-selected)>button{filter:brightness(.96)}ax-button.axm-ai-assist-prompt-box__send-gradient:active:not(.ax-state-disabled,.ax-state-loading,.ax-state-selected)>button{filter:brightness(.9)}\n/*! tailwindcss v4.3.0 | MIT License | https://tailwindcss.com */\n"] }]
2399
+ }], propDecorators: { title: [{ type: i0.Input, args: [{ isSignal: true, alias: "title", required: true }] }], placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }], initialPrompt: [{ type: i0.Input, args: [{ isSignal: true, alias: "initialPrompt", required: false }] }], contentMaxWidthPx: [{ type: i0.Input, args: [{ isSignal: true, alias: "contentMaxWidthPx", required: false }] }], initialAssistId: [{ type: i0.Input, args: [{ isSignal: true, alias: "initialAssistId", required: false }] }], initialDirectAgentId: [{ type: i0.Input, args: [{ isSignal: true, alias: "initialDirectAgentId", required: false }] }], runPrompt: [{ type: i0.Input, args: [{ isSignal: true, alias: "runPrompt", required: true }] }], requestClose: [{ type: i0.Input, args: [{ isSignal: true, alias: "requestClose", required: true }] }] } });
2395
2400
 
2396
2401
  //#endregion
2397
2402
  //#region ---- Service ----
2398
2403
  /**
2399
- * Opens the AI assist prompt in a bottom overlay using {@link AXOverlayService} (`centered: false`, panel CSS).
2404
+ * Opens the AI assist prompt box in a bottom overlay using {@link AXOverlayService} (`centered: false`, panel CSS).
2400
2405
  */
2401
- class AXMAiAssistPromptBottomPanelService {
2406
+ class AXMAiAssistPromptBoxService {
2402
2407
  constructor() {
2403
2408
  //#region ---- Services & Dependencies ----
2404
2409
  this.overlayService = inject(AXOverlayService);
@@ -2411,9 +2416,9 @@ class AXMAiAssistPromptBottomPanelService {
2411
2416
  //#endregion
2412
2417
  //#region ---- Public Methods ----
2413
2418
  /**
2414
- * Presents the assist prompt bottom panel and resolves when the user submits, cancels, or dismisses the overlay.
2419
+ * Presents the assist prompt box and resolves when the user submits, cancels, or dismisses the overlay.
2415
2420
  */
2416
- open(options, picker, executeRun) {
2421
+ open(options, executeRun) {
2417
2422
  if (this.pendingResolve) {
2418
2423
  const superseded = this.pendingResolve;
2419
2424
  this.pendingResolve = null;
@@ -2428,11 +2433,11 @@ class AXMAiAssistPromptBottomPanelService {
2428
2433
  this.overlayRef?.dispose();
2429
2434
  };
2430
2435
  void this.overlayService
2431
- .create(AXMAiAssistPromptBottomPanelComponent, {
2436
+ .create(AXMAiAssistPromptBoxComponent, {
2432
2437
  centered: false,
2433
2438
  width: 'auto',
2434
2439
  actionSheetStyle: false,
2435
- panelClass: ['axm-ai-assist-prompt-bottom-panel-shell'],
2440
+ panelClass: ['axm-ai-assist-prompt-box-shell'],
2436
2441
  backdrop: {
2437
2442
  enabled: false,
2438
2443
  background: false,
@@ -2444,8 +2449,6 @@ class AXMAiAssistPromptBottomPanelService {
2444
2449
  title: options.title,
2445
2450
  placeholder: options.placeholder ?? '',
2446
2451
  initialPrompt: options.initialPrompt ?? '',
2447
- assistPickerRows: picker.assistPickerRows,
2448
- agentPickerRows: picker.agentPickerRows,
2449
2452
  initialAssistId: options.assistId,
2450
2453
  initialDirectAgentId: options.directAgentId,
2451
2454
  runPrompt: executeRun,
@@ -2486,10 +2489,10 @@ class AXMAiAssistPromptBottomPanelService {
2486
2489
  this.overlayRef = null;
2487
2490
  }
2488
2491
  }
2489
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXMAiAssistPromptBottomPanelService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
2490
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXMAiAssistPromptBottomPanelService, providedIn: 'root' }); }
2492
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXMAiAssistPromptBoxService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
2493
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXMAiAssistPromptBoxService, providedIn: 'root' }); }
2491
2494
  }
2492
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXMAiAssistPromptBottomPanelService, decorators: [{
2495
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXMAiAssistPromptBoxService, decorators: [{
2493
2496
  type: Injectable,
2494
2497
  args: [{ providedIn: 'root' }]
2495
2498
  }] });
@@ -3143,18 +3146,12 @@ class AXPAiManagerService extends AXPAiAssistService {
3143
3146
  this.entityService = inject(AXPEntityService);
3144
3147
  this.settings = inject(AXPSettingsService);
3145
3148
  this.runtimeContextBuilder = inject(AXPAiPlatformRuntimeContextBuilder);
3146
- this.assistPromptBottomPanel = inject(AXMAiAssistPromptBottomPanelService);
3149
+ this.assistPromptBox = inject(AXMAiAssistPromptBoxService);
3147
3150
  this.localeId = inject(LOCALE_ID);
3148
3151
  this.loadingDialog = inject(AXLoadingDialogService);
3149
3152
  this.assistData = this.entityService
3150
3153
  .withEntity(RootConfig.module.name, RootConfig.entities.assist.name)
3151
3154
  .data();
3152
- this.assistListData = this.entityService
3153
- .withEntity(RootConfig.module.name, RootConfig.entities.assist.name)
3154
- .data();
3155
- this.agentListData = this.entityService
3156
- .withEntity(RootConfig.module.name, RootConfig.entities.agent.name)
3157
- .data();
3158
3155
  this.modelEntityData = this.entityService
3159
3156
  .withEntity(RootConfig.module.name, RootConfig.entities.model.name)
3160
3157
  .data();
@@ -3164,53 +3161,6 @@ class AXPAiManagerService extends AXPAiAssistService {
3164
3161
  }
3165
3162
  //#endregion
3166
3163
  //#region ---- Assist catalog (frontend) ----
3167
- /**
3168
- * Maps catalog `title` (multi-language or plain string) to a single-line picker label.
3169
- */
3170
- toAssistPickerRow(row) {
3171
- const id = row.id?.trim() ?? '';
3172
- const raw = row.title ?? row.name ?? id;
3173
- const title = raw == null || raw === ''
3174
- ? id
3175
- : typeof raw === 'string'
3176
- ? raw.trim() || id
3177
- : resolveMultiLanguageString(raw, this.localeId).trim() || id;
3178
- return { id, name: row.name, title };
3179
- }
3180
- /**
3181
- * Loads assist rows for UI pickers (e.g. header menu).
3182
- */
3183
- async listAssistPickerRows() {
3184
- try {
3185
- const result = await this.assistListData.query({
3186
- skip: 0,
3187
- take: 500,
3188
- sort: [{ field: 'title', dir: 'asc' }],
3189
- });
3190
- const items = (result?.items ?? []);
3191
- return items.filter((r) => r.id?.trim()).map((r) => this.toAssistPickerRow(r));
3192
- }
3193
- catch {
3194
- return [];
3195
- }
3196
- }
3197
- /**
3198
- * Loads AiAgent catalog rows for direct specialist chat (header picker).
3199
- */
3200
- async listAgentPickerRows() {
3201
- try {
3202
- const result = await this.agentListData.query({
3203
- skip: 0,
3204
- take: 500,
3205
- sort: [{ field: 'title', dir: 'asc' }],
3206
- });
3207
- const items = (result?.items ?? []);
3208
- return items.filter((r) => r.id?.trim()).map((r) => this.toAssistPickerRow(r));
3209
- }
3210
- catch {
3211
- return [];
3212
- }
3213
- }
3214
3164
  /**
3215
3165
  * Loads the effective assist from `DefaultAssistId` (tenant setting), or the assist named `platform-assistant`.
3216
3166
  */
@@ -3350,12 +3300,8 @@ class AXPAiManagerService extends AXPAiAssistService {
3350
3300
  }
3351
3301
  /** @inheritdoc */
3352
3302
  async show(options) {
3353
- const [assistPickerRows, agentPickerRows] = await Promise.all([
3354
- this.listAssistPickerRows(),
3355
- this.listAgentPickerRows(),
3356
- ]);
3357
3303
  const runLoadingSpec = options.runLoadingDialog;
3358
- const data = await this.assistPromptBottomPanel.open(options, { assistPickerRows, agentPickerRows }, async (payload) => {
3304
+ const data = await this.assistPromptBox.open(options, async (payload) => {
3359
3305
  let progressDialog;
3360
3306
  if (runLoadingSpec) {
3361
3307
  progressDialog = this.loadingDialog.show({
@@ -4483,149 +4429,9 @@ function modelItemSupportsChatCatalogPurpose(m, purpose) {
4483
4429
  return p.includes('chat');
4484
4430
  }
4485
4431
 
4486
- //#region ---- Imports ----
4487
- //#endregion
4488
- //#region ---- Component ----
4489
- class AXMAiAssistPromptPopupComponent extends AXBasePageComponent {
4490
- constructor() {
4491
- super(...arguments);
4492
- //#region ---- Services & Dependencies ----
4493
- this.toastService = inject(AXToastService);
4494
- this.translation = inject(AXTranslationService);
4495
- //#endregion
4496
- //#region ---- State ----
4497
- this.promptDraft = signal('', ...(ngDevMode ? [{ debugName: "promptDraft" }] : /* istanbul ignore next */ []));
4498
- this.busy = signal(false, ...(ngDevMode ? [{ debugName: "busy" }] : /* istanbul ignore next */ []));
4499
- }
4500
- //#endregion
4501
- //#region ---- Lifecycle ----
4502
- ngOnInit() {
4503
- super.ngOnInit();
4504
- this.promptDraft.set(this.initialPrompt?.trim() ?? '');
4505
- }
4506
- //#endregion
4507
- //#region ---- UI Handlers ----
4508
- onPromptDraftChange(value) {
4509
- this.promptDraft.set((value ?? '').toString());
4510
- }
4511
- canSend() {
4512
- return this.promptDraft().trim().length > 0;
4513
- }
4514
- onCancel() {
4515
- this.close(null);
4516
- }
4517
- async onSend() {
4518
- const text = this.promptDraft().trim();
4519
- if (!text || !this.onSubmit) {
4520
- return;
4521
- }
4522
- this.busy.set(true);
4523
- try {
4524
- const result = await this.onSubmit(text);
4525
- this.close(result);
4526
- }
4527
- catch (err) {
4528
- const title = await this.translation.translateAsync('@general:messages.error.title');
4529
- const fallback = await this.translation.translateAsync('@ai-management:assist-popup.run-error');
4530
- const content = err instanceof Error ? err.message : fallback;
4531
- await this.toastService.show({ color: 'danger', title, content });
4532
- }
4533
- finally {
4534
- this.busy.set(false);
4535
- }
4536
- }
4537
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXMAiAssistPromptPopupComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
4538
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.9", type: AXMAiAssistPromptPopupComponent, isStandalone: true, selector: "axm-ai-assist-prompt-popup", usesInheritance: true, ngImport: i0, template: `
4539
- <div class="flex flex-col gap-4 min-h-0">
4540
- <ax-form-field>
4541
- <ax-text-area
4542
- [rows]="6"
4543
- [disabled]="busy()"
4544
- [ngModel]="promptDraft()"
4545
- (ngModelChange)="onPromptDraftChange($event)"
4546
- [placeholder]="
4547
- placeholder && placeholder.trim().length > 0
4548
- ? placeholder
4549
- : (('@ai-management:assist-popup.placeholder' | translate | async) ?? '')
4550
- "
4551
- ></ax-text-area>
4552
- </ax-form-field>
4553
-
4554
- <div class="flex flex-wrap items-center justify-end gap-2">
4555
- <ax-button
4556
- look="outline"
4557
- color="secondary"
4558
- type="button"
4559
- [disabled]="busy()"
4560
- [text]="('@ai-management:assist-popup.cancel' | translate | async) ?? ''"
4561
- (onClick)="onCancel()"
4562
- ></ax-button>
4563
- <ax-button
4564
- color="primary"
4565
- type="button"
4566
- [disabled]="busy() || !canSend()"
4567
- [text]="
4568
- busy()
4569
- ? (('@ai-management:assist-popup.sending' | translate | async) ?? '')
4570
- : (('@ai-management:assist-popup.send' | translate | async) ?? '')
4571
- "
4572
- (onClick)="onSend()"
4573
- ></ax-button>
4574
- </div>
4575
- </div>
4576
- `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { 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: "ngmodule", type: AXFormModule }, { kind: "component", type: i3$1.AXFormFieldComponent, selector: "ax-form-field", inputs: ["labelMode"] }, { kind: "ngmodule", type: AXTextAreaModule }, { kind: "component", type: i5.AXTextAreaComponent, selector: "ax-text-area", inputs: ["disabled", "tabIndex", "readonly", "value", "state", "name", "placeholder", "maxLength", "look", "rows", "allowResize", "showCounter", "class"], outputs: ["onBlur", "onFocus", "valueChange", "stateChange", "onValueChanged", "readonlyChange", "disabledChange", "onKeyDown", "onKeyUp", "onKeyPress"] }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "pipe", type: i7.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
4577
- }
4578
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXMAiAssistPromptPopupComponent, decorators: [{
4579
- type: Component,
4580
- args: [{
4581
- selector: 'axm-ai-assist-prompt-popup',
4582
- changeDetection: ChangeDetectionStrategy.OnPush,
4583
- imports: [CommonModule, FormsModule, AXButtonModule, AXFormModule, AXTextAreaModule, AXTranslationModule],
4584
- template: `
4585
- <div class="flex flex-col gap-4 min-h-0">
4586
- <ax-form-field>
4587
- <ax-text-area
4588
- [rows]="6"
4589
- [disabled]="busy()"
4590
- [ngModel]="promptDraft()"
4591
- (ngModelChange)="onPromptDraftChange($event)"
4592
- [placeholder]="
4593
- placeholder && placeholder.trim().length > 0
4594
- ? placeholder
4595
- : (('@ai-management:assist-popup.placeholder' | translate | async) ?? '')
4596
- "
4597
- ></ax-text-area>
4598
- </ax-form-field>
4599
-
4600
- <div class="flex flex-wrap items-center justify-end gap-2">
4601
- <ax-button
4602
- look="outline"
4603
- color="secondary"
4604
- type="button"
4605
- [disabled]="busy()"
4606
- [text]="('@ai-management:assist-popup.cancel' | translate | async) ?? ''"
4607
- (onClick)="onCancel()"
4608
- ></ax-button>
4609
- <ax-button
4610
- color="primary"
4611
- type="button"
4612
- [disabled]="busy() || !canSend()"
4613
- [text]="
4614
- busy()
4615
- ? (('@ai-management:assist-popup.sending' | translate | async) ?? '')
4616
- : (('@ai-management:assist-popup.send' | translate | async) ?? '')
4617
- "
4618
- (onClick)="onSend()"
4619
- ></ax-button>
4620
- </div>
4621
- </div>
4622
- `,
4623
- }]
4624
- }] });
4625
-
4626
4432
  /**
4627
4433
  * Generated bundle index. Do not edit.
4628
4434
  */
4629
4435
 
4630
- export { AIMANAGEMENT_CHAT_GENERATE_IMAGE_COMMAND_KEY, AIMANAGEMENT_CHAT_SYNTHESIZE_SPEECH_COMMAND_KEY, AIMANAGEMENT_CHAT_TRANSCRIBE_SPEECH_COMMAND_KEY, AIMANAGEMENT_EXTRACT_DOCUMENT_TEXT_COMMAND_KEY, AIMANAGEMENT_STRUCTURED_TEXT_COMPLETION_COMMAND_KEY, AI_AGENT_CATALOG_DATASOURCE_NAME, AI_CHAT_ATTACHMENT_CATEGORY, AI_CHAT_ATTACHMENT_REF_TYPE, AI_CHAT_GENERATED_IMAGE_REF_TYPE, AI_CHAT_GENERATED_SPEECH_REF_TYPE, AI_COMMAND_REGISTRY_CATALOG_DATASOURCE_NAME, AI_GENERATED_IMAGE_MAX_REMOTE_URL_IN_TOOL, AI_MODEL_CATALOG_DATASOURCE_NAME, AI_MODEL_IMAGE_CATALOG_DATASOURCE_NAME, AI_MODEL_SPEECH_CATALOG_DATASOURCE_NAME, AI_MODEL_TTS_CATALOG_DATASOURCE_NAME, AI_QUERY_REGISTRY_CATALOG_DATASOURCE_NAME, AXMAiAgentCatalogDataSourceDefinition, AXMAiAssistPromptBottomPanelComponent, AXMAiAssistPromptBottomPanelService, AXMAiAssistPromptPopupComponent, AXMAiCommandRegistryCatalogDataSourceDefinition, AXMAiManagementEntityProvider, AXMAiManagementMenuProvider, AXMAiManagementModule, AXMAiModelCatalogDataSourceDefinition, AXMAiQueryRegistryCatalogDataSourceDefinition, AXPAI_DELEGATED_AGENT_DEFAULT_MAX_STEPS, AXPAI_DOCUMENT_VISION_DEFAULT_USER_INSTRUCTION, AXPAI_DOCUMENT_VISION_EXTRACTION_SYSTEM, AXPAI_ENGINE_DEFAULT_MAX_STEPS, AXPAI_SUPERVISOR_AGENT_TOOL_PREFIX, AXPAiAssistChatModelCatalogService, AXPAiAssistDefaultMaxStructuredRetries, AXPAiAssistDefaultStructuredMaxTokens, AXPAiAssistService, AXPAiChatToolRunContextService, AXPAiDefaultModelPickerService, AXPAiEngine, AXPAiManagementMenuKeys, AXPAiManagementSettings, AXPAiManagerService, AXPAiPlatformRuntimeContextBuilder, AXPAiStructuredOutputError, AiManagementManifest, RootConfig, axpAiAssistInitialMessagesToTranscript, axpAiChatAgentResultMessage, axpAiChatDelegatedReflectionAssistantMessage, axpAiChatMessageGetText, axpAiChatMessageIsDelegatedReflectionExcluded, axpAiChatMessagesFromProviderAssistant, axpAiChatTextMessage, axpAiChatToolOrAgentResultBodyJson, axpAiChatToolResultBodyJson, axpAiChatToolResultMessage, axpAiChatUserMessage, axpAiCoercePlanningAssistantTextToThink, axpAiCollectDelegatedAgentOutcomeResponses, axpAiDelegatedAgentOutcomeResponsesPlainText, axpAiDelegatedAgentPromptPreview, axpAiDelegatedSubTranscriptAppendFileArtifactFromToolResults, axpAiExtractLastStoredFileArtifactFromChatMessages, axpAiExtractStoredFileArtifactFromUnknown, axpAiMergePlainAssistantTextTurn, axpAiNormalizeHandlerResultToToolBody, axpAiParseDelegatedAgentResultSegmentsFromUnknown, axpAiParseSupervisorAgentToolName, axpAiPruneAssistantPiecesToFirstToolOnly, axpAiStripAssistInitialHtmlToPlain, axpAiSupervisorAgentToolName, axpAiToolCallFromAssistantToolMessage, blobOrFileFromImageResult, getAiChatCommandLlmParametersOverride, isChatPurposeModelRow, isImagePurposeModelRow, isSpeechPurposeModelRow, isTtsPurposeModelRow, modelRowHasPurpose, normalizeAiToolCommandArgs, normalizeModelPurposes, persistAiChatAttachmentImage, persistAiGeneratedImage, persistAiGeneratedSpeech };
4436
+ export { AIMANAGEMENT_CHAT_GENERATE_IMAGE_COMMAND_KEY, AIMANAGEMENT_CHAT_SYNTHESIZE_SPEECH_COMMAND_KEY, AIMANAGEMENT_CHAT_TRANSCRIBE_SPEECH_COMMAND_KEY, AIMANAGEMENT_EXTRACT_DOCUMENT_TEXT_COMMAND_KEY, AIMANAGEMENT_STRUCTURED_TEXT_COMPLETION_COMMAND_KEY, AI_AGENT_CATALOG_DATASOURCE_NAME, AI_CHAT_ATTACHMENT_CATEGORY, AI_CHAT_ATTACHMENT_REF_TYPE, AI_CHAT_GENERATED_IMAGE_REF_TYPE, AI_CHAT_GENERATED_SPEECH_REF_TYPE, AI_COMMAND_REGISTRY_CATALOG_DATASOURCE_NAME, AI_GENERATED_IMAGE_MAX_REMOTE_URL_IN_TOOL, AI_MODEL_CATALOG_DATASOURCE_NAME, AI_MODEL_IMAGE_CATALOG_DATASOURCE_NAME, AI_MODEL_SPEECH_CATALOG_DATASOURCE_NAME, AI_MODEL_TTS_CATALOG_DATASOURCE_NAME, AI_QUERY_REGISTRY_CATALOG_DATASOURCE_NAME, AXMAiAgentCatalogDataSourceDefinition, AXMAiAssistPromptBoxComponent, AXMAiAssistPromptBoxService, AXMAiCommandRegistryCatalogDataSourceDefinition, AXMAiManagementEntityProvider, AXMAiManagementMenuProvider, AXMAiManagementModule, AXMAiModelCatalogDataSourceDefinition, AXMAiQueryRegistryCatalogDataSourceDefinition, AXPAI_DELEGATED_AGENT_DEFAULT_MAX_STEPS, AXPAI_DOCUMENT_VISION_DEFAULT_USER_INSTRUCTION, AXPAI_DOCUMENT_VISION_EXTRACTION_SYSTEM, AXPAI_ENGINE_DEFAULT_MAX_STEPS, AXPAI_SUPERVISOR_AGENT_TOOL_PREFIX, AXPAiAssistChatModelCatalogService, AXPAiAssistDefaultMaxStructuredRetries, AXPAiAssistDefaultStructuredMaxTokens, AXPAiAssistService, AXPAiChatToolRunContextService, AXPAiDefaultModelPickerService, AXPAiEngine, AXPAiManagementMenuKeys, AXPAiManagementSettings, AXPAiManagerService, AXPAiPlatformRuntimeContextBuilder, AXPAiStructuredOutputError, AiManagementManifest, RootConfig, axpAiAssistInitialMessagesToTranscript, axpAiChatAgentResultMessage, axpAiChatDelegatedReflectionAssistantMessage, axpAiChatMessageGetText, axpAiChatMessageIsDelegatedReflectionExcluded, axpAiChatMessagesFromProviderAssistant, axpAiChatTextMessage, axpAiChatToolOrAgentResultBodyJson, axpAiChatToolResultBodyJson, axpAiChatToolResultMessage, axpAiChatUserMessage, axpAiCoercePlanningAssistantTextToThink, axpAiCollectDelegatedAgentOutcomeResponses, axpAiDelegatedAgentOutcomeResponsesPlainText, axpAiDelegatedAgentPromptPreview, axpAiDelegatedSubTranscriptAppendFileArtifactFromToolResults, axpAiExtractLastStoredFileArtifactFromChatMessages, axpAiExtractStoredFileArtifactFromUnknown, axpAiMergePlainAssistantTextTurn, axpAiNormalizeHandlerResultToToolBody, axpAiParseDelegatedAgentResultSegmentsFromUnknown, axpAiParseSupervisorAgentToolName, axpAiPruneAssistantPiecesToFirstToolOnly, axpAiStripAssistInitialHtmlToPlain, axpAiSupervisorAgentToolName, axpAiToolCallFromAssistantToolMessage, blobOrFileFromImageResult, getAiChatCommandLlmParametersOverride, isChatPurposeModelRow, isImagePurposeModelRow, isSpeechPurposeModelRow, isTtsPurposeModelRow, modelRowHasPurpose, normalizeAiToolCommandArgs, normalizeModelPurposes, persistAiChatAttachmentImage, persistAiGeneratedImage, persistAiGeneratedSpeech };
4631
4437
  //# sourceMappingURL=acorex-modules-ai-management.mjs.map