@openhands/agent-canvas 1.16.0 → 1.17.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (956) hide show
  1. package/README.md +1 -1
  2. package/README.windows.md +2 -2
  3. package/build/assets/{acp-providers-CX3Lh9gj.js → acp-providers-DrjNsPOH.js} +1 -1
  4. package/build/assets/active-backend-context-rZiLJRUc.js +2 -0
  5. package/build/assets/{agent-context-settings-DSZlXrLj.js → agent-context-settings-CJUrcBut.js} +1 -1
  6. package/build/assets/agent-profiles-service.api-Biieml2L.js +1 -0
  7. package/build/assets/agent-profiles-settings-x6RvPsq7.js +1 -0
  8. package/build/assets/agent-server-client-options-BikiNwTa.js +1 -0
  9. package/build/assets/agent-server-conversation-service.api-DYFsNHKf.js +88 -0
  10. package/build/assets/agent-settings-BJyovpJ_.js +1 -0
  11. package/build/assets/agent-settings-CpY3zObk.js +2 -0
  12. package/build/assets/{alert-banner-HP6mX-Vr.js → alert-banner-vARz1idS.js} +1 -1
  13. package/build/assets/{api-error-message-B-XdSk3b.js → api-error-message-Ve79qDcN.js} +1 -1
  14. package/build/assets/api-key-entry-screen-CsMuBhoP.js +1 -0
  15. package/build/assets/{app-settings-dbnneVaV.js → app-settings-BaJ7nfHt.js} +1 -1
  16. package/build/assets/automation-detail-CVoGDrKq.js +3 -0
  17. package/build/assets/{automation-export-D3a3of4G.js → automation-export-DxY47m3T.js} +1 -1
  18. package/build/assets/automation-git-sync-CRMP9Bbm.js +1 -0
  19. package/build/assets/automation-setup-route-072beLz1.js +3 -0
  20. package/build/assets/{automation-templates-BRppNh99.js → automation-templates-4C4PM8K7.js} +1 -1
  21. package/build/assets/automations-list-xuqTSQL4.js +1 -0
  22. package/build/assets/{back-nav-button-Cjl_hoxq.js → back-nav-button-B8tH0BEp.js} +1 -1
  23. package/build/assets/backend-form-modal-0aJmWdsa.js +1 -0
  24. package/build/assets/{backend-synced-settings-badge-DPkz30BE.js → backend-synced-settings-badge-B7rKWBir.js} +1 -1
  25. package/build/assets/{badge-BU3S0VtE.js → badge-CcGx2TaV.js} +1 -1
  26. package/build/assets/{base-modal-D_L0oEbG.js → base-modal-DTULovNc.js} +1 -1
  27. package/build/assets/bot-CLMxGFaq.js +1 -0
  28. package/build/assets/{brand-button-BAfk4wGP.js → brand-button-DxPO4Lf8.js} +1 -1
  29. package/build/assets/{browser-DSAo0tz1.js → browser-C-_qBasq.js} +2 -2
  30. package/build/assets/{browser-tab-C9vy56R5.js → browser-tab-DZanIw5m.js} +1 -1
  31. package/build/assets/{canvas-extension-page-dx1gFrfW.js → canvas-extension-page-o_cWgE9B.js} +1 -1
  32. package/build/assets/canvas-extensions-DSgNlCha.js +1 -0
  33. package/build/assets/{canvas-extensions-runtime-2_x5Ezmi.js → canvas-extensions-runtime-DdnkgJXV.js} +1 -1
  34. package/build/assets/{chat-send-button-MUQqCZCS.js → chat-send-button-B3SFSIg5.js} +1 -1
  35. package/build/assets/check-fDEfgSzj.js +1 -0
  36. package/build/assets/chevron-down-CFrWHqu8.js +1 -0
  37. package/build/assets/chevron-right-C5roOrJu.js +1 -0
  38. package/build/assets/circle-check-ClTzJTdb.js +1 -0
  39. package/build/assets/{circle-plus-check-toggle-BO_kFZt3.js → circle-plus-check-toggle-Fr-h-mbL.js} +1 -1
  40. package/build/assets/{cloud-funnel-analytics-CztBCCPp.js → cloud-funnel-analytics-BQanUEEC.js} +1 -1
  41. package/build/assets/{cog-D-MPQW6G.js → cog-VBlRo6iw.js} +1 -1
  42. package/build/assets/command-menu-BT3Ia5Ru.js +1 -0
  43. package/build/assets/commits-tab-2jhtaohl.js +1 -0
  44. package/build/assets/{condenser-settings-DmEOje-7.js → condenser-settings-eVKFMvap.js} +1 -1
  45. package/build/assets/confirmation-modal-gIFHeZt6.js +1 -0
  46. package/build/assets/{context-menu-list-item-I86vKcmM.js → context-menu-list-item-DDROe12Z.js} +1 -1
  47. package/build/assets/conversation-BnjJSFf5.js +93 -0
  48. package/build/assets/conversation-DZ578rOX.js +1 -0
  49. package/build/assets/conversation-panel-DZ578rOX.js +1 -0
  50. package/build/assets/{conversation-state-store-B0ImPLHO.js → conversation-state-store-D1_G_9I-.js} +1 -1
  51. package/build/assets/{conversation-store-Ca3ghXap.js → conversation-store-DVVfkCsk.js} +1 -1
  52. package/build/assets/{conversation-tab-empty-state-FIbh_lc8.js → conversation-tab-empty-state-DKlzAz5c.js} +1 -1
  53. package/build/assets/{copy-to-clipboard-button-Ca8iSkkA.js → copy-to-clipboard-button-B3w0X7WH.js} +1 -1
  54. package/build/assets/{device-verify-Bhn2e_Ye.js → device-verify-BfkCzyFB.js} +1 -1
  55. package/build/assets/{dropdown-classes-Bc1djN0-.js → dropdown-classes-B9kJVDIk.js} +1 -1
  56. package/build/assets/edit-automation-modal-BwhJ39JT.js +1 -0
  57. package/build/assets/empty-state-RZz0OfnY.js +1 -0
  58. package/build/assets/{entry.client-CqyPPjOq.js → entry.client-Ds8LVp-E.js} +2 -2
  59. package/build/assets/enum-filter-dropdown-C4pW0ORd.js +1 -0
  60. package/build/assets/{environment-switch-overlay-BmBRT7gv.js → environment-switch-overlay-P2ZAuzov.js} +1 -1
  61. package/build/assets/{error-state-Body8Ngd.js → error-state-B_5cgNPJ.js} +1 -1
  62. package/build/assets/extensions-hub-DsaUr4ca.js +1 -0
  63. package/build/assets/extensions-navigation-CRMZd-FE.js +1 -0
  64. package/build/assets/external-link-DQtv7eTh.js +1 -0
  65. package/build/assets/files-tab-CCgAcVdc.js +1 -0
  66. package/build/assets/{form-control-classes-Bkh5FGrD.js → form-control-classes-B-z85REi.js} +1 -1
  67. package/build/assets/get-git-path-EHrSDxTM.js +1 -0
  68. package/build/assets/git-repo-dropdown-D2WEQ97X.js +1 -0
  69. package/build/assets/{git-repo-dropdown-4ROKl2cB.js → git-repo-dropdown-DVeCUUXG.js} +1 -1
  70. package/build/assets/{highlighted-source-view-BFRxGT_Q.js → highlighted-source-view-DjHO3SdW.js} +1 -1
  71. package/build/assets/home-BorS_vdS.js +1 -0
  72. package/build/assets/home-aIMbHw5M.js +1 -0
  73. package/build/assets/home-automation-run-tooltip-CpHNFiFl.js +1 -0
  74. package/build/assets/home-store-DyXz0w6d.js +1 -0
  75. package/build/assets/hooks-service-C6dpRtZM.js +1 -0
  76. package/build/assets/index-home-zKFuKK2B.js +1 -0
  77. package/build/assets/info-CTIdjttz.js +1 -0
  78. package/build/assets/install-server-modal-DUiZMc8u.js +1 -0
  79. package/build/assets/kebab-menu-item-content-mm04SBD3.js +1 -0
  80. package/build/assets/{key-BmVyxs-2.js → key-CfXbJa8w.js} +1 -1
  81. package/build/assets/{launch-IrTDEFCs.js → launch-BSIf9KEg.js} +1 -1
  82. package/build/assets/list-filter-CNpqTWVY.js +1 -0
  83. package/build/assets/{list-todo-apgLVjMw.js → list-todo-ByXMdY4W.js} +1 -1
  84. package/build/assets/llm-not-configured-banner-z_QRSeV0.js +27 -0
  85. package/build/assets/llm-settings-B-5AHMiX.js +1 -0
  86. package/build/assets/llm-settings-B3SjHDmA.js +1 -0
  87. package/build/assets/llm-subscription-service-aDNBQ7Gq.js +1 -0
  88. package/build/assets/loader-circle-Dex47vVW.js +1 -0
  89. package/build/assets/{loading-spinner-BY9N3pOe.js → loading-spinner-DfHI77BA.js} +1 -1
  90. package/build/assets/manage-backends-modal-q1NdFisr.js +1 -0
  91. package/build/assets/manifest-8920b615.js +1 -0
  92. package/build/assets/{manifest-subpage-layout-CAOYzrYp.js → manifest-subpage-layout-BQQy5ipR.js} +1 -1
  93. package/build/assets/{map-provider-Cu3Zgumb.js → map-provider-DXvssjw9.js} +1 -1
  94. package/build/assets/markdown-renderer-rivLvYh-.js +8 -0
  95. package/build/assets/{mcp-BTs_SXfZ.js → mcp-CEXDhQWn.js} +1 -1
  96. package/build/assets/{mcp-marketplace-utils-AIBzzHTO.js → mcp-marketplace-utils-Cn_NIMWM.js} +1 -1
  97. package/build/assets/mcp-page-LGYIICMG.js +9 -0
  98. package/build/assets/messages-DUSeANAh.js +41 -0
  99. package/build/assets/{modal-body-BxZjsju9.js → modal-body-DJw4xBki.js} +1 -1
  100. package/build/assets/{modal-classes-C8eycCwG.js → modal-classes-Dg0ngBPO.js} +1 -1
  101. package/build/assets/{modal-close-button-DDzdRvCs.js → modal-close-button-B9j4nasm.js} +1 -1
  102. package/build/assets/{mouse-pointer-click-Co2uyaPA.js → mouse-pointer-click-DEhsSUpu.js} +1 -1
  103. package/build/assets/onboarding-BjFebfs5.js +1 -0
  104. package/build/assets/onboarding-modal-DDTjOpyd.js +1 -0
  105. package/build/assets/organization-service.api-Cyg1Tn03.js +1 -0
  106. package/build/assets/pencil-D5c47kyN.js +1 -0
  107. package/build/assets/pin-C7vMagvf.js +1 -0
  108. package/build/assets/planner-tab-D8f2Y3rn.js +1 -0
  109. package/build/assets/plug-CeaqeF6u.js +1 -0
  110. package/build/assets/plugins-management-service-Bh_pBuf-.js +1 -0
  111. package/build/assets/plus-B3wvU06-.js +1 -0
  112. package/build/assets/profiles-service.api-BbOK0EkF.js +1 -0
  113. package/build/assets/{providers-BhMcY5nv.js → providers-2gIIkz2N.js} +1 -1
  114. package/build/assets/proxy-CBgMd2zf.js +1 -0
  115. package/build/assets/{puzzle-JM_QaRm0.js → puzzle-DdAqbUrb.js} +1 -1
  116. package/build/assets/recommended-automations-launcher-YLAQTp4s.js +1 -0
  117. package/build/assets/refresh-cw-DEQdPCpH.js +1 -0
  118. package/build/assets/root-Bye_XmEL.js +2 -0
  119. package/build/assets/root-Cnwwzgo0.css +1 -0
  120. package/build/assets/root-layout-CSAwxBGM.js +2 -0
  121. package/build/assets/schema-field-CK0xYNbO.js +1 -0
  122. package/build/assets/scroll-fade-state-Dt_fx2kf.js +1 -0
  123. package/build/assets/sdk-section-page-Da73Rs_o.js +1 -0
  124. package/build/assets/secret-form-CB2VwYYg.js +1 -0
  125. package/build/assets/secrets-service-Cr8g8xuv.js +1 -0
  126. package/build/assets/{secrets-settings-B_GpxKW2.js → secrets-settings-Bh0udeKv.js} +1 -1
  127. package/build/assets/settings-DmyIgRxO.js +1 -0
  128. package/build/assets/{settings-dropdown-input-BcwylHs2.js → settings-dropdown-input-DVpyD87C.js} +1 -1
  129. package/build/assets/settings-index-BSJUFmjE.js +1 -0
  130. package/build/assets/{settings-input-Db-1g8Ql.js → settings-input-C0dd8Utu.js} +1 -1
  131. package/build/assets/{settings-list-classes-BzeSZbF2.js → settings-list-classes-Ds4jPBHK.js} +1 -1
  132. package/build/assets/{settings-modal-DfJ3tcJQ.js → settings-modal-yStgEh2o.js} +1 -1
  133. package/build/assets/settings-service.api-9_xdv_mh.js +1 -0
  134. package/build/assets/{settings-switch-CS-dJDmA.js → settings-switch-B78Khmyz.js} +1 -1
  135. package/build/assets/{settings-utils-UYpEdPuD.js → settings-utils-8GIIgOQL.js} +1 -1
  136. package/build/assets/shared-conversation-DM96X4KV.js +1 -0
  137. package/build/assets/shield-check-DO7wa_eu.js +1 -0
  138. package/build/assets/{sidebar-layout-D6fS8-Gl.js → sidebar-layout-EPfWxk11.js} +1 -1
  139. package/build/assets/sidebar-mobile-menu-toggle-D5GR5xT9.js +1 -0
  140. package/build/assets/{sidebar-nav-link-DQQcMf1A.js → sidebar-nav-link-_t4_Ef-9.js} +1 -1
  141. package/build/assets/{sidebar-onboarding-checklist-storage-BBkeI6Bp.js → sidebar-onboarding-checklist-storage-DbDX-Wvj.js} +1 -1
  142. package/build/assets/{sidebar-store-DGqHkVLw.js → sidebar-store-CSDFK0W5.js} +1 -1
  143. package/build/assets/{skill-card-pill-row-B27-xyig.js → skill-card-pill-row-989y15jV.js} +1 -1
  144. package/build/assets/{skill-filter-w__3UCEE.js → skill-filter-BBeZ4JEP.js} +1 -1
  145. package/build/assets/{skill-icon-badge-RQkq8wvl.js → skill-icon-badge-BDhQ-tQ0.js} +1 -1
  146. package/build/assets/skill-scope-Dz3kPH3P.js +1 -0
  147. package/build/assets/skills-plugins-e3CYGdUJ.js +1 -0
  148. package/build/assets/skills-settings-3e-FuHw_.js +1 -0
  149. package/build/assets/styled-tooltip-Pd22BIvr.js +1 -0
  150. package/build/assets/{task-list-tab-C5zcaktH.js → task-list-tab-3Jg8ywch.js} +1 -1
  151. package/build/assets/{terminal-CNElN42a.js → terminal-onXx0_Qz.js} +2 -2
  152. package/build/assets/toggle-switch-lwQtxDcm.js +1 -0
  153. package/build/assets/trash-2-ZhKuTLiz.js +1 -0
  154. package/build/assets/trash-B6OIe4yX.js +1 -0
  155. package/build/assets/triangle-alert-BajLPpQg.js +1 -0
  156. package/build/assets/{typography-v1KN0tzi.js → typography-HLLg_FAn.js} +1 -1
  157. package/build/assets/usage-tab-Cm-9j3UK.js +1 -0
  158. package/build/assets/use-acp-credential-form-BARcvjYE.js +1 -0
  159. package/build/assets/use-activate-agent-profile-BLKML6vQ.js +1 -0
  160. package/build/assets/use-agent-profiles-1P91KSXz.js +1 -0
  161. package/build/assets/{use-automation-health-E6NZi9rb.js → use-automation-health-BZkQNEA8.js} +1 -1
  162. package/build/assets/use-automation-permissions-B_RpvL-s.js +1 -0
  163. package/build/assets/{use-automations-xijQKIl9.js → use-automations-Cg0PDIZr.js} +1 -1
  164. package/build/assets/{use-can-manage-org-profiles-CrJP5262.js → use-can-manage-org-profiles-BbN6KfDr.js} +1 -1
  165. package/build/assets/use-canvas-extensions-CFUpHat6.js +1 -0
  166. package/build/assets/{use-cloud-current-user-id-CDfAHpPX.js → use-cloud-current-user-id-Dk0rjr63.js} +1 -1
  167. package/build/assets/use-config-DpafU_QP.js +1 -0
  168. package/build/assets/use-create-conversation-1YgmAHt-.js +1 -0
  169. package/build/assets/use-create-secret-D8p9ybQj.js +1 -0
  170. package/build/assets/{use-get-secrets-K3jmk-LH.js → use-get-secrets-CQ4b0qK8.js} +1 -1
  171. package/build/assets/use-is-authed-BRPjCRKM.js +1 -0
  172. package/build/assets/{use-launch-skill-in-chat-BYjYihBP.js → use-launch-skill-in-chat-DeYa1tFM.js} +1 -1
  173. package/build/assets/use-llm-configured-DGm8FiRR.js +1 -0
  174. package/build/assets/use-llm-profiles-BTTtpW4z.js +1 -0
  175. package/build/assets/use-manifest-capabilities-AOWGcu0j.js +1 -0
  176. package/build/assets/use-onboarding-completion-CoINurkm.js +1 -0
  177. package/build/assets/use-pinned-home-route-D6krwXjy.js +1 -0
  178. package/build/assets/use-plugins-marketplace-mLsIDhBv.js +1 -0
  179. package/build/assets/use-save-agent-profile-CxyO9YG-.js +1 -0
  180. package/build/assets/{use-save-settings-DYqkKv7T.js → use-save-settings-3U5K9-8x.js} +1 -1
  181. package/build/assets/use-settings-Dn00UISA.js +1 -0
  182. package/build/assets/use-settings-nav-items-vrjxTqcu.js +16 -0
  183. package/build/assets/use-tracking-B9prBsrq.js +3 -0
  184. package/build/assets/{use-user-conversation-B9Gebw_g.js → use-user-conversation-ZWlXtbZb.js} +1 -1
  185. package/build/assets/{useInfiniteQuery-C926xzY4.js → useInfiniteQuery-BzrRqjLg.js} +1 -1
  186. package/build/assets/{useMutation-B-qc391N.js → useMutation-CJuK90oc.js} +1 -1
  187. package/build/assets/{useQueries-DlbhlH9I.js → useQueries-CykmpT-a.js} +1 -1
  188. package/build/assets/{useQuery-BSTgq1rl.js → useQuery-S6j94er1.js} +1 -1
  189. package/build/assets/utils-BOco8mxR.js +1 -0
  190. package/build/assets/{vendor~conversation-panel~conversation-C8Fn4XOf.js → vendor~conversation-panel~conversation-4eJ0tml3.js} +1 -1
  191. package/build/assets/vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~b0x1wrp2-Z0lly3FE.js +2 -0
  192. package/build/assets/vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~czjee3a3-BfkNGovw.js +185 -0
  193. package/build/assets/{vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~ew9ih1s8-rfV8mQ9m.js → vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~ew9ih1s8-DnDoaYNi.js} +1 -1
  194. package/build/assets/{vendor~index-home~home~conversation-panel~conversation-hWywRBaR.js → vendor~index-home~home~conversation-panel~conversation-CSFLzmTN.js} +1 -1
  195. package/build/assets/vendor~root-layout-n8XCEXG8.js +1 -0
  196. package/build/assets/{vendor~root-layout~conversation-panel~conversation-BMbMgaGu.js → vendor~root-layout~conversation-panel~conversation-3Idg1_U3.js} +1 -1
  197. package/build/assets/{vendor~root-layout~conversation-panel~conversation~skills-settings~automations-list~shared-~bovqqk8e-BWir3rJs.js → vendor~root-layout~conversation-panel~conversation~skills-settings~automations-list~shared-~bovqqk8e-DkPlXWl9.js} +1 -1
  198. package/build/assets/{vendor~root-layout~index-home~home~conversation-panel~conversation-j5MFqfSy.js → vendor~root-layout~index-home~home~conversation-panel~conversation-DgQ564nC.js} +1 -1
  199. package/build/assets/vendor~root-layout~index-home~home~conversation-panel~conversation~mcp~automations-list~aut~ibfbmr9f-CxhwKuAd.js +1 -0
  200. package/build/assets/{vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~extensions-h~nj1hli3r-DP9wmsjo.js → vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~extensions-h~inibp4qe-CnsDDzeE.js} +1 -1
  201. package/build/assets/vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~extensions-h~iyia17eu-CV850oio.js +1 -0
  202. package/build/assets/{vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~skills-setti~eo2nf80n-CUmIwQCN.js → vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~skills-setti~eo2nf80n-BPjI-atc.js} +12 -6
  203. package/build/assets/{verification-settings-gw_q6vkL.js → verification-settings-u2POabjH.js} +1 -1
  204. package/build/assets/{wrench-CUEI1krB.js → wrench-CkgI4rxA.js} +1 -1
  205. package/build/assets/x-By6qCmtY.js +1 -0
  206. package/build/index.html +4 -4
  207. package/build/locales/ar/openhands.json +73 -20
  208. package/build/locales/ca/openhands.json +73 -20
  209. package/build/locales/de/openhands.json +73 -20
  210. package/build/locales/en/openhands.json +73 -20
  211. package/build/locales/es/openhands.json +73 -20
  212. package/build/locales/fr/openhands.json +73 -20
  213. package/build/locales/it/openhands.json +73 -20
  214. package/build/locales/ja/openhands.json +73 -20
  215. package/build/locales/ko-KR/openhands.json +73 -20
  216. package/build/locales/no/openhands.json +73 -20
  217. package/build/locales/pt/openhands.json +73 -20
  218. package/build/locales/tr/openhands.json +73 -20
  219. package/build/locales/uk/openhands.json +73 -20
  220. package/build/locales/zh-CN/openhands.json +73 -20
  221. package/build/locales/zh-TW/openhands.json +73 -20
  222. package/config/defaults.json +3 -3
  223. package/dist/api/agent-server-adapter.cjs +3 -3
  224. package/dist/api/agent-server-adapter.cjs.map +1 -1
  225. package/dist/api/agent-server-adapter.d.ts +72 -12
  226. package/dist/api/agent-server-adapter.js +234 -132
  227. package/dist/api/agent-server-adapter.js.map +1 -1
  228. package/dist/api/agent-server-config.cjs +1 -1
  229. package/dist/api/agent-server-config.cjs.map +1 -1
  230. package/dist/api/agent-server-config.d.ts +6 -0
  231. package/dist/api/agent-server-config.js +6 -3
  232. package/dist/api/agent-server-config.js.map +1 -1
  233. package/dist/api/automation-service/automation-service.api.cjs +1 -1
  234. package/dist/api/automation-service/automation-service.api.cjs.map +1 -1
  235. package/dist/api/automation-service/automation-service.api.d.ts +2 -2
  236. package/dist/api/automation-service/automation-service.api.js +7 -7
  237. package/dist/api/automation-service/automation-service.api.js.map +1 -1
  238. package/dist/api/cloud/provider-connections-service.api.cjs +2 -0
  239. package/dist/api/cloud/provider-connections-service.api.cjs.map +1 -0
  240. package/dist/api/cloud/provider-connections-service.api.d.ts +5 -0
  241. package/dist/api/cloud/provider-connections-service.api.js +50 -0
  242. package/dist/api/cloud/provider-connections-service.api.js.map +1 -0
  243. package/dist/api/cloud/skills-service.api.cjs +1 -1
  244. package/dist/api/cloud/skills-service.api.cjs.map +1 -1
  245. package/dist/api/cloud/skills-service.api.d.ts +10 -0
  246. package/dist/api/cloud/skills-service.api.js +11 -1
  247. package/dist/api/cloud/skills-service.api.js.map +1 -1
  248. package/dist/api/conversation-metadata-store.cjs +1 -1
  249. package/dist/api/conversation-metadata-store.cjs.map +1 -1
  250. package/dist/api/conversation-metadata-store.d.ts +24 -0
  251. package/dist/api/conversation-metadata-store.js +10 -2
  252. package/dist/api/conversation-metadata-store.js.map +1 -1
  253. package/dist/api/conversation-service/agent-server-conversation-service.api.cjs +1 -1
  254. package/dist/api/conversation-service/agent-server-conversation-service.api.cjs.map +1 -1
  255. package/dist/api/conversation-service/agent-server-conversation-service.api.d.ts +20 -0
  256. package/dist/api/conversation-service/agent-server-conversation-service.api.js +126 -77
  257. package/dist/api/conversation-service/agent-server-conversation-service.api.js.map +1 -1
  258. package/dist/api/hooks-service.cjs +2 -0
  259. package/dist/api/hooks-service.cjs.map +1 -0
  260. package/dist/api/hooks-service.d.ts +13 -0
  261. package/dist/api/hooks-service.js +20 -0
  262. package/dist/api/hooks-service.js.map +1 -0
  263. package/dist/api/provider-connections-service/provider-connections-service.api.cjs +1 -1
  264. package/dist/api/provider-connections-service/provider-connections-service.api.cjs.map +1 -1
  265. package/dist/api/provider-connections-service/provider-connections-service.api.js +25 -16
  266. package/dist/api/provider-connections-service/provider-connections-service.api.js.map +1 -1
  267. package/dist/api/settings-service/settings-service.api.cjs +1 -1
  268. package/dist/api/settings-service/settings-service.api.cjs.map +1 -1
  269. package/dist/api/settings-service/settings-service.api.d.ts +2 -0
  270. package/dist/api/settings-service/settings-service.api.js +18 -10
  271. package/dist/api/settings-service/settings-service.api.js.map +1 -1
  272. package/dist/api/skills-service.cjs +1 -1
  273. package/dist/api/skills-service.cjs.map +1 -1
  274. package/dist/api/skills-service.d.ts +7 -0
  275. package/dist/api/skills-service.js +11 -8
  276. package/dist/api/skills-service.js.map +1 -1
  277. package/dist/components/conversation-events/chat/event-message-components/critic-result-display.cjs +1 -1
  278. package/dist/components/conversation-events/chat/event-message-components/critic-result-display.js +5 -5
  279. package/dist/components/conversation-events/chat/event-message-components/finish-event-message.cjs +1 -1
  280. package/dist/components/conversation-events/chat/event-message-components/finish-event-message.cjs.map +1 -1
  281. package/dist/components/conversation-events/chat/event-message-components/finish-event-message.js +2 -1
  282. package/dist/components/conversation-events/chat/event-message-components/finish-event-message.js.map +1 -1
  283. package/dist/components/conversation-events/chat/event-message-components/generic-event-message-wrapper.cjs +1 -1
  284. package/dist/components/conversation-events/chat/event-message-components/generic-event-message-wrapper.cjs.map +1 -1
  285. package/dist/components/conversation-events/chat/event-message-components/generic-event-message-wrapper.d.ts +1 -1
  286. package/dist/components/conversation-events/chat/event-message-components/generic-event-message-wrapper.js +28 -28
  287. package/dist/components/conversation-events/chat/event-message-components/generic-event-message-wrapper.js.map +1 -1
  288. package/dist/components/conversation-events/chat/event-message-components/thought-event-message.cjs +1 -1
  289. package/dist/components/conversation-events/chat/event-message-components/thought-event-message.cjs.map +1 -1
  290. package/dist/components/conversation-events/chat/event-message-components/thought-event-message.js +2 -1
  291. package/dist/components/conversation-events/chat/event-message-components/thought-event-message.js.map +1 -1
  292. package/dist/components/conversation-events/chat/event-message-components/user-assistant-event-message.cjs +1 -1
  293. package/dist/components/conversation-events/chat/event-message-components/user-assistant-event-message.cjs.map +1 -1
  294. package/dist/components/conversation-events/chat/event-message-components/user-assistant-event-message.d.ts +1 -1
  295. package/dist/components/conversation-events/chat/event-message-components/user-assistant-event-message.js +37 -37
  296. package/dist/components/conversation-events/chat/event-message-components/user-assistant-event-message.js.map +1 -1
  297. package/dist/components/conversation-events/chat/event-message.cjs +2 -2
  298. package/dist/components/conversation-events/chat/event-message.cjs.map +1 -1
  299. package/dist/components/conversation-events/chat/event-message.js +79 -70
  300. package/dist/components/conversation-events/chat/event-message.js.map +1 -1
  301. package/dist/components/conversation-events/chat/messages.cjs +1 -1
  302. package/dist/components/conversation-events/chat/messages.cjs.map +1 -1
  303. package/dist/components/conversation-events/chat/messages.js +28 -27
  304. package/dist/components/conversation-events/chat/messages.js.map +1 -1
  305. package/dist/components/features/automations/automation-card.cjs +1 -1
  306. package/dist/components/features/automations/automation-card.cjs.map +1 -1
  307. package/dist/components/features/automations/automation-card.js +100 -94
  308. package/dist/components/features/automations/automation-card.js.map +1 -1
  309. package/dist/components/features/automations/automation-list-row.cjs +1 -1
  310. package/dist/components/features/automations/automation-list-row.cjs.map +1 -1
  311. package/dist/components/features/automations/automation-list-row.js +88 -77
  312. package/dist/components/features/automations/automation-list-row.js.map +1 -1
  313. package/dist/components/features/automations/detail/detail-header.d.ts +3 -1
  314. package/dist/components/features/automations/detail/run-status-badge.cjs +1 -1
  315. package/dist/components/features/automations/detail/run-status-badge.cjs.map +1 -1
  316. package/dist/components/features/automations/detail/run-status-badge.d.ts +2 -2
  317. package/dist/components/features/automations/detail/run-status-badge.js +82 -53
  318. package/dist/components/features/automations/detail/run-status-badge.js.map +1 -1
  319. package/dist/components/features/automations/kebab-menu.cjs +1 -1
  320. package/dist/components/features/automations/kebab-menu.cjs.map +1 -1
  321. package/dist/components/features/automations/kebab-menu.js +9 -5
  322. package/dist/components/features/automations/kebab-menu.js.map +1 -1
  323. package/dist/components/features/automations/recommended-automations-launcher.cjs +1 -1
  324. package/dist/components/features/automations/recommended-automations-launcher.cjs.map +1 -1
  325. package/dist/components/features/automations/recommended-automations-launcher.js +12 -12
  326. package/dist/components/features/automations/recommended-automations-launcher.js.map +1 -1
  327. package/dist/components/features/automations/recommended-automations-section.cjs +1 -1
  328. package/dist/components/features/automations/recommended-automations-section.js +9 -9
  329. package/dist/components/features/backends/backend-selector.cjs +1 -1
  330. package/dist/components/features/backends/backend-selector.cjs.map +1 -1
  331. package/dist/components/features/backends/backend-selector.js +133 -122
  332. package/dist/components/features/backends/backend-selector.js.map +1 -1
  333. package/dist/components/features/backends/manage-backends-modal.cjs +1 -1
  334. package/dist/components/features/backends/manage-backends-modal.cjs.map +1 -1
  335. package/dist/components/features/backends/manage-backends-modal.js +29 -29
  336. package/dist/components/features/backends/manage-backends-modal.js.map +1 -1
  337. package/dist/components/features/chat/change-agent-button.cjs +1 -1
  338. package/dist/components/features/chat/change-agent-button.js +4 -4
  339. package/dist/components/features/chat/chat-interface.cjs +2 -2
  340. package/dist/components/features/chat/chat-interface.cjs.map +1 -1
  341. package/dist/components/features/chat/chat-interface.js +137 -137
  342. package/dist/components/features/chat/chat-interface.js.map +1 -1
  343. package/dist/components/features/chat/chat-message.cjs +1 -1
  344. package/dist/components/features/chat/chat-message.cjs.map +1 -1
  345. package/dist/components/features/chat/chat-message.d.ts +2 -1
  346. package/dist/components/features/chat/chat-message.js +88 -79
  347. package/dist/components/features/chat/chat-message.js.map +1 -1
  348. package/dist/components/features/chat/components/context-window-meter.cjs +1 -1
  349. package/dist/components/features/chat/components/context-window-meter.js +4 -4
  350. package/dist/components/features/chat/confirmation-mode-enabled.cjs +1 -1
  351. package/dist/components/features/chat/confirmation-mode-enabled.js +4 -4
  352. package/dist/components/features/chat/generic-event-message.cjs +1 -1
  353. package/dist/components/features/chat/generic-event-message.cjs.map +1 -1
  354. package/dist/components/features/chat/generic-event-message.d.ts +2 -1
  355. package/dist/components/features/chat/generic-event-message.js +41 -22
  356. package/dist/components/features/chat/generic-event-message.js.map +1 -1
  357. package/dist/components/features/chat/interactive-chat-box.cjs +1 -1
  358. package/dist/components/features/chat/interactive-chat-box.cjs.map +1 -1
  359. package/dist/components/features/chat/interactive-chat-box.js +20 -19
  360. package/dist/components/features/chat/interactive-chat-box.js.map +1 -1
  361. package/dist/components/features/conversation/conversation-overview-git-section.cjs +1 -1
  362. package/dist/components/features/conversation/conversation-overview-git-section.js +4 -4
  363. package/dist/components/features/conversation/conversation-overview-skills-panel.cjs +1 -1
  364. package/dist/components/features/conversation/conversation-overview-skills-panel.js +4 -4
  365. package/dist/components/features/conversation/conversation-tabs/conversation-tabs-context-menu.cjs +1 -1
  366. package/dist/components/features/conversation/conversation-tabs/conversation-tabs-context-menu.cjs.map +1 -1
  367. package/dist/components/features/conversation/conversation-tabs/conversation-tabs-context-menu.js +77 -78
  368. package/dist/components/features/conversation/conversation-tabs/conversation-tabs-context-menu.js.map +1 -1
  369. package/dist/components/features/conversation/conversation-tabs/conversation-tabs.cjs +1 -1
  370. package/dist/components/features/conversation/conversation-tabs/conversation-tabs.cjs.map +1 -1
  371. package/dist/components/features/conversation/conversation-tabs/conversation-tabs.js +88 -88
  372. package/dist/components/features/conversation/conversation-tabs/conversation-tabs.js.map +1 -1
  373. package/dist/components/features/conversation-panel/advanced-conversation-options-modal.cjs +2 -0
  374. package/dist/components/features/conversation-panel/advanced-conversation-options-modal.cjs.map +1 -0
  375. package/dist/components/features/conversation-panel/advanced-conversation-options-modal.d.ts +21 -0
  376. package/dist/components/features/conversation-panel/advanced-conversation-options-modal.js +239 -0
  377. package/dist/components/features/conversation-panel/advanced-conversation-options-modal.js.map +1 -0
  378. package/dist/components/features/conversation-panel/conversation-active-tag-filters.cjs +2 -0
  379. package/dist/components/features/conversation-panel/conversation-active-tag-filters.cjs.map +1 -0
  380. package/dist/components/features/conversation-panel/conversation-active-tag-filters.d.ts +28 -0
  381. package/dist/components/features/conversation-panel/conversation-active-tag-filters.js +69 -0
  382. package/dist/components/features/conversation-panel/conversation-active-tag-filters.js.map +1 -0
  383. package/dist/components/features/conversation-panel/conversation-card/conversation-card-actions.cjs +1 -1
  384. package/dist/components/features/conversation-panel/conversation-card/conversation-card-actions.cjs.map +1 -1
  385. package/dist/components/features/conversation-panel/conversation-card/conversation-card-actions.d.ts +2 -1
  386. package/dist/components/features/conversation-panel/conversation-card/conversation-card-actions.js +19 -18
  387. package/dist/components/features/conversation-panel/conversation-card/conversation-card-actions.js.map +1 -1
  388. package/dist/components/features/conversation-panel/conversation-card/conversation-card-context-menu.cjs +1 -1
  389. package/dist/components/features/conversation-panel/conversation-card/conversation-card-context-menu.cjs.map +1 -1
  390. package/dist/components/features/conversation-panel/conversation-card/conversation-card-context-menu.d.ts +2 -1
  391. package/dist/components/features/conversation-panel/conversation-card/conversation-card-context-menu.js +91 -80
  392. package/dist/components/features/conversation-panel/conversation-card/conversation-card-context-menu.js.map +1 -1
  393. package/dist/components/features/conversation-panel/conversation-card/conversation-card-preview.cjs +1 -1
  394. package/dist/components/features/conversation-panel/conversation-card/conversation-card-preview.cjs.map +1 -1
  395. package/dist/components/features/conversation-panel/conversation-card/conversation-card-preview.js +1 -1
  396. package/dist/components/features/conversation-panel/conversation-card/conversation-card-preview.js.map +1 -1
  397. package/dist/components/features/conversation-panel/conversation-card/conversation-card.cjs +1 -1
  398. package/dist/components/features/conversation-panel/conversation-card/conversation-card.cjs.map +1 -1
  399. package/dist/components/features/conversation-panel/conversation-card/conversation-card.d.ts +7 -1
  400. package/dist/components/features/conversation-panel/conversation-card/conversation-card.js +87 -81
  401. package/dist/components/features/conversation-panel/conversation-card/conversation-card.js.map +1 -1
  402. package/dist/components/features/conversation-panel/conversation-card/conversation-tag-chips.cjs +1 -1
  403. package/dist/components/features/conversation-panel/conversation-card/conversation-tag-chips.cjs.map +1 -1
  404. package/dist/components/features/conversation-panel/conversation-card/conversation-tag-chips.d.ts +2 -1
  405. package/dist/components/features/conversation-panel/conversation-card/conversation-tag-chips.js +1 -1
  406. package/dist/components/features/conversation-panel/conversation-card/conversation-tag-chips.js.map +1 -1
  407. package/dist/components/features/conversation-panel/conversation-card/conversation-tag-display.cjs +1 -1
  408. package/dist/components/features/conversation-panel/conversation-card/conversation-tag-display.cjs.map +1 -1
  409. package/dist/components/features/conversation-panel/conversation-card/conversation-tag-display.d.ts +2 -1
  410. package/dist/components/features/conversation-panel/conversation-card/conversation-tag-display.js +2 -1
  411. package/dist/components/features/conversation-panel/conversation-card/conversation-tag-display.js.map +1 -1
  412. package/dist/components/features/conversation-panel/conversation-layouts-menu.cjs +2 -0
  413. package/dist/components/features/conversation-panel/conversation-layouts-menu.cjs.map +1 -0
  414. package/dist/components/features/conversation-panel/conversation-layouts-menu.d.ts +29 -0
  415. package/dist/components/features/conversation-panel/conversation-layouts-menu.js +177 -0
  416. package/dist/components/features/conversation-panel/conversation-layouts-menu.js.map +1 -0
  417. package/dist/components/features/conversation-panel/conversation-panel-list-helpers.cjs +1 -1
  418. package/dist/components/features/conversation-panel/conversation-panel-list-helpers.cjs.map +1 -1
  419. package/dist/components/features/conversation-panel/conversation-panel-list-helpers.d.ts +37 -0
  420. package/dist/components/features/conversation-panel/conversation-panel-list-helpers.js +85 -45
  421. package/dist/components/features/conversation-panel/conversation-panel-list-helpers.js.map +1 -1
  422. package/dist/components/features/conversation-panel/conversation-panel.cjs +1 -1
  423. package/dist/components/features/conversation-panel/conversation-panel.cjs.map +1 -1
  424. package/dist/components/features/conversation-panel/conversation-panel.js +296 -290
  425. package/dist/components/features/conversation-panel/conversation-panel.js.map +1 -1
  426. package/dist/components/features/conversation-panel/edit-conversation-tags-modal.cjs +2 -0
  427. package/dist/components/features/conversation-panel/edit-conversation-tags-modal.cjs.map +1 -0
  428. package/dist/components/features/conversation-panel/edit-conversation-tags-modal.d.ts +22 -0
  429. package/dist/components/features/conversation-panel/edit-conversation-tags-modal.js +153 -0
  430. package/dist/components/features/conversation-panel/edit-conversation-tags-modal.js.map +1 -0
  431. package/dist/components/features/conversation-panel/hide-older-conversations-row.cjs +2 -0
  432. package/dist/components/features/conversation-panel/hide-older-conversations-row.cjs.map +1 -0
  433. package/dist/components/features/conversation-panel/hide-older-conversations-row.d.ts +6 -0
  434. package/dist/components/features/conversation-panel/hide-older-conversations-row.js +65 -0
  435. package/dist/components/features/conversation-panel/hide-older-conversations-row.js.map +1 -0
  436. package/dist/components/features/conversation-panel/menu-row.cjs +1 -1
  437. package/dist/components/features/conversation-panel/menu-row.cjs.map +1 -1
  438. package/dist/components/features/conversation-panel/menu-row.d.ts +11 -1
  439. package/dist/components/features/conversation-panel/menu-row.js +27 -16
  440. package/dist/components/features/conversation-panel/menu-row.js.map +1 -1
  441. package/dist/components/features/home/featured-automations/automation-health-indicator.cjs +1 -1
  442. package/dist/components/features/home/featured-automations/automation-health-indicator.cjs.map +1 -1
  443. package/dist/components/features/home/featured-automations/automation-health-indicator.js +1 -1
  444. package/dist/components/features/home/featured-automations/automation-health-indicator.js.map +1 -1
  445. package/dist/components/features/home/featured-automations/automation-run-activity-metrics.cjs +1 -1
  446. package/dist/components/features/home/featured-automations/automation-run-activity-metrics.cjs.map +1 -1
  447. package/dist/components/features/home/featured-automations/automation-run-activity-metrics.d.ts +4 -3
  448. package/dist/components/features/home/featured-automations/automation-run-activity-metrics.js +22 -25
  449. package/dist/components/features/home/featured-automations/automation-run-activity-metrics.js.map +1 -1
  450. package/dist/components/features/home/featured-automations/automation-run-activity-sparkline.cjs +1 -1
  451. package/dist/components/features/home/featured-automations/automation-run-activity-sparkline.cjs.map +1 -1
  452. package/dist/components/features/home/featured-automations/automation-run-activity-sparkline.d.ts +1 -1
  453. package/dist/components/features/home/featured-automations/automation-run-activity-sparkline.js +15 -15
  454. package/dist/components/features/home/featured-automations/automation-run-activity-sparkline.js.map +1 -1
  455. package/dist/components/features/home/featured-automations/automation-run-health.cjs +1 -1
  456. package/dist/components/features/home/featured-automations/automation-run-health.cjs.map +1 -1
  457. package/dist/components/features/home/featured-automations/automation-run-health.d.ts +5 -3
  458. package/dist/components/features/home/featured-automations/automation-run-health.js +30 -23
  459. package/dist/components/features/home/featured-automations/automation-run-health.js.map +1 -1
  460. package/dist/components/features/home/featured-automations/home-automation-activity.d.ts +3 -2
  461. package/dist/components/features/home/featured-automations/home-automation-run-tooltip.cjs +1 -1
  462. package/dist/components/features/home/featured-automations/home-automation-run-tooltip.cjs.map +1 -1
  463. package/dist/components/features/home/featured-automations/home-automation-run-tooltip.d.ts +1 -1
  464. package/dist/components/features/home/featured-automations/home-automation-run-tooltip.js +42 -42
  465. package/dist/components/features/home/featured-automations/home-automation-run-tooltip.js.map +1 -1
  466. package/dist/components/features/manifest/manifest-form-field.d.ts +3 -1
  467. package/dist/components/features/manifest/manifest-review-step.d.ts +3 -1
  468. package/dist/components/features/settings/cloud-settings-link.cjs +1 -1
  469. package/dist/components/features/settings/cloud-settings-link.cjs.map +1 -1
  470. package/dist/components/features/settings/cloud-settings-link.js +5 -3
  471. package/dist/components/features/settings/cloud-settings-link.js.map +1 -1
  472. package/dist/components/features/settings/integrations-settings-link.cjs +1 -1
  473. package/dist/components/features/settings/integrations-settings-link.cjs.map +1 -1
  474. package/dist/components/features/settings/integrations-settings-link.d.ts +3 -1
  475. package/dist/components/features/settings/integrations-settings-link.js +20 -17
  476. package/dist/components/features/settings/integrations-settings-link.js.map +1 -1
  477. package/dist/components/features/settings/llm-profiles/llm-settings-local-view.cjs +1 -1
  478. package/dist/components/features/settings/llm-profiles/llm-settings-local-view.js +1 -1
  479. package/dist/components/features/settings/llm-profiles/profiles-body.d.ts +2 -2
  480. package/dist/components/features/settings/sdk-settings/sdk-section-page.cjs +1 -1
  481. package/dist/components/features/settings/sdk-settings/sdk-section-page.cjs.map +1 -1
  482. package/dist/components/features/settings/sdk-settings/sdk-section-page.d.ts +8 -7
  483. package/dist/components/features/settings/sdk-settings/sdk-section-page.js +172 -142
  484. package/dist/components/features/settings/sdk-settings/sdk-section-page.js.map +1 -1
  485. package/dist/components/features/settings/secrets-settings/secret-form.cjs +1 -1
  486. package/dist/components/features/settings/secrets-settings/secret-form.cjs.map +1 -1
  487. package/dist/components/features/settings/secrets-settings/secret-form.js +38 -25
  488. package/dist/components/features/settings/secrets-settings/secret-form.js.map +1 -1
  489. package/dist/components/features/settings/settings-dropdown-input.cjs +1 -1
  490. package/dist/components/features/settings/settings-dropdown-input.js +6 -6
  491. package/dist/components/features/sidebar/sidebar-rail-body.cjs +1 -1
  492. package/dist/components/features/sidebar/sidebar-rail-body.cjs.map +1 -1
  493. package/dist/components/features/sidebar/sidebar-rail-body.d.ts +3 -1
  494. package/dist/components/features/sidebar/sidebar-rail-body.js +156 -139
  495. package/dist/components/features/sidebar/sidebar-rail-body.js.map +1 -1
  496. package/dist/components/features/sidebar/sidebar.cjs +1 -1
  497. package/dist/components/features/sidebar/sidebar.cjs.map +1 -1
  498. package/dist/components/features/sidebar/sidebar.js +44 -43
  499. package/dist/components/features/sidebar/sidebar.js.map +1 -1
  500. package/dist/components/features/sidebar/use-sidebar-onboarding-checklist.cjs +1 -1
  501. package/dist/components/features/sidebar/use-sidebar-onboarding-checklist.js +3 -3
  502. package/dist/components/features/skills/extensions-navigation.cjs +1 -1
  503. package/dist/components/features/skills/extensions-navigation.cjs.map +1 -1
  504. package/dist/components/features/skills/extensions-navigation.js +3 -3
  505. package/dist/components/features/skills/extensions-navigation.js.map +1 -1
  506. package/dist/components/shared/buttons/styled-tooltip.cjs +1 -1
  507. package/dist/components/shared/buttons/styled-tooltip.cjs.map +1 -1
  508. package/dist/components/shared/buttons/styled-tooltip.d.ts +2 -1
  509. package/dist/components/shared/buttons/styled-tooltip.js +2 -1
  510. package/dist/components/shared/buttons/styled-tooltip.js.map +1 -1
  511. package/dist/components/shared/filters/enum-filter-dropdown.cjs +1 -1
  512. package/dist/components/shared/filters/enum-filter-dropdown.cjs.map +1 -1
  513. package/dist/components/shared/filters/enum-filter-dropdown.d.ts +5 -1
  514. package/dist/components/shared/filters/enum-filter-dropdown.js +14 -14
  515. package/dist/components/shared/filters/enum-filter-dropdown.js.map +1 -1
  516. package/dist/components/shared/modals/confirmation-modal.cjs +1 -1
  517. package/dist/components/shared/modals/confirmation-modal.cjs.map +1 -1
  518. package/dist/components/shared/modals/confirmation-modal.d.ts +2 -1
  519. package/dist/components/shared/modals/confirmation-modal.js +8 -8
  520. package/dist/components/shared/modals/confirmation-modal.js.map +1 -1
  521. package/dist/components/shared/modals/settings/model-selector.cjs +1 -1
  522. package/dist/components/shared/modals/settings/model-selector.js +27 -27
  523. package/dist/config/defaults.cjs +1 -1
  524. package/dist/config/defaults.cjs.map +1 -1
  525. package/dist/config/defaults.js +3 -3
  526. package/dist/config/defaults.js.map +1 -1
  527. package/dist/constants/settings-nav.d.ts +8 -0
  528. package/dist/contexts/conversation-websocket-context.cjs +3 -3
  529. package/dist/contexts/conversation-websocket-context.cjs.map +1 -1
  530. package/dist/contexts/conversation-websocket-context.d.ts +5 -0
  531. package/dist/contexts/conversation-websocket-context.js +194 -198
  532. package/dist/contexts/conversation-websocket-context.js.map +1 -1
  533. package/dist/contexts/websocket-provider-wrapper.cjs +1 -1
  534. package/dist/contexts/websocket-provider-wrapper.cjs.map +1 -1
  535. package/dist/contexts/websocket-provider-wrapper.js +31 -15
  536. package/dist/contexts/websocket-provider-wrapper.js.map +1 -1
  537. package/dist/hooks/chat/record-model-switch-message.cjs +1 -1
  538. package/dist/hooks/chat/record-model-switch-message.cjs.map +1 -1
  539. package/dist/hooks/chat/record-model-switch-message.d.ts +31 -0
  540. package/dist/hooks/chat/record-model-switch-message.js +25 -12
  541. package/dist/hooks/chat/record-model-switch-message.js.map +1 -1
  542. package/dist/hooks/chat/use-plan-mode-interceptor.cjs +2 -0
  543. package/dist/hooks/chat/use-plan-mode-interceptor.cjs.map +1 -0
  544. package/dist/hooks/chat/use-plan-mode-interceptor.d.ts +16 -0
  545. package/dist/hooks/chat/use-plan-mode-interceptor.js +43 -0
  546. package/dist/hooks/chat/use-plan-mode-interceptor.js.map +1 -0
  547. package/dist/hooks/mutation/use-create-conversation.cjs +1 -1
  548. package/dist/hooks/mutation/use-create-conversation.cjs.map +1 -1
  549. package/dist/hooks/mutation/use-create-conversation.js +5 -1
  550. package/dist/hooks/mutation/use-create-conversation.js.map +1 -1
  551. package/dist/hooks/mutation/use-read-conversation-file.cjs +1 -1
  552. package/dist/hooks/mutation/use-read-conversation-file.cjs.map +1 -1
  553. package/dist/hooks/mutation/use-read-conversation-file.js +11 -4
  554. package/dist/hooks/mutation/use-read-conversation-file.js.map +1 -1
  555. package/dist/hooks/mutation/use-save-settings.cjs +1 -1
  556. package/dist/hooks/mutation/use-save-settings.js +3 -3
  557. package/dist/hooks/mutation/use-switch-llm-profile.cjs +1 -1
  558. package/dist/hooks/mutation/use-switch-llm-profile.cjs.map +1 -1
  559. package/dist/hooks/mutation/use-switch-llm-profile.js +13 -25
  560. package/dist/hooks/mutation/use-switch-llm-profile.js.map +1 -1
  561. package/dist/hooks/mutation/use-update-conversation-tags.cjs +2 -0
  562. package/dist/hooks/mutation/use-update-conversation-tags.cjs.map +1 -0
  563. package/dist/hooks/mutation/use-update-conversation-tags.d.ts +8 -0
  564. package/dist/hooks/mutation/use-update-conversation-tags.js +45 -0
  565. package/dist/hooks/mutation/use-update-conversation-tags.js.map +1 -0
  566. package/dist/hooks/query/query-keys.cjs +1 -1
  567. package/dist/hooks/query/query-keys.cjs.map +1 -1
  568. package/dist/hooks/query/query-keys.d.ts +6 -0
  569. package/dist/hooks/query/query-keys.js +2 -2
  570. package/dist/hooks/query/query-keys.js.map +1 -1
  571. package/dist/hooks/query/use-automation-sdk-version.cjs +1 -1
  572. package/dist/hooks/query/use-automation-sdk-version.cjs.map +1 -1
  573. package/dist/hooks/query/use-automation-sdk-version.d.ts +0 -1
  574. package/dist/hooks/query/use-automation-sdk-version.js +30 -55
  575. package/dist/hooks/query/use-automation-sdk-version.js.map +1 -1
  576. package/dist/hooks/query/use-conversation-skills.cjs +1 -1
  577. package/dist/hooks/query/use-conversation-skills.cjs.map +1 -1
  578. package/dist/hooks/query/use-conversation-skills.d.ts +14 -5
  579. package/dist/hooks/query/use-conversation-skills.js +20 -4
  580. package/dist/hooks/query/use-conversation-skills.js.map +1 -1
  581. package/dist/hooks/query/use-provider-connections.cjs +1 -1
  582. package/dist/hooks/query/use-provider-connections.cjs.map +1 -1
  583. package/dist/hooks/query/use-provider-connections.d.ts +6 -3
  584. package/dist/hooks/query/use-provider-connections.js +7 -3
  585. package/dist/hooks/query/use-provider-connections.js.map +1 -1
  586. package/dist/hooks/query/use-sub-conversations.cjs +1 -1
  587. package/dist/hooks/query/use-sub-conversations.cjs.map +1 -1
  588. package/dist/hooks/query/use-sub-conversations.js +16 -16
  589. package/dist/hooks/query/use-sub-conversations.js.map +1 -1
  590. package/dist/hooks/use-acp-model-context.cjs +1 -1
  591. package/dist/hooks/use-acp-model-context.js +3 -3
  592. package/dist/hooks/use-agent-state.cjs +1 -1
  593. package/dist/hooks/use-agent-state.cjs.map +1 -1
  594. package/dist/hooks/use-agent-state.d.ts +17 -1
  595. package/dist/hooks/use-agent-state.js +19 -9
  596. package/dist/hooks/use-agent-state.js.map +1 -1
  597. package/dist/hooks/use-automation-permissions.cjs +2 -0
  598. package/dist/hooks/use-automation-permissions.cjs.map +1 -0
  599. package/dist/hooks/use-automation-permissions.d.ts +43 -0
  600. package/dist/hooks/use-automation-permissions.js +52 -0
  601. package/dist/hooks/use-automation-permissions.js.map +1 -0
  602. package/dist/hooks/use-chat-input-model-state.cjs +1 -1
  603. package/dist/hooks/use-chat-input-model-state.js +3 -3
  604. package/dist/hooks/use-handle-plan-click.cjs +1 -1
  605. package/dist/hooks/use-handle-plan-click.cjs.map +1 -1
  606. package/dist/hooks/use-handle-plan-click.d.ts +3 -1
  607. package/dist/hooks/use-handle-plan-click.js +85 -26
  608. package/dist/hooks/use-handle-plan-click.js.map +1 -1
  609. package/dist/hooks/use-home-automation-actions.cjs +1 -1
  610. package/dist/hooks/use-home-automation-actions.cjs.map +1 -1
  611. package/dist/hooks/use-home-automation-actions.js +1 -0
  612. package/dist/hooks/use-home-automation-actions.js.map +1 -1
  613. package/dist/hooks/use-llm-configured.cjs +1 -1
  614. package/dist/hooks/use-llm-configured.js +3 -3
  615. package/dist/hooks/use-manifest-preflight.d.ts +1 -1
  616. package/dist/hooks/use-unified-websocket-status.cjs +1 -1
  617. package/dist/hooks/use-unified-websocket-status.cjs.map +1 -1
  618. package/dist/hooks/use-unified-websocket-status.d.ts +7 -0
  619. package/dist/hooks/use-unified-websocket-status.js +5 -1
  620. package/dist/hooks/use-unified-websocket-status.js.map +1 -1
  621. package/dist/i18n/declaration.cjs +1 -1
  622. package/dist/i18n/declaration.cjs.map +1 -1
  623. package/dist/i18n/declaration.d.ts +65 -12
  624. package/dist/i18n/declaration.js +1 -1
  625. package/dist/i18n/declaration.js.map +1 -1
  626. package/dist/i18n/translation.cjs +2 -2
  627. package/dist/i18n/translation.cjs.map +1 -1
  628. package/dist/i18n/translation.js +1196 -295
  629. package/dist/i18n/translation.js.map +1 -1
  630. package/dist/locales/ar/openhands.json +73 -20
  631. package/dist/locales/ca/openhands.json +73 -20
  632. package/dist/locales/de/openhands.json +73 -20
  633. package/dist/locales/en/openhands.json +73 -20
  634. package/dist/locales/es/openhands.json +73 -20
  635. package/dist/locales/fr/openhands.json +73 -20
  636. package/dist/locales/it/openhands.json +73 -20
  637. package/dist/locales/ja/openhands.json +73 -20
  638. package/dist/locales/ko-KR/openhands.json +73 -20
  639. package/dist/locales/no/openhands.json +73 -20
  640. package/dist/locales/pt/openhands.json +73 -20
  641. package/dist/locales/tr/openhands.json +73 -20
  642. package/dist/locales/uk/openhands.json +73 -20
  643. package/dist/locales/zh-CN/openhands.json +73 -20
  644. package/dist/locales/zh-TW/openhands.json +73 -20
  645. package/dist/manifests/automation-insights.cjs.map +1 -1
  646. package/dist/manifests/automation-insights.d.ts +10 -2
  647. package/dist/manifests/automation-insights.js.map +1 -1
  648. package/dist/manifests/automation-setup.cjs +1 -1
  649. package/dist/manifests/automation-setup.cjs.map +1 -1
  650. package/dist/manifests/automation-setup.d.ts +9 -16
  651. package/dist/manifests/automation-setup.js +17 -7
  652. package/dist/manifests/automation-setup.js.map +1 -1
  653. package/dist/manifests/manifest-actions.d.ts +1 -1
  654. package/dist/manifests/manifest-capabilities.d.ts +3 -1
  655. package/dist/manifests/manifest-local-validation.cjs +2 -0
  656. package/dist/manifests/manifest-local-validation.cjs.map +1 -0
  657. package/dist/manifests/manifest-local-validation.d.ts +15 -11
  658. package/dist/manifests/manifest-local-validation.js +8 -0
  659. package/dist/manifests/manifest-local-validation.js.map +1 -0
  660. package/dist/manifests/manifest-template.cjs +2 -0
  661. package/dist/manifests/manifest-template.cjs.map +1 -0
  662. package/dist/manifests/manifest-template.d.ts +4 -4
  663. package/dist/manifests/manifest-template.js +12 -0
  664. package/dist/manifests/manifest-template.js.map +1 -0
  665. package/dist/manifests/manifest-validation.cjs +1 -1
  666. package/dist/manifests/manifest-validation.cjs.map +1 -1
  667. package/dist/manifests/manifest-validation.js +106 -28
  668. package/dist/manifests/manifest-validation.js.map +1 -1
  669. package/dist/manifests/types.cjs.map +1 -1
  670. package/dist/manifests/types.d.ts +39 -4
  671. package/dist/manifests/types.js.map +1 -1
  672. package/dist/node_modules/@openhands/extensions/automations/catalog/custom-automation/manifest.cjs +8 -0
  673. package/dist/node_modules/@openhands/extensions/automations/catalog/custom-automation/manifest.cjs.map +1 -0
  674. package/dist/node_modules/@openhands/extensions/automations/catalog/custom-automation/manifest.js +221 -0
  675. package/dist/node_modules/@openhands/extensions/automations/catalog/custom-automation/manifest.js.map +1 -0
  676. package/dist/node_modules/@openhands/extensions/automations/catalog/github-issue-to-pr/manifest.cjs +1 -1
  677. package/dist/node_modules/@openhands/extensions/automations/catalog/github-issue-to-pr/manifest.cjs.map +1 -1
  678. package/dist/node_modules/@openhands/extensions/automations/catalog/github-issue-to-pr/manifest.js +1 -1
  679. package/dist/node_modules/@openhands/extensions/automations/catalog/github-issue-to-pr/manifest.js.map +1 -1
  680. package/dist/node_modules/@openhands/extensions/automations/catalog/github-pr-reviewer/manifest.cjs +1 -1
  681. package/dist/node_modules/@openhands/extensions/automations/catalog/github-pr-reviewer/manifest.cjs.map +1 -1
  682. package/dist/node_modules/@openhands/extensions/automations/catalog/github-pr-reviewer/manifest.js +1 -1
  683. package/dist/node_modules/@openhands/extensions/automations/catalog/github-pr-reviewer/manifest.js.map +1 -1
  684. package/dist/node_modules/@openhands/extensions/automations/catalog/qa-changes/manifest.cjs +1 -1
  685. package/dist/node_modules/@openhands/extensions/automations/catalog/qa-changes/manifest.cjs.map +1 -1
  686. package/dist/node_modules/@openhands/extensions/automations/catalog/qa-changes/manifest.js +1 -1
  687. package/dist/node_modules/@openhands/extensions/automations/catalog/qa-changes/manifest.js.map +1 -1
  688. package/dist/node_modules/@openhands/extensions/automations/catalog-index.cjs +1 -1
  689. package/dist/node_modules/@openhands/extensions/automations/catalog-index.cjs.map +1 -1
  690. package/dist/node_modules/@openhands/extensions/automations/catalog-index.js +22 -20
  691. package/dist/node_modules/@openhands/extensions/automations/catalog-index.js.map +1 -1
  692. package/dist/node_modules/@openhands/extensions/automations/interface.cjs +1 -1
  693. package/dist/node_modules/@openhands/extensions/automations/interface.cjs.map +1 -1
  694. package/dist/node_modules/@openhands/extensions/automations/interface.js +2 -1
  695. package/dist/node_modules/@openhands/extensions/automations/interface.js.map +1 -1
  696. package/dist/node_modules/@openhands/extensions/integrations/catalog/gitlab.cjs +1 -1
  697. package/dist/node_modules/@openhands/extensions/integrations/catalog/gitlab.cjs.map +1 -1
  698. package/dist/node_modules/@openhands/extensions/integrations/catalog/gitlab.js +24 -5
  699. package/dist/node_modules/@openhands/extensions/integrations/catalog/gitlab.js.map +1 -1
  700. package/dist/node_modules/@tanstack/react-query/build/modern/QueryClientProvider.cjs +1 -1
  701. package/dist/node_modules/@tanstack/react-query/build/modern/QueryClientProvider.js +1 -1
  702. package/dist/node_modules/lucide-react/dist/esm/icons/circle-question-mark.cjs +2 -0
  703. package/dist/node_modules/lucide-react/dist/esm/icons/circle-question-mark.cjs.map +1 -0
  704. package/dist/node_modules/lucide-react/dist/esm/icons/circle-question-mark.js +21 -0
  705. package/dist/node_modules/lucide-react/dist/esm/icons/circle-question-mark.js.map +1 -0
  706. package/dist/node_modules/lucide-react/dist/esm/icons/shrink.cjs +2 -0
  707. package/dist/node_modules/lucide-react/dist/esm/icons/shrink.cjs.map +1 -0
  708. package/dist/node_modules/lucide-react/dist/esm/icons/shrink.js +23 -0
  709. package/dist/node_modules/lucide-react/dist/esm/icons/shrink.js.map +1 -0
  710. package/dist/node_modules/lucide-react/dist/esm/icons/sliders-horizontal.cjs +2 -0
  711. package/dist/node_modules/lucide-react/dist/esm/icons/sliders-horizontal.cjs.map +1 -0
  712. package/dist/node_modules/lucide-react/dist/esm/icons/sliders-horizontal.js +43 -0
  713. package/dist/node_modules/lucide-react/dist/esm/icons/sliders-horizontal.js.map +1 -0
  714. package/dist/node_modules/lucide-react/dist/esm/icons/tags.cjs +2 -0
  715. package/dist/node_modules/lucide-react/dist/esm/icons/tags.cjs.map +1 -0
  716. package/dist/node_modules/lucide-react/dist/esm/icons/tags.js +22 -0
  717. package/dist/node_modules/lucide-react/dist/esm/icons/tags.js.map +1 -0
  718. package/dist/package.cjs +1 -1
  719. package/dist/package.cjs.map +1 -1
  720. package/dist/package.js +4 -4
  721. package/dist/package.js.map +1 -1
  722. package/dist/routes/agent-settings.d.ts +2 -0
  723. package/dist/routes/app-settings.cjs +1 -1
  724. package/dist/routes/app-settings.js +5 -5
  725. package/dist/routes/llm-settings.cjs +1 -1
  726. package/dist/routes/llm-settings.cjs.map +1 -1
  727. package/dist/routes/llm-settings.d.ts +3 -1
  728. package/dist/routes/llm-settings.js +88 -87
  729. package/dist/routes/llm-settings.js.map +1 -1
  730. package/dist/routes/planner-tab.cjs +1 -1
  731. package/dist/routes/planner-tab.cjs.map +1 -1
  732. package/dist/routes/planner-tab.js +44 -28
  733. package/dist/routes/planner-tab.js.map +1 -1
  734. package/dist/services/telemetry.cjs +1 -1
  735. package/dist/services/telemetry.cjs.map +1 -1
  736. package/dist/services/telemetry.d.ts +5 -0
  737. package/dist/services/telemetry.js +122 -115
  738. package/dist/services/telemetry.js.map +1 -1
  739. package/dist/stores/conversation-panel-preferences-store.cjs +1 -1
  740. package/dist/stores/conversation-panel-preferences-store.cjs.map +1 -1
  741. package/dist/stores/conversation-panel-preferences-store.d.ts +32 -5
  742. package/dist/stores/conversation-panel-preferences-store.js +29 -12
  743. package/dist/stores/conversation-panel-preferences-store.js.map +1 -1
  744. package/dist/stores/conversation-state-store.cjs +1 -1
  745. package/dist/stores/conversation-state-store.cjs.map +1 -1
  746. package/dist/stores/conversation-state-store.d.ts +9 -3
  747. package/dist/stores/conversation-state-store.js +6 -3
  748. package/dist/stores/conversation-state-store.js.map +1 -1
  749. package/dist/stores/conversation-store.cjs +1 -1
  750. package/dist/stores/conversation-store.cjs.map +1 -1
  751. package/dist/stores/conversation-store.d.ts +2 -0
  752. package/dist/stores/conversation-store.js +3 -0
  753. package/dist/stores/conversation-store.js.map +1 -1
  754. package/dist/stores/model-store.cjs +1 -1
  755. package/dist/stores/model-store.cjs.map +1 -1
  756. package/dist/stores/model-store.d.ts +7 -0
  757. package/dist/stores/model-store.js +4 -0
  758. package/dist/stores/model-store.js.map +1 -1
  759. package/dist/types/automation.cjs.map +1 -1
  760. package/dist/types/automation.d.ts +46 -1
  761. package/dist/types/automation.js.map +1 -1
  762. package/dist/ui/context-menu.d.ts +1 -1
  763. package/dist/ui/toggle-switch.cjs +1 -1
  764. package/dist/ui/toggle-switch.cjs.map +1 -1
  765. package/dist/ui/toggle-switch.d.ts +4 -1
  766. package/dist/ui/toggle-switch.js +4 -3
  767. package/dist/ui/toggle-switch.js.map +1 -1
  768. package/dist/utils/automation-catalog.cjs +1 -1
  769. package/dist/utils/automation-catalog.cjs.map +1 -1
  770. package/dist/utils/automation-catalog.d.ts +12 -1
  771. package/dist/utils/automation-catalog.js +42 -12
  772. package/dist/utils/automation-catalog.js.map +1 -1
  773. package/dist/utils/automation-run-display.cjs +2 -0
  774. package/dist/utils/automation-run-display.cjs.map +1 -0
  775. package/dist/utils/automation-run-display.d.ts +20 -0
  776. package/dist/utils/automation-run-display.js +85 -0
  777. package/dist/utils/automation-run-display.js.map +1 -0
  778. package/dist/utils/automation-schedule.cjs +1 -1
  779. package/dist/utils/automation-schedule.cjs.map +1 -1
  780. package/dist/utils/automation-schedule.d.ts +16 -0
  781. package/dist/utils/automation-schedule.js +2 -0
  782. package/dist/utils/automation-schedule.js.map +1 -1
  783. package/dist/utils/constants.cjs +1 -1
  784. package/dist/utils/constants.cjs.map +1 -1
  785. package/dist/utils/constants.d.ts +4 -0
  786. package/dist/utils/constants.js +23 -3
  787. package/dist/utils/constants.js.map +1 -1
  788. package/dist/utils/format-event-timestamp.cjs +2 -0
  789. package/dist/utils/format-event-timestamp.cjs.map +1 -0
  790. package/dist/utils/format-event-timestamp.d.ts +1 -0
  791. package/dist/utils/format-event-timestamp.js +13 -0
  792. package/dist/utils/format-event-timestamp.js.map +1 -0
  793. package/dist/utils/git-diff-stats.cjs +2 -2
  794. package/dist/utils/git-diff-stats.cjs.map +1 -1
  795. package/dist/utils/git-diff-stats.d.ts +4 -0
  796. package/dist/utils/git-diff-stats.js +12 -2
  797. package/dist/utils/git-diff-stats.js.map +1 -1
  798. package/dist/utils/plan-file.cjs +4 -0
  799. package/dist/utils/plan-file.cjs.map +1 -0
  800. package/dist/utils/plan-file.d.ts +18 -0
  801. package/dist/utils/plan-file.js +58 -0
  802. package/dist/utils/plan-file.js.map +1 -0
  803. package/dist/utils/recommended-automation-rail.cjs +1 -1
  804. package/dist/utils/recommended-automation-rail.cjs.map +1 -1
  805. package/dist/utils/recommended-automation-rail.js +1 -0
  806. package/dist/utils/recommended-automation-rail.js.map +1 -1
  807. package/dist/utils/scroll-fade-state.cjs +1 -1
  808. package/dist/utils/scroll-fade-state.cjs.map +1 -1
  809. package/dist/utils/scroll-fade-state.d.ts +6 -0
  810. package/dist/utils/scroll-fade-state.js +8 -1
  811. package/dist/utils/scroll-fade-state.js.map +1 -1
  812. package/dist/utils/sdk-settings-schema.cjs +1 -1
  813. package/dist/utils/sdk-settings-schema.cjs.map +1 -1
  814. package/dist/utils/sdk-settings-schema.d.ts +1 -0
  815. package/dist/utils/sdk-settings-schema.js +25 -22
  816. package/dist/utils/sdk-settings-schema.js.map +1 -1
  817. package/dist/utils/utils.cjs +1 -1
  818. package/dist/utils/utils.cjs.map +1 -1
  819. package/dist/utils/utils.js +11 -11
  820. package/dist/utils/utils.js.map +1 -1
  821. package/package.json +4 -4
  822. package/scripts/check-sdk-version-sync.mjs +6 -6
  823. package/scripts/dev-safe.mjs +1 -1
  824. package/scripts/dev-with-automation.mjs +1 -1
  825. package/scripts/static-server.mjs +33 -1
  826. package/build/assets/active-backend-context-CrHTlgvN.js +0 -2
  827. package/build/assets/agent-profiles-settings-Dzgb7G9z.js +0 -1
  828. package/build/assets/agent-server-conversation-service.api-tnqNjbpE.js +0 -86
  829. package/build/assets/agent-settings-DLtsqaOs.js +0 -2
  830. package/build/assets/agent-settings-fFvR-XC2.js +0 -1
  831. package/build/assets/api-key-entry-screen-qTzrmJcr.js +0 -1
  832. package/build/assets/automation-detail-BmwlCUAB.js +0 -3
  833. package/build/assets/automation-git-sync-CprN5DcU.js +0 -1
  834. package/build/assets/automation-setup-route-C40kXjMY.js +0 -1
  835. package/build/assets/automations-list-DuNcRawl.js +0 -1
  836. package/build/assets/backend-form-modal-lhGwzXFI.js +0 -1
  837. package/build/assets/bot-dMYHVfYM.js +0 -1
  838. package/build/assets/canvas-extensions-8A-XhpgP.js +0 -1
  839. package/build/assets/check-CS0vmpQQ.js +0 -1
  840. package/build/assets/chevron-down-e1QBpjVy.js +0 -1
  841. package/build/assets/chevron-right-ZG4R5G4Q.js +0 -1
  842. package/build/assets/circle-check-DzWLNsbE.js +0 -1
  843. package/build/assets/command-menu--UIlGL72.js +0 -1
  844. package/build/assets/commits-tab-AnZwLvh-.js +0 -1
  845. package/build/assets/confirmation-modal-Dv1ktp8K.js +0 -1
  846. package/build/assets/conversation-BbGrAO4Z.js +0 -93
  847. package/build/assets/conversation-mYT6NAoj.js +0 -1
  848. package/build/assets/conversation-panel-mYT6NAoj.js +0 -1
  849. package/build/assets/edit-automation-modal-DadGbJ2u.js +0 -1
  850. package/build/assets/empty-state-BoGVDecT.js +0 -1
  851. package/build/assets/enum-filter-dropdown-Bgca129f.js +0 -1
  852. package/build/assets/extensions-hub-CcDqq_vR.js +0 -1
  853. package/build/assets/extensions-navigation-Cr4yzYk4.js +0 -1
  854. package/build/assets/external-link-DKUlnCQV.js +0 -1
  855. package/build/assets/files-tab-D4o2VyE_.js +0 -1
  856. package/build/assets/get-git-path-ChKDVHZp.js +0 -1
  857. package/build/assets/git-repo-dropdown-BkqzkMmM.js +0 -1
  858. package/build/assets/home-ChpSuepX.js +0 -1
  859. package/build/assets/home-DIsB440S.js +0 -1
  860. package/build/assets/home-automation-run-tooltip-BVNDWjAH.js +0 -1
  861. package/build/assets/home-store-CY9Ej0ux.js +0 -1
  862. package/build/assets/index-home-BdlrFIif.js +0 -1
  863. package/build/assets/info-B6RQawoW.js +0 -1
  864. package/build/assets/install-server-modal-Dpy89p4g.js +0 -1
  865. package/build/assets/kebab-menu-item-content-D8hSNGmm.js +0 -1
  866. package/build/assets/list-filter-DsEK7NFC.js +0 -1
  867. package/build/assets/llm-not-configured-banner-CIFABh3K.js +0 -27
  868. package/build/assets/llm-settings-B9juXhIa.js +0 -1
  869. package/build/assets/llm-settings-De1d5dfr.js +0 -1
  870. package/build/assets/llm-subscription-service-BpJ0ouQo.js +0 -1
  871. package/build/assets/loader-circle-CC1au6hc.js +0 -1
  872. package/build/assets/manage-backends-modal-BrPV3oB-.js +0 -1
  873. package/build/assets/manifest-80fb1c29.js +0 -1
  874. package/build/assets/markdown-renderer-BzTlxI8x.js +0 -8
  875. package/build/assets/mcp-page-BEBYqH_K.js +0 -9
  876. package/build/assets/messages-DKV9cRc2.js +0 -41
  877. package/build/assets/onboarding-DV_OXoeP.js +0 -1
  878. package/build/assets/onboarding-modal-rkyBYkeQ.js +0 -1
  879. package/build/assets/organization-service.api-DrYNkEN_.js +0 -1
  880. package/build/assets/pencil-47jAZH_V.js +0 -1
  881. package/build/assets/pin-By41Vl5J.js +0 -1
  882. package/build/assets/planner-tab-C9uZmhme.js +0 -1
  883. package/build/assets/plug-CG5HFcNG.js +0 -1
  884. package/build/assets/plugins-management-service-BMJgC3Ga.js +0 -1
  885. package/build/assets/plus-C7Slq-0I.js +0 -1
  886. package/build/assets/profiles-service.api-ChoKrL0l.js +0 -1
  887. package/build/assets/proxy-9Fe1v5na.js +0 -1
  888. package/build/assets/recommended-automations-launcher-6ABrI9Cy.js +0 -1
  889. package/build/assets/refresh-cw-3q3Frrii.js +0 -1
  890. package/build/assets/root-Dc8YmC9F.js +0 -2
  891. package/build/assets/root-VDaypvK4.css +0 -1
  892. package/build/assets/root-layout-CXkhSPYh.js +0 -2
  893. package/build/assets/schema-field-D-y9-LDb.js +0 -1
  894. package/build/assets/scroll-fade-state-Dw-i4SGq.js +0 -1
  895. package/build/assets/sdk-section-page-BlFiizlG.js +0 -1
  896. package/build/assets/secret-form-BB7the8W.js +0 -1
  897. package/build/assets/secrets-service-ByZVENbp.js +0 -1
  898. package/build/assets/settings-C0EWuBtA.js +0 -1
  899. package/build/assets/settings-index-5w5UW2K3.js +0 -1
  900. package/build/assets/settings-service.api-DJ1r62Zr.js +0 -1
  901. package/build/assets/shared-conversation-CA5ISEDy.js +0 -1
  902. package/build/assets/shield-check-D2aCRd16.js +0 -1
  903. package/build/assets/sidebar-mobile-menu-toggle-C_fb0Jki.js +0 -1
  904. package/build/assets/skill-scope-B42H-XOc.js +0 -1
  905. package/build/assets/skills-plugins-tgF8EiXC.js +0 -1
  906. package/build/assets/skills-settings-BgJ9PaOe.js +0 -1
  907. package/build/assets/styled-tooltip-C4jf5Fv9.js +0 -1
  908. package/build/assets/toggle-switch-ChOLXv2n.js +0 -1
  909. package/build/assets/trash-2-D7K26eDO.js +0 -1
  910. package/build/assets/trash-D-HYiVYM.js +0 -1
  911. package/build/assets/triangle-alert-CtdXWHUI.js +0 -1
  912. package/build/assets/usage-tab-CVDffLPt.js +0 -1
  913. package/build/assets/use-acp-credential-form-XIQmpX6M.js +0 -1
  914. package/build/assets/use-activate-agent-profile-BLfmvDiG.js +0 -1
  915. package/build/assets/use-agent-profiles-Bd9Bvvp1.js +0 -1
  916. package/build/assets/use-canvas-extensions-Bi693ujJ.js +0 -1
  917. package/build/assets/use-config-A9QovgXO.js +0 -1
  918. package/build/assets/use-create-conversation-Dx3l7mFZ.js +0 -1
  919. package/build/assets/use-create-secret-B9cUFWRG.js +0 -1
  920. package/build/assets/use-has-permission-B3C8rQmR.js +0 -1
  921. package/build/assets/use-is-authed-nTBcM7dE.js +0 -1
  922. package/build/assets/use-llm-configured-BV9nZ1_j.js +0 -1
  923. package/build/assets/use-llm-profiles-BO-P4Oyo.js +0 -1
  924. package/build/assets/use-manifest-capabilities-Cw_flwEz.js +0 -1
  925. package/build/assets/use-onboarding-completion-D8U7k4Qb.js +0 -1
  926. package/build/assets/use-pinned-home-route-CckOZrmb.js +0 -1
  927. package/build/assets/use-plugins-marketplace-7i94Zu3Z.js +0 -1
  928. package/build/assets/use-save-agent-profile-BUjSsDXK.js +0 -1
  929. package/build/assets/use-settings-DSXLbvBl.js +0 -1
  930. package/build/assets/use-settings-nav-items-CwRw-CmX.js +0 -16
  931. package/build/assets/use-tracking-D53y3TH9.js +0 -3
  932. package/build/assets/utils-CN5ZfZy1.js +0 -1
  933. package/build/assets/vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~czjee3a3-DqZDXfg2.js +0 -186
  934. package/build/assets/vendor~root-layout-C9Ju9DQg.js +0 -1
  935. package/build/assets/vendor~root-layout~index-home~home~conversation-panel~conversation~mcp~automations-list~aut~ibfbmr9f-cDuKr-WD.js +0 -1
  936. package/build/assets/vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~extensions-h~iyia17eu-Chf7vmKB.js +0 -1
  937. package/build/assets/x-DJdhbdmt.js +0 -1
  938. package/dist/components/features/conversation-panel/conversation-panel-filter-menu.cjs +0 -2
  939. package/dist/components/features/conversation-panel/conversation-panel-filter-menu.cjs.map +0 -1
  940. package/dist/components/features/conversation-panel/conversation-panel-filter-menu.d.ts +0 -35
  941. package/dist/components/features/conversation-panel/conversation-panel-filter-menu.js +0 -247
  942. package/dist/components/features/conversation-panel/conversation-panel-filter-menu.js.map +0 -1
  943. package/dist/hooks/query/use-skills.cjs +0 -2
  944. package/dist/hooks/query/use-skills.cjs.map +0 -1
  945. package/dist/hooks/query/use-skills.d.ts +0 -7
  946. package/dist/hooks/query/use-skills.js +0 -13
  947. package/dist/hooks/query/use-skills.js.map +0 -1
  948. package/dist/hooks/use-has-permission.cjs +0 -2
  949. package/dist/hooks/use-has-permission.cjs.map +0 -1
  950. package/dist/hooks/use-has-permission.d.ts +0 -1
  951. package/dist/hooks/use-has-permission.js +0 -8
  952. package/dist/hooks/use-has-permission.js.map +0 -1
  953. package/dist/node_modules/lucide-react/dist/esm/icons/eye.cjs +0 -2
  954. package/dist/node_modules/lucide-react/dist/esm/icons/eye.cjs.map +0 -1
  955. package/dist/node_modules/lucide-react/dist/esm/icons/eye.js +0 -14
  956. package/dist/node_modules/lucide-react/dist/esm/icons/eye.js.map +0 -1
