@openhands/agent-canvas 1.5.2 → 1.6.1

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 (711) hide show
  1. package/README.md +1 -1
  2. package/README.windows.md +2 -2
  3. package/build/assets/{Trans-DqF_OEZB.js → Trans-52HCczKK.js} +1 -1
  4. package/build/assets/{acp-providers-DerAmTyY.js → acp-providers-xACMK9ZP.js} +1 -1
  5. package/build/assets/{active-backend-context-DHhm10VS.js → active-backend-context-Cd1qcZsb.js} +1 -1
  6. package/build/assets/{add-backend-modal-BoMkMyLB.js → add-backend-modal-5chsfln3.js} +1 -1
  7. package/build/assets/{agent-profiles-settings-CYPloKYK.js → agent-profiles-settings-BWK4H3kR.js} +1 -1
  8. package/build/assets/agent-server-compatibility-DMY0CihN.js +1 -0
  9. package/build/assets/agent-server-conversation-service.api-CI5-xmIX.js +41 -0
  10. package/build/assets/agent-settings-CMd8-O4f.js +2 -0
  11. package/build/assets/agent-settings-CdrhQJXX.js +1 -0
  12. package/build/assets/{alert-banner-Dh51WURQ.js → alert-banner-CLfWuIAX.js} +1 -1
  13. package/build/assets/api-key-entry-screen-Cc3aC7DZ.js +1 -0
  14. package/build/assets/app-settings-B-DQcBoB.js +1 -0
  15. package/build/assets/{automation-detail-Bn8q0AG3.js → automation-detail-BgxBIpyK.js} +2 -2
  16. package/build/assets/automation-export-Dbur8OHa.js +2 -0
  17. package/build/assets/automations-list-BWfjizlp.js +1 -0
  18. package/build/assets/{back-nav-button-DVknCcSP.js → back-nav-button-CaKvsD1E.js} +1 -1
  19. package/build/assets/backend-form-modal-YcfpuBZo.js +1 -0
  20. package/build/assets/{backend-synced-settings-badge-yVh6Kf4E.js → backend-synced-settings-badge-BellMmgC.js} +1 -1
  21. package/build/assets/{base-modal-CIF_785P.js → base-modal-Cw7enAHz.js} +1 -1
  22. package/build/assets/{brand-button-B1izLAdR.js → brand-button-BulEFHr3.js} +1 -1
  23. package/build/assets/{browser-DKaeq_sT.js → browser-DfVgUREb.js} +2 -2
  24. package/build/assets/browser-store-CBqI3tNR.js +1 -0
  25. package/build/assets/{browser-tab-qb_ftCxW.js → browser-tab-CmIKQB7S.js} +1 -1
  26. package/build/assets/chat-send-button-BchSSwuD.js +1 -0
  27. package/build/assets/circle-check-BXbQ5nEH.js +1 -0
  28. package/build/assets/{circle-plus-check-toggle-DoFIjVE0.js → circle-plus-check-toggle-BhpPjkh9.js} +1 -1
  29. package/build/assets/client-source-DAUgyJsi.js +1 -0
  30. package/build/assets/cloud-funnel-analytics-B5OeWh4y.js +1 -0
  31. package/build/assets/{color-themes-CHizm1xF.js → color-themes-QKMSVfDU.js} +1 -1
  32. package/build/assets/{combobox-caret-CxZpqoSR.js → combobox-caret-kNZtp53R.js} +1 -1
  33. package/build/assets/{command-menu-oTvKDU3Y.js → command-menu-tUsn23zy.js} +1 -1
  34. package/build/assets/{command-store-D8J5LMW1.js → command-store-B0hrIWMN.js} +1 -1
  35. package/build/assets/{condenser-settings-Q1rHh4Qe.js → condenser-settings-BBizzfIH.js} +1 -1
  36. package/build/assets/{confirmation-modal-DGBWM2Ls.js → confirmation-modal-108xng7X.js} +1 -1
  37. package/build/assets/{context-menu-list-item-6psNyl7X.js → context-menu-list-item-BbKfFuN1.js} +1 -1
  38. package/build/assets/conversation-CTzSrLMq.js +1 -0
  39. package/build/assets/conversation-CgcXNb-Z.js +90 -0
  40. package/build/assets/conversation-panel-bscjGQda.js +1 -0
  41. package/build/assets/{conversation-service.api-D8QU-BiL.js → conversation-service.api-DbBvscJA.js} +1 -1
  42. package/build/assets/conversation-state-store-C5GagZHT.js +1 -0
  43. package/build/assets/{conversation-store-LptbOvKa.js → conversation-store-CyVqoa0d.js} +1 -1
  44. package/build/assets/{conversation-tab-empty-state-CNUmIms2.js → conversation-tab-empty-state-2KYlk5Bh.js} +1 -1
  45. package/build/assets/{copy-to-clipboard-button-CFzH_NOX.js → copy-to-clipboard-button-C54YRPMg.js} +1 -1
  46. package/build/assets/declaration-_yumYLEx.js +1 -0
  47. package/build/assets/{device-verify-WBSjJBLH.js → device-verify-D6FW_KZq.js} +1 -1
  48. package/build/assets/{dropdown-classes-D3wMJlXT.js → dropdown-classes-9uONlOg1.js} +1 -1
  49. package/build/assets/{ellipsis-button-CbNnHlIq.js → ellipsis-button-CoaUrKmQ.js} +1 -1
  50. package/build/assets/{entry.client-Dnnak-Hq.js → entry.client-BJSVzw7V.js} +2 -2
  51. package/build/assets/{enum-filter-dropdown-JLYv1t8L.js → enum-filter-dropdown-qQzyjk_q.js} +1 -1
  52. package/build/assets/{environment-switch-overlay-B1PFO8P8.js → environment-switch-overlay-XRWCClLu.js} +1 -1
  53. package/build/assets/extensions-hub-DUp9sWQY.js +1 -0
  54. package/build/assets/extensions-navigation-DmkftjAx.js +1 -0
  55. package/build/assets/file-tUAzhmJ3.js +1 -0
  56. package/build/assets/files-tab-GV5hwiIM.js +1 -0
  57. package/build/assets/files-tab-store-DehyITNC.js +1 -0
  58. package/build/assets/{form-control-classes-CbdN5aO3.js → form-control-classes-BPUnoYyg.js} +1 -1
  59. package/build/assets/git-provider-icon-DDkru3b_.js +1 -0
  60. package/build/assets/highlighted-source-view-CYkPZUxr.js +1 -0
  61. package/build/assets/home-C53WekZ2.js +1 -0
  62. package/build/assets/home-EAwq8ah2.js +1 -0
  63. package/build/assets/index-home-kBdZGKtu.js +1 -0
  64. package/build/assets/install-server-modal-DYk4VP3-.js +1 -0
  65. package/build/assets/{launch-DlXspDku.js → launch-CIecOy_y.js} +1 -1
  66. package/build/assets/lesson-plan-BSEUwflx.js +4 -0
  67. package/build/assets/llm-not-configured-banner-C8uv1PHT.js +27 -0
  68. package/build/assets/llm-settings-0Bb97NCk.js +1 -0
  69. package/build/assets/llm-settings-D4toJ90k.js +1 -0
  70. package/build/assets/{llm-subscription-service-C0zN0-rH.js → llm-subscription-service-BPRw3u3H.js} +1 -1
  71. package/build/assets/{loading-spinner-BcdnT0mN.js → loading-spinner-BCInDEXB.js} +1 -1
  72. package/build/assets/manage-backends-modal-Bon32JYr.js +1 -0
  73. package/build/assets/manifest-ec000ae3.js +1 -0
  74. package/build/assets/markdown-renderer-BlaJOAI2.js +2 -0
  75. package/build/assets/mcp-CFIpOkn2.js +9 -0
  76. package/build/assets/messages-eRPeR4pW.js +40 -0
  77. package/build/assets/{modal-body-Cc2zp0xb.js → modal-body-Bg9UCeoV.js} +1 -1
  78. package/build/assets/{modal-classes-3qT9Ap7Q.js → modal-classes-H1KbJkeC.js} +1 -1
  79. package/build/assets/{modal-close-button-BcIBUdSq.js → modal-close-button-BMLYvo0C.js} +1 -1
  80. package/build/assets/{model-selector-D51W2Q9b.js → model-selector-BqX2RvEr.js} +1 -1
  81. package/build/assets/{navigation-link-D8hfwvxI.js → navigation-link-DoJzTCEz.js} +1 -1
  82. package/build/assets/onboarding-3KO4qE6R.js +1 -0
  83. package/build/assets/onboarding-modal-D4vqkJeT.js +1 -0
  84. package/build/assets/{organization-service.api-Da2jiuBS.js → organization-service.api-CvfQugOt.js} +1 -1
  85. package/build/assets/{path-utils-D53ZHUQU.js → path-utils-DRgexxnX.js} +1 -1
  86. package/build/assets/{plan-components-BdZXPyZU.js → plan-components-qkMiGs_-.js} +1 -1
  87. package/build/assets/{planner-tab-BM-pKx0z.js → planner-tab-ZrjiirRr.js} +1 -1
  88. package/build/assets/{plugins-management-service-DISfOL13.js → plugins-management-service-9qT-r_37.js} +1 -1
  89. package/build/assets/plus-CzE1b-wl.js +1 -0
  90. package/build/assets/{profiles-service.api-DWetW2TL.js → profiles-service.api-CRVlrQpT.js} +1 -1
  91. package/build/assets/{providers-C7lMslCi.js → providers-C2DFGBrf.js} +1 -1
  92. package/build/assets/{proxy-G4ce0fnQ.js → proxy-DnnDqkwn.js} +1 -1
  93. package/build/assets/puzzle-IHQnD54C.js +1 -0
  94. package/build/assets/recommended-automations-launcher-B97vgHuN.js +58 -0
  95. package/build/assets/refresh-cw-DxbAs3SK.js +1 -0
  96. package/build/assets/root-BbONavTg.css +1 -0
  97. package/build/assets/root-D01rpqZU.js +2 -0
  98. package/build/assets/root-layout-BiHbCIkS.js +2 -0
  99. package/build/assets/{runtime-waiting-state-CnyVhX4T.js → runtime-waiting-state-CbUV9txX.js} +1 -1
  100. package/build/assets/{schema-field-CwdqUOnE.js → schema-field-B9-9Ta9u.js} +1 -1
  101. package/build/assets/sdk-section-page-DG1s25Pr.js +1 -0
  102. package/build/assets/{sdk-settings-schema-CLR01YIK.js → sdk-settings-schema-B42JFr5Y.js} +1 -1
  103. package/build/assets/{secrets-service-Ch7RH8eH.js → secrets-service-DvyS6-mV.js} +1 -1
  104. package/build/assets/secrets-settings-CeSq6cQw.js +1 -0
  105. package/build/assets/{segmented-toggle-kzwZkLaj.js → segmented-toggle-DRVJBNy0.js} +1 -1
  106. package/build/assets/settings-Dzo0dJKM.js +1 -0
  107. package/build/assets/{settings-mQUckT0g.js → settings-HcwfqMjJ.js} +1 -1
  108. package/build/assets/{settings-dropdown-input-Dhx9ErGd.js → settings-dropdown-input-B6RL_mt0.js} +1 -1
  109. package/build/assets/settings-index-uAKHyijw.js +1 -0
  110. package/build/assets/{settings-input-BsgQWS5R.js → settings-input-ZoaAPNQh.js} +1 -1
  111. package/build/assets/{settings-list-classes-DSJJX99U.js → settings-list-classes-Dr8LgITi.js} +1 -1
  112. package/build/assets/settings-modal-BVX2G_IT.js +1 -0
  113. package/build/assets/{settings-service.api-DPTFyRXL.js → settings-service.api-BY7ncxIz.js} +1 -1
  114. package/build/assets/{settings-switch-Bes8dIlV.js → settings-switch-DUlGnP0B.js} +1 -1
  115. package/build/assets/{settings-utils-DzCVfiR3.js → settings-utils-kWEEvcdv.js} +1 -1
  116. package/build/assets/shared-conversation-CV4Rtdz2.js +1 -0
  117. package/build/assets/{sidebar-layout-Bm7pa3Vk.js → sidebar-layout-BhGooCga.js} +1 -1
  118. package/build/assets/sidebar-mobile-menu-toggle-BntOJphE.js +1 -0
  119. package/build/assets/{sidebar-nav-link-CHqyFXwV.js → sidebar-nav-link-DkA1XWV8.js} +1 -1
  120. package/build/assets/{sidebar-store-uiUXBU1N.js → sidebar-store-CF3b12-m.js} +1 -1
  121. package/build/assets/{skill-card-pill-row-BPYKQ3IN.js → skill-card-pill-row-_gWe1Tws.js} +1 -1
  122. package/build/assets/skill-icon-badge-C-zbaXbD.js +1 -0
  123. package/build/assets/skills-plugins-BwoXKtrR.js +1 -0
  124. package/build/assets/skills-settings-Crq-fZSt.js +2 -0
  125. package/build/assets/{styled-tooltip-B14i_Uac.js → styled-tooltip-CdnCJ67u.js} +1 -1
  126. package/build/assets/syntax-highlighter-CZK2ab-O.js +1 -0
  127. package/build/assets/{task-list-tab-DyfgG4MC.js → task-list-tab-CONOO9iI.js} +1 -1
  128. package/build/assets/telemetry-CC32dJYW.js +2 -0
  129. package/build/assets/{terminal-BDTa1HEr.js → terminal-CTkDpIU-.js} +1 -1
  130. package/build/assets/{toggle-switch-DX_k418f.js → toggle-switch-yVIzmJLM.js} +1 -1
  131. package/build/assets/{typography-CzfoD9DY.js → typography-BBVEW0un.js} +1 -1
  132. package/build/assets/{use-acp-credential-form-DHd_Id-q.js → use-acp-credential-form-CIsp8hJe.js} +1 -1
  133. package/build/assets/use-activate-agent-profile-BfcTTJJG.js +1 -0
  134. package/build/assets/{use-active-agent-profile-BMDTXsay.js → use-active-agent-profile-CCeFtmk9.js} +1 -1
  135. package/build/assets/{use-active-conversation-BbeVgedA.js → use-active-conversation-Badxj8w4.js} +1 -1
  136. package/build/assets/{use-agent-profiles-Dn_S_Tkz.js → use-agent-profiles-BSWVN6hH.js} +1 -1
  137. package/build/assets/{use-agent-state-5qM3X30V.js → use-agent-state-BzRrhoPd.js} +1 -1
  138. package/build/assets/use-backends-health-BsZikyFW.js +1 -0
  139. package/build/assets/{use-can-manage-org-profiles-CyYqfzeo.js → use-can-manage-org-profiles-Do6mYf6P.js} +1 -1
  140. package/build/assets/{use-cloud-current-user-id-BwMX7jHW.js → use-cloud-current-user-id-Cx3B_0-w.js} +1 -1
  141. package/build/assets/use-config-D9zUVw5b.js +1 -0
  142. package/build/assets/{use-create-conversation-CkKUQVbP.js → use-create-conversation-vvl0kvu7.js} +1 -1
  143. package/build/assets/{use-create-secret-DEgM0MXZ.js → use-create-secret-CB7Dvd4s.js} +1 -1
  144. package/build/assets/use-event-store-BlpSUF7N.js +4 -0
  145. package/build/assets/{use-handle-plan-click-BFcE0Xms.js → use-handle-plan-click-DDZkew9p.js} +1 -1
  146. package/build/assets/use-is-creating-conversation-fxSzN778.js +1 -0
  147. package/build/assets/{use-launch-skill-in-chat-DJWEfVc5.js → use-launch-skill-in-chat-D6_n1fs3.js} +1 -1
  148. package/build/assets/use-llm-profiles-CNQm7HYS.js +1 -0
  149. package/build/assets/use-plugins-marketplace-CloojomS.js +1 -0
  150. package/build/assets/use-runtime-is-ready-Bx_4cfar.js +1 -0
  151. package/build/assets/{use-save-agent-profile-i4FcEP98.js → use-save-agent-profile-Bj7N-1jS.js} +1 -1
  152. package/build/assets/{use-save-settings-DiDEbIJw.js → use-save-settings-BMsb2wk_.js} +1 -1
  153. package/build/assets/use-settings-B9XEmh7i.js +1 -0
  154. package/build/assets/use-settings-nav-items-BGfBS0yL.js +16 -0
  155. package/build/assets/{use-skills-Blpg2BqE.js → use-skills-CSRbvPle.js} +1 -1
  156. package/build/assets/{use-task-list-CfisapBW.js → use-task-list-CTIVLrQA.js} +1 -1
  157. package/build/assets/use-tracking-DjdCssvp.js +1 -0
  158. package/build/assets/{use-user-conversation-BrN2xeQU.js → use-user-conversation-BCpFn-Ei.js} +1 -1
  159. package/build/assets/{useTranslation-Cbf5AGg_.js → useTranslation-CHm_6BRr.js} +1 -1
  160. package/build/assets/{utils-DB9LsAzA.js → utils-CrRpzbM2.js} +1 -1
  161. package/build/assets/vendor-markdown-DzO4uO_0.js +37 -0
  162. package/build/assets/{vendor~browser-wXQ-WZEC.js → vendor~browser-Byfuq5J-.js} +1 -1
  163. package/build/assets/{vendor~browser-tab-CsMb-pta.js → vendor~browser-tab-BLk3qxhw.js} +1 -1
  164. package/build/assets/{vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~dhilvkxv-eGLBu60s.js → vendor~entry.client~root~root-layout~index-home~home~conversation-panel~conversation~launch~dhilvkxv-DTJ_cjR5.js} +2 -2
  165. package/build/assets/{vendor~files-tab-B-5fBohe.js → vendor~files-tab-XmnauIZI.js} +1 -1
  166. package/build/assets/{vendor~launch-_Km3J77E.js → vendor~launch-DeC8QhXQ.js} +1 -1
  167. package/build/assets/{vendor~root-layout~conversation-panel~conversation~shared-conversation-BrguKXCn.js → vendor~root-layout~conversation-panel~conversation~shared-conversation-DDmLzCzm.js} +1 -1
  168. package/build/assets/vendor~root-layout~index-home~home~conversation-panel~conversation-YrfJYTQw.js +1 -0
  169. package/build/assets/{vendor~root-layout~index-home~home~conversation-panel~conversation~launch~skills-settings~a~j2jlu22h-mC0v44WR.js → vendor~root-layout~index-home~home~conversation-panel~conversation~launch~skills-settings~a~j2jlu22h-DoaS51iW.js} +123 -3
  170. package/build/assets/{vendor~root-layout~index-home~home~conversation-panel~conversation~shared-conversation~aler~gfu7qdtz-BOKQkbc6.js → vendor~root-layout~index-home~home~conversation-panel~conversation~shared-conversation~aler~gfu7qdtz-DEYwoy8u.js} +1 -1
  171. package/build/assets/vendor~root-layout~index-home~home~mcp~automations-list~onboarding-modal-DZHLw5Sr.js +1 -0
  172. package/build/assets/{vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~extensions-h~ftka0fnu-cFNmfAE6.js → vendor~root~root-layout~index-home~home~conversation-panel~conversation~launch~extensions-h~ftka0fnu-UJ4BNDJP.js} +1 -1
  173. package/build/assets/{verification-settings-C8KzAdAX.js → verification-settings-uwOfc16F.js} +1 -1
  174. package/build/index.html +4 -4
  175. package/build/locales/ar/openhands.json +38 -4
  176. package/build/locales/ca/openhands.json +38 -4
  177. package/build/locales/de/openhands.json +38 -4
  178. package/build/locales/en/openhands.json +38 -4
  179. package/build/locales/es/openhands.json +38 -4
  180. package/build/locales/fr/openhands.json +38 -4
  181. package/build/locales/it/openhands.json +38 -4
  182. package/build/locales/ja/openhands.json +38 -4
  183. package/build/locales/ko-KR/openhands.json +38 -4
  184. package/build/locales/no/openhands.json +38 -4
  185. package/build/locales/pt/openhands.json +38 -4
  186. package/build/locales/tr/openhands.json +38 -4
  187. package/build/locales/uk/openhands.json +38 -4
  188. package/build/locales/zh-CN/openhands.json +38 -4
  189. package/build/locales/zh-TW/openhands.json +38 -4
  190. package/config/defaults.json +7 -3
  191. package/dist/api/agent-canvas-updates.cjs +2 -0
  192. package/dist/api/agent-canvas-updates.cjs.map +1 -0
  193. package/dist/api/agent-canvas-updates.d.ts +7 -0
  194. package/dist/api/agent-canvas-updates.js +19 -0
  195. package/dist/api/agent-canvas-updates.js.map +1 -0
  196. package/dist/api/agent-server-adapter.cjs +1 -1
  197. package/dist/api/agent-server-adapter.cjs.map +1 -1
  198. package/dist/api/agent-server-adapter.d.ts +3 -0
  199. package/dist/api/agent-server-adapter.js +1 -0
  200. package/dist/api/agent-server-adapter.js.map +1 -1
  201. package/dist/api/agent-server-compatibility.cjs +1 -1
  202. package/dist/api/agent-server-compatibility.cjs.map +1 -1
  203. package/dist/api/agent-server-compatibility.d.ts +5 -0
  204. package/dist/api/agent-server-compatibility.js +24 -15
  205. package/dist/api/agent-server-compatibility.js.map +1 -1
  206. package/dist/api/agent-server-config.cjs +1 -1
  207. package/dist/api/agent-server-config.cjs.map +1 -1
  208. package/dist/api/agent-server-config.js +11 -8
  209. package/dist/api/agent-server-config.js.map +1 -1
  210. package/dist/api/automation-service/automation-service.api.cjs +2 -0
  211. package/dist/api/automation-service/automation-service.api.cjs.map +1 -0
  212. package/dist/api/automation-service/automation-service.api.d.ts +3 -0
  213. package/dist/api/automation-service/automation-service.api.js +283 -0
  214. package/dist/api/automation-service/automation-service.api.js.map +1 -0
  215. package/dist/api/client-source.cjs +1 -1
  216. package/dist/api/client-source.cjs.map +1 -1
  217. package/dist/api/client-source.d.ts +3 -0
  218. package/dist/api/client-source.js +4 -4
  219. package/dist/api/client-source.js.map +1 -1
  220. package/dist/api/cloud/settings-service.api.cjs.map +1 -1
  221. package/dist/api/cloud/settings-service.api.js.map +1 -1
  222. package/dist/api/conversation-service/agent-server-conversation-service.api.cjs +1 -1
  223. package/dist/api/conversation-service/agent-server-conversation-service.api.cjs.map +1 -1
  224. package/dist/api/conversation-service/agent-server-conversation-service.api.js +111 -109
  225. package/dist/api/conversation-service/agent-server-conversation-service.api.js.map +1 -1
  226. package/dist/api/mcp-health/mcp-health-store.cjs +2 -0
  227. package/dist/api/mcp-health/mcp-health-store.cjs.map +1 -0
  228. package/dist/api/mcp-health/mcp-health-store.d.ts +22 -0
  229. package/dist/api/mcp-health/mcp-health-store.js +45 -0
  230. package/dist/api/mcp-health/mcp-health-store.js.map +1 -0
  231. package/dist/api/mcp-health/probe-mcp-server-health.cjs +2 -0
  232. package/dist/api/mcp-health/probe-mcp-server-health.cjs.map +1 -0
  233. package/dist/api/mcp-health/probe-mcp-server-health.d.ts +31 -0
  234. package/dist/api/mcp-health/probe-mcp-server-health.js +57 -0
  235. package/dist/api/mcp-health/probe-mcp-server-health.js.map +1 -0
  236. package/dist/api/mcp-service/mcp-service.api.cjs +1 -1
  237. package/dist/api/mcp-service/mcp-service.api.cjs.map +1 -1
  238. package/dist/api/mcp-service/mcp-service.api.js +66 -46
  239. package/dist/api/mcp-service/mcp-service.api.js.map +1 -1
  240. package/dist/api/plugins-management-service.cjs.map +1 -1
  241. package/dist/api/plugins-management-service.d.ts +6 -1
  242. package/dist/api/plugins-management-service.js.map +1 -1
  243. package/dist/api/plugins-service.d.ts +30 -2
  244. package/dist/api/secrets-service.cjs +1 -1
  245. package/dist/api/secrets-service.cjs.map +1 -1
  246. package/dist/api/secrets-service.d.ts +6 -6
  247. package/dist/api/secrets-service.js +8 -3
  248. package/dist/api/secrets-service.js.map +1 -1
  249. package/dist/api/settings-service/settings-service.api.cjs +1 -1
  250. package/dist/api/settings-service/settings-service.api.cjs.map +1 -1
  251. package/dist/api/settings-service/settings-service.api.d.ts +1 -1
  252. package/dist/api/settings-service/settings-service.api.js +1 -0
  253. package/dist/api/settings-service/settings-service.api.js.map +1 -1
  254. package/dist/components/conversation-events/chat/event-message-components/critic-result-display.cjs +1 -1
  255. package/dist/components/conversation-events/chat/event-message-components/critic-result-display.js +5 -5
  256. package/dist/components/features/backends/backend-form-modal.cjs +1 -1
  257. package/dist/components/features/backends/backend-form-modal.cjs.map +1 -1
  258. package/dist/components/features/backends/backend-form-modal.d.ts +4 -1
  259. package/dist/components/features/backends/backend-form-modal.js +15 -16
  260. package/dist/components/features/backends/backend-form-modal.js.map +1 -1
  261. package/dist/components/features/backends/backend-selector.cjs +1 -1
  262. package/dist/components/features/backends/backend-selector.cjs.map +1 -1
  263. package/dist/components/features/backends/backend-selector.js +103 -102
  264. package/dist/components/features/backends/backend-selector.js.map +1 -1
  265. package/dist/components/features/backends/manage-backends-modal.cjs +1 -1
  266. package/dist/components/features/backends/manage-backends-modal.cjs.map +1 -1
  267. package/dist/components/features/backends/manage-backends-modal.js +85 -73
  268. package/dist/components/features/backends/manage-backends-modal.js.map +1 -1
  269. package/dist/components/features/chat/chat-interface.cjs +2 -2
  270. package/dist/components/features/chat/chat-interface.cjs.map +1 -1
  271. package/dist/components/features/chat/chat-interface.js +131 -129
  272. package/dist/components/features/chat/chat-interface.js.map +1 -1
  273. package/dist/components/features/chat/confirmation-mode-enabled.cjs +1 -1
  274. package/dist/components/features/chat/confirmation-mode-enabled.js +4 -4
  275. package/dist/components/features/chat/skill-install-restart-banner.cjs +2 -0
  276. package/dist/components/features/chat/skill-install-restart-banner.cjs.map +1 -0
  277. package/dist/components/features/chat/skill-install-restart-banner.d.ts +11 -0
  278. package/dist/components/features/chat/skill-install-restart-banner.js +63 -0
  279. package/dist/components/features/chat/skill-install-restart-banner.js.map +1 -0
  280. package/dist/components/features/conversation/right-panel-toggle.cjs +1 -1
  281. package/dist/components/features/conversation/right-panel-toggle.cjs.map +1 -1
  282. package/dist/components/features/conversation/right-panel-toggle.js +1 -1
  283. package/dist/components/features/conversation/right-panel-toggle.js.map +1 -1
  284. package/dist/components/features/conversation-panel/conversation-panel.cjs +1 -1
  285. package/dist/components/features/conversation-panel/conversation-panel.js +10 -10
  286. package/dist/components/features/mcp-page/custom-server-editor.cjs +1 -1
  287. package/dist/components/features/mcp-page/custom-server-editor.cjs.map +1 -1
  288. package/dist/components/features/mcp-page/custom-server-editor.js +78 -77
  289. package/dist/components/features/mcp-page/custom-server-editor.js.map +1 -1
  290. package/dist/components/features/mcp-page/install-server-modal.cjs +1 -1
  291. package/dist/components/features/mcp-page/install-server-modal.cjs.map +1 -1
  292. package/dist/components/features/mcp-page/install-server-modal.d.ts +4 -1
  293. package/dist/components/features/mcp-page/install-server-modal.js +135 -136
  294. package/dist/components/features/mcp-page/install-server-modal.js.map +1 -1
  295. package/dist/components/features/mcp-page/installed-server-card.cjs +1 -1
  296. package/dist/components/features/mcp-page/installed-server-card.cjs.map +1 -1
  297. package/dist/components/features/mcp-page/installed-server-card.js +40 -34
  298. package/dist/components/features/mcp-page/installed-server-card.js.map +1 -1
  299. package/dist/components/features/mcp-page/mcp-server-health.cjs +2 -0
  300. package/dist/components/features/mcp-page/mcp-server-health.cjs.map +1 -0
  301. package/dist/components/features/mcp-page/mcp-server-health.d.ts +18 -0
  302. package/dist/components/features/mcp-page/mcp-server-health.js +117 -0
  303. package/dist/components/features/mcp-page/mcp-server-health.js.map +1 -0
  304. package/dist/components/features/plugins/build-plugins-view-model.d.ts +10 -1
  305. package/dist/components/features/plugins/plugin-files-section.d.ts +13 -0
  306. package/dist/components/features/settings/agent-canvas-update-card.cjs +2 -0
  307. package/dist/components/features/settings/agent-canvas-update-card.cjs.map +1 -0
  308. package/dist/components/features/settings/agent-canvas-update-card.d.ts +7 -0
  309. package/dist/components/features/settings/agent-canvas-update-card.js +170 -0
  310. package/dist/components/features/settings/agent-canvas-update-card.js.map +1 -0
  311. package/dist/components/features/settings/integrations-settings-link.cjs +2 -0
  312. package/dist/components/features/settings/integrations-settings-link.cjs.map +1 -0
  313. package/dist/components/features/settings/integrations-settings-link.d.ts +5 -0
  314. package/dist/components/features/settings/integrations-settings-link.js +41 -0
  315. package/dist/components/features/settings/integrations-settings-link.js.map +1 -0
  316. package/dist/components/features/settings/llm-profiles/llm-settings-local-view.cjs +1 -1
  317. package/dist/components/features/settings/llm-profiles/llm-settings-local-view.js +1 -1
  318. package/dist/components/features/settings/settings-desktop-sidebar.cjs +1 -1
  319. package/dist/components/features/settings/settings-desktop-sidebar.cjs.map +1 -1
  320. package/dist/components/features/settings/settings-desktop-sidebar.js +31 -21
  321. package/dist/components/features/settings/settings-desktop-sidebar.js.map +1 -1
  322. package/dist/components/features/settings/settings-mobile-drawer.cjs +1 -1
  323. package/dist/components/features/settings/settings-mobile-drawer.cjs.map +1 -1
  324. package/dist/components/features/settings/settings-mobile-drawer.js +40 -30
  325. package/dist/components/features/settings/settings-mobile-drawer.js.map +1 -1
  326. package/dist/components/features/skills/extensions-navigation.cjs +1 -1
  327. package/dist/components/features/skills/extensions-navigation.cjs.map +1 -1
  328. package/dist/components/features/skills/extensions-navigation.js +54 -33
  329. package/dist/components/features/skills/extensions-navigation.js.map +1 -1
  330. package/dist/config/defaults.cjs +1 -1
  331. package/dist/config/defaults.cjs.map +1 -1
  332. package/dist/config/defaults.js +7 -3
  333. package/dist/config/defaults.js.map +1 -1
  334. package/dist/constants/acp-providers.cjs.map +1 -1
  335. package/dist/constants/acp-providers.js.map +1 -1
  336. package/dist/contexts/conversation-websocket-context.cjs +2 -2
  337. package/dist/contexts/conversation-websocket-context.cjs.map +1 -1
  338. package/dist/contexts/conversation-websocket-context.js +169 -166
  339. package/dist/contexts/conversation-websocket-context.js.map +1 -1
  340. package/dist/hooks/mutation/use-delete-llm-profile.cjs +1 -1
  341. package/dist/hooks/mutation/use-delete-llm-profile.js +1 -0
  342. package/dist/hooks/mutation/use-delete-mcp-server.cjs +1 -1
  343. package/dist/hooks/mutation/use-delete-mcp-server.cjs.map +1 -1
  344. package/dist/hooks/mutation/use-delete-mcp-server.js +8 -6
  345. package/dist/hooks/mutation/use-delete-mcp-server.js.map +1 -1
  346. package/dist/hooks/mutation/use-rename-llm-profile.cjs +1 -1
  347. package/dist/hooks/mutation/use-rename-llm-profile.js +1 -0
  348. package/dist/hooks/mutation/use-save-settings.cjs +1 -1
  349. package/dist/hooks/mutation/use-save-settings.js +3 -3
  350. package/dist/hooks/mutation/use-update-mcp-server.cjs +1 -1
  351. package/dist/hooks/mutation/use-update-mcp-server.cjs.map +1 -1
  352. package/dist/hooks/mutation/use-update-mcp-server.js +11 -9
  353. package/dist/hooks/mutation/use-update-mcp-server.js.map +1 -1
  354. package/dist/hooks/query/query-keys.cjs +1 -1
  355. package/dist/hooks/query/query-keys.cjs.map +1 -1
  356. package/dist/hooks/query/query-keys.d.ts +4 -0
  357. package/dist/hooks/query/query-keys.js +2 -2
  358. package/dist/hooks/query/query-keys.js.map +1 -1
  359. package/dist/hooks/query/use-automation-sdk-version.cjs +2 -0
  360. package/dist/hooks/query/use-automation-sdk-version.cjs.map +1 -0
  361. package/dist/hooks/query/use-automation-sdk-version.d.ts +3 -0
  362. package/dist/hooks/query/use-automation-sdk-version.js +63 -0
  363. package/dist/hooks/query/use-automation-sdk-version.js.map +1 -0
  364. package/dist/hooks/query/use-latest-agent-canvas-version.cjs +2 -0
  365. package/dist/hooks/query/use-latest-agent-canvas-version.cjs.map +1 -0
  366. package/dist/hooks/query/use-latest-agent-canvas-version.d.ts +10 -0
  367. package/dist/hooks/query/use-latest-agent-canvas-version.js +19 -0
  368. package/dist/hooks/query/use-latest-agent-canvas-version.js.map +1 -0
  369. package/dist/hooks/query/use-plugin-file-content.d.ts +7 -0
  370. package/dist/hooks/query/use-resolved-workspaces.cjs +1 -1
  371. package/dist/hooks/query/use-resolved-workspaces.cjs.map +1 -1
  372. package/dist/hooks/query/use-resolved-workspaces.js +25 -26
  373. package/dist/hooks/query/use-resolved-workspaces.js.map +1 -1
  374. package/dist/hooks/query/use-search-subdirs.cjs +1 -1
  375. package/dist/hooks/query/use-search-subdirs.cjs.map +1 -1
  376. package/dist/hooks/query/use-search-subdirs.d.ts +5 -0
  377. package/dist/hooks/query/use-search-subdirs.js +16 -4
  378. package/dist/hooks/query/use-search-subdirs.js.map +1 -1
  379. package/dist/hooks/use-device-flow.cjs +1 -1
  380. package/dist/hooks/use-device-flow.js +6 -6
  381. package/dist/hooks/use-llm-configured.cjs +1 -1
  382. package/dist/hooks/use-llm-configured.js +3 -3
  383. package/dist/hooks/use-mcp-server-health.cjs +2 -0
  384. package/dist/hooks/use-mcp-server-health.cjs.map +1 -0
  385. package/dist/hooks/use-mcp-server-health.d.ts +11 -0
  386. package/dist/hooks/use-mcp-server-health.js +18 -0
  387. package/dist/hooks/use-mcp-server-health.js.map +1 -0
  388. package/dist/hooks/use-skill-installs.cjs +2 -0
  389. package/dist/hooks/use-skill-installs.cjs.map +1 -0
  390. package/dist/hooks/use-skill-installs.d.ts +10 -0
  391. package/dist/hooks/use-skill-installs.js +21 -0
  392. package/dist/hooks/use-skill-installs.js.map +1 -0
  393. package/dist/hooks/use-tracking.cjs +1 -1
  394. package/dist/hooks/use-tracking.cjs.map +1 -1
  395. package/dist/hooks/use-tracking.d.ts +3 -3
  396. package/dist/hooks/use-tracking.js +67 -52
  397. package/dist/hooks/use-tracking.js.map +1 -1
  398. package/dist/i18n/declaration.cjs +1 -1
  399. package/dist/i18n/declaration.cjs.map +1 -1
  400. package/dist/i18n/declaration.d.ts +35 -1
  401. package/dist/i18n/declaration.js +1 -1
  402. package/dist/i18n/declaration.js.map +1 -1
  403. package/dist/i18n/translation.cjs +3 -3
  404. package/dist/i18n/translation.cjs.map +1 -1
  405. package/dist/i18n/translation.js +623 -45
  406. package/dist/i18n/translation.js.map +1 -1
  407. package/dist/index.cjs +1 -1
  408. package/dist/index.js +1 -2
  409. package/dist/lib/index.cjs +1 -1
  410. package/dist/lib/index.d.ts +0 -1
  411. package/dist/lib/index.js +0 -1
  412. package/dist/locales/ar/openhands.json +38 -4
  413. package/dist/locales/ca/openhands.json +38 -4
  414. package/dist/locales/de/openhands.json +38 -4
  415. package/dist/locales/en/openhands.json +38 -4
  416. package/dist/locales/es/openhands.json +38 -4
  417. package/dist/locales/fr/openhands.json +38 -4
  418. package/dist/locales/it/openhands.json +38 -4
  419. package/dist/locales/ja/openhands.json +38 -4
  420. package/dist/locales/ko-KR/openhands.json +38 -4
  421. package/dist/locales/no/openhands.json +38 -4
  422. package/dist/locales/pt/openhands.json +38 -4
  423. package/dist/locales/tr/openhands.json +38 -4
  424. package/dist/locales/uk/openhands.json +38 -4
  425. package/dist/locales/zh-CN/openhands.json +38 -4
  426. package/dist/locales/zh-TW/openhands.json +38 -4
  427. package/dist/node_modules/@openhands/extensions/integrations/catalog/atlassian-rovo.cjs +2 -0
  428. package/dist/node_modules/@openhands/extensions/integrations/catalog/atlassian-rovo.cjs.map +1 -0
  429. package/dist/node_modules/@openhands/extensions/integrations/catalog/atlassian-rovo.js +44 -0
  430. package/dist/node_modules/@openhands/extensions/integrations/catalog/atlassian-rovo.js.map +1 -0
  431. package/dist/node_modules/@openhands/extensions/integrations/catalog/atlassian.cjs +1 -1
  432. package/dist/node_modules/@openhands/extensions/integrations/catalog/atlassian.cjs.map +1 -1
  433. package/dist/node_modules/@openhands/extensions/integrations/catalog/atlassian.js +13 -0
  434. package/dist/node_modules/@openhands/extensions/integrations/catalog/atlassian.js.map +1 -1
  435. package/dist/node_modules/@openhands/extensions/integrations/catalog/github.cjs +1 -1
  436. package/dist/node_modules/@openhands/extensions/integrations/catalog/github.cjs.map +1 -1
  437. package/dist/node_modules/@openhands/extensions/integrations/catalog/github.js +21 -1
  438. package/dist/node_modules/@openhands/extensions/integrations/catalog/github.js.map +1 -1
  439. package/dist/node_modules/@openhands/extensions/integrations/catalog/linear.cjs +1 -1
  440. package/dist/node_modules/@openhands/extensions/integrations/catalog/linear.cjs.map +1 -1
  441. package/dist/node_modules/@openhands/extensions/integrations/catalog/linear.js +1 -1
  442. package/dist/node_modules/@openhands/extensions/integrations/catalog/linear.js.map +1 -1
  443. package/dist/node_modules/@openhands/extensions/integrations/catalog/microsoft-outlook.cjs +1 -1
  444. package/dist/node_modules/@openhands/extensions/integrations/catalog/microsoft-outlook.cjs.map +1 -1
  445. package/dist/node_modules/@openhands/extensions/integrations/catalog/microsoft-outlook.js +13 -0
  446. package/dist/node_modules/@openhands/extensions/integrations/catalog/microsoft-outlook.js.map +1 -1
  447. package/dist/node_modules/@openhands/extensions/integrations/catalog/microsoft-teams.cjs +1 -1
  448. package/dist/node_modules/@openhands/extensions/integrations/catalog/microsoft-teams.cjs.map +1 -1
  449. package/dist/node_modules/@openhands/extensions/integrations/catalog/microsoft-teams.js +13 -0
  450. package/dist/node_modules/@openhands/extensions/integrations/catalog/microsoft-teams.js.map +1 -1
  451. package/dist/node_modules/@openhands/extensions/integrations/catalog/notion.cjs +1 -1
  452. package/dist/node_modules/@openhands/extensions/integrations/catalog/notion.cjs.map +1 -1
  453. package/dist/node_modules/@openhands/extensions/integrations/catalog/notion.js +13 -0
  454. package/dist/node_modules/@openhands/extensions/integrations/catalog/notion.js.map +1 -1
  455. package/dist/node_modules/@openhands/extensions/integrations/catalog/onedrive.cjs +1 -1
  456. package/dist/node_modules/@openhands/extensions/integrations/catalog/onedrive.cjs.map +1 -1
  457. package/dist/node_modules/@openhands/extensions/integrations/catalog/onedrive.js +13 -0
  458. package/dist/node_modules/@openhands/extensions/integrations/catalog/onedrive.js.map +1 -1
  459. package/dist/node_modules/@openhands/extensions/integrations/catalog/sharepoint.cjs +1 -1
  460. package/dist/node_modules/@openhands/extensions/integrations/catalog/sharepoint.cjs.map +1 -1
  461. package/dist/node_modules/@openhands/extensions/integrations/catalog/sharepoint.js +13 -0
  462. package/dist/node_modules/@openhands/extensions/integrations/catalog/sharepoint.js.map +1 -1
  463. package/dist/node_modules/@openhands/extensions/integrations/catalog/slack.cjs +1 -1
  464. package/dist/node_modules/@openhands/extensions/integrations/catalog/slack.cjs.map +1 -1
  465. package/dist/node_modules/@openhands/extensions/integrations/catalog/slack.js +16 -2
  466. package/dist/node_modules/@openhands/extensions/integrations/catalog/slack.js.map +1 -1
  467. package/dist/node_modules/@openhands/extensions/integrations/catalog/vanta.cjs +2 -0
  468. package/dist/node_modules/@openhands/extensions/integrations/catalog/vanta.cjs.map +1 -0
  469. package/dist/node_modules/@openhands/extensions/integrations/catalog/vanta.js +46 -0
  470. package/dist/node_modules/@openhands/extensions/integrations/catalog/vanta.js.map +1 -0
  471. package/dist/node_modules/@openhands/extensions/integrations/catalog-index.cjs +1 -1
  472. package/dist/node_modules/@openhands/extensions/integrations/catalog-index.cjs.map +1 -1
  473. package/dist/node_modules/@openhands/extensions/integrations/catalog-index.js +74 -70
  474. package/dist/node_modules/@openhands/extensions/integrations/catalog-index.js.map +1 -1
  475. package/dist/node_modules/@openhands/extensions/skills/index.cjs +123 -3
  476. package/dist/node_modules/@openhands/extensions/skills/index.cjs.map +1 -1
  477. package/dist/node_modules/@openhands/extensions/skills/index.js +7 -1
  478. package/dist/node_modules/@openhands/extensions/skills/index.js.map +1 -1
  479. package/dist/node_modules/lucide-react/dist/esm/icons/chevron-up.cjs +2 -0
  480. package/dist/node_modules/lucide-react/dist/esm/icons/chevron-up.cjs.map +1 -0
  481. package/dist/node_modules/lucide-react/dist/esm/icons/chevron-up.js +9 -0
  482. package/dist/node_modules/lucide-react/dist/esm/icons/chevron-up.js.map +1 -0
  483. package/dist/node_modules/lucide-react/dist/esm/icons/info.cjs +2 -0
  484. package/dist/node_modules/lucide-react/dist/esm/icons/info.cjs.map +1 -0
  485. package/dist/node_modules/lucide-react/dist/esm/icons/info.js +21 -0
  486. package/dist/node_modules/lucide-react/dist/esm/icons/info.js.map +1 -0
  487. package/dist/package.cjs +1 -1
  488. package/dist/package.cjs.map +1 -1
  489. package/dist/package.js +10 -3
  490. package/dist/package.js.map +1 -1
  491. package/dist/routes/app-settings.cjs +1 -1
  492. package/dist/routes/app-settings.cjs.map +1 -1
  493. package/dist/routes/app-settings.js +113 -67
  494. package/dist/routes/app-settings.js.map +1 -1
  495. package/dist/routes/mcp.cjs +1 -1
  496. package/dist/routes/mcp.cjs.map +1 -1
  497. package/dist/routes/mcp.js +1 -0
  498. package/dist/routes/mcp.js.map +1 -1
  499. package/dist/services/cloud-funnel-analytics.cjs +1 -1
  500. package/dist/services/cloud-funnel-analytics.cjs.map +1 -1
  501. package/dist/services/cloud-funnel-analytics.d.ts +2 -2
  502. package/dist/services/cloud-funnel-analytics.js +18 -16
  503. package/dist/services/cloud-funnel-analytics.js.map +1 -1
  504. package/dist/services/settings.cjs +1 -1
  505. package/dist/services/settings.cjs.map +1 -1
  506. package/dist/services/settings.js +1 -0
  507. package/dist/services/settings.js.map +1 -1
  508. package/dist/services/telemetry-context.cjs +2 -0
  509. package/dist/services/telemetry-context.cjs.map +1 -0
  510. package/dist/services/telemetry-context.d.ts +17 -0
  511. package/dist/services/telemetry-context.js +27 -0
  512. package/dist/services/telemetry-context.js.map +1 -0
  513. package/dist/services/telemetry.cjs +1 -1
  514. package/dist/services/telemetry.cjs.map +1 -1
  515. package/dist/services/telemetry.d.ts +7 -5
  516. package/dist/services/telemetry.js +132 -123
  517. package/dist/services/telemetry.js.map +1 -1
  518. package/dist/stores/skill-install-banner-store.cjs +2 -0
  519. package/dist/stores/skill-install-banner-store.cjs.map +1 -0
  520. package/dist/stores/skill-install-banner-store.d.ts +32 -0
  521. package/dist/stores/skill-install-banner-store.js +14 -0
  522. package/dist/stores/skill-install-banner-store.js.map +1 -0
  523. package/dist/stores/use-event-store.cjs +1 -1
  524. package/dist/stores/use-event-store.cjs.map +1 -1
  525. package/dist/stores/use-event-store.js +35 -35
  526. package/dist/stores/use-event-store.js.map +1 -1
  527. package/dist/types/mcp-health.cjs +2 -0
  528. package/dist/types/mcp-health.cjs.map +1 -0
  529. package/dist/types/mcp-health.d.ts +21 -0
  530. package/dist/types/mcp-health.js +6 -0
  531. package/dist/types/mcp-health.js.map +1 -0
  532. package/dist/types/settings.d.ts +1 -0
  533. package/dist/utils/handle-event-for-ui.cjs +1 -1
  534. package/dist/utils/handle-event-for-ui.cjs.map +1 -1
  535. package/dist/utils/handle-event-for-ui.d.ts +5 -0
  536. package/dist/utils/handle-event-for-ui.js +71 -57
  537. package/dist/utils/handle-event-for-ui.js.map +1 -1
  538. package/dist/utils/mcp-credential-validation.cjs +1 -1
  539. package/dist/utils/mcp-credential-validation.cjs.map +1 -1
  540. package/dist/utils/mcp-credential-validation.js +32 -16
  541. package/dist/utils/mcp-credential-validation.js.map +1 -1
  542. package/dist/utils/mcp-server-health-key.cjs +2 -0
  543. package/dist/utils/mcp-server-health-key.cjs.map +1 -0
  544. package/dist/utils/mcp-server-health-key.d.ts +16 -0
  545. package/dist/utils/mcp-server-health-key.js +23 -0
  546. package/dist/utils/mcp-server-health-key.js.map +1 -0
  547. package/dist/utils/mcp-test-error-message.cjs +2 -0
  548. package/dist/utils/mcp-test-error-message.cjs.map +1 -0
  549. package/dist/utils/mcp-test-error-message.d.ts +8 -0
  550. package/dist/utils/mcp-test-error-message.js +14 -0
  551. package/dist/utils/mcp-test-error-message.js.map +1 -0
  552. package/dist/utils/redact-mcp-secrets.cjs +2 -0
  553. package/dist/utils/redact-mcp-secrets.cjs.map +1 -0
  554. package/dist/utils/redact-mcp-secrets.d.ts +13 -0
  555. package/dist/utils/redact-mcp-secrets.js +57 -0
  556. package/dist/utils/redact-mcp-secrets.js.map +1 -0
  557. package/dist/utils/settings-utils.cjs.map +1 -1
  558. package/dist/utils/settings-utils.js.map +1 -1
  559. package/dist/utils/skill-install-events.cjs +3 -0
  560. package/dist/utils/skill-install-events.cjs.map +1 -0
  561. package/dist/utils/skill-install-events.d.ts +16 -0
  562. package/dist/utils/skill-install-events.js +26 -0
  563. package/dist/utils/skill-install-events.js.map +1 -0
  564. package/dist/utils/title-llm-profile.cjs +2 -0
  565. package/dist/utils/title-llm-profile.cjs.map +1 -0
  566. package/dist/utils/title-llm-profile.d.ts +2 -0
  567. package/dist/utils/title-llm-profile.js +11 -0
  568. package/dist/utils/title-llm-profile.js.map +1 -0
  569. package/package.json +10 -3
  570. package/scripts/check-sdk-version-sync.mjs +6 -6
  571. package/scripts/check-translation-completeness.cjs +2 -0
  572. package/scripts/dev-process-utils.mjs +62 -1
  573. package/scripts/dev-safe.mjs +2 -2
  574. package/scripts/dev-static.mjs +5 -3
  575. package/scripts/dev-with-automation.mjs +98 -14
  576. package/scripts/download-node.mjs +382 -0
  577. package/scripts/download-uv.mjs +204 -0
  578. package/scripts/logger.mjs +64 -35
  579. package/build/assets/agent-server-compatibility-C0MtTTwb.js +0 -1
  580. package/build/assets/agent-server-conversation-service.api-lzc8dabY.js +0 -41
  581. package/build/assets/agent-settings-GwiXe_6k.js +0 -2
  582. package/build/assets/agent-settings-OdsyI2gX.js +0 -1
  583. package/build/assets/api-key-entry-screen-2gsoZAOK.js +0 -1
  584. package/build/assets/app-settings-CD9euh81.js +0 -1
  585. package/build/assets/automation-export-Djc8Tf0M.js +0 -2
  586. package/build/assets/automations-list-Dtiolk1h.js +0 -1
  587. package/build/assets/backend-form-modal-B8GtBA-J.js +0 -1
  588. package/build/assets/browser-store-BI6uklCG.js +0 -1
  589. package/build/assets/chat-send-button-BZHG2hAW.js +0 -1
  590. package/build/assets/client-source-CtQjJEy6.js +0 -1
  591. package/build/assets/cloud-funnel-analytics-uzzLlLuj.js +0 -1
  592. package/build/assets/conversation-B8d8_Upd.js +0 -1
  593. package/build/assets/conversation-Lmqm6VJC.js +0 -89
  594. package/build/assets/conversation-panel-B8n40Swu.js +0 -1
  595. package/build/assets/conversation-state-store-B2Bp32XI.js +0 -1
  596. package/build/assets/declaration-BGsHjPEW.js +0 -1
  597. package/build/assets/extensions-hub-DqvwvpCi.js +0 -1
  598. package/build/assets/extensions-navigation-BMc9Nluv.js +0 -1
  599. package/build/assets/files-tab-BAkaV4aO.js +0 -1
  600. package/build/assets/files-tab-store-DJsPxYdg.js +0 -1
  601. package/build/assets/git-provider-icon-xvbukHaT.js +0 -1
  602. package/build/assets/home-D01kSnmo.js +0 -1
  603. package/build/assets/home-NZO2bF4N.js +0 -1
  604. package/build/assets/index-home-BsI6i0TC.js +0 -1
  605. package/build/assets/install-server-modal-BYjqoRyX.js +0 -1
  606. package/build/assets/lesson-plan-cNUjpdFx.js +0 -4
  607. package/build/assets/llm-not-configured-banner-DUPyoFIZ.js +0 -27
  608. package/build/assets/llm-settings-Cs_iieFY.js +0 -1
  609. package/build/assets/llm-settings-J2ke2foG.js +0 -1
  610. package/build/assets/manage-backends-modal-nMoCZ2a0.js +0 -1
  611. package/build/assets/manifest-f1b46f62.js +0 -1
  612. package/build/assets/markdown-renderer-B4V2OMFP.js +0 -2
  613. package/build/assets/mcp-kZM-cAZw.js +0 -9
  614. package/build/assets/messages-CJAv5n4j.js +0 -40
  615. package/build/assets/objectWithoutPropertiesLoose-BgYIAs2y.js +0 -1
  616. package/build/assets/onboarding-Dx8n8HFr.js +0 -1
  617. package/build/assets/onboarding-modal-Bxuxpfdz.js +0 -1
  618. package/build/assets/recommended-automations-launcher-BWRRvMPE.js +0 -58
  619. package/build/assets/refresh-cw-B9B7-vsy.js +0 -1
  620. package/build/assets/root-CYWeTrWE.css +0 -1
  621. package/build/assets/root-layout-ClEl-JlJ.js +0 -2
  622. package/build/assets/root-oT83qVlk.js +0 -2
  623. package/build/assets/sdk-section-page-Cwj0T4gF.js +0 -1
  624. package/build/assets/secrets-settings-Bc_pBX6F.js +0 -1
  625. package/build/assets/settings-index-BzSIM1-N.js +0 -1
  626. package/build/assets/settings-modal-BnZ7mMu7.js +0 -1
  627. package/build/assets/settings-n9a395O0.js +0 -1
  628. package/build/assets/shared-conversation-CIDDti9I.js +0 -1
  629. package/build/assets/sidebar-mobile-menu-toggle-CTX7J4wM.js +0 -1
  630. package/build/assets/skills-plugins-HZEbNDmX.js +0 -1
  631. package/build/assets/skills-settings-BdqijFlC.js +0 -2
  632. package/build/assets/telemetry-SHxpVxk8.js +0 -2
  633. package/build/assets/use-activate-agent-profile-BRDdSwQ0.js +0 -1
  634. package/build/assets/use-backends-health-BagmAE_W.js +0 -1
  635. package/build/assets/use-config-B39iHYFi.js +0 -1
  636. package/build/assets/use-event-store-Bbaz51GR.js +0 -4
  637. package/build/assets/use-llm-profiles-CgRtnj74.js +0 -1
  638. package/build/assets/use-plugins-marketplace-DOJp9rlE.js +0 -1
  639. package/build/assets/use-runtime-is-ready-ziHQvXZQ.js +0 -1
  640. package/build/assets/use-settings-BeJap6YL.js +0 -1
  641. package/build/assets/use-settings-nav-items-D5JJjFHJ.js +0 -16
  642. package/build/assets/use-tracking-DFoPQUSU.js +0 -1
  643. package/build/assets/useMutationState-OnAsCLA_.js +0 -1
  644. package/build/assets/vendor~index-home~home~conversation-panel~conversation~shared-conversation~planner-tab~files-tab-BD7v71DM.js +0 -2
  645. package/build/assets/vendor~index-home~home~conversation-panel~conversation~shared-conversation~planner-tab~files-tab-BT05Osu4.js +0 -28
  646. package/build/assets/vendor~index-home~home~conversation-panel~conversation~shared-conversation~planner-tab~files-tab-COhHANvV.js +0 -2
  647. package/build/assets/vendor~index-home~home~conversation-panel~conversation~shared-conversation~planner-tab~files-tab-DgzWSMRc.js +0 -2
  648. package/build/assets/vendor~index-home~home~conversation-panel~conversation~shared-conversation~planner-tab~files-tab-DqZatR3B.js +0 -7
  649. package/build/assets/vendor~index-home~home~conversation-panel~conversation~shared-conversation~planner-tab~files-tab-FghQ3Z1a.js +0 -1
  650. package/build/assets/vendor~root-layout~index-home~home~conversation-panel~conversation-BTvhGHHG.js +0 -1
  651. package/build/assets/vendor~root-layout~index-home~home~mcp~automations-list~onboarding-modal-C4-GDgiF.js +0 -1
  652. package/dist/components/features/analytics/telemetry-consent-banner.cjs +0 -2
  653. package/dist/components/features/analytics/telemetry-consent-banner.cjs.map +0 -1
  654. package/dist/components/features/analytics/telemetry-consent-banner.d.ts +0 -29
  655. package/dist/components/features/analytics/telemetry-consent-banner.js +0 -59
  656. package/dist/components/features/analytics/telemetry-consent-banner.js.map +0 -1
  657. /package/build/assets/{__vite-browser-external-BQUj0sYu.js → __vite-browser-external-CKHVBTNC.js} +0 -0
  658. /package/build/assets/{agent-server-ui-style-scope-qhnhZHBV.js → agent-server-ui-style-scope-BvSa9on7.js} +0 -0
  659. /package/build/assets/{automation-LZB0MjdV.js → automation-BGiPmxFR.js} +0 -0
  660. /package/build/assets/{canvas-ui-COgjltGz.js → canvas-ui-CC4EJo-H.js} +0 -0
  661. /package/build/assets/{checkmark-h7udgXMM.js → checkmark-ygQB1AtV.js} +0 -0
  662. /package/build/assets/{close-DLFb5kfv.js → close-BjSA0HWT.js} +0 -0
  663. /package/build/assets/{code-tag-DYlAhEQY.js → code-tag-D9aPPbOe.js} +0 -0
  664. /package/build/assets/{common-CxbUL3nR.js → common-CCuqQy_S.js} +0 -0
  665. /package/build/assets/{conversation-local-storage-F6zVMM--.js → conversation-local-storage-BDjWPg0Z.js} +0 -0
  666. /package/build/assets/{copy-BLmGeJcd.js → copy-Dce7sOvS.js} +0 -0
  667. /package/build/assets/{copy-D1YGjP-C.js → copy-iPJAncAj.js} +0 -0
  668. /package/build/assets/{dist-CodhvuAP.js → dist-D9PhjOaq.js} +0 -0
  669. /package/build/assets/{environment-switch-store-DkjlKWzN.js → environment-switch-store-DHfcz4M4.js} +0 -0
  670. /package/build/assets/{extension-module-card-classes-9V3J9J_b.js → extension-module-card-classes-BpebKiN6.js} +0 -0
  671. /package/build/assets/{external-link-lhdITPqq.js → external-link-CpPMXxrV.js} +0 -0
  672. /package/build/assets/{folder-Bk311brm.js → folder-BabbYnbF.js} +0 -0
  673. /package/build/assets/{format-time-delta-DhDbkD7V.js → format-time-delta-BkAmJEPT.js} +0 -0
  674. /package/build/assets/{get-language-from-path-DBqBsCWH.js → get-language-from-path-CPNnuVhI.js} +0 -0
  675. /package/build/assets/{git-status-mapper-DnL9OC8_.js → git-status-mapper-BIXK0AAG.js} +0 -0
  676. /package/build/assets/{iconBase-Dz51Zn5x.js → iconBase-Ch-fOe8B.js} +0 -0
  677. /package/build/assets/{link-external-CaBmUEs_.js → link-external-DfKQroKX.js} +0 -0
  678. /package/build/assets/{list-todo-CAtvkzcy.js → list-todo-6J6zc8oS.js} +0 -0
  679. /package/build/assets/{llm-subscription-DtsX5Lhg.js → llm-subscription-Bvu8BLXc.js} +0 -0
  680. /package/build/assets/{loader-circle-CsAsfLIs.js → loader-circle-DGsqG5qw.js} +0 -0
  681. /package/build/assets/{map-provider-BbIb12oh.js → map-provider-BSvXvVR0.js} +0 -0
  682. /package/build/assets/{middleware-DYHYNAnP.js → middleware-_izt7V6U.js} +0 -0
  683. /package/build/assets/{modal-backdrop-zVwfOJZr.js → modal-backdrop-B7H42xHG.js} +0 -0
  684. /package/build/assets/{navigation-context-DPs2G0X8.js → navigation-context-cvyvI1WA.js} +0 -0
  685. /package/build/assets/{openhands-logo-bcNw5bkY.js → openhands-logo-pEw0nKFP.js} +0 -0
  686. /package/build/assets/{pencil-CWhApFIT.js → pencil-DmSqWUA3.js} +0 -0
  687. /package/build/assets/{react-DPDgL6du.js → react-MKQOkha9.js} +0 -0
  688. /package/build/assets/{search-BgOCR7_c.js → search-B5D5EuSn.js} +0 -0
  689. /package/build/assets/{search-dIQ09UY2.js → search-vnYL5jwV.js} +0 -0
  690. /package/build/assets/{settings-gear-MXCyZW0x.js → settings-gear-BOwF59Bs.js} +0 -0
  691. /package/build/assets/{settings-section-header-context-COMOIaxV.js → settings-section-header-context-CGgHZXrf.js} +0 -0
  692. /package/build/assets/{skills-EqzxYBvT.js → skills-arUOHLcS.js} +0 -0
  693. /package/build/assets/{square-chevron-right-DE-JN-2Z.js → square-chevron-right-EizCGtgq.js} +0 -0
  694. /package/build/assets/{switch-skeleton-DqQwalyu.js → switch-skeleton-BjPRx1QD.js} +0 -0
  695. /package/build/assets/{terminal-Cgf___rK.js → terminal-a57bHgZs.js} +0 -0
  696. /package/build/assets/{trash-2-BU6BlW4i.js → trash-2-CF3hilrY.js} +0 -0
  697. /package/build/assets/{u-check-circle-BqoIxNz_.js → u-check-circle-WGqHdtfO.js} +0 -0
  698. /package/build/assets/{u-check-circle-half-MsShT8Ec.js → u-check-circle-half-LiwZkuFe.js} +0 -0
  699. /package/build/assets/{u-edit-DL5LgKon.js → u-edit-BwHepAPi.js} +0 -0
  700. /package/build/assets/{use-breakpoint-BP3lqLMx.js → use-breakpoint-B-O0lQ84.js} +0 -0
  701. /package/build/assets/{use-click-outside-element-D9BYdANT.js → use-click-outside-element-DLQIMQrz.js} +0 -0
  702. /package/build/assets/{use-is-authed-BezEyfeh.js → use-is-authed-BSeo4coy.js} +0 -0
  703. /package/build/assets/{use-onboarding-completion-C_Swglzp.js → use-onboarding-completion-C0hPNGpw.js} +0 -0
  704. /package/build/assets/{v4-DbCkTSoU.js → v4-q4yWTlMz.js} +0 -0
  705. /package/build/assets/{vendor~browser-By2MVv_N.js → vendor~browser-UwB1jbAZ.js} +0 -0
  706. /package/build/assets/{vendor~conversation-panel~conversation~alert-banner-CxfzCmkN.js → vendor~conversation-panel~conversation~alert-banner-DHDkknt5.js} +0 -0
  707. /package/build/assets/{vendor~index-home~home~conversation-panel~conversation-ChmYLVgz.js → vendor~index-home~home~conversation-panel~conversation-Bff9cq5J.js} +0 -0
  708. /package/build/assets/{vendor~module-D5a_AClf.js → vendor~module-D4DeFV4J.js} +0 -0
  709. /package/build/assets/{vendor~terminal-CnKZILnC.js → vendor~terminal-B7Eiak0-.js} +0 -0
  710. /package/build/assets/{x-ZE4iplpF.js → x-DQB_00VJ.js} +0 -0
  711. /package/build/assets/{x-mark-Batp6gXa.js → x-mark-B32XuEwS.js} +0 -0