@@ -797,7 +797,9 @@
797
797
  "AUTOMATIONS$ERROR_TIMEOUT_INVALID_NUMBER": "Таймаут повинен бути дійсним числом",
798
798
  "AUTOMATIONS$ERROR_TIMEOUT_POSITIVE": "Таймаут повинен бути позитивним",
799
799
  "AUTOMATIONS$ERROR_TIMEOUT_MAX_EXCEEDED": "Таймаут не може перевищувати {{max}} секунд",
800
- "AUTOMATIONS$CUSTOM_SCHEDULE_HINT": "Ця автоматизація використовує власний розклад. Редагування частоти вимкнено, щоб не пошкодити її.",
800
+ "AUTOMATIONS$CRON_EXPRESSION": "Вираз cron",
801
+ "AUTOMATIONS$ERROR_CRON_INVALID": "Введіть коректний вираз cron",
802
+ "AUTOMATIONS$ERROR_CRON_UNREACHABLE": "Цей вираз cron ніколи не виконається",
801
803
  "AUTOMATIONS$EDIT_SUCCESS": "Автоматизацію оновлено",
802
804
  "AUTOMATIONS$EDIT_ERROR": "Не вдалося оновити автоматизацію",
803
805
  "AUTOMATIONS$RUN_NOW_SUCCESS": "Автоматизацію запущено",
@@ -817,6 +819,18 @@
817
819
  "AUTOMATIONS$DETAIL$RUNNING": "Виконується",
818
820
  "AUTOMATIONS$DETAIL$CANCELLED": "Скасовано",
819
821
  "AUTOMATIONS$DETAIL$SKIPPED": "Пропущено",
822
+ "AUTOMATIONS$DETAIL$BLOCKED": "Заблоковано",
823
+ "AUTOMATIONS$DETAIL$PARTIAL": "Частково",
824
+ "AUTOMATIONS$DETAIL$NEEDS_REVIEW": "Потребує перевірки",
825
+ "AUTOMATIONS$DETAIL$RUN_LABEL": "Запуск",
826
+ "AUTOMATIONS$DETAIL$TASK_LABEL": "Завдання",
827
+ "AUTOMATIONS$DETAIL$SYSTEM_LABEL": "Система",
828
+ "AUTOMATIONS$DETAIL$NO_TASK_OUTCOME": "Результат завдання не повідомлено.",
829
+ "AUTOMATIONS$DETAIL$NO_SYSTEM_ISSUES": "Системних проблем не повідомлено.",
830
+ "AUTOMATIONS$DETAIL$STATUS_DETAIL": "Деталі статусу",
831
+ "AUTOMATIONS$DETAIL$TASK_METADATA": "Метадані завдання",
832
+ "AUTOMATIONS$DETAIL$CUSTOM_TASK_METADATA": "Повідомлено користувацькі метадані завдання.",
833
+ "AUTOMATIONS$DETAIL$VIEW_CONVERSATION_FOR_RUN": "Переглянути розмову для запуску о {{timestamp}}",
820
834
  "AUTOMATIONS$DETAIL$PHASE": "Етап",