@@ -207,7 +207,7 @@ var e = [
207
207
  "/verify",
208
208
  "/babysit"
209
209
  ],
210
- content: "# /iterate — Drive a PR to Merge-Ready\n\nIterate on a pull request until it passes all verification layers.\nYou push, poll, fix, and push again — the loop only ends when the PR is green\nor a blocker requires human help.\n\nNo scripts — you are the orchestration loop. Uses only standard `gh` CLI\ncommands that work on any GitHub repo.\n\nRequires: `gh` CLI authenticated with repo access, a PR branch.\nWindows PowerShell equivalents for Bash-only assignment, redirection, and quoting patterns in this skill are in `references/windows.md`.\n\n## Discover what the repo has\n\nNot every repo has all three verification layers. Before entering the loop,\ncheck which ones exist. Only poll layers that are actually set up.\n\n```bash\ngh workflow list --json name --jq '.[].name'\n```\n\n- **CI checks** — almost every repo has these. If `gh pr checks` returns results, CI is present.\n- **PR review bot** — look for a workflow named like \"PR Review\" or \"pr-review\" in the output above, or check for `.github/workflows/pr-review*.yml` in the repo. If it's not there, the repo doesn't have automated PR review. Skip step 3 entirely.\n- **QA bot** — look for a workflow named like \"QA\" or \"qa-changes\". If it's not there, the repo doesn't have automated QA. Skip step 4 entirely.\n\nA repo might have only CI. Or CI + review. Or all three. Your \"all passed\"\ncondition is: every *present* layer is green. Don't block waiting for layers\nthat don't exist.\n\n## The loop\n\n1. Push and ensure a draft PR exists.\n2. Poll each present verification layer.\n3. Decide: all passed? fix needed? wait?\n4. If fix needed — fix, commit, push, re-request review from bots, go to 2.\n5. If waiting — sleep per polling cadence, go to 2.\n6. If all present layers passed on the *current* SHA — mark PR ready, done.\n\nIMPORTANT: pushing a fix is NOT the end. After every fix+push you MUST\nre-request review from the review bot (if present) and go back to step 2.\nThe loop only ends when the verifiers pass on your latest SHA. Addressing\nfeedback and pushing a commit is just one iteration — the bot needs to\nreview the new code too.\n\nDo not stop to ask the user whether to continue polling; continue\nautonomously until a strict stop condition is met or the user interrupts.\n\n## Step 1 — Push and ensure PR exists (as draft)\n\nCreate the PR as a draft. This prevents repo automations (merge workflows,\nartifact cleanup, auto-merge) from triggering while you're still iterating.\nYou mark it ready only after all verification layers pass.\n\n```bash\ngit push origin HEAD\ngh pr create --fill --draft 2>/dev/null || true\ngh pr view --json number,url,headRefOid,isDraft --jq '\"\\(.number) \\(.url) \\(.headRefOid) draft=\\(.isDraft)\"'\n```\n\nIf the PR already exists and is not a draft, convert it:\n\n```bash\ngh pr ready --undo\n```\n\n## Step 2 — Poll CI checks\n\n```bash\ngh pr checks --json name,state,bucket --jq '\n { passed: [.[] | select(.bucket==\"pass\")] | length,\n failed: [.[] | select(.bucket==\"fail\")] | length,\n pending: [.[] | select(.bucket==\"pending\")] | length }'\n```\n\n- Zero failed, zero pending → CI green.\n- Any pending → wait and re-poll.\n- Any failed → diagnose (see \"CI failure classification\" below).\n\nTo inspect a failure:\n\n```bash\nSHA=$(gh pr view --json headRefOid --jq .headRefOid)\ngh run list --commit \"$SHA\" --status failure --json databaseId,name,conclusion \\\n --jq '.[] | \"\\(.databaseId)\\t\\(.name)\\t\\(.conclusion)\"'\ngh run view <run-id> --log-failed\n```\n\n## Step 3 — Poll PR review (if present)\n\nSkip this step if the repo has no review bot.\n\n```bash\ngh pr view --json reviews --jq '\n [.reviews[] | select(\n .authorAssociation == \"OWNER\" or\n .authorAssociation == \"MEMBER\" or\n .authorAssociation == \"COLLABORATOR\" or\n (.author.login | test(\"openhands|all-hands-bot\"; \"i\"))\n )] | last | { state: .state, reviewer: .author.login, body: .body[0:300] }'\n```\n\n- `APPROVED` → review passed.\n- `CHANGES_REQUESTED` → read the body and inline comments, fix code.\n- `COMMENTED` → may have actionable suggestions; read and decide.\n- No matching review yet → bot may still be running; wait and re-poll.\n\nInline review comments (when changes requested):\n\n```bash\ngh api \"repos/{owner}/{repo}/pulls/{number}/comments\" \\\n --jq '.[] | select(.user.login | test(\"openhands|all-hands-bot\"; \"i\"))\n | { path: .path, line: .line, body: .body[0:200] }'\n```\n\nOn a fresh iteration, existing pending review feedback should be checked\nimmediately — not only comments that arrive after monitoring starts.\nAlready-open review comments must not be missed.\n\n## Step 4 — Poll QA report (if present)\n\nSkip this step if the repo has no QA bot.\n\nQA reports are PR issue comments with a status line like `Status: PASS`.\n\n```bash\ngh api \"repos/{owner}/{repo}/issues/{number}/comments\" --paginate \\\n --jq '[.[] | select(\n (.user.login | test(\"openhands|all-hands-bot\"; \"i\")) and\n (.body | test(\"Status:\\\\s*(PASS|FAIL|PARTIAL)\"; \"i\"))\n )] | last | { author: .user.login, body: .body[0:500], url: .html_url }'\n```\n\n- `PASS` → QA passed.\n- `FAIL` → read details, fix code.\n- `PARTIAL` → some passed, some failed; read details.\n- No QA comment yet → bot may still be running; wait and re-poll.\n\n## Step 5 — Decide and act\n\nFor each present layer, check its status. If a layer is not present in the\nrepo, treat it as passing.\n\n- All present layers green on current SHA → done.\n- CI failed → fix code, or rerun if flaky (see below).\n- Review requested changes → read comments, fix, push.\n- QA failed/partial → read report, fix, push.\n- Anything still pending → sleep per polling cadence, re-poll.\n- PR closed/merged → stop.\n\n**Priority rule:** when both review feedback and flaky CI failures are present,\nprioritize review feedback first. A new commit will retrigger CI, so avoid\nrerunning flaky checks on the old SHA when you're about to push a review fix.\n\nAfter fixing, commit, push, AND re-request review:\n\n```bash\ngit add -A\ngit commit -m \"fix: address <CI failure | review feedback | QA failure>\"\ngit push origin HEAD\n\n# Re-request review from the bot so it reviews the new SHA:\ngh pr comment --body \"Addressed feedback in $(git rev-parse --short HEAD). Ready for another look.\"\ngh api -X POST \"repos/{owner}/{repo}/pulls/{number}/requested_reviewers\" \\\n -f 'reviewers[]=all-hands-bot'\n```\n\nThen go back to step 2. You are not done until the bot reviews the new\nSHA and all present layers pass.\n\n## CI failure classification\n\nUse `gh` commands to inspect failed runs before deciding to rerun:\n\n```bash\ngh run view <run-id> --json jobs,name,workflowName,conclusion,status,url,headSha\ngh run view <run-id> --log-failed\n```\n\n**Branch-related** (fix the code):\n- Compile/lint/typecheck failures in files you touched\n- Deterministic test failures in changed areas\n- Snapshot or static-analysis violations from your changes\n- Build config changes causing deterministic failures\n\n**Flaky / unrelated** (rerun the jobs):\n- Network/DNS/registry timeouts\n- Runner provisioning or startup failures\n- GitHub Actions infrastructure errors\n- Non-deterministic failures in code you didn't touch\n- Cloud/service rate limits or transient API outages\n\nIf classification is ambiguous, perform one manual diagnosis attempt (inspect\nlogs) before choosing rerun.\n\nRerun: `gh run rerun <run-id> --failed`\n\nRetry budget: at most 3 reruns per SHA. After that, treat as real.\n\nRead `references/heuristics.md` for a concise decision tree.\n\n## Review comment handling\n\nThe review polling in Step 3 surfaces feedback from trusted sources: human\nreviewers (OWNER/MEMBER/COLLABORATOR) and approved review bots (openhands,\nall-hands-bot, etc.). Ignore unrelated bot noise.\n\nReview items come from:\n- PR issue comments\n- Inline review comments\n- Review submissions (COMMENT / APPROVED / CHANGES_REQUESTED)\n\nWhen a comment is actionable and correct:\n1. Fix the code.\n2. Commit with `chore: address PR review feedback (#<n>)`.\n3. Push and continue the loop.\n4. Reply to the review thread referencing the commit SHA.\n5. Resolve the thread.\n\nWhen a comment is non-actionable, already addressed, or you disagree:\nreply briefly explaining why, then resolve the thread. Do not leave\nthreads dangling without a response.\n\nIf a review thread is already resolved in GitHub, ignore it unless new\nunresolved follow-up appears.\n\n### Replying to and resolving review threads\n\nEvery inline review comment creates a thread. After addressing a comment\n(or deciding it's non-actionable), you must:\n\n1. **Reply** to the thread so the reviewer can see how you addressed it:\n\n ```bash\n gh api \"repos/{owner}/{repo}/pulls/{number}/comments\" \\\n -F \"body=Fixed — <describe what you changed>\" \\\n -F \"in_reply_to=<comment_database_id>\"\n ```\n\n Use `-F` (not `-f`) for `in_reply_to` so it is sent as a number.\n\n2. **Resolve** the thread via GraphQL:\n\n ```bash\n gh api graphql \\\n -f query='mutation($id: ID!) {\n resolveReviewThread(input: { threadId: $id }) {\n thread { isResolved }\n }\n }' \\\n -f id=\"<thread_node_id>\"\n ```\n\nTo discover unresolved threads and their IDs:\n\n```bash\ngh api graphql -f query='\nquery($owner: String!, $repo: String!, $pr: Int!) {\n repository(owner: $owner, name: $repo) {\n pullRequest(number: $pr) {\n reviewThreads(last: 100) {\n nodes {\n id\n isResolved\n path\n line\n comments(first: 1) {\n nodes { databaseId author { login } body }\n }\n }\n }\n }\n }\n}' -f owner=\"{owner}\" -f repo=\"{repo}\" -F pr=\"{number}\" \\\n --jq '.data.repository.pullRequest.reviewThreads.nodes[]\n | select(.isResolved == false)'\n```\n\n**Rules:**\n- Reply to every thread, even nits. A brief \"Done\" or \"Kept as-is because…\" is fine.\n- Resolve threads you have addressed. Do not leave resolved-in-code threads\n showing as unresolved in the GitHub UI.\n- Before marking the PR ready, verify zero unresolved threads remain.\n\n### Requesting re-review\n\nIf the PR is green but blocked on review approval and you've addressed all\nfeedback, you can request another look — but only when the user explicitly\nasks, or after confirming with them (avoid spamming humans):\n\n1. Leave a brief PR comment summarizing what changed:\n ```bash\n gh pr comment <pr> --body \"Addressed the requested changes in <sha>. Could you take another look?\"\n ```\n Do NOT tag humans.\n\n2. Re-request reviewers via the GitHub API:\n ```bash\n gh api -X POST repos/{owner}/{repo}/pulls/{number}/requested_reviewers \\\n -f reviewers[]=<reviewer>\n ```\n\nPrefer requesting review only once per new head SHA. If the API returns an\nerror indicating reviewers are already requested, treat it as non-fatal.\n\n## Polling cadence\n\n- CI pending or failing: every 30–60 seconds.\n- CI green, waiting for review/QA: start at 60s, back off exponentially\n (60s → 2m → 4m → 8m → 16m → 32m), cap at 1 hour.\n- Reset to 60s whenever anything changes (new SHA, check status, review\n comment, mergeability change).\n- If CI stops being green (new commit, rerun, regression): return to 30–60s.\n- After pushing a fix: re-poll immediately.\n- If any poll shows the PR is merged or closed: stop immediately.\n\n## Stop conditions\n\nStop **only** when:\n- All present verification layers passed on current SHA and PR is mergeable.\n- PR merged or closed (stop as soon as a poll confirms this).\n- Flaky retry budget exhausted (3 reruns per SHA).\n- Blocked on something requiring human input (infra outage, permissions,\n ambiguity that cannot be resolved safely).\n\n**Not** a stop condition:\n- You pushed a fix. That's one iteration — keep going.\n- You addressed review comments. The bot still needs to review new code.\n- CI is green but review bot hasn't re-reviewed yet. Wait.\n- CI is still running/queued.\n- CI is green but mergeability is unknown/pending.\n- CI is green and mergeable, but waiting for possible new review comments\n per the green-state cadence.\n- PR is green but blocked on review approval (`REVIEW_REQUIRED`); continue\n polling and surface new review comments without asking for confirmation.\n\n## When done — mark PR ready\n\nOnce all present verification layers pass on the current SHA:\n\n1. Verify all review threads are resolved (zero unresolved remaining).\n2. Convert the draft PR to ready for review:\n\n```bash\ngh pr ready\n```\n\nOnly do this at the very end, after the loop exits successfully.\n\n## Git safety\n\n- Work only on the PR head branch.\n- No destructive git commands.\n- Do not switch branches unless necessary to recover context.\n- Check for unrelated uncommitted changes before editing. If present, ask user.\n- After every fix, commit and push, then re-poll.\n- A push is not a terminal outcome; continue the monitoring loop.\n\nCommit message defaults:\n- `fix: CI failure on PR #<n>`\n- `chore: address PR review feedback (#<n>)`\n\n## Output\n\nProvide concise progress updates during monitoring:\n\n- During long unchanged periods, avoid emitting a full update on every poll;\n summarize only status changes plus occasional heartbeat updates.\n- Treat push confirmations, intermediate CI snapshots, and review-action\n updates as progress updates only; do not emit the final summary unless a\n strict stop condition is met.\n- When CI first transitions to all green for the current SHA, emit a one-time\n celebratory update. Preferred style:\n `🚀 CI is all green! 33/33 passed. Still watching for review.`\n\nFinal summary should include:\n- Final PR SHA\n- CI status summary\n- Mergeability / conflict status\n- Fixes pushed\n- Flaky retry cycles used\n- Review threads resolved (count)\n- Remaining unresolved failures or review comments\n\n## References\n\n- Verification stack (layers, signals, retriggering): `references/verification.md`\n- CI/review heuristics and decision tree: `references/heuristics.md`"
210
+ content: "# /iterate — Drive a PR to Merge-Ready\n\nIterate on a pull request until it passes all verification layers.\nYou push, poll, fix, and push again — the loop only ends when the PR is green\nor a blocker requires human help.\n\nNo scripts — you are the orchestration loop. Uses only standard `gh` CLI\ncommands that work on any GitHub repo.\n\nRequires: `gh` CLI authenticated with repo access, a PR branch.\nWindows PowerShell equivalents for Bash-only assignment, redirection, and quoting patterns in this skill are in `references/windows.md`.\n\n## Discover what the repo has\n\nNot every repo has all three verification layers. Before entering the loop,\ncheck which ones exist. Only poll layers that are actually set up.\n\n```bash\ngh workflow list --json name --jq '.[].name'\n```\n\n- **CI checks** — almost every repo has these. If `gh pr checks` returns results, CI is present.\n- **PR review bot** — look for a workflow named like \"PR Review\" or \"pr-review\" in the output above, or check for `.github/workflows/pr-review*.yml` in the repo. If it's not there, the repo doesn't have automated PR review. Skip step 3 entirely.\n- **QA bot** — look for a workflow named like \"QA\" or \"qa-changes\". If it's not there, the repo doesn't have automated QA. Skip step 4 entirely.\n\nA repo might have only CI. Or CI + review. Or all three. Your \"all passed\"\ncondition is: every *present* layer is green. Don't block waiting for layers\nthat don't exist.\n\n## The loop\n\n1. Push and ensure a draft PR exists.\n2. Poll each present verification layer.\n3. Decide: all passed? fix needed? wait?\n4. If fix needed — fix, refresh any `.pr/` artifacts affected (see below),\n commit, push, re-request review from bots, go to 2.\n5. If waiting — sleep per polling cadence, go to 2.\n6. If all present layers passed on the *current* SHA — mark PR ready, done.\n\nIMPORTANT: pushing a fix is NOT the end. After every fix+push you MUST\nre-request review from the review bot (if present) and go back to step 2.\nThe loop only ends when the verifiers pass on your latest SHA. Addressing\nfeedback and pushing a commit is just one iteration — the bot needs to\nreview the new code too.\n\nDo not stop to ask the user whether to continue polling; continue\nautonomously until a strict stop condition is met or the user interrupts.\n\n## Step 1 — Push and ensure PR exists (as draft)\n\nCreate the PR as a draft. This prevents repo automations (merge workflows,\nartifact cleanup, auto-merge) from triggering while you're still iterating.\nYou mark it ready only after all verification layers pass.\n\n```bash\ngit push origin HEAD\ngh pr create --fill --draft 2>/dev/null || true\ngh pr view --json number,url,headRefOid,isDraft --jq '\"\\(.number) \\(.url) \\(.headRefOid) draft=\\(.isDraft)\"'\n```\n\nIf the PR already exists and is not a draft, convert it:\n\n```bash\ngh pr ready --undo\n```\n\n## Step 2 — Poll CI checks\n\n```bash\ngh pr checks --json name,state,bucket --jq '\n { passed: [.[] | select(.bucket==\"pass\")] | length,\n failed: [.[] | select(.bucket==\"fail\")] | length,\n pending: [.[] | select(.bucket==\"pending\")] | length }'\n```\n\n- Zero failed, zero pending → CI green.\n- Any pending → wait and re-poll.\n- Any failed → diagnose (see \"CI failure classification\" below).\n\nTo inspect a failure:\n\n```bash\nSHA=$(gh pr view --json headRefOid --jq .headRefOid)\ngh run list --commit \"$SHA\" --status failure --json databaseId,name,conclusion \\\n --jq '.[] | \"\\(.databaseId)\\t\\(.name)\\t\\(.conclusion)\"'\ngh run view <run-id> --log-failed\n```\n\n## Step 3 — Poll PR review (if present)\n\nSkip this step if the repo has no review bot.\n\n```bash\ngh pr view --json reviews --jq '\n [.reviews[] | select(\n .authorAssociation == \"OWNER\" or\n .authorAssociation == \"MEMBER\" or\n .authorAssociation == \"COLLABORATOR\" or\n (.author.login | test(\"openhands|all-hands-bot\"; \"i\"))\n )] | last | { state: .state, reviewer: .author.login, body: .body[0:300] }'\n```\n\n- `APPROVED` → review passed.\n- `CHANGES_REQUESTED` → read the body and inline comments, fix code.\n- `COMMENTED` → may have actionable suggestions; read and decide.\n- No matching review yet → bot may still be running; wait and re-poll.\n\nInline review comments (when changes requested):\n\n```bash\ngh api \"repos/{owner}/{repo}/pulls/{number}/comments\" \\\n --jq '.[] | select(.user.login | test(\"openhands|all-hands-bot\"; \"i\"))\n | { path: .path, line: .line, body: .body[0:200] }'\n```\n\nOn a fresh iteration, existing pending review feedback should be checked\nimmediately — not only comments that arrive after monitoring starts.\nAlready-open review comments must not be missed.\n\n## Step 4 — Poll QA report (if present)\n\nSkip this step if the repo has no QA bot.\n\nQA reports are PR issue comments with a status line like `Status: PASS`.\n\n```bash\ngh api \"repos/{owner}/{repo}/issues/{number}/comments\" --paginate \\\n --jq '[.[] | select(\n (.user.login | test(\"openhands|all-hands-bot\"; \"i\")) and\n (.body | test(\"Status:\\\\s*(PASS|FAIL|PARTIAL)\"; \"i\"))\n )] | last | { author: .user.login, body: .body[0:500], url: .html_url }'\n```\n\n- `PASS` → QA passed.\n- `FAIL` → read details, fix code.\n- `PARTIAL` → some passed, some failed; read details.\n- No QA comment yet → bot may still be running; wait and re-poll.\n\n## Step 5 — Decide and act\n\nFor each present layer, check its status. If a layer is not present in the\nrepo, treat it as passing.\n\n- All present layers green on current SHA → done.\n- CI failed → fix code, or rerun if flaky (see below).\n- Review requested changes → read comments, fix, push.\n- QA failed/partial → read report, fix, push.\n- Anything still pending → sleep per polling cadence, re-poll.\n- PR closed/merged → stop.\n\n**Priority rule:** when both review feedback and flaky CI failures are present,\nprioritize review feedback first. A new commit will retrigger CI, so avoid\nrerunning flaky checks on the old SHA when you're about to push a review fix.\n\nAfter fixing, commit, push, AND re-request review:\n\n```bash\ngit add -A\ngit commit -m \"fix: address <CI failure | review feedback | QA failure>\"\ngit push origin HEAD\n\n# Re-request review from the bot so it reviews the new SHA:\ngh pr comment --body \"Addressed feedback in $(git rev-parse --short HEAD). Ready for another look.\"\ngh api -X POST \"repos/{owner}/{repo}/pulls/{number}/requested_reviewers\" \\\n -f 'reviewers[]=all-hands-bot'\n```\n\nThen go back to step 2. You are not done until the bot reviews the new\nSHA and all present layers pass.\n\n## CI failure classification\n\nUse `gh` commands to inspect failed runs before deciding to rerun:\n\n```bash\ngh run view <run-id> --json jobs,name,workflowName,conclusion,status,url,headSha\ngh run view <run-id> --log-failed\n```\n\n**Branch-related** (fix the code):\n- Compile/lint/typecheck failures in files you touched\n- Deterministic test failures in changed areas\n- Snapshot or static-analysis violations from your changes\n- Build config changes causing deterministic failures\n\n**Flaky / unrelated** (rerun the jobs):\n- Network/DNS/registry timeouts\n- Runner provisioning or startup failures\n- GitHub Actions infrastructure errors\n- Non-deterministic failures in code you didn't touch\n- Cloud/service rate limits or transient API outages\n\nIf classification is ambiguous, perform one manual diagnosis attempt (inspect\nlogs) before choosing rerun.\n\nRerun: `gh run rerun <run-id> --failed`\n\nRetry budget: at most 3 reruns per SHA. After that, treat as real.\n\nRead `references/heuristics.md` for a concise decision tree.\n\n## Review comment handling\n\nThe review polling in Step 3 surfaces feedback from trusted sources: human\nreviewers (OWNER/MEMBER/COLLABORATOR) and approved review bots (openhands,\nall-hands-bot, etc.). Ignore unrelated bot noise.\n\nReview items come from:\n- PR issue comments\n- Inline review comments\n- Review submissions (COMMENT / APPROVED / CHANGES_REQUESTED)\n\nWhen a comment is actionable and correct:\n1. Fix the code.\n2. Commit with `chore: address PR review feedback (#<n>)`.\n3. Push and continue the loop.\n4. Reply to the review thread referencing the commit SHA.\n5. Resolve the thread.\n\nWhen a comment is non-actionable, already addressed, or you disagree:\nreply briefly explaining why, then resolve the thread. Do not leave\nthreads dangling without a response.\n\nIf a review thread is already resolved in GitHub, ignore it unless new\nunresolved follow-up appears.\n\n### Replying to and resolving review threads\n\nEvery inline review comment creates a thread. After addressing a comment\n(or deciding it's non-actionable), you must:\n\n1. **Reply** to the thread so the reviewer can see how you addressed it:\n\n ```bash\n gh api \"repos/{owner}/{repo}/pulls/{number}/comments\" \\\n -F \"body=Fixed — <describe what you changed>\" \\\n -F \"in_reply_to=<comment_database_id>\"\n ```\n\n Use `-F` (not `-f`) for `in_reply_to` so it is sent as a number.\n\n2. **Resolve** the thread via GraphQL:\n\n ```bash\n gh api graphql \\\n -f query='mutation($id: ID!) {\n resolveReviewThread(input: { threadId: $id }) {\n thread { isResolved }\n }\n }' \\\n -f id=\"<thread_node_id>\"\n ```\n\nTo discover unresolved threads and their IDs:\n\n```bash\ngh api graphql -f query='\nquery($owner: String!, $repo: String!, $pr: Int!) {\n repository(owner: $owner, name: $repo) {\n pullRequest(number: $pr) {\n reviewThreads(last: 100) {\n nodes {\n id\n isResolved\n path\n line\n comments(first: 1) {\n nodes { databaseId author { login } body }\n }\n }\n }\n }\n }\n}' -f owner=\"{owner}\" -f repo=\"{repo}\" -F pr=\"{number}\" \\\n --jq '.data.repository.pullRequest.reviewThreads.nodes[]\n | select(.isResolved == false)'\n```\n\n**Rules:**\n- Reply to every thread, even nits. A brief \"Done\" or \"Kept as-is because…\" is fine.\n- Resolve threads you have addressed. Do not leave resolved-in-code threads\n showing as unresolved in the GitHub UI.\n- Before marking the PR ready, verify zero unresolved threads remain.\n\n### Requesting re-review\n\nIf the PR is green but blocked on review approval and you've addressed all\nfeedback, you can request another look — but only when the user explicitly\nasks, or after confirming with them (avoid spamming humans):\n\n1. Leave a brief PR comment summarizing what changed:\n ```bash\n gh pr comment <pr> --body \"Addressed the requested changes in <sha>. Could you take another look?\"\n ```\n Do NOT tag humans.\n\n2. Re-request reviewers via the GitHub API:\n ```bash\n gh api -X POST repos/{owner}/{repo}/pulls/{number}/requested_reviewers \\\n -f reviewers[]=<reviewer>\n ```\n\nPrefer requesting review only once per new head SHA. If the API returns an\nerror indicating reviewers are already requested, treat it as non-fatal.\n\n## Polling cadence\n\n- CI pending or failing: every 30–60 seconds.\n- CI green, waiting for review/QA: start at 60s, back off exponentially\n (60s → 2m → 4m → 8m → 16m → 32m), cap at 1 hour.\n- Reset to 60s whenever anything changes (new SHA, check status, review\n comment, mergeability change).\n- If CI stops being green (new commit, rerun, regression): return to 30–60s.\n- After pushing a fix: re-poll immediately.\n- If any poll shows the PR is merged or closed: stop immediately.\n\n## Stop conditions\n\nStop **only** when:\n- All present verification layers passed on current SHA and PR is mergeable.\n- PR merged or closed (stop as soon as a poll confirms this).\n- Flaky retry budget exhausted (3 reruns per SHA).\n- Blocked on something requiring human input (infra outage, permissions,\n ambiguity that cannot be resolved safely).\n\n**Not** a stop condition:\n- You pushed a fix. That's one iteration — keep going.\n- You addressed review comments. The bot still needs to review new code.\n- CI is green but review bot hasn't re-reviewed yet. Wait.\n- CI is still running/queued.\n- CI is green but mergeability is unknown/pending.\n- CI is green and mergeable, but waiting for possible new review comments\n per the green-state cadence.\n- PR is green but blocked on review approval (`REVIEW_REQUIRED`); continue\n polling and surface new review comments without asking for confirmation.\n\n## Keep `.pr/` artifacts fresh\n\nBy convention, a PR may carry generated artifacts (diagrams, reports, generated\ndocs, fixtures) in a `.pr/` folder. These are derived from the code, so they go\nstale when you push fixes.\n\nAfter each fix — and before marking the PR ready — check `.pr/`:\n\n1. If there's no `.pr/` folder or it's empty, skip this entirely.\n2. For each artifact, work out how it was generated (a script, a documented\n command, a comment in the file, or the PR/commit history).\n3. If you can figure out how — and the code it derives from changed — regenerate\n it and commit the update, so the artifact matches the latest code.\n4. If you can't tell how it was generated, leave it alone. Don't guess.\n\nThe rule is simple: if you know how an artifact was made and the code moved on,\nkeep it up to date; otherwise don't touch it.\n\n## When done — mark PR ready\n\nOnce all present verification layers pass on the current SHA:\n\n1. Verify all review threads are resolved (zero unresolved remaining).\n2. Ensure `.pr/` artifacts are up to date with the latest code (see above).\n3. Convert the draft PR to ready for review:\n\n```bash\ngh pr ready\n```\n\nOnly do this at the very end, after the loop exits successfully.\n\n## Git safety\n\n- Work only on the PR head branch.\n- No destructive git commands.\n- Do not switch branches unless necessary to recover context.\n- Check for unrelated uncommitted changes before editing. If present, ask user.\n- After every fix, commit and push, then re-poll.\n- A push is not a terminal outcome; continue the monitoring loop.\n\nCommit message defaults:\n- `fix: CI failure on PR #<n>`\n- `chore: address PR review feedback (#<n>)`\n\n## Output\n\nProvide concise progress updates during monitoring:\n\n- During long unchanged periods, avoid emitting a full update on every poll;\n summarize only status changes plus occasional heartbeat updates.\n- Treat push confirmations, intermediate CI snapshots, and review-action\n updates as progress updates only; do not emit the final summary unless a\n strict stop condition is met.\n- When CI first transitions to all green for the current SHA, emit a one-time\n celebratory update. Preferred style:\n `🚀 CI is all green! 33/33 passed. Still watching for review.`\n\nFinal summary should include:\n- Final PR SHA\n- CI status summary\n- Mergeability / conflict status\n- Fixes pushed\n- Flaky retry cycles used\n- Review threads resolved (count)\n- Remaining unresolved failures or review comments\n\n## References\n\n- Verification stack (layers, signals, retriggering): `references/verification.md`\n- CI/review heuristics and decision tree: `references/heuristics.md`"
211
211
  },