821
835
  "AUTOMATIONS$DETAIL$PHASE_QUEUED": "У черзі",
822
836
  "AUTOMATIONS$DETAIL$PHASE_SANDBOX_PROVISIONING": "Налаштування пісочниці",
@@ -1034,27 +1048,48 @@
1034
1048
  "CONVERSATION_PANEL$ORGANIZE": "Упорядкувати",
1035
1049
  "CONVERSATION_PANEL$BY_WORKSPACE": "За робочим простором",
1036
1050
  "CONVERSATION_PANEL$BY_REPOSITORY": "За репозиторієм",
1037
- "CONVERSATION_PANEL$CHRONOLOGICAL": "Хронологічний список",
1051
+ "CONVERSATION_PANEL$CHRONOLOGICAL": "За датою",
1052
+ "CONVERSATION_PANEL$CLEAR_FILTERS": "Очистити все",
1038
1053
  "CONVERSATION_PANEL$SORT_BY": "Сортувати за",
1039
1054
  "CONVERSATION_PANEL$SORT_CREATED": "Створено",
1040
1055
  "CONVERSATION_PANEL$SORT_UPDATED": "Оновлено",
1041
1056
  "CONVERSATION_PANEL$OLDER_SECTION": "Старі розмови",
1042
1057
  "CONVERSATION_PANEL$OLDER_OVER_ONE_HOUR": "Понад 1 годину",
1043
- "CONVERSATION_PANEL$SHOW": "Показати",
1058
+ "CONVERSATION_PANEL$OLDER_OVER_ONE_DAY": "Понад 1 день",
1059
+ "CONVERSATION_PANEL$OLDER_OVER_ONE_WEEK": "Понад 1 тиждень",
1060
+ "CONVERSATION_PANEL$OLDER_OVER_THIRTY_DAYS": "Понад 30 днів",
1061
+ "CONVERSATION_PANEL$HIDE_CONVERSATIONS": "Приховати старі розмови",
1062
+ "CONVERSATION_PANEL$OLDER_CUTOFF_LABEL": "Приховати розмови старіші за",
1063
+ "CONVERSATION_PANEL$SHOW": "Додатково",
1064
+ "CONVERSATION_PANEL$THREADS": "Потоки",
1044
1065
  "CONVERSATION_PANEL$ALL_THREADS": "Усі потоки",
1045
- "CONVERSATION_PANEL$RELEVANT_THREADS": "Релевантні (активні)",
1066
+ "CONVERSATION_PANEL$RELEVANT_THREADS": "Лише активні",
1046
1067
  "CONVERSATION_PANEL$SHOW_ARCHIVED": "Показати архівовані",
1047
1068
  "CONVERSATION_PANEL$METADATA": "Метадані",
1048
1069
  "CONVERSATION_PANEL$LLM_MODEL": "Агент / модель",
1049
1070
  "CONVERSATION_PANEL$REPO_BRANCH": "Репозиторій і гілка",
1050
1071
  "CONVERSATION_PANEL$TAGS": "Теги",
1072
+ "CONVERSATION_PANEL$SHOW_TAGS": "Показати {{count}} тегів",
1073
+ "CONVERSATION_PANEL$HIDE_TAGS": "Сховати теги",
1074
+ "CONVERSATION_PANEL$TAG_CHIPS": "Показати теги",
1075
+ "CONVERSATION_PANEL$LAYOUTS_HEADING": "Вигляд",
1076
+ "CONVERSATION_PANEL$LAYOUT_RECENT_ACTIVITY": "Нещодавні",
1077
+ "CONVERSATION_PANEL$LAYOUT_FOCUSED": "Активний",
1078
+ "CONVERSATION_PANEL$LAYOUT_MINIMAL": "Компактно",
1079
+ "CONVERSATION_PANEL$TAG_FILTERS": "Фільтрувати за тегами",
1080
+ "CONVERSATION_PANEL$NO_VISIBLE_TAGS": "Тегів ще немає",
1081
+ "CONVERSATION_PANEL$ADVANCED_OPTIONS": "Інші параметри",
1082
+ "CONVERSATION_PANEL$ADVANCED_OPTIONS_CUSTOM": "Користувацький",
1083
+ "CONVERSATION_PANEL$ADVANCED_OPTIONS_DESCRIPTION": "Оберіть, як групувати розмови та що показувати в кожному рядку. Зміни зберігаються автоматично.",
1084
+ "CONVERSATION_PANEL$SHOW_OLDER_CONVERSATIONS": "Показати старіші розмови",
1051
1085
  "CONVERSATION_PANEL$AUTOMATIONS": "Автоматизації",
1052
- "CONVERSATION_PANEL$AUTOMATIONS_ALL": "Усі розмови",
1086
+ "CONVERSATION_PANEL$AUTOMATIONS_ALL": "Показані з усіма",
1053
1087
  "CONVERSATION_PANEL$AUTOMATIONS_HIDE": "Приховати запуски автоматизацій",
1054
1088
  "CONVERSATION_PANEL$AUTOMATIONS_ONLY": "Лише запуски автоматизацій",
1055
1089
  "CONVERSATION_PANEL$AUTOMATION_UNNAMED": "Автоматизація без назви",
1056
1090
  "CONVERSATION_PANEL$NO_AUTOMATION_MATCHES": "Немає розмов, що відповідають фільтру автоматизацій",
1057
- "CONVERSATION_PANEL$HOVER_METADATA": "Метадані при наведенні",
1091
+ "CONVERSATION_PANEL$NO_TAG_MATCHES": "Немає розмов, що відповідають фільтру тегів",
1092
+ "CONVERSATION_PANEL$HOVER_METADATA": "Подробиці при наведенні",
1058
1093
  "CONVERSATION_PANEL$NO_WORKSPACE": "Немає робочого простору",
1059
1094
  "CONVERSATION_PANEL$NO_REPOSITORY": "Немає репозиторію",
1060
1095
  "CONVERSATION_PANEL$NEW_THREAD_FOLDER_ARIA": "Створити папку тредів — оберіть робочий простір або репозиторій",
@@ -1220,7 +1255,7 @@
1220
1255
  "SETTINGS$FAILED_TO_SAVE_EMAIL": "Не вдалося зберегти електронну пошту",
1221
1256
  "SETTINGS$SENDING": "Надсилання",
1222
1257
  "SETTINGS$VERIFICATION_EMAIL_SENT": "Лист підтвердження надіслано",
1223
- "SETTINGS$EMAIL_VERIFICATION_REQUIRED": "Ви повинні підтвердити свою електронну адресу перед використанням All Hands",
1258
+ "SETTINGS$EMAIL_VERIFICATION_REQUIRED": "Ви повинні підтвердити свою електронну адресу перед використанням OpenHands",
1224
1259
  "SETTINGS$INVALID_EMAIL_FORMAT": "Будь ласка, введіть дійсну електронну адресу",
1225
1260
  "SETTINGS$EMAIL_VERIFICATION_RESTRICTION_MESSAGE": "Ваш доступ обмежений, доки ваша електронна пошта не буде підтверджена. Ви можете отримати доступ лише до цієї сторінки налаштувань.",
1226
1261
  "SETTINGS$RESEND_VERIFICATION": "Надіслати підтвердження повторно",
@@ -1286,7 +1321,7 @@
1286
1321
  "API$TVLY_KEY_EXAMPLE": "tvly-...",
1287
1322
  "SECRETS$CONNECT_GIT_PROVIDER": "Підключити провайдера Git для управління секретами",
1288
1323
  "SETTINGS$OPENHANDS_API_KEYS": "API-ключі OpenHands",
1289
- "CONVERSATION$BUDGET_USAGE_FORMAT": "${currentCost} / ${maxBudget} ({usagePercentage}% {used})",
1324
+ "CONVERSATION$BUDGET_USAGE_FORMAT": "{{currentCost}} / {{maxBudget}} ({{usagePercentage}}% {{used}})",
1290
1325
  "CONVERSATION$CACHE_HIT": "Кеш-хіт",
1291
1326
  "CONVERSATION$CACHE_WRITE": "Запис у кеш",
1292
1327
  "BUTTON$CONFIRM": "Підтвердити",
@@ -1880,7 +1915,8 @@
1880
1915
  "THINKING$COLLAPSE": "Згорнути мислення",
1881
1916
  "MCP$LIBRARY_TITLE": "Бібліотека",
1882
1917
  "NAV$CUSTOMIZE": "Налаштувати",
1883
- "NAV$EXTENSIONS": "Розширення",
1918
+ "NAV$EXTENSIONS": "Застосунки",
1919
+ "SETTINGS$APPS_PAGE_TITLE": "Застосунки для Agent Canvas",
1884
1920
  "NAV$COMING_SOON": "Незабаром",
1885
1921
  "SETTINGS$PLUGINS_TITLE": "Плагіни",
1886
1922
  "SETTINGS$PLUGINS_DESCRIPTION": "Параметри конфігурації плагінів з'являться тут.",
@@ -1907,17 +1943,21 @@
1907
1943
  "SETTINGS$PLUGINS_UNINSTALL_SUCCESS": "Плагін видалено.",
1908
1944
  "SETTINGS$PLUGINS_REFRESH_SUCCESS": "Плагін оновлено.",
1909
1945
  "SETTINGS$PLUGINS_SKILLS_IN_BUNDLE": "Навички в цьому пакеті плагіна",
1910
- "SETTINGS$CANVAS_EXTENSIONS_PAGE_DESCRIPTION": "Установлюйте довірений інтерфейс, що працює всередині Canvas для цього бекенда. Установлені розширення залишаються вимкненими, доки ви не ввімкнете їх тут.",
1911
- "SETTINGS$CANVAS_EXTENSIONS_ADD_BUTTON": "Додати розширення",
1912
- "SETTINGS$CANVAS_EXTENSIONS_EMPTY": "На цьому бекенді не встановлено жодного розширення Canvas.",
1913
- "SETTINGS$CANVAS_EXTENSIONS_TRUST_NOTICE": "Увімкнені розширення є довіреним кодом із повним доступом до цього сеансу Canvas.",
1914
- "SETTINGS$CANVAS_EXTENSIONS_ADD_MODAL_INTRO": "Установіть із джерела Git або шляху на активному Agent Server. Розширення буде встановлено вимкненим.",
1915
- "SETTINGS$CANVAS_EXTENSIONS_INSTALL_SUCCESS": "Розширення встановлено. Перегляньте його тут і ввімкніть, коли будете готові.",
1916
- "SETTINGS$CANVAS_EXTENSIONS_UNINSTALL_SUCCESS": "Розширення видалено.",
1917
- "SETTINGS$CANVAS_EXTENSIONS_ENABLE_CONFIRM": "Увімкнені розширення є довіреним кодом із повним доступом до цього сеансу Canvas. Увімкнути {{name}}?",
1918
- "SETTINGS$CANVAS_EXTENSIONS_UNINSTALL_CONFIRM": "Видалити {{name}} із цього бекенда?",
1919
- "SETTINGS$CANVAS_EXTENSIONS_PAGES": "Сторінки",
1920
- "SETTINGS$CANVAS_EXTENSIONS_PAGE_UNAVAILABLE": "Це розширення вимкнене, відсутнє або не надає цю сторінку.",
1946
+ "SETTINGS$APPS_PAGE_DESCRIPTION": "Застосунки створюються за допомогою Canvas Extensions API",
1947
+ "SETTINGS$APPS_BUILD_LINK": "Створити застосунок",
1948
+ "SETTINGS$APPS_ADD_BUTTON": "Додати застосунок",
1949
+ "SETTINGS$APPS_INSTALLED": "Встановлені застосунки",
1950
+ "SETTINGS$APPS_SOURCE_LABEL": "Джерело застосунку",
1951
+ "SETTINGS$APPS_EMPTY": "На цьому бекенді не встановлено жодного застосунку.",
1952
+ "SETTINGS$APPS_TRUST_NOTICE": "Цей застосунок запускає довірений JavaScript в Agent Canvas і може надсилати автентифіковані запити до активного Agent Server. Перевірте його джерело та ревізію перед увімкненням.",
1953
+ "SETTINGS$APPS_ENABLE_ACTION": "Увімкнути довірений застосунок",
1954
+ "SETTINGS$APPS_ADD_MODAL_INTRO": "Встановіть із джерела Git або шляху на активному Agent Server. Застосунок буде встановлено вимкненим.",
1955
+ "SETTINGS$APPS_INSTALL_SUCCESS": "Застосунок встановлено. Перевірте його тут і ввімкніть, коли будете готові.",
1956
+ "SETTINGS$APPS_UNINSTALL_SUCCESS": "Застосунок видалено.",
1957
+ "SETTINGS$APPS_ENABLE_CONFIRM": "Цей застосунок запускає довірений JavaScript в Agent Canvas і може надсилати автентифіковані запити до активного Agent Server. Перевірте його джерело та ревізію перед увімкненням.",
1958
+ "SETTINGS$APPS_UNINSTALL_CONFIRM": "Видалити {{name}} із цього бекенду?",
1959
+ "SETTINGS$APPS_PAGES": "Сторінки",
1960
+ "SETTINGS$APPS_PAGE_UNAVAILABLE": "Цей застосунок вимкнено, він відсутній або не надає цю сторінку.",
1921
1961
  "SETTINGS$SKILLS_PAGE_DESCRIPTION": "Відкривайте навички для додавання до вашого робочого простору. Відкрийте картку для запитів, curl та процесів встановлення. Шукайте на бічній панелі, щоб фільтрувати список. Увімкніть або вимкніть навички за замовчуванням. Вимкнені навички не завантажуватимуться в контекст агента.",
1922
1962
  "SETTINGS$SKILLS_ADD_BUTTON": "Додати навичку",
1923
1963
  "SETTINGS$SKILLS_USE_SKILL_BUTTON": "Використати навичку",
@@ -2161,6 +2201,9 @@
2161
2201
  "SETUP$VALIDATION_INVALID_OPTION": "Виберіть один із доступних варіантів.",
2162
2202
  "SETUP$VALIDATION_UNSAFE_VALUE": "Лапки та зворотні скісні риски заборонені.",
2163
2203
  "SETUP$REVIEW_TITLE": "Перевірка",
2204
+ "SETUP$ACTION_LABEL": "Дія",
2205
+ "SETUP$TRIGGER_LABEL": "Тригер",
2206
+ "SETUP$TRIGGER_HELP": "Виберіть, чи автоматизація запускатиметься за розкладом, чи коли надходить подія.",
2164
2207
  "SETUP$CONFIRM": "Підтвердити та створити",
2165
2208
  "SETUP$FALLBACK_CONVERSATION": "Налаштувати в розмові",
2166
2209
  "SETUP$EMPTY_VALUE": "Не задано",
@@ -2267,6 +2310,16 @@
2267
2310
  "CHAT_INTERFACE$CONTEXT_WINDOW_METER_LABEL": "Використання вікна контексту",
2268
2311
  "CHAT_INTERFACE$SHOW_CONTEXT": "Показати контекст",
2269
2312
  "CONVERSATION$TAGS_OVERFLOW_ARIA": "Показати ще {{count}} тегів",
2313
+ "CONVERSATION$EDIT_TAGS": "Редагувати теги",
2314
+ "CONVERSATION$EDIT_TAGS_DESCRIPTION": "Додайте або видаліть теги цієї розмови.",
2315
+ "CONVERSATION$TAG_KEY_PLACEHOLDER": "Назва",
2316
+ "CONVERSATION$TAG_VALUE_PLACEHOLDER": "Значення (необов'язково)",
2317
+ "CONVERSATION$REMOVE_TAG": "Видалити тег",
2318
+ "CONVERSATION$TAG_KEY_INVALID": "Назви тегів можуть містити лише малі літери та цифри",
2319
+ "CONVERSATION$TAG_KEY_RESERVED": "Цю назву тегу зарезервовано",
2320
+ "CONVERSATION$TAG_KEY_DUPLICATE": "Цю назву тегу вже використано",
2321
+ "CONVERSATION$TAG_VALUE_INVALID": "Значення тегів мають містити не більше 256 символів",
2322
+ "CONVERSATION$TAGS_UPDATED": "Теги оновлено",
2270
2323
  "CONVERSATION_PANEL$PREVIEW_GIT": "Git",
2271
2324
  "CONVERSATION_PANEL$PREVIEW_REPO": "Репо",
2272
2325
  "CONVERSATION_PANEL$PREVIEW_BRANCH": "Гілка",
@@ -797,7 +797,9 @@
797
797
  "AUTOMATIONS$ERROR_TIMEOUT_INVALID_NUMBER": "超时必须是有效数字",
798
798
  "AUTOMATIONS$ERROR_TIMEOUT_POSITIVE": "超时必须为正数",