212
212
  {
213
213
  name: "jira-issue-to-pr",
@@ -427,6 +427,12 @@ var e = [
427
427
  ],
428
428
  content: "# Swift Installation Guide for Debian Linux\n\nThis document provides instructions for installing Swift on Debian 12 (Bookworm).\n\n> This setup is intended for non-UI development tasks on Swift on Linux.\n> On Windows, run these Debian commands inside WSL2 or a Linux container. For native Windows Swift, use the Windows toolchain from Swift.org instead.\n\n## Prerequisites\n\nBefore installing Swift, you need to install the required dependencies for your system. You can find the most up-to-date list of dependencies for your specific Linux distribution and version at the [Swift.org tarball installation guide](https://www.swift.org/install/linux/tarball/).\n\nFOR EXAMPLE, the dependencies you may need to install for Debian 12 could be:\n\n```bash\nsudo apt-get update\nsudo apt-get install -y \\\n binutils-gold \\\n gcc \\\n git \\\n libcurl4-openssl-dev \\\n libedit-dev \\\n libicu-dev \\\n libncurses-dev \\\n libpython3-dev \\\n libsqlite3-dev \\\n libxml2-dev \\\n pkg-config \\\n tzdata \\\n uuid-dev\n```\n\n## Download and Install Swift\n\n1. Find the latest Swift version for Debian:\n\n Go to the [Swift.org download page](https://www.swift.org/download/) to find the latest Swift version compatible with Debian 12 (Bookworm).\n\n Look for a tarball named something like `swift-<VERSION>-RELEASE-debian12.tar.gz` (e.g., `swift-6.0.3-RELEASE-debian12.tar.gz`).\n\n The URL pattern is typically:\n ```\n https://download.swift.org/swift-<VERSION>-release/debian12/swift-<VERSION>-RELEASE/swift-<VERSION>-RELEASE-debian12.tar.gz\n ```\n\n Where `<VERSION>` is the Swift version number (e.g., `6.0.3`).\n\n2. Download the Swift binary for Debian 12:\n\n```bash\ncd /workspace\nwget https://download.swift.org/swift-6.0.3-release/debian12/swift-6.0.3-RELEASE/swift-6.0.3-RELEASE-debian12.tar.gz\n```\n\n3. Extract the archive:\n\n> **Note**: Make sure to install Swift in the `/workspace` directory, but outside the git repository to avoid committing the Swift binaries.\n\n4. Add Swift to your PATH by adding the following line to your `~/.bashrc` file:\n\n```bash\necho 'export PATH=/workspace/swift-6.0.3-RELEASE-debian12/usr/bin:$PATH' >> ~/.bashrc\nsource ~/.bashrc\n```\n\n> **Note**: Make sure to update the version number in the PATH to match the version you downloaded.\n\n## Verify Installation\n\nVerify that Swift is correctly installed by running:\n\n```bash\nswift --version\n```"
429
429
  },