799
799
  "AUTOMATIONS$ERROR_TIMEOUT_MAX_EXCEEDED": "超时不能超过{{max}}秒",
800
- "AUTOMATIONS$CUSTOM_SCHEDULE_HINT": "此自动化使用自定义计划。已禁用频率编辑以避免破坏它。",
800
+ "AUTOMATIONS$CRON_EXPRESSION": "Cron 表达式",
801
+ "AUTOMATIONS$ERROR_CRON_INVALID": "请输入有效的 cron 表达式",
802
+ "AUTOMATIONS$ERROR_CRON_UNREACHABLE": "此 cron 表达式永远不会运行",
801
803
  "AUTOMATIONS$EDIT_SUCCESS": "自动化已更新",
802
804
  "AUTOMATIONS$EDIT_ERROR": "无法更新自动化",
803
805
  "AUTOMATIONS$RUN_NOW_SUCCESS": "自动化已触发",
@@ -817,6 +819,18 @@
817
819
  "AUTOMATIONS$DETAIL$RUNNING": "运行中",
818
820
  "AUTOMATIONS$DETAIL$CANCELLED": "已取消",
819
821
  "AUTOMATIONS$DETAIL$SKIPPED": "已跳过",
822
+ "AUTOMATIONS$DETAIL$BLOCKED": "受阻",
823
+ "AUTOMATIONS$DETAIL$PARTIAL": "部分完成",
824
+ "AUTOMATIONS$DETAIL$NEEDS_REVIEW": "需要审核",
825
+ "AUTOMATIONS$DETAIL$RUN_LABEL": "运行",
826
+ "AUTOMATIONS$DETAIL$TASK_LABEL": "任务",
827
+ "AUTOMATIONS$DETAIL$SYSTEM_LABEL": "系统",
828
+ "AUTOMATIONS$DETAIL$NO_TASK_OUTCOME": "未报告任务结果。",
829
+ "AUTOMATIONS$DETAIL$NO_SYSTEM_ISSUES": "未报告系统问题。",
830
+ "AUTOMATIONS$DETAIL$STATUS_DETAIL": "状态详情",
831
+ "AUTOMATIONS$DETAIL$TASK_METADATA": "任务元数据",
832
+ "AUTOMATIONS$DETAIL$CUSTOM_TASK_METADATA": "已报告自定义任务元数据。",
833
+ "AUTOMATIONS$DETAIL$VIEW_CONVERSATION_FOR_RUN": "查看 {{timestamp}} 运行的对话",
820
834
  "AUTOMATIONS$DETAIL$PHASE": "阶段",
821
835
  "AUTOMATIONS$DETAIL$PHASE_QUEUED": "排队中",
822
836
  "AUTOMATIONS$DETAIL$PHASE_SANDBOX_PROVISIONING": "正在配置沙盒",
@@ -1034,27 +1048,48 @@
1034
1048
  "CONVERSATION_PANEL$ORGANIZE": "整理",
1035
1049
  "CONVERSATION_PANEL$BY_WORKSPACE": "按工作区",
1036
1050
  "CONVERSATION_PANEL$BY_REPOSITORY": "按仓库",
1037
- "CONVERSATION_PANEL$CHRONOLOGICAL": "按时间顺序",
1051
+ "CONVERSATION_PANEL$CHRONOLOGICAL": "按日期",
1052
+ "CONVERSATION_PANEL$CLEAR_FILTERS": "全部清除",
1038
1053
  "CONVERSATION_PANEL$SORT_BY": "排序方式",
1039
1054
  "CONVERSATION_PANEL$SORT_CREATED": "创建时间",
1040
1055
  "CONVERSATION_PANEL$SORT_UPDATED": "更新时间",
1041
1056
  "CONVERSATION_PANEL$OLDER_SECTION": "较早的会话",
1042
1057
  "CONVERSATION_PANEL$OLDER_OVER_ONE_HOUR": "超过 1 小时",
1043
- "CONVERSATION_PANEL$SHOW": "显示",
1058
+ "CONVERSATION_PANEL$OLDER_OVER_ONE_DAY": "超过 1 天",
1059
+ "CONVERSATION_PANEL$OLDER_OVER_ONE_WEEK": "超过 1 周",
1060
+ "CONVERSATION_PANEL$OLDER_OVER_THIRTY_DAYS": "超过 30 天",
1061
+ "CONVERSATION_PANEL$HIDE_CONVERSATIONS": "隐藏旧对话",
1062
+ "CONVERSATION_PANEL$OLDER_CUTOFF_LABEL": "隐藏早于此时的对话",
1063
+ "CONVERSATION_PANEL$SHOW": "其他",
1064
+ "CONVERSATION_PANEL$THREADS": "会话",
1044
1065
  "CONVERSATION_PANEL$ALL_THREADS": "所有会话",
1045
- "CONVERSATION_PANEL$RELEVANT_THREADS": "相关(进行中)",
1066
+ "CONVERSATION_PANEL$RELEVANT_THREADS": "仅活动",
1046
1067
  "CONVERSATION_PANEL$SHOW_ARCHIVED": "显示已归档",
1047
1068
  "CONVERSATION_PANEL$METADATA": "元数据",
1048
1069
  "CONVERSATION_PANEL$LLM_MODEL": "代理 / 模型",
1049
1070
  "CONVERSATION_PANEL$REPO_BRANCH": "仓库与分支",
1050
1071
  "CONVERSATION_PANEL$TAGS": "标签",
1072
+ "CONVERSATION_PANEL$SHOW_TAGS": "显示 {{count}} 个标签",
1073
+ "CONVERSATION_PANEL$HIDE_TAGS": "隐藏标签",
1074
+ "CONVERSATION_PANEL$TAG_CHIPS": "显示标签",
1075
+ "CONVERSATION_PANEL$LAYOUTS_HEADING": "视图",
1076
+ "CONVERSATION_PANEL$LAYOUT_RECENT_ACTIVITY": "最近",
1077
+ "CONVERSATION_PANEL$LAYOUT_FOCUSED": "活动",
1078
+ "CONVERSATION_PANEL$LAYOUT_MINIMAL": "紧凑",
1079
+ "CONVERSATION_PANEL$TAG_FILTERS": "按标签筛选",
1080
+ "CONVERSATION_PANEL$NO_VISIBLE_TAGS": "暂无标签",
1081
+ "CONVERSATION_PANEL$ADVANCED_OPTIONS": "更多选项",
1082
+ "CONVERSATION_PANEL$ADVANCED_OPTIONS_CUSTOM": "自定义",
1083
+ "CONVERSATION_PANEL$ADVANCED_OPTIONS_DESCRIPTION": "选择对话如何分组以及每行显示什么。更改会自动保存。",
1084
+ "CONVERSATION_PANEL$SHOW_OLDER_CONVERSATIONS": "显示较早的对话",
1051
1085
  "CONVERSATION_PANEL$AUTOMATIONS": "自动化",
1052
- "CONVERSATION_PANEL$AUTOMATIONS_ALL": "所有对话",
1086
+ "CONVERSATION_PANEL$AUTOMATIONS_ALL": "与全部一起显示",
1053
1087
  "CONVERSATION_PANEL$AUTOMATIONS_HIDE": "隐藏自动化运行",
1054
1088
  "CONVERSATION_PANEL$AUTOMATIONS_ONLY": "仅自动化运行",
1055
1089
  "CONVERSATION_PANEL$AUTOMATION_UNNAMED": "未命名自动化",
1056
1090
  "CONVERSATION_PANEL$NO_AUTOMATION_MATCHES": "没有对话匹配自动化筛选条件",
1057
- "CONVERSATION_PANEL$HOVER_METADATA": "悬停元数据",
1091
+ "CONVERSATION_PANEL$NO_TAG_MATCHES": "没有对话匹配标签筛选条件",
1092
+ "CONVERSATION_PANEL$HOVER_METADATA": "悬停时显示详情",
1058
1093
  "CONVERSATION_PANEL$NO_WORKSPACE": "无工作区",
1059
1094
  "CONVERSATION_PANEL$NO_REPOSITORY": "无仓库",
1060
1095
  "CONVERSATION_PANEL$NEW_THREAD_FOLDER_ARIA": "创建对话文件夹 — 选择工作区或仓库",
@@ -1220,7 +1255,7 @@
1220
1255
  "SETTINGS$FAILED_TO_SAVE_EMAIL": "保存邮箱失败",
1221
1256
  "SETTINGS$SENDING": "发送中",
1222
1257
  "SETTINGS$VERIFICATION_EMAIL_SENT": "验证邮件已发送",
1223
- "SETTINGS$EMAIL_VERIFICATION_REQUIRED": "使用All Hands前,您必须验证您的电子邮件地址",
1258
+ "SETTINGS$EMAIL_VERIFICATION_REQUIRED": "使用OpenHands前,您必须验证您的电子邮件地址",
1224
1259
  "SETTINGS$INVALID_EMAIL_FORMAT": "请输入有效的电子邮件地址",
1225
1260
  "SETTINGS$EMAIL_VERIFICATION_RESTRICTION_MESSAGE": "在验证您的电子邮件之前,您的访问权限受到限制。您只能访问此设置页面。",
1226
1261
  "SETTINGS$RESEND_VERIFICATION": "重新发送验证",
@@ -1286,7 +1321,7 @@
1286
1321
  "API$TVLY_KEY_EXAMPLE": "tvly-...",
1287
1322
  "SECRETS$CONNECT_GIT_PROVIDER": "连接Git提供商以管理密钥",
1288
1323
  "SETTINGS$OPENHANDS_API_KEYS": "OpenHands API密钥",
1289
- "CONVERSATION$BUDGET_USAGE_FORMAT": "${currentCost} / ${maxBudget} ({usagePercentage}% {used})",
1324
+ "CONVERSATION$BUDGET_USAGE_FORMAT": "{{currentCost}} / {{maxBudget}} ({{usagePercentage}}% {{used}})",
1290
1325
  "CONVERSATION$CACHE_HIT": "缓存命中",
1291
1326
  "CONVERSATION$CACHE_WRITE": "缓存写入",
1292
1327
  "BUTTON$CONFIRM": "确认",
@@ -1880,7 +1915,8 @@
1880
1915
  "THINKING$COLLAPSE": "折叠思考",
1881
1916
  "MCP$LIBRARY_TITLE": "库",
1882
1917
  "NAV$CUSTOMIZE": "自定义",
1883
- "NAV$EXTENSIONS": "扩展",
1918
+ "NAV$EXTENSIONS": "应用",
1919
+ "SETTINGS$APPS_PAGE_TITLE": "Agent Canvas 应用",
1884
1920
  "NAV$COMING_SOON": "即将推出",
1885
1921
  "SETTINGS$PLUGINS_TITLE": "插件",
1886
1922
  "SETTINGS$PLUGINS_DESCRIPTION": "插件配置选项将显示在此处。",
@@ -1907,17 +1943,21 @@
1907
1943
  "SETTINGS$PLUGINS_UNINSTALL_SUCCESS": "插件已卸载。",
1908
1944
  "SETTINGS$PLUGINS_REFRESH_SUCCESS": "插件已更新。",
1909
1945
  "SETTINGS$PLUGINS_SKILLS_IN_BUNDLE": "此插件包中的技能",
1910
- "SETTINGS$CANVAS_EXTENSIONS_PAGE_DESCRIPTION": "为此后端安装在 Canvas 内运行的受信任 UI。已安装的扩展在您于此处启用前将保持关闭。",
1911
- "SETTINGS$CANVAS_EXTENSIONS_ADD_BUTTON": "添加扩展",
1912
- "SETTINGS$CANVAS_EXTENSIONS_EMPTY": "此后端未安装任何 Canvas 扩展。",
1913
- "SETTINGS$CANVAS_EXTENSIONS_TRUST_NOTICE": "已启用的扩展是受信任代码,可完全访问此 Canvas 会话。",
1914
- "SETTINGS$CANVAS_EXTENSIONS_ADD_MODAL_INTRO": "从 Git 来源或活动 Agent Server 上的路径安装。扩展安装后将处于禁用状态。",
1915
- "SETTINGS$CANVAS_EXTENSIONS_INSTALL_SUCCESS": "扩展已安装。请在此处查看,并在准备好后启用。",
1916
- "SETTINGS$CANVAS_EXTENSIONS_UNINSTALL_SUCCESS": "扩展已卸载。",
1917
- "SETTINGS$CANVAS_EXTENSIONS_ENABLE_CONFIRM": "已启用的扩展是受信任代码,可完全访问此 Canvas 会话。要启用 {{name}} 吗?",
1918
- "SETTINGS$CANVAS_EXTENSIONS_UNINSTALL_CONFIRM": "要从此后端卸载 {{name}} 吗?",
1919
- "SETTINGS$CANVAS_EXTENSIONS_PAGES": "页面",
1920
- "SETTINGS$CANVAS_EXTENSIONS_PAGE_UNAVAILABLE": "此扩展已禁用、缺失或未提供此页面。",
1946
+ "SETTINGS$APPS_PAGE_DESCRIPTION": "应用使用 Canvas Extensions API 构建",
1947
+ "SETTINGS$APPS_BUILD_LINK": "构建应用",
1948
+ "SETTINGS$APPS_ADD_BUTTON": "添加应用",
1949
+ "SETTINGS$APPS_INSTALLED": "已安装的应用",
1950
+ "SETTINGS$APPS_SOURCE_LABEL": "应用来源",
1951
+ "SETTINGS$APPS_EMPTY": "此后端未安装任何应用。",
1952
+ "SETTINGS$APPS_TRUST_NOTICE": "此应用会在 Agent Canvas 中运行受信任的 JavaScript,并可向当前 Agent Server 发出经过身份验证的请求。启用前请检查其源代码和修订版本。",
1953
+ "SETTINGS$APPS_ENABLE_ACTION": "启用受信任的应用",
1954
+ "SETTINGS$APPS_ADD_MODAL_INTRO": " Git 来源或当前 Agent Server 上的路径安装。应用安装后将保持禁用。",
1955
+ "SETTINGS$APPS_INSTALL_SUCCESS": "应用已安装。请在此检查,准备好后再启用。",
1956
+ "SETTINGS$APPS_UNINSTALL_SUCCESS": "应用已卸载。",
1957
+ "SETTINGS$APPS_ENABLE_CONFIRM": "此应用会在 Agent Canvas 中运行受信任的 JavaScript,并可向当前 Agent Server 发出经过身份验证的请求。启用前请检查其源代码和修订版本。",
1958
+ "SETTINGS$APPS_UNINSTALL_CONFIRM": "要从此后端卸载 {{name}} 吗?",
1959
+ "SETTINGS$APPS_PAGES": "页面",
1960
+ "SETTINGS$APPS_PAGE_UNAVAILABLE": "此应用已禁用、缺失或未提供此页面。",
1921
1961
  "SETTINGS$SKILLS_PAGE_DESCRIPTION": "发现要添加到工作区的技能。打开卡片以查看提示、curl 和安装流程。从侧边栏搜索以过滤列表。启用或禁用默认技能。禁用的技能不会加载到代理上下文中。",
1922
1962
  "SETTINGS$SKILLS_ADD_BUTTON": "添加技能",
1923
1963
  "SETTINGS$SKILLS_USE_SKILL_BUTTON": "使用技能",
@@ -2161,6 +2201,9 @@
2161
2201
  "SETUP$VALIDATION_INVALID_OPTION": "请从可用选项中选择。",
2162
2202
  "SETUP$VALIDATION_UNSAFE_VALUE": "不允许使用引号和反斜杠。",
2163
2203
  "SETUP$REVIEW_TITLE": "确认",
2204
+ "SETUP$ACTION_LABEL": "操作",
2205
+ "SETUP$TRIGGER_LABEL": "触发器",
2206
+ "SETUP$TRIGGER_HELP": "选择自动化是按计划运行还是在事件到达时运行。",
2164
2207
  "SETUP$CONFIRM": "确认并创建",
2165
2208
  "SETUP$FALLBACK_CONVERSATION": "在对话中设置",
2166
2209
  "SETUP$EMPTY_VALUE": "未设置",
@@ -2267,6 +2310,16 @@
2267
2310
  "CHAT_INTERFACE$CONTEXT_WINDOW_METER_LABEL": "上下文窗口用量",
2268
2311
  "CHAT_INTERFACE$SHOW_CONTEXT": "显示上下文",
2269
2312
  "CONVERSATION$TAGS_OVERFLOW_ARIA": "显示另外 {{count}} 个标签",
2313
+ "CONVERSATION$EDIT_TAGS": "编辑标签",
2314
+ "CONVERSATION$EDIT_TAGS_DESCRIPTION": "为此对话添加或删除标签。",
2315
+ "CONVERSATION$TAG_KEY_PLACEHOLDER": "名称",
2316
+ "CONVERSATION$TAG_VALUE_PLACEHOLDER": "值(可选)",
2317
+ "CONVERSATION$REMOVE_TAG": "删除标签",
2318
+ "CONVERSATION$TAG_KEY_INVALID": "标签名称只能包含小写字母和数字",
2319
+ "CONVERSATION$TAG_KEY_RESERVED": "此标签名称已被保留",
2320
+ "CONVERSATION$TAG_KEY_DUPLICATE": "此标签名称已被使用",
2321
+ "CONVERSATION$TAG_VALUE_INVALID": "标签值不能超过 256 个字符",
2322
+ "CONVERSATION$TAGS_UPDATED": "标签已更新",
2270
2323
  "CONVERSATION_PANEL$PREVIEW_GIT": "Git",
2271
2324
  "CONVERSATION_PANEL$PREVIEW_REPO": "仓库",
2272
2325
  "CONVERSATION_PANEL$PREVIEW_BRANCH": "分支",
@@ -797,7 +797,9 @@
797
797
  "AUTOMATIONS$ERROR_TIMEOUT_INVALID_NUMBER": "超時必須是有效數字",
798
798
  "AUTOMATIONS$ERROR_TIMEOUT_POSITIVE": "超時必須為正數",
799
799
  "AUTOMATIONS$ERROR_TIMEOUT_MAX_EXCEEDED": "超時不能超過{{max}}秒",
800
- "AUTOMATIONS$CUSTOM_SCHEDULE_HINT": "此自動化使用自訂排程。已停用頻率編輯以避免破壞它。",
800
+ "AUTOMATIONS$CRON_EXPRESSION": "Cron 運算式",
801
+ "AUTOMATIONS$ERROR_CRON_INVALID": "請輸入有效的 cron 運算式",
802
+ "AUTOMATIONS$ERROR_CRON_UNREACHABLE": "此 cron 運算式永遠不會執行",
801
803
  "AUTOMATIONS$EDIT_SUCCESS": "自動化已更新",
802
804
  "AUTOMATIONS$EDIT_ERROR": "無法更新自動化",
803
805
  "AUTOMATIONS$RUN_NOW_SUCCESS": "自動化已觸發",
@@ -817,6 +819,18 @@
817
819
  "AUTOMATIONS$DETAIL$RUNNING": "執行中",
818
820
  "AUTOMATIONS$DETAIL$CANCELLED": "已取消",
819
821
  "AUTOMATIONS$DETAIL$SKIPPED": "已略過",
822
+ "AUTOMATIONS$DETAIL$BLOCKED": "受阻",
823
+ "AUTOMATIONS$DETAIL$PARTIAL": "部分完成",
824
+ "AUTOMATIONS$DETAIL$NEEDS_REVIEW": "需要審查",
825
+ "AUTOMATIONS$DETAIL$RUN_LABEL": "執行",
826
+ "AUTOMATIONS$DETAIL$TASK_LABEL": "任務",
827
+ "AUTOMATIONS$DETAIL$SYSTEM_LABEL": "系統",
828
+ "AUTOMATIONS$DETAIL$NO_TASK_OUTCOME": "未回報任務結果。",
829
+ "AUTOMATIONS$DETAIL$NO_SYSTEM_ISSUES": "未回報系統問題。",
830
+ "AUTOMATIONS$DETAIL$STATUS_DETAIL": "狀態詳細資訊",
831
+ "AUTOMATIONS$DETAIL$TASK_METADATA": "任務中繼資料",
832
+ "AUTOMATIONS$DETAIL$CUSTOM_TASK_METADATA": "已回報自訂任務中繼資料。",
833
+ "AUTOMATIONS$DETAIL$VIEW_CONVERSATION_FOR_RUN": "查看 {{timestamp}} 執行的對話",
820
834
  "AUTOMATIONS$DETAIL$PHASE": "階段",
821
835
  "AUTOMATIONS$DETAIL$PHASE_QUEUED": "排隊中",
822
836
  "AUTOMATIONS$DETAIL$PHASE_SANDBOX_PROVISIONING": "正在設定沙盒",
@@ -1034,27 +1048,48 @@
1034
1048
  "CONVERSATION_PANEL$ORGANIZE": "整理",
1035
1049
  "CONVERSATION_PANEL$BY_WORKSPACE": "依工作區",
1036
1050
  "CONVERSATION_PANEL$BY_REPOSITORY": "依存放庫",
1037
- "CONVERSATION_PANEL$CHRONOLOGICAL": "時間序列清單",
1051
+ "CONVERSATION_PANEL$CHRONOLOGICAL": "依日期",
1052
+ "CONVERSATION_PANEL$CLEAR_FILTERS": "全部清除",
1038
1053
  "CONVERSATION_PANEL$SORT_BY": "排序依據",
1039
1054
  "CONVERSATION_PANEL$SORT_CREATED": "建立時間",
1040
1055
  "CONVERSATION_PANEL$SORT_UPDATED": "更新時間",
1041
1056
  "CONVERSATION_PANEL$OLDER_SECTION": "較舊的對話",
1042
1057
  "CONVERSATION_PANEL$OLDER_OVER_ONE_HOUR": "超過 1 小時",
1043
- "CONVERSATION_PANEL$SHOW": "顯示",
1058
+ "CONVERSATION_PANEL$OLDER_OVER_ONE_DAY": "超過 1 天",
1059
+ "CONVERSATION_PANEL$OLDER_OVER_ONE_WEEK": "超過 1 週",
1060
+ "CONVERSATION_PANEL$OLDER_OVER_THIRTY_DAYS": "超過 30 天",
1061
+ "CONVERSATION_PANEL$HIDE_CONVERSATIONS": "隱藏舊對話",
1062
+ "CONVERSATION_PANEL$OLDER_CUTOFF_LABEL": "隱藏早於此時間的對話",
1063
+ "CONVERSATION_PANEL$SHOW": "其他",
1064
+ "CONVERSATION_PANEL$THREADS": "對話串",
1044
1065
  "CONVERSATION_PANEL$ALL_THREADS": "所有對話串",
1045
- "CONVERSATION_PANEL$RELEVANT_THREADS": "相關(進行中)",
1066
+ "CONVERSATION_PANEL$RELEVANT_THREADS": "僅作用中",
1046
1067
  "CONVERSATION_PANEL$SHOW_ARCHIVED": "顯示已封存",
1047
1068
  "CONVERSATION_PANEL$METADATA": "中繼資料",
1048
1069
  "CONVERSATION_PANEL$LLM_MODEL": "代理 / 模型",
1049
1070
  "CONVERSATION_PANEL$REPO_BRANCH": "存放庫與分支",
1050
1071
  "CONVERSATION_PANEL$TAGS": "標籤",
1072
+ "CONVERSATION_PANEL$SHOW_TAGS": "顯示 {{count}} 個標籤",
1073
+ "CONVERSATION_PANEL$HIDE_TAGS": "隱藏標籤",
1074
+ "CONVERSATION_PANEL$TAG_CHIPS": "顯示標籤",
1075
+ "CONVERSATION_PANEL$LAYOUTS_HEADING": "檢視",
1076
+ "CONVERSATION_PANEL$LAYOUT_RECENT_ACTIVITY": "最近",
1077
+ "CONVERSATION_PANEL$LAYOUT_FOCUSED": "作用中",
1078
+ "CONVERSATION_PANEL$LAYOUT_MINIMAL": "精簡",
1079
+ "CONVERSATION_PANEL$TAG_FILTERS": "依標籤篩選",
1080
+ "CONVERSATION_PANEL$NO_VISIBLE_TAGS": "尚無標籤",
1081
+ "CONVERSATION_PANEL$ADVANCED_OPTIONS": "更多選項",
1082
+ "CONVERSATION_PANEL$ADVANCED_OPTIONS_CUSTOM": "自訂",
1083
+ "CONVERSATION_PANEL$ADVANCED_OPTIONS_DESCRIPTION": "選擇對話如何分組以及每列顯示什麼。變更會自動儲存。",
1084
+ "CONVERSATION_PANEL$SHOW_OLDER_CONVERSATIONS": "顯示較早的對話",
1051
1085
  "CONVERSATION_PANEL$AUTOMATIONS": "自動化",
1052
- "CONVERSATION_PANEL$AUTOMATIONS_ALL": "所有對話",
1086
+ "CONVERSATION_PANEL$AUTOMATIONS_ALL": "與全部一起顯示",
1053
1087
  "CONVERSATION_PANEL$AUTOMATIONS_HIDE": "隱藏自動化執行",
1054
1088
  "CONVERSATION_PANEL$AUTOMATIONS_ONLY": "僅自動化執行",
1055
1089
  "CONVERSATION_PANEL$AUTOMATION_UNNAMED": "未命名自動化",
1056
1090
  "CONVERSATION_PANEL$NO_AUTOMATION_MATCHES": "沒有對話符合自動化篩選條件",
1057
- "CONVERSATION_PANEL$HOVER_METADATA": "懸停中繼資料",
1091
+ "CONVERSATION_PANEL$NO_TAG_MATCHES": "沒有對話符合標籤篩選條件",
1092
+ "CONVERSATION_PANEL$HOVER_METADATA": "懸停時顯示詳情",
1058
1093
  "CONVERSATION_PANEL$NO_WORKSPACE": "無工作區",
1059
1094
  "CONVERSATION_PANEL$NO_REPOSITORY": "無存放庫",
1060
1095
  "CONVERSATION_PANEL$NEW_THREAD_FOLDER_ARIA": "建立對話資料夾 — 選擇工作區或存放庫",
@@ -1220,7 +1255,7 @@
1220
1255
  "SETTINGS$FAILED_TO_SAVE_EMAIL": "儲存郵箱失敗",
1221
1256
  "SETTINGS$SENDING": "發送中",
1222
1257
  "SETTINGS$VERIFICATION_EMAIL_SENT": "驗證郵件已發送",
1223
- "SETTINGS$EMAIL_VERIFICATION_REQUIRED": "使用All Hands前,您必須驗證您的電子郵件地址",
1258
+ "SETTINGS$EMAIL_VERIFICATION_REQUIRED": "使用OpenHands前,您必須驗證您的電子郵件地址",
1224
1259
  "SETTINGS$INVALID_EMAIL_FORMAT": "請輸入有效的電子郵件地址",
1225
1260
  "SETTINGS$EMAIL_VERIFICATION_RESTRICTION_MESSAGE": "在驗證您的電子郵件之前,您的訪問權限受到限制。您只能訪問此設置頁面。",
1226
1261
  "SETTINGS$RESEND_VERIFICATION": "重新發送驗證",
@@ -1286,7 +1321,7 @@
1286
1321
  "API$TVLY_KEY_EXAMPLE": "tvly-...",
1287
1322
  "SECRETS$CONNECT_GIT_PROVIDER": "連接Git提供商以管理密鑰",
1288
1323
  "SETTINGS$OPENHANDS_API_KEYS": "OpenHands API密鑰",
1289
- "CONVERSATION$BUDGET_USAGE_FORMAT": "${currentCost} / ${maxBudget} ({usagePercentage}% {used})",
1324
+ "CONVERSATION$BUDGET_USAGE_FORMAT": "{{currentCost}} / {{maxBudget}} ({{usagePercentage}}% {{used}})",
1290
1325
  "CONVERSATION$CACHE_HIT": "緩存命中",
1291
1326
  "CONVERSATION$CACHE_WRITE": "緩存寫入",
1292
1327
  "BUTTON$CONFIRM": "確認",
@@ -1880,7 +1915,8 @@
1880
1915
  "THINKING$COLLAPSE": "摺疊思考",
1881
1916
  "MCP$LIBRARY_TITLE": "資料庫",
1882
1917
  "NAV$CUSTOMIZE": "自訂",
1883
- "NAV$EXTENSIONS": "擴充功能",
1918
+ "NAV$EXTENSIONS": "應用程式",
1919
+ "SETTINGS$APPS_PAGE_TITLE": "Agent Canvas 應用程式",
1884
1920
  "NAV$COMING_SOON": "即將推出",
1885
1921
  "SETTINGS$PLUGINS_TITLE": "外掛程式",
1886
1922
  "SETTINGS$PLUGINS_DESCRIPTION": "外掛程式設定選項將顯示於此。",
@@ -1907,17 +1943,21 @@
1907
1943
  "SETTINGS$PLUGINS_UNINSTALL_SUCCESS": "外掛程式已解除安裝。",
1908
1944
  "SETTINGS$PLUGINS_REFRESH_SUCCESS": "外掛程式已更新。",
1909
1945
  "SETTINGS$PLUGINS_SKILLS_IN_BUNDLE": "此外掛程式套件中的技能",
1910
- "SETTINGS$CANVAS_EXTENSIONS_PAGE_DESCRIPTION": "為此後端安裝在 Canvas 內執行的受信任 UI。已安裝的擴充功能在您於此處啟用前將保持關閉。",
1911
- "SETTINGS$CANVAS_EXTENSIONS_ADD_BUTTON": "新增擴充功能",
1912
- "SETTINGS$CANVAS_EXTENSIONS_EMPTY": "此後端未安裝任何 Canvas 擴充功能。",
1913
- "SETTINGS$CANVAS_EXTENSIONS_TRUST_NOTICE": "已啟用的擴充功能是受信任程式碼,可完整存取此 Canvas 工作階段。",
1914
- "SETTINGS$CANVAS_EXTENSIONS_ADD_MODAL_INTRO": "從 Git 來源或作用中 Agent Server 上的路徑安裝。擴充功能安裝後將處於停用狀態。",
1915
- "SETTINGS$CANVAS_EXTENSIONS_INSTALL_SUCCESS": "擴充功能已安裝。請在此處檢視,並在準備好後啟用。",
1916
- "SETTINGS$CANVAS_EXTENSIONS_UNINSTALL_SUCCESS": "擴充功能已解除安裝。",
1917
- "SETTINGS$CANVAS_EXTENSIONS_ENABLE_CONFIRM": "已啟用的擴充功能是受信任程式碼,可完整存取此 Canvas 工作階段。要啟用 {{name}} 嗎?",
1918
- "SETTINGS$CANVAS_EXTENSIONS_UNINSTALL_CONFIRM": "要從此後端解除安裝 {{name}} 嗎?",
1919
- "SETTINGS$CANVAS_EXTENSIONS_PAGES": "頁面",
1920
- "SETTINGS$CANVAS_EXTENSIONS_PAGE_UNAVAILABLE": "此擴充功能已停用、遺失或未提供此頁面。",
1946
+ "SETTINGS$APPS_PAGE_DESCRIPTION": "應用程式使用 Canvas Extensions API 建置",
1947
+ "SETTINGS$APPS_BUILD_LINK": "建置應用程式",
1948
+ "SETTINGS$APPS_ADD_BUTTON": "新增應用程式",
1949
+ "SETTINGS$APPS_INSTALLED": "已安裝的應用程式",
1950
+ "SETTINGS$APPS_SOURCE_LABEL": "應用程式來源",
1951
+ "SETTINGS$APPS_EMPTY": "此後端未安裝任何應用程式。",
1952
+ "SETTINGS$APPS_TRUST_NOTICE": "此應用程式會在 Agent Canvas 中執行受信任的 JavaScript,並可向目前的 Agent Server 發出經過驗證的請求。啟用前請檢查其原始碼和修訂版本。",
1953
+ "SETTINGS$APPS_ENABLE_ACTION": "啟用受信任的應用程式",
1954
+ "SETTINGS$APPS_ADD_MODAL_INTRO": " Git 來源或目前 Agent Server 上的路徑安裝。應用程式安裝後將保持停用。",
1955
+ "SETTINGS$APPS_INSTALL_SUCCESS": "應用程式已安裝。請在此檢查,準備好後再啟用。",
1956
+ "SETTINGS$APPS_UNINSTALL_SUCCESS": "應用程式已解除安裝。",
1957
+ "SETTINGS$APPS_ENABLE_CONFIRM": "此應用程式會在 Agent Canvas 中執行受信任的 JavaScript,並可向目前的 Agent Server 發出經過驗證的請求。啟用前請檢查其原始碼和修訂版本。",
1958
+ "SETTINGS$APPS_UNINSTALL_CONFIRM": "要從此後端解除安裝 {{name}} 嗎?",
1959
+ "SETTINGS$APPS_PAGES": "頁面",
1960
+ "SETTINGS$APPS_PAGE_UNAVAILABLE": "此應用程式已停用、缺少或未提供此頁面。",
1921
1961
  "SETTINGS$SKILLS_PAGE_DESCRIPTION": "探索要加入工作區的技能。開啟卡片以查看提示、curl 和安裝流程。從側邊欄搜尋以篩選清單。啟用或停用預設技能。停用的技能不會載入到代理上下文中。",
1922
1962
  "SETTINGS$SKILLS_ADD_BUTTON": "新增技能",
1923
1963
  "SETTINGS$SKILLS_USE_SKILL_BUTTON": "使用技能",
@@ -2161,6 +2201,9 @@
2161
2201
  "SETUP$VALIDATION_INVALID_OPTION": "請從可用選項中選擇。",
2162
2202
  "SETUP$VALIDATION_UNSAFE_VALUE": "不允許使用引號和反斜線。",
2163
2203
  "SETUP$REVIEW_TITLE": "確認",
2204
+ "SETUP$ACTION_LABEL": "動作",
2205
+ "SETUP$TRIGGER_LABEL": "觸發條件",
2206
+ "SETUP$TRIGGER_HELP": "選擇自動化要依排程執行,還是在事件到達時執行。",
2164
2207
  "SETUP$CONFIRM": "確認並建立",
2165
2208
  "SETUP$FALLBACK_CONVERSATION": "在對話中設定",
2166
2209
  "SETUP$EMPTY_VALUE": "未設定",
@@ -2267,6 +2310,16 @@
2267
2310
  "CHAT_INTERFACE$CONTEXT_WINDOW_METER_LABEL": "上下文視窗用量",
2268
2311
  "CHAT_INTERFACE$SHOW_CONTEXT": "顯示上下文",
2269
2312
  "CONVERSATION$TAGS_OVERFLOW_ARIA": "顯示另外 {{count}} 個標籤",
2313
+ "CONVERSATION$EDIT_TAGS": "編輯標籤",
2314
+ "CONVERSATION$EDIT_TAGS_DESCRIPTION": "為此對話新增或刪除標籤。",
2315
+ "CONVERSATION$TAG_KEY_PLACEHOLDER": "名稱",
2316
+ "CONVERSATION$TAG_VALUE_PLACEHOLDER": "值(選填)",
2317
+ "CONVERSATION$REMOVE_TAG": "刪除標籤",
2318
+ "CONVERSATION$TAG_KEY_INVALID": "標籤名稱只能包含小寫字母和數字",
2319
+ "CONVERSATION$TAG_KEY_RESERVED": "此標籤名稱已被保留",
2320
+ "CONVERSATION$TAG_KEY_DUPLICATE": "此標籤名稱已被使用",
2321
+ "CONVERSATION$TAG_VALUE_INVALID": "標籤值不能超過 256 個字元",
2322
+ "CONVERSATION$TAGS_UPDATED": "標籤已更新",
2270
2323
  "CONVERSATION_PANEL$PREVIEW_GIT": "Git",
2271
2324
  "CONVERSATION_PANEL$PREVIEW_REPO": "倉庫",
2272
2325
  "CONVERSATION_PANEL$PREVIEW_BRANCH": "分支",