430
+ {
431
+ name: "technical-writing",
432
+ description: "Guides technical explanations toward flowing, direct, conversational prose. This skill should be used for engineering chat, design discussion, architecture analysis, code-review explanations, and technical recommendations that should be concise without becoming fragmented or vague.",
433
+ triggers: [],
434
+ content: "# Technical Writing\n\nWrite the way a sharp senior engineer speaks in chat: direct, conversational, and confident. Favor flowing technical prose over report language, slide-deck fragments, or documentation boilerplate.\n\nFollow the user's requested format when they explicitly ask for formal documentation, a report, or slides. Otherwise, apply these rules to technical explanations, design feedback, architecture discussion, issue and pull-request replies, and recommendations.\n\n## Lead with the answer\n\nOpen with the verdict and its central caveat in one or two plain sentences. Do not use a bold heading as a substitute for the answer.\n\nMatch the length to the question and err short:\n\n- A yes/no or confirmation question usually needs 2 to 4 sentences.\n- A choice between alternatives usually needs a few paragraphs.\n- A genuinely multi-part design question may need a longer structured answer.\n\nBefore sending, remove any paragraph that does not change what the reader understands, decides, or does next. Cut unrequested background, restatements of the problem, and generic advice the reader already knows.\n\n## Complete the argument\n\nEvery paragraph and every bullet should carry a complete argument: claim, mechanism, and consequence together. Do not leave the reader to infer why a fact matters.\n\nWeak:\n\n> MoR increases scan cost, latency, and metadata overhead.\n\nBetter:\n\n> MoR is cheap to write, but every read has to reconcile delete files against data files, so scans get slower and less reliable until something compacts them - and now that compaction is part of the system you operate.\n\n## Match the form to the content\n\nVary the structure because different kinds of content need different forms:\n\n- Use short bold headings on their own line for distinct sections or comparison axes, such as cost versus operations.\n- Use a numbered list for a genuine sequence, diagnostic procedure, or ranked set of hypotheses. Start each item with a short bold lead and continue in full sentences.\n- Use plain bullets for parallel, enumerable facts.\n- Use paragraphs for reasoning, causality, and narrative.\n\nShortening does not mean flattening a useful structure into uniform paragraphs. Keep the structure and cut low-value sentences within it.\n\n## Keep connected reasoning together\n\nDo not shred connected reasoning into bullets. If the ideas connect with \"because,\" \"so,\" or \"but,\" those connections are the explanation and belong in prose.\n\nNever write a bold label followed by a clipped noun phrase as if it were a complete bullet.\n\n## Sound conversational, not dramatic\n\nUse contractions when they fit. Prefer \"so\" and \"but\" to \"therefore\" and \"however.\"\n\nState the claim directly. Avoid scaffolding such as:\n\n- \"It is worth noting\"\n- \"Importantly\"\n- \"The deciding mechanism is\"\n\nAvoid theatrical labels and hype adjectives. Explain the concrete cost instead of calling something \"the poison,\" \"the trap,\" \"brutally expensive,\" or \"the killer feature.\"\n\nLet sentences breathe. Do not create drama with a sequence of short, staccato sentences.\n\nDo not use setup phrases that delay the point, including:\n\n- \"here's the thing\"\n- \"here's the kicker\"\n- \"the part nobody warns you about\"\n- \"what nobody tells you\"\n- \"the dirty secret\"\n- \"the truth is\"\n- \"plot twist\"\n- \"the reality is\"\n- \"here's what's wild\"\n\nDo not use contrastive \"not just X, but Y\" constructions. State the full point directly instead of negating a weaker framing first.\n\n## Cut without compressing\n\nShortness comes from removing low-value content, not from clipping sentences. Keep articles, verbs, and the words needed to express the mechanism clearly. Replace strings of abstract nouns with a concrete actor and action.\n\n## End only when a conclusion helps\n\nAdd a bottom line only when the answer weighs a real decision. State the recommendation and the condition that would change it in one plain sentence.\n\nShort factual and confirmation answers should simply end.\n\n## Final pass\n\nBefore sending, check:\n\n1. Does the first sentence give the answer?\n2. Is the central caveat next to the answer?\n3. Does every paragraph or bullet explain why its claim matters?\n4. Does the structure match the content?\n5. Did connected reasoning stay in prose?\n6. Can any paragraph be removed without changing the reader's next step?\n7. Did any dramatic setup, clipped phrasing, or fake contrast survive?\n8. Is a bottom line present only when the reader has a real decision to make?\n\n## Source\n\nAdapted from the public [Writing style](https://prose.ami.rip/STYLE.md) agent instructions at prose.ami.rip."
435
+ },
430
436
  {
431
437
  name: "theme-factory",
432
438
  description: "Toolkit for styling artifacts with a theme. These artifacts can be slides, docs, reportings, HTML landing pages, etc. There are 10 pre-set themes with colors/fonts that you can apply to any artifact that has been creating, or can generate a new theme on-the-fly.",