@@ -1 +1 @@
1
- {"version":3,"file":"automation-insights.cjs","names":[],"sources":["../../src/manifests/automation-insights.ts"],"sourcesContent":["/**\n * The dashboard's automation knowledge, and the only module beside\n * `automation-setup.ts` that has any.\n *\n * The interface manifest's dashboard surface names metrics, filter predicates,\n * and sort comparators from closed sets; the one implementation of each name\n * is here, over the automation service's list and runs responses, so the rest\n * of `src/manifests/` stays about composition rather than about automations.\n *\n * Summaries are derived from the newest page of runs (the sample the runs\n * hook fetches); `total` alone is the response's lifetime count. Success rate\n * and durations consider only COMPLETED and FAILED runs — a cancelled or\n * skipped run says nothing about either.\n */\n\nimport {\n AutomationRunStatus,\n type Automation,\n type AutomationRun,\n type AutomationRunsResponse,\n} from \"#/types/automation\";\nimport type {\n DashboardSortValue,\n DashboardStatusValue,\n DashboardTriggerValue,\n InterfaceListInsights,\n OverviewMetric,\n} from \"./types\";\n\nexport type AutomationHealth =\n | \"healthy\"\n | \"failing\"\n | \"running\"\n | \"disabled\"\n | \"never-run\"\n | \"unknown\";\n\n/** Which caption of the manifest's `insights.health` block names each state. */\nexport const HEALTH_LABEL_KEYS: Record<\n AutomationHealth,\n keyof InterfaceListInsights[\"health\"]\n> = {\n healthy: \"healthy\",\n failing: \"failing\",\n running: \"running\",\n disabled: \"disabled\",\n \"never-run\": \"neverRun\",\n unknown: \"checking\",\n};\n\nexport interface AutomationRunSummary {\n /** Lifetime run count, from the response — not the sample's length. */\n total: number;\n latestRun: AutomationRun | null;\n /** Newest-first sample used by the list sparkline (same page as the summary). */\n recentRuns: AutomationRun[];\n /** COMPLETED over COMPLETED+FAILED in the sample. Null with no terminal runs. */\n recentSuccessRate: number | null;\n /** Mean completed_at − started_at over the sample's terminal runs. */\n averageDurationMs: number | null;\n}\n\n/** One automation's summary alongside its query state. */\nexport interface RunSummaryState {\n summary: AutomationRunSummary | null;\n isLoading: boolean;\n isError: boolean;\n}\n\ntype Summaries = ReadonlyMap<string, RunSummaryState>;\n\nconst TERMINAL_STATUSES = new Set<AutomationRunStatus>([\n AutomationRunStatus.COMPLETED,\n AutomationRunStatus.FAILED,\n]);\n\nexport function summarizeAutomationRuns(\n response: AutomationRunsResponse,\n): AutomationRunSummary {\n const terminal = response.runs.filter((run) =>\n TERMINAL_STATUSES.has(run.status),\n );\n const completed = terminal.filter(\n (run) => run.status === AutomationRunStatus.COMPLETED,\n ).length;\n\n const durations = terminal.flatMap((run) => {\n if (!run.completed_at) return [];\n const ms =\n new Date(run.completed_at).getTime() - new Date(run.started_at).getTime();\n return Number.isFinite(ms) && ms >= 0 ? [ms] : [];\n });\n\n return {\n total: response.total,\n latestRun: response.runs[0] ?? null,\n recentRuns: response.runs,\n recentSuccessRate:\n terminal.length === 0 ? null : completed / terminal.length,\n averageDurationMs:\n durations.length === 0\n ? null\n : durations.reduce((sum, ms) => sum + ms, 0) / durations.length,\n };\n}\n\n/**\n * A disabled automation is disabled no matter its history; while the summary\n * is unsettled nothing is claimed; after that the latest run speaks.\n */\nexport function deriveAutomationHealth(\n automation: Automation,\n state: RunSummaryState | undefined,\n): AutomationHealth {\n if (!automation.enabled) return \"disabled\";\n if (!state || state.isError || state.isLoading || !state.summary) {\n return \"unknown\";\n }\n const latest = state.summary.latestRun;\n if (!latest) return \"never-run\";\n if (latest.status === AutomationRunStatus.FAILED) return \"failing\";\n if (\n latest.status === AutomationRunStatus.PENDING ||\n latest.status === AutomationRunStatus.RUNNING\n ) {\n return \"running\";\n }\n return \"healthy\";\n}\n\n/** \"—\" unknown, seconds under a minute, minutes under an hour, else \"1.5h\". */\nexport function formatCompactDuration(ms: number | null): string {\n if (ms === null || !Number.isFinite(ms)) return \"—\";\n if (ms < 60_000) return `${Math.max(1, Math.round(ms / 1000))}s`;\n if (ms < 3_600_000) return `${Math.max(1, Math.round(ms / 60_000))}m`;\n return `${(ms / 3_600_000).toFixed(1)}h`;\n}\n\n/** The list page's search predicate: name, prompt, repository, or model. */\nexport function matchesAutomationSearch(\n automation: Automation,\n query: string,\n): boolean {\n const q = query.toLowerCase();\n if (!q) return true;\n return (\n automation.name.toLowerCase().includes(q) ||\n (automation.prompt ?? \"\").toLowerCase().includes(q) ||\n automation.repository?.toLowerCase().includes(q) === true ||\n automation.model?.toLowerCase().includes(q) === true\n );\n}\n\nconst STATUS_PREDICATES: Record<\n Exclude<DashboardStatusValue, \"all\">,\n (automation: Automation, health: AutomationHealth) => boolean\n> = {\n active: (automation) => automation.enabled,\n failing: (_automation, health) => health === \"failing\",\n disabled: (automation) => !automation.enabled,\n};\n\nconst TRIGGER_PREDICATES: Record<\n Exclude<DashboardTriggerValue, \"all\">,\n (automation: Automation) => boolean\n> = {\n // The backend emits several scheduled-trigger aliases, so \"event\" is the\n // one exact kind and everything else is a schedule.\n event: (automation) => automation.trigger.type === \"event\",\n schedule: (automation) => automation.trigger.type !== \"event\",\n};\n\nfunction runCount(automation: Automation, byId: Summaries): number {\n return byId.get(automation.id)?.summary?.total ?? 0;\n}\n\nfunction lastRunTime(automation: Automation, byId: Summaries): number {\n const startedAt =\n byId.get(automation.id)?.summary?.latestRun?.started_at ??\n automation.last_triggered_at;\n if (!startedAt) return 0;\n const time = new Date(startedAt).getTime();\n return Number.isFinite(time) ? time : 0;\n}\n\nconst SORT_COMPARATORS: Record<\n DashboardSortValue,\n (a: Automation, b: Automation, byId: Summaries) => number\n> = {\n \"last-run\": (a, b, byId) => lastRunTime(b, byId) - lastRunTime(a, byId),\n runs: (a, b, byId) => runCount(b, byId) - runCount(a, byId),\n name: (a, b) => a.name.localeCompare(b.name),\n};\n\nexport interface DashboardViewState {\n search: string;\n status: DashboardStatusValue;\n trigger: DashboardTriggerValue;\n sort: DashboardSortValue;\n}\n\n/** The automations the dashboard shows, filtered and ordered. */\nexport function applyDashboardView(\n automations: readonly Automation[],\n view: DashboardViewState,\n byId: Summaries,\n): Automation[] {\n return automations\n .filter((automation) => {\n if (!matchesAutomationSearch(automation, view.search)) return false;\n if (\n view.status !== \"all\" &&\n !STATUS_PREDICATES[view.status](\n automation,\n deriveAutomationHealth(automation, byId.get(automation.id)),\n )\n ) {\n return false;\n }\n if (\n view.trigger !== \"all\" &&\n !TRIGGER_PREDICATES[view.trigger](automation)\n ) {\n return false;\n }\n return true;\n })\n .sort((a, b) => SORT_COMPARATORS[view.sort](a, b, byId));\n}\n\nexport interface OverviewTileValue {\n /** The formatted value the tile displays. */\n display: string;\n /** True when the metric's value is zero, which swaps in `zeroDetail`. */\n isZero: boolean;\n /** Values the tile's copy may substitute via `{{name}}`. */\n placeholderValues: Record<string, string | number>;\n}\n\nfunction loadedSummaries(\n automations: readonly Automation[],\n byId: Summaries,\n): AutomationRunSummary[] {\n return automations.flatMap((automation) => {\n const state = byId.get(automation.id);\n return state?.summary && !state.isLoading && !state.isError\n ? [state.summary]\n : [];\n });\n}\n\nconst TILE_COMPUTATIONS: Record<\n OverviewMetric,\n (automations: readonly Automation[], byId: Summaries) => OverviewTileValue\n> = {\n automations: (automations) => ({\n display: automations.length.toLocaleString(),\n isZero: automations.length === 0,\n placeholderValues: {\n active: automations.filter((automation) => automation.enabled).length,\n },\n }),\n \"needs-attention\": (automations, byId) => {\n const failing = automations.filter(\n (automation) =>\n deriveAutomationHealth(automation, byId.get(automation.id)) ===\n \"failing\",\n ).length;\n return {\n display: failing.toLocaleString(),\n isZero: failing === 0,\n placeholderValues: {},\n };\n },\n \"total-runs\": (automations, byId) => {\n const loaded = loadedSummaries(automations, byId);\n if (loaded.length === 0 && automations.length > 0) {\n return { display: \"—\", isZero: false, placeholderValues: {} };\n }\n const total = loaded.reduce((sum, summary) => sum + summary.total, 0);\n return {\n display: total.toLocaleString(),\n isZero: total === 0,\n placeholderValues: {},\n };\n },\n \"average-duration\": (automations, byId) => {\n const durations = loadedSummaries(automations, byId).flatMap((summary) =>\n summary.averageDurationMs === null ? [] : [summary.averageDurationMs],\n );\n const mean =\n durations.length === 0\n ? null\n : durations.reduce((sum, ms) => sum + ms, 0) / durations.length;\n return {\n display: formatCompactDuration(mean),\n isZero: false,\n placeholderValues: {},\n };\n },\n};\n\n/** The value behind one manifest-declared tile. */\nexport function computeOverviewTile(\n metric: OverviewMetric,\n automations: readonly Automation[],\n byId: Summaries,\n): OverviewTileValue {\n return TILE_COMPUTATIONS[metric](automations, byId);\n}\n"],"mappings":"wFAuE0B,IAAI,IAAyB,CACrD,EAAA,oBAAoB,UACpB,EAAA,oBAAoB,MACtB,CAAC,EAyDD,SAAgB,EAAsB,EAA2B,CAI/D,OAHI,IAAO,MAAQ,CAAC,OAAO,SAAS,CAAE,EAAU,IAC5C,EAAK,IAAe,GAAG,KAAK,IAAI,EAAG,KAAK,MAAM,EAAK,GAAI,CAAC,EAAE,GAC1D,EAAK,KAAkB,GAAG,KAAK,IAAI,EAAG,KAAK,MAAM,EAAK,GAAM,CAAC,EAAE,GAC5D,IAAI,EAAK,MAAW,QAAQ,CAAC,EAAE,EACxC"}
1
+ {"version":3,"file":"automation-insights.cjs","names":[],"sources":["../../src/manifests/automation-insights.ts"],"sourcesContent":["/**\n * The dashboard's automation knowledge, and the only module beside\n * `automation-setup.ts` that has any.\n *\n * The interface manifest's dashboard surface names metrics, filter predicates,\n * and sort comparators from closed sets; the one implementation of each name\n * is here, over the automation service's list and runs responses, so the rest\n * of `src/manifests/` stays about composition rather than about automations.\n *\n * Summaries are derived from the newest page of runs (the sample the runs\n * hook fetches); `total` alone is the response's lifetime count. Success rate\n * and durations consider only terminal lifecycle runs; the success numerator\n * uses task-aware display status so completed-but-blocked work is not counted\n * as successful.\n */\n\nimport {\n AutomationRunStatus,\n type Automation,\n type AutomationRun,\n type AutomationRunsResponse,\n} from \"#/types/automation\";\nimport { getAutomationRunDisplay } from \"#/utils/automation-run-display\";\nimport type {\n DashboardSortValue,\n DashboardStatusValue,\n DashboardTriggerValue,\n InterfaceListInsights,\n OverviewMetric,\n} from \"./types\";\n\nexport type AutomationHealth =\n | \"healthy\"\n | \"failing\"\n | \"running\"\n | \"disabled\"\n | \"never-run\"\n | \"unknown\";\n\n/** Which caption of the manifest's `insights.health` block names each state. */\nexport const HEALTH_LABEL_KEYS: Record<\n AutomationHealth,\n keyof InterfaceListInsights[\"health\"]\n> = {\n healthy: \"healthy\",\n failing: \"failing\",\n running: \"running\",\n disabled: \"disabled\",\n \"never-run\": \"neverRun\",\n unknown: \"checking\",\n};\n\nexport interface AutomationRunSummary {\n /** Lifetime run count, from the response — not the sample's length. */\n total: number;\n /**\n * Lifetime COMPLETED-run count. From the response's `status_counts` when\n * the service reports it; an older service leaves that out, so the sample\n * stands in exactly when it holds the whole history (`total` ≤ its length)\n * and the count is null — unknowable, never guessed — otherwise.\n */\n completedTotal: number | null;\n latestRun: AutomationRun | null;\n /** Newest-first sample used by the list sparkline (same page as the summary). */\n recentRuns: AutomationRun[];\n /** COMPLETED over COMPLETED+FAILED in the sample. Null with no terminal runs. */\n recentSuccessRate: number | null;\n /** Mean completed_at − started_at over the sample's terminal runs. */\n averageDurationMs: number | null;\n}\n\n/** One automation's summary alongside its query state. */\nexport interface RunSummaryState {\n summary: AutomationRunSummary | null;\n isLoading: boolean;\n isError: boolean;\n}\n\ntype Summaries = ReadonlyMap<string, RunSummaryState>;\n\nconst TERMINAL_STATUSES = new Set<AutomationRunStatus>([\n AutomationRunStatus.COMPLETED,\n AutomationRunStatus.FAILED,\n]);\n\nfunction isTaskSuccessful(run: AutomationRun): boolean {\n const { badgeStatus } = getAutomationRunDisplay(run);\n return (\n badgeStatus === AutomationRunStatus.COMPLETED || badgeStatus === \"success\"\n );\n}\n\nfunction isTaskFailing(run: AutomationRun): boolean {\n const { badgeStatus } = getAutomationRunDisplay(run);\n return (\n badgeStatus === AutomationRunStatus.FAILED ||\n badgeStatus === \"failed\" ||\n badgeStatus === \"blocked\"\n );\n}\n\nexport function summarizeAutomationRuns(\n response: AutomationRunsResponse,\n): AutomationRunSummary {\n const terminal = response.runs.filter((run) =>\n TERMINAL_STATUSES.has(run.status),\n );\n const completed = terminal.filter(isTaskSuccessful).length;\n\n let completedTotal: number | null;\n if (response.status_counts) {\n completedTotal = response.status_counts[AutomationRunStatus.COMPLETED] ?? 0;\n } else if (response.total <= response.runs.length) {\n completedTotal = completed;\n } else {\n completedTotal = null;\n }\n\n const durations = terminal.flatMap((run) => {\n if (!run.completed_at) return [];\n const ms =\n new Date(run.completed_at).getTime() - new Date(run.started_at).getTime();\n return Number.isFinite(ms) && ms >= 0 ? [ms] : [];\n });\n\n return {\n total: response.total,\n completedTotal,\n latestRun: response.runs[0] ?? null,\n recentRuns: response.runs,\n recentSuccessRate:\n terminal.length === 0 ? null : completed / terminal.length,\n averageDurationMs:\n durations.length === 0\n ? null\n : durations.reduce((sum, ms) => sum + ms, 0) / durations.length,\n };\n}\n\n/**\n * A disabled automation is disabled no matter its history; while the summary\n * is unsettled nothing is claimed; after that the latest run speaks.\n */\nexport function deriveAutomationHealth(\n automation: Automation,\n state: RunSummaryState | undefined,\n): AutomationHealth {\n if (!automation.enabled) return \"disabled\";\n if (!state || state.isError || state.isLoading || !state.summary) {\n return \"unknown\";\n }\n const latest = state.summary.latestRun;\n if (!latest) return \"never-run\";\n if (isTaskFailing(latest)) return \"failing\";\n if (\n latest.status === AutomationRunStatus.PENDING ||\n latest.status === AutomationRunStatus.RUNNING\n ) {\n return \"running\";\n }\n return isTaskSuccessful(latest) ? \"healthy\" : \"unknown\";\n}\n\n/** \"—\" unknown, seconds under a minute, minutes under an hour, else \"1.5h\". */\nexport function formatCompactDuration(ms: number | null): string {\n if (ms === null || !Number.isFinite(ms)) return \"—\";\n if (ms < 60_000) return `${Math.max(1, Math.round(ms / 1000))}s`;\n if (ms < 3_600_000) return `${Math.max(1, Math.round(ms / 60_000))}m`;\n return `${(ms / 3_600_000).toFixed(1)}h`;\n}\n\n/** The list page's search predicate: name, prompt, repository, or model. */\nexport function matchesAutomationSearch(\n automation: Automation,\n query: string,\n): boolean {\n const q = query.toLowerCase();\n if (!q) return true;\n return (\n automation.name.toLowerCase().includes(q) ||\n (automation.prompt ?? \"\").toLowerCase().includes(q) ||\n automation.repository?.toLowerCase().includes(q) === true ||\n automation.model?.toLowerCase().includes(q) === true\n );\n}\n\nconst STATUS_PREDICATES: Record<\n Exclude<DashboardStatusValue, \"all\">,\n (automation: Automation, health: AutomationHealth) => boolean\n> = {\n active: (automation) => automation.enabled,\n failing: (_automation, health) => health === \"failing\",\n disabled: (automation) => !automation.enabled,\n};\n\nconst TRIGGER_PREDICATES: Record<\n Exclude<DashboardTriggerValue, \"all\">,\n (automation: Automation) => boolean\n> = {\n // The backend emits several scheduled-trigger aliases, so \"event\" is the\n // one exact kind and everything else is a schedule.\n event: (automation) => automation.trigger.type === \"event\",\n schedule: (automation) => automation.trigger.type !== \"event\",\n};\n\nfunction runCount(automation: Automation, byId: Summaries): number {\n return byId.get(automation.id)?.summary?.total ?? 0;\n}\n\nfunction lastRunTime(automation: Automation, byId: Summaries): number {\n const startedAt =\n byId.get(automation.id)?.summary?.latestRun?.started_at ??\n automation.last_triggered_at;\n if (!startedAt) return 0;\n const time = new Date(startedAt).getTime();\n return Number.isFinite(time) ? time : 0;\n}\n\nconst SORT_COMPARATORS: Record<\n DashboardSortValue,\n (a: Automation, b: Automation, byId: Summaries) => number\n> = {\n \"last-run\": (a, b, byId) => lastRunTime(b, byId) - lastRunTime(a, byId),\n runs: (a, b, byId) => runCount(b, byId) - runCount(a, byId),\n name: (a, b) => a.name.localeCompare(b.name),\n};\n\nexport interface DashboardViewState {\n search: string;\n status: DashboardStatusValue;\n trigger: DashboardTriggerValue;\n sort: DashboardSortValue;\n}\n\n/** The automations the dashboard shows, filtered and ordered. */\nexport function applyDashboardView(\n automations: readonly Automation[],\n view: DashboardViewState,\n byId: Summaries,\n): Automation[] {\n return automations\n .filter((automation) => {\n if (!matchesAutomationSearch(automation, view.search)) return false;\n if (\n view.status !== \"all\" &&\n !STATUS_PREDICATES[view.status](\n automation,\n deriveAutomationHealth(automation, byId.get(automation.id)),\n )\n ) {\n return false;\n }\n if (\n view.trigger !== \"all\" &&\n !TRIGGER_PREDICATES[view.trigger](automation)\n ) {\n return false;\n }\n return true;\n })\n .sort((a, b) => SORT_COMPARATORS[view.sort](a, b, byId));\n}\n\nexport interface OverviewTileValue {\n /** The formatted value the tile displays. */\n display: string;\n /** True when the metric's value is zero, which swaps in `zeroDetail`. */\n isZero: boolean;\n /** Values the tile's copy may substitute via `{{name}}`. */\n placeholderValues: Record<string, string | number>;\n}\n\nfunction loadedSummaries(\n automations: readonly Automation[],\n byId: Summaries,\n): AutomationRunSummary[] {\n return automations.flatMap((automation) => {\n const state = byId.get(automation.id);\n return state?.summary && !state.isLoading && !state.isError\n ? [state.summary]\n : [];\n });\n}\n\nconst TILE_COMPUTATIONS: Record<\n OverviewMetric,\n (automations: readonly Automation[], byId: Summaries) => OverviewTileValue\n> = {\n automations: (automations) => ({\n display: automations.length.toLocaleString(),\n isZero: automations.length === 0,\n placeholderValues: {\n active: automations.filter((automation) => automation.enabled).length,\n },\n }),\n \"needs-attention\": (automations, byId) => {\n const failing = automations.filter(\n (automation) =>\n deriveAutomationHealth(automation, byId.get(automation.id)) ===\n \"failing\",\n ).length;\n return {\n display: failing.toLocaleString(),\n isZero: failing === 0,\n placeholderValues: {},\n };\n },\n \"total-runs\": (automations, byId) => {\n const loaded = loadedSummaries(automations, byId);\n if (loaded.length === 0 && automations.length > 0) {\n return { display: \"—\", isZero: false, placeholderValues: {} };\n }\n const total = loaded.reduce((sum, summary) => sum + summary.total, 0);\n return {\n display: total.toLocaleString(),\n isZero: total === 0,\n placeholderValues: {},\n };\n },\n \"average-duration\": (automations, byId) => {\n const durations = loadedSummaries(automations, byId).flatMap((summary) =>\n summary.averageDurationMs === null ? [] : [summary.averageDurationMs],\n );\n const mean =\n durations.length === 0\n ? null\n : durations.reduce((sum, ms) => sum + ms, 0) / durations.length;\n return {\n display: formatCompactDuration(mean),\n isZero: false,\n placeholderValues: {},\n };\n },\n};\n\n/** The value behind one manifest-declared tile. */\nexport function computeOverviewTile(\n metric: OverviewMetric,\n automations: readonly Automation[],\n byId: Summaries,\n): OverviewTileValue {\n return TILE_COMPUTATIONS[metric](automations, byId);\n}\n"],"mappings":"wFAgF0B,IAAI,IAAyB,CACrD,EAAA,oBAAoB,UACpB,EAAA,oBAAoB,MACtB,CAAC,EAiFD,SAAgB,EAAsB,EAA2B,CAI/D,OAHI,IAAO,MAAQ,CAAC,OAAO,SAAS,CAAE,EAAU,IAC5C,EAAK,IAAe,GAAG,KAAK,IAAI,EAAG,KAAK,MAAM,EAAK,GAAI,CAAC,EAAE,GAC1D,EAAK,KAAkB,GAAG,KAAK,IAAI,EAAG,KAAK,MAAM,EAAK,GAAM,CAAC,EAAE,GAC5D,IAAI,EAAK,MAAW,QAAQ,CAAC,EAAE,EACxC"}
@@ -9,8 +9,9 @@
9
9
  *
10
10
  * Summaries are derived from the newest page of runs (the sample the runs
11
11
  * hook fetches); `total` alone is the response's lifetime count. Success rate
12
- * and durations consider only COMPLETED and FAILED runs a cancelled or
13
- * skipped run says nothing about either.
12
+ * and durations consider only terminal lifecycle runs; the success numerator
13
+ * uses task-aware display status so completed-but-blocked work is not counted
14
+ * as successful.
14
15
  */
15
16
  import { type Automation, type AutomationRun, type AutomationRunsResponse } from "#/types/automation";
16
17
  import type { DashboardSortValue, DashboardStatusValue, DashboardTriggerValue, InterfaceListInsights, OverviewMetric } from "./types";
@@ -20,6 +21,13 @@ export declare const HEALTH_LABEL_KEYS: Record<AutomationHealth, keyof Interface
20
21
  export interface AutomationRunSummary {
21
22
  /** Lifetime run count, from the response — not the sample's length. */
22
23
  total: number;
24
+ /**
25
+ * Lifetime COMPLETED-run count. From the response's `status_counts` when
26
+ * the service reports it; an older service leaves that out, so the sample
27
+ * stands in exactly when it holds the whole history (`total` ≤ its length)
28
+ * and the count is null — unknowable, never guessed — otherwise.
29
+ */
30
+ completedTotal: number | null;
23
31
  latestRun: AutomationRun | null;
24
32
  /** Newest-first sample used by the list sparkline (same page as the summary). */
25
33
  recentRuns: AutomationRun[];